From 1e6ed0adbcde873f2394008665350f501c32e6fa Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Wed, 26 May 2021 15:40:53 +0000 Subject: [PATCH 001/115] chore: update changelog for v1.17.1 --- CHANGELOG.md | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca5ca430ee..bd7b4d62a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,119 @@ +#### v1.17.1 (2021-05-26) + +##### Chores + +* **deps:** + * update dependency grunt to v1.4.1 (0e37bbfd) + * update dependency jsdom to v16.6.0 (60170ad6) + * update dependency eslint to v7.27.0 (298af98d) + * update dependency eslint-plugin-import to v2.23.0 (1623ba4f) + * update commitlint monorepo to v12.1.4 (4a01313d) + * update commitlint monorepo to v12.1.3 (b82774c5) + * update dependency eslint to v7.26.0 (d1418210) + * update dependency lint-staged to v11 (1bf57d40) + * update dependency mocha to v8.4.0 (461e187b) + * update dependency eslint to v7.25.0 (32c20806) + * update dependency grunt to v1.4.0 (a30deef3) +* incrementing version number - v1.17.0 (75f7972b) +* update changelog for v1.17.0 (4c441a1b) + +##### Documentation Changes + +* update API docs to better outline authentication options (6ef0c8e9) +* update API authentication verbiage (d08d0c42) + +##### New Features + +* keep query string when redirecting category (77dde41f) +* add req.query to flags.list/getCount (3d6bdeb3) +* add filter:flags.getFlagIdsWithFilters (d35c64b1) +* #9559, set order help text (f5847f4f) +* add filter:user.getWatchedCategories (4afca690) +* pass req.query to getUserDataByUserSlug (518157d9) +* #9508, add cluster support (94c12e37) +* #9551 (a3d6c56e) +* add template to hook (1f3e6601) +* add filter:account.getPostsFromUserSet (a2442ee9) +* automatically attempt reconnection on window focus (8cc61f11) +* #9533, allow redirect in build hooks (f6b583bb) +* add _hooks metadata object to all hooks that have object-type params (46899cca) +* add filter:categories.copySettingsFrom (d8e4fd4c) +* guard against multiple resolves (084c9851) +* #9511 send notifications on accept/reject (b40fc4b6) +* `hidden` class to FOUC (2bfa63ae) +* add filter:middleware.autoLocale (a478dc7e) +* remove sync hooks support (01956af4) + +##### Bug Fixes + +* #9580, proper 404 when ajaxifying (9ebfdeb7) +* lint (09f51792) +* #9567 fix tests (951e71a0) +* #9567, use regular 404 (5215c30a) +* ioredis upgrade fix, maybe (1ce59508) +* bug where interstitial errors were not properly passed to the front-end via req.flash (1d9cfe1e) +* #9553, use same fields for user search results in acp (0551642a) +* lint (e8c5c18a) +* lint (ffa80163) +* tests (fad5988e) +* tests (074ee859) +* wrong error message checked (a9bb1088) +* #9507 session reroll causes socket.io to become confused (#9534) (ec6d1e23) +* isObjectField(s) empty field (2c22b06f) +* do not register SW for Safari until upstream fixes #9193 (ce5fea2a) +* infinite scroll with small number of items #9524 (#9525) (cb1dd0a3) +* #9519 unable to properly ajaxify to home on subfolder installs if anchor did not have a trailing slash (db48b952) +* #9512, fix chat icon if no privileges (6ed8890c) +* #9503, dont error in markUnread if room doesnt exist (308252f5) +* use socket.request.headers (9e07efc1) +* buildReqObject headers for socket.io calls (ed534f34) +* **deps:** + * update dependency sharp to v0.28.3 (963a9fe6) + * update dependency ioredis to v4.27.3 (075dab27) + * update dependency nodebb-theme-vanilla to v12.0.8 (#9574) (10290f54) + * update dependency mongodb to v3.6.8 (#9573) (64935787) + * update dependency postcss to v8.3.0 (ad4afd59) + * update dependency nodebb-theme-persona to v11.0.20 (403bcfac) + * update dependency nodebb-plugin-composer-default to v6.5.29 (8d7e4420) + * update dependency mongodb to v3.6.7 (f29e4e87) + * update dependency textcomplete to ^0.18.0 (9b7653cc) + * update socket.io packages to v4.1.2 (#9563) (ca7c77bc) + * update dependency nodebb-plugin-dbsearch to v5.0.2 (#9562) (2d0564cb) + * update dependency nodebb-theme-slick to v1.4.7 (bf4aa50c) + * update dependency nodebb-plugin-composer-default to v6.5.28 (4164b322) + * update socket.io packages to v4.1.1 (155a7fb6) + * update socket.io packages to v4.1.0 (53335677) + * update dependency sharp to v0.28.2 (4bc07a08) + * update dependency postcss to v8.2.15 (7770c2a1) + * update dependency nodebb-theme-persona to v11.0.19 (3145c7d5) + * update dependency nodebb-plugin-mentions to v2.13.11 (7e2ea4df) + * update dependency nodebb-plugin-markdown to v8.12.10 (2ac5a085) + * update dependency nodebb-plugin-markdown to v8.12.9 (ee3634cc) + * update socket.io packages to v4.0.2 (ff98f854) + * update dependency postcss to v8.2.14 (22ec1ea5) + * update dependency sitemap to v7 (0389dd96) + * update dependency nodebb-widget-essentials to v5.0.4 (19f1cbfc) + * update dependency nodebb-theme-persona to v11.0.18 (33d91fde) + * update dependency connect-redis to v5.2.0 (c0d54a06) + * update dependency postcss to v8.2.13 (831e5c26) + * update dependency postcss to v8.2.12 (38454df9) +* **#9508:** switch to ioredis (#9545) (dd81dd03) + +##### Refactors + +* cli/upgrade async/await (#9558) (ac86937c) +* bubble other errors (0096cf17) + +##### Reverts + +* sync hooks (5fe97b9c) + +##### Tests + +* fix tests (1029a06a) +* fix redis tests (4e490f60) +* add test for undefined fields in getObjectsFields (92de49be) + #### v1.17.0 (2021-04-22) ##### Breaking Changes From 0aad131204b1b8737a3005721b1599a744ad34a6 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Wed, 26 May 2021 15:40:53 +0000 Subject: [PATCH 002/115] chore: incrementing version number - v1.17.1 (cherry picked from commit 902da5402918dbe99c5f298ce769b0b1994739b5) Signed-off-by: Misty (Bot) --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 3cb383970c..2e533d8a36 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "1.17.0", + "version": "1.17.1", "homepage": "http://www.nodebb.org", "repository": { "type": "git", @@ -182,4 +182,4 @@ "url": "https://github.com/barisusakli" } ] -} +} \ No newline at end of file From 3aeac357b2011223a6f4d182a2174767107d2842 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 26 May 2021 15:41:58 +0000 Subject: [PATCH 003/115] fix(deps): update dependency autoprefixer to v10.2.6 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 2e533d8a36..828e5c20dd 100644 --- a/install/package.json +++ b/install/package.json @@ -32,7 +32,7 @@ "ace-builds": "^1.4.12", "archiver": "^5.2.0", "async": "^3.2.0", - "autoprefixer": "10.2.5", + "autoprefixer": "10.2.6", "bcryptjs": "2.4.3", "benchpressjs": "2.4.3", "body-parser": "^1.19.0", From 48b8e3bb3fdb9c3fb80cb2187cd62c051a6814ac Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 21 May 2021 14:50:31 -0400 Subject: [PATCH 004/115] fix: error when trying to trim an object --- src/controllers/mods.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/mods.js b/src/controllers/mods.js index 7bbe91cdff..faa0055469 100644 --- a/src/controllers/mods.js +++ b/src/controllers/mods.js @@ -36,7 +36,7 @@ modsController.flags.list = async function (req, res, next) { // Parse query string params for filters, eliminate non-valid filters filters = filters.reduce((memo, cur) => { - if (req.query.hasOwnProperty(cur)) { + if (req.query.hasOwnProperty(cur) && typeof req.query[cur] === 'string') { if (req.query[cur].trim() !== '') { memo[cur] = req.query[cur].trim(); } From d2960aeb09ea86940be2c1684cd5b26f4801c559 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 26 May 2021 12:35:37 -0400 Subject: [PATCH 005/115] feat: added GET user route for api v3 --- public/openapi/write/users/uid.yaml | 24 ++++++++++++++++++++++++ src/controllers/write/users.js | 4 ++++ src/routes/write/users.js | 1 + 3 files changed, 29 insertions(+) diff --git a/public/openapi/write/users/uid.yaml b/public/openapi/write/users/uid.yaml index 1e2878364a..c8cbcb61b7 100644 --- a/public/openapi/write/users/uid.yaml +++ b/public/openapi/write/users/uid.yaml @@ -15,6 +15,30 @@ head: description: user found '404': description: user not found +get: + tags: + - users + summary: get a single user account + parameters: + - in: path + name: uid + schema: + type: integer + required: true + description: uid of the user to check + example: 3 + responses: + '200': + description: successfully retrieved user profile + content: + application/json: + schema: + type: object + properties: + status: + $ref: ../../components/schemas/Status.yaml#/Status + response: + $ref: ../../components/schemas/UserObj.yaml#/UserObj delete: tags: - users diff --git a/src/controllers/write/users.js b/src/controllers/write/users.js index fc58c4484d..8b7e483ba2 100644 --- a/src/controllers/write/users.js +++ b/src/controllers/write/users.js @@ -43,6 +43,10 @@ Users.exists = async (req, res) => { helpers.formatApiResponse(200, res); }; +Users.get = async (req, res) => { + helpers.formatApiResponse(200, res, await user.getUserData(req.params.uid)); +}; + Users.update = async (req, res) => { const userObj = await api.users.update(req, { ...req.body, uid: req.params.uid }); helpers.formatApiResponse(200, res, userObj); diff --git a/src/routes/write/users.js b/src/routes/write/users.js index 118d8ba27e..43eaf27cda 100644 --- a/src/routes/write/users.js +++ b/src/routes/write/users.js @@ -19,6 +19,7 @@ function authenticatedRoutes() { setupApiRoute(router, 'delete', '/', [...middlewares, middleware.checkRequired.bind(null, ['uids'])], controllers.write.users.deleteMany); setupApiRoute(router, 'head', '/:uid', [middleware.assert.user], controllers.write.users.exists); + setupApiRoute(router, 'get', '/:uid', [...middlewares, middleware.assert.user], controllers.write.users.get); setupApiRoute(router, 'put', '/:uid', [...middlewares, middleware.assert.user], controllers.write.users.update); setupApiRoute(router, 'delete', '/:uid', [...middlewares, middleware.assert.user], controllers.write.users.delete); setupApiRoute(router, 'delete', '/:uid/content', [...middlewares, middleware.assert.user], controllers.write.users.deleteContent); From d8c64479d74df32f82c38510c6eb8e659d611cc6 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 26 May 2021 22:33:44 +0000 Subject: [PATCH 006/115] fix(deps): update dependency mongodb to v3.6.9 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 828e5c20dd..08225a450e 100644 --- a/install/package.json +++ b/install/package.json @@ -78,7 +78,7 @@ "material-design-lite": "^1.3.0", "mime": "^2.5.2", "mkdirp": "^1.0.4", - "mongodb": "3.6.8", + "mongodb": "3.6.9", "morgan": "^1.10.0", "mousetrap": "^1.6.5", "multiparty": "4.2.2", From b9482e3c87057c35cdfbc0bc562b97228e7a1ade Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Thu, 27 May 2021 09:08:12 +0000 Subject: [PATCH 007/115] Latest translations and fallbacks --- public/language/bn/category.json | 8 ++++---- public/language/zh-CN/admin/menu.json | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/public/language/bn/category.json b/public/language/bn/category.json index 6902d44b10..cf9e1640f7 100644 --- a/public/language/bn/category.json +++ b/public/language/bn/category.json @@ -9,10 +9,10 @@ "no_new_posts": "নতুন কোন পোস্ট নাই", "watch": "নজর রাখুন", "ignore": "উপেক্ষা করুন", - "watching": "Watching", - "not-watching": "Not Watching", - "ignoring": "Ignoring", - "watching.description": "Show topics in unread and recent", + "watching": "দৃশ্যমান", + "not-watching": "দেখা হচ্ছে না", + "ignoring": "উপেক্ষারত", + "watching.description": "অপঠিত এবং সাম্প্রতিক বিষয়গুলো দেখাও", "not-watching.description": "Do not show topics in unread, show in recent", "ignoring.description": "Do not show topics in unread and recent", "watching.message": "You are now watching updates from this category and all subcategories", diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json index 6d74b7f6d4..e1a66fc56b 100644 --- a/public/language/zh-CN/admin/menu.json +++ b/public/language/zh-CN/admin/menu.json @@ -1,9 +1,9 @@ { - "section-dashboard": "Dashboards", + "section-dashboard": "仪表盘", "dashboard/overview": "Overview", - "dashboard/logins": "Logins", - "dashboard/users": "Users", - "dashboard/topics": "Topics", + "dashboard/logins": "登录", + "dashboard/users": "用户", + "dashboard/topics": "主题", "section-general": "基本", "section-manage": "管理", From 3d5fef6e80c8fee552b44ed45a6eb6afa3e17aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 27 May 2021 10:02:54 -0400 Subject: [PATCH 008/115] feat: pass req.query to getUnreadData --- src/middleware/header.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/middleware/header.js b/src/middleware/header.js index 4f5aaad734..b9e41df5ba 100644 --- a/src/middleware/header.js +++ b/src/middleware/header.js @@ -156,7 +156,7 @@ middleware.renderHeader = async function renderHeader(req, res, data) { async function appendUnreadCounts({ uid, navigation, unreadData, query }) { const originalRoutes = navigation.map(nav => nav.originalRoute); const calls = { - unreadData: topics.getUnreadData({ uid: uid }), + unreadData: topics.getUnreadData({ uid: uid, query: query }), unreadChatCount: messaging.getUnreadCount(uid), unreadNotificationCount: user.notifications.getUnreadCount(uid), unreadFlagCount: (async function () { From ca9ca876f539e952e78e85b0402362b3a90e5e11 Mon Sep 17 00:00:00 2001 From: Andrew Rodrigues Date: Thu, 27 May 2021 10:25:58 -0400 Subject: [PATCH 009/115] chore: up rewards --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 08225a450e..b36902e18d 100644 --- a/install/package.json +++ b/install/package.json @@ -91,7 +91,7 @@ "nodebb-plugin-markdown": "8.12.10", "nodebb-plugin-mentions": "2.13.11", "nodebb-plugin-spam-be-gone": "0.7.9", - "nodebb-rewards-essentials": "0.1.4", + "nodebb-rewards-essentials": "0.1.5", "nodebb-theme-lavender": "5.2.1", "nodebb-theme-persona": "11.0.20", "nodebb-theme-slick": "1.4.7", @@ -182,4 +182,4 @@ "url": "https://github.com/barisusakli" } ] -} \ No newline at end of file +} From e6c3840a4d4190eadab88e7f8547f400e808de69 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Fri, 28 May 2021 09:09:58 +0000 Subject: [PATCH 010/115] Latest translations and fallbacks --- public/language/sv/user.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/language/sv/user.json b/public/language/sv/user.json index 12faae89ad..42637827f3 100644 --- a/public/language/sv/user.json +++ b/public/language/sv/user.json @@ -13,9 +13,9 @@ "ban_account_confirm": "Vill du verkligen bannlysa den här användaren?", "unban_account": "Ta bort bannlysning", "delete_account": "Ta bort ämne", - "delete_account_as_admin": "Delete Account", - "delete_content": "Delete Account Content", - "delete_all": "Delete Account and Content", + "delete_account_as_admin": "Radera Konto", + "delete_content": "Radera Kontots Innehåll", + "delete_all": "Radera Konto samt Kontots Innehåll ", "delete_account_confirm": "Are you sure you want to anonymize your posts and delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your password to confirm that you wish to destroy this account.", "delete_this_account_confirm": "Are you sure you want to delete this account while leaving its contents behind?
This action is irreversible, posts will be anonymized, and you will not be able to restore post associations with the deleted account

", "delete_account_content_confirm": "Are you sure you want to delete this account's content (posts/topics/uploads)?
This action is irreversible and you will not be able to recover any data

", From 3fb744458041c557e0b74fcac9358d1524b3e3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 28 May 2021 11:12:21 -0400 Subject: [PATCH 011/115] fix: returnOriginal deprecation https://github.com/mongodb/node-mongodb-native/pull/2808 --- src/database/mongo/hash.js | 10 +++++++++- src/database/mongo/main.js | 7 ++++++- src/database/mongo/sorted.js | 10 +++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/database/mongo/hash.js b/src/database/mongo/hash.js index ec8a0b9c03..0829bbf8af 100644 --- a/src/database/mongo/hash.js +++ b/src/database/mongo/hash.js @@ -222,7 +222,15 @@ module.exports = function (module) { return result.map(data => data && data[field]); } - const result = await module.client.collection('objects').findOneAndUpdate({ _key: key }, { $inc: increment }, { returnOriginal: false, upsert: true }); + const result = await module.client.collection('objects').findOneAndUpdate({ + _key: key, + }, { + $inc: increment, + }, { + returnDocument: 'after', + upsert: true, + }); + cache.del(key); return result && result.value ? result.value[field] : null; }; diff --git a/src/database/mongo/main.js b/src/database/mongo/main.js index 1e4f7e51df..e7b961a30c 100644 --- a/src/database/mongo/main.js +++ b/src/database/mongo/main.js @@ -90,7 +90,12 @@ module.exports = function (module) { } const result = await module.client.collection('objects').findOneAndUpdate({ _key: key, - }, { $inc: { data: 1 } }, { returnOriginal: false, upsert: true }); + }, { + $inc: { data: 1 }, + }, { + returnDocument: 'after', + upsert: true, + }); return result && result.value ? result.value.data : null; }; diff --git a/src/database/mongo/sorted.js b/src/database/mongo/sorted.js index 87664c71ed..7b59828e49 100644 --- a/src/database/mongo/sorted.js +++ b/src/database/mongo/sorted.js @@ -400,7 +400,15 @@ module.exports = function (module) { data.score = parseFloat(increment); try { - const result = await module.client.collection('objects').findOneAndUpdate({ _key: key, value: value }, { $inc: data }, { returnOriginal: false, upsert: true }); + const result = await module.client.collection('objects').findOneAndUpdate({ + _key: key, + value: value, + }, { + $inc: data, + }, { + returnDocument: 'after', + upsert: true, + }); return result && result.value ? result.value.score : null; } catch (err) { // if there is duplicate key error retry the upsert From f9b248b87f3e950e819a0a2ad568d88efec18b4a Mon Sep 17 00:00:00 2001 From: Mats Date: Fri, 28 May 2021 12:21:37 +0200 Subject: [PATCH 012/115] fix: updates navigation menu user icon --- public/src/client/account/edit/username.js | 1 + 1 file changed, 1 insertion(+) diff --git a/public/src/client/account/edit/username.js b/public/src/client/account/edit/username.js index 076da3e452..487b7872ee 100644 --- a/public/src/client/account/edit/username.js +++ b/public/src/client/account/edit/username.js @@ -34,6 +34,7 @@ define('forum/account/edit/username', [ $('[component="header/profilelink/settings"]').attr('href', config.relative_path + '/user/' + userslug + '/settings'); $('[component="header/username"]').text(userData.username); $('[component="header/usericon"]').css('background-color', response['icon:bgColor']).text(response['icon:text']); + $('[component="avatar/icon"]').css('background-color', response['icon:bgColor']).text(response['icon:text']); } ajaxify.go('user/' + userslug + '/edit'); From ac7b093f99074c35fe030d7d3a836680a24a4703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 28 May 2021 12:31:49 -0400 Subject: [PATCH 013/115] feat: add filter:notifications.create --- src/notifications.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/notifications.js b/src/notifications.js index 6d6c360304..faf4cd4b5c 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -129,6 +129,12 @@ Notifications.create = async function (data) { } const now = Date.now(); data.datetime = now; + const result = await plugins.hooks.fire('filter:notifications.create', { + data: data, + }); + if (!result.data) { + return; + } await Promise.all([ db.sortedSetAdd('notifications', now, data.nid), db.setObject(`notifications:${data.nid}`, data), From d8d6c989709e9176f93fdfb71d4ae19d2fd599b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 28 May 2021 12:32:52 -0400 Subject: [PATCH 014/115] fix: return null --- src/notifications.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/notifications.js b/src/notifications.js index faf4cd4b5c..57dae2f635 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -133,7 +133,7 @@ Notifications.create = async function (data) { data: data, }); if (!result.data) { - return; + return null; } await Promise.all([ db.sortedSetAdd('notifications', now, data.nid), From c3b0e2fa99e38766cd52856e8699dca93b4b790a Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 28 May 2021 15:53:51 +0000 Subject: [PATCH 015/115] chore(deps): update dependency eslint-plugin-import to v2.23.3 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index b36902e18d..e67db22316 100644 --- a/install/package.json +++ b/install/package.json @@ -147,7 +147,7 @@ "coveralls": "3.1.0", "eslint": "7.27.0", "eslint-config-airbnb-base": "14.2.1", - "eslint-plugin-import": "2.22.1", + "eslint-plugin-import": "2.23.3", "grunt": "1.4.1", "grunt-contrib-watch": "1.1.0", "husky": "6.0.0", From 16e0bca5703c5c21bb97f6f47852baca9b747bf8 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 28 May 2021 12:17:48 -0400 Subject: [PATCH 016/115] fix: improper use of filename extensions --- install/web.js | 2 +- src/install.js | 2 +- src/meta/configs.js | 2 +- test/flags.js | 6 +++--- test/mocks/databasemock.js | 2 +- test/translator.js | 2 +- test/utils.js | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/install/web.js b/install/web.js index 5c5d3d2d8c..2d9e310890 100644 --- a/install/web.js +++ b/install/web.js @@ -127,7 +127,7 @@ function welcome(req, res) { }; }); - const defaults = require('./data/defaults'); + const defaults = require('./data/defaults.json'); res.render('install/index', { url: nconf.get('url') || (`${req.protocol}://${req.get('host')}`), diff --git a/src/install.js b/src/install.js index 10eb9a93ce..c94e80d32c 100644 --- a/src/install.js +++ b/src/install.js @@ -11,7 +11,7 @@ const util = require('util'); const promptGet = util.promisify((schema, callback) => prompt.get(schema, callback)); -const utils = require('./utils.js'); +const utils = require('./utils'); const install = module.exports; const questions = {}; diff --git a/src/meta/configs.js b/src/meta/configs.js index 237597f5fa..be0e1eebcc 100644 --- a/src/meta/configs.js +++ b/src/meta/configs.js @@ -12,7 +12,7 @@ const plugins = require('../plugins'); const utils = require('../utils'); const Meta = require('./index'); const cacheBuster = require('./cacheBuster'); -const defaults = require('../../install/data/defaults'); +const defaults = require('../../install/data/defaults.json'); const Configs = module.exports; diff --git a/test/flags.js b/test/flags.js index ab41ebd473..575f4139a0 100644 --- a/test/flags.js +++ b/test/flags.js @@ -447,7 +447,7 @@ describe('Flags', () => { }); it('should rescind notification if flag is resolved', async () => { - const SocketFlags = require('../src/socket.io/flags.js'); + const SocketFlags = require('../src/socket.io/flags'); const result = await Topics.post({ cid: category.cid, uid: uid3, @@ -551,7 +551,7 @@ describe('Flags', () => { }); it('should not error if user blocked target', (done) => { - const SocketFlags = require('../src/socket.io/flags.js'); + const SocketFlags = require('../src/socket.io/flags'); let reporterUid; let reporteeUid; async.waterfall([ @@ -694,7 +694,7 @@ describe('Flags', () => { }); describe('(websockets)', () => { - const SocketFlags = require('../src/socket.io/flags.js'); + const SocketFlags = require('../src/socket.io/flags'); let pid; let tid; before((done) => { diff --git a/test/mocks/databasemock.js b/test/mocks/databasemock.js index 392fad7e55..911398b708 100644 --- a/test/mocks/databasemock.js +++ b/test/mocks/databasemock.js @@ -17,7 +17,7 @@ global.env = process.env.NODE_ENV || 'production'; const winston = require('winston'); -const packageInfo = require('../../package'); +const packageInfo = require('../../package.json'); winston.add(new winston.transports.Console({ format: winston.format.combine( diff --git a/test/translator.js b/test/translator.js index 962a1ba41b..c5479ed7e8 100644 --- a/test/translator.js +++ b/test/translator.js @@ -2,7 +2,7 @@ const assert = require('assert'); -const shim = require('../public/src/modules/translator.js'); +const shim = require('../public/src/modules/translator'); const { Translator } = shim; const db = require('./mocks/databasemock'); diff --git a/test/utils.js b/test/utils.js index cb764c214b..b9806ca4c8 100644 --- a/test/utils.js +++ b/test/utils.js @@ -3,7 +3,7 @@ const assert = require('assert'); const { JSDOM } = require('jsdom'); -const utils = require('../public/src/utils.js'); +const utils = require('../public/src/utils'); const slugify = require('../src/slugify'); const db = require('./mocks/databasemock'); From 062928d2e211c17a7fd27352d35a79c7f63056ad Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 28 May 2021 18:06:21 +0000 Subject: [PATCH 017/115] fix(deps): update dependency nodebb-theme-persona to v11.0.21 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index e67db22316..0fb810a386 100644 --- a/install/package.json +++ b/install/package.json @@ -93,7 +93,7 @@ "nodebb-plugin-spam-be-gone": "0.7.9", "nodebb-rewards-essentials": "0.1.5", "nodebb-theme-lavender": "5.2.1", - "nodebb-theme-persona": "11.0.20", + "nodebb-theme-persona": "11.0.21", "nodebb-theme-slick": "1.4.7", "nodebb-theme-vanilla": "12.0.8", "nodebb-widget-essentials": "5.0.4", From 866a53088bb9b8601143ad74611d4073e28d46b7 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sat, 29 May 2021 09:09:00 +0000 Subject: [PATCH 018/115] Latest translations and fallbacks --- public/language/ru/admin/manage/categories.json | 4 ++-- public/language/ru/error.json | 8 ++++---- public/language/ru/notifications.json | 4 ++-- public/language/ru/success.json | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/public/language/ru/admin/manage/categories.json b/public/language/ru/admin/manage/categories.json index 5d453c102b..bf447c7797 100644 --- a/public/language/ru/admin/manage/categories.json +++ b/public/language/ru/admin/manage/categories.json @@ -32,8 +32,8 @@ "edit": "Редактировать", "analytics": "Аналитика", "view-category": "Перейти в категорию", - "set-order": "Set order", - "set-order-help": "Setting the order of the category will move this category to that order and update the order of other categories as necessary. Minimum order is 1 which puts the category at the top.", + "set-order": "Установить порядковый номер", + "set-order-help": "Установка порядка категории переместит эту категорию в этот порядок и при необходимости обновит порядок других категорий. Минимальный порядок - 1, что ставит категорию на первое место.", "select-category": "Указать категорию", "set-parent-category": "Указать родительскую категорию", diff --git a/public/language/ru/error.json b/public/language/ru/error.json index 27374b15ab..489d2c4e22 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -174,10 +174,10 @@ "cant-kick-self": "Удалить себя из группы невозможно.", "no-users-selected": "Выберите одного или нескольких пользователей", "invalid-home-page-route": "Неверная ссылка на домашнюю страницу", - "invalid-session": "Invalid Session", - "invalid-session-text": "It looks like your login session is no longer active. Please refresh this page.", - "session-mismatch": "Session Mismatch", - "session-mismatch-text": "It looks like your login session no longer matches with the server. Please refresh this page.", + "invalid-session": "Недействительная сессия", + "invalid-session-text": "Похоже, что ваша сессия входа больше не активна. Пожалуйста, обновите эту страницу.", + "session-mismatch": "Несоответствие сессии", + "session-mismatch-text": "Похоже, что ваша сессия входа больше не совпадает с сервером. Пожалуйста, обновите эту страницу.", "no-topics-selected": "Темы не выбраны!", "cant-move-to-same-topic": "Невозможно переместить сообщение в эту же тему!", "cant-move-topic-to-same-category": "Невозможно переместить тему в эту же категорию!", diff --git a/public/language/ru/notifications.json b/public/language/ru/notifications.json index 180b91f3ae..0c9f1eb632 100644 --- a/public/language/ru/notifications.json +++ b/public/language/ru/notifications.json @@ -47,8 +47,8 @@ "posts-exported": "Посты %1 экспортированы, нажмите для загрузки", "uploads-exported": "Вложения %1 экспортированы, нажмите для загрузки", "users-csv-exported": "CSV пользователей экспортирован, нажмите, чтобы загрузить", - "post-queue-accepted": "Your queued post has been accepted. Click here to see your post.", - "post-queue-rejected": "Your queued post has been rejected.", + "post-queue-accepted": "Ваше сообщение из очереди было принято. Нажмите здесь, чтобы увидеть ваше сообщение.", + "post-queue-rejected": "Ваше сообщение из очереди было отклонено.", "email-confirmed": "Электронная почта подтверждена", "email-confirmed-message": "Спасибо за подтверждение адреса электронной почты. Ваша учётная запись активирована.", "email-confirm-error-message": "Ошибка проверки адреса электронной почты. Возможно, код подтверждения введён неправильно или у него истёк срок действия.", diff --git a/public/language/ru/success.json b/public/language/ru/success.json index 7ecfdad3c0..1e3763f2dc 100644 --- a/public/language/ru/success.json +++ b/public/language/ru/success.json @@ -1,7 +1,7 @@ { "success": "Готово", "topic-post": "Вы успешно отправили сообщение.", - "post-queued": "Your post is queued for approval. You will get a notification when it is accepted or rejected.", + "post-queued": "Ваше сообщение поставлено в очередь на утверждение. Вы получите уведомление, когда оно будет принято или отклонено.", "authentication-successful": "Авторизация выполнена успешно", "settings-saved": "Настройки сохранены!" } \ No newline at end of file From 886d65f686be9f8df8d6332559eb02d7eb3f48cf Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 29 May 2021 22:04:24 +0000 Subject: [PATCH 019/115] chore(deps): update dependency eslint-plugin-import to v2.23.4 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 0fb810a386..a09803b3a8 100644 --- a/install/package.json +++ b/install/package.json @@ -147,7 +147,7 @@ "coveralls": "3.1.0", "eslint": "7.27.0", "eslint-config-airbnb-base": "14.2.1", - "eslint-plugin-import": "2.23.3", + "eslint-plugin-import": "2.23.4", "grunt": "1.4.1", "grunt-contrib-watch": "1.1.0", "husky": "6.0.0", From 21c992242e1219c8d726ddc5b3b661adc9fd44c2 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sun, 30 May 2021 09:08:41 +0000 Subject: [PATCH 020/115] Latest translations and fallbacks --- public/language/nl/admin/advanced/events.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/language/nl/admin/advanced/events.json b/public/language/nl/admin/advanced/events.json index 492ad60df6..3ec8d7f418 100644 --- a/public/language/nl/admin/advanced/events.json +++ b/public/language/nl/admin/advanced/events.json @@ -2,11 +2,11 @@ "events": "Events", "no-events": "Er zijn geen events", "control-panel": "Events Controlepaneel", - "delete-events": "Delete Events", + "delete-events": "Verwijder eventen", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", - "filter-start": "Start Date", - "filter-end": "End Date", - "filter-perPage": "Per Page" + "filter-start": "Start datum", + "filter-end": "Eind datum", + "filter-perPage": "Per pagina" } \ No newline at end of file From 8672329218fc960192a60ad0a1c0d48711ebfaa8 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 1 Jun 2021 11:55:15 +0000 Subject: [PATCH 021/115] chore(deps): update dependency smtp-server to v3.9.0 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index a09803b3a8..a621bbe594 100644 --- a/install/package.json +++ b/install/package.json @@ -157,7 +157,7 @@ "mocha-lcov-reporter": "1.3.0", "mockdate": "3.0.5", "nyc": "15.1.0", - "smtp-server": "3.8.0" + "smtp-server": "3.9.0" }, "bugs": { "url": "https://github.com/NodeBB/NodeBB/issues" From 57e46e41e37784b5bc661c8123a1fe6c31c8e2a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 1 Jun 2021 11:21:15 -0400 Subject: [PATCH 022/115] feat: allow modifying default category privileges --- src/categories/create.js | 47 +++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/categories/create.js b/src/categories/create.js index b5068ff0dc..c39ac393c1 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -50,22 +50,7 @@ module.exports = function (Categories) { category.backgroundImage = data.backgroundImage; } - const result = await plugins.hooks.fire('filter:category.create', { category: category, data: data }); - category = result.category; - - - await db.setObject(`category:${category.cid}`, category); - if (!category.descriptionParsed) { - await Categories.parseDescription(category.cid, category.description); - } - - await db.sortedSetAddBulk([ - ['categories:cid', category.order, category.cid], - [`cid:${parentCid}:children`, category.order, category.cid], - ['categories:name', 0, `${data.name.substr(0, 200).toLowerCase()}:${category.cid}`], - ]); - - const defaultPrivileges = [ + let defaultPrivileges = [ 'groups:find', 'groups:read', 'groups:topics:read', @@ -79,14 +64,36 @@ module.exports = function (Categories) { 'groups:posts:downvote', 'groups:topics:delete', ]; - const modPrivileges = defaultPrivileges.concat([ + let modPrivileges = defaultPrivileges.concat([ 'groups:topics:schedule', 'groups:posts:view_deleted', 'groups:purge', ]); - await privileges.categories.give(defaultPrivileges, category.cid, 'registered-users'); - await privileges.categories.give(modPrivileges, category.cid, ['administrators', 'Global Moderators']); - await privileges.categories.give(['groups:find', 'groups:read', 'groups:topics:read'], category.cid, ['guests', 'spiders']); + let guestPrivileges = ['groups:find', 'groups:read', 'groups:topics:read']; + + const result = await plugins.hooks.fire('filter:category.create', { + category: category, + data: data, + defaultPrivileges: defaultPrivileges, + modPrivileges: modPrivileges, + guestPrivileges: guestPrivileges, + }); + category = result.category; + + await db.setObject(`category:${category.cid}`, category); + if (!category.descriptionParsed) { + await Categories.parseDescription(category.cid, category.description); + } + + await db.sortedSetAddBulk([ + ['categories:cid', category.order, category.cid], + [`cid:${parentCid}:children`, category.order, category.cid], + ['categories:name', 0, `${data.name.substr(0, 200).toLowerCase()}:${category.cid}`], + ]); + + await privileges.categories.give(result.defaultPrivileges, category.cid, 'registered-users'); + await privileges.categories.give(result.modPrivileges, category.cid, ['administrators', 'Global Moderators']); + await privileges.categories.give(result.guestPrivileges, category.cid, ['guests', 'spiders']); cache.del([ 'categories:cid', From 66cae54ee31606e7001180a5a913b270bc4bb795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 1 Jun 2021 11:26:18 -0400 Subject: [PATCH 023/115] fix: lint --- src/categories/create.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/categories/create.js b/src/categories/create.js index c39ac393c1..172ba7b1a6 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -50,7 +50,7 @@ module.exports = function (Categories) { category.backgroundImage = data.backgroundImage; } - let defaultPrivileges = [ + const defaultPrivileges = [ 'groups:find', 'groups:read', 'groups:topics:read', @@ -64,12 +64,12 @@ module.exports = function (Categories) { 'groups:posts:downvote', 'groups:topics:delete', ]; - let modPrivileges = defaultPrivileges.concat([ + const modPrivileges = defaultPrivileges.concat([ 'groups:topics:schedule', 'groups:posts:view_deleted', 'groups:purge', ]); - let guestPrivileges = ['groups:find', 'groups:read', 'groups:topics:read']; + const guestPrivileges = ['groups:find', 'groups:read', 'groups:topics:read']; const result = await plugins.hooks.fire('filter:category.create', { category: category, From 3717df610acb8fc63a3b8c1cb65d3a5898e6f0d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 3 Jun 2021 17:11:25 -0400 Subject: [PATCH 024/115] fix: don't crash if session doesn't exist --- src/routes/authentication.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/routes/authentication.js b/src/routes/authentication.js index b8373296cf..ca7b98d870 100644 --- a/src/routes/authentication.js +++ b/src/routes/authentication.js @@ -131,12 +131,16 @@ Auth.reloadRoutes = async function (params) { passport.authenticate(strategy.name, (err, user) => { if (err) { - delete req.session.registration; + if (req.session && req.session.registration) { + delete req.session.registration; + } return next(err); } if (!user) { - delete req.session.registration; + if (req.session && req.session.registration) { + delete req.session.registration; + } return helpers.redirect(res, strategy.failureUrl !== undefined ? strategy.failureUrl : '/login'); } From 4ffd234ff9d41ba59e21c41bc1d49e65c0cb7fac Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 4 Jun 2021 04:14:08 +0000 Subject: [PATCH 025/115] fix(deps): update dependency ioredis to v4.27.4 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index a621bbe594..78821efa71 100644 --- a/install/package.json +++ b/install/package.json @@ -107,7 +107,7 @@ "postcss": "8.3.0", "postcss-clean": "1.2.0", "prompt": "^1.1.0", - "ioredis": "4.27.3", + "ioredis": "4.27.4", "request": "2.88.2", "request-promise-native": "^1.0.9", "requirejs": "2.3.6", From 286644d0b85b4a47f9c8d3f443f419c5524ed91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 4 Jun 2021 09:41:23 -0400 Subject: [PATCH 026/115] fix: #9592, check session --- src/routes/write/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/routes/write/index.js b/src/routes/write/index.js index b62ca2fcc0..40e00ac9bb 100644 --- a/src/routes/write/index.js +++ b/src/routes/write/index.js @@ -65,5 +65,7 @@ Write.reload = async (params) => { }; Write.cleanup = (req) => { - req.session.destroy(); + if (req && req.session) { + req.session.destroy(); + } }; From c448ba6f5a31148f86317bd39979837bd131fe80 Mon Sep 17 00:00:00 2001 From: Mats Date: Fri, 4 Jun 2021 16:46:35 +0200 Subject: [PATCH 027/115] Fixes flag note editing, deletion, and template update (#9581) * Fixes flag note editing, deletion, and template update Flag note datetime should be int. Corrects argument order for note reloading. * Chore: add missing radix * fix: empty append bug This line results in an error message popping up when clicking the flag notes text box, as the 'appendNote' case fires with no text. I can't tell that it serves any function. --- public/src/client/flags/detail.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/public/src/client/flags/detail.js b/public/src/client/flags/detail.js index df2a3a89b1..9760fc8791 100644 --- a/public/src/client/flags/detail.js +++ b/public/src/client/flags/detail.js @@ -35,7 +35,7 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b socket.emit('flags.appendNote', { flagId: ajaxify.data.flagId, note: noteEl.value, - datetime: noteEl.getAttribute('data-datetime'), + datetime: parseInt(noteEl.getAttribute('data-datetime'), 10), }, function (err, payload) { if (err) { return app.alertError(err.message); @@ -44,7 +44,6 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b Detail.reloadNotes(payload.notes); Detail.reloadHistory(payload.history); - noteEl.setAttribute('data-action', 'appendNote'); noteEl.removeAttribute('data-datetime'); }); break; @@ -82,7 +81,7 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b break; case 'delete-note': - var datetime = this.closest('[data-datetime]').getAttribute('data-datetime'); + var datetime = parseInt(this.closest('[data-datetime]').getAttribute('data-datetime'), 10); bootbox.confirm('[[flags:delete-note-confirm]]', function (ok) { if (ok) { socket.emit('flags.deleteNote', { @@ -144,9 +143,9 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b Detail.reloadNotes = function (notes) { ajaxify.data.notes = notes; - Benchpress.render('flags/detail', 'notes', { + Benchpress.render('flags/detail', { notes: notes, - }).then(function (html) { + }, 'notes').then(function (html) { var wrapperEl = components.get('flag/notes'); wrapperEl.empty(); wrapperEl.html(html); From 6632b2b6c3b7e4a65ecdc9c81ba849fbbe2ed8c1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Jun 2021 10:56:53 -0400 Subject: [PATCH 028/115] fix(deps): update dependency connect-redis to v6 (#9590) Co-authored-by: Renovate Bot --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 78821efa71..c716ba0c39 100644 --- a/install/package.json +++ b/install/package.json @@ -49,7 +49,7 @@ "connect-mongo": "4.4.1", "connect-multiparty": "^2.2.0", "connect-pg-simple": "^6.2.1", - "connect-redis": "5.2.0", + "connect-redis": "6.0.0", "cookie-parser": "^1.4.5", "cron": "^1.8.2", "cropperjs": "^1.5.11", From 816856b0c6d9f93f0b67ca14c0b6aeda7eff8cab Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 4 Jun 2021 11:34:49 -0400 Subject: [PATCH 029/115] feat: introduce boolean res.locals flag to bypass session reroll (used by session-sharing) The session reroll logic is still standard practice, but in some cases, it is not necessary or causes UX issues. An issue opened in session sharing (julianlam/nodebb-plugin-session-sharing#95) brought this to attention in that parsing the cookie to log in the user caused a reroll (as expected), but caused the session open on other tabs to be mismatched. If "re-validate" was turned on, it basically meant that it was not possible to use NodeBB with multiple tabs. Session sharing now sets `reroll` to `false` if re-validate is enabled. --- src/controllers/authentication.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js index 54415ee928..aabbcea44e 100644 --- a/src/controllers/authentication.js +++ b/src/controllers/authentication.js @@ -326,12 +326,16 @@ authenticationController.doLogin = async function (req, uid) { return; } const loginAsync = util.promisify(req.login).bind(req); - const regenerateSession = util.promisify(req.session.regenerate).bind(req.session); - const sessionData = { ...req.session }; - await regenerateSession(); - for (const [prop, value] of Object.entries(sessionData)) { - req.session[prop] = value; + const { reroll } = req.res.locals; + if (reroll !== false) { + const regenerateSession = util.promisify(req.session.regenerate).bind(req.session); + + const sessionData = { ...req.session }; + await regenerateSession(); + for (const [prop, value] of Object.entries(sessionData)) { + req.session[prop] = value; + } } await loginAsync({ uid: uid }); From fac0bcbd3558021cab3fc543cd14dc8d97a9a30b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 4 Jun 2021 23:19:01 +0000 Subject: [PATCH 030/115] chore(deps): update dependency eslint to v7.28.0 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index c716ba0c39..06ceff8f48 100644 --- a/install/package.json +++ b/install/package.json @@ -145,7 +145,7 @@ "@commitlint/cli": "12.1.4", "@commitlint/config-angular": "12.1.4", "coveralls": "3.1.0", - "eslint": "7.27.0", + "eslint": "7.28.0", "eslint-config-airbnb-base": "14.2.1", "eslint-plugin-import": "2.23.4", "grunt": "1.4.1", From 9f74caf65cb1e01ea78a95606a21d0ce5e6912c7 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 5 Jun 2021 18:43:41 +0000 Subject: [PATCH 031/115] fix(deps): update dependency ioredis to v4.27.5 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 06ceff8f48..28f42cd272 100644 --- a/install/package.json +++ b/install/package.json @@ -107,7 +107,7 @@ "postcss": "8.3.0", "postcss-clean": "1.2.0", "prompt": "^1.1.0", - "ioredis": "4.27.4", + "ioredis": "4.27.5", "request": "2.88.2", "request-promise-native": "^1.0.9", "requirejs": "2.3.6", From ca72aa93d7e798254b4e8e69e418c2fe721b4ef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 7 Jun 2021 10:26:00 -0400 Subject: [PATCH 032/115] Locks bug failing test (#9595) * test: failing test for issue * fix: #9593, don't lock if email is identical to username * fix: lock calls after first call * fix: add back email check * test: remove invalid test Co-authored-by: Julian Lam --- src/user/create.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/user/create.js b/src/user/create.js index c94003af0c..c4ba0ae51b 100644 --- a/src/user/create.js +++ b/src/user/create.js @@ -19,14 +19,14 @@ module.exports = function (User) { data.email = String(data.email).trim(); } + await User.isDataValid(data); + + await lock(data.username, '[[error:username-taken]]'); + if (data.email && data.email !== data.username) { + await lock(data.email, '[[error:email-taken]]'); + } + try { - await lock(data.username, '[[error:username-taken]]'); - if (data.email) { - await lock(data.email, '[[error:email-taken]]'); - } - - await User.isDataValid(data); - return await create(data); } finally { await db.deleteObjectFields('locks', [data.username, data.email]); From edcba61aa954f6cdda7bb43d8c8b5abcb8368db0 Mon Sep 17 00:00:00 2001 From: Mats Date: Tue, 1 Jun 2021 13:36:35 +0200 Subject: [PATCH 033/115] fix: disallow editing of other users' notes Feel free to close this if it is intentional, but as you are not allowed to delete other users notes I expect you shouldn't be able to edit them. Editing another users post also changes ownership, allowing you to then delete it. I also added `error:` to the errormessage so that they display properly. --- src/socket.io/flags.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/socket.io/flags.js b/src/socket.io/flags.js index c63d3511a0..33bcc7ea32 100644 --- a/src/socket.io/flags.js +++ b/src/socket.io/flags.js @@ -51,8 +51,16 @@ SocketFlags.appendNote = async function (socket, data) { const allowed = await user.isPrivileged(socket.uid); if (!allowed) { - throw new Error('[[no-privileges]]'); + throw new Error('[[error:no-privileges]]'); } + + if (data.datetime && data.flagId) { + const note = await flags.getNote(data.flagId, data.datetime); + if (note.uid !== socket.uid) { + throw new Error('[[error:no-privileges]]')); + } + } + await flags.appendNote(data.flagId, socket.uid, data.note, data.datetime); const [notes, history] = await Promise.all([ From d07229aa6bc168108d006c19c5b53352f116f888 Mon Sep 17 00:00:00 2001 From: Mats Date: Tue, 1 Jun 2021 13:43:35 +0200 Subject: [PATCH 034/115] chore: fix indentation --- src/socket.io/flags.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/socket.io/flags.js b/src/socket.io/flags.js index 33bcc7ea32..6a2c8a2c83 100644 --- a/src/socket.io/flags.js +++ b/src/socket.io/flags.js @@ -59,7 +59,7 @@ SocketFlags.appendNote = async function (socket, data) { if (note.uid !== socket.uid) { throw new Error('[[error:no-privileges]]')); } - } + } await flags.appendNote(data.flagId, socket.uid, data.note, data.datetime); From 6f73261186fc765b41ce4ddc3c1cd83bda80e82c Mon Sep 17 00:00:00 2001 From: Mats Date: Tue, 1 Jun 2021 13:47:16 +0200 Subject: [PATCH 035/115] fix: extra ')' --- src/socket.io/flags.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/socket.io/flags.js b/src/socket.io/flags.js index 6a2c8a2c83..d6f92e45ec 100644 --- a/src/socket.io/flags.js +++ b/src/socket.io/flags.js @@ -57,7 +57,7 @@ SocketFlags.appendNote = async function (socket, data) { if (data.datetime && data.flagId) { const note = await flags.getNote(data.flagId, data.datetime); if (note.uid !== socket.uid) { - throw new Error('[[error:no-privileges]]')); + throw new Error('[[error:no-privileges]]'); } } From 2b42e7edb04652bfa191e017ffdefcb986c056dd Mon Sep 17 00:00:00 2001 From: Mats Date: Mon, 7 Jun 2021 10:01:55 +0200 Subject: [PATCH 036/115] chore: lint --- src/socket.io/flags.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/socket.io/flags.js b/src/socket.io/flags.js index d6f92e45ec..9c38362cba 100644 --- a/src/socket.io/flags.js +++ b/src/socket.io/flags.js @@ -48,21 +48,17 @@ SocketFlags.appendNote = async function (socket, data) { if (!data || !(data.flagId && data.note)) { throw new Error('[[error:invalid-data]]'); } - const allowed = await user.isPrivileged(socket.uid); if (!allowed) { throw new Error('[[error:no-privileges]]'); } - - if (data.datetime && data.flagId) { - const note = await flags.getNote(data.flagId, data.datetime); + if (data.datetime && data.flagId) { + const note = await flags.getNote(data.flagId, data.datetime); if (note.uid !== socket.uid) { - throw new Error('[[error:no-privileges]]'); + throw new Error('[[error:no-privileges]]'); } } - await flags.appendNote(data.flagId, socket.uid, data.note, data.datetime); - const [notes, history] = await Promise.all([ flags.getNotes(data.flagId), flags.getHistory(data.flagId), From 93d94564c1aed01abee1dfcb89ccd0e2d632a3a0 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 7 Jun 2021 12:21:44 -0400 Subject: [PATCH 037/115] fix: #9596, incorrect placeholder string in some translations --- public/language/cs/error.json | 6 +++--- public/language/da/modules.json | 2 +- public/language/et/email.json | 2 +- public/language/gl/email.json | 2 +- public/language/gl/user.json | 2 +- public/language/he/global.json | 2 +- public/language/ko/error.json | 2 +- public/language/nb/flags.json | 2 +- public/language/pt-BR/user.json | 2 +- public/language/pt-PT/error.json | 2 +- public/language/ru/admin/manage/registration.json | 4 ++-- public/language/vi/admin/appearance/skins.json | 2 +- public/language/zh-CN/admin/menu.json | 2 +- public/language/zh-CN/topic.json | 6 +++--- public/language/zh-TW/admin/menu.json | 2 +- 15 files changed, 20 insertions(+), 20 deletions(-) diff --git a/public/language/cs/error.json b/public/language/cs/error.json index 60628f1984..1d6321bfd2 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -68,9 +68,9 @@ "post-delete-duration-expired-minutes": "Je vám umožněno odstranit příspěvky jen po %1 minut/y od jeho vytvoření", "post-delete-duration-expired-minutes-seconds": "Je vám umožněno odstranit příspěvky jen po %1 minut/y %2 sekund/y od jeho vytvoření", "post-delete-duration-expired-hours": "Je vám umožněno odstranit příspěvky jen po %1 hodin/y od jeho vytvoření", - "post-delete-duration-expired-hours-minutes": "Je vám umožněno odstranit příspěvky jen po 1% hodin/y %2 minut/y od jeho vytvoření", - "post-delete-duration-expired-days": "Je vám umožněno odstranit příspěvky jen po 1% den/y/ů od jeho vytvoření", - "post-delete-duration-expired-days-hours": "Je vám umožněno odstranit příspěvky jen po 1% den/y/ů %2 hodin/y od jeho vytvoření", + "post-delete-duration-expired-hours-minutes": "Je vám umožněno odstranit příspěvky jen po %1 hodin/y %2 minut/y od jeho vytvoření", + "post-delete-duration-expired-days": "Je vám umožněno odstranit příspěvky jen po %1 den/y/ů od jeho vytvoření", + "post-delete-duration-expired-days-hours": "Je vám umožněno odstranit příspěvky jen po %1 den/y/ů %2 hodin/y od jeho vytvoření", "cant-delete-topic-has-reply": "Nemůžete odstranit vaše téma, po tom co obsahuje odpověď", "cant-delete-topic-has-replies": "Téma nelze odstranit poté, co obsahuje %1 odpovědí", "content-too-short": "Zadejte prosím delší příspěvek. Každý příspěvek musí obsahovat alespoň %1 znaků.", diff --git a/public/language/da/modules.json b/public/language/da/modules.json index 2c25bccbcf..0a9327cb0e 100644 --- a/public/language/da/modules.json +++ b/public/language/da/modules.json @@ -5,7 +5,7 @@ "chat.send": "Send", "chat.no_active": "Du har ingen aktive chats.", "chat.user_typing": "%1 skriver ...", - "chat.user_has_messaged_you": "1% har skrevet til dig.", + "chat.user_has_messaged_you": "%1 har skrevet til dig.", "chat.see_all": "Se alle chats", "chat.mark_all_read": "Mark all chats read", "chat.no-messages": "Vælg en modtager for at se beskedhistorikken", diff --git a/public/language/et/email.json b/public/language/et/email.json index a3353788e1..e103532d00 100644 --- a/public/language/et/email.json +++ b/public/language/et/email.json @@ -28,7 +28,7 @@ "digest.day": "päev", "digest.week": "nädal", "digest.month": "kuu", - "digest.subject": "Ima 1% jaoks", + "digest.subject": "Ima %1 jaoks", "digest.title.day": "Your Daily Digest", "digest.title.week": "Your Weekly Digest", "digest.title.month": "Your Monthly Digest", diff --git a/public/language/gl/email.json b/public/language/gl/email.json index 645bc0c1fd..a215f3e492 100644 --- a/public/language/gl/email.json +++ b/public/language/gl/email.json @@ -28,7 +28,7 @@ "digest.day": "día", "digest.week": "semana", "digest.month": "mes", - "digest.subject": "Resumo de 1%", + "digest.subject": "Resumo de %1", "digest.title.day": "Your Daily Digest", "digest.title.week": "Your Weekly Digest", "digest.title.month": "Your Monthly Digest", diff --git a/public/language/gl/user.json b/public/language/gl/user.json index 4027737b5e..16dc298244 100644 --- a/public/language/gl/user.json +++ b/public/language/gl/user.json @@ -147,7 +147,7 @@ "info.no-flags": "Non se atopou ninguna mensaxe reportada", "info.ban-history": "Histórico recente de bans", "info.no-ban-history": "Este usuario nunca foi baneado", - "info.banned-until": "Baneado hasta 1%", + "info.banned-until": "Baneado hasta %1", "info.banned-expiry": "Expiry", "info.banned-permanently": "Baneado permanentemente", "info.banned-reason-label": "Motivo", diff --git a/public/language/he/global.json b/public/language/he/global.json index 5f928cda0f..5c0a48e4ca 100644 --- a/public/language/he/global.json +++ b/public/language/he/global.json @@ -4,7 +4,7 @@ "buttons.close": "סגור", "403.title": "גישה נדחתה", "403.message": "הגעתם לעמוד שאין לכם הרשאת צפייה בו", - "403.login": "נסו להתחבר.", + "403.login": "נסו להתחבר.", "404.title": "לא נמצא", "404.message": "הגעתם לעמוד שאינו קיים. חזרו לעמוד הבית", "500.title": "שגיאה פנימית.", diff --git a/public/language/ko/error.json b/public/language/ko/error.json index cc71f95327..354b9dde74 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -25,7 +25,7 @@ "invalid-event": "올바르지 않은 이벤트: %1", "local-login-disabled": "권한이 없는 계정에서의 로컬 로그인이 비활성화 되었습니다.", "csrf-invalid": "세션이 만료되어 로그인에 실패하였습니다. 다시 시도해주세요.", - "invalid-pagination-value": "올바르지 않은 페이지 값입니다. 최소 1%에서 최대 2% 사이로 설정해야 합니다.", + "invalid-pagination-value": "올바르지 않은 페이지 값입니다. 최소 %1에서 최대 2% 사이로 설정해야 합니다.", "username-taken": "이미 사용 중인 사용자명입니다.", "email-taken": "이미 사용 중인 이메일입니다.", "email-invited": "해당 이메일의 사용자는 이미 초대되었습니다.", diff --git a/public/language/nb/flags.json b/public/language/nb/flags.json index 822f6aac34..5b525f8d95 100644 --- a/public/language/nb/flags.json +++ b/public/language/nb/flags.json @@ -70,7 +70,7 @@ "sort-replies": "Flest kommentarer", "modal-title": "Rapporter innhold", - "modal-body": "Oppgi årsaken til at du rapporterer% 1% 2. Alternativt kan du bruke en av hurtigrapportknappene hvis det er aktuelt.", + "modal-body": "Oppgi årsaken til at du rapporterer %1 %2. Alternativt kan du bruke en av hurtigrapportknappene hvis det er aktuelt.", "modal-reason-spam": "Spam", "modal-reason-offensive": "Støtende", "modal-reason-other": "Other (specify below)", diff --git a/public/language/pt-BR/user.json b/public/language/pt-BR/user.json index 0120dd2e91..29c94cb91e 100644 --- a/public/language/pt-BR/user.json +++ b/public/language/pt-BR/user.json @@ -110,7 +110,7 @@ "paginate_description": "Paginar tópicos ao invés de utilizar em vez de usar rolagem infinita.", "topics_per_page": "Tópicos por Página", "posts_per_page": "Posts por Página", - "max_items_per_page": "No máximo 1%", + "max_items_per_page": "No máximo %1", "acp_language": "Idioma da Página de Administrador", "notifications": "Notificações", "upvote-notif-freq": "Frequência de Notificação de Votos Positivos", diff --git a/public/language/pt-PT/error.json b/public/language/pt-PT/error.json index 9ce8552b5f..39f6306b09 100644 --- a/public/language/pt-PT/error.json +++ b/public/language/pt-PT/error.json @@ -83,7 +83,7 @@ "tag-too-short": "Por favor introduz um marcador maior. Os marcadores devem ter pelo menos %1 caracter(s)", "tag-too-long": "Por favor introduz um marcador mais curto. Os marcadores devem ter no máximo %1 caracter(es)", "not-enough-tags": "Não existem marcadores suficientes. Os tópicos devem ter pelo menos %1 marcador(es)", - "too-many-tags": "Existem marcadores a mais. Os tópicos não podem ter mais do que 1% marcador(es)", + "too-many-tags": "Existem marcadores a mais. Os tópicos não podem ter mais do que %1 marcador(es)", "cant-use-system-tag": "You can not use this system tag.", "still-uploading": "Por favor aguarda até todos os carregamentos estarem completos.", "file-too-big": "O tamanho máximo permitido para um ficheiro é de %1 kB - por favor carrega um ficheiro mais pequeno", diff --git a/public/language/ru/admin/manage/registration.json b/public/language/ru/admin/manage/registration.json index 55ee19940d..fdcee7040b 100644 --- a/public/language/ru/admin/manage/registration.json +++ b/public/language/ru/admin/manage/registration.json @@ -1,6 +1,6 @@ { "queue": "Очередь", - "description": "В очереди регистраций нет пользователей.
Чтобы включить эту возможность перейдите в Настройки &arr; Пользователь &arr; Регистрация пользователя и задайте Тип регистрации как \"Подтверждение администратором\"", + "description": "В очереди регистраций нет пользователей.
Чтобы включить эту возможность перейдите в Настройки &arr; Пользователь &arr; Регистрация пользователя и задайте Тип регистрации как \"Подтверждение администратором\"", "list.name": "Имя", "list.email": "Email", @@ -17,4 +17,4 @@ "invitations.invitee-username": "Имя пользователя приглашенного (если зарегистрирован)", "invitations.confirm-delete": "Вы уверены, что хотите удалить это приглашение" -} \ No newline at end of file +} \ No newline at end of file diff --git a/public/language/vi/admin/appearance/skins.json b/public/language/vi/admin/appearance/skins.json index 678229cd1c..faf0579331 100644 --- a/public/language/vi/admin/appearance/skins.json +++ b/public/language/vi/admin/appearance/skins.json @@ -4,6 +4,6 @@ "select-skin": "Chọn giao diện", "current-skin": "Giao diện hiện tại", "skin-updated": "Đã cập nhật giao diện", - "applied-success": "1% giao diện đã được sử dụng thành công", + "applied-success": "%1 giao diện đã được sử dụng thành công", "revert-success": "Đã trả giao diện về màu cơ bản" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json index e1a66fc56b..54e8283b7a 100644 --- a/public/language/zh-CN/admin/menu.json +++ b/public/language/zh-CN/admin/menu.json @@ -43,7 +43,7 @@ "settings/sockets": "套接字", "settings/advanced": "高级", - "settings.page-title": "1% 设置", + "settings.page-title": "%1 设置", "section-appearance": "界面", "appearance/themes": "主题", diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json index 31a4160610..bd3ebf9d5f 100644 --- a/public/language/zh-CN/topic.json +++ b/public/language/zh-CN/topic.json @@ -33,7 +33,7 @@ "pinned-with-expiry": "Pinned until %1", "scheduled": "Scheduled", "moved": "已移动", - "moved-from": "移自1%版 ", + "moved-from": "移自%1版 ", "copy-ip": "复制IP", "ban-ip": "封禁IP", "view-history": "编辑历史", @@ -91,9 +91,9 @@ "thread_tools.purge_confirm": "确认清除此主题吗?", "thread_tools.merge_topics": "合并主题", "thread_tools.merge": "合并", - "topic_move_success": "注意:此话题将会被移到1%版,点击此处取消。", + "topic_move_success": "注意:此话题将会被移到%1版,点击此处取消。", "topic_move_multiple_success": "注意:以下话题将会被移到%1版,点击此处取消。", - "topic_move_all_success": "注意 :所有话题都将被移到1%版,点击此处取消。", + "topic_move_all_success": "注意 :所有话题都将被移到%1版,点击此处取消。", "topic_move_undone": "撤销主题移动", "topic_move_posts_success": "此帖子将马上移动。点击此处撤销", "topic_move_posts_undone": "撤销帖子移动", diff --git a/public/language/zh-TW/admin/menu.json b/public/language/zh-TW/admin/menu.json index a90d3fb523..77c408d4be 100644 --- a/public/language/zh-TW/admin/menu.json +++ b/public/language/zh-TW/admin/menu.json @@ -43,7 +43,7 @@ "settings/sockets": "網路接口", "settings/advanced": "進階", - "settings.page-title": "1% 設置", + "settings.page-title": "%1 設置", "section-appearance": "外觀", "appearance/themes": "佈景主題", From 05cc7ccb6041017e3a629651167e09245eebd0c1 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 7 Jun 2021 14:44:12 -0400 Subject: [PATCH 038/115] feat: make undoTimeout configurable, closes #9599 --- install/data/defaults.json | 1 + .../en-GB/admin/settings/general.json | 5 ++- public/src/client/topic/move.js | 32 +++++++++++-------- src/controllers/api.js | 1 + src/views/admin/settings/general.tpl | 12 +++++++ 5 files changed, 36 insertions(+), 15 deletions(-) diff --git a/install/data/defaults.json b/install/data/defaults.json index 47765eb796..2ea9833d79 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -30,6 +30,7 @@ "maximumTagsPerTopic": 5, "minimumTagLength": 3, "maximumTagLength": 15, + "undoTimeout": 10000, "allowTopicsThumbnail": 1, "registrationType": "normal", "registrationApprovalType": "normal", diff --git a/public/language/en-GB/admin/settings/general.json b/public/language/en-GB/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/en-GB/admin/settings/general.json +++ b/public/language/en-GB/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/src/client/topic/move.js b/public/src/client/topic/move.js index c7d8c22fb0..624c7aeb28 100644 --- a/public/src/client/topic/move.js +++ b/public/src/client/topic/move.js @@ -63,20 +63,24 @@ define('forum/topic/move', ['categorySelector', 'alerts'], function (categorySel currentCid: Move.currentCid, onComplete: Move.onComplete, }; - alerts.alert({ - alert_id: 'tids_move_' + (Move.tids ? Move.tids.join('-') : 'all'), - title: '[[topic:thread_tools.move]]', - message: message, - type: 'success', - timeout: 10000, - timeoutfn: function () { - moveTopics(data); - }, - clickfn: function (alert, params) { - delete params.timeoutfn; - app.alertSuccess('[[topic:topic_move_undone]]'); - }, - }); + if (config.undoTimeout > 0) { + return alerts.alert({ + alert_id: 'tids_move_' + (Move.tids ? Move.tids.join('-') : 'all'), + title: '[[topic:thread_tools.move]]', + message: message, + type: 'success', + timeout: config.undoTimeout, + timeoutfn: function () { + moveTopics(data); + }, + clickfn: function (alert, params) { + delete params.timeoutfn; + app.alertSuccess('[[topic:topic_move_undone]]'); + }, + }); + } + + moveTopics(data); } } diff --git a/src/controllers/api.js b/src/controllers/api.js index 48e667c26a..5419bbbe01 100644 --- a/src/controllers/api.js +++ b/src/controllers/api.js @@ -36,6 +36,7 @@ apiController.loadConfig = async function (req) { maximumTagsPerTopic: meta.config.maximumTagsPerTopic || 5, minimumTagLength: meta.config.minimumTagLength || 3, maximumTagLength: meta.config.maximumTagLength || 15, + undoTimeout: meta.config.undoTimeout || 0, useOutgoingLinksPage: meta.config.useOutgoingLinksPage === 1, outgoingLinksWhitelist: meta.config.useOutgoingLinksPage === 1 ? meta.config['outgoingLinks:whitelist'] : undefined, allowGuestHandles: meta.config.allowGuestHandles === 1, diff --git a/src/views/admin/settings/general.tpl b/src/views/admin/settings/general.tpl index dba582b609..a792e48142 100644 --- a/src/views/admin/settings/general.tpl +++ b/src/views/admin/settings/general.tpl @@ -189,4 +189,16 @@ +
+
[[admin/settings/general:topic-tools]]
+
+
+ + +

+ [[admin/settings/general:undo-timeout-help]] +

+
+
+
\ No newline at end of file From e588948ff5f234ca5e231202d359466170ec33ed Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 7 Jun 2021 14:46:37 -0400 Subject: [PATCH 039/115] feat: add undoTimeout to moving posts as well #9599 --- public/src/client/topic/move-post.js | 34 ++++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/public/src/client/topic/move-post.js b/public/src/client/topic/move-post.js index 9c04016654..f3ffc6c2a2 100644 --- a/public/src/client/topic/move-post.js +++ b/public/src/client/topic/move-post.js @@ -44,21 +44,25 @@ define('forum/topic/move-post', [ pids: postSelect.pids.slice(), tid: targetTid, }; - alerts.alert({ - alert_id: 'pids_move_' + postSelect.pids.join('-'), - title: '[[topic:thread_tools.move-posts]]', - message: '[[topic:topic_move_posts_success]]', - type: 'success', - timeout: 10000, - timeoutfn: function () { - movePosts(data); - }, - clickfn: function (alert, params) { - delete params.timeoutfn; - app.alertSuccess('[[topic:topic_move_posts_undone]]'); - moveCommit.removeAttr('disabled'); - }, - }); + if (config.undoTimeout > 0) { + return alerts.alert({ + alert_id: 'pids_move_' + postSelect.pids.join('-'), + title: '[[topic:thread_tools.move-posts]]', + message: '[[topic:topic_move_posts_success]]', + type: 'success', + timeout: 10000, + timeoutfn: function () { + movePosts(data); + }, + clickfn: function (alert, params) { + delete params.timeoutfn; + app.alertSuccess('[[topic:topic_move_posts_undone]]'); + moveCommit.removeAttr('disabled'); + }, + }); + } + + movePosts(data); }); }); }; From 2db77b0cd201bb0d9ef447618bbe31e19138ec57 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 7 Jun 2021 14:51:55 -0400 Subject: [PATCH 040/115] docs: add undoTimeout --- public/openapi/read/config.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/openapi/read/config.yaml b/public/openapi/read/config.yaml index 8643937eae..30455c6e61 100644 --- a/public/openapi/read/config.yaml +++ b/public/openapi/read/config.yaml @@ -41,6 +41,8 @@ get: type: number minimumTagLength: type: number + undoTimeout: + type: number maximumTagLength: type: number useOutgoingLinksPage: From 17091392003c23b571c7dc88bb93dc5eaa3f698f Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Tue, 8 Jun 2021 09:11:28 +0000 Subject: [PATCH 041/115] Latest translations and fallbacks --- public/language/ar/admin/settings/general.json | 5 ++++- public/language/bg/admin/settings/general.json | 5 ++++- public/language/bn/admin/settings/general.json | 5 ++++- public/language/cs/admin/settings/general.json | 5 ++++- public/language/da/admin/settings/general.json | 5 ++++- public/language/da/modules.json | 4 ++-- public/language/de/admin/settings/general.json | 5 ++++- public/language/el/admin/settings/general.json | 5 ++++- public/language/en-US/admin/settings/general.json | 5 ++++- public/language/en-x-pirate/admin/settings/general.json | 5 ++++- public/language/es/admin/settings/general.json | 5 ++++- public/language/et/admin/settings/general.json | 5 ++++- public/language/fa-IR/admin/settings/general.json | 5 ++++- public/language/fi/admin/settings/general.json | 5 ++++- public/language/fr/admin/settings/general.json | 5 ++++- public/language/gl/admin/settings/general.json | 5 ++++- public/language/gl/email.json | 6 +++--- public/language/gl/user.json | 4 ++-- public/language/he/admin/settings/general.json | 5 ++++- public/language/hr/admin/settings/general.json | 5 ++++- public/language/hu/admin/settings/general.json | 5 ++++- public/language/id/admin/settings/general.json | 5 ++++- public/language/it/admin/settings/general.json | 5 ++++- public/language/ja/admin/settings/general.json | 5 ++++- public/language/ko/admin/settings/general.json | 5 ++++- public/language/ko/error.json | 2 +- public/language/lt/admin/settings/general.json | 5 ++++- public/language/lv/admin/settings/general.json | 5 ++++- public/language/ms/admin/settings/general.json | 5 ++++- public/language/nb/admin/settings/general.json | 5 ++++- public/language/nl/admin/settings/general.json | 5 ++++- public/language/pl/admin/settings/general.json | 5 ++++- public/language/pt-BR/admin/settings/general.json | 5 ++++- public/language/pt-PT/admin/settings/general.json | 5 ++++- public/language/ro/admin/settings/general.json | 5 ++++- public/language/ru/admin/manage/registration.json | 2 +- public/language/ru/admin/settings/general.json | 5 ++++- public/language/rw/admin/settings/general.json | 5 ++++- public/language/sc/admin/settings/general.json | 5 ++++- public/language/sk/admin/settings/general.json | 5 ++++- public/language/sl/admin/settings/general.json | 5 ++++- public/language/sr/admin/settings/general.json | 5 ++++- public/language/sv/admin/settings/general.json | 5 ++++- public/language/th/admin/settings/general.json | 5 ++++- public/language/tr/admin/settings/general.json | 5 ++++- public/language/uk/admin/settings/general.json | 5 ++++- public/language/vi/admin/settings/general.json | 5 ++++- public/language/zh-CN/admin/settings/general.json | 5 ++++- public/language/zh-CN/topic.json | 4 ++-- public/language/zh-TW/admin/settings/general.json | 5 ++++- 50 files changed, 187 insertions(+), 55 deletions(-) diff --git a/public/language/ar/admin/settings/general.json b/public/language/ar/admin/settings/general.json index 9bed497d51..a8203ed94d 100644 --- a/public/language/ar/admin/settings/general.json +++ b/public/language/ar/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "لون الثيم", "background-color": "لون الخلفية", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/bg/admin/settings/general.json b/public/language/bg/admin/settings/general.json index 9af0901e40..f382a7acfd 100644 --- a/public/language/bg/admin/settings/general.json +++ b/public/language/bg/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Мета-данни за цвета на уеб сайта", "theme-color": "Цвят на темата", "background-color": "Фонов цвят", - "background-color-help": "Цвят, който да се използва като фон за началния екран, когато уеб сайтът е инсталиран като приложение" + "background-color-help": "Цвят, който да се използва като фон за началния екран, когато уеб сайтът е инсталиран като приложение", + "undo-timeout": "Време за отмяна", + "undo-timeout-help": "Някои действия, като например преместването на теми, могат да бъдат отменени от модератора в рамките на определено време. Задайте 0, за да забраните изцяло отменянето.", + "topic-tools": "Инструменти за темите" } \ No newline at end of file diff --git a/public/language/bn/admin/settings/general.json b/public/language/bn/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/bn/admin/settings/general.json +++ b/public/language/bn/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/general.json b/public/language/cs/admin/settings/general.json index 74be21f9e7..10aa1f4d59 100644 --- a/public/language/cs/admin/settings/general.json +++ b/public/language/cs/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/da/admin/settings/general.json b/public/language/da/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/da/admin/settings/general.json +++ b/public/language/da/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/da/modules.json b/public/language/da/modules.json index 0a9327cb0e..590fab6db5 100644 --- a/public/language/da/modules.json +++ b/public/language/da/modules.json @@ -68,9 +68,9 @@ "bootbox.ok": "OK", "bootbox.cancel": "Annuller", "bootbox.confirm": "Bekræft", - "cover.dragging_title": "Coverbillede positionering ", + "cover.dragging_title": "Coverbillede positionering", "cover.dragging_message": "Træk coverbilledet til den ønskede position og klik \"Gem\"", - "cover.saved": "Coverbillede og position gemt ", + "cover.saved": "Coverbillede og position gemt", "thumbs.modal.title": "Manage topic thumbnails", "thumbs.modal.no-thumbs": "No thumbnails found.", "thumbs.modal.resize-note": "Note: This forum is configured to resize topic thumbnails down to a maximum width of %1px", diff --git a/public/language/de/admin/settings/general.json b/public/language/de/admin/settings/general.json index 787b1bc6b2..eb3dac4bcc 100644 --- a/public/language/de/admin/settings/general.json +++ b/public/language/de/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/el/admin/settings/general.json b/public/language/el/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/el/admin/settings/general.json +++ b/public/language/el/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/en-US/admin/settings/general.json b/public/language/en-US/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/en-US/admin/settings/general.json +++ b/public/language/en-US/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/settings/general.json b/public/language/en-x-pirate/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/en-x-pirate/admin/settings/general.json +++ b/public/language/en-x-pirate/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/es/admin/settings/general.json b/public/language/es/admin/settings/general.json index c97f792b01..642f97d7bd 100644 --- a/public/language/es/admin/settings/general.json +++ b/public/language/es/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/et/admin/settings/general.json b/public/language/et/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/et/admin/settings/general.json +++ b/public/language/et/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/fa-IR/admin/settings/general.json b/public/language/fa-IR/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/fa-IR/admin/settings/general.json +++ b/public/language/fa-IR/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/fi/admin/settings/general.json b/public/language/fi/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/fi/admin/settings/general.json +++ b/public/language/fi/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/fr/admin/settings/general.json b/public/language/fr/admin/settings/general.json index dbf40386a0..61f87e8b00 100644 --- a/public/language/fr/admin/settings/general.json +++ b/public/language/fr/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Métadonnées des couleurs du site", "theme-color": "Couleur du thème", "background-color": "Couleur de l'arrière plan", - "background-color-help": "Couleur utilisée pour l'arrière-plan de l'écran de démarrage lorsque le site Web est installé en tant que PWA" + "background-color-help": "Couleur utilisée pour l'arrière-plan de l'écran de démarrage lorsque le site Web est installé en tant que PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/gl/admin/settings/general.json b/public/language/gl/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/gl/admin/settings/general.json +++ b/public/language/gl/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/gl/email.json b/public/language/gl/email.json index a215f3e492..642be65819 100644 --- a/public/language/gl/email.json +++ b/public/language/gl/email.json @@ -8,9 +8,9 @@ "email.verify-your-email.subject": "Please verify your email", "email.verify.text1": "Your email address has changed!", "welcome.text1": "Grazas por rexistrarte %1!", - "welcome.text2": "Para activar a túa conta, precisamos que a verifiques co enderezo de correo electrónico co que te rexistraches. ", - "welcome.text3": "Un administrador aceptou a túa solicitude de rexistro. Agora pódeste conectar co teu nome de usuario e contrasinal. ", - "welcome.cta": "Fai clic aquí para confirmar o teu enderezo de correo electrónico ", + "welcome.text2": "Para activar a túa conta, precisamos que a verifiques co enderezo de correo electrónico co que te rexistraches.", + "welcome.text3": "Un administrador aceptou a túa solicitude de rexistro. Agora pódeste conectar co teu nome de usuario e contrasinal.", + "welcome.cta": "Fai clic aquí para confirmar o teu enderezo de correo electrónico", "invitation.text1": "%1 convidoute a unirte %2", "invitation.text2": "Your invitation will expire in %1 days.", "invitation.cta": "Click here to create your account.", diff --git a/public/language/gl/user.json b/public/language/gl/user.json index 16dc298244..aa434f65cc 100644 --- a/public/language/gl/user.json +++ b/public/language/gl/user.json @@ -26,7 +26,7 @@ "website": "Páxina web", "location": "Localización", "age": "Idade", - "joined": "Unido ", + "joined": "Unido", "lastonline": "Última conexión:", "profile": "Perfil", "profile_views": "Visitas ao perfil:", @@ -73,7 +73,7 @@ "change_password_success": "O teu contrasinal foi actualizado!", "confirm_password": "Confirma o teu contrasinal", "password": "Contrasinal", - "username_taken_workaround": "Ese nome de usuario xa estaba collido, así que o modificamos lixeiramente. Agora o teu nome é %1 ", + "username_taken_workaround": "Ese nome de usuario xa estaba collido, así que o modificamos lixeiramente. Agora o teu nome é %1", "password_same_as_username": "O teu contrasinal e o teu nome de usuario son os mesmos, por favor, escolle outro contrasinal.", "password_same_as_email": "O teu contrasinal é igual que o teu enderezo electrónico, por favor, escolle outro contrasinal.", "weak_password": "Weak password.", diff --git a/public/language/he/admin/settings/general.json b/public/language/he/admin/settings/general.json index 49290a459d..2616ff5c66 100644 --- a/public/language/he/admin/settings/general.json +++ b/public/language/he/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/hr/admin/settings/general.json b/public/language/hr/admin/settings/general.json index a88b46ccb6..f2f7799db8 100644 --- a/public/language/hr/admin/settings/general.json +++ b/public/language/hr/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/hu/admin/settings/general.json b/public/language/hu/admin/settings/general.json index de6a5f6df2..19f323f8d5 100644 --- a/public/language/hu/admin/settings/general.json +++ b/public/language/hu/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Weboldal szín metainformáció", "theme-color": "Téma színe", "background-color": "Háttér színe", - "background-color-help": "A szín ami akkor jelenik meg alkalmazás indulásnál, ha a weboldal egy okostelefonon PWA-ként van telepítve" + "background-color-help": "A szín ami akkor jelenik meg alkalmazás indulásnál, ha a weboldal egy okostelefonon PWA-ként van telepítve", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/id/admin/settings/general.json b/public/language/id/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/id/admin/settings/general.json +++ b/public/language/id/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/it/admin/settings/general.json b/public/language/it/admin/settings/general.json index 431fc500c6..61156feab9 100644 --- a/public/language/it/admin/settings/general.json +++ b/public/language/it/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Colore Metadati del Sito", "theme-color": "Colore del Tema", "background-color": "Colore di sfondo", - "background-color-help": "Colore utilizzato per lo sfondo della schermata iniziale quando il sito Web è installato come PWA" + "background-color-help": "Colore utilizzato per lo sfondo della schermata iniziale quando il sito Web è installato come PWA", + "undo-timeout": "Annulla timeout", + "undo-timeout-help": "Alcune operazioni come lo spostamento delle discussioni permetteranno al moderatore di annullare la sua azione entro un certo periodo di tempo. Imposta a 0 per disabilitare completamente l'annullamento.", + "topic-tools": "Strumenti discussione" } \ No newline at end of file diff --git a/public/language/ja/admin/settings/general.json b/public/language/ja/admin/settings/general.json index ce7014008b..a52f7542ef 100644 --- a/public/language/ja/admin/settings/general.json +++ b/public/language/ja/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/ko/admin/settings/general.json b/public/language/ko/admin/settings/general.json index f0903ebd48..f1c9c0c421 100644 --- a/public/language/ko/admin/settings/general.json +++ b/public/language/ko/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "사이트 색상 설정", "theme-color": "테마 색상", "background-color": "배경 색상", - "background-color-help": "사이트가 PWA로 설치될 때 스플래시 화면 배경에 사용되는 색상" + "background-color-help": "사이트가 PWA로 설치될 때 스플래시 화면 배경에 사용되는 색상", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 354b9dde74..1d6dc4034f 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -173,7 +173,7 @@ "not-in-room": "채팅방에 사용자 없음", "cant-kick-self": "스스로 이 그룹을 탈퇴할 수 없습니다.", "no-users-selected": "선택된 사용자가 없습니다.", - "invalid-home-page-route": "올바르지 않은 홈페이지 경로입니다. ", + "invalid-home-page-route": "올바르지 않은 홈페이지 경로입니다.", "invalid-session": "세션 오류", "invalid-session-text": "로그인 세션이 종료됐습니다. 페이지를 새로고침 해주세요.", "session-mismatch": "세션 불일치", diff --git a/public/language/lt/admin/settings/general.json b/public/language/lt/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/lt/admin/settings/general.json +++ b/public/language/lt/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/lv/admin/settings/general.json b/public/language/lv/admin/settings/general.json index 937e3a07d0..8e6922b2fc 100644 --- a/public/language/lv/admin/settings/general.json +++ b/public/language/lv/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/ms/admin/settings/general.json b/public/language/ms/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/ms/admin/settings/general.json +++ b/public/language/ms/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/nb/admin/settings/general.json b/public/language/nb/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/nb/admin/settings/general.json +++ b/public/language/nb/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/nl/admin/settings/general.json b/public/language/nl/admin/settings/general.json index 9580c3c93a..6931365c85 100644 --- a/public/language/nl/admin/settings/general.json +++ b/public/language/nl/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/general.json b/public/language/pl/admin/settings/general.json index eaeeb70e37..8b13a5708f 100644 --- a/public/language/pl/admin/settings/general.json +++ b/public/language/pl/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Metadane kolorów strony", "theme-color": "Kolor przewodni", "background-color": "Kolor tła", - "background-color-help": "Kolor wykorzystywany jako tło ekranu ładowania gdy strona jest zainstalowana jako PWA" + "background-color-help": "Kolor wykorzystywany jako tło ekranu ładowania gdy strona jest zainstalowana jako PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/pt-BR/admin/settings/general.json b/public/language/pt-BR/admin/settings/general.json index ce5942ef06..54b30350e7 100644 --- a/public/language/pt-BR/admin/settings/general.json +++ b/public/language/pt-BR/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Metadados de Cores do Site", "theme-color": "Cor do Thema", "background-color": "Cor de Fundo", - "background-color-help": "Cor usada para o fundo da tela inicial quando o site é instalado como um PWA" + "background-color-help": "Cor usada para o fundo da tela inicial quando o site é instalado como um PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/pt-PT/admin/settings/general.json b/public/language/pt-PT/admin/settings/general.json index 1e4f6feada..5fda7129b4 100644 --- a/public/language/pt-PT/admin/settings/general.json +++ b/public/language/pt-PT/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Metadados de Cor do Site", "theme-color": "Cor do Tema", "background-color": "Cor de Fundo", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/ro/admin/settings/general.json b/public/language/ro/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/ro/admin/settings/general.json +++ b/public/language/ro/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/ru/admin/manage/registration.json b/public/language/ru/admin/manage/registration.json index fdcee7040b..28598e917f 100644 --- a/public/language/ru/admin/manage/registration.json +++ b/public/language/ru/admin/manage/registration.json @@ -17,4 +17,4 @@ "invitations.invitee-username": "Имя пользователя приглашенного (если зарегистрирован)", "invitations.confirm-delete": "Вы уверены, что хотите удалить это приглашение" -} \ No newline at end of file +} \ No newline at end of file diff --git a/public/language/ru/admin/settings/general.json b/public/language/ru/admin/settings/general.json index e974c2fd01..a1b0094285 100644 --- a/public/language/ru/admin/settings/general.json +++ b/public/language/ru/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Цвета сайта", "theme-color": "Цвет темы", "background-color": "Цвет фона", - "background-color-help": "Эти цвета используются на экране-заставке, если сайт установлен как приложение PWA" + "background-color-help": "Эти цвета используются на экране-заставке, если сайт установлен как приложение PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/rw/admin/settings/general.json b/public/language/rw/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/rw/admin/settings/general.json +++ b/public/language/rw/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/sc/admin/settings/general.json b/public/language/sc/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/sc/admin/settings/general.json +++ b/public/language/sc/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/sk/admin/settings/general.json b/public/language/sk/admin/settings/general.json index 7ebcb1d1b1..23430b1649 100644 --- a/public/language/sk/admin/settings/general.json +++ b/public/language/sk/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/sl/admin/settings/general.json b/public/language/sl/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/sl/admin/settings/general.json +++ b/public/language/sl/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/sr/admin/settings/general.json b/public/language/sr/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/sr/admin/settings/general.json +++ b/public/language/sr/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/sv/admin/settings/general.json b/public/language/sv/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/sv/admin/settings/general.json +++ b/public/language/sv/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/th/admin/settings/general.json b/public/language/th/admin/settings/general.json index af76ee19b7..147384d94b 100644 --- a/public/language/th/admin/settings/general.json +++ b/public/language/th/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/tr/admin/settings/general.json b/public/language/tr/admin/settings/general.json index 7b8e876149..2b1824eac7 100644 --- a/public/language/tr/admin/settings/general.json +++ b/public/language/tr/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Renk Metaverisi", "theme-color": "Tema rengi", "background-color": "Arkaplan rengi", - "background-color-help": "Site PWA olarak kurulduğunda ekran arkaplanı olarak kullanılacak renk" + "background-color-help": "Site PWA olarak kurulduğunda ekran arkaplanı olarak kullanılacak renk", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/uk/admin/settings/general.json b/public/language/uk/admin/settings/general.json index 4cbb3039db..5b9572b1f5 100644 --- a/public/language/uk/admin/settings/general.json +++ b/public/language/uk/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Site Color Metadata", "theme-color": "Theme Color", "background-color": "Background Color", - "background-color-help": "Color used for splash screen background when website is installed as a PWA" + "background-color-help": "Color used for splash screen background when website is installed as a PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/vi/admin/settings/general.json b/public/language/vi/admin/settings/general.json index 1182d30562..f9f2e5b688 100644 --- a/public/language/vi/admin/settings/general.json +++ b/public/language/vi/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "Dữ Liệu Mô Tả Màu Trang", "theme-color": "Màu Giao Diện", "background-color": "Màu Nền", - "background-color-help": "Màu được sử dụng cho nền màn hình khởi động khi trang web được cài đặt làm PWA" + "background-color-help": "Màu được sử dụng cho nền màn hình khởi động khi trang web được cài đặt làm PWA", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/settings/general.json b/public/language/zh-CN/admin/settings/general.json index 755e0f7eea..d7f82484bb 100644 --- a/public/language/zh-CN/admin/settings/general.json +++ b/public/language/zh-CN/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "站点颜色元数据", "theme-color": "主题色", "background-color": "背景色", - "background-color-help": "当网站安装为 PWA 时用于启动屏幕背景的颜色" + "background-color-help": "当网站安装为 PWA 时用于启动屏幕背景的颜色", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json index bd3ebf9d5f..cdec52b927 100644 --- a/public/language/zh-CN/topic.json +++ b/public/language/zh-CN/topic.json @@ -91,9 +91,9 @@ "thread_tools.purge_confirm": "确认清除此主题吗?", "thread_tools.merge_topics": "合并主题", "thread_tools.merge": "合并", - "topic_move_success": "注意:此话题将会被移到%1版,点击此处取消。", + "topic_move_success": "注意:此话题将会被移到1%版,点击此处取消。", "topic_move_multiple_success": "注意:以下话题将会被移到%1版,点击此处取消。", - "topic_move_all_success": "注意 :所有话题都将被移到%1版,点击此处取消。", + "topic_move_all_success": "注意 :所有话题都将被移到1%版,点击此处取消。", "topic_move_undone": "撤销主题移动", "topic_move_posts_success": "此帖子将马上移动。点击此处撤销", "topic_move_posts_undone": "撤销帖子移动", diff --git a/public/language/zh-TW/admin/settings/general.json b/public/language/zh-TW/admin/settings/general.json index 677705094f..9c80236f30 100644 --- a/public/language/zh-TW/admin/settings/general.json +++ b/public/language/zh-TW/admin/settings/general.json @@ -40,5 +40,8 @@ "site-colors": "網站顏色仲介資料", "theme-color": "主題顏色", "background-color": "背景顏色", - "background-color-help": "當網站以 PWA 方式安裝時起始視窗的背景顏色" + "background-color-help": "當網站以 PWA 方式安裝時起始視窗的背景顏色", + "undo-timeout": "Undo Timeout", + "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "topic-tools": "Topic Tools" } \ No newline at end of file From 6695927ea9d39950886ba18a21873da6ea95269d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 8 Jun 2021 10:00:51 -0400 Subject: [PATCH 042/115] fix: pagination on acp users search --- src/controllers/admin/users.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/admin/users.js b/src/controllers/admin/users.js index a05d1f1a60..c03be8c049 100644 --- a/src/controllers/admin/users.js +++ b/src/controllers/admin/users.js @@ -149,6 +149,7 @@ usersController.search = async function (req, res) { searchData.users = await loadUserInfo(req.uid, uids); searchData.query = validator.escape(String(req.query.query || '')); + searchData.page = page; searchData.resultsPerPage = resultsPerPage; searchData.sortBy = req.query.sortBy; searchData.reverse = reverse; From 8ea58432c9ddea5f9706cf0122ee26301103e528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 8 Jun 2021 11:50:52 -0400 Subject: [PATCH 043/115] feat: show ip on acp manage users update url on search show matching ip when searching by ip add ip to export csv --- public/language/en-GB/admin/manage/users.json | 1 + public/src/admin/manage/users.js | 10 +++++++++- src/controllers/admin/users.js | 14 ++++++++++++-- src/user/admin.js | 8 +++++--- src/views/admin/manage/users.tpl | 2 ++ 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/public/language/en-GB/admin/manage/users.json b/public/language/en-GB/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/en-GB/admin/manage/users.json +++ b/public/language/en-GB/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index 5552e89d4a..4270d4c23e 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -426,7 +426,15 @@ define('admin/manage/users', [ params.page = query.page; params.sortBy = params.sortBy || 'lastonline'; var qs = decodeURIComponent($.param(params)); - $.get(config.relative_path + '/api/admin/manage/users?' + qs, renderSearchResults).fail(function (xhrErr) { + $.get(config.relative_path + '/api/admin/manage/users?' + qs, function (data) { + renderSearchResults(data); + const url = config.relative_path + '/admin/manage/users?' + qs; + if (history.pushState) { + history.pushState({ + url: url, + }, null, window.location.protocol + '//' + window.location.host + url); + } + }).fail(function (xhrErr) { if (xhrErr && xhrErr.responseJSON && xhrErr.responseJSON.error) { app.alertError(xhrErr.responseJSON.error); } diff --git a/src/controllers/admin/users.js b/src/controllers/admin/users.js index c03be8c049..d6166bc165 100644 --- a/src/controllers/admin/users.js +++ b/src/controllers/admin/users.js @@ -147,7 +147,11 @@ usersController.search = async function (req, res) { const uids = searchData.users.map(user => user && user.uid); searchData.users = await loadUserInfo(req.uid, uids); - + if (req.query.searchBy === 'ip') { + searchData.users.forEach((user) => { + user.ip = user.ips.find(ip => ip.includes(String(req.query.query))); + }); + } searchData.query = validator.escape(String(req.query.query || '')); searchData.page = page; searchData.resultsPerPage = resultsPerPage; @@ -157,10 +161,14 @@ usersController.search = async function (req, res) { }; async function loadUserInfo(callerUid, uids) { - const [isAdmin, userData, lastonline] = await Promise.all([ + async function getIPs() { + return await Promise.all(uids.map(uid => db.getSortedSetRevRange(`uid:${uid}:ip`, 0, -1))); + } + const [isAdmin, userData, lastonline, ips] = await Promise.all([ user.isAdministrator(uids), user.getUsersWithFields(uids, userFields, callerUid), db.sortedSetScores('users:online', uids), + getIPs(), ]); userData.forEach((user, index) => { if (user) { @@ -169,6 +177,8 @@ async function loadUserInfo(callerUid, uids) { const timestamp = lastonline[index] || user.joindate; user.lastonline = timestamp; user.lastonlineISO = utils.toISOString(timestamp); + user.ips = ips[index]; + user.ip = ips[index] && ips[index][0] ? ips[index][0] : null; } }); return userData; diff --git a/src/user/admin.js b/src/user/admin.js index 51468a2a1b..209b864d13 100644 --- a/src/user/admin.js +++ b/src/user/admin.js @@ -55,12 +55,14 @@ module.exports = function (User) { path.join(baseDir, 'build/export', 'users.csv'), 'w' ); - fs.promises.appendFile(fd, `${data.fields.join(',')}\n`); + fs.promises.appendFile(fd, `${data.fields.join(',')},ip\n`); await batch.processSortedSet('users:joindate', async (uids) => { const usersData = await User.getUsersFields(uids, data.fields.slice()); + const ips = await Promise.all(uids.map(uid => db.getSortedSetRevRange(`uid:${uid}:ip`, 0, -1))); let line = ''; - usersData.forEach((user) => { - line += `${data.fields.map(field => user[field]).join(',')}\n`; + usersData.forEach((user, index) => { + const userIPs = ips[index] ? ips[index].join(',') : ''; + line += `${data.fields.map(field => user[field]).join(',')},"${userIPs}"\n`; }); await fs.promises.appendFile(fd, line); diff --git a/src/views/admin/manage/users.tpl b/src/views/admin/manage/users.tpl index 0cdd099ae2..85de84ea56 100644 --- a/src/views/admin/manage/users.tpl +++ b/src/views/admin/manage/users.tpl @@ -89,6 +89,7 @@ [[admin/manage/users:users.uid]] [[admin/manage/users:users.username]] [[admin/manage/users:users.email]] + [[admin/manage/users:users.ip]] [[admin/manage/users:users.postcount]] {{{if sort_postcount}}}{{{end}}} [[admin/manage/users:users.reputation]] {{{if sort_reputation}}}{{{end}}} [[admin/manage/users:users.flags]] {{{if sort_flags}}}{{{end}}} @@ -107,6 +108,7 @@ {users.email} + {users.ip} {users.postcount} {users.reputation} {users.flags}0 From 39e1359142e38000f568ef2e3dbad5ada8a7b095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 8 Jun 2021 11:54:52 -0400 Subject: [PATCH 044/115] fix: schema --- public/openapi/components/schemas/UserObject.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/openapi/components/schemas/UserObject.yaml b/public/openapi/components/schemas/UserObject.yaml index 383828b900..593ba63fd9 100644 --- a/public/openapi/components/schemas/UserObject.yaml +++ b/public/openapi/components/schemas/UserObject.yaml @@ -654,3 +654,8 @@ UserObjectACP: example: Not Banned administrator: type: boolean + ip: + type: string + nullable: true + ips: + type: array From 8f00abc838c1c26884fa2a7b0daa231c99c2844b Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Wed, 9 Jun 2021 09:11:00 +0000 Subject: [PATCH 045/115] Latest translations and fallbacks --- public/language/ar/admin/manage/users.json | 1 + public/language/bg/admin/manage/users.json | 1 + public/language/bn/admin/manage/users.json | 1 + public/language/cs/admin/manage/users.json | 1 + public/language/da/admin/manage/users.json | 1 + public/language/de/admin/manage/users.json | 1 + public/language/el/admin/manage/users.json | 1 + public/language/en-US/admin/manage/users.json | 1 + public/language/en-x-pirate/admin/manage/users.json | 1 + public/language/es/admin/manage/users.json | 1 + public/language/et/admin/manage/users.json | 1 + public/language/fa-IR/admin/manage/users.json | 1 + public/language/fi/admin/manage/users.json | 1 + public/language/fr/admin/manage/users.json | 1 + public/language/gl/admin/manage/users.json | 1 + public/language/he/admin/manage/users.json | 1 + public/language/hr/admin/manage/users.json | 1 + public/language/hu/admin/manage/users.json | 1 + public/language/id/admin/manage/users.json | 1 + public/language/it/admin/manage/users.json | 1 + public/language/ja/admin/manage/users.json | 1 + public/language/ko/admin/manage/users.json | 1 + public/language/lt/admin/manage/users.json | 1 + public/language/lv/admin/manage/users.json | 1 + public/language/ms/admin/manage/users.json | 1 + public/language/nb/admin/manage/users.json | 1 + public/language/nl/admin/manage/users.json | 1 + public/language/pl/admin/manage/users.json | 1 + public/language/pt-BR/admin/manage/users.json | 1 + public/language/pt-PT/admin/manage/users.json | 1 + public/language/ro/admin/manage/users.json | 1 + public/language/ru/admin/manage/users.json | 1 + public/language/rw/admin/manage/users.json | 1 + public/language/sc/admin/manage/users.json | 1 + public/language/sk/admin/manage/users.json | 1 + public/language/sl/admin/manage/users.json | 1 + public/language/sr/admin/manage/users.json | 1 + public/language/sv/admin/manage/users.json | 1 + public/language/th/admin/manage/users.json | 1 + public/language/tr/admin/manage/users.json | 1 + public/language/uk/admin/manage/users.json | 1 + public/language/vi/admin/manage/users.json | 1 + public/language/zh-CN/admin/manage/users.json | 1 + public/language/zh-TW/admin/manage/users.json | 1 + 44 files changed, 44 insertions(+) diff --git a/public/language/ar/admin/manage/users.json b/public/language/ar/admin/manage/users.json index 749de7fe42..d74c6363b1 100644 --- a/public/language/ar/admin/manage/users.json +++ b/public/language/ar/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/bg/admin/manage/users.json b/public/language/bg/admin/manage/users.json index 9d2469826b..5b8d8d7332 100644 --- a/public/language/bg/admin/manage/users.json +++ b/public/language/bg/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "потр. ид.", "users.username": "потребителско име", "users.email": "е-поща", + "users.ip": "IP", "users.postcount": "брой публикации", "users.reputation": "репутация", "users.flags": "доклади", diff --git a/public/language/bn/admin/manage/users.json b/public/language/bn/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/bn/admin/manage/users.json +++ b/public/language/bn/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/cs/admin/manage/users.json b/public/language/cs/admin/manage/users.json index 5e5b25e621..f033dfb75e 100644 --- a/public/language/cs/admin/manage/users.json +++ b/public/language/cs/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "jméno", "users.email": "e-mail", + "users.ip": "IP", "users.postcount": "počet příspěvků", "users.reputation": "reputace", "users.flags": "označení", diff --git a/public/language/da/admin/manage/users.json b/public/language/da/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/da/admin/manage/users.json +++ b/public/language/da/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/de/admin/manage/users.json b/public/language/de/admin/manage/users.json index 9971a96729..23f9fe4857 100644 --- a/public/language/de/admin/manage/users.json +++ b/public/language/de/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "UID", "users.username": "Nutzername", "users.email": "E-Mail", + "users.ip": "IP", "users.postcount": "Anzahl der Beiträge", "users.reputation": "Ansehen", "users.flags": "Meldungen", diff --git a/public/language/el/admin/manage/users.json b/public/language/el/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/el/admin/manage/users.json +++ b/public/language/el/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/en-US/admin/manage/users.json b/public/language/en-US/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/en-US/admin/manage/users.json +++ b/public/language/en-US/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/en-x-pirate/admin/manage/users.json b/public/language/en-x-pirate/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/en-x-pirate/admin/manage/users.json +++ b/public/language/en-x-pirate/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/es/admin/manage/users.json b/public/language/es/admin/manage/users.json index 59be70aa0a..09f5958de2 100644 --- a/public/language/es/admin/manage/users.json +++ b/public/language/es/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nombre de usuario", "users.email": "email", + "users.ip": "IP", "users.postcount": "cantidad de posts", "users.reputation": "reputación", "users.flags": "reportes", diff --git a/public/language/et/admin/manage/users.json b/public/language/et/admin/manage/users.json index aa1ffcbc55..06905e3b00 100644 --- a/public/language/et/admin/manage/users.json +++ b/public/language/et/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "Kasutajanimi", "users.email": "email", + "users.ip": "IP", "users.postcount": "Postituste arv", "users.reputation": "Reputatsioon", "users.flags": "Raporteerimised", diff --git a/public/language/fa-IR/admin/manage/users.json b/public/language/fa-IR/admin/manage/users.json index f11d6d3d28..360cb603ac 100644 --- a/public/language/fa-IR/admin/manage/users.json +++ b/public/language/fa-IR/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/fi/admin/manage/users.json b/public/language/fi/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/fi/admin/manage/users.json +++ b/public/language/fi/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/fr/admin/manage/users.json b/public/language/fr/admin/manage/users.json index 9d18b6d022..50f0ac1722 100644 --- a/public/language/fr/admin/manage/users.json +++ b/public/language/fr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nom d'utilisateur", "users.email": "e-mail", + "users.ip": "IP", "users.postcount": "nombre de sujets", "users.reputation": "réputation", "users.flags": "signalements", diff --git a/public/language/gl/admin/manage/users.json b/public/language/gl/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/gl/admin/manage/users.json +++ b/public/language/gl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index 0f3b0c5da0..ed6c662173 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "מזהה משתמש (ID)", "users.username": "שם משתמש", "users.email": "דוא\"ל", + "users.ip": "IP", "users.postcount": "מספר פוסטים", "users.reputation": "מוניטין", "users.flags": "דגלים", diff --git a/public/language/hr/admin/manage/users.json b/public/language/hr/admin/manage/users.json index 62ab61921a..1b7af4b5fa 100644 --- a/public/language/hr/admin/manage/users.json +++ b/public/language/hr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "korisničko ime", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputacija", "users.flags": "flags", diff --git a/public/language/hu/admin/manage/users.json b/public/language/hu/admin/manage/users.json index 3b620ed60b..2531c4c43b 100644 --- a/public/language/hu/admin/manage/users.json +++ b/public/language/hu/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "felhasználónév", "users.email": "email", + "users.ip": "IP", "users.postcount": "hozzászólások száma", "users.reputation": "hírnév", "users.flags": "megjelölések", diff --git a/public/language/id/admin/manage/users.json b/public/language/id/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/id/admin/manage/users.json +++ b/public/language/id/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/it/admin/manage/users.json b/public/language/it/admin/manage/users.json index 7e26579712..0e6a5fd3f5 100644 --- a/public/language/it/admin/manage/users.json +++ b/public/language/it/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "id utente", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "numero di post", "users.reputation": "reputazione", "users.flags": "segnalazioni", diff --git a/public/language/ja/admin/manage/users.json b/public/language/ja/admin/manage/users.json index 749eb52751..9532e7d763 100644 --- a/public/language/ja/admin/manage/users.json +++ b/public/language/ja/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "ユーザーID", "users.username": "ユーザー名", "users.email": "メール", + "users.ip": "IP", "users.postcount": "投稿カウント", "users.reputation": "評価", "users.flags": "フラグ", diff --git a/public/language/ko/admin/manage/users.json b/public/language/ko/admin/manage/users.json index 7841aa3990..39926cb5c4 100644 --- a/public/language/ko/admin/manage/users.json +++ b/public/language/ko/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "사용자명", "users.email": "이메일", + "users.ip": "IP", "users.postcount": "글 개수", "users.reputation": "인지도", "users.flags": "신고", diff --git a/public/language/lt/admin/manage/users.json b/public/language/lt/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/lt/admin/manage/users.json +++ b/public/language/lt/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/lv/admin/manage/users.json b/public/language/lv/admin/manage/users.json index 7e0c24c196..2963b07a33 100644 --- a/public/language/lv/admin/manage/users.json +++ b/public/language/lv/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "lietotājvārds", "users.email": "e-pasta adrese", + "users.ip": "IP", "users.postcount": "raksti", "users.reputation": "ranga punkti", "users.flags": "atzīmes", diff --git a/public/language/ms/admin/manage/users.json b/public/language/ms/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/ms/admin/manage/users.json +++ b/public/language/ms/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/nb/admin/manage/users.json b/public/language/nb/admin/manage/users.json index 7798e70d73..be3fe88a1c 100644 --- a/public/language/nb/admin/manage/users.json +++ b/public/language/nb/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/nl/admin/manage/users.json b/public/language/nl/admin/manage/users.json index 8605af8759..8888a3c819 100644 --- a/public/language/nl/admin/manage/users.json +++ b/public/language/nl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json index 35d02e8344..2256433b32 100644 --- a/public/language/pl/admin/manage/users.json +++ b/public/language/pl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nazwa użytkownika", "users.email": "adres e-mail", + "users.ip": "IP", "users.postcount": "liczba postów", "users.reputation": "reputacja", "users.flags": "flagi", diff --git a/public/language/pt-BR/admin/manage/users.json b/public/language/pt-BR/admin/manage/users.json index d4b8931069..d5cf8c1ee3 100644 --- a/public/language/pt-BR/admin/manage/users.json +++ b/public/language/pt-BR/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nome de usuário", "users.email": "e-mail", + "users.ip": "IP", "users.postcount": "quantidade de posts", "users.reputation": "reputação", "users.flags": "sinalizações", diff --git a/public/language/pt-PT/admin/manage/users.json b/public/language/pt-PT/admin/manage/users.json index 0ff9bd3c67..e0500d1c35 100644 --- a/public/language/pt-PT/admin/manage/users.json +++ b/public/language/pt-PT/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nome de utilizador", "users.email": "e-mail", + "users.ip": "IP", "users.postcount": "publicações", "users.reputation": "reputação", "users.flags": "denúncias", diff --git a/public/language/ro/admin/manage/users.json b/public/language/ro/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/ro/admin/manage/users.json +++ b/public/language/ro/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/ru/admin/manage/users.json b/public/language/ru/admin/manage/users.json index 0273b792bf..1c418901fd 100644 --- a/public/language/ru/admin/manage/users.json +++ b/public/language/ru/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "ID", "users.username": "Логин", "users.email": "E-mail", + "users.ip": "IP", "users.postcount": "Сообщения", "users.reputation": "Репутация", "users.flags": "Жалобы", diff --git a/public/language/rw/admin/manage/users.json b/public/language/rw/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/rw/admin/manage/users.json +++ b/public/language/rw/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/sc/admin/manage/users.json b/public/language/sc/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/sc/admin/manage/users.json +++ b/public/language/sc/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/sk/admin/manage/users.json b/public/language/sk/admin/manage/users.json index 3e27ba25dd..d57a537033 100644 --- a/public/language/sk/admin/manage/users.json +++ b/public/language/sk/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "používateľské meno", "users.email": "e-mail", + "users.ip": "IP", "users.postcount": "počet príspevkov", "users.reputation": "reputácia", "users.flags": "príznaky", diff --git a/public/language/sl/admin/manage/users.json b/public/language/sl/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/sl/admin/manage/users.json +++ b/public/language/sl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/sr/admin/manage/users.json b/public/language/sr/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/sr/admin/manage/users.json +++ b/public/language/sr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/sv/admin/manage/users.json b/public/language/sv/admin/manage/users.json index 76488baeb7..15624056c9 100644 --- a/public/language/sv/admin/manage/users.json +++ b/public/language/sv/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", diff --git a/public/language/th/admin/manage/users.json b/public/language/th/admin/manage/users.json index 9f5f9540c5..4a92247328 100644 --- a/public/language/th/admin/manage/users.json +++ b/public/language/th/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "ชื่อผู้ใช้", "users.email": "อีเมล", + "users.ip": "IP", "users.postcount": "จำนวนกระทู้", "users.reputation": "ชื่อเสียง", "users.flags": "ติดตาม", diff --git a/public/language/tr/admin/manage/users.json b/public/language/tr/admin/manage/users.json index b01d67191a..52ec969ae7 100644 --- a/public/language/tr/admin/manage/users.json +++ b/public/language/tr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "benzersiz id", "users.username": "kullanıcı adı", "users.email": "e-posta", + "users.ip": "IP", "users.postcount": "ileti sayısı", "users.reputation": "itibar", "users.flags": "bayraklar", diff --git a/public/language/uk/admin/manage/users.json b/public/language/uk/admin/manage/users.json index 8fb7d8c9aa..21b5177c04 100644 --- a/public/language/uk/admin/manage/users.json +++ b/public/language/uk/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "ім'я", "users.email": "email", + "users.ip": "IP", "users.postcount": "постів", "users.reputation": "репутація", "users.flags": "скарги", diff --git a/public/language/vi/admin/manage/users.json b/public/language/vi/admin/manage/users.json index bc32f1a691..ecb7b8ba6d 100644 --- a/public/language/vi/admin/manage/users.json +++ b/public/language/vi/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "tên đăng nhập", "users.email": "thư điện tử", + "users.ip": "IP", "users.postcount": "số lượng bài viết", "users.reputation": "uy tín", "users.flags": "gắn cờ", diff --git a/public/language/zh-CN/admin/manage/users.json b/public/language/zh-CN/admin/manage/users.json index a10285bc18..35b7ce8a42 100644 --- a/public/language/zh-CN/admin/manage/users.json +++ b/public/language/zh-CN/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "UID", "users.username": "用户名", "users.email": "电子邮件", + "users.ip": "IP", "users.postcount": "发帖数", "users.reputation": "声望", "users.flags": "举报", diff --git a/public/language/zh-TW/admin/manage/users.json b/public/language/zh-TW/admin/manage/users.json index 9890c9381f..15cc354ec7 100644 --- a/public/language/zh-TW/admin/manage/users.json +++ b/public/language/zh-TW/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "UID", "users.username": "使用者名", "users.email": "電子郵件", + "users.ip": "IP", "users.postcount": "發文數", "users.reputation": "聲望", "users.flags": "舉報", From cc0cf99fed7b8850c380e864bf672f42d76a2a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 9 Jun 2021 17:40:36 -0400 Subject: [PATCH 046/115] feat: allow nested properties on category page (#9601) * feat: allow nested properties on category page * fix: remove debug * fix: remove debug --- public/src/admin/manage/category.js | 21 ++++++++++++++++++++- src/views/admin/manage/category.tpl | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index 7a7718c7ad..ecfa19ca36 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -235,8 +235,27 @@ define('admin/manage/category', [ } else { value = $(el).val(); } + var dataName = $(el).attr('data-name'); + var fields = dataName.match(/[^\][.]+/g); - updateHash[$(el).attr('data-name')] = value; + function setNestedFields(obj, index) { + if (index === fields.length) { + return; + } + obj[fields[index]] = obj[fields[index]] || {}; + if (index === fields.length - 1) { + obj[fields[index]] = value; + } + setNestedFields(obj[fields[index]], index + 1); + } + + if (fields && fields.length) { + if (fields.length === 1) { // simple field name ie data-name="name" + updateHash[fields[0]] = value; + } else if (fields.length > 1) { // nested field name ie data-name="name[sub1][sub2]" + setNestedFields(updateHash, 0); + } + } app.flags = app.flags || {}; app.flags._unsaved = true; diff --git a/src/views/admin/manage/category.tpl b/src/views/admin/manage/category.tpl index 869e23d42e..c1958f0037 100644 --- a/src/views/admin/manage/category.tpl +++ b/src/views/admin/manage/category.tpl @@ -39,6 +39,7 @@ +

For a full list of icons, please consult: - FontAwesome + FontAwesome"

\ No newline at end of file From eacd00e9a4dc51a7269144e1bd53601417418774 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Wed, 23 Jun 2021 09:05:47 +0000 Subject: [PATCH 082/115] Latest translations and fallbacks --- public/language/ar/error.json | 1 + public/language/bg/error.json | 1 + public/language/bn/error.json | 1 + public/language/cs/error.json | 1 + public/language/da/error.json | 1 + public/language/de/error.json | 1 + public/language/el/error.json | 1 + public/language/en-US/error.json | 1 + public/language/en-x-pirate/error.json | 1 + public/language/es/error.json | 1 + public/language/et/error.json | 1 + public/language/fa-IR/error.json | 1 + public/language/fi/error.json | 1 + public/language/fr/error.json | 1 + public/language/gl/error.json | 1 + public/language/he/error.json | 1 + public/language/hr/error.json | 1 + public/language/hu/error.json | 1 + public/language/id/error.json | 1 + public/language/it/error.json | 1 + public/language/ja/error.json | 1 + public/language/ko/error.json | 1 + public/language/lt/error.json | 1 + public/language/lv/error.json | 1 + public/language/ms/error.json | 1 + public/language/nb/error.json | 1 + public/language/nl/error.json | 1 + public/language/pl/error.json | 1 + public/language/pt-BR/error.json | 1 + public/language/pt-PT/error.json | 1 + public/language/ro/error.json | 1 + public/language/ru/error.json | 1 + public/language/rw/error.json | 1 + public/language/sc/error.json | 1 + public/language/sk/error.json | 1 + public/language/sl/error.json | 1 + public/language/sr/error.json | 1 + public/language/sv/error.json | 1 + public/language/th/error.json | 1 + public/language/tr/error.json | 1 + public/language/uk/error.json | 1 + public/language/vi/error.json | 1 + public/language/vi/notifications.json | 2 +- public/language/zh-CN/error.json | 1 + public/language/zh-TW/error.json | 1 + 45 files changed, 45 insertions(+), 1 deletion(-) diff --git a/public/language/ar/error.json b/public/language/ar/error.json index 2be4c10ea7..6da78dbb2d 100644 --- a/public/language/ar/error.json +++ b/public/language/ar/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "الرجاء الانتظار حتى يكتمل الرفع.", "file-too-big": "الحد الأقصى لرفع الملفات %1 كيلو بت. رجاءًا ارفع ملف أصغر", "guest-upload-disabled": "خاصية رفع الملفات غير مفعلة للزوار.", diff --git a/public/language/bg/error.json b/public/language/bg/error.json index 636545912e..9e2cf7bb4d 100644 --- a/public/language/bg/error.json +++ b/public/language/bg/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Недостатъчно етикети. Темите трябва да имат поне %1 етикет(а)", "too-many-tags": "Твърде много етикети. Темите не могат да имат повече от %1 етикет(а)", "cant-use-system-tag": "Не можете да използвате този системен етикет.", + "cant-remove-system-tag": "Не можете да премахнете този системен етикет.", "still-uploading": "Моля, изчакайте качването да приключи.", "file-too-big": "Максималният разрешен размер на файл е %1 КБ – моля, качете по-малък файл", "guest-upload-disabled": "Качването не е разрешено за гости", diff --git a/public/language/bn/error.json b/public/language/bn/error.json index c9577d2149..1edb9ded44 100644 --- a/public/language/bn/error.json +++ b/public/language/bn/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/cs/error.json b/public/language/cs/error.json index 1d6321bfd2..307b1e884c 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Málo značek. Téma musí obsahovat alespoň %1 značek", "too-many-tags": "Příliš mnoho značek. Téma nesmí mít více než %1 značek", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Vyčkejte, než se vše kompletně nahraje.", "file-too-big": "Maximální povolená velikost je %1 kB – nahrajte menší soubor", "guest-upload-disabled": "Nahrávání od hostů nebylo povoleno", diff --git a/public/language/da/error.json b/public/language/da/error.json index b7d49e2f18..2b663640b8 100644 --- a/public/language/da/error.json +++ b/public/language/da/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Ikke nok tags. Tråde skal have mindst %1 tag(s)", "too-many-tags": "For mange tags. Tråde kan ikke have mere end %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Venligst vent til overførslen er færdig", "file-too-big": "Maksimum filstørrelse er %1 kB - venligst overfør en mindre fil", "guest-upload-disabled": "Gæsteupload er deaktiveret", diff --git a/public/language/de/error.json b/public/language/de/error.json index a383a75396..1b39dac128 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Nicht genügend Schlagworte. Themen müssen mindestens %1 Schlagwort(e) enthalten", "too-many-tags": "Zu viele Schlagworte. Themen dürfen nicht mehr als %1 Schlagwort(e) enthalten", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.", "file-too-big": "Die maximale Dateigröße ist %1 kB, bitte lade eine kleinere Datei hoch.", "guest-upload-disabled": "Uploads für Gäste wurden deaktiviert.", diff --git a/public/language/el/error.json b/public/language/el/error.json index 7d1bd35e85..5bda24cb8d 100644 --- a/public/language/el/error.json +++ b/public/language/el/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Παρακαλώ περίμενε να τελειώσει το ανέβασμα των αρχείων.", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/en-US/error.json b/public/language/en-US/error.json index 4ebeaecde0..da1db2697a 100644 --- a/public/language/en-US/error.json +++ b/public/language/en-US/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Please wait for uploads to complete.", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/en-x-pirate/error.json b/public/language/en-x-pirate/error.json index 4ebeaecde0..da1db2697a 100644 --- a/public/language/en-x-pirate/error.json +++ b/public/language/en-x-pirate/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Please wait for uploads to complete.", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/es/error.json b/public/language/es/error.json index 3a5b111245..e74cd177e0 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Etiquetas insuficientes. El tema debe tener al menos %1 etiqueta(s).", "too-many-tags": "Demasiadas etiquetas. El tema no puede tener mas de %1 etiqueta(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Por favor, espera a que terminen las subidas.", "file-too-big": "El tamaño de fichero máximo es de %1 kB - por favor, suba un fichero más pequeño", "guest-upload-disabled": "Las subidas están deshabilitadas para los invitados", diff --git a/public/language/et/error.json b/public/language/et/error.json index 3c101a3a41..afc9fda381 100644 --- a/public/language/et/error.json +++ b/public/language/et/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Liiga vähe märksõnu. Teemadel peab olemalt vähemalt %1 märksõna", "too-many-tags": "Liiga palju märksõnu. Teemadel ei tohi olla rohkem kui %1 märksõna", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Palun oota, kuni üleslaadimised on laetud.", "file-too-big": "Maksimaalne üleslaetava faili suurus on %1 kB - valige väiksema mahuga fail.", "guest-upload-disabled": "Külaliste üleslaadimine on keelatud.", diff --git a/public/language/fa-IR/error.json b/public/language/fa-IR/error.json index b19cf7b242..eaa7f85791 100644 --- a/public/language/fa-IR/error.json +++ b/public/language/fa-IR/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "تعداد برچسب ها کافی نیست. موضوع ها یابد حداقل %1 برچسب داشته باشند", "too-many-tags": "تعداد برچسب ها بیشتر از حد مجاز است. موضوع ها نمی توانند بیشتر از %1 برچسب داشته باشند", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "خواهشمندیم تا پایان بارگذاری‌ها شکیبا باشید.", "file-too-big": "حداکثر مجاز حجم فایل %1 کیلوبایت می باشد - لطفا فایلی با حجم کمتر بارگذاری کنید", "guest-upload-disabled": "بارگذاری برای مهمانان غیر فعال شده است", diff --git a/public/language/fi/error.json b/public/language/fi/error.json index 970f45c3ea..0a28d3a698 100644 --- a/public/language/fi/error.json +++ b/public/language/fi/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Ole hyvä ja odota tiedostojen lähettämisen valmistumista.", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/fr/error.json b/public/language/fr/error.json index 741fff28d7..e31247b4aa 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Pas assez de mots-clés. Les sujets doivent avoir au moins %1 mots-clé(s).", "too-many-tags": "Trop de mots-clés. Les sujets ne peuvent avoir au plus que %1 mots-clé(s).", "cant-use-system-tag": "Vous ne pouvez gérer les mots-clés.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Veuillez patienter pendant l'envoi des fichiers.", "file-too-big": "La taille maximale autorisée pour un fichier est de %1 ko. Veuillez envoyer un fichier plus petit.", "guest-upload-disabled": "L'envoi de fichiers a été désactivé pour les invités", diff --git a/public/language/gl/error.json b/public/language/gl/error.json index 4a84d894f4..b6e2f8807f 100644 --- a/public/language/gl/error.json +++ b/public/language/gl/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Non hai etiquetas dabondas. Os temas deben ter %1 etiqueta(s) como mínimo.", "too-many-tags": "Moitas etiquetas. Os temas non poden ter máis de %1 etiqueta(s).", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Por favor, agarda a que remate a subida.", "file-too-big": "O tamaño máximo permitido é %1 kB - por favor, sube un arquivo máis pequeno", "guest-upload-disabled": "As subidas están deshabilitadas para os convidados", diff --git a/public/language/he/error.json b/public/language/he/error.json index db5de54d2c..8c0f45e1fd 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "אין מספיק תגיות. לנושא חייב להיות לפחות %1 תגיות", "too-many-tags": "יותר מדי תגיות. לנושאים לא יכולים להיות יותר מ-%1 תגיות", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "אנא המתן לסיום ההעלאות", "file-too-big": "הגודל המקסימלי של הקובץ הוא %1 קילובייט - אנא העלה קובץ קטן יותר", "guest-upload-disabled": "העלאת אורחים אינה מאופשרת", diff --git a/public/language/hr/error.json b/public/language/hr/error.json index 8c940ea4fe..d138f812c1 100644 --- a/public/language/hr/error.json +++ b/public/language/hr/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Nema dovoljno oznaka. Teme moraju imate bar %1 oznaku", "too-many-tags": "Previše oznaka. Teme ne mogu imati više od %1 oznaka", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Pričekajte da se prijenos završi.", "file-too-big": "Maksimalna veličina datoteke je %1 kB - učitajte manju datoteku", "guest-upload-disabled": "Učitavanje datoteka za goste je isključeno", diff --git a/public/language/hu/error.json b/public/language/hu/error.json index c3158a29c2..21c7d20e5c 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Nincs elég címke. A bejegyzésnek legalább %1 címkét kell tartalmaznia", "too-many-tags": "Túl sok címke. A bejegyzés nem tartalmazhat több címkét mint %1", "cant-use-system-tag": "Nem használhatod ezt a rendszer címkét.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Kérlek várj, amíg a feltöltés befejeződik.", "file-too-big": "A maximális megengedett fájl méret %1 kB - kérlek kisebb méretű fájlt tölts fel", "guest-upload-disabled": "Vendég általi feltöltés kikapcsolva", diff --git a/public/language/id/error.json b/public/language/id/error.json index e81972811c..4d819fc533 100644 --- a/public/language/id/error.json +++ b/public/language/id/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Tunggu proses upload sampai selesai", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/it/error.json b/public/language/it/error.json index 70619300a5..564544fb0d 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Tag non sufficienti. Le discussioni devono avere almeno %1 Tag", "too-many-tags": "Troppi Tag. Le discussioni non possono avere più di %1 Tag", "cant-use-system-tag": "Non puoi usare questo tag di sistema.", + "cant-remove-system-tag": "Non puoi rimuovere questo tag di sistema.", "still-uploading": "Per favore attendere il completamento degli uploads.", "file-too-big": "La dimensione massima consentita è di %1 kB - si prega di caricare un file più piccolo", "guest-upload-disabled": "Il caricamento da ospite è stato disattivato", diff --git a/public/language/ja/error.json b/public/language/ja/error.json index c217b344a7..24f6579772 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "タグが足りません。スレッドはせめて%1のタグ(s)が必要です。", "too-many-tags": "タグが多すぎます。スレッドは%1のタグ(s)以上が許されません。", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "アップロードが完成するまでお待ちください。", "file-too-big": "%1kBより大きいサイズファイルが許されません-より小さいファイルをアップして下さい。", "guest-upload-disabled": "ゲストさんからのアップを無効にしています", diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 1d6dc4034f..ab335690e2 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "태그가 없거나 부족합니다. 게시물은 %1개 이상의 태그를 사용해야 합니다.", "too-many-tags": "태그가 너무 많습니다. 게시물은 %1개 이하의 태그를 사용할 수 있습니다.", "cant-use-system-tag": "관리자용 태그를 사용하실 수 없습니다.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "업로드가 끝날 때까지 기다려주세요.", "file-too-big": "업로드 가능한 파일크기는 최대 %1 KB 입니다. 파일의 용량을 줄이거나 압축을 활용하세요.", "guest-upload-disabled": "비회원의 파일 업로드는 제한되어 있습니다.", diff --git a/public/language/lt/error.json b/public/language/lt/error.json index 93cf27e543..67b2a31f89 100644 --- a/public/language/lt/error.json +++ b/public/language/lt/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Neužteka žymių. Temos turi turėti mažiausiai %1 žyme(s)", "too-many-tags": "Per daug žymių. Temos turi turėti daugiausiai %1 žyme(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Prašome palaukti kol bus baigti visi kėlimai į serverį", "file-too-big": "Didžiausias įkelimo dydis yra %1 kB - prašome kelti mažesni failą", "guest-upload-disabled": "Failų įkėlimas svečiams išjungtas", diff --git a/public/language/lv/error.json b/public/language/lv/error.json index d54a6c46af..dcd5ddd336 100644 --- a/public/language/lv/error.json +++ b/public/language/lv/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Nav pietiekami daudz birku. Tematiem jābūt vismaz %1 birkām", "too-many-tags": "Pārāk daudz birku. Tematiem nevar būt vairāk kā %1 birkas", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Lūdzu, uzgaidi, līdz augšupielādes beidzas.", "file-too-big": "Maksimālais atļautais faila lielums ir %1 kB - lūdzu, augšupielādē mazāku failu", "guest-upload-disabled": "Viesu failu augšupielāde ir atspējota", diff --git a/public/language/ms/error.json b/public/language/ms/error.json index c9eeead36f..7f989a076b 100644 --- a/public/language/ms/error.json +++ b/public/language/ms/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Tag tidak mencukupi. Topik memerlukan sekurang-kurangnya %1 tag()", "too-many-tags": "Tag terlalu banyak. Topik tidak boleh lebih %1 tag()", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Sila tunggu muatnaik untuk siap.", "file-too-big": "Maksimum saiz fail yang dibenarkan ialah %1 kB - sila muatnaik fail yang lebih kecil", "guest-upload-disabled": "Tetamu tidak dibenarkan memuatnaik fail", diff --git a/public/language/nb/error.json b/public/language/nb/error.json index 263ef2a5e6..99d158cd28 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Ikke nok emneord. Emner må ha minst %1.", "too-many-tags": "For mange emneord. Emner kan ikke ha flere enn %1.", "cant-use-system-tag": "Du kan ikke bruke dette emneordet", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Vennligst vent til opplastingene er fullført.", "file-too-big": "Største tillatte filstørrelse er %1 kB – vennligst last opp en mindre fil", "guest-upload-disabled": "Gjester har ikke tilgang til å laste opp filer", diff --git a/public/language/nl/error.json b/public/language/nl/error.json index d9eb266917..d42fb29ce8 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Niet genoeg labels. Onderwerp moeten tenminste %1 label(s) hebben", "too-many-tags": "Teveel labels. Onderwerpen kunnen niet meer dan %1 label(s) hebben", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Een moment geduld tot alle bestanden overgebracht zijn...", "file-too-big": "Maximum toegestane bestandsgrootte is %1 kB - probeer een kleiner bestand te verzenden", "guest-upload-disabled": "Uploads voor gasten zijn uitgeschaleld ", diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 80281c8544..af365fd61e 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Zbyt mało tagów. Tematy muszą posiadać przynajmniej %1 tag(ów)", "too-many-tags": "Zbyt wiele tagów. Tematy nie mogą posiadać więcej niż %1 tag(ów)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Poczekaj na zakończenie przesyłania", "file-too-big": "Maksymalny dopuszczalny rozmiar pliku to %1 kB – prześlij mniejszy plik", "guest-upload-disabled": "Przesyłanie plików przez gości zostało wyłączone", diff --git a/public/language/pt-BR/error.json b/public/language/pt-BR/error.json index ca330f4306..618dd6a34e 100644 --- a/public/language/pt-BR/error.json +++ b/public/language/pt-BR/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Sem tags suficientes. Tópicos devem ter no mínimo %1 tag(s)", "too-many-tags": "Muitas tags. Tópicos não podem ter mais que %1 tag(s)", "cant-use-system-tag": "Você não pode usar esta tag de sistema.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Aguarde a conclusão dos uploads.", "file-too-big": "O tamanho máximo permitido de arquivo é de %1 kB - por favor faça upload de um arquivo menor", "guest-upload-disabled": "O upload por visitantes foi desabilitado", diff --git a/public/language/pt-PT/error.json b/public/language/pt-PT/error.json index 39f6306b09..992c07950c 100644 --- a/public/language/pt-PT/error.json +++ b/public/language/pt-PT/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Não existem marcadores suficientes. Os tópicos devem ter pelo menos %1 marcador(es)", "too-many-tags": "Existem marcadores a mais. Os tópicos não podem ter mais do que %1 marcador(es)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Por favor aguarda até todos os carregamentos estarem completos.", "file-too-big": "O tamanho máximo permitido para um ficheiro é de %1 kB - por favor carrega um ficheiro mais pequeno", "guest-upload-disabled": "Os carregamentos por parte de convidados foram desativados", diff --git a/public/language/ro/error.json b/public/language/ro/error.json index 2e939d42a0..a683e9a5ee 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Te rugăm să aștepți până se termină uploadul.", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/ru/error.json b/public/language/ru/error.json index 489d2c4e22..6fcdfc23c5 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Пожалуйста, добавьте метки в ваше сообщение. У темы должно быть минимум %1 меток.", "too-many-tags": "Пожалуйста, уберите несколько меток из вашего сообщения. У темы должно быть не более %1 меток.", "cant-use-system-tag": "Вы не можете использовать эту системную метку.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Пожалуйста, подождите завершения загрузки.", "file-too-big": "Слишком большой файл. Максимальный размер: %1 Кбайт.", "guest-upload-disabled": "Загрузка файлов для гостей отключена. Чтобы загрузить файл, пожалуйста, войдите или зарегистрируйтесь на сайте.", diff --git a/public/language/rw/error.json b/public/language/rw/error.json index b389c3c920..999251c72b 100644 --- a/public/language/rw/error.json +++ b/public/language/rw/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Nta tumenyetso turiho duhagije. Ibiganiro bigomba kugira utumenyetso (akamenyetso) nibura %1", "too-many-tags": "Hariho utumenyetso twinshi. Ibiganiro ntibyarenza utumenyetso (akamenyetso) %1", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Tegereza gupakira bibanze birangire.", "file-too-big": "Ubunini bwemewe bushoboka bw'ifayilo ni kB %1. Gerageza upakire ifayilo ntoyaho", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/sc/error.json b/public/language/sc/error.json index 4ebeaecde0..da1db2697a 100644 --- a/public/language/sc/error.json +++ b/public/language/sc/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)", "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Please wait for uploads to complete.", "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file", "guest-upload-disabled": "Guest uploading has been disabled", diff --git a/public/language/sk/error.json b/public/language/sk/error.json index fd5437ecb5..af50457961 100644 --- a/public/language/sk/error.json +++ b/public/language/sk/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Príliš malo značiek. Témy musia mať minimálne %1 značku(y)", "too-many-tags": "Príliš veľa značiek. Témy nemôžu mať viac ako %1 značku(y)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Prosím čakajte na dokončenie nahrávania", "file-too-big": "Najväčšia povolená veľkosť obrázka je %1 kB - prosím nahrajte menší súbor", "guest-upload-disabled": "Nahrávanie pre hostí bolo zablokované", diff --git a/public/language/sl/error.json b/public/language/sl/error.json index c584dd2153..b5f545d353 100644 --- a/public/language/sl/error.json +++ b/public/language/sl/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Ni dovolj oznak. Obvezno število oznak: %1. ", "too-many-tags": "Preveč oznak. Največje število oznak: %1.", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Prosimo, počakajte, da se prenosi končajo.", "file-too-big": "Največja dovoljena velikost datoteke je %1 kB - prosimo, naložite manjšo datoteko.", "guest-upload-disabled": "Gostom je prenašanje onemogočeno.", diff --git a/public/language/sr/error.json b/public/language/sr/error.json index eab45b0118..adc0a232a2 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Нема довољно ознака. Теме морају имати најмање %1 ознаке/а.", "too-many-tags": "Превише ознака. Теме не смеју имати више од %1 ознаке/а.", "cant-use-system-tag": "Не можете користити ову системску ознаку.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Сачекајте док се отпремања не заврше.", "file-too-big": "Највећа дозвољена величина датотеке је %1 kB - отпремите мању датотеку.", "guest-upload-disabled": "Гостима је онемогућено отпремање", diff --git a/public/language/sv/error.json b/public/language/sv/error.json index c7b7cde67f..4de668bd48 100644 --- a/public/language/sv/error.json +++ b/public/language/sv/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Otillräckligt antal taggar. Ämnen måste ha minst %1 taggar", "too-many-tags": "För många taggar. Ämnen kan ej har mer än %1 tagg(ar)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Vänta medan uppladdningen slutförs.", "file-too-big": "Den maximalt tillåtna filstorleken är %1 kB - var god ladda upp en mindre fil", "guest-upload-disabled": "Uppladdningar av oregistrerade användare har inaktiverats", diff --git a/public/language/th/error.json b/public/language/th/error.json index 660b50f93c..8595605d9c 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "จำนวนแท็กไม่พอ กระทู้ต้องมีอย่างน้อย %1 แท็ก(s)", "too-many-tags": "แท็กเยอะเกินไป กระทู้ไม่สามารถมีแท็กมากกว่า %1 แท็ก(s)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "กรุณารอการอัพโหลดเพื่อเสร็จสิ้น", "file-too-big": "ขนาดไฟล์ที่ใหญ่ที่สุดที่ได้รับการอนุญาตคือ %1 kB - กรุณาอัพโหลดไฟล์ที่เล็กลง", "guest-upload-disabled": "การอัพโหลดของ Guest ถูกปิด", diff --git a/public/language/tr/error.json b/public/language/tr/error.json index d565877c83..31a97d9164 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Yeterince etiket yok. Başlılar en az %1 etikete sahip olmalıdır", "too-many-tags": "Etiket sayısı çok fazla. Başlıklar en fazla %1 etikete sahip olabilir", "cant-use-system-tag": "Bu sistem etiketini kullanamazsınız.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Lütfen yüklemelerin bitmesini bekleyin.", "file-too-big": "İzin verilen en büyük dosya boyutu %1 kb - lütfen daha küçük bir dosya yükleyin", "guest-upload-disabled": "Ziyaretçilerin yükleme yapması devre dışı bırakıldı", diff --git a/public/language/uk/error.json b/public/language/uk/error.json index 106f6a9bef..453359d19f 100644 --- a/public/language/uk/error.json +++ b/public/language/uk/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Замало тегів. Тема повинна мати щонайменше %1 тег(и)", "too-many-tags": "Забагато тегів. Тема не може мати більше %1 тег(и)", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Зачекайте, будь ласка, доки завантаження завершиться.", "file-too-big": "Максимальний розмір файлу %1 кБ — завантажте менший файл, будь ласка.", "guest-upload-disabled": "Гостьове завантаження вимкнено.", diff --git a/public/language/vi/error.json b/public/language/vi/error.json index a6819cce3a..ca97f693cd 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "Không đủ thẻ. Chủ đề phải có ít nhất %1 thẻ.", "too-many-tags": "Quá nhiều tag. Chủ đề chỉ có thể có tối đa %1 tag.", "cant-use-system-tag": "Bạn không thể dùng thẻ hệ thống này.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "Vui lòng đợi quá trình tải lên hoàn tất.", "file-too-big": "Kích thước tệp cho phép tối đa là %1 kB - vui lòng tải lên một tệp nhỏ hơn", "guest-upload-disabled": "Tải lên của khách đã bị tắt", diff --git a/public/language/vi/notifications.json b/public/language/vi/notifications.json index b3f5f60ed8..4683219cd7 100644 --- a/public/language/vi/notifications.json +++ b/public/language/vi/notifications.json @@ -14,7 +14,7 @@ "topics": "Chủ đề", "replies": "Phản hồi", "chat": "Trò Chuyện", - "group-chat": "Group Chats", + "group-chat": "Trò Chuyện Nhóm", "follows": "Lượt theo dõi", "upvote": "Ủng hộ", "new-flags": "Cảnh báo mới", diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json index 81a5194eb9..b991e12b2c 100644 --- a/public/language/zh-CN/error.json +++ b/public/language/zh-CN/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "没有足够的话题标签。主题必须有至少 %1 个话题标签", "too-many-tags": "过多话题标签。主题不能超过 %1 个话题标签", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "请等待上传完成", "file-too-big": "上传文件的大小限制为 %1 KB - 请缩减文件大小", "guest-upload-disabled": "未登录用户不允许上传", diff --git a/public/language/zh-TW/error.json b/public/language/zh-TW/error.json index 0fa4215f22..b2c67b0c14 100644 --- a/public/language/zh-TW/error.json +++ b/public/language/zh-TW/error.json @@ -85,6 +85,7 @@ "not-enough-tags": "沒有足夠的主題標籤。主題必須至少有 %1 個標籤", "too-many-tags": "過多主題標籤。主題不能超過 %1 個標籤", "cant-use-system-tag": "You can not use this system tag.", + "cant-remove-system-tag": "You can not remove this system tag.", "still-uploading": "請等待上傳完成", "file-too-big": "上傳檔案的大小限制為 %1 KB - 請縮減檔案大小", "guest-upload-disabled": "訪客不允許上傳", From 2fe30b6fa07f3491711f579c0e1fc1d9b41141a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 23 Jun 2021 09:53:26 -0400 Subject: [PATCH 083/115] feat: #9628, allow setting custom icon names --- public/src/modules/iconSelect.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/src/modules/iconSelect.js b/public/src/modules/iconSelect.js index 1808802350..17530cd05d 100644 --- a/public/src/modules/iconSelect.js +++ b/public/src/modules/iconSelect.js @@ -48,11 +48,16 @@ define('iconSelect', ['benchpress'], function (Benchpress) { var iconClass = $('.bootbox .selected').attr('class'); var categoryIconClass = $('
').addClass(iconClass).removeClass('fa').removeClass('selected') .attr('class'); + var searchElVal = picker.find('input').val(); if (categoryIconClass) { el.attr('class', 'fa ' + (doubleSize ? 'fa-2x ' : '') + categoryIconClass); el.val(categoryIconClass); el.attr('value', categoryIconClass); + } else if (searchElVal) { + el.attr('class', searchElVal); + el.val(searchElVal); + el.attr('value', searchElVal); } onModified(el); From 561ce7d30a3a92de0dfe833febb9c37d27a72e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 23 Jun 2021 11:03:59 -0400 Subject: [PATCH 084/115] fix: #9629, translate content property of meta tags --- public/src/ajaxify.js | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 883c0f12a7..6c1b81a359 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -240,22 +240,25 @@ ajaxify = window.ajaxify || {}; .forEach(function (el) { document.head.removeChild(el); }); - - // Add new meta tags - ajaxify.data._header.tags.meta - .filter(function (tagObj) { - var name = tagObj.name || tagObj.property; - return metaWhitelist.some(function (exp) { - return !!exp.test(name); + require(['translator'], function (translator) { + // Add new meta tags + ajaxify.data._header.tags.meta + .filter(function (tagObj) { + var name = tagObj.name || tagObj.property; + return metaWhitelist.some(function (exp) { + return !!exp.test(name); + }); + }).forEach(async function (tagObj) { + if (tagObj.content) { + tagObj.content = await translator.translate(tagObj.content); + } + var metaEl = document.createElement('meta'); + Object.keys(tagObj).forEach(function (prop) { + metaEl.setAttribute(prop, tagObj[prop]); + }); + document.head.appendChild(metaEl); }); - }) - .forEach(function (tagObj) { - var metaEl = document.createElement('meta'); - Object.keys(tagObj).forEach(function (prop) { - metaEl.setAttribute(prop, tagObj[prop]); - }); - document.head.appendChild(metaEl); - }); + }); // Delete the old link tags Array.prototype.slice From cf6fcc2107dff03731809afb263d1262a9b69f3f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 23 Jun 2021 20:56:26 +0000 Subject: [PATCH 085/115] fix(deps): update dependency nodebb-plugin-markdown to v8.13.1 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index abb5b8712c..6cfa144540 100644 --- a/install/package.json +++ b/install/package.json @@ -88,7 +88,7 @@ "nodebb-plugin-dbsearch": "5.0.2", "nodebb-plugin-emoji": "^3.5.0", "nodebb-plugin-emoji-android": "2.0.5", - "nodebb-plugin-markdown": "8.12.10", + "nodebb-plugin-markdown": "8.13.1", "nodebb-plugin-mentions": "2.13.11", "nodebb-plugin-spam-be-gone": "0.7.9", "nodebb-rewards-essentials": "0.1.5", From db65360c0dbc6fc10d4998e10e37880cf985f16c Mon Sep 17 00:00:00 2001 From: Anton Grigoryev Date: Fri, 25 Jun 2021 02:04:37 +0300 Subject: [PATCH 086/115] fix(post-queue): moderatedCids is an array of numbers (#9631) --- src/controllers/mods.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/mods.js b/src/controllers/mods.js index faa0055469..c323d71132 100644 --- a/src/controllers/mods.js +++ b/src/controllers/mods.js @@ -165,13 +165,13 @@ modsController.postQueue = async function (req, res, next) { helpers.getSelectedCategory(cid), ]); - if (cid && !moderatedCids.includes(String(cid)) && !isAdminOrGlobalMod) { + if (cid && !moderatedCids.includes(Number(cid)) && !isAdminOrGlobalMod) { return next(); } postData = postData.filter(p => p && (!categoriesData.selectedCids.length || categoriesData.selectedCids.includes(p.category.cid)) && - (isAdminOrGlobalMod || moderatedCids.includes(String(p.category.cid)))); + (isAdminOrGlobalMod || moderatedCids.includes(Number(p.category.cid)))); ({ posts: postData } = await plugins.hooks.fire('filter:post-queue.get', { posts: postData, From acdbd04913e5a73ec179e9373af75b581205fc8b Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 25 Jun 2021 13:56:17 -0400 Subject: [PATCH 087/115] fix: #9627 --- src/cli/package-install.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cli/package-install.js b/src/cli/package-install.js index caad43162a..0a2c8469ac 100644 --- a/src/cli/package-install.js +++ b/src/cli/package-install.js @@ -66,7 +66,8 @@ function installAll() { } } } catch (e) { - console.error(e); + // No error handling is required here. + // If nconf is not installed, regular package installation via npm is carried out. } try { cproc.execSync(command + (prod ? ' --production' : ''), { From e40f648ff5ecafed5f7ff9a08259c38f656b31e1 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 25 Jun 2021 18:34:45 +0000 Subject: [PATCH 088/115] fix(deps): update dependency nodebb-plugin-markdown to v8.14.0 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 6cfa144540..6962a4cfb8 100644 --- a/install/package.json +++ b/install/package.json @@ -88,7 +88,7 @@ "nodebb-plugin-dbsearch": "5.0.2", "nodebb-plugin-emoji": "^3.5.0", "nodebb-plugin-emoji-android": "2.0.5", - "nodebb-plugin-markdown": "8.13.1", + "nodebb-plugin-markdown": "8.14.0", "nodebb-plugin-mentions": "2.13.11", "nodebb-plugin-spam-be-gone": "0.7.9", "nodebb-rewards-essentials": "0.1.5", From 3611b04e0eb13f14e1613e1397030e9d53238242 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 25 Jun 2021 21:14:20 +0000 Subject: [PATCH 089/115] fix(deps): update dependency nodebb-plugin-composer-default to v6.5.33 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 6962a4cfb8..8659cf440b 100644 --- a/install/package.json +++ b/install/package.json @@ -84,7 +84,7 @@ "multiparty": "4.2.2", "@nodebb/bootswatch": "3.4.2", "nconf": "^0.11.2", - "nodebb-plugin-composer-default": "6.5.32", + "nodebb-plugin-composer-default": "6.5.33", "nodebb-plugin-dbsearch": "5.0.2", "nodebb-plugin-emoji": "^3.5.0", "nodebb-plugin-emoji-android": "2.0.5", From 366b36a560b84fffb0f1bcd20c3c0739a7cee60f Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sat, 26 Jun 2021 09:05:52 +0000 Subject: [PATCH 090/115] Latest translations and fallbacks --- public/language/fr/error.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/language/fr/error.json b/public/language/fr/error.json index e31247b4aa..47749f1e13 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -85,7 +85,7 @@ "not-enough-tags": "Pas assez de mots-clés. Les sujets doivent avoir au moins %1 mots-clé(s).", "too-many-tags": "Trop de mots-clés. Les sujets ne peuvent avoir au plus que %1 mots-clé(s).", "cant-use-system-tag": "Vous ne pouvez gérer les mots-clés.", - "cant-remove-system-tag": "You can not remove this system tag.", + "cant-remove-system-tag": "Vous ne pouvez supprimer ces mots-clés.", "still-uploading": "Veuillez patienter pendant l'envoi des fichiers.", "file-too-big": "La taille maximale autorisée pour un fichier est de %1 ko. Veuillez envoyer un fichier plus petit.", "guest-upload-disabled": "L'envoi de fichiers a été désactivé pour les invités", From e6f30d2a365384d385e1eacf5d1892f89050ff77 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sun, 27 Jun 2021 09:05:55 +0000 Subject: [PATCH 091/115] Latest translations and fallbacks --- public/language/nl/category.json | 2 +- public/language/nl/flags.json | 10 +++++----- public/language/nl/global.json | 10 +++++----- public/language/nl/groups.json | 2 +- public/language/nl/login.json | 2 +- public/language/nl/notifications.json | 12 ++++++------ public/language/nl/post-queue.json | 14 +++++++------- public/language/nl/register.json | 10 +++++----- public/language/nl/success.json | 2 +- public/language/nl/user.json | 6 +++--- public/language/nl/users.json | 2 +- 11 files changed, 36 insertions(+), 36 deletions(-) diff --git a/public/language/nl/category.json b/public/language/nl/category.json index 3b4066aa56..3dd40b6f85 100644 --- a/public/language/nl/category.json +++ b/public/language/nl/category.json @@ -19,5 +19,5 @@ "notwatching.message": "Deze categorie en alle sub-categorieën worden niet gevolgd", "ignoring.message": " Er worden geen meldingen van deze categorie en alle sub-categorieën ontvangen ", "watched-categories": "Categorieën die bekeken zijn.", - "x-more-categories": "%1 more categories" + "x-more-categories": "%1 meer categorieën" } \ No newline at end of file diff --git a/public/language/nl/flags.json b/public/language/nl/flags.json index a16c624552..c5c0f2cc4d 100644 --- a/public/language/nl/flags.json +++ b/public/language/nl/flags.json @@ -6,7 +6,7 @@ "assignee": "Toegekend aan", "update": "Bijwerken", "updated": "Bijgewerkt", - "resolved": "Resolved", + "resolved": "Opgelost", "target-purged": "De inhoud waar deze markering naar verwijst is verwijderd en niet meer beschikbaar.", "graph-label": "Dagelijkse markeringen", @@ -27,7 +27,7 @@ "filter-cid-all": "Alle categorieën", "apply-filters": "Filters toepassen", "more-filters": "Meer filters", - "fewer-filters": "Fewer Filters", + "fewer-filters": "Minder filters", "quick-actions": "Snelle acties", "flagged-user": "Gemarkeerde gebruiker", @@ -64,12 +64,12 @@ "sort-oldest": "Oudste eerst", "sort-reports": "Meest gerapporteerd", "sort-all": "All flag types...", - "sort-posts-only": "Posts only...", + "sort-posts-only": "Alleen berichten...", "sort-downvotes": "Most downvotes", "sort-upvotes": "Most upvotes", - "sort-replies": "Most replies", + "sort-replies": "Meeste antwoorden", - "modal-title": "Report Content", + "modal-title": "Inhoud rapporteren", "modal-body": "Beschrijf de reden voor het markeren van %1 %2 voor review. Of gebruik een van de snelknoppen indien van toepassing.", "modal-reason-spam": "Spam", "modal-reason-offensive": "Aanstootgevend", diff --git a/public/language/nl/global.json b/public/language/nl/global.json index e643c6b7fc..543259d6d9 100644 --- a/public/language/nl/global.json +++ b/public/language/nl/global.json @@ -46,9 +46,9 @@ "alert.success": "Succes", "alert.error": "Fout", "alert.banned": "Verbannen", - "alert.banned.message": "You have just been banned, your access is now restricted.", - "alert.unbanned": "Unbanned", - "alert.unbanned.message": "Your ban has been lifted.", + "alert.banned.message": "Je bent net verbannen en je toegang is nu beperkt.", + "alert.unbanned": "Verbanning opgeheven", + "alert.unbanned.message": "Je verbanning is opgeheven.", "alert.unfollow": "%1 wordt niet langer gevolgd!", "alert.follow": "%1 wordt nu gevolgd!", "users": "Gebruikers", @@ -95,8 +95,8 @@ "guest": "Gast", "guests": "Gasten", "former_user": "Een ex-gebruiker", - "system-user": "System", - "unknown-user": "Unknown user", + "system-user": "Systeem", + "unknown-user": "Onbekende gebruiker", "updated.title": "Site update", "updated.message": "Deze site heeft zojuist een update ontvangen. Klik hier om de pagina te verversen.", "privacy": "Privé", diff --git a/public/language/nl/groups.json b/public/language/nl/groups.json index 78177a21b6..34dd5ae976 100644 --- a/public/language/nl/groups.json +++ b/public/language/nl/groups.json @@ -35,7 +35,7 @@ "details.member_count": "Ledentelling", "details.creation_date": "Aangemaakt op", "details.description": "Beschrijving", - "details.member-post-cids": "Category IDs to display posts from", + "details.member-post-cids": "Category IDs om berichten van te tonen", "details.badge_preview": "Badge Voorbeeld", "details.change_icon": "Wijzig icoon", "details.change_label_colour": "Wijzig labelkleur", diff --git a/public/language/nl/login.json b/public/language/nl/login.json index a0264b709b..adad019683 100644 --- a/public/language/nl/login.json +++ b/public/language/nl/login.json @@ -9,5 +9,5 @@ "login_successful": "Je bent succesvol ingelogd!", "dont_have_account": "Geen gebruikersaccount?", "logged-out-due-to-inactivity": "Je bent uitgelogd van het admin control panel vanwege inactiviteit.", - "caps-lock-enabled": "Caps Lock is enabled" + "caps-lock-enabled": "Caps Lock staat aan" } \ No newline at end of file diff --git a/public/language/nl/notifications.json b/public/language/nl/notifications.json index b3b68b789d..d62154085b 100644 --- a/public/language/nl/notifications.json +++ b/public/language/nl/notifications.json @@ -14,7 +14,7 @@ "topics": "Onderwerpen", "replies": "Antwoorden", "chat": "Chats", - "group-chat": "Group Chats", + "group-chat": "Groepsgesprekken", "follows": "Volgt", "upvote": "Upvotes", "new-flags": "Nieuwe markeringen", @@ -47,9 +47,9 @@ "profile-exported": "%1 profiel geëxporteerd, klik om te downloaden", "posts-exported": "%1 berichten geëxporteerd, klik om te downloaden", "uploads-exported": "%1 uploads geëxporteerd, klik om te downloaden", - "users-csv-exported": "Users csv exported, click to download", - "post-queue-accepted": "Your queued post has been accepted. Click here to see your post.", - "post-queue-rejected": "Your queued post has been rejected.", + "users-csv-exported": "Csv met gebruikers geëxporteerd, klik om te downloaden", + "post-queue-accepted": "Je bericht in de wachtrij is geaccepteerd. Klik hier om je bericht te bekijken.", + "post-queue-rejected": "Je bericht in de wachtrij is afgekeurd.", "email-confirmed": "E-mailadres bevestigd", "email-confirmed-message": "Bedankt voor het bevestigen van je e-mailadres. Je account is nu volledig geactiveerd.", "email-confirm-error-message": "Er was een probleem met het bevestigen van dit e-mailadres. Misschien is de code niet goed ingevoerd of was de beschikbare tijd inmiddels verstreken.", @@ -64,9 +64,9 @@ "notificationType_post-edit": "Als een bericht wordt aangepast in een onderwerp dat je volgt", "notificationType_follow": "Als iemand begint met jou te volgen", "notificationType_new-chat": "Als je een chat-bericht ontvangt", - "notificationType_new-group-chat": "When you receive a group chat message", + "notificationType_new-group-chat": "Als je een bericht uit een groepsgesprek ontvangt.", "notificationType_group-invite": "Als je een uitnodiging voor een groep ontvangt", - "notificationType_group-leave": "When a user leaves your group", + "notificationType_group-leave": "Als een gebruiker je groep verlaat", "notificationType_group-request-membership": "Als iemand vraagt om lid te worden van een groep waarvan je eigenaar bent", "notificationType_new-register": "Als iemand wordt toegevoegd aan een registratiewachtrij", "notificationType_post-queue": "Als een bericht aan de wachtrij wordt toegevoegd", diff --git a/public/language/nl/post-queue.json b/public/language/nl/post-queue.json index e9642a2e2c..e9d5c145ae 100644 --- a/public/language/nl/post-queue.json +++ b/public/language/nl/post-queue.json @@ -8,11 +8,11 @@ "content": "Inhoud", "posted": "Geplaatst", "reply-to": "Antwoord naar \"%1\"", - "content-editable": "Click on content to edit", - "category-editable": "Click on category to edit", - "title-editable": "Click on title to edit", - "reply": "Reply", - "topic": "Topic", - "accept": "Accept", - "reject": "Reject" + "content-editable": "Klik op inhoud om aan te passen", + "category-editable": "Klik op categorie om aan te passen", + "title-editable": "Klik op titel om aan te passen", + "reply": "Antwoorden", + "topic": "Onderwerp", + "accept": "Accepteren", + "reject": "Afkeuren" } \ No newline at end of file diff --git a/public/language/nl/register.json b/public/language/nl/register.json index 54fd615acd..89f3d423fc 100644 --- a/public/language/nl/register.json +++ b/public/language/nl/register.json @@ -18,14 +18,14 @@ "agree_to_terms_of_use": "Ik ga akkoord met de gebruiksvoorwaarden", "terms_of_use_error": "Je moet akkoord gaan met de service voorwaarden.", "registration-added-to-queue": "Het registratieverzoek is toegevoegd aan de wachtrij. Een bericht wordt naar het opgegeven emailadres gestuurd wanneer de registratie is goedgekeurd.", - "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.", - "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.", + "registration-queue-average-time": "Onze gemiddelde tijd om lidmaatschappen goed te keuren is %1 uur %2 minuten.", + "registration-queue-auto-approve-time": "Je lidmaatschap op dit forum zal volledig worden geactiveerd binnen maximaal %1 uur.", "interstitial.intro": "Je hebben meer informatie van je nodig voordat we je account kunnen aanmaken.", "interstitial.errors-found": "Je konden jouw registratie niet afronden.", "gdpr_agree_data": "Ik geef toestemming voor het verzamelen en verwerken van mijn persoonlijke informatie op deze website.", "gdpr_agree_email": "Ik geef toestemming voor het verzenden van samenvattingen en notificaties per e-mail van deze website.", "gdpr_consent_denied": "Deze website heeft uw toestemming nodig voor het verzamelen en verwerken van uw gegevens, en voor het verzenden van e-mails.", - "invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.", - "invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.", - "invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details" + "invite.error-admin-only": "Directe gebruikersregistratie is uitgeschakeld. Neem contact op met de beheerder voor meer details.", + "invite.error-invite-only": "Directe gebruikersregistratie is uitgeschakeld. Je moet uitgenodigd worden door een bestaande gebruiker om dit forum te kunnen gebruiken.", + "invite.error-invalid-data": "De ontvangen registratiegegevens corresponderen niet met onze gegevens. Neem contact op met de beheerder voor meer details." } \ No newline at end of file diff --git a/public/language/nl/success.json b/public/language/nl/success.json index b52366d982..3d38977677 100644 --- a/public/language/nl/success.json +++ b/public/language/nl/success.json @@ -1,7 +1,7 @@ { "success": "Geslaagd", "topic-post": "Je bericht is met succes geplaatst.", - "post-queued": "Your post is queued for approval. You will get a notification when it is accepted or rejected.", + "post-queued": "Je bericht staat in de wachtrij voor goedkeuring. Je krijgt een notificatie als deze wordt geaccepteerd of afgewezen.", "authentication-successful": "Aanmelden geslaagd", "settings-saved": "Instellingen opgeslagen!" } \ No newline at end of file diff --git a/public/language/nl/user.json b/public/language/nl/user.json index 73059482bf..5cdd7c751f 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -84,7 +84,7 @@ "remove_cover_picture_confirm": "Weet u zeker dat u de cover foto wilt verwijderen?", "crop_picture": "Foto bijsnijden", "upload_cropped_picture": "Bijsnijden en uploaden", - "avatar-background-colour": "Avatar background colour", + "avatar-background-colour": "Achtergrondkeur van avatar", "settings": "Instellingen", "show_email": "E-mailadres weergeven", "show_fullname": "Laat mijn volledige naam zien", @@ -124,7 +124,7 @@ "open_links_in_new_tab": "Open uitgaande links naar een externe site in een nieuw tabblad", "enable_topic_searching": "Inschakelen mogelijkheid op onderwerp te kunnen zoeken", "topic_search_help": "Wanneer ingeschakeld zal de standaard zoekfunctie, met een aangepaste methode voor onderwerpen, overschreven worden", - "update_url_with_post_index": "Update url with post index while browsing topics", + "update_url_with_post_index": "Werk url bij met de index van het bericht tijdens het browsen van onderwerpen", "scroll_to_my_post": "Toon het nieuwe bericht na het plaatsen van een antwoord", "follow_topics_you_reply_to": "Ontvang meldingen van berichten waar je op hebt gereageerd", "follow_topics_you_create": "Ontvang meldingen van berichten die je hebt gemaakt", @@ -136,7 +136,7 @@ "homepage": "Startpagina", "homepage_description": "Selecteer een pagina om te gebruiken als startpagina, of selecteer geen om de standaard pagina te gebruiken.", "custom_route": "Aangepaste startpagina route", - "custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")", + "custom_route_help": "Geef hier een routenaam op, zonder voorgevoegde slash (b.v. \"recent\" of \"category/2/general-discussion\")", "sso.title": "Single Sign-on Services", "sso.associated": "Geassocieerd met", "sso.not-associated": "Klik hier om geassocieerd te worden met", diff --git a/public/language/nl/users.json b/public/language/nl/users.json index c865741f31..e4c18e0aff 100644 --- a/public/language/nl/users.json +++ b/public/language/nl/users.json @@ -11,7 +11,7 @@ "online-only": "Online ", "invite": "Uitnodigen", "prompt-email": "E-mails:", - "groups-to-join": "Groups to be joined when invite is accepted:", + "groups-to-join": "Groepen om aan deel te nemen als de uitnodiging wordt geaccepteerd:", "invitation-email-sent": "Een uitnodiging email is verstuurd naar %1 ", "user_list": "Ledenlijst", "recent_topics": "Recente onderwerpen", From a76eab1ca202b94dea5229068d5fa6a9ab2eec56 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Mon, 28 Jun 2021 09:08:49 +0000 Subject: [PATCH 092/115] Latest translations and fallbacks --- public/language/vi/error.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/language/vi/error.json b/public/language/vi/error.json index ca97f693cd..5da321a820 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -85,7 +85,7 @@ "not-enough-tags": "Không đủ thẻ. Chủ đề phải có ít nhất %1 thẻ.", "too-many-tags": "Quá nhiều tag. Chủ đề chỉ có thể có tối đa %1 tag.", "cant-use-system-tag": "Bạn không thể dùng thẻ hệ thống này.", - "cant-remove-system-tag": "You can not remove this system tag.", + "cant-remove-system-tag": "Bạn không thể xóa thẻ hệ thống này.", "still-uploading": "Vui lòng đợi quá trình tải lên hoàn tất.", "file-too-big": "Kích thước tệp cho phép tối đa là %1 kB - vui lòng tải lên một tệp nhỏ hơn", "guest-upload-disabled": "Tải lên của khách đã bị tắt", From 09bac6bd7e70de0b21a257c3e015bf786432449e Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 25 Jun 2021 16:52:46 -0400 Subject: [PATCH 093/115] fix: convert some hooks to use hooks module re: julianlam/nodebb-plugin-markdown#130 --- public/src/client/account/posts.js | 4 ++-- public/src/client/categories.js | 4 ++-- public/src/client/topic.js | 9 +++++++-- public/src/client/topic/posts.js | 5 +++-- public/src/client/topic/replies.js | 4 ++-- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/public/src/client/account/posts.js b/public/src/client/account/posts.js index ed9629ef5a..dbf1a6f7d8 100644 --- a/public/src/client/account/posts.js +++ b/public/src/client/account/posts.js @@ -1,7 +1,7 @@ 'use strict'; -define('forum/account/posts', ['forum/account/header', 'forum/infinitescroll'], function (header, infinitescroll) { +define('forum/account/posts', ['forum/account/header', 'forum/infinitescroll', 'hooks'], function (header, infinitescroll, hooks) { var AccountPosts = {}; var template; @@ -47,7 +47,7 @@ define('forum/account/posts', ['forum/account/header', 'forum/infinitescroll'], html.find('.timeago').timeago(); app.createUserTooltips(); utils.makeNumbersHumanReadable(html.find('.human-readable-number')); - $(window).trigger('action:posts.loaded', { posts: posts }); + hooks.fire('action:posts.loaded', { posts: posts }); callback(); }); } diff --git a/public/src/client/categories.js b/public/src/client/categories.js index e567b805d9..c7a05e7af5 100644 --- a/public/src/client/categories.js +++ b/public/src/client/categories.js @@ -1,7 +1,7 @@ 'use strict'; -define('forum/categories', ['components', 'categorySelector'], function (components, categorySelector) { +define('forum/categories', ['components', 'categorySelector', 'hooks'], function (components, categorySelector, hooks) { var categories = {}; $(window).on('action:ajaxify.start', function (ev, data) { @@ -63,7 +63,7 @@ define('forum/categories', ['components', 'categorySelector'], function (compone recentPosts.last().remove(); } - $(window).trigger('action:posts.loaded', { posts: [post] }); + hooks.fire('action:posts.loaded', { posts: [post] }); }); } diff --git a/public/src/client/topic.js b/public/src/client/topic.js index 9e186457ea..d0b57264c8 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -12,7 +12,12 @@ define('forum/topic', [ 'sort', 'components', 'storage', -], function (infinitescroll, threadTools, postTools, events, posts, images, navigator, sort, components, storage) { + 'hooks', +], function ( + infinitescroll, threadTools, postTools, + events, posts, images, navigator, sort, + components, storage, hooks +) { var Topic = {}; var currentUrl = ''; @@ -70,7 +75,7 @@ define('forum/topic', [ handleTopicSearch(); - $(window).trigger('action:topic.loaded', ajaxify.data); + hooks.fire('action:topic.loaded', ajaxify.data); }; function handleTopicSearch() { diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index a0e098266a..102e353740 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -9,7 +9,8 @@ define('forum/topic/posts', [ 'navigator', 'components', 'translator', -], function (pagination, infinitescroll, postTools, images, navigator, components, translator) { + 'hooks', +], function (pagination, infinitescroll, postTools, images, navigator, components, translator, hooks) { var Posts = { }; Posts.onNewPost = function (data) { @@ -226,7 +227,7 @@ define('forum/topic/posts', [ infinitescroll.removeExtra($('[component="post"]'), direction, Math.max(20, config.postsPerPage * 2)); - $(window).trigger('action:posts.loaded', { posts: data.posts }); + hooks.fire('action:posts.loaded', { posts: data.posts }); Posts.onNewPostsAddedToDom(html); diff --git a/public/src/client/topic/replies.js b/public/src/client/topic/replies.js index 57d63f4672..bc017d25f6 100644 --- a/public/src/client/topic/replies.js +++ b/public/src/client/topic/replies.js @@ -1,7 +1,7 @@ 'use strict'; -define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts'], function (navigator, components, posts) { +define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts', 'hooks'], function (navigator, components, posts, hooks) { var Replies = {}; Replies.init = function (button) { @@ -43,7 +43,7 @@ define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts'], repliesEl.slideDown('fast'); posts.onNewPostsAddedToDom(html); - $(window).trigger('action:posts.loaded', { posts: data }); + hooks.fire('action:posts.loaded', { posts: data }); }); }); } else if (close.is(':not(.hidden)')) { From 849049765b06ce5d535aef388b073356ae862a02 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 28 Jun 2021 13:17:22 -0400 Subject: [PATCH 094/115] fix: #9636, sanitize all attributes in meta and link tags --- public/src/modules/helpers.js | 9 ++------- src/meta/tags.js | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/public/src/modules/helpers.js b/public/src/modules/helpers.js index 78fec7d112..5ac03464f6 100644 --- a/public/src/modules/helpers.js +++ b/public/src/modules/helpers.js @@ -68,13 +68,8 @@ } function buildLinkTag(tag) { - var link = tag.link ? 'link="' + tag.link + '" ' : ''; - var rel = tag.rel ? 'rel="' + tag.rel + '" ' : ''; - var as = tag.as ? 'as="' + tag.as + '" ' : ''; - var type = tag.type ? 'type="' + tag.type + '" ' : ''; - var href = tag.href ? 'href="' + tag.href + '" ' : ''; - var sizes = tag.sizes ? 'sizes="' + tag.sizes + '" ' : ''; - var title = tag.title ? 'title="' + tag.title + '" ' : ''; + const attributes = ['link', 'rel', 'as', 'type', 'href', 'sizes', 'title']; + const [link, rel, as, type, href, sizes, title] = attributes.map(attr => (tag[attr] ? `${attr}="${tag[attr]}" ` : '')); return '\n\t'; } diff --git a/src/meta/tags.js b/src/meta/tags.js index 4c02171a42..daa4d4808c 100644 --- a/src/meta/tags.js +++ b/src/meta/tags.js @@ -154,7 +154,10 @@ Tags.parse = async (req, data, meta, link) => { } if (!tag.noEscape) { - tag.content = utils.escapeHTML(String(tag.content)); + const attributes = Object.keys(tag); + attributes.forEach((attr) => { + tag[attr] = utils.escapeHTML(String(tag[attr])); + }); } return tag; @@ -168,12 +171,18 @@ Tags.parse = async (req, data, meta, link) => { addIfNotExists(meta, 'name', 'description', Meta.config.description); addIfNotExists(meta, 'property', 'og:description', Meta.config.description); - link = results.links.links.concat(link || []); + link = results.links.links.concat(link || []).map((tag) => { + if (!tag.noEscape) { + const attributes = Object.keys(tag); + attributes.forEach((attr) => { + tag[attr] = utils.escapeHTML(String(tag[attr])); + }); + } - return { - meta: meta, - link: link, - }; + return tag; + }); + + return { meta, link }; }; function addIfNotExists(meta, keyName, tagName, value) { From 4d6421bb76d2da5a5e0163fbbbfb90f43e0991d5 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Tue, 29 Jun 2021 09:06:33 +0000 Subject: [PATCH 095/115] Latest translations and fallbacks --- public/language/zh-TW/admin/dashboard.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/language/zh-TW/admin/dashboard.json b/public/language/zh-TW/admin/dashboard.json index 09df6c8921..90adfc831a 100644 --- a/public/language/zh-TW/admin/dashboard.json +++ b/public/language/zh-TW/admin/dashboard.json @@ -2,7 +2,7 @@ "forum-traffic": "論壇流量", "page-views": "頁面瀏覽量", "unique-visitors": "不重複訪客", - "logins": "Logins", + "logins": "登入", "new-users": "新使用者", "posts": "貼文", "topics": "主題", @@ -79,10 +79,10 @@ "last-restarted-by": "上次重啟管理員/時間", "no-users-browsing": "沒有使用者正在瀏覽", - "back-to-dashboard": "Back to Dashboard", - "details.no-users": "No users have joined within the selected timeframe", - "details.no-topics": "No topics have been posted within the selected timeframe", + "back-to-dashboard": "回到儀表板", + "details.no-users": "沒有使用者有在選定的時間內註冊", + "details.no-topics": "沒有新增的主題在選定的時間內", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", - "details.logins-login-time": "Login Time" + "details.logins-login-time": "登入時間" } From edefac964556513dc2a65078f1fb62a26073cfbc Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 29 Jun 2021 09:22:04 +0000 Subject: [PATCH 096/115] chore(deps): update dependency coveralls to v3.1.1 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 8659cf440b..2c72baa31b 100644 --- a/install/package.json +++ b/install/package.json @@ -144,7 +144,7 @@ "@apidevtools/swagger-parser": "10.0.2", "@commitlint/cli": "12.1.4", "@commitlint/config-angular": "12.1.4", - "coveralls": "3.1.0", + "coveralls": "3.1.1", "eslint": "7.29.0", "eslint-config-airbnb-base": "14.2.1", "eslint-plugin-import": "2.23.4", From fee782c43694dd5b59c52b138d379a9ce69605c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 30 Jun 2021 10:38:15 -0400 Subject: [PATCH 097/115] fix: acp dashboard sometimes not loading on cold load --- src/views/admin/footer.tpl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/views/admin/footer.tpl b/src/views/admin/footer.tpl index b28202d057..a9c4f30d48 100644 --- a/src/views/admin/footer.tpl +++ b/src/views/admin/footer.tpl @@ -9,11 +9,17 @@ From d9e2190a6b4b6bef2d8d2558524dd124be33760f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 30 Jun 2021 11:08:55 -0400 Subject: [PATCH 098/115] fix: numThumb upgrade script --- src/upgrades/1.17.0/topic_thumb_count.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/upgrades/1.17.0/topic_thumb_count.js b/src/upgrades/1.17.0/topic_thumb_count.js index a5239101d0..7e39b195ea 100644 --- a/src/upgrades/1.17.0/topic_thumb_count.js +++ b/src/upgrades/1.17.0/topic_thumb_count.js @@ -13,7 +13,7 @@ module.exports = { await batch.processSortedSet('topics:tid', async (tids) => { const keys = tids.map(tid => `topic:${tid}:thumbs`); const counts = await db.sortedSetsCard(keys); - const tidToCount = _.zip(tids, counts); + const tidToCount = _.zipObject(tids, counts); const tidsWithThumbs = tids.filter((t, i) => counts[i] > 0); await db.setObjectBulk( tidsWithThumbs.map(tid => `topic:${tid}`), From 97c8569a798075c50e93e585ac741ab55cb7c28b Mon Sep 17 00:00:00 2001 From: gasoved Date: Mon, 21 Jun 2021 19:58:31 +0300 Subject: [PATCH 099/115] fix: hide private user data in api/v3/users/[uid] --- src/controllers/write/users.js | 4 ++- src/user/data.js | 21 ++++++++++++++++ test/user.js | 46 +++++++++++++++++++++++----------- 3 files changed, 55 insertions(+), 16 deletions(-) diff --git a/src/controllers/write/users.js b/src/controllers/write/users.js index 8b7e483ba2..222d664032 100644 --- a/src/controllers/write/users.js +++ b/src/controllers/write/users.js @@ -44,7 +44,9 @@ Users.exists = async (req, res) => { }; Users.get = async (req, res) => { - helpers.formatApiResponse(200, res, await user.getUserData(req.params.uid)); + const userData = await user.getUserData(req.params.uid); + const publicUserData = await user.hidePrivateData(userData, req.uid); + helpers.formatApiResponse(200, res, publicUserData); }; Users.update = async (req, res) => { diff --git a/src/user/data.js b/src/user/data.js index 7b80bb1ee1..fe5b8dc19e 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -141,6 +141,27 @@ module.exports = function (User) { return await User.getUsersFields(uids, []); }; + User.hidePrivateData = async function (userData, callerUID) { + const _userData = { ...userData }; + + const isSelf = parseInt(callerUID, 10) === parseInt(_userData.uid, 10); + const [userSettings, isAdmin, isGlobalModerator] = await Promise.all([ + User.getSettings(_userData.uid), + User.isAdministrator(callerUID), + User.isGlobalModerator(callerUID), + ]); + const privilegedOrSelf = isAdmin || isGlobalModerator || isSelf; + + if (!privilegedOrSelf && (!userSettings.showemail || meta.config.hideEmail)) { + _userData.email = ''; + } + if (!privilegedOrSelf && (!userSettings.showfullname || meta.config.hideFullname)) { + _userData.fullname = ''; + } + + return _userData; + }; + async function modifyUserData(users, requestedFields, fieldsToRemove) { let uidToSettings = {}; if (meta.config.showFullnameAsDisplayName) { diff --git a/test/user.js b/test/user.js index 537b06bca1..6c6bf85a34 100644 --- a/test/user.js +++ b/test/user.js @@ -2509,32 +2509,48 @@ describe('User', () => { }); describe('hideEmail/hideFullname', () => { + const COMMON_PW = '123456'; let uid; + let jar; + let regularUserUid; + + before(async () => { + uid = await User.create({ + username: 'hiddenemail', + email: 'should@be.hidden', + fullname: 'baris soner usakli', + }); + regularUserUid = await User.create({ + username: 'regularUser', + password: COMMON_PW, + }); + jar = await new Promise((resolve, reject) => { + helpers.loginUser('regularUser', COMMON_PW, async (err, _jar) => { + if (err) { + reject(err); + } + resolve(_jar); + }); + }); + }); + after((done) => { meta.config.hideEmail = 0; meta.config.hideFullname = 0; done(); }); - it('should hide email and fullname', (done) => { + it('should hide email and fullname', async () => { meta.config.hideEmail = 1; meta.config.hideFullname = 1; - User.create({ - username: 'hiddenemail', - email: 'should@be.hidden', - fullname: 'baris soner usakli', - }, (err, _uid) => { - uid = _uid; - assert.ifError(err); - request(`${nconf.get('url')}/api/user/hiddenemail`, { json: true }, (err, res, body) => { - assert.ifError(err); - assert.equal(body.fullname, ''); - assert.equal(body.email, ''); + const userData1 = await requestAsync(`${nconf.get('url')}/api/user/hiddenemail`, { json: true }); + assert.strictEqual(userData1.fullname, ''); + assert.strictEqual(userData1.email, ''); - done(); - }); - }); + const { response } = await requestAsync(`${nconf.get('url')}/api/v3/users/${uid}`, { json: true, jar: jar }); + assert.strictEqual(response.fullname, ''); + assert.strictEqual(response.email, ''); }); it('should hide fullname in topic list and topic', (done) => { From b89648435156815981e967e79353da27b224f4aa Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 30 Jun 2021 17:43:16 -0400 Subject: [PATCH 100/115] fix: #9634, re-jig top bar of Admin > Manage > Users --- public/language/en-GB/admin/manage/users.json | 2 +- public/src/admin/manage/users.js | 14 ++++++ src/views/admin/manage/users.tpl | 47 ++++++++++--------- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/public/language/en-GB/admin/manage/users.json b/public/language/en-GB/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/en-GB/admin/manage/users.json +++ b/public/language/en-GB/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index 4270d4c23e..5675f5b0aa 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -299,6 +299,20 @@ define('admin/manage/users', [ handleDelete('[[admin/manage/users:alerts.confirm-purge]]', ''); }); + const tableEl = document.querySelector('.users-table'); + const actionBtn = document.getElementById('action-dropdown'); + tableEl.addEventListener('change', (e) => { + const subselector = e.target.closest('[component="user/select/single"]') || e.target.closest('[component="user/select/all"]'); + if (subselector) { + var uids = getSelectedUids(); + if (uids.length) { + actionBtn.removeAttribute('disabled'); + } else { + actionBtn.setAttribute('disabled', 'disabled'); + } + } + }); + function handleDelete(confirmMsg, path) { var uids = getSelectedUids(); if (!uids.length) { diff --git a/src/views/admin/manage/users.tpl b/src/views/admin/manage/users.tpl index 85de84ea56..011f8fdd20 100644 --- a/src/views/admin/manage/users.tpl +++ b/src/views/admin/manage/users.tpl @@ -2,13 +2,9 @@
-
- - - - [[admin/manage/users:download-csv]] +
- +
- - -
+
@@ -62,6 +48,23 @@ + +
From b3658329da4c0a360e64b8d10d6dd70ff406f92d Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Thu, 1 Jul 2021 09:05:51 +0000 Subject: [PATCH 101/115] Latest translations and fallbacks --- public/language/ar/admin/manage/users.json | 2 +- public/language/bg/admin/manage/users.json | 2 +- public/language/bn/admin/manage/users.json | 2 +- public/language/cs/admin/manage/users.json | 2 +- public/language/da/admin/manage/users.json | 2 +- public/language/de/admin/manage/users.json | 2 +- public/language/el/admin/manage/users.json | 2 +- public/language/en-US/admin/manage/users.json | 2 +- public/language/en-x-pirate/admin/manage/users.json | 2 +- public/language/es/admin/manage/users.json | 2 +- public/language/et/admin/manage/users.json | 2 +- public/language/fa-IR/admin/manage/users.json | 2 +- public/language/fi/admin/manage/users.json | 2 +- public/language/fr/admin/manage/users.json | 2 +- public/language/gl/admin/manage/users.json | 2 +- public/language/he/admin/manage/users.json | 2 +- public/language/hr/admin/manage/users.json | 2 +- public/language/hu/admin/manage/users.json | 2 +- public/language/id/admin/manage/users.json | 2 +- public/language/it/admin/manage/users.json | 2 +- public/language/ja/admin/manage/users.json | 2 +- public/language/ko/admin/manage/users.json | 2 +- public/language/lt/admin/manage/users.json | 2 +- public/language/lv/admin/manage/users.json | 2 +- public/language/ms/admin/manage/users.json | 2 +- public/language/nb/admin/manage/users.json | 2 +- public/language/nl/admin/manage/users.json | 2 +- public/language/pl/admin/manage/users.json | 2 +- public/language/pt-BR/admin/manage/users.json | 2 +- public/language/pt-PT/admin/manage/users.json | 2 +- public/language/ro/admin/manage/users.json | 2 +- public/language/ru/admin/manage/users.json | 2 +- public/language/rw/admin/manage/users.json | 2 +- public/language/sc/admin/manage/users.json | 2 +- public/language/sk/admin/manage/users.json | 2 +- public/language/sl/admin/manage/users.json | 2 +- public/language/sr/admin/manage/users.json | 2 +- public/language/sv/admin/manage/users.json | 2 +- public/language/th/admin/manage/users.json | 2 +- public/language/tr/admin/manage/users.json | 2 +- public/language/uk/admin/manage/users.json | 2 +- public/language/vi/admin/manage/users.json | 2 +- public/language/zh-CN/admin/manage/users.json | 2 +- public/language/zh-TW/admin/manage/users.json | 2 +- 44 files changed, 44 insertions(+), 44 deletions(-) diff --git a/public/language/ar/admin/manage/users.json b/public/language/ar/admin/manage/users.json index d74c6363b1..75fa918253 100644 --- a/public/language/ar/admin/manage/users.json +++ b/public/language/ar/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "المستخدمين", - "edit": "تحرير", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/bg/admin/manage/users.json b/public/language/bg/admin/manage/users.json index ad1cd20823..774ff60d25 100644 --- a/public/language/bg/admin/manage/users.json +++ b/public/language/bg/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Потребители", - "edit": "Редактиране", + "edit": "Actions", "make-admin": "Даване на администраторски права", "remove-admin": "Отнемане на администраторски права", "validate-email": "Проверка на е-пощата", diff --git a/public/language/bn/admin/manage/users.json b/public/language/bn/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/bn/admin/manage/users.json +++ b/public/language/bn/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/cs/admin/manage/users.json b/public/language/cs/admin/manage/users.json index f033dfb75e..4337c097f3 100644 --- a/public/language/cs/admin/manage/users.json +++ b/public/language/cs/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Uživatelé", - "edit": "Upravit", + "edit": "Actions", "make-admin": "Učinit správcem", "remove-admin": "Odebrat správce", "validate-email": "Ověřit e-mail", diff --git a/public/language/da/admin/manage/users.json b/public/language/da/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/da/admin/manage/users.json +++ b/public/language/da/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/de/admin/manage/users.json b/public/language/de/admin/manage/users.json index 23f9fe4857..e9f51d32da 100644 --- a/public/language/de/admin/manage/users.json +++ b/public/language/de/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Benutzer", - "edit": "Bearbeiten", + "edit": "Actions", "make-admin": "Zum Administrator befördern", "remove-admin": "Adminstatus entfernen", "validate-email": "E-Mail bestätigen", diff --git a/public/language/el/admin/manage/users.json b/public/language/el/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/el/admin/manage/users.json +++ b/public/language/el/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/en-US/admin/manage/users.json b/public/language/en-US/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/en-US/admin/manage/users.json +++ b/public/language/en-US/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/en-x-pirate/admin/manage/users.json b/public/language/en-x-pirate/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/en-x-pirate/admin/manage/users.json +++ b/public/language/en-x-pirate/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/es/admin/manage/users.json b/public/language/es/admin/manage/users.json index 09f5958de2..e13e9eef40 100644 --- a/public/language/es/admin/manage/users.json +++ b/public/language/es/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Usuarios", - "edit": "Editar", + "edit": "Actions", "make-admin": "Hacer Administrador", "remove-admin": "Eliminar Administrador", "validate-email": "Validar Email", diff --git a/public/language/et/admin/manage/users.json b/public/language/et/admin/manage/users.json index 06905e3b00..03a6ec75b6 100644 --- a/public/language/et/admin/manage/users.json +++ b/public/language/et/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Kasutajad", - "edit": "Muuda", + "edit": "Actions", "make-admin": "Ülenda administraatoriks", "remove-admin": "Eemalda administraator", "validate-email": "Kinnita email", diff --git a/public/language/fa-IR/admin/manage/users.json b/public/language/fa-IR/admin/manage/users.json index 360cb603ac..f006204a49 100644 --- a/public/language/fa-IR/admin/manage/users.json +++ b/public/language/fa-IR/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/fi/admin/manage/users.json b/public/language/fi/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/fi/admin/manage/users.json +++ b/public/language/fi/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/fr/admin/manage/users.json b/public/language/fr/admin/manage/users.json index 50f0ac1722..3cc2ce905e 100644 --- a/public/language/fr/admin/manage/users.json +++ b/public/language/fr/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Utilisateurs", - "edit": "Éditer ", + "edit": "Actions", "make-admin": "Promouvoir Admin", "remove-admin": "Retirer des Admins", "validate-email": "Vérifier l'adresse e-mail", diff --git a/public/language/gl/admin/manage/users.json b/public/language/gl/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/gl/admin/manage/users.json +++ b/public/language/gl/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index ed6c662173..37e66ef085 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "משתמשים", - "edit": "ערוך", + "edit": "Actions", "make-admin": "הפוך למנהל", "remove-admin": "הסר הרשאת מנהל", "validate-email": "סמן את דוא\"ל המשתמש/ים כמאומת", diff --git a/public/language/hr/admin/manage/users.json b/public/language/hr/admin/manage/users.json index 1b7af4b5fa..5561e6e901 100644 --- a/public/language/hr/admin/manage/users.json +++ b/public/language/hr/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Korisnici", - "edit": "Uredi", + "edit": "Actions", "make-admin": "Dodaj administratora", "remove-admin": "Makni administratora", "validate-email": "Potvrdite email", diff --git a/public/language/hu/admin/manage/users.json b/public/language/hu/admin/manage/users.json index 2531c4c43b..6db8d91d12 100644 --- a/public/language/hu/admin/manage/users.json +++ b/public/language/hu/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Felhasználók", - "edit": "Szerkesztés", + "edit": "Actions", "make-admin": "Adminná léptetés", "remove-admin": "Admin törlése", "validate-email": "Email érvényesítése", diff --git a/public/language/id/admin/manage/users.json b/public/language/id/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/id/admin/manage/users.json +++ b/public/language/id/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/it/admin/manage/users.json b/public/language/it/admin/manage/users.json index 0e6a5fd3f5..cae78040a8 100644 --- a/public/language/it/admin/manage/users.json +++ b/public/language/it/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Utenti", - "edit": "Modifica", + "edit": "Actions", "make-admin": "Crea Amministratore", "remove-admin": "Rimuovi Amministratore", "validate-email": "Valida Email", diff --git a/public/language/ja/admin/manage/users.json b/public/language/ja/admin/manage/users.json index 9532e7d763..caf2a3aac8 100644 --- a/public/language/ja/admin/manage/users.json +++ b/public/language/ja/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "ユーザー", - "edit": "編集", + "edit": "Actions", "make-admin": "管理者にする", "remove-admin": "管理者を削除", "validate-email": "電子メールの", diff --git a/public/language/ko/admin/manage/users.json b/public/language/ko/admin/manage/users.json index 39926cb5c4..656d4f928d 100644 --- a/public/language/ko/admin/manage/users.json +++ b/public/language/ko/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "사용자", - "edit": "편집", + "edit": "Actions", "make-admin": "관리자 등록", "remove-admin": "관리자 해제", "validate-email": "이메일 인증", diff --git a/public/language/lt/admin/manage/users.json b/public/language/lt/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/lt/admin/manage/users.json +++ b/public/language/lt/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/lv/admin/manage/users.json b/public/language/lv/admin/manage/users.json index 2963b07a33..a413d0b3d0 100644 --- a/public/language/lv/admin/manage/users.json +++ b/public/language/lv/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Lietotāji", - "edit": "Rediģēt", + "edit": "Actions", "make-admin": "Apstiprināt kā administratoru", "remove-admin": "Noņemt administratora tiesības", "validate-email": "Apstiprināt e-pasta adresi", diff --git a/public/language/ms/admin/manage/users.json b/public/language/ms/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/ms/admin/manage/users.json +++ b/public/language/ms/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/nb/admin/manage/users.json b/public/language/nb/admin/manage/users.json index be3fe88a1c..0bab898f7e 100644 --- a/public/language/nb/admin/manage/users.json +++ b/public/language/nb/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/nl/admin/manage/users.json b/public/language/nl/admin/manage/users.json index 8888a3c819..151a177843 100644 --- a/public/language/nl/admin/manage/users.json +++ b/public/language/nl/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Gebruikers", - "edit": "Aanpassen", + "edit": "Actions", "make-admin": "Maak administrator", "remove-admin": "Verwijder administrator", "validate-email": "Bevestig Email", diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json index 2256433b32..85158e649a 100644 --- a/public/language/pl/admin/manage/users.json +++ b/public/language/pl/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Użytkownicy", - "edit": "Edytuj", + "edit": "Actions", "make-admin": "Nadaj uprawnienia administratora", "remove-admin": "Odbierz uprawnienia administratora", "validate-email": "Zweryfikuj e-mail", diff --git a/public/language/pt-BR/admin/manage/users.json b/public/language/pt-BR/admin/manage/users.json index d5cf8c1ee3..0ee1d7655d 100644 --- a/public/language/pt-BR/admin/manage/users.json +++ b/public/language/pt-BR/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Usuários", - "edit": "Editar", + "edit": "Actions", "make-admin": "Tornar Administrador", "remove-admin": "Excluir Administrador", "validate-email": "Validar E-mail", diff --git a/public/language/pt-PT/admin/manage/users.json b/public/language/pt-PT/admin/manage/users.json index e0500d1c35..366bcf25bf 100644 --- a/public/language/pt-PT/admin/manage/users.json +++ b/public/language/pt-PT/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Utilizadores", - "edit": "Editar", + "edit": "Actions", "make-admin": "Tornar Administrador", "remove-admin": "Remover Administrador", "validate-email": "Validar E-mail", diff --git a/public/language/ro/admin/manage/users.json b/public/language/ro/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/ro/admin/manage/users.json +++ b/public/language/ro/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/ru/admin/manage/users.json b/public/language/ru/admin/manage/users.json index 1c418901fd..c713895473 100644 --- a/public/language/ru/admin/manage/users.json +++ b/public/language/ru/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Пользователи", - "edit": "Редактировать", + "edit": "Actions", "make-admin": "Сделать администратором", "remove-admin": "Удалить администратора", "validate-email": "Подтвердить адрес электронной почты", diff --git a/public/language/rw/admin/manage/users.json b/public/language/rw/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/rw/admin/manage/users.json +++ b/public/language/rw/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/sc/admin/manage/users.json b/public/language/sc/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/sc/admin/manage/users.json +++ b/public/language/sc/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/sk/admin/manage/users.json b/public/language/sk/admin/manage/users.json index d57a537033..7b569e6ceb 100644 --- a/public/language/sk/admin/manage/users.json +++ b/public/language/sk/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Používatelia", - "edit": "Upraviť", + "edit": "Actions", "make-admin": "Urobiť správcom", "remove-admin": "Odobrať správcu", "validate-email": "Overiť e-mail", diff --git a/public/language/sl/admin/manage/users.json b/public/language/sl/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/sl/admin/manage/users.json +++ b/public/language/sl/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/sr/admin/manage/users.json b/public/language/sr/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/sr/admin/manage/users.json +++ b/public/language/sr/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/sv/admin/manage/users.json b/public/language/sv/admin/manage/users.json index 15624056c9..38a065b954 100644 --- a/public/language/sv/admin/manage/users.json +++ b/public/language/sv/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Users", - "edit": "Edit", + "edit": "Actions", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", diff --git a/public/language/th/admin/manage/users.json b/public/language/th/admin/manage/users.json index 4a92247328..c5fc0e13b9 100644 --- a/public/language/th/admin/manage/users.json +++ b/public/language/th/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "ผู้ใช้", - "edit": "แก้ไข", + "edit": "Actions", "make-admin": "ทำให้เป็นแอดมิน", "remove-admin": "ยกเลิกการเป็นแอดมิน", "validate-email": "ยืนยันอีเมล", diff --git a/public/language/tr/admin/manage/users.json b/public/language/tr/admin/manage/users.json index 52ec969ae7..308c7320cc 100644 --- a/public/language/tr/admin/manage/users.json +++ b/public/language/tr/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Kullanıcılar", - "edit": "Düzenle", + "edit": "Actions", "make-admin": "Yönetici Yap", "remove-admin": "Yöneticiliği Sil", "validate-email": "E-postayı Doğrula", diff --git a/public/language/uk/admin/manage/users.json b/public/language/uk/admin/manage/users.json index 21b5177c04..7fd325c7d2 100644 --- a/public/language/uk/admin/manage/users.json +++ b/public/language/uk/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Користувачі", - "edit": "Редагувати", + "edit": "Actions", "make-admin": "Створити адміна", "remove-admin": "Видалити адміна", "validate-email": "Підтвердити електронну адресу", diff --git a/public/language/vi/admin/manage/users.json b/public/language/vi/admin/manage/users.json index ecb7b8ba6d..7eb85edadb 100644 --- a/public/language/vi/admin/manage/users.json +++ b/public/language/vi/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Người Dùng", - "edit": "Sửa", + "edit": "Actions", "make-admin": "Làm Quản Trị Viên", "remove-admin": "Xóa Quản Trị Viên", "validate-email": "Xác Thực Email", diff --git a/public/language/zh-CN/admin/manage/users.json b/public/language/zh-CN/admin/manage/users.json index 35b7ce8a42..2958f2f4eb 100644 --- a/public/language/zh-CN/admin/manage/users.json +++ b/public/language/zh-CN/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "用户", - "edit": "编辑", + "edit": "Actions", "make-admin": "设为管理", "remove-admin": "取消管理员", "validate-email": "验证邮箱", diff --git a/public/language/zh-TW/admin/manage/users.json b/public/language/zh-TW/admin/manage/users.json index 15cc354ec7..43b4b84d09 100644 --- a/public/language/zh-TW/admin/manage/users.json +++ b/public/language/zh-TW/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "使用者", - "edit": "編輯", + "edit": "Actions", "make-admin": "設為管理員", "remove-admin": "撤銷管理員", "validate-email": "驗證電郵地址", From 7b20cd304b0b92ac8506d09beded6cc9ff58e3e5 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Fri, 2 Jul 2021 09:06:36 +0000 Subject: [PATCH 102/115] Latest translations and fallbacks --- public/language/it/admin/manage/users.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/language/it/admin/manage/users.json b/public/language/it/admin/manage/users.json index cae78040a8..9d08cf4257 100644 --- a/public/language/it/admin/manage/users.json +++ b/public/language/it/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Utenti", - "edit": "Actions", + "edit": "Azioni", "make-admin": "Crea Amministratore", "remove-admin": "Rimuovi Amministratore", "validate-email": "Valida Email", From c7feea566f77cacd45cfd0d75e0342e04857e95c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 2 Jul 2021 18:53:30 +0000 Subject: [PATCH 103/115] fix(deps): update dependency nodebb-theme-persona to v11.0.24 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 2c72baa31b..6e1e664d5f 100644 --- a/install/package.json +++ b/install/package.json @@ -93,7 +93,7 @@ "nodebb-plugin-spam-be-gone": "0.7.9", "nodebb-rewards-essentials": "0.1.5", "nodebb-theme-lavender": "5.2.1", - "nodebb-theme-persona": "11.0.23", + "nodebb-theme-persona": "11.0.24", "nodebb-theme-slick": "1.4.7", "nodebb-theme-vanilla": "12.0.8", "nodebb-widget-essentials": "5.0.4", From 725e70e9d71458b24f155b9e705baa91d23ba1cb Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 2 Jul 2021 23:25:00 +0000 Subject: [PATCH 104/115] chore(deps): update dependency eslint to v7.30.0 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 6e1e664d5f..3cb1ac21e1 100644 --- a/install/package.json +++ b/install/package.json @@ -145,7 +145,7 @@ "@commitlint/cli": "12.1.4", "@commitlint/config-angular": "12.1.4", "coveralls": "3.1.1", - "eslint": "7.29.0", + "eslint": "7.30.0", "eslint-config-airbnb-base": "14.2.1", "eslint-plugin-import": "2.23.4", "grunt": "1.4.1", From f7f008a7794c7542df8cdda6116d7a677faceed2 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sat, 3 Jul 2021 09:05:52 +0000 Subject: [PATCH 105/115] Latest translations and fallbacks --- public/language/zh-CN/admin/menu.json | 2 +- public/language/zh-CN/topic.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json index 54e8283b7a..283c64c2f6 100644 --- a/public/language/zh-CN/admin/menu.json +++ b/public/language/zh-CN/admin/menu.json @@ -1,6 +1,6 @@ { "section-dashboard": "仪表盘", - "dashboard/overview": "Overview", + "dashboard/overview": "概览", "dashboard/logins": "登录", "dashboard/users": "用户", "dashboard/topics": "主题", diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json index cdec52b927..f91e4c4c42 100644 --- a/public/language/zh-CN/topic.json +++ b/public/language/zh-CN/topic.json @@ -1,6 +1,6 @@ { "topic": "主题", - "title": "Title", + "title": "标题", "no_topics_found": "没有找到主题!", "no_posts_found": "没有找到回复!", "post_is_deleted": "此回复已被删除!", From 5ff9319f9dccb8ae3af010d6af99b4906fe97984 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 4 Jul 2021 20:02:39 +0000 Subject: [PATCH 106/115] fix(deps): update dependency sortablejs to v1.14.0 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 3cb1ac21e1..ff5acf13f5 100644 --- a/install/package.json +++ b/install/package.json @@ -123,7 +123,7 @@ "socket.io-adapter-cluster": "^1.0.1", "socket.io-client": "4.1.2", "@socket.io/redis-adapter": "7.0.0", - "sortablejs": "1.13.0", + "sortablejs": "1.14.0", "spdx-license-list": "^6.4.0", "spider-detector": "2.0.0", "textcomplete": "^0.18.0", From d9ea704731860d3c2bce52da6d07bf7dd69d4cec Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Mon, 5 Jul 2021 09:06:33 +0000 Subject: [PATCH 107/115] Latest translations and fallbacks --- public/language/vi/admin/manage/users.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/language/vi/admin/manage/users.json b/public/language/vi/admin/manage/users.json index 7eb85edadb..de73acdc38 100644 --- a/public/language/vi/admin/manage/users.json +++ b/public/language/vi/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "Người Dùng", - "edit": "Actions", + "edit": "Hành động", "make-admin": "Làm Quản Trị Viên", "remove-admin": "Xóa Quản Trị Viên", "validate-email": "Xác Thực Email", From c9348efbdc7e271940f6fc1afc8d7444051667dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 5 Jul 2021 10:02:42 -0400 Subject: [PATCH 108/115] feat: add merge/fork hooks --- src/topics/fork.js | 8 +++++++- src/topics/merge.js | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/topics/fork.js b/src/topics/fork.js index 6ba03a33a3..5005dd1696 100644 --- a/src/topics/fork.js +++ b/src/topics/fork.js @@ -41,12 +41,18 @@ module.exports = function (Topics) { } const scheduled = postData.timestamp > Date.now(); - const tid = await Topics.create({ + const params = { uid: postData.uid, title: title, cid: cid, timestamp: scheduled && postData.timestamp, + }; + const result = await plugins.hooks.fire('filter:topic.fork', { + params: params, + tid: postData.tid, }); + + const tid = await Topics.create(result.params); await Topics.updateTopicBookmarks(fromTid, pids); await async.eachSeries(pids, async (pid) => { diff --git a/src/topics/merge.js b/src/topics/merge.js index 4d39280fb7..2d1112e58b 100644 --- a/src/topics/merge.js +++ b/src/topics/merge.js @@ -51,11 +51,16 @@ module.exports = function (Topics) { async function createNewTopic(title, oldestTid) { const topicData = await Topics.getTopicFields(oldestTid, ['uid', 'cid']); - const tid = await Topics.create({ + const params = { uid: topicData.uid, cid: topicData.cid, title: title, + }; + const result = await plugins.hooks.fire('filter:topic.mergeCreateNewTopic', { + oldestTid: oldestTid, + params: params, }); + const tid = await Topics.create(result.params); return tid; } From c11927c5f59fbb80571035a92bd19a0386d932fc Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 5 Jul 2021 15:51:45 +0000 Subject: [PATCH 109/115] fix(deps): update dependency nodebb-theme-persona to v11.0.25 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index ff5acf13f5..085bd8256b 100644 --- a/install/package.json +++ b/install/package.json @@ -93,7 +93,7 @@ "nodebb-plugin-spam-be-gone": "0.7.9", "nodebb-rewards-essentials": "0.1.5", "nodebb-theme-lavender": "5.2.1", - "nodebb-theme-persona": "11.0.24", + "nodebb-theme-persona": "11.0.25", "nodebb-theme-slick": "1.4.7", "nodebb-theme-vanilla": "12.0.8", "nodebb-widget-essentials": "5.0.4", From 5fe074c133c6abb3ae97368db806ec7d2eb5e783 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Tue, 6 Jul 2021 09:06:41 +0000 Subject: [PATCH 110/115] Latest translations and fallbacks --- .../language/he/admin/development/info.json | 4 +- .../language/he/admin/development/logger.json | 2 +- public/language/he/admin/extend/plugins.json | 2 +- public/language/he/admin/extend/widgets.json | 18 ++--- .../he/admin/settings/reputation.json | 12 ++-- .../language/he/admin/settings/sockets.json | 2 +- public/language/he/admin/settings/tags.json | 4 +- .../language/he/admin/settings/uploads.json | 72 +++++++++---------- public/language/he/admin/settings/user.json | 62 ++++++++-------- public/language/he/category.json | 2 +- public/language/he/error.json | 30 ++++---- public/language/he/flags.json | 6 +- public/language/he/modules.json | 22 +++--- public/language/he/notifications.json | 6 +- public/language/he/post-queue.json | 14 ++-- public/language/he/success.json | 2 +- public/language/he/topic.json | 34 ++++----- .../language/nl/admin/appearance/skins.json | 14 ++-- public/language/nl/admin/dashboard.json | 8 +-- 19 files changed, 158 insertions(+), 158 deletions(-) diff --git a/public/language/he/admin/development/info.json b/public/language/he/admin/development/info.json index 1fd4987ad9..f0401d9002 100644 --- a/public/language/he/admin/development/info.json +++ b/public/language/he/admin/development/info.json @@ -1,7 +1,7 @@ { - "you-are-on": "אתה נמצא ב", + "you-are-on": "אתה נמצא ב %1:%2", "ip": "IP %1", - "nodes-responded": "%1 nodes responded within %2ms!", + "nodes-responded": "%1 צמתים הגיבו בתוך %2מילי שניות!", "host": "מנחה", "primary": "primary / run jobs", "pid": "pid", diff --git a/public/language/he/admin/development/logger.json b/public/language/he/admin/development/logger.json index 4fdf500f14..e8ff9ac475 100644 --- a/public/language/he/admin/development/logger.json +++ b/public/language/he/admin/development/logger.json @@ -5,7 +5,7 @@ "enable-http": "הפעל רישום HTTP", "enable-socket": "הפעל רישום אירועים ב-socket.io", "file-path": "נתיב קובץ יומן רישום", - "file-path-placeholder": "/path/to/log/file.log ::: leave blank to log to your terminal", + "file-path-placeholder": "/path/to/log/file.log ::: השאר ריק כדי להיכנס לטרמינל שלך", "control-panel": "לוח בקרת מנהל רישום", "update-settings": "עדכן הגדרות מנהל רישום" diff --git a/public/language/he/admin/extend/plugins.json b/public/language/he/admin/extend/plugins.json index 734d6cc1c2..1c764d2ba7 100644 --- a/public/language/he/admin/extend/plugins.json +++ b/public/language/he/admin/extend/plugins.json @@ -39,7 +39,7 @@ "alert.upgraded": "תוסף שודרג", "alert.installed": "תוסף הותקן", "alert.uninstalled": "תוסף הוסר", - "alert.activate-success": "Please rebuild and restart your NodeBB to fully activate this plugin", + "alert.activate-success": "בנה והפעל מחדש את NodeBB בכדי לשדרג תוסף זה במלואו.", "alert.deactivate-success": "התוסף הושבת בהצלחה", "alert.upgrade-success": "בנה והפעל מחדש את NodeBB בכדי לשדרג תוסף זה במלואו.", "alert.install-success": "תוסף הותקן בהצלחה, אנא הפעל את התוסף.", diff --git a/public/language/he/admin/extend/widgets.json b/public/language/he/admin/extend/widgets.json index 0eb5021c73..1c5b975db6 100644 --- a/public/language/he/admin/extend/widgets.json +++ b/public/language/he/admin/extend/widgets.json @@ -8,23 +8,23 @@ "containers.none": "אף אחד", "container.well": "Well", "container.jumbotron": "Jumbotron", - "container.panel": "Panel", - "container.panel-header": "Panel Header", - "container.panel-body": "Panel Body", - "container.alert": "Alert", + "container.panel": "פאנל", + "container.panel-header": "כותרת פאנל", + "container.panel-body": "גוף הפאנל", + "container.alert": "התרעה", - "alert.confirm-delete": "Are you sure you wish to delete this widget?", - "alert.updated": "Widgets Updated", - "alert.update-success": "Successfully updated widgets", + "alert.confirm-delete": "האם אתה בטוח שאתה רוצה למחוק את הווידג'ט?", + "alert.updated": "העלאת ווידג'טים", + "alert.update-success": "הווידג'טים הועלו בהצלחה", "alert.clone-success": "Successfully cloned widgets", "error.select-clone": "Please select a page to clone from", - "title": "Title", + "title": "כותרת", "title.placeholder": "Title (only shown on some containers)", "container": "Container", "container.placeholder": "Drag and drop a container or enter HTML here.", "show-to-groups": "Show to groups", - "hide-from-groups": "Hide from groups", + "hide-from-groups": "הסתר מקבוצות", "hide-on-mobile": "Hide on mobile" } \ No newline at end of file diff --git a/public/language/he/admin/settings/reputation.json b/public/language/he/admin/settings/reputation.json index abeb7a97a1..be3d7a773f 100644 --- a/public/language/he/admin/settings/reputation.json +++ b/public/language/he/admin/settings/reputation.json @@ -4,19 +4,19 @@ "disable-down-voting": "השבת דיסלייק", "votes-are-public": "כל ההצבעות פומביות", "thresholds": "סף פעילות", - "min-rep-downvote": "מוניטין מינימלי כדי לפרסם הודעות", + "min-rep-downvote": "מוניטין מינימלי כדי להצביע נגד הודעות", "downvotes-per-day": "הצבעות מטה ליום (מוגדרות ל -0 להצבעות למטה ללא הגבלה)", "downvotes-per-user-per-day": "הצבעות למטה למשתמש ליום (מוגדרות ל -0 להצבעות למטה ללא הגבלה)", - "min-rep-flag": "מוניטין מינימלי כדי לפרסם הודעות", + "min-rep-flag": "מוניטין מינימלי כדי לדווח על הודעות", "min-rep-website": "מוניטין מינימלי להוספת \"אתר\" לפרופיל המשתמש", "min-rep-aboutme": "מוניטין מינימלי להוסיף \"אודותיי\" לפרופיל המשתמש", "min-rep-signature": "מוניטין מינימלי להוספת \"חתימה\" לפרופיל המשתמש", "min-rep-profile-picture": "מוניטין מינימלי להוסיף \"תמונת פרופיל\" לפרופיל המשתמש", - "min-rep-cover-picture": "מוניטין מינימלי להוסיף \"תמונת שער\" לפרופיל המשתמש", + "min-rep-cover-picture": "מוניטין מינימלי להוסיף \"תמונת נושא\" לפרופיל המשתמש", - "flags": "Flag Settings", + "flags": "הגדרות דיווח", "flags.limit-per-target": "מספר הפעמים המרבי שניתן לסמן משהו", - "flags.limit-per-target-placeholder": "Default: 0", - "flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a "report" and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.", + "flags.limit-per-target-placeholder": "ברירת מחדל: 0", + "flags.limit-per-target-help": "כשפוסט או משתמש מסומן כמה פעמים, כל דיווח נוסף נחשב ל "דיווח" ונוסף לדיווח הראשון. הגדר את האופציה הזאת לכל מספר שהוא לא 0 כדי להגביל את כמות הדיווחים שפוסט או משתמש יכול לקבל.", "flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned" } \ No newline at end of file diff --git a/public/language/he/admin/settings/sockets.json b/public/language/he/admin/settings/sockets.json index 8c3c945279..464ef58d30 100644 --- a/public/language/he/admin/settings/sockets.json +++ b/public/language/he/admin/settings/sockets.json @@ -1,6 +1,6 @@ { "reconnection": "הגדרות חיבור מחדש", "max-attempts": "ניסיון חיבור מחדש מרבי", - "default-placeholder": "Default: %1", + "default-placeholder": "ברירת מחדל: %1", "delay": "עיכוב חיבור מחדש" } \ No newline at end of file diff --git a/public/language/he/admin/settings/tags.json b/public/language/he/admin/settings/tags.json index 3180165d2f..51d3fd4c1c 100644 --- a/public/language/he/admin/settings/tags.json +++ b/public/language/he/admin/settings/tags.json @@ -1,8 +1,8 @@ { "tag": "הגדרות תגיות", "link-to-manage": "נהל תגיות", - "system-tags": "System Tags", - "system-tags-help": "Only privileged users will be able to use these tags.", + "system-tags": "תגיות מערכת", + "system-tags-help": "רק מנהלים יכולים להשתמש בתגית זו", "min-per-topic": "מינימום תגיות לנושא", "max-per-topic": "מקסימום תגיות לנושא", "min-length": "אורך תגית מינימלי", diff --git a/public/language/he/admin/settings/uploads.json b/public/language/he/admin/settings/uploads.json index 30ba8fef93..fab53f5967 100644 --- a/public/language/he/admin/settings/uploads.json +++ b/public/language/he/admin/settings/uploads.json @@ -3,40 +3,40 @@ "allow-files": "אפשר למשתמשים להעלות קבצים רגילים", "private": "הפוך קבצים שהועלו לפרטיים", "strip-exif-data": "הפשט נתוני EXIF", - "private-extensions": "File extensions to make private", - "private-uploads-extensions-help": "Enter comma-separated list of file extensions to make private here (e.g. pdf,xls,doc). An empty list means all files are private.", - "resize-image-width-threshold": "Resize images if they are wider than specified width", - "resize-image-width-threshold-help": "(in pixels, default: 1520 pixels, set to 0 to disable)", - "resize-image-width": "Resize images down to specified width", - "resize-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)", - "resize-image-quality": "Quality to use when resizing images", - "resize-image-quality-help": "Use a lower quality setting to reduce the file size of resized images.", - "max-file-size": "Maximum File Size (in KiB)", - "max-file-size-help": "(in kibibytes, default: 2048 KiB)", - "reject-image-width": "Maximum Image Width (in pixels)", - "reject-image-width-help": "Images wider than this value will be rejected.", - "reject-image-height": "Maximum Image Height (in pixels)", - "reject-image-height-help": "Images taller than this value will be rejected.", - "allow-topic-thumbnails": "Allow users to upload topic thumbnails", - "topic-thumb-size": "Topic Thumb Size", - "allowed-file-extensions": "Allowed File Extensions", - "allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. pdf,xls,doc). An empty list means all extensions are allowed.", - "upload-limit-threshold": "Rate limit user uploads to:", - "upload-limit-threshold-per-minute": "Per %1 Minute", - "upload-limit-threshold-per-minutes": "Per %1 Minutes", - "profile-avatars": "Profile Avatars", - "allow-profile-image-uploads": "Allow users to upload profile images", - "convert-profile-image-png": "Convert profile image uploads to PNG", - "default-avatar": "Custom Default Avatar", - "upload": "Upload", - "profile-image-dimension": "Profile Image Dimension", - "profile-image-dimension-help": "(in pixels, default: 128 pixels)", - "max-profile-image-size": "Maximum Profile Image File Size", - "max-profile-image-size-help": "(in kibibytes, default: 256 KiB)", - "max-cover-image-size": "Maximum Cover Image File Size", - "max-cover-image-size-help": "(in kibibytes, default: 2,048 KiB)", - "keep-all-user-images": "Keep old versions of avatars and profile covers on the server", - "profile-covers": "Profile Covers", - "default-covers": "Default Cover Images", - "default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image" + "private-extensions": "סיומות קובצים להפוך לפרטיים", + "private-uploads-extensions-help": "הכנס כאן רשימה של פורמטי הקבצים, מופרדים בפסיק, כדי להפוך אותם לפרטיים (לדוגמא pdf,xls,doc). שורה ריקה פירושו שכל הקבצים פרטיים.", + "resize-image-width-threshold": "שנה גודל תמונות אם הם רחבים יותר מהרוחב המוגדר", + "resize-image-width-threshold-help": "(בפיקסלים, ברירת מחדל: 1520 פיקסלים, הגדר 0 כדי להשבית)", + "resize-image-width": "שנה גודל תמונות לגודל המוגדר", + "resize-image-width-help": "(בפיקסלים, ברירת מחדל: 760 פיקסלים, הגדר 0 כדי להשבית)", + "resize-image-quality": "באיזה איכות להשתמש כאשר משנים תמונה", + "resize-image-quality-help": "השתמש ברזולוציה נמוכה כדי להקטין את גודל התמונה הממוזערת", + "max-file-size": "גודל קובץ מירבית (בKiB)", + "max-file-size-help": "(בקיביביטס, ברירת מחדל: 2048 KiB)", + "reject-image-width": "רוחב תמונה מקסימלי (בפיקסלים)", + "reject-image-width-help": "תמונות גבוהות יותר יידחו", + "reject-image-height": "גובה תמונה מקסימלי (בפיקסלים)", + "reject-image-height-help": "תמונות גבוהות יותר יידחו", + "allow-topic-thumbnails": "אפשר למשתמשים להעלות תמונה ממוזערת לנושא", + "topic-thumb-size": "גודל תמונה ממוזערת לנושא", + "allowed-file-extensions": "סיומות קבצים מאושרים", + "allowed-file-extensions-help": "הכנס כאן רשימת פורמטי קבצים מאושרים (לדוגמא. pdf,xls,doc). רשימה ריקה פירושו שכל הקבצים מאושרים.", + "upload-limit-threshold": "הגבל שיעור העלאות מהמשתמשים ל:", + "upload-limit-threshold-per-minute": "ל %1 דקה", + "upload-limit-threshold-per-minutes": "ל %1 דקות", + "profile-avatars": "סמל פרופיל", + "allow-profile-image-uploads": "אפשר למשתמשים להעלאות תמונות פרופיל", + "convert-profile-image-png": "המר העלאות תמונות פרופיל לPNG", + "default-avatar": "סמל אישי ברירת מחדל", + "upload": "העלה", + "profile-image-dimension": "מימדי תמונות פרופיל", + "profile-image-dimension-help": "(בפיקסלים, ברירת מחדל: 128 פיקסלים)", + "max-profile-image-size": "גודל קובץ מקסימלי של תמונות פרופיל", + "max-profile-image-size-help": "(בקיביביטס, ברירת מחדל: 256 KiB)", + "max-cover-image-size": "גודל תמונת נושא מקסימלי", + "max-cover-image-size-help": "(בקיביביטס, ברירת מחדל: 2048 KiB)", + "keep-all-user-images": "השאר גרסה קודמת של הסמל ותמונת הנושא על השרת", + "profile-covers": "תמונות נושא", + "default-covers": "תמונות נושא ברירת מחדל", + "default-covers-help": "הוסף תמונות נושא ברירת מחדל מופרדות בפסיקים עבור משתמשים שאין להם תמונת נושא שהועלתה" } diff --git a/public/language/he/admin/settings/user.json b/public/language/he/admin/settings/user.json index 1d1a13ee20..a8b4609278 100644 --- a/public/language/he/admin/settings/user.json +++ b/public/language/he/admin/settings/user.json @@ -8,8 +8,8 @@ "allow-login-with.username": "שם משתמש בלבד", "allow-login-with.email": "כתובת מייל בלבד", "account-settings": "הגדרות חשבון", - "gdpr_enabled": "Enable GDPR consent collection", - "gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the General Data Protection Regulation (GDPR). Note: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.", + "gdpr_enabled": "אפשר הסכמת איסוף נתונים GDPR", + "gdpr_enabled_help": "כאשר תאפשר, כל המשתמשים החדשים יידרשו לתת הסכמה באופן מפורש לאיסוף ושימוש בנתונים תחת ה התקנה הכללית להגנת נתונים (GDPR). הערה: הפעלת GDPR לא יכריח משתמשים קיימים לאשר הסכמה. כדי לעשות זאת, תצטרכו להתקין את התוסף GDPR.", "disable-username-changes": "בטל שינויי שם משתמש", "disable-email-changes": "בטל שינויי כתובת מייל", "disable-password-changes": "בטל שינויי סיסמא", @@ -31,7 +31,7 @@ "session-time-days": "ימים", "session-time-seconds": "שניות", "session-time-help": "These values are used to govern how long a user stays logged in when they check "Remember Me" on login. Note that only one of these values will be used. If there is no seconds value we fall back to days. If there is no days value we default to 14 days.", - "online-cutoff": "Minutes after user is considered inactive", + "online-cutoff": "דקות אחרי שהמשתמש נחשב לא פעיל", "online-cutoff-help": "אם משתמש אינו מבצע פעולות במשך זמן זה, הוא נחשב כלא פעיל ואינו מקבל עדכונים בזמן אמת.", "registration": "רישום משתמש", "registration-type": "סוג הרשמה", @@ -52,33 +52,33 @@ "max-invites-help": "0 בשביל לבטל הגבלה. מנהלים מקבלים אינסוף הזמנות
תקף רק ל-\"הזמנה בלבד\"", "invite-expiration": "תוקף ההזמנה", "invite-expiration-help": "הזמנות יפוגו ב-# ימים.", - "min-username-length": "Minimum Username Length", - "max-username-length": "Maximum Username Length", - "min-password-length": "Minimum Password Length", - "min-password-strength": "Minimum Password Strength", - "max-about-me-length": "Maximum About Me Length", - "terms-of-use": "Forum Terms of Use (Leave blank to disable)", - "user-search": "User Search", - "user-search-results-per-page": "Number of results to display", - "default-user-settings": "Default User Settings", - "show-email": "Show email", - "show-fullname": "Show fullname", - "restrict-chat": "Only allow chat messages from users I follow", - "outgoing-new-tab": "Open outgoing links in new tab", - "topic-search": "Enable In-Topic Searching", + "min-username-length": "אורך שם משתמש מינימלי", + "max-username-length": "אורך שם משתמש מקסימלי", + "min-password-length": "אורך סיסמה מינימלי", + "min-password-strength": "חוזק מינימלי של הסיסמה", + "max-about-me-length": "אורך מקסימום של התיבה 'עלי'", + "terms-of-use": "תנאי השימוש של הפורום (השאר ריק כדי להשבית)", + "user-search": "חיפוש משתמשים", + "user-search-results-per-page": "מספר התוצאות להצגה", + "default-user-settings": "הגדרות משתמש ברירת מחדל", + "show-email": "הצג כתובת אימייל", + "show-fullname": "הצג שם מלא", + "restrict-chat": "אשר הודעות צ'אט רק ממשתמשים שאני עוקב אחריהם", + "outgoing-new-tab": "פתח קישורים חיצוניים בכרטיסייה חדשה", + "topic-search": "הפעל חיפוש בתוך נושא", "update-url-with-post-index": "Update url with post index while browsing topics", - "digest-freq": "Subscribe to Digest", - "digest-freq.off": "Off", - "digest-freq.daily": "Daily", - "digest-freq.weekly": "Weekly", - "digest-freq.monthly": "Monthly", - "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", - "email-post-notif": "Send an email when replies are made to topics I am subscribed to", - "follow-created-topics": "Follow topics you create", - "follow-replied-topics": "Follow topics that you reply to", - "default-notification-settings": "Default notification settings", - "categoryWatchState": "Default category watch state", - "categoryWatchState.watching": "Watching", - "categoryWatchState.notwatching": "Not Watching", - "categoryWatchState.ignoring": "Ignoring" + "digest-freq": "הרשם לקבלת תקציר", + "digest-freq.off": "כבוי", + "digest-freq.daily": "יומי", + "digest-freq.weekly": "שבועי", + "digest-freq.monthly": "חודשי", + "email-chat-notifs": "שלח לי הודעה למייל כאשר הודעת צ'אט נשלחה אלי בזמן שאינני מחובר", + "email-post-notif": "שלח לי הודעה למייל כאשר תגובות חדשות פורסמו לנושאים שאני עוקב אחריהם", + "follow-created-topics": "עקוב אחר נושאים שייצרת", + "follow-replied-topics": "עקוב אחר נושאים שהגבת עליהם", + "default-notification-settings": "הגדרות התראות ברירת מחדל", + "categoryWatchState": "מצב מעקב על קטגוריה בברירת מחדל", + "categoryWatchState.watching": "עוקב", + "categoryWatchState.notwatching": "לא עוקב", + "categoryWatchState.ignoring": "מתעלם" } diff --git a/public/language/he/category.json b/public/language/he/category.json index 55834b49de..fc896b06b1 100644 --- a/public/language/he/category.json +++ b/public/language/he/category.json @@ -19,5 +19,5 @@ "notwatching.message": "בחרת לא לעקוב אחר עדכונים בקטגוריה זו וכל תת-הקטגוריות", "ignoring.message": "בחרת להתעלם מעדכונים בקטגוריה זו וכל תת-הקטגוריות", "watched-categories": "קטגוריות במעקב", - "x-more-categories": "%1 more categories" + "x-more-categories": "%1 קטגוריות נוספות" } \ No newline at end of file diff --git a/public/language/he/error.json b/public/language/he/error.json index 8c0f45e1fd..329b3b3935 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -22,7 +22,7 @@ "invalid-username-or-password": "אנא הגדר שם משתמש וסיסמה", "invalid-search-term": "מילת חיפוש לא תקינה", "invalid-url": "שגיאה בכתובת URL", - "invalid-event": "Invalid event: %1", + "invalid-event": "אירוע לא תקין: %1", "local-login-disabled": "מערכת הכניסה המקומית הושבתה עבור חשבונות שאינם מורשים.", "csrf-invalid": "אין באפשרותנו לחבר אותך למערכת, מכיוון שעבר זמן רב מידי. אנא נסה שנית.", "invalid-pagination-value": "ערך דף לא חוקי, חייב להיות לפחות %1 ולא מעל %2", @@ -60,7 +60,7 @@ "post-edit-duration-expired": "אתה רשאי לערוך פוסטים רק ל-%1 שניות לאחר הפרסום", "post-edit-duration-expired-minutes": "הנך רשאי לערוך תגובה עד %1 דקות מרגע פרסום התגובה.", "post-edit-duration-expired-minutes-seconds": "הנך רשאי לערוך תגובה עד %1 דקות %2 ושניות מרגע פרסום התגובה.", - "post-edit-duration-expired-hours": "אתה מורשה לערוך פוסטים רק %1 שעות אחרי הפרסום.", + "post-edit-duration-expired-hours": "אתה מורשה לערוך פוסט(ים) רק %1 שעות אחרי הפרסום.", "post-edit-duration-expired-hours-minutes": "הנך רשאי לערוך פוסט למשך %1 שעות %2 דקות מרגע פרסומו.", "post-edit-duration-expired-days": "אתה רשאי לערוך פוסט(ים) רק למשך %1 ימים מרגע פרסומו", "post-edit-duration-expired-days-hours": "אתה רשאי לערוך פוסט(ים) רק למשך %1 שעות %2 דקות מרגע פרסומו(ם)", @@ -84,26 +84,26 @@ "tag-too-long": "אנא הכנס תגית קצרה יותר. תגיות אינן יכולות להיות ארוכות יותר מ-%1 תווים", "not-enough-tags": "אין מספיק תגיות. לנושא חייב להיות לפחות %1 תגיות", "too-many-tags": "יותר מדי תגיות. לנושאים לא יכולים להיות יותר מ-%1 תגיות", - "cant-use-system-tag": "You can not use this system tag.", - "cant-remove-system-tag": "You can not remove this system tag.", + "cant-use-system-tag": "אינך יכול להשתמש בתווית מערכת זו", + "cant-remove-system-tag": "אינך יכול להסיר תווית מערכת זו", "still-uploading": "אנא המתן לסיום ההעלאות", "file-too-big": "הגודל המקסימלי של הקובץ הוא %1 קילובייט - אנא העלה קובץ קטן יותר", "guest-upload-disabled": "העלאת אורחים אינה מאופשרת", "cors-error": "לא ניתן להעלות את התמונה עקב שגיאת CORS.", - "upload-ratelimit-reached": "You have uploaded too many files at one time. Please try again later.", - "scheduling-to-past": "Please select a date in the future.", - "invalid-schedule-date": "Please enter a valid date and time.", + "upload-ratelimit-reached": "העלת יותר מידי קבצים בפעם אחת. אנא נסה שוב במועד מאוחר יותר", + "scheduling-to-past": "אנא בחר תאריך בעתיד", + "invalid-schedule-date": "אנא הזן תאריך ושעה תקינים", "cant-pin-scheduled": "Scheduled topics cannot be (un)pinned.", - "cant-merge-scheduled": "Scheduled topics cannot be merged.", - "cant-move-posts-to-scheduled": "Can't move posts to a scheduled topic.", - "cant-move-from-scheduled-to-existing": "Can't move posts from a scheduled topic to an existing topic.", + "cant-merge-scheduled": "נושא מתוזמן אינו יכול להתמזג ", + "cant-move-posts-to-scheduled": "אינך יכול להעביר פוסטים לנושא מתוזמן", + "cant-move-from-scheduled-to-existing": "אינך יכול להעביר פוסטים מנושא מתוזמן לנושא קיים", "already-bookmarked": "כבר הוספת פוסט זה לרשימת המסומנים", "already-unbookmarked": "כבר הסרת פוסט זה מרשימת המסומנים", "cant-ban-other-admins": "אינך יכול לחסום מנהלים אחרים!", "cant-remove-last-admin": "אתה המנהל היחיד. הוסף משתמש אחר לניהול לפני שאתה מוריד את עצמך מניהול", "account-deletion-disabled": "מחיקת החשבון מושבתת", "cant-delete-admin": "משתמש זה מוגדר כמנהל. על מנת למחוק את המשתמש, עליך להסיר קודם את גישותיו.", - "already-deleting": "Already deleting", + "already-deleting": "כבר מחוק", "invalid-image": "תמונה לא תקינה", "invalid-image-type": "פורמט תמונה לא תקין. הפורמטים המורשים הם: %1", "invalid-image-extension": "פורמט תמונה לא תקין", @@ -175,9 +175,9 @@ "cant-kick-self": "אינך יכול להסיר את עצמך מהקבוצה", "no-users-selected": "לא נבחרו משתמשים", "invalid-home-page-route": "כתובת דף הבית הינה שגויה", - "invalid-session": "Invalid Session", - "invalid-session-text": "It looks like your login session is no longer active. Please refresh this page.", - "session-mismatch": "Session Mismatch", + "invalid-session": "סשן לא תקין", + "invalid-session-text": "נראה שסשן ההתחברות שלך כבר לא פעיל. אנא טען מחדש את העמוד.", + "session-mismatch": "מושב לא תואם", "session-mismatch-text": "It looks like your login session no longer matches with the server. Please refresh this page.", "no-topics-selected": "לא נבחרו נושאים!", "cant-move-to-same-topic": "אתה לא יכול להעביר פוסט לאותו נושא!", @@ -191,6 +191,6 @@ "socket-reconnect-failed": "לא ניתן להגיע לשרת בשלב זה. לחץ כאן כדי לנסות שוב, או נסה שוב מאוחר יותר", "plugin-not-whitelisted": "לא ניתן להתקין את התוסף – ניתן להתקין דרך הניהול רק תוספים שנמצאים ברשימה הלבנה של מנהל החבילות של NodeBB.", "topic-event-unrecognized": "Topic event '%1' unrecognized", - "cant-set-child-as-parent": "Can't set child as parent category", + "cant-set-child-as-parent": "לא ניתן להגדיר קטגוריה משנה לקטגוריית אב", "cant-set-self-as-parent": "Can't set self as parent category" } \ No newline at end of file diff --git a/public/language/he/flags.json b/public/language/he/flags.json index ccf6a914e8..8467f0cb47 100644 --- a/public/language/he/flags.json +++ b/public/language/he/flags.json @@ -6,7 +6,7 @@ "assignee": "מוקצה", "update": "עדכון", "updated": "עודכן", - "resolved": "Resolved", + "resolved": "הושלם", "target-purged": "התוכן שסומן נוקה ולא קיים יותר.", "graph-label": "דיווחים יומיים", @@ -82,7 +82,7 @@ "modal-submit-confirm-text-help": "שליחת דיווח מהיר תבטל כל סיבה קודמת שהוגדרה.", "bulk-actions": "פעולות כלליות", - "bulk-resolve": "השלם דיווחים", + "bulk-resolve": "השלם דיווח(ים)", "bulk-success": "%1 דיווחים עודכנו", - "flagged-timeago-readable": "Flagged (%2)" + "flagged-timeago-readable": "מדווחים (%2)" } \ No newline at end of file diff --git a/public/language/he/modules.json b/public/language/he/modules.json index 4276b5e6b0..a360dc3c26 100644 --- a/public/language/he/modules.json +++ b/public/language/he/modules.json @@ -60,21 +60,21 @@ "composer.zen_mode": "מסך מלא", "composer.select_category": "בחר קטגוריה", "composer.textarea.placeholder": "כתוב את תוכן הפוסט כאן. ניתן גם לגרור לכאן תמונות.", - "composer.schedule-for": "Schedule topic for", - "composer.schedule-date": "Date", - "composer.schedule-time": "Time", - "composer.cancel-scheduling": "Cancel Scheduling", - "composer.set-schedule-date": "Set Date", + "composer.schedule-for": "תזמון נושא ל", + "composer.schedule-date": "תאריך", + "composer.schedule-time": "שעה", + "composer.cancel-scheduling": "בטל תיזמון", + "composer.set-schedule-date": "הגדר תאריך", "bootbox.ok": "אישור", "bootbox.cancel": "בטל", "bootbox.confirm": "אשר", "cover.dragging_title": "מיקום תמונת נושא", "cover.dragging_message": "גרור תמונת נושא למיקום הרצוי ולחץ על \"שמור\"", "cover.saved": "תמונת הנושא והמיקום נשמר", - "thumbs.modal.title": "Manage topic thumbnails", - "thumbs.modal.no-thumbs": "No thumbnails found.", - "thumbs.modal.resize-note": "Note: This forum is configured to resize topic thumbnails down to a maximum width of %1px", - "thumbs.modal.add": "Add thumbnail", - "thumbs.modal.remove": "Remove thumbnail", - "thumbs.modal.confirm-remove": "Are you sure you want to remove this thumbnail?" + "thumbs.modal.title": "נהל תמונה ממוזערת של הנושא", + "thumbs.modal.no-thumbs": "לא נמצעו תמונות ממוזערות", + "thumbs.modal.resize-note": "הערה: הפורום מוגדר לשנות את התמונה הממוזערת לגודל מקסימום של %1px", + "thumbs.modal.add": "הוסף תמונה ממוזערת", + "thumbs.modal.remove": "הסר תמונה ממוזערת", + "thumbs.modal.confirm-remove": "האם אתה בטוח שאתה רוצה להסיר את התמונה הממוזערת?" } \ No newline at end of file diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index 410c9b63a3..93ed6c8e7a 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/notifications.json @@ -14,7 +14,7 @@ "topics": "נושאים", "replies": "תגובות", "chat": "צ'אטים", - "group-chat": "Group Chats", + "group-chat": "צ'אט קבוצתי", "follows": "עוקבים", "upvote": "הצבעות בעד", "new-flags": "דיווחים חדשים", @@ -48,8 +48,8 @@ "posts-exported": "%1 פוסטים יוצאו, לחץ כדי להוריד.", "uploads-exported": "%1 העלאות יוצאו, לחץ כדי להוריד.", "users-csv-exported": "משתמשים יוצאו כ-csv, לחץ כאן להורדה.", - "post-queue-accepted": "Your queued post has been accepted. Click here to see your post.", - "post-queue-rejected": "Your queued post has been rejected.", + "post-queue-accepted": "הפוסט ששלחת התקבל. לחץ כאן כדי לראות את הפוסט", + "post-queue-rejected": "הפוסט ששלחת נדחה", "email-confirmed": "כתובת המייל אושרה", "email-confirmed-message": "תודה שאישרת את כתובת המייל שלך. החשבון שלך פעיל כעת.", "email-confirm-error-message": "אירעה שגיאה בעת אישור המייל שלך. ייתכן כי הקוד היה שגוי או פג תוקף.", diff --git a/public/language/he/post-queue.json b/public/language/he/post-queue.json index eeef23a806..4737141783 100644 --- a/public/language/he/post-queue.json +++ b/public/language/he/post-queue.json @@ -8,11 +8,11 @@ "content": "תוכן", "posted": "נשלח", "reply-to": "תגובה ל %1", - "content-editable": "Click on content to edit", - "category-editable": "Click on category to edit", - "title-editable": "Click on title to edit", - "reply": "Reply", - "topic": "Topic", - "accept": "Accept", - "reject": "Reject" + "content-editable": "לחץ על התוכן כדי לערוך", + "category-editable": "לחץ על הקטגוריה כדי לערוך", + "title-editable": "לחץ על הכותרת כדי לערוך", + "reply": "תגובה", + "topic": "נושא", + "accept": "אשר", + "reject": "דחה" } \ No newline at end of file diff --git a/public/language/he/success.json b/public/language/he/success.json index c658ec97f0..55e719650c 100644 --- a/public/language/he/success.json +++ b/public/language/he/success.json @@ -1,7 +1,7 @@ { "success": "הצלחה", "topic-post": "העלת פוסט בהצלחה.", - "post-queued": "Your post is queued for approval. You will get a notification when it is accepted or rejected.", + "post-queued": "הפוסט שלך נשלח. תקבל התראה הוא יתקבל או ידחה.", "authentication-successful": "הנתונים אומתו בהצלחה", "settings-saved": "הנתונים נשמרו!" } \ No newline at end of file diff --git a/public/language/he/topic.json b/public/language/he/topic.json index 6ad9b5a713..fac9900afb 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -1,6 +1,6 @@ { "topic": "נושא", - "title": "Title", + "title": "כותרת", "no_topics_found": "לא נמצאו נושאים!", "no_posts_found": "לא נמצאו פוסטים!", "post_is_deleted": "פוסט זה נמחק!", @@ -31,25 +31,25 @@ "locked": "נעול", "pinned": "נעוץ", "pinned-with-expiry": "נעוץ עד %1", - "scheduled": "Scheduled", + "scheduled": "מתוזמן", "moved": "הועבר", "moved-from": "הועבר מ-%1", "copy-ip": "העתק IP", "ban-ip": "הרחק IP", "view-history": "ערוך היסטוריה", "locked-by": "נעול על ידי", - "unlocked-by": "Unlocked by", - "pinned-by": "Pinned by", - "unpinned-by": "Unpinned by", - "deleted-by": "Deleted by", - "restored-by": "Restored by", - "queued-by": "Post queued for approval →", + "unlocked-by": "נעילה הוסרה על ידי", + "pinned-by": "נעוץ על ידי", + "unpinned-by": "נעיצה הוסרה על ידי", + "deleted-by": "נמחק על ידי", + "restored-by": "שוחזר על ידי", + "queued-by": "הפוסט ממתין לאישור →", "bookmark_instructions": "לחץ כאן בכדי לחזור לפוסט האחרון שקראת בנושא הזה.", "flag-post": "דווח על פוסט זה", "flag-user": "דווח על משתמש זה", "already-flagged": "דווח כבר", "view-flag-report": "הצג דוח דיווחים", - "resolve-flag": "Resolve Flag", + "resolve-flag": "השלם דיווח", "merged_message": "נושא זה מוזג בתוך %2", "deleted_message": "נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.", "following_topic.message": "מעתה, תקבל התראה כאשר מישהו יעלה פוסט לנושא זה.", @@ -114,7 +114,7 @@ "move_post": "הזז פוסט", "post_moved": "הפוסט הועבר!", "fork_topic": "פצל נושא", - "enter-new-topic-title": "Enter new topic title", + "enter-new-topic-title": "הכנס כותרת נושא חדשה", "fork_topic_instruction": "לחץ על הפוסטים שברצונך לפצל", "fork_no_pids": "לא נבחרו פוסטים!", "no-posts-selected": "לא נבחרו פוסטים!", @@ -128,17 +128,17 @@ "merge-options": "אפשרויות מיזוג", "merge-select-main-topic": "בחר את הכותרת המועדפת", "merge-new-title-for-topic": "כותרת חדשה לנושא", - "topic-id": "Topic ID", - "move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic", + "topic-id": "מזהה נושא", + "move_posts_instruction": "לחץ על הפוסטים שברצונך להסיר ואז הכנס מזהה נושא או עבור לנושא היעד", "change_owner_instruction": "לחץ על הפוסטים עליהם תרצה לשנות את כותב ההודעה", "composer.title_placeholder": "הכנס את כותרת הנושא כאן...", "composer.handle_placeholder": "הזן את שמך / כינוי שלך כאן", "composer.discard": "ביטול", "composer.submit": "שלח", - "composer.schedule": "Schedule", + "composer.schedule": "תזמן", "composer.replying_to": "מגיב ל%1", "composer.new_topic": "נושא חדש", - "composer.editing": "Editing", + "composer.editing": "עורך", "composer.uploading": "מעלה...", "composer.thumb_url_label": "הדבק את כתובת ה-URL לתמונה מוקטנת עבור הנושא", "composer.thumb_title": "הוסף תמונה מוקטנת לנושא זה", @@ -146,7 +146,7 @@ "composer.thumb_file_label": "או העלה קובץ", "composer.thumb_remove": "נקה שדות", "composer.drag_and_drop_images": "גרור תמונות לכאן", - "more_users_and_guests": "%1 משתמשים נוספים ו-%2 אורחים", + "more_users_and_guests": "%1 משתמש(ים) נוספים ו-%2 אורח(ים)", "more_users": "%1 משתמשים נוספים", "more_guests": "%1 אורחים נוספים", "users_and_others": "%1 ו-%2 אחרים", @@ -168,8 +168,8 @@ "diffs.restore": "שחזר גרסה זו", "diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.", "diffs.post-restored": "הפוסט שוחזר בהצלחה לגרסה קודמת", - "diffs.delete": "Delete this revision", - "diffs.deleted": "Revision deleted", + "diffs.delete": "מחק גרסה זו", + "diffs.deleted": "גרסה זו נמחקה", "timeago_later": "אחרי %1", "timeago_earlier": "לפני %1 ", "first-post": "פוסט ראשון", diff --git a/public/language/nl/admin/appearance/skins.json b/public/language/nl/admin/appearance/skins.json index 4db6fbdd8a..0d49afe927 100644 --- a/public/language/nl/admin/appearance/skins.json +++ b/public/language/nl/admin/appearance/skins.json @@ -1,9 +1,9 @@ { - "loading": "Loading Skins...", - "homepage": "Homepage", - "select-skin": "Select Skin", - "current-skin": "Current Skin", - "skin-updated": "Skin Updated", - "applied-success": "%1 skin was succesfully applied", - "revert-success": "Skin reverted to base colours" + "loading": "Style laden...", + "homepage": "Startpagina", + "select-skin": "Kies stijl", + "current-skin": "Huidige stijl", + "skin-updated": "Stijl bijgewerkt", + "applied-success": "%1 stijl was succesvol toegepast", + "revert-success": "Stijl teruggezet naar basis kleuren" } \ No newline at end of file diff --git a/public/language/nl/admin/dashboard.json b/public/language/nl/admin/dashboard.json index 92a10fe96d..bb81461688 100644 --- a/public/language/nl/admin/dashboard.json +++ b/public/language/nl/admin/dashboard.json @@ -1,11 +1,11 @@ { "forum-traffic": "Forum Traffic", "page-views": "Page Views", - "unique-visitors": "Unique Visitors", + "unique-visitors": "Unieke bezoekers", "logins": "Logins", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", + "new-users": "Nieuwe Gebruikers", + "posts": "Berichten", + "topics": "Onderwerpen", "page-views-seven": "Last 7 Days", "page-views-thirty": "Last 30 Days", "page-views-last-day": "Last 24 hours", From 99c230372a1dfe07323efe491645ef2bd0ffee6b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 6 Jul 2021 19:59:41 +0000 Subject: [PATCH 111/115] chore(deps): update coverallsapp/github-action action to v1.1.3 --- .github/workflows/test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 13cc91a82a..90683cf490 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -186,7 +186,7 @@ jobs: run: npm run coverage - name: Test coverage - uses: coverallsapp/github-action@v1.1.2 + uses: coverallsapp/github-action@1.1.3 if: matrix.coverage with: github-token: ${{ secrets.GITHUB_TOKEN }} @@ -198,7 +198,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Coveralls Finished - uses: coverallsapp/github-action@v1.1.2 + uses: coverallsapp/github-action@1.1.3 with: github-token: ${{ secrets.GITHUB_TOKEN }} parallel-finished: true From f17625fb34137ee65a7ff3ed0a1c9dc2fac61cd4 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 6 Jul 2021 21:09:02 +0000 Subject: [PATCH 112/115] fix(deps): update dependency mongodb to v3.6.10 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 085bd8256b..1df342ed99 100644 --- a/install/package.json +++ b/install/package.json @@ -78,7 +78,7 @@ "material-design-lite": "^1.3.0", "mime": "^2.5.2", "mkdirp": "^1.0.4", - "mongodb": "3.6.9", + "mongodb": "3.6.10", "morgan": "^1.10.0", "mousetrap": "^1.6.5", "multiparty": "4.2.2", From e03782f218178a45d139adbe971598aa9d253c9d Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 7 Jul 2021 09:33:24 -0400 Subject: [PATCH 113/115] fix(docs): #9648 --- src/socket.io/user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 359058eb61..1d213600a2 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -148,7 +148,7 @@ SocketUser.saveSettings = async function (socket, data) { }; SocketUser.setTopicSort = async function (socket, sort) { - sockets.warnDeprecated(socket, 'PUT /api/v3/users/:uid/setting/topicPostSort'); + sockets.warnDeprecated(socket, 'PUT /api/v3/users/:uid/settings'); await api.users.updateSetting(socket, { uid: socket.uid, setting: 'topicPostSort', @@ -157,7 +157,7 @@ SocketUser.setTopicSort = async function (socket, sort) { }; SocketUser.setCategorySort = async function (socket, sort) { - sockets.warnDeprecated(socket, 'PUT /api/v3/users/:uid/setting/categoryTopicSort'); + sockets.warnDeprecated(socket, 'PUT /api/v3/users/:uid/settings'); await api.users.updateSetting(socket, { uid: socket.uid, setting: 'categoryTopicSort', From 10ddfff38f7820ab48ff64a0cde51d9c9bbfa65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 7 Jul 2021 09:58:06 -0400 Subject: [PATCH 114/115] perf: bypass getMultipleUserSettings --- src/topics/index.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/topics/index.js b/src/topics/index.js index 6c49995203..92a74fa1bc 100644 --- a/src/topics/index.js +++ b/src/topics/index.js @@ -79,10 +79,21 @@ Topics.getTopicsByTids = async function (tids, options) { return postData.map(p => p.handle); } + async function loadShowfullnameSettings() { + if (meta.config.hideFullname) { + return uids.map(() => ({ showfullname: false })); + } + const data = await db.getObjectsFields(uids.map(uid => `user:${uid}:settings`), ['showfullname']); + data.forEach((settings) => { + settings.showfullname = parseInt(settings.showfullname, 10) === 1; + }); + return data; + } + const [teasers, users, userSettings, categoriesData, guestHandles, thumbs] = await Promise.all([ Topics.getTeasers(topics, options), user.getUsersFields(uids, ['uid', 'username', 'fullname', 'userslug', 'reputation', 'postcount', 'picture', 'signature', 'banned', 'status']), - user.getMultipleUserSettings(uids), + loadShowfullnameSettings(), categories.getCategoriesFields(cids, ['cid', 'name', 'slug', 'icon', 'backgroundImage', 'imageClass', 'bgColor', 'color', 'disabled']), loadGuestHandles(), Topics.thumbs.load(topics), @@ -90,7 +101,7 @@ Topics.getTopicsByTids = async function (tids, options) { users.forEach((userObj, idx) => { // Hide fullname if needed - if (meta.config.hideFullname || !userSettings[idx].showfullname) { + if (!userSettings[idx].showfullname) { userObj.fullname = undefined; } }); From 8e0561f2264c46e54c08c6ddd0bc8a7e5511d3d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 7 Jul 2021 11:42:19 -0400 Subject: [PATCH 115/115] perf: cache Topics.getTopicsTags --- src/topics/tags.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/topics/tags.js b/src/topics/tags.js index bf3548dae8..5407ebdeb4 100644 --- a/src/topics/tags.js +++ b/src/topics/tags.js @@ -33,6 +33,7 @@ module.exports = function (Topics) { db.setAdd(`topic:${tid}:tags`, tags), db.sortedSetsAdd(topicSets, timestamp, tid), ]); + cache.del(`topic:${tid}:tags`); await Topics.updateCategoryTagsCount([cid], tags); await Promise.all(tags.map(tag => updateTagCount(tag))); }; @@ -165,6 +166,7 @@ module.exports = function (Topics) { const keys = tids.map(tid => `topic:${tid}:tags`); await db.setsRemove(keys, tag); await db.setsAdd(keys, newTagName); + cache.del(keys); }, {}); await Topics.deleteTag(tag); await updateTagCount(newTagName); @@ -235,6 +237,7 @@ module.exports = function (Topics) { } const keys = tids.map(tid => `topic:${tid}:tags`); await db.setsRemove(keys, tag); + cache.del(keys); }); } @@ -298,13 +301,29 @@ module.exports = function (Topics) { }; Topics.getTopicTags = async function (tid) { - return await db.getSetMembers(`topic:${tid}:tags`); + const data = await Topics.getTopicsTags([tid]); + return data && data[0]; }; Topics.getTopicsTags = async function (tids) { - return await db.getSetsMembers( - tids.map(tid => `topic:${tid}:tags`) + const cachedData = {}; + const uncachedKeys = cache.getUnCachedKeys( + tids.map(tid => `topic:${tid}:tags`), + cachedData ); + + if (!uncachedKeys.length) { + return tids.map(tid => cachedData[`topic:${tid}:tags`].slice()); + } + + const tagData = await db.getSetsMembers( + uncachedKeys, + ); + uncachedKeys.forEach((uncachedKey, index) => { + cachedData[uncachedKey] = tagData[index]; + cache.set(uncachedKey, tagData[index]); + }); + return tids.map(tid => cachedData[`topic:${tid}:tags`].slice()); }; Topics.getTopicTagsObjects = async function (tid) { @@ -346,6 +365,7 @@ module.exports = function (Topics) { await updateTagCount(tags[i]); } await Topics.updateCategoryTagsCount(_.uniq(topicData.map(t => t.cid)), tags); + cache.del(sets); }; Topics.removeTags = async function (tags, tids) { @@ -365,6 +385,7 @@ module.exports = function (Topics) { await updateTagCount(tags[i]); } await Topics.updateCategoryTagsCount(_.uniq(topicData.map(t => t.cid)), tags); + cache.del(sets); }; Topics.updateTopicTags = async function (tid, tags) { @@ -379,6 +400,7 @@ module.exports = function (Topics) { Topics.getTopicField(tid, 'cid'), ]); await db.delete(`topic:${tid}:tags`); + cache.del(`topic:${tid}:tags`); const sets = tags.map(tag => `tag:${tag}:topics`) .concat(tags.map(tag => `cid:${cid}:tag:${tag}:topics`));