Compare commits

...

1575 Commits

Author SHA1 Message Date
Julian Lam
56b79a974a 0.7.2 2015-07-28 10:40:21 -04:00
Julian Lam
418b9bf02f Merge branch 'master' into v0.7.x 2015-07-28 10:37:50 -04:00
Julian Lam
03b6b1e15c Fixed crash on launch if no hooks listen to filter:router.page
A previous commit added a new hook, although it executed async.each on a var without a null check, so if no hooks were registered, it was null, and not an empty array, causing async to crash.
2015-07-28 10:36:51 -04:00
Julian Lam
258d562c3e updated shrinkwrap file 2015-07-28 10:34:46 -04:00
Julian Lam
f1b097ded6 Merge branch 'master' into v0.7.x 2015-07-28 10:29:42 -04:00
Julian Lam
6348eb2bab fixed #3359 2015-07-28 10:24:46 -04:00
Julian Lam
fcebfd8f39 latest fallbacks 2015-07-28 09:37:29 -04:00
Julian Lam
2f6b9eb80a updated theme minvers 2015-07-28 09:35:19 -04:00
Julian Lam
8b59efef38 Merge pull request #3366 from pejuaxel/master
Add missing localization
2015-07-28 09:34:05 -04:00
Axel
85d7b04846 Add missing localization 2015-07-28 14:49:31 +02:00
Julian Lam
db4ac34138 latest fallbacks 2015-07-28 07:51:03 -04:00
Julian Lam
4f4e33eb15 Merge branch 'pichalite-master' 2015-07-28 07:49:50 -04:00
Julian Lam
eb5be2f671 fixed some whitespace issues and made the admin check return early, in its own block 2015-07-28 07:49:28 -04:00
Julian Lam
5ba7234bd7 Merge pull request #3362 from pejuaxel/master
Missing localization
2015-07-28 07:49:10 -04:00
Julian Lam
d10fd6248e Merge branch 'master' of https://github.com/pichalite/NodeBB into pichalite-master 2015-07-28 07:45:34 -04:00
Julian Lam
afc32c1f6e latest translations and fallbacks 2015-07-28 07:44:21 -04:00
Julian Lam
487166ba48 translations for @HuiStudio, #3365 2015-07-28 07:40:43 -04:00
Julian Lam
5a50a098d8 added a new middleware and plugin hook
- Middleware added: requireUser, redirects to login if there is no user session.
- Hook added: filter:router.page
2015-07-28 07:39:11 -04:00
barisusakli
5d94b00883 parse category description closes #3209 2015-07-27 15:31:55 -04:00
Julian Lam
fa351ffa07 fixed wrong documentation in comments... 2015-07-27 13:30:28 -04:00
Axel
9c2d7a2468 new language keys 2015-07-26 23:40:44 +02:00
Julian Lam
474ff3ed35 fixed #3359 2015-07-24 14:25:23 -04:00
pichalite
d2bbca1de1 don't display leave/join buttons for admin group 2015-07-24 08:58:00 -07:00
Julian Lam
87111ee6be fixed #3007 2015-07-24 10:22:21 -04:00
Julian Lam
ee9390ee34 fixed #2949 2015-07-23 16:28:31 -04:00
Julian Lam
df055ce7ea if buildHeader middleware is called, isAPI is now set to false 2015-07-23 12:58:21 -04:00
Julian Lam
0bc175dd4c fixed #3355
fixed issue where disabled categories showed up in the category dropdown in /unread
2015-07-23 12:47:58 -04:00
pichalite
a5226c9423 don't display "Leave Group" button for admins in "administrators" system group on groups details page 2015-07-22 17:10:17 -07:00
Julian Lam
12601dd3aa added new hook "filter:digest.subscribers" to allow plugins to override digest subscriptions 2015-07-22 15:06:30 -04:00
barisusakli
954c25823e closes #3352 2015-07-22 14:17:34 -04:00
Julian Lam
c38cab3b74 latest russian translations 2015-07-22 10:23:15 -04:00
barisusakli
2b93c01340 closes #3347 2015-07-21 20:22:56 -04:00
Julian Lam
ef750e2ebd updated shrinkwrap file 2015-07-21 15:26:24 -04:00
Julian Lam
67d9209b99 fixed regression of pagination caused by changes to ajaxification logic 2015-07-21 15:25:12 -04:00
Julian Lam
98c1390e7f updated theme minvers 2015-07-21 15:25:06 -04:00
Julian Lam
93007bc34f fixed regression of pagination caused by changes to ajaxification logic 2015-07-21 15:21:50 -04:00
Julian Lam
fdddc19d0d updated theme minvers 2015-07-21 15:16:10 -04:00
Julian Lam
03a4b5f641 updating development version 2015-07-21 14:57:04 -04:00
Julian Lam
d62c3b9340 switching default theme on installation to Persona, from Lavender 2015-07-21 14:55:52 -04:00
Julian Lam
a3d17d14fd 0.7.1 2015-07-21 14:55:29 -04:00
Julian Lam
307eb19d01 updated shrinkwrap file 2015-07-21 14:54:27 -04:00
Julian Lam
f475d6e3b8 switching default theme on installation to Persona, from Lavender 2015-07-21 14:54:14 -04:00
Julian Lam
b4465b7df1 Merge branch 'master' into v0.7.x 2015-07-21 14:45:45 -04:00
Julian Lam
05cac46c5b Revert "updated dev version on master branch"
This reverts commit 1a56267791.
2015-07-21 14:41:03 -04:00
Julian Lam
1a56267791 updated dev version on master branch 2015-07-21 11:37:58 -04:00
Julian Lam
d426839da9 latest translations 2015-07-21 11:29:11 -04:00
Julian Lam
7e6703c18e more line ending conversion #3343 2015-07-21 11:23:16 -04:00
Julian Lam
c781e55ea9 line endings? #3343 2015-07-21 11:20:37 -04:00
Julian Lam
d095e5925c #3343 2015-07-21 11:17:31 -04:00
psychobunny
0bc4799c3c remove setTimeout hax in settingsv1 :squirrel: 2015-07-20 17:16:30 -04:00
psychobunny
fdc66eb607 fixes checkboxes for settingsv2 (deja vu) 2015-07-20 17:13:25 -04:00
psychobunny
a3c41e7fdb action:posts.loading 2015-07-20 17:12:41 -04:00
psychobunny
8e4340544a action:posts.edited 2015-07-20 17:12:34 -04:00
barisusakli
435fe5c54f closes #3342 2015-07-20 15:53:08 -04:00
Barış Soner Uşaklı
a20d1f8220 Updated emails :) 2015-07-20 15:29:16 -04:00
Julian Lam
866b0ddaa6 Merge pull request #3283 from APXEOLOG/filter-extension
filter:auth.init strategy extension with custom urls
2015-07-20 15:25:54 -04:00
Barış Soner Uşaklı
bdc3cc49f8 Merge pull request #3308 from acardinale/master
Uniform action:post.* hook
2015-07-20 15:21:39 -04:00
Julian Lam
957766c1d7 fixed #3272 2015-07-20 14:51:38 -04:00
Julian Lam
0c6b2b122e fixed #3268 2015-07-20 14:28:33 -04:00
Julian Lam
fdefff3516 fixes #3338 2015-07-20 12:51:53 -04:00
barisusakli
e171ba59ac if no tags are passed in assume 0 tags 2015-07-20 12:34:21 -04:00
barisusakli
fba6e1dfe2 added min/max tags setting to defaults.json 2015-07-20 12:30:42 -04:00
barisusakli
1413fc1b1a closes #3340 2015-07-20 12:27:41 -04:00
barisusakli
399c89eeed pass in req,res to action:user.loggedOut 2015-07-20 12:22:14 -04:00
Julian Lam
1c973b7bf3 fixed #3324 2015-07-20 11:41:30 -04:00
Julian Lam
22251cb0bd fixed #3341, introduced new navigation data property, "targetBlank", deprecated "target", which was never exposed anyway, and updated default values 2015-07-20 11:29:38 -04:00
Julian Lam
33434ed13d fixed package.json conflict 2015-07-20 11:29:22 -04:00
barisusakli
83ad4ab042 waterfall 2015-07-18 14:21:51 -04:00
barisusakli
414c2a8bd9 added action:user.loggedOut 2015-07-18 14:06:51 -04:00
barisusakli
6ee0671e6a added too many tags check to post edit 2015-07-18 14:03:27 -04:00
Barış Soner Uşaklı
6bd131815f Merge pull request #3256 from yariplus/mintags
Add minimum tags per topic setting.
2015-07-18 14:02:06 -04:00
barisusakli
945a94f0ed delete cache on current process first 2015-07-18 13:59:40 -04:00
yariplus
bd863e1ccb Fix derp. 2015-07-18 02:34:47 -04:00
yariplus
546efbbd1b Add translations for min and max tag errors. 2015-07-18 02:21:34 -04:00
yariplus
e112190bee Fix maximumTagsPerTopic 2015-07-17 21:46:29 -04:00
Julian Lam
a10dfc87cf upped mentions minver 2015-07-17 19:48:33 -04:00
barisusakli
f4ea534327 closes #3312 2015-07-17 19:03:32 -04:00
Julian Lam
8dedea884d added 'no parent category' option to #2820 2015-07-17 18:27:45 -04:00
Julian Lam
5340537631 closed #2820 2015-07-17 18:19:57 -04:00
barisusakli
9e63aaebb8 added new hook action:middleware.pageView 2015-07-17 15:57:49 -04:00
Julian Lam
7063f172a7 upped composer minver, closes #3325 2015-07-17 13:15:51 -04:00
Julian Lam
87e5c733a4 added dedicated client-side action hook for when the client-side finishes loading 2015-07-17 13:13:30 -04:00
Julian Lam
4b9eab6dc0 fixes #3329 2015-07-17 10:53:00 -04:00
Julian Lam
b2a69758ee added back multi-line support for translator 2015-07-17 10:28:30 -04:00
Julian Lam
eaa35c8057 making translator regex stricter, so it doesn't match language strings that won't ever exist 2015-07-17 10:21:40 -04:00
barisusakli
65ab5733ef added categories navigation item, ability to change logo url 2015-07-16 16:21:05 -04:00
Julian Lam
b46da4461c upped markdown minver 2015-07-16 15:56:43 -04:00
barisusakli
0be2a79210 pass the data used to create the category to filter:category.create 2015-07-16 15:56:26 -04:00
barisusakli
e023d01616 closes #3327 2015-07-16 14:07:39 -04:00
Julian Lam
7f77269596 theme minvers 2015-07-16 13:50:24 -04:00
Julian Lam
3a8c1f88fb upped composer minver 2015-07-16 13:36:25 -04:00
Julian Lam
2c62bafdc7 fixed ajaxify for pagination blocks 2015-07-16 13:26:16 -04:00
Julian Lam
305c54a727 fixed bug where an extra space was added to new replies 2015-07-16 13:20:26 -04:00
Julian Lam
d061411747 added composer and emoji to default enabled plugins 2015-07-16 12:10:40 -04:00
Julian Lam
7fc08bbda8 latest translations :) 2015-07-16 11:06:15 -04:00
Julian Lam
516103fe5d latest fallbacks 2015-07-15 17:03:03 -04:00
Julian Lam
e5875ba53d adjusted persona and vanilla minvers 2015-07-15 17:02:09 -04:00
Julian Lam
e25d2fa6e6 closed #2811 2015-07-15 16:58:25 -04:00
Julian Lam
d712dcdce1 fixed issue where ajaxify couldn't handle urls with "#" href if the currently address already had a hash value present. 2015-07-15 15:12:00 -04:00
Julian Lam
b83492daa2 Merge pull request #3048 from FokkeZB/image-scheme
Replace schemeless URLs for emails
2015-07-15 14:49:23 -04:00
Julian Lam
d329bf45e6 Merge pull request #3318 from atomoc/patch-12
Update sitemap.js
2015-07-15 14:43:03 -04:00
Julian Lam
69c4b4183a latest fallbacks 2015-07-15 14:11:05 -04:00
Julian Lam
cbe810341c changed some wording in user.json to use past participle tense 2015-07-15 14:04:32 -04:00
Julian Lam
ad38c55b12 fixes #3314 2015-07-15 12:08:43 -04:00
Julian Lam
e2c4f668a1 fixed danish language error 2015-07-15 11:04:20 -04:00
barisusakli
a9da867255 fix infinite redirect loop on /chats @julianlam 2015-07-15 01:09:16 -04:00
barisusakli
ee7e36ae44 removed rooms from return 2015-07-14 17:14:35 -04:00
barisusakli
dc7839b511 small fix 2015-07-14 17:12:59 -04:00
barisusakli
daf1a388eb closes #3039 2015-07-14 17:03:33 -04:00
Сергей Савельев
8209d97f05 Update sitemap.js 2015-07-14 14:33:40 +03:00
Сергей Савельев
9552d9c5a3 Update sitemap.js 2015-07-14 14:33:25 +03:00
Сергей Савельев
efbab27827 Update sitemap.js
Why not? :)
2015-07-14 14:29:41 +03:00
Julian Lam
2cb70ceccc added auto-ajaxify on reconnect 😎 2015-07-13 16:00:04 -04:00
Julian Lam
f9a29186c4 updated ajaxify 5xx handling code to work even if nginx is used as a proxy (as it serves back 502, not 500) 2015-07-13 16:00:04 -04:00
barisusakli
81eeab42ed category filter on /unread 2015-07-13 14:47:15 -04:00
Julian Lam
3256faeb28 added Serbian and Danish to NodeBB, Хвала/mange tak! 2015-07-13 11:01:50 -04:00
Julian Lam
43b72d1552 updated italian translations 2015-07-13 10:52:30 -04:00
barisusakli
1b7df6e4b2 closes #3315 2015-07-12 12:42:53 -04:00
Julian Lam
835750f36f fixed checkbox behaviour in widgets page... @psychobunny, did I do this right? 2015-07-11 21:52:18 -04:00
Julian Lam
aab726bac4 fixes #3313 2015-07-11 20:32:04 -04:00
barisusakli
072d287183 closes #3311 2015-07-10 16:43:31 -04:00
Julian Lam
534b13e089 fixed bug where ephemeral groups and the registered-users group wouldn't show in in ACP/category details page for privileges. 2015-07-10 15:38:42 -04:00
Julian Lam
1229470bba seems the categories.search socket method is not used... 2015-07-10 15:17:16 -04:00
Julian Lam
140b8be161 updated ACP checkbox module so that it hides the checkbox via js instead of blanket CSS hiding 2015-07-10 15:13:42 -04:00
psychobunny
a4ace48469 closes #3310 2015-07-10 14:28:10 -04:00
psychobunny
541fd474b3 fixes checkboxes for both settingsv1 and settingsv2 2015-07-10 14:07:57 -04:00
psychobunny
f56c2ea88a padding fix 2015-07-09 17:14:56 -04:00
Barış Soner Uşaklı
4fc4a0ff3e dont escape group.name, use displayName in tpls instead 2015-07-09 16:00:43 -04:00
Barış Soner Uşaklı
d225951027 fix group name 2015-07-09 15:25:46 -04:00
Barış Soner Uşaklı
2b2dceb28b removed category stats from acp 2015-07-09 14:47:15 -04:00
Barış Soner Uşaklı
a12ecbc230 admin/manage/groups pagination 2015-07-09 14:01:20 -04:00
Julian Lam
1602b378e3 updated some minvers 2015-07-09 13:32:22 -04:00
Julian Lam
b4e39374bb firing 'change' event for all checkboxes after settingsv2 load 2015-07-09 13:31:14 -04:00
Andrea Cardinale
92c1d6712b Uniform action:post.* hook 2015-07-09 13:17:49 +02:00
Andrea Cardinale
423c6cc0ec Merge remote-tracking branch 'upstream/master' 2015-07-09 11:26:31 +02:00
Julian Lam
42367a653c more .reset() calls 2015-07-08 18:52:10 -04:00
psychobunny
780838c579 fixes "other" category for presence graph 2015-07-08 18:47:05 -04:00
Julian Lam
704aeea3f1 hopefully fixing bug where @psychobunny's terminal turns yellow after upgrading 2015-07-08 18:47:31 -04:00
psychobunny
ec8c5ff1fc dashboard: format numbers 2015-07-08 18:34:06 -04:00
psychobunny
7fbca487f5 make group description and group name the same size 2015-07-08 17:59:16 -04:00
psychobunny
6b6bae7cc5 font awesome checkboxes for acp 2015-07-08 17:43:24 -04:00
Julian Lam
020de2722f fixed regression introduced by earlier fix for #3307 2015-07-08 17:27:45 -04:00
psychobunny
b73a26f7a6 fixes reload button and probably a bunch of other things in ACP 2015-07-08 17:12:06 -04:00
psychobunny
6cf0697621 fixed indenting to match style 2015-07-08 17:08:37 -04:00
psychobunny
396013c8fd added a faint separator to the categories listing 2015-07-08 17:08:35 -04:00
Julian Lam
74f2f7caef fixes #3307 2015-07-08 17:04:25 -04:00
Julian Lam
02a63c0a45 moved portions of the ACP/Plugins page to a pair of partials, and split up the list so the plugins list isn't parsed twice. 2015-07-08 17:04:25 -04:00
psychobunny
b69ea4564a fix user presence graph
if nobody's using your forum at all, this thing stopped working
altogether
2015-07-08 17:02:33 -04:00
psychobunny
c01f06214e don't re-render graph if data is stale 2015-07-08 16:54:39 -04:00
psychobunny
26f22345cd allow realtime updates of the traffic graph in ACP 2015-07-08 16:46:33 -04:00
psychobunny
c6713177d3 realtime mode toggle for dashboard 2015-07-08 16:35:59 -04:00
psychobunny
c1a6bd8b8f don't enforce dependency check when running in dev mode 2015-07-08 16:03:16 -04:00
barisusakli
21ad15b13a closes #3306 2015-07-08 12:20:07 -04:00
barisusakli
b8028ccdbf dont allow deletion of administrators and registered-users 2015-07-08 12:01:06 -04:00
Barış Soner Uşaklı
d00e08a8e6 Merge pull request #3299 from NicolasSiver/category-update
Filter: Category update
2015-07-07 17:32:52 -04:00
barisusakli
2b493964d0 closes #3296 2015-07-07 17:23:41 -04:00
Nicolas Siver
9d0a0538a6 use tabs 2015-07-07 20:10:44 +03:00
Barış Soner Uşaklı
7397d98647 fix create time sort 2015-07-07 12:08:30 -04:00
Barış Soner Uşaklı
d0b1ebb8ea possible sort fix 2015-07-07 12:01:47 -04:00
Barış Soner Uşaklı
9a03671ad2 removed async.apply 2015-07-07 11:58:15 -04:00
Barış Soner Uşaklı
503d83998b fix indent 2015-07-07 11:39:56 -04:00
Barış Soner Uşaklı
b50ad39120 Merge pull request #3284 from APXEOLOG/pr-1
User.uploadFromUrl fix
2015-07-06 17:50:14 -04:00
barisusakli
f08554e788 closes #2701 2015-07-06 17:39:46 -04:00
Julian Lam
c6643082e2 closes #3303 2015-07-06 16:11:20 -04:00
Julian Lam
1069f9c936 some prep work to allow for checking of dependency versions. Also updated upgrade.check behaviour to send back error if schema is out of date, instead of no error and "false". 2015-07-06 15:44:52 -04:00
Julian Lam
da1c347fc2 closes #3297 2015-07-06 15:06:10 -04:00
barisusakli
ffd22f50ff closes #1999 2015-07-06 14:33:52 -04:00
Julian Lam
2d70733fa5 updated dependencies to use latest UglifyJS2, instead of my year-old fork 2015-07-06 13:19:14 -04:00
barisusakli
1d4efaee68 fix indices if postsPerPage is an odd number 2015-07-06 13:01:40 -04:00
Julian Lam
4de5fde18d fixed link to maintenance mode in ACP/Dash 2015-07-06 12:45:48 -04:00
Julian Lam
5c44775c1f latest translations, wow. 2015-07-06 12:45:48 -04:00
barisusakli
52f7e13a5c closes #3289 2015-07-06 12:39:05 -04:00
Julian Lam
e355c8cb1b removed socket calls for composer out of core and into plugin, closes #3293 2015-07-06 12:34:58 -04:00
barisusakli
417a573f67 closes #3260 2015-07-06 12:14:33 -04:00
Julian Lam
ceb4de653d fixed #3295 2015-07-06 10:41:13 -04:00
Julian Lam
6ff635ada3 Merge pull request #3301 from FokkeZB/patch-1
Allow Winston's log level to be set via nconf
2015-07-06 10:24:04 -04:00
Fokke Zandbergen
4b1c9ce9a2 Allow Winston's log level to be set via nconf
Defaults to `info` for `production` and `verbose` otherwise, like it used to.
2015-07-06 11:58:17 +02:00
Nicolas Siver
1e2f4ae5e9 filter slug for category update 2015-07-05 08:31:21 +03:00
Nicolas Siver
773d886135 ignore for JetBrains IDEs 2015-07-04 10:11:11 +03:00
barisusakli
619251143d reset inf scroll on search 2015-07-03 18:19:02 -04:00
barisusakli
5c35b2d96f fix composer redirect on relative path install 2015-07-03 17:21:19 -04:00
Julian Lam
19294c91c3 upping theme minimum versions 2015-07-03 17:08:17 -04:00
Julian Lam
48af82659e removing the composer from core, out to its own plugin: nodebb-plugin-composer-default, closes #3288 2015-07-03 16:43:36 -04:00
barisusakli
491d376fb4 closes #2605 2015-07-03 16:42:55 -04:00
Andrea Cardinale
b33a482226 Restore favourites.js 2015-07-03 14:14:21 +02:00
Andrea Cardinale
3e21f26d0d Restore favourites.js 2015-07-03 14:10:40 +02:00
Andrea Cardinale
3b1582915e Restore favourites.js 2015-07-03 14:00:22 +02:00
Andrea Cardinale
da800a9016 Merge remote-tracking branch 'upstream/master'
Conflicts:
	src/favourites.js
2015-07-03 13:55:32 +02:00
Julian Lam
aa001b5926 Merge pull request #3287 from exo-do/v0.7.x
Update user.json
2015-07-02 22:52:48 -04:00
.marty
5c253c1efa Update user.json
fixed some missing translations
2015-07-03 04:42:47 +02:00
APXEOLOG
1ae0077810 Change error message to localized one 2015-07-02 18:29:46 +03:00
APXEOLOG
1d7b2b5776 Branch for Pull Request 2015-07-02 14:18:50 +03:00
APXEOLOG
10bbbb8942 filter:auth.init strategy extension with custom urls 2015-07-02 13:14:50 +03:00
APXEOLOG
93b6b6ba5f Fixed two bugs:
1. filename cannot contain ':' (at least on windows), nodebb crashes with such filename
2. lwip cannot define image type without file extension

Also added image extension check to prevent security issues
2015-07-02 13:03:43 +03:00
Julian Lam
f2bebb12c6 turns out "detached" isn't even an option, so I've removed it altogether
Conflicts:
	nodebb
2015-06-30 22:23:27 -04:00
barisusakli
f2c45e98da escape users group data 2015-06-30 15:25:25 -04:00
barisusakli
c5b9c9254a #3275 2015-06-30 13:38:11 -04:00
psychobunny
65e2c4cd20 missing error 2015-06-29 16:58:34 -04:00
psychobunny
bf3b5ee318 closes #3264 2015-06-29 15:32:35 -04:00
psychobunny
a285e0734d closes #3274 2015-06-29 15:16:36 -04:00
Barış Soner Uşaklı
59b14669c4 fix composer on mobile 2015-06-29 13:32:01 -04:00
barisusakli
d135f37b4f check register queue against stopforumspam 2015-06-29 13:20:25 -04:00
barisusakli
5ee1951245 closes #3271 2015-06-28 21:54:21 -04:00
barisusakli
54226a86b4 fix group name link 2015-06-28 14:04:11 -04:00
barisusakli
57c2418157 closes #1306 2015-06-27 21:26:19 -04:00
barisusakli
de228fa67d display 404 page if registration is disabled 2015-06-26 12:18:14 -04:00
Barış Soner Uşaklı
0ba0f70581 Merge pull request #3269 from rbeer/acp_menu.plugins-icon
use icon for plugin entries
2015-06-26 11:41:58 -04:00
Raphael Beer
74a7bdf589 use icon for plugin entries 2015-06-26 11:47:42 +02:00
barisusakli
ea818e2af8 closes #3259 2015-06-25 15:15:33 -04:00
barisusakli
718f61e3bd closes #3263 2015-06-24 17:15:58 -04:00
barisusakli
a31178ebd8 closes #3258 2015-06-23 17:05:40 -04:00
barisusakli
2b0b2ea858 fix search by ip 2015-06-23 15:43:33 -04:00
Barış Soner Uşaklı
981a7558f7 use group name, hidden groups are not in groupslug:groupname 2015-06-23 14:08:04 -04:00
Barış Soner Uşaklı
6fc073d33e if key is fasly not a member 2015-06-23 13:35:58 -04:00
yariplus
13e12ba3a5 Add minimum tags per topic setting. 2015-06-23 10:23:56 -04:00
psychobunny
5ff9a7f9a9 allow multiline support for translator
see: https://github.com/psychobunny/templates.js/issues/36
2015-06-22 16:19:31 -04:00
psychobunny
3a21329c5e allow admins to remove themselves as admin
but only if they are not the last admin left
2015-06-22 16:03:32 -04:00
psychobunny
98cde1a9d6 missing lang key for error: cant-remove-last-admin 2015-06-22 16:02:57 -04:00
barisusakli
b89b4d066a max chars 2015-06-22 15:50:22 -04:00
psychobunny
fbeb6bc0ce closes #3254
@barisusakli :trollface:
2015-06-22 15:31:22 -04:00
barisusakli
38b838d462 closes #2754
moved group edit from modal to its own page
added hidden/private to group edit in acp, they were only in the client
groups page
moved add users above member list
2015-06-22 13:10:18 -04:00
barisusakli
1d72a8f0ee fix composer redirect on home page 2015-06-21 16:28:52 -04:00
Barış Soner Uşaklı
3e386e7668 fix xss on website 2015-06-21 02:15:34 -04:00
barisusakli
f974af2247 fix for #3246 2015-06-21 02:14:37 -04:00
barisusakli
2deeda553a closes #3246 2015-06-21 01:58:11 -04:00
barisusakli
8160188ef5 use correct names 2015-06-20 01:26:50 -04:00
barisusakli
c81d6f8b57 refactor groups.invite request member ship 2015-06-20 01:25:40 -04:00
barisusakli
dc351fa320 removed hack for https://github.com/psychobunny/templates.js/issues/33 2015-06-19 20:13:52 -04:00
barisusakli
6fd772756c on user delete leaveAllGroups and remove from pending invited sets as well 2015-06-19 17:37:19 -04:00
psychobunny
19b50c8888 missing lang key for already-flagged 2015-06-19 17:32:04 -04:00
psychobunny
a5365e968d post*.flag 2015-06-19 17:30:41 -04:00
psychobunny
b5b9a190e4 console.log 2015-06-19 17:23:13 -04:00
psychobunny
28e9874ba9 allow moderators/admins with 0 rep to still be able to flag a post 2015-06-19 17:22:14 -04:00
psychobunny
b655e18cee action:posts.flag 2015-06-19 17:10:29 -04:00
barisusakli
ba4e8c8955 small refactor to group show/hide 2015-06-19 15:59:38 -04:00
barisusakli
dff1a04585 more category hooks 2015-06-19 15:39:37 -04:00
Barış Soner Uşaklı
abfd58a1a9 Merge pull request #3219 from rbeer/topic.del-payload
send topicData on action:topic.delete
2015-06-19 15:30:46 -04:00
barisusakli
5445e32522 2 new hooks 2015-06-19 15:11:22 -04:00
barisusakli
9d562a8708 closes #3245 2015-06-19 14:33:56 -04:00
barisusakli
5f5b11f692 closes #3242 2015-06-19 00:31:47 -04:00
barisusakli
0ef2ccc130 closes #3240 2015-06-17 14:57:10 -04:00
barisusakli
ed173e0a32 closes #3217 2015-06-17 14:13:29 -04:00
barisusakli
cea385e572 closes #3223 2015-06-15 16:55:29 -04:00
barisusakli
536c443c1e closes #3231 2015-06-15 16:03:38 -04:00
barisusakli
8e74d8f4fa removed parallel 2015-06-15 14:54:28 -04:00
Julian Lam
29c9b2e69f requiring markdown v3 now 2015-06-11 15:50:19 -04:00
barisusakli
f6d025bc3f only call updatevisibility if hidden is passed in 2015-06-11 14:54:01 -04:00
psychobunny
93fe660892 woops 2015-06-10 19:20:20 -04:00
psychobunny
15a8ebaeff only load rjs modules that are required on startup 2015-06-10 19:19:39 -04:00
psychobunny
9583c5bf93 markdown 2.1.10 2015-06-10 19:02:58 -04:00
barisusakli
1bbce82c23 duh #3192 2015-06-10 15:58:07 -04:00
barisusakli
8ff7ba82c2 closes #3192 2015-06-10 15:56:47 -04:00
psychobunny
40408eb7a1 tjs 0.2.6 2015-06-10 15:49:03 -04:00
barisusakli
6d0d74a6e9 moved topic search end to topics.js 2015-06-10 14:16:35 -04:00
barisusakli
2880a77a9f closes #3130 2015-06-09 17:47:10 -04:00
psychobunny
a6cfdc7508 square buttons on acp 2015-06-09 16:05:45 -04:00
psychobunny
74de675b93 view sitemap button 2015-06-09 15:59:26 -04:00
psychobunny
071922d3ba linking the two tag administration pages together 2015-06-09 15:56:14 -04:00
psychobunny
7689b60773 added maintenance mode link; moved info about reloading into tooltips 2015-06-09 15:47:18 -04:00
psychobunny
0ea35beea6 system control panel 2015-06-09 15:39:22 -04:00
psychobunny
ff234bccfe redirectToLogin() 2015-06-09 15:35:19 -04:00
psychobunny
deda4a4ed6 fixes for 503's in maintenance mode 2015-06-09 15:31:45 -04:00
psychobunny
e3ee3de95d lint 2015-06-09 15:31:43 -04:00
barisusakli
387a5e36b2 search fix, moved topic search to topic.js 2015-06-09 15:10:37 -04:00
Julian Lam
1fef40eb6f updated readme, as oer #3178 2015-06-09 13:30:22 -04:00
Julian Lam
18897c70b4 fixed #3222 2015-06-09 12:49:40 -04:00
psychobunny
0ad1c8afbf forgot to add pagination to default minified file 2015-06-08 18:08:57 -04:00
psychobunny
b0907b8c3c minify some modules that are required on cold load 2015-06-08 18:05:21 -04:00
psychobunny
28e1ae46c7 woops, committed some testing code by accident 2015-06-08 17:56:33 -04:00
psychobunny
7564881298 don't minify files in /client
adds an extra call to the client/route.js file on cold load but cuts a
ton of extra weight in nodebb.min.js
2015-06-08 17:53:55 -04:00
psychobunny
97d1ab2e35 console.log 2015-06-08 17:11:29 -04:00
psychobunny
febc359e53 moved sortable to acp only 2015-06-08 17:10:52 -04:00
psychobunny
f8b3282295 closes #3141 2015-06-08 16:58:53 -04:00
psychobunny
ef6c30ad99 removed some unused variables 2015-06-08 16:35:11 -04:00
psychobunny
548d39fac5 lint 2015-06-08 15:53:07 -04:00
psychobunny
ac2811be75 instance.restart 2015-06-08 15:52:39 -04:00
psychobunny
6c607bca1e closes #3212 2015-06-08 15:50:33 -04:00
psychobunny
6ae64ca884 fixed skin revert message 2015-06-08 15:41:24 -04:00
psychobunny
78ea462620 fix crash when redis server isn't running 2015-06-08 15:34:39 -04:00
barisusakli
ed72bacb1f closes #3220
added back base_url
2015-06-08 13:55:14 -04:00
Raphael Beer
d8c329cadd send topicData on action:topic.delete 2015-06-06 13:29:23 +02:00
barisusakli
3a36ae5c13 wait for loadScript & widgets.render to emit action:ajaxify.end 2015-06-05 22:07:05 -04:00
Julian Lam
43b90c5679 fixed #3218
Conflicts:
	src/database/mongo.js
2015-06-05 13:35:58 -04:00
Julian Lam
96526a37a3 fixed #3218 2015-06-05 13:33:58 -04:00
Julian Lam
5549280696 updated package.json to use SPDX compatible license definition 2015-06-05 13:20:42 -04:00
barisusakli
7fc416f18a test fix 2015-06-04 17:14:22 -04:00
barisusakli
4a0482c421 closes #3208 2015-06-04 16:44:18 -04:00
Julian Lam
17ff083cc6 passing in available composer data into the composer.loaded client-side hook 2015-06-04 14:47:40 -04:00
Julian Lam
b08c7368c6 fixing some formatting 2015-06-04 14:40:20 -04:00
Julian Lam
6fedcca4ee changed a bunch of whitespace back into tabs, and fixed issue where categories without a parentCid were not showing up at all in the ACP 2015-06-04 14:24:38 -04:00
barisusakli
e892cf2e51 faster getUserGroups 2015-06-04 14:16:07 -04:00
Julian Lam
170126680b #3213 2015-06-04 13:42:10 -04:00
Julian Lam
f1c422d190 Merge branch 'extract-gravatar' 2015-06-04 12:33:04 -04:00
Julian Lam
e523ef7c17 added plugin hooks so that imagemagick can still be called, as a plugin, for image manipulation tasks, falling back to using lwip 2015-06-04 12:32:39 -04:00
Julian Lam
88dd8b1d4d using new reset command in plugin incompatibility warning 2015-06-04 12:28:54 -04:00
Julian Lam
54277e62fc fixed #3213 2015-06-04 12:23:30 -04:00
Julian Lam
704104c3bf fixed #3213 2015-06-04 12:23:14 -04:00
Julian Lam
cf35f69826 Merge branch 'lwip' of https://github.com/alpa-cat/NodeBB into extract-gravatar 2015-06-04 09:58:00 -04:00
Julian Lam
37c9c05319 added ACP styling for panel-danger panels 2015-06-03 20:06:47 -04:00
Julian Lam
478850ac05 rewrote a bit of the code so that templates.js is called asynchronously, and moved indentation levels to CSS instead of inlined styling. 2015-06-03 18:10:58 -04:00
Julian Lam
394497c9d5 Merge branch 'categories-parent-acp' of https://github.com/NicolasSiver/NodeBB into NicolasSiver-categories-parent-acp 2015-06-03 16:43:28 -04:00
Julian Lam
493c8752c3 upped theme minvers 2015-06-03 16:41:14 -04:00
Julian Lam
f0064ac11f updated to latest translations 2015-06-03 16:09:10 -04:00
Julian Lam
d5c6e2e73a Merge pull request #3156 from pentode/master
add feature to define mongo client connect options via config.json
2015-06-03 15:54:58 -04:00
psychobunny
f1f028b89c Merge pull request #3161 from yariplus/patch-1
Fix specificity on ACP widget panel heading.
2015-06-02 18:32:19 -04:00
psychobunny
0aceafb344 Merge pull request #3163 from yariplus/patch-2
Call Plugins.addLanguages on reload. Fixes #3153
2015-06-02 18:31:21 -04:00
psychobunny
9704af3b6d some plugins may not have a library, no need to warn unless unable to parse 2015-06-02 17:35:41 -04:00
psychobunny
e74f3da89e fixed sounds on windows 2015-06-02 17:31:17 -04:00
barisusakli
0feb11f205 test 2015-06-02 17:12:46 -04:00
barisusakli
64ec397101 update membercount sorted set on join/leave 2015-06-02 17:11:54 -04:00
psychobunny
18bfa44586 fixed menu items not being highlighted when active in acp 2015-06-02 17:09:49 -04:00
psychobunny
a60cb28562 guests 2015-06-02 17:04:52 -04:00
psychobunny
452b4c6d56 closes #3207 2015-06-02 16:54:19 -04:00
psychobunny
2dfb9837a7 log 2015-06-02 16:42:33 -04:00
Barış Soner Uşaklı
b45fa811b4 renamed .list to .getGroupsFromSet 2015-06-02 16:33:56 -04:00
Barış Soner Uşaklı
4e06b7790f removed unused require 2015-06-02 16:23:48 -04:00
Barış Soner Uşaklı
507fb225a2 removed console.log 2015-06-02 16:21:25 -04:00
Barış Soner Uşaklı
4420e7a9fc closes #3188, closes #3170 2015-06-02 16:20:28 -04:00
psychobunny
05c5196965 closes #3194 2015-06-02 15:56:26 -04:00
Nicolas Siver
a17c65ee9f move item template to file 2015-06-02 22:20:09 +03:00
Barış Soner Uşaklı
64359f4655 set memberCount with groupData 2015-06-02 14:01:28 -04:00
barisusakli
a94e676043 set system to true/false 2015-06-01 15:38:23 -04:00
Barış Soner Uşaklı
b717da0229 Merge pull request #3110 from pitaj/master
Fixed translator backwards compatibility issue
2015-06-01 14:04:24 -04:00
barisusakli
045d9df81f closes #3203 2015-06-01 13:21:34 -04:00
Nicolas Siver
1bfb41bccb sorting tree 2015-05-31 10:49:03 +03:00
Nicolas Siver
3197a9e47c register vendor script 2015-05-31 10:48:13 +03:00
Nicolas Siver
a77641c3ca add new vendor script for sorting 2015-05-31 10:47:31 +03:00
Alpacatty
37ad81a2b0 Swap out ImageMagick for lwip 2015-05-30 20:04:42 +02:00
Nicolas Siver
46ce3aae9f tree view 2015-05-30 18:44:31 +03:00
psychobunny
a355fbfc81 closes #2769 2015-05-29 16:47:12 -04:00
psychobunny
d51407834d closes #3166 2015-05-29 16:19:17 -04:00
Barış Soner Uşaklı
58b8c32fe9 crash fix 2015-05-29 00:47:37 -04:00
barisusakli
fc19405170 added missing callback 2015-05-29 00:40:59 -04:00
barisusakli
fc99864c06 crash fix 2015-05-29 00:02:18 -04:00
psychobunny
b96018b0f5 closes #3187 2015-05-28 16:12:44 -04:00
Barış Soner Uşaklı
a14e22d534 no need for map 2015-05-28 15:52:00 -04:00
Barış Soner Uşaklı
ee17367cc1 removed unused requires, firehook on sucess 2015-05-28 15:27:55 -04:00
Barış Soner Uşaklı
0c32aa0c78 fix test expand option removed 2015-05-28 15:16:29 -04:00
Barış Soner Uşaklı
8610c44e78 escape group data 2015-05-28 15:14:40 -04:00
Barış Soner Uşaklı
8eab5ac402 groups.get changes 2015-05-28 14:51:01 -04:00
Barış Soner Uşaklı
8726e2ccb6 ghfw :rage2: 2015-05-28 13:33:45 -04:00
Barış Soner Uşaklı
1e7da1fc82 removed console.log use getUsersData 2015-05-28 13:33:23 -04:00
Barış Soner Uşaklı
0563bb5923 allow member.isOwner to work on an array 2015-05-28 13:27:09 -04:00
Barış Soner Uşaklı
2129a2fc5f not used 2015-05-28 13:25:13 -04:00
Julian Lam
1b88a6a523 upped mentions minver 2015-05-28 12:16:59 -04:00
Julian Lam
8ecd90729e latest translations and fallbacks 2015-05-28 12:16:31 -04:00
Julian Lam
af8732fcb9 latest translations and fallbacks 2015-05-28 11:46:24 -04:00
Julian Lam
eddabe5a37 upped mentions minver 2015-05-28 11:41:52 -04:00
Julian Lam
f168566928 fixed incorrect use of username in unsub cta in emails 2015-05-27 21:36:13 -04:00
Julian Lam
463c893c3d fixed regression introduced by #2080, closed #3189 2015-05-27 19:08:59 -04:00
Julian Lam
f9053c077d updated groups ACP styling and template to use a table, like categories
Conflicts:
	src/views/admin/manage/groups.tpl
2015-05-27 18:42:18 -04:00
Julian Lam
06f7172c65 closes #3188 2015-05-27 18:04:39 -04:00
psychobunny
e905787301 latest tjs 2015-05-27 16:59:56 -04:00
Barış Soner Uşaklı
0b93738537 dont display hidden/system groups on /groups 2015-05-26 16:09:01 -04:00
Barış Soner Uşaklı
9a236486a9 meh 2015-05-26 16:00:14 -04:00
Barış Soner Uşaklı
82350dc967 fix test 2015-05-26 15:48:27 -04:00
Barış Soner Uşaklı
03bc317065 Merge branch 'master' of https://github.com/NodeBB/NodeBB
Conflicts:
	src/views/admin/manage/groups.tpl
2015-05-26 15:39:57 -04:00
Barış Soner Uşaklı
8117b4459a groups.list added start stop 2015-05-26 15:37:33 -04:00
Julian Lam
b45335c6ba updated groups ACP styling and template to use a table, like categories 2015-05-26 15:24:24 -04:00
Barış Soner Uşaklı
a065a73637 fix missing comma 2015-05-26 15:10:31 -04:00
Barış Soner Uşaklı
7bed4c40d6 closes #3179 2015-05-26 15:05:55 -04:00
Julian Lam
aca5d24a7d split groups.js into more subsidiary files 2015-05-26 14:45:17 -04:00
Barış Soner Uşaklı
8300aeec35 parseInt member count, use getMemberCount in install js 2015-05-26 13:55:40 -04:00
Barış Soner Uşaklı
50d9a3f0a7 dont call groups.get just to read 2 values 2015-05-26 13:44:52 -04:00
Barış Soner Uşaklı
3f1726636f groups create/delete/update 2015-05-26 13:17:49 -04:00
Julian Lam
8a225ad719 starting groups organization 2015-05-26 12:37:44 -04:00
Julian Lam
8f7416d1cb updated acp category privilege settings so that not all groups are shown in privilege table, closes #3036 2015-05-26 12:37:44 -04:00
Julian Lam
cc2a92d73f allowing array of privileges to be passed into setPrivilege in category admin socket listener 2015-05-26 12:37:44 -04:00
Julian Lam
cbb0542984 changed behaviour of privilege table so that groups without explicit privileges are not shown in the privilege table 2015-05-26 12:37:44 -04:00
Julian Lam
4a0bc1fb03 finished up executable rewrite, and prettified reset script output 2015-05-25 21:08:05 -04:00
Julian Lam
e6061810f9 updating nodebb executable so that it is a node script instead of bash script 2015-05-25 16:06:49 -04:00
Julian Lam
fc2efb0c83 added one more line to stdout when nodebb status is invoked, or nodebb web installer finishes 2015-05-25 14:48:01 -04:00
barisusakli
a0a8d328d0 closes #3182 2015-05-25 14:05:52 -04:00
barisusakli
d8e52d7ebf closes https://github.com/NodeBB/nodebb-theme-persona/issues/87 2015-05-25 13:28:04 -04:00
Julian Lam
b2f2561e74 adding a bit of logging when launching NodeBB from the web installer 2015-05-24 10:43:37 -04:00
Julian Lam
349de1694d fixed log line in web installer 2015-05-24 10:43:37 -04:00
barisusakli
714c7356f9 closes #3176 2015-05-23 22:11:24 -04:00
Julian Lam
9ed88b7bb9 updated readme a bit 2015-05-23 22:08:28 -04:00
barisusakli
a5b8a656e9 fix minSchemaDate 2015-05-23 19:30:56 -04:00
barisusakli
4b4be3d4cc fix minSchemaDate 2015-05-23 19:30:35 -04:00
Julian Lam
3b891ed7d8 closes #3173 2015-05-23 19:14:37 -04:00
Julian Lam
3055ee96a1 latest translations and fallbacks 2015-05-23 19:12:13 -04:00
Julian Lam
434f1d924e bumped the package's version number for dev purposes 2015-05-23 19:01:09 -04:00
Julian Lam
2cae7995e7 0.7.0 2015-05-23 18:56:50 -04:00
Julian Lam
19ca796915 🚀 2015-05-23 18:56:42 -04:00
Julian Lam
45589fbeca fixed bug where the selected language in the ACP was arabic, if no language was set at all" 2015-05-23 18:50:41 -04:00
Julian Lam
f6ba4c446a updated minimum versions for nodebb plugins to be the latest they are today 2015-05-23 18:42:47 -04:00
barisusakli
5ce617ca5a fix case in search 2015-05-23 16:16:05 -04:00
barisusakli
63489457fe group search change 2015-05-22 17:07:25 -04:00
psychobunny
1c4d78eb2d return back data in cb similar to topics.post call 2015-05-22 14:37:46 -04:00
psychobunny
f698d28dfb one last fix for #3169 2015-05-22 13:57:42 -04:00
psychobunny
7b81c5db9f #3169 2015-05-22 13:49:57 -04:00
psychobunny
79fd5a4d8e closes #3169 2015-05-22 13:45:41 -04:00
barisusakli
62a2e9fdd0 Merge remote-tracking branch 'origin/master'
Conflicts:
	src/messaging.js
2015-05-22 00:42:46 -04:00
barisusakli
990b02d0db fix crash @julianlam 2015-05-22 00:42:24 -04:00
barisusakli
95e9d7c798 filter messages 2015-05-22 00:39:48 -04:00
Julian Lam
62f1a788e0 prematurely removing null objects before they get parsed as messages 2015-05-21 23:01:10 -04:00
Barış Soner Uşaklı
5931255398 Merge pull request #3165 from kpanayotova/upstream
Bugfix: use sorted set to get user followers in sendTopicNotificationToFollowers
2015-05-21 19:32:52 -04:00
Kalina Panayotova
118de65f5e Bugfix: use sorted set to get user followers in sendTopicNotificationToFollowers 2015-05-21 16:24:33 -07:00
Barış Soner Uşaklı
9165da3b26 Update README.md 2015-05-21 17:19:21 -04:00
psychobunny
63a2a20fd3 remove the old history.pushState hack for mobile composer 2015-05-21 16:33:18 -04:00
psychobunny
55bed3464e if mobile, go to /compose route #3090 2015-05-21 16:25:57 -04:00
psychobunny
117bb407b0 /compose route 2015-05-21 16:24:40 -04:00
barisusakli
39c3afec62 removed updateUserCount 2015-05-21 14:52:39 -04:00
Timothy Fike
09ee1ae77e Call Plugins.addLanguages on reload. Fixes #3153
Ensures routes are set correctly for custom languages.
2015-05-21 14:37:23 -04:00
barisusakli
8acb0ca304 incr on user create 2015-05-21 14:23:06 -04:00
Julian Lam
d90f3649a6 minor tweak to retrieval of category listing in ACP so that hidden categories (those with order of -1) are not retrieved 2015-05-21 14:07:45 -04:00
Julian Lam
7125d902d0 prettifying things 2015-05-21 13:48:03 -04:00
Julian Lam
f6181e6481 fixes #3148 2015-05-21 13:36:27 -04:00
Julian Lam
d052db85e0 fixed bug where isMemberOfGroupList would return null if there were no groups to check, instead of false 2015-05-21 12:26:47 -04:00
Julian Lam
aae3ac6b98 updated title parsing methods to call a new hook: filter:parse.title 2015-05-21 12:07:46 -04:00
Julian Lam
830e1a7a3d fixed issue where privileges were not correctly determined if you were granted moderator access to a category as a group (vs as a single user) 2015-05-21 11:39:39 -04:00
Julian Lam
cd2ed20f3d Merge pull request #3162 from frissdiegurke/patch-1
fixed error-report within translator.js
2015-05-21 10:19:26 -04:00
Julian Lam
58b0b6011f removed console.log from upgrade script (@barisusakli :rage2:) 2015-05-21 10:07:00 -04:00
Ole R.
22e227a6cd fixed error-report within translator.js
reported by [rex-huang](https://community.nodebb.org/user/rex-huang), see https://community.nodebb.org/topic/4520/error-handling-is-wrong-in-translator-js
2015-05-21 15:38:19 +02:00
Timothy Fike
8414e31730 Fix specificity on panel heading.
Needs to be specific so I can put an accordion inside. 😎
2015-05-20 21:41:36 -04:00
Julian Lam
927971b392 added hooks for following/follower retrieval 2015-05-20 17:40:08 -04:00
barisusakli
3341fc5644 fix method name 2015-05-20 16:39:33 -04:00
barisusakli
4f37d268b6 removed sort by username 2015-05-20 16:36:26 -04:00
barisusakli
55e20b28ec upgrade script 2015-05-20 16:08:22 -04:00
barisusakli
5f23f04423 Merge remote-tracking branch 'origin/master' into user-search 2015-05-20 15:16:54 -04:00
Julian Lam
972ae42d91 pruned upgrade scripts in preparation for 0.7.0, ping @barisusakli 2015-05-20 11:44:10 -04:00
Julian Lam
671db1681e allowing usage of "false" in silent and daemon environment variables 2015-05-20 09:57:04 -04:00
barisusakli
fd817e865e added pagecount 2015-05-19 23:24:33 -04:00
barisusakli
fbdae8fe1d return time and matchcount on page switch 2015-05-19 23:13:53 -04:00
barisusakli
addd6ecde7 check error fix ip 2015-05-19 23:07:01 -04:00
barisusakli
aa577f4adc part 1
no upgrade script yet
2015-05-19 23:04:28 -04:00
Julian Lam
93df7f14d8 latest translations and fallbacks 2015-05-19 17:45:23 -04:00
Julian Lam
05049946d4 updated error strings 2015-05-19 17:00:07 -04:00
psychobunny
9cdc2e5a2d closes #3147 properly 2015-05-19 15:46:23 -04:00
psychobunny
93170ca106 closes #3147 2015-05-19 15:31:51 -04:00
psychobunny
60f9fc17ae #2928 2015-05-19 14:57:05 -04:00
psychobunny
1550f82652 closes #2928 2015-05-19 14:56:39 -04:00
pentode
297b5906ed add feature to define mongo client connect options via config.json 2015-05-19 14:55:06 -04:00
psychobunny
56e5f505a0 no need to yell! :p 2015-05-19 13:27:02 -04:00
Julian Lam
8aac4bdfa1 fixed issue where Groups.getUserGroups called getGroupsData on all groups, resulting in a very unscalable method if called on forum with thousands of groups 2015-05-19 00:06:37 -04:00
Julian Lam
8bc5330e89 some minor cleanup in the async tree... 2015-05-18 16:01:40 -04:00
Julian Lam
9daa2701cd Merge branch 'hook_favourite_unfavourite' of https://github.com/acardinale/NodeBB into acardinale-hook_favourite_unfavourite 2015-05-18 15:57:09 -04:00
Julian Lam
ec91efdd2d latest translations and fallbacks 2015-05-18 15:56:37 -04:00
Julian Lam
de71910f4c documentation is actually at docs portal, not wiki 2015-05-18 15:25:45 -04:00
barisusakli
48b5d90a9e closes #3150 2015-05-17 15:53:42 -04:00
barisusakli
20983c43f4 fix user privileges 2015-05-15 15:20:10 -04:00
psychobunny
e6beeb62cf {config.relative_path} instead of {relative_path} 2015-05-15 15:00:48 -04:00
barisusakli
5c4e988232 fix user.csv data 2015-05-15 14:46:42 -04:00
Julian Lam
220b42706f adding a check so that websocket method in notif pushing isn't called if the socket server isn't initialised 2015-05-15 14:14:20 -04:00
Julian Lam
fc1b0c8d24 allowing topic, post, and user creation to specify a timestamp for insertion into the past 2015-05-15 09:47:39 -04:00
barisusakli
30a9b66b31 fix room enter 2015-05-15 00:02:59 -04:00
barisusakli
d9af2242a7 store id as int 2015-05-14 22:04:53 -04:00
barisusakli
10de7a92e4 dont let joining other uid rooms 2015-05-14 13:53:02 -04:00
barisusakli
36853f4ad8 filter priv/registered-users/guests in groups.list 2015-05-13 18:32:27 -04:00
psychobunny
9c2a98486a fixed tag topic count color in ACP 2015-05-13 18:31:26 -04:00
barisusakli
68ceaadad1 removed static 404/403/500 routes 2015-05-13 17:22:48 -04:00
psychobunny
4124370efe tjs 0.2.3 2015-05-13 15:50:39 -04:00
Barış Soner Uşaklı
2706477bcc Merge pull request #3133 from akhoury/patch-1
guard against NULL mids/messages
2015-05-13 14:24:48 -04:00
Aziz Khoury
35c426ee1c guard against NULL mids/messages
I've seen them few times during import testing. In case the conversation does not exists.
2015-05-13 13:02:00 -04:00
Andrea Cardinale
da56681f73 Revert "Extra class in Topic list"
This reverts commit 5f0531e66a.
2015-05-12 23:56:27 +02:00
Andrea Cardinale
7c5ba9b7b1 Revert "Add hooks: action:post.favourite and action:post.unfavourite"
This reverts commit 1d22a2d46b.
2015-05-12 23:52:48 +02:00
Andrea Cardinale
1d22a2d46b Add hooks: action:post.favourite and action:post.unfavourite 2015-05-12 23:41:15 +02:00
Andrea Cardinale
5f0531e66a Extra class in Topic list 2015-05-12 23:12:42 +02:00
barisusakli
93fd938913 removed setTimeout 2015-05-12 16:32:30 -04:00
psychobunny
a88ad903af action:ajaxify.dataLoaded 2015-05-12 14:19:45 -04:00
barisusakli
224e3dc263 fix settings page 2015-05-12 10:53:52 -04:00
barisusakli
484ad33549 convert key, value index to sparse/unique 2015-05-11 18:07:45 -04:00
barisusakli
29aa858a11 fix admin/advanced/database values 2015-05-11 17:44:43 -04:00
psychobunny
e070a9777e #3125 2015-05-11 16:53:12 -04:00
barisusakli
ba9a68c59c async.waterfall 2015-05-11 16:13:09 -04:00
barisusakli
d3b52136bd fix suggested topics search 2015-05-11 16:01:22 -04:00
barisusakli
f55e8bc548 actually rename :dull: 2015-05-11 15:51:41 -04:00
barisusakli
dce9a19882 resolve method name collision, getPostsFromSet -> getPostSummariesFromSet 2015-05-11 15:43:57 -04:00
barisusakli
d11bfab275 async posts/topics.js 2015-05-11 15:38:14 -04:00
barisusakli
2b90568157 removed getLatestTids, renamed getPostsByTid removed unused tid param 2015-05-11 15:31:31 -04:00
barisusakli
b292aeea72 closes #3120
also dont allow loading posts of a topic if its deleted via
topics.loadMore
2015-05-11 15:12:23 -04:00
barisusakli
be1865da2d closes #3127 2015-05-11 14:33:41 -04:00
psychobunny
0f199af84d moved widget code out of controller; cleaned up code into a folder 2015-05-11 14:20:10 -04:00
psychobunny
394d55de99 closes #3125 2015-05-11 13:59:07 -04:00
psychobunny
2ed0f25d45 fixed widgets page rendering, along with tjs 0.2.2 2015-05-11 13:53:16 -04:00
psychobunny
551c81a977 grunt: watch for tjs changes as well 2015-05-11 13:52:52 -04:00
psychobunny
8f6d8001d6 0.2.1* 2015-05-11 12:40:40 -04:00
psychobunny
43755b2ce3 tjs 0.2.0 2015-05-11 12:39:21 -04:00
Julian Lam
e75ec97049 closes #3121 -- if for any reason postData.content is not a string, make sure it is a string before it hits plugins. 2015-05-11 12:20:58 -04:00
barisusakli
e79a386280 don't try to minify non-js files 2015-05-11 02:38:57 -04:00
psychobunny
9ca7243124 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-05-09 01:55:47 -04:00
psychobunny
f2a91ef655 updating widget containers for latest tjs 2015-05-09 01:55:41 -04:00
barisusakli
9518c006b5 fix userlang 2015-05-08 18:42:49 -04:00
Julian Lam
ca1ada9dc5 Merge pull request #3122 from pichalite/master
completes fix for #3119
2015-05-08 17:19:56 -04:00
barisusakli
74d6104072 correct upgrade date 2015-05-08 16:14:48 -04:00
barisusakli
c6a05930aa fix \uff0e in emails 2015-05-08 16:14:32 -04:00
barisusakli
7b550b13b9 display both redis/mongo info if available 2015-05-08 15:36:06 -04:00
barisusakli
0083d4ff1c return user settings in api 2015-05-08 14:53:08 -04:00
pichalite
732f6d7d80 Update plugins.tpl 2015-05-08 11:18:43 -07:00
barisusakli
27bf1c1b2e fix privilege upgrade script 2015-05-08 13:35:54 -04:00
barisusakli
ffac8eb41d closes #3118 2015-05-07 23:24:33 -04:00
barisusakli
9d273d3a32 fixed date log 2015-05-07 22:40:32 -04:00
Barış Soner Uşaklı
b08774763a added tpl to ajaxify.content-loaded 2015-05-07 15:27:01 -04:00
Barış Soner Uşaklı
c74d32a172 fix off by 1 error on user/topics posts #3120 2015-05-07 14:44:01 -04:00
Barış Soner Uşaklı
eaa89a4da7 added checks to skip empty/non-existing hashes 2015-05-07 14:23:03 -04:00
Barış Soner Uşaklı
dfffbace42 fix test callback 2015-05-07 14:15:28 -04:00
Barış Soner Uşaklı
c56b30ff60 convert uid mappings to sorted sets
email:uid, username:uid, userslug:uid, fullname:uid all converted to
sorted sets
prevents hitting mongodb document size limit
2015-05-07 13:43:06 -04:00
Julian Lam
073afe4db0 updated ./nodebb dev to match new loader.js behaviour 2015-05-06 21:43:41 -04:00
Julian Lam
0ff09d8093 changed the behaviour of --no-daemon so that it does not also pipe output to stdout, use new flag --no-silent for that. --no-daemon just does as it advertises, and doesn't daemonize the loader process before spawning app.js instances. 2015-05-06 21:41:04 -04:00
Julian Lam
ba36230262 closed #3119 2015-05-06 21:17:10 -04:00
psychobunny
d1231cf4a8 closes #3116 2015-05-06 18:30:09 -04:00
psychobunny
72177f6d16 #3114, #2830 2015-05-06 16:50:04 -04:00
psychobunny
8abca6b03f closes #3114, #2830 2015-05-06 16:44:22 -04:00
Julian Lam
cd7a3f64f4 removed extra console logging 2015-05-06 14:58:13 -04:00
psychobunny
c1dd0dd669 fixing nodebb startup on windows 2015-05-06 14:44:13 -04:00
psychobunny
954212fc9f emit templates:compiled event if skipped 2015-05-06 14:32:19 -04:00
Julian Lam
c7fbaf1a53 updated notif page code to work with new mobile-only dropdown for marking notifications read 2015-05-05 12:10:16 -04:00
Julian Lam
e18f6c95fa added link to 'install plugins' page in acp installed plugins menu dropdown
also fixed annoying white background when a menu item other than the one active is focused upon
2015-05-05 11:47:59 -04:00
barisusakli
b561c49de5 moved filter:users.search before pagination 2015-05-04 18:12:14 -04:00
barisusakli
73d65dd123 filter:users.search filter:users.build hooks 2015-05-04 18:01:45 -04:00
barisusakli
b48fdfadad set group member count to 1 on group creation 2015-05-04 16:40:57 -04:00
barisusakli
2fc8b153c1 img-responsive on about me images 2015-05-04 14:02:52 -04:00
barisusakli
4f8a1174a1 default about me length 2015-05-04 13:54:29 -04:00
barisusakli
1ee6255450 closes #3104 2015-05-04 13:32:49 -04:00
barisusakli
a924c456b9 closes #3113 2015-05-04 13:16:31 -04:00
Peter Jaszkowiak
ad7b561dd4 Fixed translator backwards compatibility issue
Also removed the _clearMenus global object because populating the global namespace is bad, bad, bad
2015-05-03 23:36:23 -06:00
barisusakli
7312540b72 closes #3109 2015-05-03 23:58:22 -04:00
Peter Jaszkowiak
a93a1d720d Merge pull request #7 from NodeBB/master
update
2015-05-02 18:02:57 -06:00
barisusakli
122aacdc57 check err item 2015-05-02 15:52:48 -04:00
Julian Lam
7f80a4a439 latest translations 2015-05-01 20:08:24 -04:00
barisusakli
b94d4f7fe5 Merge remote-tracking branch 'origin/master'
Conflicts:
	public/language/en_GB/error.json
2015-04-29 14:30:03 -04:00
barisusakli
9749658d35 added about me field 2015-04-29 14:29:18 -04:00
Julian Lam
1c94866ab3 addressed some issues brought up re: singular vs plural 2015-04-28 17:57:29 -04:00
barisusakli
3063da83ef argument fix for static/action hooks 2015-04-28 15:09:17 -04:00
barisusakli
163b70fba9 fix acp logout 2015-04-28 12:59:00 -04:00
Julian Lam
a462b10f94 nevermind... (@barisusakli 🧌) 2015-04-27 23:05:14 -04:00
Julian Lam
379bdd12e0 fixed improper parsing of url in loader, and updated mongo init to not send anything in cb except err. Also updated webserver init so that it doesn't expect stuff from static:app.preload 2015-04-27 22:51:44 -04:00
Julian Lam
f6ddff3e5f updated loader to kickstart the web installer if no config is found 2015-04-27 22:41:44 -04:00
barisusakli
c98e630f24 warn missing url 2015-04-27 21:42:08 -04:00
Barış Soner Uşaklı
3b93182ec1 Merge pull request #3091 from Icehunter/master
use replicaset if configured
2015-04-27 20:53:48 -04:00
barisusakli
2286d1137b remove tab 2015-04-27 20:32:37 -04:00
barisusakli
d946a2fcbd closes #3098
wait for templates to compile even if using clustering
fix emitter.all
upgrade.check error first
removed plugins.ready, using callback on plugins.init
removed webserver.init, using webserver.listen
2015-04-27 20:26:02 -04:00
barisusakli
51212c2bfa closes #3096 2015-04-27 16:02:13 -04:00
psychobunny
2fbe7a8190 webserver: only start listening _after_ everything is compiled 2015-04-27 14:46:05 -04:00
Ryan Wilson
6f66209428 use tabs per barisusakli 2015-04-27 11:08:58 -07:00
psychobunny
8bb73192cf closes #3073 2015-04-27 13:50:02 -04:00
psychobunny
533193fa79 send in data to action:taskbar.pushed as well 2015-04-27 12:44:35 -04:00
psychobunny
1556365712 call taskbar.push regardless of whether it's a new chat or not
there's logic in taskbar.push to not create the element anyways
2015-04-27 12:41:16 -04:00
psychobunny
c13e14d2c8 pass in element to filter:taskbar.push; taskbar.push cleanup 2015-04-27 12:25:05 -04:00
barisusakli
b9172358dd #3093 2015-04-26 12:56:18 -04:00
Julian Lam
84cbdc1358 changed the password confirmation form field in the web installer so that it doesn't clobber some env vars, and allowed admin username and email to be set via env var 2015-04-25 22:34:54 -04:00
Julian Lam
5a6c46a0a0 updating group creation method to send back group data in the return callback, and to include the ownerUid if one was passed in 2015-04-25 15:00:09 -04:00
barisusakli
0d7e72be51 removed dupe code 2015-04-25 12:59:56 -04:00
Ryan Wilson
c354929569 handled port as int with toString()
Signed-off-by: Ryan Wilson <syndicated.life@gmail.com>
2015-04-25 08:16:27 -07:00
Ryan Wilson
ec6c618751 use replicaset if configured
Signed-off-by: Ryan Wilson <syndicated.life@gmail.com>
2015-04-25 08:05:33 -07:00
barisusakli
17dfb4df94 posts_list.tpl changes 2015-04-24 22:51:52 -04:00
Julian Lam
275a9ef476 Reverted the last update to web installer, and updated it so environment variables always take precedence over form input, and form is hidden if database value is passed in 2015-04-24 15:13:52 -04:00
Julian Lam
5487da9030 updated web installer to auto-select the database if passed in via env var 2015-04-24 14:50:31 -04:00
Julian Lam
67eef3653b updated the web install form to populate the database fields if a value is passed in 2015-04-24 14:40:14 -04:00
barisusakli
dc16a665ae page checks #3089 2015-04-24 10:59:00 -04:00
barisusakli
47a2377229 closes #3089 2015-04-24 10:39:24 -04:00
barisusakli
03b0d282f1 search fix prevent crash if search term is invalid regex 2015-04-23 17:58:28 -04:00
barisusakli
e5928f330e closes #3085 2015-04-23 17:18:11 -04:00
barisusakli
d6949815ad #3085 2015-04-23 17:03:31 -04:00
Barış Soner Uşaklı
a5c52958e7 made handleSearch public 2015-04-23 16:06:27 -04:00
Barış Soner Uşaklı
e88d88e56c added return false 2015-04-23 15:43:50 -04:00
Barış Soner Uşaklı
8544531a79 removed event 2015-04-23 15:05:27 -04:00
Barış Soner Uşaklı
21b634e03f closes #3081 2015-04-23 14:37:27 -04:00
Barış Soner Uşaklı
f44e850fa0 revert last change, breaks ajaxify 2015-04-23 13:50:48 -04:00
Barış Soner Uşaklı
5d5346c4f9 allow overriding template name 2015-04-23 13:43:27 -04:00
Julian Lam
a54dccdf3b closed #3068 2015-04-23 11:27:44 -04:00
Julian Lam
15265bf36e Merge pull request #3071 from yariplus/settingsobject2
Enhance settings object plugin
2015-04-23 11:18:46 -04:00
Julian Lam
c004efee3f closed #3084 2015-04-23 11:15:37 -04:00
psychobunny
a9015cee03 Merge remote-tracking branch 'origin/master' into web-install 2015-04-22 18:21:22 -04:00
psychobunny
fac747cab7 call loader.js instead 2015-04-22 17:59:08 -04:00
psychobunny
24a11314dc installer - finally got it all working ;) 2015-04-22 17:51:35 -04:00
psychobunny
255e3bdd20 default is 4567 instead of 8080 2015-04-22 15:52:12 -04:00
psychobunny
e8ea1e12a1 launch nodebb after install 2015-04-22 15:51:14 -04:00
psychobunny
ddd5c49461 installer ux fixes 2015-04-22 15:29:29 -04:00
psychobunny
9b53cdfcc0 skip to the launch screen if config is set but installer is still active 2015-04-22 15:17:08 -04:00
psychobunny
7488fa0416 cleanup; fixes 2015-04-22 15:13:59 -04:00
psychobunny
5db3166136 log 2015-04-22 14:54:55 -04:00
psychobunny
d72d1a1641 save values from form 2015-04-22 14:54:35 -04:00
psychobunny
45e216edef installer: database error messages 2015-04-22 14:49:31 -04:00
psychobunny
8556ddd9a0 installation spinner; started launch page 2015-04-22 14:39:37 -04:00
psychobunny
e9a92bd1bf removed some compile scripts that we don't need 2015-04-22 14:08:15 -04:00
psychobunny
6533941207 remove hardcoded port variable 2015-04-22 14:07:24 -04:00
psychobunny
b617c1faa9 use from-file to optimize grunt dev with web installer 2015-04-22 14:06:59 -04:00
psychobunny
c8000d36db hint 2015-04-22 13:58:43 -04:00
psychobunny
f981e6d466 fixed confirm password validation 2015-04-22 13:57:18 -04:00
barisusakli
d99e028a1e only call sortedSetCard if using pagination 2015-04-22 13:57:14 -04:00
psychobunny
220dec5711 installer: validate before sending form 2015-04-22 13:54:51 -04:00
barisusakli
dd61bdb9c6 closes #3038 2015-04-22 13:47:41 -04:00
psychobunny
ee78281f35 console.log 2015-04-22 13:22:07 -04:00
barisusakli
6dfb229c66 closes #2842 2015-04-22 12:13:14 -04:00
psychobunny
176bf28d2f web installer works, woohoo! 2015-04-22 11:36:19 -04:00
psychobunny
948ad5fb44 Merge remote-tracking branch 'origin/master' into web-install 2015-04-22 11:23:10 -04:00
psychobunny
859e7593e1 basic installer function 2015-04-22 11:22:55 -04:00
barisusakli
a2497b050e crash fix 2015-04-22 11:10:46 -04:00
Julian Lam
8f5c393b12 only exposing password at setup end if one is autogenerated 2015-04-22 10:58:58 -04:00
barisusakli
7632997a99 closes #3045 2015-04-22 10:41:49 -04:00
Julian Lam
d7444e5edf removed from required values for env setup 2015-04-22 10:30:42 -04:00
Julian Lam
b604c9d5e1 updated install script to accept environment variables
updated upgrade script to execute callback when present
updated install script to not fire upgrades unless necessary
updated install script to write directly to console, and not through winston
if a password is not provided, one is auto-generated
2015-04-22 10:28:03 -04:00
psychobunny
3d9519bdec installer: actually installing nodebb 2015-04-21 20:42:06 -04:00
psychobunny
e2215b9912 don't blindly ignore error in install.js 2015-04-21 20:27:40 -04:00
psychobunny
89c863caa7 embarassing console.log's are allowed at 8pm on monday 2015-04-21 20:05:35 -04:00
psychobunny
213ee2d063 installer: fixed validation 2015-04-21 20:04:38 -04:00
psychobunny
2646b38dd2 woops, added too many namespaces 2015-04-21 20:02:38 -04:00
psychobunny
a93e52aade fixed cold load database switcher for installer 2015-04-21 19:54:33 -04:00
psychobunny
20a1ab185c small refactor to install/web.js 2015-04-21 19:50:58 -04:00
psychobunny
a386974585 installer: database switcher 2015-04-21 19:31:25 -04:00
psychobunny
bf13b6160f load database questions 2015-04-21 19:10:47 -04:00
psychobunny
a11652ead1 cleanup installer.less 2015-04-21 18:48:58 -04:00
psychobunny
8a7aaf8f76 installer: validate email 2015-04-21 18:38:54 -04:00
psychobunny
ab2272b6b5 installer: confirm password 2015-04-21 18:32:24 -04:00
psychobunny
fe40d0f9e8 installer: password validation 2015-04-21 18:21:50 -04:00
psychobunny
9fba76dc43 fixed header links for installer 2015-04-21 18:01:07 -04:00
psychobunny
22d2ba5d6b mobile optimization for installer 2015-04-21 18:00:01 -04:00
psychobunny
50b9a7096e minor ux 2015-04-21 17:50:42 -04:00
psychobunny
25e2e72366 got username validation working 2015-04-21 17:14:27 -04:00
psychobunny
1f2bd9390d compiling JS as well now 2015-04-21 17:02:36 -04:00
barisusakli
828980f3e6 closes #3008 2015-04-21 16:48:41 -04:00
psychobunny
55c969ab23 Merge remote-tracking branch 'origin/master' into web-install 2015-04-21 16:44:53 -04:00
barisusakli
3ffd3a5d3c closes #2970, closes #3078 2015-04-21 16:26:29 -04:00
psychobunny
14b16cb527 log 2015-04-21 16:21:51 -04:00
psychobunny
005c95277b using less for web installer 2015-04-21 16:21:04 -04:00
psychobunny
2ffdec5386 styled active clas 2015-04-21 15:43:55 -04:00
Julian Lam
2f2e2d60a0 updated translations 2015-04-21 15:37:36 -04:00
psychobunny
ee94d72c59 themed installer, started form 2015-04-21 15:24:50 -04:00
psychobunny
60d655e32b installer - got the basics in 2015-04-21 14:52:57 -04:00
Julian Lam
610d687a96 moved favicon into default link tags, and fixed bug that caused link tags to not show up 2015-04-21 14:32:36 -04:00
psychobunny
2dc20e690f web install init 2015-04-21 14:32:21 -04:00
Julian Lam
a72501f3b4 closed #3076 2015-04-21 12:30:06 -04:00
Julian Lam
c26f274392 moved meta and link tag parsing out to a new module, meta/tags 2015-04-21 12:30:06 -04:00
Julian Lam
cc4e626f5f updated middleware.renderHeader so that navbar config is retrieved in parallel like everything else, instead of retrieved first. (ping @psychobunny) 2015-04-21 12:30:06 -04:00
barisusakli
625a0dcbfa closes #3074 2015-04-20 23:26:02 -04:00
barisusakli
0c91391c75 display posts cache capacity/post count 2015-04-20 18:23:09 -04:00
barisusakli
1f06f90a50 closes #3051
updated lru to latest
created new files posts/cache.js posts/parse.js posts/edit.js
2015-04-20 17:56:48 -04:00
Julian Lam
eb0e2fe75d latest translations 2015-04-20 17:47:02 -04:00
Julian Lam
9e994f3baf finally closed #2887 -- added implicit privilege markers to client-side privileges table 2015-04-20 16:58:44 -04:00
Julian Lam
5a0ea28633 better fix for #3040 2015-04-20 16:05:14 -04:00
Julian Lam
bbccc38efd Revert "made pagination.loadPage also a silent ajaxify, so in-topic searching works with it"
This reverts commit 7e3e7edfd4.
2015-04-20 16:05:14 -04:00
barisusakli
72f80dd330 closes #3052 2015-04-20 15:49:13 -04:00
Julian Lam
7e3e7edfd4 made pagination.loadPage also a silent ajaxify, so in-topic searching works with it 2015-04-20 15:47:22 -04:00
barisusakli
759bdd55f0 closes #3065 2015-04-20 15:41:08 -04:00
barisusakli
dd92b06f16 #3064 2015-04-20 14:00:48 -04:00
Julian Lam
e309a188c3 fixed issue in ajaxify.go where search module was not properly required 2015-04-20 13:08:50 -04:00
Julian Lam
51f38e664c latest translations and fallbacks 2015-04-20 12:09:00 -04:00
Julian Lam
d780b82b01 added Bulgarian to NodeBB, благодаря! 2015-04-20 12:08:47 -04:00
yariplus
9d3a9f4493 Enhance settings object plugin
Use an array to declare the object properties so that the order is always the same.
Add a data-new attribute for individual properties. (You can still use a whole object in the data-new attribute of a parent array.)
Add data-prepend and data-append attributes to properties for inserting html before or after that property. (This may also be useful for the array plugin.)
2015-04-20 10:40:11 -04:00
Julian Lam
821c9f12d6 updated scrollToPost behaviour to no longer ajaxify loudly. Also updated call to checkPagePresence to fire before the topicDOM events begin, so if an in-topic search is conducted on a different topic from the current topic, the topicDOM behaviour continues. closes #3040 2015-04-19 23:34:15 -04:00
barisusakli
37a7ac5196 closes #3063 2015-04-19 18:45:16 -04:00
barisusakli
50feb7a766 default to zero if post_count topic_count is falsy 2015-04-19 15:24:11 -04:00
barisusakli
c45fe28266 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-04-19 15:18:58 -04:00
barisusakli
c24dce4dd6 closes #3062 2015-04-19 15:18:55 -04:00
Julian Lam
65b2523b0f closed #3050 2015-04-18 22:32:20 -04:00
barisusakli
b7b44e13b1 added privileges.topics.filterUids
if a topic is deleted and user doesn't have permissions/admin/mod dont
send notifs
2015-04-18 16:34:32 -04:00
Julian Lam
8ee40ece71 removed checks that would send the user to 404 if the slug didn't match, restored old behaviour of redirecting to the correct slug. #3047 2015-04-18 14:47:40 -04:00
barisusakli
da5909349b closes #3053 2015-04-18 13:11:52 -04:00
barisusakli
e8afe329a9 pagination 2015-04-17 23:07:18 -04:00
barisusakli
0d6772c30b warning/errors on invalid ports config 2015-04-17 17:52:11 -04:00
psychobunny
5d04cd0bef ability to add class to taskbar; new action hook; send touid in chat 2015-04-17 15:25:32 -04:00
Julian Lam
5a0c657587 re: #3043, if no address is entered, "http://" won't get automatically saved in 2015-04-17 15:17:30 -04:00
Julian Lam
5d495483ad using url module to normalise passed-in url prior to saving in db, closes #3043 2015-04-17 15:16:00 -04:00
psychobunny
23c4ecfe60 filter:taskbar.push
not really a filter, but does the job as long as its synchronous
2015-04-17 14:38:54 -04:00
Julian Lam
a5832624d7 added optional parameter to define timestamp when sending a chat message, for use in write API 2015-04-17 14:38:01 -04:00
Julian Lam
5587233e78 fixed quoting and highlighted-text auto-quote for composer when composer is minimized, closes #2870 2015-04-17 14:12:49 -04:00
psychobunny
1d94b6a96f closes #3000 2015-04-17 13:44:47 -04:00
psychobunny
c188fa2a1f closes #3049 2015-04-17 13:22:04 -04:00
Julian Lam
ee7d356781 Merge pull request #2825 from yariplus/settingsobject
Add object setting plugin
2015-04-17 12:54:30 -04:00
Barış Soner Uşaklı
a481d2c3fe closes #3041 2015-04-17 12:43:56 -04:00
Barış Soner Uşaklı
f71c82f653 closes #3046 2015-04-17 12:32:08 -04:00
Fokke Zandbergen
1eee970ebb Allow NodeBB version to be set via config to package.json version can be incremented when needed. 2015-04-17 12:20:08 -04:00
Julian Lam
848babcdfa Merge pull request #2778 from ahwayakchih/support-more-config-defaults-for-setup
This adds more setup defaults from config.
2015-04-17 11:14:30 -04:00
Fokke Zandbergen
86317a4b79 Replace schemeless URLs for emails 2015-04-17 14:35:45 +02:00
barisusakli
d146547b53 if topic doesnt have teaser use main post in rss feed 2015-04-16 22:42:00 -04:00
Julian Lam
0e9a096c25 moved some socket notifications to notifyUser instead of in websocket layer (again, @barisusakli) 2015-04-16 20:48:38 -04:00
Julian Lam
d40ca1e3c8 moved a number of sanity checks to also be in canMessage, so they are all consolidated into one exported method. (@barisusakli) 2015-04-16 20:32:16 -04:00
Julian Lam
078d76a11b removed sanitisation of chat message body, as messages are "parsed as a post" now. 2015-04-16 20:22:27 -04:00
barisusakli
4e793995a0 dont add http:// to website if its empty 2015-04-16 19:32:29 -04:00
Barış Soner Uşaklı
c9b5948034 closes #2927 2015-04-16 14:31:58 -04:00
Julian Lam
4fffe4da94 moved plugin route reloading outside of plugin initialisation, so plugins can add a hook listener before core routes have been added 2015-04-16 14:28:04 -04:00
Barış Soner Uşaklı
617808d574 teaser is just reply, dont include mainPid 2015-04-16 13:34:23 -04:00
Barış Soner Uşaklı
e7dd881092 teaser fixes
if a post is deleted/restored update the teaser to the latest undeleted
pid, if all posts are deleted it will be set to null
2015-04-16 13:23:21 -04:00
Barış Soner Uşaklı
edb856ba90 fixed typo 2015-04-16 12:59:02 -04:00
Barış Soner Uşaklı
6e80dff188 closes #2968 2015-04-16 12:58:03 -04:00
psychobunny
f7734d9b91 missing lang string 2015-04-16 12:25:51 -04:00
Julian Lam
0e0b92f794 update group pages to use components 2015-04-15 16:53:54 -04:00
Barış Soner Uşaklı
7bc2eeff4a duh 2015-04-15 14:58:37 -04:00
Julian Lam
1c36fbd57b fixed #3034 2015-04-15 14:45:52 -04:00
Julian Lam
2000947cd6 fixed #3030 2015-04-15 13:42:45 -04:00
Barış Soner Uşaklı
1e443551a5 added userslug 2015-04-15 12:36:37 -04:00
Barış Soner Uşaklı
b32d58e306 Merge pull request #3035 from FokkeZB/patch-3
Fix link in email notifications
2015-04-15 12:35:24 -04:00
Barış Soner Uşaklı
ba1afdf879 dont crash if callback isnt supplied fixes #3033 2015-04-15 11:51:38 -04:00
Barış Soner Uşaklı
68835844b0 crash fix #3031 2015-04-15 11:27:26 -04:00
Fokke Zandbergen
49e996caaf Fix link in email notifications 2015-04-15 13:19:00 +02:00
Fokke Zandbergen
a17cbbb8ad Fix link in email notifications 2015-04-15 13:18:50 +02:00
Fokke Zandbergen
3a090ef308 Fix link in email notifications 2015-04-15 13:18:06 +02:00
Julian Lam
27049a2180 updated theme minimum versions 2015-04-14 20:44:47 -04:00
Julian Lam
b58e50fb1e updated bootstrap js version in core 2015-04-14 20:44:47 -04:00
barisusakli
500c9f061c removed return 2015-04-14 15:54:48 -04:00
barisusakli
8c7ded3062 closes #3026 2015-04-14 15:31:17 -04:00
barisusakli
d5dd48ecc8 closes #3013 2015-04-14 14:27:42 -04:00
barisusakli
f7a3aef322 escape on the way out, fixes birthday/age calculation 2015-04-14 14:16:06 -04:00
barisusakli
eaa442db8c update deleted propery before calling hook 2015-04-14 13:06:01 -04:00
Julian Lam
e147328d53 updated backgroundDraggable jquery plugin with fork that allows for percentages: ad2c5a87d1 2015-04-14 12:52:49 -04:00
Julian Lam
6a509a51db fixes #2992 2015-04-14 12:23:28 -04:00
barisusakli
1cc80cbc84 closes #3014 2015-04-14 11:01:16 -04:00
Julian Lam
a055ff3547 latest translations 2015-04-14 10:21:15 -04:00
Julian Lam
32d3be0cbd closes #3014, closes #3009 2015-04-13 20:02:56 -04:00
barisusakli
fa9fde43fb closes #2971 2015-04-13 17:29:48 -04:00
Julian Lam
ceba856006 fixing categories with null parentCids, again 2015-04-13 16:12:29 -04:00
barisusakli
7fa014e5ad closes #3016 2015-04-13 16:10:56 -04:00
Julian Lam
80250b6f6c adding default of parentCid 0 if parentCid not set 2015-04-13 16:02:22 -04:00
barisusakli
5501c0c759 closes #3005 2015-04-13 15:01:38 -04:00
barisusakli
663ad38727 closes #3004 2015-04-13 13:17:24 -04:00
barisusakli
dd175ada67 closes #3003 2015-04-13 13:07:20 -04:00
barisusakli
1910fdb977 fix xss on guest handles, make sure guest handlers arent longer than max username length 2015-04-13 13:04:47 -04:00
barisusakli
cf825d02b7 escape title 2015-04-13 12:45:39 -04:00
psychobunny
c92ef6cf34 closes #3012 2015-04-13 10:57:34 -04:00
psychobunny
bbef94ed25 made the security vulnerability section a bit more obvious 2015-04-13 10:41:35 -04:00
psychobunny
3ec99b8021 #3011 2015-04-13 10:35:27 -04:00
barisusakli
3de083208d closes #3002 2015-04-12 22:12:27 -04:00
psychobunny
1201425db2 hint 2015-04-12 20:48:09 -04:00
psychobunny
e78fc98146 cross-browser support for composer resize animation 2015-04-12 20:48:08 -04:00
psychobunny
5db4714ba8 add success message to watch / ignore category methods 2015-04-12 20:48:07 -04:00
psychobunny
4d414d0b63 .category-box and .post-preview now components 2015-04-12 20:48:07 -04:00
barisusakli
1b2da78fd8 missing lines 2015-04-11 16:50:55 -04:00
barisusakli
1ce3d7284b closes #2995 2015-04-11 16:48:09 -04:00
barisusakli
427dda654a temp fix for #2994 2015-04-11 16:13:19 -04:00
barisusakli
039dab829a downgrade autocomplete to 0.1.2 2015-04-11 15:50:44 -04:00
barisusakli
a14249dee6 removed tags 2015-04-10 16:45:37 -04:00
barisusakli
729fb1d696 advanced search change 2015-04-10 16:13:45 -04:00
barisusakli
3d0b50a9b7 closes #2975 2015-04-10 15:40:23 -04:00
barisusakli
45bf5de1e5 closes #2982
update url with new slug on topic title edit
2015-04-10 15:01:36 -04:00
psychobunny
5c59aa7737 closes #2986 2015-04-10 14:23:40 -04:00
psychobunny
799cc9397a closes #2973
also fixes some UX issues and enforces password length check on both
client and server
2015-04-10 13:37:54 -04:00
barisusakli
cc6f37ac4e added category bgColor/color to getPostSummary 2015-04-10 13:29:09 -04:00
psychobunny
13b4e446bf closes #2984 2015-04-10 12:40:05 -04:00
psychobunny
59909894fc closes #2981 2015-04-10 12:35:49 -04:00
psychobunny
f601bdee5e Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-04-10 12:00:23 -04:00
psychobunny
97419bbdd9 closes #2980 2015-04-10 12:00:18 -04:00
barisusakli
8069cbda69 closes #2979
if all is selected search in all categories
2015-04-09 18:15:31 -04:00
barisusakli
0b76ed90aa no group title 2015-04-09 17:59:26 -04:00
barisusakli
b2fad172e5 closes #2966 2015-04-09 17:37:28 -04:00
Barış Soner Uşaklı
9c7c87fd3b closes #2972 2015-04-09 15:37:20 -04:00
Barış Soner Uşaklı
df3e007120 closes #2969 2015-04-09 14:53:59 -04:00
barisusakli
835d4db481 dont add category/topic slug if user doesnt have read permission
or category is disabled etc.
2015-04-08 21:16:11 -04:00
Julian Lam
0c851d864e latest fallbacks 2015-04-08 21:05:56 -04:00
psychobunny
56d1b521c5 closes #2967
@barisusakli  there was a return; if user is offline, don't see any
reason why it should be so I removed it, just FYI
2015-04-08 18:11:17 -04:00
psychobunny
43bd798f2b #2967 2015-04-08 18:03:19 -04:00
psychobunny
885b36bb50 closes #2965 2015-04-08 17:28:19 -04:00
Barış Soner Uşaklı
0ed46c3bae closes #2963, closes #2957 2015-04-08 11:54:38 -04:00
Barış Soner Uşaklı
5fda8422c5 fix focus 2015-04-08 11:37:02 -04:00
Barış Soner Uşaklı
436a9a61b8 fix language file 2015-04-08 11:32:36 -04:00
Julian Lam
3c6d154a27 translation strings for #2960 2015-04-08 10:43:59 -04:00
Julian Lam
3c0c806780 updated latest translations 2015-04-07 21:58:38 -04:00
barisusakli
b815601649 https://github.com/NodeBB/nodebb-theme-persona/issues/59 2015-04-07 21:57:19 -04:00
barisusakli
e33a905f55 missing change 2015-04-07 20:46:20 -04:00
barisusakli
499a068bb7 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-04-07 20:46:14 -04:00
barisusakli
0d515803e4 fix post edit 2015-04-07 20:46:11 -04:00
psychobunny
01542647d4 no need to add img-responsive to all images anymore 2015-04-07 18:06:42 -04:00
barisusakli
9d026919ac closes #2953 2015-04-07 17:23:49 -04:00
Barış Soner Uşaklı
e0996d67ca more rel_path upload fixes 2015-04-07 15:44:30 -04:00
Barış Soner Uşaklı
3f92984be2 fix image url in relative_path install in post 2015-04-07 15:37:20 -04:00
Barış Soner Uşaklı
7baa0e97fc waterfall getPostsByPids 2015-04-07 14:15:35 -04:00
Barış Soner Uşaklı
dadbda98b7 closes https://github.com/NodeBB/nodebb-theme-persona/issues/52 2015-04-07 13:45:46 -04:00
Barış Soner Uşaklı
641c8991f9 closes #2944
if going to users page wait for updateOnlineUsers to complete
2015-04-07 12:52:48 -04:00
Barış Soner Uşaklı
7abbbbfccf closes #2946 2015-04-07 12:19:32 -04:00
Julian Lam
cb9a300811 closed #2945 2015-04-07 12:01:25 -04:00
Barış Soner Uşaklı
c7c420e869 closes #2947 2015-04-07 11:44:45 -04:00
Barış Soner Uşaklı
ed57a41d17 #2943 2015-04-06 16:17:29 -04:00
Barış Soner Uşaklı
aa1f56b316 update deps 2015-04-06 15:15:32 -04:00
psychobunny
b1560388a6 hint 2015-04-06 14:36:15 -04:00
Barış Soner Uşaklı
4af8a5ec02 closes #2940 2015-04-06 14:31:19 -04:00
Julian Lam
1bf6c1fd46 latest translations and fallbacks 2015-04-04 14:23:50 -04:00
Julian Lam
40834cc010 updated checkAccountPermissions to call requireUser, and added new hook for plugins to handle auth login 2015-04-03 21:16:27 -04:00
barisusakli
1ade973e56 added missing radix :rage3: 2015-04-03 21:15:15 -04:00
barisusakli
188a480590 use post-count component 2015-04-03 18:22:18 -04:00
barisusakli
5f2271e4e0 closes #2903 2015-04-03 15:07:36 -04:00
barisusakli
f81e3ad358 categoryTools componets 2015-04-03 13:57:20 -04:00
psychobunny
e443d14519 fixes acp/categories/x menu selection
@julianlam
2015-04-03 11:17:58 -04:00
psychobunny
70bf518a02 define all required data at top of fn 2015-04-03 00:58:41 -04:00
barisusakli
e7fa000fe0 removed strict li selector 2015-04-02 23:01:47 -04:00
barisusakli
b00ee4828f removed hardcoded icons for post delete restore 2015-04-02 22:54:09 -04:00
barisusakli
9dac6303bb removed thread state fix bottom bar class 2015-04-02 22:34:23 -04:00
barisusakli
9e3b2148ba components 2015-04-02 22:06:22 -04:00
Julian Lam
04f536854c added some tests, fixed user reset tests 2015-04-02 20:27:43 -04:00
Julian Lam
66422acea2 fixed #2934 2015-04-02 19:18:48 -04:00
barisusakli
3efb1345e0 use topic/header closes #2933 2015-04-02 17:33:33 -04:00
psychobunny
63653662e0 a should have the title, not img
part 1 of https://github.com/NodeBB/nodebb-theme-persona/issues/38
2015-04-02 16:14:28 -04:00
psychobunny
30df61e7a5 infinite scrolling on category view, checkboxes weren't showing up 2015-04-02 15:56:32 -04:00
barisusakli
e15f7902dd closes #2930 2015-04-02 14:09:24 -04:00
Barış Soner Uşaklı
0994f810d9 Merge pull request #2931 from cismous/master
fixed post chat bug
2015-04-02 13:35:00 -04:00
CisMous
e5efec1361 fixed post chat bug 2015-04-02 17:11:55 +08:00
barisusakli
f96f6d9e2e shorter 2015-04-02 01:27:11 -04:00
barisusakli
1745689317 require composer when its needed 2015-04-01 23:28:21 -04:00
barisusakli
e862f7186f recent doesnt need composer anymore 2015-04-01 23:01:55 -04:00
barisusakli
b3f66faa37 default is private 2015-04-01 22:20:20 -04:00
barisusakli
0d839bdb2c parantheses 2015-04-01 22:18:42 -04:00
psychobunny
7563e9aba1 added localStorage for preview toggled state 2015-04-01 17:36:21 -04:00
psychobunny
e1ff3deaf0 move preview toggle function into composer/preview.js 2015-04-01 17:36:19 -04:00
Julian Lam
56fc958939 closes #2891 2015-04-01 17:26:27 -04:00
psychobunny
43502e041a don't send 5 million error messages during daily digest 2015-04-01 17:03:28 -04:00
Barış Soner Uşaklı
c294c3b342 fix inf scroll and timeago on users page 2015-04-01 16:41:23 -04:00
psychobunny
6c5c8ceeee closes #2859 2015-04-01 16:32:57 -04:00
psychobunny
bc4e5371d7 Merge pull request #2907 from MegaGM/fixcategory.images
fix: category images (helpers.generateCategoryBackground)
2015-04-01 15:42:46 -04:00
Barış Soner Uşaklı
c81424714d Merge pull request #2924 from cismous/master
remove code
2015-04-01 15:38:07 -04:00
Julian Lam
db1b70cccb updated italian language 2015-04-01 15:34:26 -04:00
Barış Soner Uşaklı
5641e54192 added route to /users 2015-04-01 15:23:04 -04:00
psychobunny
232d1aae31 helpers.getBookmarkFromIndex 2015-04-01 15:22:02 -04:00
CisMous
bb94c9c36b remove unused code 2015-04-02 03:17:06 +08:00
CisMous
5bb2f2bb62 fix type error 2015-04-02 03:16:33 +08:00
CisMous
458d9ab8a2 remove comma 2015-04-02 03:16:16 +08:00
psychobunny
ca3e0b59b0 filter out illegitimate rewards 2015-04-01 14:54:09 -04:00
psychobunny
27ad7e41c9 process.env is an object 2015-04-01 14:49:11 -04:00
Barış Soner Uşaklı
925b12ca22 startsWith 2015-04-01 14:47:38 -04:00
psychobunny
80b308b9a6 [[user:more]] 2015-04-01 12:56:40 -04:00
psychobunny
f734d47bef closes https://github.com/NodeBB/nodebb-theme-vanilla/issues/21 and https://github.com/NodeBB/nodebb-theme-persona/issues/31 2015-04-01 12:54:19 -04:00
Barış Soner Uşaklı
ca332d23c0 wait for createIndex errors 2015-04-01 12:28:10 -04:00
Julian Lam
f8fb5a1d9f Merge pull request #2837 from atomoc/master
Add parameters for create categories
2015-04-01 11:57:46 -04:00
psychobunny
4a9498e105 closes #2916 2015-04-01 11:49:46 -04:00
Barış Soner Uşaklı
7161972cc3 up vanilla lavender versions 2015-04-01 11:40:20 -04:00
Сергей Савельев
ce743be779 Delete errors 2015-04-01 18:25:27 +03:00
Сергей Савельев
6b3b44e2fc Delete errors 2015-04-01 18:22:55 +03:00
Сергей Савельев
18c5354ec7 Merge branch 'master' of https://github.com/atomoc/NodeBB 2015-04-01 15:11:19 +03:00
Сергей Савельев
621ae9c91a Add admin hooks for get categories 2015-04-01 15:11:15 +03:00
Сергей Савельев
63db2a539e Merge pull request #4 from NodeBB/master
123
2015-04-01 15:10:18 +03:00
barisusakli
2fd4bcde3f added req.uid user id for logged in users, 0 for guests 2015-04-01 00:23:57 -04:00
barisusakli
878e548296 renamed end to stop globally
fixed getting favourites for admins
2015-03-31 23:40:58 -04:00
barisusakli
27bab3330a pass data to getCategoryTopics, renamed end to stop 2015-03-31 22:59:34 -04:00
barisusakli
7a3b4c08e0 closes #2922 2015-03-31 21:14:36 -04:00
Peter Jaszkowiak
5f2b341aa2 Merge pull request #6 from NodeBB/master
merge latest
2015-03-31 14:20:09 -06:00
Сергей Савельев
f7a3428bf8 Merge pull request #3 from NodeBB/master
123
2015-03-31 23:07:21 +03:00
Julian Lam
326c531d7f v2.1.0 of markdown, for safety 2015-03-31 15:33:24 -04:00
Julian Lam
4ee4707f71 requiring v1.0.0 of widget essentials 2015-03-31 15:31:10 -04:00
Julian Lam
47a7ab15be refactored translator system to be a require.js module, and not a global 2015-03-31 15:11:59 -04:00
Barış Soner Uşaklı
b65f456d70 closes #2880 2015-03-31 14:19:17 -04:00
Julian Lam
16c6578bdb updated components to be a require.js module, not a global (:rage2:) 2015-03-31 14:10:20 -04:00
Barış Soner Uşaklı
f380f4214a closes https://github.com/NodeBB/nodebb-theme-persona/issues/27 2015-03-31 12:22:43 -04:00
Barış Soner Uşaklı
c4569d533d added filter:categories.build 2015-03-31 11:14:12 -04:00
barisusakli
e775246bf9 moved collapse to theme 2015-03-30 18:36:25 -04:00
barisusakli
e6d36af942 only close nav if body has slide-in 2015-03-30 18:24:23 -04:00
Julian Lam
2871cf3fb2 updated forum to require v2.0.0 of the markdown plugin 2015-03-30 17:02:54 -04:00
barisusakli
486f5f9df6 close navigation on click for slide-in as well 2015-03-30 14:14:21 -04:00
barisusakli
b2087f94e2 closes #2904 2015-03-30 13:31:08 -04:00
Сергей Савельев
a70f1b09e4 m 2015-03-30 12:11:01 +03:00
barisusakli
8026b3c7d8 closes #2911 2015-03-28 15:26:23 -04:00
Julian Lam
c706638b5d updating groups access control so:
1. Guests can no longer receive the moderate bit
  2. If you attempt to grant the moderate privilege to a public group, a confirmation modal appears
  3. A lock icon is present next to all private groups
2015-03-28 11:23:51 -04:00
Julian Lam
89442c91c6 fixed bug where privilege state was not correctly calculated for MongoDB installs, and fixed columnCount not being present when a the privilege list is refreshed 2015-03-28 10:19:43 -04:00
barisusakli
d27ec057c5 closes #2910 2015-03-27 21:49:53 -04:00
Julian Lam
d249a46fae fixed around event handling for composer submit button, and upped vanilla minver 2015-03-27 21:36:10 -04:00
Julian Lam
8e17f34de4 lol. 2015-03-27 20:51:38 -04:00
Julian Lam
9369158ba0 latest dutch translations 2015-03-27 20:37:42 -04:00
barisusakli
fccfc5307b fix commas 2015-03-27 16:27:28 -04:00
barisusakli
65bdeba385 helpers.js fix maybe 2015-03-27 14:21:27 -04:00
barisusakli
a3a0ba9bc3 fix post count tmp fix for js error from helpers.js 2015-03-27 14:21:04 -04:00
barisusakli
8d6d1c32e7 allow plugins to update additional fields with filter:user.updateProfile 2015-03-27 14:01:59 -04:00
Julian Lam
f0f31e077f added exposeUid middleware to core 2015-03-27 13:30:18 -04:00
barisusakli
474b074c8f fix wrong post count on new post 2015-03-27 13:19:12 -04:00
Barış Soner Uşaklı
a78eebe8be Merge pull request #2909 from cismous/master
remove unneeded argument
2015-03-27 12:50:30 -04:00
cismous
68cf6833b7 remove unneeded argument 2015-03-27 23:59:39 +08:00
Julian Lam
76793729d8 Merge pull request #2908 from MegaGM/fixadmin.remove.category.image
fix:removing category images via ACP
2015-03-27 09:01:57 -04:00
Julian Lam
316d0fe1d7 latest fallbacks 2015-03-27 09:01:25 -04:00
Julian Lam
2d5f687373 latest translations 2015-03-27 08:58:55 -04:00
Mega
30ad24caa6 Hide "Remove" buttun as well 2015-03-27 15:58:13 +03:00
Mega
3947710a3d fix:removing category images via ACP 2015-03-27 15:43:37 +03:00
Mega
8b48a1e3af fix: category images (helpers.generateCategoryBackground) 2015-03-27 14:51:36 +03:00
barisusakli
ed8d60b76b move registered-users/guests to top remove admins from priv settings 2015-03-26 18:33:05 -04:00
psychobunny
7c7b43d295 semicolon 2015-03-26 17:36:15 -04:00
psychobunny
789418f987 stripTags and escape template helpers
use it like so {function.stripTags, title}
see vanilla or persona topics_list.tpl for more info
2015-03-26 17:27:50 -04:00
Barış Soner Uşaklı
41db2dcd14 removed idle added recent tags presence info 2015-03-26 16:32:28 -04:00
Julian Lam
0d044c34c1 removed old code that was adding unneeded html to the template 2015-03-26 13:14:20 -04:00
Julian Lam
f4803c21ac added missing partial 2015-03-26 13:12:21 -04:00
Barış Soner Uşaklı
5ce72f4920 dont add guests to users:repuration zset 2015-03-26 13:03:23 -04:00
Barış Soner Uşaklı
e0b4a35a25 dont add guests to users:postcount zset 2015-03-26 13:00:26 -04:00
Barış Soner Uşaklı
c9b98306e0 dont require everything in folder
dont want rooms.js to be public
2015-03-26 12:42:25 -04:00
Barış Soner Uşaklı
30104b898c dont allow vote spam 2015-03-26 12:22:39 -04:00
barisusakli
e528f52cfb closes #2757 2015-03-25 23:06:56 -04:00
barisusakli
77e956861a #2486
various fixes for socket.io cluster
display user presence correctly
2015-03-25 22:33:19 -04:00
Julian Lam
1a58ea6520 closed #2695 2015-03-25 20:04:45 -04:00
Julian Lam
d95f5a9ae0 added help block to category purge button, updated iconSelect library to use templates in a better way, hooked up iconSelect for category mgmt, #2463 2015-03-25 19:29:24 -04:00
Julian Lam
202789fa8d added back category creation, #2463 2015-03-25 18:08:15 -04:00
Julian Lam
e340b9fffe fixed save/delete/purge in category ACP, #2463 2015-03-25 17:51:46 -04:00
Julian Lam
7cdfe143ab fixed bug where cid was hardcoded, and switched format back to storing group names, not slugs, #2887 2015-03-25 17:41:54 -04:00
Julian Lam
4f2c7382c5 passing in the column count so a message can be displayed to users when no users have privs in a category, #2887 2015-03-25 17:34:16 -04:00
Julian Lam
60b19a9d62 Merge remote-tracking branch 'origin/master' into categories_revamp 2015-03-25 17:23:17 -04:00
Julian Lam
9dece4a1db added some missing files from previous commits, fixed setParent mechanic which broke after I refactored, #2463 2015-03-25 17:21:38 -04:00
Barış Soner Uşaklı
4a18a041c9 #2894 no need to remove if there are no new posts 2015-03-25 16:20:27 -04:00
Julian Lam
25cb1f9284 Merge remote-tracking branch 'origin/master' into categories_revamp 2015-03-25 16:10:27 -04:00
Julian Lam
d3af278123 removed old code that was no longer necessary, updated privilege table to show all groups (similar to previous behaviour), fixes #2887 2015-03-25 16:09:38 -04:00
Barış Soner Uşaklı
36942125e6 closes #2894
also mark user online if they post a reply
2015-03-25 15:51:11 -04:00
Julian Lam
9b84a887d3 a huge frickin' number of changes for #2887. This is part of #2463 2015-03-25 15:43:57 -04:00
Julian Lam
815ea88fa5 readded some missing classes, fixed some styling on category.tpl, fixed image uploading code 2015-03-25 11:58:21 -04:00
Julian Lam
765f15096b removed wrapping .row around tables in acp/manage/categories 2015-03-25 11:35:38 -04:00
Julian Lam
a1621145d5 Merge branch 'master' into categories_revamp
Conflicts:
	public/less/admin/admin.less
	public/src/admin/manage/categories.js
	src/controllers/admin.js
	src/views/admin/manage/categories.tpl
	src/views/config.json
2015-03-25 11:16:37 -04:00
Barış Soner Uşaklı
f928b87997 use component, add user.watch title 2015-03-24 15:46:15 -04:00
Barış Soner Uşaklı
08ec35820d Merge pull request #2890 from EvSpirit/master
#2886 Check subcategories when showing category recent topics
2015-03-24 15:16:50 -04:00
EvSpirit
2ea840e65d #2886 Check subcategories when showing category recent topics 2015-03-24 21:58:35 +03:00
EvSpirit
0fcd4dee58 #2886 Check subcategories when showing category recent topics 2015-03-24 21:39:28 +03:00
psychobunny
11710987a4 fixed navigator pagination 2015-03-24 14:20:01 -04:00
Julian Lam
fcbc02d48a better local function name in install.js 2015-03-24 13:47:47 -04:00
Barış Soner Uşaklı
203d4d052a fixed my logic fail 2015-03-24 13:21:54 -04:00
Barış Soner Uşaklı
c7b5cd48ba closes #2773 2015-03-24 13:10:18 -04:00
psychobunny
d39c2924e4 found a rogue topic class selector 2015-03-24 12:56:01 -04:00
Barış Soner Uşaklı
29fd89407c closes #2872
show the last posts content and user in topic feeds
2015-03-24 12:55:27 -04:00
psychobunny
705111a1d9 chat/icon component 2015-03-24 12:21:19 -04:00
Barış Soner Uşaklı
f6d0ad9b0f Merge remote-tracking branch 'origin/master' into mongodb-3.0-driver-2.0 2015-03-24 12:16:31 -04:00
Julian Lam
4dbb1c08b6 added default host port and db settings for mongo, if not set in config file 2015-03-24 11:08:06 -04:00
Barış Soner Uşaklı
fc28cbf887 filter cids with a single .filter thanks @julianlam 2015-03-24 10:59:21 -04:00
Julian Lam
06d547a6cb fixed bug in privilege settings where categories near the end of a list were not having their permissions read properly if earlier categories were disabled, #2887 2015-03-24 10:52:36 -04:00
barisusakli
b268927cf9 removedu if from filter:parse,post, parse strip teaser content 2015-03-23 19:32:32 -04:00
psychobunny
7c9e76132d topic/follow component fix 2015-03-23 14:42:45 -04:00
barisusakli
9754dc8be0 open user link in new tab 2015-03-21 15:32:11 -04:00
psychobunny
4ec43f662c don't actually need to restart nodebb to apply skins 2015-03-21 13:10:57 -04:00
barisusakli
6b950d0596 fix endsWith if check 2015-03-20 19:42:59 -04:00
barisusakli
810d3be512 closes #2593 2015-03-20 19:36:18 -04:00
barisusakli
4c31535c4b closes #2799 2015-03-20 18:47:08 -04:00
barisusakli
6c0e07c384 Merge remote-tracking branch 'origin/master' into mongodb-3.0-driver-2.0 2015-03-20 17:52:04 -04:00
barisusakli
38726243fe closes #2879 2015-03-20 16:13:34 -04:00
barisusakli
04ed79e587 fix profile image upload on subfolder install 2015-03-20 14:48:19 -04:00
barisusakli
c8e0eab34e escape data on room enter 2015-03-20 13:46:05 -04:00
barisusakli
7dde229517 added filter:teasers.get 2015-03-20 12:21:27 -04:00
barisusakli
ea91518f30 slugs lowercase duh 2015-03-19 23:03:36 -04:00
Barış Soner Uşaklı
9e7af15bbc Merge pull request #2876 from cismous/master
remove comma
2015-03-19 23:01:41 -04:00
barisusakli
9d62709f7c doggy.gif 2015-03-19 22:59:12 -04:00
barisusakli
a51b7257c7 fix group name in tests 2015-03-19 22:46:40 -04:00
barisusakli
8b5643fe90 system and hidden groups cant be renamed 2015-03-19 22:42:16 -04:00
barisusakli
e5bea19f56 renamed groupname 2015-03-19 22:35:24 -04:00
barisusakli
649ef93768 its called foo :dull 2015-03-19 22:21:08 -04:00
barisusakli
e4431f62b2 fix group update text 2015-03-19 22:07:36 -04:00
barisusakli
358f6f61f7 closes #2803, closes #2883
options.unescape was not used correctly
fix groups.update so it  doesnt overwrite data if some fields are not
passed in
2015-03-19 21:43:53 -04:00
psychobunny
d2dae2d62f standardize showSelect amongst category and topic_list routes 2015-03-19 16:15:39 -04:00
Barış Soner Uşaklı
0ebad0fe10 Merge pull request #2843 from FokkeZB/patch-1
Skip setTimeout if it doesn't exist (Node 0.10.x with SSL)
2015-03-19 15:56:14 -04:00
Barış Soner Uşaklı
9edfcb0053 dont save user obj in db 2015-03-19 15:55:56 -04:00
psychobunny
6acfec9d25 add teaser content to category view 2015-03-19 15:50:28 -04:00
Julian Lam
eee2aa8051 making sure to pass in userData to notifications.create on user follow 2015-03-19 15:46:33 -04:00
Barış Soner Uşaklı
027f9e5a83 dont need start time anymore 2015-03-19 15:27:27 -04:00
Barış Soner Uşaklı
8b429a2e05 removed path 2015-03-19 15:26:51 -04:00
Barış Soner Uşaklı
cc92d09498 generateNotificationPaths 2015-03-19 15:24:46 -04:00
psychobunny
8c0dfa1217 data/category partial 2015-03-19 15:11:02 -04:00
psychobunny
8fbb085718 Merge remote-tracking branch 'origin/master'
Conflicts:
	public/src/client/topic/postTools.js
2015-03-19 15:06:14 -04:00
psychobunny
f2c220988b fix for posting in multiple threads bug 2015-03-19 15:05:11 -04:00
Barış Soner Uşaklı
b1478ad5da dont add events multiple timest to #content 2015-03-19 15:05:00 -04:00
Julian Lam
82f7ca5e0f added a path to follow notification 2015-03-19 14:56:27 -04:00
psychobunny
bc056f0724 can remove this line as well 2015-03-19 14:22:00 -04:00
psychobunny
5d7ce0011a no need for setTimeout in ajaxify 2015-03-19 14:21:23 -04:00
psychobunny
85e3cb9f0d Merge remote-tracking branch 'origin/persona' 2015-03-19 14:10:28 -04:00
psychobunny
87ffc2cff9 topic/pinned and topic/locked components 2015-03-19 14:05:41 -04:00
psychobunny
4ca6364dd4 removed .category-item selectors 2015-03-19 13:58:29 -04:00
psychobunny
10eb617c6d category and category/topic components; removed #topic-container selectors 2015-03-19 13:56:12 -04:00
Barış Soner Uşaklı
d05ef6ddbc closes #2822 2015-03-19 13:28:15 -04:00
Julian Lam
5a4fa18e98 fixed digests so they aren't prematurely exiting, and will send again :shipit: 2015-03-19 13:20:56 -04:00
psychobunny
aeb7548a9d because this works 2015-03-19 12:58:09 -04:00
Barış Soner Uşaklı
6417a55918 up dbsearch version 2015-03-19 12:47:28 -04:00
Barış Soner Uşaklı
877b2d51fc Merge remote-tracking branch 'origin/search-cid-uid' 2015-03-19 12:33:02 -04:00
Barış Soner Uşaklı
0cc900bdcf closes #2878 2015-03-19 12:32:05 -04:00
Julian Lam
8e38840768 also passing in uid in topic delete and restore hooks 2015-03-19 11:34:51 -04:00
Barış Soner Uşaklı
0bbebbe4b1 Merge remote-tracking branch 'origin/master' into search-cid-uid 2015-03-19 10:59:39 -04:00
barisusakli
a1b6019efe disable/enable reply buttons on lock/unlock 2015-03-18 20:43:57 -04:00
barisusakli
783bcb9bd6 some component fixes closes #2881 2015-03-18 20:20:32 -04:00
barisusakli
5bc2e7dac2 closes #2309 2015-03-18 17:50:53 -04:00
psychobunny
41f5afa887 fix for post-bar reply button 2015-03-18 17:48:14 -04:00
psychobunny
721ee09b19 removed deprecation notice 2015-03-18 17:41:55 -04:00
Julian Lam
5951079926 latest translations 2015-03-18 16:18:17 -04:00
barisusakli
254fcff01f forgot db require 2015-03-18 15:18:07 -04:00
barisusakli
6c58bd9520 closes #2871 2015-03-18 15:16:37 -04:00
psychobunny
e9d9e14eb4 components - fixed a bug with bottom post bar now showing up 2015-03-18 14:55:16 -04:00
psychobunny
98c54c3ccb closes https://github.com/NodeBB/NodeBB/issues/2856 2015-03-18 14:40:16 -04:00
psychobunny
3ed3612047 file upload with spaces / general file upload fix wrt ajaxiy 2015-03-18 13:54:43 -04:00
barisusakli
909fe660a9 decodeURIComponent for uploaded file/image 2015-03-17 20:19:24 -04:00
psychobunny
60a70e4e62 moved 37fe438c63 into core 2015-03-17 16:23:18 -04:00
psychobunny
075611ca4b Merge remote-tracking branch 'origin/master' into persona 2015-03-17 16:16:56 -04:00
psychobunny
adbbbb3602 decided to go ahead and deprecate this for 0.7x instead of post-0.7x 2015-03-17 16:15:12 -04:00
psychobunny
2e33f1d400 navbar/title component 2015-03-17 16:12:06 -04:00
Barış Soner Uşaklı
37fe438c63 reset fix for t.js bug :rage3: 2015-03-17 15:53:05 -04:00
psychobunny
5e39d8df33 thread tools components 2015-03-17 15:48:08 -04:00
cismous
3bd42c8b7a remove comma 2015-03-18 03:39:42 +08:00
psychobunny
fffed29913 post/favourite-count component 2015-03-17 15:35:32 -04:00
psychobunny
c2a5169625 post/votes component, user/reputation component 2015-03-17 15:33:07 -04:00
Julian Lam
f8aba4f4ef Merge branch 'master' into search-cid-uid 2015-03-17 15:13:43 -04:00
psychobunny
e06e1dccb6 topic/browsing/list and topic/browsing/count components 2015-03-17 15:08:52 -04:00
psychobunny
b9dd994a56 user/postcount component 2015-03-17 14:57:10 -04:00
psychobunny
10b9919a49 removed some possibly antiquated privs code 2015-03-17 14:47:37 -04:00
psychobunny
f8af900415 post button components 2015-03-17 14:45:06 -04:00
psychobunny
1d53365707 post/reply component 2015-03-17 14:37:53 -04:00
psychobunny
a740e8e98f post/header component 2015-03-17 14:31:32 -04:00
psychobunny
61db112942 topic/follow component 2015-03-17 14:26:12 -04:00
psychobunny
ec079afab1 post/content component 2015-03-17 14:16:41 -04:00
psychobunny
855e43ea12 deprecation notices 2015-03-17 14:16:24 -04:00
psychobunny
0c4ffafca3 topic buttons are now components 2015-03-17 14:09:08 -04:00
psychobunny
15b54d6e43 removed more .post-row selectors 2015-03-17 13:59:52 -04:00
psychobunny
51745568df removed the rest of the .post-row selectors in favour for components system 2015-03-17 13:59:25 -04:00
psychobunny
901cb92941 if no args, get all components of that type 2015-03-17 13:52:32 -04:00
psychobunny
567d171d2f jshint 2015-03-17 13:46:24 -04:00
psychobunny
e3899f9535 Merge remote-tracking branch 'origin/master' into persona 2015-03-17 13:43:23 -04:00
psychobunny
6439147586 updated core to point #post_container and .post-row to its respective components 2015-03-17 13:38:18 -04:00
psychobunny
8fcdae7f17 get a post component by any of its attributes 2015-03-17 13:37:23 -04:00
Barış Soner Uşaklı
e45e204ba5 fix author field on topic feed #2872 2015-03-17 13:21:27 -04:00
psychobunny
1df20465ed fixes to components; added post component 2015-03-17 13:15:49 -04:00
Barış Soner Uşaklı
839dd72a05 been a while since we stopped using hashes 2015-03-17 13:15:36 -04:00
Barış Soner Uşaklı
56ed6d2112 shorter bcrypt 2015-03-17 13:09:19 -04:00
psychobunny
5727658976 wrapper for grabbing components without modifiers 2015-03-17 12:56:14 -04:00
psychobunny
eba0f32913 post/anchor component 2015-03-17 12:54:10 -04:00
psychobunny
d347e88361 post/header component 2015-03-17 12:51:02 -04:00
psychobunny
54cbbe2844 components system 2015-03-17 12:47:40 -04:00
psychobunny
f5b701553c moved post-row's wall of data-text into partial 2015-03-17 12:30:50 -04:00
psychobunny
8727c7be17 moved all template variables to core 2015-03-17 12:25:02 -04:00
Julian Lam
406126536a missing semicolon 2015-03-17 12:02:33 -04:00
Julian Lam
9fc97ce92d fixing handleACPRedirect on subfolder installs 2015-03-17 12:01:55 -04:00
Julian Lam
521c454dde updated emailer to pass through "fromUid" if available 2015-03-17 11:29:19 -04:00
psychobunny
e08f34e79d function.generateTopicClass 2015-03-17 11:29:04 -04:00
psychobunny
dcfb8010b7 Merge remote-tracking branch 'origin/master' into persona 2015-03-17 11:17:29 -04:00
psychobunny
b81646477f remove hardcoded topic_row_size
I can't believe this is still here haha
2015-03-17 11:17:00 -04:00
Julian Lam
b83aa108f2 requiring more recent vanilla and lavender dependencies, #2875 2015-03-17 10:47:02 -04:00
Julian Lam
0f59046392 added requirejs config partial, #2875 2015-03-17 10:44:40 -04:00
psychobunny
412c5360a6 allow timeago to be cast on other elements as well, ex. small 2015-03-16 17:22:44 -04:00
psychobunny
82ac542f55 helpers.generateCategoryBackground 2015-03-16 16:39:33 -04:00
psychobunny
a3f167bfd2 default category should be col-xs-12 2015-03-16 13:49:47 -04:00
Сергей Савельев
89ea3b4cfe Merge branch 'NodeBB-master' 2015-03-16 16:47:56 +03:00
Сергей Савельев
e529d18414 save 2015-03-16 16:47:45 +03:00
barisusakli
518aec6e76 modified indices, removed key 2 collections now 2015-03-15 03:18:24 -04:00
barisusakli
ec7caea368 fix search on mongo 2015-03-15 01:45:24 -04:00
barisusakli
78c65aee05 even more search changes 2015-03-15 01:12:13 -04:00
barisusakli
2b7744f905 fire action:topic.move after topic cid is changed 2015-03-15 00:24:08 -04:00
barisusakli
31da62ab2d removed console.log 2015-03-15 00:13:26 -04:00
barisusakli
e2196af8ab part 2 of search changes 2015-03-15 00:12:52 -04:00
barisusakli
c7128bcc98 part 1 of search change 2015-03-14 23:00:24 -04:00
barisusakli
fd5f00459b fix admin events pagination 2015-03-14 21:10:36 -04:00
barisusakli
868b2ff2b6 if no term is passed get count 2015-03-14 20:46:28 -04:00
barisusakli
ec8fc8b97b dont do anything if id is falsy
added callback
2015-03-14 16:30:06 -04:00
barisusakli
203e69aa42 derp 2015-03-14 01:05:03 -04:00
barisusakli
a73f34df4a no need for ajaxify.end listener 2015-03-13 23:44:11 -04:00
barisusakli
c448c8cc8c closes #2864 2015-03-13 23:32:50 -04:00
barisusakli
32369f6191 disabled textcomplete css for now 2015-03-13 18:04:07 -04:00
barisusakli
f8f4a6e844 removed footer class 2015-03-13 17:59:37 -04:00
Barış Soner Uşaklı
abf27954d3 use topic.getMainPids 2015-03-13 16:33:00 -04:00
Barış Soner Uşaklı
64918dfcb4 up mentions ver 2015-03-13 15:31:14 -04:00
Barış Soner Uşaklı
d3dca842cb also #2858 2015-03-13 15:06:23 -04:00
Barış Soner Uşaklı
bab8e6a104 closes #2858 2015-03-13 15:04:24 -04:00
Barış Soner Uşaklı
eda98a35ea closes #2862 2015-03-13 15:01:52 -04:00
Barış Soner Uşaklı
e4199179f7 Merge remote-tracking branch 'origin/master' into mongodb-3.0-driver-2.0 2015-03-13 13:14:43 -04:00
Barış Soner Uşaklı
89333ab339 closes #2824 doggy.gif 2015-03-13 12:43:41 -04:00
Peter Jaszkowiak
77df837906 Merge pull request #5 from NodeBB/master
update
2015-03-12 21:44:16 -06:00
psychobunny
f7f048f06a when toggling composer preview, autofocus on composer 2015-03-12 22:53:09 -04:00
barisusakli
58169aa6d9 no need for return 2015-03-12 19:28:53 -04:00
barisusakli
6e25724cfb removed unused requires 2015-03-12 19:27:53 -04:00
barisusakli
e6c0794061 create tooltips for users on widgets 2015-03-12 17:46:49 -04:00
barisusakli
d3b2742da0 closes #2746 closes #2747 2015-03-12 16:50:46 -04:00
barisusakli
2f688136d1 closes #2852 2015-03-12 16:30:08 -04:00
barisusakli
b37bcc6dfe closes #2853 2015-03-12 16:26:33 -04:00
barisusakli
279bb62a3f cache parsed post content
clear cache on plugin install/uninstall/activate/deactivate
2015-03-12 15:01:55 -04:00
psychobunny
dfe48fffb1 composer fixes when resizing window horizontally 2015-03-12 14:49:18 -04:00
barisusakli
e9f82b7eee updated isLatin check doggy.gif 2015-03-12 13:39:04 -04:00
barisusakli
67b7ecf4df Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-03-12 13:26:32 -04:00
barisusakli
dd06e8d7d8 return early if falsy 2015-03-12 13:26:29 -04:00
psychobunny
2f05ec7de0 closes #2839 and #2840 2015-03-12 12:30:11 -04:00
barisusakli
4cb58d976b fix indices, main post always 0 2015-03-12 11:03:10 -04:00
barisusakli
fd1b7bbd3a fix redirection 2015-03-12 10:57:23 -04:00
psychobunny
ec897be3e7 jshint 2015-03-12 01:34:18 -04:00
barisusakli
2878bf6cfe removed commented out code 2015-03-11 23:37:25 -04:00
barisusakli
c63d5f4b7a test 2015-03-11 22:47:15 -04:00
barisusakli
f89741636c return false to prevent default 2015-03-11 21:56:33 -04:00
barisusakli
ca31ac882c added return true/false 2015-03-11 19:47:19 -04:00
Julian Lam
5269c2eb9e latest language translations 2015-03-11 18:34:26 -04:00
barisusakli
076931d5b5 fix search tooltip 2015-03-11 18:21:40 -04:00
barisusakli
a626005570 closes #2851 2015-03-11 18:04:27 -04:00
psychobunny
8d313d2f16 return composing state to normal after discard/posting 2015-03-11 16:37:34 -04:00
psychobunny
7b604c0895 this prevents autosize from causing the screen from jumping up and down as you type, on android at least
@jackmoore this might not the best solution but its working well so far.
let me know if you'd like a PR :)
2015-03-11 16:37:33 -04:00
psychobunny
6d4b658579 using unminified version of autosize 2015-03-11 16:37:31 -04:00
psychobunny
9262c8b9f6 after selecting a category in composer, auto-select the next field 2015-03-11 16:37:29 -04:00
psychobunny
83f89e9537 made action bar button less restrictive 2015-03-11 16:37:28 -04:00
psychobunny
31368ac974 on mobile, resize composer textarea as you type so it doesn't constrain the editable view 2015-03-11 16:37:25 -04:00
psychobunny
5e3a990f2d added vendor/autosize 2015-03-11 16:37:23 -04:00
psychobunny
7227dfd704 add composing mobile classes if composing on mobile 2015-03-11 16:37:22 -04:00
psychobunny
7282bbafb2 removing composer-mobile.tpl
was totally a bad idea.
2015-03-11 16:37:20 -04:00
Barış Soner Uşaklı
8234e4cc07 new hook action:topic.reply
only fires on normal replies
2015-03-11 15:57:17 -04:00
Barış Soner Uşaklı
9d0b4f5841 app.showEmailConfirmWarning :dull: 2015-03-11 13:34:57 -04:00
Barış Soner Uşaklı
940c33c426 fix js error removed dupe code 2015-03-11 13:32:28 -04:00
Barış Soner Uşaklı
abd3979fb3 closes #2465 2015-03-11 13:25:56 -04:00
psychobunny
eb733fdb6f toggle preview button on composer 2015-03-11 12:54:44 -04:00
Barış Soner Uşaklı
8484c7c51a closes #2850 2015-03-11 12:07:48 -04:00
Julian Lam
40763d2ae7 #2849 again 2015-03-11 11:24:52 -04:00
psychobunny
f1f199019d Merge pull request #2845 from cnvo/master
Update FontAwesome 4.3.0
2015-03-11 11:13:29 -04:00
Julian Lam
57a64870fd actually fixing #2849 2015-03-11 10:44:34 -04:00
Julian Lam
8e2483b2e6 fixed #2849 2015-03-11 10:32:53 -04:00
barisusakli
9f4f858ff9 group member search
only look in uids that are member of the group, added custom findUids
function to user.search
2015-03-10 15:50:41 -04:00
barisusakli
201c4b35da pagination data
if query is empty get all uids
2015-03-10 15:04:22 -04:00
Julian Lam
e8167a80a0 if bgColor and color are not sent in the category creation call, automatic colours are supplied 2015-03-10 14:55:25 -04:00
barisusakli
d342e01ef1 search group members 2015-03-10 14:09:28 -04:00
psychobunny
daf9999a29 prevent composer from going too low 2015-03-10 13:53:54 -04:00
Julian Lam
2a80140e70 fixed issue where socket.io would no longer reconnect perpetually, new behaviour waits 10x the reconnect delay, and then starts over. Also upped the reconnection delay default to 1.5s. 2015-03-10 11:52:32 -04:00
Trevor
8d2f89a5e2 Update FontAwesome 4.3.0
Fixed incorrect variables path.
2015-03-10 09:50:32 -04:00
Trevor
6454e89bac Update FontAwesome 4.3.0 2015-03-10 09:40:36 -04:00
Fokke Zandbergen
f0836f4107 Skip setTimeout if it doesn't exist (<= 0.10.36) 2015-03-10 10:36:34 +01:00
barisusakli
724df69561 fix redirects 2015-03-09 21:00:07 -04:00
barisusakli
25a2e9b812 we just need the group members :trollface: 2015-03-09 19:29:56 -04:00
Julian Lam
5d7b46935d fixing issue where grunt wouldn't read js from file properly if nodebb wasn't run in production mode at least once 2015-03-09 19:14:58 -04:00
psychobunny
6059165a54 if composer:resizePercentage hasn't been set, default to half the page 2015-03-09 18:52:53 -04:00
psychobunny
0913dbbade added a border effect on max'd composer 2015-03-09 18:39:41 -04:00
psychobunny
3b5b87c14e Merge branch 'master' of https://github.com/NodeBB/NodeBB 2015-03-09 18:34:51 -04:00
psychobunny
49a173bdf0 last bit of fixes to composer 2015-03-09 18:33:42 -04:00
barisusakli
ddd4680ea7 added helpers.redirect 2015-03-09 18:22:44 -04:00
psychobunny
bc9d7f2922 fix so that mouse is always on the handle 2015-03-09 18:19:58 -04:00
psychobunny
5b56157403 composer refactor part 1
removed lots of hardcoded values; used translate 3d instead of height
for smoother dragging; various optimizations; snap to top functionality
2015-03-09 18:05:18 -04:00
Julian Lam
f0ad2020df updated sorting logic (syntax error) 2015-03-09 17:18:34 -04:00
psychobunny
09e0d660cd tags:enter_tags_here better messaging 2015-03-09 16:56:40 -04:00
Julian Lam
28f569ea20 Merge pull request #2838 from MegaGM/update.plugin.version
Update nodebb-plugin-mentions version
2015-03-09 16:50:13 -04:00
psychobunny
bd99124fb9 refactored write preview code 2015-03-09 16:49:53 -04:00
Mega
c0e6c306d0 Update nodebb-plugin-mentions version 2015-03-09 23:48:53 +03:00
Сергей Савельев
3831cd0e71 Adding the ability to use a different url 2015-03-09 23:19:51 +03:00
psychobunny
da758c429a remove hardcoded z-index; give composer a "maximized" class if maximized 2015-03-09 16:19:20 -04:00
Julian Lam
bbbb362125 not referencing parent scope when inside BEGIN in widgets tpl 2015-03-09 16:15:06 -04:00
Barış Soner Uşaklı
d2e8d4d86e slice doesnt deep clone derp 2015-03-09 16:08:48 -04:00
Barış Soner Uşaklı
98a277af9e Merge remote-tracking branch 'origin/master' 2015-03-09 16:01:14 -04:00
Barış Soner Uşaklı
706527fa80 fix group titles
clone groups for each user
2015-03-09 16:01:04 -04:00
psychobunny
b56e862838 removed hardcoded fa-chevron icons from client js 2015-03-09 16:00:46 -04:00
psychobunny
7890c59dc5 Merge remote-tracking branch 'origin/master' into composer-redesign 2015-03-09 15:53:35 -04:00
psychobunny
4f2ac340b2 latest tjs 2015-03-09 15:52:13 -04:00
Barış Soner Uşaklı
53e0615df7 removed path use external 2015-03-09 15:33:20 -04:00
Barış Soner Uşaklı
4d45a81fdb closes #2383 2015-03-09 15:30:52 -04:00
psychobunny
1ec1c5a366 fixes composer maximizing 2015-03-09 15:05:48 -04:00
Barış Soner Uşaklı
33723f8b1b closes #2835 2015-03-09 13:54:35 -04:00
Barış Soner Uşaklı
cda38d6ed6 closes #2515 2015-03-09 13:16:23 -04:00
psychobunny
fcc8093fa6 #1642 show discard prompt 2015-03-09 12:44:15 -04:00
psychobunny
e47c375e69 closes #1642 2015-03-09 12:30:24 -04:00
Julian Lam
4360069859 fixing buttons on mobile composer, and updating format so tags button only appears on mobile 2015-03-09 12:17:33 -04:00
Julian Lam
e71ef216f2 hiding the right sidebar in ACP dash temporarily 2015-03-09 10:50:03 -04:00
Сергей Савельев
6d03f5c9e8 Revert line order 2015-03-09 17:04:30 +03:00
Сергей Савельев
8a5b5936b7 Revert line bgColor 2015-03-09 16:56:57 +03:00
Сергей Савельев
cc384cc4d6 Update file for create categories 2015-03-09 16:45:22 +03:00
Сергей Савельев
82fdc8646e Merge branch 'master' of https://github.com/atomoc/NodeBB 2015-03-09 16:43:16 +03:00
Сергей Савельев
3910f8bf28 Add parameters for create categories 2015-03-09 16:43:02 +03:00
Сергей Савельев
87d74abfc9 Add parameters for create categories 2015-03-09 16:19:02 +03:00
Peter Jaszkowiak
52c295b28b Merge pull request #4 from NodeBB/master
Pull latest
2015-03-08 23:43:29 -06:00
barisusakli
e5dc408ef5 change current page after ajaxify:start event 2015-03-07 21:59:21 -05:00
barisusakli
a5bf991cf0 ignored public/uploads again 2015-03-07 20:27:46 -05:00
barisusakli
d00f8a3d27 added uploads/system 2015-03-07 20:27:23 -05:00
barisusakli
dc94fe2b6c move admin upload routes to api namespace
move usrrs/csv to api namespace
2015-03-07 20:19:00 -05:00
barisusakli
f87f797bed dont keep window.location.search on regular ajaxify 2015-03-07 13:52:06 -05:00
Barış Soner Uşaklı
5b821b2f24 Merge pull request #2831 from MegaGM/fix.acp.navigation.delete.btn
Click on "Delete" btn in ACP > General > Navigation causes redirect.
2015-03-07 11:47:27 -05:00
Mega
42eadc72a4 Click on "Delete" btn in ACP > General > Navigation causes redirect. 2015-03-07 13:17:07 +03:00
barisusakli
3dd337bd34 closes #2829 2015-03-07 00:59:03 -05:00
barisusakli
289474edf7 closes #2827 2015-03-07 00:25:55 -05:00
barisusakli
63a6702285 removed whitespace 2015-03-06 19:48:12 -05:00
barisusakli
23a6b33f64 not used 2015-03-06 19:45:27 -05:00
barisusakli
3809b331bc acp shenans 2015-03-06 19:38:10 -05:00
barisusakli
c15a289d2a fix check 2015-03-06 19:05:51 -05:00
barisusakli
2a8437f08f removed templates config and mapping 🐑 2015-03-06 19:02:18 -05:00
barisusakli
5821a0758f return template name as well 2015-03-06 17:41:38 -05:00
Barış Soner Uşaklı
00be1e07e3 fix test 2015-03-06 15:21:00 -05:00
Barış Soner Uşaklı
ea9fccbf2a fix -inf +inf
added test for -inf +inf
2015-03-06 15:12:55 -05:00
Barış Soner Uşaklı
07572b188b fix crash 2015-03-06 14:54:02 -05:00
Julian Lam
f14c5f7e1c added new hook 'action:meta.override404' so plugins can override the regular handling of pages that are not found 2015-03-06 13:40:39 -05:00
Barış Soner Uşaklı
9915e31bc5 closes #2826 2015-03-06 13:05:22 -05:00
Barış Soner Uşaklı
f7d7cc2610 closes #2808 2015-03-06 13:00:56 -05:00
Barış Soner Uşaklı
607535b37e closes #2823 2015-03-06 12:29:05 -05:00
Julian Lam
daaf61bc68 fixed issue where accessing a category's access control caused a client-side error 2015-03-06 12:02:25 -05:00
yariplus
1102f40873 Add object setting plugin
Allows objects to be added to a plugin's settings using a tag with a JSON-like syntax in data-attributes.
A complex object can be created by using an array or another object as a parent, the object will be added to the parent array or the parent object's declared property instead of as it's own data-key.
2015-03-06 10:20:35 -05:00
barisusakli
558e708576 remove console.log 2015-03-05 17:32:40 -05:00
Barış Soner Uşaklı
e5343b7efc dont display cluster warning if not running as cluster 2015-03-05 16:21:52 -05:00
Julian Lam
68cb1350f2 added instructions to grabbing theme versions 2015-03-05 15:41:35 -05:00
Barış Soner Uşaklı
eed00fadde Merge remote-tracking branch 'origin/master' into mongodb-3.0-driver-2.0 2015-03-05 11:33:36 -05:00
Julian Lam
b777c448cf closed #2803 2015-03-04 16:03:58 -05:00
Barış Soner Uşaklı
6bd3c54a03 fix findAndModify
temp fix for connect-mongo
create admin after categories
2015-03-03 16:16:32 -05:00
psychobunny
3c9431b2fc socket.io/plugin updated instructions to use require.main.require instead 2015-03-03 15:50:21 -05:00
psychobunny
f082270f25 got rid of hideIfPrivate 2015-03-03 15:47:23 -05:00
psychobunny
9bf55c96d2 closes #2818 2015-03-03 15:46:57 -05:00
Barış Soner Uşaklı
e421a2c7cd pass session 2015-03-03 15:12:40 -05:00
Barış Soner Uşaklı
d9e0a495b0 updated install.js to install mongodb native 2 2015-03-03 14:31:09 -05:00
psychobunny
80945eff7e closes #2819 2015-03-03 14:19:18 -05:00
psychobunny
a22300746c latest tjs 2015-03-03 14:03:40 -05:00
Barış Soner Uşaklı
a19b25a3b3 closes #2816 2015-03-03 12:40:27 -05:00
Julian Lam
d7cd936b54 added preserveCase option to slugify 2015-03-03 12:34:45 -05:00
psychobunny
9f2b849861 latest tjs 2015-03-03 12:13:03 -05:00
Barış Soner Uşaklı
fa05971326 derp beforeEach 2015-03-02 16:35:12 -05:00
Barış Soner Uşaklı
0fdaaadae5 changed to before all 2015-03-02 16:28:03 -05:00
Barış Soner Uşaklı
e8644dac26 group.hidden is already bool 2015-03-02 16:10:08 -05:00
Barış Soner Uşaklı
8cb18b1e48 possible fix to group category 2015-03-02 16:06:40 -05:00
Barış Soner Uşaklı
c851b5a9b1 made getBaseUser public 2015-03-02 14:12:53 -05:00
psychobunny
89ecda5163 for plugin admin pages
need to find a better solution tho
2015-03-02 14:09:44 -05:00
Barış Soner Uşaklı
ac1e0513fc moved setupPageRoute to helpers 2015-03-02 14:01:18 -05:00
psychobunny
8c79e11dae properly fixes #2782 2015-03-01 16:10:54 -05:00
barisusakli
c40258a82c removed 2x calls to getRecentTopicReplies 2015-02-27 23:18:04 -05:00
psychobunny
fa607132be closes #2782 2015-02-27 18:07:29 -05:00
barisusakli
bd17bff7d4 prevent double follow/unfollow 2015-02-27 17:57:09 -05:00
psychobunny
5b67cd841e fire filter:config.get even if anonymous 2015-02-27 15:30:43 -05:00
Barış Soner Uşaklı
cd1d287a46 fix new posts appearing out of order 2015-02-27 15:18:52 -05:00
psychobunny
0fadaf037a filter:homepage.get for populating available routes on ACP 2015-02-27 15:09:09 -05:00
psychobunny
657fa8de73 oops action:homepage.get:* 2015-02-27 15:04:44 -05:00
psychobunny
44e8323efa action:navigation.get:* 2015-02-27 15:00:52 -05:00
psychobunny
c97c1ab4b9 filter:config.get 2015-02-27 15:00:49 -05:00
Barış Soner Uşaklı
8b21f1c8ab dont reload settings page on every save
only show an alert if reload is required
renamed settings.language to settings.userLang to match the config
2015-02-27 13:24:53 -05:00
Julian Lam
73a0908228 fixed hungarian language key being incorrect :rage2: 2015-02-27 12:59:02 -05:00
Barış Soner Uşaklı
5140e5db8d closes #2759 2015-02-27 12:53:08 -05:00
Julian Lam
27282a2877 if no order is specified during a category creation, NodeBB won't crash 2015-02-27 12:31:23 -05:00
Barış Soner Uşaklı
4c67fffabc dont parse sig if its falsy 2015-02-27 11:58:40 -05:00
Julian Lam
3ef54c3c01 added new hook to allow plugins to override the local login strategy with their own, closes #2806 2015-02-27 10:56:18 -05:00
barisusakli
01b012d89d #1642 2015-02-26 18:44:13 -05:00
barisusakli
2c2586b578 closes #2271 2015-02-26 15:14:27 -05:00
barisusakli
83663cf46b removed unused require 2015-02-26 14:14:58 -05:00
psychobunny
b07574d838 unnecessary return 2015-02-26 14:11:13 -05:00
psychobunny
3cc3e2f306 moved homepage configuration to its own acp page 2015-02-26 14:10:41 -05:00
psychobunny
332d4346ba fixed disable toggle for nav 2015-02-26 12:53:48 -05:00
psychobunny
a59b932020 displayUsersLink deprecated 2015-02-26 12:35:36 -05:00
psychobunny
cfd66e5dd4 fixes #2795 2015-02-26 12:29:59 -05:00
barisusakli
f7f453f8cd closes #2794 2015-02-26 12:22:52 -05:00
psychobunny
046bcef800 fixes #2782 2015-02-26 11:53:10 -05:00
ahwayakchih
7ed41a1f60 Set separator for loading environment variables to nconf, as discussed on https://github.com/NodeBB/NodeBB/pull/2778#issuecomment-76209393 2015-02-26 17:39:23 +01:00
Julian Lam
e0c7ef1451 fixed #2781 2015-02-26 11:09:14 -05:00
Julian Lam
6a32a0f399 closes #2775 2015-02-26 11:03:15 -05:00
Julian Lam
a3bc5d2037 fixing bug where the nav dropdown didn't close when a chat was opened 2015-02-26 10:08:48 -05:00
Julian Lam
5173fd7138 #2796 2015-02-26 09:34:43 -05:00
Julian Lam
72e9a6caa8 tweaks to ACP plugins page 2015-02-26 09:26:38 -05:00
Julian Lam
a2c6f58782 fixed issue where an updated alert didn't contain changes to the clickfn, closes #2798 2015-02-26 09:14:28 -05:00
Julian Lam
339619fc9d #2799 2015-02-26 09:06:33 -05:00
Julian Lam
4a264cac52 latest fallbacks 2015-02-26 08:43:42 -05:00
Julian Lam
01166b08c3 latest translations 2015-02-26 08:41:38 -05:00
Julian Lam
00f3084b8e closes #2792, closes #2791, closes #2788, closes #2787, closes #2786, closes #2785, closes #2784, closes #2783
Squashed commit of the following:

commit ca5064a4effa3904ce936b521b169bba8d24f1a1
Author: Julian Lam <julian@designcreateplay.com>
Date:   Thu Feb 26 08:19:32 2015 -0500

    Revert "added ajaxify popstate cache, so back/forward will just put back the already loaded page"

    This reverts commit 77d154bb8b.

commit ae07fc56c156074de8048bb627f5d9be849c8ad1
Author: Julian Lam <julian@designcreateplay.com>
Date:   Thu Feb 26 08:19:24 2015 -0500

    Revert "on click, topics are marked read from the unread page. Also fixed an issue where isPopState kept getting set to true, causing issues"

    This reverts commit d8c9ec0d40.

    Conflicts:
    	public/src/client/unread.js

commit 96ee3631d7e4e1fc2c1b7632d86684fecd1e430f
Author: Julian Lam <julian@designcreateplay.com>
Date:   Thu Feb 26 08:18:25 2015 -0500

    Revert "actually fixed isPopState error"

    This reverts commit e6701c5a1f.
2015-02-26 08:19:57 -05:00
psychobunny
0c8e0ca46f linted /meta 2015-02-25 19:28:43 -05:00
psychobunny
b0628c2df8 missing semi-colons in database/ 2015-02-25 19:27:13 -05:00
psychobunny
32ce785e5a somebody was trying to save trees by reducing whitespace
burn the trees
2015-02-25 19:16:24 -05:00
psychobunny
26245133f3 linted client-side core modules 2015-02-25 19:15:02 -05:00
psychobunny
241f5b0224 linted client side modules 2015-02-25 19:13:03 -05:00
psychobunny
cb1e2c9fef linting client side modules 2015-02-25 19:09:39 -05:00
psychobunny
c3541dbc95 linting acp 2015-02-25 19:05:29 -05:00
psychobunny
f6d90782a8 hinting 2015-02-25 19:03:32 -05:00
psychobunny
c1b45bc0ea #2779 when duplicating categories, rename category:name to indicate it is duplicate
otherwise :rage1: when somebody deletes the wrong category
2015-02-25 18:54:11 -05:00
psychobunny
5020e864fc #2779 also copy icon 2015-02-25 18:52:26 -05:00
psychobunny
59d176fa7b closes #2779 2015-02-25 18:29:23 -05:00
barisusakli
a0c3ddc555 fix navigator 2015-02-25 18:00:03 -05:00
psychobunny
5a8babdde5 up'd vanilla's version 2015-02-25 17:52:45 -05:00
psychobunny
d545492b67 navigation: moved target to properties 2015-02-25 17:51:50 -05:00
psychobunny
b1f835b053 Merge remote-tracking branch 'origin/master' into sortable-menu 2015-02-25 17:44:02 -05:00
psychobunny
b788e134d1 added compatibility for deprecated filter:header.build
remove after 0.7.x
2015-02-25 17:43:31 -05:00
psychobunny
bc7729fbb3 console.logs 2015-02-25 17:27:05 -05:00
psychobunny
2b57ef3d4b fixed a bug with draggable 2015-02-25 17:26:44 -05:00
psychobunny
1b250b8f57 linting 2015-02-25 17:23:02 -05:00
psychobunny
2ff59278c9 navigation cleanup 2015-02-25 17:22:41 -05:00
psychobunny
aa58302a27 type check before escape/unescape 2015-02-25 17:22:25 -05:00
psychobunny
e90f3bf7c8 fix typo in install data 2015-02-25 17:22:12 -05:00
psychobunny
1774cf0b15 allow language strings in menu items 2015-02-25 17:12:17 -05:00
psychobunny
be06162f0d translator.unescape 2015-02-25 16:59:38 -05:00
psychobunny
33e4a2f1ec translator.escape 2015-02-25 16:55:38 -05:00
psychobunny
6c0efa09c0 bugfix 2015-02-25 16:52:50 -05:00
psychobunny
d806cd134f sortable menus, done 2015-02-25 16:47:19 -05:00
ahwayakchih
4c2f628baa Added support for using mongo:password and redis:password from config, when no password is entered at setup. This allows for having "default" password and overrides from config. Added using mongo:username and port from config when running setup. 2015-02-25 22:27:19 +01:00
psychobunny
809ed255d1 drag & drop routes 2015-02-25 16:19:14 -05:00
Julian Lam
f00589c8ba removing 'see all chats' from chats list, as it is in menu.tpl now 2015-02-25 16:07:03 -05:00
Julian Lam
37d426dddb npnp, I totally meant to remove a method that's still in use... 2015-02-25 15:56:52 -05:00
Julian Lam
ec075ca608 suppressing alertSuccess when clicking into topics from unread page 2015-02-25 15:50:20 -05:00
Barış Soner Uşaklı
73505e9bd0 closes #2247 2015-02-25 15:37:33 -05:00
psychobunny
afc690d67b upon saving, copy over route properties from defaults 2015-02-25 15:29:26 -05:00
psychobunny
a9f175a2bb ability to sort navigation 2015-02-25 15:18:57 -05:00
psychobunny
a2e3179ea4 nav - enable / disable 2015-02-25 15:16:51 -05:00
psychobunny
1ae0a8a1bf typo 2015-02-25 15:01:45 -05:00
psychobunny
c3701bcea7 loading and saving navigation 2015-02-25 15:01:28 -05:00
psychobunny
fbc0a11c87 nav - basic ACP setup 2015-02-25 14:50:45 -05:00
Julian Lam
e6701c5a1f actually fixed isPopState error 2015-02-25 14:33:46 -05:00
Julian Lam
d8c9ec0d40 on click, topics are marked read from the unread page. Also fixed an issue where isPopState kept getting set to true, causing issues 2015-02-25 14:33:46 -05:00
Julian Lam
77d154bb8b added ajaxify popstate cache, so back/forward will just put back the already loaded page 2015-02-25 14:33:46 -05:00
Barış Soner Uşaklı
094cd6df32 closes #2777 2015-02-25 14:17:38 -05:00
psychobunny
8256d2b997 bugfix 2015-02-25 14:15:50 -05:00
psychobunny
307204fc38 nav - added enabled/disabled 2015-02-25 14:12:16 -05:00
Julian Lam
55262b399a tweaks and refactoring for #2774 2015-02-25 14:10:00 -05:00
psychobunny
6c77adfd3c tjs 0.1.21 * 2015-02-25 14:05:16 -05:00
psychobunny
431a7f3300 tjs 0.1.20 2015-02-25 14:02:33 -05:00
psychobunny
40008a9e85 Merge remote-tracking branch 'origin/master' into sortable-menu 2015-02-25 13:56:57 -05:00
psychobunny
6cea047518 loading navigation, complete 2015-02-25 13:55:26 -05:00
psychobunny
3be5242aa1 navigation - upgrade script 2015-02-25 13:50:41 -05:00
psychobunny
9a24110a37 jsonlint 2015-02-25 13:50:35 -05:00
psychobunny
f1adddb775 navigation - basic save function 2015-02-25 13:45:49 -05:00
Julian Lam
3202a52a61 refactored notif dropdown, #2771 2015-02-25 13:43:25 -05:00
psychobunny
80116c3e30 fixed potential bug in rewards 2015-02-25 13:42:14 -05:00
psychobunny
ba9bba1dd8 navigation backbone 2015-02-25 13:27:25 -05:00
psychobunny
58411a4764 deprecated filter:header.build, the equivalent hook (same output data) will be filter:navigation.available 2015-02-25 13:26:42 -05:00
psychobunny
7a4fc8e48b save default menu on installation 2015-02-25 13:26:09 -05:00
psychobunny
d754a6390e navigation install data 2015-02-25 13:25:56 -05:00
psychobunny
738c27bf04 started dynamic sortable menu 2015-02-25 13:10:38 -05:00
psychobunny
ecad9d54ed tjs 0.1.19 for undefined key cleanups 2015-02-25 13:08:55 -05:00
psychobunny
6dacaf6bb5 helpers.displayMenuItem 2015-02-25 12:48:26 -05:00
Barış Soner Uşaklı
0c903672d0 uid not used #1973 2015-02-25 12:46:00 -05:00
Barış Soner Uşaklı
e2b535dfaf closes #1973 2015-02-25 12:44:04 -05:00
psychobunny
61cbb70691 update tjs to 0.1.18 for conditional helper functionality 2015-02-25 12:39:32 -05:00
Julian Lam
29873f1c5c removed unused .getAll method, and sorting notifications client-side so that unread notifs don't all appear at the top, #2772 2015-02-25 12:26:55 -05:00
Julian Lam
ade12116a1 closed #2766 2015-02-25 10:51:35 -05:00
Julian Lam
ba7c873f07 closed #2765 2015-02-25 09:57:32 -05:00
Julian Lam
948cd22e9c triggering full-screen composer on short viewports as well as narrow, #2763 2015-02-25 09:49:08 -05:00
Peter Jaszkowiak
34bbe241ce Merge pull request #3 from NodeBB/master
Merge in latest
2015-02-24 21:59:19 -07:00
barisusakli
9084ee2d7e cleanup popular.js 2015-02-24 22:24:22 -05:00
Julian Lam
89bf036262 fixing crash when utils.slugify is called with a null value 2015-02-24 21:11:25 -05:00
psychobunny
cf6b32bce6 logic error 2015-02-24 18:24:00 -05:00
psychobunny
6c5395dd05 added --verbose flag for grunt dev 2015-02-24 18:22:38 -05:00
psychobunny
8d121e7724 cleanup 2015-02-24 18:16:51 -05:00
psychobunny
d003515fd1 grunt - added restart message 2015-02-24 18:05:00 -05:00
psychobunny
aa12ab9478 think its fairly safe to say this isn't experimental anymore
worked every single time I reloaded today, and that'd be about a hundred
thousand times so far
2015-02-24 17:57:18 -05:00
psychobunny
6771c3c74c added deprecation notice to ./nodebb watch 2015-02-24 17:53:31 -05:00
psychobunny
d03a70cc25 if multiple file extensions change before nodebb finishes compiling, then add to incomplete list and compile 2015-02-24 17:14:28 -05:00
psychobunny
7fe8180cf4 Merge remote-tracking branch 'origin/master' into grunt-dev 2015-02-24 16:41:07 -05:00
psychobunny
68930aaa5d limit watch paths to three levels deep in nodebb-*, should be enough hopefully
minimatch sucks, unless I'm using it wrong. negating = find everything
then remove as necessary => long load times before watch is activated
2015-02-24 16:36:13 -05:00
psychobunny
8862fcba33 removing grunt deps we don't need 2015-02-24 15:50:23 -05:00
psychobunny
982400354a added watch paths to plugins/themes 2015-02-24 15:50:01 -05:00
psychobunny
f8663bbfd0 added tpl flag to --from-file 2015-02-24 15:46:37 -05:00
psychobunny
b9875b42e9 yay grunt watch finally works! 2015-02-24 15:34:05 -05:00
psychobunny
e5c842d923 ability to send in extensions (comma delimited) to --from-file 2015-02-24 15:33:37 -05:00
Julian Lam
98158fb6f9 @barisusakli works perfectly 2015-02-24 15:22:25 -05:00
barisusakli
acc3c6a0a5 closes #2762 2015-02-24 15:05:55 -05:00
Julian Lam
912de27c9d fixed indentation issues 2015-02-24 14:43:19 -05:00
Barış Soner Uşaklı
c94c1430b7 api/post/pid route 2015-02-24 13:02:58 -05:00
psychobunny
eb6754c5eb nice, I figured out how to speed up grunt watch 2015-02-24 12:56:49 -05:00
psychobunny
01c15b8884 Merge remote-tracking branch 'origin/master' into grunt-dev 2015-02-24 12:23:52 -05:00
psychobunny
242f66934c another attempt 2015-02-24 12:23:35 -05:00
Barış Soner Uşaklı
52aa7d27e8 #2761 2015-02-24 11:58:09 -05:00
Barış Soner Uşaklı
9de0c0cdd4 closes #2761 2015-02-24 11:55:16 -05:00
psychobunny
ab2315f3de #2751 2015-02-24 11:45:58 -05:00
psychobunny
fdc8b67449 require pkg when needed 2015-02-23 17:25:36 -05:00
psychobunny
f408c76a98 requiring plugins in meta when needed 2015-02-23 17:24:20 -05:00
Julian Lam
3e3fff9fe8 hooking up accept/reject invite, #2758 2015-02-23 16:46:48 -05:00
Julian Lam
03e39f7b9b isInvited mechanic for #2758 2015-02-23 16:31:23 -05:00
psychobunny
13fa1f6b9a require socket.io only when you need it, shaves off another 0.5s on load 2015-02-23 16:24:43 -05:00
psychobunny
61b8fd2402 woops, left in some debug statements 2015-02-23 16:13:04 -05:00
psychobunny
dee5d18439 require npm module only as needed - shaves off a full second of loading time yay 2015-02-23 16:08:29 -05:00
Barış Soner Uşaklı
66d6c49ed4 closes #2749 2015-02-23 15:55:45 -05:00
Julian Lam
8262c38ac8 upgrading privilege sets to be system groups, so they're not in the way 2015-02-23 15:43:32 -05:00
Julian Lam
4984f2f449 Merge branch 'master' of github.com:nodebb/NodeBB 2015-02-23 15:25:37 -05:00
Barış Soner Uşaklı
14888a96cb Merge remote-tracking branch 'origin/master'
Conflicts:
	src/upgrade.js
2015-02-23 15:04:46 -05:00
Barış Soner Uşaklı
55884220b4 #2749 upgrade plugins:active to zset 2015-02-23 14:57:22 -05:00
psychobunny
ee377b160e #2751 fixes syntax error on acp/ajaxify 2015-02-23 14:55:59 -05:00
Julian Lam
d3ff6a9f47 hidden groups are invisible to non-members, #2758 2015-02-23 14:54:48 -05:00
psychobunny
44c6375d91 it's on line 24 now 2015-02-23 14:11:51 -05:00
psychobunny
f63ecac8ee upgrade script for nodebb-rewards-essentials 2015-02-23 14:11:50 -05:00
Barış Soner Uşaklı
89f2520eba #2560 fix user link pic 2015-02-23 14:07:51 -05:00
Barış Soner Uşaklı
e6e755dd46 #2560 2015-02-23 14:05:43 -05:00
Barış Soner Uşaklı
1d5e15eab4 closes #2560 2015-02-23 13:39:29 -05:00
Julian Lam
8b81f3d835 server-side support for hidden option in group admin, #2758 2015-02-23 13:05:33 -05:00
Barış Soner Uşaklı
53db052cca timeago widgets 2015-02-23 12:55:44 -05:00
Julian Lam
218ecce6c1 accessing search route with no term auto-expands the form now, part 1 of 2, #2757 2015-02-23 09:12:13 -05:00
barisusakli
56d18666d6 closes #2752 2015-02-22 14:47:07 -05:00
Julian Lam
dfabbb5fa2 latest translations 2015-02-21 23:13:53 -05:00
psychobunny
cb7c318377 closes #2751 2015-02-20 19:31:33 -05:00
psychobunny
f5eaa08340 fixed complications with deleted id's 2015-02-20 19:29:57 -05:00
psychobunny
def57d2926 don't rely on client side to increment id (duh) 2015-02-20 17:37:34 -05:00
psychobunny
7a8d84c011 ability to add a claimability limit to rewards 2015-02-20 17:33:29 -05:00
psychobunny
bb35950a5a rewards acp - ability to set amount of times a user can claim reward 2015-02-20 17:19:39 -05:00
Barış Soner Uşaklı
61b1251a73 removed sort methods 2015-02-20 16:34:31 -05:00
psychobunny
5a6457ec7c adding rewards-essentials to core 2015-02-20 16:09:20 -05:00
psychobunny
fe83adcbae prevent rewards from clobbering each other on save 2015-02-20 15:21:09 -05:00
psychobunny
fbbd405b00 even:alert socket call -> app.alert 2015-02-20 15:07:43 -05:00
psychobunny
b26bf9f22d rewards: bug fixes and cleanup, pretty much done part 1 ;) 2015-02-20 14:45:07 -05:00
psychobunny
2ba1363e12 results.owner* 2015-02-20 14:23:57 -05:00
psychobunny
aa38d6dda2 rewards bug fixes 2015-02-20 14:21:40 -05:00
psychobunny
7e9095b21b added "owner" to action:post.upvote/downvote/unvote 2015-02-20 14:21:33 -05:00
Barış Soner Uşaklı
f9581e435d getGroupsData method and filter:groups.get 2015-02-20 14:20:49 -05:00
psychobunny
949fcbbf11 rewards: big feature sprint 2015-02-20 13:40:19 -05:00
Barış Soner Uşaklı
fc23dea1d2 up versions 2015-02-20 12:36:57 -05:00
psychobunny
54c5034ce0 moved rewards/conditions/conditoinals out of core into rewards-essentials 2015-02-20 12:31:38 -05:00
psychobunny
a7c3d193cc include nodebb-rewards namespace 2015-02-20 12:17:58 -05:00
psychobunny
7fa61f03e2 saving conditions 2015-02-20 12:16:13 -05:00
psychobunny
332110b8e2 bugfix 2015-02-20 12:16:04 -05:00
psychobunny
5fcbffe652 fixed delegate syntax 2015-02-20 00:29:15 -05:00
psychobunny
1998f102d6 using tjs to load new lines instead of cloning 2015-02-20 00:26:19 -05:00
psychobunny
8373f7359e don't error out if reward not filled 2015-02-19 23:53:50 -05:00
psychobunny
09086f7d30 deleting rewards 2015-02-19 23:49:36 -05:00
psychobunny
c844400ab9 cleanup and fix for adding new rewards 2015-02-19 23:40:23 -05:00
psychobunny
5f54de3b37 successfully got loading and saving of rewards working 2015-02-19 23:39:39 -05:00
psychobunny
e5115c0cf2 differentiate between rid and id 2015-02-19 23:15:37 -05:00
psychobunny
67b693cd3a pass in expected format of active rewards 2015-02-19 23:02:52 -05:00
psychobunny
cd26f5d06d passing in values for saving rewards 2015-02-19 22:44:23 -05:00
psychobunny
91c02d4e29 ditching rewardID in favour of verbose id's 2015-02-19 22:19:04 -05:00
psychobunny
46e0fad2d8 rewards: code organization, getting ready to code saving/loading of active rewards 2015-02-19 22:06:52 -05:00
psychobunny
2cc6f0c507 fixed disable logic 2015-02-19 21:56:50 -05:00
psychobunny
4acf8cafee rewards: adding new rows 2015-02-19 21:51:32 -05:00
Julian Lam
88aa427669 updated upgrade script so that it does not rely on Groups.list, as the method has changed between v0.5.0 and v0.6.0.
Also added setImmediate call so eachLimit doesn't explode
2015-02-19 19:34:13 -05:00
psychobunny
029ae11ed5 rewards - cleanup 2015-02-19 19:10:01 -05:00
psychobunny
3ca11c1947 rewards: disable / delete 2015-02-19 18:51:42 -05:00
psychobunny
4145046e02 rewards: got everything loading 2015-02-19 18:46:36 -05:00
psychobunny
b1c37775c5 more styling 2015-02-19 18:22:21 -05:00
barisusakli
756d03fa62 closes #2745
generate paths on retrieval instead of notification creation
also fix follow notification path
2015-02-19 18:14:38 -05:00
psychobunny
7457b22427 added more api fields to rewards 2015-02-19 17:48:01 -05:00
psychobunny
9291ec64f9 styling 2015-02-19 17:47:47 -05:00
Julian Lam
82543bdeee fixed #2744 2015-02-19 17:31:05 -05:00
psychobunny
d9bd7a400d minor styling 2015-02-19 17:29:44 -05:00
psychobunny
4f53bd59be rewards - got custom inputs loading 2015-02-19 17:24:58 -05:00
Julian Lam
58094d2b3b removed console logs, and requiring markdown 1.0.0 plugin 2015-02-19 17:07:01 -05:00
psychobunny
94c1c2d547 fixed loading mock data 2015-02-19 16:57:32 -05:00
Julian Lam
ceb18fe73d added new hook and method for plugins to introduce their own formatting options, #2743 2015-02-19 16:51:15 -05:00
Barış Soner Uşaklı
767816e669 #2738 2015-02-19 16:46:00 -05:00
Barış Soner Uşaklı
c1ce0a9e1d closes #2738 2015-02-19 16:37:56 -05:00
Barış Soner Uşaklı
c3a51033a8 removed utils.getQueryParams() use utils.params() 2015-02-19 16:11:23 -05:00
psychobunny
2bebac964e loading mock data 2015-02-19 16:09:58 -05:00
Barış Soner Uşaklı
743cd20441 closes #2267 2015-02-19 15:56:12 -05:00
Julian Lam
4ba6d44858 Merge pull request #2739 from yariplus/mobifix
Fix #2684 ACP navbar on mobile.
2015-02-19 15:53:38 -05:00
yariplus
6c44de27ed Fix spaces and less variables. 2015-02-19 15:29:43 -05:00
Julian Lam
4dad7de33f fallbacks for #2601 2015-02-19 15:06:53 -05:00
Julian Lam
711dff1dd0 added language strings for #2601 2015-02-19 15:05:41 -05:00
psychobunny
0e7c3be9d3 made some progress with mock api + acp 2015-02-19 15:04:13 -05:00
psychobunny
bdcf090aaa init rewards system 2015-02-19 14:20:13 -05:00
Barış Soner Uşaklı
da305210e2 closes #2618 2015-02-19 13:24:06 -05:00
Barış Soner Uşaklı
97c0b130ca closes #2691 2015-02-19 12:23:44 -05:00
Julian Lam
350acde379 ability to mark a notification read/unread from dropdown list, made styling less bootstrap-locked, using FA icon in theme instead of hardcoded in template 2015-02-19 12:06:15 -05:00
Barış Soner Uşaklı
8eb45fc80a dont remove self from browsing 2015-02-19 12:04:53 -05:00
Barış Soner Uşaklı
d09fcbaef0 closes #2741 2015-02-19 11:17:29 -05:00
yariplus
145f7b3809 Fix #2684 ACP navbar on mobile. 2015-02-19 06:35:45 -05:00
Julian Lam
268981f6db latest translations 2015-02-18 23:00:44 -05:00
Barış Soner Uşaklı
957a0840b1 Merge pull request #2736 from pitaj/master
Fix ACP sidebar affix issue
2015-02-18 21:55:51 -05:00
barisusakli
364ed641dd truncateUserList on search 2015-02-18 21:27:09 -05:00
barisusakli
aa94dafac1 closes #725 2015-02-18 21:09:33 -05:00
psychobunny
eb88d2fbd8 testing docgen again 2015-02-18 16:19:23 -05:00
psychobunny
1337924afb test commit - testing docgen 2015-02-18 16:04:46 -05:00
Julian Lam
6a69fcd4cd fixes #2665 2015-02-18 15:41:44 -05:00
Julian Lam
502e806f88 fixed #2732 -- group creation now using language keys, and no longer succeeds if a group by the name of 'guest' is created. 2015-02-18 15:34:01 -05:00
Peter Jaszkowiak
1ce0073cb6 Fixed events sidebar positioning 2015-02-18 13:30:06 -07:00
Peter Jaszkowiak
a2f4cda715 Fixed sidebar positioning 2015-02-18 13:26:13 -07:00
Barış Soner Uşaklı
dca143fd87 Merge pull request #2706 from acardinale/master
Add hooks "filter:topic.build" and "filter:category.build"
2015-02-18 10:48:05 -05:00
acardinale
6607dfc4c9 Update categories.js 2015-02-18 15:27:14 +01:00
acardinale
8975a0962e Update topics.js 2015-02-18 15:26:05 +01:00
barisusakli
d577371a51 fix test 2015-02-18 07:41:35 -05:00
barisusakli
0dca86f255 fix tests 2015-02-18 07:36:49 -05:00
barisusakli
60efeb8561 fix nid 2015-02-18 07:28:53 -05:00
barisusakli
31a44a9982 dont use fa icon 2015-02-18 00:04:55 -05:00
Barış Soner Uşaklı
25b25319f1 Merge pull request #2727 from yariplus/fixselects
Fix select and select multiple loading/saving on widget ACP.
2015-02-17 23:09:51 -05:00
barisusakli
3bcd8aefb0 deleteObjectFields method
cleaned up user reset
2015-02-17 22:22:06 -05:00
psychobunny
540facaaab try #2 (I give up, grunt-watch seems so unpredictable... on windows anyways) 2015-02-17 19:18:55 -05:00
barisusakli
75657605ad fix typo in search 2015-02-17 18:57:24 -05:00
barisusakli
fbcc7c4bc3 closes #2634 2015-02-17 18:52:54 -05:00
barisusakli
c305cd8220 removed commented out code 2015-02-17 18:14:29 -05:00
barisusakli
0096d74cfa user password reset test 2015-02-17 18:11:30 -05:00
barisusakli
150d33eb92 upgrade script to rename widgets:home.tpl to widgets:categories.tpl 2015-02-17 17:55:20 -05:00
Julian Lam
df7c48c474 restoring latest plugin version in plugins ACP 2015-02-17 16:09:25 -05:00
Julian Lam
7bb9ea4b33 querying via qs now 2015-02-17 16:01:57 -05:00
psychobunny
02c310ea03 Merge remote-tracking branch 'origin/master' into grunt-dev 2015-02-17 15:26:22 -05:00
Barış Soner Uşaklı
276cd51836 closes #2467 2015-02-17 15:14:06 -05:00
psychobunny
0611b7e1ea closes #2733 2015-02-17 15:12:43 -05:00
Barış Soner Uşaklı
8f6b577bad Update package.json 2015-02-17 14:50:08 -05:00
Barış Soner Uşaklı
bd553eb05d closes #2002 2015-02-17 13:25:22 -05:00
Barış Soner Uşaklı
fe1f4f84ec Merge pull request #2682 from MegaGM/action.posts.loaded
Change argument in action:posts.loaded
2015-02-17 12:26:19 -05:00
Mega
16c5c18165 Update arguments in action:posts.loaded 2015-02-16 10:43:56 +03:00
Peter Jaszkowiak
25e9dca74e Merge pull request #2 from NodeBB/master
Update to latest
2015-02-15 21:15:59 -08:00
yariplus
c3f0f52757 Fix select and select multiple loading/saving on widget ACP. 2015-02-15 01:53:18 -05:00
Barış Soner Uşaklı
12619ba733 Merge pull request #2698 from MegaGM/acp.panel.width
[ACP] Remove unnecessary panel width restriction
2015-02-13 23:50:02 -05:00
barisusakli
e3ba6716d1 closes #2723 2015-02-13 20:28:37 -05:00
barisusakli
16be6d3382 increase group search results to 20 items 2015-02-13 18:34:03 -05:00
barisusakli
d152254bcb removed availableTemplates assign 2015-02-13 18:26:25 -05:00
barisusakli
b2fc4d5dc4 #2002 2015-02-13 18:16:36 -05:00
barisusakli
c450992882 closes #2722 2015-02-13 15:13:16 -05:00
Julian Lam
1029b6c2f3 some prep for #2499 2015-02-12 16:15:35 -05:00
Barış Soner Uşaklı
d09a53197e closes #2570 2015-02-12 15:03:46 -05:00
Barış Soner Uşaklı
09b26bc950 if code isnt validated return error 2015-02-12 14:37:01 -05:00
Barış Soner Uşaklı
8cbb9aa310 #2585 2015-02-12 13:42:45 -05:00
Barış Soner Uşaklı
0d84486187 closes #2585 2015-02-12 13:38:19 -05:00
Barış Soner Uşaklı
429d7cbfa2 added filter:category.get 2015-02-12 13:23:21 -05:00
psychobunny
f4c587c530 move hardcoded initial welcome text into welcome.md 2015-02-12 13:10:18 -05:00
Barış Soner Uşaklı
0421b6ef06 closes #2639 2015-02-12 13:04:49 -05:00
Barış Soner Uşaklı
cdd5847b39 closes #2664 2015-02-12 12:23:13 -05:00
Barış Soner Uşaklı
5cebcfba7a update validator ver 2015-02-12 11:49:26 -05:00
barisusakli
cf986ad903 Merge remote-tracking branch 'origin/master'
Conflicts:
	src/socket.io/user.js
2015-02-11 21:55:16 -05:00
barisusakli
f99c3a310d use uid instead of socket.uid 2015-02-11 21:54:20 -05:00
Barış Soner Uşaklı
a62a3647a0 use uid, socket.uid is always 0 here 2015-02-11 21:53:53 -05:00
barisusakli
5dfafff421 call callback on password update 2015-02-11 21:26:26 -05:00
barisusakli
06b2a6ff68 closes #2717 2015-02-11 21:09:43 -05:00
Peter Jaszkowiak
013627860d Merge pull request #1 from NodeBB/master
Update
2015-02-11 16:55:36 -08:00
psychobunny
e60ef6c9d1 Merge pull request #2716 from pitaj/master
Translate ACP pages
2015-02-11 18:10:48 -05:00
Peter Jaszkowiak
2b9d1ee3dd Translate ACP pages
I fixed it
2015-02-11 16:05:05 -07:00
psychobunny
d016a9f3b0 Merge pull request #2715 from pitaj/master
Make ACP sidebar fixed
2015-02-11 17:57:20 -05:00
Peter Jaszkowiak
a583f9d77a Fixed sidebar overlay issue on window width
Had the wrong `min-width`
2015-02-11 14:56:57 -07:00
Barış Soner Uşaklı
3f31098144 closes #2619 2015-02-11 16:16:32 -05:00
Barış Soner Uşaklı
3293436867 closes #2640 2015-02-11 14:44:56 -05:00
Barış Soner Uşaklı
7d963e52cf closes #2686 2015-02-11 13:44:54 -05:00
Barış Soner Uşaklı
d20628a8d4 closes #2539 2015-02-11 12:55:02 -05:00
Julian Lam
8a581ed1dd fixes #2711 :rage2: 2015-02-11 12:30:48 -05:00
Julian Lam
0c5c0bf08a making userRow selector less specific, in group details.js 2015-02-11 12:23:19 -05:00
Barış Soner Uşaklı
f3d1e96c24 filter deleted topics on popular 2015-02-11 12:12:37 -05:00
Barış Soner Uşaklı
749ce5f8e5 dont crash if callback isnt supplied to list methods 2015-02-11 12:01:55 -05:00
Julian Lam
081462983a refactored the groups update method a bit, and now if a group has pending members and it becomes a public group, those users become members 2015-02-11 11:35:14 -05:00
Peter Jaszkowiak
8241243f6b Make ACP sidebar fixed
If you want to implement some kind of replacement for the CSS calc I
used, go ahead and do it yourself. I'm hoping webmasters can either deal
with a tad bit of overlap or have a modern browser.
2015-02-10 21:34:19 -07:00
barisusakli
1142f7700f closes #2714 2015-02-10 23:34:06 -05:00
barisusakli
104393f5f7 closes #2712 2015-02-10 21:54:35 -05:00
barisusakli
a5029d148c open user links in new tab 2015-02-10 20:20:57 -05:00
psychobunny
fd62b537b7 Merge pull request #2713 from yariplus/widgetsingleclick
Make widget headers clickable anywhere.
2015-02-10 19:53:45 -05:00
Timothy Fike
a0e98d5957 Make widget headers clickable anywhere. 2015-02-10 19:47:06 -05:00
Barış Soner Uşaklı
2c86ca59e6 fire filter:serch.build if query is empty 2015-02-10 15:23:11 -05:00
Barış Soner Uşaklı
6a55cdfbaf fix relative_path image url for sub installs 2015-02-10 14:47:01 -05:00
Barış Soner Uşaklı
57d6bb3b4c filter:search.build hook 2015-02-10 14:30:01 -05:00
Barış Soner Uşaklı
b40b87dd36 dont add relative_path to uploads it is added on the way out 2015-02-10 13:45:29 -05:00
Barış Soner Uşaklı
34c1d69ed3 added filter:tags.search 2015-02-10 13:12:08 -05:00
Julian Lam
47964e8ff4 latest fallbacks 2015-02-10 11:24:44 -05:00
Julian Lam
0d9d9bf110 added two new language strings 2015-02-10 11:24:11 -05:00
Julian Lam
9bfb7585ee bundling emoji-extended with all installs, @frissdiegurke 2015-02-10 11:21:14 -05:00
Julian Lam
f16c37eeaf #2692 2015-02-10 11:17:25 -05:00
Julian Lam
57d45518bd added a preventDefault when href="#" or data-ajaxify="false", so page doesn't send user back to top (which is kind of annoying), but not sure if this may introduce side-effects. @barisusakli @psychobunny 2015-02-10 11:16:24 -05:00
Julian Lam
15e6c51541 latest translations 2015-02-10 10:53:19 -05:00
barisusakli
b6125b1674 toString pid 2015-02-09 18:00:02 -05:00
barisusakli
5e7bf7a272 default search in posts 2015-02-09 17:50:19 -05:00
barisusakli
6cd615ee45 dont add post/topic query params if searching for users/tags 2015-02-09 17:45:35 -05:00
Barış Soner Uşaklı
c98720ee4c show results as WIP 2015-02-09 17:02:47 -05:00
Barış Soner Uşaklı
be92f07ab9 save/clear search preferences 2015-02-09 15:32:43 -05:00
Julian Lam
9b45109349 updating development version 2015-02-09 14:49:43 -05:00
Julian Lam
b1340b74c6 updating vanilla minver 2015-02-09 13:41:21 -05:00
Julian Lam
c351261165 added daily cleaning of reset tokens #2708 2015-02-08 22:02:13 -05:00
Julian Lam
1843d0364e closed #2708 2015-02-08 21:06:45 -05:00
barisusakli
7f6518e4a6 private plugin link fix 2015-02-08 13:38:42 -05:00
acardinale
612acc41ba Add hook "filter:category.build"
Same behavior as "filter:register.build"
2015-02-08 12:05:26 +01:00
acardinale
a63c679935 Add hook "filter:topic.build"
Same behavior as "filter:register.build"
2015-02-08 11:58:01 +01:00
barisusakli
10928ed11b escape post content 2015-02-07 23:51:25 -05:00
barisusakli
b41119a374 show seconds like search page 2015-02-07 23:32:42 -05:00
barisusakli
138a13f1b2 dont crash if searchQuery is falsy 2015-02-07 23:10:54 -05:00
barisusakli
4d63a7c020 closes ##2705 2015-02-07 23:00:58 -05:00
barisusakli
5cc728994b dont need hidePostedBy 2015-02-07 20:55:57 -05:00
barisusakli
d96e4ec22a fix category filter and pagination, strip marquee 2015-02-07 20:30:03 -05:00
barisusakli
4d34241072 missing semicolon 2015-02-07 20:02:21 -05:00
barisusakli
eff1256dfb search sort, search in posts, titles, posts& titles 2015-02-07 20:00:07 -05:00
Julian Lam
957415463f Merge branch '0.7.0'
Conflicts:
	package.json
	src/search.js
2015-02-07 17:07:48 -05:00
Mega
a0926d5505 [ACP] Remove unnecessary panel width restriction 2015-02-05 22:28:21 +03:00
Julian Lam
59da48dee5 added too-many-messages language key 2015-02-01 19:35:41 -05:00
Mega
df0e924714 Change argument in action:posts.loaded 2015-02-02 03:27:25 +03:00
Julian Lam
904daf7776 Merge branch 'master' into 0.7.0 2015-02-01 17:24:56 -05:00
barisusakli
feeeb83a43 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-31 15:47:40 -05:00
barisusakli
f988959989 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-31 13:37:57 -05:00
barisusakli
15b5c56612 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-31 00:00:24 -05:00
barisusakli
b3a968e006 merge 2015-01-30 22:41:18 -05:00
Julian Lam
b62337b0b9 fixed browser title in user groups page 2015-01-30 16:27:29 -05:00
Julian Lam
da0b2c84e6 passing memberCount and createTime into getUserGroups 2015-01-30 16:24:57 -05:00
Julian Lam
4a7ec3ccc6 added groups page to user profile 2015-01-30 15:48:21 -05:00
psychobunny
4f5918390a if user search is blank, return all users 2015-01-30 14:19:15 -05:00
psychobunny
7639bff0fe updated package.json 2015-01-30 13:06:17 -05:00
psychobunny
f5ef3cf866 Gruntfile.js 2015-01-30 13:06:04 -05:00
barisusakli
2512598917 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-30 12:33:31 -05:00
psychobunny
66b6e12aa3 added grunt deps 2015-01-30 12:21:00 -05:00
Julian Lam
77a9c7c195 Merge branch 'master' into 0.7.0 2015-01-29 19:51:29 -05:00
barisusakli
f3f3ca8e50 if key isn't found dont error 2015-01-29 19:25:01 -05:00
barisusakli
d1a1cada19 fix typo 2015-01-29 17:12:12 -05:00
barisusakli
530bdbbd1a dont rename if key doesn't exist 2015-01-29 17:10:49 -05:00
barisusakli
b54f2de504 pass uid to getUsers and getUsersFromSets 2015-01-29 17:02:20 -05:00
Julian Lam
6ebc048f1f searching on keyup instead of enter key 2015-01-29 16:41:48 -05:00
psychobunny
6a2c35c263 latest t.js 2015-01-29 15:45:31 -05:00
barisusakli
4413c70d3c Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-29 13:42:05 -05:00
barisusakli
e16cfa396b Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-29 12:53:01 -05:00
Julian Lam
8bc2d97352 stringify helper for t.js 2015-01-29 10:08:53 -05:00
barisusakli
60fecdbdf8 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-28 19:08:19 -05:00
Julian Lam
aabfeba38d Merge branch 'master' into 0.7.0
Conflicts:
	src/user.js
2015-01-28 13:39:21 -05:00
psychobunny
5a3c056759 removing li specific selector 2015-01-27 23:50:10 -05:00
psychobunny
370a60c14f potential bug @barisusakli I think you changed this, just pinging you in case 2015-01-27 23:50:01 -05:00
psychobunny
d47cd270df some random favourite typo 2015-01-27 23:37:47 -05:00
barisusakli
0dc0c39f48 removed li selector 2015-01-27 19:58:17 -05:00
barisusakli
ab69477b24 moved filter:user,get to central function 2015-01-27 17:37:21 -05:00
psychobunny
c06132e779 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-27 17:13:43 -05:00
barisusakli
ddee93beab Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-27 16:20:20 -05:00
barisusakli
20a2262e43 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-26 18:24:24 -05:00
barisusakli
90b1b13914 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-23 18:21:24 -05:00
barisusakli
19814a619d Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-23 15:13:24 -05:00
barisusakli
535f30aa9e Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-22 16:40:31 -05:00
Julian Lam
070215b05e simplified isOwner check because there's no need to check admin status as admins automatically become owners now 2015-01-22 16:08:20 -05:00
Julian Lam
4c927060d9 Merge branch 'master' into 0.7.0 2015-01-22 16:02:41 -05:00
Julian Lam
72f28b7b38 closed #2641 2015-01-22 14:20:33 -05:00
barisusakli
d895ca6827 missing semicolon 2015-01-22 14:20:33 -05:00
barisusakli
77216acbcc user.delete test 2015-01-22 14:20:33 -05:00
barisusakli
5fb8817b3c closes #2643 2015-01-22 14:20:33 -05:00
barisusakli
d40646ac42 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-22 12:19:46 -05:00
Julian Lam
c8c7081f5d Merge branch 'master' into 0.7.0 2015-01-21 23:11:20 -05:00
Julian Lam
63f449d0ad Merge remote-tracking branch 'origin/0.7.0' into 0.7.0 2015-01-21 23:11:14 -05:00
barisusakli
afe29d3133 Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-21 22:54:15 -05:00
barisusakli
274523266f Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-21 22:51:18 -05:00
Julian Lam
0d8dcbf734 Merge branch 'master' into 0.7.0 2015-01-21 17:41:51 -05:00
Julian Lam
be30dcc2d0 Merge branch 'master' into 0.7.0
Conflicts:
	public/src/client/groups/list.js
2015-01-21 17:16:06 -05:00
Julian Lam
78a5843ae4 fixed tests by removing the broken one, heh heh heh 2015-01-21 16:33:09 -05:00
Julian Lam
2917304f6c companion commit to nodebb/nodebb-theme-vanilla@0d17032 2015-01-21 16:14:31 -05:00
Julian Lam
69ee2c1d07 Merge branch 'master' into 0.7.0 2015-01-21 15:58:56 -05:00
Julian Lam
d4779c8c0a Merge branch 'master' into 0.7.0 2015-01-21 15:46:58 -05:00
Julian Lam
093e499bf8 defining module name in iconSelect module 2015-01-20 20:55:46 -05:00
barisusakli
f8a03c4fca Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-20 20:13:01 -05:00
barisusakli
ea3d7d610a Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-20 19:24:30 -05:00
barisusakli
0741f00e4f Merge remote-tracking branch 'origin/master' into 0.7.0 2015-01-17 15:57:09 -05:00
barisusakli
b333653464 prevent js crash if responseJSON is undefined 2015-01-16 23:52:51 -05:00
barisusakli
236fe91e95 fix typo 2015-01-16 13:00:50 -05:00
barisusakli
6fe8d25166 add uid to filter:topic.get 2015-01-16 12:58:31 -05:00
Julian Lam
02e0d4635b icon mgmt for #2463 2015-01-01 16:24:47 -05:00
Julian Lam
dfe8e8de70 image uploading for categories, #2463 2015-01-01 15:35:22 -05:00
Julian Lam
ad723e2943 Merge branch 'master' into categories_revamp
Conflicts:
	src/views/admin/partials/menu.tpl
2015-01-01 14:59:03 -05:00
Julian Lam
1186bff890 category edit page, #2463 2014-12-30 13:04:31 -05:00
Julian Lam
84e90cd73d category enable/disabled #2463 2014-12-30 12:25:39 -05:00
Julian Lam
a091757aa0 adding dedicated category edit page for ACP #2463 2014-12-29 21:38:21 -05:00
Julian Lam
6b95b28db7 drag/drop re-ordering fixed in ACP, #2463 2014-12-29 21:21:17 -05:00
Julian Lam
9e63b5f9a0 moved ACP menu into a partial 2014-12-29 21:21:17 -05:00
Julian Lam
c98331de82 revamping categories management page in ACP, #2463 2014-12-29 21:21:17 -05:00
1081 changed files with 32761 additions and 16213 deletions

13
.gitattributes vendored Normal file
View File

@@ -0,0 +1,13 @@
# These files are text and should be normalized (convert crlf => lf)
*.json text
*.css text
*.less text
*.tpl text
*.html text
*.js text
*.md text
# Images should be treated as binary
# (binary is a macro for -text -diff)
*.png binary
*.jpg binary

13
.gitignore vendored
View File

@@ -8,7 +8,6 @@ public/css/*.css
*.sublime-project
*.sublime-workspace
.project
.idea
*.swp
Vagrantfile
.vagrant
@@ -31,4 +30,14 @@ pidfile
/public/stylesheet.css
/public/admin.css
/public/nodebb.min.js
/public/nodebb.min.js.map
/public/nodebb.min.js.map
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
*.iml
## Directory-based project format:
.idea/
## File-based project format:
*.ipr
*.iws

View File

@@ -7,7 +7,9 @@ source_file = public/language/en_GB/category.json
source_lang = en_GB
trans.ar = public/language/ar/category.json
trans.bn = public/language/bn/category.json
trans.bg = public/language/bg/category.json
trans.cs = public/language/cs/category.json
trans.da = public/language/da/category.json
trans.de = public/language/de/category.json
trans.el = public/language/el/category.json
trans.en_US = public/language/en_US/category.json
@@ -33,6 +35,7 @@ trans.ru = public/language/ru/category.json
trans.ro = public/language/ro/category.json
trans.sc = public/language/sc/category.json
trans.sk = public/language/sk/category.json
trans.sr = public/language/sr/category.json
trans.sv = public/language/sv/category.json
trans.th = public/language/th/category.json
trans.tr = public/language/tr/category.json
@@ -47,7 +50,9 @@ source_file = public/language/en_GB/login.json
source_lang = en_GB
trans.ar = public/language/ar/login.json
trans.bn = public/language/bn/login.json
trans.bg = public/language/bg/login.json
trans.cs = public/language/cs/login.json
trans.da = public/language/da/login.json
trans.de = public/language/de/login.json
trans.el = public/language/el/login.json
trans.en_US = public/language/en_US/login.json
@@ -73,6 +78,7 @@ trans.ru = public/language/ru/login.json
trans.ro = public/language/ro/login.json
trans.sc = public/language/sc/login.json
trans.sk = public/language/sk/login.json
trans.sr = public/language/sr/login.json
trans.sv = public/language/sv/login.json
trans.th = public/language/th/login.json
trans.tr = public/language/tr/login.json
@@ -82,11 +88,14 @@ trans.zh_TW = public/language/zh_TW/login.json
type = KEYVALUEJSON
[nodebb.recent]
file_filter = public/language/<lang>/recent.json
source_file = public/language/en_GB/recent.json
source_lang = en_GB
trans.ar = public/language/ar/recent.json
trans.bn = public/language/bn/recent.json
trans.bg = public/language/bg/recent.json
trans.cs = public/language/cs/recent.json
trans.da = public/language/da/recent.json
trans.de = public/language/de/recent.json
trans.el = public/language/el/recent.json
trans.en_US = public/language/en_US/recent.json
@@ -112,6 +121,7 @@ trans.ru = public/language/ru/recent.json
trans.ro = public/language/ro/recent.json
trans.sc = public/language/sc/recent.json
trans.sk = public/language/sk/recent.json
trans.sr = public/language/sr/recent.json
trans.sv = public/language/sv/recent.json
trans.th = public/language/th/recent.json
trans.tr = public/language/tr/recent.json
@@ -121,11 +131,14 @@ trans.zh_TW = public/language/zh_TW/recent.json
type = KEYVALUEJSON
[nodebb.unread]
file_filter = public/language/<lang>/unread.json
source_file = public/language/en_GB/unread.json
source_lang = en_GB
trans.ar = public/language/ar/unread.json
trans.bn = public/language/bn/unread.json
trans.bg = public/language/bg/unread.json
trans.cs = public/language/cs/unread.json
trans.da = public/language/da/unread.json
trans.de = public/language/de/unread.json
trans.el = public/language/el/unread.json
trans.en_US = public/language/en_US/unread.json
@@ -151,6 +164,7 @@ trans.ru = public/language/ru/unread.json
trans.ro = public/language/ro/unread.json
trans.sc = public/language/sc/unread.json
trans.sk = public/language/sk/unread.json
trans.sr = public/language/sr/unread.json
trans.sv = public/language/sv/unread.json
trans.th = public/language/th/unread.json
trans.tr = public/language/tr/unread.json
@@ -160,11 +174,14 @@ trans.zh_TW = public/language/zh_TW/unread.json
type = KEYVALUEJSON
[nodebb.modules]
file_filter = public/language/<lang>/modules.json
source_file = public/language/en_GB/modules.json
source_lang = en_GB
trans.ar = public/language/ar/modules.json
trans.bn = public/language/bn/modules.json
trans.bg = public/language/bg/modules.json
trans.cs = public/language/cs/modules.json
trans.da = public/language/da/modules.json
trans.de = public/language/de/modules.json
trans.el = public/language/el/modules.json
trans.en_US = public/language/en_US/modules.json
@@ -190,6 +207,7 @@ trans.ru = public/language/ru/modules.json
trans.ro = public/language/ro/modules.json
trans.sc = public/language/sc/modules.json
trans.sk = public/language/sk/modules.json
trans.sr = public/language/sr/modules.json
trans.sv = public/language/sv/modules.json
trans.th = public/language/th/modules.json
trans.tr = public/language/tr/modules.json
@@ -199,11 +217,14 @@ trans.zh_TW = public/language/zh_TW/modules.json
type = KEYVALUEJSON
[nodebb.register]
file_filter = public/language/<lang>/register.json
source_file = public/language/en_GB/register.json
source_lang = en_GB
trans.ar = public/language/ar/register.json
trans.bn = public/language/bn/register.json
trans.bg = public/language/bg/register.json
trans.cs = public/language/cs/register.json
trans.da = public/language/da/register.json
trans.de = public/language/de/register.json
trans.el = public/language/el/register.json
trans.en_US = public/language/en_US/register.json
@@ -229,6 +250,7 @@ trans.ru = public/language/ru/register.json
trans.ro = public/language/ro/register.json
trans.sc = public/language/sc/register.json
trans.sk = public/language/sk/register.json
trans.sr = public/language/sr/register.json
trans.sv = public/language/sv/register.json
trans.th = public/language/th/register.json
trans.tr = public/language/tr/register.json
@@ -238,11 +260,14 @@ trans.zh_TW = public/language/zh_TW/register.json
type = KEYVALUEJSON
[nodebb.user]
file_filter = public/language/<lang>/user.json
source_file = public/language/en_GB/user.json
source_lang = en_GB
trans.ar = public/language/ar/user.json
trans.bn = public/language/bn/user.json
trans.bg = public/language/bg/user.json
trans.cs = public/language/cs/user.json
trans.da = public/language/da/user.json
trans.de = public/language/de/user.json
trans.el = public/language/el/user.json
trans.en_US = public/language/en_US/user.json
@@ -268,6 +293,7 @@ trans.ru = public/language/ru/user.json
trans.ro = public/language/ro/user.json
trans.sc = public/language/sc/user.json
trans.sk = public/language/sk/user.json
trans.sr = public/language/sr/user.json
trans.sv = public/language/sv/user.json
trans.th = public/language/th/user.json
trans.tr = public/language/tr/user.json
@@ -277,11 +303,14 @@ trans.zh_TW = public/language/zh_TW/user.json
type = KEYVALUEJSON
[nodebb.global]
file_filter = public/language/<lang>/global.json
source_file = public/language/en_GB/global.json
source_lang = en_GB
trans.ar = public/language/ar/global.json
trans.bn = public/language/bn/global.json
trans.bg = public/language/bg/global.json
trans.cs = public/language/cs/global.json
trans.da = public/language/da/global.json
trans.de = public/language/de/global.json
trans.el = public/language/el/global.json
trans.en_US = public/language/en_US/global.json
@@ -307,6 +336,7 @@ trans.ru = public/language/ru/global.json
trans.ro = public/language/ro/global.json
trans.sc = public/language/sc/global.json
trans.sk = public/language/sk/global.json
trans.sr = public/language/sr/global.json
trans.sv = public/language/sv/global.json
trans.th = public/language/th/global.json
trans.tr = public/language/tr/global.json
@@ -316,11 +346,14 @@ trans.zh_TW = public/language/zh_TW/global.json
type = KEYVALUEJSON
[nodebb.notifications]
file_filter = public/language/<lang>/notifications.json
source_file = public/language/en_GB/notifications.json
source_lang = en_GB
trans.ar = public/language/ar/notifications.json
trans.bn = public/language/bn/notifications.json
trans.bg = public/language/bg/notifications.json
trans.cs = public/language/cs/notifications.json
trans.da = public/language/da/notifications.json
trans.de = public/language/de/notifications.json
trans.el = public/language/el/notifications.json
trans.en_US = public/language/en_US/notifications.json
@@ -346,6 +379,7 @@ trans.ru = public/language/ru/notifications.json
trans.ro = public/language/ro/notifications.json
trans.sc = public/language/sc/notifications.json
trans.sk = public/language/sk/notifications.json
trans.sr = public/language/sr/notifications.json
trans.sv = public/language/sv/notifications.json
trans.th = public/language/th/notifications.json
trans.tr = public/language/tr/notifications.json
@@ -355,11 +389,14 @@ trans.zh_TW = public/language/zh_TW/notifications.json
type = KEYVALUEJSON
[nodebb.reset_password]
file_filter = public/language/<lang>/reset_password.json
source_file = public/language/en_GB/reset_password.json
source_lang = en_GB
trans.ar = public/language/ar/reset_password.json
trans.bn = public/language/bn/reset_password.json
trans.bg = public/language/bg/reset_password.json
trans.cs = public/language/cs/reset_password.json
trans.da = public/language/da/reset_password.json
trans.de = public/language/de/reset_password.json
trans.el = public/language/el/reset_password.json
trans.en_US = public/language/en_US/reset_password.json
@@ -385,6 +422,7 @@ trans.ru = public/language/ru/reset_password.json
trans.ro = public/language/ro/reset_password.json
trans.sc = public/language/sc/reset_password.json
trans.sk = public/language/sk/reset_password.json
trans.sr = public/language/sr/reset_password.json
trans.sv = public/language/sv/reset_password.json
trans.th = public/language/th/reset_password.json
trans.tr = public/language/tr/reset_password.json
@@ -394,11 +432,14 @@ trans.zh_TW = public/language/zh_TW/reset_password.json
type = KEYVALUEJSON
[nodebb.users]
file_filter = public/language/<lang>/users.json
source_file = public/language/en_GB/users.json
source_lang = en_GB
trans.ar = public/language/ar/users.json
trans.bn = public/language/bn/users.json
trans.bg = public/language/bg/users.json
trans.cs = public/language/cs/users.json
trans.da = public/language/da/users.json
trans.de = public/language/de/users.json
trans.el = public/language/el/users.json
trans.en_US = public/language/en_US/users.json
@@ -424,6 +465,7 @@ trans.ru = public/language/ru/users.json
trans.ro = public/language/ro/users.json
trans.sc = public/language/sc/users.json
trans.sk = public/language/sk/users.json
trans.sr = public/language/sr/users.json
trans.sv = public/language/sv/users.json
trans.th = public/language/th/users.json
trans.tr = public/language/tr/users.json
@@ -433,11 +475,14 @@ trans.zh_TW = public/language/zh_TW/users.json
type = KEYVALUEJSON
[nodebb.language]
file_filter = public/language/<lang>/language.json
source_file = public/language/en_GB/language.json
source_lang = en_GB
trans.ar = public/language/ar/language.json
trans.bn = public/language/bn/language.json
trans.bg = public/language/bg/language.json
trans.cs = public/language/cs/language.json
trans.da = public/language/da/language.json
trans.de = public/language/de/language.json
trans.el = public/language/el/language.json
trans.en_US = public/language/en_US/language.json
@@ -463,6 +508,7 @@ trans.ru = public/language/ru/language.json
trans.ro = public/language/ro/language.json
trans.sc = public/language/sc/language.json
trans.sk = public/language/sk/language.json
trans.sr = public/language/sr/language.json
trans.sv = public/language/sv/language.json
trans.th = public/language/th/language.json
trans.tr = public/language/tr/language.json
@@ -472,11 +518,14 @@ trans.zh_TW = public/language/zh_TW/language.json
type = KEYVALUEJSON
[nodebb.pages]
file_filter = public/language/<lang>/pages.json
source_file = public/language/en_GB/pages.json
source_lang = en_GB
trans.ar = public/language/ar/pages.json
trans.bn = public/language/bn/pages.json
trans.bg = public/language/bg/pages.json
trans.cs = public/language/cs/pages.json
trans.da = public/language/da/pages.json
trans.de = public/language/de/pages.json
trans.el = public/language/el/pages.json
trans.en_US = public/language/en_US/pages.json
@@ -502,6 +551,7 @@ trans.ru = public/language/ru/pages.json
trans.ro = public/language/ro/pages.json
trans.sc = public/language/sc/pages.json
trans.sk = public/language/sk/pages.json
trans.sr = public/language/sr/pages.json
trans.sv = public/language/sv/pages.json
trans.th = public/language/th/pages.json
trans.tr = public/language/tr/pages.json
@@ -511,11 +561,14 @@ trans.zh_TW = public/language/zh_TW/pages.json
type = KEYVALUEJSON
[nodebb.topic]
file_filter = public/language/<lang>/topic.json
source_file = public/language/en_GB/topic.json
source_lang = en_GB
trans.ar = public/language/ar/topic.json
trans.bn = public/language/bn/topic.json
trans.bg = public/language/bg/topic.json
trans.cs = public/language/cs/topic.json
trans.da = public/language/da/topic.json
trans.de = public/language/de/topic.json
trans.el = public/language/el/topic.json
trans.en_US = public/language/en_US/topic.json
@@ -541,6 +594,7 @@ trans.ru = public/language/ru/topic.json
trans.ro = public/language/ro/topic.json
trans.sc = public/language/sc/topic.json
trans.sk = public/language/sk/topic.json
trans.sr = public/language/sr/topic.json
trans.sv = public/language/sv/topic.json
trans.th = public/language/th/topic.json
trans.tr = public/language/tr/topic.json
@@ -550,11 +604,14 @@ trans.zh_TW = public/language/zh_TW/topic.json
type = KEYVALUEJSON
[nodebb.success]
file_filter = public/language/<lang>/success.json
source_file = public/language/en_GB/success.json
source_lang = en_GB
trans.ar = public/language/ar/success.json
trans.bn = public/language/bn/success.json
trans.bg = public/language/bg/success.json
trans.cs = public/language/cs/success.json
trans.da = public/language/da/success.json
trans.de = public/language/de/success.json
trans.el = public/language/el/success.json
trans.en_US = public/language/en_US/success.json
@@ -580,6 +637,7 @@ trans.ru = public/language/ru/success.json
trans.ro = public/language/ro/success.json
trans.sc = public/language/sc/success.json
trans.sk = public/language/sk/success.json
trans.sr = public/language/sr/success.json
trans.sv = public/language/sv/success.json
trans.th = public/language/th/success.json
trans.tr = public/language/tr/success.json
@@ -589,11 +647,14 @@ trans.zh_TW = public/language/zh_TW/success.json
type = KEYVALUEJSON
[nodebb.error]
file_filter = public/language/<lang>/error.json
source_file = public/language/en_GB/error.json
source_lang = en_GB
trans.ar = public/language/ar/error.json
trans.bn = public/language/bn/error.json
trans.bg = public/language/bg/error.json
trans.cs = public/language/cs/error.json
trans.da = public/language/da/error.json
trans.de = public/language/de/error.json
trans.el = public/language/el/error.json
trans.en_US = public/language/en_US/error.json
@@ -619,6 +680,7 @@ trans.ru = public/language/ru/error.json
trans.ro = public/language/ro/error.json
trans.sc = public/language/sc/error.json
trans.sk = public/language/sk/error.json
trans.sr = public/language/sr/error.json
trans.sv = public/language/sv/error.json
trans.th = public/language/th/error.json
trans.tr = public/language/tr/error.json
@@ -628,11 +690,14 @@ trans.zh_TW = public/language/zh_TW/error.json
type = KEYVALUEJSON
[nodebb.tags]
file_filter = public/language/<lang>/tags.json
source_file = public/language/en_GB/tags.json
source_lang = en_GB
trans.ar = public/language/ar/tags.json
trans.bn = public/language/bn/tags.json
trans.bg = public/language/bg/tags.json
trans.cs = public/language/cs/tags.json
trans.da = public/language/da/tags.json
trans.de = public/language/de/tags.json
trans.el = public/language/el/tags.json
trans.en_US = public/language/en_US/tags.json
@@ -658,6 +723,7 @@ trans.ru = public/language/ru/tags.json
trans.ro = public/language/ro/tags.json
trans.sc = public/language/sc/tags.json
trans.sk = public/language/sk/tags.json
trans.sr = public/language/sr/tags.json
trans.sv = public/language/sv/tags.json
trans.th = public/language/th/tags.json
trans.tr = public/language/tr/tags.json
@@ -667,11 +733,14 @@ trans.zh_TW = public/language/zh_TW/tags.json
type = KEYVALUEJSON
[nodebb.email]
file_filter = public/language/<lang>/email.json
source_file = public/language/en_GB/email.json
source_lang = en_GB
trans.ar = public/language/ar/email.json
trans.bn = public/language/bn/email.json
trans.bg = public/language/bg/email.json
trans.cs = public/language/cs/email.json
trans.da = public/language/da/email.json
trans.de = public/language/de/email.json
trans.el = public/language/el/email.json
trans.en_US = public/language/en_US/email.json
@@ -697,6 +766,7 @@ trans.ru = public/language/ru/email.json
trans.ro = public/language/ro/email.json
trans.sc = public/language/sc/email.json
trans.sk = public/language/sk/email.json
trans.sr = public/language/sr/email.json
trans.sv = public/language/sv/email.json
trans.th = public/language/th/email.json
trans.tr = public/language/tr/email.json
@@ -706,11 +776,14 @@ trans.zh_TW = public/language/zh_TW/email.json
type = KEYVALUEJSON
[nodebb.search]
file_filter = public/language/<lang>/search.json
source_file = public/language/en_GB/search.json
source_lang = en_GB
trans.ar = public/language/ar/search.json
trans.bn = public/language/bn/search.json
trans.bg = public/language/bg/search.json
trans.cs = public/language/cs/search.json
trans.da = public/language/da/search.json
trans.de = public/language/de/search.json
trans.el = public/language/el/search.json
trans.en_US = public/language/en_US/search.json
@@ -736,6 +809,7 @@ trans.ru = public/language/ru/search.json
trans.ro = public/language/ro/search.json
trans.sc = public/language/sc/search.json
trans.sk = public/language/sk/search.json
trans.sr = public/language/sr/search.json
trans.sv = public/language/sv/search.json
trans.th = public/language/th/search.json
trans.tr = public/language/tr/search.json
@@ -745,11 +819,14 @@ trans.zh_TW = public/language/zh_TW/search.json
type = KEYVALUEJSON
[nodebb.groups]
file_filter = public/language/<lang>/groups.json
source_file = public/language/en_GB/groups.json
source_lang = en_GB
trans.ar = public/language/ar/groups.json
trans.bn = public/language/bn/groups.json
trans.bg = public/language/bg/groups.json
trans.cs = public/language/cs/groups.json
trans.da = public/language/da/groups.json
trans.de = public/language/de/groups.json
trans.el = public/language/el/groups.json
trans.en_US = public/language/en_US/groups.json
@@ -775,6 +852,7 @@ trans.ru = public/language/ru/groups.json
trans.ro = public/language/ro/groups.json
trans.sc = public/language/sc/groups.json
trans.sk = public/language/sk/groups.json
trans.sr = public/language/sr/groups.json
trans.sv = public/language/sv/groups.json
trans.th = public/language/th/groups.json
trans.tr = public/language/tr/groups.json

View File

@@ -13,6 +13,11 @@ If you are writing contributions as part of employment from another company / in
Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/en/latest/installing/os.html), please head over to our [community support forum](https://community.nodebb.org) for advice.
# Found a Security Vulnerability?
If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**.
A member of the NodeBB security team will respond to the issue.
Please do not post it to the public bug tracker.
# Issues & Bugs
@@ -20,11 +25,6 @@ Thanks for reporting an issue with NodeBB! Please follow these guidelines in ord
In general, if we can't reproduce it, we can't fix it!
> #### **Important**
> If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**.
> A member of the NodeBB security team will respond to the issue.
> Please do not post it to the public bug tracker.
## Try the latest version of NodeBB
There is a chance that the issue you are experiencing may have already been fixed.
@@ -50,6 +50,15 @@ $ git rev-parse HEAD
If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know.
## Provide theme versions if issue is related to the theme/display
``` bash
$ npm ls nodebb-theme-vanilla nodebb-theme-lavender
nodebb@0.7.0-dev /home/julian/Projects/nodebb/forum
├── nodebb-theme-lavender@0.2.13
└── nodebb-theme-vanilla@0.2.35
```
## Attempt to use `git bisect`
If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`.

78
Gruntfile.js Normal file
View File

@@ -0,0 +1,78 @@
"use strict";
var fork = require('child_process').fork,
env = process.env,
worker,
incomplete = [];
module.exports = function(grunt) {
function update(action, filepath, target) {
var args = [],
fromFile = '',
compiling = '',
time = Date.now();
if (!grunt.option('verbose')) {
args.push('--log-level=info');
}
if (target === 'lessUpdated') {
fromFile = ['js','tpl'];
compiling = 'less';
} else if (target === 'clientUpdated') {
fromFile = ['less','tpl'];
compiling = 'js';
} else if (target === 'templatesUpdated') {
fromFile = ['js','less'];
compiling = 'tpl';
} else if (target === 'serverUpdated') {
fromFile = ['less','js','tpl'];
}
fromFile = fromFile.filter(function(ext) {
return incomplete.indexOf(ext) === -1;
});
args.push('--from-file=' + fromFile.join(','));
incomplete.push(compiling);
worker.kill();
worker = fork('app.js', args, { env: env });
worker.on('message', function() {
if (incomplete.length) {
incomplete = [];
if (grunt.option('verbose')) {
grunt.log.writeln('NodeBB restarted in ' + (Date.now() - time) + ' ms');
}
}
});
}
grunt.initConfig({
watch: {
lessUpdated: {
files: ['public/**/*.less', 'node_modules/nodebb-*/*.less', 'node_modules/nodebb-*/*/*.less', 'node_modules/nodebb-*/*/*/*.less', 'node_modules/nodebb-*/*/*/*/*.less']
},
clientUpdated: {
files: ['public/src/**/*.js', 'node_modules/nodebb-*/*.js', 'node_modules/nodebb-*/*/*.js', 'node_modules/nodebb-*/*/*/*.js', 'node_modules/nodebb-*/*/*/*/*.js', 'node_modules/templates.js/lib/templates.js']
},
serverUpdated: {
files: ['*.js', 'install/*.js', 'src/**/*.js']
},
templatesUpdated: {
files: ['src/views/**/*.tpl', 'node_modules/nodebb-*/*.tpl', 'node_modules/nodebb-*/*/*.tpl', 'node_modules/nodebb-*/*/*/*.tpl', 'node_modules/nodebb-*/*/*/*/*.tpl', 'node_modules/nodebb-*/*/*/*/*/*.tpl']
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['watch']);
env.NODE_ENV = 'development';
worker = fork('app.js', [], { env: env });
grunt.event.on('watch', update);
};

143
README.md
View File

@@ -1,68 +1,75 @@
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB)
[![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb)
[![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB)
[![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest)
**NodeBB Forum Software** is powered by Node.js and built on either a Redis or MongoDB database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
Additional functionality is enabled through the use of third-party plugins.
* [Get NodeBB](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://community.nodebb.org)
* [NodeBB Blog](http://blog.nodebb.org)
* [Documentation & Installation Instructions](http://docs.nodebb.org)
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
* [Get Plugins](http://community.nodebb.org/category/7/nodebb-plugins "NodeBB Plugins")
* [Get Themes](http://community.nodebb.org/category/10/nodebb-themes "NodeBB Themes")
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
## Screenshots
[<img src="http://i.imgur.com/FLOUuIqb.png" />](http://i.imgur.com/FLOUuIq.png)&nbsp;[<img src="http://i.imgur.com/Ud1LrfIb.png" />](http://i.imgur.com/Ud1LrfI.png)&nbsp;[<img src="http://i.imgur.com/ZC8W39ab.png" />](http://i.imgur.com/ZC8W39a.png)&nbsp;[<img src="http://i.imgur.com/o90kVPib.png" />](http://i.imgur.com/o90kVPi.png)&nbsp;[<img src="http://i.imgur.com/AaRRrU2b.png" />](http://i.imgur.com/AaRRrU2.png)&nbsp;[<img src="http://i.imgur.com/LmHtPhob.png" />](http://i.imgur.com/LmHtPho.png)&nbsp;[<img src="http://i.imgur.com/paiJPJkb.jpg" />](http://i.imgur.com/paiJPJk.jpg)&nbsp;[<img src="http://i.imgur.com/ZfavPHDb.png" />](http://i.imgur.com/ZfavPHD.png)&nbsp;[<img src="http://i.imgur.com/8OLssij.png" />](http://i.imgur.com/8OLssij.png)&nbsp;[<img src="http://i.imgur.com/JKOc0LZ.png"/>](http://i.imgur.com/JKOc0LZ.png)
Credit: [Convoe](http://www.convoe.com), [Kano](http://www.kano.me), [Manchester United Forum](http://manutdforums.com/).
## How can I follow along/contribute?
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/NodeBB/NodeBB/wiki/Version-History-%26-Roadmap)
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extention of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization.
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
## Requirements
NodeBB requires the following software to be installed:
* A version of Node.js at least 0.10 or greater
* Redis, version 2.6 or greater **or** MongoDB, version 2.6 or greater
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
## Installation
[Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html)
## Securing NodeBB
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:
1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions:
* Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only
* Use `requirepass` to secure Redis behind a password (preferably a long one)
* Familiarise yourself with [Redis Security](http://redis.io/topics/security)
2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`.
* e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
## Upgrading NodeBB
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/en/latest/upgrading/index.html)
## License
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html)
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/NodeBB/NodeBB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB)
[![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb)
[![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB)
[![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest)
**NodeBB Forum Software** is powered by Node.js and built on either a Redis or MongoDB database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
Additional functionality is enabled through the use of third-party plugins.
* [Get NodeBB](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://community.nodebb.org)
* [Documentation & Installation Instructions](http://docs.nodebb.org)
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
* [NodeBB Blog](http://blog.nodebb.org)
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
## Screenshots
[![](http://i.imgur.com/VCoOFyqb.png)](http://i.imgur.com/VCoOFyq.png)
[![](http://i.imgur.com/FLOUuIqb.png)](http://i.imgur.com/FLOUuIq.png)
[![](http://i.imgur.com/Ud1LrfIb.png)](http://i.imgur.com/Ud1LrfI.png)
[![](http://i.imgur.com/h6yZ66sb.png)](http://i.imgur.com/h6yZ66s.png)
[![](http://i.imgur.com/o90kVPib.png)](http://i.imgur.com/o90kVPi.png)
[![](http://i.imgur.com/AaRRrU2b.png)](http://i.imgur.com/AaRRrU2.png)
[![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png)
[![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg)
[![](http://i.imgur.com/8OLssij.png)](http://i.imgur.com/8OLssij.png)
[![](http://i.imgur.com/JKOc0LZ.png)](http://i.imgur.com/JKOc0LZ.png)
## How can I follow along/contribute?
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/NodeBB/NodeBB/wiki/Version-History-%26-Roadmap)
* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase.
* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extention of the base templates as well as styling via LESS or CSS. NodeBB's base theme utilizes [Bootstrap 3](http://getbootstrap.com/) but themes can choose to use a different framework altogether.
* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://www.transifex.com/projects/p/nodebb/) for internationalization.
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
## Requirements
NodeBB requires the following software to be installed:
* A version of Node.js at least 0.10 or greater
* Redis, version 2.8.9 or greater **or** MongoDB, version 2.6 or greater
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
## Installation
[Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html)
## Securing NodeBB
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:
1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions:
* Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only
* Use `requirepass` to secure Redis behind a password (preferably a long one)
* Familiarise yourself with [Redis Security](http://redis.io/topics/security)
2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`.
* e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
## Upgrading NodeBB
Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/en/latest/upgrading/index.html)
## License
NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html).
Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org.

797
app.js
View File

@@ -1,381 +1,416 @@
/*
NodeBB - A better forum platform for the modern web
https://github.com/NodeBB/NodeBB/
Copyright (C) 2013-2014 NodeBB Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
/*global require, global, process*/
var nconf = require('nconf');
nconf.argv().env();
var fs = require('fs'),
os = require('os'),
url = require('url'),
async = require('async'),
semver = require('semver'),
winston = require('winston'),
path = require('path'),
pkg = require('./package.json'),
utils = require('./public/src/utils.js');
global.env = process.env.NODE_ENV || 'production';
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
colorize: true,
timestamp: function() {
var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
},
level: global.env === 'production' ? 'info' : 'verbose'
});
if(os.platform() === 'linux') {
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
if(err || !stdout) {
winston.warn('Couldn\'t find convert. Did you install imagemagick?');
}
});
}
if (!process.send) {
// If run using `node app`, log GNU copyright info along with server info
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 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('');
}
// Alternate configuration file support
var configFile = path.join(__dirname, '/config.json'),
configExists;
if (nconf.get('config')) {
configFile = path.resolve(__dirname, nconf.get('config'));
}
configExists = fs.existsSync(configFile);
if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
start();
} else if (nconf.get('setup') || nconf.get('install') || !configExists) {
setup();
} else if (nconf.get('upgrade')) {
upgrade();
} else if (nconf.get('reset')) {
reset();
}
function loadConfig() {
nconf.file({
file: configFile
});
nconf.defaults({
base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'),
views_dir: path.join(__dirname, 'public/templates')
});
if (!nconf.get('isCluster')) {
nconf.set('isPrimary', 'true');
nconf.set('isCluster', 'false');
}
// Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
nconf.set('core_templates_path', path.join(__dirname, 'src/views'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
}
function start() {
loadConfig();
// nconf defaults, if not set in config
if (!nconf.get('upload_path')) {
nconf.set('upload_path', '/public/uploads');
}
// Parse out the relative_url and other goodies from the configured URL
var urlObject = url.parse(nconf.get('url'));
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('use_port', !!urlObject.port);
nconf.set('relative_path', relativePath);
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
nconf.set('upload_url', relativePath + '/uploads/');
if (nconf.get('isPrimary') === 'true') {
winston.info('Time: %s', (new Date()).toString());
winston.info('Initializing NodeBB v%s', pkg.version);
winston.verbose('* using configuration stored in: %s', configFile);
var host = nconf.get(nconf.get('database') + ':host'),
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
winston.verbose('* using %s store %s', nconf.get('database'), storeLocation);
winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
}
var webserver = require('./src/webserver');
require('./src/database').init(function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
var meta = require('./src/meta');
meta.configs.init(function () {
var templates = require('templates.js'),
sockets = require('./src/socket.io'),
plugins = require('./src/plugins'),
upgrade = require('./src/upgrade');
templates.setGlobal('relative_path', nconf.get('relative_path'));
upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) {
webserver.init();
sockets.init(webserver.server);
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
require('./src/notifications').init();
require('./src/user').startJobs();
}
async.waterfall([
async.apply(meta.themes.setupPaths),
async.apply(plugins.ready),
async.apply(meta.templates.compile),
async.apply(webserver.listen)
], function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
if (process.send) {
process.send({
action: 'ready'
});
}
});
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);
process.on('SIGHUP', restart);
process.on('message', function(message) {
switch(message.action) {
case 'reload':
meta.reload();
break;
case 'js-propagate':
meta.js.cache = message.cache;
meta.js.map = message.map;
meta.js.hash = message.hash;
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
break;
case 'css-propagate':
meta.css.cache = message.cache;
meta.css.acpCache = message.acpCache;
meta.css.hash = message.hash;
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
break;
}
});
process.on('uncaughtException', function(err) {
winston.error(err.stack);
console.log(err.stack);
meta.js.killMinifier();
shutdown(1);
});
} else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' ./nodebb upgrade');
process.exit();
}
});
});
});
}
function setup() {
loadConfig();
if (nconf.get('setup')) {
winston.info('NodeBB Setup Triggered via Command Line');
} else {
winston.warn('Configuration not found, starting NodeBB setup');
}
var install = require('./src/install');
winston.info('Welcome to NodeBB!');
winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
winston.info('Press enter to accept the default setting (shown in brackets).');
install.setup(function (err) {
if (err) {
winston.error('There was a problem completing NodeBB setup: ', err.message);
} else {
winston.info('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.');
}
process.exit();
});
}
function upgrade() {
loadConfig();
require('./src/database').init(function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
require('./src/meta').configs.init(function () {
require('./src/upgrade').upgrade();
});
});
}
function reset() {
loadConfig();
require('./src/database').init(function(err) {
if (err) {
winston.error(err.message);
process.exit();
}
if (nconf.get('theme')) {
resetThemes();
} else if (nconf.get('plugin')) {
resetPlugin(nconf.get('plugin'));
} else if (nconf.get('plugins')) {
resetPlugins();
} else if (nconf.get('widgets')) {
resetWidgets();
} else if (nconf.get('settings')) {
resetSettings();
} else if (nconf.get('all')) {
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
if (!err) {
winston.info('[reset] Reset complete.');
} else {
winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message);
}
process.exit();
});
} else {
winston.warn('[reset] Nothing reset.');
winston.info('Use ./nodebb reset {theme|plugins|widgets|settings|all}');
winston.info(' or');
winston.info('Use ./nodebb reset plugin="nodebb-plugin-pluginName"');
process.exit();
}
});
}
function resetSettings(callback) {
var meta = require('./src/meta');
meta.configs.set('allowLocalLogin', 1, function(err) {
winston.info('[reset] Settings reset to default');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetThemes(callback) {
var meta = require('./src/meta');
meta.themes.set({
type: 'local',
id: 'nodebb-theme-vanilla'
}, function(err) {
winston.info('[reset] Theme reset to Vanilla');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetPlugin(pluginId) {
var db = require('./src/database');
db.setRemove('plugins:active', pluginId, function(err) {
if (err) {
winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message);
} else {
winston.info('[reset] Plugin `%s` disabled', pluginId);
}
process.exit();
});
}
function resetPlugins(callback) {
var db = require('./src/database');
db.delete('plugins:active', function(err) {
winston.info('[reset] All Plugins De-activated');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetWidgets(callback) {
require('./src/widgets').reset(function(err) {
winston.info('[reset] All Widgets moved to Draft Zone');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function shutdown(code) {
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
require('./src/database').close();
winston.info('[app] Database connection closed.');
require('./src/webserver').server.close();
winston.info('[app] Web server closed to connections.');
winston.info('[app] Shutdown complete.');
process.exit(code || 0);
}
function restart() {
if (process.send) {
winston.info('[app] Restarting...');
process.send({
action: 'restart'
});
} else {
winston.error('[app] Could not restart server. Shutting down.');
shutdown(1);
}
}
/*
NodeBB - A better forum platform for the modern web
https://github.com/NodeBB/NodeBB/
Copyright (C) 2013-2014 NodeBB Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
/*global require, global, process*/
var nconf = require('nconf');
nconf.argv().env('__');
var fs = require('fs'),
os = require('os'),
url = require('url'),
async = require('async'),
semver = require('semver'),
winston = require('winston'),
colors = require('colors'),
path = require('path'),
pkg = require('./package.json'),
utils = require('./public/src/utils.js');
global.env = process.env.NODE_ENV || 'production';
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
colorize: true,
timestamp: function() {
var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
},
level: nconf.get('log-level') || (global.env === 'production' ? 'info' : 'verbose')
});
if(os.platform() === 'linux') {
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
if(err || !stdout) {
winston.warn('Couldn\'t find convert. Did you install imagemagick?');
}
});
}
// Alternate configuration file support
var configFile = path.join(__dirname, '/config.json'),
configExists;
if (nconf.get('config')) {
configFile = path.resolve(__dirname, nconf.get('config'));
}
configExists = fs.existsSync(configFile);
if (!nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
start();
} else if (nconf.get('setup') || nconf.get('install')) {
setup();
} else if (!configExists) {
require('./install/web').install(nconf.get('port'));
} else if (nconf.get('upgrade')) {
upgrade();
} else if (nconf.get('reset')) {
reset();
}
function loadConfig() {
nconf.file({
file: configFile
});
nconf.defaults({
base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'),
views_dir: path.join(__dirname, 'public/templates'),
version: pkg.version
});
if (!nconf.get('isCluster')) {
nconf.set('isPrimary', 'true');
nconf.set('isCluster', 'false');
}
// Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
nconf.set('core_templates_path', path.join(__dirname, 'src/views'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
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-2014 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('');
}
}
function start() {
loadConfig();
var db = require('./src/database');
// nconf defaults, if not set in config
if (!nconf.get('upload_path')) {
nconf.set('upload_path', '/public/uploads');
}
// Parse out the relative_url and other goodies from the configured URL
var urlObject = url.parse(nconf.get('url'));
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('base_url', urlObject.protocol + '//' + urlObject.host);
nconf.set('use_port', !!urlObject.port);
nconf.set('relative_path', relativePath);
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
nconf.set('upload_url', '/uploads/');
if (nconf.get('isPrimary') === 'true') {
winston.info('Time: %s', (new Date()).toString());
winston.info('Initializing NodeBB v%s', nconf.get('version'));
winston.verbose('* using configuration stored in: %s', configFile);
var host = nconf.get(nconf.get('database') + ':host'),
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
winston.verbose('* using %s store %s', nconf.get('database'), storeLocation);
winston.verbose('* using themes stored in: %s', nconf.get('themes_path'));
}
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);
process.on('SIGHUP', restart);
process.on('message', function(message) {
if (typeof message !== 'object') {
return;
}
var meta = require('./src/meta');
var emitter = require('./src/emitter');
switch (message.action) {
case 'reload':
meta.reload();
break;
case 'js-propagate':
meta.js.cache = message.cache;
meta.js.map = message.map;
meta.js.hash = message.hash;
emitter.emit('meta:js.compiled');
winston.verbose('[cluster] Client-side javascript and mapping propagated to worker %s', process.pid);
break;
case 'css-propagate':
meta.css.cache = message.cache;
meta.css.acpCache = message.acpCache;
meta.css.hash = message.hash;
emitter.emit('meta:css.compiled');
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
break;
case 'templates:compiled':
emitter.emit('templates:compiled');
break;
}
});
process.on('uncaughtException', function(err) {
winston.error(err.stack);
console.log(err.stack);
require('./src/meta').js.killMinifier();
shutdown(1);
});
async.waterfall([
async.apply(db.init),
async.apply(db.checkCompatibility),
function(next) {
require('./src/meta').configs.init(next);
},
function(next) {
require('./src/meta').dependencies.check(next);
},
function(next) {
require('./src/upgrade').check(next);
},
function(next) {
var webserver = require('./src/webserver');
require('./src/socket.io').init(webserver.server);
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
require('./src/notifications').init();
require('./src/user').startJobs();
}
webserver.listen();
}
], function(err) {
if (err) {
switch(err.message) {
case 'schema-out-of-date':
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' ./nodebb upgrade');
break;
case 'dependencies-out-of-date':
winston.warn('One or more of NodeBB\'s dependent packages are out-of-date. Please run the following command to update them:');
winston.warn(' ./nodebb upgrade');
break;
default:
if (err.stacktrace !== false) {
winston.error(err.stack);
} else {
winston.error(err.message);
}
break;
}
// Either way, bad stuff happened. Abort start.
process.exit();
}
});
}
function setup() {
loadConfig();
winston.info('NodeBB Setup Triggered via Command Line');
var install = require('./src/install');
process.stdout.write('\nWelcome to NodeBB!\n');
process.stdout.write('\nThis looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.\n');
process.stdout.write('Press enter to accept the default setting (shown in brackets).\n');
install.setup(function (err, data) {
var separator = ' ';
if (process.stdout.columns > 10) {
for(var x=0,cols=process.stdout.columns-10;x<cols;x++) {
separator += '=';
}
}
process.stdout.write('\n' + separator + '\n\n');
if (err) {
winston.error('There was a problem completing NodeBB setup: ', err.message);
} else {
if (data.hasOwnProperty('password')) {
process.stdout.write('An administrative user was automatically created for you:\n');
process.stdout.write(' Username: ' + data.username + '\n');
process.stdout.write(' Password: ' + data.password + '\n');
process.stdout.write('\n');
}
process.stdout.write('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.\n');
// If I am a child process, notify the parent of the returned data before exiting (useful for notifying
// hosts of auto-generated username/password during headless setups)
if (process.send) {
process.send(data);
}
}
process.exit();
});
}
function upgrade() {
loadConfig();
require('./src/database').init(function(err) {
if (err) {
winston.error(err.stack);
process.exit();
}
require('./src/meta').configs.init(function () {
require('./src/upgrade').upgrade();
});
});
}
function reset() {
loadConfig();
require('./src/database').init(function(err) {
if (err) {
winston.error(err.message);
process.exit();
}
if (nconf.get('t')) {
resetThemes();
} else if (nconf.get('p')) {
if (nconf.get('p') === true) {
resetPlugins();
} else {
resetPlugin(nconf.get('p'));
}
} else if (nconf.get('w')) {
resetWidgets();
} else if (nconf.get('s')) {
resetSettings();
} else if (nconf.get('a')) {
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
if (!err) {
winston.info('[reset] Reset complete.');
} else {
winston.error('[reset] Errors were encountered while resetting your forum settings: %s', err.message);
}
process.exit();
});
} else {
process.stdout.write('\nNodeBB Reset\n'.bold);
process.stdout.write('No arguments passed in, so nothing was reset.\n\n'.yellow);
process.stdout.write('Use ./nodebb reset ' + '{-t|-p|-w|-s|-a}\n'.red);
process.stdout.write(' -t\tthemes\n');
process.stdout.write(' -p\tplugins\n');
process.stdout.write(' -w\twidgets\n');
process.stdout.write(' -s\tsettings\n');
process.stdout.write(' -a\tall of the above\n');
process.stdout.write('\nPlugin reset flag (-p) can take a single argument\n');
process.stdout.write(' e.g. ./nodebb reset -p nodebb-plugin-mentions\n');
process.exit();
}
});
}
function resetSettings(callback) {
var meta = require('./src/meta');
meta.configs.set('allowLocalLogin', 1, function(err) {
winston.info('[reset] Settings reset to default');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetThemes(callback) {
var meta = require('./src/meta');
meta.themes.set({
type: 'local',
id: 'nodebb-theme-vanilla'
}, function(err) {
winston.info('[reset] Theme reset to Vanilla');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetPlugin(pluginId) {
var db = require('./src/database');
db.sortedSetRemove('plugins:active', pluginId, function(err) {
if (err) {
winston.error('[reset] Could not disable plugin: %s encountered error %s', pluginId, err.message);
} else {
winston.info('[reset] Plugin `%s` disabled', pluginId);
}
process.exit();
});
}
function resetPlugins(callback) {
var db = require('./src/database');
db.delete('plugins:active', function(err) {
winston.info('[reset] All Plugins De-activated');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetWidgets(callback) {
require('./src/widgets').reset(function(err) {
winston.info('[reset] All Widgets moved to Draft Zone');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function shutdown(code) {
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
require('./src/database').close();
winston.info('[app] Database connection closed.');
require('./src/webserver').server.close();
winston.info('[app] Web server closed to connections.');
winston.info('[app] Shutdown complete.');
process.exit(code || 0);
}
function restart() {
if (process.send) {
winston.info('[app] Restarting...');
process.send({
action: 'restart'
});
} else {
winston.error('[app] Could not restart server. Shutting down.');
shutdown(1);
}
}

View File

@@ -9,7 +9,7 @@ process.on('message', function(msg) {
if (msg.type === 'hash') {
hashPassword(msg.password, msg.rounds);
} else if (msg.type === 'compare') {
compare(msg.password, msg.hash);
bcrypt.compare(msg.password, msg.hash, done);
}
});
@@ -21,23 +21,14 @@ function hashPassword(password, rounds) {
function(salt, next) {
bcrypt.hash(password, salt, next);
}
], function(err, hash) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: hash});
process.disconnect();
});
], done);
}
function compare(password, hash) {
bcrypt.compare(password, hash, function(err, res) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: res});
process.disconnect();
});
function done(err, result) {
if (err) {
process.send({err: err.message});
return process.disconnect();
}
process.send({result: result});
process.disconnect();
}

View File

@@ -1,34 +1,34 @@
[
{
"name": "Announcements",
"description": "Announcements regarding our community",
"bgColor": "#fda34b",
"color": "#fff",
"icon" : "fa-bullhorn",
"order": 1
},
{
"name": "General Discussion",
"description": "A place to talk about whateeeever you want",
"bgColor": "#59b3d0",
"color": "#fff",
"icon" : "fa-comments-o",
"order": 2
},
{
"name": "Blogs",
"description": "Blog posts from individual members",
"bgColor": "#86ba4b",
"color": "#fff",
"icon" : "fa-newspaper-o",
"order": 4
},
{
"name": "Comments & Feedback",
"description": "Got a question? Ask away!",
"bgColor": "#e95c5a",
"color": "#fff",
"icon" : "fa-question",
"order": 3
}
[
{
"name": "Announcements",
"description": "Announcements regarding our community",
"bgColor": "#fda34b",
"color": "#fff",
"icon" : "fa-bullhorn",
"order": 1
},
{
"name": "General Discussion",
"description": "A place to talk about whatever you want",
"bgColor": "#59b3d0",
"color": "#fff",
"icon" : "fa-comments-o",
"order": 2
},
{
"name": "Blogs",
"description": "Blog posts from individual members",
"bgColor": "#86ba4b",
"color": "#fff",
"icon" : "fa-newspaper-o",
"order": 4
},
{
"name": "Comments & Feedback",
"description": "Got a question? Ask away!",
"bgColor": "#e95c5a",
"color": "#fff",
"icon" : "fa-question",
"order": 3
}
]

View File

@@ -1,98 +1,31 @@
[
{
"field": "title",
"value": "NodeBB"
},
{
"field": "showSiteTitle",
"value": "1"
},
{
"field": "postDelay",
"value": 10
},
{
"field": "initialPostDelay",
"value": 10
},
{
"field": "newbiePostDelay",
"value": 120
},
{
"field": "newbiePostDelayThreshold",
"value": 3
},
{
"field": "minimumPostLength",
"value": 8
},
{
"field": "maximumPostLength",
"value": 32767
},
{
"field": "allowGuestSearching",
"value": 0
},
{
"field": "allowTopicsThumbnail",
"value": 0
},
{
"field": "allowRegistration",
"value": 1
},
{
"field": "allowLocalLogin",
"value": 1
},
{
"field": "allowAccountDelete",
"value": 1
},
{
"field": "allowFileUploads",
"value": 0
},
{
"field": "maximumFileSize",
"value": 2048
},
{
"field": "minimumTitleLength",
"value": 3
},
{
"field": "maximumTitleLength",
"value": 255
},
{
"field": "minimumUsernameLength",
"value": 2
},
{
"field": "maximumUsernameLength",
"value": 16
},
{
"field": "minimumPasswordLength",
"value": 6
},
{
"field": "maximumSignatureLength",
"value": 255
},
{
"field": "maximumProfileImageSize",
"value": 256
},
{
"field": "profileImageDimension",
"value": 128
},
{
"field": "requireEmailConfirmation",
"value": 0
}
]
{
"title": "NodeBB",
"showSiteTitle": 1,
"postDelay": 10,
"initialPostDelay": 10,
"newbiePostDelay": 120,
"newbiePostDelayThreshold": 3,
"minimumPostLength": 8,
"maximumPostLength": 32767,
"minimumTagsPerTopic": 0,
"maximumTagsPerTopic": 5,
"allowGuestSearching": 0,
"allowTopicsThumbnail": 0,
"registrationType": "normal",
"allowLocalLogin": 1,
"allowAccountDelete": 1,
"allowFileUploads": 0,
"maximumFileSize": 2048,
"minimumTitleLength": 3,
"maximumTitleLength": 255,
"minimumUsernameLength": 2,
"maximumUsernameLength": 16,
"minimumPasswordLength": 6,
"maximumSignatureLength": 255,
"maximumAboutMeLength": 1000,
"maximumProfileImageSize": 256,
"profileImageDimension": 128,
"requireEmailConfirmation": 0,
"profile:allowProfileImageUploads": 1,
"teaserPost": "last"
}

10
install/data/footer.json Normal file
View File

@@ -0,0 +1,10 @@
[
{
"widget": "html",
"data" : {
"html": "<footer id=\"footer\" class=\"container footer\">\r\n\t<div class=\"copyright\">\r\n\t\tCopyright © 2014 <a target=\"_blank\" href=\"https://nodebb.org\">NodeBB Forums</a> | <a target=\"_blank\" href=\"//github.com/NodeBB/NodeBB/graphs/contributors\">Contributors</a>\r\n\t</div>\r\n</footer>",
"title":"",
"container":""
}
}
]

View File

@@ -0,0 +1,87 @@
[
{
"route": "/categories",
"title": "\\[\\[global:header.categories\\]\\]",
"enabled": true,
"iconClass": "fa-list",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.categories\\]\\]"
},
{
"id": "unread-count",
"route": "/unread",
"title": "\\[\\[global:header.unread\\]\\]",
"enabled": true,
"iconClass": "fa-inbox",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.unread\\]\\]",
"properties": {
"loggedIn": true
}
},
{
"route": "/recent",
"title": "\\[\\[global:header.recent\\]\\]",
"enabled": true,
"iconClass": "fa-clock-o",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.recent\\]\\]"
},
{
"route": "/tags",
"title": "\\[\\[global:header.tags\\]\\]",
"enabled": true,
"iconClass": "fa-tags",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.tags\\]\\]"
},
{
"route": "/popular",
"title": "\\[\\[global:header.popular\\]\\]",
"enabled": true,
"iconClass": "fa-fire",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.popular\\]\\]"
},
{
"route": "/users",
"title": "\\[\\[global:header.users\\]\\]",
"enabled": true,
"iconClass": "fa-user",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.users\\]\\]"
},
{
"route": "/groups",
"title": "\\[\\[global:header.groups\\]\\]",
"enabled": true,
"iconClass": "fa-group",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.groups\\]\\]"
},
{
"route": "/admin",
"title": "\\[\\[global:header.admin\\]\\]",
"enabled": true,
"iconClass": "fa-cogs",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.admin\\]\\]",
"properties": {
"targetBlank": false,
"adminOnly": true
}
},
{
"route": "/search",
"title": "\\[\\[global:header.search\\]\\]",
"enabled": true,
"iconClass": "fa-search",
"textClass": "visible-xs-inline",
"text": "\\[\\[global:header.search\\]\\]",
"properties": {
"installed": {
"search": true
}
}
}
]

10
install/data/welcome.md Normal file
View File

@@ -0,0 +1,10 @@
# Welcome to your brand new NodeBB forum!
This is what a topic and post looks like. As an administator, you can edit the post\'s title and content.
To customise your forum, go to the [Administrator Control Panel](../../admin). You can modify all aspects of your forum there, including installation of third-party plugins.
## Additional Resources
* [NodeBB Documentation](https://docs.nodebb.org)
* [Community Support Forum](https://community.nodebb.org)
* [Project repository](https://github.com/nodebb/nodebb)

148
install/web.js Normal file
View File

@@ -0,0 +1,148 @@
"use strict";
var winston = require('winston'),
express = require('express'),
bodyParser = require('body-parser'),
fs = require('fs'),
path = require('path'),
less = require('less'),
async = require('async'),
uglify = require('uglify-js'),
nconf = require('nconf'),
app = express(),
server;
var web = {},
scripts = [
'public/vendor/xregexp/xregexp.js',
'public/vendor/xregexp/unicode/unicode-base.js',
'public/src/utils.js',
'public/src/installer/install.js'
];
web.install = function(port) {
port = port || 4567;
winston.info('Launching web installer on port', port);
app.use(express.static('public', {}));
app.engine('tpl', require('templates.js').__express);
app.set('view engine', 'tpl');
app.set('views', path.join(__dirname, '../src/views'));
app.use(bodyParser.urlencoded({
extended: true
}));
async.parallel([compileLess, compileJS], function() {
setupRoutes();
launchExpress(port);
});
};
function launchExpress(port) {
server = app.listen(port, function() {
winston.info('Web installer listening on http://%s:%s', '0.0.0.0', port);
});
}
function setupRoutes() {
app.get('/', welcome);
app.post('/', install);
app.post('/launch', launch);
}
function welcome(req, res) {
var dbs = ['redis', 'mongo'],
databases = [];
dbs.forEach(function(el) {
databases.push({
name: el,
questions: require('../src/database/' + el).questions
});
});
res.render('install/index', {
databases: databases,
skipDatabaseSetup: !!nconf.get('database'),
error: res.locals.error ? true : false,
success: res.locals.success ? true : false,
values: req.body
});
}
function install(req, res) {
for (var i in req.body) {
if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) {
process.env[i.replace(':', '__')] = req.body[i];
}
}
var child = require('child_process').fork('app', ['--setup'], {
env: process.env
});
child.on('close', function(data) {
if (data === 0) {
res.locals.success = true;
} else {
res.locals.error = true;
}
welcome(req, res);
});
}
function launch(req, res) {
var pidFilePath = __dirname + '../pidfile';
res.json({});
server.close();
var child = require('child_process').spawn('node', ['loader.js'], {
detached: true,
stdio: ['ignore', 'ignore', 'ignore']
});
process.stdout.write('\nStarting NodeBB\n');
process.stdout.write(' "./nodebb stop" to stop the NodeBB server\n');
process.stdout.write(' "./nodebb log" to view server output\n');
process.stdout.write(' "./nodebb restart" to restart NodeBB\n');
child.unref();
process.exit(0);
}
function compileLess(callback) {
if ((nconf.get('from-file') || '').indexOf('less') !== -1) {
winston.info('LESS compilation skipped');
return callback(false);
}
fs.readFile(path.join(__dirname, '../public/less/install.less'), function(err, style) {
less.render(style.toString(), function(err, css) {
if(err) {
return winston.error('Unable to compile LESS: ', err);
}
fs.writeFile(path.join(__dirname, '../public/stylesheet.css'), css.css, callback);
});
});
}
function compileJS(callback) {
if ((nconf.get('from-file') || '').indexOf('js') !== -1) {
winston.info('Client-side JS compilation skipped');
return callback(false);
}
var scriptPath = path.join(__dirname, '..'),
result = uglify.minify(scripts.map(function(script) {
return path.join(scriptPath, script);
}));
fs.writeFile(path.join(__dirname, '../public/nodebb.min.js'), result.code, callback);
}
module.exports = web;

View File

@@ -9,11 +9,15 @@ var nconf = require('nconf'),
async = require('async'),
logrotate = require('logrotate-stream'),
pkg = require('./package.json'),
pkg = require('./package.json');
pidFilePath = __dirname + '/pidfile',
nconf.argv().env().file({
file: path.join(__dirname, '/config.json')
});
var pidFilePath = __dirname + '/pidfile',
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }),
silent = process.env.NODE_ENV !== 'development',
silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false,
numProcs,
workers = [],
@@ -82,7 +86,7 @@ Loader.addWorkerEvents = function(worker) {
if (message && typeof message === 'object' && message.action) {
switch (message.action) {
case 'ready':
if (Loader.js.cache) {
if (Loader.js.cache && !worker.isPrimary) {
worker.send({
action: 'js-propagate',
cache: Loader.js.cache,
@@ -91,7 +95,7 @@ Loader.addWorkerEvents = function(worker) {
});
}
if (Loader.css.cache) {
if (Loader.css.cache && !worker.isPrimary) {
worker.send({
action: 'css-propagate',
cache: Loader.css.cache,
@@ -99,6 +103,8 @@ Loader.addWorkerEvents = function(worker) {
hash: Loader.css.hash
});
}
break;
case 'restart':
console.log('[cluster] Restarting...');
@@ -132,6 +138,11 @@ Loader.addWorkerEvents = function(worker) {
hash: message.hash
}, worker.pid);
break;
case 'templates:compiled':
Loader.notifyWorkers({
action: 'templates:compiled',
}, worker.pid);
break;
}
}
});
@@ -181,7 +192,12 @@ function forkWorker(index, isPrimary) {
}
function getPorts() {
var urlObject = url.parse(nconf.get('url'));
var _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;
if (!Array.isArray(port)) {
port = [port];
@@ -230,35 +246,38 @@ Loader.notifyWorkers = function(msg, worker_pid) {
});
};
nconf.argv().file({
file: path.join(__dirname, '/config.json')
});
fs.open(path.join(__dirname, 'config.json'), 'r', function(err) {
if (!err) {
if (nconf.get('daemon') !== 'false' && nconf.get('daemon') !== false) {
if (fs.existsSync(pidFilePath)) {
try {
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
process.kill(pid, 0);
process.exit();
} catch (e) {
fs.unlinkSync(pidFilePath);
}
}
if (nconf.get('daemon') !== false) {
if (fs.existsSync(pidFilePath)) {
try {
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
process.kill(pid, 0);
process.exit();
} catch (e) {
fs.unlinkSync(pidFilePath);
require('daemon')({
stdout: process.stdout,
stderr: process.stderr
});
fs.writeFile(__dirname + '/pidfile', process.pid);
}
async.series([
Loader.init,
Loader.displayStartupMessages,
Loader.start
], function(err) {
if (err) {
console.log('[loader] Error during startup: ' + err.message);
}
});
} else {
// No config detected, kickstart web installer
var child = require('child_process').fork('app');
}
require('daemon')({
stdout: process.stdout,
stderr: process.stderr
});
fs.writeFile(__dirname + '/pidfile', process.pid);
}
async.series([
Loader.init,
Loader.displayStartupMessages,
Loader.start
], function(err) {
if (err) {
console.log('[loader] Error during startup: ' + err.message);
}
});
});

View File

@@ -6,6 +6,7 @@ var uglifyjs = require('uglify-js'),
fs = require('fs'),
path = require('path'),
crypto = require('crypto'),
utils = require('./public/src/utils'),
Minifier = {
js: {}
@@ -14,7 +15,7 @@ var uglifyjs = require('uglify-js'),
/* Javascript */
Minifier.js.minify = function (scripts, minify, callback) {
scripts = scripts.filter(function(file) {
return fs.existsSync(file);
return fs.existsSync(file) && file.endsWith('.js');
});
if (minify) {
@@ -29,9 +30,10 @@ Minifier.js.minify = function (scripts, minify, callback) {
process.on('message', function(payload) {
switch(payload.action) {
case 'js':
Minifier.js.minify(payload.scripts, payload.minify, function(minified) {
Minifier.js.minify(payload.scripts, payload.minify, function(minified/*, sourceMap*/) {
process.send({
type: 'end',
// sourceMap: sourceMap,
minified: minified
});
});
@@ -40,8 +42,11 @@ process.on('message', function(payload) {
});
function minifyScripts(scripts, callback) {
// The portions of code involving the source map are commented out as they're broken in UglifyJS2
// Follow along here: https://github.com/mishoo/UglifyJS2/issues/700
try {
var minified = uglifyjs.minify(scripts, {
// outSourceMap: "nodebb.min.js.map",
compress: false
}),
hasher = crypto.createHash('md5'),
@@ -55,7 +60,7 @@ function minifyScripts(scripts, callback) {
payload: hash.slice(0, 8)
});
callback(minified.code);
callback(minified.code/*, minified.map*/);
} catch(err) {
process.send({
type: 'error',

296
nodebb
View File

@@ -1,136 +1,168 @@
#!/bin/bash
#!/usr/bin/env node
# $0 script path
# $1 action
# $2 subaction
var colors = require('colors'),
cproc = require('child_process'),
argv = require('minimist')(process.argv.slice(2)),
fs = require('fs'),
async = require('async'),
touch = require('touch'),
npm = require('npm');
node="$(which nodejs 2>/dev/null)";
if [ $? -gt 0 ];
then node="$(which node)";
fi
var getRunningPid = function(callback) {
fs.readFile(__dirname + '/pidfile', {
encoding: 'utf-8'
}, function(err, pid) {
if (err) {
return callback(err);
}
function pidExists() {
if [ -e "pidfile" ];
then
if ps -p $(cat pidfile) > /dev/null
then return 1;
else
rm ./pidfile;
return 0;
fi
else
return 0;
fi
try {
process.kill(parseInt(pid, 10), 0);
callback(null, parseInt(pid, 10));
} catch(e) {
callback(e);
}
});
};
switch(process.argv[2]) {
case 'status':
getRunningPid(function(err, pid) {
if (!err) {
process.stdout.write('\nNodeBB Running '.bold + '(pid '.cyan + pid.toString().cyan + ')\n'.cyan);
process.stdout.write('\t"' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write('\t"' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
} else {
process.stdout.write('\nNodeBB is not running\n'.bold);
process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n'.reset);
}
})
break;
case 'start':
process.stdout.write('\nStarting NodeBB\n'.bold);
process.stdout.write(' "' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write(' "' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write(' "' + './nodebb restart'.yellow + '" to restart NodeBB\n\n'.reset);
// Spawn a new NodeBB process
cproc.fork(__dirname + '/loader.js', {
env: process.env
});
break;
case 'stop':
getRunningPid(function(err, pid) {
if (!err) {
process.kill(pid, 'SIGTERM');
process.stdout.write('Stopping NodeBB. Goodbye!\n')
} else {
process.stdout.write('NodeBB is already stopped.\n');
}
});
break;
case 'restart':
getRunningPid(function(err, pid) {
if (!err) {
process.kill(pid, 'SIGHUP');
} else {
process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.');
}
});
break;
case 'reload':
getRunningPid(function(err, pid) {
if (!err) {
process.kill(pid, 'SIGUSR2');
} else {
process.stdout.write('NodeBB could not be reloaded, as a running instance could not be found.');
}
});
break;
case 'dev':
process.env.NODE_ENV = 'development';
cproc.fork(__dirname + '/loader.js', ['--no-daemon', '--no-silent'], {
env: process.env
});
break;
case 'log':
process.stdout.write('\nType '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit'
});
break;
case 'setup':
cproc.fork('app.js', ['--setup'], {
cwd: __dirname,
silent: false
});
break;
case 'reset':
var args = process.argv.slice(0);
args.unshift('--reset');
cproc.fork('app.js', args, {
cwd: __dirname,
silent: false
});
break;
case 'upgrade':
async.series([
function(next) {
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date\n'.yellow);
npm.load({
loglevel: 'silent'
}, function() {
npm.commands.install(next);
});
},
function(next) {
process.stdout.write('2. '.bold + 'Updating NodeBB data store schema\n'.yellow);
var upgradeProc = cproc.fork('app.js', ['--upgrade'], {
cwd: __dirname,
silent: false
});
upgradeProc.on('close', next)
},
function(next) {
process.stdout.write('3. '.bold + 'Storing upgrade date in "package.json"\n'.yellow);
touch(__dirname + '/package.json', {}, next);
}
], function(err) {
if (err) {
process.stdout.write('\nError'.red + ': ' + err.message + '\n');
} else {
var message = 'NodeBB Upgrade Complete!',
spaces = new Array(Math.floor(process.stdout.columns / 2) - (message.length / 2) + 1).join(' ');
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
}
});
break;
default:
process.stdout.write('\nWelcome to NodeBB\n\n'.bold);
process.stdout.write('Usage: ./nodebb {start|stop|reload|restart|log|setup|reset|upgrade|dev}\n\n');
process.stdout.write('\t' + 'start'.yellow + '\tStart the NodeBB server\n');
process.stdout.write('\t' + 'stop'.yellow + '\tStops the NodeBB server\n');
process.stdout.write('\t' + 'reload'.yellow + '\tRestarts NodeBB\n');
process.stdout.write('\t' + 'restart'.yellow + '\tRestarts NodeBB\n');
process.stdout.write('\t' + 'log'.yellow + '\tOpens the logging interface (useful for debugging)\n');
process.stdout.write('\t' + 'setup'.yellow + '\tRuns the NodeBB setup script\n');
process.stdout.write('\t' + 'reset'.yellow + '\tDisables all plugins, restores the default theme.\n');
process.stdout.write('\t' + 'upgrade'.yellow + '\tRun NodeBB upgrade scripts, ensure packages are up-to-date\n');
process.stdout.write('\t' + 'dev'.yellow + '\tStart NodeBB in interactive development mode\n');
process.stdout.write('\t' + 'watch'.yellow + '\tStart NodeBB in development mode and watch for changes\n');
process.stdout.write('\n'.reset);
break;
}
case "$1" in
start)
echo "Starting NodeBB";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
# Start the loader daemon
"$node" loader "$@"
;;
stop)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB is already stopped.";
else
echo "Stopping NodeBB. Goodbye!";
kill $(cat pidfile);
fi
;;
restart)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB could not be restarted, as a running instance could not be found.";
else
echo "Restarting NodeBB.";
kill -1 $(cat pidfile);
fi
;;
reload)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB could not be reloaded, as a running instance could not be found.";
else
echo "Reloading NodeBB.";
kill -12 $(cat pidfile);
fi
;;
status)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB is not running";
echo " \"./nodebb start\" to launch the NodeBB server";
else
echo "NodeBB Running (pid $(cat pidfile))";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
echo " \"./nodebb restart\" to restart NodeBB";
fi
;;
log)
clear;
tail -F ./logs/output.log;
;;
upgrade)
npm install
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm install
# ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update
npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
"$node" app --upgrade
touch package.json
;;
setup)
"$node" app --setup "$@"
;;
reset)
"$node" app --reset --$2
;;
dev)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
NODE_ENV=development "$node" loader --no-daemon "$@"
;;
watch)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
NODE_ENV=development supervisor -q --ignore public/templates,public/nodebb.min.js,public/nodebb.min.js.map --extensions 'node|js|tpl|less' -- app "$@"
;;
*)
echo "Welcome to NodeBB"
echo $"Usage: $0 {start|stop|reload|restart|log|setup|reset|upgrade|dev|watch}"
echo ''
column -s ' ' -t <<< '
start Start the NodeBB server
stop Stops the NodeBB server
reload Restarts NodeBB
restart Restarts NodeBB
log Opens the logging interface (useful for debugging)
setup Runs the NodeBB setup script
reset Disables all plugins, restores the default theme.
upgrade Run NodeBB upgrade scripts, ensure packages are up-to-date
dev Start NodeBB in interactive development mode
watch Start NodeBB in development mode and watch for changes
'
exit 1
esac

3532
npm-shrinkwrap.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
{
"name": "nodebb",
"license": "GPLv3 or later",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "0.6.1-dev",
"version": "0.7.2",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -10,14 +10,14 @@
},
"main": "app.js",
"scripts": {
"start": "./nodebb start",
"stop": "./nodebb stop",
"start": "node loader.js",
"test": "mocha ./tests -t 10000"
},
"dependencies": {
"async": "~0.9.0",
"bcryptjs": "~2.1.0",
"body-parser": "^1.9.0",
"colors": "^1.1.0",
"compression": "^1.1.0",
"connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1",
@@ -28,46 +28,58 @@
"daemon": "~1.1.0",
"express": "^4.9.5",
"express-session": "^1.8.2",
"gm": "1.17.0",
"gravatar": "^1.1.0",
"heapdump": "^0.3.0",
"less": "^2.0.0",
"logrotate-stream": "^0.2.3",
"lru-cache": "^2.6.1",
"lwip": "0.0.7",
"mime": "^1.3.4",
"minimist": "^1.1.1",
"mkdirp": "~0.5.0",
"mmmagic": "^0.3.13",
"morgan": "^1.3.2",
"nconf": "~0.7.1",
"nodebb-plugin-dbsearch": "^0.1.0",
"nodebb-plugin-markdown": "^0.8.0",
"nodebb-plugin-mentions": "^0.9.0",
"nodebb-plugin-soundpack-default": "~0.1.1",
"nodebb-plugin-composer-default": "^1.0.7",
"nodebb-plugin-dbsearch": "^0.2.12",
"nodebb-plugin-emoji-extended": "^0.4.8",
"nodebb-plugin-markdown": "^4.0.0",
"nodebb-plugin-mentions": "^0.11.7",
"nodebb-plugin-soundpack-default": "^0.1.1",
"nodebb-plugin-spam-be-gone": "^0.4.0",
"nodebb-theme-lavender": "^0.2.0",
"nodebb-theme-vanilla": "^0.2.0",
"nodebb-widget-essentials": "~0.2.0",
"nodebb-rewards-essentials": "^0.0.1",
"nodebb-theme-lavender": "^1.0.48",
"nodebb-theme-persona": "^1.0.20",
"nodebb-theme-vanilla": "^2.0.16",
"nodebb-widget-essentials": "^1.0.2",
"npm": "^2.1.4",
"passport": "^0.2.1",
"passport-local": "1.0.0",
"prompt": "^0.2.14",
"request": "^2.44.0",
"rimraf": "~2.2.6",
"rimraf": "~2.3.2",
"rss": "^1.0.0",
"semver": "^4.0.3",
"semver": "^4.3.3",
"serve-favicon": "^2.1.5",
"sitemap": "^0.7.4",
"sitemap": "^0.8.1",
"socket.io": "^1.2.1",
"socket.io-client": "^1.2.1",
"socket.io-redis": "^0.1.3",
"socketio-wildcard": "~0.1.1",
"string": "^3.0.0",
"templates.js": "^0.1.15",
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
"underscore": "~1.7.0",
"validator": "~3.28.0",
"templates.js": "^0.2.6",
"touch": "0.0.3",
"uglify-js": "^2.4.23",
"underscore": "~1.8.3",
"underscore.deep": "^0.5.1",
"validator": "^3.30.0",
"winston": "^0.9.0",
"xregexp": "~2.0.0"
},
"devDependencies": {
"mocha": "~1.13.0"
"mocha": "~1.13.0",
"grunt": "~0.4.5",
"grunt-contrib-watch": "^0.6.1"
},
"bugs": {
"url": "https://github.com/NodeBB/NodeBB/issues"
@@ -78,17 +90,17 @@
"maintainers": [
{
"name": "Andrew Rodrigues",
"email": "andrew@designcreateplay.com",
"email": "andrew@nodebb.org",
"url": "https://github.com/psychobunny"
},
{
"name": "Julian Lam",
"email": "julian@designcreateplay.com",
"email": "julian@nodebb.org",
"url": "https://github.com/julianlam"
},
{
"name": "Barış Soner Uşaklı",
"email": "baris@designcreateplay.com",
"email": "baris@nodebb.org",
"url": "https://github.com/barisusakli"
}
]

View File

@@ -1,8 +1,12 @@
{
"new_topic_button": "موضوع جديد",
"guest-login-post": "يجب عليك تسجيل الدخول للرد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />",
"browsing": "تصفح",
"no_replies": م يرد أحد",
"no_replies": ا توجد ردود.",
"share_this_category": "انشر هذه الفئة",
"ignore": "تجاهل"
"watch": "متابعة",
"ignore": "تجاهل",
"watch.message": "أنت اﻷن متابع لتحديثات هذه الفئة",
"ignore.message": "أنت اﻷن تتجاهل تحديثات هذه الفئة"
}

View File

@@ -1,14 +1,21 @@
{
"password-reset-requested": "تم طلب إعادة تعيين كلمة السر - %1!",
"password-reset-requested": "تم طلب إعادة تعيين كلمة المرور - %1!",
"welcome-to": "مرحبًا بك في %1",
"invite": "دعوة من %1",
"greeting_no_name": "مرحبًا",
"greeting_with_name": "مرحبًا بك يا %1",
"welcome.text1": "شكرًا على تسجيلك في %1!",
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي تسجلت به.",
"welcome.text2": "لتفعيل حسابك، نحتاج إلى التأكد من صحة عنوان البريد الإلكتروني الذي سجلت به.",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "انقر هنا لتفعيل عنوان بريدك الإلكتروني",
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة السرالخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة السر، المرجو تتبع هذا الرابط.",
"invitation.text1": "%1 قام بدعوتك للانضمام لـ %2",
"invitation.ctr": "إضغط هنا لإنشاء حسابك",
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة المرور الخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة المرور، الرجاء تتبع هذا الرابط.",
"reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.",
"reset.notify.subject": "تم تغيير كلمة المرور بنجاح",
"reset.notify.text1": "نحيطك علما أن كلمة مرورك قد تم تغييرها في %1",
"reset.notify.text2": "إن لم يكن لديك علم بهذا، المرجو إشعار مدبر النظام بأسرع مايمكن.",
"digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:",
"digest.latest_topics": "آخر المستجدات من %1",
"digest.cta": "انقر هنا لمشاهدة %1",
@@ -17,8 +24,8 @@
"notif.chat.subject": "هناك محادثة جديدة من %1",
"notif.chat.cta": "انقر هنا لمتابعة المحادثة",
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.",
"notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"notif.post.cta": "انقر هنا لقراءة الموضوع بأكمله",
"notif.post.unsub.info": "تم إشعارك بهذه المشاركة بناءً على الخيارات التي سبق وأن حددتها.",
"test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.",
"unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
"closing": "شكرًا لك!"

View File

@@ -1,8 +1,8 @@
{
"invalid-data": "بيانات غير صالحة",
"not-logged-in": "لم تقم بتسجيل الدخول",
"account-locked": "تم إقفال حسابكم مؤقتًا.",
"search-requires-login": "البحث في المنتدى يستلزم توفرك على حساب! المرجو تسجيل دخولك أو إنشاء حساب!",
"account-locked": "تم حظر حسابك مؤقتًا.",
"search-requires-login": "البحث في المنتدى يتطلب حساب - الرجاء تسجيل الدخول أو التسجيل",
"invalid-cid": "قائمة غير موجودة",
"invalid-tid": "موضوع غير متواجد",
"invalid-pid": "رد غير موجود",
@@ -18,11 +18,14 @@
"username-taken": "اسم المستخدم مأخوذ",
"email-taken": "البريد الالكتروني مأخوذ",
"email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"email-not-confirmed-chat": "لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.",
"no-email-to-confirm": "هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
"email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.",
"confirm-email-already-sent": "لقد تم ارسال بريد التأكيد، الرجاء اﻹنتظار 1% دقائق لإعادة اﻹرسال",
"username-too-short": "اسم المستخدم قصير.",
"username-too-long": "اسم المستخدم طويل",
"user-banned": "المستخدم محظور",
"user-too-new": "عذرًا، يجب الانتظار %1 ثواني قبل إضافة ردك الأول.",
"user-too-new": "عذرا, يجب أن تنتظر 1% ثواني قبل قيامك بأول مشاركة",
"no-category": "قائمة غير موجودة",
"no-topic": "موضوع غير موجود",
"no-post": "رد غير موجود",
@@ -33,41 +36,55 @@
"no-emailers-configured": "لا يمكن إرسال رسالة إلكترونية تجريبية لعدم وجود قوالب خاصة بالرسائل الإلكترونية،",
"category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
"still-uploading": "الرجاء انتظار الرفع",
"content-too-short": "المرجو إدخال موضوع أطول من هذا. يجب أن تتوفر المواضيع على %1 حروف على الأقل.",
"title-too-short": "المرجو إدخال عنوان أطول من هذا. يجب أن تتوفر العناوين على %1 حروف على الأقل.",
"title-too-long": "المرجو إدخال عنوان أقصر من هذا. يجب ألا تتجاوز العناوين %1 حرفًا.",
"too-many-posts": "يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية - المرجو الانتظار قليلا.",
"too-many-posts-newbie": "بصفتك مستخدمًا جديدًا، يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية حتى تحصل على سمعة %2 - المرجو الانتظار قليلا.",
"file-too-big": "حجم الملفات الأقصى المسموح به هو %1 كب - المرجو رفع ملف أقل حجمًا",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "لايمكنك التصويت لردك",
"already-favourited": "لقد سبق وأضفت هذا الرد إلى المفضلة",
"already-unfavourited": "لقد سبق وحذفت هذا الرد من المفضلة",
"cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"group-name-too-short": "اسم المجموعة قصير",
"group-already-exists": "المجموعة موجودة مسبقا",
"group-name-change-not-allowed": "لايسمح بتغيير أسماء المجموعات",
"group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner",
"group-already-member": "أنت بالفعل عضو في هذه المجموعة ",
"group-needs-owner": "هذه المجموعة تتطلب مالك واحد على اﻷقل",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "سبق وتم حذف هذا الرد",
"post-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"topic-already-deleted": "سبق وتم حذف هذا الموضوع",
"topic-already-restored": "سبق وتم إلغاء حذف هذا الرد",
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
"topic-thumbnails-are-disabled": "الصور المصغرة غير مفعلة.",
"invalid-file": "ملف غير مقبول",
"uploads-are-disabled": "رفع الملفات غير مفعل",
"upload-error": "مشكلة في الرفع: 1%",
"signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا",
"signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا.",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
"cant-chat-with-yourself": "لايمكنك فتح محادثة مع نفسك",
"chat-restricted": "هذا المستخدم عطل المحادثات الواردة عليه. يجب أن يتبعك حتى تتمكن من فتح محادثة معه.",
"too-many-messages": "You have sent too many messages, please wait awhile.",
"too-many-messages": "لقد أرسلت الكثير من الرسائل، الرجاء اﻹنتظار قليلاً",
"reputation-system-disabled": "نظام السمعة معطل",
"downvoting-disabled": "التصويتات السلبية معطلة",
"not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
"not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل",
"already-flagged": "You have already flagged this post",
"reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
"registration-error": "حدث خطأ أثناء التسجيل",
"parse-error": "Something went wrong while parsing server response"
"parse-error": "حدث خطأ ما أثناء تحليل استجابة الخادم",
"wrong-login-type-email": "الرجاء استعمال بريدك اﻹلكتروني للدخول",
"wrong-login-type-username": "الرجاء استعمال اسم المستخدم الخاص بك للدخول"
}

View File

@@ -3,7 +3,7 @@
"search": "بحث",
"buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول",
"403.message": "You seem to have stumbled upon a page that you do not have access to.",
"403.message": "يبدو أنك قد تعثرت على صفحة لا تمتلك الصلاحية للدخول إليها",
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
"404.title": "لم يتم العثور",
"404.message": "You seem to have stumbled upon a page that does not exist. Return to the <a href='%1/'>home page</a>.",
@@ -22,12 +22,13 @@
"pagination.out_of": "%1 من %2",
"pagination.enter_index": "أدخل الرقم التسلسلي",
"header.admin": "مدبر نظام",
"header.categories": "Categories",
"header.recent": "حديث",
"header.unread": "غير مقروء",
"header.tags": "وسم",
"header.popular": "الأكثر شهرة",
"header.users": "المستخدمين",
"header.groups": "Groups",
"header.groups": "المجموعات",
"header.chats": "المحادثات",
"header.notifications": "التنبيهات",
"header.search": "بحث",
@@ -50,6 +51,7 @@
"views": "المشاهدات",
"reputation": "السمعة",
"read_more": "اقرأ المزيد",
"more": "More",
"posted_ago_by_guest": "كتب %1 من طرف زائر",
"posted_ago_by": "كتب %1 من طرف %2",
"posted_ago": "كتب %1",
@@ -75,7 +77,7 @@
"updated.title": "تم تحديث المنتدى",
"updated.message": "لقد تم تحديث المنتدى إلى آخر نسخة للتو. المرجو إعادة تحميل الصفحة.",
"privacy": "الخصوصية",
"follow": "Follow",
"unfollow": "Unfollow",
"follow": "متابعة",
"unfollow": "إلغاء المتابعة",
"delete_all": "حذف الكل"
}

View File

@@ -1,21 +1,49 @@
{
"groups": "المجموعات",
"view_group": "معاينة المجموعة",
"owner": "Group Owner",
"new_group": "Create New Group",
"no_groups_found": "There are no groups to see",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
"cover-saving": "Saving",
"owner": "مالك المجموعة",
"new_group": "أنشئ مجموعة جديدة",
"no_groups_found": "لاوجدود لمجموعات يمكن معاينتها",
"pending.accept": "موافق",
"pending.reject": "رفض",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "اسحب وأسقِط صورة، اسحبها للموضع المرغوب، وانقر على <strong>حفظ</strong>",
"cover-change": "تغيير",
"cover-save": "حفظ",
"cover-saving": "جاري الحفظ",
"details.title": "تفاصيل المجموعة",
"details.members": "لائحة الأعضاء",
"details.pending": "Pending Members",
"details.pending": "المستخدمون في الانتظار",
"details.invited": "Invited Members",
"details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة",
"details.latest_posts": "آخر المشاركات",
"details.private": "Private Group",
"details.public": "Public Group",
"details.owner_options": "Group Administration",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
"details.private": "خاص",
"details.grant": "منح/سحب المِلكية",
"details.kick": "طرد",
"details.owner_options": "إدارة المجموعة",
"details.group_name": "اسم المجموعة",
"details.member_count": "عدد اﻷعضاء",
"details.creation_date": "تاريخ الإنشاء",
"details.description": "الوصف",
"details.badge_preview": "معاينة الوسام",
"details.change_icon": "تغيير الأيقونة",
"details.change_colour": "تغيير اللون",
"details.badge_text": "نص الوسام",
"details.userTitleEnabled": "إظهار الوسام",
"details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها",
"details.hidden": "مخفي",
"details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة يدوية.",
"details.delete_group": "Delete Group",
"event.updated": "تم تحديث بيانات المجموعة",
"event.deleted": "تم حذف المجموعة %1",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
"membership.reject": "Reject"
}

View File

@@ -1,9 +1,11 @@
{
"username": "اسم المستخدم / عنوان البريد الإلكتروني",
"username-email": "اسم المستخدم / البريد الإلكتروني",
"username": "اسم المستخدم",
"email": "البريد الإلكتروني",
"remember_me": "تذكرني؟",
"forgot_password": "نسيت كلمة المرور؟",
"alternative_logins": "تسجيلات الدخول البديلة",
"failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.",
"login_successful": "قمت بتسجيل الدخول بنجاح!",
"dont_have_account": م تفتح حسابك بعد؟"
"dont_have_account": ا تملك حساب؟"
}

View File

@@ -15,7 +15,12 @@
"chat.seven_days": "7 أيام",
"chat.thirty_days": "30 يومًا",
"chat.three_months": "3 أشهر",
"composer.compose": "اكتب",
"composer.show_preview": "عرض المعاينة",
"composer.hide_preview": "إخفاء المعاينة",
"composer.user_said_in": "%1 كتب في %2",
"composer.user_said": "%1 كتب:",
"composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟"
"composer.discard": "هل أنت متأكد أنك تريد التخلي عن التغييرات؟",
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown"
}

View File

@@ -1,7 +1,8 @@
{
"title": "تنبيهات",
"title": "التنبيهات",
"no_notifs": "ليس لديك أية تنبيهات جديدة",
"see_all": "معاينة كل التنبيهات",
"mark_all_read": "اجعل كل التنبيهات مقروءة",
"back_to_home": "عودة إلى %1",
"outgoing_link": "رابط خارجي",
"outgoing_link_message": "أنت تغادر %1 حاليا.",
@@ -19,9 +20,9 @@
"user_posted_topic": "<strong>%1</strong> أنشأ موضوعًا جديدًا: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> ذكرَ اسمك في <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> صار يتابعك.",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني",
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
"email-confirm-error": "حدث خطأ ما...",
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",
"email-confirm-sent": "تم إرسال بريد التفعيل."
}

View File

@@ -1,18 +1,21 @@
{
"home": "الصفحة الرئيسية",
"unread": "المواضيع غير المقروءة",
"unread": "المواضيع الغير مقروءة",
"popular": "المواضيع الأكثر شهرة",
"recent": "المواضيع الحديثة",
"users": "المستخدمون المسجلون",
"users": "اﻷعضاء المسجلون",
"notifications": "التنبيهات",
"tags": "المواضيع المرتبطة بالوسم %1",
"tags": "الكلمات الدلالية",
"tag": "Topics tagged under \"%1\"",
"user.edit": "تعديل \"%1\"",
"user.following": "المستخدمون الذين يتبعهم %1",
"user.followers": "المستخدمون الذين يتبعون %1",
"user.posts": "ردود %1",
"user.topics": "مواضيع %1",
"user.groups": "مجموعات %1",
"user.favourites": "مفضلات %1",
"user.settings": "خيارات المستخدم",
"user.watched": "المواضيع المتابعة من قبل %1 ",
"maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.",
"maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:"
}

View File

@@ -5,14 +5,15 @@
"month": "شهر",
"year": "سنة",
"alltime": "دائمًا",
"no_recent_topics": "لاوجود لمشاركات جديدة",
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
"there-are-new-topics": "There are %1 new topics.",
"there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
"there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
"there-is-a-new-post": "There is a new post.",
"there-are-new-posts": "There are %1 new posts.",
"click-here-to-reload": "Click here to reload."
"no_recent_topics": "لايوجد مواضيع جديدة",
"no_popular_topics": "There are no popular topics.",
"there-is-a-new-topic": "يوجد موضوع جديد",
"there-is-a-new-topic-and-a-new-post": "يوجد موضوع جديد و رد جديد",
"there-is-a-new-topic-and-new-posts": "يوجد موضوع جديد و %1 ردود جديدة ",
"there-are-new-topics": "يوجد %1 مواضيع جديدة",
"there-are-new-topics-and-a-new-post": "يوجد %1 مواضيع جديدة و رد جديد",
"there-are-new-topics-and-new-posts": "يوجد %1 مواضيع جديدة و %2 مشاركات جديدة",
"there-is-a-new-post": "يوجد مشاركة جديدة",
"there-are-new-posts": "يوجد %1 مشاركات جديدة",
"click-here-to-reload": "إضغط هنا لإعادة التحميل"
}

View File

@@ -1,18 +1,19 @@
{
"register": "تسجيل",
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من الجمهور.",
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من العامة.",
"help.username_restrictions": "اسم مستخدم فريدة من نوعها بين1% و2% حرفا. يمكن للآخرين ذكرك @ <'span id='your-username> اسم المستخدم </span>.",
"help.minimum_password_length": "كلمتك السر يجب أن تكون على الأقل متألفة من 1% أحرف",
"help.minimum_password_length": "كلمة المرور يجب أن تكون على الأقل بها 1% أحرف",
"email_address": "عنوان البريد الإلكتروني",
"email_address_placeholder": "ادخل عنوان البريد الإلكتروني",
"username": "اسم المستخدم",
"username_placeholder": "أدخل اسم المستخدم",
"password": "كلمة السر",
"password_placeholder": "أدخل كلمة السر",
"confirm_password": "تأكيد كلمة السر",
"confirm_password_placeholder": "تأكيد كلمة السر",
"password": "كلمة المرور",
"password_placeholder": "أدخل كلمة المرور",
"confirm_password": "تأكيد كلمة المرور",
"confirm_password_placeholder": "تأكيد كلمة المرور",
"register_now_button": "قم بالتسجيل الآن",
"alternative_registration": "طريقة تسجيل بديلة",
"terms_of_use": "قوانين الاستخدام",
"agree_to_terms_of_use": "أوافق على قوانين الاستخدام"
"terms_of_use": "شروط الاستخدام",
"agree_to_terms_of_use": "أوافق على شروط الاستخدام",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
}

View File

@@ -1,14 +1,17 @@
{
"reset_password": "إعادة تعيين كلمة السر",
"update_password": "تحديث كلمة السر",
"password_changed.title": "تم تغير كلمة السر",
"password_changed.message": "<p>تم تغير كلمة السر بنجاح. يرجى <a href='/login'>إعادة الدخول</a></p>",
"reset_password": "إعادة تعيين كلمة المرور",
"update_password": "تحديث كلمة المرور",
"password_changed.title": "تم تغير كلمة المرور",
"password_changed.message": "<p>تم تغير كلمة المرور بنجاح، الرجاء <a href='/login'>إعادة الدخول</a></p>",
"wrong_reset_code.title": "رمز إعادة التعيين غير صحيح",
"wrong_reset_code.message": "رمز إعادة التعين غير صحيح، يرجى المحاولة مرة أخرى أو <a href='/reset'>اطلب رمزا جديدا</a>",
"new_password": "كلمة السر الجديدة",
"repeat_password": "تأكيد كلمة السر",
"new_password": "كلمة المرور الجديدة",
"repeat_password": "تأكيد كلمة المرور",
"enter_email": "يرجى إدخال <strong>عنوان البريد الإلكتروني</strong> الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.",
"enter_email_address": "ادخل عنوان البريد الإلكتروني",
"password_reset_sent": "إعادة تعيين كلمة السر أرسلت",
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود"
"invalid_email": "بريد إلكتروني غير صالح أو غير موجود",
"password_too_short": "كلمة المرور التي أدخلتها قصيرة، الرجاء اختر كلمة مرور مختلفة",
"passwords_do_not_match": "كلمتا السر التي أدخلتهما غير متطابقتان",
"password_expired": "لقد انتهت صلاحية كلمة المرور الخاصة بك، الرجاء اختيار كلمة مرور جديدة"
}

View File

@@ -1,7 +1,40 @@
{
"results_matching": "%1 نتيجة (نتائج) موافقة ل \"%2\", (%3 ثواني)",
"no-matches": "No matches found",
"in": "In",
"by": "By",
"posted-by": "Posted by"
"results_matching": "%1 نتيجة (نتائج) موافقة لـ \"%2\", (%3 ثواني)",
"no-matches": "لم يتم العثور على نتائج.",
"advanced-search": "بحث متقدم",
"in": "في",
"titles": "العناوين",
"titles-posts": "العناوين والمشاركات",
"posted-by": "مشاركة من طرف",
"in-categories": "في الفئات",
"search-child-categories": "بحث في الفئات الفرعية",
"reply-count": "عدد المشاركات",
"at-least": "على اﻷقل",
"at-most": "على اﻷكثر",
"post-time": "تاريخ المشاركة",
"newer-than": "أحدث من",
"older-than": "أقدم من",
"any-date": "أي وقت",
"yesterday": "أمس",
"one-week": "أسبوع",
"two-weeks": "أسبوعان",
"one-month": "شهر",
"three-months": "ثلاثة أشهر",
"six-months": "ستة أشهر",
"one-year": "عام",
"sort-by": "عرض حسب",
"last-reply-time": "تاريخ آخر رد",
"topic-title": "عنوان الموضوع",
"number-of-replies": "عدد الردود",
"number-of-views": "عدد المشاهدات",
"topic-start-date": "تاريخ بدأ الموضوع",
"username": "اسم المستخدم",
"category": "فئة",
"descending": "في ترتيب تنازلي",
"ascending": "في ترتيب تصاعدي",
"save-preferences": "حفظ التفضيلات",
"clear-preferences": "ازالة التفضيلات",
"search-preferences-saved": "تم حفظ تفضيلات البحث",
"search-preferences-cleared": "تم ازالة تفضيلات البحث",
"show-results-as": "عرض النتائج كـ"
}

View File

@@ -1,7 +1,7 @@
{
"no_tag_topics": "لاوجود لمواضيع تحمل هذا الوسم.",
"tags": "بطاقات",
"enter_tags_here": "أدخل البطاقات هنا. اضغط ENTER بعد كل بطاقة.",
"enter_tags_here_short": "أدخل البطاقات...",
"no_tags": "لاتوجد هناك بطاقات بعد."
"no_tag_topics": "لا يوجد مواضيع بهذه الكلمة الدلالية.",
"tags": "الكلمات الدلالية",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
"enter_tags_here_short": "أدخل الكلمات الدلالية...",
"no_tags": "لا يوجد كلمات دلالية بعد."
}

View File

@@ -5,6 +5,7 @@
"no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "لا توجد مشاركات!",
"post_is_deleted": "هذه المشاركة محذوفة!",
"topic_is_deleted": "هذا الموضوع محذوف",
"profile": "الملف الشخصي",
"posted_by": "كتب من طرف %1",
"posted_by_guest": "كتب من طرف زائر",
@@ -12,20 +13,21 @@
"notify_me": "تلق تنبيهات بالردود الجديدة في هذا الموضوع",
"quote": "اقتبس",
"reply": "رد",
"guest-login-reply": "يجب عليك تسجيل الدخول للرد",
"edit": "تعديل",
"delete": "حذف",
"purge": "تطهير",
"restore": "استعادة",
"move": "انقل",
"move": "نقل",
"fork": "فرع",
"link": "رابط",
"share": "نشر",
"tools": "أدوات",
"flag": "اشعار بمشاركة مخلة",
"flag": "تبليغ",
"locked": "مقفل",
"bookmark_instructions": "انقر هنا للإكمال أو أغلق للإلغاء.",
"bookmark_instructions": "إضغط هنا للعودة إلى آخر موضع أو غلق للإلغاء",
"flag_title": "إشعار بمشاركة مخلة.",
"flag_confirm": "هل تريد حقًّا أن تشعر بهذه المشاركة على أنها مخلة؟",
"flag_confirm": "هل تريد حقًّا التبليغ بهذه المشاركة؟",
"flag_success": "تم الإشعار بهذه المشاركة على أنها مخلة",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
@@ -74,7 +76,7 @@
"fork_no_pids": "لم تختر أي مشاركة",
"fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder": "Name",
"composer.handle_placeholder": "اﻹسم",
"composer.discard": "نبذ التغييرات",
"composer.submit": "حفظ",
"composer.replying_to": "الرد على %1",
@@ -94,5 +96,5 @@
"oldest_to_newest": "من الأقدم إلى الأحدث",
"newest_to_oldest": "من الأحدث إلى الأقدم",
"most_votes": "الأكثر تصويتًا",
"most_posts": "Most posts"
"most_posts": "اﻷكثر رداً"
}

View File

@@ -3,7 +3,8 @@
"no_unread_topics": "ليس هناك أي موضوع غير مقروء",
"load_more": "حمل المزيد",
"mark_as_read": "حدد غير مقروء",
"selected": "المختارة",
"selected": "المحددة",
"all": "الكل",
"all_categories": "All categories",
"topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!"
}

View File

@@ -1,13 +1,17 @@
{
"banned": "محظور",
"offline": "ليس موجود حالياً",
"offline": "غير متصل",
"username": "إسم المستخدم",
"joindate": "Join Date",
"postcount": "Post Count",
"joindate": "تاريخ الإنضمام",
"postcount": "عدد المشاركات",
"email": "البريد الإلكتروني",
"confirm_email": "تأكيد عنوان البريد الإلكتروني",
"ban_account": "Ban Account",
"ban_account_confirm": "Do you really want to ban this user?",
"unban_account": "Unban Account",
"delete_account": "حذف الحساب",
"delete_account_confirm": "هل أن متأكد أنك تريد حذف حسابك؟<br /><strong> هذه العملية غير قابلة للإلغاء ولن يكون بالإمكان استعادة بياناتك</strong><br /><br />أدخل اسم المستخدم الخاص بك لتأكيد عملية الحذف",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني",
"location": "الموقع",
@@ -15,24 +19,26 @@
"joined": "تاريخ التسجيل",
"lastonline": "تاريخ آخر دخول",
"profile": "الملف الشخصي",
"profile_views": "عدد مشاهدات الملف الشخصي",
"profile_views": "عدد المشاهدات",
"reputation": "السمعة",
"favourites": "المفضلات",
"watched": "Watched",
"favourites": "التفضيلات",
"watched": "متابع",
"followers": "المتابعون",
"following": "يتابع",
"aboutme": "معلومة عنك او السيرة الذاتية",
"signature": "توقيع",
"gravatar": "Gravatar",
"birthday": "عيد ميلاد",
"chat": "محادثة",
"follow": "تابع",
"unfollow": "إلغاء المتابعة",
"more": "المزيد",
"profile_update_success": "تم تحديث الملف الشخصي بنجاح",
"change_picture": "تغيير الصورة",
"edit": "تعديل",
"uploaded_picture": "الصورة المرفوعة",
"upload_new_picture": "رفع صورة جديدة",
"upload_new_picture_from_url": "رفع صورة جديدة بواسطة رابط",
"upload_new_picture_from_url": "رفع صورة جديدة من رابط",
"current_password": "كلمة السر الحالية",
"change_password": "تغيير كلمة السر",
"change_password_error": "كلمة سر غير صحيحة",
@@ -47,7 +53,6 @@
"upload_picture": "ارفع الصورة",
"upload_a_picture": "رفع صورة",
"image_spec": "لايمكنك رفع إلا الصور ذات الصيغ PNG أو JPG أو GIF.",
"max": "الحد الأقصى",
"settings": "خيارات",
"show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل",
@@ -60,21 +65,24 @@
"digest_monthly": "شهريًّا",
"send_chat_notifications": "استلام رسالة إلكترونية عند ورود محادثة وأنا غير متصل.",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"settings-require-reload": "تغيير بعض اﻹعدادات يتطلب تحديث الصفحة. إضغط هنا لتحديث الصفحة",
"has_no_follower": "هذا المستخدم ليس لديه أي متابع :(",
"follows_no_one": "هذا المستخدم لا يتابع أحد :(",
"has_no_posts": "هذا المستخدم لم يكتب أي شيء بعد.",
"has_no_topics": "هذا المستخدم لم ينشئ أي موضوع بعد.",
"has_no_watched_topics": "This user didn't watch any topics yet.",
"has_no_posts": "This user hasn't posted anything yet.",
"has_no_topics": "This user hasn't posted any topics yet.",
"has_no_watched_topics": "This user hasn't watched any topics yet.",
"email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي",
"paginate_description": "عرض المواضيع والردود موزعة على صفحات عوض صفحة واحدة.",
"paginate_description": "Paginate topics and posts instead of using infinite scroll",
"topics_per_page": "المواضيع في كل صفحة",
"posts_per_page": "الردود في كل صفحة",
"notification_sounds": "تشغيل ملف صوتي عند استلام التنبيهات.",
"notification_sounds": "تشغيل صوت عند تلقي تنبيه",
"browsing": "خيارات التصفح",
"open_links_in_new_tab": "فتح الروابط الخارجية في تبويب جديد؟",
"open_links_in_new_tab": "فتح الروابط الخارجية في نافدة جديدة",
"enable_topic_searching": "تفعيل خاصية البحث داخل المواضيع",
"topic_search_help": "في حالة تفعيلها، ستعوض خاصيةُ البحث داخل المواضيع خاصيةَ البحث الخاصة بالمتصفح، فتمكنك بالتالي بالبحث في الموضوع بأكمله دون الاقتصار على مايظهر في الشاشة فحسب.",
"follow_topics_you_reply_to": "متابعة المشاركات التي ترد عليها",
"follow_topics_you_create": "متابعة المشاركات التي تكتبها"
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها",
"follow_topics_you_create": "متابعة المواضيع التي تنشئها",
"grouptitle": "حدد عنوان المجموعة الذي تريد عرضه",
"no-group-title": "لا يوجد عنوان للمجموعة"
}

View File

@@ -1,12 +1,21 @@
{
"latest_users": "أحدث المستخدمين",
"top_posters": "أكثر المشتركين",
"latest_users": "أحدث الأعضاء",
"top_posters": "اﻷكثر مشاركة",
"most_reputation": "أعلى سمعة",
"search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث",
"load_more": "حمل المزيد",
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ميليثانية.",
"users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ثانية.",
"filter-by": "Filter By",
"online-only": "Online only",
"picture-only": "Picture only"
"online-only": "المتصلون فقط",
"picture-only": "صورة فقط",
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "قائمة اﻷعضاء",
"recent_topics": "أحدث المواضيع",
"popular_topics": "Popular Topics",
"unread_topics": "المواضيع الغير مقروءة",
"categories": "الفئات",
"tags": "الكلمات الدلالية",
"map": "Map"
}

View File

@@ -0,0 +1,12 @@
{
"new_topic_button": "Нова тема",
"guest-login-post": "Влезте, за да можете да публикувате",
"no_topics": "<strong>Все още няма теми в тази категория.</strong><br />Защо не създадеш една?",
"browsing": "Разглежда",
"no_replies": "Все още никой не е отговорил",
"share_this_category": "Споделяне на тази категория",
"watch": "Следене",
"ignore": "Игнориране",
"watch.message": "Вече следите обновленията в тази категория",
"ignore.message": "Вече не следите обновленията в тази категория"
}

View File

@@ -0,0 +1,32 @@
{
"password-reset-requested": "Изпратена е заявка за подновяване на паролата %1!",
"welcome-to": "Добре дошли в %1",
"invite": "Покана от %1",
"greeting_no_name": "Здравейте",
"greeting_with_name": "Здравейте, %1",
"welcome.text1": "Благодарим Ви, че се регистрирахте с %1",
"welcome.text2": "За да активирате напълно Вашия акаунт, трябва да потвърдите е-пощата, с която сте се регистрирали.",
"welcome.text3": "Вашата заявка за регистрация беше приета от администратор. Вече можете да се впишете с Вашето потребителско име и парола.",
"welcome.cta": "Натиснете тук, за да потвърдите Вашата е-поща.",
"invitation.text1": "%1 Ви покани да се присъедините към %2",
"invitation.ctr": "Натиснете тук, за да си създадете акаунт.",
"reset.text1": "Получихме заявка за подновяване на Вашата парола, най-вероятно защото сте я забравили. Ако това не е така, моля не обръщайте внимание на това е-писмо.",
"reset.text2": "За да продължите с процедурата по подновяване на паролата, моля последвайте следната връзка:",
"reset.cta": "Натиснете тук, за да подновите паролата си",
"reset.notify.subject": "Паролата беше променена успешно",
"reset.notify.text1": "Известяваме Ви, че на %1, Вашата парола беше променена успешно.",
"reset.notify.text2": "Ако не сте поискали това, моля, свържете се незабавно с администратор.",
"digest.notifications": "Имате непрочетени известия от %1:",
"digest.latest_topics": "Последни теми от %1",
"digest.cta": "Натиснете тук, за да посетите %1",
"digest.unsub.info": "Това резюме беше изпратено до Вас поради настройките Ви за абонаментите.",
"digest.no_topics": "Не е имало дейност по темите в последните %1",
"notif.chat.subject": "Получено е ново чат съобщение от %1",
"notif.chat.cta": "Натиснете тук, за да продължите разговора",
"notif.chat.unsub.info": "Това известие за чата беше изпратено до Вас поради настройките Ви за абонаментите.",
"notif.post.cta": "Натиснете тук, за да прочетете цялата тема",
"notif.post.unsub.info": "Това известие за публикация беше изпратено до Вас поради настройките Ви за абонаментите.",
"test.text1": "Това е пробно е-писмо, за да потвърдим, че изпращачът на е-поща е правилно настроен за Вашия NodeBB.",
"unsub.cta": "Натиснете тук, за да промените тези настройки",
"closing": "Благодарим Ви!"
}

View File

@@ -0,0 +1,90 @@
{
"invalid-data": "Невалидни данни",
"not-logged-in": "Изглежда не сте влезли в системата.",
"account-locked": "Вашият акаунт беше заключен временно",
"search-requires-login": "Търсенето изисква акаунт моля, влезте или се регистрирайте.",
"invalid-cid": "Невалиден идентификатор на категория",
"invalid-tid": "Невалиден идентификатор на тема",
"invalid-pid": "Невалиден идентификатор на публикация",
"invalid-uid": "Невалиден идентификатор на потребител",
"invalid-username": "Невалидно потребителско име",
"invalid-email": "Невалидна е-поща",
"invalid-title": "Невалидно заглавие!",
"invalid-user-data": "Невалидни потребителски данни",
"invalid-password": "Невалидна парола",
"invalid-username-or-password": "Моля, посочете потребителско име и парола",
"invalid-search-term": "Невалиден текст за търсене",
"invalid-pagination-value": "Невалиден номер на страница",
"username-taken": "Потребителското име е заето",
"email-taken": "Е-пощата е заета",
"email-not-confirmed": "Вашата е-поща все още не е потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
"email-not-confirmed-chat": "Няма да можете да пишете в чата, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.",
"no-email-to-confirm": "Този форум изисква потвърдена е-поща. Моля, натиснете тук, за да въведете е-поща",
"email-confirm-failed": "Не успяхме да потвърдим е-пощата Ви. Моля, опитайте отново по-късно.",
"confirm-email-already-sent": "Е-писмото за потвърждение вече е изпратено. Моля, почакайте още %1 минута/и, преди да изпратите ново.",
"username-too-short": "Потребителското име е твърде кратко",
"username-too-long": "Потребителското име е твърде дълго",
"user-banned": "Потребителят е блокиран",
"user-too-new": "Съжаляваме, но трябва да изчакате поне %1 секунда/и, преди да направите първата си публикация",
"no-category": "Категорията не съществува",
"no-topic": "Темата не съществува",
"no-post": "Публикацията не съществува",
"no-group": "Групата не съществува",
"no-user": "Потребителят не съществува",
"no-teaser": "Резюмето не съществува",
"no-privileges": "Нямате достатъчно права за това действие.",
"no-emailers-configured": "Добавките за е-поща не са заредени, така че не може да бъде изпратено пробно е-писмо",
"category-disabled": "Категорията е изключена",
"topic-locked": "Темата е заключена",
"post-edit-duration-expired": "Можете да редактирате публикациите си до %1 секунда/и, след като ги пуснете",
"still-uploading": "Моля, изчакайте качването да приключи.",
"content-too-short": "Моля, въведете по-дълъг текст на публикацията. Публикациите трябва да съдържат поне %1 символ(а).",
"content-too-long": "Моля, въведете по-кратък текст на публикацията. Публикациите трябва да съдържат не повече от %1 символ(а).",
"title-too-short": "Моля, въведете по-дълго заглавие. Заглавията трябва да съдържат поне %1 символ(а).",
"title-too-long": "Моля, въведете по-кратко заглавие. Заглавията трябва да съдържат не повече от %1 символ(а).",
"too-many-posts": "Можете да публикувате веднъж на %1 секунда/и моля, изчакайте малко, преди да опитате да публикувате отново",
"too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация моля, изчакайте малко, преди да опитате да публикувате отново",
"tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)",
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
"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)",
"file-too-big": "Максималният разрешен размер на файл е %1 КБ моля, качете по-малък файл",
"cant-vote-self-post": "Не можете да гласувате за собствената си публикация",
"already-favourited": "Вече сте отбелязали тази публикация като любима",
"already-unfavourited": "Вече сте премахнали тази публикация от любимите си",
"cant-ban-other-admins": "Не можете да блокирате другите администратори!",
"cant-remove-last-admin": "Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор",
"invalid-image-type": "Грешен тип на изображение. Позволените типове са: %1",
"invalid-image-extension": "Грешно разширение на изображението",
"invalid-file-type": "Грешен тип на файл. Позволените типове са: %1",
"group-name-too-short": "Името на групата е твърде кратко",
"group-already-exists": "Вече съществува такава група",
"group-name-change-not-allowed": "Промяната на името на групата не е разрешено",
"group-already-member": "Вече сте част от тази група",
"group-needs-owner": "Тази група се нуждае от поне един собственик",
"group-already-invited": "Този потребител вече е бил поканен",
"group-already-requested": "Вашата заявка за членство вече е била изпратена",
"post-already-deleted": "Тази публикация вече е изтрита",
"post-already-restored": "Тази публикация вече е възстановена",
"topic-already-deleted": "Тази тема вече е изтрита",
"topic-already-restored": "Тази тема вече е възстановена",
"cant-purge-main-post": "Не можете да изчистите първоначалната публикация. Моля, вместо това изтрийте темата.",
"topic-thumbnails-are-disabled": "Иконките на темите са изключени.",
"invalid-file": "Грешен файл",
"uploads-are-disabled": "Качването не е разрешено",
"signature-too-long": "Съжаляваме, но подписът Ви трябва да съдържа не повече от %1 символ(а).",
"about-me-too-long": "Съжаляваме, но информацията за Вас трябва да съдържа не повече от %1 символ(а).",
"cant-chat-with-yourself": "Не можете да пишете чат съобщение на себе си!",
"chat-restricted": "Този потребител е ограничил чат съобщенията до себе си. Той трябва първо да Ви последва, преди да можете да си пишете с него.",
"too-many-messages": "Изпратили сте твърде много съобщения. Моля, изчакайте малко.",
"reputation-system-disabled": "Системата за репутация е изключена.",
"downvoting-disabled": "Отрицателното гласуване е изключено",
"not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация",
"not-enough-reputation-to-flag": "Нямате достатъчно репутация, за да докладвате тази публикация",
"already-flagged": "Вече сте докладвали тази публикация",
"reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.",
"registration-error": "Грешка при регистрацията",
"parse-error": "Нещо се обърка при прочитането на отговора на сървъра",
"wrong-login-type-email": "Моля, използвайте е-пощата си, за да влезете",
"wrong-login-type-username": "Моля, използвайте потребителското си име, за да влезете"
}

View File

@@ -0,0 +1,83 @@
{
"home": "Начало",
"search": "Търсене",
"buttons.close": "Затваряне",
"403.title": "Достъпът е отказан",
"403.message": "Изглежда сте посетили страница, до която нямате достъп.",
"403.login": "Може би трябва да <a href='%1/login'>опитате да влезете</a>?",
"404.title": "Не е открита",
"404.message": "Изглежда сте се опитали да посетите страница, която не съществува. Върнете се към <a href='%1/'>началната страница</a>.",
"500.title": "Вътрешна грешка.",
"500.message": "Опа! Изглежда нещо се обърка!",
"register": "Регистрация",
"login": "Вход",
"please_log_in": "Моля, влезте",
"logout": "Изход",
"posting_restriction_info": "Публикуването в момента е позволено само за регистрираните потребители. Натиснете тук, за да влезете.",
"welcome_back": "Добре дошли отново",
"you_have_successfully_logged_in": "Вие влязохте успешно",
"save_changes": "Запазване на промените",
"close": "Затваряне",
"pagination": "Страници",
"pagination.out_of": "%1 от %2",
"pagination.enter_index": "Въведете номер",
"header.admin": "Администратор",
"header.categories": "Categories",
"header.recent": "Скорошни",
"header.unread": "Непрочетени",
"header.tags": "Етикети",
"header.popular": "Популярни",
"header.users": "Потребители",
"header.groups": "Групи",
"header.chats": "Чатове",
"header.notifications": "Известия",
"header.search": "Търсене",
"header.profile": "Профил",
"notifications.loading": "Зареждане на известията",
"chats.loading": "Зареждане на чатовете",
"motd.welcome": "Добре дошли в NodeBB, системата за дискусии на бъдещето.",
"previouspage": "Предишна страница",
"nextpage": "Следваща страница",
"alert.success": "Готово",
"alert.error": "Грешка",
"alert.banned": "Блокиран",
"alert.banned.message": "Вие току-що бяхте блокиран. Сега ще излезете от системата.",
"alert.unfollow": "Вие вече не следвате %1!",
"alert.follow": "Вие следвате %1!",
"online": "На линия",
"users": "Потребители",
"topics": "Теми",
"posts": "Публ.",
"views": "Прегл.",
"reputation": "Репутация",
"read_more": "още",
"more": "Още",
"posted_ago_by_guest": "публикувано %1 от гост",
"posted_ago_by": "публикувано %1 от %2",
"posted_ago": "публикувано %1",
"posted_in_ago_by_guest": "публикувано в %1 %2 от гост",
"posted_in_ago_by": "публикувано в %1 %2 от %3",
"posted_in_ago": "публикувано в %1 %2",
"replied_ago": "отговори %1",
"user_posted_ago": "%1 публикува %2",
"guest_posted_ago": "гост публикува %1",
"last_edited_by_ago": "последно редактирано от %1 %2",
"norecentposts": "Няма скорошни публикации",
"norecenttopics": "Няма скорошни теми",
"recentposts": "Скорошни публикации",
"recentips": "Наскоро ползвани IP адреси",
"away": "Отсъстващ",
"dnd": "Отпочиващ",
"invisible": "Невидим",
"offline": "Извън линия",
"email": "Е-поща",
"language": "Език",
"guest": "Гост",
"guests": "Гости",
"updated.title": "Форумът е актуализиран",
"updated.message": "Този форум току-що беше актуализиран до най-новата версия. Натиснете тук, за да опресните страницата.",
"privacy": "Поверителност",
"follow": "Следване",
"unfollow": "Прекратяване на следването",
"delete_all": "Изтриване на всичко"
}

View File

@@ -0,0 +1,49 @@
{
"groups": "Групи",
"view_group": "Преглед на групата",
"owner": "Собственик на групата",
"new_group": "Създаване на нова група",
"no_groups_found": "Няма групи",
"pending.accept": "Приемане",
"pending.reject": "Отхвърляне",
"pending.accept_all": "Приемане на всички",
"pending.reject_all": "Отхвърляне на всички",
"pending.none": "В момента няма чакащи членове",
"invited.none": "В момента няма поканени членове",
"invited.uninvite": "Отмяна на поканата",
"invited.search": "Потърсете потребител, когото да поканите в тази група",
"cover-instructions": "Плъзнете снимка, наместете я в предпочитаната позиция и натистнете <strong>Запазване</strong>",
"cover-change": "Промяна",
"cover-save": "Запазване",
"cover-saving": "Запазване",
"details.title": "Подробности за групата",
"details.members": "Списък на членовете",
"details.pending": "Кандидатстващи членове",
"details.invited": "Поканени членове",
"details.has_no_posts": "Членовете на тази група не са публикували нищо.",
"details.latest_posts": "Скорошни публикации",
"details.private": "Частна",
"details.grant": "Даване/отнемане на собственост",
"details.kick": "Изгонване",
"details.owner_options": "Администрация на групата",
"details.group_name": "Име на групата",
"details.member_count": "Брой на членовете",
"details.creation_date": "Дата на създаване",
"details.description": "Описание",
"details.badge_preview": "Преглед на емблемата",
"details.change_icon": "Промяна на иконката",
"details.change_colour": "Промяна на цвета",
"details.badge_text": "Текст на емблемата",
"details.userTitleEnabled": "Показване на емблемата",
"details.private_help": "Ако е включено, присъединяването към група изисква одобрението на собственика ѝ",
"details.hidden": "Скрита",
"details.hidden_help": "Ако е включено, тази група няма да бъде извеждана в списъка от групи и потребителите ще трябва да бъдат поканени лично",
"details.delete_group": "Delete Group",
"event.updated": "Подробностите за групата бяха обновени",
"event.deleted": "Групата „%1“ беше изтрита",
"membership.accept-invitation": "Приемане на поканата",
"membership.invitation-pending": "Чакаща покана",
"membership.join-group": "Присъединяване към групата",
"membership.leave-group": "Напускане на групата",
"membership.reject": "Отхвърляне"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Български",
"code": "bg",
"dir": "ltr"
}

View File

@@ -0,0 +1,11 @@
{
"username-email": "Потребителско име / е-поща",
"username": "Потребителско име",
"email": "Е-поща",
"remember_me": "Запомнете ме?",
"forgot_password": "Забравена парола?",
"alternative_logins": "Други начини за влизане",
"failed_login_attempt": "Неуспешно влизане. Моля, опитайте отново.",
"login_successful": "Вие влязохте успешно!",
"dont_have_account": "Нямате акаунт?"
}

View File

@@ -0,0 +1,26 @@
{
"chat.chatting_with": "Чат с <span id=\"chat-with-name\"></span>",
"chat.placeholder": "Въведете чат съобщението тук и натиснете Ентер за изпращане",
"chat.send": "Изпращане",
"chat.no_active": "Нямате текущи чатове.",
"chat.user_typing": "%1 пише...",
"chat.user_has_messaged_you": "%1 Ви написа съобщение.",
"chat.see_all": "Вижте всички чатове",
"chat.no-messages": "Моля, изберете получател, за да видите историята на чат съобщенията",
"chat.recent-chats": "Скорошни чатове",
"chat.contacts": "Контакти",
"chat.message-history": "История на съобщенията",
"chat.pop-out": "Отделяне на чата в прозорец",
"chat.maximize": "Уголемяване",
"chat.seven_days": "7 дни",
"chat.thirty_days": "30 дни",
"chat.three_months": "3 месеца",
"composer.compose": "Писане",
"composer.show_preview": "Показване на прегледа",
"composer.hide_preview": "Скриване на прегледа",
"composer.user_said_in": "%1 каза в %2:",
"composer.user_said": "%1 каза:",
"composer.discard": "Сигурни ли сте, че искате да отхвърлите тази публикация?",
"composer.submit_and_lock": "Публикуване и заключване",
"composer.toggle_dropdown": "Превключване на падащото меню"
}

View File

@@ -0,0 +1,28 @@
{
"title": "Известия",
"no_notifs": "Нямате нови известия",
"see_all": "Вижте всички известия",
"mark_all_read": "Отбелязване на всички известия като прочетени",
"back_to_home": "Назад към %1",
"outgoing_link": "Външна връзка",
"outgoing_link_message": "Вие напускате %1.",
"continue_to": "Продължаване към %1",
"return_to": "Връщане към %1",
"new_notification": "Ново известие",
"you_have_unread_notifications": "Имате непрочетени известия",
"new_message_from": "Ново съобщение от <strong>%1</strong>",
"upvoted_your_post_in": "<strong>%1</strong> гласува положително за Ваша публикация в <strong>%2</strong>.",
"moved_your_post": "<strong>%1</strong> премести Ваша публикация.",
"moved_your_topic": "<strong>%1</strong> премести Ваша тема.",
"favourited_your_post_in": "<strong>%1</strong> отбеляза Ваша публикация в <strong>%2</strong> като любима.",
"user_flagged_post_in": "<strong>%1</strong> докладва Ваша публикация в <strong>%2</strong>",
"user_posted_to": "<strong>%1</strong> публикува отговор на: <strong>%2</strong>",
"user_posted_topic": "<strong>%1</strong> публикува нова тема: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> Ви спомена в <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> започна да Ви следва.",
"new_register": "<strong>%1</strong> изпрати заявка за регистрация.",
"email-confirmed": "Е-пощата беше потвърдена",
"email-confirmed-message": "Благодарим Ви, че потвърдихте е-пощата си. Акаунтът Ви е вече напълно активиран.",
"email-confirm-error-message": "Възникна проблем при потвърждаването на е-пощата Ви. Може кодът да е грешен или давността му да е изтекла.",
"email-confirm-sent": "Изпратено е е-писмо за потвърждение."
}

View File

@@ -0,0 +1,21 @@
{
"home": "Начало",
"unread": "Непрочетени теми",
"popular": "Популярни теми",
"recent": "Скорошни теми",
"users": "Регистрирани потребители",
"notifications": "Известия",
"tags": "Етикети",
"tag": "Теми, отбелязани като „%1“",
"user.edit": "Редактиране на „%1“",
"user.following": "Хора, които %1 следва",
"user.followers": "Хора, които следват %1",
"user.posts": "Публикации от %1",
"user.topics": "Теми, създадени от %1",
"user.groups": "Групите на %1",
"user.favourites": "Любимите публикации на %1",
"user.settings": "Настройки на потребителя",
"user.watched": "Теми, следени от %1",
"maintenance.text": "%1 в момента е в профилактика. Моля, върнете се по-късно.",
"maintenance.messageIntro": "В допълнение, администраторът е оставил това съобщение:"
}

View File

@@ -0,0 +1,19 @@
{
"title": "Скорошни",
"day": "Ден",
"week": "Седмица",
"month": "Месец",
"year": "Година",
"alltime": "Цялото време",
"no_recent_topics": "Няма скорошни теми.",
"no_popular_topics": "Няма популярни теми.",
"there-is-a-new-topic": "Има нова тема.",
"there-is-a-new-topic-and-a-new-post": "Има нова тема и нова публикация.",
"there-is-a-new-topic-and-new-posts": "Има нова тема и %1 нови публикации.",
"there-are-new-topics": "Има %1 нови теми.",
"there-are-new-topics-and-a-new-post": "Има %1 нови теми и нова публикация.",
"there-are-new-topics-and-new-posts": "Има %1 нови теми и %2 нови публикации.",
"there-is-a-new-post": "Има нова публикация",
"there-are-new-posts": "Има %1 нови публикации.",
"click-here-to-reload": "Натиснете тук, за да презаредите."
}

View File

@@ -0,0 +1,19 @@
{
"register": "Регистрация",
"help.email": "По подразбиране, Вашата е-поща ще бъде скрита за останалите.",
"help.username_restrictions": "Уникално потребителско име с дължина между %1 и %2 символа. Другите ще могат да Ви споменават чрез @<span id='yourUsername'>потребител</span>.",
"help.minimum_password_length": "Дължината на паролата Ви трябва да е поне %1 символа.",
"email_address": "Е-поща",
"email_address_placeholder": "Въведете адрес на е-поща",
"username": "Потребителско име",
"username_placeholder": "Въведете потребителско име",
"password": "Парола",
"password_placeholder": "Въведете парола",
"confirm_password": "Потвърдете паролата",
"confirm_password_placeholder": "Потвърдете паролата",
"register_now_button": "Регистриране",
"alternative_registration": "Друг начин за регистриране",
"terms_of_use": "Условия за ползване",
"agree_to_terms_of_use": "Съгласен съм с условията за ползване",
"registration-added-to-queue": "Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор."
}

View File

@@ -0,0 +1,17 @@
{
"reset_password": "Подновяване на паролата",
"update_password": "Обновяване на паролата",
"password_changed.title": "Паролата беше променена",
"password_changed.message": "<p>Паролата беше подновена. Моля, <a href=\"/login\">влезте отново</a>.",
"wrong_reset_code.title": "Грешен код за подновяване",
"wrong_reset_code.message": "Полученият код за подновяване беше грешен. Моля, опитайте отново или <a href=\"/reset\">поискайте нов код за подновяване</a>.",
"new_password": "Нова парола",
"repeat_password": "Потвърдете паролата",
"enter_email": "Моля, въведете Вашата <strong>е-поща</strong> и ние ще Ви изпратим е-писмо с инструкции за това как да достъпите акаунта си.",
"enter_email_address": "Въведете адрес на е-поща",
"password_reset_sent": "Информацията за подновяване на паролата беше изпратена",
"invalid_email": "Грешна е-поща / е-пощата не съществува!",
"password_too_short": "Паролата е твърде кратка. Моля, изберете друга парола.",
"passwords_do_not_match": "Двете пароли, които въведохте, са различни.",
"password_expired": "Паролата Ви е с изтекла давност. Моля, изберете нова парола"
}

View File

@@ -0,0 +1,40 @@
{
"results_matching": "%1 резултат(а), отговарящи на „%2“, (%3 секунди)",
"no-matches": "Няма съвпадения",
"advanced-search": "Разширено търсене",
"in": "В",
"titles": "Заглавия",
"titles-posts": "Заглавия и публикации",
"posted-by": "Публикувано от",
"in-categories": "В категории",
"search-child-categories": "Претърсване на подкатегориите",
"reply-count": "Брой на отговорите",
"at-least": "Поне",
"at-most": "Най-много",
"post-time": "Време на публикуване",
"newer-than": "По-нови от",
"older-than": "По-стари от",
"any-date": "Която и да е дата",
"yesterday": "Вчера",
"one-week": "Една седмица",
"two-weeks": "Две седмици",
"one-month": "Един месец",
"three-months": "Три месеца",
"six-months": "Шест месеца",
"one-year": "Една година",
"sort-by": "Подреждане по",
"last-reply-time": "Време на последния отговор",
"topic-title": "Заглавие на темата",
"number-of-replies": "Брой на отговорите",
"number-of-views": "Брой на преглежданията",
"topic-start-date": "Начална дата на темата",
"username": "Потребителско име",
"category": "Категория",
"descending": "В низходящ ред",
"ascending": "Във възходящ ред",
"save-preferences": "Запазване на предпочитанията",
"clear-preferences": "Изчистване на предпочитанията",
"search-preferences-saved": "Предпочитанията за търсене бяха запазени",
"search-preferences-cleared": "Предпочитанията за търсене бяха изчистени",
"show-results-as": "Показване на резултатите като"
}

View File

@@ -0,0 +1,6 @@
{
"success": "Готово",
"topic-post": "Вие публикувахте успешно.",
"authentication-successful": "Успешно удостоверяване",
"settings-saved": "Настройките са записани!"
}

View File

@@ -0,0 +1,7 @@
{
"no_tag_topics": "Няма теми с този етикет.",
"tags": "Етикети",
"enter_tags_here": "Въведете етикетите тук, всеки може да е с дължина между %1 и %2 символа.",
"enter_tags_here_short": "Въведете етикети...",
"no_tags": "Все още няма етикети."
}

View File

@@ -0,0 +1,100 @@
{
"topic": "Тема",
"topic_id": "Идентификатора на темата",
"topic_id_placeholder": "Въведете идентификатор на темата",
"no_topics_found": "Няма открити теми!",
"no_posts_found": "Няма открити публикации!",
"post_is_deleted": "Тази публикация е изтрита!",
"topic_is_deleted": "Тази тема е изтрита!",
"profile": "Профил",
"posted_by": "Публикувано от %1",
"posted_by_guest": "Публикувано от гост",
"chat": "Чат",
"notify_me": "Получавайте известия за новите отговори в тази тема",
"quote": "Цитат",
"reply": "Отговор",
"guest-login-reply": "Влезте, за да отговорите",
"edit": "Редактиране",
"delete": "Изтриване",
"purge": "Изчистване",
"restore": "Възстановяване",
"move": "Преместване",
"fork": "Разделяне",
"link": "Връзка",
"share": "Споделяне",
"tools": "Инструменти",
"flag": "Докладване",
"locked": "Заключена",
"bookmark_instructions": "Натиснете, за да се върнете на последната си позиция или затворете, за да отхвърлите.",
"flag_title": "Докладване на тази публикация до модератор",
"flag_confirm": "Сигурни ли сте, че искате да докладвате тази публикация?",
"flag_success": "Тази публикация е била докладвана до модератор.",
"deleted_message": "Тази тема е била изтрита. Само потребители с права за управление на темите могат да я видят.",
"following_topic.message": "Вече ще получавате известия когато някой публикува коментар в тази тема.",
"not_following_topic.message": "Вече няма да получавате известия за тази тема.",
"login_to_subscribe": "Моля, регистрирайте се или влезте, за да се абонирате за тази тема.",
"markAsUnreadForAll.success": "Темата е отбелязана като непрочетена за всички.",
"watch": "Наблюдаване",
"unwatch": "Спиране на наблюдаването",
"watch.title": "Получавайте известия за новите отговори в тази тема",
"unwatch.title": "Спрете да наблюдавате тази тема",
"share_this_post": "Споделете тази публикация",
"thread_tools.title": "Инструменти за темата",
"thread_tools.markAsUnreadForAll": "Отбелязване като непрочетена",
"thread_tools.pin": "Закачане на темата",
"thread_tools.unpin": "Откачане на темата",
"thread_tools.lock": "Заключване на темата",
"thread_tools.unlock": "Отключване на темата",
"thread_tools.move": "Преместване на темата",
"thread_tools.move_all": "Преместване на всички",
"thread_tools.fork": "Разделяне на темата",
"thread_tools.delete": "Изтриване на темата",
"thread_tools.delete_confirm": "Сигурни ли сте, че искате да изтриете тази тема?",
"thread_tools.restore": "Възстановяване на темата",
"thread_tools.restore_confirm": "Сигурни ли сте, че искате да възстановите тази тема?",
"thread_tools.purge": "Изчистване на темата",
"thread_tools.purge_confirm": "Сигурни ли сте, че искате да изчистите тази тема?",
"topic_move_success": "Темата беше преместена успешно в %1",
"post_delete_confirm": "Сигурни ли сте, че искате да изтриете тази публикация?",
"post_restore_confirm": "Сигурни ли сте, че искате да възстановите тази публикация?",
"post_purge_confirm": "Сигурни ли сте, че искате да изчистите тази публикация?",
"load_categories": "Зареждане на категориите",
"disabled_categories_note": "Изключените категории са засивени",
"confirm_move": "Преместване",
"confirm_fork": "Разделяне",
"favourite": "Любима",
"favourites": "Любими",
"favourites.has_no_favourites": "Нямате любими, отбележете няколко публикации, за да ги видите тук!",
"loading_more_posts": "Зареждане на още публикации",
"move_topic": "Преместване на темата",
"move_topics": "Преместване на темите",
"move_post": "Преместване на публикацията",
"post_moved": "Публикацията беше преместена!",
"fork_topic": "Разделяне на темата",
"topic_will_be_moved_to": "Тази тема ще бъде преместена в категорията",
"fork_topic_instruction": "Натиснете публикациите, които искате да отделите",
"fork_no_pids": "Няма избрани публикации!",
"fork_success": "Темата е разделена успешно! Натиснете тук, за да преминете към отделената тема.",
"composer.title_placeholder": "Въведете заглавието на темата си тук...",
"composer.handle_placeholder": "Име",
"composer.discard": "Отхвърляне",
"composer.submit": "Публикуване",
"composer.replying_to": "Отговор на %1",
"composer.new_topic": "Нова тема",
"composer.uploading": "качване...",
"composer.thumb_url_label": "Поставете адреса на иконка за темата",
"composer.thumb_title": "Добавете иконка към тази тема",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Или качете файл",
"composer.thumb_remove": "Изчистване на полетата",
"composer.drag_and_drop_images": "Плъзнете снимките тук",
"more_users_and_guests": "Още %1 потребител(и) и %2 гост(и)",
"more_users": "Още %1 потребител(и)",
"more_guests": "Още %1 гост(и)",
"users_and_others": "%1 и %2 други",
"sort_by": "Подреждане по",
"oldest_to_newest": "Първо най-старите",
"newest_to_oldest": "Първо най-новите",
"most_votes": "Най-много гласове",
"most_posts": "Най-много публикации"
}

View File

@@ -0,0 +1,10 @@
{
"title": "Непрочетени",
"no_unread_topics": "Няма непрочетени теми.",
"load_more": "Зареждане на още",
"mark_as_read": "Отбелязване като прочетени",
"selected": "Избраните",
"all": "Всички",
"all_categories": "Всички категории",
"topics_marked_as_read.success": "Темите бяха отбелязани като прочетени!"
}

View File

@@ -0,0 +1,88 @@
{
"banned": "Блокиран",
"offline": "Извън линия",
"username": "Потребителско име",
"joindate": "Дата на присъединяване",
"postcount": "Брой публикации",
"email": "Е-поща",
"confirm_email": "Потвърдете е-пощата",
"ban_account": "Блокиране на акаунта",
"ban_account_confirm": "Наистина ли искате да блокирате този потребител?",
"unban_account": "Отблокиране на акаунта",
"delete_account": "Изтриване на акаунта",
"delete_account_confirm": "Сигурни ли сте, че искате да изтриете акаунта си? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните си</strong><br /><br />Въведете потребителското си име, за да потвърдите, че искате да унищожите този акаунт.",
"delete_this_account_confirm": "Сигурни ли сте, че искате да изтриете този акаунт? <br /><strong>Това действие е необратимо и няма да можете да възстановите нищо от данните</strong><br /><br />",
"fullname": "Цяло име",
"website": "Уеб сайт",
"location": "Местоположение",
"age": "Възраст",
"joined": "Присъединил се",
"lastonline": "Последно на линия",
"profile": "Профил",
"profile_views": "Преглеждания на профила",
"reputation": "Репутация",
"favourites": "Любими",
"watched": "Наблюдавани",
"followers": "Последователи",
"following": "Следва",
"aboutme": "За мен",
"signature": "Подпис",
"gravatar": "Граватар",
"birthday": "Рождена дата",
"chat": "Чат",
"follow": "Следване",
"unfollow": "Спиране на следването",
"more": "Още",
"profile_update_success": "Профилът беше обновен успешно!",
"change_picture": "Промяна на снимката",
"edit": "Редактиране",
"uploaded_picture": "Качена снимка",
"upload_new_picture": "Качване на нова снимка",
"upload_new_picture_from_url": "Качване на нова снимка от адрес",
"current_password": "Текуща парола",
"change_password": "Промяна на паролата",
"change_password_error": "Грешна парола!",
"change_password_error_wrong_current": "Текущата Ви парола е грешна!",
"change_password_error_length": "Паролата е твърде кратка!",
"change_password_error_match": "Паролите са различни!",
"change_password_error_privileges": "Нямате права да промените тази парола.",
"change_password_success": "Паролата ви е обновена!",
"confirm_password": "Потвърдете паролата",
"password": "Парола",
"username_taken_workaround": "Потребителското име, което искате, е заето и затова ние го променихме леко. Вие ще се наричате <strong>%1</strong>",
"upload_picture": "Качване на снимка",
"upload_a_picture": "Качване на снимка",
"image_spec": "Можете да качвате само PNG, JPG, или GIF файлове",
"settings": "Настройки",
"show_email": "Да се показва е-пощата ми",
"show_fullname": "Да се показва цялото ми име",
"restrict_chats": "Разрешаване на чат съобщенията само от потребители, които следвам",
"digest_label": "Абониране за резюмета",
"digest_description": "Абониране за новини по е-пощата относно този форум (нови известия и теми) според избрания график",
"digest_off": "Изключено",
"digest_daily": "Ежедневно",
"digest_weekly": "Ежеседмично",
"digest_monthly": "Ежемесечно",
"send_chat_notifications": "Изпращане на е-писмо, ако получа ново чат съобщения, а не съм на линия",
"send_post_notifications": "Изпращане на е-писмо, когато се появи отговор в темите, за които съм абониран/а.",
"settings-require-reload": "Някои промени в настройките изискват презареждане. Натиснете тук, за да презаредите страницата.",
"has_no_follower": "Този потребител няма последователи :(",
"follows_no_one": "Този потребител не следва никого :(",
"has_no_posts": "Този потребител не е публикувал нищо досега.",
"has_no_topics": "Този потребител не е създавал теми досега.",
"has_no_watched_topics": "Този потребител не е следил нито една тема досега.",
"email_hidden": "Е-пощата е скрита",
"hidden": "скрито",
"paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно",
"topics_per_page": "Теми на страница",
"posts_per_page": "Публикации на страница",
"notification_sounds": "Изпълняване на звук, когато получите известие",
"browsing": "Настройки за страниците",
"open_links_in_new_tab": "Отваряне на външните връзки в нов подпрозорец",
"enable_topic_searching": "Включване на търсенето в темите",
"topic_search_help": "Ако е включено, търсенето в темата ще замени стандартното поведение на браузъра при търсене в страницата и ще Ви позволи да претърсвате цялата тема, а не само това, което се вижда на екрана",
"follow_topics_you_reply_to": "Следване на темите, на които отговаряте",
"follow_topics_you_create": "Следване на темите, които създавате",
"grouptitle": "Изберете заглавието на групата, което искате да се показва",
"no-group-title": "Няма заглавие на група"
}

View File

@@ -0,0 +1,21 @@
{
"latest_users": "Последни потребители",
"top_posters": "С най-много публикации",
"most_reputation": "С най-много репутация",
"search": "Търсене",
"enter_username": "Въведете потребителско име, което да потърсите",
"load_more": "Зареждане на още",
"users-found-search-took": "Намерени са %1 потребител(и)! Търсенето отне %2 секунди.",
"filter-by": "Филтриране",
"online-only": "Само тези на линия",
"picture-only": "Само със снимка",
"invite": "Канене",
"invitation-email-sent": "Беше изпратено е-писмо за потвърждение до %1",
"user_list": "Списък от потребители",
"recent_topics": "Скорошни теми",
"popular_topics": "Популярни теми",
"unread_topics": "Непрочетени теми",
"categories": "Категории",
"tags": "Етикети",
"map": "Карта"
}

View File

@@ -1,8 +1,12 @@
{
"new_topic_button": "নতুন টপিক",
"guest-login-post": "Log in to post",
"no_topics": "<strong>এই বিভাগে কোন টপিক নেই! </strong><br /> আপনি চাইলে একটি পোষ্ট করতে পারেন।",
"browsing": "ব্রাউজিং",
"no_replies": "কোন রিপ্লাই নেই",
"share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন",
"ignore": "উপেক্ষা করুন"
"watch": "Watch",
"ignore": "উপেক্ষা করুন",
"watch.message": "You are now watching updates from this category",
"ignore.message": "You are now ignoring updates from this category"
}

View File

@@ -1,14 +1,21 @@
{
"password-reset-requested": "পাসওয়ার্ড রিসেটের জন্য অনুরোধ করা হয়েছে - %1!",
"welcome-to": "%1 এ স্বাগতম",
"invite": "Invitation from %1",
"greeting_no_name": "স্বাগতম",
"greeting_with_name": "স্বাগতম %1",
"welcome.text1": "%1 এ নিবন্ধন করার জন্য আপনাকে ধন্যবাদ!",
"welcome.text2": "আপনার একাউন্ট এ্যাক্টিভেট করার জন্য, আপনি যে ইমেইল এড্রেস ব্যাবহার করে নিবন্ধন করেছেন তা যাচাই করতে হবে",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "আপনার ইমেইল এড্রেস নিশ্চিত করার জন্য এখানে ক্লিক করুন",
"invitation.text1": "%1 has invited you to join %2",
"invitation.ctr": "Click here to create your account.",
"reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।",
"reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন",
"reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন",
"reset.notify.subject": "Password successfully changed",
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
"digest.notifications": "%1 থেকে আনরিড নোটিফিকেশন আছে।",
"digest.latest_topics": "%1 এর সর্বশেষ টপিকসমূহ",
"digest.cta": "%1 ভিজিট করতে এখানে ক্লিক করুন",

View File

@@ -2,7 +2,7 @@
"invalid-data": "ভুল তথ্য",
"not-logged-in": "আপনি লগিন করেননি",
"account-locked": "আপনার অ্যাকাউন্ট সাময়িকভাবে লক করা হয়েছে",
"search-requires-login": "অনুসন্ধান করার জন্য একটি অ্যাকাউন্ট প্রয়োজন! অনুগ্রহপূর্বক প্রবেশ করুন অথবা নিবন্ধন করুন!",
"search-requires-login": "Searching requires an account - please login or register.",
"invalid-cid": "ভুল বিভাগ নাম্বার",
"invalid-tid": "ভুল টপিক নাম্বার",
"invalid-pid": "ভুল পোস্ট নাম্বার",
@@ -18,11 +18,14 @@
"username-taken": "ইউজারনেম আগেই ব্যবহৃত",
"email-taken": "ইমেইল আগেই ব্যবহৃত",
"email-not-confirmed": "আপনার ইমেইল এড্রেস নিশ্চিত করা হয় নি, নিশ্চিত করতে এখানে ক্লিক করুন।",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
"username-too-short": "খুব ছোট ইউজারনেম",
"username-too-long": "ইউজারনেম বড় হয়ে গিয়েছে",
"user-banned": "ব্যবহারকারী নিষিদ্ধ",
"user-too-new": "দুঃখিত! প্রথম পোষ্ট করার জন্য আপনাকে %1 সেকেন্ড অপেক্ষা করতে হবে।",
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
"no-category": "বিভাগটি খুজে পাওয়া যায় নি",
"no-topic": "এই টপিক নেই",
"no-post": "এই পোষ্ট নেই",
@@ -33,33 +36,44 @@
"no-emailers-configured": "কোন ইমেল প্লাগইন লোড করা নেই, কাজেই টেস্ট মেইল পাঠানো সম্ভব হচ্ছে না",
"category-disabled": "বিভাগটি নিষ্ক্রিয়",
"topic-locked": "টপিক বন্ধ",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
"still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন",
"content-too-short": "অনুগ্রহকরে অপেক্ষকৃত বড় পোষ্ট করুন। একটি পোষ্টে নূন্যতম %1 অক্ষর থাকতে হবে।",
"title-too-short": "অনুগ্রহপূর্বক বড় শিরোনাম ব্যাবহার করুন। শিরোনামের জন্য নূন্যতম %1 অক্ষর ব্যাবহার করতে হবে।",
"title-too-long": "অনুগ্রহ করে সংক্ষিপ্ত শিরোনাম লিখুন। শিরোনাম %1 অক্ষরের বেশি হতে পারবে না।",
"too-many-posts": "আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
"too-many-posts-newbie": "নতুন সদস্য হিসাবে %2 সন্মানণা পাওয়া পর্যন্ত আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ",
"file-too-big": "সর্বোচ্চ গৃহীত ফাইলসাইজ হচ্ছে %1 kb - অনুগ্রহপূর্বক ছোট ফাইল আপলোড করুন",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "আপনি নিজের পোস্টে ভোট দিতে পারবেন না।",
"already-favourited": "আপনি ইতিমধ্যে এই পোষ্টটি পছন্দের তালিকায় যোগ করেছেন",
"already-unfavourited": "আপনি ইতিমধ্যে এই পোষ্টটি আপনার পছন্দের তালিকা থেকে সরিয়ে ফেলেছেন",
"cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"group-name-too-short": "গ্রুপের নাম খুব ছোট",
"group-already-exists": "গ্রুপ ইতিমধ্যেই বিদ্যমান",
"group-name-change-not-allowed": "গ্রুপের নাম পরিবর্তনের অনুমতি নেই",
"group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "এই পোস্টটি ইতিমধ্যে ডিলিট করা হয়ে গিয়েছে",
"post-already-restored": "এই পোষ্টটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"topic-already-deleted": "এই টপিকটি ইতিমধ্যে ডিলিট করা হয়েছে",
"topic-already-restored": "এই টপিকটি ইতিমধ্যে পুনরোদ্ধার করা হয়েছে",
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
"topic-thumbnails-are-disabled": "টপিক থাম্বনেল নিষ্ক্রিয় করা। ",
"invalid-file": "ভুল ফাইল",
"uploads-are-disabled": "আপলোড নিষ্ক্রিয় করা",
"upload-error": "আপলোড ত্রুটিঃ %1",
"signature-too-long": "দুঃখিত, আপনার সাক্ষর %1 অক্ষরের বেশী হতে পারবে না। ",
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
"cant-chat-with-yourself": "আপনি নিজের সাথে চ্যাট করতে পারবেন না!",
"chat-restricted": "এই সদস্য তার বার্তালাপ সংরক্ষিত রেখেছেন। এই সদস্য আপনাকে ফলো করার পরই কেবলমাত্র আপনি তার সাথে চ্যাট করতে পারবেন",
"too-many-messages": "You have sent too many messages, please wait awhile.",
@@ -67,7 +81,10 @@
"downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।",
"not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই",
"not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই",
"already-flagged": "You have already flagged this post",
"reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ",
"registration-error": "নিবন্ধন এরর!",
"parse-error": "Something went wrong while parsing server response"
"parse-error": "Something went wrong while parsing server response",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
}

View File

@@ -22,6 +22,7 @@
"pagination.out_of": "%2 এর মাঝে %1",
"pagination.enter_index": "সূচক লিখুন",
"header.admin": "অ্যাডমিন",
"header.categories": "Categories",
"header.recent": "সাম্প্রতিক",
"header.unread": "অপঠিত",
"header.tags": "ট্যাগ",
@@ -50,6 +51,7 @@
"views": "দেখেছেন",
"reputation": "সন্মাননা",
"read_more": "আরো পড়ুন",
"more": "More",
"posted_ago_by_guest": "অতিথি পোস্ট করেছেন %1",
"posted_ago_by": " %1 %2 দ্বারা পোস্টকৃত",
"posted_ago": "পোস্ট করেছেন %1",

View File

@@ -4,6 +4,14 @@
"owner": "Group Owner",
"new_group": "Create New Group",
"no_groups_found": "There are no groups to see",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
@@ -11,11 +19,31 @@
"details.title": "গ্রুপের বিস্তারিত",
"details.members": "সদস্য তালিকা",
"details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "এই গ্রুপের সদস্যরা এখনো কোন পোষ্ট করেন নি",
"details.latest_posts": "সর্বশেষ পোষ্টসমূহ",
"details.private": "Private Group",
"details.public": "Public Group",
"details.private": "Private",
"details.grant": "Grant/Rescind Ownership",
"details.kick": "Kick",
"details.owner_options": "Group Administration",
"details.group_name": "Group Name",
"details.member_count": "Member Count",
"details.creation_date": "Creation Date",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.delete_group": "Delete Group",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
"event.deleted": "The group \"%1\" has been deleted",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
"membership.reject": "Reject"
}

View File

@@ -1,5 +1,7 @@
{
"username": "ইউজারনেম / ইমেইল",
"username-email": "Username / Email",
"username": "Username",
"email": "Email",
"remember_me": "মনে রাখুন",
"forgot_password": "পাসওয়ার্ড ভুলে গিয়েছেন?",
"alternative_logins": "বিকল্প প্রবেশ",

View File

@@ -15,7 +15,12 @@
"chat.seven_days": " দিন",
"chat.thirty_days": "৩০ দিন",
"chat.three_months": "৩ মাস",
"composer.compose": "Compose",
"composer.show_preview": "Show Preview",
"composer.hide_preview": "Hide Preview",
"composer.user_said_in": "%1 বলেছেন %2:",
"composer.user_said": "%1 বলেছেনঃ",
"composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?"
"composer.discard": "আপনি কি নিশ্চিত যে আপনি এই পোস্ট বাতিল করতে ইচ্ছুক?",
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown"
}

View File

@@ -2,6 +2,7 @@
"title": "বিজ্ঞপ্তিগুলো",
"no_notifs": "আপনার নতুন কোন বিজ্ঞপ্তি নেই",
"see_all": "সকল বিজ্ঞপ্তিগুলো দেখুন",
"mark_all_read": "Mark all notifications read",
"back_to_home": "ফিরুন %1",
"outgoing_link": "বহির্গামী লিঙ্ক",
"outgoing_link_message": "আপনি এখন %1 ত্যাগ করছেন",
@@ -19,9 +20,9 @@
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong>, <strong>%2</strong> এ আপনার নাম উল্লেখ করেছেন",
"user_started_following_you": "<strong>%1</strong> আপনাকে অনুসরন করা শুরু করেছেন।",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "ইমেইল নিশ্চিত করা হয়েছে",
"email-confirmed-message": "আপনার ইমেইল যাচাই করার জন্য আপনাকে ধন্যবাদ। আপনার অ্যাকাউন্টটি এখন সম্পূর্ণরূপে সক্রিয়।",
"email-confirm-error": "একটি ত্রুটি ঘটেছে...",
"email-confirm-error-message": "আপনার ইমেল ঠিকানার বৈধতা যাচাইয়ে একটি সমস্যা হয়েছে। সম্ভবত কোডটি ভুল ছিল অথবা কোডের মেয়াদ শেষ হয়ে গিয়েছে।",
"email-confirm-sent": "নিশ্চিতকরণ ইমেইল পাঠানো হয়েছে।"
}

View File

@@ -5,14 +5,17 @@
"recent": "সাম্প্রতিক টপিক",
"users": "নিবন্ধিত সদস্যগণ",
"notifications": "বিজ্ঞপ্তি",
"tags": "\"%1\" এ ট্যগকৃত টপিকসমূহ",
"tags": "Tags",
"tag": "Topics tagged under \"%1\"",
"user.edit": "সম্পাদনা \"%1\"",
"user.following": "%1 যাদের অনুসরণ করেন",
"user.followers": "যারা %1 কে অনুসরণ করেন",
"user.posts": "%1 এর পোস্ট সমুহ",
"user.topics": "%1 এর টপিক সমুহ",
"user.groups": "%1's Groups",
"user.favourites": "%1'র প্রিয় পোস্টগুলো",
"user.settings": "সদস্য সেটিংস",
"user.watched": "Topics watched by %1",
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:"
}

View File

@@ -6,6 +6,7 @@
"year": "বছর",
"alltime": "সবসময় ",
"no_recent_topics": "কোন সাম্প্রতিক টপিক নেই। ",
"no_popular_topics": "There are no popular topics.",
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",

View File

@@ -14,5 +14,6 @@
"register_now_button": "নিবন্ধন করুন",
"alternative_registration": "বিকল্প নিবন্ধন",
"terms_of_use": "নিয়মাবলী",
"agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম"
"agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
}

View File

@@ -10,5 +10,8 @@
"enter_email": "অনুগ্রহপূর্বক আপনার ইমেইল এড্রেস প্রদান করুন, আমরা আপনাকে আপনার পাসওয়ার্ড রিসেট সম্পর্কিত তথ্যাবলী ইমেইলে পাঠিয়ে দিবো। ",
"enter_email_address": "আপনার ইমেইল এড্রেস",
"password_reset_sent": "পাসওয়ার্ড রিসেট মেইল পাঠানো হয়েছে",
"invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই"
"invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই",
"password_too_short": "The password entered is too short, please pick a different password.",
"passwords_do_not_match": "The two passwords you've entered do not match.",
"password_expired": "Your password has expired, please choose a new password"
}

View File

@@ -1,7 +1,40 @@
{
"results_matching": "\"%2\" এর সাথে মিলিয়ে %1 ফলাফল পাওয়া গেছে, ( %3 seconds সময় লেগেছে )",
"no-matches": "No matches found",
"advanced-search": "Advanced Search",
"in": "In",
"by": "By",
"posted-by": "Posted by"
"titles": "Titles",
"titles-posts": "Titles and Posts",
"posted-by": "Posted by",
"in-categories": "In Categories",
"search-child-categories": "Search child categories",
"reply-count": "Reply Count",
"at-least": "At least",
"at-most": "At most",
"post-time": "Post time",
"newer-than": "Newer than",
"older-than": "Older than",
"any-date": "Any date",
"yesterday": "Yesterday",
"one-week": "One week",
"two-weeks": "Two weeks",
"one-month": "One month",
"three-months": "Three months",
"six-months": "Six months",
"one-year": "One year",
"sort-by": "Sort by",
"last-reply-time": "Last reply time",
"topic-title": "Topic title",
"number-of-replies": "Number of replies",
"number-of-views": "Number of views",
"topic-start-date": "Topic start date",
"username": "Username",
"category": "Category",
"descending": "In descending order",
"ascending": "In ascending order",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
}

View File

@@ -1,7 +1,7 @@
{
"no_tag_topics": "এই ট্যাগ সম্বলিত কোন টপিক নেই",
"tags": "ট্যাগসমূহ",
"enter_tags_here": "এখানে আপনার ট্যাগ টাইপ করুন, প্রত্যেকটি ট্যাগের পর Enter চাপুন",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
"enter_tags_here_short": "ট্যাগ বসান",
"no_tags": "এখন পর্যন্ত কোন ট্যাগ নেই"
}

View File

@@ -5,6 +5,7 @@
"no_topics_found": "কোন টপিক পাওয়া যায়নি!",
"no_posts_found": "কোন পোস্ট পাওয়া যায়নি",
"post_is_deleted": "এই পোস্টটি মুছে ফেলা হয়েছে!",
"topic_is_deleted": "This topic is deleted!",
"profile": "প্রোফাইল ",
"posted_by": "পোস্ট করেছেন %1",
"posted_by_guest": "অতিথি পোস্ট ",
@@ -12,6 +13,7 @@
"notify_me": "এই টপিকে নতুন উত্তর আসলে জানুন",
"quote": "উদ্ধৃতি",
"reply": "উত্তর",
"guest-login-reply": "Log in to reply",
"edit": "সম্পাদণা",
"delete": "মুছে ফেলুন",
"purge": "পার্জ",

View File

@@ -5,5 +5,6 @@
"mark_as_read": "পঠিত হিসেবে চিহ্নিত করুন",
"selected": "নির্বাচিত",
"all": "সবগুলো",
"all_categories": "All categories",
"topics_marked_as_read.success": "পঠিত হিসেবে চিহ্নিত টপিকসমূহ"
}

View File

@@ -6,8 +6,12 @@
"postcount": "Post Count",
"email": "ইমেইল",
"confirm_email": "ইমেইল নিশ্চিত করুন",
"ban_account": "Ban Account",
"ban_account_confirm": "Do you really want to ban this user?",
"unban_account": "Unban Account",
"delete_account": "একাউন্ট মুছে ফেলুন",
"delete_account_confirm": "আপনি কি নিশ্চিত যে আপনি আপনার একাউন্ট মুছে ফেলতে চান ? <br /><strong>এই কাজটির ফলে আপনার কোন তথ্য পুনরূদ্ধার করা সম্ভব নয় </strong><br /><br /> নিশ্চিত করতে আপনার ইউজারনেম প্রবেশ করান। ",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "পুর্ণ নাম",
"website": "ওয়েবসাইট",
"location": "স্থান",
@@ -21,12 +25,14 @@
"watched": "Watched",
"followers": "যাদের অনুসরণ করছেন",
"following": "যারা আপনাকে অনুসরণ করছে",
"aboutme": "About me",
"signature": "স্বাক্ষর",
"gravatar": "গ্রাভাতার",
"birthday": "জন্মদিন",
"chat": "বার্তালাপ",
"follow": "অনুসরন করুন",
"unfollow": "অনুসরন করা থেকে বিরত থাকুন",
"more": "More",
"profile_update_success": "প্রোফাইল আপডেট সফল হয়েছে",
"change_picture": "ছবি পরিবর্তন",
"edit": "সম্পাদনা",
@@ -47,7 +53,6 @@
"upload_picture": "ছবি আপলোড করুন",
"upload_a_picture": "ছবি (একটি) আপলোড করুন",
"image_spec": "আপনি কেবলমাত্র PNG, JPG অথবা GIF ফাইল আপলোড করতে পারবেন",
"max": "সর্বোচ্চ",
"settings": "সেটিংস",
"show_email": "আমার ইমেইল দেখাও",
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
@@ -60,21 +65,24 @@
"digest_monthly": "মাসিক",
"send_chat_notifications": "যদি আমি অনলাইনে না থাকি, সেক্ষেত্রে নতুন চ্যাট মেসেজ আসলে আমাকে ইমেইল করুন",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
"has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(",
"follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(",
"has_no_posts": "এই সদস্য এখনো কোন পোষ্ট করেন নি",
"has_no_topics": "এই সদস্য এখনো কোন টপিক পোষ্ট করেন নি",
"has_no_watched_topics": "This user didn't watch any topics yet.",
"has_no_posts": "This user hasn't posted anything yet.",
"has_no_topics": "This user hasn't posted any topics yet.",
"has_no_watched_topics": "This user hasn't watched any topics yet.",
"email_hidden": "ইমেইল গোপন রাখা হয়েছে",
"hidden": "গোপন করা হয়েছে",
"paginate_description": "ইনফাইনাইট স্ক্রলের বদলে টপিক এবং পোষ্টের জন্য পেজিনেশন ব্যাবহার করুন",
"paginate_description": "Paginate topics and posts instead of using infinite scroll",
"topics_per_page": "প্রতি পেজে কতগুলো টপিক থাকবে",
"posts_per_page": "প্রতি পেইজে কতগুলো পোষ্ট থাকবে",
"notification_sounds": "নতুন নোটিফিকেশনের জন্য নোটিফিকেশন সাউন্ড বাজাও।",
"notification_sounds": "Play a sound when you receive a notification",
"browsing": "Browsing সেটিংস",
"open_links_in_new_tab": "বাইরের URL গুলো নতুন ট্যাবে খোলা হবে ?",
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "In-Topic সার্চ সক্রীয় করো",
"topic_search_help": "যদি এনাবল করা হয়ে থাকে, In-topic সার্চিং ব্রাউজারের ডিফল্ট সার্চের বদলে পুরো টপিকজুড়ে সার্চ করার সুবিধা দিবে, যা কেবলমাত্র বর্তমান স্কৃণে দেখানো অংশের মধ্যে সীমাবদ্ধ থাকবে না। ",
"follow_topics_you_reply_to": "আপনার উত্তর দেয়া টপিকগুলো ফলো করুন",
"follow_topics_you_create": "আপনার তৈরীকরা টপিকসমূহ ফলো করুন"
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
"follow_topics_you_reply_to": "Follow topics that you reply to",
"follow_topics_you_create": "Follow topics you create",
"grouptitle": "Select the group title you would like to display",
"no-group-title": "No group title"
}

View File

@@ -5,8 +5,17 @@
"search": "খুঁজুন",
"enter_username": "ইউজারনেম এর ভিত্তিতে সার্চ করুন",
"load_more": "আরো লোড করুন",
"users-found-search-took": "%1 সদস্য(দের) খুঁজে পাওয়া গিয়েছে! সময় লেগেছে %2 ms.",
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
"filter-by": "Filter By",
"online-only": "Online only",
"picture-only": "Picture only"
"picture-only": "Picture only",
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
"popular_topics": "Popular Topics",
"unread_topics": "Unread Topics",
"categories": "Categories",
"tags": "Tags",
"map": "Map"
}

View File

@@ -1,8 +1,12 @@
{
"new_topic_button": "Nové téma",
"guest-login-post": "Log in to post",
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
"browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl",
"share_this_category": "Share this category",
"ignore": "Ignorovat"
"watch": "Watch",
"ignore": "Ignorovat",
"watch.message": "You are now watching updates from this category",
"ignore.message": "You are now ignoring updates from this category"
}

View File

@@ -1,14 +1,21 @@
{
"password-reset-requested": "Požadována obnova hesla - %1!",
"welcome-to": "Vítejte v %1",
"invite": "Invitation from %1",
"greeting_no_name": "Dobrý den",
"greeting_with_name": "Dobrý den %1",
"welcome.text1": "Děkujeme vám za registraci s %1!",
"welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy",
"invitation.text1": "%1 has invited you to join %2",
"invitation.ctr": "Click here to create your account.",
"reset.text1": "Obdrželi jsme požadavek na obnovu hesla, pravděpodobně kvůli tomu, že jste ho zapomněli. Pokud to není tento případ, ignorujte, prosím, tento email.",
"reset.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:",
"reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo",
"reset.notify.subject": "Password successfully changed",
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
"digest.notifications": "Máte tu nepřečtená oznámení od %1:",
"digest.latest_topics": "Nejnovější témata od %1",
"digest.cta": "Kliknutím zde navštívíte %1",

View File

@@ -2,7 +2,7 @@
"invalid-data": "Neplatná data",
"not-logged-in": "Zdá se, že nejste přihlášen(a)",
"account-locked": "Váš účet byl dočasně uzamčen",
"search-requires-login": "Chcete-li vyhledávat, musíte mít účet. Přihlašte se nebo zaregistrujte, prosím.",
"search-requires-login": "Searching requires an account - please login or register.",
"invalid-cid": "Neplatné ID kategorie",
"invalid-tid": "Neplatné ID tématu",
"invalid-pid": "Neplatné ID příspěvku",
@@ -18,11 +18,14 @@
"username-taken": "Uživatelské jméno je již použito",
"email-taken": "Email je již použit",
"email-not-confirmed": "Vaše emailová adresa zatím nebyla potvrzena. Kliknutím zde svůj email potvrdíte.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
"username-too-short": "Uživatelské jméno je příliš krátké",
"username-too-long": "Uživatelské jméno je příliš dlouhé",
"user-banned": "Uživatel byl zakázán",
"user-too-new": "Pardon, ale je potřeba vyčkat %1 sekund, než-li budete moci vytvořit svůj první příspěvek.",
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
"no-category": "Kategorie neexistuje",
"no-topic": "Téma neexistuje",
"no-post": "Příspěvek neexistuje",
@@ -33,33 +36,44 @@
"no-emailers-configured": "Protože není zaveden žádný emailový plugin, není možné odeslat testovací email.",
"category-disabled": "Kategorie zakázána",
"topic-locked": "Téma uzamčeno",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
"still-uploading": "Vyčkejte, prosím, nežli se vše kompletně nahraje.",
"content-too-short": "Vložte, prosím, delší příspěvek. Příspěvky by měly obsahovat nejméně %1 znaků.",
"title-too-short": "Vložte, prosím, delší titulek. Titulky by měly obsahovat nejméně %1 znaků.",
"title-too-long": "Vložte, prosím, kratší titulek. Titulky by neměly být delší, než-li %1 znaků.",
"too-many-posts": "Své příspěvky můžete odesílat po %1 sekundách - vyčkejte, prosím, před dalším odesláním",
"too-many-posts-newbie": "Jako nový uživatel můžete své příspěvky odesílat po %1 sekundách, dokud nedosáhnete %2 reputace - vyčkejte, prosím, před dalším odesláním",
"file-too-big": "Maximální povolená velikost souboru je %1 kbs - nahrávejte, prosím, menší soubory",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
"too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"cant-vote-self-post": "Nemůžete hlasovat pro svůj vlastní příspěvek",
"already-favourited": "You have already favourited this post",
"already-unfavourited": "You have already unfavourited this post",
"cant-ban-other-admins": "Nemůžete zakazovat ostatní administrátory!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
"invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"group-name-too-short": "Název skupiny je příliš krátký",
"group-already-exists": "Skupina už exstuje",
"group-name-change-not-allowed": "Změna názvu skupiny není povolena",
"group-already-member": "You are already part of this group",
"group-needs-owner": "This group requires at least one owner",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"post-already-deleted": "Tento příspěvek byl již vymazán",
"post-already-restored": "Tento příspěvek byl již obnoven",
"topic-already-deleted": "Toto téma bylo již vymazáno",
"topic-already-restored": "Toto téma bylo již obnoveno",
"cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
"invalid-file": "Neplatný soubor",
"uploads-are-disabled": "Nahrávání je zakázáno",
"upload-error": "Chyba při nahrávání : %1",
"signature-too-long": "Pardon, ale váš podpis nemůže být delší, než-li %1 znaků.",
"signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
"cant-chat-with-yourself": "Nemůžete chatovat sami se sebou!",
"chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them",
"too-many-messages": "You have sent too many messages, please wait awhile.",
@@ -67,7 +81,10 @@
"downvoting-disabled": "Downvoting is disabled",
"not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post",
"not-enough-reputation-to-flag": "You do not have enough reputation to flag this post",
"already-flagged": "You have already flagged this post",
"reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.",
"registration-error": "Chyba při registraci",
"parse-error": "Something went wrong while parsing server response"
"parse-error": "Something went wrong while parsing server response",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
}

View File

@@ -22,6 +22,7 @@
"pagination.out_of": "%1 z %2",
"pagination.enter_index": "Enter index",
"header.admin": "Administrace",
"header.categories": "Categories",
"header.recent": "Aktuality",
"header.unread": "Nepřečtené",
"header.tags": "Tagy",
@@ -50,6 +51,7 @@
"views": "Zobrazení",
"reputation": "Reputation",
"read_more": "read more",
"more": "More",
"posted_ago_by_guest": "posted %1 by Guest",
"posted_ago_by": "posted %1 by %2",
"posted_ago": "posted %1",

View File

@@ -4,6 +4,14 @@
"owner": "Group Owner",
"new_group": "Create New Group",
"no_groups_found": "There are no groups to see",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept_all": "Accept All",
"pending.reject_all": "Reject All",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
"invited.uninvite": "Rescind Invitation",
"invited.search": "Search for a user to invite to this group",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
@@ -11,11 +19,31 @@
"details.title": "podrobnosti skupiny",
"details.members": "Seznam členů",
"details.pending": "Pending Members",
"details.invited": "Invited Members",
"details.has_no_posts": "Členové této skupiny dosud neodeslali ani jeden příspěvek.",
"details.latest_posts": "Nejnovější příspěvky",
"details.private": "Private Group",
"details.public": "Public Group",
"details.private": "Private",
"details.grant": "Grant/Rescind Ownership",
"details.kick": "Kick",
"details.owner_options": "Group Administration",
"details.group_name": "Group Name",
"details.member_count": "Member Count",
"details.creation_date": "Creation Date",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.delete_group": "Delete Group",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
"event.deleted": "The group \"%1\" has been deleted",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
"membership.reject": "Reject"
}

View File

@@ -1,5 +1,7 @@
{
"username": "Uživatelské jméno / Email",
"username-email": "Username / Email",
"username": "Username",
"email": "Email",
"remember_me": "Zapamatovat si mě?",
"forgot_password": "Zapomněli jste heslo?",
"alternative_logins": "Další způsoby přihlášení",

View File

@@ -15,7 +15,12 @@
"chat.seven_days": "7 dní",
"chat.thirty_days": "30 dní",
"chat.three_months": "3 měsíce",
"composer.compose": "Compose",
"composer.show_preview": "Show Preview",
"composer.hide_preview": "Hide Preview",
"composer.user_said_in": "%1 said in %2:",
"composer.user_said": "%1 said:",
"composer.discard": "Are you sure you wish to discard this post?"
"composer.discard": "Are you sure you wish to discard this post?",
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown"
}

View File

@@ -2,6 +2,7 @@
"title": "Upozornění",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"mark_all_read": "Mark all notifications read",
"back_to_home": "Back to %1",
"outgoing_link": "Odkaz mimo fórum",
"outgoing_link_message": "You are now leaving %1.",
@@ -19,9 +20,9 @@
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_mentioned_you_in": "<strong>%1</strong> mentioned you in <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> started following you.",
"new_register": "<strong>%1</strong> sent a registration request.",
"email-confirmed": "Email Confirmed",
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
"email-confirm-error": "An error occurred...",
"email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.",
"email-confirm-sent": "Confirmation email sent."
}

View File

@@ -5,14 +5,17 @@
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"tags": "Topics tagged under \"%1\"",
"tags": "Tags",
"tag": "Topics tagged under \"%1\"",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.topics": "Topics created by %1",
"user.groups": "%1's Groups",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings",
"user.watched": "Topics watched by %1",
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:"
}

View File

@@ -6,6 +6,7 @@
"year": "Year",
"alltime": "All Time",
"no_recent_topics": "There are no recent topics.",
"no_popular_topics": "There are no popular topics.",
"there-is-a-new-topic": "There is a new topic.",
"there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
"there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",

View File

@@ -14,5 +14,6 @@
"register_now_button": "Zaregistrovat se",
"alternative_registration": "Jiný způsob registrace",
"terms_of_use": "Podmínky",
"agree_to_terms_of_use": "Souhlasím s Podmínkami"
"agree_to_terms_of_use": "Souhlasím s Podmínkami",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
}

View File

@@ -10,5 +10,8 @@
"enter_email": "Zadejte svou <strong>emailovou adresu</strong> a my Vám pošleme informace, jak můžete obnovit své heslo.",
"enter_email_address": "Zadejte emailovou adresu",
"password_reset_sent": "Obnova hesla odeslána",
"invalid_email": "Špatný email / Email neexistuje!"
"invalid_email": "Špatný email / Email neexistuje!",
"password_too_short": "The password entered is too short, please pick a different password.",
"passwords_do_not_match": "The two passwords you've entered do not match.",
"password_expired": "Your password has expired, please choose a new password"
}

View File

@@ -1,7 +1,40 @@
{
"results_matching": "%1 result(s) matching \"%2\", (%3 seconds)",
"no-matches": "No matches found",
"advanced-search": "Advanced Search",
"in": "In",
"by": "By",
"posted-by": "Posted by"
"titles": "Titles",
"titles-posts": "Titles and Posts",
"posted-by": "Posted by",
"in-categories": "In Categories",
"search-child-categories": "Search child categories",
"reply-count": "Reply Count",
"at-least": "At least",
"at-most": "At most",
"post-time": "Post time",
"newer-than": "Newer than",
"older-than": "Older than",
"any-date": "Any date",
"yesterday": "Yesterday",
"one-week": "One week",
"two-weeks": "Two weeks",
"one-month": "One month",
"three-months": "Three months",
"six-months": "Six months",
"one-year": "One year",
"sort-by": "Sort by",
"last-reply-time": "Last reply time",
"topic-title": "Topic title",
"number-of-replies": "Number of replies",
"number-of-views": "Number of views",
"topic-start-date": "Topic start date",
"username": "Username",
"category": "Category",
"descending": "In descending order",
"ascending": "In ascending order",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
}

View File

@@ -1,7 +1,7 @@
{
"no_tag_topics": "Není zde žádné téma s tímto tagem.",
"tags": "Tagy",
"enter_tags_here": "Zde vložte tagy. Po každém vložení tagu zmáčkněte enter.",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
"enter_tags_here_short": "Vložte tagy ...",
"no_tags": "Zatím tu není žádný tag."
}

View File

@@ -5,6 +5,7 @@
"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!",
"topic_is_deleted": "This topic is deleted!",
"profile": "Profil",
"posted_by": "Posted by %1",
"posted_by_guest": "Posted by Guest",
@@ -12,6 +13,7 @@
"notify_me": "Sledovat toto téma",
"quote": "Citovat",
"reply": "Odpovědět",
"guest-login-reply": "Log in to reply",
"edit": "Upravit",
"delete": "Smazat",
"purge": "Purge",

View File

@@ -5,5 +5,6 @@
"mark_as_read": "Označit jako přeštené",
"selected": "Vybrané",
"all": "Vše",
"all_categories": "All categories",
"topics_marked_as_read.success": "Téma bylo označeno jako přečtené!"
}

View File

@@ -2,12 +2,16 @@
"banned": "Banned",
"offline": "Offline",
"username": "Uživatelské jméno",
"joindate": "Join Date",
"postcount": "Post Count",
"joindate": "Datum ragistrace",
"postcount": "Počet příspěvků",
"email": "Email",
"confirm_email": "Potvrdit email",
"ban_account": "Zablokovat účet",
"ban_account_confirm": "Opravdu chcete zablokovat tohoto uživatele?",
"unban_account": "Odblokovat účet",
"delete_account": "Vymazat účet",
"delete_account_confirm": "Are you sure you want to delete your account? <br /><strong>This action is irreversible and you will not be able to recover any of your data</strong><br /><br />Enter your username to confirm that you wish to destroy this account.",
"delete_account_confirm": "Opravdu chcete smazat váš účet? <br /><strong>Tato akce je nevratná a nebude možné obnovit žádné vaše data.</strong><br /><br /> Pro potvrzení smazání účtu napište vaše uživatelské jméno.",
"delete_this_account_confirm": "Are you sure you want to delete this account? <br /><strong>This action is irreversible and you will not be able to recover any data</strong><br /><br />",
"fullname": "Jméno a příjmení",
"website": "Webové stránky",
"location": "Poloha",
@@ -18,39 +22,40 @@
"profile_views": "Zobrazení profilu",
"reputation": "Reputace",
"favourites": "Oblíbené",
"watched": "Watched",
"watched": "Sledován",
"followers": "Sledují ho",
"following": "Sleduje",
"aboutme": "O mně",
"signature": "Podpis",
"gravatar": "Gravatar",
"birthday": "Datum narození",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"follow": "Sledovat",
"unfollow": "Nesledovat",
"more": "Více",
"profile_update_success": "Profil byl úspěšně aktualizován!",
"change_picture": "Změnit obrázek",
"edit": "Upravit",
"uploaded_picture": "Nahraný obrázek",
"upload_new_picture": "Nahrát nový obrázek",
"upload_new_picture_from_url": "Upload New Picture From URL",
"upload_new_picture_from_url": "Nahrát nový obrázek z URL",
"current_password": "Současné heslo",
"change_password": "Změnit heslo",
"change_password_error": "Neplatné heslo",
"change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "Password too short!",
"change_password_error_match": "Passwords must match!",
"change_password_error_privileges": "You do not have the rights to change this password.",
"change_password_success": "Your password is updated!",
"change_password_error_wrong_current": "Současné heslo není správné!",
"change_password_error_length": "Heslo je příliš krátké!",
"change_password_error_match": "Hesla se neshodují!",
"change_password_error_privileges": "Nemáte práva změnit toto heslo.",
"change_password_success": "Heslo je aktualizované!",
"confirm_password": "Potvrzení hesla",
"password": "Heslo",
"username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
"upload_picture": "Nahrát obrázek",
"upload_a_picture": "Nahrát obrázek",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"image_spec": "Nahrávat lze pouze soubory PNG, JPG a GIF",
"settings": "Nastavení",
"show_email": "Zobrazovat můj email v profilu",
"show_fullname": "Show My Full Name",
"show_fullname": "Zobrazovat celé jméno",
"restrict_chats": "Only allow chat messages from users I follow",
"digest_label": "Subscribe to Digest",
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
@@ -60,21 +65,24 @@
"digest_monthly": "Monthly",
"send_chat_notifications": "Send an email if a new chat message arrives and I am not online",
"send_post_notifications": "Send an email when replies are made to topics I am subscribed to",
"settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
"has_no_follower": "Tohoto uživatele nikdo nesleduje :(",
"follows_no_one": "Tento uživatel nikoho nesleduje :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.",
"has_no_watched_topics": "This user didn't watch any topics yet.",
"has_no_posts": "This user hasn't posted anything yet.",
"has_no_topics": "This user hasn't posted any topics yet.",
"has_no_watched_topics": "This user hasn't watched any topics yet.",
"email_hidden": "Skrytý email",
"hidden": "skrytý",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"paginate_description": "Paginate topics and posts instead of using infinite scroll",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page",
"notification_sounds": "Play a sound when you receive a notification.",
"notification_sounds": "Play a sound when you receive a notification",
"browsing": "Browsing Settings",
"open_links_in_new_tab": "Open outgoing links in new tab?",
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "Enable In-Topic Searching",
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen.",
"follow_topics_you_reply_to": "Follow topics that you reply to.",
"follow_topics_you_create": "Follow topics you create."
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
"follow_topics_you_reply_to": "Follow topics that you reply to",
"follow_topics_you_create": "Follow topics you create",
"grouptitle": "Select the group title you would like to display",
"no-group-title": "No group title"
}

View File

@@ -5,8 +5,17 @@
"search": "Vyhledávat",
"enter_username": "Zadej uživatelské jméno k hledání",
"load_more": "Načíst další",
"users-found-search-took": "Nazelezeno: %1 uživetel(ů)! Vyhledání trvalo %2 ms.",
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
"filter-by": "Filter By",
"online-only": "Online only",
"picture-only": "Picture only"
"picture-only": "Picture only",
"invite": "Invite",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
"popular_topics": "Popular Topics",
"unread_topics": "Unread Topics",
"categories": "Categories",
"tags": "Tags",
"map": "Map"
}

View File

@@ -0,0 +1,12 @@
{
"new_topic_button": "Nyt emne",
"guest-login-post": "Log ind",
"no_topics": "<strong>Der er ikke nogen nye emner i denne kategori.</strong><br /> Hvorfor prøver du ikke at lave et?",
"browsing": "browse",
"no_replies": "Ingen har svaret",
"share_this_category": "Del denne kategori",
"watch": "Overvåg",
"ignore": "Ignorer",
"watch.message": "Du overvåger nu opdateringer fra denne kategori",
"ignore.message": "Du ignorere nu opdateringer fra denne kategori"
}

View File

@@ -0,0 +1,32 @@
{
"password-reset-requested": "Vi skal anmode dig om at nulstille dit kodeord - %1!",
"welcome-to": "Velkommen til %1",
"invite": "Invitation fra %1",
"greeting_no_name": "Hej",
"greeting_with_name": "Hej %1",
"welcome.text1": "Tak for at du registrerede dig hos %1!",
"welcome.text2": "For at færdiggøre din konto, har vi brug for at verificere at du ejer den email adresse du registerede med.",
"welcome.text3": "En administrator har accepteret din registreringsansøgning. Du kan logge ind med dit brugernavn og adgangskode nu.",
"welcome.cta": "Klik her for at bekræfte din email adresse.",
"invitation.text1": "%1 har inviteret dig til at deltage i %2",
"invitation.ctr": "Klik her for at oprette din konto.",
"reset.text1": "Vi har modtaget en anmodning om at nulstille dit kodeord, måske fordi du har glemt det. Hvis det ikke er tilfældet, venligst ignorer denne email.",
"reset.text2": "For at fortsætte med at nulstille kodeordet, venligst klik på dette link:",
"reset.cta": "Klik her for at nulstille dit kodeord. ",
"reset.notify.subject": "Dit kodeord er nu ændret",
"reset.notify.text1": "Bemærk: %1 gang blev dit kodeord ændret.",
"reset.notify.text2": "Hvis du ikke godkendte dette, kontakt straks en administrator.",
"digest.notifications": "Du har ulæste notifikationer fra %1:",
"digest.latest_topics": "Nyeste emne fra %1",
"digest.cta": "Klik her for at gå til %1",
"digest.unsub.info": "Du har fået tilsendt dette sammendrag pga. indstillingerne i dit abonnement.",
"digest.no_topics": "Der har ikke været nogen aktive emner de/den sidste %1",
"notif.chat.subject": "Ny chat besked modtaget fra %1",
"notif.chat.cta": "Klik her for at forsætte med samtalen",
"notif.chat.unsub.info": "Denne chat notifikation blev sendt til dig pga. indstillingerne i dit abonnement.",
"notif.post.cta": "Klik her for a læse hele emnet",
"notif.post.unsub.info": "Denne indlægs notifikation var sendt pga. dine abonnering indstillinger.",
"test.text1": "Dette er en test email for at kontrollere, at den udgående email server er opsat korrekt i forhold til din NodeBB installation.",
"unsub.cta": "Klik her for at ændre disse indstillinger",
"closing": "Tak!"
}

View File

@@ -0,0 +1,90 @@
{
"invalid-data": "Ugyldig Data",
"not-logged-in": "Det ser ikke ud til at du er logget ind.",
"account-locked": "Din konto er blevet blokeret midlertidigt.",
"search-requires-login": "Du skal have en konto for at søge - log venligst ind eller registrer dig.",
"invalid-cid": "Ugyldig Kategori ID",
"invalid-tid": "Ugyldig Tråd ID",
"invalid-pid": "Ugyldig Indlæg ID",
"invalid-uid": "Ugyldig Bruger ID",
"invalid-username": "Ugyldig Brugernavn",
"invalid-email": "Ugyldig Email",
"invalid-title": "Ugylidt titel",
"invalid-user-data": "Ugyldig Bruger Data",
"invalid-password": "Ugyldig Adgangskode",
"invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode",
"invalid-search-term": "Ugyldig søgeterm",
"invalid-pagination-value": "Ugyldig sidetalsværdi",
"username-taken": "Brugernavn optaget",
"email-taken": "Emailadresse allerede i brug",
"email-not-confirmed": "Din email adresse er ikke blevet bekræftet endnu, venligst klik her for at bekrætige den.",
"email-not-confirmed-chat": "Du kan ikke chatte før din email er bekræftet, klik her for at bekræfte din email.",
"no-email-to-confirm": "Dette forum kræver bekræftelse af din email, klik her for at indtaste en email",
"email-confirm-failed": "Vi kunne ikke bekræfte din email, prøv igen senere.",
"confirm-email-already-sent": "Bekræftelses email er allerede afsendt, vent venligt %1 minut(ter) for at sende endnu en.",
"username-too-short": "Brugernavn er for kort",
"username-too-long": "Brugernavn er for langt",
"user-banned": "Bruger er bortvist",
"user-too-new": "Beklager, du er nødt til at vente %1 sekund(er) før du opretter dit indlæg",
"no-category": "Kategorien eksisterer ikke",
"no-topic": "Tråden eksisterer ikke",
"no-post": "Indlægget eksisterer ikke",
"no-group": "Gruppen eksisterer ikke",
"no-user": "Brugeren eksisterer ikke",
"no-teaser": "Teaser eksisterer ikke",
"no-privileges": "Du har ikke nok rettigheder til at udføre denne handling",
"no-emailers-configured": "Ingen email plugin er blevet indlæst, så en test email kunne ikke sendes",
"category-disabled": "Kategorien er deaktiveret",
"topic-locked": "Tråden er låst",
"post-edit-duration-expired": "Du kan kun redigere indlæg i %1 sekund(er) efter indlæg",
"still-uploading": "Venligst vent til overførslen er færdig",
"content-too-short": "Venligst indtast et længere indlæg. Indlægget skal mindst indeholde %1 karakter(er).",
"content-too-long": "Venligt indtast et kortere indlæg. Indlæg kan ikke være længere end %1 karakter(er).",
"title-too-short": "Venligst indtast en længere titel. Titlen skal mindst indeholde %1 karakter(er).",
"title-too-long": "Venligst indtast en kortere titel. Titlen kan ikke indeholde flere end %1 karakter(er).",
"too-many-posts": "Du kan højest skrive et indlæg hver %1 sekund(er) - venligst vent et øjeblik før næste indlæg",
"too-many-posts-newbie": "Som ny bruger kan du kun skrive et indlæg engang hvert %1. sekund() indtil du har optjent %2 omdømme point - venligst vent et øjeblik før næste indlæg.",
"tag-too-short": "Indtast et længere tag. Tags skal indeholde mindst %1 karakter(er).",
"tag-too-long": "Indtast et længere tag. Tags kan ikke være længere end %1 karakter(er).",
"not-enough-tags": "Ikke nok tags. Tråde skal have mindst %1 tag(s)",
"too-many-tags": "For mange tags. Tråde kan ikke have mere end %1 tag(s)",
"file-too-big": "Maksimum filstørrelse er %1 kB - venligst overfør en mindre fil",
"cant-vote-self-post": "Du kan ikke stemme på dit eget indlæg",
"already-favourited": "Du har allerede føjet dette indlæg til dine favoritter",
"already-unfavourited": "Du har allerede fjernet dette indlæg fra dine favoritter",
"cant-ban-other-admins": "Du kan ikke udlukke andre administatrorer!",
"cant-remove-last-admin": "Du er den eneste administrator. Tilføj en anden bruger som administrator før du fjerner dig selv som administrator",
"invalid-image-type": "Invalid billed type. De tilladte typer er: %1",
"invalid-image-extension": "Forkert billede filnavnsendelse",
"invalid-file-type": "Invalid fil type. Tilladte typer er: %1",
"group-name-too-short": "Gruppe navn for kort",
"group-already-exists": "Gruppen eksisterer allerede",
"group-name-change-not-allowed": "Ændring af gruppe navn er ikke tilladt",
"group-already-member": "Du er allerede en del af denne gruppe",
"group-needs-owner": "Denne grupper kræver mindst én ejer",
"group-already-invited": "Denne bruger er allerede blevet inviteret",
"group-already-requested": "Din medlemskabs anmodning er allerede blevet afsendt",
"post-already-deleted": "Dette indlæg er allerede blevet slettet",
"post-already-restored": "Dette indlæg er allerede blevet genskabt",
"topic-already-deleted": "Denne tråd er allerede blevet slettet",
"topic-already-restored": "Denne tråd er allerede blevet genskabt",
"cant-purge-main-post": "Du kan ikke udradere hoved indlægget, fjern venligt tråden istedet",
"topic-thumbnails-are-disabled": "Tråd miniaturebilleder er slået fra.",
"invalid-file": "Ugyldig fil",
"uploads-are-disabled": "Overførsel er slået fra",
"signature-too-long": "Beklager, din signatur kan ikke være længere end %1 karakter(er).",
"about-me-too-long": "Beklager, men din om mig side kan ikke være længere end %1 karakter(er).",
"cant-chat-with-yourself": "Du kan ikke chatte med dig selv!",
"chat-restricted": "Denne bruger har spæret adgangen til chat beskeder. Brugeren må følge dig før du kan chatte med ham/hende",
"too-many-messages": "Du har sendt for mange beskeder, vent venligt lidt.",
"reputation-system-disabled": "Vurderingssystem er slået fra.",
"downvoting-disabled": "Nedvurdering er slået fra",
"not-enough-reputation-to-downvote": "Du har ikke nok omdømme til at nedstemme dette indlæg",
"not-enough-reputation-to-flag": "Du har ikke nok omdømme til at vurdere dette indlæg",
"already-flagged": "Du har allerede vurderet dette indlæg",
"reload-failed": "NodeBB stødte på et problem under genindlæsningen : \"%1\". NodeBB vil fortsætte med en ældre version, og det er nok god ide at genoptage fra lige før du genindlæste siden.",
"registration-error": "Registeringsfejl",
"parse-error": "Noget gik galt under fortolknings er serverens respons",
"wrong-login-type-email": "Brug venligt din email til login",
"wrong-login-type-username": "Brug venligt dit brugernavn til login"
}

View File

@@ -0,0 +1,83 @@
{
"home": "Forside",
"search": "Søg",
"buttons.close": "Luk",
"403.title": "Adgang nægtet",
"403.message": "Det ser ud til du er stødt på en side du ikke har adgang til.",
"403.login": "Måske du skulle <a href='%1/login'>prøve og logge ind</a>?",
"404.title": "Ikke fundet",
"404.message": "Det ser ud til du er stødt på en side der ikke finder. Retuner til <a href='%1/'> forsiden</a>.",
"500.title": "Intern fejl.",
"500.message": "Ups! Ser ud til at noget gik galt!",
"register": "Tilmeld",
"login": "Log ind",
"please_log_in": "Venligst log ind",
"logout": "Log ud",
"posting_restriction_info": "Det er i øjeblikket kun muligt at skrive indlæg som registeret medlem, klik her for at logge ind.",
"welcome_back": "Velkommen tilbage",
"you_have_successfully_logged_in": "Du er nu logget ind",
"save_changes": "Gem ændringer",
"close": "Luk",
"pagination": "Sidetal",
"pagination.out_of": "%1 ud af %2",
"pagination.enter_index": "Indtast indeks",
"header.admin": "Administrator",
"header.categories": "Kategorier",
"header.recent": "Seneste",
"header.unread": "Ulæst",
"header.tags": "Etiket",
"header.popular": "Populære",
"header.users": "Bruger",
"header.groups": "Grupper",
"header.chats": "Chats",
"header.notifications": "Notifikationer",
"header.search": "Søg",
"header.profile": "Profil",
"notifications.loading": "Indlæser notifikationer",
"chats.loading": "Indlæser chats",
"motd.welcome": "Velkommen til NodeBB, fremtidens diskussion platform. ",
"previouspage": "Forrige side",
"nextpage": "Næste side",
"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.unfollow": "Du følger ikke længere %1!",
"alert.follow": "Du følger nu %1!",
"online": "Online",
"users": "Bruger",
"topics": "Emner",
"posts": "Indlæg",
"views": "Visninger",
"reputation": "Omdømme",
"read_more": "læs mere",
"more": "Mere",
"posted_ago_by_guest": "indsendt %1 af gæst",
"posted_ago_by": "indsendt %1 siden af %2",
"posted_ago": "Indsendt %1 siden",
"posted_in_ago_by_guest": "insendt i %1 %2 siden af gæst",
"posted_in_ago_by": "skrevet i %1 %2 af %3",
"posted_in_ago": "skrivet i %1 %2",
"replied_ago": "svaret for %1",
"user_posted_ago": "%1 skrev for %2",
"guest_posted_ago": "Gæst skrev for %1",
"last_edited_by_ago": "sidst redigeret af %1 for %2",
"norecentposts": "Ingen seneste indlæg",
"norecenttopics": "Ingen seneste tråde",
"recentposts": "Seneste indlæg",
"recentips": "Seneste loggede ind IPer",
"away": "Væk",
"dnd": "Vil ikke forstyres",
"invisible": "Usynlig",
"offline": "Offline",
"email": "Email",
"language": "Sprog",
"guest": "Gæst",
"guests": "Gæster",
"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",
"follow": "Følg",
"unfollow": "Følg ikke længere",
"delete_all": "Slet alt"
}

View File

@@ -0,0 +1,49 @@
{
"groups": "grupper",
"view_group": "se gruppe",
"owner": "Gruppe ejer",
"new_group": "Opret ny gruppe",
"no_groups_found": "Der er ingen grupper at se",
"pending.accept": "Accepter",
"pending.reject": "Afvis",
"pending.accept_all": "Acceptér Alle",
"pending.reject_all": "Afvis Alle",
"pending.none": "Der er ikke nogen afventene medlemmer i øjeblikket",
"invited.none": "Der er ingen inviterede medlemmer i øjeblikket",
"invited.uninvite": "Tilbagetræk invitation",
"invited.search": "Søg efter en bruger at invitere til denne gruppe",
"cover-instructions": "Træk og slip et billede, træk til positionen og tryk <strong>Gem</strong>",
"cover-change": "Ændre",
"cover-save": "Gem",
"cover-saving": "Gemmer",
"details.title": "gruppe detaljer",
"details.members": "liste over medlemmer",
"details.pending": "Verserende medlemmer",
"details.invited": "Inviterede Medlemmer",
"details.has_no_posts": "Medlemmer af denne gruppe har ikke oprettet indlæg.",
"details.latest_posts": "seneste indlæg",
"details.private": "Privat",
"details.grant": "Giv/ophæv ejerskab",
"details.kick": "Spark",
"details.owner_options": "Gruppe administration",
"details.group_name": "Gruppe navn",
"details.member_count": "Medlemsantal",
"details.creation_date": "Oprettelsesdato",
"details.description": "Beskrivelse",
"details.badge_preview": "Mærke forhåndsvisning",
"details.change_icon": "Skift ikon",
"details.change_colour": "Skift farve",
"details.badge_text": "Mærke tekst",
"details.userTitleEnabled": "Vis mærke",
"details.private_help": "Hvis aktiveret, så vil det kræve godkendelse af gruppe ejeren for at tilslutte sig en gruppe",
"details.hidden": "Skjult",
"details.hidden_help": "Hvis aktiveret, så vil denne gruppe ikke kunne ses i gruppelisten og bruhere skal inviteres manuelt",
"details.delete_group": "Delete Group",
"event.updated": "Gruppe detaljer er blevet opdateret",
"event.deleted": "Gruppen \"%1\" er blevet slettet",
"membership.accept-invitation": "Acceptér Invitation",
"membership.invitation-pending": "Afventende Invitationer",
"membership.join-group": "Bliv medlem af gruppe",
"membership.leave-group": "Forlad Gruppe",
"membership.reject": "Afvis"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Danish",
"code": "da",
"dir": "ltr"
}

View File

@@ -0,0 +1,11 @@
{
"username-email": "Brugernavn / Email",
"username": "Brugernavn",
"email": "Email",
"remember_me": "Husk mig?",
"forgot_password": "Glemt kodeord?",
"alternative_logins": "alternative logins",
"failed_login_attempt": "Login mislykkedes, venligt prøv igen.",
"login_successful": "Du har successfuldt logged in!",
"dont_have_account": "Har du ikke en konto?"
}

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