diff --git a/CHANGELOG.md b/CHANGELOG.md
index 425a480f12..312cd0d726 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,15 +1,113 @@
+#### v2.5.2 (2022-09-04)
+
+##### Chores
+
+* incrementing version number - v2.5.1 (ce3aa950)
+* update changelog for v2.5.1 (2b2fd4f3)
+
+##### Bug Fixes
+
+* registration regression, closes #10875 (f6f37dc1)
+
+##### Other Changes
+
+* fix lint error (b45e2413)
+
+##### Tests
+
+* disable nbbpm test temporarily (1dc79d76)
+
+#### v2.5.1 (2022-09-02)
+
+##### Chores
+
+* incrementing version number - v2.5.0 (01d276cb)
+* update changelog for v2.5.0 (1076285d)
+
+##### Bug Fixes
+
+* missing escape on ACP category backgroundImage property (67cb7035)
+* **deps:** temporarily add back old textcomplete dependencies so emoji plugin can import them (61d1e9e0)
+
+#### v2.5.0 (2022-09-01)
+
+##### Breaking Changes
+
+* reduce nodebb.min.js size by around 800kb (b7addffc)
+
+##### Chores
+
+* **i18n:**
+ * fallback strings for new resources: nodebb.admin-settings-reputation (e20433ec)
+ * fallback strings for new resources: nodebb.admin-settings-post (fcbbb4d6)
+ * fallback strings for new resources: nodebb.admin-advanced-cache (90fc50e1)
+* move @textcomplete and its modules to composer-default (3cbb7a3d)
+* remove client-side js file for tpl that no longer exists (bc2ea860)
+* incrementing version number - v2.4.5 (dd3e1a28)
+* update changelog for v2.4.5 (d505cc47)
+
+* **deps:**
+ * update dependency eslint to v8.22.0 (#10835) (8fce68d3)
+ * update mongo docker tag to v3.7 (8afaed22)
+ * update docker/setup-qemu-action action to v2 (4aecf399)
+ * update redis docker tag to v2.8.23 (#10811) (269382e0)
+ * update redis docker tag to v2.8.23 (#10811) (59fd0efe)
+
+##### Documentation Changes
+
+* **openapi:** v3 spec for new user export routes (70652ad4)
+
+##### New Features
+
+* remove visibilityjs (#10870) (19207325)
+* introduce ACP defined option to rescind notif or do nothing on flag resolve/reject (15b1561f)
+* allow v3 api to handle 202 and 204 response codes as well. (0cda5aa3)
+* don't show signatures again in pagination mode in same topic (0a6900fc)
+* setting to show signatures only once in topics, closes #10071 (aba420a3)
+* add event type to topic event component (bcb94ede)
+* allow plugins to add to admin cache list (#10833) (a9bbb586)
+
+##### Bug Fixes
+
+* **deps:**
+ * update dependency compare-versions to v4.1.4 (884d4075)
+ * update dependency mongodb to v4.9.0 (e51004e2)
+ * update dependency lru-cache to v7.14.0 (d8a52f81)
+ * bump composer-default to v9 (81f8d84f)
+ * remove textcomplete in favour of @textcomplete/core (same package, just refactored) (b7bcc367)
+ * update dependency nodebb-theme-persona to v12.1.1 (#10838) (444b4d57)
+ * update dependency ace-builds to v1.9.5 (4c44d125)
+ * update dependency lru-cache to v7.13.2 (4ddc0c7a)
+ * update dependency nodemailer to v6.7.8 (dd385184)
+ * pin dependency @isaacs/ttlcache to 1.2.0 (150a7488)
+ * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (9a7dd3a3)
+ * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (69c87c2c)
+* empty thread tools container on open (a088eb19)
+* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (c1936e87)
+* empty thread tools container on open (df36d967)
+* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (3dd3cd82)
+* removing duplicate session rerolling code (as it is in passport@^0.6 now) (65b3996a)
+* don't crash if post is undefined (e06e526e)
+* return at least one in sizeCalculation (#10832) (3975fa2e)
+
+##### Refactors
+
+* remove console.log (a2d0cd16)
+* move export generation logic to v3 controller, GET/HEAD routes for exports (d0570518)
+* use group.slug on acp group urls closes #8277 (14c79763)
+
+##### Tests
+
+* have some build tests not pollute build folder (7c5a915d)
+* User.hidePrivateData (b424ba46)
+* passport0.6 (#10638) (33458701)
+
#### v2.4.5 (2022-08-22)
##### Chores
* incrementing version number - v2.4.4 (d5525c87)
* update changelog for v2.4.4 (77e492b8)
-* 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
@@ -22,11 +120,6 @@
* incrementing version number - v2.4.3 (9c647c6c)
* update changelog for v2.4.3 (06da15a5)
-* 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
@@ -38,10 +131,6 @@
* incrementing version number - v2.4.2 (3aa7b855)
* update changelog for v2.4.2 (ba7a3466)
-* 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
@@ -53,9 +142,6 @@
* incrementing version number - v2.4.1 (60cbd148)
* update changelog for v2.4.1 (4b6baabb)
-* incrementing version number - v2.4.0 (4834cde3)
-* incrementing version number - v2.3.1 (d2425942)
-* incrementing version number - v2.3.0 (046ea120)
##### Documentation Changes
@@ -80,8 +166,6 @@
* update docker/setup-buildx-action action to v2 (371ac032)
* incrementing version number - v2.4.0 (4834cde3)
* update changelog for v2.4.0 (c4714ff7)
-* incrementing version number - v2.3.1 (d2425942)
-* incrementing version number - v2.3.0 (046ea120)
##### Bug Fixes
@@ -99,7 +183,6 @@
* opt-out of dependabot, due to conflicts with renovate (70d60289)
* incrementing version number - v2.3.1 (d2425942)
* update changelog for v2.3.1 (2f487175)
-* incrementing version number - v2.3.0 (046ea120)
* **i18n:**
* fallback strings for new resources: nodebb.admin-settings-email (cdaa8f21)
* fallback strings for new resources: nodebb.admin-settings-email (3e56c547)
diff --git a/install/package.json b/install/package.json
index 4a6b7e2063..e19ddc4695 100644
--- a/install/package.json
+++ b/install/package.json
@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
- "version": "2.4.5",
+ "version": "2.5.2",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -89,7 +89,7 @@
"multiparty": "4.2.3",
"nconf": "0.12.0",
"nodebb-plugin-2factor": "5.0.2",
- "nodebb-plugin-composer-default": "9.1.0",
+ "nodebb-plugin-composer-default": "9.2.0",
"nodebb-plugin-dbsearch": "5.1.5",
"nodebb-plugin-emoji": "4.0.4",
"nodebb-plugin-emoji-android": "3.0.0",
@@ -131,12 +131,13 @@
"sortablejs": "1.15.0",
"spdx-license-list": "6.6.0",
"spider-detector": "2.0.0",
+ "textcomplete": "0.18.2",
+ "textcomplete.contenteditable": "0.1.1",
"timeago": "1.6.7",
"tinycon": "0.6.8",
"toobusy-js": "0.5.1",
"uglify-es": "3.3.9",
"validator": "13.7.0",
- "visibilityjs": "2.0.2",
"webpack": "5.74.0",
"webpack-merge": "5.8.0",
"winston": "3.8.1",
diff --git a/public/language/fr/admin/advanced/cache.json b/public/language/fr/admin/advanced/cache.json
index 6dd4647282..130034e50e 100644
--- a/public/language/fr/admin/advanced/cache.json
+++ b/public/language/fr/admin/advanced/cache.json
@@ -1,8 +1,8 @@
{
"post-cache": "Cache des messages",
- "group-cache": "Group Cache",
- "local-cache": "Local Cache",
- "object-cache": "Object Cache",
+ "group-cache": "Cache de groupe",
+ "local-cache": "Cache Local",
+ "object-cache": "Cache d'objets",
"percent-full": "Plein à %1%",
"post-cache-size": "Taille du cache des messages",
"items-in-cache": "Objets en cache"
diff --git a/public/language/fr/admin/menu.json b/public/language/fr/admin/menu.json
index e5f477dc00..c24c461f4e 100644
--- a/public/language/fr/admin/menu.json
+++ b/public/language/fr/admin/menu.json
@@ -76,7 +76,7 @@
"logout": "Déconnexion ",
"view-forum": "Voir le forum",
- "search.placeholder": "Search settings",
+ "search.placeholder": "Paramètres de recherche",
"search.no-results": "Aucun résultat…",
"search.search-forum": "Rechercher dans le forum",
"search.keep-typing": "Continuez de taper pour afficher les résultats…",
diff --git a/public/language/fr/admin/settings/email.json b/public/language/fr/admin/settings/email.json
index 9ec14a9f3f..3d3a4b8f4f 100644
--- a/public/language/fr/admin/settings/email.json
+++ b/public/language/fr/admin/settings/email.json
@@ -10,10 +10,10 @@
"smtp-transport-help": "Vous pouvez sélectionner depuis une liste de services ou entrer un service personnalisé.",
"smtp-transport.service": "Sélectionner un service",
"smtp-transport.service-custom": "Service personnalisé",
- "smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select "Custom Service" and enter the details below.",
- "smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an "App Password" in order for NodeBB to authenticate successfully. You can generate one at the App Passwords page.",
- "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.",
- "smtp-transport.auto-enable-toast": "It looks like you're configuring an SMTP transport. We enabled the \"SMTP Transport\" option for you.",
+ "smtp-transport.service-help": "Sélectionnez un nom de service ci-dessus afin d'utiliser les informations connues à son sujet. Vous pouvez également sélectionner "Service personnalisé" et entrez les détails ci-dessous.",
+ "smtp-transport.gmail-warning1": "Si vous utilisez GMail comme fournisseur de messagerie, vous devrez générer un "mot de passe d'application" afin que NodeBB s'authentifie avec succès. Vous pouvez en générer un sur la page Mots de passe .",
+ "smtp-transport.gmail-warning2": "Pour plus d'informations sur cette solution de contournement, veuillez consulter cet article de NodeMailer sur le problème. Une alternative serait d'utiliser un plug-in tiers d'e-mail tel que SendGrid, Mailgun, etc. Parcourez les plug-ins disponibles ici.",
+ "smtp-transport.auto-enable-toast": "Il semble que vous configuriez un serveur SMTP. Nous avons activé l'option \" SMTP\" pour vous.",
"smtp-transport.host": "Host SMTP",
"smtp-transport.port": "Port SMTP",
"smtp-transport.security": "Accès sécurisé",
diff --git a/public/language/fr/admin/settings/post.json b/public/language/fr/admin/settings/post.json
index f69070d3e5..9546189788 100644
--- a/public/language/fr/admin/settings/post.json
+++ b/public/language/fr/admin/settings/post.json
@@ -51,7 +51,7 @@
"signature.disable": "Désactiver les signatures",
"signature.no-links": "Désactiver les liens en signature",
"signature.no-images": "Désactiver les images en signature ",
- "signature.hide-duplicates": "Hide duplicate signatures in topics",
+ "signature.hide-duplicates": "Masquer les signatures en double dans les sujets",
"signature.max-length": "Longueur maximum des signatures",
"composer": "Paramètres Composer",
"composer-help": "Les réglages suivants permettent de choisir les fonctionnalités et/ou l'apparence du composeur de message affiché\n\t\t\t\ttaux utilisateurs quand ils créent de nouveaux sujets ou répondent à des sujets existants.",
diff --git a/public/language/fr/admin/settings/reputation.json b/public/language/fr/admin/settings/reputation.json
index c8e5adbc54..a888590efc 100644
--- a/public/language/fr/admin/settings/reputation.json
+++ b/public/language/fr/admin/settings/reputation.json
@@ -24,8 +24,8 @@
"flags.limit-per-target-help": "Lorsqu'un message ou un utilisateur a été signalé plusieurs fois, chaque indicateur supplémentaire est considéré comme un \"rapport\". et ajouté au signalement d'origine. Définissez cette option sur un nombre autre que zéro pour limiter le nombre de rapports qu'un signalement peut admettre.",
"flags.auto-flag-on-downvote-threshold": "Nombre de votes négatifs pour les signalements (0 pour désactiver, par défaut : 0)",
"flags.auto-resolve-on-ban": "Résoudre automatiquement tous les tickets d'un utilisateur lorsqu'il est banni",
- "flags.action-on-resolve": "Do the following when a flag is resolved",
- "flags.action-on-reject": "Do the following when a flag is rejected",
- "flags.action.nothing": "Do nothing",
- "flags.action.rescind": "Rescind the notification send to moderators/administrators"
+ "flags.action-on-resolve": "Procédez comme suit lorsqu'un signalement est résolu",
+ "flags.action-on-reject": "Procédez comme suit lorsqu'un signalement est rejeté",
+ "flags.action.nothing": "Ne rien faire",
+ "flags.action.rescind": "Annuler la notification envoyée aux modérateurs/administrateurs"
}
\ No newline at end of file
diff --git a/public/language/fr/admin/settings/uploads.json b/public/language/fr/admin/settings/uploads.json
index 03fb1d47c1..86384a3acc 100644
--- a/public/language/fr/admin/settings/uploads.json
+++ b/public/language/fr/admin/settings/uploads.json
@@ -5,7 +5,7 @@
"strip-exif-data": "Supprimer les données EXIF",
"preserve-orphaned-uploads": "Conserver les fichiers téléchargés après la suppression d'une publication.",
"orphanExpiryDays": "Jours pour garder les fichiers orphelins",
- "orphanExpiryDays-help": "After this many days, orphaned uploads will be deleted from the file system.
Set 0 or leave blank to disable.",
+ "orphanExpiryDays-help": "Les téléchargements orphelins seront supprimés du système de fichiers après ce délai :
Changer 0 Laissez vide pour désactiver.",
"private-extensions": "Rendre privé des extensions de fichier.",
"private-uploads-extensions-help": "Renseignez ici une liste d'extensions de fichiers séparées par des virgules pour les rendre privées (par exemple : pdf, xls, doc). Une liste vide signifie que tous les fichiers sont privés.",
"resize-image-width-threshold": "Redimensionner les images si elles sont plus larges que la largeur spécifiée",
diff --git a/public/language/fr/error.json b/public/language/fr/error.json
index 6c8ad20a24..ba75c58a9e 100644
--- a/public/language/fr/error.json
+++ b/public/language/fr/error.json
@@ -205,8 +205,8 @@
"no-connection": "Il semble y avoir un problème avec votre connexion Internet",
"socket-reconnect-failed": "Serveur inaccessible pour le moment. Cliquez ici pour réessayer ou réessayez plus tard",
"plugin-not-whitelisted": "Impossible d'installer le plug-in – seuls les plugins mis en liste blanche dans le gestionnaire de packages NodeBB peuvent être installés via l'ACP",
- "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
- "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",
+ "plugins-set-in-configuration": "Vous n'êtes pas autorisé à modifier l'état des plugins car ils sont définis au moment de l'exécution (config.json, variables d'environnement ou arguments de terminal), veuillez plutôt modifier la configuration.",
+ "theme-not-set-in-configuration": "Lors de la définition des plugins actifs, le changement de thèmes nécessite d'ajouter le nouveau thème à la liste des plugins actifs avant de le mettre à jour dans l'ACP",
"topic-event-unrecognized": "Événement du sujet '%1' non reconnu",
"cant-set-child-as-parent": "Cette catégorie ne peut être une catégorie principale",
"cant-set-self-as-parent": "Ne peut être définie comme catégorie principale",
diff --git a/public/language/fr/user.json b/public/language/fr/user.json
index 8ad069194c..bdede19408 100644
--- a/public/language/fr/user.json
+++ b/public/language/fr/user.json
@@ -195,5 +195,5 @@
"emailUpdate.optional": "Ce champ est facultatif. Vous n'êtes pas obligé de fournir votre adresse e-mail, mais sans e-mail validé, vous ne pourrez pas récupérer votre compte ou vous connecter avec votre e-mail.",
"emailUpdate.required": "Ce champ est requis.",
"emailUpdate.change-instructions": "Un mail de confirmation sera envoyé à l'adresse mail saisie avec un lien unique. L'accès à ce lien confirmera votre propriété de mail et elle deviendra active sur votre compte. À tout moment, vous pouvez mettre à jour votre mail enregistré depuis la page de votre compte.",
- "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership."
+ "emailUpdate.password-challenge": "Veuillez entrer votre mot de passe pour confirmer la propriété du compte."
}
\ No newline at end of file
diff --git a/public/language/he/topic.json b/public/language/he/topic.json
index e9f6dc897d..f36bf4277e 100644
--- a/public/language/he/topic.json
+++ b/public/language/he/topic.json
@@ -113,7 +113,7 @@
"bookmark": "הוספה למועדפים",
"bookmarks": "מועדפים",
"bookmarks.has_no_bookmarks": "לא צירפתם פוסט למועדפים עדיין",
- "copy-permalink": "העתקת קישור ישיר",
+ "copy-permalink": "העתקת קישור פוסט",
"loading_more_posts": "טוען פוסטים נוספים",
"move_topic": "העברת נושא",
"move_topics": "העברת נושאים",
diff --git a/public/language/he/user.json b/public/language/he/user.json
index bc41b57ba7..285b3b7c28 100644
--- a/public/language/he/user.json
+++ b/public/language/he/user.json
@@ -92,8 +92,8 @@
"show_email": "הצג את כתובת האימייל שלי",
"show_fullname": "הצג את שמי המלא",
"restrict_chats": "אשר הודעות צ'אט ממשתמשים שאני עוקב אחריהם בלבד",
- "digest_label": "הרשם לקבלת תקציר",
- "digest_description": "הירשם לקבלת עדכונים בדואר אלקטרוני מפורום זה (הודעות ונושאים חדשים) בהתאם ללוח זמנים מוגדר מראש",
+ "digest_label": "הרשמה לקבלת תקציר",
+ "digest_description": "הרשמה לקבלת עדכונים בדואר אלקטרוני מפורום זה (הודעות ונושאים חדשים) בהתאם ללוח זמנים מוגדר מראש",
"digest_off": "כבוי",
"digest_daily": "יומי",
"digest_weekly": "שבועי",
@@ -109,10 +109,10 @@
"has_no_upvoted_posts": "המשתמש טרם הצביע בעד פוסטים כלשהם.",
"has_no_downvoted_posts": "המשתמש טרם הצביע נגד פוסטים כלשהם.",
"has_no_controversial_posts": "למשתמש זה אין עדיין פוסטים עם הצבעה למטה.",
- "has_no_blocks": "לא חסמת אף משתמש.",
+ "has_no_blocks": "לא חסמתם אף משתמש.",
"email_hidden": "כתובת אימייל מוסתרת",
"hidden": "מוסתר",
- "paginate_description": "הצג נושאים ופוסטים בעמודים במקום כרשימת גלילה אין-סופית",
+ "paginate_description": "הצגת נושאים ופוסטים בעמודים במקום כרשימת גלילה אין-סופית",
"topics_per_page": "כמות נושאים בעמוד",
"posts_per_page": "כמות פוסטים בעמוד",
"max_items_per_page": "מקסימום %1",
diff --git a/public/language/sr/error.json b/public/language/sr/error.json
index 0e27c0d5c0..ad5e181e66 100644
--- a/public/language/sr/error.json
+++ b/public/language/sr/error.json
@@ -205,8 +205,8 @@
"no-connection": "Изгледа да постоји проблем са вашом интернет везом",
"socket-reconnect-failed": "Тренутно није могуће приступити серверу. Кликните овде да бисте покушали поново или покушајте поново касније",
"plugin-not-whitelisted": "Инсталација додатне компоненте &ndash није могућа; преко ACP-а могу се инсталирати само додатне компоненте које је на белој листи ставио NodeBB Package Manager",
- "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
- "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",
+ "plugins-set-in-configuration": "Није вам дозвољено да мењате стање додатне компоненте онако како је дефинисано у време извршавања (config.json, променљиве окружења или аргументи терминала), уместо тога измените конфигурацију.",
+ "theme-not-set-in-configuration": "Приликом дефинисања активних додатних компоненти у конфигурацији, промена тема захтева додавање нове теме на листу активних додатних компоненти пре ажурирања у ACP",
"topic-event-unrecognized": "Догађај из теме „%1“ није препознат",
"cant-set-child-as-parent": "Није могуће поставити подређену категорију као надређену",
"cant-set-self-as-parent": "Није могуће поставити себе као надређену категорију",
diff --git a/public/language/sr/user.json b/public/language/sr/user.json
index b30dc871fa..6c2bca7c1f 100644
--- a/public/language/sr/user.json
+++ b/public/language/sr/user.json
@@ -195,5 +195,5 @@
"emailUpdate.optional": "Ово поље је опционо. Нисте обавезни да наведете своју адресу е-поште, али без ваљане е-поште нећете моћи да вратите свој налог или да се пријавите помоћу своје е-поште.",
"emailUpdate.required": "Ово поље је обавезно.",
"emailUpdate.change-instructions": "На унету адресу е-поште биће послата потврдна порука са јединственом везом. Приступ тој вези потврдиће ваше власништво над адресом е-поште и она ће постати активна на вашем налогу. У било ком тренутку можете да ажурирате своју е-пошту на страници налога.",
- "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership."
+ "emailUpdate.password-challenge": "Унесите лозинку да бисте потврдили власништво над налогом."
}
\ No newline at end of file
diff --git a/public/src/app.js b/public/src/app.js
index 1a2e0c8a90..f3b4a4c6a2 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -9,7 +9,6 @@ require('jquery-form');
window.utils = require('./utils');
require('timeago');
-const Visibility = require('visibilityjs');
const Benchpress = require('benchpressjs');
Benchpress.setGlobal('config', config);
@@ -19,7 +18,11 @@ require('./ajaxify');
app = window.app || {};
-app.isFocused = true;
+Object.defineProperty(app, 'isFocused', {
+ get() {
+ return document.visibilityState === 'visible';
+ }
+});
app.currentRoom = null;
app.widgets = {};
app.flags = {};
@@ -95,10 +98,6 @@ if (document.readyState === 'loading') {
app.newTopic();
});
- Visibility.change(function (event, state) {
- app.isFocused = state === 'visible';
- });
-
registerServiceWorker();
require([
diff --git a/public/src/client/register.js b/public/src/client/register.js
index 7bad263b0a..3178ee8359 100644
--- a/public/src/client/register.js
+++ b/public/src/client/register.js
@@ -2,7 +2,7 @@
define('forum/register', [
- 'translator', 'slugify', 'api', 'bootbox', 'forum/login', 'jquery-form', 'zxcvbn',
+ 'translator', 'slugify', 'api', 'bootbox', 'forum/login', 'zxcvbn', 'jquery-form',
], function (translator, slugify, api, bootbox, Login, zxcvbn) {
const Register = {};
let validationError = false;
diff --git a/public/src/modules/messages.js b/public/src/modules/messages.js
index 724d6886f1..32017e329e 100644
--- a/public/src/modules/messages.js
+++ b/public/src/modules/messages.js
@@ -101,6 +101,11 @@ define('messages', ['bootbox', 'translator', 'storage', 'alerts', 'hooks'], func
params.delete('register');
}
+ if (params.has('lang') && params.get('lang') === config.defaultLang) {
+ console.info(`The "lang" parameter was passed in to set the language to "${params.get('lang')}", but that is already the forum default language.`);
+ params.delete('lang');
+ }
+
const qs = params.toString();
ajaxify.updateHistory(ajaxify.currentPage + (qs ? `?${qs}` : '') + document.location.hash, true);
}
diff --git a/src/categories/data.js b/src/categories/data.js
index d50e7e1a0b..4568d4850d 100644
--- a/src/categories/data.js
+++ b/src/categories/data.js
@@ -86,7 +86,7 @@ function modifyCategory(category, fields) {
db.parseIntFields(category, intFields, fields);
- const escapeFields = ['name', 'color', 'bgColor', 'imageClass', 'class', 'link'];
+ const escapeFields = ['name', 'color', 'bgColor', 'backgroundImage', 'imageClass', 'class', 'link'];
escapeFields.forEach((field) => {
if (category.hasOwnProperty(field)) {
category[field] = validator.escape(String(category[field] || ''));
diff --git a/src/meta/settings.js b/src/meta/settings.js
index 1207d13734..213b61be11 100644
--- a/src/meta/settings.js
+++ b/src/meta/settings.js
@@ -95,6 +95,7 @@ Settings.set = async function (hash, values, quiet) {
plugins.hooks.fire('action:settings.set', {
plugin: hash,
settings: { ...values, ...sortedListData }, // Add back sorted list data to values hash
+ quiet,
});
pubsub.publish(`action:settings.set.${hash}`, values);