Compare commits

..

599 Commits

Author SHA1 Message Date
Misty (Bot)
91992240bd chore: incrementing version number - v1.17.0-beta.4 2021-03-20 01:48:29 +00:00
renovate[bot]
870e6c2c28 fix(deps): update dependency nodebb-theme-vanilla to v12.0.4 (#9409)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-19 21:17:40 -04:00
renovate[bot]
24be86420c fix(deps): update dependency nodebb-theme-slick to v1.4.5 (#9408)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-19 21:01:43 -04:00
renovate[bot]
b50739c175 fix(deps): update dependency nodebb-theme-persona to v11.0.6 (#9407)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-19 20:25:18 -04:00
Barış Soner Uşaklı
93c595d95e fix: #9406, update flag post tools 2021-03-19 19:39:24 -04:00
Julian Lam
d8ff9851a3 fix: typo in switch..case 2021-03-19 15:46:58 -04:00
Misty (Bot)
026ceaf3ec Latest translations and fallbacks 2021-03-19 09:07:47 +00:00
Misty (Bot)
d56bca65aa Latest translations and fallbacks 2021-03-18 09:09:57 +00:00
renovate[bot]
9359cae9cd fix(deps): update dependency nodebb-plugin-spam-be-gone to v0.7.9 (#9405)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-17 18:27:32 -04:00
Julian Lam
289bfc0b43 chore: bump composer-default 2021-03-17 17:10:59 -04:00
Barış Soner Uşaklı
801570e4cf fix: #9404, show signatures if the target user has signature privilege 2021-03-17 13:31:31 -04:00
Barış Soner Uşaklı
ee69c1f80e fix: selector 2021-03-17 13:26:37 -04:00
Barış Soner Uşaklı
75553b246c fix: sorting when filtering by uid 2021-03-17 13:14:55 -04:00
Julian Lam
98b72ca572 fix: allow local (and overridden) login strategies to pass Error objects back 2021-03-17 12:10:57 -04:00
Misty (Bot)
17693dd5ca Latest translations and fallbacks 2021-03-17 09:10:04 +00:00
Renovate Bot
47b2b97fef fix(deps): update dependency nodebb-theme-persona to v11.0.5 2021-03-17 05:36:51 +00:00
Barış Soner Uşaklı
dd12c83fa0 feat: make info page full width 2021-03-16 23:26:07 -04:00
Barış Soner Uşaklı
6aa60b63b5 fix: category search not using uid 2021-03-16 22:59:58 -04:00
Barış Soner Uşaklı
262e059fa6 fix: inf scroll with subfolder install 2021-03-16 19:40:26 -04:00
renovate[bot]
2f70ac5a91 fix(deps): update dependency nodebb-plugin-composer-default to v6.5.21 (#9401)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-16 19:24:28 -04:00
Barış Soner Uşaklı
56523aa148 revert: change toPid truthy 2021-03-16 18:02:21 -04:00
Renovate Bot
fcd887fd52 fix(deps): update dependency mongodb to v3.6.5 2021-03-16 18:39:57 +00:00
Barış Soner Uşaklı
2041b8084f fix: flicker on dashboard 2021-03-15 23:24:16 -04:00
Barış Soner Uşaklı
d14ba1f4e1 chore: up themes 2021-03-15 19:47:15 -04:00
Barış Soner Uşaklı
90d64fe1df fix: #9398, crash on post flag 2021-03-15 17:55:14 -04:00
Barış Soner Uşaklı
8d3ec23483 chore: remove node 10 2021-03-15 15:35:33 -04:00
Barış Soner Uşaklı
a8f7b24452 fix: #9395, pass all data from client to Topics.reply (#9396)
* fix: #9395, pass all data from client to Topics.reply

so plugins can set custom fields
refactor and use setDefaultPostData

* fix: circular json error

* refactor: change params
2021-03-15 15:34:05 -04:00
Julian Lam
33fbfdfe40 chore: bump composer-default to 6.5.20 2021-03-15 14:40:49 -04:00
Barış Soner Uşaklı
4ac38ab2bc fix: lint 2021-03-15 14:32:15 -04:00
Barış Soner Uşaklı
eb360351e5 fix: #9394, fix guest handles 2021-03-15 14:03:35 -04:00
Julian Lam
d1685600d3 refactor: deprecate action:script.load, use filter:script.load instead 2021-03-15 13:56:12 -04:00
Misty (Bot)
6a354db491 Latest translations and fallbacks 2021-03-15 09:10:50 +00:00
renovate[bot]
1631f159ef fix(deps): update dependency nodebb-plugin-composer-default to v6.5.19 (#9391)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-14 18:22:23 -04:00
Barış Soner Uşaklı
03e306349c fix: #9387, don't try to load undefined images 2021-03-14 15:57:08 -04:00
Barış Soner Uşaklı
5c59354c58 fix: #9389, allow admins to add themselves to private groups 2021-03-14 15:20:14 -04:00
Barış Soner Uşaklı
482641e30e fix: #9386, add missing translation string 2021-03-14 14:05:17 -04:00
Misty (Bot)
6e8b1bb9ad chore: incrementing version number - v1.17.0-beta.3 2021-03-14 16:37:13 +00:00
Barış Soner Uşaklı
ef3ec96af2 chore: add multiparty dep 2021-03-14 12:29:12 -04:00
renovate[bot]
8d40176028 fix(deps): update dependency nodebb-plugin-composer-default to v6.5.17 (#9384)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-14 11:41:06 -04:00
Barış Soner Uşaklı
4327a09d76 feat: allow optional fields argument on db.getObject(s) (#9385) 2021-03-14 11:40:54 -04:00
Misty (Bot)
754965b572 Latest translations and fallbacks 2021-03-14 09:06:43 +00:00
Barış Soner Uşaklı
f316c4d4b8 refactor: remove uncessary check 2021-03-14 00:39:11 -05:00
Barış Soner Uşaklı
e789fe8d2a fix: #9383, don't show deleted topic titles in inf scroll 2021-03-13 22:54:32 -05:00
Julian Lam
cc489708ee fix: #9378, crash on verifyToken if API Token settings not saved (null case error) 2021-03-13 21:25:27 -05:00
Renovate Bot
27facadb6a fix(deps): update dependency nodebb-theme-persona to v11.0.3 2021-03-13 22:46:40 +00:00
Misty (Bot)
0c1945dc5b chore: incrementing version number - v1.17.0-beta.2 2021-03-13 20:13:43 +00:00
Barış Soner Uşaklı
35700d1634 fix: closes #9382, fix digest topic links 2021-03-13 14:46:08 -05:00
Barış Soner Uşaklı
1e1127bd20 fix: spec 2021-03-13 14:35:26 -05:00
Barış Soner Uşaklı
668508cc37 feat: closes #9380, add category filtering and topic tools to tag page 2021-03-13 13:34:49 -05:00
Barış Soner Uşaklı
34b9aaedee feat: allow sync function (#9379)
* feat: allow sync function

* fix: remove async
2021-03-13 12:03:06 -05:00
Barış Soner Uşaklı
e725beaa4a Revert "feat: allow filter functions that return promises or the data directly"
This reverts commit e6c52cf26c.
2021-03-13 11:39:34 -05:00
Barış Soner Uşaklı
e6c52cf26c feat: allow filter functions that return promises or the data directly 2021-03-13 11:27:53 -05:00
Barış Soner Uşaklı
53f67ff396 fix: regression from filter hook change 2021-03-13 10:12:30 -05:00
Barış Soner Uşaklı
e539ff4f95 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-03-13 09:16:33 -05:00
Barış Soner Uşaklı
617f4730a0 fix: crash if unreadTopics is undefined 2021-03-13 09:16:26 -05:00
Renovate Bot
adaddde624 fix(deps): update dependency socket.io-redis to v6.1.0 2021-03-13 13:39:01 +00:00
Renovate Bot
a98e92b4ea fix(deps): update dependency nodebb-plugin-composer-default to v6.5.16 2021-03-13 11:59:23 +00:00
Misty (Bot)
df0518f934 Latest translations and fallbacks 2021-03-13 09:07:04 +00:00
Renovate Bot
28ed579b69 chore(deps): update dependency jsdom to v16.5.1 2021-03-13 06:13:26 +00:00
Barış Soner Uşaklı
5b0d068ccd Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-03-12 22:45:23 -05:00
Barış Soner Uşaklı
f45c0aab51 fix: dont crash if login el doesnt exist 2021-03-12 22:45:15 -05:00
Renovate Bot
775c3b9188 chore(deps): update dependency eslint to v7.22.0 2021-03-13 01:37:15 +00:00
Barış Soner Uşaklı
52082e1296 feat: add resolve flag to post tools 2021-03-12 16:38:05 -05:00
Julian Lam
2a939aad8d fix: regression via c1b3079d93
Also refactored privilege render logic so that it no longer needs a server-side hack to render column count
2021-03-12 14:22:16 -05:00
Julian Lam
4cbd13fd9c feat: hide revert button in ACP > Privileges until privileges change 2021-03-12 13:25:58 -05:00
Julian Lam
8472513093 fix: change notification updateCount to use client-side hooks 2021-03-12 09:25:06 -05:00
Renovate Bot
3ce731d84b chore(deps): update dependency mocha to v8.3.2 2021-03-12 13:27:28 +00:00
Misty (Bot)
6b4cd7557c Latest translations and fallbacks 2021-03-12 09:08:44 +00:00
Barış Soner Uşaklı
46270f9f20 feat: bring back static hook timeout 2021-03-11 22:56:14 -05:00
renovate[bot]
56b0bfd518 fix(deps): update dependency nodebb-plugin-markdown to v8.12.7 (#9371)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-11 22:20:27 -05:00
Barış Soner Uşaklı
39b0e0fb91 fix: tests 2021-03-11 22:12:05 -05:00
Barış Soner Uşaklı
d05d7091ae refactor: remove async.each/reduce from hooks for better stack traces 2021-03-11 21:44:37 -05:00
Barış Soner Uşaklı
0d3979efd0 refactor: use hooks.fire 2021-03-11 21:43:11 -05:00
renovate[bot]
8923d34ce7 fix(deps): update dependency nodebb-theme-vanilla to v12.0.2 (#9369)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-11 19:20:11 -05:00
renovate[bot]
fa71c483d0 fix(deps): update dependency nodebb-theme-persona to v11.0.2 (#9368)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-11 19:20:03 -05:00
Barış Soner Uşaklı
9382fc6dc5 fix: #9370, show correct teaser index if sorting is newest to oldest 2021-03-11 19:17:42 -05:00
Barış Soner Uşaklı
1982edfde3 refactor: fix variable name 2021-03-11 18:47:50 -05:00
Barış Soner Uşaklı
3c60ccfd4d feat: upgrade connect-mongo, closes https://github.com/NodeBB/NodeBB/pull/9367 2021-03-11 13:44:14 -05:00
renovate[bot]
13f3c5040a fix(deps): update socket.io packages to v4 (#9363)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-11 13:38:47 -05:00
Julian Lam
f71cb0e427 feat: pass interstital errors to individual partials as well as to registerComplete 2021-03-11 11:22:32 -05:00
Barış Soner Uşaklı
63de46c532 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-03-11 10:39:39 -05:00
Barış Soner Uşaklı
8ef38cb252 test: add missing test 2021-03-11 10:39:36 -05:00
Misty (Bot)
31872aaceb chore: incrementing version number - v1.17.0-beta.1 2021-03-11 14:52:08 +00:00
Misty (Bot)
5ec22c6845 Latest translations and fallbacks 2021-03-11 09:09:47 +00:00
Barış Soner Uşaklı
5eb3132dae feat: add filter:plugins.firehook 2021-03-10 21:43:37 -05:00
Julian Lam
98bf4064e7 refactor: account edit logic and template, closes #9364 2021-03-10 13:01:56 -05:00
Barış Soner Uşaklı
f6fa94a8ce Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-03-10 08:01:51 -05:00
Barış Soner Uşaklı
ebccc7940b fix: don't copy if src doesn't exist 2021-03-10 08:01:43 -05:00
Misty (Bot)
62bf211894 Latest translations and fallbacks 2021-03-10 09:08:35 +00:00
Barış Soner Uşaklı
754283d37b feat: copy default favicon if it doesn't exist 2021-03-09 23:22:05 -05:00
Barış Soner Uşaklı
a9b33ed39f Delete favicon.ico 2021-03-09 23:21:18 -05:00
psychobunny
771a8955a4 fix: #9362 best not to check file exists on every page load; copying favicon to uploads/system folder instead 2021-03-09 22:46:43 -05:00
psychobunny
ad5654952a fix: #9362 2021-03-09 22:32:34 -05:00
Julian Lam
678e8f0fde fix: regression where login redirect for admin routes didn't go to local=1 2021-03-09 20:50:01 -05:00
Renovate Bot
680cf5ef2a fix(deps): update dependency postcss to v8.2.8 2021-03-10 00:04:31 +00:00
Renovate Bot
2645bf555a fix(deps): update dependency nodebb-theme-persona to v10.5.17 2021-03-09 22:34:29 +00:00
Barış Soner Uşaklı
70a653d0a5 test: double filter test 2021-03-09 14:02:28 -05:00
Barış Soner Uşaklı
f4f61b92b4 fix: lint 2021-03-09 13:26:23 -05:00
Barış Soner Uşaklı
0e67ab01ca test: admin/manage/users tests 2021-03-09 13:14:59 -05:00
Barış Soner Uşaklı
2085a7d163 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-03-09 13:14:00 -05:00
Barış Soner Uşaklı
17184bface feat: add missing translation keys 2021-03-09 13:13:58 -05:00
Julian Lam
4b5450853d feat: allow missing (or non-array) middlewares argument in route helper methods 2021-03-09 10:53:06 -05:00
Renovate Bot
5945907429 fix(deps): update dependency connect-mongo to v4.3.1 2021-03-09 11:49:45 +00:00
Misty (Bot)
4a9b3af278 Latest translations and fallbacks 2021-03-09 09:08:28 +00:00
Barış Soner Uşaklı
e74df53997 feat: pass modified params, only affects filter hooks 2021-03-08 18:08:47 -05:00
Barış Soner Uşaklı
e787e6ea22 fix: if no in passed use "titles" to match header search 2021-03-08 17:59:56 -05:00
Barış Soner Uşaklı
696c489524 feat: add back topic id input 2021-03-08 17:50:58 -05:00
Julian Lam
166d65a1ba fix: add back middleware.authenticateOrGuest 2021-03-08 14:52:49 -05:00
Julian Lam
e3b2c00db1 fix: request authentication called twice in account routes 2021-03-08 14:47:55 -05:00
Julian Lam
7da061f0d7 refactor: automatically authenticate all requests setup through route helpers (#9357)
* refactor: automatically authenticate all requests setup through route helpers

* fix: removed connect-ensure-login dependency

* fix: bug with some middlewares not defined outside route helper methods
2021-03-08 14:03:22 -05:00
Renovate Bot
f388086ab9 fix(deps): update dependency connect-mongo to v4.3.0 2021-03-08 13:39:45 +00:00
Renovate Bot
fd926d6121 chore(deps): update dependency jsdom to v16.5.0 2021-03-08 01:35:19 +00:00
Misty (Bot)
4c73c26dd8 Latest translations and fallbacks 2021-03-07 09:06:34 +00:00
Barış Soner Uşaklı
3095478904 chore: bump composer 2021-03-06 15:42:34 -05:00
Barış Soner Uşaklı
8a4c361ece fix: #9354, don't close quicksearch results if mouse is down on them 2021-03-06 15:42:04 -05:00
Renovate Bot
651c629ff3 chore(deps): update dependency mocha to v8.3.1 2021-03-06 11:01:19 +00:00
Misty (Bot)
2826e29494 Latest translations and fallbacks 2021-03-06 09:06:53 +00:00
Barış Soner Uşaklı
3aa26c4df2 fix: #9339, only log email errors once per digest, notification push
show notice in acp
2021-03-05 19:03:16 -05:00
Barış Soner Uşaklı
3f42d40c78 fix: winston.info 2021-03-05 18:19:49 -05:00
Barış Soner Uşaklı
0021c6019e refactor: async listen testSocket 2021-03-05 18:18:16 -05:00
Julian Lam
c5e257888a fix: #9351 bad logic when inserting rows to privilege tables, also a missing tfoot 🦶 2021-03-05 15:09:37 -05:00
Julian Lam
c265016944 fix: app.parseAndTranslate to always return promise 2021-03-05 14:27:32 -05:00
Renovate Bot
4f4cdacc46 fix(deps): update dependency autoprefixer to v10.2.5 2021-03-05 18:23:23 +00:00
Julian Lam
bfd512b99b feat: expose username validation logic to user lib, new hook filter:username.check 2021-03-05 11:20:19 -05:00
Misty (Bot)
67bb63bd09 Latest translations and fallbacks 2021-03-05 09:13:54 +00:00
psychobunny
e5133a78f8 feat: add $.deserialize to client side 2021-03-04 20:48:29 -05:00
psychobunny
66196d2caf feat: allow for settings.save/settings.load on client side
w/ optional data-socket-get / data-socket-set params on form element for custom calls
2021-03-04 20:48:29 -05:00
Julian Lam
e755067387 docs: fixed typo 2021-03-04 13:56:45 -05:00
Barış Soner Uşaklı
902a88c25e feat: remove promise-pollyfil 2021-03-04 13:27:02 -05:00
Barış Soner Uşaklı
48bc23c065 refactor: remove startsWith/endsWith 2021-03-04 13:18:29 -05:00
Julian Lam
b5a6a3149d refactor: app.parseAndTranslate to return promise if no callback passed 2021-03-04 12:46:54 -05:00
Julian Lam
c1b3079d93 feat: category privilege API routes
closes #9342
2021-03-04 12:46:31 -05:00
Julian Lam
1e579428e7 fix: bug where fallback window trigger was not firing if there were no hook listeners attached
... so in essence the backwards compatibility was not working at all.

closes nodebb/nodebb-plugin-composer-default#147
2021-03-04 11:10:06 -05:00
Julian Lam
c8b78654d9 fix: bad assignment 2021-03-04 10:58:27 -05:00
Julian Lam
fbe9215b17 fix: #9348 incorrect redirect via connect-ensure-login 2021-03-04 10:16:21 -05:00
Misty (Bot)
b2c1b4ac45 Latest translations and fallbacks 2021-03-04 09:11:42 +00:00
Renovate Bot
72db3754d1 fix(deps): update dependency postcss to v8.2.7 2021-03-04 01:52:48 +00:00
Renovate Bot
017af7cbfd fix(deps): update dependency nodebb-plugin-composer-default to v6.5.13 2021-03-04 00:25:31 +00:00
Barış Soner Uşaklı
0af9d26fe5 feat: change uploadCroppedPicture to use updateProfile as well 2021-03-03 17:14:55 -05:00
Barış Soner Uşaklı
a598abcd8e feat: use updateProfile for picture change
so it triggers action:user:updateProfile
2021-03-03 17:11:13 -05:00
Julian Lam
f806befd2f fix: bug where loginSeconds setting was ignored for local login 2021-03-03 16:06:58 -05:00
Renovate Bot
dd6082a081 fix(deps): update dependency jquery to v3.6.0 2021-03-02 20:36:06 +00:00
Julian Lam
1155b0c42f feat: allow payload to be passed to emailer test method 2021-03-02 12:30:37 -05:00
Julian Lam
00a68a9548 feat: add additional flag hooks [breaking]
`action:flags.create` on initial flag creation
`action:flags.notify` on notification to admins and moderators
`action:flags.addReport` on flag report addition (called during initial flag create, too)
2021-03-02 10:09:30 -05:00
Renovate Bot
ec0912ccb6 fix(deps): update dependency connect-mongo to v4.2.2 2021-03-02 10:08:26 +00:00
Renovate Bot
8791b44e5f chore(deps): update dependency husky to v5.1.3 2021-03-02 05:54:09 +00:00
Barış Soner Uşaklı
069ac60f62 feat: add uid of user who created flag to action:flags.create 2021-03-01 19:02:00 -05:00
Julian Lam
7d391d4789 feat: new client-side hook filter:api.options to allow plugins to modify api requests 2021-03-01 10:57:43 -05:00
Renovate Bot
5f061b9419 chore(deps): update dependency husky to v5.1.2 2021-03-01 04:36:50 +00:00
renovate[bot]
536bae70b7 fix(deps): update dependency nodebb-plugin-spam-be-gone to v0.7.8 (#9337)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-28 21:25:52 -05:00
preetykumar
2826c6986c Update taskbar.js (#9314)
* Update taskbar.js

add aria-label to make the link text discernible to screen readers.

* place quotes around attribute value

Co-authored-by: Peter Jaszkowiak <p.jaszkow@gmail.com>
2021-02-28 17:57:19 -05:00
Peter Jaszkowiak
b9fd2c87f3 chore: bump deps (#9335)
* chore: bump deps

* fix: husky git hooks
2021-02-28 17:54:56 -05:00
Barış Soner Uşaklı
b58bacaf80 fix: remove old dep 2021-02-28 12:58:49 -05:00
Barış Soner Uşaklı
3bf8ee10d3 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-02-28 12:54:08 -05:00
Barış Soner Uşaklı
2737f6531b fix: notif pruning 2021-02-28 12:54:06 -05:00
Misty (Bot)
21377cfa2b Latest translations and fallbacks 2021-02-28 09:06:40 +00:00
Renovate Bot
42f7cd52ac chore(deps): update commitlint monorepo to v12 2021-02-27 19:49:36 -05:00
Renovate Bot
5951843712 chore(deps): update dependency eslint to v7.21.0 2021-02-28 00:29:31 +00:00
Misty (Bot)
35a3cc3461 Latest translations and fallbacks 2021-02-27 09:06:13 +00:00
Barış Soner Uşaklı
ca8176312f fix: notification prune test 2021-02-26 22:37:57 -05:00
Barış Soner Uşaklı
02f08111cf feat: keep notifs for one month, load 50 notifications instead of 30 2021-02-26 22:22:12 -05:00
Renovate Bot
2674de01dd fix(deps): update dependency nodebb-plugin-composer-default to v6.5.12 2021-02-27 00:30:04 +00:00
Julian Lam
2b7d0b5a47 fix: user icon text overflow in some cases 2021-02-26 16:12:15 -05:00
Julian Lam
114e3a1e76 fix: use components for toggleNavbar instead 2021-02-26 15:03:24 -05:00
Julian Lam
9bf94ad50f fix: allow interstitial callbacks to be functional (no cb required) 2021-02-26 09:58:54 -05:00
Barış Soner Uşaklı
cdf5d18f54 fix: don't publish before pubClient is connected 2021-02-26 08:17:45 -05:00
Renovate Bot
510eb1f981 fix(deps): update socket.io packages to v3.1.2 2021-02-26 03:44:26 +00:00
Renovate Bot
217d3afd18 fix(deps): update dependency nodebb-theme-persona to v10.5.16 2021-02-26 01:58:38 +00:00
Julian Lam
86b0c57d7a feat: also pass in uid to filter:email.prepare 2021-02-25 17:11:57 -05:00
Julian Lam
27ea3dcb2f feat: new hook filter:email.prepare 2021-02-25 17:10:56 -05:00
Julian Lam
bf90d15881 feat: new hook static:email.send
deprecates filter:email.send
2021-02-25 15:05:58 -05:00
Barış Soner Uşaklı
0dad568cbe perf: faster category tags upgrade script 2021-02-25 11:31:09 -05:00
Misty (Bot)
21634e2681 Latest translations and fallbacks 2021-02-25 09:09:24 +00:00
Renovate Bot
e820934192 fix(deps): update dependency nodebb-plugin-emoji-android to v2.0.5 2021-02-25 08:17:47 +00:00
Barış Soner Uşaklı
95033ef756 perf: use setObjectBulk 2021-02-24 21:38:00 -05:00
Barış Soner Uşaklı
a07509f770 perf: make upgrade script faster 2021-02-24 21:16:43 -05:00
Barış Soner Uşaklı
48f1e265f4 fix: remove unused async 2021-02-24 20:54:03 -05:00
Barış Soner Uşaklı
0959b1248b perf: make upgrade script faster
use bulkAdd/remove
2021-02-24 20:38:57 -05:00
Barış Soner Uşaklı
14a6c349c2 feat: show time info for upgrade scripts 2021-02-24 20:10:18 -05:00
Barış Soner Uşaklı
293b7c2650 refactor: privileges, export modules directly (#9325)
fix unused/commented out methods in admin privileges
2021-02-24 18:10:34 -05:00
Julian Lam
984c9dd915 fix: in setupPageRoute helper, buildHeader after plugin hooks have fired
To allow for a plugin to call doLogin and have it properly reflect in the header
2021-02-24 17:23:32 -05:00
Julian Lam
73dc64d9ff feat: add dashboard sub-pages to ACP menu 2021-02-24 15:28:19 -05:00
Julian Lam
655e2c67ad fix: timeago missing on table update 2021-02-24 12:52:05 -05:00
Julian Lam
0804d54759 spec: schema docs for new ACP dashboard subpage routes 2021-02-24 12:51:20 -05:00
Julian Lam
2f89b0d791 feat: recent logins sessions table in dashbaord subpage 2021-02-24 12:51:20 -05:00
Julian Lam
e1ed514b10 feat: topics dashboard details subpage 2021-02-24 12:51:20 -05:00
Julian Lam
c57c77030e feat: update user list in dashboard/users on graph update 2021-02-24 12:51:20 -05:00
Julian Lam
3fa2e3cef2 refactor: have Graph.init and Graph.update return promises 2021-02-24 12:51:20 -05:00
Julian Lam
f8e1a74c26 fix: wrong qs param, allow string to be passed to util.getDaysArray 2021-02-24 12:51:20 -05:00
Julian Lam
cc93822436 feat: show list of recent users in dashboard/users 2021-02-24 12:51:20 -05:00
Julian Lam
6fdcae7320 feat: req.query parsing and dynamically loading data instead 2021-02-24 12:51:20 -05:00
Julian Lam
f561799f74 refactor: abstract out some client side dashboard code into modules, analytics subpages for users, topics, and logins 2021-02-24 12:51:20 -05:00
Julian Lam
079a13d41a feat: new hooks for notifications get/getCount 2021-02-24 12:45:49 -05:00
Misty (Bot)
aed8b123bc Latest translations and fallbacks 2021-02-24 09:11:37 +00:00
Julian Lam
d0136074b6 feat: allow hook unregistration, and temporary page-based hooks
Temporary hooks automatically unregister themselves on the next ajaxify, making them perfect for in-page events.
2021-02-23 15:18:00 -05:00
Barış Soner Uşaklı
de6d156533 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-02-23 08:38:25 -05:00
Barış Soner Uşaklı
7ae7626c1b Revert "feat: add logout to invalid session"
This reverts commit beb1427387.
2021-02-23 08:38:23 -05:00
Misty (Bot)
49c369528d Latest translations and fallbacks 2021-02-23 09:09:21 +00:00
Peter Jaszkowiak
0d59fe3d2b fix(#9315): api v3 post, put, del JSON
also allow `app.alertError` to be called without an argument
also fix `./nodebb build --dev` to actually build in dev mode
2021-02-22 21:19:46 -05:00
Renovate Bot
c5231f10ff fix(deps): update dependency sharp to v0.27.2 2021-02-23 00:03:37 +00:00
Renovate Bot
2551295ce0 chore(deps): update dependency husky to v5.1.1 2021-02-22 21:07:20 +00:00
Julian Lam
dbe5f7027b fix: wrong call to sortedSetAdd 2021-02-22 13:31:54 -05:00
Julian Lam
16d3c45782 feat: report login statistics from analytics data, instead of its own zset 2021-02-22 13:23:25 -05:00
Julian Lam
9a9f366d3b feat: track login sessions for admin dashboard reporting 2021-02-22 11:38:26 -05:00
Julian Lam
020f0b8322 fix: session not persisting to database in some scenarios
In some edge cases (e.g. SSO plugin redirecting the user immediately), with modern browsers, the request is never "completed" for speed. This causes a condition where the session object never persists to the database, even though it has changed. This added line forces a db persist on a successful login.

Context: https://github.com/expressjs/session/pull/484
2021-02-22 11:18:30 -05:00
Julian Lam
504fd107c7 feat: track successful logins in analytics 2021-02-22 11:16:43 -05:00
Renovate Bot
dc06fe2215 chore(deps): update dependency husky to v5.1.0 2021-02-22 05:04:27 +00:00
Misty (Bot)
0bc74e7056 Latest translations and fallbacks 2021-02-21 09:06:35 +00:00
Julian Lam
beaac0a1ab fix: allow hidden inputs in user settings page 2021-02-20 15:01:50 -05:00
Misty (Bot)
cf1939e16d Latest translations and fallbacks 2021-02-20 09:06:30 +00:00
Renovate Bot
8596dcc4b5 fix(deps): update dependency nodebb-theme-vanilla to v11.4.5 2021-02-19 22:37:55 +00:00
Renovate Bot
753ab0a089 fix(deps): update dependency nodebb-theme-persona to v10.5.15 2021-02-19 21:26:10 +00:00
Misty (Bot)
b61257efc2 chore: incrementing version number - v1.17.0-beta.0 2021-02-19 19:43:25 +00:00
Julian Lam
74c14c0fa4 Revert "chore: incrementing version number - v1.16.3-beta.0"
This reverts commit 477157cc2b.
2021-02-19 14:32:38 -05:00
Misty (Bot)
477157cc2b chore: incrementing version number - v1.16.3-beta.0 2021-02-19 19:12:34 +00:00
Julian Lam
c96fd3b19b feat: pass user picture object into change_picture_modal 2021-02-19 13:39:22 -05:00
Julian Lam
28f6931e16 refactor: move picture change client-side logic to its own rjs module 2021-02-19 11:54:48 -05:00
Barış Soner Uşaklı
beb1427387 feat: add logout to invalid session 2021-02-19 11:51:28 -05:00
Barış Soner Uşaklı
cfc237c2b7 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-02-19 11:39:58 -05:00
Barış Soner Uşaklı
a592ebd1ff feat: category search test 2021-02-19 11:39:10 -05:00
Julian Lam
d3a9e76ae2 test(user): added additional tests for icon background colour 2021-02-19 11:38:48 -05:00
Julian Lam
955021247e feat(user): icon background selector in change picture modal 2021-02-19 11:38:48 -05:00
Julian Lam
fbccf6e22f refactor(user): all plugins to change list of icon background colours
One notable change is line 200, where a conditional was changed. The conditional used to check for `user.hasOwnProperty('picture')` and was added so that icons would only be included in the response if the picture was requested. This doesn't seem to apply as picture could be set regardless (see default avatar logic above), so I explicitly check `requestedFields` now.
2021-02-19 11:38:48 -05:00
Julian Lam
b4c0b32b26 fix: use root context if buildAvatar context is undefined 2021-02-19 11:38:48 -05:00
Barış Soner Uşaklı
ed3d9dcbbf feat: pass post object to filter:post.tools 2021-02-19 11:32:17 -05:00
Renovate Bot
ed503b8051 fix(deps): update dependency nodebb-theme-persona to v10.5.14 2021-02-19 12:22:10 +00:00
Misty (Bot)
e23bf9f94d Latest translations and fallbacks 2021-02-19 09:08:52 +00:00
Misty (Bot)
f9fc884867 Latest translations and fallbacks 2021-02-18 09:08:51 +00:00
Barış Soner Uşaklı
fa91525a6d fix: use bootbox module 2021-02-17 21:24:24 -05:00
Barış Soner Uşaklı
0e07f3c9ba feat: allow defining a list of system tags 2021-02-17 14:44:04 -05:00
Barış Soner Uşaklı
bbaaead09c feat: add category search test, #9307 2021-02-17 13:03:14 -05:00
Barış Soner Uşaklı
25c8f02634 fix: #9307, use _.flatten 2021-02-17 12:48:11 -05:00
Julian Lam
2fef462782 fix: awaiting res.render in send404 controller
>
> A plugin wanted to use `response:rotuer.page` to 404 a specific page on some condition. res.render returns early in send404 and so must be awaited otherwise multiple responses will be sent
2021-02-17 11:57:12 -05:00
Julian Lam
65c57c730c docs: added comment re: #9305 2021-02-17 10:52:04 -05:00
ahwayakchih
34096b73ef fix: do not overwrite config.port from URL, if it's already set
If URL was set to something like `http://example.com:8080`, and port
was set to 4567, keep listening on port 4567 and keep linking through
URL that was specified.
This allows to listen on port 4567, while having NGINX (or any proxy)
set to listen on port 8080 and route traffic to port 4567.
So NodeBB can be "hidden" behind proxy while URL can still contain
non-standard port, i.e., port different than 80 and 443.
2021-02-17 10:51:08 -05:00
Julian Lam
8686fbfa3f fix: switch back to getSortedSetRange
/cc @barisusakli
2021-02-17 10:41:57 -05:00
Misty (Bot)
ce3f581434 Latest translations and fallbacks 2021-02-17 09:08:43 +00:00
Renovate Bot
ddd8fa31d6 fix(deps): update dependency nodebb-theme-persona to v10.5.12 2021-02-17 06:48:03 +00:00
Barış Soner Uşaklı
9ce6f8ad93 feat: add tag filter to getSortedTopics 2021-02-16 23:12:10 -05:00
Barış Soner Uşaklı
5286f20862 refactor: remove dupe code 2021-02-16 22:10:26 -05:00
Julian Lam
4c078084dc test: fix spec for topic thumbs 2021-02-16 12:40:25 -05:00
Julian Lam
1d9ade4c36 test: added missing properties to topicObject 2021-02-16 12:29:11 -05:00
Julian Lam
b31f6dd24a test: added missing test file 2021-02-16 12:22:35 -05:00
Julian Lam
ad54b174a4 test: topic reordering tests 2021-02-16 12:18:25 -05:00
Julian Lam
7223074f1d feat: ability to re-order topic thumbnails 2021-02-16 11:54:09 -05:00
Julian Lam
db027170a8 feat: add close button to topic thumbnail modal 2021-02-16 11:54:09 -05:00
Misty (Bot)
2821b917d0 Latest translations and fallbacks 2021-02-16 09:09:26 +00:00
Barış Soner Uşaklı
91734a6484 fix: settings v3 2021-02-15 20:52:01 -05:00
Barış Soner Uşaklı
0738dae895 feat: #9304, add category/topic/username to post queue notification emails 2021-02-15 16:15:04 -05:00
Misty (Bot)
59885a9e2e Latest translations and fallbacks 2021-02-15 09:08:41 +00:00
Barış Soner Uşaklı
8f0386d9ac feat: add failing test for list append/prepend with list (#9303)
* feat: add failing test for list append/prepend with list

* feat: mongo/psql

* feat: improve test
2021-02-14 11:12:56 -05:00
Misty (Bot)
b5b92768e2 Latest translations and fallbacks 2021-02-14 09:06:43 +00:00
Renovate Bot
4ee3a8e876 fix(deps): update dependency benchpressjs to v2.4.1 2021-02-14 05:26:21 +00:00
Julian Lam
782bef5eec fix: another topic thumb test fix 2021-02-13 12:06:18 -05:00
Julian Lam
1ae8dda8a8 chore: extra console.log 2021-02-13 11:57:10 -05:00
Julian Lam
7ebb6d3056 fix: thumbs.associate logic fix + tests 2021-02-13 11:52:12 -05:00
Renovate Bot
7f8fd4b0f6 fix(deps): update dependency nodebb-theme-persona to v10.5.10 2021-02-13 10:51:56 +00:00
Misty (Bot)
3ad25e8ff6 Latest translations and fallbacks 2021-02-13 09:06:41 +00:00
Renovate Bot
9ec0b2ed68 chore(deps): update dependency eslint to v7.20.0 2021-02-13 08:40:39 +00:00
Barış Soner Uşaklı
7665adf7d1 fix: missing awaits, possible test fix 2021-02-13 01:43:52 -05:00
Barış Soner Uşaklı
9a6cf3d967 fix: #9301, dont call sitemapstream if there are no entries in categories/pages/topics.xml 2021-02-12 23:18:16 -05:00
Julian Lam
50664487b9 test: additional tests for topic thumbs 2021-02-12 20:43:38 -05:00
Barış Soner Uşaklı
807b0d4348 fix: properly incase its the same path 2021-02-12 20:18:47 -05:00
Barış Soner Uşaklı
76bcc0c99c fix: numThumbs count on associate 2021-02-12 20:17:43 -05:00
Julian Lam
1490b32d1b fix: missing cache deletion calls for post-queue cache
/cc @barisusakli
2021-02-12 19:57:26 -05:00
Julian Lam
3e6640efb2 refactor: thumbs.associate accepts both relative path and url in path arg 2021-02-12 17:11:32 -05:00
Julian Lam
36e8d251c8 fix: use of removed URL to get post data 2021-02-12 17:10:59 -05:00
Julian Lam
a4b4a5566d feat: link to post-queue from topic event 2021-02-12 15:15:20 -05:00
Julian Lam
8fd78ce512 feat: post-queue topic event 2021-02-12 15:10:47 -05:00
Julian Lam
3f35fd335d feat: add post-queue cache 2021-02-12 15:10:30 -05:00
Julian Lam
36f2021186 refactor: move post queue retrival code to posts.getQueuedPosts 2021-02-12 12:25:27 -05:00
Julian Lam
b81508c4e2 fix: init topic events from webserver.js 2021-02-12 11:50:43 -05:00
Julian Lam
6074a0fbbf refactor: call topic events init from within file itself 2021-02-12 10:26:50 -05:00
Julian Lam
cc275e1016 Revert "feat: newsletter opt-in/out in UCP, closes #21"
This reverts commit 3c7cd9a6c4.
2021-02-12 10:12:38 -05:00
Julian Lam
3c7cd9a6c4 feat: newsletter opt-in/out in UCP, closes #21 2021-02-12 10:11:08 -05:00
Misty (Bot)
48a3c4bd2e Latest translations and fallbacks 2021-02-12 09:08:08 +00:00
Renovate Bot
73f07958d8 chore(deps): update dependency mocha to v8.3.0 2021-02-11 23:56:24 +00:00
Barış Soner Uşaklı
3595473485 feat: load user posts/topics via xhr on infinitescroll 2021-02-11 16:47:51 -05:00
Barış Soner Uşaklı
b753c69cfe fix: check null topics 2021-02-11 14:51:17 -05:00
Barış Soner Uşaklı
58cd797e4c fix: guard against null topics 2021-02-11 14:48:29 -05:00
Barış Soner Uşaklı
fc90f32ec0 fix: tests, new categories go to top now 2021-02-11 12:58:59 -05:00
Barış Soner Uşaklı
c953b1b3d1 fix: #9292, messageobj.content already parsed 2021-02-11 12:55:00 -05:00
Barış Soner Uşaklı
4b2bf12fd1 feat: #9294, put new categories at top 2021-02-11 12:35:10 -05:00
Julian Lam
9d17f397c0 fix(remountable-routes): more fixes to remountable routes
fix: ensure proper admin privilege checking on remounted `/admin` mount

fix: guard against plugins sending back missing mounts

fix: no need to make addRemountableRoutes awaitable
2021-02-11 11:45:24 -05:00
Julian Lam
16c1d6e937 style(remountable-routes): abstract removable routes code to a separate local fn 2021-02-11 11:45:24 -05:00
Julian Lam
1f28713f1a refactor(remountable-routes): rename src/routes/accounts.js to src/routes/user.js to better match the route prefix 2021-02-11 11:45:24 -05:00
Julian Lam
bc68e990af fix(remountable-routes): bug with user routes remounting to itself 2021-02-11 11:45:24 -05:00
Julian Lam
9021f071d4 feat(remountable-routes): allow category and account routes to be remounted 2021-02-11 11:45:24 -05:00
Julian Lam
f01af62b53 feat(remountable-routes): allow /admin and /post to be remountable 2021-02-11 11:45:24 -05:00
Julian Lam
92758ec50d refactor(remountable-routes): allow certain route prefixes to be mounted elsewhere 2021-02-11 11:45:24 -05:00
Renovate Bot
5dd748c633 fix(deps): update dependency nodebb-theme-persona to v10.5.9 2021-02-11 08:48:52 -05:00
Misty (Bot)
3a61ac2119 Latest translations and fallbacks 2021-02-11 09:09:52 +00:00
Barış Soner Uşaklı
765db86d4e fix: clear category cache on copy parent 2021-02-10 22:13:35 -05:00
Barış Soner Uşaklı
ed3e9ce2e2 fix: delete category cache key on category create 2021-02-10 22:10:54 -05:00
Barış Soner Uşaklı
c61cc37bba fix: typo 2021-02-10 17:56:46 -05:00
Barış Soner Uşaklı
cf4002bcc9 perf: cache base_url 2021-02-10 17:41:39 -05:00
Barış Soner Uşaklı
5ce2820799 perf: single call to get digest topics, dont send duplicate topics 2021-02-10 17:37:22 -05:00
Julian Lam
86e911ba4b fix(deps): require xregexp 5.0.1 2021-02-10 17:05:53 -05:00
Renovate Bot
513cd1c325 fix(deps): update dependency xregexp to v5 2021-02-10 17:05:53 -05:00
Renovate Bot
54b4dc1dfa fix(deps): update dependency nodebb-theme-persona to v10.5.8 2021-02-10 17:04:04 -05:00
Renovate Bot
4d92af5a6b fix(deps): update dependency postcss to v8.2.6 2021-02-10 20:23:00 +00:00
Misty (Bot)
949f043a96 Latest translations and fallbacks 2021-02-10 09:10:53 +00:00
Barış Soner Uşaklı
90d5c9da44 perf: single db call to add all uids 2021-02-10 00:58:07 -05:00
Barış Soner Uşaklı
a5fa212fc7 fix: wait for event.log to finish before killing process 2021-02-09 23:03:02 -05:00
Barış Soner Uşaklı
0185ea1b4f perf: make digests a little bit faster
and use batch.processArray
dont load data for users who have no email or have not confirmed their emails
2021-02-09 15:27:08 -05:00
Barış Soner Uşaklı
b6493f896f fix: tests, only generate csrf_token on 404 gets 2021-02-09 12:40:29 -05:00
Barış Soner Uşaklı
2c52fbd1b9 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-02-09 12:40:08 -05:00
Barış Soner Uşaklı
1c9acef6dd chore: up composer 2021-02-09 12:27:25 -05:00
renovate[bot]
c2459fd50e fix(deps): update dependency nodebb-theme-persona to v10.5.7 (#9288)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-09 12:26:48 -05:00
Barış Soner Uşaklı
94f72d6093 fix: #9287, generate csrf_token on 404 2021-02-09 12:23:55 -05:00
Julian Lam
783786cf8c fix: do not blindly escape a notification's bodyLong
For 7+ years we were escaping this value, but it is in many cases already sanitized (as it may be a post content). For those cases when it is not, I now run it through parse.raw.

Instead of escaping, it now strips p, img, and a tags.
2021-02-09 11:16:40 -05:00
Misty (Bot)
0092df2c02 Latest translations and fallbacks 2021-02-09 09:07:34 +00:00
Renovate Bot
b312725fd3 fix(deps): update dependency nodebb-plugin-composer-default to v6.5.10 2021-02-09 06:15:04 +00:00
Renovate Bot
4599144f31 fix(deps): update dependency nodebb-theme-persona to v10.5.6 2021-02-09 02:45:52 +00:00
renovate[bot]
eb9f058fa1 fix(deps): update dependency nodebb-widget-essentials to v5.0.3 (#9284)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-08 20:14:29 -05:00
Barış Soner Uşaklı
670cde78da feat: add invalid event name to error message 2021-02-08 18:36:41 -05:00
Peter Jaszkowiak
cc9d6fd08b chore: eslint max-len 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
5c2f0f0557 chore: eslint no-restricted-syntax 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
115d19e289 chore: eslint prefer-rest-params, prefer-spread 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
23f212a4c0 chore: eslint prefer-destructuring 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
8d1462ffd8 chore: eslint object-curly-newline 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
62869bae3d chore: eslint function-paren-newline 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
dab3b23575 chore: eslint no-var, vars-on-top 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
b56d9e12b5 chore: eslint prefer-arrow-callback 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
707b55b6a5 chore: eslint prefer-template 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
4ee0f1459d chore: eslint import/newline-after-import 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
9f6a682ca9 chore: eslint no-script-url 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
dad01e3051 chore: eslint no-bitwise 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
58528d1a3e chore: eslint rules matching existing styles 2021-02-08 18:06:44 -05:00
Renovate Bot
d89ccf261b chore(deps): update dependency husky to v5 2021-02-08 16:32:40 -05:00
Renovate Bot
6e14014bfa fix(deps): update dependency nodebb-plugin-composer-default to v6.5.9 2021-02-08 16:32:32 -05:00
Julian Lam
16610b2dca fix: pass jquery object in to action:notifications.loaded hook 2021-02-08 16:29:45 -05:00
Julian Lam
7edc8f458d feat: new notifications load/loaded hooks on client side
refactored `toggleTimeagoShorthand` code to be inside of a hook listener
2021-02-08 15:26:03 -05:00
Barış Soner Uşaklı
0cca6893f3 fix: #9275, 2021-02-08 14:57:28 -05:00
Barış Soner Uşaklı
cfa0d42390 fix: don't use global bootbox obj 2021-02-08 14:37:55 -05:00
Renovate Bot
674a31d12f fix(deps): update dependency nodebb-plugin-composer-default to v6.5.8 2021-02-08 19:17:53 +00:00
Barış Soner Uşaklı
550cd995e8 fix: remove console.log 2021-02-08 12:11:13 -05:00
Barış Soner Uşaklı
622ff9cd6a Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-02-08 12:06:58 -05:00
renovate[bot]
d39235858d fix(deps): update dependency nodebb-theme-slick to v1.4.3 (#9278)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-08 12:06:21 -05:00
Barış Soner Uşaklı
fca17cb713 fix: move service worker back to relative_path/service-worker.js 2021-02-08 12:05:57 -05:00
renovate[bot]
1f28e8c31f fix(deps): update dependency nodebb-theme-vanilla to v11.4.4 (#9279)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-08 12:01:27 -05:00
renovate[bot]
a7b46adc56 fix(deps): update dependency nodebb-theme-persona to v10.5.5 (#9277)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-08 12:00:13 -05:00
renovate[bot]
83a0b6b800 fix(deps): update dependency connect-redis to v5.1.0 (#9276)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-08 11:56:16 -05:00
Barış Soner Uşaklı
ab0ef44289 fix: spec 2021-02-08 11:46:42 -05:00
Barış Soner Uşaklı
a4878a5b22 fix: markread selector 2021-02-08 11:36:36 -05:00
Renovate Bot
030ecffa15 chore(deps): update dependency lint-staged to v10.5.4 2021-02-08 15:19:34 +00:00
Misty (Bot)
429cff93ee Latest translations and fallbacks 2021-02-08 09:08:48 +00:00
Barış Soner Uşaklı
3090a2aee4 fix: position when scrolling up
if sorting is newest to oldest scrollTop wont be changed if you are at the top of the page
2021-02-07 23:19:58 -05:00
Barış Soner Uşaklı
7eebcbdbbc perf: only load thumbs for topics that actually have thumbs 2021-02-07 19:13:21 -05:00
renovate[bot]
dc14528427 fix(deps): update dependency nodebb-theme-persona to v10.5.4 (#9270)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-07 18:10:53 -05:00
renovate[bot]
2fda677457 fix(deps): update dependency nodebb-theme-vanilla to v11.4.3 (#9272)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Barış Soner Uşaklı <baris@nodebb.org>
2021-02-07 18:10:43 -05:00
Renovate Bot
2b12905df1 fix(deps): update dependency nodebb-theme-slick to v1.4.2 2021-02-07 22:59:56 +00:00
Renovate Bot
fb2f114336 fix(deps): update dependency nodebb-theme-lavender to v5.2.1 2021-02-07 21:03:03 +00:00
Barış Soner Uşaklı
47299ea587 Categories refactor (#9257)
* feat: wip categories pagination

* feat: add subCategoriesPerPage setting

* feat: add load more sub categories button to category page

* fix: openapi spec

* feat: show sub categories left on category page

hide button when no more categories left

* breaking: rename categories to allCategories on /search

categories contains the search results

* fix: spec

* refactor: remove cidsPerPage

* fix: tests

* feat: use component for subcategories

* fix: prevent negative subCategoriesLeft

* feat: new category filter/search WIP

* feat: remove categories from /tag

* fix: dont load all categories when showing move modal

* feat: allow adding custom categories to list

* breaking: dont load entire category tree on post queue

removed unused code
add hooks to filter/selector
add options to filter/selector

* feat: make selector modal work again

* feat: replace old search module

* fix: topic move selector

* feat: dont load all categories on create category modal

* fix: fix more categorySelectors

* feat: dont load entire category tree on group details page

* feat: dont load all categories on home page and user settings page

* feat: add pagination to /user/:userslug/categories

* fix: update schemas

* fix: more tests

* fix: test

* feat: flags page, dont return entire category tree

* fix: flag test

* feat: categories manage page

dont load all categories
allow changing root category
clear caches properly

* fix: spec

* feat: admins&mods page

dont load all categories

* fix: spec

* fix: dont load all children when opening dropdown

* fix: on search results dont return all children

* refactor: pass all options, rename options.cids to options.selectedCids

* fix: #9266

* fix: index 0

* fix: spec

* feat: #9265, add setObjectBulk

* refactor: shoter updateOrder

* feat: selectors on categories/category

* fix: tests and search filter

* fix: category update test

* feat: pagination on acp categories page

show order in set order modal

* fix: allow drag&drop on pages > 1 in /admin/manage/categories

* fix: teasers for deep nested categories

fix sub category display on /category page

* fix: spec

* refactor: use eslint-disable-next-line

* refactor: shorter
2021-02-07 15:09:52 -05:00
renovate[bot]
2cfab3678e fix(deps): update dependency nodebb-theme-slick to v1.4.1 (#9262)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-07 13:35:59 -05:00
renovate[bot]
2147d386be fix(deps): update socket.io packages to v3.1.1 (#9253)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-07 13:35:22 -05:00
Renovate Bot
1fa0d4f45c fix(deps): update dependency postcss to v8.2.5 2021-02-06 20:50:42 +00:00
Misty (Bot)
73c9c1c25a Latest translations and fallbacks 2021-02-06 09:06:44 +00:00
Renovate Bot
42e365d913 fix(deps): update dependency nodebb-plugin-emoji-android to v2.0.1 2021-02-06 02:39:33 +00:00
Renovate Bot
4fd6027bca fix(deps): update dependency nodebb-plugin-markdown to v8.12.6 2021-02-06 00:31:14 +00:00
Barış Soner Uşaklı
e40af441c9 fix: cache key collision 2021-02-05 16:29:56 -05:00
Renovate Bot
8a2fe3d916 fix(deps): update dependency nodebb-plugin-mentions to v2.13.7 2021-02-05 21:11:01 +00:00
Julian Lam
a6fa351b72 feat: pass req.session into buildReqObject 2021-02-05 14:31:31 -05:00
Julian Lam
4f97639009 feat: new hook action:login.continue 2021-02-05 14:31:31 -05:00
Julian Lam
5c21c33e58 fix: tests breakage due to 67e3fb6498 2021-02-05 14:31:31 -05:00
Renovate Bot
2326e9a6a7 fix(deps): update dependency nodebb-theme-vanilla to v11.4.2 2021-02-05 19:10:09 +00:00
Renovate Bot
9245ffaf16 fix(deps): update dependency nodebb-theme-persona to v10.5.3 2021-02-05 18:07:01 +00:00
Julian Lam
67e3fb6498 fix: register returnTo logic to match login route
Login route saves the previous page by checking for the X-Return-To header. This header is automatically set by ajaxify.
Login takes this value and saves it to `req.session`.

Up until now, `/register` saved the previous URL in a hidden input, and redirected based on that value, but it occasionally conflicted with req.session.returnTo. It was also confusing because it did not match how login handled the values.

This commit updates the route handling so it works identically to `/login`.
2021-02-05 11:49:48 -05:00
Misty (Bot)
9576bec6c3 Latest translations and fallbacks 2021-02-05 09:08:37 +00:00
Julian Lam
492cbc6227 fix: tests
/cc @pitaj
2021-02-04 14:34:57 -05:00
Peter Jaszkowiak
5e5d37c38f fix(#9252): pass site domain to nodemailer (#9254) 2021-02-04 12:08:14 -05:00
Misty (Bot)
4939837d5b Latest translations and fallbacks 2021-02-04 09:08:15 +00:00
Julian Lam
f79aeef889 fix: posts.uploads.sync dissociates uploaded thumbs of the main pid 2021-02-03 17:02:33 -05:00
Julian Lam
28b3013424 test: added more topic thumbnail tests
... to test for post upload tracking logic
2021-02-03 16:34:39 -05:00
Julian Lam
74be1a5963 chore: fallbacks 2021-02-03 15:26:45 -05:00
Julian Lam
68da1c558f fix: update grammar on unban text 2021-02-03 15:22:44 -05:00
Julian Lam
c729adeb08 fix: privileges page - tweak icon position and width, group name wrapping 2021-02-03 15:22:44 -05:00
gasoved
970bd06fd2 refactor: improvements 2021-02-03 15:22:44 -05:00
gasoved
53e0d4d2e0 feat: banned-users group 2021-02-03 15:22:44 -05:00
Renovate Bot
389690c3fa fix(deps): update dependency nodebb-plugin-dbsearch to v4.2.0 2021-02-03 18:14:07 +00:00
Renovate Bot
13e12c9565 fix(deps): update dependency nodebb-plugin-composer-default to v6.5.7 2021-02-03 11:40:44 -05:00
Renovate Bot
0aa8e03f34 fix(deps): update dependency json2csv to v5.0.6 2021-02-03 16:16:27 +00:00
Julian Lam
4af9c2fcdd fix: autofocus on search field in ACP > Manage > Plugins 2021-02-03 10:08:14 -05:00
Julian Lam
44019e2805 fix(deps): bump theme deps for #9244 2021-02-03 09:49:58 -05:00
gasoved
cabec378f4 fix: openapi test specs 2021-02-03 09:49:28 -05:00
gasoved
7c9674de6c fix: include admins 2021-02-03 09:49:28 -05:00
gasoved
a2a7557cc0 refactor: update dom after diff deletion better 2021-02-03 09:49:28 -05:00
gasoved
eaf9d2e44a fix: include admins, limit to category mods, correct privilege name 2021-02-03 09:49:28 -05:00
gasoved
4447a64eaa refactor: removed 3 lines 2021-02-03 09:49:28 -05:00
gasoved
72b050b4a8 test: post diff deletion tests 2021-02-03 09:49:28 -05:00
gasoved
eb642f40b9 feat: #9109, ability to delete a post's diffs 2021-02-03 09:49:28 -05:00
Misty (Bot)
a87416971b Latest translations and fallbacks 2021-02-03 09:07:44 +00:00
Renovate Bot
56e4e56b57 fix(deps): update dependency mongodb to v3.6.4 2021-02-02 23:10:49 +00:00
Julian Lam
bd5839639d fix: http 200 test for api routes 2021-02-02 12:08:31 -05:00
Julian Lam
501441b736 feat: add .delete() method to api module 2021-02-02 10:27:34 -05:00
psychobunny
58655e9a0b fix: invalid API call when unfollowing a user 2021-02-02 10:16:03 -05:00
Misty (Bot)
526df41db1 Latest translations and fallbacks 2021-02-02 09:07:11 +00:00
Barış Soner Uşaklı
833c73e81b fix: example 2021-02-01 22:21:19 -05:00
Barış Soner Uşaklı
cc560ca3f9 feat: doc add description 2021-02-01 22:08:56 -05:00
Barış Soner Uşaklı
8e85a28d85 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-02-01 22:08:51 -05:00
Renovate Bot
0441144968 fix(deps): update dependency nodebb-theme-persona to v10.5.1 2021-02-01 22:03:58 -05:00
Barış Soner Uşaklı
ed11e17129 feat: add doc for query param 2021-02-01 22:03:44 -05:00
Barış Soner Uşaklı
fffdc4e0ca feat: #9234, add pagination to /api/recent/posts/:term? 2021-02-01 21:38:26 -05:00
Opliko
2bc74cffe6 fix: #9127, scope service worker to relative_path for the forum (#9239)
Adds a `Service-Worker-Allowed` header on `assets/src/service-worker.js` URL and uses `scope` option during registration to ensure the service worker is correctly scoped to the entire forum and only the forum.
2021-02-01 19:40:14 -05:00
renovate[bot]
897d29ecd6 fix(deps): update dependency nodebb-theme-vanilla to v11.4.0 (#9238)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-01 17:52:25 -05:00
renovate[bot]
8e2deab4ad fix(deps): update dependency nodebb-theme-slick to v1.4.0 (#9237)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-01 17:50:09 -05:00
renovate[bot]
4f842a79f2 fix(deps): update dependency nodebb-theme-persona to v10.5.0 (#9236)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-01 17:33:51 -05:00
Renovate Bot
47fd1634b6 fix(deps): update dependency nodebb-theme-lavender to v5.2.0 2021-02-01 21:29:50 +00:00
Barış Soner Uşaklı
d1364c3130 Categories refactor (#9233)
* feat: wip categories pagination

* feat: add subCategoriesPerPage setting

* feat: add load more sub categories button to category page

* fix: openapi spec

* feat: show sub categories left on category page

hide button when no more categories left

* breaking: rename categories to allCategories on /search

categories contains the search results

* fix: spec

* refactor: remove cidsPerPage

* fix: tests

* feat: use component for subcategories

* fix: prevent negative subCategoriesLeft
2021-02-01 15:19:32 -05:00
Barış Soner Uşaklı
4c12e0aaf8 fix: update docs 2021-02-01 15:16:36 -05:00
Julian Lam
d6f60f4502 fix: broken test after sorted-lists logic change 2021-02-01 14:51:16 -05:00
Julian Lam
d5d24594e8 feat: allow sorted-lists on multiple pages
If multiple sorted-lists were on separate pages, saving one page would erase the sorted-lists saved on the other page. This was caused by naive deletion of the sorted-lists index on settings save.

At the same time, a bug was found where if fewer items were passed in, only that many items were removed from the database, leaving leftover orphan data in the database.

The logic now:

- Only removes sorted-lists if they are passed in (and empty)
- Deletes all sorted list items, not just the items passed in.
2021-02-01 11:47:26 -05:00
Barış Soner Uşaklı
9834f72fc7 fix: clear all locks on restart 2021-02-01 11:31:47 -05:00
Barış Soner Uşaklı
f6cd2862bd feat: #9232, add profile picture into exported zip 2021-02-01 11:31:30 -05:00
Julian Lam
5131eb6b90 fix: action:admin.settingsLoaded to use new hooks lib 2021-01-31 16:59:03 -05:00
Julian Lam
b0f5d5a594 fix: crash on firing action hook that had no listeners registered 2021-01-31 16:59:03 -05:00
Julian Lam
1a04ec6419 fix: bug where action:settings.sorted-list.loaded fired early
The hook was fired before the elements had been added to the DOM.

Also, I updated it to use the new hooks lib.
2021-01-31 16:59:03 -05:00
Julian Lam
a8be6fb8fb fix: regression where filter:settings.set no longer received sorted-lists 2021-01-31 16:59:03 -05:00
Barış Soner Uşaklı
5bc1f5b4e8 fix: #9231, fix redis pubsub connection
regression from fdfbc90255
2021-01-31 12:37:28 -05:00
Renovate Bot
3696a19970 chore(deps): update dependency eslint to v7.19.0 2021-01-31 07:07:45 +00:00
Barış Soner Uşaklı
a29dd21de4 fix: don't translate message on every ajaxify 2021-01-30 15:01:43 -05:00
Misty (Bot)
195e688bac Latest translations and fallbacks 2021-01-30 09:06:05 +00:00
Renovate Bot
1e10ebfb68 fix(deps): update dependency nodebb-plugin-dbsearch to v4.1.3 2021-01-29 23:33:20 +00:00
Julian Lam
05c53394f3 fix: tests 2021-01-29 17:05:45 -05:00
Julian Lam
7419922040 fix: improper override of req.body.username in login logic 2021-01-29 17:03:44 -05:00
Julian Lam
b820d23401 feat: new hook filter:login.override, deprecate action:auth.overrideLogin 2021-01-29 16:59:57 -05:00
Julian Lam
473d5f4aba fix: full settings hash not passed through to action:settings.set
The sorted lists were being filtered out
2021-01-29 15:18:57 -05:00
Julian Lam
eb96046e97 Revert "refactor: use Map to track sorted lists in Settings.set()"
This reverts commit 65de2e76b4.
2021-01-29 15:07:09 -05:00
Julian Lam
65de2e76b4 refactor: use Map to track sorted lists in Settings.set() 2021-01-29 15:00:14 -05:00
Baris Usakli
a5bf9779fd fix: #9223, don't overwrite stmp settings 2021-01-29 14:22:08 -05:00
Renovate Bot
0e2b329bb7 fix(deps): update dependency nodebb-plugin-composer-default to v6.5.6 2021-01-29 19:00:52 +00:00
Julian Lam
4029ec3713 fix: multiple sorted-lists do not save to the correct set 2021-01-29 13:39:00 -05:00
Renovate Bot
6c3b1fde87 fix(deps): update dependency autoprefixer to v10.2.4 2021-01-29 18:37:56 +00:00
Misty (Bot)
406faf4c66 Latest translations and fallbacks 2021-01-29 09:10:35 +00:00
Renovate Bot
05901fcd3a fix(deps): update dependency nodebb-plugin-markdown to v8.12.5 2021-01-28 23:47:56 +00:00
Julian Lam
3052256db3 chore: deprecation notices for plugins using plugin old hook methods 2021-01-28 17:15:51 -05:00
Julian Lam
15ba0abb34 docs: update deprecation-removal version for plugin hook helper methods in 1.18.0 2021-01-28 16:23:03 -05:00
Julian Lam
f8bf9e99c4 fix: pass module name to static:script.init, +comments
I feel it is difficult to know exactly what the original use-cases were for these hooks, so some comments may be helpful.
2021-01-28 16:15:04 -05:00
Julian Lam
4bb3b0323d feat: guard password fields in login/register against accidental caps lock 2021-01-28 15:00:26 -05:00
Barış Soner Uşaklı
e8429f509b fix: handle delete and update for categories:name zset 2021-01-28 10:18:09 -05:00
Misty (Bot)
53a6dca3c6 Latest translations and fallbacks 2021-01-28 09:10:07 +00:00
Renovate Bot
a9b3fb373b fix(deps): update dependency nodebb-theme-persona to v10.4.1 2021-01-28 05:36:58 +00:00
Barış Soner Uşaklı
34c42c6fa3 feat: ability to search categories, #8813 2021-01-27 22:51:22 -05:00
Barış Soner Uşaklı
faeb637353 fix: tests remove old routes 2021-01-27 20:30:33 -05:00
Barış Soner Uşaklı
d41ce87334 fix: removed object routes 2021-01-27 17:44:48 -05:00
Barış Soner Uşaklı
a1c014462c revert: bring back backwards compat 2021-01-27 17:41:07 -05:00
Barış Soner Uşaklı
647d3ba810 fix: removed methods 2021-01-27 17:36:58 -05:00
Barış Soner Uşaklı
05be1c6603 feat: restore action:script.load, allow modifying loaded module via static:script.init 2021-01-27 17:21:08 -05:00
Renovate Bot
a90773a61d fix(deps): update dependency sharp to v0.27.1 2021-01-27 22:02:21 +00:00
Julian Lam
fb84c78544 chore: remove deprecated User.emailConfirm [breaking]
Use `User.email.confirmByCode` instead.
2021-01-27 16:21:53 -05:00
Julian Lam
5a775e09dc chore: remove deprecated plugin hook filter:privileges:isUserAllowedTo [breaking]
Use `filter:privileges:isAllowedTo` instead.
2021-01-27 16:20:45 -05:00
Julian Lam
d41de481a4 chore: remove deprecated plugin hook methods [breaking]
Call plugins.hooks.fire() instead.
2021-01-27 16:18:19 -05:00
Julian Lam
cc0d562e9a chore: more removals of thumb specific backwards-compatibility [breaking] 2021-01-27 16:17:14 -05:00
Julian Lam
8b09292e77 chore: add deprecation notice in comments for ajaxify.loadExtraScripts 2021-01-27 16:10:19 -05:00
Julian Lam
5f9f241e37 chore: remove deprecated filter:admin/header.build hook [breaking]
Use `filter:middleware.renderAdminHeader` instead.
2021-01-27 16:10:19 -05:00
Julian Lam
84dfdfe659 chore: remove deprecated v2 style responses for thumbs upload route [breaking] 2021-01-27 16:10:13 -05:00
Julian Lam
2ad0d0d0d8 chore: remove deprecated getObject routes [breaking]
`/api/post/pid/:pid`, `/api/topic/tid/:tid`, `/api/category/cid/:cid` have now been removed in favour of routes in the Write API (`/api/v3/(posts|topics|categories)/:id`)
2021-01-27 16:07:00 -05:00
Julian Lam
7b090c588b fix: incorrect return for Thumbs.get() if thumbs were disabled 2021-01-27 14:33:40 -05:00
Julian Lam
7da1b43f2b fix: script failure if client-side page script does not exist 2021-01-27 14:32:15 -05:00
Julian Lam
ca14c0e2a6 fix(deps): bump persona to get timeline style 2021-01-27 14:00:14 -05:00
Julian Lam
aa8b84bb56 fix(topic-events): topicEvents.init() test 2021-01-27 13:16:49 -05:00
Julian Lam
dc84559d0b feat(topic-events): topic events GET route in write API 2021-01-27 13:16:49 -05:00
Julian Lam
449c379d22 feat(topic-events): server-side tests for topic events 2021-01-27 13:16:49 -05:00
Julian Lam
0d4a377558 feat(topic-events): clear out topic events when a topic is purged 2021-01-27 13:16:49 -05:00
Julian Lam
8e93bf7362 feat(topic-events): client-side handling on topic event log 2021-01-27 13:16:49 -05:00
Julian Lam
df2fdd56ba fix(topic-events): repeated invocations of Posts.addTopicEvents caused dupes to be added to DOM 2021-01-27 13:16:49 -05:00
Julian Lam
9559fad8ac refactor(topic-events): expose addTopicEvents method in topic posts lib
+ allow it to accept an array of events, or fall back to ajaxify data otherwise
2021-01-27 13:16:49 -05:00
Julian Lam
cec3fc934d refactor(topic-events): break out some logic in events.get into local modifyEvent method
+ events.log now returns a complete event object
2021-01-27 13:16:49 -05:00
Julian Lam
882e6a159c feat(topic-events): handle newest_to_oldest sort in topic events, WIP 2021-01-27 13:16:49 -05:00
Julian Lam
2293a07a06 feat(topic-events): generic css for timeline-event 2021-01-27 13:16:49 -05:00
Julian Lam
611d1f872d feat(topic-events): support for uids in topic event payloads 2021-01-27 13:16:49 -05:00
Julian Lam
425eca145b refactor(topic-events): fire topic event logging in topics/tools instead, pass uid into payload 2021-01-27 13:16:49 -05:00
Julian Lam
ab2e1ecb40 feat(topic-events): work in progress topic events logic and client-side implementation 2021-01-27 13:16:49 -05:00
Julian Lam
faf5960373 fix: bug where action:ajaxify.end was never called if there were no init scripts 2021-01-27 12:23:02 -05:00
Julian Lam
8e5687a4af refactor(hooks): deprecate action:script.load client-side hook
Use `static:script.init` instead.
2021-01-27 12:23:02 -05:00
Julian Lam
efff8e2ae2 fix(hooks): bug where hook firing would fail if there were no listeners 2021-01-27 12:23:02 -05:00
Julian Lam
e7bd038db1 refactor(hooks): better error handling
Hook listeners can both throw and reject, and it will be handled appropriately (e.g. filters won't fail)
2021-01-27 12:23:02 -05:00
Julian Lam
8ff07bc196 fix: update js concatenation logic to bundle scripts.rjs into minfile regardless of build environment
The slowdown is fairly insignificant (< .1s), and the only change is the minified file is identical across environments, which is better from a debugging standpoint
2021-01-27 12:23:02 -05:00
Julian Lam
1d77572117 feat(hooks): update action:ajaxify.end to use new hooks module 2021-01-27 12:23:02 -05:00
Julian Lam
412d285850 fix(hooks): fallback handling for core invocations of hooks.fire
+ .on() which is the same as .register()
2021-01-27 12:23:02 -05:00
Julian Lam
01c9b1847e feat(hooks): client-side hooks module
Similar to server-side, comes with three hook types, filter, action, and static. Behaviour also mimics server-side.
2021-01-27 12:23:02 -05:00
Misty (Bot)
42c0f9ac52 Latest translations and fallbacks 2021-01-27 09:11:26 +00:00
Misty (Bot)
39bc741bca Latest translations and fallbacks 2021-01-26 09:10:04 +00:00
Julian Lam
f975063b7d fix: #7125, allow list for page route, configurable via plugin hook 2021-01-25 16:01:10 -05:00
Julian Lam
8b72479f62 fix: remove 'filters' and 'categories' from flag details API return [breaking]
These options were originally used when the flag filters were shown in the sidebar. This has seen been removed, and so the information is now superfluous
2021-01-25 12:13:09 -05:00
Julian Lam
1603566bcc fix: filtering logic of flags [breaking]
When combining filters, the old logic assumed that every filter was
exclusive, unless that filter contained multiple items, in which
case it was added to a list of "or" filters that returned all
matching flags.

A fault was discovered in that if you passed in multiple "or"
states, it did not return flags with the expected filtering.

e.g. open flags, closed flags, flags of cid 1, flags of cid 2

This could return open flags of cid 3, since all of the filters
were "OR"'d.

This logic change updates the behaviour so disparate OR sets are
intersected (ANDed).
2021-01-25 11:29:00 -05:00
Julian Lam
942d924779 fix: error on flag list if no flag filters were saved in session 2021-01-25 11:19:16 -05:00
Julian Lam
6b1c97db79 feat: feature flag for auto-resolving a user's flags on ban [breaking]
The default behaviour has now been changed to 'off'. Going forward, a user's flags will no longer automatically resolve on ban.
2021-01-25 11:07:29 -05:00
Misty (Bot)
a396b1099c Latest translations and fallbacks 2021-01-25 09:09:10 +00:00
Julian Lam
35c92d0cff fix: mod cid filter accidentally saved in session 2021-01-24 14:23:00 -05:00
Julian Lam
ce7c74b2e1 fix: more tests for #9217 2021-01-24 14:11:47 -05:00
Julian Lam
f2a5cd0b67 fix: tests for #9217 2021-01-24 14:05:11 -05:00
Julian Lam
27cae0d5d8 fix: missing return for #9217 2021-01-24 14:01:16 -05:00
Julian Lam
b2b1450e5d fix: #9217, render 400 error page on bad access to /register 2021-01-24 13:59:16 -05:00
Misty (Bot)
06e2ef1a8e Latest translations and fallbacks 2021-01-24 09:06:49 +00:00
Misty (Bot)
65849d9b93 Latest translations and fallbacks 2021-01-23 09:06:25 +00:00
Barış Soner Uşaklı
78896fc623 fix: redis check compat tests 2021-01-23 00:04:48 -05:00
Barış Soner Uşaklı
fdfbc90255 feat: async/await redis connection 2021-01-22 23:59:52 -05:00
Barış Soner Uşaklı
33bf1b0e2c feat: async/await psql connection 2021-01-22 22:10:34 -05:00
Barış Soner Uşaklı
672959c13f feat: add group name to csv event 2021-01-22 13:14:14 -05:00
Julian Lam
a186ea0fe3 fix: registration completion overriding returnTo if it was already set 2021-01-22 10:01:42 -05:00
Julian Lam
280285cda9 feat: allow interstitial callbacks to be async functions [breaking]
This change is breaking in the sense that if you have written
interstitial callbacks before that are async functions _with_ a
callback, those are no longer allowed. You will not need to call
next() as that argument will no longer be passed in to async
functions.
2021-01-22 10:01:42 -05:00
Misty (Bot)
d1f78cb8c0 Latest translations and fallbacks 2021-01-22 09:09:56 +00:00
Renovate Bot
5b2f0be080 fix(deps): update dependency postcss to v8.2.4 2021-01-21 14:43:12 -05:00
Renovate Bot
d99cb1cf83 fix(deps): update dependency autoprefixer to v10.2.3 2021-01-21 19:22:52 +00:00
Renovate Bot
4232d97b57 fix(deps): update dependency postcss-clean to v1.2.0 2021-01-21 16:24:03 +00:00
Barış Soner Uşaklı
525fbeeb4d Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-20 20:17:12 -05:00
Barış Soner Uşaklı
5c1b742979 fix: add missing user delete event types 2021-01-20 20:16:32 -05:00
psychobunny
1c42060241 fix: missing option for user-deleteAccount on ACP Events page 2021-01-20 20:16:24 -05:00
Misty (Bot)
ea7f838170 chore: incrementing version number - v1.16.2
(cherry picked from commit 023e4cfcee)
Signed-off-by: Misty (Bot) <deploy@nodebb.org>
2021-01-21 00:43:53 +00:00
Misty (Bot)
d3883d4bd9 chore: update changelog for v1.16.2 2021-01-21 00:43:53 +00:00
renovate[bot]
b5cb2f8b9c fix(deps): update dependency bootbox to v5 (#8751)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-20 16:50:41 -05:00
Misty (Bot)
a55051de2f Latest translations and fallbacks 2021-01-20 09:09:28 +00:00
Barış Soner Uşaklı
7fb583dcfd Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-18 19:31:14 -05:00
Barış Soner Uşaklı
c608b0e8a3 fix: https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 2021-01-18 19:31:07 -05:00
Julian Lam
d85ad10d34 fix: restored sanity checks for post move socket calls 2021-01-18 15:47:15 -05:00
Julian Lam
966c4117ec refactor(api): post move to write API 2021-01-18 15:31:14 -05:00
Barış Soner Uşaklı
0fa4c11ea6 fix: don't chagne scrollTop if at the top of page 2021-01-18 14:52:52 -05:00
Julian Lam
e118e59ce0 refactor(api): post diffs to use write API 2021-01-18 14:26:22 -05:00
Barış Soner Uşaklı
c2e2370655 feat: add filter:email.cancel to allow plugins to cancel sending emails 2021-01-18 13:34:28 -05:00
Barış Soner Uşaklı
1590cdf19f fix: #9206, fix double escaped arguments 2021-01-17 20:22:46 -05:00
Julian Lam
f5fcd232f6 fix: regression caused by 77ab46686d
Access checks were added for topic GET route, but occasionally a post_uuid is passed in, which is available to everyone, and so checks should be skipped
2021-01-17 15:43:29 -05:00
Barış Soner Uşaklı
4fb907875e fix: don't crash if fullname is not a string
https://community.nodebb.org/topic/15291/upgrade-error-fullname-substr-is-not-a-function
2021-01-17 13:10:28 -05:00
Barış Soner Uşaklı
1374e0eeba refactor: change var to const 2021-01-16 12:54:11 -05:00
Barış Soner Uşaklı
7a790d1830 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-16 09:40:00 -05:00
Barış Soner Uşaklı
00ba89b6d6 fix: #9204, bypass groupname length check for system group in upgrade script 2021-01-16 09:37:32 -05:00
Renovate Bot
f16cdc9f0a fix(deps): update dependency nodebb-theme-persona to v10.3.19 2021-01-16 06:15:50 +00:00
Renovate Bot
a6f5de8690 chore(deps): update dependency husky to v4.3.8 2021-01-16 04:51:15 +00:00
Renovate Bot
afbef95f7d chore(deps): update dependency eslint to v7.18.0 2021-01-16 03:42:58 +00:00
Barış Soner Uşaklı
9938a139fe fix: add missing await 2021-01-15 14:42:19 -05:00
Barış Soner Uşaklı
ceb1566834 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-15 14:41:57 -05:00
Barış Soner Uşaklı
25ab99b91d refactor: single remove call 2021-01-15 14:41:45 -05:00
Misty (Bot)
43ff8e4197 chore: incrementing version number - v1.16.2-beta.0 2021-01-15 15:31:56 +00:00
Misty (Bot)
a972b5a77a Latest translations and fallbacks 2021-01-15 09:08:26 +00:00
Renovate Bot
3d1224e18d fix(deps): update socket.io packages to v3.1.0 2021-01-15 03:20:58 +00:00
Julian Lam
ab11435ed5 feat: grant plugins the ability to specify options to the SSO handler
... to be handled in the plugin itself (overriding the passport prototype's authorizationParams method)

+ new hook filter:auth.options
2021-01-13 16:57:48 -05:00
Julian Lam
9b289eca9d fix: ssoState passed to strategies even if not called for 2021-01-13 16:25:19 -05:00
Barış Soner Uşaklı
3d36208877 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-13 11:37:22 -05:00
Barış Soner Uşaklı
0a471b76b5 fix: use max 2021-01-13 11:37:15 -05:00
Barış Soner Uşaklı
c30b40abe7 fix: keep 60 topics minimum on topic list 2021-01-13 11:35:18 -05:00
Julian Lam
fdf0347240 style: update codeclimate config to be less sensitive to duplicate code blocks
After conversing with Dave from CodeClimate, he suggested these changes to adjust CodeClimate's detection so that it does not alert as frequently for code blocks that are similar, but functionally different. I also added a line to enforce the rule of threes, since CC often alerted only when two blocks were identical.
2021-01-13 10:26:43 -05:00
Misty (Bot)
fc3a0bd427 Latest translations and fallbacks 2021-01-13 09:08:53 +00:00
Julian Lam
77ab46686d fix: access checks for tags and thumbs get route 2021-01-12 17:38:35 -05:00
Julian Lam
c0fb1cb59c fix: #9194 global mods unable to pin or unpin topics 2021-01-12 14:02:12 -05:00
Barış Soner Uşaklı
286aa243f5 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-12 11:19:15 -05:00
Barış Soner Uşaklı
ef16cd2e6f fix: #9192, exit after logging error 2021-01-12 10:46:55 -05:00
Misty (Bot)
a26bfb3fda Latest translations and fallbacks 2021-01-12 09:08:47 +00:00
Renovate Bot
1901ecb244 fix(deps): update dependency nodebb-theme-slick to v1.3.8 2021-01-12 04:36:38 +00:00
gasoved
69419571a9 fix: make sure inviter user exists 2021-01-11 17:00:17 -05:00
Julian Lam
a407a51da6 fix: #9178 missing language strings (and fallbacks) for post-queue 2021-01-11 14:47:09 -05:00
Barış Soner Uşaklı
a82f943c76 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-11 14:35:48 -05:00
Barış Soner Uşaklı
89e6c75d58 fix: #9185, fix string boolean values 2021-01-11 14:35:23 -05:00
Julian Lam
e817d5beda fix: test for topicThumbs 2021-01-11 14:31:47 -05:00
Julian Lam
66da6bcd1c fix: #9184 proper relative_path usage in topic thumbs.get 2021-01-11 13:28:04 -05:00
Misty (Bot)
d90c7ff43b Latest translations and fallbacks 2021-01-11 09:08:27 +00:00
Misty (Bot)
6c855bf48e Latest translations and fallbacks 2021-01-10 09:08:11 +00:00
Misty (Bot)
96280d76af Latest translations and fallbacks 2021-01-09 09:07:47 +00:00
Julian Lam
b742229e59 fix: #9169, re-adding v2-style behaviour so as to not break the API... yet 2021-01-08 15:12:33 -05:00
Barış Soner Uşaklı
aa95cc7d60 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-08 14:19:37 -05:00
Barış Soner Uşaklı
eaf62d39fd fix: #9177, handled multiple deleted users properly 2021-01-08 14:19:25 -05:00
Julian Lam
4ede18ce5f fix: broken test caused by errant .pop(), missing await 2021-01-08 14:15:54 -05:00
Julian Lam
c07e1e16af feat: add unread-count badge if navigator contains /flags route 2021-01-08 14:15:54 -05:00
Julian Lam
6a1311b4bc refactor: flags lib to have a separate getFlagIdsWithFilters method
added quick filter for unresolved flags
2021-01-08 14:15:54 -05:00
Julian Lam
6cb5888c13 fix: unescape header navigation originalRoute [breaking] 2021-01-08 14:15:54 -05:00
Julian Lam
03a0e72fae refactor: split out logic dedicated to calculating unread counts, to a separate local method 2021-01-08 14:15:54 -05:00
Barış Soner Uşaklı
5cae95eb9f Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-08 13:33:00 -05:00
Barış Soner Uşaklı
d83d40cf9b fix: missing error message 2021-01-08 12:01:44 -05:00
Renovate Bot
36069da2f8 fix(deps): update dependency sortablejs to v1.13.0 2021-01-08 04:53:57 +00:00
Renovate Bot
5b3c48fd02 fix(deps): update dependency autoprefixer to v10.2.1 2021-01-08 03:17:34 +00:00
Manuel Valle
e14b67786c Solve Custom home page route error bug (#9180)
When you select Custom Route as home you get a 404 error "/custom not found" error.
This because 'homePageRoute' property was used instead of 'homePageCustom'
2021-01-07 21:44:02 -05:00
Barış Soner Uşaklı
8ece64ab82 fix: test for https://github.com/NodeBB/NodeBB/pull/9180 2021-01-07 21:42:19 -05:00
Barış Soner Uşaklı
7069735aa2 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2021-01-07 20:58:53 -05:00
Barış Soner Uşaklı
da54697075 fix: #9176, limit description size 2021-01-07 20:58:45 -05:00
Julian Lam
9534d95619 fix: broken test due to change in response code 2021-01-07 15:11:45 -05:00
Julian Lam
0da2843281 feat(api): schema definition for new credential checking route 2021-01-07 15:11:45 -05:00
Julian Lam
97d678fd2a fix: return a user object, not an array of user objects (in v3 login check route) 2021-01-07 15:11:45 -05:00
Julian Lam
8c86f5bcec fix: bad execution flow in utilities.login 2021-01-07 15:11:45 -05:00
Julian Lam
87a7d85e89 fix: missing breadcrumbs in schema 2021-01-07 15:11:45 -05:00
Julian Lam
534224133b fix: random loadFiles added by errant vscode autocompletion 2021-01-07 15:11:45 -05:00
Julian Lam
8bbb320867 feat: handle HTTP 429 as a response code 2021-01-07 15:11:45 -05:00
Julian Lam
56f929ed4f feat: add write API route for checking login credentials 2021-01-07 15:11:45 -05:00
Julian Lam
1cf0032d9f feat: allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] 2021-01-07 15:11:45 -05:00
Renovate Bot
d3e041e292 chore(deps): update dependency husky to v4.3.7 2021-01-07 04:36:33 +00:00
Barış Soner Uşaklı
6cbb77afda fix: add missing breadcrumb on /user/<slug>/categories 2021-01-06 22:00:56 -05:00
Barış Soner Uşaklı
f0dd302c77 perf: use only required calls 2021-01-06 21:25:32 -05:00
Peter Jaszkowiak
a51c5698c7 fix: --help usage info
yargs (via nconf) would exit when detecting a help flag

also improves the speed of `./nodebb help build`
2021-01-06 20:43:07 -05:00
Barış Soner Uşaklı
072a0e32d8 feat: #8813, faster category search dropdown
when you have 4k+ categories manipulating DOM becomes very slow
clone the list and manipulate it outside of DOM, replace list on DOM when search is done
add utils.debounce so list is updated slower
2021-01-06 17:04:18 -05:00
Misty (Bot)
e3cd7a2343 chore: incrementing version number - v1.16.1
(cherry picked from commit 7fb032b396)
Signed-off-by: Misty (Bot) <deploy@nodebb.org>
2021-01-06 19:17:56 +00:00
Misty (Bot)
b6d71710a0 chore: update changelog for v1.16.1 2021-01-06 19:17:56 +00:00
Julian Lam
171017c38c fix: #9130, remove timestamp prefix from thumbnail names in API response 2021-01-06 12:15:32 -05:00
Barış Soner Uşaklı
8c31afae7d feat: #9173, show installed plugin versions in ./nodebb plugins 2021-01-06 11:52:19 -05:00
Misty (Bot)
afe6d84710 Latest translations and fallbacks 2021-01-06 09:09:57 +00:00
Renovate Bot
e445ae5a7a fix(deps): update dependency autoprefixer to v10.2.0 2021-01-06 04:23:40 +00:00
Julian Lam
b9ba44edd7 fix: #9166 missing relative path in topic thumbs modal and topic list 2021-01-05 13:40:36 -05:00
Renovate Bot
fd045c67c9 fix(deps): update socket.io packages to v3.0.5 2021-01-05 13:38:31 +00:00
Barış Soner Uşaklı
0d7dfeeb86 chore: increase test timeout 2021-01-04 17:09:14 -05:00
Barış Soner Uşaklı
1968bf50f1 fix: #9163, fix total connection count on ACP
sockets.sockets is a JS map in 3.x
2021-01-04 16:58:29 -05:00
Renovate Bot
87e333b44f fix(deps): update dependency nodebb-theme-persona to v10.3.16 2021-01-04 20:20:22 +00:00
Renovate Bot
4524f825d4 fix(deps): update dependency benchpressjs to v2.4.0 2021-01-04 18:52:33 +00:00
1531 changed files with 25051 additions and 18203 deletions

View File

@@ -17,6 +17,14 @@ checks:
similar-code:
config:
threshold: 65
plugins:
duplication:
enabled: true
config:
languages:
javascript:
mass_threshold: 110
count_threshold: 3
exclude_paths:
- "public/vendor/*"
- "test/*"

191
.eslintrc
View File

@@ -5,136 +5,111 @@
},
"rules": {
// Customized
// === Configure rules for our style ===
// imports must be resolvable
"import/no-unresolved": "error",
// use single quotes,
// unless a different style allows avoiding escapes
"quotes": ["error", "single", {
"avoidEscape": true,
"allowTemplateLiterals": true
}],
// allow else-if return
"no-else-return": [ "error", { "allowElseIf": true } ],
// expressions split over multiple lines
// should break after the operator
"operator-linebreak": [ "error", "after" ],
// require arrow parens only when needed
// and whenever the body is a block
"arrow-parens": ["error", "as-needed", { "requireForBlockBody": true }],
// what variables are errors in callbacks
"handle-callback-err": [ "error","^(e$|(e|(.*(_e|E)))rr)" ],
// allow dangling commas in functions
// require them everywhere else
"comma-dangle": ["error", {
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "never"
"functions": "only-multiline"
}],
// we actually encourage `return await`
"no-return-await": "off",
"no-constant-condition": "off",
// allow `while (true)`
"no-constant-condition": ["error", { "checkLoops": false }],
// allow ignoring an error with `catch`
"no-empty": ["error", { "allowEmptyCatch": true }],
"no-underscore-dangle": "off",
"no-console": "off",
// allow `3 + 5 - 1`, but not `3 * 5 - 1`
"no-mixed-operators": ["error", { "allowSamePrecedence": true }],
// require `'use strict';`
"strict": ["error", "global"],
"consistent-return": "off",
"func-names": "off",
"no-tabs": "off",
// we actually use tabs for indentation
"indent": ["error", "tab", { "SwitchCase": 1 }],
"no-tabs": "off",
// we want `== null` to also handle undefined
"no-eq-null": "off",
"camelcase": "off",
"no-new": "off",
"no-shadow": "off",
"no-use-before-define": ["error", "nofunc"],
"no-prototype-builtins": "off",
"new-cap": "off",
// allow `for (..; i++)`
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
"object-curly-newline": "off",
"no-restricted-globals": "off",
"function-paren-newline": "off",
"import/no-unresolved": "error",
"quotes": ["error", "single", {
"avoidEscape": true,
"allowTemplateLiterals": true
// allow using functions defined later
"no-use-before-define": ["error", "nofunc"],
// require consistent newlines before and after braces
// if contents are multiline
"object-curly-newline": ["error", { "consistent": true, "multiline": true }],
// require consistent linebreaks inline function parenthesis (arguments or params)
"function-paren-newline": ["error", "consistent"],
// only require const if all parts of destructuring can be const
"prefer-const": ["error", { "destructuring": "all" }],
// don't require destructuring for arrays or assignment
"prefer-destructuring": ["error", {
"VariableDeclarator": { "array": false, "object": true },
"AssignmentExpression": { "array": false, "object": false }
}],
"no-else-return": [ "error", { "allowElseIf": true } ],
"operator-linebreak": [ "error", "after" ],
"arrow-parens": ["error", "as-needed", { "requireForBlockBody": true }],
// identical to airbnb rule, except for allowing for..of, because we want to use it
"no-restricted-syntax": [
"error",
{
"selector": "ForInStatement",
"message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array."
},
{
"selector": "LabeledStatement",
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
},
{
"selector": "WithStatement",
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
}
],
// allow lines of up to 120 characters
"max-len": ["error", { "code": 120, "tabWidth": 2, "ignoreUrls": true, "ignoreStrings": true, "ignoreTemplateLiterals": true, "ignoreRegExpLiterals": true }],
// ES6
"prefer-rest-params": "off",
"prefer-spread": "off",
"prefer-arrow-callback": "off",
"prefer-template": "off",
"no-var": "off",
// === Disable rules ===
// more liberal naming
"camelcase": "off",
"no-underscore-dangle": "off",
// don't require anonymous function names
"func-names": "off",
// allow console
"no-console": "off",
// allow new for side effects
// allow new with non-capitalized
"no-new": "off",
"new-cap": "off",
// allow shadowing variables (usually callbacks)
"no-shadow": "off",
// allow multiple empty lines in a row
"no-multiple-empty-lines": "off",
// allow not using object shorthand
"object-shorthand": "off",
"vars-on-top": "off",
"prefer-destructuring": "off",
// TODO
"consistent-return": "off",
"no-restricted-globals": "off",
"no-prototype-builtins": "off",
"import/no-extraneous-dependencies": "off",
"import/no-dynamic-require": "off",
"import/newline-after-import": "off",
"no-bitwise": "off",
"global-require": "off",
"max-len": "off",
"no-param-reassign": "off",
"no-restricted-syntax": "off",
"no-script-url": "off",
"default-case": "off",
"linebreak-style": "off",
// "no-multi-assign": "off",
// "one-var": "off",
// "no-undef": "off",
// "max-nested-callbacks": "off",
// "no-mixed-requires": "off",
// "brace-style": "off",
// "max-statements-per-line": "off",
// "no-unused-vars": "off",
// "no-mixed-spaces-and-tabs": "off",
// "no-useless-concat": "off",
// "require-jsdoc": "off",
// "eqeqeq": "off",
// "no-negated-condition": "off",
// "one-var-declaration-per-line": "off",
// "no-lonely-if": "off",
// "radix": "off",
// "no-else-return": "off",
// "no-useless-escape": "off",
// "block-scoped-var": "off",
// "operator-assignment": "off",
// "yoda": "off",
// "no-loop-func": "off",
// "no-void": "off",
// "valid-jsdoc": "off",
// "no-cond-assign": "off",
// "no-redeclare": "off",
// "no-unreachable": "off",
// "no-nested-ternary": "off",
// "operator-linebreak": "off",
// "guard-for-in": "off",
// "no-unneeded-ternary": "off",
// "no-sequences": "off",
// "no-extend-native": "off",
// "no-shadow-restricted-names": "off",
// "no-extra-boolean-cast": "off",
// "no-path-concat": "off",
// "no-unused-expressions": "off",
// "no-return-assign": "off",
// "no-restricted-modules": "off",
// "object-curly-spacing": "off",
// "indent": "off",
// "padded-blocks": "off",
// "eol-last": "off",
// "lines-around-directive": "off",
// "strict": "off",
// "comma-dangle": "off",
// "no-multi-spaces": "off",
// "quotes": "off",
// "keyword-spacing": "off",
// "no-mixed-operators": "off",
// "comma-spacing": "off",
// "no-trailing-spaces": "off",
// "key-spacing": "off",
"no-multiple-empty-lines": "off"
// "spaced-comment": "off",
// "space-in-parens": "off",
// "block-spacing": "off",
// "quote-props": "off",
// "space-unary-ops": "off",
// "no-empty": "off",
// "dot-notation": "off",
// "func-call-spacing": "off",
// "array-bracket-spacing": "off",
// "object-property-newline": "off",
// "no-continue": "off",
// "no-extra-semi": "off",
// "no-spaced-func": "off",
// "no-useless-return": "off"
"default-case": "off"
}
}

View File

@@ -21,7 +21,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
node: [10, 12, 14]
node: [12, 14]
database: [mongo-dev, mongo, redis, postgres]
include:
# only run coverage once
@@ -192,7 +192,7 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: ${{ matrix.os }}-node-${{ matrix.node }}-db-${{ matrix.database }}
parallel: true
finish:
needs: test
runs-on: ubuntu-latest

1
.husky/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
_

4
.husky/commit-msg Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit $1

4
.husky/pre-commit Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install lint-staged

View File

@@ -1,3 +1,202 @@
#### v1.16.2 (2021-01-21)
##### Breaking Changes
* unescape header navigation originalRoute [breaking] (6cb5888c)
* allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] (1cf0032d)
##### Chores
* **deps:**
* update dependency husky to v4.3.8 (a6f5de86)
* update dependency eslint to v7.18.0 (afbef95f)
* update dependency husky to v4.3.7 (d3e041e2)
* incrementing version number - v1.16.2-beta.0 (43ff8e41)
* incrementing version number - v1.16.1 (e3cd7a23)
* update changelog for v1.16.1 (b6d71710)
##### New Features
* add filter:email.cancel to allow plugins to cancel sending emails (c2e23706)
* grant plugins the ability to specify options to the SSO handler (ab11435e)
* add unread-count badge if navigator contains /flags route (c07e1e16)
* handle HTTP 429 as a response code (8bbb3208)
* add write API route for checking login credentials (56f929ed)
* #8813, faster category search dropdown (072a0e32)
* **api:** schema definition for new credential checking route (0da28432)
##### Bug Fixes
* **deps:**
* update dependency bootbox to v5 (#8751) (b5cb2f8b)
* update dependency nodebb-theme-persona to v10.3.19 (f16cdc9f)
* update socket.io packages to v3.1.0 (3d1224e1)
* update dependency nodebb-theme-slick to v1.3.8 (1901ecb2)
* update dependency sortablejs to v1.13.0 (36069da2)
* update dependency autoprefixer to v10.2.1 (5b3c48fd)
* https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 (c608b0e8)
* restored sanity checks for post move socket calls (d85ad10d)
* don't chagne scrollTop if at the top of page (0fa4c11e)
* #9206, fix double escaped arguments (1590cdf1)
* regression caused by 77ab46686db62871f149419a368c35628453884e (f5fcd232)
* don't crash if fullname is not a string (4fb90787)
* #9204, bypass groupname length check for system group in upgrade script (00ba89b6)
* add missing await (9938a139)
* ssoState passed to strategies even if not called for (9b289eca)
* use max (0a471b76)
* keep 60 topics minimum on topic list (c30b40ab)
* access checks for tags and thumbs get route (77ab4668)
* #9194 global mods unable to pin or unpin topics (c0fb1cb5)
* #9192, exit after logging error (ef16cd2e)
* make sure inviter user exists (69419571)
* #9178 missing language strings (and fallbacks) for post-queue (a407a51d)
* #9185, fix string boolean values (89e6c75d)
* test for topicThumbs (e817d5be)
* #9184 proper relative_path usage in topic thumbs.get (66da6bcd)
* #9169, re-adding v2-style behaviour so as to not break the API... yet (b742229e)
* #9177, handled multiple deleted users properly (eaf62d39)
* broken test caused by errant .pop(), missing await (4ede18ce)
* missing error message (d83d40cf)
* test for https://github.com/NodeBB/NodeBB/pull/9180 (8ece64ab)
* #9176, limit description size (da546970)
* broken test due to change in response code (9534d956)
* return a user object, not an array of user objects (in v3 login check route) (97d678fd)
* bad execution flow in utilities.login (8c86f5bc)
* missing breadcrumbs in schema (87a7d85e)
* random loadFiles added by errant vscode autocompletion (53422413)
* add missing breadcrumb on /user/<slug>/categories (6cbb77af)
* `--help` usage info (a51c5698)
##### Performance Improvements
* use only required calls (f0dd302c)
##### Refactors
* **api:**
* post move to write API (966c4117)
* post diffs to use write API (e118e59c)
* change var to const (1374e0ee)
* single remove call (25ab99b9)
* flags lib to have a separate getFlagIdsWithFilters method (6a1311b4)
* split out logic dedicated to calculating unread counts, to a separate local method (03a0e72f)
##### Code Style Changes
* update codeclimate config to be less sensitive to duplicate code blocks (fdf03472)
#### v1.16.1 (2021-01-06)
##### Chores
* increase test timeout (0d7dfeeb)
* incrementing version number - v1.16.1-beta.0 (5fcf3ea6)
* add deprecation notice to topic thumb tpl value (05d8b3c3)
* minor reordering of lines (8e5a413e)
* incrementing version number - v1.16.0 (6d01fd50)
* update changelog for v1.16.0 (1437c62f)
* **deps:**
* update dependency eslint to v7.17.0 (18ae7cf7)
* update dependency eslint to v7.16.0 (2610dfcf)
* update actions/setup-node action to v2 (#9115) (55a55ea2)
* **api:** add deprecation notices re: #9123 (cdff8d28)
##### New Features
* #9173, show installed plugin versions in ./nodebb plugins (8c31afae)
* added note that you can now upload videos (4d6ddf6d)
* automatically attempt socket.io reconnection on ajaxify (e5edbc6f)
* #9135, don't try to reconnect forever (c1ecfd1e)
* add confirmation modal when assigning admin:admins-mods privilege (d90aa958)
* allow dashes in privilege group names (5b8558e9)
* allow multiple privileges to be defined for a given admin socket call (3aa5beb8)
* rename admin middleware header hook (fcc1e24a)
* explicitly add filter:admin/header.build hook (75b1bbd0)
* fix more tests, add more routes, update api test suite (cb32e32a)
* add registration/complete route, fix some other tests (14c51e3c)
* add missing schemas for various ACP settings routes (9de35ec5)
* add missing schema for category update and deletion (d6de9253)
* add schema for api ping routes (d85181e0)
* normalize paths before comparison (df8d62ba)
* additional test to ensure any new routes added to express have a corresponding schema doc (dbe85630)
* update html-to-text closes https://github.com/NodeBB/NodeBB/pull/8810 (a2152dd1)
* **api:**
* closes #9123 category and topic routes migrated to Write API (edb8da1e)
* #9123, migrate rest of the getObject controllers to Write API (9ecfac9b)
* #9123, migrate /api/post/pid/:pid to Write API (e267f295)
* group ownership API route, switch client-side to use API route (32e36f7b)
* add schema for groups update route (98550d61)
* added schema for email unsubscribe token (4fc13377)
* **acp:**
* admin tags privilege (223f0a55)
* admins-mods privilege (fb46a8d9)
* added new admin privilege for groups management (da191341)
##### Bug Fixes
* #9130, remove timestamp prefix from thumbnail names in API response (171017c3)
* #9166 missing relative path in topic thumbs modal and topic list (b9ba44ed)
* #9163, fix total connection count on ACP (1968bf50)
* genericise .necro-post, bump persona to latest (041d45c3)
* #9126, skip base64 and long values (33290850)
* #9127, use assets path (3121215e)
* inability for admins with setting privilege to save plugin settings (a555f024)
* #9149, server-side handling of disableChatMessageEditing (895e3d93)
* #9149, incorrect client-side `disableChatMessageEditing` value for admins/gmods (d27815a8)
* #9151, dont use service worker for posts requests (20c1b684)
* #9150, fix selector so it doesn't add img-responsive to profile pics (183cabe9)
* tests (28740360)
* dont show deleted posts in navigator (931105e6)
* bug in api path existence test (501a7b77)
* #9136, fix move topic/post timeout errors (2ef72a94)
* bad assignment logic in middleware.renderHeader (34ccabe3)
* #9113, wrong path separator used in thumbs.get (da4f9118)
* email testing and settings change from ACP (2be396ff)
* removing ability to specify deprecated topic 'thumb' on topic creation (713f029d)
* #9129, event is fired on socket.io (b369dc88)
* subfolder handling in tests (bbd97ccb)
* .flat() not defined in v10, added debug router to exclusion list (6062039d)
* all tests, wrap up work (f416dc17)
* two more routes (9c2de86a)
* api tests (b9a61d2d)
* don't return deleted: 0 for ephemeral groups (600807fb)
* send fewer items to client-side for ACP settings/email page (438fa5c8)
* errors in write-api schema (c079051b)
* broken tests from last round of fixes (990f1077)
* bad error message for request body api test (a9629357)
* modify backreference test to not check router.all() calls (7fc329de)
* add missing token generation route to write api spec (eef052c1)
* trigger action:posts.edited (b7b588f5)
* **deps:**
* update dependency autoprefixer to v10.2.0 (e445ae5a)
* update socket.io packages to v3.0.5 (fd045c67)
* update dependency nodebb-theme-persona to v10.3.16 (87e333b4)
* update dependency benchpressjs to v2.4.0 (4524f825)
* update dependency nodebb-theme-persona to v10.3.15 (189be9e0)
* update dependency nodebb-widget-essentials to v5.0.2 (1dd1d3b0)
* update dependency nodebb-widget-essentials to v5.0.1 (#9144) (f55dddb2)
* update dependency nodebb-plugin-composer-default to v6.5.5 (6d980d26)
* update dependency sharp to v0.27.0 (4919e596)
* update dependency nodebb-theme-persona to v10.3.12 (37b35f7d)
* update dependency nodebb-theme-persona to v10.3.11 (db4c6863)
* **tests:** handle nested allOf blocks (77a5adb6)
* **api:**
* failing test due to missing file (3959a7bd)
* tests (80ee3dfb)
* **pwa:** #9127 service-worker.js missing on subfolder installs (b8d4709e)
##### Refactors
* **openapi:** update TopicObject component to reference TopicObjectSlim in its schema (fb3f3f72)
* **api:**
* deprecated groups update socket in favour of API lib (1cd2689c)
* update group deletion calls to use write API (e640a41a)
* schema backreference test to use map instead of reduce, properly check write-api routes (878ee067)
##### Tests
* changed test a bit to see what is going on (5f038dff)
#### v1.16.0 (2020-12-17)
##### Breaking Changes

View File

@@ -2,24 +2,27 @@
const path = require('path');
const nconf = require('nconf');
nconf.argv().env({
separator: '__',
});
const winston = require('winston');
const fork = require('child_process').fork;
const env = process.env;
var worker;
const { fork } = require('child_process');
const { env } = process;
let worker;
env.NODE_ENV = env.NODE_ENV || 'development';
const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');
const prestart = require('./src/prestart');
prestart.loadConfig(configFile);
var db = require('./src/database');
const db = require('./src/database');
module.exports = function (grunt) {
var args = [];
const args = [];
if (!grunt.option('verbose')) {
args.push('--log-level=info');
@@ -36,7 +39,7 @@ module.exports = function (grunt) {
grunt.registerTask('default', ['watch']);
grunt.registerTask('init', async function () {
var done = this.async();
const done = this.async();
let plugins = [];
if (!process.argv.includes('--core')) {
await db.init();
@@ -50,22 +53,22 @@ module.exports = function (grunt) {
}
}
const styleUpdated_Client = plugins.map(p => 'node_modules/' + p + '/*.less')
.concat(plugins.map(p => 'node_modules/' + p + '/*.css'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static|less)/**/*.less'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static)/**/*.css'));
const styleUpdated_Client = plugins.map(p => `node_modules/${p}/*.less`)
.concat(plugins.map(p => `node_modules/${p}/*.css`))
.concat(plugins.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`))
.concat(plugins.map(p => `node_modules/${p}/+(public|static)/**/*.css`));
const styleUpdated_Admin = plugins.map(p => 'node_modules/' + p + '/*.less')
.concat(plugins.map(p => 'node_modules/' + p + '/*.css'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static|less)/**/*.less'))
.concat(plugins.map(p => 'node_modules/' + p + '/+(public|static)/**/*.css'));
const styleUpdated_Admin = plugins.map(p => `node_modules/${p}/*.less`)
.concat(plugins.map(p => `node_modules/${p}/*.css`))
.concat(plugins.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`))
.concat(plugins.map(p => `node_modules/${p}/+(public|static)/**/*.css`));
const clientUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static)/**/*.js');
const serverUpdated = plugins.map(p => 'node_modules/' + p + '/*.js')
.concat(plugins.map(p => 'node_modules/' + p + '/+(lib|src)/**/*.js'));
const clientUpdated = plugins.map(p => `node_modules/${p}/+(public|static)/**/*.js`);
const serverUpdated = plugins.map(p => `node_modules/${p}/*.js`)
.concat(plugins.map(p => `node_modules/${p}/+(lib|src)/**/*.js`));
const templatesUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static|templates)/**/*.tpl');
const langUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static|languages)/**/*.json');
const templatesUpdated = plugins.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`);
const langUpdated = plugins.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`);
grunt.config(['watch'], {
styleUpdated_Client: {
@@ -161,8 +164,8 @@ module.exports = function (grunt) {
grunt.task.run('init');
grunt.event.removeAllListeners('watch');
grunt.event.on('watch', function update(action, filepath, target) {
var compiling;
grunt.event.on('watch', (action, filepath, target) => {
let compiling;
if (target === 'styleUpdated_Client') {
compiling = 'clientCSS';
} else if (target === 'styleUpdated_Admin') {
@@ -180,7 +183,7 @@ module.exports = function (grunt) {
return run();
}
require('./src/meta/build').build([compiling], function (err) {
require('./src/meta/build').build([compiling], (err) => {
if (err) {
winston.error(err.stack);
}
@@ -199,7 +202,7 @@ function addBaseThemes(plugins) {
let baseTheme;
do {
try {
baseTheme = require(themeId + '/theme').baseTheme;
baseTheme = require(`${themeId}/theme`).baseTheme;
} catch (err) {
console.log(err);
}

4
app.js
View File

@@ -22,6 +22,7 @@
require('./require-main');
const nconf = require('nconf');
nconf.argv().env({
separator: '__',
});
@@ -40,6 +41,7 @@ const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'c
const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database'));
const prestart = require('./src/prestart');
prestart.loadConfig(configFile);
prestart.setupWinston();
prestart.versionCheck();
@@ -47,7 +49,7 @@ winston.verbose('* using configuration stored in: %s', configFile);
if (!process.send) {
// If run using `node app`, log GNU copyright info along with server info
winston.info('NodeBB v' + nconf.get('version') + ' Copyright (C) 2013-' + (new Date()).getFullYear() + ' NodeBB Inc.');
winston.info(`NodeBB v${nconf.get('version')} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`);
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');

View File

@@ -25,6 +25,7 @@
"groupsExemptFromPostQueue": ["administrators", "Global Moderators"],
"minimumPostLength": 8,
"maximumPostLength": 32767,
"systemTags": "",
"minimumTagsPerTopic": 0,
"maximumTagsPerTopic": 5,
"minimumTagLength": 3,
@@ -101,6 +102,7 @@
"maxPostsPerPage": 20,
"topicsPerPage": 20,
"postsPerPage": 20,
"categoriesPerPage": 50,
"userSearchResultsPerPage": 50,
"maximumGroupNameLength": 255,
"maximumGroupTitleLength": 40,

View File

@@ -14,7 +14,7 @@ const questions = {
};
module.exports = async function (config) {
winston.info('\nNow configuring ' + config.database + ' database:');
winston.info(`\nNow configuring ${config.database} database:`);
const databaseConfig = await getDatabaseConfig(config);
return saveDatabaseConfig(config, databaseConfig);
};
@@ -40,7 +40,7 @@ async function getDatabaseConfig(config) {
}
return await promptGet(questions.postgres);
}
throw new Error('unknown database : ' + config.database);
throw new Error(`unknown database : ${config.database}`);
}
function saveDatabaseConfig(config, databaseConfig) {
@@ -79,11 +79,11 @@ function saveDatabaseConfig(config, databaseConfig) {
ssl: databaseConfig['postgres:ssl'],
};
} else {
throw new Error('unknown database : ' + config.database);
throw new Error(`unknown database : ${config.database}`);
}
const allQuestions = questions.redis.concat(questions.mongo).concat(questions.postgres);
for (var x = 0; x < allQuestions.length; x += 1) {
for (let x = 0; x < allQuestions.length; x += 1) {
delete config[allQuestions[x].name];
}

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "1.16.1-beta.0",
"version": "1.17.0-beta.4",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -11,8 +11,8 @@
"main": "app.js",
"scripts": {
"start": "node loader.js",
"lint": "npx eslint --cache ./nodebb .",
"test": "npx nyc --reporter=html --reporter=text-summary npx mocha",
"lint": "eslint --cache ./nodebb .",
"test": "nyc --reporter=html --reporter=text-summary mocha",
"coverage": "nyc report --reporter=text-lcov > ./coverage/lcov.info",
"coveralls": "nyc report --reporter=text-lcov | coveralls && rm -r coverage"
},
@@ -22,118 +22,109 @@
"test/*"
]
},
"husky": {
"hooks": {
"pre-commit": "npx lint-staged",
"commit-msg": "npx commitlint -E HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
"*.js": [
"eslint --fix",
"git add"
"eslint --fix"
]
},
"dependencies": {
"@adactive/bootstrap-tagsinput": "^0.8.2",
"ace-builds": "^1.4.9",
"archiver": "^5.0.0",
"ace-builds": "^1.4.12",
"archiver": "^5.2.0",
"async": "^3.2.0",
"autoprefixer": "10.1.0",
"autoprefixer": "10.2.5",
"bcryptjs": "2.4.3",
"benchpressjs": "2.3.0",
"benchpressjs": "2.4.1",
"body-parser": "^1.19.0",
"bootbox": "4.4.0",
"bootbox": "5.5.2",
"bootstrap": "^3.4.1",
"chart.js": "^2.9.3",
"chart.js": "^2.9.4",
"cli-graph": "^3.2.2",
"clipboard": "^2.0.6",
"colors": "^1.4.0",
"commander": "^6.0.0",
"commander": "^7.1.0",
"compare-versions": "3.6.0",
"compression": "^1.7.4",
"connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1",
"connect-mongo": "3.2.0",
"connect-mongo": "4.4.0",
"connect-multiparty": "^2.2.0",
"connect-pg-simple": "^6.1.0",
"connect-redis": "5.0.0",
"connect-pg-simple": "^6.2.1",
"connect-redis": "5.1.0",
"cookie-parser": "^1.4.5",
"cron": "^1.8.2",
"cropperjs": "^1.5.6",
"cropperjs": "^1.5.11",
"csurf": "^1.11.0",
"daemon": "^1.1.0",
"diff": "^5.0.0",
"express": "^4.17.1",
"express-session": "^1.17.0",
"express-useragent": "^1.0.13",
"graceful-fs": "^4.2.3",
"helmet": "^4.0.0",
"html-to-text": "6.0.0",
"express-session": "^1.17.1",
"express-useragent": "^1.0.15",
"graceful-fs": "^4.2.6",
"helmet": "^4.4.1",
"html-to-text": "7.0.0",
"ipaddr.js": "^2.0.0",
"jquery": "3.5.1",
"jquery": "3.6.0",
"jquery-deserialize": "2.0.0-rc1",
"jquery-form": "4.3.0",
"jquery-serializeobject": "1.0.0",
"jquery-ui": "1.12.1",
"jsesc": "3.0.2",
"json2csv": "5.0.5",
"json2csv": "5.0.6",
"jsonwebtoken": "^8.5.1",
"less": "^3.11.1",
"lodash": "^4.17.15",
"logrotate-stream": "^0.2.6",
"lodash": "^4.17.21",
"logrotate-stream": "^0.2.7",
"lru-cache": "6.0.0",
"material-design-lite": "^1.3.0",
"mime": "^2.4.4",
"mime": "^2.5.2",
"mkdirp": "^1.0.4",
"mongodb": "3.6.3",
"mongodb": "3.6.5",
"morgan": "^1.10.0",
"mousetrap": "^1.6.5",
"multiparty": "4.2.2",
"@nodebb/bootswatch": "3.4.2",
"nconf": "^0.11.0",
"nodebb-plugin-composer-default": "6.5.5",
"nodebb-plugin-dbsearch": "4.1.2",
"nodebb-plugin-emoji": "^3.3.0",
"nodebb-plugin-emoji-android": "2.0.0",
"nodebb-plugin-markdown": "8.12.4",
"nodebb-plugin-mentions": "2.13.6",
"nodebb-plugin-soundpack-default": "1.0.0",
"nodebb-plugin-spam-be-gone": "0.7.7",
"nconf": "^0.11.2",
"nodebb-plugin-composer-default": "6.5.22",
"nodebb-plugin-dbsearch": "4.2.0",
"nodebb-plugin-emoji": "^3.5.0",
"nodebb-plugin-emoji-android": "2.0.5",
"nodebb-plugin-markdown": "8.12.7",
"nodebb-plugin-mentions": "2.13.7",
"nodebb-plugin-spam-be-gone": "0.7.9",
"nodebb-rewards-essentials": "0.1.4",
"nodebb-theme-lavender": "5.0.17",
"nodebb-theme-persona": "10.3.15",
"nodebb-theme-slick": "1.3.7",
"nodebb-theme-vanilla": "11.3.10",
"nodebb-widget-essentials": "5.0.2",
"nodemailer": "^6.4.6",
"nodebb-theme-lavender": "5.2.1",
"nodebb-theme-persona": "11.0.6",
"nodebb-theme-slick": "1.4.5",
"nodebb-theme-vanilla": "12.0.4",
"nodebb-widget-essentials": "5.0.3",
"nodemailer": "^6.5.0",
"nprogress": "0.2.0",
"passport": "^0.4.1",
"passport-http-bearer": "^1.0.1",
"passport-local": "1.0.0",
"pg": "^8.0.2",
"pg-cursor": "^2.1.9",
"postcss": "8.1.10",
"postcss-clean": "1.1.0",
"promise-polyfill": "^8.1.3",
"prompt": "^1.0.0",
"pg": "^8.5.1",
"pg-cursor": "^2.5.2",
"postcss": "8.2.8",
"postcss-clean": "1.2.0",
"prompt": "^1.1.0",
"redis": "3.0.2",
"request": "2.88.2",
"request-promise-native": "^1.0.8",
"request-promise-native": "^1.0.9",
"requirejs": "2.3.6",
"rimraf": "3.0.2",
"rss": "^1.2.2",
"sanitize-html": "^2.0.0",
"semver": "^7.2.1",
"sanitize-html": "^2.3.2",
"semver": "^7.3.4",
"serve-favicon": "^2.5.0",
"sharp": "0.27.0",
"sitemap": "^6.1.0",
"sharp": "0.27.2",
"sitemap": "^6.4.0",
"slideout": "1.0.1",
"socket.io": "3.0.4",
"socket.io": "4.0.0",
"socket.io-adapter-cluster": "^1.0.1",
"socket.io-client": "3.0.4",
"socket.io-redis": "6.0.1",
"sortablejs": "1.10.2",
"spdx-license-list": "^6.1.0",
"socket.io-client": "4.0.0",
"socket.io-redis": "6.1.0",
"sortablejs": "1.13.0",
"spdx-license-list": "^6.4.0",
"spider-detector": "2.0.0",
"textcomplete": "^0.17.1",
"textcomplete.contenteditable": "^0.1.1",
@@ -145,23 +136,24 @@
"visibilityjs": "2.0.2",
"winston": "3.3.3",
"xml": "^1.0.1",
"xregexp": "^4.3.0",
"xregexp": "^5.0.1",
"yargs": "16.2.0",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@apidevtools/swagger-parser": "10.0.2",
"@commitlint/cli": "11.0.0",
"@commitlint/config-angular": "11.0.0",
"@commitlint/cli": "12.0.1",
"@commitlint/config-angular": "12.0.1",
"coveralls": "3.1.0",
"eslint": "7.17.0",
"eslint": "7.22.0",
"eslint-config-airbnb-base": "14.2.1",
"eslint-plugin-import": "2.22.1",
"grunt": "1.3.0",
"grunt-contrib-watch": "1.1.0",
"husky": "4.3.6",
"jsdom": "16.4.0",
"lint-staged": "10.5.3",
"mocha": "8.2.1",
"husky": "5.1.3",
"jsdom": "16.5.1",
"lint-staged": "10.5.4",
"mocha": "8.3.2",
"mocha-lcov-reporter": "1.3.0",
"nyc": "15.1.0",
"smtp-server": "3.8.0"
@@ -170,7 +162,7 @@
"url": "https://github.com/NodeBB/NodeBB/issues"
},
"engines": {
"node": ">=10"
"node": ">=12"
},
"maintainers": [
{

View File

@@ -8,6 +8,7 @@ const path = require('path');
const childProcess = require('child_process');
const less = require('less');
const util = require('util');
const lessRenderAsync = util.promisify(
(style, opts, cb) => less.render(String(style), opts, cb)
);
@@ -26,8 +27,8 @@ const formats = [
];
const timestampFormat = winston.format((info) => {
var dateString = new Date().toISOString() + ' [' + global.process.pid + ']';
info.level = dateString + ' - ' + info.level;
const dateString = `${new Date().toISOString()} [${global.process.pid}]`;
info.level = `${dateString} - ${info.level}`;
return info;
});
formats.push(timestampFormat());
@@ -68,10 +69,10 @@ const viewsDir = path.join(paths.baseDir, 'build/public/templates');
web.install = async function (port) {
port = port || 4567;
winston.info('Launching web installer on port ' + port);
winston.info(`Launching web installer on port ${port}`);
app.use(express.static('public', {}));
app.engine('tpl', function (filepath, options, callback) {
app.engine('tpl', (filepath, options, callback) => {
filepath = filepath.replace(/\.tpl$/, '.js');
Benchpress.__express(filepath, options, callback);
@@ -98,7 +99,7 @@ web.install = async function (port) {
function launchExpress(port) {
server = app.listen(port, function () {
server = app.listen(port, () => {
winston.info('Web installer listening on http://%s:%s', '0.0.0.0', port);
});
}
@@ -116,11 +117,9 @@ function ping(req, res) {
}
function welcome(req, res) {
var dbs = ['redis', 'mongo', 'postgres'];
var databases = dbs.map(function (databaseName) {
var questions = require('../src/database/' + databaseName).questions.filter(function (question) {
return question && !question.hideOnWebInstall;
});
const dbs = ['redis', 'mongo', 'postgres'];
const databases = dbs.map((databaseName) => {
const questions = require(`../src/database/${databaseName}`).questions.filter(question => question && !question.hideOnWebInstall);
return {
name: databaseName,
@@ -128,10 +127,10 @@ function welcome(req, res) {
};
});
var defaults = require('./data/defaults');
const defaults = require('./data/defaults');
res.render('install/index', {
url: nconf.get('url') || (req.protocol + '://' + req.get('host')),
url: nconf.get('url') || (`${req.protocol}://${req.get('host')}`),
launchUrl: launchUrl,
skipGeneralSetup: !!nconf.get('url'),
databases: databases,
@@ -151,23 +150,23 @@ function install(req, res) {
}
req.setTimeout(0);
installing = true;
var setupEnvVars = nconf.get();
for (var i in req.body) {
if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) {
setupEnvVars[i.replace(':', '__')] = req.body[i];
const setupEnvVars = nconf.get();
for (const [key, value] of Object.entries(req.body)) {
if (!process.env.hasOwnProperty(key)) {
setupEnvVars[key.replace(':', '__')] = value;
}
}
// Flatten any objects in setupEnvVars
const pushToRoot = function (parentKey, key) {
setupEnvVars[parentKey + '__' + key] = setupEnvVars[parentKey][key];
setupEnvVars[`${parentKey}__${key}`] = setupEnvVars[parentKey][key];
};
for (var j in setupEnvVars) {
if (setupEnvVars.hasOwnProperty(j) && typeof setupEnvVars[j] === 'object' && setupEnvVars[j] !== null && !Array.isArray(setupEnvVars[j])) {
Object.keys(setupEnvVars[j]).forEach(pushToRoot.bind(null, j));
delete setupEnvVars[j];
} else if (Array.isArray(setupEnvVars[j])) {
setupEnvVars[j] = JSON.stringify(setupEnvVars[j]);
for (const [parentKey, value] of Object.entries(setupEnvVars)) {
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
Object.keys(value).forEach(key => pushToRoot(parentKey, key));
delete setupEnvVars[parentKey];
} else if (Array.isArray(value)) {
setupEnvVars[parentKey] = JSON.stringify(value);
}
}
@@ -175,11 +174,11 @@ function install(req, res) {
winston.info(setupEnvVars);
launchUrl = setupEnvVars.url;
var child = require('child_process').fork('app', ['--setup'], {
const child = require('child_process').fork('app', ['--setup'], {
env: setupEnvVars,
});
child.on('close', function (data) {
child.on('close', (data) => {
installing = false;
success = data === 0;
error = data !== 0;
@@ -193,7 +192,7 @@ async function launch(req, res) {
res.json({});
server.close();
req.setTimeout(0);
var child;
let child;
if (!nconf.get('launchCmd')) {
child = childProcess.spawn('node', ['loader.js'], {
@@ -257,7 +256,7 @@ async function compileLess() {
const css = await lessRenderAsync(style, { filename: path.resolve(installSrc) });
await fs.promises.writeFile(path.join(__dirname, '../public/installer.css'), css.css);
} catch (err) {
winston.error('Unable to compile LESS: \n' + err.stack);
winston.error(`Unable to compile LESS: \n${err.stack}`);
throw err;
}
}
@@ -289,7 +288,7 @@ async function copyCSS() {
async function loadDefaults() {
const setupDefaultsPath = path.join(__dirname, '../setup.json');
try {
await fs.promises.access(setupDefaultsPath, fs.constants.F_OK | fs.constants.R_OK);
await fs.promises.access(setupDefaultsPath, fs.constants.F_OK + fs.constants.R_OK);
} catch (err) {
// setup.json not found or inaccessible, proceed with no defaults
if (err.code !== 'ENOENT') {

View File

@@ -1,46 +1,45 @@
'use strict';
var nconf = require('nconf');
var fs = require('fs');
var url = require('url');
var path = require('path');
var fork = require('child_process').fork;
var async = require('async');
var logrotate = require('logrotate-stream');
var mkdirp = require('mkdirp');
const nconf = require('nconf');
const fs = require('fs');
const url = require('url');
const path = require('path');
const { fork } = require('child_process');
const async = require('async');
const logrotate = require('logrotate-stream');
const mkdirp = require('mkdirp');
var file = require('./src/file');
var pkg = require('./package.json');
const file = require('./src/file');
const pkg = require('./package.json');
var pathToConfig = path.resolve(__dirname, process.env.CONFIG || 'config.json');
const pathToConfig = path.resolve(__dirname, process.env.CONFIG || 'config.json');
nconf.argv().env().file({
file: pathToConfig,
});
var pidFilePath = path.join(__dirname, 'pidfile');
const pidFilePath = path.join(__dirname, 'pidfile');
var outputLogFilePath = path.join(__dirname, nconf.get('logFile') || 'logs/output.log');
const outputLogFilePath = path.join(__dirname, nconf.get('logFile') || 'logs/output.log');
var logDir = path.dirname(outputLogFilePath);
const logDir = path.dirname(outputLogFilePath);
if (!fs.existsSync(logDir)) {
mkdirp.sync(path.dirname(outputLogFilePath));
}
var output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
var silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false;
var numProcs;
var workers = [];
var Loader = {
const output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
const silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false;
let numProcs;
const workers = [];
const Loader = {
timesStarted: 0,
};
var appPath = path.join(__dirname, 'app.js');
const appPath = path.join(__dirname, 'app.js');
Loader.init = function (callback) {
if (silent) {
console.log = function () {
var args = Array.prototype.slice.call(arguments);
output.write(args.join(' ') + '\n');
console.log = (...args) => {
output.write(`${args.join(' ')}\n`);
};
}
@@ -51,7 +50,7 @@ Loader.init = function (callback) {
Loader.displayStartupMessages = function (callback) {
console.log('');
console.log('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.');
console.log(`NodeBB v${pkg.version} Copyright (C) 2013-2014 NodeBB Inc.`);
console.log('This program comes with ABSOLUTELY NO WARRANTY.');
console.log('This is free software, and you are welcome to redistribute it under certain conditions.');
console.log('For the full license, please visit: http://www.gnu.org/copyleft/gpl.html');
@@ -60,23 +59,23 @@ Loader.displayStartupMessages = function (callback) {
};
Loader.addWorkerEvents = function (worker) {
worker.on('exit', function (code, signal) {
worker.on('exit', (code, signal) => {
if (code !== 0) {
if (Loader.timesStarted < numProcs * 3) {
Loader.timesStarted += 1;
if (Loader.crashTimer) {
clearTimeout(Loader.crashTimer);
}
Loader.crashTimer = setTimeout(function () {
Loader.crashTimer = setTimeout(() => {
Loader.timesStarted = 0;
}, 10000);
} else {
console.log((numProcs * 3) + ' restarts in 10 seconds, most likely an error on startup. Halting.');
console.log(`${numProcs * 3} restarts in 10 seconds, most likely an error on startup. Halting.`);
process.exit();
}
}
console.log('[cluster] Child Process (' + worker.pid + ') has exited (code: ' + code + ', signal: ' + signal + ')');
console.log(`[cluster] Child Process (${worker.pid}) has exited (code: ${code}, signal: ${signal})`);
if (!(worker.suicide || code === 0)) {
console.log('[cluster] Spinning up another process...');
@@ -84,7 +83,7 @@ Loader.addWorkerEvents = function (worker) {
}
});
worker.on('message', function (message) {
worker.on('message', (message) => {
if (message && typeof message === 'object' && message.action) {
switch (message.action) {
case 'restart':
@@ -92,12 +91,12 @@ Loader.addWorkerEvents = function (worker) {
Loader.restart();
break;
case 'pubsub':
workers.forEach(function (w) {
workers.forEach((w) => {
w.send(message);
});
break;
case 'socket.io':
workers.forEach(function (w) {
workers.forEach((w) => {
if (w !== worker) {
w.send(message);
}
@@ -110,9 +109,9 @@ Loader.addWorkerEvents = function (worker) {
Loader.start = function (callback) {
numProcs = getPorts().length;
console.log('Clustering enabled: Spinning up ' + numProcs + ' process(es).\n');
console.log(`Clustering enabled: Spinning up ${numProcs} process(es).\n`);
for (var x = 0; x < numProcs; x += 1) {
for (let x = 0; x < numProcs; x += 1) {
forkWorker(x, x === 0);
}
@@ -122,18 +121,18 @@ Loader.start = function (callback) {
};
function forkWorker(index, isPrimary) {
var ports = getPorts();
var args = [];
const ports = getPorts();
const args = [];
if (!ports[index]) {
return console.log('[cluster] invalid port for worker : ' + index + ' ports: ' + ports.length);
return console.log(`[cluster] invalid port for worker : ${index} ports: ${ports.length}`);
}
process.env.isPrimary = isPrimary;
process.env.isCluster = nconf.get('isCluster') || ports.length > 1;
process.env.port = ports[index];
var worker = fork(appPath, args, {
const worker = fork(appPath, args, {
silent: silent,
env: process.env,
});
@@ -146,20 +145,20 @@ function forkWorker(index, isPrimary) {
Loader.addWorkerEvents(worker);
if (silent) {
var output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
const output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
worker.stdout.pipe(output);
worker.stderr.pipe(output);
}
}
function getPorts() {
var _url = nconf.get('url');
const _url = nconf.get('url');
if (!_url) {
console.log('[cluster] url is undefined, please check your config.json');
process.exit();
}
var urlObject = url.parse(_url);
var port = nconf.get('PORT') || nconf.get('port') || urlObject.port || 4567;
const urlObject = url.parse(_url);
let port = nconf.get('PORT') || nconf.get('port') || urlObject.port || 4567;
if (!Array.isArray(port)) {
port = [port];
}
@@ -172,13 +171,13 @@ Loader.restart = function () {
nconf.remove('file');
nconf.use('file', { file: pathToConfig });
fs.readFile(pathToConfig, { encoding: 'utf-8' }, function (err, configFile) {
fs.readFile(pathToConfig, { encoding: 'utf-8' }, (err, configFile) => {
if (err) {
console.error('Error reading config');
throw err;
}
var conf = JSON.parse(configFile);
const conf = JSON.parse(configFile);
nconf.stores.env.readOnly = false;
nconf.set('url', conf.url);
@@ -201,13 +200,13 @@ Loader.stop = function () {
};
function killWorkers() {
workers.forEach(function (worker) {
workers.forEach((worker) => {
worker.suicide = true;
worker.kill();
});
}
fs.open(pathToConfig, 'r', function (err) {
fs.open(pathToConfig, 'r', (err) => {
if (err) {
// No config detected, kickstart web installer
fork('app');
@@ -217,7 +216,7 @@ fs.open(pathToConfig, 'r', function (err) {
if (nconf.get('daemon') !== 'false' && nconf.get('daemon') !== false) {
if (file.existsSync(pidFilePath)) {
try {
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
const pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
process.kill(pid, 0);
process.exit();
} catch (e) {
@@ -238,7 +237,7 @@ fs.open(pathToConfig, 'r', function (err) {
Loader.init,
Loader.displayStartupMessages,
Loader.start,
], function (err) {
], (err) => {
if (err) {
console.error('[loader] Error during startup');
throw err;

View File

@@ -20,15 +20,44 @@
"es6": true
},
"rules": {
"comma-dangle": ["error", {
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "never"
}],
"block-scoped-var": "off",
"no-dupe-class-members": "off",
"no-var": "off",
"object-shorthand": "off",
"prefer-arrow-callback": "off",
"prefer-spread": "off",
"prefer-object-spread": "off",
"prefer-reflect": "off",
"prefer-template": "off"
// ES6
"prefer-rest-params": "off",
"prefer-spread": "off",
"prefer-arrow-callback": "off",
"prefer-template": "off",
"no-var": "off",
"object-shorthand": "off",
"vars-on-top": "off",
"prefer-destructuring": "off",
// identical to airbnb rule
// except for allowing for..in, because for..of is unavailable on some clients
"no-restricted-syntax": [
"error",
{
"selector": "ForOfStatement",
"message": "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations."
},
{
"selector": "LabeledStatement",
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
},
{
"selector": "WithStatement",
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
}
]
},
"parserOptions": {
"ecmaVersion": 2018,

View File

@@ -2,11 +2,11 @@
"events": "أحداث",
"no-events": "لا توجد أحداث",
"control-panel": "لوحة تحكم الأحداث",
"delete-events": "Delete Events",
"filters": "Filters",
"filters-apply": "Apply Filters",
"filter-type": "Event Type",
"filter-start": "Start Date",
"filter-end": "End Date",
"filter-perPage": "Per Page"
"delete-events": "حذف الاحداث",
"filters": "تصفية",
"filters-apply": "تطبيق التصفية",
"filter-type": "نوع الحدث",
"filter-start": "تاريخ البدء",
"filter-end": "تاريخ الانتهاء",
"filter-perPage": "لكل صفحة"
}

View File

@@ -2,6 +2,7 @@
"forum-traffic": "Forum Traffic",
"page-views": "مشاهدات الصفحات",
"unique-visitors": "زائرين فريدين",
"logins": "Logins",
"new-users": "New Users",
"posts": "مشاركات",
"topics": "مواضيع",
@@ -29,6 +30,7 @@
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>هذه نسخة <strong>ماقبل الإصدار</strong> من NodeBB. قد تحدث أخطاء غير مقصودة. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
@@ -75,5 +77,12 @@
"graphs.registered-users": "مستخدمين مسجلين",
"graphs.anonymous-users": "مستخدمين مجهولين",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing"
"no-users-browsing": "No users browsing",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
}

View File

@@ -10,6 +10,7 @@
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Treat this category as a section",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -18,6 +19,7 @@
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"top-level": "Top Level",
"parent-category-none": "(None)",
"copy-parent": "Copy Parent",
"copy-settings": "Copy Settings From",
@@ -30,6 +32,7 @@
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -46,6 +49,8 @@
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",

View File

@@ -1,5 +1,9 @@
{
"dashboard": "Dashboard",
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"section-general": "عام",
"section-manage": "إدارة",

View File

@@ -1,10 +1,12 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"posts": "Post Pagination",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"max-posts-per-page": "Maximum posts per page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"max-topics-per-page": "Maximum topics per page"
"max-topics-per-page": "Maximum topics per page",
"categories-per-page": "Categories per page"
}

View File

@@ -16,5 +16,7 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0"
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,6 +1,8 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",

View File

@@ -18,5 +18,6 @@
"watching.message": "You are now watching updates from this category and all subcategories",
"notwatching.message": "You are not watching updates from this category and all subcategories",
"ignoring.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "الأقسام المُتابعة"
"watched-categories": "الأقسام المُتابعة",
"x-more-categories": "%1 more categories"
}

View File

@@ -22,6 +22,7 @@
"invalid-username-or-password": "المرجود تحديد اسم مستخدم و كلمة مرور",
"invalid-search-term": "كلمة البحث غير صحيحة",
"invalid-url": "Invalid URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
"csrf-invalid": "لم تتمكن من تسجيل الدخول. هنالك أحتمال ان جلستك انتهت. رجاءًا حاول مرة اخرى.",
"invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
@@ -83,6 +84,7 @@
"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)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "الرجاء الانتظار حتى يكتمل الرفع.",
"file-too-big": "الحد الأقصى لرفع الملفات %1 كيلو بت. رجاءًا ارفع ملف أصغر",
"guest-upload-disabled": "خاصية رفع الملفات غير مفعلة للزوار.",
@@ -133,6 +135,7 @@
"chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting",
"chat-deleted-already": "This chat message has already been deleted.",
"chat-restored-already": "This chat message has already been restored.",
"chat-room-does-not-exist": "Chat room does not exist.",
"already-voting-for-this-post": "لقد شاركت بالتصويت ، ألا تذكر؟",
"reputation-system-disabled": "نظام السمعة معطل",
"downvoting-disabled": "التصويتات السلبية معطلة",
@@ -176,5 +179,8 @@
"already-unblocked": "This user is already unblocked",
"no-connection": "There seems to be a problem with your internet connection",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"topic-event-unrecognized": "Topic event '%1' unrecognized",
"cant-set-child-as-parent": "Can't set child as parent category",
"cant-set-self-as-parent": "Can't set self as parent category"
}

View File

@@ -6,6 +6,7 @@
"assignee": "المحال إليه",
"update": "تحديث",
"updated": "تم التحديث",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"graph-label": "Daily Flags",

View File

@@ -46,7 +46,9 @@
"alert.success": "نجاح",
"alert.error": "خطأ",
"alert.banned": "محظور",
"alert.banned.message": "لقد تم حظر حسابك. سيتم تسجيل الخروج.",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.unfollow": "أنت لا تتابع %1 بعد الآن!",
"alert.follow": "أنت الآن تتابع %1!",
"users": "الأعضاء",
@@ -93,6 +95,8 @@
"guest": "زائر",
"guests": "الزوار",
"former_user": "A Former User",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "تم تحديث المنتدى",
"updated.message": "لقد تم تحديث المنتدى إلى آخر نسخة للتو. إضغط هنا لإعادة تحميل الصفحة.",
"privacy": "الخصوصية",

View File

@@ -35,8 +35,7 @@
"details.member_count": "عدد اﻷعضاء",
"details.creation_date": "تاريخ الإنشاء",
"details.description": "الوصف",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.member-post-cids": "Category IDs to display posts from",
"details.badge_preview": "معاينة الوسام",
"details.change_icon": "تغيير الأيقونة",
"details.change_label_colour": "Change Label Colour",

View File

@@ -8,5 +8,6 @@
"failed_login_attempt": "تسجيل الدخول غير ناجح",
"login_successful": "قمت بتسجيل الدخول بنجاح!",
"dont_have_account": "لا تملك حساب؟",
"logged-out-due-to-inactivity": "لقد تم تسجيل خروجك من لوحة تحكم بسبب عدم نشاطك"
"logged-out-due-to-inactivity": "لقد تم تسجيل خروجك من لوحة تحكم بسبب عدم نشاطك",
"caps-lock-enabled": "Caps Lock is enabled"
}

View File

@@ -1,3 +1,4 @@
{
"post-queue": "Post Queue",
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Post Queue</a> and enable <strong>Post Queue</strong>.",
@@ -7,5 +8,11 @@
"content": "Content",
"posted": "Posted",
"reply-to": "Reply to \"%1\"",
"content-editable": "You can click on individual content to edit before posting."
"content-editable": "Click on content to edit",
"category-editable": "Click on category to edit",
"title-editable": "Click on title to edit",
"reply": "Reply",
"topic": "Topic",
"accept": "Accept",
"reject": "Reject"
}

View File

@@ -24,5 +24,8 @@
"interstitial.errors-found": "تعذر علينا إتمام عملية التسجيل:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
"gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
}

View File

@@ -1,5 +1,6 @@
{
"topic": "موضوع",
"title": "Title",
"no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "لا توجد مشاركات!",
"post_is_deleted": "هذه المشاركة محذوفة!",
@@ -35,11 +36,19 @@
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
@@ -104,6 +113,7 @@
"move_post": "نقل المشاركة",
"post_moved": "تم نقل المشاركة",
"fork_topic": "فرع الموضوع",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "إضغط على المشاركات التي تريد تفريعها",
"fork_no_pids": "لم تختر أي مشاركة",
"no-posts-selected": "No posts selected!",
@@ -117,7 +127,8 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -125,6 +136,7 @@
"composer.submit": "حفظ",
"composer.replying_to": "الرد على %1",
"composer.new_topic": "موضوع جديد",
"composer.editing": "Editing",
"composer.uploading": "جاري الرفع",
"composer.thumb_url_label": "ألصق رابط الصورة المصغرة للموضوع",
"composer.thumb_title": "إضافة صورة مصغرة للموضوع",
@@ -152,8 +164,10 @@
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 later",
"timeago_earlier": "%1 earlier",
"first-post": "First post",

View File

@@ -84,6 +84,7 @@
"remove_cover_picture_confirm": "هل تريد بالتأكيد إزالة صورة الغلاف؟",
"crop_picture": "إقتصاص الصورة",
"upload_cropped_picture": "إقتصاص ورفع",
"avatar-background-colour": "Avatar background colour",
"settings": "خيارات",
"show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل",
@@ -135,7 +136,7 @@
"homepage": "الصفحة الرئيسية",
"homepage_description": "حدد صفحة لاستخدامها كصفحة رئيسية للمنتدى أو \"لا شيء\" لاستخدام الصفحة الرئيسية الافتراضية.",
"custom_route": "مسار الصفحة الرئيسية المخصصة",
"custom_route_help": "أدخل اسم مسار هنا، بدون أي شرطة مائلة (على سبيل المثال \"حديثة\" أو \"شائعة\")",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"sso.title": "خدمات تسجيل الدخول الموحد",
"sso.associated": "مرتبط مع",
"sso.not-associated": "انقر هنا لربط مع",

View File

@@ -2,6 +2,7 @@
"forum-traffic": "Трафик на форума",
"page-views": "Преглеждания на страниците",
"unique-visitors": "Уникални посетители",
"logins": "Вписвания",
"new-users": "Нови потребители",
"posts": "Публикации",
"topics": "Теми",
@@ -29,6 +30,7 @@
"upgrade-available": "<p>Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Това е остаряла предварителна версия на NodeBB. Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-warning": "<p>Това е версия за <strong>предварителен преглед</strong> на NodeBB. Възможно е да има неочаквани неизправности. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.</span>",
"latest-lookup-failed": "<p>Не може да бъде извършена проверка за последната налична версия на NodeBB</p>",
@@ -75,5 +77,12 @@
"graphs.registered-users": "Регистрирани потребители",
"graphs.anonymous-users": "Анонимни потребители",
"last-restarted-by": "Последно рестартиране от",
"no-users-browsing": "Няма разглеждащи потребители"
"no-users-browsing": "Няма разглеждащи потребители",
"back-to-dashboard": "Назад към таблото",
"details.no-users": "В избрания период не са се регистрирали нови потребители",
"details.no-topics": "В избрания период не са публикувани нови теми",
"details.no-logins": "В избрания период не са отчетени вписвания",
"details.logins-static": "NodeBB запазва данни за сесията в продължение на %1 дни, така че в следната таблица могат да се видят само последните активни сесии",
"details.logins-login-time": "Време на вписване"
}

View File

@@ -10,6 +10,7 @@
"custom-class": "Персонализиран клас",
"num-recent-replies": "Брой на скорошните отговори",
"ext-link": "Външна връзка",
"subcategories-per-page": "Брой подкатегории на страница",
"is-section": "Използване на тази категория като раздел",
"post-queue": "Опашка за публикации",
"tag-whitelist": "Списък от разрешени етикети",
@@ -18,6 +19,7 @@
"category-image": "Изображение на категорията",
"parent-category": "Базова категория",
"optional-parent-category": "(Незадължително) Базова категория",
"top-level": "Най-горно ниво",
"parent-category-none": "(Няма)",
"copy-parent": "Копиране на базовата",
"copy-settings": "Копиране на настройките от",
@@ -30,6 +32,7 @@
"edit": "Редактиране",
"analytics": "Анализи",
"view-category": "Преглед на категорията",
"set-order": "Запазване на реда",
"select-category": "Изберете категория",
"set-parent-category": "Задайте базова категория",
@@ -46,6 +49,8 @@
"privileges.no-users": "В тази категория няма правомощия за отделни потребители.",
"privileges.section-group": "Група",
"privileges.group-private": "Тази група е частна",
"privileges.inheritance-exception": "Тази група не наследява правомощията от групата на регистрираните потребители",
"privileges.banned-user-inheritance": "Блокираните потребители наследяват правомощията от групата на блокираните потребители",
"privileges.search-group": "Добавяне на група",
"privileges.copy-to-children": "Копиране в наследниците",
"privileges.copy-from-category": "Копиране от категория",

View File

@@ -1,5 +1,9 @@
{
"dashboard": "Табло",
"section-dashboard": "Табла",
"dashboard/overview": "Общ преглед",
"dashboard/logins": "Вписвания",
"dashboard/users": "Потребители",
"dashboard/topics": "Теми",
"section-general": "Общи",
"section-manage": "Управление",

View File

@@ -1,10 +1,12 @@
{
"pagination": "Настройки за страницирането",
"enable": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно.",
"posts": "Странициране в публикациите",
"topics": "Странициране в темите",
"posts-per-page": "Публикации на страница",
"max-posts-per-page": "Максимален брой публикации на страница",
"categories": "Странициране на категориите",
"topics-per-page": "Теми на страница",
"max-topics-per-page": "Максимален брой теми на страница"
"max-topics-per-page": "Максимален брой теми на страница",
"categories-per-page": "Брой категории на страница"
}

View File

@@ -16,5 +16,7 @@
"flags": "Настройки за докладите",
"flags.limit-per-target": "Максимален брой докладвания на едно и също нещо",
"flags.limit-per-target-placeholder": "По подразбиране: 0"
"flags.limit-per-target-placeholder": "По подразбиране: 0",
"flags.limit-per-target-help": "Когато публикация или потребител бъде докладван няколко пъти, това се добавя към един общ доклад. Задайте на тази настройка стойност по-голяма от нула, за да ограничите броя на докладванията, които могат да бъдат натрупани към една публикация или потребител.",
"flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран"
}

View File

@@ -1,6 +1,8 @@
{
"tag": "Настройки за етикетите",
"link-to-manage": "Управление на етикетите",
"system-tags": "Системни етикети",
"system-tags-help": "Само потребителите с по-високи правомощия ще могат да използват тези етикети.",
"min-per-topic": "Минимален брой етикети за тема",
"max-per-topic": "Максимален брой етикети за тема",
"min-length": "Минимална дължина на етикетите",

View File

@@ -18,5 +18,6 @@
"watching.message": "Вече следите новите неща в категорията и подкатегориите ѝ",
"notwatching.message": "Вече не следите новите неща в категорията и подкатегориите ѝ",
"ignoring.message": "Вече пренебрегвате новите неща в тази категория и всички нейни подкатегории",
"watched-categories": "Следени категории"
"watched-categories": "Следени категории",
"x-more-categories": "Още %1 категории"
}

View File

@@ -22,6 +22,7 @@
"invalid-username-or-password": "Моля, въведете потребителско име и парола",
"invalid-search-term": "Грешен текст за търсене",
"invalid-url": "Грешен адрес",
"invalid-event": "Грешно събитие: %1",
"local-login-disabled": "Системата за местно вписване е изключена за непривилегированите акаунти.",
"csrf-invalid": "Не успяхме да Ви впишем, най-вероятно защото сесията Ви е изтекла. Моля, опитайте отново",
"invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2",
@@ -83,6 +84,7 @@
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
"not-enough-tags": "Недостатъчно етикети. Темите трябва да имат поне %1 етикет(а)",
"too-many-tags": "Твърде много етикети. Темите не могат да имат повече от %1 етикет(а)",
"cant-use-system-tag": "Не можете да използвате този системен етикет.",
"still-uploading": "Моля, изчакайте качването да приключи.",
"file-too-big": "Максималният разрешен размер на файл е %1 КБ моля, качете по-малък файл",
"guest-upload-disabled": "Качването не е разрешено за гости",
@@ -133,6 +135,7 @@
"chat-delete-duration-expired": "Можете да изтривате съобщенията си в разговорите до %1 секунда/и след пускането им",
"chat-deleted-already": "Това съобщение вече е изтрито.",
"chat-restored-already": "Това съобщение вече е възстановено.",
"chat-room-does-not-exist": "Стаята за разговори не съществува.",
"already-voting-for-this-post": "Вече сте дали глас за тази публикация.",
"reputation-system-disabled": "Системата за репутация е изключена.",
"downvoting-disabled": "Отрицателното гласуване е изключено",
@@ -176,5 +179,8 @@
"already-unblocked": "Този потребител вече е отблокиран",
"no-connection": "Изглежда има проблем с връзката Ви с Интернет",
"socket-reconnect-failed": "В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.",
"plugin-not-whitelisted": "Добавката не може да бъде инсталирана само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP"
"plugin-not-whitelisted": "Добавката не може да бъде инсталирана само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP",
"topic-event-unrecognized": "Събитието „%1“ на темата е неизвестно",
"cant-set-child-as-parent": "Дъщерна категория не може да се зададе като базова такава",
"cant-set-self-as-parent": "Категорията не може да се зададе като базова категория на себе си"
}

View File

@@ -6,6 +6,7 @@
"assignee": "Назначен",
"update": "Обновяване",
"updated": "Обновено",
"resolved": "Resolved",
"target-purged": "Съдържанието, за което се отнася този доклад, е било изтрито и вече не е налично.",
"graph-label": "Дневни етикети",

View File

@@ -46,7 +46,9 @@
"alert.success": "Готово",
"alert.error": "Грешка",
"alert.banned": "Блокиран",
"alert.banned.message": "Вие току-що бяхте блокиран. Сега ще излезете от системата.",
"alert.banned.message": "Вие току-що бяхте блокиран. Достъпът Ви до системата е ограничен.",
"alert.unbanned": "Деблокиран",
"alert.unbanned.message": "Блокирането Ви беше премахнато",
"alert.unfollow": "Вие вече не следвате %1!",
"alert.follow": "Вие следвате %1!",
"users": "Потребители",
@@ -93,6 +95,8 @@
"guest": "Гост",
"guests": "Гости",
"former_user": "Бивш потребител",
"system-user": "Системен",
"unknown-user": "Непознат потребител",
"updated.title": "Форумът е актуализиран",
"updated.message": "Този форум току-що беше актуализиран до най-новата версия. Натиснете тук, за да опресните страницата.",
"privacy": "Поверителност",

View File

@@ -35,8 +35,7 @@
"details.member_count": "Брой на членовете",
"details.creation_date": "Дата на създаване",
"details.description": "Описание",
"details.member-post-cids": "Категории, от които да се показват публикации",
"details.member-post-cids-help": "<strong>Забележка</strong>: Ако не изберете нито една категория, ще се смята, че са включени всички категории. Използвайте <code>CTRL</code> и <code>SHIFT</code>, за да изберете няколко възможности.",
"details.member-post-cids": "Идентификатори на категории, от които да се показват публикации",
"details.badge_preview": "Преглед на емблемата",
"details.change_icon": "Промяна на иконката",
"details.change_label_colour": "Промяна на цвета на етикета",

View File

@@ -8,5 +8,6 @@
"failed_login_attempt": "Неуспешно вписване",
"login_successful": "Вие влязохте успешно!",
"dont_have_account": "Нямате регистрация?",
"logged-out-due-to-inactivity": "Вие излязохте автоматично от администраторския контролен панел, поради бездействие."
"logged-out-due-to-inactivity": "Вие излязохте автоматично от администраторския контролен панел, поради бездействие.",
"caps-lock-enabled": "Главните букви са включени"
}

View File

@@ -1,3 +1,4 @@
{
"post-queue": "Опашка за публикации",
"description": "Няма публикации в опашката. <br> За да включите тази функционалност, идете в <a href=\"%1\">Настройки &rarr; Публикуване &rarr; Опашка за публикации</a> и включете <strong>Опашката за публикации</strong>.",
@@ -7,5 +8,11 @@
"content": "Съдържание",
"posted": "Публикувано",
"reply-to": "Отговор на „%1“",
"content-editable": "Можете да щракнете върху всеки от текстовете, за да ги редактирате преди публикуване."
"content-editable": "Щракнете върху съдържание, за да го редактирате",
"category-editable": "Щракнете върху категория, за да я редактирате",
"title-editable": "Щракнете върху заглавие, за да го редактирате",
"reply": "Отговор",
"topic": "Тема",
"accept": "Приемане",
"reject": "Отказване"
}

View File

@@ -24,5 +24,8 @@
"interstitial.errors-found": "Не можем да завършим Вашата регистрация:",
"gdpr_agree_data": "Съгласявам се това личната ми информация да се съхранява и обработва от този уеб сайт.",
"gdpr_agree_email": "Съгласявам се да получавам е-писма с резюмета и известия от този уеб сайт.",
"gdpr_consent_denied": "Трябва да се съгласите с това уеб сайтът да събира/обработва информацията Ви, и да Ви изпраща е-писма."
"gdpr_consent_denied": "Трябва да се съгласите с това уеб сайтът да събира/обработва информацията Ви, и да Ви изпраща е-писма.",
"invite.error-admin-only": "Директното регистриране е изключено. Моля, свържете се с администратор за повече подробности.",
"invite.error-invite-only": "Директното регистриране е изключено. Трябва да получите покана от вече регистриран потребител, за да имате достъп до този форум.",
"invite.error-invalid-data": "Получените данни за регистрация не съответстват на нашите записи. Моля, свържете се с администратор за повече подробности."
}

View File

@@ -1,5 +1,6 @@
{
"topic": "Тема",
"title": "Title",
"no_topics_found": "Няма намерени теми!",
"no_posts_found": "Няма намерени публикации!",
"post_is_deleted": "Публикацията е изтрита!",
@@ -35,11 +36,19 @@
"copy-ip": "Копиране на IP адреса",
"ban-ip": "Блокиране на IP адреса",
"view-history": "История на редакциите",
"locked-by": "Заключена от",
"unlocked-by": "Отключена от",
"pinned-by": "Закачена от",
"unpinned-by": "Откачена от",
"deleted-by": "Изтрита от",
"restored-by": "Възстановена от",
"queued-by": "Публикацията е добавена в опашката за одобрение &rarr;",
"bookmark_instructions": "Щракнете тук, за да се върнете към последно прочетената публикация в тази тема.",
"flag-post": "Докладване на тази публикация",
"flag-user": "Докладване на този потребител",
"already-flagged": "Вече е докладвано",
"view-flag-report": "Преглед на доклада",
"resolve-flag": "Resolve Flag",
"merged_message": "Тази тема беше слята в <a href=\"%1\">%2</a>",
"deleted_message": "Темата е изтрита. Само потребители с права за управление на темите могат да я видят.",
"following_topic.message": "Вече ще получавате известия когато някой публикува коментар в тази тема.",
@@ -104,6 +113,7 @@
"move_post": "Преместване на публикацията",
"post_moved": "Публикацията беше преместена!",
"fork_topic": "Разделяне на темата",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "Натиснете публикациите, които искате да отделите",
"fork_no_pids": "Няма избрани публикации!",
"no-posts-selected": "Няма избрани публикации!",
@@ -117,7 +127,8 @@
"merge-options": "Настройки за сливането",
"merge-select-main-topic": "Изберете основната тема",
"merge-new-title-for-topic": "Ново заглавие за темата",
"move_posts_instruction": "Натиснете публикациите, които искате да преместите, а след това идете в желаната тема и натиснете „Преместване“.",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"change_owner_instruction": "Натиснете публикациите, които искате да прехвърлите на друг потребител",
"composer.title_placeholder": "Въведете заглавието на темата си тук...",
"composer.handle_placeholder": "Въведете името тук",
@@ -125,6 +136,7 @@
"composer.submit": "Публикуване",
"composer.replying_to": "Отговор на %1",
"composer.new_topic": "Нова тема",
"composer.editing": "Editing",
"composer.uploading": "качване...",
"composer.thumb_url_label": "Поставете адреса на иконка за темата",
"composer.thumb_title": "Добавете иконка към тази тема",
@@ -152,8 +164,10 @@
"diffs.current-revision": "текуща версия",
"diffs.original-revision": "оригинална версия",
"diffs.restore": "Възстановяване на тази версия",
"diffs.restore-description": "Към историята на редакциите на тази публикация ще бъде добавена нова версия.",
"diffs.restore-description": "След възстановяването към историята на редакциите на тази публикация ще бъде добавена нова версия.",
"diffs.post-restored": "Публикацията е възстановена успешно до по-ранна версия",
"diffs.delete": "Изтриване на тази версия ",
"diffs.deleted": "Версията е изтрита",
"timeago_later": "%1 по-късно",
"timeago_earlier": "%1 по-рано",
"first-post": "Първа публикация",

View File

@@ -84,6 +84,7 @@
"remove_cover_picture_confirm": "Наистина ли искате да премахнете снимката на корицата?",
"crop_picture": "Орязване на снимката",
"upload_cropped_picture": "Орязване и качване",
"avatar-background-colour": "Фонов цвят за изображението",
"settings": "Настройки",
"show_email": "Да се показва е-пощата ми",
"show_fullname": "Да се показва цялото ми име",
@@ -135,7 +136,7 @@
"homepage": "Начална страница",
"homepage_description": "Изберете страница, която да използвате като начална за форума, или „Нищо“, за да използвате тази по подразбиране.",
"custom_route": "Път до персонализираната начална страница",
"custom_route_help": "Въведете името на пътя тук, без наклонена черта пред него (пример: „recent“ или „popular“)",
"custom_route_help": "Въведете името на пътя тук, без наклонена черта пред него (пример: „recent“ или \"category/2/general-discussion\")",
"sso.title": "Услуги за еднократно вписване",
"sso.associated": "Свързан с",
"sso.not-associated": "Натиснете тук, за да свържете с",

View File

@@ -2,6 +2,7 @@
"forum-traffic": "Forum Traffic",
"page-views": "Page Views",
"unique-visitors": "Unique Visitors",
"logins": "Logins",
"new-users": "New Users",
"posts": "Posts",
"topics": "Topics",
@@ -29,6 +30,7 @@
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>This is a <strong>pre-release</strong> version of NodeBB. Unintended bugs may occur. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
@@ -75,5 +77,12 @@
"graphs.registered-users": "Registered Users",
"graphs.anonymous-users": "Anonymous Users",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing"
"no-users-browsing": "No users browsing",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
}

View File

@@ -10,6 +10,7 @@
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Treat this category as a section",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -18,6 +19,7 @@
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"top-level": "Top Level",
"parent-category-none": "(None)",
"copy-parent": "Copy Parent",
"copy-settings": "Copy Settings From",
@@ -30,6 +32,7 @@
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -46,6 +49,8 @@
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",

View File

@@ -1,5 +1,9 @@
{
"dashboard": "Dashboard",
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"section-general": "General",
"section-manage": "Manage",

View File

@@ -1,10 +1,12 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"posts": "Post Pagination",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"max-posts-per-page": "Maximum posts per page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"max-topics-per-page": "Maximum topics per page"
"max-topics-per-page": "Maximum topics per page",
"categories-per-page": "Categories per page"
}

View File

@@ -16,5 +16,7 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0"
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,6 +1,8 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",

View File

@@ -18,5 +18,6 @@
"watching.message": "You are now watching updates from this category and all subcategories",
"notwatching.message": "You are not watching updates from this category and all subcategories",
"ignoring.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "প্রেক্ষিত বিভাগসমূহ"
"watched-categories": "প্রেক্ষিত বিভাগসমূহ",
"x-more-categories": "%1 more categories"
}

View File

@@ -22,6 +22,7 @@
"invalid-username-or-password": "অনুগ্রহ পূর্বক ইউজারনেম এবং পাসওয়ার্ড উভয়ই প্রদান করুন",
"invalid-search-term": "অগ্রহনযোগ্য সার্চ টার্ম",
"invalid-url": "Invalid URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
"csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
"invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",
@@ -83,6 +84,7 @@
"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)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"guest-upload-disabled": "Guest uploading has been disabled",
@@ -133,6 +135,7 @@
"chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting",
"chat-deleted-already": "This chat message has already been deleted.",
"chat-restored-already": "This chat message has already been restored.",
"chat-room-does-not-exist": "Chat room does not exist.",
"already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে",
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
@@ -176,5 +179,8 @@
"already-unblocked": "This user is already unblocked",
"no-connection": "There seems to be a problem with your internet connection",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"topic-event-unrecognized": "Topic event '%1' unrecognized",
"cant-set-child-as-parent": "Can't set child as parent category",
"cant-set-self-as-parent": "Can't set self as parent category"
}

View File

@@ -6,6 +6,7 @@
"assignee": "Assignee",
"update": "Update",
"updated": "Updated",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"graph-label": "Daily Flags",

View File

@@ -46,7 +46,9 @@
"alert.success": "সফল",
"alert.error": "ত্রুটি",
"alert.banned": "নিষিদ্ধ",
"alert.banned.message": "আপনাকে কেবলই নিষিদ্ধ করা হয়েছে, আপনি এখন লগআউট হয়ে যাবেন।",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.unfollow": "আপনি আর %1 কে অনুসরণ করছেন না!",
"alert.follow": "আপনি এখন %1 কে অনুসরণ করছেন!",
"users": "ব্যবহারকারীগণ",
@@ -93,6 +95,8 @@
"guest": "অতিথি",
"guests": "অতিথি",
"former_user": "A Former User",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "ফোরাম আপডেট করা হয়েছে",
"updated.message": "এই ফোরামে এইমাত্র সর্বশেষ সংস্করণে আপডেট করা হয়েছে। পৃষ্ঠাটি রিফ্রেশ করতে এখানে ক্লিক করুন।",
"privacy": "নিরাপত্তা",

View File

@@ -35,8 +35,7 @@
"details.member_count": "Member Count",
"details.creation_date": "Creation Date",
"details.description": "Description",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.member-post-cids": "Category IDs to display posts from",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",

View File

@@ -8,5 +8,6 @@
"failed_login_attempt": "Login Unsuccessful",
"login_successful": "আপনি সফলভাবে প্রবেশ করেছেন!",
"dont_have_account": "কোন একাউন্ট নেই?",
"logged-out-due-to-inactivity": "You have been logged out of the Admin Control Panel due to inactivity"
"logged-out-due-to-inactivity": "You have been logged out of the Admin Control Panel due to inactivity",
"caps-lock-enabled": "Caps Lock is enabled"
}

View File

@@ -1,3 +1,4 @@
{
"post-queue": "Post Queue",
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Post Queue</a> and enable <strong>Post Queue</strong>.",
@@ -7,5 +8,11 @@
"content": "Content",
"posted": "Posted",
"reply-to": "Reply to \"%1\"",
"content-editable": "You can click on individual content to edit before posting."
"content-editable": "Click on content to edit",
"category-editable": "Click on category to edit",
"title-editable": "Click on title to edit",
"reply": "Reply",
"topic": "Topic",
"accept": "Accept",
"reject": "Reject"
}

View File

@@ -24,5 +24,8 @@
"interstitial.errors-found": "আপনার নিবন্ধনটি সম্পূর্ণ করা সম্ভব হয় নি।",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
"gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
}

View File

@@ -1,5 +1,6 @@
{
"topic": "টপিক",
"title": "Title",
"no_topics_found": "কোন টপিক পাওয়া যায়নি!",
"no_posts_found": "কোন পোস্ট পাওয়া যায়নি",
"post_is_deleted": "এই পোস্টটি মুছে ফেলা হয়েছে!",
@@ -35,11 +36,19 @@
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "এই টপিকটি মুছে ফেলা হয়েছে। শুধুমাত্র টপিক ব্যবস্থাপনার ক্ষমতাপ্রাপ্ত সদস্যগণ এটি দেখতে পারবেন।",
"following_topic.message": "এখন থেকে এই টপিকে অন্যকেউ পোস্ট করলে আপনি নোটিফিকেশন পাবেন।",
@@ -104,6 +113,7 @@
"move_post": "পোষ্ট সরান",
"post_moved": "পোষ্ট সরানো হয়েছে",
"fork_topic": "টপিক ফর্ক করুন",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "যে পোষ্টটি ফর্ক করতে চান সেটি ক্লিক করুন",
"fork_no_pids": "কোন পোষ্ট সিলেক্ট করা হয় নি",
"no-posts-selected": "No posts selected!",
@@ -117,7 +127,8 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "আপনার টপিকের শিরোনাম দিন",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -125,6 +136,7 @@
"composer.submit": "সাবমিট",
"composer.replying_to": "%1 এর উত্তরে:",
"composer.new_topic": "নতুন টপিক",
"composer.editing": "Editing",
"composer.uploading": "আপলোডিং",
"composer.thumb_url_label": "টপিকে থাম্বনেইল URL পেষ্ট করুন",
"composer.thumb_title": "এই টপিকে থাম্বনেইল যোগ করুন",
@@ -152,8 +164,10 @@
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 later",
"timeago_earlier": "%1 earlier",
"first-post": "First post",

View File

@@ -84,6 +84,7 @@
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"crop_picture": "Crop picture",
"upload_cropped_picture": "Crop and upload",
"avatar-background-colour": "Avatar background colour",
"settings": "সেটিংস",
"show_email": "আমার ইমেইল দেখাও",
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
@@ -135,7 +136,7 @@
"homepage": "Homepage",
"homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.",
"custom_route": "Custom Homepage Route",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"sso.title": "Single Sign-on Services",
"sso.associated": "Associated with",
"sso.not-associated": "Click here to associate with",

View File

@@ -2,6 +2,7 @@
"forum-traffic": "Provoz fóra",
"page-views": "Zobrazení stránky",
"unique-visitors": "Jedineční návštěvníci",
"logins": "Logins",
"new-users": "Nový uživatelé",
"posts": "Příspěvky",
"topics": "Témata",
@@ -29,6 +30,7 @@
"upgrade-available": "<p>Nová verze (v%1) byla zveřejněna. Zvažte <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">aktualizaci vašeho NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Toto je zastaralá testovací verze NodeBB. Nová verze (v%1) byla zveřejněna. Zvažte <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">aktualizaci vaší verze NodeBB</a>.</p>",
"prerelease-warning": "<p>Toto je <strong>zkušební</strong> verze NodeBB. Mohou se vyskytnout různé chyby.<i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Fórum běží ve vývojářském režimu a může být potencionálně zranitelné . Kontaktujte správce systému.</span>",
"latest-lookup-failed": "<p>Náhled na poslední dostupnou verzi NodeBB</p>",
@@ -75,5 +77,12 @@
"graphs.registered-users": "Registrovaní uživatelé",
"graphs.anonymous-users": "Anonymní uživatelé",
"last-restarted-by": "Poslední restart od",
"no-users-browsing": "Nikdo si nic neprohlíží"
"no-users-browsing": "Nikdo si nic neprohlíží",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
}

View File

@@ -10,6 +10,7 @@
"custom-class": "Upravit třídu",
"num-recent-replies": "# posledních odpovědí",
"ext-link": "Externí odkaz",
"subcategories-per-page": "Subcategories per page",
"is-section": "Zacházet s kategorii jako se sekcí",
"post-queue": "Post queue",
"tag-whitelist": "Seznam povolených značek",
@@ -18,6 +19,7 @@
"category-image": "Obrázek kategorie",
"parent-category": "Nadřazená kategorie",
"optional-parent-category": "Nadřazená kategorie (doporučeno)",
"top-level": "Top Level",
"parent-category-none": "(nic)",
"copy-parent": "Kopírovat nadřazenou",
"copy-settings": "Kopírovat nastavení z",
@@ -30,6 +32,7 @@
"edit": "Upravit",
"analytics": "Analytika",
"view-category": "Zobrazit kategorii",
"set-order": "Set order",
"select-category": "Vyberte kategorii",
"set-parent-category": "Nastavit nadřazenou kategorii",
@@ -46,6 +49,8 @@
"privileges.no-users": "V této kategorii není nastaveno žádné oprávnění uživatele.",
"privileges.section-group": "Skupina",
"privileges.group-private": "Tato skupina je soukromá",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Přidat skupinu",
"privileges.copy-to-children": "Kopírovat do podřazené",
"privileges.copy-from-category": "Kopírovat z kategorie",

View File

@@ -1,5 +1,9 @@
{
"dashboard": "Dashboard",
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"section-general": "Všeobecné",
"section-manage": "Spravovat",

View File

@@ -1,10 +1,12 @@
{
"pagination": "Nastavení stránkování",
"enable": "Stránkovat témata a příspěvky namísto nekonečného posouvání",
"posts": "Post Pagination",
"topics": "Stránkování témat",
"posts-per-page": "Příspěvků na stránku",
"max-posts-per-page": "Maximální množství příspěvků na stránku",
"categories": "Stránkování kategorii",
"topics-per-page": "Témat na stránku",
"max-topics-per-page": "Maximální množství témat na stránku"
"max-topics-per-page": "Maximální množství témat na stránku",
"categories-per-page": "Categories per page"
}

View File

@@ -16,5 +16,7 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0"
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,6 +1,8 @@
{
"tag": "Nastavení značky",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimální počet značek/téma",
"max-per-topic": "maximální počet značek/téma",
"min-length": "Minimální délka značky",

View File

@@ -18,5 +18,6 @@
"watching.message": "Nyní sledujete aktualizace pro tuto kategorii a všech podkategorii",
"notwatching.message": "Nyní nesledujete aktualizace z této kategorie a všech podkategorií",
"ignoring.message": "Nyní ignorujete aktualizace této kategorie a všech jejich kategorii",
"watched-categories": "Sledované kategorie"
"watched-categories": "Sledované kategorie",
"x-more-categories": "%1 more categories"
}

View File

@@ -22,6 +22,7 @@
"invalid-username-or-password": "Zadejte prosím uživatelské jméno a i heslo",
"invalid-search-term": "Neplatný výraz pro vyhledávání",
"invalid-url": "Neplatné URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Systém přihlášení pro místní účty byl zakázán pro neoprávněné účty.",
"csrf-invalid": "Není možné vás přihlásit, díky vypršení relace. Zkuste to prosím znovu.",
"invalid-pagination-value": "Neplatná hodnota stránkování, musí být alespoň %1 a nejvýše %2",
@@ -83,6 +84,7 @@
"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",
"too-many-tags": "Příliš mnoho značek. Téma nesmí mít více než %1 značek",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "Vyčkejte, než se vše kompletně nahraje.",
"file-too-big": "Maximální povolená velikost je %1 kB nahrajte menší soubor",
"guest-upload-disabled": "Nahrávání od hostů nebylo povoleno",
@@ -133,6 +135,7 @@
"chat-delete-duration-expired": "Je vám umožněno odstranit konverzační zprávy pod dobu %1 sekund/y po jejich odeslání",
"chat-deleted-already": "Tato konverzační zpráva již byla odstraněna.",
"chat-restored-already": "Tato konverzační zpráva již byla obnovena.",
"chat-room-does-not-exist": "Chat room does not exist.",
"already-voting-for-this-post": "Již jste v tomto příspěvku hlasoval.",
"reputation-system-disabled": "Systém reputací je zakázán.",
"downvoting-disabled": "Systém nesouhlasu je zakázán",
@@ -176,5 +179,8 @@
"already-unblocked": "Tento uživatel již byl odblokován",
"no-connection": "Zdá se, že nastal problém s připojením k internetu",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"topic-event-unrecognized": "Topic event '%1' unrecognized",
"cant-set-child-as-parent": "Can't set child as parent category",
"cant-set-self-as-parent": "Can't set self as parent category"
}

View File

@@ -6,6 +6,7 @@
"assignee": "Nabyvatel",
"update": "Aktualizovat",
"updated": "Aktualizováno",
"resolved": "Resolved",
"target-purged": "Obsah, na který se toto označení vztahuje, byl vymazán a již není k dispozici.",
"graph-label": "Denní označení",

View File

@@ -46,7 +46,9 @@
"alert.success": "Úspěšné",
"alert.error": "Chyba",
"alert.banned": "Zabanován",
"alert.banned.message": "Byl jste zabanován, budete odhlášen.",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.unfollow": "Již nesledujete %1!",
"alert.follow": "Nyní sledujete %1!",
"users": "Uživatelé",
@@ -93,6 +95,8 @@
"guest": "Host",
"guests": "Hosté",
"former_user": "Bývalý uživatel",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "Fórum bylo zaktualizováno",
"updated.message": "Toto fórum bylo právě aktualizováno na poslední verzi. Klikněte zde a obnovte tuto stránku.",
"privacy": "Soukromí",

View File

@@ -35,8 +35,7 @@
"details.member_count": "Počet členů",
"details.creation_date": "Datum vytvoření",
"details.description": "Popis",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.member-post-cids": "Category IDs to display posts from",
"details.badge_preview": "Náhled symbolu",
"details.change_icon": "Změnit ikonu",
"details.change_label_colour": "Změnit barvu popisu",

View File

@@ -8,5 +8,6 @@
"failed_login_attempt": "Přihlášení neúspěšné",
"login_successful": "Přihlášení proběhlo úspěšně!",
"dont_have_account": "Nemáte účet?",
"logged-out-due-to-inactivity": "Z důvodu nečinnosti jste byl odhlášen z ovládacího panelu administrátora"
"logged-out-due-to-inactivity": "Z důvodu nečinnosti jste byl odhlášen z ovládacího panelu administrátora",
"caps-lock-enabled": "Caps Lock is enabled"
}

View File

@@ -1,3 +1,4 @@
{
"post-queue": "Fronta příspěvků",
"description": "Nejsou žádné příspěvky ve frontě. Pro povolení této funkčnosti, přejděte do <a href=\"%1\">Nastavení Příspěvky Fronta příspěvků</a> a povolte <strong>Fronta příspěvků</strong>.",
@@ -7,5 +8,11 @@
"content": "Obsah",
"posted": "Přidáno",
"reply-to": "Odpovědět na \"%1\"",
"content-editable": "Kvůli úpravám a před odesláním příspěvku můžete klikat na obsah."
"content-editable": "Click on content to edit",
"category-editable": "Click on category to edit",
"title-editable": "Click on title to edit",
"reply": "Reply",
"topic": "Topic",
"accept": "Accept",
"reject": "Reject"
}

View File

@@ -24,5 +24,8 @@
"interstitial.errors-found": "Nebylo možné dokončit vaší registraci:",
"gdpr_agree_data": "Dávám souhlas se sběrem a zpracováním mých osobních údajů na této webové stránce.",
"gdpr_agree_email": "Dávám souhlas k dostávání e-mailových přehledů a oznámení z týkající se této webové stránky.",
"gdpr_consent_denied": "Musíte dát souhlas této stránce sbírat/zpracovávat informace o vaší činnosti a odesílat vám e-maily."
"gdpr_consent_denied": "Musíte dát souhlas této stránce sbírat/zpracovávat informace o vaší činnosti a odesílat vám e-maily.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
}

View File

@@ -1,5 +1,6 @@
{
"topic": "Téma",
"title": "Title",
"no_topics_found": "Nebyla nalezena žádná témata.",
"no_posts_found": "Nebyly nalezeny žádné příspěvky.",
"post_is_deleted": "Tento příspěvek je vymazán.",
@@ -35,11 +36,19 @@
"copy-ip": "Kopírovat IP",
"ban-ip": "Zakázat IP",
"view-history": "Upravit historii",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "Pro návrat k poslednímu čtenému příspěvku v tématu, klikněte zde.",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "Toto téma bylo odstraněno. Jen uživatelé s oprávněním správy témat ho mohou vidět.",
"following_topic.message": "Nyní budete dostávat upozornění, jakmile někdo přidá příspěvek do tohoto tématu.",
@@ -104,6 +113,7 @@
"move_post": "Přesunout příspěvek",
"post_moved": "Příspěvek přesunut.",
"fork_topic": "Rozdělit příspěvek",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "Vyberte příspěvky, které chcete oddělit",
"fork_no_pids": "Nebyly vybrány žádné příspěvky.",
"no-posts-selected": "No posts selected!",
@@ -117,7 +127,8 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"change_owner_instruction": "Klikněte na příspěvek u kterého chcete změnit vlastníka",
"composer.title_placeholder": "Zadejte název tématu…",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -125,6 +136,7 @@
"composer.submit": "Odeslat",
"composer.replying_to": "Odpovídání na %1",
"composer.new_topic": "Nové téma",
"composer.editing": "Editing",
"composer.uploading": "nahrávání…",
"composer.thumb_url_label": "Vložit URL náhledu tématu",
"composer.thumb_title": "Přidat k tématu náhled",
@@ -152,8 +164,10 @@
"diffs.current-revision": "aktuální revize",
"diffs.original-revision": "originální revize",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 později",
"timeago_earlier": "%1 dříve",
"first-post": "First post",

View File

@@ -84,6 +84,7 @@
"remove_cover_picture_confirm": "Jste si jist/a, že chcete smazat obrázek?",
"crop_picture": "Oříznout obrázek",
"upload_cropped_picture": "Oříznout a nahrát",
"avatar-background-colour": "Avatar background colour",
"settings": "Nastavení",
"show_email": "Zobrazovat můj e-mail",
"show_fullname": "Zobrazovat celé jméno",
@@ -135,7 +136,7 @@
"homepage": "Domovská stránka",
"homepage_description": "Vyberte stránku, která má být domovskou stránkou fóra nebo vyberte „Nic” a bude použita výchozí domovská stránka.",
"custom_route": "Cesta k uživatelské domovské stránce",
"custom_route_help": "Zde zadejte název cesty - bez předcházejícího lomítka (např.: „Poslední” nebo „oblíbené”)",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"sso.title": "Služby jednotného přihlášení",
"sso.associated": "Přiřazeno k",
"sso.not-associated": "Zde klikněte pro přiřazení k",

View File

@@ -2,6 +2,7 @@
"forum-traffic": "Forum Traffik",
"page-views": "Side Visninger",
"unique-visitors": "Unikke Besøgere",
"logins": "Logins",
"new-users": "New Users",
"posts": "Posts",
"topics": "Topics",
@@ -29,6 +30,7 @@
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>Dette er en <strong>pre-release</strong> udgave af NodeBB. Uforventede bugs kan forekomme.<i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
@@ -75,5 +77,12 @@
"graphs.registered-users": "Registered Users",
"graphs.anonymous-users": "Anonymous Users",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing"
"no-users-browsing": "No users browsing",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
}

View File

@@ -10,6 +10,7 @@
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Treat this category as a section",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -18,6 +19,7 @@
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"top-level": "Top Level",
"parent-category-none": "(None)",
"copy-parent": "Copy Parent",
"copy-settings": "Copy Settings From",
@@ -30,6 +32,7 @@
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -46,6 +49,8 @@
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",

View File

@@ -1,5 +1,9 @@
{
"dashboard": "Dashboard",
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"section-general": "General",
"section-manage": "Manage",

View File

@@ -1,10 +1,12 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"posts": "Post Pagination",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"max-posts-per-page": "Maximum posts per page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"max-topics-per-page": "Maximum topics per page"
"max-topics-per-page": "Maximum topics per page",
"categories-per-page": "Categories per page"
}

View File

@@ -16,5 +16,7 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0"
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
}

View File

@@ -1,6 +1,8 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",

View File

@@ -18,5 +18,6 @@
"watching.message": "You are now watching updates from this category and all subcategories",
"notwatching.message": "You are not watching updates from this category and all subcategories",
"ignoring.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "Fulgte kategorier"
"watched-categories": "Fulgte kategorier",
"x-more-categories": "%1 more categories"
}

View File

@@ -22,6 +22,7 @@
"invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode",
"invalid-search-term": "Ugyldig søgeterm",
"invalid-url": "Invalid URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
"csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
"invalid-pagination-value": "Ugyldig side værdi, skal mindst være %1 og maks. %2",
@@ -83,6 +84,7 @@
"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)",
"too-many-tags": "For mange tags. Tråde kan ikke have mere end %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "Venligst vent til overførslen er færdig",
"file-too-big": "Maksimum filstørrelse er %1 kB - venligst overfør en mindre fil",
"guest-upload-disabled": "Gæsteupload er deaktiveret",
@@ -133,6 +135,7 @@
"chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting",
"chat-deleted-already": "This chat message has already been deleted.",
"chat-restored-already": "This chat message has already been restored.",
"chat-room-does-not-exist": "Chat room does not exist.",
"already-voting-for-this-post": "You have already voted for this post.",
"reputation-system-disabled": "Vurderingssystem er slået fra.",
"downvoting-disabled": "Nedvurdering er slået fra",
@@ -176,5 +179,8 @@
"already-unblocked": "This user is already unblocked",
"no-connection": "There seems to be a problem with your internet connection",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"topic-event-unrecognized": "Topic event '%1' unrecognized",
"cant-set-child-as-parent": "Can't set child as parent category",
"cant-set-self-as-parent": "Can't set self as parent category"
}

View File

@@ -6,6 +6,7 @@
"assignee": "Assignee",
"update": "Update",
"updated": "Updated",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"graph-label": "Daily Flags",

View File

@@ -46,7 +46,9 @@
"alert.success": "Succes",
"alert.error": "Fejl",
"alert.banned": "Forment adgang",
"alert.banned.message": "Du er lige blevet udelukket, du vil nu blive logget ud.",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.unfollow": "Du følger ikke længere %1!",
"alert.follow": "Du følger nu %1!",
"users": "Bruger",
@@ -93,6 +95,8 @@
"guest": "Gæst",
"guests": "Gæster",
"former_user": "A Former User",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "Forum opdateret",
"updated.message": "Dette form er lige blevet opdateret til den seneste version. Klik her for at genindlæse siden.",
"privacy": "Privatliv",

View File

@@ -35,8 +35,7 @@
"details.member_count": "Medlemsantal",
"details.creation_date": "Oprettelsesdato",
"details.description": "Beskrivelse",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.member-post-cids": "Category IDs to display posts from",
"details.badge_preview": "Mærke forhåndsvisning",
"details.change_icon": "Skift ikon",
"details.change_label_colour": "Change Label Colour",

View File

@@ -8,5 +8,6 @@
"failed_login_attempt": "Log Ind Mislykkedes",
"login_successful": "Du har successfuldt logged in!",
"dont_have_account": "Har du ikke en konto?",
"logged-out-due-to-inactivity": "Du er blevet logged af Admin Kontrol Panelet, på grund af din inaktiviet."
"logged-out-due-to-inactivity": "Du er blevet logged af Admin Kontrol Panelet, på grund af din inaktiviet.",
"caps-lock-enabled": "Caps Lock is enabled"
}

View File

@@ -1,3 +1,4 @@
{
"post-queue": "Post Queue",
"description": "There are no posts in the post queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; Post &rarr; Post Queue</a> and enable <strong>Post Queue</strong>.",
@@ -7,5 +8,11 @@
"content": "Content",
"posted": "Posted",
"reply-to": "Reply to \"%1\"",
"content-editable": "You can click on individual content to edit before posting."
"content-editable": "Click on content to edit",
"category-editable": "Click on category to edit",
"title-editable": "Click on title to edit",
"reply": "Reply",
"topic": "Topic",
"accept": "Accept",
"reject": "Reject"
}

View File

@@ -24,5 +24,8 @@
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
"gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
}

View File

@@ -1,5 +1,6 @@
{
"topic": "Tråd",
"title": "Title",
"no_topics_found": "Ingen tråde fundet",
"no_posts_found": "Ingen indlæg fundet!",
"post_is_deleted": "Dette indlæg er slettet!",
@@ -35,11 +36,19 @@
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "Klik her for at vende tilbage til den sidst læste indlæg i denne tråd.",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "Denne tråd er blevet slettet. Kun brugere med emne behandlings privilegier kan se den.",
"following_topic.message": "Du vil nu modtage notifikationer når nogle skriver et indlæg i dette emne.",
@@ -104,6 +113,7 @@
"move_post": "Flyt indlæg",
"post_moved": "Indlæg flyttet!",
"fork_topic": "Fraskil tråd",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "Klik på indlæg du ønsker at fraskille",
"fork_no_pids": "Ingen indlæg valgt",
"no-posts-selected": "No posts selected!",
@@ -117,7 +127,8 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "Angiv din trådtittel her ...",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -125,6 +136,7 @@
"composer.submit": "Send",
"composer.replying_to": "Svare til %1",
"composer.new_topic": "Ny tråd",
"composer.editing": "Editing",
"composer.uploading": "uploader...",
"composer.thumb_url_label": "Indsæt en tråd miniature URL",
"composer.thumb_title": "Tilføj en miniature til denne tråd",
@@ -152,8 +164,10 @@
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 later",
"timeago_earlier": "%1 earlier",
"first-post": "First post",

View File

@@ -84,6 +84,7 @@
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"crop_picture": "Crop picture",
"upload_cropped_picture": "Crop and upload",
"avatar-background-colour": "Avatar background colour",
"settings": "Indstillinger",
"show_email": "Vis min emailaddresse",
"show_fullname": "Vis mit fulde navn",
@@ -135,7 +136,7 @@
"homepage": "Hjemmeside",
"homepage_description": "Vælg en side som forummets hjemmeside, eller 'Ingen' for at bruge standard hjemmesiden.",
"custom_route": "Brugerdefinerede hjemme rute",
"custom_route_help": "Indtast et rute navn her, uden nogle foregående skråstreg (f.eks. \"nyligt\" eller \"populært\")",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"sso.title": "Enkeltgangs Sign-on Servicer",
"sso.associated": "Forbundet med",
"sso.not-associated": "Klik her for at forbinde med",

View File

@@ -2,6 +2,7 @@
"forum-traffic": "Forum Traffic",
"page-views": "Seitenaufrufe",
"unique-visitors": "Individuelle Besucher",
"logins": "Anmeldungen",
"new-users": "Neue nutzende Person",
"posts": "Beiträge",
"topics": "Themen",
@@ -14,12 +15,12 @@
"page-views-custom-help": "Gib eine Zeitspanne an, in dem du die Besichtigungszahlen ansehen willst. Sollte keine Kalenderauswahl verfügbar sein ist das akzeptierte format <code>YYYY-MM-DD</code>",
"page-views-custom-error": "Bitte gib eine gültige Zeitspanne im Format <code>YYYY-MM-DD</code> an",
"stats.yesterday": "Yesterday",
"stats.today": "Today",
"stats.last-week": "Last Week",
"stats.this-week": "This Week",
"stats.last-month": "Last Month",
"stats.this-month": "This Month",
"stats.yesterday": "Gestern",
"stats.today": "Heute",
"stats.last-week": "Letzte Woche",
"stats.this-week": "Diese Woche",
"stats.last-month": "Letzter Monat",
"stats.this-month": "Dieser Monat",
"stats.all": "Alle",
"updates": "Updates",
@@ -29,6 +30,7 @@
"upgrade-available": "<p>Eine neuere Version (v%1) ist erschienen. Erwäge <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">NodeBB zu upgraden</a>.</p>",
"prerelease-upgrade-available": "<p>Das ist eine veraltete NodeBB-Vorabversion. Eine neuere Version (v%1) ist erschienen. Erwäge <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">NodeBB zu upgraden</a>.</p>",
"prerelease-warning": "<p>Das ist eine <strong>pre-release</strong> Version von NodeBB. Es können ungewollte Fehler auftreten. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Das Forum wurde im Entwicklermodus gestartet. Das Forum könnte potenziellen Gefahren ausgeliefert sein. Bitte kontaktiere den Systemadministrator.</span>",
"latest-lookup-failed": "<p>Beim nachschlagen der neuesten verfügbaren NodeBB Version ist ein Fehler aufgetreten</p>",
@@ -75,5 +77,12 @@
"graphs.registered-users": "Registrierte Benutzer",
"graphs.anonymous-users": "Anonyme Benutzer",
"last-restarted-by": "Zuletzt Neugestartet von: ",
"no-users-browsing": "Keine aktiven Benutzer"
"no-users-browsing": "Keine aktiven Benutzer",
"back-to-dashboard": "Zurück zur Übersicht",
"details.no-users": "Keine Benutzer sind im gewählten Zeitraum beigetreten",
"details.no-topics": "Keine Themen wurden im gewählten Zeitraum beigetreten",
"details.no-logins": "Keine Logins wurden im gewählten Zeitraum festgestellt",
"details.logins-static": "NodeBB speichert Sitzungsdaten nur für %1 Tage, deshalb zeigt die untere Tabelle nur die neuesten, aktiven Sitzungen",
"details.logins-login-time": "Anmelde Zeit"
}

View File

@@ -10,6 +10,7 @@
"custom-class": "Benutzderdefinierte Klasse",
"num-recent-replies": "Anzahl neuer Antworten",
"ext-link": "Externer Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Behandle diese Kategorie als Abschnitt",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -18,6 +19,7 @@
"category-image": "Kategoriebild",
"parent-category": "Übergeordnete Kategorie",
"optional-parent-category": "(Optional) Übergeordnete Kategorie",
"top-level": "Top Level",
"parent-category-none": "(Keine)",
"copy-parent": "Copy Parent",
"copy-settings": "Kopiere Einstellungen von",
@@ -30,6 +32,7 @@
"edit": "Bearbeiten",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Kategorie auswählen",
"set-parent-category": "Übergeordnete Kategorie festlegen",
@@ -46,6 +49,8 @@
"privileges.no-users": "Keine benutzerspezifischen Berechtigungen in dieser Kategorie.",
"privileges.section-group": "Gruppe",
"privileges.group-private": "Diese Gruppe ist privat",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Gruppe hinzufügen",
"privileges.copy-to-children": "In Untergeordnete kopieren",
"privileges.copy-from-category": "Kopiere von Kategorie",

View File

@@ -1,16 +1,16 @@
{
"global": "Global",
"admin": "Admin",
"group-privileges": "Group Privileges",
"user-privileges": "User Privileges",
"edit-privileges": "Edit Privileges",
"select-clear-all": "Select/Clear All",
"admin": "Administrator",
"group-privileges": "Gruppen Rechte",
"user-privileges": "Benutzer Rechte",
"edit-privileges": "Rechte bearbeiten",
"select-clear-all": "Alle Aus-/Abwählen",
"chat": "Chat",
"upload-images": "Bilder hochladen",
"upload-files": "Dateien hochladen",
"signature": "Signatur",
"ban": "Bannen",
"invite": "Invite",
"invite": "Einladen",
"search-content": "Inhalt durchsuchen",
"search-users": "Benutzersuche",
"search-tags": "Tags suchen",
@@ -19,7 +19,7 @@
"view-groups": "Gruppen ansehen",
"allow-local-login": "Lokaler Login",
"allow-group-creation": "Gruppen erstellen",
"view-users-info": "View Users Info",
"view-users-info": "Benutzerinfo anzeigen",
"find-category": "Kategorie finden",
"access-category": "Kategoriezutritt",
"access-topics": "Themenzutritt",
@@ -35,25 +35,25 @@
"delete-topics": "Themen entfernen",
"purge": "Endgültig löschen",
"moderate": "Moderieren",
"admin-dashboard": "Dashboard",
"admin-categories": "Categories",
"admin-privileges": "Privileges",
"admin-dashboard": "Übersicht",
"admin-categories": "Kategorien",
"admin-privileges": "Rechte",
"admin-users": "Nutzende Personen",
"admin-admins-mods": "Admins &amp; Mods",
"admin-groups": "Groups",
"admin-tags": "Tags",
"admin-admins-mods": "Administratoren & Moderatoren",
"admin-groups": "Gruppen",
"admin-tags": "Schlagworte",
"admin-settings": "Einstellungen",
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-admins-mods": "<strong>Are you sure you wish to grant the &quot;Admins &amp; Mods&quot; privilege to this user/group?</strong> Users with this privilege are able to promote and demote other users into privileged positions, <em>including super administrator</em>",
"alert.confirm-save": "Please confirm your intention to save these privileges",
"alert.saved": "Privilege changes saved and applied",
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
"alert.discarded": "Privilege changes discarded",
"alert.confirm-copyToAll": "Are you sure you wish to apply this privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToChildren": "Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
"alert.no-undo": "<em>This action cannot be undone.</em>",
"alert.admin-warning": "Administrators implicitly get all privileges"
"alert.confirm-moderate": "<strong>Bist Du sicher, dass du dieser Gruppe das Moderationsrecht gewähren möchtest?</strong> Diese Gruppe ist öffentlich, und alle Benutzer können nach Belieben beitreten.",
"alert.confirm-admins-mods": "<strong>Bist Du sicher, dass du \"Administrator & Moderator\" Rechte zu dieser Gruppe hinzufügen willst?</strong>Benutzer mit diesen Rechten können andere Benutzer in privilegierte Positionen heraufstufen und herabstufen, <em>super Administrator eingeschlossen!</em>",
"alert.confirm-save": "Bitte bestätige Deine Absicht, diese Rechte zu speichern",
"alert.saved": "Änderungen an Rechten gespeichert und angewendet",
"alert.confirm-discard": "Bist du sicher, dass du die Änderungen an den Rechten verwerfen möchtest?",
"alert.discarded": "Änderungen an Rechten verworfen",
"alert.confirm-copyToAll": "Bist Du sicher, dass Du diese Rechte auf <strong>alle Kategorien</strong> anwenden möchtest?",
"alert.confirm-copyToAllGroup": "Bist Du sicher, dass Du die Rechte dieser Gruppe auf <strong>alle Kategorien</strong> anwenden möchtest?",
"alert.confirm-copyToChildren": "Bist Du sicher, dass Du diese Rechte auf <strong>alle Unterkategorien</strong> anwenden möchtest?",
"alert.confirm-copyToChildrenGroup": "Bist Du sicher, dass Du die Rechte dieser Gruppe auf <strong>alle Unterkategorien</strong> anwenden möchtest?",
"alert.no-undo": "<em>Dieser Vorgang kann nicht rückgängig gemacht werden.</em>",
"alert.admin-warning": "Administratoren erhalten implizit alle Berechtigungen"
}

View File

@@ -1,5 +1,9 @@
{
"dashboard": "Dashboard",
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"section-general": "Allgemein",
"section-manage": "Verwalten",

Some files were not shown because too many files have changed in this diff Show More