299 Commits (b860c2605c209e0650ef98f4c80d842ea23a51ce)

Author SHA1 Message Date
Barış Soner Uşaklı 47299ea587
Categories refactor (#9257)
* feat: wip categories pagination

* feat: add subCategoriesPerPage setting

* feat: add load more sub categories button to category page

* fix: openapi spec

* feat: show sub categories left on category page

hide button when no more categories left

* breaking: rename categories to allCategories on /search

categories contains the search results

* fix: spec

* refactor: remove cidsPerPage

* fix: tests

* feat: use component for subcategories

* fix: prevent negative subCategoriesLeft

* feat: new category filter/search WIP

* feat: remove categories from /tag

* fix: dont load all categories when showing move modal

* feat: allow adding custom categories to list

* breaking: dont load entire category tree on post queue

removed unused code
add hooks to filter/selector
add options to filter/selector

* feat: make selector modal work again

* feat: replace old search module

* fix: topic move selector

* feat: dont load all categories on create category modal

* fix: fix more categorySelectors

* feat: dont load entire category tree on group details page

* feat: dont load all categories on home page and user settings page

* feat: add pagination to /user/:userslug/categories

* fix: update schemas

* fix: more tests

* fix: test

* feat: flags page, dont return entire category tree

* fix: flag test

* feat: categories manage page

dont load all categories
allow changing root category
clear caches properly

* fix: spec

* feat: admins&mods page

dont load all categories

* fix: spec

* fix: dont load all children when opening dropdown

* fix: on search results dont return all children

* refactor: pass all options, rename options.cids to options.selectedCids

* fix: #9266

* fix: index 0

* fix: spec

* feat: #9265, add setObjectBulk

* refactor: shoter updateOrder

* feat: selectors on categories/category

* fix: tests and search filter

* fix: category update test

* feat: pagination on acp categories page

show order in set order modal

* fix: allow drag&drop on pages > 1 in /admin/manage/categories

* fix: teasers for deep nested categories

fix sub category display on /category page

* fix: spec

* refactor: use eslint-disable-next-line

* refactor: shorter
4 years ago
gasoved 53e0d4d2e0 feat: banned-users group 4 years ago
Barış Soner Uşaklı d1364c3130
Categories refactor (#9233)
* feat: wip categories pagination

* feat: add subCategoriesPerPage setting

* feat: add load more sub categories button to category page

* fix: openapi spec

* feat: show sub categories left on category page

hide button when no more categories left

* breaking: rename categories to allCategories on /search

categories contains the search results

* fix: spec

* refactor: remove cidsPerPage

* fix: tests

* feat: use component for subcategories

* fix: prevent negative subCategoriesLeft
4 years ago
Julian Lam 6b1c97db79 feat: feature flag for auto-resolving a user's flags on ban [breaking]
The default behaviour has now been changed to 'off'. Going forward, a user's flags will no longer automatically resolve on ban.
4 years ago
Julian Lam 223f0a5515 feat(acp): admin tags privilege 4 years ago
Julian Lam d90aa95808 feat: add confirmation modal when assigning admin:admins-mods privilege 4 years ago
Julian Lam fb46a8d975 feat(acp): admins-mods privilege 4 years ago
Julian Lam da191341e8 feat(acp): added new admin privilege for groups management 4 years ago
psychobunny 53abada5f0 Revert "feat: option to allow auto-joining of groups (optionally skip the "request membership" step)"
This reverts commit 685f3c6aa6.
4 years ago
psychobunny 685f3c6aa6 feat: option to allow auto-joining of groups (optionally skip the "request membership" step) 4 years ago
Barış Soner Uşaklı 1eb5fabdb1 feat: #8900, postQueue setting for category 4 years ago
Barış Soner Uşaklı d3c04afb98 fix: #8982, copy color on tag rename, dont copy if target exists
refresh page on tag rename
4 years ago
Barış Soner Uşaklı 6e6a7a8f8a fix: #8969, export csv to file 4 years ago
gasoved a56a657759
fix: missing select/clear all checkbox added to category privileges template (#8967) 4 years ago
Julian Lam ac734b8335 fix: #8912 4 years ago
Barış Soner Uşaklı 9ca44e6f54
feat: add displayname into user obj #8637 (#8909)
* feat: add displayname into user obj #8637

* fix: spec

* perf: dont load settings if acp setting is turned off
4 years ago
Barış Soner Uşaklı 4e9b10ab76 feat: #5274 4 years ago
Barış Soner Uşaklı fb567a7a33 feat: #4456 4 years ago
Barış Soner Uşaklı 1d6bcbebde feat: https://github.com/NodeBB/NodeBB/issues/8147 4 years ago
gasoved 3ccebf112e
feat: invites regardless of registration type, invite privilege, groups to join on acceptance (#8786)
* feat: allow invites in normal registration mode + invite privilege

* feat: select groups to join from an invite

* test: check if groups from invitations have been joined

* fix: remove unused variable

* feat: write API versions of socket calls

* docs: openapi specs for the new routes

* test: iron out mongo redis difference

* refactor: move inviteGroups endpoint into write API

* refactor: use GET /api/v3/users/:uid/invites/groups

Instead of GET /api/v3/users/:uid/inviteGroups

* fix: no need for /api/v3 prefix when using api module

* fix: tests

* refactor: change POST /api/v3/users/invite

To POST /api/v3/users/:uid/invites

* refactor: make helpers.invite awaitable

* fix: restrict invite API to self-use only

* fix: move invite groups controller to write api, +tests

* fix: tests

Co-authored-by: Julian Lam <julian@nodebb.org>
4 years ago
Opliko 04f4429f72
Resolve #7514 - optional timer for registration queue (#8796)
* feat: #7514 Optional timer for registration queue

* feat: show minutes in average time

* fix: don't show total number of minutes

* feat: implement requested changes

* fix: just store minutes instead of milliseconds

* feat: set default values
4 years ago
Barış Soner Uşaklı 2e44639210 fix: guest header/footer cache
allow clearing individual caches
4 years ago
Barış Soner Uşaklı f1f9b225b0
feat: #8824, cache refactor (#8851)
* feat: #8824, cache refactor

ability to disable caches
ability to download contents of cache
refactor cache modules to remove duplicated code

* fix: remove duplicate hit/miss tracking

check cacheEnabled in getUncachedKeys
4 years ago
Barış Soner Uşaklı 9e3eb5d41a feat: #8821, allow guest topic views 4 years ago
Barış Soner Uşaklı 6ac73ccb7e feat: #8801, disable express compression by default 4 years ago
Barış Soner Uşaklı 872bacf1c4
Admin/users (#8762)
* feat: wip admin/users

* feat: more work

* feat: more fixes

* feat: #8662, verified/unverified user groups

* feat: add filter

* feat: change user search to use filters array

* refactor: remove unused search call

* fix: tests

* fix: cant join system groups

* fix: upgrade script
4 years ago
Barış Soner Uşaklı f259063f08 fix: #8728, dont add admins to table 4 years ago
cryptoethic b3ed26ac2c
feat: revoke user sessions above threshold (#8731)
* feat: revoke user sessions above threshold

* fix: removed translations from en-US

* fix: defined default maxUserSessions in install\data\defaults.json
4 years ago
Julian Lam 2ec838fc59 feat(writeapi): token generation/delete routes, ACP updates 4 years ago
Julian Lam 49652e6f1b feat: management of API tokens via ACP 4 years ago
psychobunny 14ba1a6dbb feat: analytics:maxCache setting in ACP
I removed a TODO from core. Watch your head as flying pigs are abound
4 years ago
psychobunny 9c5b690799 feat: up recommended size to 512x512 + ACP labels for PWA 4 years ago
psychobunny 6478b32d0e feat: upload maskable icon for PWA 4 years ago
Julian Lam b12e8d6312 feat: show top 5 trending plugins in new tab in Extend > Plugins 4 years ago
psychobunny 4c1e717b2b fix: update notification delay ACP help text 4 years ago
psychobunny 5b427a0c3b feat: option in ACP to configure notification/email delay for chats 4 years ago
Julian Lam 43571bac38 feat: hotkey "/" to open ACP search 4 years ago
Barış Soner Uşaklı 46ab2711d4 fix: #8432, add CSP frame-ancestors 4 years ago
Julian Lam 4dc6e64a94 refactor: ip-blacklist and post-queue language files
closes #8411
4 years ago
Kyle Farris 2b785628e7
fix: removed invalid options for the sendmail transport (#8576)
* Removed invalid options for the sendmail transport that were causing Nodemailer to return the SMTPTransport instead.

* Removed options for rate limiting in admin email interface. Added new option for toggling whether to use pooled connections.
4 years ago
Julian Lam 334be11382 fix: no-widgets messaging in ACP + copy 4 years ago
Julian Lam a716a5529c
feat: more discrete commit-on-save instead of commit-on-change w/ confirm modals (#8541)
* feat: privileges save button, #8537, WIP

* fix: disable firefox autocomplete on privilege form fields

* feat: closes #8537 privilege changes commit on save

- new language strings for confirmation and success modals/toasts
- indeterminate privilege handling (/cc @psychobunny)
- added new discard button
- both discard and save buttons now have confirmation dialogs

* fix(tests): remove duplicate template helper test

* fix(tests): broken template helper test

* feat: confirm dialogs for all privilege copy actions

Also, ability to add user to a privilege table without needing
to refresh the privilege table.

* feat: group row addition w/o table refresh

breaking: helpers.getUserPrivileges and helpers.getGroupPrivileges
no longer make socket calls to the following hooks:

- filter:privileges.list, filter:privileges.admin.list,
  filter:privileges.global.list, filter:privileges.groups.list,
  filter:privileges.admin.groups.list,
  filter:privileges.gloval.groups.list

The filters are still called, but done before the helper method
is called, and the results are passed in instead. This change
should only affect you if you directly call the helper methods,
otherwise the change is transparent.

* fix: stale ajaxify data on privilege category switch

* fix: implicit privileges not showing for user privs

* fix: groups, not group, also fix tests

* fix(tests): again

* fix: wrong tpl rendered when adding group to global priv table
5 years ago
Barış Soner Uşaklı 91411cc47c feat: add privileges shortcut to groups list
fix issues with escape group names
5 years ago
Barış Soner Uşaklı fd4c3cda42 fix: #4695, remove new notif alert 5 years ago
Barış Soner Uşaklı 24535a62e7 feat: make category tools in acp a dropdown
add view category, view privileges into dropdown
5 years ago
Barış Soner Uşaklı 23a9a334cd feat: short more info 5 years ago
Barış Soner Uşaklı 1e7397b1b8 feat: allow searching categories in ACP 5 years ago
psychobunny 06143ca7d7 feat: added quick link to edit privileges on the category edit page 5 years ago
Julian Lam e3e55f25d0 refactor: flag sanity checks, +feat: flag limits
- Added new config flag:limitPerTarget, to disallow flags after an item has
  already been flagged x times (default 0, or infinite)
- New zset flags:byTarget, score is the number of times a flag has been made
  against that item
- "already-flagged" translation key removed, now "post-already-flagged" or
  "user-already-flagged" -- this fixed bug where flagging a user you've already
  flagged would tell you you've already flagged this post already.
- Refactored Flags.canFlag to throw errors only, instead of returning boolean
- Updated ACP form inputs for reputation settings page to be more bootstrappy
- +1 upgrade script
5 years ago
Barış Soner Uşaklı 00d39fb32c feat: #8460, export groups members as csv 5 years ago
Barış Soner Uşaklı 3dcf538773 feat: #8023, allow wildcard search for uid/email 5 years ago
Barış Soner Uşaklı c513b88dff feat: #8427, daily downvote limits 5 years ago
Barış Soner Uşaklı 4adbf87c6c feat: warn user if whitelisted tags are less than minTags 5 years ago
Barış Soner Uşaklı e09ab3dc19 feat: closes #8440, allow configuring max topic count 5 years ago
Barış Soner Uşaklı bffb830d87 feat: add missing translation key 5 years ago
Barış Soner Uşaklı a255c8f6fd fix: language 5 years ago
Julian Lam 67aca822e6 feat: account content deletion, closes #8381 5 years ago
Julian Lam a82e9bd7f6
feat: privileges for Admin Control Panel (#8355)
* feat: acp privileges (WIP)

* fix: restore global privilege hooks

* refactor: using cid 0 in admin privs

* fix: no need for zebrastripe-reset

* feat: manage:categories privilege WIP

* feat: renamed prefix to admin:, settigns and dashboard privs

* fix: nofocus on acp privs group find modal

* refactor: privileges.x.get() to not used hardcoded privs

* fix: crash if unable to get latest version

* feat: setting acp priv

* Revert "fix: crash if unable to get latest version"

This reverts commit afdb235f48eb0072d88de45f3a1e0151281095b3.

* feat: user/privilege acp privs

* fix: category selector in manage/privileges

* fix: guests potentially becoming admins

* fix: bug in setting admin privs

* fix: some last minute things + api docs

* fix: some more last minute fixes
5 years ago
Barış Soner Uşaklı 30cc83c033 fix: #8374, revert event delete 5 years ago
Julian Lam 260a482caa fix: remove duplicate link to manage/tags in settings/tags 5 years ago
Julian Lam 0633ad3277 fix: acp menu items
- Shuffled items in settings
- Moved post-queue and ip-blacklist to front-end
- Removed Settings > Sockets, merged with Settings > Advanced
5 years ago
Julian Lam a83f4259e8 fix: re-jigged tags acp pages 5 years ago
Julian Lam a51fff8bd1
refactor: remove general menu from ACP (#8347)
* refactor: remove general menu from ACP

* fix: incorrect translation keys, fixed tests
5 years ago
Ali Cihan 256ee45d37
typo (#8334) 5 years ago
Barış Soner Uşaklı 2d07634494
fix: #8283, update gdpr link again 5 years ago
Barış Soner Uşaklı 17d664e098 fix: #8283, point to official site 5 years ago
Opliko 6e5ebb6184
feat: manifest.json improvements from #8126 (#8264)
* feat: manifest.json improvements from #8126

* Fix short title placeholder

* use lowercase letters for hex colors
5 years ago
Barış Soner Uşaklı 0b5fac75b0 fix: #8217, add missing lang key 5 years ago
psychobunny b67af70da4 fix: hsts max-age missing translation 5 years ago
Barış Soner Uşaklı 5e91a67e78 feat: add user ip to admin/dev/info 5 years ago
Barış Soner Uşaklı 326367556f fix: tag key 5 years ago
Barış Soner Uşaklı 05c9fe2735 feat: #5272, allow changing user groups from manage users page 5 years ago
Baris Usakli 4d66978338 fix: #8073, configurable necroThreshold 5 years ago
Julian Lam 645d647248
feat: wip, better digest handling (+ eventual digest resend logic) (#7995)
* feat: wip, better digest handling (+ eventual digest resend logic)

- await emailer.send call in digest.send method
- save send success to a new sorted set digest:{interval}:byUid

* feat: continuing work on digest tools

- Added ACP page to view digest settings and delivery times per user

* feat: added paginator and stub buttons for resending digest

* feat: wrapping up digest revamp

- New language strings in ACP digest page
- Client-side ACP script for digest ACP page
- Websocket call for ACP page to execute digests
- Broke out logic to retrieve user digest settings to getUsersInterval

* fix: minor cleanup

* fix: #8010 and some style suggestions from baris

* fix: resolve confusing comment
5 years ago
Barış Soner Uşaklı 1cedc4a0d6 feat: #7957, allow post queue based on group
allow multiple select in ACP pages
5 years ago
Baris Usakli 990508a533 feat: closes #7952, translate widget-settings 5 years ago
Baris Usakli 554e67116f feat: remove ability to delete events from acp 5 years ago
Julian Lam 54c9f877a6 fix: #7935, ACP digest wording 5 years ago
Barış Soner Uşaklı 5b8550f060 fix: time cutoff and lang string 5 years ago
Opliko b9583ed838 Add privilege for accessing user information (#7859)
* Add view users info global privilege

* Show user ip only to global mods and admins

* fix missing comma

* Hide link for users without correct privilege

* move getting privilege information to getAllData

* Hide the link from Global Moderators as well

* Give Global Moderator view:users:info privilege

* Restrict ip in post menu to view:users:info

* add some trailing commas....

* Add privilege to categories test

* Add group privilege to categories test

* add upgrade script

* fix style for TravisCI

* more styling - change spaces to tabs

* some more styling fixes (hopefully final one)

* fix style for Travis CI

* hide ip in chat messages

* Don't show even hidden ips on user profile page
5 years ago
Julian Lam 1796b65d34 feat: option to restrict group leaving, closes #7770 5 years ago
Barış Soner Uşaklı 3ff6e1bb64 feat: dashboard stats
show
yesterday/today
lastweek/this week
lastmonth/this month
6 years ago
Barış Soner Uşaklı 47e30a67be feat: move group privs above user, add labels 6 years ago
Barış Soner Uşaklı 6a289fbac9 fix: #7789 6 years ago
Julian Lam 8a6a58ee43
feat: added new admin option newbiePostEditDuration (#7737)
* feat: added new admin option newbiePostEditDuration

Also:
  - Grammar-checked a couple language strings
  - Moved a couple form inputs around in new user restrictions
  - Added a test for the new option
  - fix: 'defore' typo
6 years ago
Barış Soner Uşaklı 25ea634787 fix: #7659 add option to change cookie link url 6 years ago
Barış Soner Uşaklı 5fa5e999f8
Plugin metrics (#7626)
* feat: add enable/disable checkbox for plugin usage

* feat: submit plugin data to packages.nodebb.org

only submit in production mode
submit once every 24 hours
dont submit for plugins that have "private": true in plugin.json
enabled on new installs
disabled on existing installs

* fix: hash not working after first send

fix statusCode

* fix: remove url

* feat: show compatibilty

* feat: add install question for submit plugin usage
6 years ago
Julian Lam c7f95ccecc
feat: design revamp of ACP events page (#7664)
* feat: design revamp of ACP events page

- minor UX changes
- new filter controls, filters moved to sidebar
- form usable without js
- start/end filters NOT programmed yet

* feat: events ACP limit by date and perPage

* feat: pre-fill applied filters on template render

* fix: missing translation for ACP events perPage filter

* fix: added some comments to explain setHours behaviour

* fix: stop - start + 1

* fix: socket tests

* fix: +inf, not just inf

* fix: tests, because I am an idiot
6 years ago
Barış Soner Uşaklı 4b843ba16f fix: #7567, allow invite and approval at the same time 6 years ago
Julian Lam 5cd9e1bf86 fix: #7644 6 years ago
Barış Soner Uşaklı 157b921e14 fix: #7634, make strip exif configurable 6 years ago
Barış Soner Uşaklı dfab231afd
Copy group privs (#7610)
* feat: ability to copy a groups privileges

ability to copy a group's privileges to all categories, or children of current category

* feat: switch to dropdown

added copy from category to groups

* fix: indents
6 years ago
Julian Lam 4f0dc44307 fix: #7590 updated chat and post edit and delete timeout labels in ACP 6 years ago
Baris Usakli cf5aeace6b feat: closes #7583 6 years ago
Julian Lam c38db4f765 feat: #7515
This reverts commit 81f8cfe3da.
6 years ago
Barış Soner Uşaklı 81f8cfe3da Revert "feat: #7515"
This reverts commit ac889db16b.
6 years ago
Barış Soner Uşaklı ac889db16b feat: #7515 6 years ago
Barış Soner Uşaklı 2ee2cd528f feat: #7501 6 years ago
Julian Lam 63e16ec0a2 fix: #6911, email throttling options set 6 years ago
Andrew Rodrigues 24dcae2193 feat: manual password expiry. closes #7471 6 years ago