Merge branch 'master' into bootstrap5

This commit is contained in:
Barış Soner Uşaklı
2022-10-18 10:41:28 -04:00
54 changed files with 169 additions and 66 deletions

View File

@@ -1,11 +1,13 @@
#### v2.5.3 (2022-09-19)
#### v2.5.7 (2022-10-14)
##### Chores
* remove duplicate version increment lines in changelog (5dbcfef9)
* bring back treding plugins (8aa1596d)
* 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)
* 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)
@@ -17,6 +19,96 @@
* 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
* 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
* 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
* 🤔 (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 <akurmi@stepsecurity.io> (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
* remove duplicate version increment lines in changelog (5dbcfef9)
* bring back treding plugins (8aa1596d)
* incrementing version number - v2.5.2 (babcd17e)
* update changelog for v2.5.2 (84b6a7c7)
##### New Features
* store topic title and tags in diffs (#10900) (b5dd89e1)

View File

@@ -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": "اسم المستخدم فقط",

View File

@@ -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": "Само потребителско име",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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": "שם משתמש בלבד",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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": "ユーザー名のみ",

View File

@@ -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": "사용자명",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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": "Только имени пользователя",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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ı",

View File

@@ -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": "Тільки ім'я користувача",

View File

@@ -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",

View File

@@ -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": "仅限用户名",

View File

@@ -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": "僅限使用者名",

View File

@@ -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);

View File

@@ -46,7 +46,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 = $('<div></div>').addClass(iconClass).removeClass('fa').removeClass('selected')
.attr('class');
const searchElVal = picker.find('input').val();

View File

@@ -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]]');
}

View File

@@ -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.');

View File

@@ -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);
}

View File

@@ -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]]');
}
}

View File

@@ -13,7 +13,7 @@
value="10" />
</div>
<div class="col-auto">
<label class="form-label" for="emailConfirmInterval">[[admin/settings/user:email-confirm-email2]]</label>
<label class="form-label" for="emailConfirmInterval">[[admin/settings/user:email-confirm-interval2]]</label>
</div>
</div>