Merge commit '8a69e740a859cf2eb4a12a0167c1ac76a48c33db' into v2.x

isekai-main
Misty Release Bot 2 years ago
commit fe662f3a46

@ -1,3 +1,51 @@
#### v2.8.0 (2022-12-21)
##### Chores
* **deps:**
* update dependency jquery to v3.6.3 (#11107) (13a3faa0)
* update dependency eslint to v8.30.0 (#11102) (485ee130)
* update dependency mocha to v10.2.0 (#11094) (c4cc1e61)
* up jquery (3e8f5378)
* remove extraneous lines from changelog (e213dbc3)
* incrementing version number - v2.7.0 (96cc0617)
* update changelog for v2.7.0 (4701c96d)
* **i18n:**
* fallback strings for new resources: nodebb.admin-settings-email (717b3612)
* fallback strings for new resources: nodebb.admin-settings-email (4f4b4800)
##### New Features
* add force flag to plugin install in cli (#11089) (de31cb1a)
* integrating basic client-side form validity checking in settings v1 and v2 (33af2d9c)
##### Bug Fixes
* **deps:**
* update dependency sharp to v0.31.3 (#11110) (ef500af8)
* update dependency sanitize-html to v2.8.1 (#11109) (7ab46b78)
* update dependency esbuild to v0.16.10 (#11104) (eb6a9c47)
* update dependency mongodb to v4.13.0 (#11105) (05443dbe)
* update dependency esbuild to v0.16.8 (#11101) (18ff6caa)
* update dependency sanitize-html to v2.8.0 (#11098) (faaf09f7)
* update dependency ace-builds to v1.14.0 (#11095) (cde44587)
* update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (5dda9a5b)
* update dependency postcss to v8.4.20 (#11097) (0a5adb41)
* update dependency compare-versions to v5.0.3 (#11092) (8b209f16)
* update dependency html-to-text to v9.0.3 (#11093) (7bcfe38e)
* update dependency @socket.io/redis-adapter to v8 (#11084) (7b9bbef5)
* update dependency nodebb-widget-essentials to v6.0.1 (#11085) (7b48156c)
* update dependency esbuild to v0.16.7 (#11086) (65ef722e)
* update dependency esbuild to v0.16.3 (#11083) (4f67fc1a)
* update dependency esbuild to v0.15.16 (#11069) (22493ffb)
* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (896493db)
* replace input type number with text/pattern (2bc23a95)
##### Refactors
* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (9f531f95)
* remove debug log closes #11090 (06f4801e)
#### v2.7.0 (2022-12-14)
##### Chores

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "يسمح لك بالنشر مرة كل %1 ثانية - يرجى الإنتظار قبل النشر مجدداً",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Не е избрана категория.",
"too-many-posts": "Можете да публикувате веднъж на %1 секунда/и моля, изчакайте малко, преди да опитате да публикувате отново",
"too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация моля, изчакайте малко, преди да опитате да публикувате отново",
"already-posting": "You are already posting",
"tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)",
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
"not-enough-tags": "Недостатъчно етикети. Темите трябва да имат поне %1 етикет(а)",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Nebyla vybrána kategorie.",
"too-many-posts": "Můžete přispívat jednou za %1 sekund - vyčkejte tedy, než vytvoříte další příspěvek",
"too-many-posts-newbie": "Jako nový uživatel, můžete přispívat jednou za %1 sekund, dokud nezískáte pověst %2 - vyčkejte tedy, než vytvoříte další příspěvek",
"already-posting": "You are already posting",
"tag-too-short": "Zadejte delší značku. Značky by měli mít alespoň %1 znaků",
"tag-too-long": "Zadejte kratší značku. Značky nesmí být delší než %1 znaků",
"not-enough-tags": "Málo značek. Téma musí obsahovat alespoň %1 značek",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "Du kan højest skrive et indlæg hver %1 sekund(er) - venligst vent et øjeblik før næste indlæg",
"too-many-posts-newbie": "Som ny bruger kan du kun skrive et indlæg engang hvert %1. sekund() indtil du har optjent %2 omdømme point - venligst vent et øjeblik før næste indlæg.",
"already-posting": "You are already posting",
"tag-too-short": "Indtast et længere tag. Tags skal indeholde mindst %1 karakter(er).",
"tag-too-long": "Indtast et længere tag. Tags kan ikke være længere end %1 karakter(er).",
"not-enough-tags": "Ikke nok tags. Tråde skal have mindst %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Kategorie nicht ausgewählt",
"too-many-posts": "Du kannst nur einen Beitrag innerhalb von %1 Sekunden erstellen - Bitte warte bevor Du erneut einen Beitrag erstellst.",
"too-many-posts-newbie": "Als neuer Benutzer kannst du nur einmal alle %1 Sekunde(n) posten, bis du %2 Reputation erworben hast - bitte warte, bevor du erneut postest",
"already-posting": "You are already posting",
"tag-too-short": "Bitte gebe ein längeres Schlagwort ein. Schlagworte sollten mindestens %1 Zeichen enthalten.",
"tag-too-long": "Bitte gebe ein kürzeres Schlagwort ein. Schlagworte können nicht länger als %1 Zeichen sein.",
"not-enough-tags": "Nicht genügend Schlagworte. Themen müssen mindestens %1 Schlagwort(e) enthalten",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -101,6 +101,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Categoría no seleccionada.",
"too-many-posts": "Solo puedes publicar una vez cada %1 segundo(s) - por favor espere antes de volver a publicar",
"too-many-posts-newbie": "Como nuevo usuario, solo puedes publicar una vez cada %1 segundo(s) hasta hayas ganado una reputación de %2 - por favor espera antes de volver a publicar",
"already-posting": "You are already posting",
"tag-too-short": "Por favor introduce una etiqueta más larga. Las etiquetas deben contener por lo menos %1 caractere(s)",
"tag-too-long": "Por favor introduce una etiqueta más corta. Las etiquetas no pueden exceder los %1 caractere(s)",
"not-enough-tags": "Etiquetas insuficientes. El tema debe tener al menos %1 etiqueta(s).",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "Te saate postitada %1 sekundi tagant - palun oodake enne uue postituse tegemist.",
"too-many-posts-newbie": "Uue kasutajana saadte postitada vaid iga %1 sekundi tagant, seniks kuni olete teeninud vähemalt %2 reputatsiooni - palun oodake enne uue postituse tegemist.",
"already-posting": "You are already posting",
"tag-too-short": "Palun sisestage pikem märksõna. Märksõna pikkus peab olema vähemalt %1 tähemärk(i).",
"tag-too-long": "Palun sisestage lühem märksõna. Märksõna pikkus peab olema vähem kui %1 tähemärk(i).",
"not-enough-tags": "Liiga vähe märksõnu. Teemadel peab olemalt vähemalt %1 märksõna",

@ -88,6 +88,7 @@
"category-not-selected": "هیچ دسته‌بندی انتخاب نشده.",
"too-many-posts": "شما می توانید هر %1 ثانیه یک پست ایجاد کنید - لطفا قبل از ارسال پست جدید صبر کنید",
"too-many-posts-newbie": "به عنوان یک کاربر جدید ، تا زمانی که شما %2 اعتبار کسب کنید می توانید هر %1 ثانیه یک پست ایجاد کنید - لطفا قبل از ایجاد پست جدید صبر کنید .",
"already-posting": "You are already posting",
"tag-too-short": "لطفا برچسب بلندتری وارد کنید. برچسبها باید حداقل %1 کاراکتر داشته باشند.",
"tag-too-long": "لطفا برچسب کوتاه تری وارد کنید . برچسب ها نباید بیشتر از %1 کاراکتر داشته باشند",
"not-enough-tags": "تعداد برچسب ها کافی نیست. موضوع ها یابد حداقل %1 برچسب داشته باشند",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Aucune catégorie sélectionnée",
"too-many-posts": "Vous ne pouvez poster que toutes les %1 seconde(s) - merci de patienter avant de publier à nouveau.",
"too-many-posts-newbie": "En tant que nouvel utilisateur, vous ne pouvez poster que toutes les %1 seconde(s) jusqu'à ce que vous obteniez une réputation de %2 - patientez avant de publier de nouveau.",
"already-posting": "You are already posting",
"tag-too-short": "Veuillez entrer un mot-clé plus long. Les mots-clés doivent contenir au moins %1 caractère(s).",
"tag-too-long": "Veuillez entrer un mot-clé plus court. Les mot-clés ne peuvent excéder %1 caractère(s).",
"not-enough-tags": "Pas assez de mots-clés. Les sujets doivent avoir au moins %1 mots-clé(s).",

@ -88,6 +88,7 @@
"category-not-selected": "Categoría non seleccionada",
"too-many-posts": "Só podes postear unha vez cada %1 segundo(s) - por favor agarda antes de publicar de novo.",
"too-many-posts-newbie": "Como novo usuario, só podes publicar unha vez cada %1 segundo(s) ata que acades %2 de reputación -por favor, agarda para publicar de novo.",
"already-posting": "You are already posting",
"tag-too-short": "Por favor, introduce unha etiqueta máis longa. As etiquetas deben conter %1 carácter(es) como mínimo.",
"tag-too-long": "Por favor, introduce unha etiqueta máis curta. As etiquetas non poden conter máis de %1 carácter(es).",
"not-enough-tags": "Non hai etiquetas dabondas. Os temas deben ter %1 etiqueta(s) como mínimo.",

@ -88,6 +88,7 @@
"category-not-selected": "לא נבחרה קטגוריה",
"too-many-posts": "ניתן לפרסם פוסט רק פעם ב-%1 שניות - אנא המתינו לפני פרסום נוסף",
"too-many-posts-newbie": "כמשתמשים חדשים, אתם יכולים לפרסם פוסט רק פעם ב-%1 שניות עד שיהיו לכם %2 נקודות מוניטין - אנא המתינו לפני פרסום נוסף",
"already-posting": "You are already posting",
"tag-too-short": "הכניסו תגית ארוכה יותר. תגיות חייבות להכיל לפחות %1 תווים",
"tag-too-long": "הכניסו תגית קצרה יותר. תגיות יכולות להיות רק עד %1 תווים",
"not-enough-tags": "אין מספיק תגיות. נושא חייב להכיל לפחות %1 תגיות",

@ -88,6 +88,7 @@
"category-not-selected": "Kategorija nije odabrana.",
"too-many-posts": "Možete objavljivati svakih %1 skeundi, pričekajte prije ponovne objave",
"too-many-posts-newbie": "Kao novi korisnik, možete objavljivati svakih %1 sekundi dok ne steknete reputaciju %2 - molimo pričekajte prije ponovne objave",
"already-posting": "You are already posting",
"tag-too-short": "Unesite dužu oznaku. Oznake moraju sadržavati najmanje %1 znak(ova)",
"tag-too-long": "Unesite kraću oznaku. Oznake me mogu imati više od %1 znak(ova)",
"not-enough-tags": "Nema dovoljno oznaka. Teme moraju imate bar %1 oznaku",

@ -88,6 +88,7 @@
"category-not-selected": "A kategória nincs kiválasztva.",
"too-many-posts": "Csak %1 másodpercenként hozhatsz létre új bejegyzést - kérlek várj egy kicsit mielőtt új bejegyzést tennél közzé",
"too-many-posts-newbie": "Új felhasználóként csak egyszer készíthetsz bejegyzést %1 másodpercen belül, amíg el nem éred a %2 szintet - kérlek várj egy kicsit mielőtt új bejegyzést tennél közzé",
"already-posting": "You are already posting",
"tag-too-short": "Kérlek hosszabb címkét adj meg. A címke legalább %1 karaktert kell, hogy tartalmazzon",
"tag-too-long": "Kérlek rövidebb címkét adj meg. A címkék nem lehetnek hosszabbak %1 karakternél",
"not-enough-tags": "Nincs elég címke. A bejegyzésnek legalább %1 címkét kell tartalmaznia",

@ -88,6 +88,7 @@
"category-not-selected": "Կատեգորիան ընտրված չէ:",
"too-many-posts": "Դուք կարող եք գրառում անել միայն յուրաքանչյուր %1 վայրկյան(եր) մեկ անգամ. խնդրում ենք սպասել նորից գրառում անելուց առաջ",
"too-many-posts-newbie": "Որպես նոր օգտատեր, դուք կարող եք հրապարակել միայն յուրաքանչյուր %1 վայրկյան(եր) մեկ անգամ, քանի դեռ չեք վաստակել %2 վարկանիշ, խնդրում ենք սպասել՝ նորից գրառում կատարելուց առաջ:",
"already-posting": "You are already posting",
"tag-too-short": "Խնդրում ենք մուտքագրել ավելի երկար թեգ: Թեգերը պետք է պարունակեն առնվազն %1 նիշ(ներ)",
"tag-too-long": "Խնդրում ենք մուտքագրել ավելի կարճ թեգ: Թեգերը չեն կարող ավելի երկար լինել, քան %1 նիշ(ներ)",
"not-enough-tags": "Ոչ բավարար թեգեր: Թեմաները պետք է ունենան առնվազն %1 թեգ(ներ)",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "Anda hanya dapat memposting sekali setiap %1 detik() - harap tunggu sebelum memposting lagi",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Categoria non selezionata.",
"too-many-posts": "È possibile inserire un Post ogni %1 secondi - si prega di attendere prima di postare di nuovo",
"too-many-posts-newbie": "Come nuovo utente puoi postare solamente una volta ogni %1 secondi finché non hai raggiunto un livello di reputazione %2 - per favore attendi prima di scrivere ancora",
"already-posting": "You are already posting",
"tag-too-short": "Inserisci un tag più lungo. I tag devono contenere almeno %1 caratteri.",
"tag-too-long": "Per favore inserisci un tag più corto. I tags non dovrebbero essere più lunghi di %1 caratteri",
"not-enough-tags": "Tag non sufficienti. Le discussioni devono avere almeno %1 Tag",

@ -88,6 +88,7 @@
"category-not-selected": "カテゴリが選択されていません。",
"too-many-posts": "あなたは%1秒間に一つの投稿しか許されます少し待ってまた投稿してください",
"too-many-posts-newbie": "あなたは%2評判を得ているまで、新しいユーザーとしては、一度だけごとに%1秒を投稿することができます - 再び投稿する前にお待ちください",
"already-posting": "You are already posting",
"tag-too-short": "%1文字(s)以上でタグを入力してください。",
"tag-too-long": "%1文字(s)以内でタグを入力してください。",
"not-enough-tags": "タグが足りません。スレッドはせめて%1のタグ(s)が必要です。",

@ -88,6 +88,7 @@
"category-not-selected": "선택된 카테고리가 없습니다.",
"too-many-posts": "새 게시물 작성은 %1초마다 가능합니다. 조금 천천히 작성해주세요.",
"too-many-posts-newbie": "신규 사용자는 %2만큼의 인지도를 얻기 전까지 %1초마다 게시물을 작성할 수 있습니다. 조금 천천히 작성해주세요.",
"already-posting": "You are already posting",
"tag-too-short": "태그가 너무 짧습니다. 태그는 최소 %1자 이상이어야 합니다.",
"tag-too-long": "태그가 너무 깁니다. 태그는 최대 %1자 이내로 사용 가능합니다.",
"not-enough-tags": "태그가 없거나 부족합니다. 게시물은 %1개 이상의 태그를 사용해야 합니다.",

@ -88,6 +88,7 @@
"category-not-selected": "Nepasirinkta kategorija.",
"too-many-posts": "Jus galite rašyti kas %1 sekunde(s) - prašome palaukti prieš rašant dar kartą",
"too-many-posts-newbie": "Kadangi esate naujas narys, jūs galite tik rašyti kas %1 sekunde(s) kol jūs pasieksite %2 reputacija - prašome palaukti prieš rašant dar kartą",
"already-posting": "You are already posting",
"tag-too-short": "Prašome įvesti ilgesnę žymą. Žyma turi sudaryti mažiausiai %1 simboli(us)",
"tag-too-long": "Prašome įvesti trumpesnę žymą. Žyma turi būti ne ilgesni negu %1 simboli(us)",
"not-enough-tags": "Neužteka žymių. Temos turi turėti mažiausiai %1 žyme(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Kategorija nav atlasīta.",
"too-many-posts": "Var publicēt tikai vienu rakstu katras %1 sekundes - lūdzu, uzgaidi, pirms publicē vēlreiz",
"too-many-posts-newbie": "Jauni lietotāji var ievietot tikai vienu rakstu katras %1 sekundes, līdz ir nopelnīti %2 ranga punkti - lūdzu, uzgaidi, pirms publicē vēlreiz",
"already-posting": "You are already posting",
"tag-too-short": "Lūdzu, ievadi garāku birku. Birkā jāsatur vismaz %1 rakstzīmes.",
"tag-too-long": "Lūdzu, ievadi īsāku birku. Birkā nevar būt vairāk kā %1 rakstzīmes.",
"not-enough-tags": "Nav pietiekami daudz birku. Tematiem jābūt vismaz %1 birkām",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "Anda hanya boleh mengirim sekali setiap %1 saat() - sila tunggu sebelum kiriman seterusnya",
"too-many-posts-newbie": "Sebagai pengguna baru, anda hanya boleh mengirim sekali setiap %1 saat() sehinnga anda mendapat %2 reputasi - sila tunggu sebelum kiriman seterusnya",
"already-posting": "You are already posting",
"tag-too-short": "Sila masukkan tag yang lebih panjang. Tag mesti mengandungi sekurang-kurangnya %1 aksara()",
"tag-too-long": "Sila masukkan tag yang lebih pendek. Tag mesti mengandungi tidak lebih %1 aksara()",
"not-enough-tags": "Tag tidak mencukupi. Topik memerlukan sekurang-kurangnya %1 tag()",

@ -88,6 +88,7 @@
"category-not-selected": "Kategori ikke valgt",
"too-many-posts": "Du kan bare poste en gang per %1 sekund(er) vennligst vent før du poster igjen",
"too-many-posts-newbie": "Som ny bruker kan du bare poste en gang per %1. sekund(er), før du har opparbeidet %2 i omdømme vennligst vent før du poster igjen",
"already-posting": "You are already posting",
"tag-too-short": "Vennligst skriv et lengre emneord. Disse må være på minst %1 tegn",
"tag-too-long": "Vennligst skriv et kortere emneord. Disse kan ikke være lengre enn %1 tegn",
"not-enough-tags": "Ikke nok emneord. Emner må ha minst %1.",

@ -88,6 +88,7 @@
"category-not-selected": "Categorie niet geselecteerd ",
"too-many-posts": "Het is slechts toegestaan iedere %1 seconde(n) een bericht te plaatsen - wacht even voordat opnieuw een bericht verzonden wordt",
"too-many-posts-newbie": "Nieuwe gebruikersaccounts zoals deze zijn begrensd en mogen slechts iedere %1 seconde(n) berichten plaatsen, tot het moment dat %2 reputatie verdiend is - wacht daarom even met opnieuw een bericht te plaatsten",
"already-posting": "You are already posting",
"tag-too-short": "Geef een tag op die uit meer tekens bestaat. Tags dienen uit minimaal %1 teken(s) te bestaan.",
"tag-too-long": "Geef een kortere tag op. Tags mogen niet langer dan %1 teken(s) zijn",
"not-enough-tags": "Niet genoeg labels. Onderwerp moeten tenminste %1 label(s) hebben",

@ -88,6 +88,7 @@
"category-not-selected": "Nie wybrano kategorii.",
"too-many-posts": "Możesz publikować posty raz na %1 sekund poczekaj, zanim dodasz kolejny post",
"too-many-posts-newbie": "Jako nowy użytkownik możesz publikować posty raz na %1 sekund, dopóki nie zdobędziesz reputacji na poziomie %2 poczekaj, zanim dodasz kolejny post",
"already-posting": "You are already posting",
"tag-too-short": "Wprowadź dłuższy tag. Tagi muszą mieć przynajmniej %1 znak(-ów)",
"tag-too-long": "Wprowadź krótszy tag. Tagi nie mogą mieć więcej niż %1 znak(-ów)",
"not-enough-tags": "Zbyt mało tagów. Tematy muszą posiadać przynajmniej %1 tag(ów)",

@ -88,6 +88,7 @@
"category-not-selected": "Categoria não escolhida.",
"too-many-posts": "Você pode postar uma vez a cada %1 segundo(s) - por favor aguarde antes de postar novamente",
"too-many-posts-newbie": "Como novo usuário, você só pode postar uma vez a cada %1 segundo(s) até que você tenha, pelo menos, %2 de reputação. Por favor, aguarde antes de postar novamente.",
"already-posting": "You are already posting",
"tag-too-short": "Por favor digite uma tag maior. Tags devem conter pelo menos %1 caractere(s)",
"tag-too-long": "Por favor digite uma tag menor. Tags não podem conter mais que %1 caractere(s)",
"not-enough-tags": "Sem tags suficientes. Tópicos devem ter no mínimo %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Categoria não selecionada.",
"too-many-posts": "Só podes publicar a cada %1 segundo(s) - por favor espera até poderes publicar outra vez",
"too-many-posts-newbie": "Como novo utilizador, só podes publicar a cada %1 segundo(s) até teres conquistado %2 de reputação - por favor espera até poderes publicar outra vez",
"already-posting": "You are already posting",
"tag-too-short": "Por favor introduz um marcador maior. Os marcadores devem ter pelo menos %1 caracter(s)",
"tag-too-long": "Por favor introduz um marcador mais curto. Os marcadores devem ter no máximo %1 caracter(es)",
"not-enough-tags": "Não existem marcadores suficientes. Os tópicos devem ter pelo menos %1 marcador(es)",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Категория не выбрана",
"too-many-posts": "Для того, чтобы разместить новое сообщение, нужно подождать %1 сек.",
"too-many-posts-newbie": "Для того, чтобы разместить новое сообщение, нужно подождать %1 сек. Это время уменьшится, как только ваша репутация вырастет до %2.",
"already-posting": "You are already posting",
"tag-too-short": "Слишком короткая метка. Минимум %1 символов.",
"tag-too-long": "Слишком длинная метка. Максимум %1 символов.",
"not-enough-tags": "Пожалуйста, добавьте метки в ваше сообщение. У темы должно быть минимум %1 меток.",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "Wemerewe kugira icyo ushyiraho rimwe mu masegonda (isegonda) %1. Ba utegerejeho gato kugirango wongere",
"too-many-posts-newbie": "Nk'umuntu mushya, wemerewe gushyiraho ikintu rimwe mu masegonda (isegonda) %1 kugeza igihe ugize amanota agera kuri %2. Ba utegerejeho gato kugirango wongere",
"already-posting": "You are already posting",
"tag-too-short": "Gerageza ukoreshe akamenyetso kagizwe n'inyuguti (cyangwa ibimenyetso) nibura zigera kuri %1",
"tag-too-long": "Gerageza ukoreshe akamenyetso kagizwe n'inyuguti (cyangwa ibimenyetso) zitarenze %1",
"not-enough-tags": "Nta tumenyetso turiho duhagije. Ibiganiro bigomba kugira utumenyetso (akamenyetso) nibura %1",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"already-posting": "You are already posting",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Kategória nebola vybratá.",
"too-many-posts": "Môžete uverejniť príspevok každých %1 sekúnd(y) - prosím počkajte pred opätovným zverejnením",
"too-many-posts-newbie": "Ako nový užívateľ, môžete uverejniť príspevok raz za %1 sekúnd(y) pokiaľ nezískate %2 reputáciu - prosím, počkajte pred ďalším uverejnením",
"already-posting": "You are already posting",
"tag-too-short": "Prosím, zadajte dlhšiu značku. Značky by mali obsahovať najmenej %1 znak(ov)",
"tag-too-long": "Prosím, zadajte kratšiu značku. Značky nemôžu obsahovať viac ako %1 znak(ov)",
"not-enough-tags": "Príliš malo značiek. Témy musia mať minimálne %1 značku(y)",

@ -88,6 +88,7 @@
"category-not-selected": "Category not selected.",
"too-many-posts": "Objavljate lahko na %1 s - prosimo, počakajte pred novo objavo.",
"too-many-posts-newbie": "Kot nov uporabnik lahko objavljate le na %1 s, dokler ne dosežete ugled vsaj %2 - prosimo, počakajte pred novo objavo.",
"already-posting": "You are already posting",
"tag-too-short": "Prosimo, vnesite daljšo oznako. Obvezno število znakov: vsaj %1.",
"tag-too-long": "Prosimo, vnesite krajšo oznako. Največje število znakov: %1.",
"not-enough-tags": "Ni dovolj oznak. Obvezno število oznak: %1. ",

@ -88,6 +88,7 @@
"category-not-selected": "Kategoria nuk është zgjedhur.",
"too-many-posts": "Mund të postoni vetëm një herë në %1 sekond(a) - ju lutemi prisni përpara se të postoni përsëri",
"too-many-posts-newbie": "Si përdorues i ri, ju mund të postoni vetëm një herë në %1 sekond(a) derisa të keni fituar %2 reputacion - ju lutemi prisni përpara se të postoni përsëri",
"already-posting": "You are already posting",
"tag-too-short": "Ju lutemi vendosni një tag më të gjatë. Tag-et duhet të përmbajnë të paktën %1 karakter(e)",
"tag-too-long": "Ju lutemi vendosni një tag më të shkurtër. Tag-et nuk mund të jenë më të gjata se %1 karakter(e)",
"not-enough-tags": "Numër jo i mjaftueshëm i tag-eve. Temat duhet të kenë të paktën %1 tag(-e)",

@ -88,6 +88,7 @@
"category-not-selected": "Није одабрана категорија",
"too-many-posts": "Можете објављивати поруке само једном у %1 секунди - сачекајте пре него што покушате поново",
"too-many-posts-newbie": "Као нови корисник, можете објављивати поруке само једном у %1 секунди док не достигнете %2 углед - сачекајте пре него што покушате поново",
"already-posting": "You are already posting",
"tag-too-short": "Унесите дужу ознаку. Ознаке морају садржати најмање %1 знак(ов)а.",
"tag-too-long": "Унесите краћу ознаку. Ознаке не смеју бити дуже од %1 знак(ов)а.",
"not-enough-tags": "Нема довољно ознака. Теме морају имати најмање %1 ознаке/а.",

@ -88,6 +88,7 @@
"category-not-selected": "Kategori Ej vald.",
"too-many-posts": "Du måste vänta minst %1 sekund(er) mellan varje inlägg",
"too-many-posts-newbie": "Som ny användare måste du vänta %1 sekund(er) mellan varje inlägg tills dess du har %2 förtroende",
"already-posting": "You are already posting",
"tag-too-short": "Fyll i en längre tagg. Taggar måste vara minst %1 tecken långa",
"tag-too-long": "Fyll i en kortare tagg. Taggar kan ej vara längre än %1 tecken långa",
"not-enough-tags": "Otillräckligt antal taggar. Ämnen måste ha minst %1 taggar",

@ -88,6 +88,7 @@
"category-not-selected": "ไม่มีการเลือกหมวดหมู่",
"too-many-posts": "คุณสามารถโพสต์ได้เพียงครั้งเดียวเท่านั้นในทุกๆ %1 วินาที(s) - โปรดรอสักครู่ก่อนการโพสต์อีกครั้ง",
"too-many-posts-newbie": "เนื่องด้วยการเป็นผู้ใช้งานใหม่ คุณสามารถโพสต์ได้เพียงครั้งเดียวเท่านั้นในทุกๆ %1 วินาที(s) จนกว่าคุณจะได้รับ %2 ชื่อเสียง - โปรดรอสักครู่ก่อนการโพสต์อีกครั้ง",
"already-posting": "You are already posting",
"tag-too-short": "กรุณากรอกแท็กให้ยาวขึ้น แท็กควรมีข้อความอย่างน้อย %1 ตัวอักษร(s)",
"tag-too-long": "กรุณากรอกแท็กให้สั้นลง แท็กไม่สามารถยาวกว่า %1 ตัวอักษร(s)",
"not-enough-tags": "จำนวนแท็กไม่พอ กระทู้ต้องมีอย่างน้อย %1 แท็ก(s)",

@ -88,6 +88,7 @@
"category-not-selected": "Kategori bulunamadı. Lütfen bir kategori seçiniz. ",
"too-many-posts": "%1 saniye içinde yalnızca bir ileti gönderebilirsiniz - lütfen tekrar ileti göndermeden önce bekleyiniz.",
"too-many-posts-newbie": "Yeni bir kullanıcı olarak, %2 saygınlık puanı kazanana kadar %1 saniye içinde bir ileti gönderebilirsiniz - lütfen tekrar ileti göndermeden önce bekleyiniz.",
"already-posting": "You are already posting",
"tag-too-short": "Lütfen daha uzun bir etiket girin. Etiketler en az %1 karakter içermelidir.",
"tag-too-long": "Lütfen daha kısa bir etiket girin. Etiketler %1 karakterden uzun olamaz.",
"not-enough-tags": "Yeterince etiket yok. Başlılar en az %1 etikete sahip olmalıdır",

@ -88,6 +88,7 @@
"category-not-selected": "Категорію не вибрано.",
"too-many-posts": "Ви не можете постити частіше %1 секунд(и) — зачекайте, будь ласка, перед повторною спробою",
"too-many-posts-newbie": "Як новий користувач, ви не можете публікувати частіше %1 секунд(и) доки не заробите %2 репутації — зачекайте, будь ласка, перед повторною спробою",
"already-posting": "You are already posting",
"tag-too-short": "Введіть, будь ласка, довший тег. Мінімальна довжина тегу %1 символ(ів)",
"tag-too-long": "Введіть, будь ласка, коротший тег. Максимальна довжина тегу %1 символ(ів)",
"not-enough-tags": "Замало тегів. Тема повинна мати щонайменше %1 тег(и)",

@ -88,6 +88,7 @@
"category-not-selected": "Chưa chọn category",
"too-many-posts": "Bạn chỉ có đăng bài mới mỗi %1 giây - vui lòng đợi để tiếp tục đăng bài.",
"too-many-posts-newbie": "Là người dùng mới, bạn chỉ có thể đăng %1 giây một lần cho đến khi bạn đạt được %2 danh tiếng - vui lòng đợi trước khi đăng lại",
"already-posting": "You are already posting",
"tag-too-short": "Vui lòng nhập tag dài hơn. Tag phải có tối thiểu %1 ký tự.",
"tag-too-long": "Vui lòng nhập tag ngắn hơn. Tag chỉ có thể có tối đa %1 ký tự.",
"not-enough-tags": "Không đủ thẻ. Chủ đề phải có ít nhất %1 thẻ.",

@ -88,6 +88,7 @@
"category-not-selected": "未选择版块。",
"too-many-posts": "发帖需要间隔 %1 秒以上 - 请稍候再发帖",
"too-many-posts-newbie": "因为您是新用户,所以限制每隔 %1 秒才能发帖一次,直到您有 %2 点声望为止 —— 请稍候再发帖",
"already-posting": "You are already posting",
"tag-too-short": "标签太短,不能少于 %1 个字符",
"tag-too-long": "标签太长,不能超过 %1 个字符",
"not-enough-tags": "没有足够的标签。主题必须至少有 %1 个标签。",

@ -88,6 +88,7 @@
"category-not-selected": "未選擇版面。",
"too-many-posts": "貼文需要間隔 %1 秒以上 - 請稍候再發文",
"too-many-posts-newbie": "因為您是新使用者,所以限制每隔 %1 秒才能發文一次,直到您有 %2 點聲望為止 —— 請稍候再發文",
"already-posting": "You are already posting",
"tag-too-short": "標籤太短,不能少於 %1 個字元",
"tag-too-long": "標籤太長,不能超過 %1 個字元",
"not-enough-tags": "沒有足夠的主題標籤。主題必須至少有 %1 個標籤",

@ -2,6 +2,7 @@
const validator = require('validator');
const db = require('../../database');
const api = require('../../api');
const topics = require('../../topics');
const privileges = require('../../privileges');
@ -17,19 +18,39 @@ Topics.get = async (req, res) => {
};
Topics.create = async (req, res) => {
const payload = await api.topics.create(req, req.body);
if (payload.queued) {
helpers.formatApiResponse(202, res, payload);
} else {
helpers.formatApiResponse(200, res, payload);
const id = await lockPosting(req, '[[error:already-posting]]');
try {
const payload = await api.topics.create(req, req.body);
if (payload.queued) {
helpers.formatApiResponse(202, res, payload);
} else {
helpers.formatApiResponse(200, res, payload);
}
} finally {
await db.deleteObjectField('locks', id);
}
};
Topics.reply = async (req, res) => {
const payload = await api.topics.reply(req, { ...req.body, tid: req.params.tid });
helpers.formatApiResponse(200, res, payload);
const id = await lockPosting(req, '[[error:already-posting]]');
try {
const payload = await api.topics.reply(req, { ...req.body, tid: req.params.tid });
helpers.formatApiResponse(200, res, payload);
} finally {
await db.deleteObjectField('locks', id);
}
};
async function lockPosting(req, error) {
const id = req.uid > 0 ? req.uid : req.sessionID;
const value = `posting${id}`;
const count = await db.incrObjectField('locks', value);
if (count > 1) {
throw new Error(error);
}
return value;
}
Topics.delete = async (req, res) => {
await api.topics.delete(req, { tids: [req.params.tid] });
helpers.formatApiResponse(200, res);

@ -123,7 +123,7 @@ async function onMessage(socket, payload) {
const parts = eventName.toString().split('.');
const namespace = parts[0];
const methodToCall = parts.reduce((prev, cur) => {
if (prev !== null && prev[cur]) {
if (prev !== null && prev[cur] && (!prev.hasOwnProperty || prev.hasOwnProperty(cur))) {
return prev[cur];
}
return null;

@ -91,6 +91,22 @@ describe('socket.io', () => {
});
});
it('should return error for unknown event', (done) => {
io.emit('user.gdpr.__proto__.constructor.toString', (err) => {
assert(err);
assert.equal(err.message, '[[error:invalid-event, user.gdpr.__proto__.constructor.toString]]');
done();
});
});
it('should return error for unknown event', (done) => {
io.emit('constructor.toString', (err) => {
assert(err);
assert.equal(err.message, '[[error:invalid-event, constructor.toString]]');
done();
});
});
it('should get installed themes', (done) => {
const themes = ['nodebb-theme-lavender', 'nodebb-theme-persona', 'nodebb-theme-vanilla'];
io.emit('admin.themes.getInstalled', (err, data) => {

@ -349,6 +349,28 @@ describe('User', () => {
});
});
});
it('should only post 1 topic out of 10', async () => {
await User.create({ username: 'flooder', password: '123456' });
const { jar } = await helpers.loginUser('flooder', '123456');
const titles = new Array(10).fill('topic title');
const res = await Promise.allSettled(titles.map(async (title) => {
const { body } = await helpers.request('post', '/api/v3/topics', {
form: {
cid: testCid,
title: title,
content: 'the content',
},
jar: jar,
json: true,
});
return body.status;
}));
const failed = res.filter(res => res.value.code === 'bad-request');
const success = res.filter(res => res.value.code === 'ok');
assert.strictEqual(failed.length, 9);
assert.strictEqual(success.length, 1);
});
});
describe('.search()', () => {
@ -1926,7 +1948,7 @@ describe('User', () => {
it('should get unread count for user', async () => {
const count = await socketUser.getUnreadCount({ uid: testUid });
assert.strictEqual(count, 3);
assert.strictEqual(count, 4);
});
it('should get unread chat count 0 for guest', async () => {
@ -1949,15 +1971,15 @@ describe('User', () => {
assert.deepStrictEqual(counts, {
unreadChatCount: 0,
unreadCounts: {
'': 3,
new: 3,
unreplied: 3,
'': 4,
new: 4,
unreplied: 4,
watched: 0,
},
unreadNewTopicCount: 3,
unreadNewTopicCount: 4,
unreadNotificationCount: 0,
unreadTopicCount: 3,
unreadUnrepliedTopicCount: 3,
unreadTopicCount: 4,
unreadUnrepliedTopicCount: 4,
unreadWatchedTopicCount: 0,
});
});

Loading…
Cancel
Save