From 14515f6004513d86b1189c5609c3b54b19961236 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 21 Sep 2022 16:02:20 -0400 Subject: [PATCH 01/27] fix: add lru-cache to checked packages, to fix upgrade issue with lru-cache --- src/cli/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cli/index.js b/src/cli/index.js index 5c3c01fd88..86bfc127b4 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -41,6 +41,7 @@ try { checkVersion('commander'); checkVersion('chalk'); checkVersion('lodash'); + checkVersion('lru-cache'); } catch (e) { if (['ENOENT', 'DEP_WRONG_VERSION', 'MODULE_NOT_FOUND'].includes(e.code)) { console.warn('Dependencies outdated or not yet installed.'); From aad0a618c86f45055827dada020bad11b041bd0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 23 Sep 2022 09:09:15 -0400 Subject: [PATCH 02/27] fix: scroll to post if theme doesn't have top navbar --- public/src/modules/navigator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js index 824f55434a..2937470707 100644 --- a/public/src/modules/navigator.js +++ b/public/src/modules/navigator.js @@ -559,7 +559,7 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct } const postHeight = scrollTo.outerHeight(true); - const navbarHeight = components.get('navbar').outerHeight(true); + const navbarHeight = components.get('navbar').outerHeight(true) || 0; const topicHeaderHeight = $('.topic-header').outerHeight(true) || 0; const viewportHeight = $(window).height(); From 803398e91549b59129a44f558a6eeb1556a057bc Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 23 Sep 2022 13:10:14 -0400 Subject: [PATCH 03/27] fix: broken flag history on flag update --- public/src/client/flags/detail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/client/flags/detail.js b/public/src/client/flags/detail.js index fdffc096f2..782304f318 100644 --- a/public/src/client/flags/detail.js +++ b/public/src/client/flags/detail.js @@ -26,7 +26,7 @@ define('forum/flags/detail', [ return memo; }, {}); - api.put(`/flags/${ajaxify.data.flagId}`, data).then((history) => { + api.put(`/flags/${ajaxify.data.flagId}`, data).then(({ history }) => { alerts.success('[[flags:updated]]'); Detail.reloadHistory(history); }).catch(alerts.error); From 7240e8ce575fbca92ffb94ad6fdf4a81621679d8 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 28 Sep 2022 10:27:50 -0400 Subject: [PATCH 04/27] =?UTF-8?q?chore:=20=F0=9F=A4=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd4ac1c692..2fa3d9ec12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,16 +6,6 @@ * bring back treding plugins (8aa1596d) * incrementing version number - v2.5.2 (babcd17e) * update changelog for v2.5.2 (84b6a7c7) -* incrementing version number - v2.5.1 (ce3aa950) -* incrementing version number - v2.5.0 (01d276cb) -* incrementing version number - v2.4.5 (dd3e1a28) -* incrementing version number - v2.4.4 (d5525c87) -* incrementing version number - v2.4.3 (9c647c6c) -* incrementing version number - v2.4.2 (3aa7b855) -* incrementing version number - v2.4.1 (60cbd148) -* incrementing version number - v2.4.0 (4834cde3) -* incrementing version number - v2.3.1 (d2425942) -* incrementing version number - v2.3.0 (046ea120) ##### New Features From 989b55d07e6fc720e1d9792c6a192546dacc8971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sat, 1 Oct 2022 22:15:06 -0400 Subject: [PATCH 05/27] fix: crash in category drag, closes #10932 happens when a child is dragged to root or from root to a nested level --- public/src/admin/manage/categories.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index cae9f782ca..d5eb350038 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -212,11 +212,17 @@ define('admin/manage/categories', [ const oldParentCid = parseInt(e.from.getAttribute('data-cid'), 10); const newParentCid = parseInt(e.to.getAttribute('data-cid'), 10); if (oldParentCid !== newParentCid) { - document.querySelector(`.categories li[data-cid="${newParentCid}"] .toggle`).classList.toggle('hide', false); + const toggle = document.querySelector(`.categories li[data-cid="${newParentCid}"] .toggle`); + if (toggle) { + toggle.classList.toggle('hide', false); + } const children = document.querySelectorAll(`.categories li[data-cid="${oldParentCid}"] ul[data-cid] li[data-cid]`); if (!children.length) { - document.querySelector(`.categories li[data-cid="${oldParentCid}"] .toggle`).classList.toggle('hide', true); + const toggle = document.querySelector(`.categories li[data-cid="${oldParentCid}"] .toggle`); + if (toggle) { + toggle.classList.toggle('hide', true); + } } e.item.dataset.parentCid = newParentCid; From 177d9048128b39f4daf2322cc5958fea118f95bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 3 Oct 2022 09:40:54 -0400 Subject: [PATCH 06/27] fix: category ordering add test --- src/categories/update.js | 2 +- test/categories.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/categories/update.js b/src/categories/update.js index 20b14361fb..d4be83edb8 100644 --- a/src/categories/update.js +++ b/src/categories/update.js @@ -108,7 +108,7 @@ module.exports = function (Categories) { if (currentIndex === -1) { throw new Error('[[error:no-category]]'); } - // moves cid to index order-1 in the array + // moves cid to index order - 1 in the array if (childrenCids.length > 1) { childrenCids.splice(Math.max(0, order - 1), 0, childrenCids.splice(currentIndex, 1)[0]); } diff --git a/test/categories.js b/test/categories.js index 98d15c28bc..cd28ee33ef 100644 --- a/test/categories.js +++ b/test/categories.js @@ -421,6 +421,22 @@ describe('Categories', () => { assert.equal(data.icon, updateData[cid].icon); }); + it('should properly order categories', async () => { + const p1 = await Categories.create({ name: 'p1', description: 'd', parentCid: 0, order: 1 }); + const c1 = await Categories.create({ name: 'c1', description: 'd1', parentCid: p1.cid, order: 1 }); + const c2 = await Categories.create({ name: 'c2', description: 'd2', parentCid: p1.cid, order: 2 }); + const c3 = await Categories.create({ name: 'c3', description: 'd3', parentCid: p1.cid, order: 3 }); + // move c1 to second place + await apiCategories.update({ uid: adminUid }, { [c1.cid]: { order: 2 } }); + let cids = await db.getSortedSetRange(`cid:${p1.cid}:children`, 0, -1); + assert.deepStrictEqual(cids.map(Number), [c2.cid, c1.cid, c3.cid]); + + // move c3 to front + await apiCategories.update({ uid: adminUid }, { [c3.cid]: { order: 1 } }); + cids = await db.getSortedSetRange(`cid:${p1.cid}:children`, 0, -1); + assert.deepStrictEqual(cids.map(Number), [c3.cid, c2.cid, c1.cid]); + }); + it('should not remove category from parent if parent is set again to same category', async () => { const parentCat = await Categories.create({ name: 'parent', description: 'poor parent' }); const updateData = {}; From fe0020fb31e64a5cd9ccd8039786fdd248a32106 Mon Sep 17 00:00:00 2001 From: Ashish Kurmi Date: Sun, 2 Oct 2022 14:32:42 -0700 Subject: [PATCH 07/27] ci: add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi --- .github/workflows/docker.yml | 3 +++ .github/workflows/test.yaml | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 01ca27e133..a901a4ee46 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -11,6 +11,9 @@ on: workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel +permissions: + contents: read + jobs: release: runs-on: ubuntu-latest diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 225615aa72..df9e180c78 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -14,8 +14,14 @@ defaults: run: shell: bash +permissions: + contents: read + jobs: test: + permissions: + checks: write # for coverallsapp/github-action to create new checks + contents: read # for actions/checkout to fetch code name: Lint and test strategy: fail-fast: false @@ -194,6 +200,8 @@ jobs: parallel: true finish: + permissions: + checks: write # for coverallsapp/github-action to create new checks needs: test runs-on: ubuntu-latest steps: From ebd5dcc6d62841dbcd120351919cdf7cf59f5933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 11 Oct 2022 08:13:59 -0400 Subject: [PATCH 08/27] fix: EEXISTS error on linux if plugin/theme overrides core js file --- src/meta/js.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/meta/js.js b/src/meta/js.js index 69ab76f369..454b682cc3 100644 --- a/src/meta/js.js +++ b/src/meta/js.js @@ -27,14 +27,6 @@ JS.scripts = { modules: { }, }; -async function linkIfLinux(srcPath, destPath) { - if (process.platform === 'win32') { - await fs.promises.copyFile(srcPath, destPath); - } else { - await file.link(srcPath, destPath, true); - } -} - const basePath = path.resolve(__dirname, '../..'); async function linkModules() { @@ -55,7 +47,7 @@ async function linkModules() { if (stats.isDirectory()) { await file.linkDirs(srcPath, destPath, true); } else { - await linkIfLinux(srcPath, destPath); + await fs.promises.copyFile(srcPath, destPath); } })); } From 89eb0340d153548077a1e0d465c232277c411e18 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 11 Oct 2022 12:25:35 +0000 Subject: [PATCH 09/27] chore: incrementing version number - v2.5.4 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 18bc65668e..22ac328320 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "2.5.3", + "version": "2.5.4", "homepage": "http://www.nodebb.org", "repository": { "type": "git", From aabf073c89ca7e84e90a3b4b1fe430a8a7ce043c Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 11 Oct 2022 12:25:36 +0000 Subject: [PATCH 10/27] chore: update changelog for v2.5.4 --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fa3d9ec12..c332c62342 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,35 @@ +#### v2.5.4 (2022-10-11) + +##### Chores + +* 🤔 (7240e8ce) +* incrementing version number - v2.5.3 (7e922936) +* update changelog for v2.5.3 (fdf240f6) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Continuous Integration + +* add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi (fe0020fb) + +##### Bug Fixes + +* EEXISTS error on linux if plugin/theme overrides core js file (ebd5dcc6) +* category ordering add test (177d9048) +* crash in category drag, closes #10932 (989b55d0) +* broken flag history on flag update (803398e9) +* scroll to post if theme doesn't have top navbar (aad0a618) +* add lru-cache to checked packages, to fix upgrade issue with lru-cache (14515f60) + #### v2.5.3 (2022-09-19) ##### Chores From b91ef6dd761d643383d1eb4f4ac3abd5e55c18e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 11 Oct 2022 12:13:03 -0400 Subject: [PATCH 11/27] chore: up plugins --- install/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install/package.json b/install/package.json index 22ac328320..1570bb958c 100644 --- a/install/package.json +++ b/install/package.json @@ -91,11 +91,11 @@ "nodebb-plugin-2factor": "5.0.2", "nodebb-plugin-composer-default": "9.1.1", "nodebb-plugin-dbsearch": "5.1.5", - "nodebb-plugin-emoji": "4.0.4", + "nodebb-plugin-emoji": "4.0.6", "nodebb-plugin-emoji-android": "3.0.0", "nodebb-plugin-markdown": "10.1.0", - "nodebb-plugin-mentions": "3.0.11", - "nodebb-plugin-spam-be-gone": "1.0.0", + "nodebb-plugin-mentions": "3.0.12", + "nodebb-plugin-spam-be-gone": "1.0.2", "nodebb-rewards-essentials": "0.2.1", "nodebb-theme-lavender": "6.0.0", "nodebb-theme-persona": "12.1.1", From 58b2f10ee9542631d67e8768b10ad9f7a05043f8 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 11 Oct 2022 17:07:16 +0000 Subject: [PATCH 12/27] chore: incrementing version number - v2.5.5 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 1570bb958c..a5ee0c35ff 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "2.5.4", + "version": "2.5.5", "homepage": "http://www.nodebb.org", "repository": { "type": "git", From e7d0040d178543539ab490dc32d4bda6f1a79d9d Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 11 Oct 2022 17:07:16 +0000 Subject: [PATCH 13/27] chore: update changelog for v2.5.5 --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c332c62342..0c361fc2c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +#### v2.5.5 (2022-10-11) + +##### Chores + +* up plugins (b91ef6dd) +* incrementing version number - v2.5.4 (e83260ca) +* update changelog for v2.5.4 (aabf073c) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + #### v2.5.4 (2022-10-11) ##### Chores From e35b0a869fc18fb6ed28e968cd2840d1d58955f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 11 Oct 2022 20:30:54 -0400 Subject: [PATCH 14/27] fix: https://github.com/NodeBB/NodeBB/issues/10525 --- src/install.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/install.js b/src/install.js index 97e981d071..ba0f13e7be 100644 --- a/src/install.js +++ b/src/install.js @@ -342,6 +342,14 @@ async function createAdmin() { try { User.isPasswordValid(results.password); } catch (err) { + const [namespace, key] = err.message.slice(2, -2).split(':', 2); + if (namespace && key && err.message.startsWith('[[') && err.message.endsWith(']]')) { + const lang = require(path.join(__dirname, `../public/language/en-GB/${namespace}`)); + if (lang && lang[key]) { + err.message = lang[key]; + } + } + winston.warn(`Password error, please try again. ${err.message}`); return await retryPassword(results); } From b879b6a0c2b35cb76cf4d559c00a3f456cb74c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 12 Oct 2022 10:02:45 -0400 Subject: [PATCH 15/27] fix: use admin:groups priv for groups (#10960) --- src/api/groups.js | 6 +++--- src/socket.io/groups.js | 22 ++++++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/api/groups.js b/src/api/groups.js index 36f11471d2..9e6aa30d0b 100644 --- a/src/api/groups.js +++ b/src/api/groups.js @@ -215,14 +215,14 @@ async function isOwner(caller, groupName) { if (typeof groupName !== 'string') { throw new Error('[[error:invalid-group-name]]'); } - const [isAdmin, isGlobalModerator, isOwner, group] = await Promise.all([ - user.isAdministrator(caller.uid), + const [hasAdminPrivilege, isGlobalModerator, isOwner, group] = await Promise.all([ + privileges.admin.can('admin:groups', caller.uid), user.isGlobalModerator(caller.uid), groups.ownership.isOwner(caller.uid, groupName), groups.getGroupData(groupName), ]); - const check = isOwner || isAdmin || (isGlobalModerator && !group.system); + const check = isOwner || hasAdminPrivilege || (isGlobalModerator && !group.system); if (!check) { throw new Error('[[error:no-privileges]]'); } diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index 7e7c93d859..3b6f30a38d 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -42,13 +42,15 @@ async function isOwner(socket, data) { throw new Error('[[error:invalid-group-name]]'); } const results = await utils.promiseParallel({ - isAdmin: await user.isAdministrator(socket.uid), - isGlobalModerator: await user.isGlobalModerator(socket.uid), - isOwner: await groups.ownership.isOwner(socket.uid, data.groupName), - group: await groups.getGroupData(data.groupName), + hasAdminPrivilege: privileges.admin.can('admin:groups', socket.uid), + isGlobalModerator: user.isGlobalModerator(socket.uid), + isOwner: groups.ownership.isOwner(socket.uid, data.groupName), + group: groups.getGroupData(data.groupName), }); - const isOwner = results.isOwner || results.isAdmin || (results.isGlobalModerator && !results.group.system); + const isOwner = results.isOwner || + results.hasAdminPrivilege || + (results.isGlobalModerator && !results.group.system); if (!isOwner) { throw new Error('[[error:no-privileges]]'); } @@ -220,15 +222,15 @@ SocketGroups.loadMoreMembers = async (socket, data) => { }; async function canSearchMembers(uid, groupName) { - const [isHidden, isMember, isAdmin, isGlobalMod, viewGroups] = await Promise.all([ + const [isHidden, isMember, hasAdminPrivilege, isGlobalMod, viewGroups] = await Promise.all([ groups.isHidden(groupName), groups.isMember(uid, groupName), - user.isAdministrator(uid), + privileges.admin.can('admin:groups', uid), user.isGlobalModerator(uid), privileges.global.can('view:groups', uid), ]); - if (!viewGroups || (isHidden && !isMember && !isAdmin && !isGlobalMod)) { + if (!viewGroups || (isHidden && !isMember && !hasAdminPrivilege && !isGlobalMod)) { throw new Error('[[error:no-privileges]]'); } } @@ -268,11 +270,11 @@ async function canModifyGroup(uid, groupName) { const results = await utils.promiseParallel({ isOwner: groups.ownership.isOwner(uid, groupName), system: groups.getGroupField(groupName, 'system'), - isAdmin: user.isAdministrator(uid), + hasAdminPrivilege: privileges.admin.can('admin:groups', uid), isGlobalMod: user.isGlobalModerator(uid), }); - if (!(results.isOwner || results.isAdmin || (results.isGlobalMod && !results.system))) { + if (!(results.isOwner || results.hasAdminPrivilege || (results.isGlobalMod && !results.system))) { throw new Error('[[error:no-privileges]]'); } } From 67efaeb4b8e03417dfc3b575f19249f18f4cb3d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 13 Oct 2022 10:09:23 -0400 Subject: [PATCH 16/27] fix active plugins (#10964) --- src/meta/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/meta/build.js b/src/meta/build.js index 0647cc7e0d..5f272387b3 100644 --- a/src/meta/build.js +++ b/src/meta/build.js @@ -201,7 +201,7 @@ exports.webpack = async function (options) { const util = require('util'); const plugins = require('../plugins/data'); - const activePlugins = await plugins.getActive(); + const activePlugins = (await plugins.getActive()).map(p => p.id); if (!activePlugins.includes('nodebb-plugin-composer-default')) { activePlugins.push('nodebb-plugin-composer-default'); } From 7dc45afa4c2c8cc51215d476edc4f55f1a02389a Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 13 Oct 2022 14:21:01 +0000 Subject: [PATCH 17/27] chore: incrementing version number - v2.5.6 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index a5ee0c35ff..4c0aeb6d30 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "2.5.5", + "version": "2.5.6", "homepage": "http://www.nodebb.org", "repository": { "type": "git", From e92238d09a4419a58e67c1e41c34d967942ed2a8 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Thu, 13 Oct 2022 14:21:02 +0000 Subject: [PATCH 18/27] chore: update changelog for v2.5.6 --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c361fc2c3..04a3ab3471 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +#### v2.5.6 (2022-10-13) + +##### Chores + +* incrementing version number - v2.5.5 (3509ed94) +* update changelog for v2.5.5 (e7d0040d) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Bug Fixes + +* use admin:groups priv for groups (#10960) (b879b6a0) +* https://github.com/NodeBB/NodeBB/issues/10525 (e35b0a86) + #### v2.5.5 (2022-10-11) ##### Chores From dd4e9cce094048dcd5119f968e921c5d3187c962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 5 Oct 2022 22:46:42 -0400 Subject: [PATCH 19/27] perf: speed up build run webpack as soon as js targets are done this allows building js/css in parallel --- Gruntfile.js | 3 +-- src/meta/build.js | 30 +++++++++++++++++++++--------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ea8c518ec7..3f635ac9a0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -138,10 +138,9 @@ module.exports = function (grunt) { }); const build = require('./src/meta/build'); if (!grunt.option('skip')) { - await build.build(true, { webpack: false }); + await build.build(true, { watch: true }); } run(); - await build.webpack({ watch: true }); done(); }); diff --git a/src/meta/build.js b/src/meta/build.js index 5f272387b3..1941291020 100644 --- a/src/meta/build.js +++ b/src/meta/build.js @@ -77,20 +77,36 @@ async function beforeBuild(targets) { const allTargets = Object.keys(targetHandlers).filter(name => typeof targetHandlers[name] === 'function'); -async function buildTargets(targets, parallel) { +async function buildTargets(targets, parallel, options) { const length = Math.max(...targets.map(name => name.length)); - - if (parallel) { + const jsTargets = targets.filter(target => targetHandlers.javascript.includes(target)); + const otherTargets = targets.filter(target => !targetHandlers.javascript.includes(target)); + async function buildJSTargets() { await Promise.all( - targets.map( + jsTargets.map( target => step(target, parallel, `${_.padStart(target, length)} `) ) ); + // run webpack after jstargets are done, no need to wait for css/templates etc. + if (options.webpack || options.watch) { + await exports.webpack(options); + } + } + if (parallel) { + await Promise.all([ + buildJSTargets(), + ...otherTargets.map( + target => step(target, parallel, `${_.padStart(target, length)} `) + ), + ]); } else { for (const target of targets) { // eslint-disable-next-line no-await-in-loop await step(target, parallel, `${_.padStart(target, length)} `); } + if (options.webpack || options.watch) { + await exports.webpack(options); + } } } @@ -175,11 +191,7 @@ exports.build = async function (targets, options) { } const startTime = Date.now(); - await buildTargets(targets, !series); - - if (options.webpack) { - await exports.webpack(options); - } + await buildTargets(targets, !series, options); const totalTime = (Date.now() - startTime) / 1000; await cacheBuster.write(); From ba484d5478ec6af9f28f9339116ea19ef6bba969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 6 Oct 2022 07:51:13 -0400 Subject: [PATCH 20/27] Esbuild (#10940) * ci: add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi * feat: use esbuild for minification Co-authored-by: Ashish Kurmi --- install/package.json | 2 ++ webpack.prod.js | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/install/package.json b/install/package.json index 4c0aeb6d30..1824a75876 100644 --- a/install/package.json +++ b/install/package.json @@ -58,6 +58,7 @@ "csurf": "1.11.0", "daemon": "1.1.0", "diff": "5.1.0", + "esbuild": "0.15.10", "express": "4.18.1", "express-session": "1.17.3", "express-useragent": "1.0.15", @@ -129,6 +130,7 @@ "sortablejs": "1.15.0", "spdx-license-list": "6.6.0", "spider-detector": "2.0.0", + "terser-webpack-plugin": "5.3.6", "textcomplete": "0.18.2", "textcomplete.contenteditable": "0.1.1", "timeago": "1.6.7", diff --git a/webpack.prod.js b/webpack.prod.js index 523e011f3d..4cecee7d9c 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -1,8 +1,19 @@ 'use strict'; const { merge } = require('webpack-merge'); +const TerserPlugin = require('terser-webpack-plugin'); + const common = require('./webpack.common'); module.exports = merge(common, { mode: 'production', + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + minify: TerserPlugin.esbuildMinify, + terserOptions: {}, + }), + ], + }, }); From dc4a850cacecb8c57923803363dac9bb61221bba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 6 Oct 2022 07:52:32 -0400 Subject: [PATCH 21/27] show progress --- install/package.json | 1 + webpack.prod.js | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/install/package.json b/install/package.json index 1824a75876..d2f62a4076 100644 --- a/install/package.json +++ b/install/package.json @@ -112,6 +112,7 @@ "pg-cursor": "2.7.3", "postcss": "8.4.14", "postcss-clean": "1.2.0", + "progress-webpack-plugin": "1.0.16", "prompt": "1.3.0", "ioredis": "5.2.2", "request": "2.88.2", diff --git a/webpack.prod.js b/webpack.prod.js index 4cecee7d9c..d5d5c8a1fe 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -2,11 +2,15 @@ const { merge } = require('webpack-merge'); const TerserPlugin = require('terser-webpack-plugin'); +const ProgressPlugin = require('progress-webpack-plugin'); const common = require('./webpack.common'); module.exports = merge(common, { mode: 'production', + plugins: [ + new ProgressPlugin(true), + ], optimization: { minimize: true, minimizer: [ From af27606e20cc881bed29506f9ca6daee0eebd698 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 14 Oct 2022 11:58:12 -0400 Subject: [PATCH 22/27] fix: #10968, icon selector in ACP when icon name is typed in --- public/src/modules/iconSelect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/iconSelect.js b/public/src/modules/iconSelect.js index 7bbbfb7fa9..b901372a18 100644 --- a/public/src/modules/iconSelect.js +++ b/public/src/modules/iconSelect.js @@ -45,7 +45,7 @@ define('iconSelect', ['benchpress', 'bootbox'], function (Benchpress, bootbox) { label: 'Select', className: 'btn-primary', callback: function () { - const iconClass = $('.bootbox .selected').attr('class'); + const iconClass = $('.bootbox .selected').attr('class') || `fa fa-${$('.bootbox #fa-filter').val()}`; const categoryIconClass = $('
').addClass(iconClass).removeClass('fa').removeClass('selected') .attr('class'); const searchElVal = picker.find('input').val(); From dd6d10482040d24b064deb2963b6f4496614cec1 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 14 Oct 2022 15:59:57 +0000 Subject: [PATCH 23/27] chore: incrementing version number - v2.5.7 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index d2f62a4076..9428775781 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "2.5.6", + "version": "2.5.7", "homepage": "http://www.nodebb.org", "repository": { "type": "git", From 17e948abf797ddf531a674145b174084c84c6b10 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Fri, 14 Oct 2022 15:59:58 +0000 Subject: [PATCH 24/27] chore: update changelog for v2.5.7 --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a3ab3471..50531c9433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +#### v2.5.7 (2022-10-14) + +##### Chores + +* incrementing version number - v2.5.6 (c7bd7dbf) +* update changelog for v2.5.6 (e92238d0) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Performance Improvements + +* speed up build (dd4e9cce) + #### v2.5.6 (2022-10-13) ##### Chores From 09cfd0bd57ad3b5464d3d98cca2837bf21475e88 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 21 Sep 2022 11:56:58 -0400 Subject: [PATCH 25/27] fix: use `--omit=dev` flag for npm instead of `--production` --- src/cli/package-install.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/package-install.js b/src/cli/package-install.js index b3b5544bb4..eea93e5d9e 100644 --- a/src/cli/package-install.js +++ b/src/cli/package-install.js @@ -120,7 +120,7 @@ pkgInstall.installAll = () => { command = `cnpm install ${prod ? ' --production' : ''}`; break; default: - command += prod ? ' --production' : ''; + command += prod ? ' --omit=dev' : ''; break; } } From 7672194c7ce513817cf5971a5b5f11017d380268 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 17 Oct 2022 16:13:04 -0400 Subject: [PATCH 26/27] fix: correctly pass dev flag to package installer --- src/cli/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cli/index.js b/src/cli/index.js index 86bfc127b4..b1ce151f4c 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -267,6 +267,10 @@ program ].join('\n')}`); }) .action((scripts, options) => { + if (program.opts().dev) { + process.env.NODE_ENV = 'development'; + global.env = 'development'; + } require('./upgrade').upgrade(scripts.length ? scripts : true, options); }); From 09f3ac6574b3192497df0403306aff8d6f20448b Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 17 Oct 2022 16:48:03 -0400 Subject: [PATCH 27/27] fix: in appropriately named language key `email-confirm-email2` --- public/language/ar/admin/settings/user.json | 2 +- public/language/bg/admin/settings/user.json | 2 +- public/language/bn/admin/settings/user.json | 2 +- public/language/cs/admin/settings/user.json | 2 +- public/language/da/admin/settings/user.json | 2 +- public/language/de/admin/settings/user.json | 2 +- public/language/el/admin/settings/user.json | 2 +- public/language/en-GB/admin/settings/user.json | 2 +- public/language/en-US/admin/settings/user.json | 2 +- public/language/en-x-pirate/admin/settings/user.json | 2 +- public/language/es/admin/settings/user.json | 2 +- public/language/et/admin/settings/user.json | 2 +- public/language/fa-IR/admin/settings/user.json | 2 +- public/language/fi/admin/settings/user.json | 2 +- public/language/fr/admin/settings/user.json | 2 +- public/language/gl/admin/settings/user.json | 2 +- public/language/he/admin/settings/user.json | 2 +- public/language/hr/admin/settings/user.json | 2 +- public/language/hu/admin/settings/user.json | 2 +- public/language/id/admin/settings/user.json | 2 +- public/language/it/admin/settings/user.json | 2 +- public/language/ja/admin/settings/user.json | 2 +- public/language/ko/admin/settings/user.json | 2 +- public/language/lt/admin/settings/user.json | 2 +- public/language/lv/admin/settings/user.json | 2 +- public/language/ms/admin/settings/user.json | 2 +- public/language/nb/admin/settings/user.json | 2 +- public/language/nl/admin/settings/user.json | 2 +- public/language/pl/admin/settings/user.json | 2 +- public/language/pt-BR/admin/settings/user.json | 2 +- public/language/pt-PT/admin/settings/user.json | 2 +- public/language/ro/admin/settings/user.json | 2 +- public/language/ru/admin/settings/user.json | 2 +- public/language/rw/admin/settings/user.json | 2 +- public/language/sc/admin/settings/user.json | 2 +- public/language/sk/admin/settings/user.json | 2 +- public/language/sl/admin/settings/user.json | 2 +- public/language/sq-AL/admin/settings/user.json | 2 +- public/language/sr/admin/settings/user.json | 2 +- public/language/sv/admin/settings/user.json | 2 +- public/language/th/admin/settings/user.json | 2 +- public/language/tr/admin/settings/user.json | 2 +- public/language/uk/admin/settings/user.json | 2 +- public/language/vi/admin/settings/user.json | 2 +- public/language/zh-CN/admin/settings/user.json | 2 +- public/language/zh-TW/admin/settings/user.json | 2 +- src/views/admin/settings/user.tpl | 2 +- 47 files changed, 47 insertions(+), 47 deletions(-) diff --git a/public/language/ar/admin/settings/user.json b/public/language/ar/admin/settings/user.json index 6d50f5546f..4c6829de8f 100644 --- a/public/language/ar/admin/settings/user.json +++ b/public/language/ar/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "المصادقة", "email-confirm-interval": "لا يمكن للمستخدم إعادة إرسال رسالة تأكيد البريد الالكتروني حتى مرور", - "email-confirm-email2": "دقائق", + "email-confirm-interval2": "دقائق", "allow-login-with": "السماح بتسجيل الدخول باستخدام", "allow-login-with.username-email": "اسم المستخدم أو البريد الالكتروني", "allow-login-with.username": "اسم المستخدم فقط", diff --git a/public/language/bg/admin/settings/user.json b/public/language/bg/admin/settings/user.json index ba1c939c20..af5aa57464 100644 --- a/public/language/bg/admin/settings/user.json +++ b/public/language/bg/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Удостоверяване", "email-confirm-interval": "Потребителят не може да изпраща повторно е-писмото за потвърждение, преди да са минали", - "email-confirm-email2": "минути", + "email-confirm-interval2": "минути", "allow-login-with": "Позволяване на вписването чрез", "allow-login-with.username-email": "Потребителско име или е-поща", "allow-login-with.username": "Само потребителско име", diff --git a/public/language/bn/admin/settings/user.json b/public/language/bn/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/bn/admin/settings/user.json +++ b/public/language/bn/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/cs/admin/settings/user.json b/public/language/cs/admin/settings/user.json index 78ecdda921..6e10f3f8c4 100644 --- a/public/language/cs/admin/settings/user.json +++ b/public/language/cs/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Ověření", "email-confirm-interval": "Uživatel nesmí požádat o znovu zaslání potvrzujícího e-mailu do", - "email-confirm-email2": "minut uplynulo", + "email-confirm-interval2": "minut uplynulo", "allow-login-with": "Povolit přihlášení pomocí", "allow-login-with.username-email": "Uživatelské jméno nebo e-mail", "allow-login-with.username": "Pouze uživatelské jméno", diff --git a/public/language/da/admin/settings/user.json b/public/language/da/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/da/admin/settings/user.json +++ b/public/language/da/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/de/admin/settings/user.json b/public/language/de/admin/settings/user.json index a2ea87a8e0..e89b47c755 100644 --- a/public/language/de/admin/settings/user.json +++ b/public/language/de/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentifizierung", "email-confirm-interval": "Der Benutzer kann für ", - "email-confirm-email2": " Minuten keine Bestätigungsmail erneut senden.", + "email-confirm-interval2": " Minuten keine Bestätigungsmail erneut senden.", "allow-login-with": "Erlaube Login mit", "allow-login-with.username-email": "Benutzername oder E-Mail", "allow-login-with.username": "Nur Benutzername", diff --git a/public/language/el/admin/settings/user.json b/public/language/el/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/el/admin/settings/user.json +++ b/public/language/el/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/en-GB/admin/settings/user.json b/public/language/en-GB/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/en-GB/admin/settings/user.json +++ b/public/language/en-GB/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/en-US/admin/settings/user.json b/public/language/en-US/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/en-US/admin/settings/user.json +++ b/public/language/en-US/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/en-x-pirate/admin/settings/user.json b/public/language/en-x-pirate/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/en-x-pirate/admin/settings/user.json +++ b/public/language/en-x-pirate/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/es/admin/settings/user.json b/public/language/es/admin/settings/user.json index b3bd1c340e..14c840f44c 100644 --- a/public/language/es/admin/settings/user.json +++ b/public/language/es/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticación", "email-confirm-interval": "El usuario no puede re-enviar una confirmación por email hasta", - "email-confirm-email2": "minutos han pasado", + "email-confirm-interval2": "minutos han pasado", "allow-login-with": "Permitir login con", "allow-login-with.username-email": "Nombre de usuario o Email", "allow-login-with.username": "Solo Nombre de Usuario", diff --git a/public/language/et/admin/settings/user.json b/public/language/et/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/et/admin/settings/user.json +++ b/public/language/et/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/fa-IR/admin/settings/user.json b/public/language/fa-IR/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/fa-IR/admin/settings/user.json +++ b/public/language/fa-IR/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/fi/admin/settings/user.json b/public/language/fi/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/fi/admin/settings/user.json +++ b/public/language/fi/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/fr/admin/settings/user.json b/public/language/fr/admin/settings/user.json index 5a0cfba2f1..a6e6c9f25f 100644 --- a/public/language/fr/admin/settings/user.json +++ b/public/language/fr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentification", "email-confirm-interval": "Les utilisateurs ne peuvent pas demander un e-mail de vérification avant", - "email-confirm-email2": "minutes se sont écoulées", + "email-confirm-interval2": "minutes se sont écoulées", "allow-login-with": "Autoriser l'identification avec", "allow-login-with.username-email": "Nom d'utilisateur ou e-mail", "allow-login-with.username": "Nom d'utilisateur uniquement", diff --git a/public/language/gl/admin/settings/user.json b/public/language/gl/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/gl/admin/settings/user.json +++ b/public/language/gl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/he/admin/settings/user.json b/public/language/he/admin/settings/user.json index 141edb7a99..6c3ce0caae 100644 --- a/public/language/he/admin/settings/user.json +++ b/public/language/he/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "אימות", "email-confirm-interval": "המשתמש לא יוכל לשלוח הודעת אישור מייל עד שיחלוף", - "email-confirm-email2": "דקות", + "email-confirm-interval2": "דקות", "allow-login-with": "אפשר התחברות עם", "allow-login-with.username-email": "שם משתמש או סיסמא", "allow-login-with.username": "שם משתמש בלבד", diff --git a/public/language/hr/admin/settings/user.json b/public/language/hr/admin/settings/user.json index 9c402358cc..43c20bfdb1 100644 --- a/public/language/hr/admin/settings/user.json +++ b/public/language/hr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentifikacija", "email-confirm-interval": "Korisnik ne može ponovno poslati potvrdni email do ", - "email-confirm-email2": "prošlo je minuta", + "email-confirm-interval2": "prošlo je minuta", "allow-login-with": "Dozvoli prijavu sa", "allow-login-with.username-email": "Korisničko ime ili Email", "allow-login-with.username": "Korisničko ime", diff --git a/public/language/hu/admin/settings/user.json b/public/language/hu/admin/settings/user.json index ea1a2df882..3db2f70226 100644 --- a/public/language/hu/admin/settings/user.json +++ b/public/language/hu/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Hitelesítés", "email-confirm-interval": "A felhasználó nem küldetheti újra az emailt ameddig nem telt el", - "email-confirm-email2": "perc", + "email-confirm-interval2": "perc", "allow-login-with": "Bejelentkezés engedélyezése ezzel:", "allow-login-with.username-email": "Felhasználónév vagy email cím", "allow-login-with.username": "Csak felhasználónév", diff --git a/public/language/id/admin/settings/user.json b/public/language/id/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/id/admin/settings/user.json +++ b/public/language/id/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/it/admin/settings/user.json b/public/language/it/admin/settings/user.json index e997d8791d..e3d5969aa6 100644 --- a/public/language/it/admin/settings/user.json +++ b/public/language/it/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticazione", "email-confirm-interval": "L'utente non può mandare una nuova email di conferma fino a", - "email-confirm-email2": "minuti trascorsi", + "email-confirm-interval2": "minuti trascorsi", "allow-login-with": "Consenti l'accesso con", "allow-login-with.username-email": "Username o Email", "allow-login-with.username": "Solo Username", diff --git a/public/language/ja/admin/settings/user.json b/public/language/ja/admin/settings/user.json index f4f7db2de5..cac5496aba 100644 --- a/public/language/ja/admin/settings/user.json +++ b/public/language/ja/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "認証", "email-confirm-interval": "ユーザーが確認するまでEメールを再送信しない", - "email-confirm-email2": "分経過", + "email-confirm-interval2": "分経過", "allow-login-with": "ログインを許可", "allow-login-with.username-email": "ユーザー名または電子メール", "allow-login-with.username": "ユーザー名のみ", diff --git a/public/language/ko/admin/settings/user.json b/public/language/ko/admin/settings/user.json index 638d2cf967..01d7ea0ec3 100644 --- a/public/language/ko/admin/settings/user.json +++ b/public/language/ko/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "인증", "email-confirm-interval": "사용자는", - "email-confirm-email2": "분이 지나기 전까지 인증 메일 재요청이 불가능합니다.", + "email-confirm-interval2": "분이 지나기 전까지 인증 메일 재요청이 불가능합니다.", "allow-login-with": "로그인 허용 수단", "allow-login-with.username-email": "사용자명 또는 이메일", "allow-login-with.username": "사용자명", diff --git a/public/language/lt/admin/settings/user.json b/public/language/lt/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/lt/admin/settings/user.json +++ b/public/language/lt/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/lv/admin/settings/user.json b/public/language/lv/admin/settings/user.json index 2a70ebf04b..78653597fd 100644 --- a/public/language/lv/admin/settings/user.json +++ b/public/language/lv/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentifikācija", "email-confirm-interval": "Lietotājs nevar atkārtoti nosūtīt apstiprinājuma e-pastu pirms", - "email-confirm-email2": "minūtes nav pagājušas", + "email-confirm-interval2": "minūtes nav pagājušas", "allow-login-with": "Ielogoties", "allow-login-with.username-email": "Ar lietotājvārdu vai e-pasta adresi", "allow-login-with.username": "Tikai ar lietotājvārdu", diff --git a/public/language/ms/admin/settings/user.json b/public/language/ms/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/ms/admin/settings/user.json +++ b/public/language/ms/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/nb/admin/settings/user.json b/public/language/nb/admin/settings/user.json index 42b878793a..47b00c8486 100644 --- a/public/language/nb/admin/settings/user.json +++ b/public/language/nb/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentisering ", "email-confirm-interval": "Brukeren kan ikke sende en bekreftelses-e-post på nytt før", - "email-confirm-email2": "minutter har gått", + "email-confirm-interval2": "minutter har gått", "allow-login-with": "Tillat innlogging med", "allow-login-with.username-email": "Brukernavn eller e-post", "allow-login-with.username": "Kun brukernavn", diff --git a/public/language/nl/admin/settings/user.json b/public/language/nl/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/nl/admin/settings/user.json +++ b/public/language/nl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/pl/admin/settings/user.json b/public/language/pl/admin/settings/user.json index 23dbe2c050..e019daa806 100644 --- a/public/language/pl/admin/settings/user.json +++ b/public/language/pl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Uwierzytelnianie", "email-confirm-interval": "Użytkownik nie może ponownie wysłać e-maila z potwierdzeniem, dopóki nie minie", - "email-confirm-email2": "minut", + "email-confirm-interval2": "minut", "allow-login-with": "Zezwalaj na logowanie przy użyciu", "allow-login-with.username-email": "Nazwy użytkownika lub adresu email", "allow-login-with.username": "Tylko nazwy użytkownika", diff --git a/public/language/pt-BR/admin/settings/user.json b/public/language/pt-BR/admin/settings/user.json index 55faa80564..a5b0a196a8 100644 --- a/public/language/pt-BR/admin/settings/user.json +++ b/public/language/pt-BR/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticação", "email-confirm-interval": "O usuário não pode reenviar um e-mail de confirmação até", - "email-confirm-email2": "minutos decorridos", + "email-confirm-interval2": "minutos decorridos", "allow-login-with": "Permitir login com", "allow-login-with.username-email": "Nome de Usuário ou E-mail", "allow-login-with.username": "Apenas Nome de Usuário", diff --git a/public/language/pt-PT/admin/settings/user.json b/public/language/pt-PT/admin/settings/user.json index 68d8cb644e..29a086a557 100644 --- a/public/language/pt-PT/admin/settings/user.json +++ b/public/language/pt-PT/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticação", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Permitir início de sessão com", "allow-login-with.username-email": "Nome de Utilizador ou E-mail", "allow-login-with.username": "Nome de Utilizador Apenas", diff --git a/public/language/ro/admin/settings/user.json b/public/language/ro/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/ro/admin/settings/user.json +++ b/public/language/ro/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/ru/admin/settings/user.json b/public/language/ru/admin/settings/user.json index 3cdaa8955b..357396a153 100644 --- a/public/language/ru/admin/settings/user.json +++ b/public/language/ru/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Авторизация", "email-confirm-interval": "Пользователь не сможет снова запросить код подтверждения, пока не пройдёт", - "email-confirm-email2": "минут", + "email-confirm-interval2": "минут", "allow-login-with": "Разрешить вход с помощью", "allow-login-with.username-email": "Имени пользователя или адреса электронной почты", "allow-login-with.username": "Только имени пользователя", diff --git a/public/language/rw/admin/settings/user.json b/public/language/rw/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/rw/admin/settings/user.json +++ b/public/language/rw/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/sc/admin/settings/user.json b/public/language/sc/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/sc/admin/settings/user.json +++ b/public/language/sc/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/sk/admin/settings/user.json b/public/language/sk/admin/settings/user.json index 58a2f039b1..0c3cddcb0a 100644 --- a/public/language/sk/admin/settings/user.json +++ b/public/language/sk/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Overenie", "email-confirm-interval": "Používateľ nesmie požiadať o znovu odoslanie potvrdzujúceho e-mailu do", - "email-confirm-email2": "minút uplynulo", + "email-confirm-interval2": "minút uplynulo", "allow-login-with": "Povoliť prihlásenie pomocou", "allow-login-with.username-email": "Používateľské meno alebo e-mail", "allow-login-with.username": "Iba používateľské meno", diff --git a/public/language/sl/admin/settings/user.json b/public/language/sl/admin/settings/user.json index 5f8505be91..31a7f090c0 100644 --- a/public/language/sl/admin/settings/user.json +++ b/public/language/sl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Preverjanje pristnosti", "email-confirm-interval": "Uporabnik morda ne bo mogel znova poslati potrditvenega e-poštnega sporočila, dokler", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Dovoli prijavo z", "allow-login-with.username-email": "Uporabniško ime ali e-poštni naslov", "allow-login-with.username": "Samo uporabniško ime", diff --git a/public/language/sq-AL/admin/settings/user.json b/public/language/sq-AL/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/sq-AL/admin/settings/user.json +++ b/public/language/sq-AL/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/sr/admin/settings/user.json b/public/language/sr/admin/settings/user.json index b4d65fef62..c8fc77bfd9 100644 --- a/public/language/sr/admin/settings/user.json +++ b/public/language/sr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Auntentifikacija", "email-confirm-interval": "Korisnik možda neće moći da ponovo pošalje email konfirmaciju sve dok", - "email-confirm-email2": "minuta je prošlo", + "email-confirm-interval2": "minuta je prošlo", "allow-login-with": "Dozvoli login sa", "allow-login-with.username-email": "Korisničko ime ili Email", "allow-login-with.username": "Samo korisničko ime", diff --git a/public/language/sv/admin/settings/user.json b/public/language/sv/admin/settings/user.json index 566cff02dc..1d5d460472 100644 --- a/public/language/sv/admin/settings/user.json +++ b/public/language/sv/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/th/admin/settings/user.json b/public/language/th/admin/settings/user.json index ef21e7a864..2ed52e4742 100644 --- a/public/language/th/admin/settings/user.json +++ b/public/language/th/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentication", "email-confirm-interval": "User may not resend a confirmation email until", - "email-confirm-email2": "minutes have elapsed", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Allow login with", "allow-login-with.username-email": "Username or Email", "allow-login-with.username": "Username Only", diff --git a/public/language/tr/admin/settings/user.json b/public/language/tr/admin/settings/user.json index 0c27f44b91..9c40e644a7 100644 --- a/public/language/tr/admin/settings/user.json +++ b/public/language/tr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Kimlik Doğrulama", "email-confirm-interval": "Kullanıcı onay e-postasını tekrar gönderemez", - "email-confirm-email2": "dakika geçti", + "email-confirm-interval2": "dakika geçti", "allow-login-with": "Girişe izin ver:", "allow-login-with.username-email": "Kullanıcı Adı veya E-posta", "allow-login-with.username": "Sadece kullanıcı adı", diff --git a/public/language/uk/admin/settings/user.json b/public/language/uk/admin/settings/user.json index 126c831d45..29a4291d57 100644 --- a/public/language/uk/admin/settings/user.json +++ b/public/language/uk/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Аутентифікація", "email-confirm-interval": "Користувач не може повторно надіслати підтвердження електронної пошти поки не мине", - "email-confirm-email2": "хвилин", + "email-confirm-interval2": "хвилин", "allow-login-with": "Дозволити вхід використовуючи", "allow-login-with.username-email": "Ім'я користувача або електронну пошту", "allow-login-with.username": "Тільки ім'я користувача", diff --git a/public/language/vi/admin/settings/user.json b/public/language/vi/admin/settings/user.json index beed174c86..6aa242566f 100644 --- a/public/language/vi/admin/settings/user.json +++ b/public/language/vi/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Xác thực", "email-confirm-interval": "Người dùng không thể gửi lại email xác nhận cho đến khi", - "email-confirm-email2": "phút đã trôi qua", + "email-confirm-interval2": "phút đã trôi qua", "allow-login-with": "Cho phép đăng nhập với", "allow-login-with.username-email": "Tên Đăng Nhập hoặc Email", "allow-login-with.username": "Chỉ Tên Đăng Nhập", diff --git a/public/language/zh-CN/admin/settings/user.json b/public/language/zh-CN/admin/settings/user.json index 28e6e94305..2eef5b6245 100644 --- a/public/language/zh-CN/admin/settings/user.json +++ b/public/language/zh-CN/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "验证", "email-confirm-interval": "用户无法重新发送电子邮箱激活直到", - "email-confirm-email2": "分钟已经过", + "email-confirm-interval2": "分钟已经过", "allow-login-with": "允许使用何种登录名", "allow-login-with.username-email": "用户名或者邮箱", "allow-login-with.username": "仅限用户名", diff --git a/public/language/zh-TW/admin/settings/user.json b/public/language/zh-TW/admin/settings/user.json index 2189f063a7..3af23f0a2b 100644 --- a/public/language/zh-TW/admin/settings/user.json +++ b/public/language/zh-TW/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "驗證", "email-confirm-interval": "使用者無法重新發送電子信箱確認信直到", - "email-confirm-email2": "分鐘已經過", + "email-confirm-interval2": "分鐘已經過", "allow-login-with": "允許使用何種登入名", "allow-login-with.username-email": "使用者名或者電子信箱", "allow-login-with.username": "僅限使用者名", diff --git a/src/views/admin/settings/user.tpl b/src/views/admin/settings/user.tpl index d49788c68b..dbc9ca0544 100644 --- a/src/views/admin/settings/user.tpl +++ b/src/views/admin/settings/user.tpl @@ -8,7 +8,7 @@ - +