1391 Commits (c27567289f9937abd4abe6960a9b6e387cf68331)

Author SHA1 Message Date
Julian Lam 22368b996e refactor: move orphan cleaning logic to its own method, added tests for getOrphans and cleanOrphans 3 years ago
Barış Soner Uşaklı ea1ed66717 test: add more asserts to failing test 3 years ago
Barış Soner Uşaklı 6677efd7b5 test: fix UUID test 3 years ago
Barış Soner Uşaklı d20b07cfea
Webpack5 (#10311)
* feat: webpack 5 part 1

* fix: gruntfile fixes

* fix: fix taskbar warning

add app.importScript
copy public/src/modules to build folder

* refactor: remove commented old code

* feat: reenable admin

* fix: acp settings pages, fix sortable on manage categories

embedded require in html not allowed

* fix: bundle serialize/deserizeli so plugins dont break

* test: fixe util tests

* test: fix require path

* test: more test fixes

* test: require correct utils module

* test: require correct utils

* test: log stack

* test: fix db require blowing up tests

* test: move and disable bundle test

* refactor: add aliases

* test: disable testing route

* fix: move webpack modules necessary for build, into `dependencies`

* test: fix one more test

remove 500-embed.tpl

* fix: restore use of assets/nodebb.min.js, at least for now

* fix: remove unnecessary line break

* fix: point to proper ACP bundle

* test: maybe fix build test

* test: composer

* refactor: dont need dist

* refactor: more cleanup

use everything from build/public folder

* get rid of conditional import in app.js

* fix: ace

* refactor: cropper alias

* test: lint and test fixes

* lint: fix

* refactor: rename function to app.require

* refactor: go back to using app.require

* chore: use github branch

* chore: use webpack branch

* feat: webpack webinstaller

* feat: add chunkFile name with contenthash

* refactor: move hooks to top

* refactor: get rid of template500Function

* fix(deps): use webpack5 branch of 2factor plugin

* chore: tagging v2.0.0-beta.0 pre-release version 💥 :shipit: 🎉 🚀

* refactor: disable cache on templates

loadTemplate is called once by benchpress and the result is cache internally

* refactor: add server side helpers.js

* feat: deprecate /plugins shorthand route, closes #10343

* refactor: use build/public for webpack

* test: fix filename

* fix: more specific selector

* lint: ignore

* refactor: fix comments

* test: add debug for random failing test

* refactor: cleanup

remove test page, remove dupe functions in utils.common

* lint: use relative path  for now

* chore: bump prerelease version

* feat: add translateKeys

* fix: optional params

* fix: get rid of extra timeago files

* refactor: cleanup, require timeago locale earlier

remove translator.prepareDOM, it is in header.tpl html tag

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* feat: allow app.require('bootbox'/'benchpressjs')

* refactor: require server side utils

* test: jquery ready

* change istaller to use build/public

* test: use document.addEventListener

* refactor: closes #10301

* refactor: generateTopicClass

* fix: column counts for other privileges

* fix: #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking]

* fix: typo in hook name

* refactor: introduce a generic autocomplete.init() method that can be called to add nodebb-style autocompletion but using different data sources (e.g. not user/groups/tags)

* fix: crash if `delay` not passed in (as it cannot be destructured)

* refactor: replace substr

* feat: set --panel-offset style in html element based on stored value in localStorage

* refactor: addDropupHandler() logic to be less naive

- Take into account height of the menu
- Don't apply dropUp logic if there's nothing in the dropdown
- Remove 'hidden' class (added by default in Persona for post tools) when menu items are added

closes #10423

* refactor: simplify utils.params [breaking]

Retrospective analysis of the usage of this method suggests that the options passed in are superfluous, and that only `url` is required. Using a browser built-in makes more sense to accomplish what this method sets out to do.

* feat: add support for returning full URLSearchParams for utils.params

* fix: utils.params() fallback handling

* fix: default empty obj for params()

* fix: remove \'loggedin\' and \'register\' qs parameters once they have been used, delay invocation of messages until ajaxify.end

* fix: utils.params() not allowing relative paths to be passed in

* refactor(DRY): new assertPasswordValidity utils method

* fix: incorrect error message returned on insufficient privilege on flag edit

* fix: read/update/delete access to flags API should be limited for moderators to only post flags in categories they moderate

- added failing tests and patched up middleware.assert.flags to fix

* refactor: flag api v3 tests to create new post and flags on every round

* fix: missing error:no-flag language key

* refactor: flags.canView to check flag existence, simplify middleware.assert.flag

* feat: flag deletion API endpoint, #10426

* feat: UI for flag deletion, closes #10426

* chore: update plugin versions

* chore: up emoji

* chore: update markdown

* chore: up emoji-android

* fix: regression caused by utils.params() refactor, supports arrays and pipes all values through utils.toType, adjusts tests to type check

Co-authored-by: Julian Lam <julian@nodebb.org>
3 years ago
Barış Soner Uşaklı 424db9ff37 fix: upload test for latest sharp 3 years ago
Barış Soner Uşaklı c52401da02 fix: #10491, don't leak deleted message in cleanedContent 3 years ago
Barış Soner Uşaklı 767973717b
perf: WIP #10449, allow array of pids for posts.purge (#10465)
* perf: WIP #10449, allow array of pids for posts.purge

* refactor: deletePostDiffs

* perf: deletePostFromReplies/deletePostFromGroups

* refactor: upload

* refactor: deleteFromCategoryRecentPosts

deleteFromUsersBookmarks
deleteFromUsersVotes

* feat: closes #10468, add incrObjectFieldByBulk

* refactor: allow nids for notifications.rescind

* refactor: allow uids array for user.updatePostCount

* refactor: rewrite deleteFromTopicUserNotification to work with an array

* feat: deprecate action:post.purge as well

* lint: add missing comma
3 years ago
CommanderRoot 200f0b2e4f
refactor: replace deprecated String.prototype.substr() (#10432)
.substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated

Signed-off-by: Tobias Speicher <rootcommander@gmail.com>
3 years ago
Julian Lam 38ca73c493 fix(security): explicitly declare cache-control header instead of using middleware
This commit reverts 1f6f389ff2
3 years ago
Julian Lam 1f6f389ff2 fix(security): cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers.
This commit also reverts e39cdd490b
3 years ago
Julian Lam e578c60566 test: skip i18n tests if the github event is a pull request 3 years ago
Barış Soner Uşaklı 24c1f879a5 test: fix middleware test 3 years ago
Barış Soner Uşaklı 6344c3b689 test: fix category tests 3 years ago
Barış Soner Uşaklı a551142593 test: fix one more test 3 years ago
Barış Soner Uşaklı 3414a23bce feat: min:rep:upvote, and other limits similar to downvotes
closes #10380
3 years ago
Barış Soner Uşaklı 10a5901e4a
fix: persona test fail 3 years ago
Barış Soner Uşaklı 9db90a3098 test: log configJSON 3 years ago
Barış Soner Uşaklı 32f693019b test: check contents of config.json in tests 3 years ago
Julian Lam 17836f2a3a
Re-introduce lodash into src/package-install.js (#10315)
* test: add failing test for if package.json is non-existant, fix tests' beforeEach method

* Revert "fix: #10289, remove lodash dependency in src/cli/package-install.js"

This reverts commit 81fa2e22bc.

* fix: regression caused by 94b79ce402

`./nodebb setup` was no longer able to be called without arguments or env vars

* fix: .updatePackageFile() throwing if no package.json

* fix: removing unneeded code in src/cli/index.js that seemed to be used to handle cases where package.json was missing (initial install)

... However, as .updatePackageFile() now handled cases where there is no package.json, it should be ok to remove this code

* fix: handle missing package.json or node_modules/
3 years ago
Barış Soner Uşaklı 58b5781cea feat: closes #10296
asset_base_url in nconf
keep assetBaseUrl in config for backwards compat
3 years ago
Julian Lam fb78570c13 test: fix topic thumb tests and topic thumbs to work properly with post upload assoc. 3 years ago
Julian Lam d5ed8736aa feat: deleting a user upload dissociates from posts, and vice versa 3 years ago
Julian Lam 8c2752bab1 test: user uploads.js tests 3 years ago
Julian Lam 11275d6809 test: testing user upload methods, already fixed one bug 3 years ago
Julian Lam b9edee143e fix: local deleteUploads() method in `src/user/delete.js` to call `User.deleteUpload()` 3 years ago
Julian Lam 6489e9fd9e refactor: change the post uploads' hash seeds to have the `files/` prefix 3 years ago
Julian Lam 84dfda59e6 fix: #10144, automatically delete uploads from disk on post purge, ACP option to keep uploads on disk if desired 3 years ago
Julian Lam d92da828a3 refactor: move post upload tests to its own file 3 years ago
Barış Soner Uşaklı 2dbdd1818f test: fix occasional test failure 3 years ago
Julian Lam a2c7d69e1b fix: remove extraneous devDependencies on package merge
/cc @pitaj
3 years ago
Julian Lam 9e4147f07c chore: use source and current local vars, + docs 3 years ago
Julian Lam 0f788b8eaa fix: #10257, topic thumbs not deleting on topic deletion 3 years ago
Julian Lam 606808760e
test: add test to verify that a sorted set is automatically deleted if its last element is removed (#10261)
* test: add test to verify that a sorted set is automatically deleted if its last element is removed

* fix: remote empty zsets when all elements have been removed #yolo

* Revert "fix: remote empty zsets when all elements have been removed #yolo"

This reverts commit 0ac73244bb6ffd802007a252a35844c589ce8721.

* fix: altered behaviour in module.exists instead of zrem
3 years ago
Julian Lam d34471f69f fix: regression in package.json merging logic that caused extraneous packages to not be removed 3 years ago
Julian Lam 689c125cd3 fix: #10229, package merging should deep merge nested objects
+ tests
3 years ago
Julian Lam a0a3870611 fix: use fs.promises 3 years ago
Julian Lam 1b8eeaf840 feat: more tests for ensuring downvoted posts are added to the :votes zset 3 years ago
Julian Lam aa8914a153 feat: v3 user email tests 3 years ago
Julian Lam d1b1f50bb2 test: stricter isValidationPending check 3 years ago
Julian Lam fc2c755c64 fix: properly unregister hooks in emailer tests 3 years ago
Julian Lam dee9cca3c8 fix: email ban tests 3 years ago
Julian Lam e25c0313d1 Revert "refactor: emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent"
This reverts commit f0e32ff182.
3 years ago
Julian Lam ea27eaf166 feat: no more sending emails to banned users, + feature flag 3 years ago
Julian Lam f0e32ff182 refactor: emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent
Note that of course this doesn't mean the message was _delivered_, just sent off.

This will stop issues where emailer errors crash NodeBB
3 years ago
Barış Soner Uşaklı 680e36da67 test: fix derp 3 years ago
Barış Soner Uşaklı a214f9a61b test: up acp plugin page timeout 3 years ago
Barış Soner Uşaklı 10949184ca
test: add failing guest csrf test (#10169)
* test: add failing guest csrf test

* test: use correct var

* fix: use applyCsrf for guests as well
3 years ago
Barış Soner Uşaklı 6c1e184c74 test: fix util test 3 years ago
Barış Soner Uşaklı 9b75b1ede2 test: update tag tests, fix linux symlink error 3 years ago
Julian Lam d95b4ee29a fix: assertion check to ensure messages are in the room when editing/deleting, etc 3 years ago
Julian Lam 82768fcf6e chore: remove debug logs in test/api.js 3 years ago
Julian Lam aaa6f752d0 refactor: put message api calls behind `/messages` prefix, #10097 3 years ago
Julian Lam e747998cba test: fix user tests calling deprecated socket methods 3 years ago
Julian Lam 16ba16cdc4 fix: deprecate chats.leave 3 years ago
Julian Lam fe17c94c35 feat: `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` 3 years ago
Julian Lam 6294beea0b fix: re-allow kicking of the other party in a 1-to-1 chat 3 years ago
Julian Lam d62ee84637 feat: `POST /chats/:roomId/users` 3 years ago
Julian Lam 6eea6451d2 feat: `GET /chats/:roomId/users` [breaking] 3 years ago
Julian Lam b292960594 feat: `GET /chats/:roomId/:mid` 3 years ago
Julian Lam f48ed3658a feat: `PUT /chats/:roomId/:mid` 3 years ago
Julian Lam 140f9d2481 fix: isFinite check for room assertion, more test migrating 3 years ago
Julian Lam e745e21242 chore: use apiv3 for room rename tests 3 years ago
Julian Lam c990211cf2 refactor: rewrite messaging tests to use API v3 calls when available, rewrote a bunch of tests to async..await 3 years ago
Julian Lam eeffb9d978 feat: `POST /api/v3/chats/:roomId` 3 years ago
Barış Soner Uşaklı 1264dcb555 test: add email interstitial tests 3 years ago
Barış Soner Uşaklı 5e08f7e604 test: don't use csrf_token for get,head, options 3 years ago
Barış Soner Uşaklı 0e273ab25a test: fix tests 3 years ago
Barış Soner Uşaklı 1f063058f0 breaking: remove socket.emit('user.exists')
remove socket.emit('user.deleteAccount')
remove socket.emit('user.follow')
remove socket.emit('user.unfollow')
remove socket.emit('user.saveSettings')
3 years ago
Barış Soner Uşaklı 6b45dee9c5 breaking: remove socket.emit('user.changeUsernameEmail')
remove socket.emit('user.changePassword')
remove socket.emit('user.updateProfile')
3 years ago
Barış Soner Uşaklı f918a38164 breaking: remove socket.emit('topics.follow')
remove socket.emit('topics.changeWatching')
3 years ago
Barış Soner Uşaklı 68fd087567 test: remove old test 3 years ago
Barış Soner Uşaklı 6ad0472106 breaking: remove socket.emit('topics.post')
remove socket.emit('topics.search')
remove socket.emit('topics.getTopic')
3 years ago
Barış Soner Uşaklı 49641a3217 breaking: remove socket.emit('user.banUsers');
remove socket.emit('user.unbanUsers');
3 years ago
Barış Soner Uşaklı 4604a5724c breaking: remove socket.emit('posts.reply')
remove socket.emit('posts.getPost')
3 years ago
Barış Soner Uşaklı 6d95684bc8 breaking: remove socket.emit('user.changePicture') 3 years ago
Barış Soner Uşaklı 0d694c781c breaking: remove socket.emit('user.search') 3 years ago
Barış Soner Uşaklı 02ea17ea1b breaking: remove deprecated groups socket calls
socket.emit('groups.join') removed use `PUT /api/v3/groups/:slug/membership/:uid`
socket.emit('groups.leave') removed use `DELETE /api/v3/groups/:slug/membership/:uid`
socket.emit('groups.grant') removed, `PUT /api/v3/groups/:slug/ownership/:uid`
socket.emit('groups.rescind') removed, `DELETE /api/v3/groups/:slug/ownership/:uid`
socket.emit('groups.update') removed, `PUT /api/v3/groups/:slug`
socket.emit('groups.create') removed, `POST /api/v3/groups`
socket.emit('groups.delete') removed, `DELETE /api/v3/groups`
3 years ago
Julian Lam bc7707aa88 fix: #9484 show user history only to admins and gmods 3 years ago
Baris Usakli 20e76699a2 lint: missing ; 3 years ago
Baris Usakli 0d1e57dce0 breaking: remove deprecated methods
socket.emit('topics.delete') removed use `DELETE /api/v3/topics/state`
socket.emit('topics.restore') removed use `PUT /api/v3/topics/state`
socket.emit('topics.purge') removed use `DELETE /api/v3/topics`
socket.emit('topics.lock') removed use `PUT /api/v3/topics/lock`
socket.emit('topics.unlock') removed use `DELETE /api/v3/topics/lock`
socket.emit('topics.pin') removed use `PUT /api/v3/topics/pin`
socket.emit('topics.unpin') removed use `DELETE /api/v3/topics/pin`
3 years ago
Barış Soner Uşaklı bd1cb2d4f9 breaking: remove socket.emit('posts.delete')
remove socket.emit('posts.restore')
remove socket.emit('posts.purge')
remove socket.emit('posts.deletePosts')
remove socket.emit('posts.purgePosts')
3 years ago
Barış Soner Uşaklı ec1d5e38da breaking: remove socket.emit('posts.upvote')
socket.emit('posts.downvote')
socket.emit('posts.unvote')
3 years ago
Barış Soner Uşaklı 8427c5d9db breaking: remove socket.emit('posts.move') 3 years ago
Barış Soner Uşaklı 4247f62441 breaking: remove socket.emit('posts.edit') 3 years ago
Barış Soner Uşaklı f7418ccd47 breaking: remove socket.emit('posts.bookmark/unbookmark') 3 years ago
Barış Soner Uşaklı 5c3d5f1f40 test: make it async 3 years ago
Barış Soner Uşaklı 26f00ffb60 test: fix 3 years ago
Barış Soner Uşaklı e3c0f0be0a refactor: remove unused 3 years ago
Barış Soner Uşaklı 07e2741ea6 breaking: remove deprecated admin.groups methods 3 years ago
Barış Soner Uşaklı a8afdc6019 fix: #10069, don't modify fields array
use a single setObjectFields for the profile update
3 years ago
Barış Soner Uşaklı 830166d120 fix: #10067, count posts instead of incr/decr 3 years ago
Barış Soner Uşaklı 45d755b6ae breaking: remove socket.emit('categories.getCategory') 3 years ago
Barış Soner Uşaklı cc3f82bc83 breaking: remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings') 3 years ago
Barış Soner Uşaklı 0b9c01f9a0 breaking: remove deprecated socket.emit('admin.categories.update') 3 years ago
Barış Soner Uşaklı ba5d2e7b81 breaking: remove deprecated socket.emit('admin.categories.purge') 3 years ago
Barış Soner Uşaklı b335372348 breaking: remove deprecated socket.emit('admin.categories.create') 3 years ago
Barış Soner Uşaklı 10c19af2ad breaking: remove deprecated socket.emit('admin.categories.getAll') 3 years ago
Barış Soner Uşaklı f8f0a83b52 test: one more getTopicPosts test 3 years ago
Barış Soner Uşaklı 906dc5675e fix: handle start=0 stop=0 for topics.getTopicPosts
add more tests
3 years ago
Barış Soner Uşaklı a29535833f fix: #10052, dont use spaces in tag class name 3 years ago