Commit Graph

449 Commits (1c0e8c16639dd4b4e952dd4a0c695e995f1bb1e9)

Author SHA1 Message Date
Julian Lam 046d0b1637
feat: allow pins to expire (if set) ()
* fix: add back topic assert middleware for pin route

* feat: server-side handling of pin expiries

* refactor: togglePin to not require uid parameter [breaking]

* feat: automatic unpinning if pin has expiration set

* feat: client-side modal for setting pin expiration

* refactor: categories.getPinnedTids to accept multiple cids

... in preparation for pin expiry logic, direct access to *:pinned zsets is discouraged

* fix: remove references to since-removed jobs file for topics

* feat: expire pins when getPinnedTids is called

* refactor: make the togglePin change non-breaking

The 'action:topic.pin' hook now sends uid again, as before. However, if it is a system action (that is, a pin that expired), 'system' will be sent in instead of a valid uid
Barış Soner Uşaklı 9ca44e6f54
feat: add displayname into user obj ()
* feat: add displayname into user obj 

* fix: spec

* perf: dont load settings if acp setting is turned off
Barış Soner Uşaklı 4e9b10ab76 feat:
Barış Soner Uşaklı fb567a7a33 feat:
Barış Soner Uşaklı a6afcfd531 feat: , allow flagging self posts
dont count flags towards self posts
dont allow flagging your own account
Barış Soner Uşaklı 35f932cd64 feat: , add oldCategory if topic is moved
Barış Soner Uşaklı b44ddecdf8 feat: , separate notification type for group chats
Barış Soner Uşaklı 1d6bcbebde feat: https://github.com/NodeBB/NodeBB/issues/8147
gasoved 3ccebf112e
feat: invites regardless of registration type, invite privilege, groups to join on acceptance ()
* 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>
Julian Lam 8518404e22
feat: allow groups to specify which cids to show member posts from ()
* feat: allow groups to specify which cids to show member posts from

* docs: fix tests for openapi

* fix: test breakage caused by improper conditional

* feat: server-side checking of memberPostCids for validity

* feat: admin panel template update to select categories to include

* refactor: privilege helpers.isUserAllowedTo

... to helpers.isAllowedTo, allowing group names to be passed in
Opliko 04f4429f72
Resolve - optional timer for registration queue ()
* feat:  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
Barış Soner Uşaklı 2e44639210 fix: guest header/footer cache
allow clearing individual caches
Barış Soner Uşaklı f1f9b225b0
feat: , cache refactor ()
* feat: , 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
Barış Soner Uşaklı 9e3eb5d41a feat: , allow guest topic views
Barış Soner Uşaklı 6ac73ccb7e feat: , disable express compression by default
Barış Soner Uşaklı e6440c0d21 fix: , fix move all
add new language keys
Barış Soner Uşaklı 872bacf1c4
Admin/users ()
* feat: wip admin/users

* feat: more work

* feat: more fixes

* feat: , 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
Barış Soner Uşaklı f259063f08 fix: , dont add admins to table
cryptoethic b3ed26ac2c
feat: revoke user sessions above threshold ()
* feat: revoke user sessions above threshold

* fix: removed translations from en-US

* fix: defined default maxUserSessions in install\data\defaults.json
Julian Lam 2ec838fc59 feat(writeapi): token generation/delete routes, ACP updates
Julian Lam 49652e6f1b feat: management of API tokens via ACP
Barış Soner Uşaklı e60357d20d
feat: , add top/popular sections to digest email ()
Barış Soner Uşaklı 54737d3076 feat: , search sub categories
psychobunny 14ba1a6dbb feat: analytics:maxCache setting in ACP
I removed a TODO from core. Watch your head as flying pigs are abound
psychobunny 9c5b690799 feat: up recommended size to 512x512 + ACP labels for PWA
psychobunny 6478b32d0e feat: upload maskable icon for PWA
Julian Lam b12e8d6312 feat: show top 5 trending plugins in new tab in Extend > Plugins
psychobunny 4c1e717b2b fix: update notification delay ACP help text
psychobunny 5b427a0c3b feat: option in ACP to configure notification/email delay for chats
Timothy Fike f85fe7faff
don't invite an already invited email ()
* don't invite an already invited email

* add email-invited translation string
Julian Lam 5ddf70221c feat: upon plugin installation via ACP, check against nbbpm first
psychobunny 2ad3305879 fix: language key in reset password
Barış Soner Uşaklı bd9b6c99e6 feat: add missing lang key
Barış Soner Uşaklı 23de5613bd feat: add x-posts/x-votes keys
Julian Lam 43571bac38 feat: hotkey "/" to open ACP search
Julian Lam 762e9fe88c feat: undo for posts move
Barış Soner Uşaklı 5a40d26b44 feat: , new move posts modal
Barış Soner Uşaklı a34b685c65 fix: remove lang keys, remove sounds menu
Barış Soner Uşaklı 46ab2711d4 fix: , add CSP frame-ancestors
Julian Lam 0c20351702 feat: additional sorting options for flags
+ upvotes, +downvotes, +replies
Julian Lam a93e19559d fix: missing language sources for ip-blacklist/post-queue
Julian Lam 4dc6e64a94 refactor: ip-blacklist and post-queue language files
closes 
Kyle Farris 2b785628e7
fix: removed invalid options for the sendmail transport ()
* 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.
Julian Lam abb5e81d0d feat: allow undo of topic move
Julian Lam bacee6b467 fix: missing localisation for topic move error
Julian Lam a3a2279358 feat: logic for bulk actions in flags list,
Julian Lam 334be11382 fix: no-widgets messaging in ACP + copy
Julian Lam 346db0d84d feat: flags list sorting, closes
Julian Lam a716a5529c
feat: more discrete commit-on-save instead of commit-on-change w/ confirm modals ()
* feat: privileges save button, , WIP

* fix: disable firefox autocomplete on privilege form fields

* feat: closes  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
Barış Soner Uşaklı 91411cc47c feat: add privileges shortcut to groups list
fix issues with escape group names