Compare commits

..

2396 Commits

Author SHA1 Message Date
NodeBB Misty
fb2f857af2 Incremented version number - v1.4.6 2017-04-19 19:06:05 +00:00
NodeBB Misty
7181bb4e1a Merge commit 'de81a340ec374d7103287b446ce3081bb3a020cc' into v1.x.x 2017-04-19 19:06:05 +00:00
Julian Lam
de81a340ec Revert "Incremented version number - v1.4.6"
This reverts commit 73d934f5ae.
2017-04-19 13:32:37 -04:00
NodeBB Misty
73d934f5ae Incremented version number - v1.4.6 2017-04-18 17:46:39 -04:00
barisusakli
9e3d8a8090 one more fix #5607 2017-04-18 13:55:18 -04:00
barisusakli
27a76fcfc9 closes #5607 2017-04-18 13:53:43 -04:00
barisusakli
b33d25b0b8 use name 2017-04-18 13:33:32 -04:00
barisusakli
bda3c2863b closes #5605 2017-04-18 13:32:47 -04:00
Julian Lam
c14160a85b Merge pull request #5603 from NodeBB/sounds-fix
Fix sounds playing through multiple tabs
2017-04-17 18:02:22 -04:00
Peter Jaszkowiak
2827db3309 Fix sounds playing through multiple tabs 2017-04-17 15:56:24 -06:00
barisusakli
20eac0de94 closes #5518 2017-04-17 12:23:05 -04:00
Misty (Bot)
6d7c70c911 Latest translations and fallbacks 2017-04-17 09:22:05 +00:00
barisusakli
fdee61b4f4 use deleteMany instead 2017-04-16 15:42:28 -04:00
barisusakli
cf6c4667c8 upgrade script to clear sessions 2017-04-16 15:31:50 -04:00
barisusakli
65a65b19c0 tests for #5600 2017-04-16 14:46:02 -04:00
barisusakli
185b6e5c8e #5600 2017-04-16 14:31:49 -04:00
barisusakli
9f8d80e3a4 closes #5600 2017-04-16 14:22:40 -04:00
Julian Lam
678db343b4 Merge pull request #5597 from NodeBB/chherypick-fixes
Cherrypick fixes from #5591
2017-04-15 18:27:12 -04:00
Peter Jaszkowiak
37c4218184 Fix error if ./nodebb build isn't called before tests 2017-04-15 16:10:43 -06:00
Peter Jaszkowiak
6e5a79842f Fix #5595 2017-04-15 16:10:42 -06:00
Peter Jaszkowiak
baa2a59f4c Fix ace editor not working 2017-04-15 16:10:28 -06:00
Julian Lam
98047be9ce Merge pull request #5596 from NodeBB/translator-fix
Centrally escape translator tokens in every topic title
2017-04-15 17:18:27 -04:00
Peter Jaszkowiak
e382bca610 Fix tests 2017-04-15 04:22:28 -06:00
Misty (Bot)
0e615e7b09 Latest translations and fallbacks 2017-04-15 09:22:15 +00:00
Peter Jaszkowiak
0fe10f5e86 Escape topic titles at the source, deduplicate 2017-04-15 01:38:42 -06:00
Peter Jaszkowiak
ecfca21abe Up composer 2017-04-15 00:50:12 -06:00
psychobunny
9670d7d762 up persona 2017-04-14 20:03:39 -04:00
psychobunny
2319af2904 up persona 2017-04-14 19:58:24 -04:00
Misty (Bot)
c2ba1c270f Latest translations and fallbacks 2017-04-14 09:22:18 +00:00
psychobunny
1179dd9503 up composer, closes #5586 2017-04-13 15:32:38 -04:00
psychobunny
b1ee7cc5b4 up persona 2017-04-13 15:18:11 -04:00
Peter Jaszkowiak
1fb48ef7a7 Fix #5592 (#5593)
* Fix #5592
Escape translation tokens in topic titles, descriptions, profile about, and post contents

* Fix tests
2017-04-13 21:37:54 +03:00
Julian Lam
c3febca9c8 Merge pull request #5577 from NodeBB/patch-pitaj
Use npm instead of vendor files
2017-04-12 23:43:50 -04:00
Peter Jaszkowiak
a8add6477c Fix merge conflicts 2017-04-12 21:29:54 -06:00
Julian Lam
a62a4e698f Merge pull request #5578 from NodeBB/utils-translator-require
Make utils and translator easier to require
2017-04-12 23:16:59 -04:00
Julian Lam
a117b559b8 Merge pull request #5590 from NodeBB/translator-fix
Fix #5588, translator ignores unclosed tokens
2017-04-12 22:48:36 -04:00
Peter Jaszkowiak
980e9026f3 Fix #5588, translator ignores unclosed tokens 2017-04-12 20:34:31 -06:00
Julian Lam
e9fb42eb03 Merge pull request #5589 from NodeBB/fix-require.main.require
Fix using `./nodebb` in other CWDs
2017-04-12 17:32:43 -04:00
Peter Jaszkowiak
f16a40d29e Add nodebb file to linter 2017-04-12 15:29:01 -06:00
Peter Jaszkowiak
75d291183d Fix using nodebb in other CWDs 2017-04-12 15:22:58 -06:00
Peter Jaszkowiak
9368e666d8 Fix failing test 2017-04-11 21:53:17 -06:00
Misty (Bot)
73b6b06294 Latest translations and fallbacks 2017-04-11 09:22:21 +00:00
Misty (Bot)
08f001063c Latest translations and fallbacks 2017-04-10 09:22:23 +00:00
Peter Jaszkowiak
010473e5cc Merge branch 'master' into patch-pitaj 2017-04-09 23:09:52 -06:00
Peter Jaszkowiak
dc4f2be156 Remove ace global for eslint 2017-04-09 21:47:05 -06:00
Julian Lam
126237e2c9 Merge pull request #5576 from pichalite/zxcvbn
Closes #5521
2017-04-09 16:52:52 -04:00
Peter Jaszkowiak
1892492505 Deprecate utils.walk, remove prototype modification 2017-04-08 21:02:06 -06:00
Peter Jaszkowiak
1ed571189c Make utils and translator easier to require
Move utils.walk to file.walk, backwards compatible
2017-04-08 20:27:52 -06:00
Peter Jaszkowiak
b53d3254dd buzz is no longer used 2017-04-08 19:05:10 -06:00
Peter Jaszkowiak
2c418fd2af Use npm bootstrap 2017-04-08 19:05:10 -06:00
Peter Jaszkowiak
0ef30e91ba Use ace-builds npm package instead of vendor
ace can be referenced as an r.js module, reduces acp bundle size
2017-04-08 19:05:10 -06:00
Peter Jaszkowiak
17ff8a4151 Enable passing paths as module sources 2017-04-08 19:05:10 -06:00
Misty (Bot)
12a426b7b9 Latest translations and fallbacks 2017-04-08 09:22:22 +00:00
pichalite
d4de345e87 syntax 2017-04-07 21:39:22 +00:00
pichalite
4c89497cc4 Closes #5521 2017-04-07 20:57:00 +00:00
Anil Mandepudi
da183e196a Fixes #5572 (#5575)
* Fixes #5572

* Adding trailing commas but in protest
2017-04-07 14:35:24 -04:00
Julian Lam
0fac75c055 Merge pull request #5573 from NodeBB/patch-pitaj
Fix #5563
2017-04-07 14:15:22 -04:00
Misty (Bot)
07b9bb6fb8 Latest translations and fallbacks 2017-04-07 09:22:36 +00:00
psychobunny
5985a8a7a3 closes #5574 2017-04-06 18:06:10 -04:00
Barış Soner Uşaklı
43f8678c7a update local config immediately 2017-04-06 17:59:46 -04:00
Barış Soner Uşaklı
8afdd71ef1 closes #5559 2017-04-06 17:44:25 -04:00
Peter Jaszkowiak
1deeaaeb39 Fix #5563 2017-04-06 15:20:07 -06:00
Misty (Bot)
bb0ec540bd Latest translations and fallbacks 2017-04-04 09:22:34 +00:00
Julian Lam
60990f28ad Merge pull request #5568 from NodeBB/patch-pitaj
`filter:teasers.get` provided with `uid`
2017-04-03 16:59:18 -04:00
Peter Jaszkowiak
8119b8c4ae filter:teasers.get provided with uid 2017-04-03 14:40:03 -07:00
André Zanghelini
03d432182b Fix postcount is expected to be Number (#5567) 2017-04-03 12:45:43 -04:00
psychobunny
53dac97800 closes #5560 2017-04-03 12:42:36 -04:00
Barış Soner Uşaklı
d88219b4d1 closes #5566 2017-04-03 06:35:20 -04:00
Misty (Bot)
0bea922a12 Latest translations and fallbacks 2017-04-03 09:22:20 +00:00
Misty (Bot)
60d35fdf05 Latest translations and fallbacks 2017-04-02 09:22:17 +00:00
Misty (Bot)
2feb19aa2d Latest translations and fallbacks 2017-04-01 09:22:12 +00:00
Julian Lam
b287c75e3c Merge pull request #5562 from NodeBB/patch-pitaj
Fix #5561
2017-03-31 16:47:06 -04:00
Peter Jaszkowiak
81696dd24a Fxi #5561 2017-03-31 14:45:03 -06:00
Julian Lam
8a8bd23de9 Merge pull request #5558 from NodeBB/patch-5538
Partial fix #5538
2017-03-30 08:56:14 -04:00
Peter Jaszkowiak
57696b22f4 Partial fix #5538 2017-03-30 03:17:45 -06:00
Julian Lam
a450cb869d up themes 2017-03-29 15:26:18 -04:00
Misty (Bot)
e9794224a8 Latest translations and fallbacks 2017-03-29 09:24:44 +00:00
Julian Lam
5fbbe898d0 fixes #5538 2017-03-28 12:17:20 -04:00
Julian Lam
1594a84e1c fixes #5536 2017-03-28 12:13:44 -04:00
Julian Lam
a63459dc98 Merge branch 'master' of github.com:NodeBB/NodeBB 2017-03-28 12:13:30 -04:00
Misty (Bot)
8d4a32dc27 Latest translations and fallbacks 2017-03-28 09:24:51 +00:00
Julian Lam
15506c30a4 updates es search translation 2017-03-27 14:38:13 -04:00
husseinwalli
3876a88252 Added additional parameters to user creation method (#5496)
Treating picture, location and birthday similar to data.email as optional parameters to be passed to the create a user
2017-03-27 14:05:06 -04:00
Peter Jaszkowiak
ff09d6e0dd Fix #5549, improve tpl compilation (#5551) 2017-03-27 13:53:26 -04:00
Misty (Bot)
c1c96668af Latest translations and fallbacks 2017-03-27 09:24:50 +00:00
Barış Soner Uşaklı
6b0a907ede closes #5552 2017-03-26 15:12:28 +03:00
Misty (Bot)
2a2ed96a07 Latest translations and fallbacks 2017-03-26 09:24:22 +00:00
Julian Lam
42dc496572 Merge pull request #5550 from NodeBB/patch_5543
Remove duplicate slugify
2017-03-25 16:29:14 -04:00
Misty (Bot)
114f87e78c Latest translations and fallbacks 2017-03-25 09:22:16 +00:00
Peter Jaszkowiak
14ed0be4f7 Remove duplicate slugify 2017-03-24 14:43:58 -06:00
Julian Lam
a1f87a5d7f added tests for #5545 2017-03-24 15:52:33 -04:00
Julian Lam
a49e647de3 fixes #5545 again 2017-03-24 14:46:51 -04:00
Julian Lam
31b6d47f88 fixes #5545 2017-03-24 14:36:54 -04:00
Julian Lam
c84e54c6c6 Merge pull request #5544 from NodeBB/patch_5543
Fix #5543
2017-03-24 13:32:32 -04:00
Peter Jaszkowiak
a7677063de Rename to uniqueUsername 2017-03-24 10:33:38 -06:00
Peter Jaszkowiak
642306e69c Fix #5543 2017-03-24 10:28:18 -06:00
Misty (Bot)
3319a72679 Latest translations and fallbacks 2017-03-24 09:22:18 +00:00
Julian Lam
6060b8e13b fix tests 2017-03-23 14:39:46 -04:00
Aziz Khoury
6682e048ea wrapImagesInLinks with <a download> attribute
if the `src` of the `img` does not have an extension, most browsers will trigger a download with whatever filename is set, also without an extension, so when it's opened in any OS, it wont have a default application to open it with.

So, In this case, if the `alt` attribute has an extension (meaning if it looks like filename) - we use that with the html5 [`download` attr](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download)

The PR does not affect any src if they have an extension.
2017-03-22 12:19:31 +02:00
Julian Lam
b6134b160e moved auto_reconnect out of socketOptions object for Mongo 2017-03-21 15:55:24 -04:00
Julian Lam
db84296373 Merge pull request #5539 from NodeBB/julianlam-patch-1
Up MongoDB dependency to v2.2.25
2017-03-21 14:22:17 -04:00
Julian Lam
9714e3c26b Up MongoDB dependency to v2.2.25
This is a PR to see if tests go 💥
2017-03-21 14:01:41 -04:00
Ben Lubar
7f713ee822 Admin option to allow all users to view votes (#5534)
* Admin option to allow all users to view votes

* Fix </strong></strong>
2017-03-17 14:08:47 -04:00
Misty (Bot)
da1858f674 Incremented version number 2017-03-16 14:58:24 -04:00
Misty (Bot)
d19e59f1e1 Incremented version number 2017-03-16 18:57:33 +00:00
Misty (Bot)
f5e8a40d79 Merge commit '449352d8996b4c98be67052fbb5b68fdc65cd0f2' into v1.x.x 2017-03-16 18:57:33 +00:00
barisusakli
449352d899 wait for all routes to load before listening 2017-03-16 11:24:36 +03:00
Julian Lam
2ef71e22aa Merge pull request #5532 from NodeBB/patch_5491
Fix tests for #5491 fix
2017-03-15 23:11:09 -04:00
Peter Jaszkowiak
8f8babf90b Fix tests 2017-03-15 20:09:07 -07:00
Julian Lam
23d4497c73 Merge pull request #5531 from NodeBB/patch_5491
Fix #5491
2017-03-15 23:01:42 -04:00
Peter Jaszkowiak
8c45411ccc Fix #5491 2017-03-15 20:00:05 -07:00
Julian Lam
33bf930bb9 fixes #5528 2017-03-15 13:49:35 -04:00
barisusakli
8d7283e6c7 dont minify if file ends with .min.js #5529 2017-03-15 20:33:33 +03:00
barisusakli
ff4c7ab3bb fix tests 2017-03-15 12:49:08 +03:00
barisusakli
6a4b082080 closes #5524 2017-03-15 12:19:09 +03:00
Julian Lam
6d444ccacf Merge pull request #5526 from NodeBB/patch_5346
Fix #5346
2017-03-14 09:52:42 -04:00
Misty (Bot)
2106050bdc Latest translations and fallbacks 2017-03-14 09:22:41 +00:00
Peter Jaszkowiak
c199075d98 Fix #5346 2017-03-13 20:20:41 -07:00
psychobunny
8a6665a26c up lav, closes #5525 2017-03-13 16:54:28 -04:00
psychobunny
4a33f45b1e use writeFileSync for synchronous fs write operations - nodejs 7.x 2017-03-13 13:57:35 -04:00
Barış Soner Uşaklı
0396e9300b Merge pull request #5500 from RoiEXLab/fix-admin-search
Fix admin Search
2017-03-13 09:58:30 +02:00
barisusakli
90b8a3afd0 refactor topics/delete.js 2017-03-12 21:38:53 +03:00
Misty (Bot)
9f1a2b0cc9 Latest translations and fallbacks 2017-03-12 09:22:16 +00:00
barisusakli
0478e9c98c lint 2017-03-11 19:37:34 +03:00
barisusakli
37be43a3c5 async 2017-03-11 18:32:00 +03:00
barisusakli
27b030a71c test for #5523 2017-03-11 16:43:31 +03:00
Misty (Bot)
3e93975595 Latest translations and fallbacks 2017-03-11 09:22:17 +00:00
psychobunny
9dc54f801e up persona 2017-03-10 14:55:52 -05:00
psychobunny
286d0ab203 prevent tagsinput initialization from flagging as unsaved 2017-03-10 14:40:10 -05:00
psychobunny
5ca9e5e14c ACP: distinguish <small> from regular text 2017-03-10 14:36:35 -05:00
psychobunny
62f445ad7f ACP: added tagsinput to other fields that are "comma separated" 2017-03-10 14:36:35 -05:00
barisusakli
bb146e049c fix lint 2017-03-10 22:36:09 +03:00
psychobunny
debe34b96c better styling for tagsinput in ACP and added it to general -> keywords 2017-03-10 14:25:37 -05:00
barisusakli
3b41c40b93 refactor deleter code to use unixtimestamp 2017-03-10 22:22:08 +03:00
psychobunny
447b7b02ca use tagsinput for #5439 instead 2017-03-10 14:12:17 -05:00
psychobunny
f2eb4b8083 closes #5439 2017-03-10 14:03:07 -05:00
psychobunny
5aa45e9181 up persona 2017-03-10 13:37:02 -05:00
psychobunny
b3f8428691 closes #5510 2017-03-10 13:36:24 -05:00
Misty (Bot)
dc4d394cd5 Latest translations and fallbacks 2017-03-10 09:22:19 +00:00
barisusakli
5e0de4b8fb closes #5517 2017-03-10 12:22:10 +03:00
psychobunny
8da8e4d8c3 closes #5469 2017-03-09 16:50:26 -05:00
psychobunny
fd8e647ef5 closes #5506 2017-03-09 16:47:07 -05:00
barisusakli
0c7dee05ef fix lint 2017-03-10 00:38:34 +03:00
barisusakli
92fa9fecb6 add mongodb connection options #3670
increase reconnect tries
add keepAlive setting
set autoReconnect to true, should be on by default
2017-03-10 00:31:50 +03:00
barisusakli
0c8058ba9d closes #5516 2017-03-09 22:36:28 +03:00
Julian Lam
4713e0d81a Merge pull request #5514 from manolino/v1.x.x
apple-touch-icon for Web App on IOS
2017-03-09 14:22:40 -05:00
barisusakli
1c1d97dd54 up spam be gone 2017-03-09 21:32:43 +03:00
barisusakli
74d2835a1f escape body class parts 2017-03-09 20:18:42 +03:00
barisusakli
3d719eec99 enable sigs after test 2017-03-09 20:18:30 +03:00
barisusakli
8d493bf3b0 post parse test 2017-03-09 19:52:48 +03:00
barisusakli
c619b850ce fix tests 2017-03-09 17:28:19 +03:00
barisusakli
57691d9ad8 test for system group rename 2017-03-09 17:18:30 +03:00
manolino
562b088423 apple-touch-icon for Web App on IOS
route apple-touch-icon not serving touchicon-orig.png. I made needed
correction to file path.
Now works with new /assets and strategy.
2017-03-08 16:32:50 -06:00
psychobunny
9f2e5e9c4b closes #4685 2017-03-08 11:31:58 -05:00
Julian Lam
364b819a42 moving sanity checks above contentLen calculation 2017-03-08 09:41:32 -05:00
Julian Lam
fdb4766728 wow. 2017-03-08 09:32:55 -05:00
Julian Lam
5359a14bac better handling of redactor post length calculation on post edit 2017-03-08 09:19:45 -05:00
Misty (Bot)
92ad6bb4e8 Latest translations and fallbacks 2017-03-08 09:22:29 +00:00
Julian Lam
1102ca8ebb fix issue where an auto-redirect to SSO on login route was failing if invoked via API call (ajaxify) 2017-03-07 14:35:38 -05:00
barisusakli
8a123f7c1c closes #5509 2017-03-07 16:13:09 +03:00
barisusakli
b7e6104bbc closes #5511 2017-03-07 15:59:50 +03:00
barisusakli
69c6ee5834 closes #5483 2017-03-07 13:38:31 +03:00
barisusakli
992e3128bd closes #5499 2017-03-07 13:09:19 +03:00
Julian Lam
f732d6c1b9 Merge pull request #5501 from RoiEXLab/add-osd-functionality
Add OpenSearchDocument XML (#5399)
2017-03-06 15:10:10 -05:00
RoiEX
33e474759b Change var names 2017-03-06 21:00:20 +01:00
RoiEX
6420e22453 Remove uneccessary curly brackets 2017-03-06 20:43:06 +01:00
RoiEX
fcda832052 Add spaces 2017-03-06 20:39:26 +01:00
RoiEX
0f9530bbc0 Shrink JSON fix 2017-03-06 20:24:00 +01:00
RoiEX
f1b4a9b786 Shrink JSON 2017-03-06 20:23:34 +01:00
RoiEX
186c1f40e9 Refactor Code 2017-03-06 20:07:06 +01:00
RoiEX
710377ceea Remove space 2017-03-06 19:51:53 +01:00
RoiEX
603d45fbfa Changed Serving Method 2017-03-06 19:47:03 +01:00
Julian Lam
13edde2b30 Merge pull request #5505 from AccaliaDeElementia/fix-avatar-cropper
fix: auto cropper on image upload selects maximum image area by default
2017-03-06 12:19:54 -05:00
Julian Lam
8226fd6566 enhancing™️ post reply length checker to account for line breaks in redactor 2017-03-06 09:40:19 -05:00
Accalia de Elementia
743a7e00b4 fix: auto cropper on image upload selects maximum image area by default 2017-03-06 13:14:15 +00:00
barisusakli
f6721c249f up composer 2017-03-06 14:37:46 +03:00
barisusakli
531df7bd09 closes #5504 2017-03-06 13:54:43 +03:00
RoiEX
4082ca40c1 Add last comma 2017-03-05 15:20:35 +01:00
RoiEX
0710c6488d Fix trailing commas 2017-03-05 15:15:41 +01:00
RoiEX
eca150f392 Fix Tests 2017-03-05 15:10:35 +01:00
RoiEX
431f5e1f0f Add missing dependency
This deoendency is required by rss, but travis doesn't seem to notice that
2017-03-05 14:56:50 +01:00
RoiEX
f761191fca Add OSD 2017-03-05 14:45:30 +01:00
RoiEX
c517733e34 Fix admin Search 2017-03-05 11:38:40 +01:00
barisusakli
e85e35cf0c closes #5497 2017-03-05 00:46:18 +03:00
Misty (Bot)
99dff11462 Latest translations and fallbacks 2017-03-04 09:22:16 +00:00
barisusakli
ab9f4ad636 test bookmark tru socket.io 2017-03-03 21:49:14 +03:00
barisusakli
324e5be7bd privileges tests 2017-03-03 21:04:01 +03:00
barisusakli
a3b4c83e8b remove description from categories
it gets added in src/meta/tags
2017-03-03 19:59:37 +03:00
barisusakli
ea871384d8 remove fallbacks 2017-03-03 16:45:18 +03:00
barisusakli
3b8d14bf12 closes #5493 2017-03-03 16:15:01 +03:00
barisusakli
54c951cc81 fix tests 2017-03-02 22:12:56 +03:00
barisusakli
4369a6d290 more user tests 2017-03-02 21:58:33 +03:00
barisusakli
bce1208e2f make uploadFile public 2017-03-02 20:51:03 +03:00
barisusakli
63b3c29a1a test invalid data 2017-03-02 19:21:56 +03:00
barisusakli
cd448f90cd more topic tests 2017-03-02 19:03:49 +03:00
barisusakli
202bafa3e3 add images to bundle 2017-03-02 18:21:01 +03:00
barisusakli
5ca8456340 move image code to client/topic/images 2017-03-02 18:11:31 +03:00
barisusakli
d60930a51d test latest member posts 2017-03-02 17:59:45 +03:00
barisusakli
b060bda8a0 some more refactors 2017-03-02 17:25:32 +03:00
barisusakli
65cf7a01ec test for recent posts, fix redirect test 2017-03-02 16:29:17 +03:00
barisusakli
b1b87d339f more refactors 2017-03-02 16:11:11 +03:00
barisusakli
bc8d297377 move out error and 404 controllers 2017-03-02 14:57:33 +03:00
barisusakli
284485c885 check data.config 2017-03-02 10:51:05 +03:00
barisusakli
2188036148 controllers/users refactor 2017-03-02 00:14:30 +03:00
barisusakli
566ff95d3c call methods directly 2017-03-01 23:22:17 +03:00
barisusakli
3e396a8553 sitemap refactor 2017-03-01 23:19:34 +03:00
barisusakli
1bee91fa22 groups refactor 2017-03-01 22:42:16 +03:00
psychobunny
2ccf60a6ec fixed duplicate uninstall button 2017-03-01 13:49:55 -05:00
Julian Lam
b85dcb2570 lint 2017-03-01 11:28:07 -05:00
Julian Lam
5411b4c234 Merge pull request #5464 from NodeBB/assets-images-upgrade
Upgrade script for prepending `/assets` in config URLs
2017-03-01 10:54:33 -05:00
Barış Soner Uşaklı
fecdbc969f fix set call 2017-03-01 17:47:59 +02:00
Barış Soner Uşaklı
c5f40e3cf5 fix indents 2017-03-01 17:42:50 +02:00
Barış Soner Uşaklı
6222b55dd8 Merge branch 'master' into assets-images-upgrade 2017-03-01 17:40:44 +02:00
barisusakli
ac84e447dc closes #5492 2017-03-01 17:37:17 +03:00
Peter Jaszkowiak
b96b983552 Upgrade script for prepending /assets in config
Fix for sound settings upgrade script to upgrade user sound settings even if admin settings weren't set
2017-02-28 13:57:24 -07:00
barisusakli
2e47cf4db3 intersititial test 2017-02-28 16:42:10 +03:00
barisusakli
8a0cf6c0ac more admin socket tests 2017-02-28 15:16:49 +03:00
barisusakli
bb1045c5a0 remove unused require 2017-02-28 12:29:49 +03:00
barisusakli
ef93ef3dd4 if user does not have settings object skip 2017-02-28 12:23:42 +03:00
barisusakli
feb359f7d4 closes #5479 2017-02-27 20:16:44 +03:00
Julian Lam
8166f30b90 abort sound upgrade if no sounds set in config 2017-02-27 12:15:38 -05:00
Julian Lam
039f80c5aa added null check for #5482 2017-02-27 10:16:16 -05:00
Julian Lam
4d8bebcd81 Merge pull request #5482 from NodeBB/sounds-fix-5476
Upgrade script for new sounds system
2017-02-27 10:02:23 -05:00
Peter Jaszkowiak
da3cb0492c Verbose instead 2017-02-26 14:08:27 -07:00
Misty (Bot)
2bbf3c4f66 Latest translations and fallbacks 2017-02-26 09:22:49 +00:00
Peter Jaszkowiak
20d250bceb Upgrade script for new sounds system 2017-02-25 23:07:43 -07:00
Julian Lam
0213ca4bb1 Merge pull request #5477 from NodeBB/sounds-fix-5476
Fix sounds issue
2017-02-25 22:08:31 -05:00
Peter Jaszkowiak
007051c14c Fix #5476 2017-02-25 19:51:49 -07:00
barisusakli
0e7740af32 fix tests for subfolder installs 2017-02-25 16:04:04 +03:00
barisusakli
347761173a helpers tests 2017-02-25 15:10:23 +03:00
Misty (Bot)
a22909dbe8 Latest translations and fallbacks 2017-02-25 09:22:36 +00:00
barisusakli
6aa8c8aa94 merge 2017-02-25 11:17:56 +03:00
barisusakli
fa08498a9e closes #5480 2017-02-25 11:01:35 +03:00
psychobunny
2a311d2ff6 printing initialization message twice for some reason 2017-02-24 16:37:30 -05:00
psychobunny
09a1ed0869 Merge pull request #5371 from kingjan1999/master
Update FontAwesome to 4.7.0
2017-02-24 16:33:38 -05:00
Misty (Bot)
00a67b97ce Incremented version number 2017-02-24 13:47:46 -05:00
Julian Lam
995f8296a4 linting 2017-02-24 12:03:47 -05:00
Julian Lam
b5f8fc815e re-allowing pluplus in for loops 2017-02-24 11:53:00 -05:00
Julian Lam
e71bd7a27f Merge branch 'master' into styleguide 2017-02-24 11:45:04 -05:00
Misty (Bot)
92691782e6 Incremented version number 2017-02-24 15:45:36 +00:00
Misty (Bot)
fe582d8a7b Merge commit '048eb8a320a217c5e692c598c86a7661bd5eb2c5' into v1.x.x 2017-02-24 15:45:36 +00:00
barisusakli
048eb8a320 some helper tests 2017-02-24 18:06:23 +03:00
barisusakli
04b07e292c thumb tests 2017-02-24 17:34:34 +03:00
barisusakli
ca1fe557c7 topic controller tests 2017-02-24 16:26:19 +03:00
barisusakli
3a87f2566a more group tests 2017-02-24 15:05:00 +03:00
barisusakli
b7d5bc7dc8 more group tests 2017-02-24 12:54:16 +03:00
Misty (Bot)
3509e12748 Latest translations and fallbacks 2017-02-24 09:22:21 +00:00
Peter Jaszkowiak
f7a964474d Ignore log files 2017-02-23 20:00:30 -07:00
Peter Jaszkowiak
dd2b930824 Resolve merge conflicts, minify only .js files 2017-02-23 18:31:49 -07:00
Peter Jaszkowiak
ee9d7584e4 Fix test, misc 2017-02-23 17:29:08 -07:00
Julian Lam
cfc8884c9c Merge pull request #5475 from NodeBB/favicon-fix
Fixes #5474
2017-02-23 17:11:11 -05:00
Peter Jaszkowiak
8b533bb431 Fixes #5474 2017-02-23 14:19:11 -07:00
Julian Lam
4163ce0218 Merge pull request #5473 from pichalite/acp-tags
ACP manage tags page UI changes
2017-02-23 15:49:32 -05:00
pichalite
1d5b3cc73f ACP manage tags page UI changes 2017-02-23 20:45:05 +00:00
Barış Soner Uşaklı
35ff71c37d more tests 2017-02-23 23:06:00 +03:00
Julian Lam
14398a2d90 up markdown 2017-02-23 14:55:14 -05:00
Barış Soner Uşaklı
b4a32ee96f style changes 2017-02-23 22:42:45 +03:00
Barış Soner Uşaklı
743f758f75 set origin header to url 2017-02-23 21:29:28 +03:00
Julian Lam
25f6293821 using io.origins instead 2017-02-23 13:26:52 -05:00
Julian Lam
91d3ce1abc Revert "adding origin to new local ioConfig var, as per @barisusakli, re: #5472"
This reverts commit c1b1ff5c6e.
2017-02-23 13:26:52 -05:00
Barış Soner Uşaklı
c168ed43d4 up build timeout 2017-02-23 21:25:50 +03:00
psychobunny
7b7565ee8e Merge pull request #5468 from pichalite/acp-groups
ACP manage groups UI updates
2017-02-23 13:22:57 -05:00
Julian Lam
c1b1ff5c6e adding origin to new local ioConfig var, as per @barisusakli, re: #5472 2017-02-23 12:47:06 -05:00
Barış Soner Uşaklı
9079ee5b14 style 2017-02-23 20:44:23 +03:00
psychobunny
458cbfd603 show dashboard notice if forum is running in dev mode 2017-02-23 12:14:20 -05:00
psychobunny
a2847dc851 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2017-02-23 12:01:25 -05:00
Julian Lam
d4c2fc3bc8 closes #5472 2017-02-23 11:54:51 -05:00
psychobunny
ebe5ed7560 Merge pull request #5470 from pichalite/acp-templates
Fix ACP templates markup
2017-02-23 11:46:02 -05:00
barisusakli
0de21cb3ff fix tab 2017-02-23 17:12:46 +03:00
barisusakli
09d0ce4778 post tests 2017-02-23 17:02:54 +03:00
barisusakli
4cd4414d19 small change 2017-02-23 15:29:35 +03:00
Barış Soner Uşaklı
026c32f32b Merge pull request #5462 from NodeBB/minify-modules
Minify all module scripts in production
2017-02-23 13:15:05 +02:00
Misty (Bot)
02cc988ae7 Latest translations and fallbacks 2017-02-23 09:22:14 +00:00
pichalite
aea40902b0 Fix markup in category privileges template 2017-02-23 00:28:54 +00:00
pichalite
f09f1f6ed8 Fix ACP templates markup 2017-02-23 00:20:42 +00:00
pichalite
dcb0f18422 ACP manage groups UI updates 2017-02-22 20:28:56 +00:00
Julian Lam
e887dda37a Merge pull request #5461 from pichalite/image-dimension
Use ACP profile image dimension setting in cropper
2017-02-22 14:53:40 -05:00
barisusakli
2dac3d2292 closes #5465, blacklist tests 2017-02-22 14:53:44 +03:00
barisusakli
5c01c7b1c7 delayed notification test 2017-02-22 13:35:05 +03:00
Julian Lam
e427f1663e Merge pull request #5456 from NodeBB/sounds-refactor
Sound system improvements
2017-02-21 16:14:58 -05:00
Barış Soner Uşaklı
89380824f8 navigation test 2017-02-21 17:00:54 +03:00
barisusakli
f2a795a9b7 fix tests 2017-02-21 15:18:01 +03:00
barisusakli
799f688503 closes #5463 , invitation tests 2017-02-21 15:08:17 +03:00
Misty (Bot)
4b21679d6f Latest translations and fallbacks 2017-02-21 09:24:38 +00:00
barisusakli
4ee7edad64 test uploadProfileImageFromUrl 2017-02-20 21:58:35 +03:00
barisusakli
ef90702049 closes #5459 2017-02-20 21:28:02 +03:00
Misty (Bot)
7d8477289d Latest translations and fallbacks 2017-02-20 09:22:34 +00:00
Peter Jaszkowiak
beb652ee43 Move minifier.js to src/meta 2017-02-20 00:44:04 -07:00
Peter Jaszkowiak
3e562ceb83 Update CONTRIBUTING.md 2017-02-19 16:37:00 -07:00
psychobunny
aaec279d75 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2017-02-19 11:07:39 -05:00
Anil Mandepudi
f302c0d739 Update gruntfile to build on initialization (#5458)
* Update gruntfile to build on initialization

* Skip option skips build
2017-02-19 11:01:38 -05:00
psychobunny
631592b818 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2017-02-19 11:00:14 -05:00
Misty (Bot)
2e27ce640c Latest translations and fallbacks 2017-02-19 09:25:24 +00:00
Peter Jaszkowiak
9b1068e868 Minify all module scripts in production 2017-02-19 02:07:19 -07:00
pichalite
fd0f0beaf2 lint 2017-02-19 08:54:46 +00:00
pichalite
a99572fc48 Use ACP profile image dimension setting in cropper 2017-02-19 08:30:30 +00:00
Peter Jaszkowiak
23540afaeb Resolve merge conflicts 2017-02-18 19:14:39 -07:00
Peter Jaszkowiak
b227297ef3 ESlint no-use-before-define 2017-02-18 18:55:33 -07:00
Peter Jaszkowiak
93f38d4f30 ESlint no-multi-assign
and max-nested-callbacks, no-mixed-requires, max-statements-per-line
2017-02-18 18:06:28 -07:00
Barış Soner Uşaklı
1b43faba1a closes #5441 2017-02-19 02:44:38 +03:00
Peter Jaszkowiak
4bb49a7171 ESlint no-unused-vars 2017-02-18 15:05:36 -07:00
Peter Jaszkowiak
c18808fdeb ESlint no-useless-concat, no-mixed-spaces-and-tabs 2017-02-18 14:42:15 -07:00
Peter Jaszkowiak
fdf4f873bf ESlint eqeqeq
and require-jsdoc, no-negated-condition
2017-02-18 14:36:16 -07:00
Peter Jaszkowiak
144fa8698c Eslint no-lonely-if 2017-02-18 14:32:35 -07:00
Peter Jaszkowiak
57f89663aa ESlint radix 2017-02-18 14:29:52 -07:00
Peter Jaszkowiak
09e868ce5f ESlint no-useless-escape, no-else-return 2017-02-18 14:27:26 -07:00
Peter Jaszkowiak
11cb3a9554 ESlint operator-assignment, block-scoped-var 2017-02-18 14:20:58 -07:00
Peter Jaszkowiak
a0a50677da ESlint n-loop-func, yoda 2017-02-18 14:00:29 -07:00
Peter Jaszkowiak
04bb6513b0 ESlint no-cond-assign, no-void, valid-jsdoc 2017-02-18 13:51:26 -07:00
Peter Jaszkowiak
5a45087fc8 ESlint no-unreachable, no-redeclare 2017-02-18 13:31:19 -07:00
Peter Jaszkowiak
32dc7c23ea ESlint guard-for-in, no-nested-ternary
and operator-linebreak
2017-02-18 13:28:03 -07:00
Peter Jaszkowiak
c4bdb72941 ESlint no-unneeded-ternary
and no-extend-native, no-sequences
2017-02-18 12:59:46 -07:00
Peter Jaszkowiak
64a6322002 ESlint no-extra-boolean-cast
and no-shadow-restricted-names
2017-02-18 12:51:13 -07:00
Peter Jaszkowiak
239d7f84dd ESlint no-path-concat 2017-02-18 12:47:58 -07:00
Peter Jaszkowiak
daa169c094 ESlint no-unused-expressions 2017-02-18 12:40:57 -07:00
Peter Jaszkowiak
ac2f69f7af ESlint no-return-assign
and no-restricted-modules
2017-02-18 12:35:49 -07:00
Peter Jaszkowiak
896c8c7343 ESlint object-curly-spacing 2017-02-18 12:30:49 -07:00
barisusakli
7842c3411c remove logs 2017-02-18 20:52:45 +03:00
barisusakli
b33d34f7cf refactor user/picture.js 2017-02-18 20:27:58 +03:00
Barış Soner Uşaklı
23ed1af282 Merge pull request #5457 from pichalite/image-extension
Add extensions for cropped images
2017-02-18 15:06:45 +02:00
Peter Jaszkowiak
1493afee2a ESlint indent 2017-02-18 02:38:03 -07:00
Peter Jaszkowiak
3b0dd2d1ef ESlint padded-blocks 2017-02-18 02:32:24 -07:00
Peter Jaszkowiak
feb8405f95 ESlint eol-last 2017-02-18 02:30:48 -07:00
Peter Jaszkowiak
41896e1fc7 ESlint lines-around-directive 2017-02-18 02:28:54 -07:00
Peter Jaszkowiak
f3a8256f35 ESlint strict 2017-02-18 02:23:47 -07:00
Peter Jaszkowiak
a038c66549 ESlint quotes 2017-02-18 01:56:23 -07:00
Peter Jaszkowiak
604358ecc4 ESlint keyword-spacing, no-multi-spaces 2017-02-18 01:52:56 -07:00
Peter Jaszkowiak
a5a3f3089a ESlint no-mixed-operators 2017-02-18 01:51:11 -07:00
Peter Jaszkowiak
2e031f3759 ESlint comma-spacing 2017-02-18 01:31:47 -07:00
Peter Jaszkowiak
277a7fb8b4 ESlint key-spacing, no-trailing-spaces 2017-02-18 01:27:46 -07:00
Peter Jaszkowiak
34e233fe1d ESlint spaced-comment 2017-02-18 01:25:46 -07:00
Peter Jaszkowiak
532951c24f ESlint space-in-parens, block-spacing 2017-02-18 01:21:34 -07:00
Peter Jaszkowiak
b1b486f729 ESlint quote-props 2017-02-18 01:19:20 -07:00
Peter Jaszkowiak
3361a72725 ESlint no-plusplus
and no-empty, space-unary-ops
2017-02-18 01:12:18 -07:00
Peter Jaszkowiak
d1101a7fb4 ESlint dot-notation
and func-call-spacing
2017-02-18 00:21:44 -07:00
Peter Jaszkowiak
d7526b5e44 ESlint array-bracket-spacing
and object-property-newline
2017-02-18 00:04:34 -07:00
Peter Jaszkowiak
554075b312 ESlint no-continue 2017-02-17 22:31:05 -07:00
Peter Jaszkowiak
d9c1f6f088 ESlint no-extra-semi 2017-02-17 22:20:45 -07:00
Peter Jaszkowiak
1cf25f57fc ESlint no-space-func 2017-02-17 22:17:10 -07:00
Peter Jaszkowiak
3d6bfa47c5 ESlint no-useless-return 2017-02-17 22:13:41 -07:00
Peter Jaszkowiak
879470f417 ESlint brace-style 2017-02-17 22:11:35 -07:00
Peter Jaszkowiak
52f2028206 ESlint no-multiple-empty-lines 2017-02-17 22:08:23 -07:00
Peter Jaszkowiak
b09b3aef7f ESlint no-undef, remove global comments 2017-02-17 22:03:55 -07:00
Peter Jaszkowiak
2ba46808a1 ESlint one-var, fix comma-dangle 2017-02-17 20:20:42 -07:00
Peter Jaszkowiak
bc1d70c126 ESlint comma-dangle 2017-02-17 19:31:21 -07:00
pichalite
bb3c8b910a Skip option skips build 2017-02-17 23:33:37 +00:00
pichalite
5ca931a52c Update gruntfile to build on initialization 2017-02-17 22:07:50 +00:00
pichalite
aacd8a2422 Fix return and tests 2017-02-17 20:36:13 +00:00
pichalite
7f4e4c8e2e Fix styling 2017-02-17 20:02:26 +00:00
pichalite
4d755bad0c Use typeToExtension from file.js 2017-02-17 19:57:18 +00:00
pichalite
8dab8864f6 Add extensions for cropped images 2017-02-17 19:42:02 +00:00
barisusakli
aa64ec7db1 remove unnecessary code 2017-02-17 22:33:41 +03:00
Peter Jaszkowiak
9f15008247 Address review issues 2017-02-17 11:19:30 -07:00
Julian Lam
a379b03e71 lint 2017-02-17 09:10:53 -05:00
Julian Lam
5ee2aa8adb Merge pull request #5453 from NodeBB/patch_5369
Fix #5368
2017-02-17 08:48:57 -05:00
Julian Lam
802878c371 Merge pull request #5455 from pichalite/cropper
Make cropper in to a module
2017-02-17 08:48:21 -05:00
barisusakli
e009ce5609 closes #5443 2017-02-17 16:46:30 +03:00
barisusakli
a427bba9cb up persona 2017-02-17 14:48:09 +03:00
barisusakli
4d05e492cc closes #5312 2017-02-17 14:45:45 +03:00
Misty (Bot)
461ad301a1 Latest translations and fallbacks 2017-02-17 09:22:25 +00:00
Peter Jaszkowiak
c75391f9f5 Sound system improvements
- Fix sound ACP uploads
- Display soundpack names with sound files
- Soundpacks can have sounds with identical names
- Link sounds during build step
- Generate map of sound name to file name during build step
- Change how soundpacks work. It's now done via a field in plugin.json
2017-02-16 22:58:15 -07:00
pichalite
2ca8f60e77 Finalize cropper module 2017-02-17 05:32:37 +00:00
pichalite
d784a8dce8 Restore uploader.js 2017-02-17 04:26:34 +00:00
pichalite
43f4d9819e Linting 2017-02-17 00:54:53 +00:00
pichalite
484891472e Make cropper in to a module 2017-02-17 00:48:38 +00:00
Peter Jaszkowiak
3d56dc4857 Fix #5368 2017-02-16 13:33:28 -07:00
barisusakli
fd88e9fdff up composer 2017-02-16 22:07:20 +03:00
barisusakli
9b3741bc63 up composer 2017-02-16 15:35:19 +03:00
barisusakli
dad5b135c3 lint 2017-02-16 15:11:31 +03:00
barisusakli
c285eb7fcd closes #5450 2017-02-16 15:01:11 +03:00
Misty (Bot)
2c428cdec1 Latest translations and fallbacks 2017-02-16 09:22:12 +00:00
Julian Lam
8bf719b258 Merge pull request #5431 from NodeBB/ajaxify-cache-buster
Ajaxify improvements, `/assets/uploads/` fixes, cache buster improvements
2017-02-15 13:49:47 -05:00
Julian Lam
9e23d09e5e removing outdated logic to call process.exit on reset completion as all invocations use callbacks now. Allowing invocation of reset -p and -t without nodebb-plugin- or nodebb-theme- prefix 2017-02-15 09:47:38 -05:00
Anil Mandepudi
c25836b5fc Option to upload without cropping (#5447)
* Option to upload without cropping

* Fix styling

* Fix styling

* Add missing semi-colon

* I fail at styling :fail:
2017-02-14 16:31:51 -05:00
barisusakli
867fd99fb6 closes #4625 2017-02-14 20:56:24 +03:00
barisusakli
4d8d23830d utils tests 2017-02-14 15:47:36 +03:00
barisusakli
4bbf517af3 rewards test 2017-02-14 15:04:48 +03:00
barisusakli
9f67142786 closes #5440 2017-02-14 14:16:31 +03:00
Julian Lam
1e33a659ef up persona 2017-02-13 15:42:09 -05:00
barisusakli
30f35c42f6 fix eslint 2017-02-13 22:42:47 +03:00
barisusakli
a3cbe5e090 #5436 2017-02-13 22:24:26 +03:00
Misty (Bot)
31ac72375f Latest translations and fallbacks 2017-02-13 09:22:08 +00:00
barisusakli
21eefb9760 closes #5436 2017-02-12 20:36:12 +03:00
barisusakli
8b006fb1ab closes #5434 2017-02-12 20:11:49 +03:00
Misty (Bot)
3dc2a91990 Latest translations and fallbacks 2017-02-12 09:22:10 +00:00
Julian Lam
5d4a0d7f05 Merge pull request #5426 from mortiy/ukrainian
Added Ukrainian language to Transifex config
2017-02-11 14:41:39 -05:00
Misty (Bot)
c4a2babbf7 Latest translations and fallbacks 2017-02-11 09:21:46 +00:00
Peter Jaszkowiak
b553236620 Better defaults if cache buster read fails 2017-02-10 21:18:09 -07:00
Julian Lam
21bc1fba3f Merge pull request #5429 from BenLubar/redis-drops-socket-messages
Fix forum instances using Redis dropping socket.io messages.
2017-02-10 16:21:38 -05:00
Julian Lam
6289f118ae updated cron strings with 5-digit strings instead of 6-digit ones 2017-02-10 15:52:05 -05:00
Ben Lubar
9fb16e3520 Fix forum instances using Redis dropping socket.io messages.
Bug introduced in b08acd197c.

https://github.com/socketio/socket.io-redis/releases/tag/3.0.0
https://github.com/socketio/socket.io-redis/issues/185
2017-02-10 14:28:53 -06:00
Julian Lam
6b2e40a8ce promoting digest output to info, instead of verbose 2017-02-10 12:54:17 -05:00
Oleksandr Sidko
97c6da7d3f Added Ukrainian language to Transifex config 2017-02-10 16:05:52 +02:00
barisusakli
f4a6527ce6 getRecentPosterUids test 2017-02-10 15:26:24 +03:00
Misty (Bot)
503378e259 Latest translations and fallbacks 2017-02-10 09:21:57 +00:00
Peter Jaszkowiak
8f27d7810b Ajaxify improvement, /assets/uploads 2017-02-09 15:50:05 -07:00
Julian Lam
7ba111acdd Merge pull request #5420 from NodeBB/assets-route
/assets/uploads
2017-02-09 16:08:12 -05:00
Julian Lam
a8fd1440d4 fixed incorrect language key in ip blacklist page 2017-02-09 14:42:21 -05:00
Barış Soner Uşaklı
a3e327301b update regex 2017-02-09 20:21:35 +02:00
Julian Lam
d61665c20a updated copy for no-routes-not-found 2017-02-09 12:52:25 -05:00
Barış Soner Uşaklı
4f5b9f3a42 Merge pull request #5425 from pichalite/issue-5415
Fix scrolling issues on mobile
2017-02-09 19:51:41 +02:00
pichalite
cc160d77e7 Fix scrolling issues on mobile 2017-02-09 17:33:31 +00:00
barisusakli
667582744e fix eslint 2017-02-09 13:22:03 +03:00
barisusakli
ab7867d4b5 topic follow tests, fix filterIgnoring 2017-02-09 13:15:43 +03:00
Misty (Bot)
0409109faa Latest translations and fallbacks 2017-02-09 09:21:45 +00:00
Peter Jaszkowiak
0fffde67b5 Undeprecate /uploads 2017-02-08 14:24:09 -07:00
Peter Jaszkowiak
aaacdb8413 Fix #5416, uploads path config setting
- Finish moving uploads route to `/assets/uploads`
- Remove `upload_url` config setting, it was broken
2017-02-08 11:41:34 -07:00
Julian Lam
a48c914a16 explicitly cast jobsDisabled as Boolean 2017-02-08 11:23:27 -05:00
Julian Lam
ce2bda0648 utilising async series if OS reports that system only contains one CPU processor 2017-02-08 10:42:55 -05:00
Julian Lam
d5a45832c3 up composer 2017-02-08 10:26:05 -05:00
Misty (Bot)
d966b52dc7 Latest translations and fallbacks 2017-02-08 09:21:49 +00:00
Julian Lam
23d92c214d up persona, vanilla, and markdown 2017-02-07 16:28:25 -05:00
Julian Lam
107abe3197 Merge pull request #5382 from pitaj/assets-route
Move client-side assets to the `/assets` route
2017-02-07 16:02:56 -05:00
Julian Lam
a122aad54d updating fallbacks 2017-02-07 20:54:03 +00:00
Peter Jaszkowiak
b530701cff Fix tabs 😡 2017-02-06 15:54:21 -07:00
Peter Jaszkowiak
bb1bfb0449 Merge branch 'master' into assets-route 2017-02-06 15:52:54 -07:00
psychobunny
df1a1811f2 add horizontal rule on top of image crop tools 2017-02-06 16:18:36 -05:00
psychobunny
034f3f0268 Merge pull request #5417 from pichalite/cropper-options
Add image options to cropper modal
2017-02-06 16:17:49 -05:00
pichalite
2c5f8ed8e6 Add image options to cropper modal 2017-02-06 21:00:21 +00:00
psychobunny
dbc3113940 Merge pull request #5412 from pichalite/cropperjs
Ability to crop profile images before uploading
2017-02-06 14:33:49 -05:00
pichalite
b757f563df Move tpl and less to core 2017-02-06 19:11:58 +00:00
barisusakli
959315c8f7 test admin/search 2017-02-06 13:43:51 +03:00
Misty (Bot)
f046ea012d Latest translations and fallbacks 2017-02-06 09:21:40 +00:00
Misty (Bot)
b9ae02583e Latest translations and fallbacks 2017-02-05 09:21:54 +00:00
Misty (Bot)
5ea5d11646 Latest translations and fallbacks 2017-02-04 09:21:31 +00:00
Peter Jaszkowiak
d43564dbbd No need to build multiple times 2017-02-03 23:55:33 -07:00
Peter Jaszkowiak
fdad66f58e Revert "Fix tests to use default activated plugin"
This reverts commit 44a59ac435.
2017-02-03 23:48:43 -07:00
Peter Jaszkowiak
d31499a860 Fix tests rewriting logo.png 2017-02-03 18:29:09 -07:00
Peter Jaszkowiak
44a59ac435 Fix tests to use default activated plugin 2017-02-03 16:37:03 -07:00
Julian Lam
9ceeff6f0a Merge pull request #5414 from pichalite/fix-acp
Fix ACP layout on tablets
2017-02-03 17:57:46 -05:00
pichalite
a3df9132f7 Fix styling 2017-02-03 22:19:19 +00:00
pichalite
a41acead44 Fix tabs 2017-02-03 22:16:04 +00:00
pichalite
6a073277ac Fix ACP layout on tablets 2017-02-03 22:12:47 +00:00
pichalite
a808d1b4d9 Set aspect ratio to square and confine crop box to image 2017-02-03 17:43:51 +00:00
barisusakli
a15aaaf389 closes #5394
dont allow socket.emits during maintenance mode
2017-02-03 19:02:43 +03:00
Julian Lam
06bf631445 increased file watch interval to reduce high CPU usage when using grunt 2017-02-03 10:24:55 -05:00
barisusakli
76254942b2 closes #5190 2017-02-03 16:25:02 +03:00
Misty (Bot)
d4e4b4bfa2 Latest translations and fallbacks 2017-02-03 09:21:41 +00:00
barisusakli
e3a2e13438 build test 2017-02-03 11:39:31 +03:00
Peter Jaszkowiak
360a35d0a6 Resolve merge conflicts 2017-02-02 22:15:26 -07:00
Julian Lam
1012368acd Merge pull request #5413 from NodeBB/nodebb-executable-refactor
Refactor `nodebb`, move `build.js`, add `--dev`
2017-02-02 22:04:19 -05:00
Peter Jaszkowiak
5aa3e6b95b Merge branch 'master' into nodebb-executable-refactor 2017-02-02 19:19:02 -07:00
Peter Jaszkowiak
553567c3b2 Refactor nodebb, move build.js, add --dev 2017-02-02 19:15:01 -07:00
pichalite
700e2cf800 linting 2017-02-03 01:00:09 +00:00
pichalite
702561a6ab Ability to crop profile images before uploading 2017-02-03 00:48:27 +00:00
pichalite
de28ff5d43 Ability to crop profile images before uploading 2017-02-03 00:47:09 +00:00
Julian Lam
98f2fd62a5 Up markdown 2017-02-02 15:19:31 -05:00
Julian Lam
70b20e3ff1 Up markdown 2017-02-02 15:19:05 -05:00
Misty (Bot)
a70051b30c Incremented version number 2017-02-02 17:16:01 +00:00
Misty (Bot)
922620fe0a Incremented version number 2017-02-02 17:14:59 +00:00
Misty (Bot)
94b9d77118 Merge commit 'adb66c71b8aff297706056f69b1cf17b972c42af' into v1.x.x 2017-02-02 17:14:58 +00:00
Julian Lam
adb66c71b8 up markdown 2017-02-02 11:58:34 -05:00
Julian Lam
5de67f9607 excluding tx managed language files from grunt 2017-02-02 10:52:20 -05:00
Barış Soner Uşaklı
b08acd197c up socket.io deps 2017-02-02 17:49:27 +02:00
barisusakli
5c217e873e build all targets before test 2017-02-02 16:08:19 +03:00
barisusakli
ae7f9bac98 prevent crash if uri is malformed 2017-02-02 13:11:33 +03:00
Misty (Bot)
48b8b6cf95 Latest translations and fallbacks 2017-02-02 09:21:39 +00:00
Julian Lam
bc3f28e473 Merge pull request #5411 from NodeBB/language-dep-warn
Better deprecation warning for old language route
2017-02-01 12:53:15 -05:00
Peter Jaszkowiak
bf44ca20f2 Better deprecation warning for old language route 2017-02-01 10:36:15 -07:00
Misty (Bot)
975f2a669d Latest translations and fallbacks 2017-02-01 09:22:09 +00:00
barisusakli
51981ffb99 get extention from content type 2017-01-31 22:18:22 +03:00
Julian Lam
409b8d8ebc Merge pull request #5409 from NodeBB/translator-no-catch
Fix translator catching JS errors in callbacks
2017-01-31 14:10:56 -05:00
Peter Jaszkowiak
bb7a35b85c Fix translator catching JS errors in callbacks 2017-01-31 12:04:31 -07:00
Julian Lam
ff301aeaf7 up vanilla 2017-01-31 12:12:13 -05:00
Misty (Bot)
988c71d9c9 Latest translations and fallbacks 2017-01-31 09:21:38 +00:00
Julian Lam
b230dbaff4 Merge pull request #5408 from NodeBB/language-404s
Remove requests to nonexistent language files
2017-01-30 17:12:11 -05:00
Peter Jaszkowiak
bc9fa0a990 Remove requests to nonexistent language files 2017-01-30 15:08:03 -07:00
Julian Lam
0aaa320913 Merge pull request #5406 from Pappmann/patch-6
Update dashboard.js
2017-01-30 11:54:35 -05:00
Stephan
0c6679ca9c Update dashboard.js 2017-01-30 17:45:48 +01:00
Misty (Bot)
b222dd653f Latest translations and fallbacks 2017-01-30 09:23:52 +00:00
Misty (Bot)
da295bb5e6 Latest translations and fallbacks 2017-01-29 09:21:51 +00:00
Misty (Bot)
3ddfa7715f Latest translations and fallbacks 2017-01-28 09:50:47 +00:00
Julian Lam
debffe385f closes #5316 2017-01-27 16:29:42 -05:00
Julian Lam
3ab631c82e Merge pull request #5391 from Pappmann/patch-4
added missing translation in dashboard
2017-01-27 11:32:02 -05:00
Julian Lam
7c7517d72b Merge pull request #5392 from Pappmann/patch-5
fixed missing translation string
2017-01-27 11:31:46 -05:00
Julian Lam
05c724de30 added new hook for messaging teaser retrieval, and casting input as String before execuring stripTags templates helper 2017-01-27 11:26:08 -05:00
Misty (Bot)
c81c756e57 Latest translations and fallbacks 2017-01-27 09:22:33 +00:00
psychobunny
e2b30d6329 improve regex for unwanted whitespace in cover:url 2017-01-26 18:04:51 -05:00
psychobunny
9d069d76db random \t's in language string 2017-01-26 14:17:04 -05:00
barisusakli
c3f1129fe9 eslint 2017-01-26 14:22:52 +03:00
barisusakli
29b0552466 update url from config file even if it was passed in env 2017-01-26 14:16:19 +03:00
Misty (Bot)
e3205cf950 Latest translations and fallbacks 2017-01-26 09:22:10 +00:00
Barış Soner Uşaklı
8deeb0e7c0 up composer 2017-01-25 15:06:42 +02:00
Misty (Bot)
49735c67e3 Latest translations and fallbacks 2017-01-25 09:21:56 +00:00
Peter Jaszkowiak
f4147f7922 Generate cache buster on build 2017-01-24 20:24:28 -07:00
Misty (Bot)
44f83825f8 Latest translations and fallbacks 2017-01-24 09:24:12 +00:00
Julian Lam
300816a6db actually mentions need not be updated... 2017-01-23 14:49:56 -05:00
Julian Lam
a41bd73b30 bump mentions 2017-01-23 14:48:46 -05:00
Julian Lam
4e9d5bbd8a Up composer version 2017-01-23 12:38:21 -05:00
Julian Lam
372138c789 Revert "fixing bug that caused plugin language files to not be parsed"
This reverts commit b2bb1a7c24.
2017-01-23 11:27:35 -05:00
Julian Lam
b2bb1a7c24 fixing bug that caused plugin language files to not be parsed 2017-01-23 11:25:19 -05:00
Misty (Bot)
390c0ba788 Latest translations and fallbacks 2017-01-23 09:24:30 +00:00
Stephan
374bc04cdb fixed missing translation string 2017-01-23 04:06:01 +01:00
Stephan
56f045e6b0 Update dashboard.json 2017-01-23 02:41:24 +01:00
Stephan
af4df8e197 added missing translation
added missing language string in dashboard.js
2017-01-23 02:38:33 +01:00
Misty (Bot)
da33f065cf Latest translations and fallbacks 2017-01-22 09:24:29 +00:00
Peter Jaszkowiak
001aa3d1a8 Fix tests, npm Windows fixes 2017-01-21 19:21:02 -07:00
Peter Jaszkowiak
186209a0a3 Build plugin staticDirs
- route `/plugins` -> `build/public/plugins`
- symlink `staticDirs` directories into `build/public/plugins`
- remove custom `/plugins` route handling
2017-01-21 18:57:27 -07:00
Barış Soner Uşaklı
a63ec0a265 up dbsearch 2017-01-21 14:23:36 +02:00
Misty (Bot)
fccd43e532 Latest translations and fallbacks 2017-01-21 09:24:28 +00:00
Misty (Bot)
604206843e Latest translations and fallbacks 2017-01-20 19:29:25 +00:00
Julian Lam
a86eefc5e3 Merge pull request #5383 from pitaj/master
Fix empty lines in language selectors
2017-01-20 13:17:38 -05:00
Peter Jaszkowiak
df77890c2a Plugin defaultLang defaults to en-GB 2017-01-20 11:15:06 -07:00
Julian Lam
694f2382bf fix issue where navigating back to a topic listing (category.tpl) would not scroll down to the topic you had clicked on, and in some cases would exclude topics that were beyond that particular 'page' 2017-01-20 12:11:12 -05:00
Peter Jaszkowiak
7c88a55153 Fix empty lines in language selectors 2017-01-19 19:07:53 -07:00
Julian Lam
339845ff6b Merge pull request #5366 from pitaj/build-translations
Compile translations in the build step
2017-01-19 15:25:28 -05:00
Julian Lam
3d25c3e1c6 Merge pull request #5380 from pitaj/master
Fix wrapper breaking when no attrs need replaced
2017-01-19 14:17:39 -05:00
Peter Jaszkowiak
97fe86c916 Fix wrapper breaking when no attrs need replaced 2017-01-19 12:13:23 -07:00
Peter Jaszkowiak
80b4c6fa68 Exclude config files 2017-01-19 10:53:25 -07:00
psychobunny
19c3f54a30 Merge pull request #5379 from pichalite/issue-5344
Fixes #5344
2017-01-18 16:38:48 -05:00
pichalite
7b234c666f Fixes #5344 2017-01-18 20:32:19 +00:00
Peter Jaszkowiak
7f2ded17ab Comments, misc 2017-01-17 20:41:04 -07:00
Peter Jaszkowiak
e94d47976d Build language files on change 2017-01-17 20:22:38 -07:00
Barış Soner Uşaklı
bcd2b5cc50 Merge pull request #5376 from pichalite/post_create
Send isMain to post.save filters
2017-01-17 21:55:29 +02:00
Julian Lam
08af924873 closes #5189 2017-01-17 14:05:33 -05:00
pichalite
9176f7e037 Only send isMain to hook instead of saving to post hash 2017-01-17 18:24:16 +00:00
Julian Lam
06a77143bd additional logging and removing interstitial session data if plugins don't return interstitials 2017-01-17 10:46:04 -05:00
Peter Jaszkowiak
65b866192e Fix failing tests 2017-01-16 16:48:56 -07:00
pichalite
a3c05b2ea4 Send isMain to post.save filters 2017-01-16 23:40:25 +00:00
Peter Jaszkowiak
aff53cccc5 Plugin language fallback support 2017-01-16 16:31:16 -07:00
Julian Lam
762d660447 Merge pull request #5373 from pitaj/master
Fixes #5369, bootbox wrapper translates attributes
2017-01-16 14:41:07 -05:00
Julian Lam
183fdf06cb Merge pull request #5356 from DomLennonZA/master
Adding more specific timings for session timeout
2017-01-16 14:38:52 -05:00
Jan
7fb7a64c8d Fix fa-font-path 2017-01-16 16:00:54 +01:00
Dominic Lennon
3f116e7636 Fixing null ttl issue for MongoSession 2017-01-16 14:58:27 +00:00
Dominic Lennon
b1f0f8fa8b Adding ttl value to the MongoStore options 2017-01-16 14:52:25 +00:00
Dominic Lennon
691b46d38b Fixing lint issues 2017-01-16 14:43:34 +00:00
Dominic Lennon
f0add97cf9 Fixing tests 2017-01-16 14:37:14 +00:00
Dominic Lennon
3507e4ce0e Adding closing <p> 2017-01-16 09:33:33 +00:00
Dominic Lennon
a06e39528f Code review change 2017-01-16 08:48:53 +00:00
Peter Jaszkowiak
c41a2f4b98 Fixes #5369, bootbox wrapper translates attributes 2017-01-15 13:58:56 -07:00
Peter Jaszkowiak
8c86b2e32c Build pipeline improvements
- Refactor meta/css
- `fs.link` usage consolidated to `file.link`
- rimraf built modules directory to fix error
- Remove `local-assets` flag
2017-01-15 12:38:16 -07:00
kingjan1999
8ac40eb44c Update FontAwesome to 4.7.0 2017-01-15 17:51:28 +01:00
kingjan1999
cbe8807ebd update fontawesome.tpl 2017-01-15 17:46:21 +01:00
Peter Jaszkowiak
05b68391dd Use /assets for client assets
- Route `/assets` -> `build/public`, falling back on `public`
- Moved destinations for `nodebb.min.js`, `acp.min.js`, `admin.css`, `stylesheet.css`, `templates`, and `sounds` to `build/public`
- r.js modules previously routed through express are now symlinked into `public/build/src/modules`
- minfiles no longer served from a memory cache
- use config `views_dir` setting everywhere template directory is used
- fix cache buster `v=v=`
2017-01-14 22:38:40 -07:00
Peter Jaszkowiak
e1a29f4aa8 Switch to assets route 2017-01-14 17:12:16 -07:00
Peter Jaszkowiak
b4b3be3d97 Cache bust translations, query param name 2017-01-14 14:09:46 -07:00
Peter Jaszkowiak
c97764ee6f Fix incomplete "group" search results 2017-01-14 14:09:46 -07:00
Peter Jaszkowiak
2f07c18c5a All hail the glorious translation prebuilding 2017-01-14 14:08:52 -07:00
Julian Lam
c99321a518 always setting app.previousUrl now, and passing cid into filter:category.topics.get hook 2017-01-13 15:01:14 -05:00
Peter Jaszkowiak
386284beb8 Windows compat 2017-01-12 15:45:44 -07:00
Julian Lam
2a9088d571 updating checkGlobalPrivacySettings middleware to hook into write-api for auth 2017-01-12 15:55:56 -05:00
psychobunny
9797f69324 action:chat.sent 2017-01-12 11:48:41 -05:00
Misty (Bot)
759f1e2085 Latest translations and fallbacks 2017-01-12 09:21:45 +00:00
Barış Soner Uşaklı
05053071fe up composer 2017-01-11 20:12:26 +02:00
Dominic Lennon
04e5707143 Fixing lint issues 2017-01-11 11:24:27 +00:00
Dominic Lennon
ed19454eca Adding more specific timing for session timings 2017-01-11 10:51:41 +00:00
Misty (Bot)
4ec7200260 Latest translations and fallbacks 2017-01-11 09:21:36 +00:00
psychobunny
3b4d7b1d70 up tjs 2017-01-10 13:47:31 -05:00
Dominic Lennon
d248ef95cd Fix for issue #5334. SessionStore now uses the correct value 2017-01-10 11:48:27 +00:00
Misty (Bot)
ac03c2b270 Latest translations and fallbacks 2017-01-10 09:21:46 +00:00
Julian Lam
2ab2486d3b if require call on page script fails, remove from scripts array 2017-01-09 15:02:32 -05:00
Julian Lam
6a591069c5 fixes issue with ajaxify.end not firing 2017-01-09 14:51:05 -05:00
Misty (Bot)
5522d0908e Latest translations and fallbacks 2017-01-09 09:21:45 +00:00
Julian Lam
1296b7a72c using spaces in .eslintrc.json 2017-01-08 15:59:03 -05:00
Julian Lam
64e4ef042b allowing plugins to subscribe to action:script.load and pass in function references 2017-01-08 15:58:25 -05:00
Julian Lam
f6900f2500 Merge pull request #5345 from pichalite/devdeps
Update dev dependencies
2017-01-08 15:58:09 -05:00
Julian Lam
50bd198ed9 Merge pull request #5349 from pitaj/master
Fix reverse proxies breaking admin translations
2017-01-08 13:06:08 -05:00
Misty (Bot)
f51b16d0de Latest translations and fallbacks 2017-01-08 09:21:34 +00:00
Peter Jaszkowiak
ffa2bd14f8 Fix reverse proxies breaking admin translations 2017-01-07 22:48:57 -07:00
Misty (Bot)
1dd8ed8c93 Latest translations and fallbacks 2017-01-07 09:21:35 +00:00
barisusakli
362fbd66e9 up composer 2017-01-06 19:20:36 +03:00
Misty (Bot)
aec6a3b5ca Latest translations and fallbacks 2017-01-06 09:21:33 +00:00
barisusakli
c0a8fd7395 allow multiple tags 2017-01-05 21:14:21 +03:00
barisusakli
3f15dbdc54 up persona 2017-01-05 21:14:20 +03:00
Anil Mandepudi
5a3e1c99c1 Fix tabs 2017-01-05 10:09:06 -08:00
pichalite
65d17a07b7 Update dev dependencies 2017-01-05 18:06:59 +00:00
Julian Lam
b8d2d9c701 fix language codes, @pichalite 2017-01-05 10:22:45 -05:00
Misty (Bot)
b4a3883d6b Latest translations and fallbacks 2017-01-05 09:21:40 +00:00
Misty (Bot)
9ab69d3960 update arabic language.json 2017-01-04 17:33:52 +00:00
Misty (Bot)
07f8ca5d6c Latest translations and fallbacks 2017-01-04 17:27:57 +00:00
Julian Lam
8e7af0291a fixed grammar in admin-manage-categories string 2017-01-04 11:50:03 -05:00
barisusakli
c42eaee30c fix typo in language file 2017-01-04 15:28:16 +03:00
Julian Lam
736c1a4ad1 Merge pull request #5340 from pichalite/patch-1
Update Chart.js dependency version
2017-01-03 21:28:02 -05:00
Anil Mandepudi
22d0e60f08 Update Chart.js dependency version
Update Chart.js dependency to fix chart issue on category analytics page.
2017-01-03 18:05:39 -08:00
Barış Soner Uşaklı
aa32e7b359 fix indents 2017-01-04 00:58:32 +03:00
Barış Soner Uşaklı
39723074c0 Merge pull request #5327 from pichalite/translations
Add missing translations
2017-01-03 22:49:50 +02:00
Barış Soner Uşaklı
e225f318bb Merge pull request #5339 from loopback0/master
Allow text selection on /unread
2017-01-03 22:49:01 +02:00
loopback0
a86134cc5b Fix selection
Tweak to allow the shift + click behaviour for the checkboxes while still letting the browser behaviour work
2017-01-03 20:18:35 +00:00
psychobunny
949b4aaa1f added logo to .gitignore so it doesn't get updated by test runner 2017-01-03 13:07:24 -05:00
barisusakli
ba1889f441 messaging refactor 2017-01-03 20:02:24 +03:00
Barış Soner Uşaklı
b1b9174479 backport #5333 2017-01-03 14:11:04 +02:00
barisusakli
6b2dde02b5 closes #5333 2017-01-03 15:08:16 +03:00
Peter Jaszkowiak
cb82824c13 Fix ACP title bug with hashes (#5331) 2017-01-02 10:59:55 -05:00
Barış Soner Uşaklı
a08474a9fd Merge pull request #5319 from pichalite/issue-5317
Let global mods change user avatar
2016-12-31 09:40:20 +02:00
psychobunny
268f907a08 Merge pull request #5329 from pichalite/user-tests
Add more user tests
2016-12-29 20:10:52 -05:00
pichalite
a0ff3734cf Add more user tests 2016-12-30 00:51:22 +00:00
psychobunny
1c64e4e741 Merge pull request #5328 from pichalite/user-tests
Add more user tests
2016-12-29 18:31:23 -05:00
pichalite
0ea477abde Add more user tests 2016-12-29 23:16:23 +00:00
pichalite
da8795f666 Add missing translations 2016-12-29 19:41:43 +00:00
Anil Mandepudi
8ddf7eb922 Use scrollStop in chat (#5326) 2016-12-29 14:25:05 -05:00
psychobunny
8df47f333e Merge pull request #5325 from pichalite/issue-5324
Delete cover position data when cover photo is deleted
2016-12-29 13:12:46 -05:00
pichalite
8a68e1d918 Delete cover position data when cover photo is deleted 2016-12-29 17:28:42 +00:00
psychobunny
22b9f5db92 Merge pull request #5320 from pichalite/issue-5305
Confirm before removing user and group cover picture
2016-12-28 20:14:56 -05:00
pichalite
5b646495af Confirm before removing user and group cover picture 2016-12-29 01:01:35 +00:00
pichalite
ab797b91a4 Let global mods change user avatar 2016-12-28 19:00:14 +00:00
Julian Lam
277f447f3e fix minSchemaDate in upgrade.js 2016-12-27 15:30:10 -05:00
Barış Soner Uşaklı
f225fc3e3d closes #5314 2016-12-27 21:20:05 +03:00
Julian Lam
a8521d0349 remove double-click to mark all notifications read 2016-12-27 12:55:28 -05:00
psychobunny
d4a1542ba3 use dot instead of spec for tests 2016-12-23 11:32:43 -05:00
barisusakli
c78c4926df up themes 2016-12-23 17:01:11 +03:00
barisusakli
190b3759a0 fix tests 2016-12-23 16:51:18 +03:00
barisusakli
827e4b4ffd refactor post tools 2016-12-23 16:35:48 +03:00
barisusakli
a112655bd2 fix missing ; 2016-12-23 15:59:15 +03:00
barisusakli
4943832dd8 fix dupe code 2016-12-23 15:58:40 +03:00
barisusakli
306687ccaa remove old upgrade code 2016-12-23 15:49:28 +03:00
barisusakli
e48f1dac2a move bookmarks 2016-12-23 15:37:26 +03:00
barisusakli
c927eb15d7 fix requires 2016-12-23 15:37:18 +03:00
barisusakli
c36e2aa13d refactor app.js/start 2016-12-23 14:45:37 +03:00
barisusakli
e1253f693a fix redis union 2016-12-23 14:26:05 +03:00
barisusakli
b71ab64cf4 organize dbal sorted code 2016-12-23 14:12:07 +03:00
psychobunny
3935e35f5c Merge pull request #5309 from pichalite/update-ace
Update ACE editor to latest
2016-12-22 14:37:30 -05:00
pichalite
cc435e75de Update ACE editor to latest 2016-12-22 19:32:20 +00:00
pichalite
cae5a9ac58 Update ACE editor to latest 2016-12-22 19:25:24 +00:00
barisusakli
476ec6e4ee closes #5307 2016-12-22 20:33:08 +03:00
Misty (Bot)
2a5b5a7b45 Incremented version number 2016-12-22 17:08:19 +00:00
Misty (Bot)
d5fb6dac38 Incremented version number 2016-12-22 16:58:30 +00:00
Misty (Bot)
deb9a9189d Merge commit '66d8c29d251231585986f72d30cd9b8d59ed92b3' into v1.x.x 2016-12-22 16:58:29 +00:00
psychobunny
66d8c29d25 use different path for installer files 2016-12-22 11:45:22 -05:00
barisusakli
f505b47ac9 prevent crash if topic is not found 2016-12-22 12:19:07 +03:00
barisusakli
3add454289 up composer 2016-12-22 11:22:18 +03:00
psychobunny
fa12a3e7e6 updating to 2017 (was looking for a reason to test auto-update of https://github.com/NodeBB/NodeBB/wiki/Hooks) 2016-12-21 21:11:40 -05:00
psychobunny
f742c847e1 Merge pull request #5304 from pitaj/master
Fix ACP title issues
2016-12-21 19:29:09 -05:00
Peter Jaszkowiak
6d00d5f6a5 Fix ACP title issues 2016-12-21 16:00:12 -07:00
Barış Soner Uşaklı
c4d4d2385b closes #3973 closes #5303 2016-12-22 01:48:41 +03:00
Barış Soner Uşaklı
805cacb2af dont add tid to :tids:posts if its pinned 2016-12-21 23:50:06 +03:00
psychobunny
61a58f2607 fixes npm test on windows 2016-12-21 11:21:30 -05:00
psychobunny
29cf6f528c no need to check for logged in status in ACP 2016-12-21 11:19:19 -05:00
Barış Soner Uşaklı
1b6d718dab closes #5300 2016-12-21 15:18:43 +03:00
psychobunny
79e78f19dd Merge pull request #5299 from pichalite/patch-1
Add missing translation
2016-12-20 17:02:54 -05:00
psychobunny
b5d1eb2d54 up persona 2016-12-20 17:01:53 -05:00
Anil Mandepudi
8229de5eaa Add missing translation 2016-12-20 13:55:27 -08:00
barisusakli
a1af59def3 add missing return, fix tests 2016-12-21 00:31:20 +03:00
psychobunny
454ee2d801 up persona: new quick reply option 2016-12-20 15:35:58 -05:00
Julian Lam
d77f417cf3 allowing timeago timestamps to be in the future 2016-12-20 13:17:20 -05:00
psychobunny
b51fd4096b up persona 2016-12-20 12:11:23 -05:00
barisusakli
988c485874 post tools test 2016-12-20 16:03:01 +03:00
barisusakli
a0c217446a fix missing semicolon 2016-12-20 14:06:19 +03:00
barisusakli
caacae093d fix tests 2016-12-20 14:05:15 +03:00
barisusakli
f8d958e065 rooms.getAll test 2016-12-20 13:53:32 +03:00
Julian Lam
926186108b ACP Translations 2016-12-19 15:51:44 -05:00
Peter Jaszkowiak
460b830a96 Fix ajaxify loading default language translations 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
daf3ab4db4 WIP 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
038c45f4b6 admin/manage translations, misc
- Translate Manage templates and JS
- Change `translator.translate -> .html` into `.translateHtml` where fitting
- Translate `admin/partials/download_plugin_item`
2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
94eb74646c admin/manage/categories translations
- Fix privilege table headers so bottom borders align
- Fix `/admin` route to show Dashboard title correctly
- Translate ACP category management and privileges templates
- Translate ACP category management JS
- Remove unnecessary translates in JS
- Fix bootbox wrapper to work with translations containing html
2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
862908d0eb ACP search and title improvements
- Search uses translated titles if available
- Use `advanced` for `development` route titles
- Remove route title from showing up in results
- Highlight matching part of result title
- Don't show empty result contents when only title is matched
2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
3008794797 admin/general JS translations and misc 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
95bef8f3f6 admin/extend JS translations and misc 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
38eba81933 ACP menu and title translations 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
bae1daf5dc Bootbox wrapper improvements 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
606de990e9 admin/advanced JS translations 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
0b4c39338e Translation bootbox wrapper
- Replaced minfied bootbox file with unminified one since it's minified at build anyways
- Removed existing override
- Made translator more verbose in dev mode; it now warns about missing translations
2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
20db4657b2 admin/general translations 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
4eca23174a Translate dynamically added admin content 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
3cd6a8a94b admin/extend translations 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
50aed01c57 admin/development translations 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
6c1b852d48 admin/appearance translations 2016-12-19 15:51:43 -05:00
Peter Jaszkowiak
8931702136 admin/advanced translations 2016-12-19 15:51:43 -05:00
Misty (Bot)
ecdd57dda2 Incremented version number 2016-12-19 19:18:25 +00:00
Misty (Bot)
3309f2910d Incremented version number 2016-12-19 19:17:56 +00:00
Misty (Bot)
b600b9305e Merge commit '70f71888f1aaf7d88f58466d29265e43746e2bb0' into v1.x.x 2016-12-19 19:17:56 +00:00
barisusakli
70f71888f1 up themes 2016-12-19 21:53:19 +03:00
barisusakli
9ace5c6e17 moved next() of out try/catch 2016-12-19 21:46:28 +03:00
barisusakli
1fed01fe43 ability to filter search by tags 2016-12-19 21:40:16 +03:00
Barış Soner Uşaklı
fef239d97a up mongodb 2016-12-18 23:01:32 +03:00
Barış Soner Uşaklı
647c05ec42 up composer 2016-12-18 22:25:58 +03:00
Barış Soner Uşaklı
4ff3d06f90 escape labelColor, icon, cover:position, validate toPid 2016-12-17 16:00:39 +03:00
Julian Lam
a043876d00 what, does Travis not like 4-space indents? 2016-12-16 12:47:38 -05:00
barisusakli
6a0cbadb3e closes #5290 2016-12-16 15:55:46 +03:00
barisusakli
009da723c5 meta.configs tests 2016-12-16 15:55:34 +03:00
barisusakli
975141bc9b more tag tests 2016-12-15 18:06:49 +03:00
barisusakli
835669805a tag tests 2016-12-15 17:26:54 +03:00
barisusakli
3bd1c6c2b5 notification tests 2016-12-15 16:08:32 +03:00
barisusakli
55b68197aa closes #4544 2016-12-15 14:47:42 +03:00
barisusakli
9d75c48236 closes #4563 closes #4569 closes #4566 2016-12-15 13:03:14 +03:00
barisusakli
e17b37edb6 closes #5287 2016-12-14 21:58:20 +03:00
Julian Lam
e028ac1363 passing in arguments to npm instead of command string, closes #5286 2016-12-14 09:28:30 -05:00
xucheng
40d73e2a54 fix ajax 404 err when base url isn't root (#5285) 2016-12-14 08:53:55 -05:00
barisusakli
9e52d5ec04 new hook, action:user.delete 2016-12-14 16:49:09 +03:00
Julian Lam
83cd07f830 request travis to build now too 2016-12-13 09:38:43 -05:00
barisusakli
fba28791f5 missing ; 2016-12-13 16:08:54 +03:00
barisusakli
c32e6aaabb use build module instead of forking 2016-12-13 15:43:20 +03:00
barisusakli
53fe432d8a fix hook 2016-12-13 14:27:54 +03:00
barisusakli
97c0b33cf6 filter:middleware.render 2016-12-13 14:22:37 +03:00
barisusakli
e86708cb0c add cid to widgets.render
init date pickers in widgets ACP
2016-12-13 14:11:56 +03:00
barisusakli
82d3b24cd3 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-12-13 14:01:20 +03:00
barisusakli
35a15f37ec closes #5276 2016-12-13 14:01:07 +03:00
Barış Soner Uşaklı
1f52048866 Merge pull request #5252 from Fusselwurm/patch-2
ZSET scores are float: parseInt => parseFloat
2016-12-13 11:58:24 +02:00
psychobunny
10cffb0b54 Merge pull request #5283 from pichalite/setup-password-check
Check password length on setup and prompt again
2016-12-12 20:37:49 -05:00
Anil Mandepudi
aea08d58b1 Fix tabs 2016-12-12 17:19:59 -08:00
pichalite
0a4e45c0da Check password length on setup 2016-12-13 01:18:42 +00:00
Julian Lam
b79073cf32 Merge branch 'translator-escapes' of https://github.com/pitaj/NodeBB into pitaj-translator-escapes 2016-12-12 15:11:38 -05:00
Mathias Schreck
b1a48981ef Check if href exists before accessing it (#5281)
I got a lot of errors in Firefox 50 `TypeError: $(...).attr(...) is undefined  nodebb.min.js:25167:24` which points exactly to that line I’ve changed.
Since HTML5 `href` is not a required attribute of an `a` tag. We have a couple of links without `href` and every time you click it you will get this error.
2016-12-12 11:08:21 -05:00
Moritz Schmidt
ec5d13188b sneakily adjust database/sorted tests to include float scores 2016-12-11 15:59:28 +01:00
Moritz Schmidt
c8393d6f87 mongo: set scores as float instead of int 2016-12-11 15:58:57 +01:00
Peter Jaszkowiak
db1fdb897f Fixes for dev-ing on windows
- Change `nodebb.bat` to simply run `node ./nodebb` with same arguments
- Fix `npm test` for windows
2016-12-10 20:57:34 -07:00
Peter Jaszkowiak
bb5fe0cc83 Escape arguments in Translator.compile 2016-12-10 20:41:49 -07:00
Peter Jaszkowiak
a81aad61ab Add tests for translator static methods 2016-12-10 20:24:41 -07:00
Peter Jaszkowiak
375af7ad53 Restructure and rename translator tests 2016-12-10 20:24:41 -07:00
Peter Jaszkowiak
7c697759e9 Escape and ignore % and \, in translator args 2016-12-10 20:24:41 -07:00
barisusakli
1c6cee207f meta/settings test 2016-12-10 00:51:50 +03:00
barisusakli
9627e53922 change group membership methods 2016-12-10 00:25:49 +03:00
barisusakli
4db171985d up composer 2016-12-09 18:57:56 +03:00
barisusakli
0b9829850c closes #5273 2016-12-09 18:53:08 +03:00
Barış Soner Uşaklı
7f455344d8 show seconds in logs 2016-12-09 00:41:19 +03:00
Barış Soner Uşaklı
e0501656b6 parallel startup 2016-12-09 00:18:25 +03:00
Barış Soner Uşaklı
bca6151892 fix lint 2016-12-09 00:00:40 +03:00
Barış Soner Uşaklı
8c8e2ae190 closes #5271 2016-12-09 00:00:39 +03:00
Julian Lam
acf2e4078b fixes #5263 2016-12-08 11:28:20 -05:00
psychobunny
56fb941979 up'd tjs 2016-12-07 15:53:47 -05:00
barisusakli
78b7d5896c convert topic title to string 2016-12-07 16:25:46 +03:00
barisusakli
74b9f1a016 closes #5262 2016-12-07 11:57:27 +03:00
psychobunny
6b7b51eaf0 Merge pull request #5170 from pitaj/master
ACP search updated to support translations
2016-12-06 17:45:19 -05:00
Peter Jaszkowiak
e2ea3cb21e Fix linting error 2016-12-06 15:13:34 -07:00
Barış Soner Uşaklı
a0d32e953a Merge pull request #5261 from stuwil/fix-twitter-share-text
Avoid HTML codes in Twitter social share text
2016-12-06 23:04:31 +02:00
Stuart Williams
647d0e0a75 Avoid encoding HTML in Twitter social share text 2016-12-06 15:49:34 -05:00
Barış Soner Uşaklı
d468b6c466 Merge pull request #5260 from stuwil/fix-5259
Generate Post social share links with relative URL
2016-12-06 21:20:18 +02:00
Stuart Williams
cafc5cd891 closes #5259 2016-12-06 14:08:04 -05:00
psychobunny
b0126267a8 closes #5249 2016-12-06 11:48:59 -05:00
Peter Jaszkowiak
8ca98625b9 Key through search results 2016-12-05 18:32:17 -07:00
Peter Jaszkowiak
f1cfed50a1 Translate skins and themes fully 2016-12-05 18:31:58 -07:00
Peter Jaszkowiak
5843e8dd77 Fix Translator to work with namespace paths 2016-12-05 17:55:42 -07:00
Peter Jaszkowiak
9fd64549a3 Use async instead of Promises 2016-12-05 17:55:04 -07:00
Julian Lam
777f15941f closes #5251 2016-12-05 10:45:06 -05:00
Julian Lam
252574346e tweak gitignores, closes #5250 2016-12-05 10:32:44 -05:00
Julian Lam
ad732935fb closes #5254 2016-12-05 10:23:28 -05:00
barisusakli
cbd6853ccb notif controller test 2016-12-05 17:16:28 +03:00
barisusakli
8691256a67 fix post move test 2016-12-05 16:30:30 +03:00
barisusakli
7d47f4b067 tag tests 2016-12-05 15:09:13 +03:00
Moritz Schmidt
e8e33a8a23 ZSET scores are float: parseInt => parseFloat
In Redis, scores of sorted sets can be floats – so we should use `parseFloat` instead of `parseInt` when converting from string to number.
Should not lead to #4939 again, as `new Date()` works regardless of whether it's being passed a float or integer.
2016-12-04 17:41:27 +01:00
Julian Lam
33ff5e09bb updated revoke session middleware to allow self or admin or global mod invocation, tweaked tests a bit 2016-12-02 10:50:47 -05:00
barisusakli
aad9a39f02 move post test 2016-12-02 18:22:30 +03:00
barisusakli
55416911f7 category tests 2016-12-02 18:08:15 +03:00
Julian Lam
23cdeeb344 linting :shipit: 2016-12-02 10:07:33 -05:00
Julian Lam
a1b49a98e7 locking down session deletion route to admins and global mods only 2016-12-02 09:49:52 -05:00
barisusakli
69b766bbc8 more tests 2016-12-02 17:05:46 +03:00
barisusakli
1440139903 more tests 2016-12-02 16:10:07 +03:00
barisusakli
091f459f5e search socket test 2016-12-02 14:58:13 +03:00
barisusakli
4b6e4f085d more tests
group cover upload tests
registration approval queue tests
2016-12-02 14:05:59 +03:00
Julian Lam
68f8f57a34 upped composer version 2016-12-01 22:19:50 -05:00
psychobunny
a54a9b512a v1.4.0 2016-12-01 16:29:45 -05:00
Misty (Bot)
d120ee86cf Incremented version number 2016-12-01 21:28:53 +00:00
Misty (Bot)
f7ceace48f Merge commit 'bcb3903446e9b40be899d9606d26ca490afcc69e' into v1.x.x 2016-12-01 21:28:53 +00:00
psychobunny
fbbd0deaea Revert "testing"
This reverts commit aabe1c3a16.
2016-12-01 16:13:40 -05:00
psychobunny
aabe1c3a16 testing 2016-12-01 16:13:02 -05:00
psychobunny
bcb3903446 priv table headers 2016-12-01 16:07:40 -05:00
Peter Jaszkowiak
5223bb5191 Merge branch 'master' of github.com:nodebb/nodebb 2016-12-01 13:40:07 -07:00
barisusakli
fb42b83e1b remove hardcoded value @pichalite 2016-12-01 18:59:50 +03:00
barisusakli
7f90e31a38 more socket user tests 2016-12-01 18:59:24 +03:00
barisusakli
c3980d0c2e follow tests 2016-12-01 18:36:43 +03:00
barisusakli
5cf8006640 fix style 2016-12-01 18:05:48 +03:00
barisusakli
9ba93d8be9 group search tests 2016-12-01 17:21:09 +03:00
barisusakli
76044bea36 build js in parallel 2016-12-01 13:51:14 +03:00
Barış Soner Uşaklı
94fb6b9823 Merge pull request #5246 from AliasT/v1.x.x
wrong socket.io.js path
2016-12-01 12:12:32 +02:00
xiaobing
d6af2ae13b wrong socket.io.js path 2016-12-01 18:02:34 +08:00
barisusakli
ea007e2da4 closes #5245 2016-12-01 11:52:35 +03:00
barisusakli
d6c2779ed0 remove placeholder #5242 2016-12-01 11:31:10 +03:00
barisusakli
02aadf79b5 account/posts controller tests 2016-11-30 19:13:14 +03:00
barisusakli
a4ebb7f56e test plugin static assets 2016-11-30 18:21:30 +03:00
barisusakli
4cb48c46ab closes #5242 2016-11-30 16:28:30 +03:00
Julian Lam
12f834072a removed comment from Gruntfile 2016-11-29 21:20:14 -05:00
barisusakli
2291899f4f show chat room title in taskbar 2016-11-29 20:33:33 +03:00
barisusakli
f8caed95db don't crash if plugin doesnt set defaultLang 2016-11-29 20:15:45 +03:00
barisusakli
afef79a81e closes #5241 2016-11-29 17:16:12 +03:00
Peter Jaszkowiak
77e58f31c5 Fixes, passes tests 2016-11-28 18:16:13 -07:00
Peter Jaszkowiak
fd4d53e42c Remove unnecesary admin search indexing 2016-11-28 13:05:22 -07:00
Peter Jaszkowiak
240e958fb1 Use config.relative_path instead of allcaps 2016-11-28 13:01:31 -07:00
Peter Jaszkowiak
de6ced4e07 Tests for admin search, simplifications 2016-11-28 12:59:41 -07:00
Peter Jaszkowiak
e3dd68e19c Explanations and simplifications 2016-11-28 12:53:47 -07:00
Peter Jaszkowiak
a431dc0305 ACP search updated to support translations 2016-11-28 12:52:26 -07:00
barisusakli
2e28a8f7c7 closes #5239 2016-11-28 20:07:21 +03:00
barisusakli
49267d54b7 topics unread tests 2016-11-28 14:15:20 +03:00
barisusakli
444da3c9ec closes #5238 2016-11-27 14:11:45 +03:00
barisusakli
2f92ce1527 check deps on test 2016-11-26 13:08:00 +03:00
barisusakli
57c8e3e61c fix update privacy 2016-11-26 12:59:33 +03:00
barisusakli
dff4ee767c more group tests 2016-11-26 12:03:21 +03:00
barisusakli
d8a1e98a43 fix permalinks on pagination 2016-11-26 01:18:57 +03:00
barisusakli
a4b46fd5ce closes #5236 2016-11-25 21:11:33 +03:00
barisusakli
aa69481a0c dont mark chat notifications read if you are not in the room 2016-11-25 20:50:45 +03:00
barisusakli
c33d3e874a store pinned topics in new zset
keep pinned topics on top on different sort types
2016-11-25 17:46:29 +03:00
barisusakli
d4638ffc15 fix test dont turn single pages into ... 2016-11-24 22:56:42 +03:00
Barış Soner Uşaklı
dde32744b7 change pagination so its similar to GH 2016-11-24 22:38:30 +03:00
Julian Lam
f42c5ede61 up markdown 2016-11-24 12:11:33 -05:00
Julian Lam
68205beea8 some tweaks to the readme 2016-11-24 11:30:45 -05:00
Julian Lam
50f7508a92 up markdown and composer versions 2016-11-24 11:10:40 -05:00
barisusakli
02c21f7403 up dbsearch 2016-11-24 16:16:17 +03:00
barisusakli
1c3d9f7e94 switch to createIndex 2016-11-24 16:15:04 +03:00
barisusakli
b807915515 removed incorrect markread nid 2016-11-24 15:53:46 +03:00
barisusakli
1bda0395b8 up persona 2016-11-24 14:40:11 +03:00
barisusakli
4b815449f1 closes #5234 2016-11-24 11:02:53 +03:00
barisusakli
d3fff28de5 use base_dir 2016-11-23 21:23:37 +03:00
barisusakli
31168c669b closes #5231 2016-11-23 21:08:04 +03:00
barisusakli
6beacdb80c fix headers for new installs
encodeURI(undefined) === "undefined"
2016-11-23 21:06:02 +03:00
barisusakli
12d46ca441 remove async.series 2016-11-23 21:05:12 +03:00
Julian Lam
ffbebc646a linting 2016-11-23 12:30:03 -05:00
Julian Lam
b7fa8c1db1 fixes #5230 2016-11-23 12:25:01 -05:00
Peter Jaszkowiak
c5237443cd Standard language codes (#5218)
* Use standard language codes. Fallback for plugins.

* Fix transifex config

* Tab vs space here for some reason

* Remove redundancies

* config.relative_path instead of allcaps

* added upgrade script for existing users' accounts
2016-11-23 11:50:49 -05:00
Julian Lam
cafbdfd83e fixes #5226 2016-11-23 11:45:34 -05:00
barisusakli
4ff71f6b0b allow two sections 2016-11-23 17:40:22 +03:00
barisusakli
5d6e2ad083 multiple test fixes 2016-11-23 17:15:36 +03:00
NodeBB Misty
7e6e5f771c Latest translations and fallbacks 2016-11-23 09:02:19 -05:00
barisusakli
17f8afd0dc closes #5230 2016-11-23 16:09:46 +03:00
barisusakli
f754c8b7df digest test 2016-11-23 15:52:35 +03:00
barisusakli
60b3db7b34 dont use hardcoded uid 2016-11-23 15:51:47 +03:00
barisusakli
d2fa0c3e6a vote socket tests 2016-11-23 14:29:55 +03:00
barisusakli
1658ebbe20 categories update test 2016-11-23 13:38:20 +03:00
barisusakli
f7b77c5341 removed file.exists from getFromFile 2016-11-23 12:58:48 +03:00
barisusakli
259d49e392 all procs should load the js from file 2016-11-23 03:21:31 +03:00
Julian Lam
c987b8474e fixing new post parsing to not add img-responsive to avatars 2016-11-22 10:48:50 -05:00
Julian Lam
6f1e5a83ab resolve regression caused by part of d28f7de 2016-11-22 10:25:56 -05:00
Julian Lam
d28f7de19e fixes #5228 2016-11-22 10:23:28 -05:00
barisusakli
ce2d702117 account group page test 2016-11-22 18:21:57 +03:00
barisusakli
86deeaaf39 more group tests 2016-11-22 17:58:04 +03:00
barisusakli
cecb4c0403 some more group tests 2016-11-22 17:21:30 +03:00
barisusakli
4d86262812 use global mod user for flag tests 2016-11-22 15:55:30 +03:00
barisusakli
584cfd09ef suggested topics test 2016-11-22 15:29:58 +03:00
barisusakli
069a90e792 move maintenance mode 2016-11-22 15:02:28 +03:00
barisusakli
0794e395d5 fix test 2016-11-22 14:57:15 +03:00
barisusakli
38bc8ad5ae maintenance tests 2016-11-22 14:37:19 +03:00
Julian Lam
5916530a35 fix topic creation regression caused by 576df84218 2016-11-21 11:18:10 -05:00
Julian Lam
f0936fcafb fixes #5225 2016-11-21 11:07:25 -05:00
barisusakli
dcb6773782 #5223 2016-11-21 19:03:36 +03:00
Julian Lam
576df84218 trimming composer input before doing length check in replies 2016-11-21 10:52:37 -05:00
NodeBB Misty
ef6d52c01b Latest translations and fallbacks 2016-11-21 09:02:19 -05:00
barisusakli
0a245a8868 tag controller test 2016-11-21 15:44:58 +03:00
barisusakli
b49af0a135 #5223
adjust pagination so each page shows `postsPerPage` posts
2016-11-21 13:49:36 +03:00
barisusakli
db14c29e41 socket.io/categories tests 2016-11-21 13:47:34 +03:00
barisusakli
6acc79ec07 convert title to string 2016-11-21 10:17:45 +03:00
barisusakli
3b40afe9e2 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-11-20 17:50:43 +03:00
barisusakli
0756fcce7e eslint 2016-11-20 17:50:39 +03:00
NodeBB Misty
2440c74f60 Latest translations and fallbacks 2016-11-20 09:02:17 -05:00
barisusakli
2c77a88ba4 closes #5220 2016-11-20 15:11:34 +03:00
barisusakli
51b41a9b44 fix eslint 2016-11-20 13:33:35 +03:00
barisusakli
5d4903f643 fix test 2016-11-20 03:47:24 +03:00
Julian Lam
6acbd3ea21 optimising build step for #5211 2016-11-19 14:24:37 -05:00
NodeBB Misty
5e47ea5996 Latest translations and fallbacks 2016-11-19 09:02:22 -05:00
barisusakli
ef87a2b7d7 closes #5219 2016-11-19 16:56:44 +03:00
Julian Lam
0e8bf17ff0 re: #5211, bringing back the RELOAD BUTTON :rage2: 2016-11-18 12:53:30 -05:00
barisusakli
a3efe42938 fix test 2016-11-18 17:40:55 +03:00
barisusakli
dada858565 add canReply to messages 2016-11-18 17:35:10 +03:00
barisusakli
83c50f0648 add back emitter 2016-11-18 17:35:10 +03:00
NodeBB Misty
8fd5b12291 Latest translations and fallbacks 2016-11-18 09:02:26 -05:00
barisusakli
9796f54580 analytics tests, reduce bcrypt rouds for tests 2016-11-18 15:57:53 +03:00
barisusakli
e3616ab0f9 socket/meta test 2016-11-18 15:32:35 +03:00
barisusakli
853cea7fec removed emitter.js 2016-11-18 15:03:50 +03:00
barisusakli
5e7fb4eeb2 widget tests 2016-11-18 14:43:19 +03:00
barisusakli
50a2a7abbe plugins/install tests 2016-11-18 14:03:06 +03:00
barisusakli
2a97e5478f fix pushGroups test 2016-11-18 12:10:22 +03:00
barisusakli
e86db04631 #5211 run build step before tests
move build to its own file
2016-11-18 12:01:33 +03:00
barisusakli
f1a933210b notifications.pushGroups 2016-11-18 11:15:27 +03:00
Barış Soner Uşaklı
0c9f61c629 Merge pull request #5217 from yariplus/patch-15
Allow sending Error objects to alertError instead of just plain strings.
2016-11-18 09:54:38 +02:00
Barış Soner Uşaklı
42aa4fb67b Merge pull request #5212 from stuwil/fix-relative-path-login-redirect
Replace only base URL in login return URL, fixes #5205
2016-11-18 09:27:23 +02:00
Barış Soner Uşaklı
32f0fa282f Merge pull request #5215 from pichalite/issue-5213
Fix reorder plugins modal
2016-11-18 09:19:30 +02:00
Timothy Fike
f1e3e155c4 Update app.js 2016-11-17 18:21:54 -05:00
Timothy Fike
2d84c98565 Allow sending Error objects to alertError instead of just plain strings. 2016-11-17 18:08:44 -05:00
pichalite
d4040ed52e Fixes #5213 2016-11-17 22:12:45 +00:00
Julian Lam
7a10cffb25 fix Gruntfile.js to work with bew build step 2016-11-17 13:56:47 -05:00
Julian Lam
9bab0b53b0 re: #5211, broke out meta.css.minify to accept targets, made build output marginally nicer looking 2016-11-17 12:11:56 -05:00
Julian Lam
232b387652 set up plugins in build step as well 2016-11-17 11:51:38 -05:00
Julian Lam
b1f23c8c4b read req.uid instead of req.user.uid in admin groups list 2016-11-17 07:47:18 -05:00
barisusakli
71c7ef9109 fix test 2016-11-17 13:05:59 +03:00
barisusakli
4f0e93732a #5211
remove passing js/css between procs
2016-11-17 12:56:00 +03:00
Julian Lam
97d7b57db3 nodebb executable integration for #5211 2016-11-16 21:18:51 -05:00
Julian Lam
299fcb99f1 more progress on #5211 2016-11-16 20:54:57 -05:00
Julian Lam
9bf0f6c5cd prep for @psychobunny, re: #5211 2016-11-16 20:53:20 -05:00
Stuart Williams
f92758c764 Replace only base URL in login redirect URL, fixes #5205 2016-11-16 20:31:09 -05:00
Julian Lam
1617c99e7b linting app.js 2016-11-16 20:26:47 -05:00
Julian Lam
03cf5d8da5 upgrade and setup steps call build step now, re: #5211 2016-11-16 20:24:13 -05:00
Julian Lam
179a28d73a basic build compilation logic, re: #5211 2016-11-16 19:49:50 -05:00
Julian Lam
560dc15819 updated winston config to only use json logging if --json-logging flag is passed in or set in config 2016-11-16 19:48:23 -05:00
Julian Lam
135bb6a524 fixes #5209 2016-11-16 12:20:49 -05:00
NodeBB Misty
c452df5a7f Latest translations and fallbacks 2016-11-16 09:02:18 -05:00
barisusakli
f2e4d9ce53 change flag tests so they use socket methods as well 2016-11-16 16:24:21 +03:00
barisusakli
7a0a77d0fa revoke session tests 2016-11-16 15:10:41 +03:00
Barış Soner Uşaklı
6822973502 Merge pull request #5207 from stuwil/admin-relative-paths
Add missing relative path to Admin tags and widgets links
2016-11-16 09:41:09 +02:00
Stuart Williams
a20027d8f5 Add missing relative path to Admin tags and widgets links 2016-11-16 00:47:08 -05:00
NodeBB Misty
682afbb440 Latest translations and fallbacks 2016-11-15 09:02:16 -05:00
barisusakli
3380f61985 more tests 2016-11-15 14:01:06 +03:00
barisusakli
2476ab3684 closes #5202 2016-11-15 12:45:07 +03:00
NodeBB Misty
d19171decc updated new chat strings for profile 2016-11-14 19:20:56 +00:00
Julian Lam
2f2eb1457d auto-redirect to SSO flow should work in subfolders too 2016-11-14 14:01:05 -05:00
NodeBB Misty
e8b38bb9f7 Latest translations and fallbacks 2016-11-14 09:02:33 -05:00
barisusakli
0bf51c7fff remove node 5 from build matrix 2016-11-13 09:19:10 +03:00
NodeBB Misty
6aa93362df Latest translations and fallbacks 2016-11-12 09:02:15 -05:00
Julian Lam
ede7a71db7 Fixes #5186
On socket.io connection, all clients join a room pertaining to
their express session id. We use this room to keep track of any
sessions in different browser windows (but the same cookie jar),
so if a login/logout occurs, we can throw a session mismatch
modal.

This room can also be used to emit messages across windows/tabs...
2016-11-11 16:47:59 -05:00
NodeBB Misty
38f11f8c28 Incremented version number 2016-11-11 15:18:15 -05:00
NodeBB Misty
4db89407c4 Incremented version number 2016-11-11 15:17:14 -05:00
NodeBB Misty
ef14511e24 Merge commit 'ee75c69817e21974a93e3981ebd32f745db94e19' into v1.x.x 2016-11-11 15:17:13 -05:00
Julian Lam
0f93206122 lint 2016-11-11 13:13:06 -05:00
Julian Lam
7d523fae0f closes #5200 2016-11-11 13:00:23 -05:00
Julian Lam
885316d78f also show minutes and hours in cut off timestamp 2016-11-11 12:44:46 -05:00
Julian Lam
75ff60e4d5 partial revert of a9984bb, adding in a layer to translate ISO
timestamp to datetime attribute and save localised string into
title attribute.

Fixes #5109
2016-11-11 11:57:57 -05:00
barisusakli
ee75c69817 post edit tests 2016-11-11 17:28:36 +03:00
NodeBB Misty
b9abde5832 Latest translations and fallbacks 2016-11-11 09:05:05 -05:00
barisusakli
a9984bb926 closes #5108 2016-11-11 12:54:33 +03:00
barisusakli
1a9dd2311c closes #5175 2016-11-11 12:17:18 +03:00
Barış Soner Uşaklı
fc87f9fce5 Merge pull request #5198 from BenLubar/watching-regression
Fix followed topic notifications going to the last unread post
2016-11-11 09:22:14 +02:00
Ben Lubar
e151916f1a Fix followed topic notifications going to the last unread post
Regression introduced in 1b34ebe230.

Bug originally reported in #4469.
2016-11-10 17:55:50 -06:00
Julian Lam
e6c9c89342 closes #5197 2016-11-10 13:50:37 -05:00
barisusakli
1e543dd394 fix profile views on redis 2016-11-10 17:38:12 +03:00
barisusakli
a3bff8d320 another test for user profile 2016-11-10 17:11:31 +03:00
NodeBB Misty
7241c42302 Latest translations and fallbacks 2016-11-10 09:02:23 -05:00
barisusakli
8449f3428e user/userslug/settings test 2016-11-10 16:55:22 +03:00
barisusakli
8294fc90e3 closes #5084 2016-11-10 16:19:27 +03:00
barisusakli
5703bf6eac fix test 2016-11-10 15:59:16 +03:00
barisusakli
ce9be7e694 closes #5132 2016-11-10 15:59:08 +03:00
barisusakli
1b34ebe230 closes #5133 2016-11-10 15:26:53 +03:00
barisusakli
8a3c72797b up persona 2016-11-10 14:56:51 +03:00
barisusakli
c1d28af2a7 filter posts that you cant read 2016-11-10 13:37:34 +03:00
Barış Soner Uşaklı
43bcd453dd Merge pull request #5192 from BenLubar/replies-permissions
Check whether the user can read the replies
2016-11-10 12:29:13 +02:00
psychobunny
ae2913c50a Merge pull request #5194 from pichalite/acp-regque
UI fixes for ACP -> Manage -> Registration Queue
2016-11-09 17:21:30 -05:00
pichalite
9bcb5710c1 UI fixes for ACP -> Manage -> Registration Queue 2016-11-09 22:06:56 +00:00
Barış Soner Uşaklı
ecad552fe1 Merge pull request #5193 from pichalite/acp-users
Minor UI fixes for ACP -> Manage -> Users
2016-11-09 23:10:03 +02:00
pichalite
0087a672ba UI fixes for ACP -> Manage -> Users 2016-11-09 20:52:47 +00:00
Julian Lam
71bf8450c8 eslinting 2016-11-09 11:09:26 -05:00
Julian Lam
881b381b8b fixes #4252, linting, and added ./nodebb slog 2016-11-09 10:25:23 -05:00
NodeBB Misty
3eacd33951 Latest translations and fallbacks 2016-11-09 09:02:13 -05:00
Barış Soner Uşaklı
b38a10f96a add pagination to user profile 2016-11-09 14:26:14 +03:00
Ben Lubar
5937fefa39 Check whether the user can read the replies and allow filtering the reply count in plugins 2016-11-08 18:50:10 -06:00
barisusakli
ecef0c6ad5 more user tests 2016-11-08 22:10:12 +03:00
barisusakli
fda535a351 more chat tests 2016-11-08 20:42:56 +03:00
barisusakli
d23966c534 more tests 2016-11-08 19:59:19 +03:00
barisusakli
bbb968922d fix test 2016-11-08 18:52:56 +03:00
barisusakli
3ec760ac85 inf scroll tests for topics 2016-11-08 18:14:36 +03:00
NodeBB Misty
bece25cf6a Latest translations and fallbacks 2016-11-08 09:02:24 -05:00
NodeBB Misty
1c4effbdf8 Latest translations and fallbacks 2016-11-07 09:04:26 -05:00
barisusakli
2cc2e7688a more tests 2016-11-07 14:45:49 +03:00
NodeBB Misty
0829245ed1 Latest translations and fallbacks 2016-11-06 09:02:23 -05:00
NodeBB Misty
29e432e077 Latest translations and fallbacks 2016-11-05 09:02:20 -04:00
psychobunny
6c045fade6 up vanilla/persona 2016-11-04 16:54:46 -04:00
barisusakli
ce7513c347 allow cookieDomain from config.json 2016-11-04 20:02:24 +03:00
barisusakli
f30b694545 gitInfo error doesnt block page 2016-11-04 20:02:24 +03:00
NodeBB Misty
093dc0702d Latest translations and fallbacks 2016-11-04 09:02:22 -04:00
barisusakli
01e7b864b8 change batch.js style 2016-11-03 23:24:41 +03:00
Barış Soner Uşaklı
264e7ee303 Merge pull request #5180 from mattbailey/production-json-logging
use JSON logging and ISO8601 timestamp for production logs
2016-11-03 18:19:55 +02:00
barisusakli
5cfe379841 fix recent for inf scroll 2016-11-03 18:02:15 +03:00
NodeBB Misty
5d9e8beb52 Latest translations and fallbacks 2016-11-03 09:02:13 -04:00
barisusakli
556dfa51d9 fix pagination querystring on /recent 2016-11-03 15:15:16 +03:00
barisusakli
f8ae7b069c cid filter 2016-11-03 14:47:44 +03:00
barisusakli
58fff8b0af up persona fix test 2016-11-03 13:25:29 +03:00
barisusakli
fb47bf3889 unread/recent changes closes #4774 2016-11-03 13:06:25 +03:00
Matt Bailey
3d9dbe6c36 use JSON logging and ISO8601 timestamp for production logs 2016-11-02 15:31:19 -07:00
Anil Mandepudi
6b23dd574e Use postcss-clean to minify css instead of less (#5179)
* use postcss-clean to minify css instead of less

* alphabetical order

* white space

* white space

* Update css.js
2016-11-02 17:57:14 -04:00
barisusakli
90c2ca38f9 more nested reply fixes 2016-11-02 21:27:26 +03:00
barisusakli
c90f082c77 fix edit/vote/bookmark icons for nested replies 2016-11-02 21:05:26 +03:00
Ben Lubar
2185d8eb99 Ban UI fixes (#5169)
- Permanent bans assigned by global moderators no longer expire immediately
  (does not apply retroactively)
- Bans with no reason given no longer have "undefined" as their reason
  (applies retroactively)
- 0 is now a selectable value for "ban duration, select 0 for permanent"
2016-11-02 12:59:01 -04:00
Anil Mandepudi
f7b64d655a Fix issue where CSS files imported along with less files are not getting minified (#5178) 2016-11-02 12:57:54 -04:00
Barış Soner Uşaklı
af3b6e2759 Merge pull request #5176 from pitaj/is-main
isMain on topic.create for filter:post.create
2016-11-02 18:46:56 +02:00
Julian Lam
7993f6a4d8 fix duplicate labels in cookies ACP template 2016-11-02 12:44:49 -04:00
Peter Jaszkowiak
91a28e98b7 isMain on topic.create for filter:post.create 2016-11-02 10:33:39 -06:00
NodeBB Misty
87e4d27a22 Latest translations and fallbacks 2016-11-02 09:02:18 -04:00
barisusakli
4b7e0ff0b8 up persona 2016-11-02 16:01:29 +03:00
barisusakli
eca850c4b1 nested reply improvements
on new post increase count and add nested reply if replies are expanded
on post purge reduce count and remove nested reply
2016-11-02 15:58:19 +03:00
barisusakli
96d05b58d4 show deleted replies like regular deleted posts 2016-11-02 13:21:57 +03:00
Julian Lam
66aea0eed1 closes #5167 2016-11-01 13:00:37 -04:00
barisusakli
c15238b8f3 up persona 2016-11-01 17:54:01 +03:00
barisusakli
64a662ce50 some upload tests 2016-11-01 17:33:24 +03:00
NodeBB Misty
86200f846c Latest translations and fallbacks 2016-11-01 09:02:18 -04:00
barisusakli
9fe89f590e more admin controller tests 2016-11-01 14:34:15 +03:00
barisusakli
980e3fc7f7 topic tests, pin/lock/move 2016-11-01 14:05:53 +03:00
barisusakli
a4dfe608e9 ban tests, user/info test 2016-11-01 13:02:12 +03:00
barisusakli
d5ec36f45a socket.io topic.post/reply tests 2016-10-31 23:19:56 +03:00
barisusakli
218a1b7aab closes #5015 2016-10-31 22:39:58 +03:00
barisusakli
8f76ebf972 don't start loading again if already loading 2016-10-31 22:01:49 +03:00
Julian Lam
663f05b972 adding back banReason to header rendering, as it regressed in 1f10e0b 2016-10-31 11:35:15 -04:00
barisusakli
7a8de6169b admin controller tests 2016-10-31 13:52:26 +03:00
barisusakli
9db50a3eda fix getReplies test 2016-10-31 11:48:58 +03:00
barisusakli
3d1d9b8bd5 fix test, process rendered replies 2016-10-31 11:31:59 +03:00
barisusakli
1c928f4855 up persona 2016-10-31 11:23:27 +03:00
barisusakli
ff08cbf677 replies to posts 2016-10-31 11:20:52 +03:00
Barış Soner Uşaklı
0c08e44a34 Merge pull request #5050 from BenLubar/replies-to-post
Add a sorted set for replies-to-this-post
2016-10-31 09:36:28 +02:00
Julian Lam
1f10e0b287 fixed #5166 2016-10-29 09:35:05 -04:00
Barış Soner Uşaklı
4668acaf36 Merge pull request #5160 from BenLubar/plugin-registration-approval-queue
Allow plugins to affect whether a registration goes into the queue
2016-10-29 14:30:35 +03:00
Barış Soner Uşaklı
2214a4d156 Merge pull request #5164 from yariplus/cflags
flag tests
2016-10-29 10:15:30 +03:00
yariplus
179b66d74a flag tests 2016-10-29 00:44:45 -04:00
Ben Lubar
661bdc8311 add test for posts.getReplies 2016-10-28 09:24:01 -05:00
Ben Lubar
d74e2d0650 Don't hardcode fa-plus <https://github.com/NodeBB/NodeBB/pull/5050#issuecomment-256862345> 2016-10-28 08:48:42 -05:00
Julian Lam
2da32512af not displaying banned modal if you're not actually banned, heh 2016-10-27 19:57:33 -04:00
Ben Lubar
81211887fc make eslint happy 2016-10-27 18:57:32 -05:00
Ben Lubar
d4774e98b4 remove unused functions added in this pull request 2016-10-27 18:47:33 -05:00
Ben Lubar
ea10f51f2e UI for replies-to-post (needs theme update) 2016-10-27 18:45:21 -05:00
Ben Lubar
a654a2a5fe Work around MongoDB bug (see https://github.com/NodeBB/NodeBB/pull/5050#issuecomment-256766439) 2016-10-27 18:44:45 -05:00
psychobunny
9a9a403695 up widgets essentials 2016-10-27 15:38:35 -04:00
Ben Lubar
69ee813d3e fix typoed variable name 2016-10-27 13:31:43 -05:00
Julian Lam
f97f45a138 logic to show a modal to banned users when they try to log in via SSO 2016-10-27 14:16:37 -04:00
Ben Lubar
123c66e3ec Cache the number of replies in the post object. See #5050.
https://github.com/NodeBB/NodeBB/pull/5050#pullrequestreview-4248269
2016-10-27 12:40:51 -05:00
Ben Lubar
5d66811213 Include reply count with posts in topics 2016-10-27 12:40:51 -05:00
Ben Lubar
fae28ed3cc Add an index for going from a post to its replies 2016-10-27 12:40:51 -05:00
Peter Jaszkowiak
2824ce5587 Translator modules (#5135)
* Translator modules

* Fix language not being passed on creation

* fix test failures
2016-10-27 12:00:40 -04:00
Ben Lubar
2161f0d473 Allow plugins to affect whether a registration goes into the queue 2016-10-27 10:52:25 -05:00
NodeBB Misty
ffb020826a Latest translations and fallbacks 2016-10-27 09:02:17 -04:00
barisusakli
777914b762 more api tests 2016-10-27 13:30:50 +03:00
barisusakli
687cce6089 closes #5159 2016-10-27 13:00:22 +03:00
barisusakli
2d10490ca3 more plugin tests 2016-10-27 11:57:07 +03:00
barisusakli
fb83967a6d more route tests 2016-10-27 11:20:33 +03:00
Anil Mandepudi
619ca48403 remove shims for IE8 (#5157) 2016-10-26 14:36:26 -04:00
Barış Soner Uşaklı
94a1fe9363 update nodejs version 2016-10-26 20:49:17 +03:00
barisusakli
c5d2dbb90f increase timeout for password test 2016-10-26 20:29:50 +03:00
barisusakli
c4772300f2 more utils tests 2016-10-26 17:47:36 +03:00
barisusakli
f56251d718 test feeds 2016-10-26 17:15:48 +03:00
barisusakli
d8a9df74d7 fix wrong error returns, more tests 2016-10-26 16:38:48 +03:00
NodeBB Misty
5ceaf86c3d Latest translations and fallbacks 2016-10-26 09:02:22 -04:00
barisusakli
553ee7dcdd more chat tests 2016-10-26 12:07:00 +03:00
Julian Lam
4b5c98fb21 fix broken ACP login, closes #5156 2016-10-25 17:10:33 -04:00
Julian Lam
0590a4f2cf closes #5156 2016-10-25 16:52:06 -04:00
Sergii Paryzhskyi
e515b791da Fix eslint rules (#5117)
* Fix semi linter rule

* Fix semi-spacing linter rule

* Fix no-undef-init linter rule

* Fix space-before-blocks linter rule
2016-10-25 15:34:47 -04:00
Julian Lam
727710fbd9 using middleware.authenticate for chat route instead of ensureLoggedIn 2016-10-25 15:17:45 -04:00
barisusakli
c8b5c181ff fix flag on redis
check if number is returned on tests
2016-10-25 19:14:56 +03:00
Julian Lam
d002c3eb76 fixing session revocation on account info page 2016-10-25 10:58:11 -04:00
barisusakli
0d90279463 chat controller test 2016-10-25 17:56:37 +03:00
NodeBB Misty
21e9c98973 Latest translations and fallbacks 2016-10-25 09:02:18 -04:00
barisusakli
a995afbfe0 fix style 2016-10-25 12:53:43 +03:00
barisusakli
b16671caa5 dont do IS if there is a search term 2016-10-25 12:41:45 +03:00
Julian Lam
2463e85c0d allowing moderators access to the account info page 2016-10-24 15:58:57 -04:00
Julian Lam
9a0d81ef6b closes #5152 2016-10-24 11:12:39 -04:00
Julian Lam
735461d2f9 up themes 2016-10-24 10:13:48 -04:00
NodeBB Misty
4e27d1be3c Latest translations and fallbacks 2016-10-24 09:03:39 -04:00
barisusakli
b44f3f4811 closes #5150 2016-10-24 14:39:30 +03:00
barisusakli
2c65b2ecf3 closes #5143 2016-10-24 14:39:30 +03:00
Julian Lam
c98badea96 up vanilla 2016-10-23 22:58:50 -04:00
Julian Lam
05700c951c add slash before route in ajaxify debug string 2016-10-23 22:51:34 -04:00
Julian Lam
7caad67ef2 resolve regression introduced by 1d9c2f49d2 2016-10-23 17:58:49 -04:00
Julian Lam
9f226b2305 LINT :rage2: 2016-10-23 17:39:40 -04:00
Julian Lam
42b01060d7 up themes, allow chat modal to be minimised 2016-10-23 17:24:57 -04:00
Barış Soner Uşaklı
4859e499e4 filter falsy events first 2016-10-23 19:16:19 +03:00
Barış Soner Uşaklı
92c58cc62f Merge pull request #5131 from bdharrington7/bugfix/undefined_events
Filter out any undefined events
2016-10-23 19:14:02 +03:00
psychobunny
ee4943c485 fix regression: open chat page when in chats route instead of in modal 2016-10-23 12:05:09 -04:00
Julian Lam
1d9c2f49d2 added debug info to console on ajaxify, added throttler so requests only go through once every half second 2016-10-23 10:49:44 -04:00
barisusakli
bcdd7b12f0 closes #5149 2016-10-23 09:28:54 +03:00
Julian Lam
83a0fff887 lint :rage2: @Psychobunny 2016-10-22 20:00:26 -04:00
Julian Lam
1abef16cd9 fixes #5147 2016-10-22 19:16:47 -04:00
psychobunny
5303fe1321 up persona 2016-10-22 18:43:07 -04:00
psychobunny
f073ec04fd up persona/vanilla 2016-10-22 18:17:58 -04:00
psychobunny
ad52d1a1aa latest chats design 2016-10-22 18:17:39 -04:00
Julian Lam
4e6d1577de up themes - changed show-results-as form controls in adv. search 2016-10-22 15:56:13 -04:00
Julian Lam
dd8759b0e9 fixes #5146 2016-10-22 15:14:07 -04:00
Julian Lam
da72f6081b up composer 2016-10-22 09:09:37 -04:00
NodeBB Misty
aa5a74e495 Latest translations and fallbacks 2016-10-22 09:02:20 -04:00
Barış Soner Uşaklı
041022db63 #5145
dont crash if res.locals.config is undefined
2016-10-22 10:41:45 +03:00
Barış Soner Uşaklı
4e5d120763 closes #5142 2016-10-22 10:24:25 +03:00
Barış Soner Uşaklı
cbd936c547 closes #5140 2016-10-22 10:22:05 +03:00
Julian Lam
f2275ca261 up themes 2016-10-21 21:28:46 -04:00
Julian Lam
091ac95649 allowing + in usernames @barisusakli 2016-10-21 15:31:27 -04:00
Julian Lam
37cdf9ce25 fixes #5144 2016-10-21 14:44:38 -04:00
Julian Lam
bf276d5147 fixes #5144 2016-10-21 14:44:22 -04:00
Julian Lam
02998669c3 introducing option to disable chat message editing/deletion 2016-10-21 14:36:38 -04:00
Anil Mandepudi
0f8efe6cb8 update timeago to latest (#5139) 2016-10-21 13:48:37 -04:00
Julian Lam
7454902678 remove conflicts 2016-10-21 13:43:54 -04:00
Julian Lam
d6a485a6cc exposing pid, username, and userslug to flag modal 2016-10-21 13:43:08 -04:00
Julian Lam
8159c44df2 exposing pid, username, and userslug to flag modal 2016-10-21 13:39:14 -04:00
Julian Lam
afc182478b fixes #5141 2016-10-21 11:26:24 -04:00
NodeBB Misty
f3172ddbc7 Latest translations and fallbacks 2016-10-21 09:02:24 -04:00
Julian Lam
9cd29409f8 up vanilla 2016-10-20 13:18:15 -04:00
NodeBB Misty
29eda6c1a3 Latest translations and fallbacks 2016-10-20 09:02:26 -04:00
Julian Lam
f7475d5acc up persona again @pichalite 2016-10-19 23:18:57 -04:00
Julian Lam
cc51c66ee1 up persona 2016-10-19 22:42:40 -04:00
Julian Lam
d4d3fa3102 add warning about gmail routing 2016-10-19 18:51:07 -04:00
barisusakli
b1773ad51d add new hook to add more fields to csv download 2016-10-20 00:53:45 +03:00
barisusakli
8c7de0f239 fix eslint 2016-10-20 00:25:40 +03:00
barisusakli
1e486875f4 add top posters and most rep to acp 2016-10-20 00:08:41 +03:00
barisusakli
a0cf6046f1 new clientside hook action:profile.update 2016-10-19 20:16:57 +03:00
barisusakli
301e62c3ba up composer 2016-10-19 12:55:22 -04:00
barisusakli
d6c2fc96f8 up composer 2016-10-19 12:55:16 -04:00
NodeBB Misty
3230583996 Latest translations and fallbacks 2016-10-19 09:02:26 -04:00
bdharrington7
6dba11957e Filter out any undefined events 2016-10-18 22:00:38 -07:00
Julian Lam
9e10a962d5 up composer 2016-10-18 15:01:31 -04:00
barisusakli
14b345cea8 up composer 2016-10-18 21:47:39 +03:00
barisusakli
f0f3a86908 closes #5128
write more messaging tests
2016-10-18 20:45:31 +03:00
NodeBB Misty
f3c30cbec0 Latest translations and fallbacks 2016-10-18 09:02:23 -04:00
barisusakli
9131f9d8f6 controller tests 2016-10-18 15:32:34 +03:00
Barış Soner Uşaklı
c512a02c83 Merge pull request #5124 from yariplus/lexistuff
Add additional lexical dbal operations.
2016-10-18 12:17:02 +03:00
yariplus
af2122bdb9 fix lex tests maybe 2016-10-17 18:08:56 -04:00
barisusakli
cec3b650c3 category route test 2016-10-18 00:14:28 +03:00
barisusakli
f683a1fe62 added categories to search test 2016-10-17 23:54:06 +03:00
barisusakli
4a0f67afdc search tests
new method emptydb
use emptydb instead of flushdb, flushdb  removes indices for mongo which
breaks search tests
initialize meta.config properly in tests
enable nodebb-plugin-dbsearch for tests
2016-10-17 23:34:14 +03:00
yariplus
472dd007d8 fix mongo lex callback 2016-10-17 15:24:35 -04:00
psychobunny
d106ca9ce3 up persona 2016-10-17 14:28:07 -04:00
yariplus
e8823eab33 add db lexical tests 2016-10-17 14:22:50 -04:00
barisusakli
cd71eb909d closes #5125 2016-10-17 20:13:05 +03:00
barisusakli
abccbe8648 update validator 2016-10-17 20:02:04 +03:00
barisusakli
612b4d09f2 update nodemailer 2016-10-17 19:58:05 +03:00
barisusakli
b36f11c7f9 update some deps 2016-10-17 19:49:29 +03:00
barisusakli
5cd2da4309 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-10-17 19:01:42 +03:00
barisusakli
c972a339e6 fix value 2016-10-17 19:01:11 +03:00
barisusakli
862678eefe encodeURIComponent header values 2016-10-17 18:58:25 +03:00
Julian Lam
4ceb8914e9 adding email sent tally to digest output 2016-10-17 10:05:22 -04:00
NodeBB Misty
a317847961 Latest translations and fallbacks 2016-10-17 09:02:21 -04:00
Barış Soner Uşaklı
54a24f8dbd Merge pull request #5122 from yariplus/patch-14
Add oldTitle to topic edit hook
2016-10-17 11:17:59 +03:00
yariplus
be3b35dea3 fix callbacks and regex 2016-10-16 23:07:22 -04:00
yariplus
1bb44e2429 Allow lex min and max to be inclusive or exclusive. 2016-10-16 21:50:13 -04:00
yariplus
437d2744cc addl lex commands for mongo 2016-10-16 20:37:48 -04:00
yariplus
ef20757f3e zremrangebylex, zlexcount 2016-10-16 18:45:54 -04:00
barisusakli
ba17f98c70 getPostSummaryByPids test 2016-10-16 23:48:35 +03:00
Barış Soner Uşaklı
93a3f0f6c5 Update README.md 2016-10-16 22:54:31 +03:00
barisusakli
52a0430603 cleanup console.logs 2016-10-16 22:52:39 +03:00
barisusakli
224c311b5e testing again 2016-10-16 22:38:26 +03:00
barisusakli
13719fccfe testing on nodev6 2016-10-16 22:19:30 +03:00
barisusakli
1a63672e66 more test fixes 2016-10-16 21:51:42 +03:00
yariplus
1fc5e5d0d3 getSortedSetRevRangeByLex 2016-10-16 14:48:29 -04:00
Timothy Fike
cfa5974515 Add oldTitle to topic edit hook 2016-10-16 12:14:54 -04:00
barisusakli
15d948894d fix typo 2016-10-16 18:06:53 +03:00
barisusakli
292055d322 show test db info before test 2016-10-16 18:03:22 +03:00
barisusakli
d1fb4909ba one more try catch for node5/6 2016-10-16 17:51:35 +03:00
barisusakli
4a8b3dcd4c fix eslint errors 2016-10-16 17:42:14 +03:00
barisusakli
817cd29f00 try require from root 2016-10-16 17:36:24 +03:00
barisusakli
9e094184ba remove trailing / on url 2016-10-16 16:59:29 +03:00
barisusakli
12f366f4b4 more tests
register/login/logout tests
ability to test socket.io emits for logged in users
2016-10-16 16:43:42 +03:00
NodeBB Misty
f5173a348f Latest translations and fallbacks 2016-10-16 09:02:19 -04:00
barisusakli
b8a3ca98cb added callback to webserver.listen
wait for webserver to be ready to run tests
added topic restore test
added test to load topic via controller
2016-10-16 06:55:12 +03:00
barisusakli
ae9b5654d3 set isPrimary and isCluster 2016-10-16 06:15:11 +03:00
barisusakli
e462fadd94 init express/webserver for tests 2016-10-16 06:03:09 +03:00
NodeBB Misty
5a893a41a2 Latest translations and fallbacks 2016-10-15 09:02:20 -04:00
barisusakli
4847c9fb81 test for post.delete/restore/purge 2016-10-15 13:36:34 +03:00
barisusakli
e9a3acdac5 db.info test 2016-10-15 10:16:58 +03:00
barisusakli
6d97c4cec8 up mongo deps, create session store after db.authenticate 2016-10-14 22:18:28 +03:00
barisusakli
bfcef27c47 plugin tests 2016-10-14 21:48:38 +03:00
barisusakli
85ca547423 update pagination test so it covers separators as well 2016-10-14 20:32:31 +03:00
barisusakli
1694876475 added test for pagination 2016-10-14 20:21:33 +03:00
Barış Soner Uşaklı
ddd226162f Merge pull request #5120 from yamikuronue/master
Add coveralls
2016-10-14 19:27:25 +03:00
Yami
0d5547c25e chore: add coveralls badge to readme. This will require someone inside the org to go into coveralls and enable it, but it'll appear when they do 2016-10-14 16:12:41 +00:00
Yami
74c989d609 chore: add coveralls 2016-10-14 16:06:05 +00:00
Yami
bdd3608f81 Merge pull request #2 from NodeBB/master
Pull down from official updates
2016-10-14 11:55:16 -04:00
NodeBB Misty
358d6129a5 Latest translations and fallbacks 2016-10-14 09:03:47 -04:00
barisusakli
c0db7798b9 fix tests :dull: 2016-10-14 13:37:58 +03:00
barisusakli
9f4907ff2b up themes 2016-10-14 13:28:13 +03:00
barisusakli
235fe9efe3 fix chat modal title 2016-10-14 13:22:30 +03:00
barisusakli
acc7e160ef write test for cleanUpTag 2016-10-14 13:12:08 +03:00
barisusakli
3270f39db0 closes #5118 2016-10-14 12:54:54 +03:00
barisusakli
dd077117a2 refactor user.updateProfile and write test 2016-10-14 11:51:33 +03:00
barisusakli
600082adc7 closes #5116 2016-10-14 10:59:16 +03:00
barisusakli
139360ce18 if chat is restricted dont allow adding to room 2016-10-14 09:20:51 +03:00
barisusakli
b32d7b86e8 fix isModeratorOfAnyCategory
returns true/false now instead of an array
new method getModeratedCids returns an array of moderated cids
2016-10-14 08:56:33 +03:00
barisusakli
36be79fcb2 ignore line endings 2016-10-14 08:54:56 +03:00
Peter Jaszkowiak
f519a36560 Fix #5112, translator now accepts keys with / (#5114) 2016-10-13 21:45:05 -04:00
psychobunny
ea1696eaec up persona 2016-10-13 21:35:18 -04:00
Julian Lam
3272c0b98c linting 2016-10-13 16:01:26 -04:00
Julian Lam
7ba76fc0b6 showing assignee avatar in flags list 2016-10-13 15:38:10 -04:00
Julian Lam
45e412ed7c Merge branch 'master' of github.com:NodeBB/NodeBB 2016-10-13 14:45:23 -04:00
Julian Lam
ead4de6c6f Merge branch 'fix-some-code-lint' of https://github.com/HeeL/NodeBB into HeeL-fix-some-code-lint 2016-10-13 14:43:28 -04:00
barisusakli
41fc206b17 update exclude folder 2016-10-13 21:42:52 +03:00
barisusakli
70b30e26d8 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-10-13 21:14:38 +03:00
barisusakli
afaaa8ab88 add failing test case for #5112 2016-10-13 21:14:34 +03:00
Julian Lam
eb16eb318e exposing links to moderator tools pages in user logged-in dropdown, closes #5113 2016-10-13 14:13:48 -04:00
Julian Lam
e80400665e closes #5111 2016-10-13 13:12:41 -04:00
Anil Mandepudi
b9fd62cb6b fix admin navigation in IE (#5110) 2016-10-13 12:37:03 -04:00
Barış Soner Uşaklı
a9d69c4779 backport #5080 2016-10-13 13:46:06 +03:00
barisusakli
5f16205d15 closes #5109 2016-10-13 13:20:45 +03:00
HeeL
4a3c31b2dc Fix space-before-function-paren linter rule 2016-10-13 11:43:39 +02:00
HeeL
3fa1c1f927 Fix space-infix-ops linter rule 2016-10-13 11:42:29 +02:00
HeeL
9a0d764bbd Fix wrap-iife linter rule 2016-10-13 11:40:10 +02:00
barisusakli
0fc0b7e448 up composer 2016-10-13 08:57:30 +03:00
barisusakli
caf30b5580 use post 2016-10-12 22:22:15 +03:00
barisusakli
460ac17eaa closes #4647
addm upvotes, downvotes and votes to getPostSummary
2016-10-12 22:20:06 +03:00
Peter Jaszkowiak
2ce33ba2b0 Fix #5102, translator made more safe (#5106) 2016-10-12 14:48:43 -04:00
barisusakli
2eec1afc46 fix upgrade script so it only runs once 2016-10-12 20:16:30 +03:00
Julian Lam
4f159acf56 fixes #5104 2016-10-12 10:10:19 -04:00
barisusakli
58810aa063 only delete priv groups if they are empty 2016-10-12 16:45:37 +03:00
NodeBB Misty
a1a21a5bf9 Latest translations and fallbacks 2016-10-12 09:02:23 -04:00
Sergii Paryzhskyi
af7220eea1 Use eslint rules from airbnb (#5100)
* Add development dependencies to extend eslint config from airbnb

* Update eslint to the latest version

* Extend airbnb eslint rules and ignore failing ones
2016-10-12 08:05:29 -04:00
barisusakli
59d035376b closes #5025 2016-10-12 14:46:04 +03:00
barisusakli
eb174739ee closes #5101 2016-10-12 11:53:25 +03:00
barisusakli
59fb7d7eef failing tests for #5102 2016-10-12 11:28:59 +03:00
Barış Soner Uşaklı
1cf07a6fc5 backport #5103 2016-10-11 23:24:53 +03:00
barisusakli
dd7839b7f5 add admin next to username 2016-10-11 23:23:03 +03:00
barisusakli
9b59bc3247 closes #5103 2016-10-11 23:23:02 +03:00
NodeBB Misty
7107f7f4a1 Incremented version number 2016-10-11 09:26:39 -04:00
barisusakli
6c634b0689 fix tabs 2016-10-11 16:11:44 +03:00
barisusakli
038418bf87 batch.processArray
use batch.processArray in notifications.push and moveRecentReplies
added notification tests
added test for moveRecentReplies
clear group cache if a group is deleted
2016-10-11 16:06:47 +03:00
NodeBB Misty
035d59f52c Latest translations and fallbacks 2016-10-11 09:02:17 -04:00
Barış Soner Uşaklı
99744071eb Merge pull request #5099 from pichalite/edit-password
modify user -> edit password screen
2016-10-11 10:56:51 +03:00
barisusakli
3c52327c0b closes #5098 2016-10-11 10:43:53 +03:00
pichalite
cd35c135cc modify user edit password screen to match register page for displaying validations 2016-10-10 23:35:57 +00:00
Barış Soner Uşaklı
83a817a221 use navigator selector 2016-10-10 19:43:29 +03:00
Barış Soner Uşaklı
5dbcd9cf3f pass string to validator 2016-10-10 18:56:21 +03:00
NodeBB Misty
444420be4b Latest translations and fallbacks 2016-10-10 09:02:15 -04:00
barisusakli
18a36e84e3 up composer 2016-10-09 10:32:44 +03:00
barisusakli
ae488764b2 up themes 2016-10-09 10:25:56 +03:00
barisusakli
f9c00c3ab8 up themes 2016-10-08 19:27:48 +03:00
barisusakli
848065c820 remove empty fields from new posts 2016-10-08 19:25:10 +03:00
barisusakli
6f86621e30 closes #5096 2016-10-08 19:09:55 +03:00
NodeBB Misty
ca6101223a Latest translations and fallbacks 2016-10-08 09:02:19 -04:00
Barış Soner Uşaklı
804c7927a4 closes #5095 2016-10-07 23:56:36 +03:00
Brian Harrington
36f0637a64 Update textcomplete to 1.7.2 (#5034)
* Update textcomplete to 1.7.2

* Update to 1.7.3

* Add version 1.7.3 to file
2016-10-07 16:34:15 -04:00
Anil Mandepudi
92f96883e5 remove link to roadmap (#5089)
the page hasn't been updated in a year.
2016-10-07 16:33:17 -04:00
barisusakli
9a55498fc1 changes to manage/users 2016-10-07 17:35:33 +03:00
NodeBB Misty
e4d2c54742 Latest translations and fallbacks 2016-10-07 09:02:19 -04:00
barisusakli
0614957542 use req.app.render 2016-10-07 13:03:46 +03:00
barisusakli
102beb5f93 closes #5080 2016-10-07 11:04:21 +03:00
barisusakli
3275d26590 removed comments 2016-10-07 11:03:19 +03:00
Barış Soner Uşaklı
4d5df7547e Merge pull request #5091 from bambusoideae/master
Fix: Memory leak & connection flood when access /admin/advanced/database
2016-10-07 10:43:20 +03:00
Nguyen Trung Quan
279559ff97 Fix: Memory leak & connection flood when access /admin/advanced/database 2016-10-07 11:14:28 +07:00
Julian Lam
d1721303ab fixes #5079, fixes #5088 2016-10-06 14:39:17 -04:00
Julian Lam
597e375463 update state on new flag so action history is appended 2016-10-06 12:47:28 -04:00
Julian Lam
08a9449843 when refreshing flags page, open flag if one was open before 2016-10-06 12:47:28 -04:00
Julian Lam
80fe6bde5d removed 'No Assignee' option, updated flag saving logic 2016-10-06 12:47:28 -04:00
barisusakli
63f147786c fix update cover to use correct uid 2016-10-06 18:17:29 +03:00
NodeBB Misty
b82670e005 Latest translations and fallbacks 2016-10-06 09:02:25 -04:00
barisusakli
76e0c6eb9c up timeout, password tests were failing 2016-10-06 15:33:42 +03:00
barisusakli
b92f455cc1 group cleanup 2016-10-06 15:33:34 +03:00
NodeBB Misty
dfc8ceef9e Incremented version number 2016-10-06 07:59:33 -04:00
NodeBB Misty
b666261602 Merge commit '9bd4ab9682191c71482c5778b450d532e9c40655' into v1.x.x 2016-10-06 07:59:33 -04:00
NodeBB Misty
9bd4ab9682 Latest translations and fallbacks 2016-10-05 13:43:34 -04:00
NodeBB Misty
c1198f80a5 Latest translations and fallbacks 2016-10-05 09:02:25 -04:00
Barış Soner Uşaklı
cef92a084d Merge pull request #5074 from HeeL/update-tests
Update tests
2016-10-05 15:43:42 +03:00
barisusakli
98fff29869 closes #5082 2016-10-05 15:22:35 +03:00
Barış Soner Uşaklı
f1e6ccdbfc remove dupe header 2016-10-04 20:37:53 +03:00
Barış Soner Uşaklı
9d0dc35703 closes #5081 2016-10-04 20:10:59 +03:00
NodeBB Misty
f00c3abbc5 Latest translations and fallbacks 2016-10-04 09:02:20 -04:00
Barış Soner Uşaklı
ed0c2e9402 Merge pull request #5083 from pichalite/patch-1
remove reference to undefined function in chats module
2016-10-04 10:02:38 +03:00
Anil Mandepudi
dbbc24fab3 remove reference to undefined function 2016-10-03 16:27:29 -07:00
barisusakli
aca0a893e7 remove since properly 2016-10-03 22:18:47 +03:00
barisusakli
a9cb582c70 up themes 2016-10-03 21:18:29 +03:00
barisusakli
a254222911 if user is already part of group skip instead of error 2016-10-03 21:15:32 +03:00
barisusakli
0da9bf2698 remove since in chat 2016-10-03 21:02:07 +03:00
barisusakli
fe50c8d124 closes #5078 2016-10-03 20:35:36 +03:00
barisusakli
128ef884bf #5077 2016-10-03 18:56:39 +03:00
HeeL
3894dd644b Update mocha to the latest version 2016-10-03 01:41:54 +02:00
barisusakli
a93ee97926 closes #5073 2016-10-02 15:17:27 +03:00
Barış Soner Uşaklı
3a50c46572 Merge pull request #5033 from BenLubar/page-removed-from-url
Include page number in redirected topics
2016-09-30 22:23:11 +03:00
NodeBB Misty
4875a13421 Incremented version number 2016-09-30 14:19:14 -04:00
NodeBB Misty
3c5d7f36b2 Incremented version number 2016-09-30 14:18:18 -04:00
NodeBB Misty
fda10ea194 Merge commit '6aec61d7227b73b49f30ea912dcab5f299f240f9' into v1.x.x 2016-09-30 14:18:18 -04:00
barisusakli
6aec61d722 groupChat on recentChats 2016-09-30 19:39:08 +03:00
barisusakli
15409f92cd escape history data, hide moderation note in api 2016-09-30 18:42:29 +03:00
NodeBB Misty
ce0fd95741 Latest translations and fallbacks 2016-09-30 09:02:20 -04:00
Barış Soner Uşaklı
1b5287803c closes #5071 2016-09-30 14:00:49 +03:00
barisusakli
abd99760e5 closes #5070 2016-09-30 13:19:55 +03:00
Barış Soner Uşaklı
a325a85a84 fix mass group invite 2016-09-29 21:58:47 +03:00
barisusakli
4eb8015017 closes #5069 2016-09-29 14:31:32 +03:00
Barış Soner Uşaklı
d859163dea configure env matrix 2016-09-29 00:44:48 +03:00
Barış Soner Uşaklı
ae8a75a096 add semicolon 2016-09-29 00:36:41 +03:00
Barış Soner Uşaklı
c9edf1af42 escape test 2016-09-29 00:21:45 +03:00
Barış Soner Uşaklı
2262575760 escape " 2016-09-29 00:07:47 +03:00
Barış Soner Uşaklı
37206a8b13 #5066 2016-09-28 23:59:42 +03:00
Barış Soner Uşaklı
be07772a91 check for e11000 2016-09-28 23:19:25 +03:00
Julian Lam
2931af18d4 define two client-side hooks for logout 2016-09-28 15:46:12 -04:00
barisusakli
67f137149d fix validator 2016-09-28 20:07:55 +03:00
barisusakli
922f1587e7 closes #5067 2016-09-28 20:06:16 +03:00
barisusakli
13a380cfba update persona 2016-09-28 20:02:00 +03:00
barisusakli
053906b76d revert chat fix 2016-09-28 19:59:36 +03:00
barisusakli
c8e5f52d9f fix chat route on mobile 2016-09-28 19:03:32 +03:00
barisusakli
c19ff46a77 update themes 2016-09-28 18:31:56 +03:00
barisusakli
5c70e503aa closes #5022 2016-09-28 18:29:38 +03:00
barisusakli
f9083dc364 up persona 2016-09-28 18:22:22 +03:00
Julian Lam
d45fcb8fbe up persona 2016-09-28 10:50:07 -04:00
barisusakli
0d09fcbee7 fix setAdd on redis for empty arrays 2016-09-28 12:18:02 +03:00
Barış Soner Uşaklı
543a403fa8 Merge pull request #5062 from pichalite/patch-1
redirect main window to correct url on chat pop out
2016-09-28 12:09:52 +03:00
Barış Soner Uşaklı
d66b50ade2 Merge pull request #5065 from pichalite/patch-2
fix error on icon to picture change in profile
2016-09-28 12:09:26 +03:00
HeeL
4c6a75d85c Rename tests folder to test to follow standards 2016-09-28 10:01:37 +02:00
HeeL
157e9be6da Update mocha and istanbul npm tasks
- remove not needed relative paths to mocha and istanbul binaries
- remove test-windows task because _mocha.cmd doesn't exist
- extract mocha options to separate file
- decrease timeout for single it-block form 10 seconds to 5 second
2016-09-28 09:54:42 +02:00
Anil Mandepudi
351504bd6c fix error on icon to picture change in profile 2016-09-27 17:02:38 -07:00
Anil Mandepudi
eb61c4e267 redirect main window to correct url on chat pop out 2016-09-27 14:36:31 -07:00
Jorge Meireles
4938b00635 Fix language path (#5032) 2016-09-27 11:56:18 -04:00
Barış Soner Uşaklı
2f432d7994 up vanilla 2016-09-27 14:36:33 +03:00
Barış Soner Uşaklı
a3e1c847b9 fix wrong callback 2016-09-27 14:24:14 +03:00
Barış Soner Uşaklı
ad2b44220d escape event data 2016-09-27 14:23:48 +03:00
Barış Soner Uşaklı
e2cbc8bc69 fix timeago on acp users 2016-09-27 13:39:48 +03:00
Barış Soner Uşaklı
1eddf4c720 closes #5060 2016-09-27 13:31:50 +03:00
Barış Soner Uşaklı
d171f4049d Merge pull request #5059 from pichalite/patch-1
redirect to correct route on Chats.leave
2016-09-27 10:54:07 +03:00
Anil Mandepudi
2ef09de48d fix route on chat search 2016-09-26 17:06:31 -07:00
Anil Mandepudi
9c646ce39c redirect to correct route on Chats.leave 2016-09-26 15:56:36 -07:00
Barış Soner Uşaklı
72775831d9 Merge pull request #5057 from pichalite/patch-1
Fix [socket.io] Unrecognized message: admin.reload
2016-09-26 22:03:28 +03:00
barisusakli
9f2533b5ba closes #5054 2016-09-26 22:01:47 +03:00
Anil Mandepudi
c50486b47d Fix [socket.io] Unrecognized message: admin.reload 2016-09-26 11:45:32 -07:00
barisusakli
1ec5539adc closes #5055 2016-09-26 21:13:55 +03:00
Barış Soner Uşaklı
9cc13aaf16 fix /unread 2016-09-26 18:43:00 +03:00
barisusakli
2704727caf fix /unread 2016-09-26 18:42:01 +03:00
barisusakli
ae6305365e dont set search term from localstorage 2016-09-26 17:21:08 +03:00
Barış Soner Uşaklı
2dec354131 backport xss fix 2016-09-26 17:10:39 +03:00
barisusakli
6540b07ab2 closes #5052 2016-09-26 17:09:26 +03:00
Barış Soner Uşaklı
1fefc8d427 backport xss fix 2016-09-26 17:05:30 +03:00
barisusakli
f464966817 closes #5053 2016-09-26 17:04:43 +03:00
Barış Soner Uşaklı
c3b6974779 backport 42a8346d2d 2016-09-26 17:02:17 +03:00
barisusakli
42a8346d2d closes #5051 2016-09-26 17:00:47 +03:00
barisusakli
8326846c2f closes #5043 2016-09-26 16:55:43 +03:00
NodeBB Misty
4b14be80e3 Latest translations and fallbacks 2016-09-26 09:02:32 -04:00
barisusakli
1866f93e9c closes #5045 2016-09-26 15:37:17 +03:00
NodeBB Misty
a04a80b15a Latest translations and fallbacks 2016-09-25 09:02:31 -04:00
barisusakli
ff29d0e826 closes #4290 2016-09-24 14:35:56 +03:00
barisusakli
5746341099 closes #5048 2016-09-23 17:06:19 +03:00
barisusakli
cd9e2d17a3 fix db.incrObjectFieldBy for mongo
convert string to int
2016-09-23 13:42:14 +03:00
barisusakli
c4f82a3f60 closes #5046 2016-09-23 13:13:02 +03:00
barisusakli
d1989babf5 closes #5044 2016-09-22 20:00:39 +03:00
barisusakli
a6c3be0bb1 store category recent tids for faster retrieval 2016-09-22 18:21:54 +03:00
NodeBB Misty
930f3b28a5 Latest translations and fallbacks 2016-09-22 09:02:36 -04:00
barisusakli
9256c8332a get raw values for status and lastonline 2016-09-21 21:07:52 +03:00
barisusakli
13e624cc86 on login update lastonline 2016-09-21 17:09:37 +03:00
NodeBB Misty
5c045288ab Latest translations and fallbacks 2016-09-21 09:02:33 -04:00
barisusakli
aad1e54c37 closes #5041 2016-09-21 15:18:30 +03:00
barisusakli
15cae8d6ea ability to set moderation note on users 2016-09-21 12:55:44 +03:00
barisusakli
d60ab3c74c removed cacheStaticFiles 2016-09-21 12:00:37 +03:00
barisusakli
b0b6c66f77 fix unix domain socket 2016-09-21 11:36:02 +03:00
barisusakli
4b3b123cd0 closes #5042 2016-09-20 17:46:32 +03:00
barisusakli
33306f6236 show stack on error 2016-09-20 17:21:43 +03:00
barisusakli
e0ec2d8e54 up themes 2016-09-20 17:02:40 +03:00
barisusakli
55396ca442 inf scroll in chat-content 2016-09-20 16:58:57 +03:00
NodeBB Misty
6c7fe6b5cf Latest translations and fallbacks 2016-09-20 09:03:36 -04:00
barisusakli
4be20799ec fix getRecentChats 2016-09-20 14:41:53 +03:00
barisusakli
515ed0fc6b up themes 2016-09-20 14:28:59 +03:00
barisusakli
202edfa47e chat history access 2016-09-20 14:26:26 +03:00
barisusakli
598c47b77f fix user icon in notifications 2016-09-20 00:04:05 +03:00
barisusakli
4ce8e2224a optimize topics.markTopicNotificationsRead
let's not call it once for each tid
2016-09-19 23:43:50 +03:00
barisusakli
877820779c optimize notifications.getMultiple 2016-09-19 23:24:12 +03:00
Barış Soner Uşaklı
0452e9cfa4 dont need last step 2016-09-19 21:17:44 +03:00
NodeBB Misty
5bc9a5c533 Latest translations and fallbacks 2016-09-19 09:05:15 -04:00
barisusakli
958fe3e72f closes #3762 2016-09-19 13:08:31 +03:00
barisusakli
2ac3f5e392 closes #5040 2016-09-19 11:40:54 +03:00
NodeBB Misty
c935e6a77c Latest translations and fallbacks 2016-09-18 09:02:36 -04:00
barisusakli
5e77b87a1e removed scroll duration 2016-09-17 16:19:24 +03:00
NodeBB Misty
3a21030437 Latest translations and fallbacks 2016-09-17 09:02:32 -04:00
barisusakli
e69ff93a49 dont translate non strings 2016-09-17 14:20:17 +03:00
barisusakli
d7c559a209 moved active users up 2016-09-17 14:03:53 +03:00
barisusakli
85e7eee7e9 up composer 2016-09-17 13:40:55 +03:00
barisusakli
f384f0a7ab up composer 2016-09-17 11:17:01 +03:00
barisusakli
1a5e079919 closes #5037 2016-09-16 19:17:31 +03:00
barisusakli
2e6fc4d045 filterPidsByCid 2016-09-16 18:39:53 +03:00
NodeBB Misty
4576e7c7dd Latest translations and fallbacks 2016-09-16 09:02:36 -04:00
barisusakli
2c140c2107 ability to filter flags by category 2016-09-16 14:20:07 +03:00
barisusakli
990ecc8cd2 sortedSetIntersectionCard 2016-09-16 13:01:11 +03:00
barisusakli
814c4103ad prevent default 2016-09-16 12:07:13 +03:00
Julian Lam
a61a9bf06f upped themes 2016-09-15 22:21:34 -04:00
Julian Lam
172702565e show username and email history 2016-09-15 22:20:54 -04:00
Barış Soner Uşaklı
11b5a1f426 simplify map 2016-09-16 02:24:59 +03:00
psychobunny
cecdd205cd Merge pull request #5035 from phit/mixed-content
Fix mixed content warning on 503 status page and installer
2016-09-15 18:40:17 -04:00
barisusakli
86b616ab9e removed unnecessary waterfall 2016-09-16 00:46:06 +03:00
barisusakli
89596b81e0 style 2016-09-16 00:34:51 +03:00
barisusakli
72c75bd781 add pagination to flags page 2016-09-16 00:17:43 +03:00
barisusakli
dd78f46980 1 more tag change 2016-09-15 23:47:03 +03:00
barisusakli
c98b6b7630 tag changes 2016-09-15 23:46:47 +03:00
barisusakli
282a0b0030 fix missing translator 2016-09-15 21:49:45 +03:00
barisusakli
ef5e02534a fix missing translator, add flag reason 2016-09-15 21:48:17 +03:00
phit
2342d59e6f fix mixed content warning on 503 status page and installer 2016-09-15 20:17:04 +02:00
barisusakli
dc317d61b6 add missing next 2016-09-15 20:42:38 +03:00
barisusakli
8bffabeee4 merge 2016-09-15 20:39:19 +03:00
barisusakli
d86666024b up themes 2016-09-15 20:36:18 +03:00
barisusakli
f46755759a show categories in unread as tree 2016-09-15 20:31:47 +03:00
Julian Lam
4897e861fb handling errors :rage2: 2016-09-15 13:03:46 -04:00
Julian Lam
b12607b1de added uid to flag history, fixed loading on IS, worked around tjs bug 2016-09-15 12:46:08 -04:00
Julian Lam
4e6b2555d0 moved flag history expansion to its own method, showing usernames in assignee history event 2016-09-15 12:46:08 -04:00
Julian Lam
d04a10225c WIP showing updated flag data, history, updating flag data 2016-09-15 12:46:08 -04:00
Julian Lam
8dc57cba58 allowing updating of flag data 2016-09-15 12:46:08 -04:00
Julian Lam
7d53b778de WIP extending flags management interface with new options for state, assignee, notes, etc 2016-09-15 12:46:08 -04:00
barisusakli
a72ccfb067 only remove page # on IS 2016-09-15 19:16:52 +03:00
barisusakli
722fc02ccf Merge branch 'master' of https://github.com/NodeBB/NodeBB
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2016-09-15 17:40:03 +03:00
barisusakli
447fc26b9a fix styling issue on reqister queue 2016-09-15 17:36:43 +03:00
NodeBB Misty
c700ecbd49 Latest translations and fallbacks 2016-09-15 09:02:31 -04:00
barisusakli
07852862f5 improve helpers.isUserAllowedTo
ability to pass in an array of privileges and a single cid
2016-09-15 14:01:56 +03:00
Ben Lubar
7d90a94261 Include page number in redirected topics 2016-09-14 20:57:51 -05:00
barisusakli
a42d8c5be2 simplify keys 2016-09-15 01:57:08 +03:00
barisusakli
49bd03b8ec closes #5004 2016-09-15 00:50:24 +03:00
barisusakli
9ba3612895 remove winston 2016-09-14 22:48:30 +03:00
barisusakli
fcbdfa5688 remove post cache dump 2016-09-14 21:34:36 +03:00
barisusakli
1364fb94bf show debug info 2016-09-14 21:30:29 +03:00
barisusakli
d621b120b0 fix groups 2016-09-14 21:24:14 +03:00
barisusakli
282ac56bf6 adde expose methods back
used by plugins
2016-09-14 21:21:32 +03:00
barisusakli
fac68d52f6 cache group membership methods
groups.isMember
groups.isMembers
groups.isMemberOfGroups
clear cache for user on group.join & group.leave
2016-09-14 21:00:41 +03:00
barisusakli
599ac80f3d use array.find 2016-09-14 17:07:18 +03:00
barisusakli
9c1b1acc5b removed unsused requires 2016-09-14 17:02:33 +03:00
NodeBB Misty
dc6e4bcb67 Latest translations and fallbacks 2016-09-14 09:03:25 -04:00
barisusakli
ae8b9c3683 closes #4665 2016-09-14 15:56:35 +03:00
barisusakli
aefba6e2b1 removed some methods
helpers.getBaseUser
exposeUid, exposeGroupName
2016-09-14 14:33:39 +03:00
barisusakli
001eb3454c up composer 2016-09-14 13:08:51 +03:00
barisusakli
ea6a1b7741 new language strings 2016-09-14 13:07:24 +03:00
psychobunny
30da4ac748 closes #5031 2016-09-13 22:54:50 -04:00
barisusakli
f47f93f9bb up widget essentials 2016-09-13 14:43:03 +03:00
barisusakli
becacdefb0 new hooks to customize registration queue with custom data 2016-09-13 14:23:45 +03:00
psychobunny
5d28dbb0a4 closes #5027 2016-09-12 19:10:40 -04:00
Peter Jaszkowiak
59ed13b581 Rewrite translator for efficiency and clarity (#5013)
* Rewrite translator for efficiency and clarity

* Fixed failing tests

* Gorram tabs

* Move cache to Translator class, simplify creation

* Documentation and linting

* Use new translator API where it makes sense

* Revert 499fbe21fd (except translator.d.ts)

* promise polyfill for node<4

* Set `load` on the prototype

* Comment on Translator#translate

* Delete translator.d.ts

* Support translations added by plugins
2016-09-12 15:52:50 -04:00
Julian Lam
ef6e72c246 added test for plugin-included translations, /cc @pitaj 2016-09-12 11:23:19 -04:00
barisusakli
478da29423 closes #5020 2016-09-12 15:59:42 +03:00
NodeBB Misty
7d46265f29 Latest translations and fallbacks 2016-09-11 09:03:30 -04:00
NodeBB Misty
7d1bbaa42d Latest translations and fallbacks 2016-09-10 09:02:29 -04:00
barisusakli
7b7ec77f5c remove console.log 2016-09-09 13:27:19 +03:00
barisusakli
e1263f1057 sortedSetUnionCard 2016-09-09 13:19:14 +03:00
barisusakli
77c549081c remove unused clearRequireCache, closes #5021 2016-09-09 13:13:59 +03:00
barisusakli
7f27a21441 new hook action:infinitescroll.loadmore 2016-09-09 11:48:27 +03:00
barisusakli
650d74e28b up composer 2016-09-08 18:02:22 +03:00
barisusakli
eabb745116 change union to match intersect
accept aggregate and withscores
2016-09-08 17:59:59 +03:00
barisusakli
8d897d8dcf autocompleteTags 2016-09-08 17:24:20 +03:00
barisusakli
fdf2cb6f81 stop searching after finding 20 2016-09-08 16:22:23 +03:00
NodeBB Misty
22ab41f998 Latest translations and fallbacks 2016-09-08 09:03:24 -04:00
barisusakli
d0a94cb86c filter:topics.searchTags 2016-09-08 15:59:10 +03:00
barisusakli
b2aaeaa50d up composer 2016-09-08 14:13:41 +03:00
barisusakli
bba3c0623e up themes 2016-09-08 14:03:48 +03:00
barisusakli
8273dab368 ability to pass tags to new topics 2016-09-08 14:01:20 +03:00
barisusakli
d4c512cb3f handle the case where the object is not set at all #5018 2016-09-07 19:34:59 +03:00
barisusakli
3c0a28d293 #5018
fix extra key
2016-09-07 19:29:25 +03:00
barisusakli
7269d45e84 closes #5018 2016-09-07 19:27:29 +03:00
barisusakli
46d2168918 closes #5017 2016-09-07 18:48:08 +03:00
NodeBB Misty
24e0c9f6fe Latest translations and fallbacks 2016-09-07 09:02:30 -04:00
barisusakli
3cf4449020 use eachSeries 2016-09-07 02:08:54 +03:00
barisusakli
1b7aa5ac12 up vanilla 2016-09-07 00:15:29 +03:00
barisusakli
3cdfd22a65 on user delete remove their uid from digests 2016-09-06 20:20:12 +03:00
NodeBB Misty
a578840904 Latest translations and fallbacks 2016-09-06 09:02:34 -04:00
Julian Lam
4410385e8f Merge pull request #5012 from phit/patch-1
Use mousetrap.js minified version
2016-09-05 22:27:19 -04:00
barisusakli
95b914f710 up themes 2016-09-05 22:14:41 +03:00
barisusakli
38b17c6157 closes #5011 2016-09-05 22:12:02 +03:00
barisusakli
8448cf7da6 up themes 2016-09-05 21:53:02 +03:00
barisusakli
c01a2bfa33 default sounds to off, show correct setting in user settings page 2016-09-05 21:47:18 +03:00
NodeBB Misty
481ecdd642 Latest translations and fallbacks 2016-09-05 09:05:01 -04:00
Barış Soner Uşaklı
050ca6920a Merge pull request #4957 from lo1tuma/eslint
Add eslint to detect unhandled callback errors
2016-09-05 13:25:10 +03:00
Mathias Schreck
fef9ec7ad6 Fix unhandled callback errors 2016-09-05 11:52:35 +02:00
Mathias Schreck
824c6d9362 Run eslint as part of npm test 2016-09-05 11:48:22 +02:00
Mathias Schreck
159da18e9f Add npm script to run eslint 2016-09-05 11:48:21 +02:00
Mathias Schreck
ba937f89fa Add eslint to detect unhandled callback errors 2016-09-05 11:48:21 +02:00
phit
00a06e9253 Use mousetrap.js minified version
didn't see a reason it shouldn't use the minified version
2016-09-04 20:02:02 +02:00
psychobunny
b72a928900 up persona 2016-09-03 16:59:36 -04:00
Julian Lam
81a4103d64 closes #4826 2016-09-02 14:16:46 -04:00
Julian Lam
80d89a086e fixed issue where NodeBB was trying to JSON.parse [object Object]
re: #4982
2016-09-02 14:05:07 -04:00
barisusakli
de0f4a959a fix group page permissions for global mods 2016-09-02 19:20:53 +03:00
barisusakli
a0ef96a6e1 dont treat url as path, closes #5006 2016-09-02 19:01:46 +03:00
Julian Lam
bb80dc360e closes #4982 2016-09-02 09:39:13 -04:00
NodeBB Misty
416186a2b6 Latest translations and fallbacks 2016-09-02 09:02:51 -04:00
barisusakli
3056adf0e1 change to inactive 2016-09-02 13:35:17 +03:00
Barış Soner Uşaklı
e497882242 Merge pull request #5005 from yariplus/patch-12
modifyUserData does not check for offline status.
2016-09-02 11:43:28 +03:00
Timothy Fike
247db79d57 modifyUserData does not check for offline status. 2016-09-01 22:51:09 -04:00
Julian Lam
c9c60ef8ed fixes #4982 2016-09-01 14:10:10 -04:00
barisusakli
56f863e5b8 remove :rage2: console.log 2016-09-01 18:26:47 +03:00
Julian Lam
1d0edee358 showing ban reason on user login, closes #5002 2016-09-01 09:20:41 -04:00
NodeBB Misty
7cd12b0ab4 Latest translations and fallbacks 2016-09-01 09:02:35 -04:00
barisusakli
162f14b229 closes #4908 2016-09-01 15:44:10 +03:00
barisusakli
55c9e6f4b6 closes #3818
set the value saved to empty string if the email is identical to
original
this causes the original to be used since empty string is falsy
2016-09-01 15:32:47 +03:00
barisusakli
6acfb02316 closes #4996 2016-09-01 14:12:17 +03:00
barisusakli
9c064d8fac only process embedded tpls 2016-09-01 13:55:53 +03:00
Barış Soner Uşaklı
bbec02ca39 Merge pull request #5003 from yariplus/patch-11
New topic from anywhere.
2016-09-01 11:32:06 +03:00
Timothy Fike
fc68b64fe0 New topic from anywhere.
Like on the navbar.
2016-08-31 20:17:11 -04:00
barisusakli
90fbe73188 up themes 2016-08-31 23:28:41 +03:00
barisusakli
8868668daa fix navigator displaying wrong index
related to #4998
2016-08-31 23:23:25 +03:00
barisusakli
b84f36cc20 fix navigator method not getting removed 2016-08-31 23:15:17 +03:00
barisusakli
7afd2925af get sort setting from config 2016-08-31 22:50:48 +03:00
barisusakli
240682563d fix index error 2016-08-31 22:15:33 +03:00
barisusakli
b0f630aaec always use string as cache key 2016-08-31 21:39:02 +03:00
barisusakli
fea2267b58 fix navigator.scrollToPost()
pagination and alternate sort page calculation
2016-08-31 21:23:02 +03:00
barisusakli
fe3417538c fix getSortedSetRange() if start>0 and stop is -1 2016-08-31 21:23:02 +03:00
Julian Lam
a027dbfecd up themes, re: #5002 2016-08-31 12:22:30 -04:00
Julian Lam
194716cd68 re: #5002 2016-08-31 12:20:51 -04:00
barisusakli
d4055ddaef no need for pubsub in getNodeInfo 2016-08-31 14:25:44 +03:00
Julian Lam
20ae29cce3 fixes #4992 (#4994)
* fixes #4992

* make jquery ui a r.js module

* require jqueryui in admin/extend/widgets
2016-08-30 21:33:27 -04:00
barisusakli
532a543226 closes #4999
$(document).offset() crashes on jquery 3.0
2016-08-31 02:14:11 +03:00
Julian Lam
cb940fec28 so no iojs then 😉 2016-08-30 17:09:35 -04:00
Julian Lam
5eae8b2d4f re: #4956, made it a recommendation instead, not a hard requirement 2016-08-30 17:03:49 -04:00
Julian Lam
9f064b67e6 closes #4956 2016-08-30 17:01:55 -04:00
barisusakli
91aceced9e up lavender 2016-08-30 20:43:40 +03:00
NodeBB Misty
87c0f022d2 Latest translations and fallbacks 2016-08-30 09:02:35 -04:00
barisusakli
a9e4add8d2 closes #4998 2016-08-30 14:25:24 +03:00
barisusakli
80c98e5ecf closes #4989 2016-08-30 13:25:20 +03:00
barisusakli
0eb3fb222f convert to string 2016-08-30 13:19:04 +03:00
Barış Soner Uşaklı
fdd8514058 backport https://github.com/NodeBB/NodeBB/issues/4997 2016-08-30 13:18:40 +03:00
barisusakli
e33dfe3c55 closes #4997 2016-08-30 13:17:48 +03:00
barisusakli
4aac8bbe6a closes #2222 2016-08-30 13:10:52 +03:00
pichalite
af32d0ad40 require jqueryui in admin/extend/widgets 2016-08-30 04:33:25 +00:00
pichalite
3ef7c57a63 make jquery ui a r.js module 2016-08-29 21:53:12 +00:00
psychobunny
8b1d324bd1 update copyright 2016-08-29 17:38:59 -04:00
Julian Lam
90ba8c6077 update travis.yml supported node version, closes #4956 (#4995) 2016-08-29 16:23:03 -04:00
pichalite
11be46ec23 fixes #4992 2016-08-29 17:42:29 +00:00
Julian Lam
b854dd5150 updated persona 2016-08-29 13:21:34 -04:00
Anil Mandepudi
0be557b846 fixes #4991 (#4993) 2016-08-29 13:00:44 -04:00
barisusakli
6e0a36909d fix pagination after jquery 3.0 update
cache: false in $.ajax breaks the query string by adding _=timestamp

the url results in `page.com/category/2/slug&page=2?_=timestamp`
2016-08-29 19:08:48 +03:00
barisusakli
6e3d525ef4 closes #4704 2016-08-29 16:12:33 +03:00
NodeBB Misty
a9b68606a1 Latest translations and fallbacks 2016-08-29 09:02:37 -04:00
barisusakli
06d74c4c3f up themes 2016-08-29 15:52:01 +03:00
barisusakli
843dc61e41 closes #4990 2016-08-29 15:51:46 +03:00
barisusakli
6d34bb4657 closes #2166 2016-08-29 12:43:37 +03:00
NodeBB Misty
3545331a89 Latest translations and fallbacks 2016-08-28 09:02:37 -04:00
barisusakli
5cd6614d03 refactor 2016-08-27 16:16:54 +03:00
NodeBB Misty
3be71e9b37 Latest translations and fallbacks 2016-08-27 09:02:48 -04:00
barisusakli
07fe5057e1 make sure validator.escape() receives strings only 2016-08-27 15:45:15 +03:00
barisusakli
431e7dd987 up composer 2016-08-27 15:08:13 +03:00
barisusakli
cbafbab107 closes #4986 2016-08-27 14:25:30 +03:00
barisusakli
e964ca1486 up composer 2016-08-27 14:08:26 +03:00
barisusakli
50aac3c6a4 closes #4979 closes #4984 2016-08-27 14:06:14 +03:00
barisusakli
b933385b76 partially revert fa9f1ac7fe
extending module.exports instead of overwriting fixes the issue
2016-08-27 12:58:08 +03:00
barisusakli
3dae8f5529 up themes 2016-08-27 12:55:18 +03:00
Barış Soner Uşaklı
559b01afac Merge pull request #4987 from pichalite/register-page
minor design tweaks to register page
2016-08-27 11:36:25 +03:00
pichalite
05ad373b80 minor design tweaks to register page 2016-08-27 06:34:18 +00:00
barisusakli
c8f270ec67 another validator.escape fix 2016-08-27 02:01:41 +03:00
Barış Soner Uşaklı
8a847df4fd Merge pull request #4985 from pichalite/require-translator
require translator instead of global
2016-08-27 01:52:45 +03:00
barisusakli
fa9f1ac7fe fix dependency errors 2016-08-27 01:52:08 +03:00
barisusakli
56118ec1da fix 500-embed.tpl 2016-08-27 01:42:56 +03:00
pichalite
400da256f1 require translator instead of global 2016-08-26 22:19:33 +00:00
barisusakli
324fbcf325 merge 2016-08-27 00:45:48 +03:00
psychobunny
d1b9d1be6a fixed acp/users + acp/tags 2016-08-26 17:43:55 -04:00
barisusakli
805b452ae1 closes #4981 2016-08-27 00:37:13 +03:00
psychobunny
b5850a3bca Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-26 17:33:10 -04:00
psychobunny
ebfb857195 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/meta/tags.js
2016-08-26 17:33:07 -04:00
Julian Lam
d74aa0bd49 up composer @pichalite 2016-08-26 17:33:02 -04:00
psychobunny
0afa55517f fixed app.loadJQueryUI; minified jquery-ui.js; removed jqueryui from cold load payload; fixed broken image paths 2016-08-26 17:31:57 -04:00
Anil Mandepudi
addabf8e6e fix privileges in file upload and jquery-ui in tags (#4983) 2016-08-26 17:30:43 -04:00
psychobunny
8b9f004b7b Revert "fixed app.loadJQueryUI and minified jquery-ui.js"
This reverts commit 2c9c14ff7d.
2016-08-26 17:07:34 -04:00
psychobunny
2c9c14ff7d fixed app.loadJQueryUI and minified jquery-ui.js 2016-08-26 17:02:21 -04:00
Julian Lam
be96704d5d possible fix for #4981 2016-08-26 15:56:11 -04:00
Julian Lam
7ca6bc25c7 removing commented out code 2016-08-26 15:39:12 -04:00
Julian Lam
785f4fc5a0 updating to jQuery 3.x on frontend and ACP 2016-08-26 15:36:50 -04:00
barisusakli
89f550ce7c moved middleware requires 2016-08-26 19:40:14 +03:00
barisusakli
56c4e13316 another dependency fix and test 2016-08-26 19:33:16 +03:00
barisusakli
6d946425fa fix tests, circular deps 2016-08-26 19:13:05 +03:00
barisusakli
df7cfe2146 missing favicon dep 2016-08-26 19:12:55 +03:00
barisusakli
a0f2e8a8ec use req.uid 👍 2016-08-26 18:55:44 +03:00
barisusakli
8f408faf46 organize middlewares
removed app.locals.middleware
middlewares can be required anywhere, ie in controllers
2016-08-26 18:50:37 +03:00
barisusakli
f5941cbf1c removed unused requires 2016-08-26 17:14:13 +03:00
Julian Lam
25cd772e0e closes #4766 2016-08-26 10:04:44 -04:00
Julian Lam
e9770b6bd5 firing client-side hook when settingsv1 saves 2016-08-26 10:04:44 -04:00
Julian Lam
9198008907 forcing ACP settingsv1 to wait a beat before firing client-side hook so client-side scripts can register listeners first 2016-08-26 10:04:44 -04:00
barisusakli
3c1a4876d7 removed unused vars 2016-08-26 17:01:11 +03:00
barisusakli
5c83075806 moved variables parse to ajaxify.js 2016-08-26 16:39:09 +03:00
NodeBB Misty
b7fbc7a531 Latest translations and fallbacks 2016-08-26 09:03:14 -04:00
barisusakli
de34a98636 up themes 2016-08-26 13:08:29 +03:00
barisusakli
e5ecb333f9 closes #4978 2016-08-26 12:53:00 +03:00
barisusakli
97f0d2438f up timeout to 500ms 2016-08-26 12:33:44 +03:00
barisusakli
1339c4155d up composer 2016-08-26 11:19:19 +03:00
Julian Lam
275f5e32e8 adding back Bootswatch paper variables override 2016-08-25 17:23:06 -04:00
barisusakli
c8ba61ac7b closes #4791 2016-08-26 00:05:40 +03:00
Julian Lam
2428d5e442 Update bootstrap in ACP
Also fixed #4872 by moving user creation modal to root level
(outside of .panel)
2016-08-25 16:10:33 -04:00
barisusakli
2544287269 closes #4977 2016-08-25 22:16:54 +03:00
barisusakli
056942ea4d up themes 2016-08-25 22:01:56 +03:00
barisusakli
f7540a7edc closes #4811 2016-08-25 21:56:17 +03:00
Julian Lam
aa45db53f9 update persona 2016-08-25 14:23:53 -04:00
Julian Lam
4dd5d1877f update themes 2016-08-25 14:11:22 -04:00
Julian Lam
da47f5675c don't wrap images in links if the link is blank, fixes #4976 2016-08-25 13:01:16 -04:00
barisusakli
6c8a34ae50 up persona 2016-08-25 17:32:26 +03:00
barisusakli
f996dfab91 removed find 2016-08-25 17:02:22 +03:00
barisusakli
ad0dd3bf28 up theme 2016-08-25 16:56:13 +03:00
barisusakli
5983235875 .translateAttr 2016-08-25 16:40:18 +03:00
barisusakli
bb6a3f3a52 up themes 2016-08-25 16:26:54 +03:00
barisusakli
276031cd6f closes #4585, closes https://github.com/NodeBB/nodebb-theme-persona/issues/299 2016-08-25 16:05:07 +03:00
NodeBB Misty
5393a98e26 Latest translations and fallbacks 2016-08-25 09:02:33 -04:00
barisusakli
abd0a10918 added selected group to profile api 2016-08-25 14:24:17 +03:00
Barış Soner Uşaklı
550fa4717d backport missing return fix
fixes double topic creation if guest handles are allowed
2016-08-25 14:01:33 +03:00
barisusakli
b6ac809a7d moved sync code out of async 2016-08-25 13:56:43 +03:00
barisusakli
9eb64aa3fa closes #4975 2016-08-25 10:30:51 +03:00
psychobunny
6516b70f9a Merge pull request #4974 from yariplus/patch-10
Fix requiring files outside of node_modules
2016-08-24 17:51:50 -04:00
Timothy Fike
ed3bc06dee Fix requiring files outside of node_modules
e.g.
```
"scripts": [
        "../../public/vendor/jquery/js/jquery-ui-1.10.4.custom.js"
]
```
2016-08-24 17:48:04 -04:00
Julian Lam
f0c4c59793 up composer 2016-08-24 16:12:00 -04:00
Julian Lam
358deb386a up themes 2016-08-24 11:14:15 -04:00
NodeBB Misty
15d9a5f4d5 Latest translations and fallbacks 2016-08-24 09:02:29 -04:00
barisusakli
6a04e2909d page param not used 2016-08-24 14:54:18 +03:00
barisusakli
0d7d6b665f up themes 2016-08-24 14:52:18 +03:00
barisusakli
84f88a6f15 refactor user search
use pagination on results
removed infinite scroll
changed the term and section to use the query param as well
pagination urls respect search
2016-08-24 14:47:01 +03:00
barisusakli
768c1b37d4 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-24 12:14:33 +03:00
barisusakli
0fb74a2636 pass err object along so errors dont get treated as 404 @julianlam 2016-08-24 12:14:28 +03:00
Barış Soner Uşaklı
2e1e40026a Merge pull request #4971 from BenLubar/search-null
Fix null object in search for users with no preferences set.
2016-08-24 10:23:07 +03:00
Ben Lubar
598935b3bf Fix null object in search for users with no preferences set.
localStorage.getItem returned null, and JSON.parse(null) is null.
2016-08-23 19:35:50 -05:00
Julian Lam
dbdbfc6d75 allowing the port to be defined by a custom port environment variable, for certain hosting environments 2016-08-23 15:10:52 -04:00
barisusakli
34276dd638 up themes 2016-08-23 20:04:25 +03:00
barisusakli
5d5b74f3ed if no sorting specificed let search plugins handle 2016-08-23 19:59:25 +03:00
barisusakli
31751c9d8a closes #4960 2016-08-23 18:47:07 +03:00
NodeBB Misty
61efabf4ec Latest translations and fallbacks 2016-08-23 09:03:30 -04:00
Barış Soner Uşaklı
34a116149a Merge pull request #4969 from BenLubar/category-ignore-recursive
ignore/watch categories recursively
2016-08-23 14:52:44 +03:00
Ben Lubar
862fd1a94a ignore/watch categories recursively 2016-08-23 00:24:34 -05:00
Julian Lam
ebb50160cb wrap saving of url_parsed in conditional, since url isn't set during setup 2016-08-22 18:16:09 -04:00
Julian Lam
60ea7d5121 fixes #4966 2016-08-22 16:24:31 -04:00
Ben Lubar
de49de3c56 Show accounts using the same IP address as a registration queue entry (#4965) 2016-08-22 15:42:49 -04:00
NodeBB Misty
3864e8044e Latest translations and fallbacks 2016-08-22 09:02:56 -04:00
barisusakli
e4fa0289d6 closes #4961 2016-08-22 14:38:13 +03:00
NodeBB Misty
f4fafeb500 Latest translations and fallbacks 2016-08-21 09:02:34 -04:00
Julian Lam
8a107c8d6c saving getUsersCSV to event log and outputting to log if pressed 2016-08-19 12:40:57 -04:00
barisusakli
409621c661 closes #4843 2016-08-19 17:50:16 +03:00
NodeBB Misty
d5b8b1da56 Latest translations and fallbacks 2016-08-19 09:03:20 -04:00
Julian Lam
8d745ceb07 moving chat dropdown generation to tpl /cc @pichalite 2016-08-18 14:39:51 -04:00
Julian Lam
a412ef04b0 up persona 2016-08-18 13:29:32 -04:00
Julian Lam
48ade6099c fixes #4469 2016-08-18 11:07:44 -04:00
Julian Lam
093b21fc31 fixes #4954 2016-08-18 10:05:52 -04:00
NodeBB Misty
bf3b270c77 Latest translations and fallbacks 2016-08-18 09:02:32 -04:00
barisusakli
096cbf30cf up themes 2016-08-18 13:42:43 +03:00
Barış Soner Uşaklı
37f7b89e2a Merge pull request #4959 from pichalite/login-sessions
move login sessions section to account info route
2016-08-18 13:18:57 +03:00
pichalite
0b431ec41c move login sessions section to account info route 2016-08-18 00:15:36 +00:00
Anil Mandepudi
a36af97c0c fix breadcrumb for account info page (#4958) 2016-08-17 19:51:58 -04:00
psychobunny
59bd1d71f4 return roomId in optional callback when opening new chat 2016-08-17 16:32:53 -04:00
NodeBB Misty
32dea338b0 Latest translations and fallbacks 2016-08-17 09:03:13 -04:00
barisusakli
d272a63492 fix messaging.parse to be err first 2016-08-17 14:12:35 +03:00
Barış Soner Uşaklı
dfaa27b7fc Merge pull request #4951 from lo1tuma/handle-errors
Handle callback errors
2016-08-17 14:06:59 +03:00
Mathias Schreck
ce9ee62fa0 Handle callback errors 2016-08-17 12:54:59 +02:00
barisusakli
d43c19c173 closes #4952 2016-08-17 12:40:14 +03:00
barisusakli
4af631666a closes #4955 2016-08-17 12:12:07 +03:00
barisusakli
9207d6a74d fix so the parent button doesn't ajaxify if the post is already on the screen 2016-08-16 23:27:43 +03:00
barisusakli
6e469f1f0a add missing return to guestHandleValid 2016-08-16 22:30:11 +03:00
barisusakli
3b0eca3be2 fix timestamp on posts.reply 2016-08-16 22:27:26 +03:00
Julian Lam
e26166a45b closes #4950 2016-08-16 13:48:56 -04:00
barisusakli
204dd2a69f closes #4948 2016-08-16 20:11:03 +03:00
barisusakli
f77d9053ad closes #4795 2016-08-16 19:52:22 +03:00
barisusakli
995d2d7fda Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-16 19:17:26 +03:00
barisusakli
316187946f fix related crash 2016-08-16 19:17:21 +03:00
Julian Lam
ba008a2fa5 fixes #4949 2016-08-16 11:43:44 -04:00
barisusakli
a002eecd03 dont crash if set is not defined, closes https://github.com/NodeBB/nodebb-plugin-leaderboard/issues/4 2016-08-16 12:16:38 +03:00
Barış Soner Uşaklı
ebbfe3cc1f Update README.md 2016-08-15 20:21:32 +03:00
barisusakli
3d56776ab0 fix tabs 2016-08-15 19:28:01 +03:00
barisusakli
f4e3d571a3 shorter 2016-08-15 19:26:18 +03:00
barisusakli
6022fd984a closes #4945 2016-08-15 19:23:15 +03:00
barisusakli
b9961bcffa if email is undefined use empty string 2016-08-15 19:23:15 +03:00
Julian Lam
96abdb4b69 Up composer 2016-08-15 09:26:06 -04:00
barisusakli
49bf27d985 closes #4944 2016-08-14 21:40:58 +03:00
barisusakli
c58e23db58 fix tests 2016-08-14 19:12:33 +03:00
barisusakli
aad9f83869 use getSortedRevRangeWithScores, cleanup 2016-08-14 13:13:15 +03:00
barisusakli
33e60d5239 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-14 12:59:07 +03:00
barisusakli
a7ed5a0129 delete content 2016-08-14 12:59:03 +03:00
Barış Soner Uşaklı
6d642bdabf added database to issue template 2016-08-13 20:20:13 +03:00
barisusakli
d910ebfac1 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-13 20:02:53 +03:00
barisusakli
c8a369f5c3 closes #4939 2016-08-13 20:02:48 +03:00
Barış Soner Uşaklı
d77a8ea859 Merge pull request #4941 from AccaliaDeElementia/master
Allow listing all groups via websocket
2016-08-13 19:18:18 +03:00
NodeBB Misty
fd71b1afb6 Latest translations and fallbacks 2016-08-13 09:02:25 -04:00
Accalia de Elementia
de007772a4 feat: Allow listing all groups via websocket
also add missing radix to parsing of `after` in groups.loadMore websocket method.
2016-08-13 12:50:06 +00:00
barisusakli
85dfe7704f moved related up 2016-08-13 01:20:27 +03:00
barisusakli
28331389a6 added getTopicWithPosts test 2016-08-13 01:20:19 +03:00
barisusakli
43184935bd revert mongodb packages 2016-08-12 20:47:43 +03:00
Julian Lam
80c096dedb Revert "up async to 2.0.1"
This reverts commit ad4910d44d.
2016-08-12 12:52:44 -04:00
NodeBB Misty
a5c409c6f7 Latest translations and fallbacks 2016-08-12 09:02:39 -04:00
barisusakli
ecb4e3ad7c up deps 2016-08-12 16:01:01 +03:00
barisusakli
ad4910d44d up async to 2.0.1 2016-08-12 15:47:11 +03:00
barisusakli
32320018ab closes #4911 2016-08-12 15:29:41 +03:00
barisusakli
b9ad7f2dbb remove unused group code from settings 2016-08-12 15:06:03 +03:00
barisusakli
650f4d6ed5 moved sitemap to its own file 2016-08-12 14:11:40 +03:00
barisusakli
a13bc64f40 wait for db flush to complete to carry on with other test suites
fixes the problem where tests would sometimes fail due to timing issues
2016-08-12 13:49:41 +03:00
barisusakli
4ca53703e3 added dupe group create test 2016-08-12 13:41:49 +03:00
barisusakli
0efe315790 closes #4631 2016-08-12 12:57:23 +03:00
barisusakli
63f5cd0c79 removed deepStrictEqual 2016-08-12 02:59:19 +03:00
barisusakli
c4eb1c92a8 fix some tests 2016-08-12 02:46:19 +03:00
barisusakli
7d4ef3907f fix semicolons 2016-08-12 02:09:52 +03:00
barisusakli
b5bf2737e4 bind to regular function 2016-08-12 02:09:11 +03:00
barisusakli
bc255110cc closes #2832 2016-08-12 01:55:38 +03:00
barisusakli
ed756f18f4 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-12 01:14:06 +03:00
barisusakli
e55043e5ab closes #4867 2016-08-12 01:14:01 +03:00
NodeBB Misty
6067128493 Latest translations and fallbacks 2016-08-11 17:07:15 -04:00
Julian Lam
bc961e2157 removing reload, closes #4936, closes #4929 2016-08-11 16:43:42 -04:00
Barış Soner Uşaklı
474eea942f Merge pull request #4934 from AccaliaDeElementia/master
Allow first page of group members to be retrieved via websocket
2016-08-11 16:30:07 +03:00
NodeBB Misty
528964cbe4 Latest translations and fallbacks 2016-08-11 09:02:29 -04:00
Accalia de Elementia
74a993ccb3 fix: Use the correct path for utils 2016-08-11 12:57:06 +00:00
Accalia de Elementia
574929337d chore(whitespace): revert whitespace only changes 2016-08-11 12:45:23 +00:00
Accalia de Elementia
413517a084 feat(socket.io-groups): Allow first page of members to be retrieved via websockets
previously requesting the first page of members of a group failed
2016-08-11 12:36:27 +00:00
barisusakli
6c11709cf1 closes #4933 2016-08-11 14:22:15 +03:00
barisusakli
73c3da1a83 dont check maximum group name length if it is a privilege group 2016-08-11 09:52:05 +03:00
barisusakli
973e208329 added banned:expire to user hash 2016-08-11 09:31:10 +03:00
barisusakli
1d70dc0d8b closes #4930 2016-08-11 08:41:34 +03:00
barisusakli
d7cda83c8e fix lang key 2016-08-11 00:12:15 +03:00
barisusakli
56d325bd86 privilege fixes 2016-08-10 23:55:49 +03:00
barisusakli
73e19fa13a fix app.alertError 2016-08-10 22:53:30 +03:00
barisusakli
037b901e85 closes #4919 2016-08-10 21:28:22 +03:00
Barış Soner Uşaklı
e1c0a8f3b3 Merge pull request #4909 from BenLubar/self-topic-deletion
add edit/delete post, delete topic privileges per-category
2016-08-10 20:20:31 +03:00
Barış Soner Uşaklı
c9f14fd91f Merge pull request #4928 from akhoury/patch-10
nodebb-plugin-spam-be-gone@0.4.10
2016-08-10 20:04:11 +03:00
Julian Lam
e019eb40c4 altering ajaxify abort behaviour to look for null instead of empty string, and triggering ajaxify.end when abort occurs 2016-08-10 12:50:41 -04:00
Julian Lam
9e7d90e314 allowing listeners to cancel an ajaxify request via ajaxify.start client-side hook 2016-08-10 12:29:25 -04:00
Ben Lubar
936149bb38 grant topics:delete by default <f62da5c4e9 (r74206749)> 2016-08-10 09:48:01 -05:00
Aziz Khoury
ab85885514 nodebb-plugin-spam-be-gone@0.4.10
https://github.com/akhoury/nodebb-plugin-spam-be-gone/issues/49
2016-08-10 10:44:48 -04:00
NodeBB Misty
f394056b7c Latest translations and fallbacks 2016-08-10 09:02:41 -04:00
barisusakli
a4c340fb69 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-10 11:06:36 +03:00
barisusakli
d469d77d5e closes #4924 2016-08-10 11:06:30 +03:00
Julian Lam
9814652d76 updating package.json to reflect latest version of NodeBB, for master branch 2016-08-10 00:16:55 -04:00
NodeBB Misty
c0a4bf91f3 Incremented version number 2016-08-10 00:15:35 -04:00
NodeBB Misty
2cbdb886b1 Merge commit 'fd8f5f9415d17c646dfa7d0806050f4f38785c93' into v1.x.x 2016-08-10 00:15:34 -04:00
psychobunny
709be213e5 up persona 2016-08-09 15:35:52 -04:00
Julian Lam
fd8f5f9415 closes #4918 2016-08-09 12:56:42 -04:00
Julian Lam
19b4679c0e properly handling flattened dependencies in plugin scripts 2016-08-09 12:32:56 -04:00
Anil Mandepudi
c44c689ebf fixes #4921 (#4922) 2016-08-09 10:54:58 -04:00
Ben Lubar
f62da5c4e9 see NodeBB/NodeBB#4909 2016-08-09 09:50:49 -05:00
NodeBB Misty
9856cf282a Latest translations and fallbacks 2016-08-09 09:02:34 -04:00
barisusakli
b3b2d81b8c up composer 2016-08-09 14:43:23 +03:00
barisusakli
6d1a37d9af up composer 2016-08-09 10:49:09 +03:00
psychobunny
2e167a9899 bump persona 2016-08-08 15:11:27 -04:00
Julian Lam
3b9c73a4c5 up composer 2016-08-08 12:36:49 -04:00
Julian Lam
a9c1ee5512 adding ban button to account info page 2016-08-08 12:10:35 -04:00
Julian Lam
9b8bbde0d3 tweak ACP email settings form syntax 2016-08-08 11:23:48 -04:00
NodeBB Misty
ff70f36e1a Incremented version number 2016-08-08 07:47:04 -04:00
NodeBB Misty
60721ce75d Merge commit 'aac0313f2eb87123347c5925a134adcd57fb869e' into v1.x.x 2016-08-08 07:47:03 -04:00
barisusakli
aac0313f2e closes #4917 2016-08-08 13:21:05 +03:00
barisusakli
81910530fe Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-07 18:46:02 +03:00
barisusakli
bb05e6e393 closes #4916 2016-08-07 18:45:54 +03:00
NodeBB Misty
22e73b925f Latest translations and fallbacks 2016-08-07 09:04:13 -04:00
Ben Lubar
26df552d55 Add edit, delete, and topics:delete permissions for users acting on their own posts 2016-08-06 21:23:09 -05:00
Barış Soner Uşaklı
b0c55c86ed Merge pull request #4842 from acardinale/master
Added new core component for topic with tid
2016-08-07 01:02:59 +03:00
NodeBB Misty
83be60e707 Latest translations and fallbacks 2016-08-06 09:03:11 -04:00
Julian Lam
c00905035e up composer 2016-08-05 16:45:09 -04:00
barisusakli
b8687b53bd Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-05 22:35:30 +03:00
barisusakli
84025fa7fc closes #4801 2016-08-05 22:35:26 +03:00
psychobunny
af460426ad Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-05 15:27:25 -04:00
psychobunny
0e204f5ce5 missing lang key for zen mode 2016-08-05 15:27:21 -04:00
barisusakli
b07ae9a2ff Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-05 21:54:50 +03:00
barisusakli
2103880d61 only extend 5mins if less than 5mins left 2016-08-05 21:54:47 +03:00
Julian Lam
529611d278 up composer 2016-08-05 12:18:03 -04:00
Julian Lam
814fec22b2 up themes 2016-08-05 11:54:51 -04:00
barisusakli
a53f7f65db change homePageRoute logic 2016-08-05 16:45:46 +03:00
barisusakli
64d4addb02 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-05 16:32:49 +03:00
barisusakli
9cbfaa89e7 closes #4912 2016-08-05 16:32:44 +03:00
NodeBB Misty
d400b1a37f Latest translations and fallbacks 2016-08-05 09:02:29 -04:00
Julian Lam
c3f58104f6 up composer version 2016-08-04 17:56:59 -04:00
Julian Lam
dbb2ad29cb revert re: #4826 2016-08-04 17:35:33 -04:00
Julian Lam
9d25d4bd44 revert last change to ajaxify.js 2016-08-04 17:32:07 -04:00
psychobunny
90cb9ec041 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-04 16:34:40 -04:00
psychobunny
e03922fffa minor language change, since not actually logged out 2016-08-04 16:34:31 -04:00
Julian Lam
f593d925ae closes #4826, modifying ajaxify so it does not override links with target set explicitly 2016-08-04 16:17:51 -04:00
Julian Lam
f060c7a378 not using relative reference for tjs value 2016-08-04 15:48:23 -04:00
barisusakli
c3daee471a Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-04 21:12:08 +03:00
barisusakli
cb6db3625c closes #4906 2016-08-04 21:12:03 +03:00
psychobunny
8fdd82cc72 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-04 13:59:31 -04:00
psychobunny
837029f69e fixes crash when editing post 2016-08-04 13:59:22 -04:00
barisusakli
7f041a756d closes #4865 2016-08-04 20:58:04 +03:00
barisusakli
f222adb0a3 closes #4910 2016-08-04 19:40:48 +03:00
Julian Lam
e02134f981 closes #4911 2016-08-04 12:24:44 -04:00
NodeBB Misty
ff4fd8cf95 Latest translations and fallbacks 2016-08-04 09:04:27 -04:00
Julian Lam
7f689c2afd upped composer again 2016-08-03 14:56:09 -04:00
Julian Lam
602df0eeba updated composer version 2016-08-03 14:36:57 -04:00
Julian Lam
a88648126f upped composer and markdown 2016-08-03 13:13:06 -04:00
Julian Lam
7902987900 added jqueryUI to list of prefetched resources, and updated its loader to not use $.getScript(). Updated require.js files to use ?v= in the url argument for cache buster 2016-08-03 13:10:39 -04:00
Julian Lam
daa7dfacb8 up themes 2016-08-03 10:52:49 -04:00
NodeBB Misty
d2888b7c9e Latest translations and fallbacks 2016-08-03 09:02:31 -04:00
Julian Lam
5667279763 closes #4868 2016-08-02 17:56:09 -04:00
Julian Lam
dd8e5edbd7 closes #4895 2016-08-02 17:48:33 -04:00
psychobunny
fb278dd146 fix reconnection spinner on ACP 2016-08-02 17:03:00 -04:00
Julian Lam
027fce093b up composer 2016-08-02 15:18:40 -04:00
Julian Lam
077f90581b updated plugin tab labels, and added out of date plugin count 2016-08-02 14:57:25 -04:00
NodeBB Misty
0f60245659 Latest translations and fallbacks 2016-08-02 09:03:19 -04:00
barisusakli
42835c6442 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-08-02 13:46:25 +03:00
barisusakli
dd37128dca closes #4901 2016-08-02 13:46:19 +03:00
NodeBB Misty
c3fc1347ec Latest translations and fallbacks 2016-08-01 09:02:29 -04:00
NodeBB Misty
79bdea868c Latest translations and fallbacks 2016-07-31 09:02:27 -04:00
NodeBB Misty
d042c603bc Latest translations and fallbacks 2016-07-30 09:02:27 -04:00
barisusakli
b70610703a fix crash in notifs 2016-07-30 10:25:40 +03:00
Barış Soner Uşaklı
2aab05d6db Merge pull request #4898 from pichalite/remove-autosize
remove unused autosize lib
2016-07-30 10:18:32 +03:00
pichalite
b7b909bcc0 remove unused autosize lib 2016-07-29 23:03:47 +00:00
psychobunny
c615d1b064 Merge branch 'chartjs-update' of https://github.com/pichalite/NodeBB 2016-07-29 16:50:12 -04:00
Anil Mandepudi
313cb7f26d indentation 2016-07-29 12:55:59 -07:00
pichalite
8ef7ca4bdb update chart.js to new version 2016-07-29 19:31:48 +00:00
Barış Soner Uşaklı
3941f4da37 Merge pull request #4896 from pichalite/patch-1
add missing comma
2016-07-29 22:12:31 +03:00
Anil Mandepudi
2f73807107 add missing comma 2016-07-29 12:00:21 -07:00
barisusakli
8e2e800e6d fix streamed in topics on category page 2016-07-29 16:47:57 +03:00
barisusakli
2cc804084f closes #4890 2016-07-29 16:40:10 +03:00
barisusakli
514c12aa68 closes #4885 2016-07-29 16:26:32 +03:00
NodeBB Misty
d9dc65720a Latest translations and fallbacks 2016-07-29 09:04:17 -04:00
barisusakli
9ae50d3164 up persona 2016-07-29 14:41:02 +03:00
barisusakli
2606844d98 closes #4868 2016-07-29 14:26:04 +03:00
barisusakli
11236bb841 fix missing callback 2016-07-28 21:28:25 +03:00
Barış Soner Uşaklı
1f5d3a92d6 Merge pull request #4894 from BenLubar/avatar-history
Keep old versions of avatars in the filesystem
2016-07-28 21:25:27 +03:00
Ben Lubar
fc387111e2 make keeping avatar versions an option in the ACP that is turned off by default 2016-07-28 13:16:38 -05:00
Ben Lubar
0d40542f93 Keep old versions of avatars in the filesystem. Change the avatar URL each time a new one is uploaded to avoid caching problems. Closes #4722. 2016-07-28 12:21:37 -05:00
Julian Lam
e7386e20cf closes #4505 2016-07-28 11:51:19 -04:00
NodeBB Misty
f47d60c930 Latest translations and fallbacks 2016-07-28 09:02:56 -04:00
barisusakli
af75a887b5 closes #4892
prevent crash if registerHook is called with invalid hook name
2016-07-27 22:17:08 +03:00
Julian Lam
a9a522c8ec allowing widgets to not show up if widget explicitly returns null 2016-07-27 14:31:19 -04:00
Anil Mandepudi
c666a7efda add static:assets.prepare hook (#4889)
* add static:assets.prepare hook

add static:assets.prepare hook to be called before css minification so that themes/plugins can modify less vars.

* change parameter
2016-07-27 13:06:54 -04:00
Julian Lam
2268f250bb removed commented out language method 2016-07-26 10:01:54 -04:00
barisusakli
98d17a0589 fix tab 2016-07-26 16:40:45 +03:00
NodeBB Misty
eee3731832 Latest translations and fallbacks 2016-07-26 09:02:34 -04:00
Julian Lam
71a5e4a8a1 better error handling for session revocation if no login session is present, #4214 2016-07-25 12:15:02 -04:00
Julian Lam
4ce8696bbc Revert "if interstitials don't pass any errors back but some still exist, redirect properly"
This reverts commit 98368bbb6a, but fixes
issue #4883
2016-07-25 11:19:58 -04:00
Ben Lubar
40b57d6cbe add "Admin Approval for IPs", which works like Normal for new users and Admin Approval for sockpuppet accounts (#4882) 2016-07-25 10:56:29 -04:00
barisusakli
754e20eb5c closes #4877 2016-07-25 15:23:50 +03:00
barisusakli
5cbfa6f212 closes #4881 2016-07-25 15:05:23 +03:00
barisusakli
e81b67269a closes #4884 2016-07-25 14:43:10 +03:00
barisusakli
1c0ef00836 closes #4886 2016-07-25 14:37:03 +03:00
Barış Soner Uşaklı
145b8289fc Merge pull request #4880 from yariplus/patch-9
filter:group.update
2016-07-23 22:23:36 +03:00
NodeBB Misty
0827ef79ac Latest translations and fallbacks 2016-07-23 09:02:27 -04:00
Timothy Fike
e112d284e5 filter:group.update 2016-07-23 05:23:22 -04:00
barisusakli
58ab76d3c2 action:category.loaded, sort qs on category page 2016-07-21 23:53:43 +03:00
barisusakli
ecafd87e91 up composer 2016-07-21 21:30:21 +03:00
Julian Lam
13a2e4cc3f Revert "Send plugin postData changes up the line (#4875)"
This reverts commit 20024418d9.

re: #4875
2016-07-21 13:13:32 -04:00
Peter Jaszkowiak
20024418d9 Send plugin postData changes up the line (#4875) 2016-07-21 10:41:56 -04:00
Ben Lubar
42fa764608 fix js-propagate for restarted secondary instances (#4874) 2016-07-21 10:32:21 -04:00
Ben Lubar
b08696515f Fix restarted secondary instances waiting forever for the templates:compiled message. Fix update notification always appearing when an instance restarts even if there was no update. Closes #4870 (#4871) 2016-07-20 19:43:24 -04:00
psychobunny
a80801e856 updated fontawesome to 4.6.3 2016-07-20 14:23:58 -04:00
psychobunny
3744f1ecd2 updated fontawesome.tpl 2016-07-20 14:15:41 -04:00
psychobunny
9e17d64d29 allow categories to choose "no icon" 2016-07-20 13:35:51 -04:00
psychobunny
e56011c8fd up markdown 2016-07-20 12:53:49 -04:00
Julian Lam
e407dbfdd4 fix module bridging output to log the correct number 2016-07-20 11:46:31 -04:00
barisusakli
cff535e8e2 up persona 2016-07-20 17:43:22 +03:00
barisusakli
8584f9ac3c up mentions 2016-07-19 18:50:25 +03:00
Barış Soner Uşaklı
237a44cae3 Merge pull request #4863 from pichalite/fix-tooltips
fix header tooltips
2016-07-19 15:41:54 +03:00
Barış Soner Uşaklı
7804d3989e Merge pull request #4858 from pichalite/change-recent
pass set as attribute for recent route
2016-07-19 15:41:37 +03:00
Barış Soner Uşaklı
102e578b56 Merge pull request #4859 from BenLubar/topic-page-query
Fix /topic/:tid/:slug?page=:page for users with infinite scroll enabled
2016-07-19 15:40:43 +03:00
Barış Soner Uşaklı
3d5b111afc Merge pull request #4864 from pichalite/image-resize
fix resizeImage on upload
2016-07-19 10:08:35 +03:00
pichalite
2cd709418b fix resizeImage on upload 2016-07-19 03:06:33 +00:00
pichalite
11ba5e2bcc fix header tooltips 2016-07-18 23:34:52 +00:00
Julian Lam
a641df5f93 up composer 2016-07-17 20:00:54 -04:00
NodeBB Misty
a66178b649 Incremented version number 2016-07-17 19:57:30 -04:00
Ben Lubar
85e42aee6e make ?page=[numbers] links work for users with pagination disabled. remove ?page when updating the URL for infinite scroll 2016-07-17 15:47:58 -05:00
NodeBB Misty
7b855cd418 Latest translations and fallbacks 2016-07-17 09:02:23 -04:00
NodeBB Misty
f096975fa9 Latest translations and fallbacks 2016-07-16 09:02:30 -04:00
pichalite
6249b9a6fb rename dbset to set 2016-07-16 00:08:53 +00:00
pichalite
f72e00a1b5 pass dbset as attribute 2016-07-15 23:43:49 +00:00
Julian Lam
828d5a4b4d fixes #4857 2016-07-15 15:18:28 -04:00
barisusakli
937f00eb09 remove console.log 2016-07-15 21:31:42 +03:00
Julian Lam
60a97bcf51 fixes #4856 2016-07-15 13:37:22 -04:00
Julian Lam
f3c1e75cca fixes #4855 2016-07-15 13:24:41 -04:00
barisusakli
041167decf up emoji 2016-07-15 19:53:39 +03:00
NodeBB Misty
b4a8a76427 Latest translations and fallbacks 2016-07-15 09:02:32 -04:00
barisusakli
390ad35b56 ability to set unread as home 2016-07-15 12:39:54 +03:00
barisusakli
910e94a690 closes #4815 2016-07-15 12:33:39 +03:00
barisusakli
c042d16f40 dont set homePageRoute to custom if field is empty 2016-07-15 12:05:21 +03:00
barisusakli
e233defa9f up persona 2016-07-15 00:57:28 +03:00
Barış Soner Uşaklı
929b93de9b Merge pull request #4853 from BenLubar/topid-link
convert post parent button to a link
2016-07-15 00:37:23 +03:00
Ben Lubar
3214d00105 convert post parent button to a link 2016-07-14 16:28:11 -05:00
psychobunny
c95c7eefe6 Merge pull request #4849 from pichalite/update-bootstrapjs
update bootstrap js to latest
2016-07-14 17:10:06 -04:00
Julian Lam
d58657178f re-added deprecation notice for Settings.init, closes #4844 2016-07-14 16:35:13 -04:00
psychobunny
9283411150 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-07-14 14:58:49 -04:00
psychobunny
aedeb36776 topic title custom icons (see previous commit) 2016-07-14 14:58:38 -04:00
barisusakli
dc469c5bb2 up composer 2016-07-14 21:49:35 +03:00
barisusakli
bb7303834f remove csrf r.js module 2016-07-14 21:44:39 +03:00
psychobunny
936afaded3 up persona 2016-07-14 14:42:21 -04:00
psychobunny
89425cbdeb Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-07-14 14:42:02 -04:00
psychobunny
ac7dad9194 icons array for topic titles
see
6880deedde
2016-07-14 14:41:51 -04:00
Anil Mandepudi
5ecf88adef update require.js to latest (#4851) 2016-07-14 14:22:19 -04:00
Anil Mandepudi
1d100e9f42 update tinycon to latest (#4850) 2016-07-14 13:59:31 -04:00
pichalite
bfa65601a0 update bootstrap js to latest 2016-07-14 17:23:53 +00:00
psychobunny
3858e9c614 Merge pull request #4848 from pichalite/master
translate language strings in votes modal
2016-07-14 12:54:02 -04:00
pichalite
c204eac93a translate language strings in votes modal 2016-07-14 16:43:05 +00:00
NodeBB Misty
f598bd52dc Latest translations and fallbacks 2016-07-14 09:02:27 -04:00
psychobunny
8fd0e49469 up persona 2016-07-13 18:04:03 -04:00
psychobunny
40433cd86f added "Pinned" and "Moved" lang keys 2016-07-13 17:49:43 -04:00
psychobunny
8c288f31b3 keep track of the previous cid a topic was moved from 2016-07-13 17:38:21 -04:00
psychobunny
96c9832c91 Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-07-13 17:33:09 -04:00
psychobunny
67108d1c41 filter:messaging.send hook 2016-07-13 17:33:04 -04:00
barisusakli
3df7bae08c closes #4834, closes #4830 2016-07-13 17:32:00 +03:00
barisusakli
45ff71fd06 closes #2475 2016-07-13 17:04:45 +03:00
barisusakli
9dd8572b98 don't crash if anchorEl doesn't exist 2016-07-13 16:40:19 +03:00
NodeBB Misty
344c771e1c Latest translations and fallbacks 2016-07-13 09:03:51 -04:00
NodeBB Misty
42e60e4c79 Latest translations and fallbacks 2016-07-12 20:22:44 -04:00
Julian Lam
8fd5236641 closes #4844 2016-07-12 17:06:26 -04:00
barisusakli
019f5ff35f up composer 2016-07-12 23:59:57 +03:00
Julian Lam
261bef2ab7 Up composer 2016-07-12 14:37:20 -04:00
Barış Soner Uşaklı
71c83f327d up composer 2016-07-12 20:11:32 +03:00
barisusakli
d2cbd7e6dc new priv for uploads 2016-07-12 19:59:04 +03:00
NodeBB Misty
296dc77c7b Incremented version number 2016-07-12 12:27:22 -04:00
NodeBB Misty
79cd9b1bcb Merge commit '03208807e444e8583051ed8fd04dedcc491ba5c3' into v1.x.x 2016-07-12 12:27:21 -04:00
Julian Lam
03208807e4 fixes #4840 2016-07-12 11:39:51 -04:00
Julian Lam
cb435351b2 updated issue template to add examples and remove checkboxes (since they were not being used correctly) 2016-07-12 11:13:19 -04:00
barisusakli
bb278ca6ee Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-07-12 18:03:20 +03:00
barisusakli
51a50448b8 closes #4838 2016-07-12 18:03:14 +03:00
NodeBB Misty
c790d24886 Latest translations and fallbacks 2016-07-12 09:02:24 -04:00
acardinale
9321e565ad Added new core component for topic with tid
Added new core component for topic with a specific tid
To use
```javascript
var topicContainer = components.get('topic', 'tid', tid);
```javascript
in a view with more topics / posts
2016-07-12 14:56:24 +02:00
Julian Lam
c8e64ae93b updating profile fields to allow plugins (e.g. the write-api) to change a user's profile picture
@barisusakli please let me know if this is not ok.
2016-07-11 18:26:23 -04:00
NodeBB Misty
1f5913c874 Latest translations and fallbacks 2016-07-11 09:04:29 -04:00
barisusakli
fcf145fc81 403 if not logged in, show error 2016-07-11 13:03:47 +03:00
barisusakli
7b86fd3dc0 closes #4835 2016-07-11 12:56:27 +03:00
NodeBB Misty
77d12deb03 Latest translations and fallbacks 2016-07-10 09:02:21 -04:00
NodeBB Misty
4a012fb17f Latest translations and fallbacks 2016-07-09 09:02:28 -04:00
psychobunny
f3c48eb14a oops, #4832 2016-07-08 17:17:59 -04:00
psychobunny
6df3157748 closes #4832 2016-07-08 17:09:47 -04:00
psychobunny
2274e885da up persona 2016-07-08 11:59:55 -04:00
psychobunny
1a48f47e2b Merge pull request #4690 from pichalite/fix-mobile-menu
fixes #4660
2016-07-08 11:42:00 -04:00
Julian Lam
cf7540d41c appeasing Travis CI, 'cause fuck code reuse, right? 2016-07-08 11:03:28 -04:00
Julian Lam
55bcc28e0e closes #4831 2016-07-08 10:43:28 -04:00
NodeBB Misty
49f0aca7f6 Latest translations and fallbacks 2016-07-08 09:02:29 -04:00
Julian Lam
4c62784358 closes #4829 2016-07-07 18:57:59 -04:00
barisusakli
f85ec96172 small change to new hook 2016-07-08 01:26:48 +03:00
Barış Soner Uşaklı
f83632a792 Merge pull request #4828 from yariplus/patch-8
filter:topics.updateRecent
2016-07-08 01:21:49 +03:00
Timothy Fike
9fdd1b6b70 Don't return data for Topics.updateRecent
Update database if filter passes data back.
2016-07-07 18:08:53 -04:00
Timothy Fike
fe3fbb7197 filter:topics.updateRecent
https://community.nodebb.org/topic/9165/prevent-specific-category-from-showing-in-recent
2016-07-07 17:17:17 -04:00
Julian Lam
d4d36d2c8b closes #4827 2016-07-07 14:44:36 -04:00
Julian Lam
5ecbbd228d adding missing files, re: #4827 2016-07-07 14:33:16 -04:00
Julian Lam
d5961cfca3 #4827 2016-07-07 14:32:53 -04:00
psychobunny
cc02acfecb up rewards 2016-07-07 13:10:30 -04:00
NodeBB Misty
f0eec5d3a2 Latest translations and fallbacks 2016-07-07 09:02:30 -04:00
barisusakli
f6f48ff482 up widget essentials 2016-07-07 12:17:36 +03:00
Julian Lam
95db375698 closes #4825 2016-07-06 15:23:35 -04:00
barisusakli
8ea5752b50 added url property to all routes 2016-07-06 20:31:29 +03:00
Julian Lam
7563873bd4 Merge branch 'master' of github.com:NodeBB/NodeBB 2016-07-06 11:00:53 -04:00
NodeBB Misty
88477a6866 Latest translations and fallbacks 2016-07-06 09:02:26 -04:00
barisusakli
f6bec561bf when post is deleted or restored clear the post tools menu 2016-07-06 15:15:51 +03:00
barisusakli
1ce7d510fc up themes 2016-07-06 13:20:19 +03:00
barisusakli
d94e2eed72 closes #4816 2016-07-06 13:16:39 +03:00
barisusakli
9a19f61372 closes #4817 2016-07-06 13:01:00 +03:00
barisusakli
f084ff9a54 closes #4813 2016-07-06 12:43:12 +03:00
barisusakli
1a43b3482c insert postbar after placeholder 2016-07-06 12:26:03 +03:00
Julian Lam
3eda04c9e7 updated 'configExists' test to allow usage of NodeBB without a configuration file, closes #4824 2016-07-05 11:37:18 -04:00
Julian Lam
6628d5083a added logging when --no-dep-check is used 2016-07-05 11:28:27 -04:00
Julian Lam
21caa82b61 ban controls on frontend, closes #4807 2016-07-05 11:22:40 -04:00
Julian Lam
37b1d1a050 re: #4807, fixed issue where an unban would still have the user listed in the temp ban sorted set 2016-07-05 11:11:22 -04:00
Julian Lam
a2b0576b79 showing temporary ban indicator in Users ACP, #4807 2016-07-05 11:07:31 -04:00
Julian Lam
ad9229fec2 lint. 2016-07-05 10:33:13 -04:00
Julian Lam
61fe9594d7 ban integration frontend for ACP, #4807 2016-07-05 10:29:01 -04:00
Barış Soner Uşaklı
915fa99ebe Merge pull request #4823 from MegaGM/issue-4822
closes #4822
2016-07-05 07:20:28 +03:00
Mega
0f89fc8214 close #4822 2016-07-05 03:38:15 +05:00
barisusakli
f70d54a397 up themes 2016-07-04 17:53:13 +03:00
barisusakli
789a3736af closes #4820 2016-07-04 17:49:02 +03:00
barisusakli
aadd883594 fix numbers on users infinite load 2016-07-04 14:37:35 +03:00
NodeBB Misty
497d9455da Latest translations and fallbacks 2016-07-03 09:03:18 -04:00
barisusakli
6332f47808 closes #4814 2016-07-03 10:53:50 +03:00
NodeBB Misty
73a226e2ed Latest translations and fallbacks 2016-07-02 09:03:12 -04:00
barisusakli
7f44041e01 simpler 2016-07-01 19:50:24 +03:00
barisusakli
e1ce9e0250 uid not used 2016-07-01 19:45:21 +03:00
barisusakli
795b00a3af closes #4810 2016-07-01 13:01:09 +03:00
barisusakli
376e031928 closes #4809 2016-06-30 11:38:40 +03:00
Barış Soner Uşaklı
b6234cbd2b fix error msg typo 2016-06-29 23:17:14 +03:00
Barış Soner Uşaklı
ea6d783c31 #4808 2016-06-29 22:58:05 +03:00
Barış Soner Uşaklı
ca0bfc777e closes #4808 2016-06-29 22:49:32 +03:00
barisusakli
f20efda911 call posts.relativeToAbsolute when needed 2016-06-29 21:09:10 +03:00
Julian Lam
04d4fc2eca temporary ban support 2016-06-29 12:07:23 -04:00
Julian Lam
585a90db5d Merge branch 'master' into temp-bans 2016-06-29 11:06:47 -04:00
Julian Lam
34cafbc0a8 reloading plugins after main template compilation, during reload 2016-06-29 11:01:51 -04:00
Aziz Khoury
982746cedf nodebb-plugin-spam-be-gone@0.4.9 (#4805) 2016-06-29 09:45:43 -04:00
Julian Lam
7da71976cf WIP temporary bans 2016-06-28 16:30:39 -04:00
barisusakli
688028c63b closes #4802 2016-06-28 18:07:25 +03:00
NodeBB Misty
2bf1be82d6 Latest translations and fallbacks 2016-06-28 09:02:30 -04:00
barisusakli
14b067a838 closes #4800 2016-06-28 12:34:16 +03:00
Julian Lam
b4df9427d5 linting 2016-06-27 15:43:57 -04:00
NodeBB Misty
3bebc3ce09 Latest translations and fallbacks 2016-06-27 09:02:31 -04:00
Barış Soner Uşaklı
4854f78afa Merge pull request #4787 from akhoury/rm-cls
rm cls because it's not ready yet
2016-06-27 12:09:57 +03:00
NodeBB Misty
899ffa97a9 Latest translations and fallbacks 2016-06-26 09:03:13 -04:00
barisusakli
4ad980d041 up composer 2016-06-26 09:37:50 +03:00
Aziz Khoury
6e0dc7eaf8 use spam-be-gone@0.4.8 (#4790) 2016-06-25 23:28:16 -04:00
NodeBB Misty
ca57dc2657 Latest translations and fallbacks 2016-06-25 09:02:30 -04:00
barisusakli
731942e397 closes #4788
when resetting widgets dont erase stuff already in drafts
2016-06-25 11:25:34 +03:00
Julian Lam
98368bbb6a if interstitials don't pass any errors back but some still exist, redirect properly 2016-06-24 18:40:32 -04:00
Julian Lam
fafcdf8320 no longer requiring that interstitial.data be set in interstitial data
... lol that commit message makes no sense.
2016-06-24 18:17:52 -04:00
akhoury
46a57f5d5c rm cls because it's not ready yet 2016-06-24 16:57:58 -04:00
Barış Soner Uşaklı
3e8e2f0e58 Merge pull request #4783 from KitsuneSolar/patch-2
Added missing language variables.
2016-06-24 11:16:55 +03:00
Kitsune Solar
347e287277 Update global.json 2016-06-24 11:07:31 +03:00
Julian Lam
85010e7f41 up persona 2016-06-23 13:55:51 -04:00
psychobunny
27ec769948 up persona 2016-06-23 13:18:40 -04:00
psychobunny
371abba13b helpers.notAllowed hook 2016-06-23 11:21:42 -04:00
barisusakli
41af78dcd2 closes #4744 2016-06-23 17:15:33 +03:00
barisusakli
cdfb882cd7 up persona 2016-06-23 17:02:05 +03:00
barisusakli
2342141e0f fix validator.js crashes 2016-06-23 10:16:32 +03:00
Julian Lam
222b0f010c up composer version /cc @pichalite 2016-06-22 21:35:04 -04:00
Julian Lam
2638138f67 upped themes 2016-06-22 16:54:17 -04:00
Julian Lam
08dd19da17 removed some client-side logic that used to handle termsOfUse 2016-06-22 16:54:17 -04:00
Julian Lam
a14263349b updated termsOfUse to use registration interstitial instead of being integrated into register template 2016-06-22 16:54:17 -04:00
Julian Lam
041670bfe9 handling of form completion in registration interstitial 2016-06-22 16:54:17 -04:00
Julian Lam
d2926f4fe7 WIP registration interstitial 2016-06-22 16:54:17 -04:00
Julian Lam
f03018b7cc updated middlewares so if you have not completed registration, you will be required to do so 2016-06-22 16:54:17 -04:00
Julian Lam
0ba0001f75 WIP registration interstitial 2016-06-22 16:54:16 -04:00
barisusakli
871a247840 closes #4779 2016-06-22 22:21:08 +03:00
barisusakli
cbd637b2a2 dont allow priv group names 2016-06-22 22:07:20 +03:00
barisusakli
1e142a44cd closes #4775 2016-06-22 22:00:43 +03:00
psychobunny
a0f655ccc1 mobile composer fixes 2016-06-22 12:56:27 -04:00
Julian Lam
7e4c486c62 upped markdown version 2016-06-22 12:42:48 -04:00
Julian Lam
e6fa91a4a4 when logging out, end the express session 2016-06-21 21:02:32 -04:00
Julian Lam
51faa5496b closes #4776 2016-06-21 17:49:54 -04:00
NodeBB Misty
c75cfb494c Latest translations and fallbacks 2016-06-21 09:03:24 -04:00
barisusakli
4bbc8110a9 closes #4772 2016-06-21 14:43:38 +03:00
barisusakli
1bf6054345 showStalewarning change 2016-06-21 13:37:17 +03:00
barisusakli
d05d75a29f up persona 2016-06-21 12:06:51 +03:00
barisusakli
3631a30061 update history on 40x/50x 2016-06-20 14:55:50 +03:00
barisusakli
f475068010 closes #4759 2016-06-20 13:39:08 +03:00
barisusakli
3bd93526cd closes #4768 2016-06-20 13:06:08 +03:00
barisusakli
d227d526d1 closes #4341 2016-06-20 12:45:52 +03:00
barisusakli
abb1c1c010 closes #4758 2016-06-15 21:04:42 +03:00
NodeBB Misty
acae8c8ec6 Latest translations and fallbacks 2016-06-15 09:04:43 -04:00
barisusakli
0d4949ea26 parts not used 2016-06-15 10:11:27 +03:00
Barış Soner Uşaklı
b29715fa37 Merge pull request #4756 from pichalite/post-sharing
change post sharing to use /post/pid url
2016-06-15 10:01:04 +03:00
pichalite
62fb092099 change post sharing to use /post/pid url 2016-06-14 19:58:17 +00:00
barisusakli
f2b4543685 fix user priv order as well 2016-06-14 16:25:48 +03:00
NodeBB Misty
a4307b83a9 Latest translations and fallbacks 2016-06-14 09:02:37 -04:00
barisusakli
1102a685d9 closes #4749 2016-06-14 11:07:36 +03:00
barisusakli
596af5d82b closes #4754 2016-06-14 10:07:44 +03:00
Julian Lam
e3002d0885 fixed #4753 2016-06-13 18:23:16 -04:00
barisusakli
ff82008e92 up dbsearch 2016-06-14 00:15:26 +03:00
Julian Lam
54d2c39c3a up persona 2016-06-13 11:09:42 -04:00
NodeBB Misty
c330b9f0d4 Latest translations and fallbacks 2016-06-13 09:04:03 -04:00
Julian Lam
990cdb4087 upped persona, re: nodebb/nodebb-theme-persona#289 2016-06-13 08:17:12 -04:00
barisusakli
ecf0323dd0 closes #4688 2016-06-13 14:02:54 +03:00
NodeBB Misty
d272912e13 Latest translations and fallbacks 2016-06-12 09:04:27 -04:00
Barış Soner Uşaklı
487e4eb445 Merge pull request #4751 from MegaGM/fix-utils.fileMimeType
Fix: utils.fileMimeType is always undefined
2016-06-12 09:42:57 +03:00
Mega
a834275465 Fix: utils.fileMimeType is always undefined 2016-06-12 07:30:49 +05:00
Julian Lam
b7d9e27741 upped markdown version 2016-06-11 15:22:28 -04:00
NodeBB Misty
a1b02d8356 Latest translations and fallbacks 2016-06-11 09:04:08 -04:00
NodeBB Misty
04f3c5b3f2 Latest translations and fallbacks 2016-06-10 09:03:30 -04:00
Julian Lam
8b03199d5c fixes issue where anchors to internal rss feeds would fail to resolve 2016-06-09 14:28:41 -04:00
NodeBB Misty
ecaa3eadcb Latest translations and fallbacks 2016-06-09 09:02:30 -04:00
Barış Soner Uşaklı
ae19f0ff7d closes #4713 2016-06-09 14:29:54 +03:00
Barış Soner Uşaklı
8a8e4062e2 Merge pull request #4745 from pichalite/issue-4727
fixes #4727
2016-06-09 11:49:00 +03:00
pichalite
c60f571d2c fixes #4727 2016-06-08 23:21:11 +00:00
Julian Lam
0a1dea09a0 added missing dependency lib 2016-06-08 17:45:48 -04:00
psychobunny
3e23426c31 better messaging on flags page 2016-06-08 14:53:21 -04:00
NodeBB Misty
5494d9a8b8 Latest translations and fallbacks 2016-06-08 09:02:30 -04:00
barisusakli
0e92880dd4 fix previousUrl being set to current url 2016-06-08 13:34:41 +03:00
barisusakli
ded69e8373 closes #4677 2016-06-08 11:53:12 +03:00
barisusakli
09ce48ad33 fix privs 2016-06-08 11:52:55 +03:00
barisusakli
8f594de4c2 fix privs 2016-06-08 11:44:15 +03:00
barisusakli
ff0fee2170 fix arrays 2016-06-08 10:51:37 +03:00
barisusakli
73e21d1d31 closes #4720 2016-06-08 10:46:33 +03:00
barisusakli
c969870cb6 removed dupe privilegeList, added missing privilege to copyPrivsFrom 2016-06-08 10:37:46 +03:00
barisusakli
1f3fa3a90f closes #4725 2016-06-08 10:16:40 +03:00
psychobunny
3549ce9873 #4731 2016-06-07 11:57:26 -04:00
psychobunny
4c2ee2e736 closes #4731 2016-06-07 11:52:04 -04:00
psychobunny
1bcaf7bca3 up'd the timeout for both default alert toasters 2016-06-07 09:47:29 -04:00
NodeBB Misty
51adcc479c Latest translations and fallbacks 2016-06-07 09:03:33 -04:00
psychobunny
02c19c419d Merge pull request #4729 from frissdiegurke/patch-1
Up emoji-one
2016-06-07 20:10:27 +08:00
Ole R
f471a94b7a Up emoji-one 2016-06-07 14:05:13 +02:00
Julian Lam
01aeb45af8 up mentions 2016-06-06 14:59:57 -04:00
Julian Lam
08cdfd2d60 resolve bug with url path when SSL certificate is handled by NodeBB 2016-06-06 14:35:00 -04:00
psychobunny
05673e670c fixes rare "priority error" when generating sitemaps 2016-06-06 12:38:40 -04:00
Barış Soner Uşaklı
1a5a51b67a Merge pull request #4708 from darktrge/patch-3
Make topicSlug and postCount available to email notifications
2016-06-06 17:47:16 +03:00
barisusakli
b2311edb94 bubble replies from subcategories to the parents 2016-06-06 17:36:51 +03:00
NodeBB Misty
42ebc15521 Latest translations and fallbacks 2016-06-06 09:03:31 -04:00
psychobunny
9d6754bf6d prevent jittery ajaxify in ACP when switching from a short page to a long one 2016-06-06 08:31:42 -04:00
psychobunny
bbc570c499 socket disconnected icon for ACP #4609 2016-06-06 08:30:21 -04:00
psychobunny
c44fa866e7 nprogress bar in ACP #4609 2016-06-06 08:24:15 -04:00
NodeBB Misty
9bc117e148 Latest translations and fallbacks 2016-06-03 09:02:35 -04:00
Barış Soner Uşaklı
0e466122e2 closes #4717 2016-06-03 11:22:47 +03:00
Julian Lam
1f9602d472 added --no-dep-check flag to skip dependency checking 2016-06-02 17:00:24 -04:00
Julian Lam
85fb9cd9dc in cases where host is not provided in the websocket request, infer one from the referer 2016-06-02 15:21:11 -04:00
Ole R
f14b7e781c Up emoji-one (#4715) 2016-06-02 10:02:10 -04:00
NodeBB Misty
d356bf4ea9 Latest translations and fallbacks 2016-06-02 09:03:13 -04:00
psychobunny
96a9b59419 action:topics.changeWatching 2016-06-02 04:18:42 -04:00
Julian Lam
b3d6a8ef9a mobile fixes for registration queue page 2016-06-01 16:33:29 -04:00
Julian Lam
470a40ecca update errors css page 2016-06-01 16:25:51 -04:00
Julian Lam
b30151725d fixed error shown when saving sounds ACP page 2016-06-01 15:42:01 -04:00
Aziz Khoury
374fa8dd8c fix: deprecated-message not showing for all hooks (#4714)
* fix deprecated hooks params warning + var-cleanup

* fix deprecated message
2016-06-01 12:27:36 -04:00
psychobunny
5baf077cbe Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-06-01 09:05:30 -04:00
psychobunny
e9921edb87 Merge remote-tracking branch 'refs/remotes/origin/topics-read-privileges' 2016-06-01 09:04:48 -04:00
NodeBB Misty
71c28034c1 Latest translations and fallbacks 2016-06-01 09:03:18 -04:00
psychobunny
38af8344cc missed a spot for topics:read priv 2016-06-01 08:52:54 -04:00
psychobunny
6f0c00bb9f use eachSeries instead 2016-06-01 08:42:37 -04:00
Barış Soner Uşaklı
dd1b261950 closes #4712 2016-06-01 11:48:40 +03:00
Julian Lam
7b7667b31d made 503 page mobile responsive 2016-05-30 17:09:29 -04:00
Danijel
ba2d191f80 Make topicSlug and postCount available to email notifications, so these can be used in template if needed 2016-05-30 15:09:20 +02:00
NodeBB Misty
4ca49d7c92 Latest translations and fallbacks 2016-05-30 09:02:38 -04:00
Barış Soner Uşaklı
d839f291ac closes #4706 2016-05-29 22:45:12 +03:00
Barış Soner Uşaklı
71b3a42bed closes #4698 2016-05-29 22:38:20 +03:00
Barış Soner Uşaklı
26be7c25e4 closes #4701 2016-05-29 22:27:37 +03:00
Barış Soner Uşaklı
9ae8ee861a closes #4700 2016-05-29 21:52:13 +03:00
Leonardo Vieira
e4afa67956 allow resizing chat from left/top as well 2016-05-29 12:45:10 -04:00
NodeBB Misty
bff844806f Latest translations and fallbacks 2016-05-29 09:02:23 -04:00
NodeBB Misty
444a192a22 Latest translations and fallbacks 2016-05-28 09:02:22 -04:00
psychobunny
74ff9557d9 makes more sense to give topics:read priv to those who had the category read priv
thanks @barisusakli
2016-05-28 06:37:53 -04:00
psychobunny
8616cc4ea5 upgrade script: give topics:read privs to any group that has topics:create privs 2016-05-28 06:08:28 -04:00
psychobunny
b37b083a4d new privilege: Access Topic
differentiation between Access Category and Access Topic, ie. allows you
to see the category view but not actually enter the topic itself
2016-05-28 05:41:17 -04:00
Julian Lam
839ff06967 up lavender 2016-05-27 18:52:13 -04:00
Ben Lubar
c288ba0a17 fix replying on IE11 - see c50f228acc (commitcomment-17651064) (#4699) 2016-05-27 15:55:02 -04:00
Julian Lam
34f2d25651 fixes #4696 2016-05-27 11:59:37 -04:00
Julian Lam
38ad980456 Fixes #4694, fixes #4697 2016-05-27 11:35:58 -04:00
NodeBB Misty
9f3c1f6641 Latest translations and fallbacks 2016-05-27 09:02:28 -04:00
Barış Soner Uşaklı
975adf1741 up persona 2016-05-27 10:00:22 +03:00
Julian Lam
439576fa8c up composer 2016-05-26 16:07:41 -04:00
NodeBB Misty
7e1e7eb05a Latest translations and fallbacks 2016-05-26 09:02:25 -04:00
pichalite
bdfad2beda fixes #4660 2016-05-26 05:44:28 +00:00
Julian Lam
c5ec83a6ca up composer 2016-05-25 23:12:54 -04:00
Jan
efbc5f729d update fontawesome.tpl to FA 4.6.2 (#4607)
remove newline

sort icons
2016-05-25 16:00:44 -04:00
Timothy Fike
6a4754efca Set switches appropriately on plugin settings pages. (#4521) 2016-05-25 15:59:49 -04:00
Julian Lam
2a5efd1a60 up persona, closes #4646 2016-05-25 15:57:43 -04:00
Julian Lam
8f665b65d1 up persona, #4661 2016-05-25 15:39:07 -04:00
Julian Lam
b4d14ef366 fixes #4687 2016-05-25 15:28:37 -04:00
Julian Lam
a8f5000247 advising restart instead of reload on plugin toggle @pichalite 2016-05-25 15:25:01 -04:00
Julian Lam
b5ced1db0f upped composer version to MIT version 2016-05-25 14:57:36 -04:00
barisusakli
17b4dd85e7 use valueToString in sortedSetIncrBy 2016-05-25 21:18:19 +03:00
Julian Lam
920bc213d3 updated acp advanced/errors table to span the entire page 2016-05-25 14:02:05 -04:00
barisusakli
7c47f555be up persona 2016-05-25 20:20:36 +03:00
barisusakli
bdc23b4a8d add reputation to app.user 2016-05-25 20:17:02 +03:00
barisusakli
6c5cc5a513 up composer 2016-05-25 19:36:38 +03:00
barisusakli
8ddcc237a7 removed submit and lock 2016-05-25 19:33:50 +03:00
NodeBB Misty
e8906fd9f6 Latest translations and fallbacks 2016-05-25 09:03:22 -04:00
barisusakli
2c5464760d #4668
allow admins/mods to edit even after postEditDuration has expired
2016-05-25 15:48:53 +03:00
Julian Lam
ba412f4a56 fully completed #4658 2016-05-24 23:04:57 -04:00
Julian Lam
149565169b closes #4658 2016-05-24 22:01:46 -04:00
Julian Lam
458c930bb9 Merge branch 'master' of github.com:NodeBB/NodeBB 2016-05-24 21:33:08 -04:00
Julian Lam
60af3b9b77 removed extra comma in object definition 2016-05-24 21:14:14 -04:00
Barış Soner Uşaklı
bae2458b86 Merge pull request #4676 from natejlee/patch-1
changed cls.getItem to equal cls.get
2016-05-24 20:34:18 +03:00
Nate Lee
07c59ae174 changed cls.getItem to equal cls.get from cls.set
based off of naming schema
2016-05-24 10:02:27 -07:00
barisusakli
dcb73f9647 use userCount 2016-05-24 17:52:28 +03:00
Julian Lam
79bcb9be10 fixes #4675 2016-05-24 10:42:56 -04:00
Julian Lam
afb0312f51 closes #4672 2016-05-24 10:37:45 -04:00
Julian Lam
92ab2699ba added some styling to allow mdl buttons to be stacked in ACP 2016-05-24 09:55:14 -04:00
NodeBB Misty
6878466404 Latest translations and fallbacks 2016-05-24 09:04:33 -04:00
barisusakli
5720dac803 #4175, #4298 2016-05-23 13:03:31 +03:00
barisusakli
8621bd953d Merge branch 'master' of https://github.com/NodeBB/NodeBB 2016-05-23 12:59:37 +03:00
barisusakli
54ccdf5262 closes #4651 2016-05-23 12:59:33 +03:00
Barış Soner Uşaklı
cf70c1d167 Merge pull request #4666 from akhoury/patch-5
CLS must be required first
2016-05-23 11:42:58 +03:00
barisusakli
38d1bde895 closes #4669 2016-05-23 11:39:35 +03:00
NodeBB Misty
6f544aba79 Latest translations and fallbacks 2016-05-22 09:03:09 -04:00
Barış Soner Uşaklı
86cab0787a closes #4668 2016-05-21 19:26:06 +03:00
NodeBB Misty
ecf9359fb3 Latest translations and fallbacks 2016-05-21 09:02:58 -04:00
Aziz Khoury
d34af3a796 CLS must be required first
to avoid issues. see https://gist.github.com/akhoury/acb852798e319b5ede93431e5910d3ef
2016-05-20 13:27:29 -04:00
NodeBB Misty
fac5856cc0 Latest translations and fallbacks 2016-05-20 09:02:28 -04:00
Julian Lam
95e757ea42 up mentions 2016-05-19 15:39:17 -04:00
Julian Lam
492a5ff730 proper year in copyright footer 2016-05-19 12:26:40 -04:00
barisusakli
eac2c44e5a update not following message 2016-05-19 18:31:36 +03:00
barisusakli
cfc4deb83a up themes 2016-05-19 17:09:05 +03:00
Julian Lam
192998c5c3 Revert "fixed link to documentation, @akhoury"
This reverts commit bc0359475c.
2016-05-19 10:02:45 -04:00
barisusakli
46d7994093 removed some dupe code 2016-05-19 16:32:29 +03:00
barisusakli
3f0ca31393 style changes 2016-05-19 16:07:19 +03:00
barisusakli
b56baf2530 up themes 2016-05-19 15:02:54 +03:00
barisusakli
23d134ba6c update text 2016-05-19 14:55:24 +03:00
barisusakli
9497459784 up themes 2016-05-19 14:42:24 +03:00
Barış Soner Uşaklı
ca835e35ba Merge pull request #4662 from NodeBB/topic-watching
topic watching
2016-05-19 14:34:42 +03:00
barisusakli
b02869b0f8 renamed reading to not-following
added more description text
2016-05-19 14:20:34 +03:00
barisusakli
11d3834eb9 better filtering
if topic is followed but category ignored show it in unread
2016-05-19 13:11:42 +03:00
barisusakli
7a044b4978 better filterIgnoringUids 2016-05-19 11:06:17 +03:00
barisusakli
a141f6f7ec updated category watch control 2016-05-18 20:02:34 +03:00
Dravere
2fd6391081 Made the session cookie aware of the possible relative path (#4663) 2016-05-18 12:43:46 -04:00
barisusakli
5d2e5377c5 fix tests 2016-05-18 19:22:26 +03:00
barisusakli
bf2133ed7c topic watching 2016-05-18 19:02:43 +03:00
Julian Lam
ef4a94857d fixed admin lockout timer for subfolder installs @barisusakli :trollface: 2016-05-18 11:05:25 -04:00
Barış Soner Uşaklı
917eb4bd79 up composer default 2016-05-17 23:55:51 +03:00
barisusakli
11be93a4d8 closes #4648 2016-05-17 15:45:47 +03:00
psychobunny
951ac17a90 up persona 2016-05-17 05:54:26 -04:00
Julian Lam
cd5e5e809f up mentions 2016-05-16 15:33:28 -04:00
Julian Lam
5d030dd8ab removed console log 2016-05-16 15:24:30 -04:00
Julian Lam
ffa051e828 added defaultLang support, #4655 2016-05-16 15:23:21 -04:00
Julian Lam
437770538c work-in-progress commit for #4655 2016-05-16 10:32:28 -04:00
Julian Lam
81bbe93640 fixes #4653 2016-05-16 08:22:28 -04:00
barisusakli
a4031df9b2 dont show SSO logins if its a confirmation screen 2016-05-16 14:22:07 +03:00
barisusakli
b3fa5583f8 closes #4650 2016-05-16 12:34:47 +03:00
barisusakli
630dd66cf6 closes #4645 2016-05-15 21:18:05 +03:00
barisusakli
16ba7ee840 fix #1972 2016-05-15 20:35:37 +03:00
barisusakli
2e0763b0a8 closes #1972 2016-05-15 20:33:57 +03:00
NodeBB Misty
6685fafe6b Latest translations and fallbacks 2016-05-15 09:02:26 -04:00
barisusakli
825ecce0df closes #4643 2016-05-14 19:39:31 +03:00
NodeBB Misty
b2552cb5e0 Latest translations and fallbacks 2016-05-14 09:02:57 -04:00
pichalite
6c09d3ca5f fixes #4636 (#4639) 2016-05-13 12:40:42 -04:00
NodeBB Misty
5567733293 Latest translations and fallbacks 2016-05-13 09:02:24 -04:00
barisusakli
cfe5c0db59 up themes 2016-05-13 14:13:51 +03:00
barisusakli
84a7b6690b closes #4434 2016-05-13 14:08:50 +03:00
barisusakli
bf3f19253f if post is not found go to 404 2016-05-13 10:47:01 +03:00
barisusakli
9685290658 check responseJSON 2016-05-13 10:40:04 +03:00
barisusakli
f9f4b3b91f closes #4632 2016-05-13 10:28:05 +03:00
Julian Lam
3fe786e737 up persona 2016-05-12 15:46:36 -04:00
barisusakli
f4599e2ce2 closes #4629 2016-05-12 18:48:22 +03:00
barisusakli
1ec9fc7334 closes #4626 2016-05-12 09:32:00 +03:00
Julian Lam
a2d8f430ae Up themes 2016-05-11 20:45:46 -04:00
pichalite
ce66dd96a9 send option to user settings page if in-topic search is available (#4627) 2016-05-11 20:43:37 -04:00
Julian Lam
89c3d39486 updated mentions 2016-05-11 16:09:16 -04:00
Julian Lam
ead3e8611a up mentions 2016-05-11 15:51:44 -04:00
Julian Lam
f5e928409c fixed #4624 2016-05-11 14:51:39 -04:00
Julian Lam
60e4ddc145 Fixed regression in registration/login pages
Error message was always the CSRF message, even when it wasn't
a CSRF issue. re: #4593
2016-05-11 14:19:28 -04:00
barisusakli
a44fdeec49 up themes 2016-05-11 16:42:58 +03:00
barisusakli
a9828a1465 closes #4611 2016-05-11 16:40:44 +03:00
NodeBB Misty
47b4b86bf1 Latest translations and fallbacks 2016-05-11 09:02:27 -04:00
lex(a) mourek
2a7732789d Fixed czech translation for timeago (#4622)
When czech language is set, browser throws 404 Not Found error on jquery.timeago.cz.js
Thats because translation file were renamed 
81f072ebb2
https://github.com/NodeBB/NodeBB/blob/master/public/vendor/jquery/timeago/locales/jquery.timeago.cs.js

so that cs->cz override is no needed anymore.
2016-05-10 17:53:00 -04:00
barisusakli
b56aef22a9 empty pwd 2016-05-10 18:34:41 +03:00
barisusakli
a4646abe43 up persona 2016-05-10 18:25:33 +03:00
Julian Lam
5ec62ef81c fixes #4603 2016-05-10 11:13:15 -04:00
Julian Lam
621e0d145e closes #4617
Serving english timeago strings from server instead of round-trip
re-request on failure.
2016-05-10 11:07:03 -04:00
Julian Lam
f1deaa6fa5 Exposing middleware to app/req, organisation.
Organisation -- moved 404 and error controllers into the
controllers file instead of as local variables in routes/index
2016-05-10 10:36:59 -04:00
AdJones
693e724802 Fixing issue where the relative path was ignored for express modules (#4621)
* Fixing issue where the relative path was ignored for express modules

* Fixing issue where the relative path was ignored for express modules (without the console log lines!)
2016-05-10 09:13:45 -04:00
NodeBB Misty
f0c9623878 Latest translations and fallbacks 2016-05-10 09:02:33 -04:00
Barış Soner Uşaklı
a196c834d9 backport user delete fix 2016-05-10 11:42:03 +03:00
barisusakli
4907773e6a closes #4615 2016-05-10 11:41:35 +03:00
barisusakli
e8650dcaa4 closes #4619 2016-05-10 11:39:38 +03:00
barisusakli
69e25fe4d5 closes #4612 2016-05-09 23:39:00 +03:00
barisusakli
6392cd31df closes #4618
dont need deleted check
2016-05-09 22:37:03 +03:00
barisusakli
acc030e6da added filter:image.size
fix uploading of gifs if imagemagick plugin is installed but no image
upload plugins are present.
2016-05-09 22:25:56 +03:00
Julian Lam
bc0359475c fixed link to documentation, @akhoury 2016-05-09 13:04:52 -04:00
Barış Soner Uşaklı
f0685468f8 Merge pull request #4162 from akhoury/master
add continuation-local-storage (CLS) support
2016-05-09 19:28:59 +03:00
Julian Lam
d8c21cc09d fixes #4593 2016-05-09 11:40:42 -04:00
Julian Lam
fb9c97e2c8 :shipit: @pichalite 2016-05-09 11:04:01 -04:00
pichalite
a507768a8f fix ACP->General->Sounds layout on mobile (#4606)
* fix ACP->General->Sounds layout on mobile

* just to make @juluanlam happy
2016-05-09 10:59:47 -04:00
Julian Lam
557b9bfdf8 Merge branch 'master' of https://github.com/yamikuronue/NodeBB into yamikuronue-master 2016-05-09 10:57:40 -04:00
Julian Lam
f08a9c4def fixes #4613 2016-05-09 10:31:24 -04:00
Julian Lam
39d9be787e fixes #4614 2016-05-09 10:22:37 -04:00
Julian Lam
1f70f886b5 fixed reference to undefined variable
/cc @BenLubar
2016-05-08 20:05:36 -04:00
Barış Soner Uşaklı
427500fc04 backport clone category fix 2016-05-07 20:40:19 +03:00
NodeBB Misty
a1d2fbefe7 Latest translations and fallbacks 2016-05-07 09:02:27 -04:00
NodeBB Misty
a919d40e51 Latest translations and fallbacks 2016-05-06 09:02:30 -04:00
barisusakli
b446ff42c3 style changes 2016-05-06 13:47:10 +03:00
barisusakli
1501eda311 up mentions 2016-05-06 12:23:54 +03:00
psychobunny
d85a8d068d consolidate allowed image types in ACP 2016-05-06 04:42:59 -04:00
psychobunny
bafbcad163 use filter:categories.build instead of .get 2016-05-06 03:54:33 -04:00
barisusakli
702597d759 change /user/uid to /uid/:uid
so it doesn't conflict with actual user routes
was causing incorrect redirects if a user had a numeric userslug
@julianlam
2016-05-06 09:41:35 +03:00
psychobunny
0287703047 missed plugins req 2016-05-06 00:07:05 -04:00
psychobunny
458d4996a6 filter:categories.get 2016-05-06 00:05:58 -04:00
psychobunny
4cdeae33e5 don't add "page-xxx-" class if trailing slash exists 2016-05-05 22:44:14 -04:00
barisusakli
2ea57e4110 up composer 2016-05-05 23:03:21 +03:00
barisusakli
decd853507 closes #4602 2016-05-05 22:13:52 +03:00
barisusakli
19b9242934 up mentions 2016-05-05 22:08:15 +03:00
Barış Soner Uşaklı
1a5b6d4839 backport crash fix 2016-05-05 21:01:15 +03:00
barisusakli
b493b81dbd fix crash if category or children is invalid 2016-05-05 21:00:15 +03:00
barisusakli
22e7f83564 up composer 2016-05-05 20:52:49 +03:00
barisusakli
78e9c81de4 up mentions 2016-05-05 20:29:31 +03:00
barisusakli
eb0aea6390 add /user/<uid> and /post/<pid> redirects
change notifications to use new redirects
2016-05-05 20:24:09 +03:00
Barış Soner Uşaklı
b0747ad10e Merge pull request #4598 from BenLubar/fix-avatar-crash
fix avatar upload crash discovered by @AccaliaDeElementia
2016-05-04 17:57:15 +03:00
Ben Lubar
7540fb54ac fix avatar upload crash discovered by @AccaliaDeElementia 2016-05-04 09:53:06 -05:00
boomzilla
52e4a37df8 When forking a topic, updates user bookmarks in the topic to keep the last read position (#4554)
from inadvertently being too far down the topic due to post indices decreasing because
some posts were moved to a new topic.
2016-05-04 10:29:43 -04:00
Julian Lam
b12811d21d spring cleaning 2016-05-04 10:09:03 -04:00
Paul Westerdale
05a55c7d65 add roomId to messaging filter (#4596) 2016-05-04 09:54:51 -04:00
Julian Lam
cdf6560012 Using async.apply and fixed code style 2016-05-04 09:53:32 -04:00
Paul Westerdale (ABRS Limited)
b6c6e8c08d Added hooks into topic follow and unfollow 2016-05-04 14:17:31 +01:00
NodeBB Misty
ddf83202db Latest translations and fallbacks 2016-05-04 09:02:31 -04:00
barisusakli
a47e0f3384 up themes 2016-05-04 13:00:19 +03:00
barisusakli
f473e03f76 closes #4565 2016-05-04 12:54:26 +03:00
barisusakli
a3c197751e up markdown 2016-05-04 12:31:12 +03:00
barisusakli
90446bdc7f closes #4524 2016-05-04 12:29:34 +03:00
barisusakli
60c1401a70 up themes 2016-05-04 12:20:53 +03:00
barisusakli
cef7fb545b closes #1972 2016-05-03 19:13:10 +03:00
barisusakli
c758f59014 closes #2302 2016-05-03 17:17:38 +03:00
barisusakli
e791ed9002 up composer 2016-05-03 16:28:20 +03:00
barisusakli
9b54ce7235 fix uploads with no extensions 2016-05-03 16:14:52 +03:00
NodeBB Misty
2ce24f8ba9 Latest translations and fallbacks 2016-05-03 09:02:29 -04:00
Barış Soner Uşaklı
03b047bd59 fix another crash 2016-05-02 18:28:33 +03:00
Barış Soner Uşaklı
27ad34138b fix crash 2016-05-02 18:24:50 +03:00
NodeBB Misty
eb3c9104e1 Latest translations and fallbacks 2016-05-02 09:03:01 -04:00
barisusakli
77cf860c7a closes #4588 2016-05-01 13:09:41 +03:00
barisusakli
fea18a050f closes #4590 2016-05-01 12:44:43 +03:00
barisusakli
e9d548d057 closes #4580 removed path.parse 2016-05-01 12:26:57 +03:00
barisusakli
7365b9cc73 more chat refactors 2016-04-30 22:34:36 +03:00
barisusakli
bea2344ad4 api controllers refactor 2016-04-30 21:08:47 +03:00
barisusakli
ab70220499 fix indent 2016-04-30 20:46:16 +03:00
barisusakli
f67f408b2c some chats refactor 2016-04-30 20:43:16 +03:00
barisusakli
09a03bbe10 fix validator crash 2016-04-30 19:47:13 +03:00
barisusakli
ce4bebd960 up persona 2016-04-30 17:45:06 +03:00
NodeBB Misty
2e94cbf199 Latest translations and fallbacks 2016-04-30 09:02:25 -04:00
barisusakli
25f3a31ff1 closes #4587 2016-04-30 10:47:28 +03:00
barisusakli
5ff5a01c4f check for invalid topic 2016-04-29 22:33:08 +03:00
Julian Lam
2e2c8b8e77 fixes #4584 2016-04-29 13:46:13 -04:00
barisusakli
0ace04ee4f up persona 2016-04-29 20:37:41 +03:00
barisusakli
5e5e46e95f closes #4499 2016-04-29 20:35:57 +03:00
Julian Lam
cb1920d45a properly fixing #4583 2016-04-29 13:34:49 -04:00
Julian Lam
bd8fcb527b closes #4583 2016-04-29 12:54:53 -04:00
NodeBB Misty
1cdd4eaaf5 Latest translations and fallbacks 2016-04-29 09:02:28 -04:00
barisusakli
2337f5d149 up persona 2016-04-29 10:11:25 +03:00
barisusakli
94432ff796 closes #4582
remove leading /
2016-04-29 10:04:22 +03:00
barisusakli
1d56357611 up composer 2016-04-28 21:44:37 +03:00
Julian Lam
5f36bfab01 re: #4578 2016-04-28 14:18:19 -04:00
Julian Lam
de9357970f fixes #4578 2016-04-28 14:10:10 -04:00
Julian Lam
8eaff1492a Added ACP option to customise recent post
Before, could either be OP or last reply.

Now, you can choose between OP, last reply, or last post (which
includes OP)
2016-04-28 11:52:05 -04:00
Barış Soner Uşaklı
14df793ba6 Merge pull request #4557 from BenLubar/gif-image-upload
fix convert-avatars-to-png option not being honored
2016-04-28 10:44:27 +03:00
barisusakli
8a2f1d0c49 Revert "update travis"
This reverts commit f05b07d2a4.
2016-04-28 10:44:06 +03:00
barisusakli
f05b07d2a4 update travis 2016-04-28 10:29:33 +03:00
Barış Soner Uşaklı
58ea83014c Merge pull request #4572 from pichalite/image-upload
fix image upload in post
2016-04-28 09:35:27 +03:00
Ben Lubar
74a5a70969 fix convert-avatars-to-png option not being honored 2016-04-28 00:32:37 -05:00
barisusakli
178b9c3bdd fix lang key 2016-04-27 22:02:30 +03:00
barisusakli
d9f4d79a32 up composer markdown 2016-04-27 21:58:36 +03:00
barisusakli
7104d18e59 https://github.com/NodeBB/nodebb-plugin-composer-default/issues/32 2016-04-27 21:53:29 +03:00
wktang
414a26fe42 Default mongodb db name should be "nodebb" instead of 0 (unlike redis). (#4573) 2016-04-27 14:52:36 -04:00
Ben Lubar
37bd63ab75 wrap images in links even if the images aren't unloaded. handle resized images with no file extension (as seen on wtdwtf) (#4561) 2016-04-27 14:52:14 -04:00
barisusakli
ee2bd0ce00 up composer/markdown 2016-04-27 21:35:51 +03:00
Julian Lam
2c83789482 Allowing object to be passed as module list
fixes #4576 again
2016-04-27 14:28:57 -04:00
Julian Lam
1d7a5f58e2 fixes #4576 2016-04-27 14:14:22 -04:00
psychobunny
1d607cbed7 closes #4574 2016-04-27 12:11:54 -04:00
barisusakli
aac72a0c7f up composer 2016-04-27 19:11:15 +03:00
barisusakli
f61d0cb457 https://github.com/NodeBB/nodebb-plugin-composer-default/issues/24 2016-04-27 19:06:56 +03:00
barisusakli
cd2c2da420 closes #4575 2016-04-27 17:55:00 +03:00
pichalite
f154853b39 add extension after filename trim 2016-04-27 14:46:03 +00:00
NodeBB Misty
becd716d77 Latest translations and fallbacks 2016-04-27 09:02:32 -04:00
barisusakli
c266fe9983 closes #4540 2016-04-27 13:08:32 +03:00
barisusakli
18e68346e7 closes #4507 2016-04-27 11:13:08 +03:00
barisusakli
3648d531fa closes #4545 2016-04-27 11:01:27 +03:00
barisusakli
553a69c780 revert img stripping 2016-04-27 09:03:44 +03:00
pichalite
821d723541 fix image upload in post 2016-04-26 23:22:19 +00:00
Julian Lam
a500914143 Updated 404 for image handling
If an image or asset specified in static file handler is not
found (ENOENT), then the 404 handler is now invoked (as opposed to
prior, where a handled exception was thrown).

Also, when requesting images inline that do not exist, NodeBB
will now send back "404 Not Found" instead of the entire 404
page. If you access the broken link directly, you'll see the
404 page.
2016-04-26 17:00:46 -04:00
Ole R
ae927ce356 Update emoji-one (#4571)
`rm -rf src/database/redis*`
2016-04-26 16:23:07 -04:00
Ole R
483127c7be Update emoji-one (#4570) 2016-04-26 15:39:31 -04:00
barisusakli
a12a149015 fix validator warning 2016-04-25 21:53:56 +03:00
barisusakli
1cbbb23043 fix css 2016-04-25 21:46:22 +03:00
barisusakli
65dfe2bf1b closes #4564 2016-04-25 19:45:50 +03:00
barisusakli
eb04dba96c closes #4568 2016-04-25 19:28:33 +03:00
Julian Lam
c8bbbda22f added logic to catch bad installs
In cases where the nodebb executable is run before `npm i`, NodeBB
will now emit a friendly message instead of a scary one.
2016-04-25 12:20:29 -04:00
barisusakli
eb28e178a7 closes #4567 2016-04-25 19:06:18 +03:00
NodeBB Misty
b4a15cdbc9 Latest translations and fallbacks 2016-04-25 09:02:29 -04:00
NodeBB Misty
a306405ebd Latest translations and fallbacks 2016-04-24 09:03:01 -04:00
Ole R
c1e3613779 Update jquery.textcomplete to 1.3.4 2016-04-23 09:23:36 -04:00
NodeBB Misty
8ea12197ae Latest translations and fallbacks 2016-04-23 09:02:27 -04:00
Barış Soner Uşaklı
a5da398c94 Merge pull request #4559 from pichalite/add-defaults
add missing ACP defaults for new install
2016-04-23 09:15:11 +03:00
pichalite
8947ac74a4 bookmarkThreshold 2016-04-22 11:31:15 -07:00
pichalite
43a3a81cf7 add missing ACP defaults for new install 2016-04-22 18:01:39 +00:00
barisusakli
ae607b47be up themes 2016-04-22 19:52:08 +03:00
barisusakli
c790373dfc closes #4558 2016-04-22 19:48:41 +03:00
Barış Soner Uşaklı
9d6532fe7b moved to ajaxify.start 2016-04-21 23:07:51 +03:00
Julian Lam
22cf0966e6 removed console log 2016-04-21 15:52:15 -04:00
Julian Lam
ea6d2c35f7 Fixed bug in settingsv1
If the saved value was an empty string, then textareas (and more
importantly, select boxes) would not be properly populated with
the saved value.
2016-04-21 15:30:48 -04:00
Julian Lam
352ef81e84 Merge pull request #4530 from BenLubar/delay-image-loading
don't delay image loading when "delay image loading" is unchecked
2016-04-21 15:14:19 -04:00
Julian Lam
7b6960a5ff Merge pull request #4556 from BenLubar/gif-image-upload
add a hook for plugins like nodebb-plugin-imagemagick
2016-04-21 15:12:06 -04:00
Ben Lubar
f5009b1a11 add a hook for plugins like nodebb-plugin-imagemagick that don't want to replace the entire upload system 2016-04-21 14:09:10 -05:00
Julian Lam
41d8d07e35 upped persona 2016-04-21 12:12:42 -04:00
Julian Lam
2aa89b9c70 fixes #4555 2016-04-21 11:40:40 -04:00
Julian Lam
b2b99ce9f9 added new core component for topic teaser
/cc @rbeer
2016-04-21 10:32:15 -04:00
NodeBB Misty
f7fef16168 Latest translations and fallbacks 2016-04-21 09:02:32 -04:00
Barış Soner Uşaklı
fecda8c051 Merge pull request #4286 from pichalite/chat-dropdown
don't show rooms without messages
2016-04-21 08:19:23 +03:00
Julian Lam
66dd790938 did I fix it @rbeer? :shipit: 2016-04-20 16:12:55 -04:00
Julian Lam
a0d989a112 fixes #4551 2016-04-20 15:04:53 -04:00
Julian Lam
4f913d3f19 fixed issue with missing base in path.format 2016-04-20 14:15:38 -04:00
Julian Lam
5858d914bf closes #4550 2016-04-20 13:58:31 -04:00
barisusakli
a7415a8db0 added missing count increment 2016-04-20 20:50:16 +03:00
Julian Lam
33255d73dd fix #4546 2016-04-20 10:53:47 -04:00
Julian Lam
51309890fe Merge branch 'iconSelect-modal-selected' of https://github.com/rbeer/NodeBB into rbeer-iconSelect-modal-selected 2016-04-20 10:00:27 -04:00
NodeBB Misty
fce5780d0f Latest translations and fallbacks 2016-04-20 09:03:04 -04:00
Raphael Beer
ee2c178f2a Don't add .undefined if selection is empty 2016-04-20 12:08:09 +02:00
Raphael Beer
c9b2011a11 Set input#fa-filter value to name of selected icon
- Set selected icon before modal is visible.
- Select input#fa-filter content to allow
  immediate typing/searching.
2016-04-20 10:59:09 +02:00
Raphael Beer
aaef2d4362 Use modal Element as traversing root 2016-04-20 09:35:00 +02:00
Raphael Beer
ff2ca0f786 Add changeSelection to iconSelect 2016-04-20 07:33:27 +02:00
Raphael Beer
dca9218ee9 Add .selected to currently set icon in modal 2016-04-20 07:32:12 +02:00
Julian Lam
4aabac5288 Fixes #4548 2016-04-19 21:03:47 -04:00
barisusakli
ff88186d41 closes #4537 2016-04-19 20:04:39 +03:00
psychobunny
d83a1987eb fix routing of rjs modules 2016-04-19 12:03:30 -04:00
Julian Lam
902f474888 fixed japanese language code 2016-04-19 09:35:23 -04:00
NodeBB Misty
19d708b689 Latest translations and fallbacks 2016-04-19 09:02:30 -04:00
Julian Lam
d0f08b4dd4 added prompt to passport input for Google SSO 2016-04-18 16:04:09 -04:00
Julian Lam
9cfa1bb976 Merge branch 'pichalite-new-chat-message' 2016-04-18 14:56:52 -04:00
Julian Lam
dd3c00d9e2 updated theme versions 2016-04-18 14:56:41 -04:00
Julian Lam
674136423c Merge branch 'new-chat-message' of https://github.com/pichalite/NodeBB into pichalite-new-chat-message 2016-04-18 14:56:27 -04:00
psychobunny
5f5d8e6b56 ah, woops 2016-04-18 11:22:38 -04:00
psychobunny
6e617dd69a closes #4520 2016-04-18 10:59:55 -04:00
psychobunny
d24b15a584 closes #4523 2016-04-18 10:06:32 -04:00
barisusakli
ff9b2bad49 closes #4512 2016-04-18 16:07:04 +03:00
NodeBB Misty
accd9b6e2e Latest translations and fallbacks 2016-04-18 09:02:24 -04:00
barisusakli
ba6f687880 up themes 2016-04-18 15:47:06 +03:00
barisusakli
ec33a57f77 closes #3128 2016-04-18 15:44:07 +03:00
Barış Soner Uşaklı
35ac64db7f Merge pull request #4504 from BenLubar/unread-topics
Add /unread/new, which is the same as /unread but does not show topics that were already partially read by the user.
2016-04-18 14:42:10 +03:00
Barış Soner Uşaklı
d95944f8d0 Merge pull request #4529 from kerneldeveloper/master
Make the description more clear.
2016-04-18 13:29:17 +03:00
Barış Soner Uşaklı
3d6f5fa54e Merge pull request #4535 from pichalite/acp-user-reg
move ACP setting for user registration type
2016-04-18 10:16:22 +03:00
pichalite
4bb5dad05d move ACP user reg type 2016-04-18 06:58:20 +00:00
psychobunny
4c7d8b1118 Merge pull request #4534 from darktrge/patch-1
remove HTTP(S) schema for external bootstrap CSS file.
2016-04-17 13:02:49 -04:00
Danijel
b7335c7a61 remove HTTP(S) schema for external bootstrap CSS file.
remove HTTP(S) schema from external bootstrap CSS file to avoid mixed content error.
2016-04-17 15:38:43 +02:00
Ben Lubar
f18099b435 actually don't delay image loading when "delay image loading" is unchecked 2016-04-16 22:45:20 -05:00
Mr.Lee
3e2f36fc29 Make the description more clear.
The same description in mongo.js  and install.js are ambiguous.
2016-04-16 23:34:57 +08:00
NodeBB Misty
a3e829e974 Latest translations and fallbacks 2016-04-16 09:02:26 -04:00
Aziz Khoury
3dc63438de hmm-2 ... 2016-04-15 17:21:26 -04:00
Aziz Khoury
aac30cb5ec hmm .. 2016-04-15 17:17:54 -04:00
Aziz Khoury
8920c95281 reqFromSocket now support payload and event and uid 2016-04-15 17:07:24 -04:00
Aziz Khoury
02e53fd442 update deprecation message 2016-04-15 16:59:25 -04:00
Aziz Khoury
c07e29bad6 fix circular dependency -- involves indentations fix 2016-04-15 16:47:55 -04:00
Aziz Khoury
807e3a9d7e adding cls back in socketio index 2016-04-15 16:45:04 -04:00
Aziz Khoury
4f3a962f7f what did i do? 2016-04-15 16:42:22 -04:00
Aziz Khoury
01ee020750 bring back disconnect only for CLS purposes 2016-04-15 16:39:08 -04:00
Aziz Khoury
53e9627001 unify request as a store key for both http and websockets calls 2016-04-15 15:55:55 -04:00
pichalite
b5d798077f remove log
:fail:
2016-04-15 10:57:58 -07:00
pichalite
30ce17ef73 mark room unread on new message 2016-04-15 17:44:16 +00:00
barisusakli
83d863f3db closes #4517 2016-04-15 16:07:56 +03:00
NodeBB Misty
e551cbfa74 Latest translations and fallbacks 2016-04-15 09:02:24 -04:00
psychobunny
54859e8634 up persona 2016-04-14 13:46:23 -04:00
barisusakli
19bc6fa133 fix undefined callback in sounds 2016-04-14 18:52:54 +03:00
barisusakli
6cc08f3868 fix indent 2016-04-14 18:44:44 +03:00
barisusakli
e564260650 moved groupTitle from user settings to user profile/edit 2016-04-14 18:41:52 +03:00
Julian Lam
2ddcaa9ce1 added new hook for hotswap preparation 2016-04-14 11:16:12 -04:00
NodeBB Misty
dde7f26944 Incremented version number 2016-04-13 15:24:27 -04:00
NodeBB Misty
61404be94b Incremented version number 2016-04-13 13:20:13 -04:00
NodeBB Misty
c40c64a9c5 Merge commit '3390b7d7f6e9b4f6bd5f0bc6a5d554c21eb2b9ff' into v1.x.x 2016-04-13 13:20:13 -04:00
Julian Lam
3390b7d7f6 closes #4516 2016-04-13 11:58:14 -04:00
Julian Lam
604373b5e4 fixing plugin checker which erroneously always returned success 2016-04-13 10:43:29 -04:00
Julian Lam
099749e908 upped composer, re: nodebb/nodebb-plugin-composer-default#33 2016-04-13 09:18:20 -04:00
barisusakli
229326acd6 another tab 2016-04-13 10:32:59 +03:00
barisusakli
f43be13f87 fix indent 2016-04-13 10:32:31 +03:00
barisusakli
bec688cea0 relative path fix 2016-04-13 10:31:59 +03:00
Barış Soner Uşaklı
3b1c1d2cfd Merge pull request #4513 from pichalite/post-tools
show post tools for global mod on post delete
2016-04-12 10:04:38 +03:00
pichalite
aad64cad35 show post tools for global mod on delete 2016-04-12 05:37:39 +00:00
barisusakli
f7ac1d89ff fix undefined next 2016-04-11 14:41:04 +03:00
Barış Soner Uşaklı
31815f7d22 Merge pull request #4510 from rbeer/teaser-pid
Add pid to teaser ajaxify data
2016-04-10 17:48:04 +03:00
Raphael Beer
006496efe3 Add pid to teaser ajaxify data 2016-04-10 14:09:33 +02:00
Barış Soner Uşaklı
9860320496 Merge pull request #4508 from pichalite/issue-4506
fixes #4506
2016-04-09 08:51:07 +03:00
pichalite
e23377580d fixes #4506 2016-04-08 23:55:10 +00:00
Ben Lubar
114e957b0f add client-side unread count support for the "new" filter 2016-04-08 13:54:51 -05:00
Ben Lubar
217f0c5652 Switch to a named filter for unread to allow future expansion.
Don't use the query string as it is not passed to infinite scroll.
2016-04-08 13:42:47 -05:00
Ben Lubar
a61d947295 allow filtering /unread to only topics that have not yet been seen 2016-04-08 13:31:21 -05:00
barisusakli
a81285befa dont crash if category doesn't exist 2016-04-08 18:09:46 +03:00
Julian Lam
e481ed21eb Using pid as discriminator for mergeId
... for favourite and upvote notifications.
2016-04-07 21:22:56 -04:00
Julian Lam
c89a02bfb9 upped composer again 2016-04-07 17:53:11 -04:00
Julian Lam
4105565ed1 upped composer version @BenLubar @RaceProUK 2016-04-07 17:50:53 -04:00
Julian Lam
0449e014f6 updated some help text 2016-04-07 17:47:20 -04:00
psychobunny
c88ed66312 closes #4502 2016-04-07 16:55:53 -04:00
Julian Lam
a9f966f23c closes #4503, /cc @BenLubar 2016-04-07 11:32:18 -04:00
Julian Lam
ba44db5b5b updated dependency check logic to better handle missing dependencies 2016-04-07 10:47:13 -04:00
NodeBB Misty
2e65e8ae7d Latest translations and fallbacks 2016-04-07 09:02:29 -04:00
Julian Lam
430adc366c fix #4498 2016-04-06 21:49:43 -04:00
Julian Lam
7bc4ea18f4 Merge remote-tracking branch 'origin/master' into fix-vendors 2016-04-06 21:43:19 -04:00
Julian Lam
930c2b7472 Merge branch 'master' into fix-vendors 2016-04-06 21:42:37 -04:00
psychobunny
075df88600 Merge pull request #4500 from frissdiegurke/master
Emoji update
2016-04-06 18:31:38 -04:00
Ole R
5023935baf Enable nodebb-plugin-emoji-one by default 2016-04-06 23:58:48 +02:00
Ole R
0d0e4fa94f Update dependencies 2016-04-06 23:57:45 +02:00
Yami
5158314ac4 Merge pull request #1 from BenLubar/yamikuronue-coverage-fix
fixed the merge conflict by merging
2016-04-06 06:24:23 -04:00
Julian Lam
bf73c0de5f closes #3286 2016-04-05 21:34:53 -04:00
Ben Lubar
1a77b18a82 Revert "Updating instructions to match reality"
Example of a working config file:

{
        "url": "http://localhost:4567",
        "secret": "c6e41882-ac49-4977-a712-312e47eb0fa4",
        "database": "mongo",
        "port": "4567",

        "mongo": {
                "host": "172.17.0.2",
                "port": 27017
        },

        "test_database": {
                "host": "172.17.0.2",
                "port": "27017",
                "password": "",
                "database": "1"
        }
}

This reverts commit 65848d1a76.
2016-04-05 19:47:45 -05:00
Ben Lubar
b3da9f74b0 Merge remote-tracking branch 'yamikuronue/master' into yamikuronue-coverage-fix 2016-04-05 19:46:44 -05:00
Julian Lam
053bbc06fa fixes apapadimoulis/what-bugs#84
closes #4496
2016-04-05 20:12:39 -04:00
Julian Lam
f406119fa1 upped composer version 2016-04-05 16:20:16 -04:00
Barış Soner Uşaklı
04fb7d5acc enable emoji-apple on install 2016-04-05 21:01:13 +03:00
Barış Soner Uşaklı
50ae2305b0 up emoji add apple 2016-04-05 19:51:39 +03:00
Julian Lam
b6a10c7729 removed console log 2016-04-04 21:26:49 -04:00
Julian Lam
94a505a6bb removed symlink logic and using route bridging instead.
Also allowed plugins to define modules from their plugin.json
2016-04-04 20:43:21 -04:00
Julian Lam
ad16c3db6b updated Gruntfile to ignore js files in public/src/modules 2016-04-04 18:51:10 -04:00
Julian Lam
f91f705f90 Merge branch 'master' into fix-vendors 2016-04-04 18:46:24 -04:00
Yami
31dcd99e6e Changed to automatically report coverage 2016-04-01 12:23:51 +00:00
Yami
d78edf6f72 adding istanbul coverage 2016-04-01 12:20:02 +00:00
Yami
65848d1a76 Updating instructions to match reality 2016-04-01 12:14:03 +00:00
NodeBB Misty
b81e395a26 Incremented version number 2016-03-21 09:06:33 -04:00
NodeBB Misty
c12963593d Merge commit '294171b07266706ac78850be8b85b3d27e332424' into v1.x.x 2016-03-21 09:06:33 -04:00
Julian Lam
1736b1c015 removing additional socket methods added via #4304
@barisusakli added these methods in 8d9f7d8e19
2016-03-18 15:35:38 -04:00
NodeBB Misty
3d815fff72 bumped up version 2016-03-18 13:46:58 -04:00
NodeBB Misty
f88b695d4c Merge commit 'f7e43877482f6efc276ea71e61d7c7524a8f5a44' into v1.x.x 2016-03-18 13:40:33 -04:00
NodeBB Misty
72940f7bdf 1.0.1-auto.0 2016-03-12 18:39:12 -05:00
NodeBB Misty
ffc9da97e3 Merge commit '263b09f11a9496b7ad498a5d698186b9d774ae23' into v1.x.x 2016-03-12 18:39:10 -05:00
Julian Lam
2be3054e94 removed shrinkwrap file from release branch 2016-03-12 13:12:28 -05:00
Barış Soner Uşaklı
fdf32a6ed4 backport cover fix 2016-03-12 19:55:22 +02:00
Julian Lam
b73af30a2b added git ignore file for modules directory 2016-03-12 10:57:31 -05:00
Barış Soner Uşaklı
19b3069ad0 backport global mod fix 2016-03-09 22:45:59 +02:00
Barış Soner Uşaklı
5765313b63 backport image.normalise fix 2016-03-09 14:24:12 +02:00
Barış Soner Uşaklı
cbbd254d33 Merge pull request #4304 from AccaliaDeElementia/v1.x.x
Add API endpoint analogs to websocket interface
2016-03-08 10:33:20 +02:00
Barış Soner Uşaklı
8f8fcc8416 backport upgradescript fix for global moderators 2016-03-05 11:46:11 +02:00
Julian Lam
55b43dca23 updated shrinkwrap file 2016-03-03 16:45:20 -05:00
accalia
c13aab39e7 fix formatting error 2016-03-03 16:42:10 -05:00
accalia
072fa38927 Add API endpoint analogs to websocket
includes post.getPost, topic.getTopic, category.getCategory, user.getUserBy*
2016-03-03 08:34:08 -05:00
psychobunny
0b35c81586 @barisusakli fixing minfile caching for multiple processes 2016-03-02 23:58:45 -05:00
psychobunny
cc6d4f5d43 https://github.com/NodeBB/NodeBB/issues/4287 2016-03-02 13:15:22 -05:00
psychobunny
d9474d5de2 closes #4296 2016-03-02 13:07:42 -05:00
Julian Lam
f6c60517db added shrinkwrap file 2016-02-29 11:43:04 -05:00
pichalite
cd99a46918 don't show rooms without messages 2016-02-29 06:19:43 +00:00
akhoury
509676fdf4 add deprecation warnings for CLS 2016-02-28 15:24:31 -05:00
akhoury
a8411d44fd merge 2016-02-28 14:52:51 -05:00
akhoury
07586c9023 merge 2016-02-28 14:52:32 -05:00
Julian Lam
432c3d777d Merge branch 'master' into fix-vendors 2016-02-26 12:38:23 -05:00
Julian Lam
3f2872979f added buzz 2016-02-26 12:34:48 -05:00
Julian Lam
44aae7daa5 removed hammer, updated semver, added mousetrap 2016-02-26 12:12:12 -05:00
Julian Lam
3871f6f191 removed chart.js lib from repo 2016-02-26 11:39:02 -05:00
Julian Lam
e1323c0295 Updated js code so vendors can be added to the modules folder, so
they can be required properly and we can finally get rid of that
really annoying "mismatched anonymous" error in Require.js.

First module to make the transition: Chart.js
2016-02-26 11:29:17 -05:00
akhoury
f47c06279a added depracation warning 2016-02-16 23:07:36 -05:00
akhoury
bdc8e6f04f Merge remote-tracking branch 'upstream/master' 2016-02-16 22:54:59 -05:00
akhoury
496e5ae8bf comment 2016-02-12 12:30:39 -05:00
akhoury
7f0c46b3a7 Merge remote-tracking branch 'upstream/master' 2016-02-12 12:21:13 -05:00
akhoury
4245cb2739 adding cls support for ws 2016-02-12 12:20:21 -05:00
akhoury
852a1a178e oops 2016-02-07 13:34:24 -05:00
akhoury
61c76e4aba add continuation-local-storage support 2016-02-07 13:16:50 -05:00
3458 changed files with 108824 additions and 40513 deletions

View File

@@ -5,4 +5,4 @@ languages:
PHP: true
exclude_paths:
- "public/vendor/*"
- "tests/*"
- "test/*"

19
.eslintignore Normal file
View File

@@ -0,0 +1,19 @@
node_modules/
*.sublime-project
*.sublime-workspace
.project
.vagrant
.DS_Store
logs/
/public/templates
/public/uploads
/public/sounds
/public/vendor
/public/src/modules/string.js
.idea/
.vscode/
*.ipr
*.iws
/coverage
/build
.eslintrc

128
.eslintrc Normal file
View File

@@ -0,0 +1,128 @@
{
"extends": "airbnb-base",
"parserOptions": {
"sourceType": "script"
},
"rules": {
// Customized
"handle-callback-err": [ "error","^(e$|(e|(.*(_e|E)))rr)" ],
"comma-dangle": ["error", {
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "never"
}],
"no-empty": ["error", { "allowEmptyCatch": true }],
"no-underscore-dangle": "off",
"newline-per-chained-call": "off",
"no-console": "off",
"no-mixed-operators": ["error", { "allowSamePrecedence": true }],
"strict": ["error", "global"],
"consistent-return": "off",
"func-names": "off",
"no-tabs": "off",
"indent": ["error", "tab"],
"no-eq-null": "off",
"camelcase": "off",
"no-new": "off",
"no-shadow": "off",
"no-use-before-define": ["error", "nofunc"],
"no-prototype-builtins": "off",
"new-cap": "off",
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
"import/no-unresolved": "error",
// ES6
"prefer-rest-params": "off",
"prefer-spread": "off",
"prefer-arrow-callback": "off",
"prefer-template": "off",
"no-var": "off",
"object-shorthand": "off",
"vars-on-top": "off",
// TODO
"import/no-extraneous-dependencies": "off",
"import/no-dynamic-require": "off",
"import/newline-after-import": "off",
"no-bitwise": "off",
"global-require": "off",
"max-len": "off",
"no-param-reassign": "off",
"no-restricted-syntax": "off",
"no-script-url": "off",
"default-case": "off",
// "no-multi-assign": "off",
// "linebreak-style": "off",
// "one-var": "off",
// "no-undef": "off",
// "max-nested-callbacks": "off",
// "no-mixed-requires": "off",
// "brace-style": "off",
// "max-statements-per-line": "off",
// "no-unused-vars": "off",
// "no-mixed-spaces-and-tabs": "off",
// "no-useless-concat": "off",
// "require-jsdoc": "off",
// "eqeqeq": "off",
// "no-negated-condition": "off",
// "one-var-declaration-per-line": "off",
// "no-lonely-if": "off",
// "radix": "off",
// "no-else-return": "off",
// "no-useless-escape": "off",
// "block-scoped-var": "off",
// "operator-assignment": "off",
// "yoda": "off",
// "no-loop-func": "off",
// "no-void": "off",
// "valid-jsdoc": "off",
// "no-cond-assign": "off",
// "no-redeclare": "off",
// "no-unreachable": "off",
// "no-nested-ternary": "off",
// "operator-linebreak": "off",
// "guard-for-in": "off",
// "no-unneeded-ternary": "off",
// "no-sequences": "off",
// "no-extend-native": "off",
// "no-shadow-restricted-names": "off",
// "no-extra-boolean-cast": "off",
// "no-path-concat": "off",
// "no-unused-expressions": "off",
// "no-return-assign": "off",
// "no-restricted-modules": "off",
// "object-curly-spacing": "off",
// "indent": "off",
// "padded-blocks": "off",
// "eol-last": "off",
// "lines-around-directive": "off",
// "strict": "off",
// "comma-dangle": "off",
// "no-multi-spaces": "off",
// "quotes": "off",
// "keyword-spacing": "off",
// "no-mixed-operators": "off",
// "comma-spacing": "off",
// "no-trailing-spaces": "off",
// "key-spacing": "off",
// "no-multiple-empty-lines": "off",
// "spaced-comment": "off",
// "space-in-parens": "off",
// "block-spacing": "off",
// "quote-props": "off",
// "space-unary-ops": "off",
// "no-empty": "off",
// "dot-notation": "off",
// "func-call-spacing": "off",
// "array-bracket-spacing": "off",
// "object-property-newline": "off",
// "no-continue": "off",
// "no-extra-semi": "off",
// "no-spaced-func": "off",
// "no-useless-return": "off"
}
}

View File

@@ -1,6 +1,10 @@
# Submitting a Pull Request to NodeBB?
First of all, thank you! Please consider this [style guide](https://docs.nodebb.org/en/latest/contributing/style-guide.html) when submitting your changes. Also, please join our [community](https://community.nodebb.org) to meet other NodeBB developers and designers :)
First of all, thank you! Before submission, please run `npm test` to lint and run the automated NodeBB tests. If everything passes, you're good to go. If you have any errors, please fix them and re-run `npm test` to make sure there aren't any others.
## Styleguide and linting
NodeBB mostly conforms to the [AirBnB Javascript style guide](https://github.com/airbnb/javascript#readme). If you're running into a lot of ESlint errors, you may want to install an editor plugin to display them in real time.
## Contributor License Agreement
@@ -34,11 +38,9 @@ There is a chance that the issue you are experiencing may have already been fixe
You can find the NodeBB version number in the Admin Control Panel (ACP), as well as the first line output to the shell when running NodeBB
``` plaintext
info: NodeBB v0.5.2-dev Copyright (C) 2013-2014 NodeBB Inc.
info: This program comes with ABSOLUTELY NO WARRANTY.
info: This is free software, and you are welcome to redistribute it under certain conditions.
info:
info: Time: Tue Oct 07 2014 20:25:20 GMT-0400 (EDT)
3/4 12:38:57 [10752] - info: NodeBB v1.4.5 Copyright (C) 2013-2017 NodeBB Inc.
3/4 12:38:57 [10752] - info: This program comes with ABSOLUTELY NO WARRANTY.
3/4 12:38:57 [10752] - info: This is free software, and you are welcome to redistribute it under certain conditions.
```
If you are running NodeBB via git, it is also helpful to let the maintainers know what commit hash you are on. To find the commit hash, execute the following command:
@@ -51,12 +53,13 @@ $ 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
Use `npm ls` to list the versions of the theme you're using. In this example, we're running the Persona theme, which depends on the Vanilla theme.
``` 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
$ npm ls nodebb-theme-vanilla nodebb-theme-persona
nodebb@1.4.3 /path/to/nodebb
+-- nodebb-theme-persona@4.2.4
`-- nodebb-theme-vanilla@5.2.0
```
## Attempt to use `git bisect`

13
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,13 @@
Please include the following information when submitting a bug report/issue:
* NodeBB version and git hash (to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory)
* Database (mongo or redis) and it's version.
* Exact steps to cause this issue
1. First I did this...
2. Then, I clicked on this item...
* What you expected
* e.g. I expected *abc* to *xyz*
* What happened instead
* e.g. Instead, I got *zyx* and NodeBB set fire to my house
Thank you!

14
.gitignore vendored
View File

@@ -2,6 +2,7 @@ npm-debug.log
node_modules/
sftp-config.json
config.json
jsconfig.json
public/src/nodebb.min.js
!src/views/config.json
public/css/*.css
@@ -15,6 +16,7 @@ provision.sh
*.komodoproject
.DS_Store
feeds/recent.rss
.eslintcache
logs/
@@ -23,7 +25,6 @@ pidfile
# templates
/public/templates
/public/uploads
/public/sounds
# compiled files
@@ -33,6 +34,9 @@ pidfile
/public/nodebb.min.js.map
/public/acp.min.js
/public/acp.min.js.map
/public/installer.css
/public/installer.min.js
/public/logo.png
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
*.iml
@@ -47,4 +51,10 @@ pidfile
## Transifex
tx.exe
.transifexrc
.transifexrc
##Coverage output
coverage
build
*.log

View File

@@ -74,6 +74,7 @@
"worker" : false, // Web Workers
"wsh" : false, // Windows Scripting Host
"yui" : false, // Yahoo User Interface
"mocha": true,
// Legacy
"nomen" : false, // true: Prohibit dangling `_` in variables
@@ -82,5 +83,7 @@
"white" : false, // true: Check against strict whitespace and indentation rules
// Custom Globals
"globals" : {} // additional predefined global variables
"globals" : {
"Promise": true
} // additional predefined global variables
}

View File

@@ -1,17 +1,20 @@
services:
- redis-server
- redis-server
before_install:
- "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10"
- "echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list"
- "sudo apt-get update"
- "sudo apt-get install mongodb-org-server"
- npm i --production
- node app --setup="{\"url\":\"http://127.0.0.1:4567/\",\"secret\":\"abcdef\",\"database\":\"mongo\",\"mongo:host\":\"127.0.0.1\",\"mongo:port\":27017,\"mongo:username\":\"\",\"mongo:password\":\"\",\"mongo:database\":0,\"redis:host\":\"127.0.0.1\",\"redis:port\":6379,\"redis:password\":\"\",\"redis:database\":0,\"admin:username\":\"admin\",\"admin:email\":\"test@example.org\",\"admin:password\":\"abcdef\",\"admin:password:confirm\":\"abcdef\"}" --ci="{\"host\":\"127.0.0.1\",\"port\":27017,\"database\":0}"
- "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10"
- "echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list"
- "sudo apt-get update"
- "sudo apt-get install mongodb-org-server"
before_script:
- "until nc -z localhost 27017; do echo Waiting for MongoDB; sleep 1; done"
- sh -c "if [ '$DB' = 'mongodb' ]; then node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"mongo\\\",\\\"mongo:host\\\":\\\"127.0.0.1\\\",\\\"mongo:port\\\":27017,\\\"mongo:username\\\":\\\"\\\",\\\"mongo:password\\\":\\\"\\\",\\\"mongo:database\\\":0,\\\"redis:host\\\":\\\"127.0.0.1\\\",\\\"redis:port\\\":6379,\\\"redis:password\\\":\\\"\\\",\\\"redis:database\\\":0,\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"abcdef\\\",\\\"admin:password:confirm\\\":\\\"abcdef\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":27017,\\\"database\\\":0}\"; fi"
- sh -c "if [ '$DB' = 'redis' ]; then node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"redis\\\",\\\"mongo:host\\\":\\\"127.0.0.1\\\",\\\"mongo:port\\\":27017,\\\"mongo:username\\\":\\\"\\\",\\\"mongo:password\\\":\\\"\\\",\\\"mongo:database\\\":0,\\\"redis:host\\\":\\\"127.0.0.1\\\",\\\"redis:port\\\":6379,\\\"redis:password\\\":\\\"\\\",\\\"redis:database\\\":0,\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"abcdef\\\",\\\"admin:password:confirm\\\":\\\"abcdef\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":6379,\\\"database\\\":0}\"; fi"
- "until nc -z localhost 27017; do echo Waiting for MongoDB; sleep 1; done"
after_success:
- "npm run coveralls"
language: node_js
env:
- CXX=g++-4.8
- CXX=g++-4.8 DB=mongodb
- CXX=g++-4.8 DB=redis
addons:
apt:
sources:
@@ -19,11 +22,9 @@ addons:
packages:
- g++-4.8
node_js:
- "4.2"
- "4.1"
- "4.0"
- "0.11"
- "0.10"
- "6"
- "4"
branches:
only:
- master
only:
- master
- develop

2448
.tx/config

File diff suppressed because it is too large Load Diff

View File

@@ -1,55 +1,68 @@
"use strict";
'use strict';
var fork = require('child_process').fork,
env = process.env,
worker,
incomplete = [];
var fork = require('child_process').fork;
var env = process.env;
var worker;
var updateWorker;
var initWorker;
var incomplete = [];
var running = 0;
module.exports = function (grunt) {
var args = [];
var initArgs = ['--build'];
if (!grunt.option('verbose')) {
args.push('--log-level=info');
initArgs.push('--log-level=info');
}
module.exports = function(grunt) {
function update(action, filepath, target) {
var args = [],
fromFile = '',
compiling = '',
time = Date.now();
var updateArgs = args.slice();
var compiling = '';
var time = Date.now();
if (!grunt.option('verbose')) {
args.push('--log-level=info');
}
if (target === 'lessUpdated_Client') {
fromFile = ['js', 'tpl', 'acpLess'];
compiling = 'clientLess';
compiling = 'clientCSS';
} else if (target === 'lessUpdated_Admin') {
fromFile = ['js', 'tpl', 'clientLess'];
compiling = 'acpLess';
compiling = 'acpCSS';
} else if (target === 'clientUpdated') {
fromFile = ['clientLess', 'acpLess', 'tpl'];
compiling = 'js';
} else if (target === 'templatesUpdated') {
fromFile = ['js', 'clientLess', 'acpLess'];
compiling = 'tpl';
} else if (target === 'langUpdated') {
compiling = 'lang';
} else if (target === 'serverUpdated') {
fromFile = ['clientLess', 'acpLess', 'js', 'tpl'];
// Do nothing, just restart
}
fromFile = fromFile.filter(function(ext) {
return incomplete.indexOf(ext) === -1;
});
if (incomplete.indexOf(compiling) === -1) {
incomplete.push(compiling);
}
args.push('--from-file=' + fromFile.join(','));
incomplete.push(compiling);
updateArgs.push('--build');
updateArgs.push(incomplete.join(','));
worker.kill();
worker = fork('app.js', args, { env: env });
if (updateWorker) {
updateWorker.kill('SIGKILL');
}
updateWorker = fork('app.js', updateArgs, { env: env });
running += 1;
updateWorker.on('exit', function () {
running -= 1;
if (running === 0) {
worker = fork('app.js', args, {
env: env,
});
worker.on('message', function () {
if (incomplete.length) {
incomplete = [];
worker.on('message', function() {
if (incomplete.length) {
incomplete = [];
if (grunt.option('verbose')) {
grunt.log.writeln('NodeBB restarted in ' + (Date.now() - time) + ' ms');
}
if (grunt.option('verbose')) {
grunt.log.writeln('NodeBB restarted in ' + (Date.now() - time) + ' ms');
}
}
});
}
});
}
@@ -61,11 +74,17 @@ module.exports = function(grunt) {
'public/*.less',
'node_modules/nodebb-*/*.less', 'node_modules/nodebb-*/**/*.less',
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**'
]
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
lessUpdated_Admin: {
files: ['public/**/*.less']
files: ['public/**/*.less'],
options: {
interval: 1000,
},
},
clientUpdated: {
files: [
@@ -73,34 +92,67 @@ module.exports = function(grunt) {
'node_modules/nodebb-*/*.js', 'node_modules/nodebb-*/**/*.js',
'!node_modules/nodebb-*/node_modules/**',
'node_modules/templates.js/lib/templates.js',
'!node_modules/nodebb-*/.git/**'
]
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
serverUpdated: {
files: ['*.js', 'install/*.js', 'src/**/*.js']
files: ['*.js', 'install/*.js', 'src/**/*.js'],
options: {
interval: 1000,
},
},
templatesUpdated: {
files: [
'src/views/**/*.tpl',
'node_modules/nodebb-*/*.tpl', 'node_modules/nodebb-*/**/*.tpl',
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**'
]
}
}
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
langUpdated: {
files: [
'public/language/en-GB/*.json',
'public/language/en-GB/**/*.json',
'node_modules/nodebb-*/**/*.json',
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
'!node_modules/nodebb-*/plugin.json',
'!node_modules/nodebb-*/package.json',
'!node_modules/nodebb-*/theme.json',
],
options: {
interval: 1000,
},
},
},
});
grunt.loadNpmTasks('grunt-contrib-watch');
if (grunt.option('skip')) {
grunt.registerTask('default', ['watch:serverUpdated']);
} else {
grunt.registerTask('default', ['watch']);
}
grunt.registerTask('default', ['watch']);
env.NODE_ENV = 'development';
worker = fork('app.js', [], { env: env });
if (grunt.option('skip')) {
worker = fork('app.js', args, {
env: env,
});
} else {
initWorker = fork('app.js', initArgs, {
env: env,
});
initWorker.on('exit', function () {
worker = fork('app.js', args, {
env: env,
});
});
}
grunt.event.on('watch', update);
};
};

View File

@@ -2,6 +2,7 @@
[![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)
[![Coverage Status](https://coveralls.io/repos/github/NodeBB/NodeBB/badge.svg?branch=master)](https://coveralls.io/github/NodeBB/NodeBB?branch=master)
[![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)
@@ -10,17 +11,18 @@
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
* [Premium Hosting for NodeBB](http://www.nodebb.org/ "NodeBB")
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
## Screenshots
NodeBB's theming engine is highly flexible and does not restrict your design choices. Check out some themed installs in these screenshots below:
[![](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)
@@ -30,12 +32,15 @@ Additional functionality is enabled through the use of third-party plugins.
[![](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)
Our minimalist "Persona" theme gets you going right away, no coding experience required.
[![](http://i.imgur.com/HwNEXGu.png)](http://i.imgur.com/HwNEXGu.png)
[![](http://i.imgur.com/II1byYs.png)](http://i.imgur.com/II1byYs.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.
@@ -45,7 +50,7 @@ Additional functionality is enabled through the use of third-party plugins.
NodeBB requires the following software to be installed:
* A version of Node.js at least 0.10 or greater
* A version of Node.js at least 4 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions))
* 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)

286
app.js
View File

@@ -1,7 +1,7 @@
/*
NodeBB - A better forum platform for the modern web
https://github.com/NodeBB/NodeBB/
Copyright (C) 2013-2014 NodeBB Inc.
Copyright (C) 2013-2017 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
@@ -17,30 +17,36 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
/*global require, global, process*/
'use strict';
if (require.main !== module) {
require.main.require = function (path) {
return require(path);
};
}
var nconf = require('nconf');
nconf.argv().env('__');
var url = require('url'),
async = require('async'),
winston = require('winston'),
colors = require('colors'),
path = require('path'),
pkg = require('./package.json'),
file = require('./src/file');
var url = require('url');
var async = require('async');
var winston = require('winston');
var path = require('path');
var pkg = require('./package.json');
var file = require('./src/file');
global.env = process.env.NODE_ENV || 'production';
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
colorize: true,
timestamp: function() {
timestamp: function () {
var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
return nconf.get('json-logging') ? date.toJSON() : date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0, 8) + ' [' + global.process.pid + ']';
},
level: nconf.get('log-level') || (global.env === 'production' ? 'info' : 'verbose')
level: nconf.get('log-level') || (global.env === 'production' ? 'info' : 'verbose'),
json: (!!nconf.get('json-logging')),
stringify: (!!nconf.get('json-logging')),
});
@@ -51,13 +57,14 @@ if (nconf.get('config')) {
configFile = path.resolve(__dirname, nconf.get('config'));
}
var configExists = file.existsSync(configFile);
var configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database'));
loadConfig();
versionCheck();
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('NodeBB v' + nconf.get('version') + ' Copyright (C) 2013-' + (new Date()).getFullYear() + ' NodeBB Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');
@@ -71,27 +78,35 @@ if (nconf.get('setup') || nconf.get('install')) {
} else if (nconf.get('upgrade')) {
upgrade();
} else if (nconf.get('reset')) {
require('./src/reset').reset();
async.waterfall([
async.apply(require('./src/reset').reset),
async.apply(require('./src/meta/build').buildAll),
], function (err) {
process.exit(err ? 1 : 0);
});
} else if (nconf.get('activate')) {
activate();
} else if (nconf.get('plugins')) {
listPlugins();
} else if (nconf.get('build')) {
require('./src/meta/build').build(nconf.get('build'));
} else {
start();
require('./src/start').start();
}
function loadConfig() {
function loadConfig(callback) {
winston.verbose('* using configuration stored in: %s', configFile);
nconf.file({
file: configFile
file: configFile,
});
nconf.defaults({
base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'),
views_dir: path.join(__dirname, 'public/templates'),
version: pkg.version
upload_path: 'public/uploads',
views_dir: path.join(__dirname, 'build/public/templates'),
version: pkg.version,
});
if (!nconf.get('isCluster')) {
@@ -103,138 +118,50 @@ function loadConfig() {
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-persona/templates'));
}
nconf.set('upload_path', path.resolve(nconf.get('base_dir'), nconf.get('upload_path')));
function start() {
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('secure', urlObject.protocol === 'https');
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'));
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'));
if (nconf.get('url')) {
nconf.set('url_parsed', url.parse(nconf.get('url')));
}
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.target = message.data;
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;
emitter.emit('meta:css.compiled');
winston.verbose('[cluster] Stylesheets propagated to worker %s', process.pid);
break;
case 'templates:compiled':
emitter.emit('templates:compiled');
break;
// Explicitly cast 'jobsDisabled' as Bool
var castAsBool = ['jobsDisabled'];
nconf.stores.env.readOnly = false;
castAsBool.forEach(function (prop) {
var value = nconf.get(prop);
if (value) {
nconf.set(prop, typeof value === 'boolean' ? value : String(value).toLowerCase() === 'true');
}
});
nconf.stores.env.readOnly = true;
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();
}
});
if (typeof callback === 'function') {
callback();
}
}
function setup() {
winston.info('NodeBB Setup Triggered via Command Line');
var install = require('./src/install');
var build = require('./src/meta/build');
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) {
async.series([
async.apply(install.setup),
async.apply(loadConfig),
async.apply(build.buildAll),
], function (err, data) {
// Disregard build step data
data = data[0];
var separator = ' ';
if (process.stdout.columns > 10) {
for(var x=0,cols=process.stdout.columns-10;x<cols;x++) {
for (var x = 0, cols = process.stdout.columns - 10; x < cols; x += 1) {
separator += '=';
}
}
@@ -263,59 +190,86 @@ function setup() {
}
function upgrade() {
require('./src/database').init(function(err) {
var db = require('./src/database');
var meta = require('./src/meta');
var upgrade = require('./src/upgrade');
var build = require('./src/meta/build');
async.series([
async.apply(db.init),
async.apply(meta.configs.init),
async.apply(upgrade.upgrade),
async.apply(build.buildAll),
], function (err) {
if (err) {
winston.error(err.stack);
process.exit();
process.exit(1);
} else {
process.exit(0);
}
require('./src/meta').configs.init(function () {
require('./src/upgrade').upgrade();
});
});
}
function activate() {
require('./src/database').init(function(err) {
var plugin = nconf.get('_')[1] ? nconf.get('_')[1] : nconf.get('activate'),
db = require('./src/database');
var db = require('./src/database');
var plugins = require('./src/plugins');
var plugin = nconf.get('activate');
async.waterfall([
function (next) {
db.init(next);
},
function (next) {
if (plugin.indexOf('nodebb-') !== 0) {
// Allow omission of `nodebb-plugin-`
plugin = 'nodebb-plugin-' + plugin;
}
plugins.isInstalled(plugin, next);
},
function (isInstalled, next) {
if (!isInstalled) {
return next(new Error('plugin not installed'));
}
winston.info('Activating plugin %s', plugin);
db.sortedSetAdd('plugins:active', 0, plugin, start);
winston.info('Activating plugin `%s`', plugin);
db.sortedSetAdd('plugins:active', 0, plugin, next);
},
], function (err) {
if (err) {
winston.error(err.message);
}
process.exit(err ? 1 : 0);
});
}
function listPlugins() {
require('./src/database').init(function(err) {
require('./src/database').init(function (err) {
if (err) {
winston.error(err.stack);
process.exit(1);
}
var db = require('./src/database');
db.getSortedSetRange('plugins:active', 0, -1, function(err, plugins) {
db.getSortedSetRange('plugins:active', 0, -1, function (err, plugins) {
if (err) {
winston.error(err.stack);
process.exit(1);
}
winston.info('Active plugins: \n\t - ' + plugins.join('\n\t - '));
process.exit();
});
});
}
function versionCheck() {
var version = process.version.slice(1);
var range = pkg.engines.node;
var semver = require('semver');
var compatible = semver.satisfies(version, range);
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);
if (!compatible) {
winston.warn('Your version of Node.js is too outdated for NodeBB. Please update your version of Node.js.');
winston.warn('Recommended ' + range.green + ', '.reset + version.yellow + ' provided\n'.reset);
}
}

View File

@@ -2,6 +2,7 @@
{
"name": "Announcements",
"description": "Announcements regarding our community",
"descriptionParsed": "<p>Announcements regarding our community</p>\n",
"bgColor": "#fda34b",
"color": "#fff",
"icon" : "fa-bullhorn",
@@ -10,6 +11,7 @@
{
"name": "General Discussion",
"description": "A place to talk about whatever you want",
"descriptionParsed": "<p>A place to talk about whatever you want</p>\n",
"bgColor": "#59b3d0",
"color": "#fff",
"icon" : "fa-comments-o",
@@ -18,6 +20,7 @@
{
"name": "Blogs",
"description": "Blog posts from individual members",
"descriptionParsed": "<p>Blog posts from individual members</p>\n",
"bgColor": "#86ba4b",
"color": "#fff",
"icon" : "fa-newspaper-o",
@@ -26,6 +29,7 @@
{
"name": "Comments & Feedback",
"description": "Got a question? Ask away!",
"descriptionParsed": "<p>Got a question? Ask away!</p>\n",
"bgColor": "#e95c5a",
"color": "#fff",
"icon" : "fa-question",

View File

@@ -9,6 +9,8 @@
"maximumPostLength": 32767,
"minimumTagsPerTopic": 0,
"maximumTagsPerTopic": 5,
"minimumTagLength": 3,
"maximumTagLength": 15,
"allowGuestSearching": 0,
"allowTopicsThumbnail": 0,
"registrationType": "normal",
@@ -29,6 +31,9 @@
"profileImageDimension": 128,
"requireEmailConfirmation": 0,
"allowProfileImageUploads": 1,
"teaserPost": "last",
"allowPrivateGroups": 1
}
"teaserPost": "last-reply",
"allowPrivateGroups": 1,
"unreadCutoff": 2,
"bookmarkThreshold": 5,
"topicsPerList": 20
}

View File

@@ -2,7 +2,7 @@
{
"widget": "html",
"data" : {
"html": "<footer id=\"footer\" class=\"container footer\">\r\n\t<div class=\"copyright\">\r\n\t\tCopyright © 2015 <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>",
"html": "<footer id=\"footer\" class=\"container footer\">\r\n\t<div class=\"copyright\">\r\n\t\tCopyright © 2016 <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

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

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
var async = require('async');
var prompt = require('prompt');
@@ -6,10 +6,10 @@ var winston = require('winston');
var questions = {
redis: require('../src/database/redis').questions,
mongo: require('../src/database/mongo').questions
mongo: require('../src/database/mongo').questions,
};
module.exports = function(config, callback) {
module.exports = function (config, callback) {
async.waterfall([
function (next) {
process.stdout.write('\n');
@@ -18,7 +18,7 @@ module.exports = function(config, callback) {
},
function (databaseConfig, next) {
saveDatabaseConfig(config, databaseConfig, next);
}
},
], callback);
};
@@ -55,7 +55,7 @@ function saveDatabaseConfig(config, databaseConfig, callback) {
host: databaseConfig['redis:host'],
port: databaseConfig['redis:port'],
password: databaseConfig['redis:password'],
database: databaseConfig['redis:database']
database: databaseConfig['redis:database'],
};
if (config.redis.host.slice(0, 1) === '/') {
@@ -67,16 +67,16 @@ function saveDatabaseConfig(config, databaseConfig, callback) {
port: databaseConfig['mongo:port'],
username: databaseConfig['mongo:username'],
password: databaseConfig['mongo:password'],
database: databaseConfig['mongo:database']
database: databaseConfig['mongo:database'],
};
} else {
return callback(new Error('unknown database : ' + config.database));
}
var allQuestions = questions.redis.concat(questions.mongo);
for (var x=0; x<allQuestions.length; x++) {
for (var x = 0; x < allQuestions.length; x += 1) {
delete config[allQuestions[x].name];
}
callback(null, config);
}
}

View File

@@ -1,36 +1,36 @@
"use strict";
'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 winston = require('winston');
var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var path = require('path');
var less = require('less');
var async = require('async');
var uglify = require('uglify-js');
var nconf = require('nconf');
var app = express();
var server;
winston.add(winston.transports.File, {
filename: 'logs/webinstall.log',
colorize: true,
timestamp: function() {
timestamp: function () {
var date = new Date();
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0,5) + ' [' + global.process.pid + ']';
return date.getDate() + '/' + (date.getMonth() + 1) + ' ' + date.toTimeString().substr(0, 5) + ' [' + global.process.pid + ']';
},
level: 'verbose'
level: 'verbose',
});
var web = {},
scripts = [
'public/vendor/xregexp/xregexp.js',
'public/vendor/xregexp/unicode/unicode-base.js',
'public/src/utils.js',
'public/src/installer/install.js'
];
var web = {};
var 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) {
web.install = function (port) {
port = port || 4567;
winston.info('Launching web installer on port', port);
@@ -39,10 +39,10 @@ web.install = function(port) {
app.set('view engine', 'tpl');
app.set('views', path.join(__dirname, '../src/views'));
app.use(bodyParser.urlencoded({
extended: true
extended: true,
}));
async.parallel([compileLess, compileJS], function() {
async.parallel([compileLess, compileJS], function () {
setupRoutes();
launchExpress(port);
});
@@ -50,7 +50,7 @@ web.install = function(port) {
function launchExpress(port) {
server = app.listen(port, function() {
server = app.listen(port, function () {
winston.info('Web installer listening on http://%s:%s', '0.0.0.0', port);
});
}
@@ -62,22 +62,23 @@ function setupRoutes() {
}
function welcome(req, res) {
var dbs = ['redis', 'mongo'],
databases = [];
dbs.forEach(function(el) {
databases.push({
var dbs = ['redis', 'mongo'];
var databases = dbs.map(function (el) {
return {
name: el,
questions: require('../src/database/' + el).questions
});
questions: require('../src/database/' + el).questions,
};
});
var defaults = require('./data/defaults');
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
error: !!res.locals.error,
success: !!res.locals.success,
values: req.body,
minimumPasswordLength: defaults.minimumPasswordLength,
});
}
@@ -89,10 +90,10 @@ function install(req, res) {
}
var child = require('child_process').fork('app', ['--setup'], {
env: process.env
env: process.env,
});
child.on('close', function(data) {
child.on('close', function (data) {
if (data === 0) {
res.locals.success = true;
} else {
@@ -104,13 +105,12 @@ function install(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']
stdio: ['ignore', 'ignore', 'ignore'],
});
process.stdout.write('\nStarting NodeBB\n');
@@ -118,41 +118,43 @@ function launch(req, res) {
process.stdout.write(' "./nodebb log" to view server output\n');
process.stdout.write(' "./nodebb restart" to restart NodeBB\n');
child.unref();
process.exit(0);
async.parallel([
async.apply(fs.unlink(path.join(__dirname, '../public/installer.css'))),
async.apply(fs.unlink(path.join(__dirname, '../public/installer.min.js'))),
], function (err) {
if (err) {
winston.warn('Unable to remove installer files');
}
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) {
if (err) {
return winston.error('Unable to read LESS install file: ', err);
}
fs.readFile(path.join(__dirname, '../public/less/install.less'), function(err, style) {
less.render(style.toString(), function(err, css) {
if(err) {
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);
fs.writeFile(path.join(__dirname, '../public/installer.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);
}));
var scriptPath = path.join(__dirname, '..');
var result = uglify.minify(scripts.map(function (script) {
return path.join(scriptPath, script);
}));
fs.writeFile(path.join(__dirname, '../public/nodebb.min.js'), result.code, callback);
fs.writeFile(path.join(__dirname, '../public/installer.min.js'), result.code, callback);
}
module.exports = web;
module.exports = web;

197
loader.js
View File

@@ -1,40 +1,34 @@
'use strict';
var nconf = require('nconf'),
fs = require('fs'),
url = require('url'),
path = require('path'),
fork = require('child_process').fork,
var nconf = require('nconf');
var fs = require('fs');
var url = require('url');
var path = require('path');
var fork = require('child_process').fork;
var async = require('async');
var logrotate = require('logrotate-stream');
async = require('async'),
logrotate = require('logrotate-stream'),
file = require('./src/file'),
pkg = require('./package.json');
var file = require('./src/file');
var pkg = require('./package.json');
nconf.argv().env().file({
file: path.join(__dirname, '/config.json')
file: path.join(__dirname, 'config.json'),
});
var pidFilePath = __dirname + '/pidfile',
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }),
silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false,
numProcs,
workers = [],
var pidFilePath = path.join(__dirname, 'pidfile');
var outputLogFilePath = path.join(__dirname, 'logs/output.log');
var output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
var silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false;
var numProcs;
var workers = [];
var Loader = {
timesStarted: 0,
};
var appPath = path.join(__dirname, 'app.js');
Loader = {
timesStarted: 0,
js: {
target: {}
},
css: {
cache: undefined,
acpCache: undefined
}
};
Loader.init = function(callback) {
Loader.init = function (callback) {
if (silent) {
console.log = function() {
console.log = function () {
var args = Array.prototype.slice.call(arguments);
output.write(args.join(' ') + '\n');
};
@@ -46,7 +40,7 @@ Loader.init = function(callback) {
callback();
};
Loader.displayStartupMessages = function(callback) {
Loader.displayStartupMessages = function (callback) {
console.log('');
console.log('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.');
console.log('This program comes with ABSOLUTELY NO WARRANTY.');
@@ -56,25 +50,24 @@ Loader.displayStartupMessages = function(callback) {
callback();
};
Loader.addWorkerEvents = function(worker) {
worker.on('exit', function(code, signal) {
Loader.addWorkerEvents = function (worker) {
worker.on('exit', function (code, signal) {
if (code !== 0) {
if (Loader.timesStarted < numProcs*3) {
Loader.timesStarted++;
if (Loader.timesStarted < numProcs * 3) {
Loader.timesStarted += 1;
if (Loader.crashTimer) {
clearTimeout(Loader.crashTimer);
}
Loader.crashTimer = setTimeout(function() {
Loader.crashTimer = setTimeout(function () {
Loader.timesStarted = 0;
}, 10000);
} else {
console.log(numProcs*3 + ' restarts in 10 seconds, most likely an error on startup. Halting.');
console.log((numProcs * 3) + ' restarts in 10 seconds, most likely an error on startup. Halting.');
process.exit();
}
}
console.log('[cluster] Child Process (' + worker.pid + ') has exited (code: ' + code + ', signal: ' + signal +')');
console.log('[cluster] Child Process (' + worker.pid + ') has exited (code: ' + code + ', signal: ' + signal + ')');
if (!(worker.suicide || code === 0)) {
console.log('[cluster] Spinning up another process...');
@@ -82,79 +75,27 @@ Loader.addWorkerEvents = function(worker) {
}
});
worker.on('message', function(message) {
worker.on('message', function (message) {
if (message && typeof message === 'object' && message.action) {
switch (message.action) {
case 'ready':
if (Loader.js.target['nodebb.min.js'] && Loader.js.target['nodebb.min.js'].cache && !worker.isPrimary) {
worker.send({
action: 'js-propagate',
cache: Loader.js.target['nodebb.min.js'].cache,
map: Loader.js.target['nodebb.min.js'].map,
target: 'nodebb.min.js'
});
}
if (Loader.js.target['acp.min.js'] && Loader.js.target['acp.min.js'].cache && !worker.isPrimary) {
worker.send({
action: 'js-propagate',
cache: Loader.js.target['acp.min.js'].cache,
map: Loader.js.target['acp.min.js'].map,
target: 'acp.min.js'
});
}
if (Loader.css.cache && !worker.isPrimary) {
worker.send({
action: 'css-propagate',
cache: Loader.css.cache,
acpCache: Loader.css.acpCache
});
}
case 'restart':
console.log('[cluster] Restarting...');
Loader.restart();
break;
case 'restart':
console.log('[cluster] Restarting...');
Loader.restart();
break;
case 'reload':
console.log('[cluster] Reloading...');
Loader.reload();
break;
case 'js-propagate':
Loader.js.target = message.data;
Loader.notifyWorkers({
action: 'js-propagate',
data: message.data
}, worker.pid);
break;
case 'css-propagate':
Loader.css.cache = message.cache;
Loader.css.acpCache = message.acpCache;
Loader.notifyWorkers({
action: 'css-propagate',
cache: message.cache,
acpCache: message.acpCache
}, worker.pid);
break;
case 'templates:compiled':
Loader.notifyWorkers({
action: 'templates:compiled',
}, worker.pid);
case 'reload':
console.log('[cluster] Reloading...');
Loader.reload();
break;
}
}
});
};
Loader.start = function(callback) {
Loader.start = function (callback) {
numProcs = getPorts().length;
console.log('Clustering enabled: Spinning up ' + numProcs + ' process(es).\n');
for (var x=0; x<numProcs; ++x) {
for (var x = 0; x < numProcs; x += 1) {
forkWorker(x, x === 0);
}
@@ -165,18 +106,19 @@ Loader.start = function(callback) {
function forkWorker(index, isPrimary) {
var ports = getPorts();
var args = [];
if(!ports[index]) {
if (!ports[index]) {
return console.log('[cluster] invalid port for worker : ' + index + ' ports: ' + ports.length);
}
process.env.isPrimary = isPrimary;
process.env.isCluster = true;
process.env.isCluster = ports.length > 1;
process.env.port = ports[index];
var worker = fork('app.js', [], {
var worker = fork(appPath, args, {
silent: silent,
env: process.env
env: process.env,
});
worker.index = index;
@@ -187,7 +129,7 @@ function forkWorker(index, isPrimary) {
Loader.addWorkerEvents(worker);
if (silent) {
var output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true });
var output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
worker.stdout.pipe(output);
worker.stderr.pipe(output);
}
@@ -207,37 +149,54 @@ function getPorts() {
return port;
}
Loader.restart = function() {
Loader.restart = function () {
killWorkers();
Loader.start();
var pathToConfig = path.join(__dirname, '/config.json');
nconf.remove('file');
nconf.use('file', { file: pathToConfig });
fs.readFile(pathToConfig, { encoding: 'utf-8' }, function (err, configFile) {
if (err) {
console.log('Error reading config : ' + err.message);
process.exit();
}
var conf = JSON.parse(configFile);
nconf.stores.env.readOnly = false;
nconf.set('url', conf.url);
nconf.stores.env.readOnly = true;
Loader.start();
});
};
Loader.reload = function() {
workers.forEach(function(worker) {
Loader.reload = function () {
workers.forEach(function (worker) {
worker.send({
action: 'reload'
action: 'reload',
});
});
};
Loader.stop = function() {
Loader.stop = function () {
killWorkers();
// Clean up the pidfile
fs.unlinkSync(__dirname + '/pidfile');
fs.unlinkSync(pidFilePath);
};
function killWorkers() {
workers.forEach(function(worker) {
workers.forEach(function (worker) {
worker.suicide = true;
worker.kill();
});
}
Loader.notifyWorkers = function(msg, worker_pid) {
Loader.notifyWorkers = function (msg, worker_pid) {
worker_pid = parseInt(worker_pid, 10);
workers.forEach(function(worker) {
workers.forEach(function (worker) {
if (parseInt(worker.pid, 10) !== worker_pid) {
try {
worker.send(msg);
@@ -248,7 +207,7 @@ Loader.notifyWorkers = function(msg, worker_pid) {
});
};
fs.open(path.join(__dirname, 'config.json'), 'r', function(err) {
fs.open(path.join(__dirname, 'config.json'), 'r', function (err) {
if (!err) {
if (nconf.get('daemon') !== 'false' && nconf.get('daemon') !== false) {
if (file.existsSync(pidFilePath)) {
@@ -263,23 +222,23 @@ fs.open(path.join(__dirname, 'config.json'), 'r', function(err) {
require('daemon')({
stdout: process.stdout,
stderr: process.stderr
stderr: process.stderr,
});
fs.writeFile(__dirname + '/pidfile', process.pid);
fs.writeFileSync(pidFilePath, process.pid);
}
async.series([
Loader.init,
Loader.displayStartupMessages,
Loader.start
], function(err) {
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('child_process').fork('app');
}
});

825
nodebb
View File

@@ -1,375 +1,504 @@
#!/usr/bin/env node
var colors = require('colors'),
cproc = require('child_process'),
argv = require('minimist')(process.argv.slice(2)),
fs = require('fs'),
path = require('path'),
request = require('request'),
semver = require('semver'),
prompt = require('prompt'),
'use strict';
var cproc;
var args;
var fs;
var path;
var request;
var semver;
var prompt;
var async;
try {
require('colors');
cproc = require('child_process');
args = require('minimist')(process.argv.slice(2));
fs = require('fs');
path = require('path');
request = require('request');
semver = require('semver');
prompt = require('prompt');
async = require('async');
} catch (e) {
if (e.code === 'MODULE_NOT_FOUND') {
process.stdout.write('NodeBB could not be started because it\'s dependencies have not been installed.\n');
process.stdout.write('Please ensure that you have executed "npm install --production" prior to running NodeBB.\n\n');
process.stdout.write('For more information, please see: https://docs.nodebb.org/en/latest/installing/os.html\n\n');
process.stdout.write('Could not start: ' + e.code + '\n');
var getRunningPid = function(callback) {
fs.readFile(__dirname + '/pidfile', {
encoding: 'utf-8'
}, function(err, pid) {
if (err) {
return callback(err);
}
process.exit(1);
}
}
try {
process.kill(parseInt(pid, 10), 0);
callback(null, parseInt(pid, 10));
} catch(e) {
callback(e);
}
});
},
getCurrentVersion = function(callback) {
fs.readFile(path.join(__dirname, 'package.json'), { encoding: 'utf-8' }, function(err, pkg) {
try {
pkg = JSON.parse(pkg);
return callback(null, pkg.version);
} catch(err) {
return callback(err);
}
})
},
fork = function (args) {
cproc.fork('app.js', args, {
cwd: __dirname,
silent: false
});
},
getInstalledPlugins = function(callback) {
async.parallel({
files: async.apply(fs.readdir, path.join(__dirname, 'node_modules')),
deps: async.apply(fs.readFile, path.join(__dirname, 'package.json'), { encoding: 'utf-8' })
}, function(err, payload) {
var isNbbModule = /^nodebb-(?:plugin|theme|widget|rewards)-[\w\-]+$/,
moduleName, isGitRepo;
var loaderPath = path.join(__dirname, 'loader.js');
var appPath = path.join(__dirname, 'app.js');
payload.files = payload.files.filter(function(file) {
return isNbbModule.test(file);
});
if (args.dev) {
process.env.NODE_ENV = 'development';
}
try {
payload.deps = JSON.parse(payload.deps).dependencies;
payload.bundled = [];
payload.installed = [];
} catch (err) {
return callback(err);
}
for (moduleName in payload.deps) {
if (isNbbModule.test(moduleName)) {
payload.bundled.push(moduleName);
}
}
// Whittle down deps to send back only extraneously installed plugins/themes/etc
payload.files.forEach(function(moduleName) {
try {
fs.accessSync(path.join(__dirname, 'node_modules/' + moduleName, '.git'));
isGitRepo = true;
} catch(e) {
isGitRepo = false;
}
if (
payload.files.indexOf(moduleName) !== -1 // found in `node_modules/`
&& payload.bundled.indexOf(moduleName) === -1 // not found in `package.json`
&& !fs.lstatSync(path.join(__dirname, 'node_modules/' + moduleName)).isSymbolicLink() // is not a symlink
&& !isGitRepo // .git/ does not exist, so it is not a git repository
) {
payload.installed.push(moduleName);
}
});
getModuleVersions(payload.installed, callback);
});
},
getModuleVersions = function(modules, callback) {
var versionHash = {};
async.eachLimit(modules, 50, function(module, next) {
fs.readFile(path.join(__dirname, 'node_modules/' + module + '/package.json'), { encoding: 'utf-8' }, function(err, pkg) {
try {
pkg = JSON.parse(pkg);
versionHash[module] = pkg.version;
next();
} catch (err) {
next(err);
}
});
}, function(err) {
callback(err, versionHash);
});
},
checkPlugins = function(standalone, callback) {
if (standalone) {
process.stdout.write('Checking installed plugins and themes for updates... ');
function getRunningPid(callback) {
fs.readFile(path.join(__dirname, 'pidfile'), {
encoding: 'utf-8',
}, function (err, pid) {
if (err) {
return callback(err);
}
async.waterfall([
async.apply(async.parallel, {
plugins: async.apply(getInstalledPlugins),
version: async.apply(getCurrentVersion)
}),
function(payload, next) {
if (!payload.plugins.length) {
process.stdout.write('OK'.green + '\n'.reset);
return next(null, []); // no extraneous plugins installed
try {
process.kill(parseInt(pid, 10), 0);
callback(null, parseInt(pid, 10));
} catch (e) {
callback(e);
}
});
}
function getCurrentVersion(callback) {
fs.readFile(path.join(__dirname, 'package.json'), { encoding: 'utf-8' }, function (err, pkg) {
if (err) {
return callback(err);
}
try {
pkg = JSON.parse(pkg);
return callback(null, pkg.version);
} catch (err) {
return callback(err);
}
});
}
function fork(args) {
return cproc.fork(appPath, args, {
cwd: __dirname,
silent: false,
});
}
function getInstalledPlugins(callback) {
async.parallel({
files: async.apply(fs.readdir, path.join(__dirname, 'node_modules')),
deps: async.apply(fs.readFile, path.join(__dirname, 'package.json'), { encoding: 'utf-8' }),
}, function (err, payload) {
if (err) {
return callback(err);
}
var isNbbModule = /^nodebb-(?:plugin|theme|widget|rewards)-[\w-]+$/;
var moduleName;
var isGitRepo;
payload.files = payload.files.filter(function (file) {
return isNbbModule.test(file);
});
try {
payload.deps = JSON.parse(payload.deps).dependencies;
payload.bundled = [];
payload.installed = [];
} catch (err) {
return callback(err);
}
for (moduleName in payload.deps) {
if (isNbbModule.test(moduleName)) {
payload.bundled.push(moduleName);
}
}
// Whittle down deps to send back only extraneously installed plugins/themes/etc
payload.files.forEach(function (moduleName) {
try {
fs.accessSync(path.join(__dirname, 'node_modules/' + moduleName, '.git'));
isGitRepo = true;
} catch (e) {
isGitRepo = false;
}
if (
payload.files.indexOf(moduleName) !== -1 && // found in `node_modules/`
payload.bundled.indexOf(moduleName) === -1 && // not found in `package.json`
!fs.lstatSync(path.join(__dirname, 'node_modules/' + moduleName)).isSymbolicLink() && // is not a symlink
!isGitRepo // .git/ does not exist, so it is not a git repository
) {
payload.installed.push(moduleName);
}
});
getModuleVersions(payload.installed, callback);
});
}
function getModuleVersions(modules, callback) {
var versionHash = {};
async.eachLimit(modules, 50, function (module, next) {
fs.readFile(path.join(__dirname, 'node_modules/' + module + '/package.json'), { encoding: 'utf-8' }, function (err, pkg) {
if (err) {
return next(err);
}
try {
pkg = JSON.parse(pkg);
versionHash[module] = pkg.version;
next();
} catch (err) {
next(err);
}
});
}, function (err) {
callback(err, versionHash);
});
}
function checkPlugins(standalone, callback) {
if (standalone) {
process.stdout.write('Checking installed plugins and themes for updates... ');
}
async.waterfall([
async.apply(async.parallel, {
plugins: async.apply(getInstalledPlugins),
version: async.apply(getCurrentVersion),
}),
function (payload, next) {
var toCheck = Object.keys(payload.plugins);
if (!toCheck.length) {
process.stdout.write('OK'.green + '\n'.reset);
return next(null, []); // no extraneous plugins installed
}
request({
method: 'GET',
url: 'https://packages.nodebb.org/api/v1/suggest?version=' + payload.version + '&package[]=' + toCheck.join('&package[]='),
json: true,
}, function (err, res, body) {
if (err) {
process.stdout.write('error'.red + '\n'.reset);
return next(err);
}
process.stdout.write('OK'.green + '\n'.reset);
if (!Array.isArray(body) && toCheck.length === 1) {
body = [body];
}
var toCheck = Object.keys(payload.plugins);
request({
method: 'GET',
url: 'https://packages.nodebb.org/api/v1/suggest?version=' + payload.version + '&package[]=' + toCheck.join('&package[]='),
json: true
}, function(err, res, body) {
if (err) {
process.stdout.write('error'.red + '\n'.reset);
return next(err);
var current;
var suggested;
var upgradable = body.map(function (suggestObj) {
current = payload.plugins[suggestObj.package];
suggested = suggestObj.version;
if (suggestObj.code === 'match-found' && semver.gt(suggested, current)) {
return {
name: suggestObj.package,
current: current,
suggested: suggested,
};
}
process.stdout.write('OK'.green + '\n'.reset);
return null;
}).filter(Boolean);
if (!Array.isArray(body) && toCheck.length === 1) {
body = [body];
}
next(null, upgradable);
});
},
], callback);
}
function upgradePlugins(callback) {
var standalone = false;
if (typeof callback !== 'function') {
callback = function () {};
standalone = true;
}
var current, suggested,
upgradable = body.map(function(suggestObj) {
current = payload.plugins[suggestObj.package];
suggested = suggestObj.version;
checkPlugins(standalone, function (err, found) {
if (err) {
process.stdout.write('Warning'.yellow + ': An unexpected error occured when attempting to verify plugin upgradability\n'.reset);
return callback(err);
}
if (suggestObj.code === 'match-found' && semver.gt(suggested, current)) {
return {
name: suggestObj.package,
current: current,
suggested: suggested
}
} else {
return null;
}
}).filter(Boolean);
next(null, upgradable);
})
if (found && found.length) {
process.stdout.write('\nA total of ' + String(found.length).bold + ' package(s) can be upgraded:\n');
found.forEach(function (suggestObj) {
process.stdout.write(' * '.yellow + suggestObj.name.reset + ' (' + suggestObj.current.yellow + ' -> '.reset + suggestObj.suggested.green + ')\n'.reset);
});
process.stdout.write('\n');
} else {
if (standalone) {
process.stdout.write('\nAll packages up-to-date!'.green + '\n'.reset);
}
], callback);
},
upgradePlugins = function(callback) {
var standalone = false;
if (typeof callback !== 'function') {
callback = function() {};
standalone = true;
};
return callback();
}
checkPlugins(standalone, function(err, found) {
prompt.message = '';
prompt.delimiter = '';
prompt.start();
prompt.get({
name: 'upgrade',
description: 'Proceed with upgrade (y|n)?'.reset,
type: 'string',
}, function (err, result) {
if (err) {
process.stdout.write('\Warning'.yellow + ': An unexpected error occured when attempting to verify plugin upgradability\n'.reset);
return callback(err);
}
if (found && found.length) {
process.stdout.write('\nA total of ' + new String(found.length).bold + ' package(s) can be upgraded:\n');
found.forEach(function(suggestObj) {
process.stdout.write(' * '.yellow + suggestObj.name.reset + ' (' + suggestObj.current.yellow + ' -> '.reset + suggestObj.suggested.green + ')\n'.reset);
});
process.stdout.write('\n');
} else {
if (standalone) {
process.stdout.write('\nAll packages up-to-date!'.green + '\n'.reset);
}
return callback();
}
prompt.message = '';
prompt.delimiter = '';
prompt.start();
prompt.get({
name: 'upgrade',
description: 'Proceed with upgrade (y|n)?'.reset,
type: 'string'
}, function(err, result) {
if (result.upgrade === 'y' || result.upgrade === 'yes') {
process.stdout.write('\nUpgrading packages...');
var args = ['npm', 'i'];
found.forEach(function(suggestObj) {
args.push(suggestObj.name + '@' + suggestObj.suggested);
});
require('child_process').execFile('/usr/bin/env', args, { stdio: 'ignore' }, function(err) {
if (!err) {
process.stdout.write(' OK\n'.green);
}
callback(err);
});
} else {
process.stdout.write('\nPackage upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade-plugins'.green + '".\n'.reset);
callback();
}
})
});
};
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');
process.stdout.write('\nRestarting NodeBB\n'.bold);
} else {
process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.\n');
}
});
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.\n');
}
});
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');
fork(args);
break;
case 'activate':
var args = process.argv.slice(0);
args.unshift('--activate');
fork(args);
break;
case 'plugins':
var args = process.argv.slice(0);
args.unshift('--plugins');
fork(args);
break;
case 'upgrade-plugins':
upgradePlugins();
break;
case 'upgrade':
async.series([
function(next) {
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date... '.yellow);
require('child_process').execFile('/usr/bin/env', ['npm', 'i', '--production'], { stdio: 'ignore' }, next);
},
function(next) {
process.stdout.write('OK\n'.green);
process.stdout.write('2. '.bold + 'Checking installed plugins for updates... '.yellow);
upgradePlugins(next);
},
function(next) {
process.stdout.write('3. '.bold + 'Updating NodeBB data store schema...\n'.yellow);
var upgradeProc = cproc.fork('app.js', ['--upgrade'], {
cwd: __dirname,
silent: false
if (['y', 'Y', 'yes', 'YES'].indexOf(result.upgrade) !== -1) {
process.stdout.write('\nUpgrading packages...');
var args = ['i'];
found.forEach(function (suggestObj) {
args.push(suggestObj.name + '@' + suggestObj.suggested);
});
upgradeProc.on('close', next)
}
], function(err) {
if (err) {
process.stdout.write('\nError'.red + ': ' + err.message + '\n');
} else {
var message = 'NodeBB Upgrade Complete!';
// some consoles will return undefined/zero columns, so just use 2 spaces in upgrade script if we can't get our column count
var columns = process.stdout.columns;
var spaces = columns ? new Array(Math.floor(columns / 2) - (message.length / 2) + 1).join(' ') : " ";
cproc.execFile((process.platform === 'win32') ? 'npm.cmd' : 'npm', args, { stdio: 'ignore' }, function (err) {
if (!err) {
process.stdout.write(' OK\n'.green);
}
process.stdout.write('OK\n'.green);
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
callback(err);
});
} else {
process.stdout.write('\nPackage upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade-plugins'.green + '".\n'.reset);
callback();
}
});
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' + 'activate'.yellow + '\tActivate a plugin on start up.\n');
process.stdout.write('\t' + 'plugins'.yellow + '\tList all plugins that have been installed.\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('\n'.reset);
break;
});
}
var commands = {
status: {
description: 'View the status of the NodeBB server',
usage: 'Usage: ' + './nodebb status'.yellow,
handler: function () {
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);
}
});
},
},
start: {
description: 'Start the NodeBB server',
usage: 'Usage: ' + './nodebb start'.yellow,
handler: function () {
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(loaderPath, {
env: process.env,
});
},
},
stop: {
description: 'Stop the NodeBB server',
usage: 'Usage: ' + './nodebb stop'.yellow,
handler: function () {
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');
}
});
},
},
restart: {
description: 'Restart the NodeBB server',
usage: 'Usage: ' + './nodebb restart'.yellow,
handler: function () {
getRunningPid(function (err, pid) {
if (!err) {
process.kill(pid, 'SIGHUP');
process.stdout.write('\nRestarting NodeBB\n'.bold);
} else {
process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.\n');
}
});
},
},
log: {
description: 'Open the output log (useful for debugging)',
usage: 'Usage: ' + './nodebb log'.yellow,
handler: function () {
process.stdout.write('\nHit '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit',
});
},
},
slog: {
description: 'Start the NodeBB server and view the live output log',
usage: 'Usage: ' + './nodebb slog'.yellow,
handler: function () {
process.stdout.write('\nStarting NodeBB with logging output\n'.bold);
process.stdout.write('\nHit '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
// Spawn a new NodeBB process
cproc.fork(loaderPath, {
env: process.env,
});
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit',
});
},
},
dev: {
description: 'Start NodeBB in verbose development mode',
usage: 'Usage: ' + './nodebb dev'.yellow,
handler: function () {
process.env.NODE_ENV = 'development';
cproc.fork(loaderPath, ['--no-daemon', '--no-silent'], {
env: process.env,
});
},
},
build: {
description: 'Compile static assets (CSS, Javascript, etc)',
usage: 'Usage: ' + './nodebb build'.yellow + ' [js,clientCSS,acpCSS,tpl,lang]'.red + '\n' +
' e.g. ' + './nodebb build js,tpl'.yellow + '\tbuilds JS and templates\n' +
' ' + './nodebb build'.yellow + '\t\tbuilds all targets\n',
handler: function () {
var arr = ['--build'].concat(process.argv.slice(3));
fork(arr);
},
},
setup: {
description: 'Run the NodeBB setup script',
usage: 'Usage: ' + './nodebb setup'.yellow,
handler: function () {
var arr = ['--setup'].concat(process.argv.slice(3));
fork(arr);
},
},
reset: {
description: 'Disable plugins and restore the default theme',
usage: 'Usage: ' + './nodebb reset '.yellow + '{-t|-p|-w|-s|-a}'.red + '\n' +
' -t <theme>\tuse specified theme\n' +
' -p <plugin>\tdisable specified plugin\n' +
'\n' +
' -t\t\tuse default theme\n' +
' -p\t\tdisable all but core plugins\n' +
' -w\t\twidgets\n' +
' -s\t\tsettings\n' +
' -a\t\tall of the above\n',
handler: function () {
var arr = ['--reset'].concat(process.argv.slice(3));
fork(arr);
},
},
activate: {
description: 'Activate a plugin for the next startup of NodeBB',
usage: 'Usage: ' + './nodebb activate <plugin>'.yellow,
handler: function () {
var name = args._[1];
if (!name) {
process.stdout.write(commands.activate.usage + '\n');
process.exit();
}
if (name.startsWith('nodebb-theme')) {
fork(['--reset', '-t', name]);
return;
}
var arr = ['--activate=' + name].concat(process.argv.slice(4));
fork(arr);
},
},
plugins: {
description: 'List all installed plugins',
usage: 'Usage: ' + './nodebb plugins'.yellow,
handler: function () {
var arr = ['--plugins'].concat(process.argv.slice(3));
fork(arr);
},
},
upgrade: {
description: 'Run NodeBB upgrade scripts, ensure packages are up-to-date',
usage: 'Usage: ' + './nodebb upgrade'.yellow,
handler: function () {
async.series([
function (next) {
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date... '.yellow);
cproc.exec('npm i --production', { cwd: __dirname, stdio: 'ignore' }, next);
},
function (next) {
process.stdout.write('OK\n'.green);
process.stdout.write('2. '.bold + 'Checking installed plugins for updates... '.yellow);
upgradePlugins(next);
},
function (next) {
process.stdout.write('3. '.bold + 'Updating NodeBB data store schema...\n'.yellow);
var arr = ['--upgrade'].concat(process.argv.slice(3));
var upgradeProc = fork(arr);
upgradeProc.on('close', next);
},
], function (err) {
if (err) {
process.stdout.write('\nError'.red + ': ' + err.message + '\n');
} else {
var message = 'NodeBB Upgrade Complete!';
// some consoles will return undefined/zero columns, so just use 2 spaces in upgrade script if we can't get our column count
var columns = process.stdout.columns;
var spaces = columns ? new Array(Math.floor(columns / 2) - (message.length / 2) + 1).join(' ') : ' ';
process.stdout.write('OK\n'.green);
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
}
});
},
},
upgradePlugins: {
hidden: true,
description: '',
handler: function () {
upgradePlugins();
},
},
help: {
description: 'Display the help message for a given command',
usage: 'Usage: ' + './nodebb help <command>'.yellow,
handler: function () {
var command = commands[args._[1]];
if (command) {
process.stdout.write(command.description + '\n'.reset);
process.stdout.write(command.usage + '\n'.reset);
return;
}
var keys = Object.keys(commands).filter(function (key) {
return !commands[key].hidden;
});
process.stdout.write('\nWelcome to NodeBB\n\n'.bold);
process.stdout.write('Usage: ./nodebb {' + keys.join('|') + '}\n\n');
var usage = keys.map(function (key) {
var line = '\t' + key.yellow + (key.length < 8 ? '\t\t' : '\t');
return line + commands[key].description;
}).join('\n');
process.stdout.write(usage + '\n'.reset);
},
},
};
commands['upgrade-plugins'] = commands.upgradePlugins;
if (!commands[args._[0]]) {
commands.help.handler();
} else {
commands[args._[0]].handler();
}

View File

@@ -1,122 +1 @@
@echo off
rem %1 action
rem %2 subaction
setlocal enabledelayedexpansion
2>nul call :CASE_%1
if ERRORLEVEL 1 call :DEFAULT_CASE
exit /B
:CASE_start
echo Starting NodeBB
echo "nodebb.bat stop" to stop the NodeBB server
echo "nodebb.bat log" to view server output
rem Start the loader daemon
node loader %*
goto END_CASE
:CASE_stop
call :pidexists
if %_result%==0 (
echo NodeBB is already stopped.
) else (
echo Stopping NodeBB. Goodbye!
rem Doing this forcefully is probably not the best method
taskkill /PID !_pid! /f>nul
)
goto END_CASE
:CASE_restart
echo Unsupported
goto END_CASE
:CASE_reload
echo Unsupported
goto END_CASE
:CASE_status
call :pidexists
if %_result%==0 (
echo NodeBB is not running
echo "nodebb.bat start" to launch the NodeBB server
) else (
echo NodeBB Running ^(pid !_pid!^)
echo "nodebb.bat stop" to stop the NodeBB server
echo "nodebb.bat log" to view server output
echo "nodebb.bat restart" to restart NodeBB
)
goto END_CASE
:CASE_log
cls
type .\logs\output.log
goto END_CASE
:CASE_upgrade
call npm install
call npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials
node app --upgrade
copy /b package.json +,,>nul
goto END_CASE
:CASE_setup
node app --setup %*
goto END_CASE
:CASE_reset
node app --reset --%2
goto END_CASE
:CASE_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
set NODE_ENV=development
node loader --no-daemon %*
goto END_CASE
:CASE_watch
echo Not supported
goto END_CASE
:DEFAULT_CASE
echo Welcome to NodeBB
echo Usage: nodebb.bat ^{start^|stop^|reload^|restart^|log^|setup^|reset^|upgrade^|dev^|watch^}
goto END_CASE
:END_CASE
endlocal
VER > NUL
goto :EOF
:pidexists
if exist %~dp0pidfile (
set /p _pid=<pidfile
for /f "usebackq" %%Z in (`tasklist /nh /fi "PID eq !_pid!"`) do (
if %%Z==INFO: (
del pidfile
set _result=0
) else (
set _result=1
)
)
) else (
set _result=0
)
node ./nodebb %*

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "1.0.3-auto.2",
"version": "1.4.6",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -11,89 +11,113 @@
"main": "app.js",
"scripts": {
"start": "node loader.js",
"test": "mocha ./tests -t 10000"
"lint": "eslint --cache ./nodebb .",
"pretest": "npm run lint",
"test": "istanbul cover node_modules/mocha/bin/_mocha -- -R dot",
"coveralls": "istanbul cover _mocha --report lcovonly -- -R dot && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"
},
"dependencies": {
"ace-builds": "^1.2.6",
"async": "~1.5.0",
"autoprefixer": "^6.2.3",
"bcryptjs": "~2.3.0",
"body-parser": "^1.9.0",
"bootstrap": "^3.3.7",
"chart.js": "^2.4.0",
"colors": "^1.1.0",
"compression": "^1.1.0",
"connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1",
"connect-mongo": "~1.1.0",
"connect-mongo": "1.3.2",
"connect-multiparty": "^2.0.0",
"connect-redis": "~3.0.2",
"connect-redis": "~3.1.0",
"cookie-parser": "^1.3.3",
"cron": "^1.0.5",
"cropperjs": "^0.8.1",
"csurf": "^1.6.1",
"daemon": "~1.1.0",
"express": "^4.9.5",
"express": "^4.14.0",
"express-session": "^1.8.2",
"express-useragent": "0.2.4",
"html-to-text": "2.0.0",
"ip": "1.1.2",
"jimp": "0.2.21",
"express-useragent": "1.0.7",
"html-to-text": "2.1.3",
"ip": "1.1.3",
"jimp": "0.2.27",
"jquery": "^3.1.0",
"json-2-csv": "^2.0.22",
"less": "^2.0.0",
"logrotate-stream": "^0.2.3",
"lru-cache": "4.0.0",
"lru-cache": "4.0.1",
"mime": "^1.3.4",
"minimist": "^1.1.1",
"mkdirp": "~0.5.0",
"mongodb": "~2.1.3",
"mongodb": "2.2.25",
"morgan": "^1.3.2",
"mousetrap": "^1.5.3",
"nconf": "~0.8.2",
"nodebb-plugin-composer-default": "3.0.18",
"nodebb-plugin-dbsearch": "1.0.1",
"nodebb-plugin-emoji-extended": "1.0.3",
"nodebb-plugin-markdown": "5.0.1",
"nodebb-plugin-mentions": "1.0.21",
"nodebb-plugin-soundpack-default": "0.1.6",
"nodebb-plugin-spam-be-gone": "0.4.6",
"nodebb-rewards-essentials": "0.0.8",
"nodebb-theme-lavender": "3.0.9",
"nodebb-theme-persona": "4.0.115",
"nodebb-theme-vanilla": "5.0.61",
"nodebb-widget-essentials": "2.0.9",
"nodemailer": "2.0.0",
"nodebb-plugin-composer-default": "4.4.6",
"nodebb-plugin-dbsearch": "1.0.5",
"nodebb-plugin-emoji-extended": "1.1.1",
"nodebb-plugin-emoji-one": "1.1.5",
"nodebb-plugin-markdown": "7.1.1",
"nodebb-plugin-mentions": "1.1.3",
"nodebb-plugin-soundpack-default": "1.0.0",
"nodebb-plugin-spam-be-gone": "0.4.13",
"nodebb-rewards-essentials": "0.0.9",
"nodebb-theme-lavender": "4.0.0",
"nodebb-theme-persona": "4.2.10",
"nodebb-theme-vanilla": "5.2.1",
"nodebb-widget-essentials": "2.0.13",
"nodemailer": "2.6.4",
"nodemailer-sendmail-transport": "1.0.0",
"nodemailer-smtp-transport": "^2.4.1",
"passport": "^0.3.0",
"passport-local": "1.0.0",
"postcss": "^5.0.13",
"postcss-clean": "^1.0.0",
"promise-polyfill": "^6.0.2",
"prompt": "^1.0.0",
"redis": "~2.4.2",
"redis": "~2.6.2",
"request": "^2.44.0",
"rimraf": "~2.5.0",
"rss": "^1.0.0",
"semver": "^5.0.1",
"sanitize-html": "^1.13.0",
"semver": "^5.1.0",
"serve-favicon": "^2.1.5",
"sitemap": "^1.4.0",
"socket.io": "^1.4.0",
"socket.io-client": "^1.4.0",
"socket.io-redis": "^1.0.0",
"socket.io": "1.7.2",
"socket.io-client": "1.7.2",
"socket.io-redis": "3.1.0",
"socketio-wildcard": "~0.3.0",
"string": "^3.0.0",
"templates.js": "0.3.4",
"toobusy-js": "^0.4.2",
"templates.js": "0.3.10",
"toobusy-js": "^0.5.1",
"uglify-js": "^2.6.0",
"underscore": "^1.8.3",
"underscore.deep": "^0.5.1",
"validator": "^5.0.0",
"validator": "^6.1.0",
"winston": "^2.1.0",
"xregexp": "~3.1.0"
"xml": "^1.0.1",
"xregexp": "~3.1.0",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"mocha": "~1.13.0",
"grunt": "~0.4.5",
"grunt-contrib-watch": "^1.0.0"
"coveralls": "^2.11.14",
"eslint": "^3.12.0",
"eslint-config-airbnb-base": "^11.1.0",
"eslint-plugin-import": "^2.2.0",
"grunt": "~1.0.0",
"grunt-contrib-watch": "^1.0.0",
"istanbul": "^0.4.2",
"mocha": "~3.2.0",
"mocha-lcov-reporter": "^1.2.0",
"xmlhttprequest": "1.8.0",
"xmlhttprequest-ssl": "1.5.3"
},
"bugs": {
"url": "https://github.com/NodeBB/NodeBB/issues"
},
"engines": {
"node": ">=0.10"
"node": ">=4"
},
"maintainers": [
{

58
public/.eslintrc Normal file
View File

@@ -0,0 +1,58 @@
{
"globals": {
"app": true,
"io": true,
"socket": true,
"ajaxify": true,
"config": true,
"RELATIVE_PATH": true,
"utils": true,
"overrides": true,
"componentHandler": true,
"bootbox": true,
"templates": true,
"Visibility": true,
"Tinycon": true,
"Promise": true
},
"env": {
"jquery": true,
"amd": true,
"browser": true,
"es6": false
},
"rules": {
"no-dupe-class-members": "off",
"no-var": "off",
"object-shorthand": "off",
"prefer-arrow-callback": "off",
"prefer-spread": "off",
"prefer-reflect": "off",
"prefer-template": "off"
},
"parserOptions": {
"ecmaVersion": 5,
"ecmaFeatures": {
"arrowFunctions": false,
"classes": false,
"defaultParams": false,
"destructuring": false,
"experimentalObjectRestSpread": false,
"blockBindings": false,
"forOf": false,
"generators": false,
"globalReturn": false,
"jsx": false,
"modules": false,
"objectLiteralComputedProperties": false,
"objectLiteralDuplicateProperties": false,
"objectLiteralShorthandMethods": false,
"objectLiteralShorthandProperties": false,
"impliedStrict": false,
"restParams": false,
"spread": false,
"superInFunctions": false,
"templateStrings": false
}
}
}

84
public/.jshintrc Normal file
View File

@@ -0,0 +1,84 @@
{
"maxerr" : 50, // {int} Maximum error before stopping
// Enforcing
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
"camelcase" : false, // true: Identifiers must be in camelCase
"curly" : true, // true: Require {} for every new block or scope
"eqeqeq" : true, // true: Require triple equals (===) for comparison
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
"immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
"indent" : 4, // {int} Number of spaces to use for indentation
"latedef" : false, // true: Require variables/functions to be defined before being used
"newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()`
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
"noempty" : true, // true: Prohibit use of empty blocks
"nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment)
"plusplus" : false, // true: Prohibit use of `++` & `--`
"quotmark" : false, // Quotation mark consistency:
// false : do nothing (default)
// true : ensure whatever is used is consistent
// "single" : require single quotes
// "double" : require double quotes
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
"unused" : true, // true: Require all defined variables be used
"strict" : true, // true: Requires all functions run in ES5 Strict Mode
"trailing" : false, // true: Prohibit trailing whitespaces
"maxparams" : false, // {int} Max number of formal params allowed per function
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
"maxstatements" : false, // {int} Max number statements per function
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
"maxlen" : false, // {int} Max number of characters per line
// Relaxing
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
"boss" : false, // true: Tolerate assignments where comparisons would be expected
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
"eqnull" : false, // true: Tolerate use of `== null`
"es5" : false, // true: Allow ES5 syntax (ex: getters and setters)
"esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
// (ex: `for each`, multiple try/catch, function expression…)
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
"funcscope" : false, // true: Tolerate defining variables inside control statements"
"globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
"iterator" : false, // true: Tolerate using the `__iterator__` property
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
"laxcomma" : false, // true: Tolerate comma-first style coding
"loopfunc" : false, // true: Tolerate functions being defined in loops
"multistr" : false, // true: Tolerate multi-line strings
"proto" : false, // true: Tolerate using the `__proto__` property
"scripturl" : false, // true: Tolerate script-targeted URLs
"smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
"validthis" : false, // true: Tolerate using this in a non-constructor function
"globals": {
"app": true,
"io": true,
"socket": true,
"ajaxify": true,
"config": true,
"RELATIVE_PATH": true,
"utils": true,
"overrides": true,
"componentHandler": true,
"bootbox": true,
"templates": true,
"Visibility": true,
"Tinycon": true,
"require": true,
"define": true,
"ace": true,
"Sortable": true,
"Slideout": true,
"NProgress": true
},
"jquery": true,
"browser": true
}

View File

@@ -1,7 +1,8 @@
<html>
<head>
<title>Excessive Load Warning</title>
<link href='http://fonts.googleapis.com/css?family=Ubuntu:400,500,700' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Ubuntu:400,500,700' rel='stylesheet' type='text/css'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
body {
background: #00A9EA;
@@ -32,6 +33,20 @@
font-size: 28px;
}
@media (max-width: 640px) {
h1 {
font-size: 125px;
}
p {
font-size: 16px;
}
p strong {
font-size: 20px;
}
}
.center {
position: relative;
top: 50%;
@@ -148,11 +163,13 @@
<div class="center">
<h1 id="click-me" class="animated bounce">503</h1>
<p>
<strong>This forum is temporarily unavailable due to excessive load.</strong> <br />
<strong>This forum is temporarily unavailable due to excessive load.</strong>
</p>
<p>
We shouldn't be down for long. Please check back shortly. Sorry for the inconvenience!
</p>
<p id="hide" class="hide">
<small>Alright. You can stop clicking... it's not going to make the site come back sooner!</small>
<p>
&nbsp;<small id="hide" class="hide">Alright. You can stop clicking... it's not going to make the site come back sooner!</small>
</p>
</div>
</div>

View File

@@ -2,6 +2,6 @@
The following stylesheet is only included on pages that can execute javascript
*/
[component="post/content"] img:not(.not-responsive):not([data-state]) {
.page-topic [component="post/content"] img:not(.not-responsive):not([data-state]) {
display: none !important;
}

View File

@@ -0,0 +1,7 @@
{
"alert.confirm-reload": "Are you sure you wish to reload NodeBB?",
"alert.confirm-restart": "Are you sure you wish to restart NodeBB?",
"acp-title": "%1 | NodeBB Admin Control Panel",
"settings-header-contents": "Contents"
}

View File

@@ -0,0 +1,11 @@
{
"post-cache": "Post Cache",
"posts-in-cache": "Posts in Cache",
"average-post-size": "Average Post Size",
"length-to-max": "Length / Max",
"percent-full": "%1% Full",
"post-cache-size": "Post Cache Size",
"items-in-cache": "Items in Cache",
"control-panel": "Control Panel",
"update-settings": "Update Cache Settings"
}

View File

@@ -0,0 +1,35 @@
{
"x-b": "%1 b",
"x-mb": "%1 mb",
"uptime-seconds": "Uptime in Seconds",
"uptime-days": "Uptime in Days",
"mongo": "Mongo",
"mongo.version": "MongoDB Version",
"mongo.storage-engine": "Storage Engine",
"mongo.collections": "Collections",
"mongo.objects": "Objects",
"mongo.avg-object-size": "Avg. Object Size",
"mongo.data-size": "Data Size",
"mongo.storage-size": "Storage Size",
"mongo.index-size": "Index Size",
"mongo.file-size": "File Size",
"mongo.resident-memory": "Resident Memory",
"mongo.virtual-memory": "Virtual Memory",
"mongo.mapped-memory": "Mapped Memory",
"mongo.raw-info": "MongoDB Raw Info",
"redis": "Redis",
"redis.version": "Redis Version",
"redis.connected-clients": "Connected Clients",
"redis.connected-slaves": "Connected Slaves",
"redis.blocked-clients": "Blocked Clients",
"redis.used-memory": "Used Memory",
"redis.memory-frag-ratio": "Memory Fragmentation Ratio",
"redis.total-connections-recieved": "Total Connections Received",
"redis.total-commands-processed": "Total Commands Processed",
"redis.iops": "Instantaneous Ops. Per Second",
"redis.keyspace-hits": "Keyspace Hits",
"redis.keyspace-misses": "Keyspace Misses",
"redis.raw-info": "Redis Raw Info"
}

View File

@@ -0,0 +1,14 @@
{
"figure-x": "Figure %1",
"error-events-per-day": "<code>%1</code> events per day",
"error.404": "404 Not Found",
"error.503": "503 Service Unavailable",
"manage-error-log": "Manage Error Log",
"export-error-log": "Export Error Log (CSV)",
"clear-error-log": "Clear Error Log",
"route": "Route",
"count": "Count",
"no-routes-not-found": "Hooray! No 404 errors!",
"clear404-confirm": "Are you sure you wish to clear the 404 error logs?",
"clear404-success": "\"404 Not Found\" errors cleared"
}

View File

@@ -0,0 +1,6 @@
{
"events": "Events",
"no-events": "There are no events",
"control-panel": "Events Control Panel",
"delete-events": "Delete Events"
}

View File

@@ -0,0 +1,7 @@
{
"logs": "Logs",
"control-panel": "Logs Control Panel",
"reload": "Reload Logs",
"clear": "Clear Logs",
"clear-success": "Logs Cleared!"
}

View File

@@ -0,0 +1,9 @@
{
"custom-css": "Custom CSS",
"custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.",
"custom-css.enable": "Enable Custom CSS",
"custom-header": "Custom Header",
"custom-header.description": "Enter custom HTML here (ex. JavaScript, Meta Tags, etc.), which will be appended to the <code>&lt;head&gt;</code> section of your forum's markup.",
"custom-header.enable": "Enable Custom Header"
}

View File

@@ -0,0 +1,9 @@
{
"loading": "Loading Skins...",
"homepage": "Homepage",
"select-skin": "Select Skin",
"current-skin": "Current Skin",
"skin-updated": "Skin Updated",
"applied-success": "%1 skin was succesfully applied",
"revert-success": "Skin reverted to base colours"
}

View File

@@ -0,0 +1,11 @@
{
"checking-for-installed": "Checking for installed themes...",
"homepage": "Homepage",
"select-theme": "Select Theme",
"current-theme": "Current Theme",
"no-themes": "No installed themes found",
"revert-confirm": "Are you sure you wish to restore the default NodeBB theme?",
"theme-changed": "Theme Changed",
"revert-success": "You have successfully reverted your NodeBB back to it's default theme.",
"restart-to-activate": "Please restart your NodeBB to fully activate this theme"
}

View File

@@ -0,0 +1,16 @@
{
"you-are-on": "Info - You are on <strong>%1:%2</strong>",
"host": "host",
"pid": "pid",
"nodejs": "nodejs",
"online": "online",
"git": "git",
"load": "load",
"uptime": "uptime",
"registered": "Registered",
"sockets": "Sockets",
"guests": "Guests",
"info": "Info"
}

View File

@@ -0,0 +1,12 @@
{
"logger-settings": "Logger Settings",
"description": "By enabling the check boxes, you will receive logs to your terminal. If you specify a path, logs will then be saved to a file instead. HTTP logging is useful for collecting statistics about who, when, and what people access on your forum. In addition to logging HTTP requests, we can also log socket.io events. Socket.io logging, in combination with redis-cli monitor, can be very helpful for learning NodeBB's internals.",
"explanation": "Simply check/uncheck the logging settings to enable or disable logging on the fly. No restart needed.",
"enable-http": "Enable HTTP logging",
"enable-socket": "Enable socket.io event logging",
"file-path": "Path to log file",
"file-path-placeholder": "/path/to/log/file.log ::: leave blank to log to your terminal",
"control-panel": "Logger Control Panel",
"update-settings": "Update Logger Settings"
}

View File

@@ -0,0 +1,47 @@
{
"installed": "Installed",
"active": "Active",
"inactive": "Inactive",
"out-of-date": "Out of Date",
"none-found": "No plugins found.",
"none-active": "No Active Plugins",
"find-plugins": "Find Plugins",
"plugin-search": "Plugin Search",
"plugin-search-placeholder": "Search for plugin...",
"reorder-plugins": "Re-order Plugins",
"order-active": "Order Active Plugins",
"dev-interested": "Interested in writing plugins for NodeBB?",
"docs-info": "Full documentation regarding plugin authoring can be found in the <a target=\"_blank\" href=\"https://docs.nodebb.org/en/latest/plugins/create.html\">NodeBB Docs Portal</a>.",
"order.description": "Certain plugins work ideally when they are initialised before/after other plugins.",
"order.explanation": "Plugins load in the order specified here, from top to bottom",
"plugin-item.themes": "Themes",
"plugin-item.deactivate": "Deactivate",
"plugin-item.activate": "Activate",
"plugin-item.install": "Install",
"plugin-item.uninstall": "Uninstall",
"plugin-item.settings": "Settings",
"plugin-item.installed": "Installed",
"plugin-item.latest": "Latest",
"plugin-item.upgrade": "Upgrade",
"plugin-item.more-info": "For more information:",
"plugin-item.unknown": "Unknown",
"plugin-item.unknown-explanation": "The state of this plugin could not be determined, possibly due to a misconfiguration error.",
"alert.enabled": "Plugin Enabled",
"alert.disabled": "Plugin Disabled",
"alert.upgraded": "Plugin Upgraded",
"alert.installed": "Plugin Installed",
"alert.uninstalled": "Plugin Uninstalled",
"alert.activate-success": "Please restart your NodeBB to fully activate this plugin",
"alert.deactivate-success": "Plugin successfully deactivated",
"alert.upgrade-success": "Please reload your NodeBB to fully upgrade this plugin",
"alert.install-success": "Plugin successfully installed, please activate the plugin.",
"alert.uninstall-success": "The plugin has been successfully deactivated and uninstalled.",
"alert.suggest-error": "<p>NodeBB could not reach the package manager, proceed with installation of latest version?</p><div class=\"alert alert-danger\"><strong>Server returned (%1)</strong>: %2</div>",
"alert.package-manager-unreachable": "<p>NodeBB could not reach the package manager, an upgrade is not suggested at this time.</p>",
"alert.incompatible": "<p>Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.</p>",
"alert.possibly-incompatible": "<div class=\"alert alert-warning\"><p><strong>No Compatibility Information Found</strong></p><p>This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.</p></div><p>In the event that NodeBB cannot boot properly:</p><pre><code>$ ./nodebb reset plugin=\"%1\"</code></pre><p>Continue installation of latest version of this plugin?</p>"
}

View File

@@ -0,0 +1,17 @@
{
"rewards": "Rewards",
"condition-if-users": "If User's",
"condition-is": "Is:",
"condition-then": "Then:",
"max-claims": "Amount of times reward is claimable",
"zero-infinite": "Enter 0 for infinite",
"delete": "Delete",
"enable": "Enable",
"disable": "Disable",
"control-panel": "Rewards Control",
"new-reward": "New Reward",
"alert.delete-success": "Successfully deleted reward",
"alert.no-inputs-found": "Illegal reward - no inputs found!",
"alert.save-success": "Successfully saved rewards"
}

View File

@@ -0,0 +1,19 @@
{
"available": "Available Widgets",
"explanation": "Select a widget from the dropdown menu and then drag and drop it into a template's widget area on the left.",
"none-installed": "No widgets found! Activate the essential widgets plugin in the <a href=\"%1\">plugins</a> control panel.",
"containers.available": "Available Containers",
"containers.explanation": "Drag and drop on top of any active widget",
"containers.none": "None",
"container.well": "Well",
"container.jumbotron": "Jumbotron",
"container.panel": "Panel",
"container.panel-header": "Panel Header",
"container.panel-body": "Panel Body",
"container.alert": "Alert",
"alert.confirm-delete": "Are you sure you wish to delete this widget?",
"alert.updated": "Widgets Updated",
"alert.update-success": "Successfully updated widgets"
}

View File

@@ -0,0 +1,64 @@
{
"forum-traffic": "Forum Traffic",
"page-views": "Page Views",
"unique-visitors": "Unique Visitors",
"users": "Users",
"posts": "Posts",
"topics": "Topics",
"page-views-last-month": "Page views Last Month",
"page-views-this-month": "Page views This Month",
"page-views-last-day": "Page views in last 24 hours",
"stats.day": "Day",
"stats.week": "Week",
"stats.month": "Month",
"stats.all": "All Time",
"updates": "Updates",
"running-version": "You are running <strong>NodeBB v<span id=\"version\">%1</span></strong>.",
"keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.",
"up-to-date": "<p>You are <strong>up-to-date</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>This is a <strong>pre-release</strong> version of NodeBB. Unintended bugs may occur. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",
"notices": "Notices",
"restart-not-required": "Restart not required",
"restart-required": "Restart required",
"search-plugin-installed": "Search Plugin installed",
"search-plugin-not-installed": "Search Plugin not installed",
"search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality",
"control-panel": "System Control",
"reload": "Reload",
"restart": "Restart",
"restart-warning": "Reloading or Restarting your NodeBB will drop all existing connections for a few seconds.",
"maintenance-mode": "Maintenance Mode",
"maintenance-mode-title": "Click here to set up maintenance mode for NodeBB",
"realtime-chart-updates": "Realtime Chart Updates",
"active-users": "Active Users",
"active-users.users": "Users",
"active-users.guests": "Guests",
"active-users.total": "Total",
"active-users.connections": "Connections",
"anonymous-registered-users": "Anonymous vs Registered Users",
"anonymous": "Anonymous",
"registered": "Registered",
"user-presence": "User Presence",
"on-categories": "On categories list",
"reading-posts": "Reading posts",
"browsing-topics": "Browsing topics",
"recent": "Recent",
"unread": "Unread",
"high-presence-topics": "High Presence Topics",
"graphs.page-views": "Page Views",
"graphs.unique-visitors": "Unique Visitors",
"graphs.registered-users": "Registered Users",
"graphs.anonymous-users": "Anonymous Users"
}

View File

@@ -0,0 +1,7 @@
{
"home-page": "Home Page",
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
"home-page-route": "Home Page Route",
"custom-route": "Custom Route",
"allow-user-home-pages": "Allow User Home Pages"
}

View File

@@ -0,0 +1,5 @@
{
"language-settings": "Language Settings",
"description": "The default language determines the language settings for all users who are visiting your forum. <br />Individual users can override the default language on their account settings page.",
"default-language": "Default Language"
}

View File

@@ -0,0 +1,27 @@
{
"icon": "Icon:",
"change-icon": "change",
"route": "Route:",
"tooltip": "Tooltip:",
"text": "Text:",
"text-class": "Text Class: <small>optional</small>",
"id": "ID: <small>optional</small>",
"properties": "Properties:",
"only-admins": "Only display to Admins",
"only-global-mods-and-admins": "Only display to Global Moderators and Admins",
"only-logged-in": "Only display to logged in users",
"open-new-window": "Open in a new window",
"installed-plugins-required": "Installed Plugins Required:",
"search-plugin": "Search plugin",
"btn.delete": "Delete",
"btn.disable": "Disable",
"btn.enable": "Enable",
"available-menu-items": "Available Menu Items",
"custom-route": "Custom Route",
"core": "core",
"plugin": "plugin"
}

View File

@@ -0,0 +1,5 @@
{
"post-sharing": "Post Sharing",
"info-plugins-additional": "Plugins can add additional networks for sharing posts.",
"save-success": "Successfully saved Post Sharing Networks!"
}

View File

@@ -0,0 +1,9 @@
{
"notifications": "Notifications",
"chat-messages": "Chat Messages",
"play-sound": "Play",
"incoming-message": "Incoming Message",
"outgoing-message": "Outgoing Message",
"upload-new-sound": "Upload New Sound",
"saved": "Settings Saved"
}

View File

@@ -0,0 +1,68 @@
{
"settings": "Category Settings",
"privileges": "Privileges",
"name": "Category Name",
"description": "Category Description",
"bg-color": "Background Colour",
"text-color": "Text Colour",
"bg-image-size": "Background Image Size",
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"upload-image": "Upload Image",
"delete-image": "Remove",
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"parent-category-none": "(None)",
"copy-settings": "Copy Settings From",
"optional-clone-settings": "(Optional) Clone Settings From Category",
"purge": "Purge Category",
"enable": "Enable",
"disable": "Disable",
"edit": "Edit",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
"privileges.description": "You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or a per-group basis. You can add a new user to this table by searching for them in the form below.",
"privileges.warning": "<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.",
"privileges.section-viewing": "Viewing Privileges",
"privileges.section-posting": "Posting Privileges",
"privileges.section-moderation": "Moderation Privileges",
"privileges.section-user": "User",
"privileges.search-user": "Add User",
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",
"privileges.inherit": "If the <code>registered-users</code> group is granted a specific privilege, all other groups receive an <strong>implicit privilege</strong>, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the <code>registered-users</code> user group, and so, privileges for additional groups need not be explicitly granted.",
"analytics.back": "Back to Categories List",
"analytics.title": "Analytics for \"%1\" category",
"analytics.pageviews-hourly": "<strong>Figure 1</strong> &ndash; Hourly page views for this category</small>",
"analytics.pageviews-daily": "<strong>Figure 2</strong> &ndash; Daily page views for this category</small>",
"analytics.topics-daily": "<strong>Figure 3</strong> &ndash; Daily topics created in this category</small>",
"analytics.posts-daily": "<strong>Figure 4</strong> &ndash; Daily posts made in this category</small>",
"alert.created": "Created",
"alert.create-success": "Category successfully created!",
"alert.none-active": "You have no active categories.",
"alert.create": "Create a Category",
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-purge": "<p class=\"lead\">Do you really want to purge this category \"%1\"?</p><h5><strong class=\"text-danger\">Warning!</strong> All topics and posts in this category will be purged!</h5> <p class=\"help-block\">Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category <em>temporarily</em>, you'll want to \"disable\" the category instead.</p>",
"alert.purge-success": "Category purged!",
"alert.copy-success": "Settings Copied!",
"alert.set-parent-category": "Set Parent Category",
"alert.updated": "Updated Categories",
"alert.updated-success": "Category IDs %1 successfully updated.",
"alert.upload-image": "Upload category image",
"alert.find-user": "Find a User",
"alert.user-search": "Search for a user here...",
"alert.find-group": "Find a Group",
"alert.group-search": "Search for a group here..."
}

View File

@@ -0,0 +1,19 @@
{
"daily": "Daily flags",
"by-user": "Flags by user",
"by-user-search": "Search flagged posts by username",
"category": "Category",
"sort-by": "Sort By",
"sort-by.most-flags": "Most Flags",
"sort-by.most-recent": "Most Recent",
"search": "Search",
"dismiss-all": "Dismiss All",
"none-flagged": "No flagged posts!",
"posted-in": "Posted in %1",
"read-more": "Read More",
"flagged-x-times": "This post has been flagged %1 time(s):",
"dismiss": "Dismiss this Flag",
"delete-post": "Delete the Post",
"alerts.confirm-delete-post": "Do you really want to delete this post?"
}

View File

@@ -0,0 +1,34 @@
{
"name": "Group Name",
"description": "Group Description",
"system": "System Group",
"edit": "Edit",
"search-placeholder": "Search",
"create": "Create Group",
"description-placeholder": "A short description about your group",
"create-button": "Create",
"alerts.create-failure": "<strong>Uh-Oh</strong><p>There was a problem creating your group. Please try again later!</p>",
"alerts.confirm-delete": "Are you sure you wish to delete this group?",
"edit.name": "Name",
"edit.description": "Description",
"edit.user-title": "Title of Members",
"edit.icon": "Group Icon",
"edit.label-color": "Group Label Color",
"edit.show-badge": "Show Badge",
"edit.private-details": "If enabled, joining of groups requires approval from a group owner.",
"edit.private-override": "Warning: Private groups is disabled at system level, which overrides this option.",
"edit.disable-requests": "Disable join requests",
"edit.hidden": "Hidden",
"edit.hidden-details": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"edit.add-user": "Add User to Group",
"edit.add-user-search": "Search Users",
"edit.members": "Member List",
"control-panel": "Groups Control Panel",
"revert": "Revert",
"edit.no-users-found": "No Users Found",
"edit.confirm-remove-user": "Are you sure you want to remove this user?",
"edit.save-success": "Changes saved!"
}

View File

@@ -0,0 +1,15 @@
{
"lead": "Configure your IP blacklist here.",
"description": "Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and they will be prevented from logging in to or registering a new account.",
"active-rules": "Active Rules",
"validate": "Validate Blacklist",
"apply": "Apply Blacklist",
"hints": "Syntax Hints",
"hint-1": "Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g. <code>192.168.100.0/22</code>).",
"hint-2": "You can add in comments by starting lines with the <code>#</code> symbol.",
"validate.x-valid": "<strong>%1</strong> out of <strong>%2</strong> rule(s) valid.",
"validate.x-invalid": "The following <strong>%1</strong> rules are invalid:",
"alerts.applied-success": "Blacklist Applied"
}

View File

@@ -0,0 +1,20 @@
{
"queue": "Queue",
"description": "There are no users in the registration queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; User &rarr; User Registration</a> and set <strong>Registration Type</strong> to \"Admin Approval\".",
"list.name": "Name",
"list.email": "Email",
"list.ip": "IP",
"list.time": "Time",
"list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3",
"list.email-spam": "Frequency: %1 Appears: %2",
"list.ip-spam": "Frequency: %1 Appears: %2",
"invitations": "Invitations",
"invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username. <br><br>The username will be displayed to the right of the emails for users who have redeemed their invitations.",
"invitations.inviter-username": "Inviter Username",
"invitations.invitee-email": "Invitee Email",
"invitations.invitee-username": "Invitee Username (if registered)",
"invitations.confirm-delete": "Are you sure you wish to delete this invitation?"
}

View File

@@ -0,0 +1,18 @@
{
"none": "Your forum does not have any topics with tags yet.",
"bg-color": "Background Colour",
"text-color": "Text Colour",
"create-modify": "Create & Modify Tags",
"description": "Select tags via clicking and/or dragging, use shift to select multiple.",
"create": "Create Tag",
"modify": "Modify Tags",
"delete": "Delete Selected Tags",
"search": "Search for tags...",
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.",
"name": "Tag Name",
"alerts.editing-multiple": "Editing multiple tags",
"alerts.editing-x": "Editing \"%1\" tag",
"alerts.confirm-delete": "Do you want to delete the selected tags?",
"alerts.update-success": "Tag Updated!"
}

View File

@@ -0,0 +1,91 @@
{
"users": "Users",
"edit": "Edit",
"make-admin": "Make Admin",
"remove-admin": "Remove Admin",
"validate-email": "Validate Email",
"send-validation-email": "Send Validation Email",
"password-reset-email": "Send Password Reset Email",
"ban": "Ban User(s)",
"temp-ban": "Ban User(s) Temporarily",
"unban": "Unban User(s)",
"reset-lockout": "Reset Lockout",
"reset-flags": "Reset Flags",
"delete": "Delete User(s)",
"purge": "Delete User(s) and Content",
"download-csv": "Download CSV",
"invite": "Invite",
"new": "New User",
"pills.latest": "Latest Users",
"pills.unvalidated": "Not Validated",
"pills.no-posts": "No Posts",
"pills.top-posters": "Top Posters",
"pills.top-rep": "Most Reputation",
"pills.inactive": "Inactive",
"pills.flagged": "Most Flagged",
"pills.banned": "Banned",
"pills.search": "User Search",
"search.username": "By User Name",
"search.username-placeholder": "Enter a username to search",
"search.email": "By Email",
"search.email-placeholder": "Enter a email to search",
"search.ip": "By IP Address",
"search.ip-placeholder": "Enter an IP Address to search",
"search.not-found": "User not found!",
"inactive.3-months": "3 months",
"inactive.6-months": "6 months",
"inactive.12-months": "12 months",
"users.uid": "uid",
"users.username": "username",
"users.email": "email",
"users.postcount": "postcount",
"users.reputation": "reputation",
"users.flags": "flags",
"users.joined": "joined",
"users.last-online": "last online",
"users.banned": "banned",
"create.username": "User Name",
"create.email": "Email",
"create.email-placeholder": "Email of this user",
"create.password": "Password",
"create.password-confirm": "Confirm Password",
"temp-ban.length": "Ban Length",
"temp-ban.reason": "Reason <span class=\"text-muted\">(Optional)</span>",
"temp-ban.hours": "Hours",
"temp-ban.days": "Days",
"temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.",
"alerts.confirm-ban": "Do you really want to ban this user <strong>permanently</strong>?",
"alerts.confirm-ban-multi": "Do you really want to ban these users <strong>permanently</strong>?",
"alerts.ban-success": "User(s) banned!",
"alerts.button-ban-x": "Ban %1 user(s)",
"alerts.unban-success": "User(s) unbanned!",
"alerts.lockout-reset-success": "Lockout(s) reset!",
"alerts.flag-reset-success": "Flags(s) reset!",
"alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!",
"alerts.make-admin-success": "User(s) are now administrators.",
"alerts.confirm-remove-admin": "Do you really want to remove admins?",
"alerts.remove-admin-success": "User(s) are no longer administrators.",
"alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?",
"alerts.validate-email-success": "Emails validated",
"alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?",
"alerts.confirm-delete": "<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable! Only the user account will be deleted, their posts and topics will remain.",
"alerts.delete-success": "User(s) Deleted!",
"alerts.confirm-purge": "<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable! All user data and content will be erased!",
"alerts.create": "Create User",
"alerts.button-create": "Create",
"alerts.button-cancel": "Cancel",
"alerts.error-passwords-different": "Passwords must match!",
"alerts.error-x": "<strong>Error</strong><p>%1</p>",
"alerts.create-success": "User created!",
"alerts.prompt-email": "Email: ",
"alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.x-users-found": "%1 user(s) found! Search took %2 ms."
}

View File

@@ -0,0 +1,74 @@
{
"section-general": "General",
"general/dashboard": "Dashboard",
"general/homepage": "Home Page",
"general/navigation": "Navigation",
"general/languages": "Languages",
"general/sounds": "Sounds",
"general/social": "Social",
"section-manage": "Manage",
"manage/categories": "Categories",
"manage/tags": "Tags",
"manage/users": "Users",
"manage/registration": "Registration Queue",
"manage/groups": "Groups",
"manage/ip-blacklist": "IP Blacklist",
"section-settings": "Settings",
"settings/general": "General",
"settings/reputation": "Reputation",
"settings/email": "Email",
"settings/user": "User",
"settings/group": "Group",
"settings/guest": "Guests",
"settings/uploads": "Uploads",
"settings/post": "Post",
"settings/chat": "Chat",
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
"settings/cookies": "Cookies",
"settings/web-crawler": "Web Crawler",
"settings/sockets": "Sockets",
"settings/advanced": "Advanced",
"settings.page-title": "%1 Settings",
"section-appearance": "Appearance",
"appearance/themes": "Themes",
"appearance/skins": "Skins",
"appearance/customise": "Custom HTML & CSS",
"section-extend": "Extend",
"extend/plugins": "Plugins",
"extend/widgets": "Widgets",
"extend/rewards": "Rewards",
"section-social-auth": "Social Authentication",
"section-plugins": "Plugins",
"extend/plugins.install": "Install Plugins",
"section-advanced": "Advanced",
"advanced/database": "Database",
"advanced/events": "Events",
"advanced/logs": "Logs",
"advanced/errors": "Errors",
"advanced/cache": "Cache",
"development/logger": "Logger",
"development/info": "Info",
"reload-forum": "Reload Forum",
"restart-forum": "Restart Forum",
"logout": "Log out",
"view-forum": "View Forum",
"search.placeholder": "Search...",
"search.no-results": "No results...",
"search.search-forum": "Search the forum for <strong></strong>",
"search.keep-typing": "Type more to see results...",
"search.start-typing": "Start typing to see results...",
"connection-lost": "Connection to %1 has been lost, attempting to reconnect..."
}

View File

@@ -0,0 +1,19 @@
{
"maintenance-mode": "Maintenance Mode",
"maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
"maintenance-mode.message": "Maintenance Message",
"headers": "Headers",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
"headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB",
"headers.acao": "Access-Control-Allow-Origin",
"headers.acao-help": "To deny access to all sites, leave empty or set to <code>null</code>",
"headers.acam": "Access-Control-Allow-Methods",
"headers.acah": "Access-Control-Allow-Headers",
"traffic-management": "Traffic Management",
"traffic.help": "NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.enable": "Enable Traffic Management",
"traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)",
"traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)",
"traffic.lag-check-interval": "Check Interval (in milliseconds)",
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)"
}

View File

@@ -0,0 +1,9 @@
{
"chat-settings": "Chat Settings",
"disable": "Disable chat",
"disable-editing": "Disable chat message editing/deletion",
"disable-editing-help": "Administrators and global moderators are exempt from this restriction",
"max-length": "Maximum length of chat messages",
"max-room-size": "Maximum number of users in chat rooms",
"delay": "Time between chat messages in milliseconds"
}

View File

@@ -0,0 +1,11 @@
{
"eu-consent": "EU Consent",
"consent.enabled": "Enabled",
"consent.message": "Notification message",
"consent.acceptance": "Acceptance message",
"consent.link-text": "Policy Link Text",
"consent.blank-localised-default": "Leave blank to use NodeBB localised defaults",
"settings": "Settings",
"cookie-domain": "Session cookie domain",
"blank-default": "Leave blank for default"
}

View File

@@ -0,0 +1,25 @@
{
"email-settings": "Email Settings",
"address": "Email Address",
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
"gmail-routing": "Gmail Routing",
"gmail-routing-help1": "There have been reports of Gmail Routing not working on accounts with heightened security. In those scenarios, you will have to <a href=\"https://www.google.com/settings/security/lesssecureapps\">configure your GMail account to allow less secure apps</a>.",
"gmail-routing-help2": "For more information about this workaround, <a href=\"https://nodemailer.com/using-gmail/\">please consult this NodeMailer article on the issue.</a> An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"{config.relative_path}/admin/extend/plugins\">Browse available plugins here</a>.",
"gmail-transport": "Route emails through a Gmail/Google Apps account",
"gmail-transport.username": "Username",
"gmail-transport.username-help": "Enter the full email address here, especially if you are using a Google Apps managed domain.",
"gmail-transport.password": "Password",
"template": "Edit Email Template",
"template.select": "Select Email Template",
"template.revert": "Revert to Original",
"testing": "Email Testing",
"testing.select": "Select Email Template",
"testing.send": "Send Test Email",
"testing.send-help": "The test email will be sent to the currently logged in user's email address.",
"subscriptions": "Email Subscriptions",
"subscriptions.disable": "Disable subscriber notification emails",
"subscriptions.hour": "Digest Hour",
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>"
}

View File

@@ -0,0 +1,32 @@
{
"site-settings": "Site Settings",
"title": "Site Title",
"title.name": "Your Community Name",
"title.show-in-header": "Show Site Title in Header",
"browser-title": "Browser Title",
"browser-title-help": "If no browser title is specified, the site title will be used",
"title-layout": "Title Layout",
"title-layout-help": "Define how the browser title will be structured ie. &#123;pageTitle&#125; | &#123;browserTitle&#125;",
"description.placeholder": "A short description about your community",
"description": "Site Description",
"keywords": "Site Keywords",
"keywords-placeholder": "Keywords describing your community, comma-separated",
"logo": "Site Logo",
"logo.image": "Image",
"logo.image-placeholder": "Path to a logo to display on forum header",
"logo.upload": "Upload",
"logo.url": "URL",
"logo.url-placeholder": "The URL of the site logo",
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.",
"logo.alt-text": "Alt Text",
"log.alt-text-placeholder": "Alternative text for accessibility",
"favicon": "Favicon",
"favicon.upload": "Upload",
"touch-icon": "Homescreen/Touch Icon",
"touch-icon.upload": "Upload",
"touch-icon.help": "Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
"outgoing-links": "Outgoing Links",
"outgoing-links.warning-page": "Use Outgoing Links Warning Page",
"search-default-sort-by": "Search default sort by",
"outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page"
}

View File

@@ -0,0 +1,12 @@
{
"general": "General",
"private-groups": "Private Groups",
"private-groups.help": "If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>",
"private-groups.warning": "<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.",
"allow-creation": "Allow Group Creation",
"allow-creation-help": "If enabled, users can create groups <em>(Default: disabled)</em>",
"max-name-length": "Maximum Group Name Length",
"cover-image": "Group Cover Image",
"default-cover": "Default Cover Images",
"default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image"
}

View File

@@ -0,0 +1,8 @@
{
"handles": "Guest Handles",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
"privileges": "Guest Privileges",
"privileges.can-search": "Allow guests to search without logging in",
"privileges.can-search-users": "Allow guests to search users without logging in"
}

View File

@@ -0,0 +1,5 @@
{
"notifications": "Notifications",
"welcome-notification": "Welcome Notification",
"welcome-notification-link": "Welcome Notification Link"
}

View File

@@ -0,0 +1,9 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"initial-num-load": "Initial Number of Topics to Load on Unread, Recent, and Popular"
}

View File

@@ -0,0 +1,44 @@
{
"sorting": "Post Sorting",
"sorting.post-default": "Default Post Sorting",
"sorting.oldest-to-newest": "Oldest to Newest",
"sorting.newest-to-oldest": "Newest to Oldest",
"sorting.most-votes": "Most Votes",
"sorting.topic-default": "Default Topic Sorting",
"restrictions": "Posting Restrictions",
"restrictions.seconds-between": "Seconds between Posts",
"restrictions.seconds-between-new": "Seconds between Posts for New Users",
"restrictions.rep-threshold": "Reputation threshold before this restriction is lifted",
"restrictions.seconds-defore-new": "Seconds before new user can post",
"restrictions.seconds-edit-after": "Number of seconds users are allowed to edit posts after posting. (0 disabled)",
"restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)",
"restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)",
"restrictions.min-title-length": "Minimum Title Length",
"restrictions.max-title-length": "Maximum Title Length",
"restrictions.min-post-length": "Minimum Post Length",
"restrictions.max-post-length": "Maximum Post Length",
"restrictions.days-until-stale": "Days until Topic is considered stale",
"restrictions.stale-help": "If a topic is considered \"stale\", then a warning will be shown to users who attempt to reply to that topic.",
"timestamp": "Timestamp",
"timestamp.cut-off": "Date cut-off (in days)",
"timestamp.cut-off-help": "Dates &amp; times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).<br /><em>(Default: <code>30</code>, or one month). Set to 0 to always display dates, leave blank to always display relative times.</em>",
"teaser": "Teaser Post",
"teaser.last-post": "Last &ndash; Show the latest post, including the original post, if no replies",
"teaser.last-reply": "Last &ndash; Show the latest reply, or a \"No replies\" placeholder if no replies",
"teaser.first": "First",
"unread": "Unread Settings",
"unread.cutoff": "Unread cutoff days",
"unread.min-track-last": "Minimum posts in topic before tracking last read",
"signature": "Signature Settings",
"signature.disable": "Disable signatures",
"signature.no-links": "Disable links in signatures",
"signature.no-images": "Disable images in signatures",
"signature.max-length": "Maximum Signature Length",
"composer": "Composer Settings",
"composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",
"composer.show-help": "Show \"Help\" tab",
"composer.enable-plugin-help": "Allow plugins to add content to the help tab",
"composer.custom-help": "Custom Help Text",
"ip-tracking": "IP Tracking",
"ip-tracking.each-post": "Track IP Address for each post"
}

View File

@@ -0,0 +1,9 @@
{
"reputation": "Reputation Settings",
"disable": "Disable Reputation System",
"disable-down-voting": "Disable Down Voting",
"votes-are-public": "All Votes Are Public",
"thresholds": "Activity Thresholds",
"min-rep-downvote": "Minimum reputation to downvote posts",
"min-rep-flag": "Minimum reputation to flag posts"
}

View File

@@ -0,0 +1,6 @@
{
"reconnection": "Reconnection Settings",
"max-attempts": "Max Reconnection Attempts",
"default-placeholder": "Default: %1",
"delay": "Reconnection Delay"
}

View File

@@ -0,0 +1,12 @@
{
"tag": "Tag Settings",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",
"max-length": "Maximum Tag Length",
"goto-manage": "Click here to visit the tag management page.",
"privacy": "Privacy",
"list-private": "Make the tags list private",
"related-topics": "Related Topics",
"max-related-topics": "Maximum related topics to display (if supported by theme)"
}

View File

@@ -0,0 +1,28 @@
{
"posts": "Posts",
"allow-files": "Allow users to upload regular files",
"private": "Make uploaded files private",
"max-image-width": "Resize images down to specified width (in pixels)",
"max-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)",
"max-file-size": "Maximum File Size (in KiB)",
"max-file-size-help": "(in kilobytes, default: 2048 KiB)",
"allow-topic-thumbnails": "Allow users to upload topic thumbnails",
"topic-thumb-size": "Topic Thumb Size",
"allowed-file-extensions": "Allowed File Extensions",
"allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. <code>pdf,xls,doc</code>). An empty list means all extensions are allowed.",
"profile-avatars": "Profile Avatars",
"allow-profile-image-uploads": "Allow users to upload profile images",
"convert-profile-image-png": "Convert profile image uploads to PNG",
"default-avatar": "Custom Default Avatar",
"upload": "Upload",
"profile-image-dimension": "Profile Image Dimension",
"profile-image-dimension-help": "(in pixels, default: 128 pixels)",
"max-profile-image-size": "Maximum Profile Image File Size",
"max-profile-image-size-help": "(in kilobytes, default: 256 KiB)",
"max-cover-image-size": "Maximum Cover Image File Size",
"max-cover-image-size-help": "(in kilobytes, default: 2,048 KiB)",
"keep-all-user-images": "Keep old versions of avatars and profile covers on the server",
"profile-covers": "Profile Covers",
"default-covers": "Default Cover Images",
"default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image"
}

View File

@@ -0,0 +1,59 @@
{
"authentication": "Authentication",
"allow-local-login": "Allow local login",
"require-email-confirmation": "Require Email Confirmation",
"email-confirm-interval": "User may not resend a confirmation email until",
"email-confirm-email2": "minutes have elapsed",
"allow-login-with": "Allow login with",
"allow-login-with.username-email": "Username or Email",
"allow-login-with.username": "Username Only",
"allow-login-with.email": "Email Only",
"account-settings": "Account Settings",
"disable-username-changes": "Disable username changes",
"disable-email-changes": "Disable email changes",
"disable-password-changes": "Disable password changes",
"allow-account-deletion": "Allow account deletion",
"user-info-private": "Make user info private",
"themes": "Themes",
"disable-user-skins": "Prevent users from choosing a custom skin",
"account-protection": "Account Protection",
"login-attempts": "Login attempts per hour",
"login-attempts-help": "If login attempts to a user&apos;s account exceeds this threshold, that account will be locked for a pre-configured amount of time",
"lockout-duration": "Account Lockout Duration (minutes)",
"login-days": "Days to remember user login sessions",
"password-expiry-days": "Force password reset after a set number of days",
"registration": "User Registration",
"registration-type": "Registration Type",
"registration-type.normal": "Normal",
"registration-type.admin-approval": "Admin Approval",
"registration-type.admin-approval-ip": "Admin Approval for IPs",
"registration-type.invite-only": "Invite Only",
"registration-type.admin-invite-only": "Admin Invite Only",
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.<br/>\nAdmin Approval - User registrations are placed in an <a href=\"%1/admin/manage/registration\">approval queue</a> for administrators.<br/>\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.<br/>\nInvite Only - Users can invite others from the <a href=\"%1/users\" target=\"_blank\">users</a> page.<br/>\nAdmin Invite Only - Only administrators can invite others from <a href=\"%1/users\" target=\"_blank\">users</a> and <a href=\"%1/admin/manage/users\">admin/manage/users</a> pages.<br/>\nNo registration - No user registration.<br/>",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations<br>Only applicable for \"Invite Only\"",
"min-username-length": "Minimum Username Length",
"max-username-length": "Maximum Username Length",
"min-password-length": "Minimum Password Length",
"max-about-me-length": "Maximum About Me Length",
"terms-of-use": "Forum Terms of Use <small>(Leave blank to disable)</small>",
"user-search": "User Search",
"user-search-results-per-page": "Number of results to display",
"default-user-settings": "Default User Settings",
"show-email": "Show email",
"show-fullname": "Show fullname",
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
"digest-freq.weekly": "Weekly",
"digest-freq.monthly": "Monthly",
"email-chat-notifs": "Send an email if a new chat message arrives and I am not online",
"email-post-notif": "Send an email when replies are made to topics I am subscribed to",
"follow-created-topics": "Follow topics you create",
"follow-replied-topics": "Follow topics that you reply to"
}

View File

@@ -0,0 +1,10 @@
{
"crawlability-settings": "Crawlability Settings",
"robots-txt": "Custom Robots.txt <small>Leave blank for default</small>",
"sitemap-feed-settings": "Sitemap & Feed Settings",
"disable-rss-feeds": "Disable RSS Feeds",
"disable-sitemap-xml": "Disable Sitemap.xml",
"sitemap-topics": "Number of Topics to display in the Sitemap",
"clear-sitemap-cache": "Clear Sitemap Cache",
"view-sitemap": "View Sitemap"
}

View File

@@ -2,15 +2,19 @@
"category": "فئة",
"subcategories": "فئة فرعية",
"new_topic_button": "موضوع جديد",
"guest-login-post": "يجب عليك تسجيل الدخول للرد",
"guest-login-post": "سجل بالدخول للرد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />",
"browsing": "تصفح",
"no_replies": ا توجد ردود.",
"no_new_posts": "لا يوجد مشاركات جديدة.",
"no_replies": م يرد أحد",
"no_new_posts": "لا توجد مشاركات جديدة.",
"share_this_category": "انشر هذه الفئة",
"watch": "متابعة",
"watch": "تابع",
"ignore": "تجاهل",
"watch.message": "أنت اﻷن متابع لتحديثات هذه الفئة",
"ignore.message": "أنت اﻷن تتجاهل تحديثات هذه الفئة",
"watched-categories": "Watched categories"
"watching": "متابع",
"ignoring": "متجاهل",
"watching.description": "أظهر المواضيع في غير مقروء",
"ignoring.description": "لا تظهر المواضيع في غير مقروء",
"watch.message": "You are now watching updates from this category and all subcategories",
"ignore.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "الفئات المتابعة"
}

View File

@@ -21,9 +21,10 @@
"digest.cta": "انقر هنا لمشاهدة %1",
"digest.unsub.info": "تم إرسال هذا الإشعار بآخر المستجدات وفقا لخيارات تسجيلكم.",
"digest.no_topics": "ليس هناك مواضيع نشيطة في %1 الماضي",
"digest.day": "day",
"digest.week": "week",
"digest.month": "month",
"digest.day": "يوم",
"digest.week": "أسبوع",
"digest.month": "شهر",
"digest.subject": "إستهلاك ل",
"notif.chat.subject": "هناك محادثة جديدة من %1",
"notif.chat.cta": "انقر هنا لمتابعة المحادثة",
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.",

View File

@@ -1,5 +1,5 @@
{
"invalid-data": "بيانات غير صالحة",
"invalid-data": "بيانات غير صحيحة",
"not-logged-in": "لم تقم بتسجيل الدخول",
"account-locked": "تم حظر حسابك مؤقتًا.",
"search-requires-login": "البحث في المنتدى يتطلب حساب - الرجاء تسجيل الدخول أو التسجيل",
@@ -14,20 +14,25 @@
"invalid-password": "كلمة السر غير مقبولة",
"invalid-username-or-password": "المرجود تحديد اسم مستخدم و كلمة مرور",
"invalid-search-term": "كلمة البحث غير صحيحة",
"invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",
"csrf-invalid": "لم تتمكن من تسجيل الدخول. هنالك أحتمال ان جلستك انتهت. رجاءًا حاول مرة اخرى.",
"invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
"username-taken": "اسم المستخدم مأخوذ",
"email-taken": "البريد الالكتروني مأخوذ",
"email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
"email-not-confirmed-chat": "لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.",
"email-not-confirmed-email-sent": "بريدك الإلكتروني غير مفعل. رجاءًا تفحص صندوق البريد عن رسالة التفعيل.",
"no-email-to-confirm": "هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
"email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.",
"confirm-email-already-sent": "لقد تم ارسال بريد التأكيد، الرجاء اﻹنتظار 1% دقائق لإعادة اﻹرسال",
"sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
"username-too-short": "اسم المستخدم قصير.",
"username-too-long": "اسم المستخدم طويل",
"password-too-long": "Password too long",
"password-too-long": "كلمة السر طويلة ",
"user-banned": "المستخدم محظور",
"user-banned-reason": "Sorry, this account has been banned (Reason: %1)",
"user-too-new": "عذرا, يجب أن تنتظر 1% ثواني قبل قيامك بأول مشاركة",
"blacklisted-ip": "Sorry, your IP address has been banned from this community. If you feel this is in error, please contact an administrator.",
"blacklisted-ip": "نأسف، لقد تم حظرك من استخدام وتصفح المنتدى. إذا كنت تعتقد أن هذا خطأ رجاءًا اتصل بالإدارة. ",
"ban-expiry-missing": "رجاءًا ضع تاريخ نهاية الحظر. ",
"no-category": "قائمة غير موجودة",
"no-topic": "موضوع غير موجود",
"no-post": "رد غير موجود",
@@ -37,67 +42,90 @@
"no-privileges": "لاتملك الصلاحيات اللازمة للقيام بهذه العملية",
"category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
"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",
"post-edit-duration-expired": "يسمح لك بتعديل مشاركتك حتى %1 ثانية من نشرها",
"post-edit-duration-expired-minutes": "يسمح لك بتعديل مشاركتك حتى %1 دقيقة من نشرها",
"post-edit-duration-expired-minutes-seconds": "يسمح لك بتعديل مشاركتك حتى %1 دقيقة و %2 ثوان من نشرها",
"post-edit-duration-expired-hours": "يسمح لك بتعديل مشاركتك حتى %1 ساعة من نشرها",
"post-edit-duration-expired-hours-minutes": "يسمح لك بتعديل مشاركتك حتى %1 ساعة و %2 دقيقة من نشرها",
"post-edit-duration-expired-days": "يسمح لك بتعديل مشاركتك حتى %1 يوم من نشرها",
"post-edit-duration-expired-days-hours": "يسمح لك بتعديل مشاركتك حتى %1 يوم و %2 ساعة من نشرها",
"post-delete-duration-expired": "يسمح لك بحذف مشاركتك حتى %1 ثانية من نشرها",
"post-delete-duration-expired-minutes": "يسمح لك بحذف مشاركتك حتى %1 دقيقة من نشرها",
"post-delete-duration-expired-minutes-seconds": "يسمح لك بحذف مشاركتك حتى %1 دقيقة و %2 ثوان من نشرها",
"post-delete-duration-expired-hours": "يسمح لك بحذف مشاركتك حتى %1 ساعة من نشرها",
"post-delete-duration-expired-hours-minutes": "يسمح لك بحذف مشاركتك حتى %1 ساعة و %2 دقيقة من نشرها",
"post-delete-duration-expired-days": "يسمح لك بحذف مشاركتك حتى %1 يوم من نشرها",
"post-delete-duration-expired-days-hours": "يسمح لك بحذف مشاركتك حتى %1 يوم و %2 ساعة من نشرها",
"cant-delete-topic-has-reply": "لا يمكنك حذف مشاركة تم الرد عليها",
"cant-delete-topic-has-replies": "لا يمكنك حذف مشاركة حصدت %1 ردود",
"content-too-short": "يرجى ادخال موضوع أطول. على المواضيع أن تحتوي على %1 حرف على الأقل.",
"content-too-long": "يرجى ادخال موضوع أقصر. على المواضيع أن لا تتخطى %1 حرف.",
"title-too-short": "يرجى إدخال عنوان أطول. على العناوين أن تحتوي على %1 حرف على الأقل.",
"title-too-long": "يرجى ادخال عنوان أقصر. على العناوين أن لا تتخطى %1 حرف.",
"category-not-selected": "Category not selected.",
"too-many-posts": "يسمح لك بالنشر مرة كل %1 ثانية - يرجى الإنتظار قبل النشر مجدداً",
"too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
"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)",
"still-uploading": "الرجاء انتظار الرفع",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"guest-upload-disabled": "Guest uploading has been disabled",
"already-favourited": "You have already bookmarked this post",
"already-unfavourited": "You have already unbookmarked this post",
"still-uploading": "الرجاء الانتظار حتى يكتمل الرفع.",
"file-too-big": "الحد الأقصى لرفع الملفات %1 كيلو بت. رجاءًا ارفع ملف أصغر",
"guest-upload-disabled": "خاصية رفع الملفات غير مفعلة للزوار.",
"already-bookmarked": "You have already bookmarked this post",
"already-unbookmarked": "You have already unbookmarked this post",
"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",
"cant-remove-last-admin": "رجاءًا ، أضف مدير أخر قبل حذف صلاحيات الإدارة من حسابك.",
"cant-delete-admin": "رجاءًا أزل صلاحيات الإدارة قبل حذف الحساب. ",
"invalid-image-type": "نوع الصورة غير مدعوم. الأنواع المدعومة هي : %1",
"invalid-image-extension": "امتداد الصورة غير مدعوم.",
"invalid-file-type": "صيغة الملف غير مدعومة. الأنواع المدعومة هي: %1",
"group-name-too-short": "اسم المجموعة قصير",
"group-name-too-long": "اسم المجموعة طويل.",
"group-already-exists": "المجموعة موجودة مسبقا",
"group-name-change-not-allowed": "لايسمح بتغيير أسماء المجموعات",
"group-already-member": "Already part of this group",
"group-not-member": "Not a member of this group",
"group-already-member": "أنت عضو في هذه المجموعة.",
"group-not-member": "أنت لست عضو في هذه المجموعة.",
"group-needs-owner": "هذه المجموعة تتطلب مالك واحد على اﻷقل",
"group-already-invited": "This user has already been invited",
"group-already-requested": "Your membership request has already been submitted",
"group-already-invited": "المستخدم سبق وأن تمت دعوته",
"group-already-requested": "سبق وتم تسجيل طلب العضوية",
"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",
"cant-purge-main-post": "لا يمكنك محو المشاركة الأساسية، يرجى حذف الموضوع بدلاً عن ذلك",
"topic-thumbnails-are-disabled": "الصور المصغرة غير مفعلة.",
"invalid-file": "ملف غير مقبول",
"uploads-are-disabled": "رفع الملفات غير مفعل",
"signature-too-long": "عذرا، توقيعك يجب ألا يتجاوز %1 حرفًا.",
"about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
"about-me-too-long": "نأسف، ( عني ) لا يمكن أن يكون أكثر من %1 حرف. ",
"cant-chat-with-yourself": "لايمكنك فتح محادثة مع نفسك",
"chat-restricted": "هذا المستخدم عطل المحادثات الواردة عليه. يجب أن يتبعك حتى تتمكن من فتح محادثة معه.",
"chat-disabled": "Chat system disabled",
"chat-disabled": "نظام المحادثة معطل.",
"too-many-messages": "لقد أرسلت الكثير من الرسائل، الرجاء اﻹنتظار قليلاً",
"invalid-chat-message": "Invalid chat message",
"chat-message-too-long": "Chat message is too long",
"cant-edit-chat-message": "You are not allowed to edit this message",
"cant-remove-last-user": "You can't remove the last user",
"cant-delete-chat-message": "You are not allowed to delete this message",
"invalid-chat-message": "الرسالة غير صالحة.",
"chat-message-too-long": "الرسالة طويلة.",
"cant-edit-chat-message": "غير مصرح لك بتعديل الرسالة.",
"cant-remove-last-user": "لأيمكنك إزالت اخر مستخدم.",
"cant-delete-chat-message": "غير مصرح لك بحذف الرسالة.",
"already-voting-for-this-post": "لقد شاركت بالتصويت ، ألا تذكر؟",
"reputation-system-disabled": "نظام السمعة معطل",
"downvoting-disabled": "التصويتات السلبية معطلة",
"not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع",
"not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل",
"already-flagged": "You have already flagged this post",
"already-flagged": "لقد بلغت عن هذه المشاركة من قبل.",
"reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.",
"registration-error": "حدث خطأ أثناء التسجيل",
"parse-error": "حدث خطأ ما أثناء تحليل استجابة الخادم",
"wrong-login-type-email": "الرجاء استعمال بريدك اﻹلكتروني للدخول",
"wrong-login-type-username": "الرجاء استعمال اسم المستخدم الخاص بك للدخول",
"invite-maximum-met": "You have invited the maximum amount of people (%1 out of %2).",
"no-session-found": "No login session found!",
"not-in-room": "User not in room",
"no-users-in-room": "No users in this room",
"cant-kick-self": "You can't kick yourself from the group"
"invite-maximum-met": "لقد قمت بدعوة الحد الأقصى من الأشخاص (%1 من %2)",
"no-session-found": "لم دخول مسجل!",
"not-in-room": "المستخدم غير موجود في الغرفة.",
"no-users-in-room": "لا يوجد مستخدمين في الغرفة.",
"cant-kick-self": "لا يمكنك طرد نفسك من المجموعة.",
"no-users-selected": "لا يوجد مستخدم محدد.",
"invalid-home-page-route": "Invalid home page route",
"invalid-session": "Session Mismatch",
"invalid-session-text": "يبدو أن فترة التسجيل لم تعد قائمة او هي غير مطابقة مع الخادم. يرجى إعادة تحميل هذه الصفحة."
}

View File

@@ -4,11 +4,13 @@
"buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول",
"403.message": "يبدو أنك قد تعثرت على صفحة لا تمتلك الصلاحية للدخول إليها",
"403.login": "Perhaps you should <a href='%1/login'>try logging in</a>?",
"403.login": "حاول أن <a href='%1/login'>تسجل دخولك</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>.",
"500.title": "خطأ داخلي.",
"404.message": "الصفحة غير موجودة. العودة لـ <a href='%1/'>الرئيسية</a>",
"500.title": "خطأ داخلي",
"500.message": "عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!",
"400.title": "طلب سيئ",
"400.message": "الرابط غير صحيح. رجاءًا تأكد من الرابط أو ارجع لـ <a href='%1/'>الرئيسية</a>",
"register": "تسجيل",
"login": "دخول",
"please_log_in": "المرجو تسجيل الدخول",
@@ -17,6 +19,7 @@
"welcome_back": "مرحبًا بعودتك",
"you_have_successfully_logged_in": "تم سجيل الدخول بنجاح",
"save_changes": "حفظ التغييرات",
"save": "Save",
"close": "أغلق",
"pagination": "الصفحات",
"pagination.out_of": "%1 من %2",
@@ -33,7 +36,7 @@
"header.notifications": "التنبيهات",
"header.search": "بحث",
"header.profile": "ملف",
"header.navigation": "Navigation",
"header.navigation": "الاستكشاف",
"notifications.loading": "تحميل التبليغات",
"chats.loading": "تحميل الدردشات",
"motd.welcome": "مرحبا بكم NodeBB، منصة مناقشة المستقبل",
@@ -49,29 +52,32 @@
"users": "الأعضاء",
"topics": "المواضيع",
"posts": "المشاركات",
"best": "Best",
"upvoted": "Upvoted",
"downvoted": "Downvoted",
"best": "الأفضل",
"upvoters": "الموافقين",
"upvoted": "مصوت بالموجب",
"downvoters": "مصوتين بالسالب",
"downvoted": "مصوت بالسالب",
"views": "المشاهدات",
"reputation": "السمعة",
"read_more": "اقرأ المزيد",
"more": "المزيد",
"posted_ago_by_guest": "كتب %1 من طرف زائر",
"posted_ago_by": "كتب %1 من طرف %2",
"posted_ago_by_guest": "كتب %1 بواسطة زائر",
"posted_ago_by": "كتب %1 بواسطة %2",
"posted_ago": "كتب %1",
"posted_in": "posted in %1",
"posted_in_by": "posted in %1 by %2",
"posted_in": "كتب في %1",
"posted_in_by": "كتب في 1% بواسطة %2",
"posted_in_ago": "كتب في %1 %2",
"posted_in_ago_by": "كتب في %1 %2 من طرف %3",
"user_posted_ago": "%1 كتب %2",
"guest_posted_ago": "كتب زائر %1",
"last_edited_by": "last edited by %1",
"last_edited_by": "اخر تحرير بواسطة 1%",
"norecentposts": "لاوجود لمشاركات جديدة",
"norecenttopics": "لاوجود لمواضيع جديدة",
"recentposts": "آخر المشاركات",
"recentips": "آخر عناوين ال IP التي سجلت الدخول",
"moderator_tools": "Moderator Tools",
"away": "غير متواجد",
"dnd": "Do not disturb",
"dnd": "عدم الإزعاج",
"invisible": "مخفي",
"offline": "غير متصل",
"email": "عنوان البريد الإلكتروني",
@@ -84,11 +90,18 @@
"follow": "متابعة",
"unfollow": "إلغاء المتابعة",
"delete_all": "حذف الكل",
"map": "Map",
"sessions": "Login Sessions",
"ip_address": "IP Address",
"enter_page_number": "Enter page number",
"upload_file": "Upload file",
"upload": "Upload",
"allowed-file-types": "Allowed file types are %1"
"map": "خريطة",
"sessions": "الجلسة",
"ip_address": "عنوان الآي بي",
"enter_page_number": "ادخل رقم الصفحة",
"upload_file": "ارفع ملف",
"upload": "ارفع",
"allowed-file-types": "صيغ الملفات المدعومة هي 1%",
"unsaved-changes": "لديك تغييرات لم تحفظ. هل أنت متأكد من تغيير الصفحة؟",
"reconnecting-message": "يبدو أن اتصالك لـ %1 قد فقد. رجاءًا أنتظر ثم حاول الإتصال مرة اخرى.",
"play": "Play",
"cookies.message": "This website uses cookies to ensure you get the best experience on our website.",
"cookies.accept": "Got it!",
"cookies.learn_more": "Learn More",
"edited": "Edited"
}

View File

@@ -27,6 +27,7 @@
"details.disableJoinRequests": "Disable join requests",
"details.grant": "منح/سحب المِلكية",
"details.kick": "طرد",
"details.kick_confirm": "Are you sure you want to remove this member from the group?",
"details.owner_options": "إدارة المجموعة",
"details.group_name": "اسم المجموعة",
"details.member_count": "عدد اﻷعضاء",
@@ -50,5 +51,8 @@
"membership.leave-group": "غادر المجموعة",
"membership.reject": "رفض",
"new-group.group_name": "اسم المجموعة",
"upload-group-cover": "Upload group cover"
"upload-group-cover": "Upload group cover",
"bulk-invite-instructions": "Enter a list of comma separated usernames to invite to this group",
"bulk-invite": "Bulk Invite",
"remove_group_cover_confirm": "Are you sure you want to remove the cover picture?"
}

View File

@@ -5,7 +5,8 @@
"remember_me": "تذكرني؟",
"forgot_password": "نسيت كلمة المرور؟",
"alternative_logins": "تسجيلات الدخول البديلة",
"failed_login_attempt": "فشلت محاولة تسجيل الدخول، يرجى المحاولة مرة أخرى.",
"failed_login_attempt": "Login Unsuccessful",
"login_successful": "قمت بتسجيل الدخول بنجاح!",
"dont_have_account": "لا تملك حساب؟"
"dont_have_account": "لا تملك حساب؟",
"logged-out-due-to-inactivity": "You have been logged out of the Admin Control Panel due to inactivity"
}

View File

@@ -13,12 +13,12 @@
"chat.contacts": "الأصدقاء",
"chat.message-history": "تاريخ الرسائل",
"chat.pop-out": "افتح الدردشة في نافذة خاصة",
"chat.minimize": "Minimize",
"chat.maximize": "تكبير",
"chat.seven_days": "7 أيام",
"chat.thirty_days": "30 يومًا",
"chat.three_months": "3 أشهر",
"chat.delete_message_confirm": "Are you sure you wish to delete this message?",
"chat.roomname": "Chat Room %1",
"chat.delete_message_confirm": "هل أنت متأكد من أنك تريد حذف هذه الرسالة؟",
"chat.add-users-to-room": "Add users to room",
"composer.compose": "اكتب",
"composer.show_preview": "عرض المعاينة",
@@ -29,6 +29,16 @@
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown",
"composer.uploading": "Uploading %1",
"composer.formatting.bold": "Bold",
"composer.formatting.italic": "Italic",
"composer.formatting.list": "List",
"composer.formatting.strikethrough": "Strikethrough",
"composer.formatting.link": "Link",
"composer.formatting.picture": "Picture",
"composer.upload-picture": "Upload Image",
"composer.upload-file": "Upload File",
"composer.zen_mode": "Zen Mode",
"composer.select_category": "Select a category",
"bootbox.ok": "OK",
"bootbox.cancel": "إلغاء",
"bootbox.confirm": "تأكيد",

View File

@@ -10,18 +10,27 @@
"return_to": "عودة إى %1",
"new_notification": "تنبيه جديد",
"you_have_unread_notifications": "لديك تنبيهات غير مقروءة.",
"all": "All",
"topics": "Topics",
"replies": "Replies",
"chat": "Chats",
"follows": "Follows",
"upvote": "Upvotes",
"new-flags": "New Flags",
"my-flags": "Flags assigned to me",
"bans": "Bans",
"new_message_from": "رسالة جديدة من <strong>%1</strong>",
"upvoted_your_post_in": "<strong>%1</strong> أضاف صوتًا إيجابيا إلى مشاركتك في <strong>%2</strong>.",
"upvoted_your_post_in_dual": "<strong>%1</strong> and <strong>%2</strong> have upvoted your post in <strong>%3</strong>.",
"upvoted_your_post_in_multiple": "<strong>%1</strong> and %2 others have upvoted your post in <strong>%3</strong>.",
"moved_your_post": "<strong>%1</strong> has moved your post to <strong>%2</strong>",
"moved_your_topic": "<strong>%1</strong> has moved <strong>%2</strong>",
"favourited_your_post_in": "<strong>%1</strong> has bookmarked your post in <strong>%2</strong>.",
"favourited_your_post_in_dual": "<strong>%1</strong> and <strong>%2</strong> have bookmarked your post in <strong>%3</strong>.",
"favourited_your_post_in_multiple": "<strong>%1</strong> and %2 others have bookmarked your post in <strong>%3</strong>.",
"user_flagged_post_in": "<strong>%1</strong> أشعَرَ بمشاركة مخلة في <strong>%2</strong>",
"user_flagged_post_in_dual": "<strong>%1</strong> and <strong>%2</strong> flagged a post in <strong>%3</strong>",
"user_flagged_post_in_multiple": "<strong>%1</strong> and %2 others flagged a post in <strong>%3</strong>",
"user_flagged_user": "<strong>%1</strong> flagged a user profile (%2)",
"user_flagged_user_dual": "<strong>%1</strong> and <strong>%2</strong> flagged a user profile (%3)",
"user_flagged_user_multiple": "<strong>%1</strong> and %2 others flagged a user profile (%3)",
"user_posted_to": "<strong>%1</strong> أضاف ردا إلى: <strong>%2</strong>",
"user_posted_to_dual": "<strong>%1</strong> and <strong>%2</strong> have posted replies to: <strong>%3</strong>",
"user_posted_to_multiple": "<strong>%1</strong> and %2 others have posted replies to: <strong>%3</strong>",
@@ -31,6 +40,7 @@
"user_started_following_you_multiple": "<strong>%1</strong> and %2 others started following you.",
"new_register": "<strong>%1</strong> sent a registration request.",
"new_register_multiple": "There are <strong>%1</strong> registration requests awaiting review.",
"flag_assigned_to_you": "<strong>Flag %1</strong> has been assigned to you",
"email-confirmed": "تم التحقق من عنوان البريد الإلكتروني",
"email-confirmed-message": "شكرًا على إثبات صحة عنوان بريدك الإلكتروني. صار حسابك مفعلًا بالكامل.",
"email-confirm-error-message": "حدث خطأ أثناء التحقق من عنوان بريدك الإلكتروني. ربما رمز التفعيل خاطئ أو انتهت صلاحيته.",

View File

@@ -1,45 +1,51 @@
{
"home": "الصفحة الرئيسية",
"unread": "المواضيع الغير مقروءة",
"popular-day": "Popular topics today",
"popular-week": "Popular topics this week",
"popular-month": "Popular topics this month",
"popular-alltime": "All time popular topics",
"popular-day": "المواضيع الشائعة اليوم",
"popular-week": "المواضيع الشائعة هذا الأسبوع",
"popular-month": "المواضيع الشائعة هذا الشهر",
"popular-alltime": "المواضيع الشائعة منذ القدم",
"recent": "المواضيع الحديثة",
"flagged-posts": "Flagged Posts",
"flagged-content": "Flagged Content",
"ip-blacklist": "IP Blacklist",
"users/online": "اﻷعضاء المتصلون",
"users/latest": "أحدث اﻷعضاء",
"users/sort-posts": "Users with the most posts",
"users/sort-reputation": "Users with the most reputation",
"users/banned": "Banned Users",
"users/search": "User Search",
"users/sort-posts": "الأعضاء الأكثر نشاطاً",
"users/sort-reputation": "الأعضاء الأفضل سمعة",
"users/banned": "الأعضاء المحظورون",
"users/most-flags": "Most flagged users",
"users/search": "بحث عن مستخدم",
"notifications": "التنبيهات",
"tags": "الكلمات الدلالية",
"tag": "Topics tagged under \"%1\"",
"register": "Register an account",
"login": "Login to your account",
"reset": "Reset your account password",
"tag": "المواضيع المرتبطة بالوسم %1",
"register": "تسجيل حساب",
"registration-complete": "Registration complete",
"login": "سجل الدخول الى حسابك",
"reset": "إعادة تعيين كلمة مرور حسابك",
"categories": "الفئات",
"groups": "المجموعات",
"group": "%1 group",
"chats": "Chats",
"group": "%1 مجموعة",
"chats": "محادثات",
"chat": "Chatting with %1",
"flags": "Flags",
"flag-details": "Flag %1 Details",
"account/edit": "Editing \"%1\"",
"account/edit/password": "Editing password of \"%1\"",
"account/edit/username": "Editing username of \"%1\"",
"account/edit/email": "Editing email of \"%1\"",
"account/info": "معلومات الحساب",
"account/following": "People %1 follows",
"account/followers": "People who follow %1",
"account/posts": "Posts made by %1",
"account/topics": "Topics created by %1",
"account/groups": "%1's Groups",
"account/favourites": "%1's Bookmarked Posts",
"account/settings": "User Settings",
"account/bookmarks": "%1's Bookmarked Posts",
"account/settings": "خيارات المستخدم",
"account/watched": "Topics watched by %1",
"account/upvoted": "Posts upvoted by %1",
"account/downvoted": "Posts downvoted by %1",
"account/best": "Best posts made by %1",
"confirm": "Email Confirmed",
"confirm": "تم التحقق من عنوان البريد الإلكتروني",
"maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.",
"maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:",
"throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time."

View File

@@ -6,7 +6,7 @@
"year": "سنة",
"alltime": "دائمًا",
"no_recent_topics": "لايوجد مواضيع جديدة",
"no_popular_topics": "There are no popular 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 ردود جديدة ",

View File

@@ -1,5 +1,6 @@
{
"register": "تسجيل",
"cancel_registration": "إلغاء التسجيل",
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من العامة.",
"help.username_restrictions": "اسم مستخدم فريدة من نوعها بين1% و2% حرفا. يمكن للآخرين ذكرك @ <'span id='your-username> اسم المستخدم </span>.",
"help.minimum_password_length": "كلمة المرور يجب أن تكون على الأقل بها 1% أحرف",
@@ -15,5 +16,8 @@
"alternative_registration": "طريقة تسجيل بديلة",
"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."
"terms_of_use_error": "You must agree to the 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.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:"
}

View File

@@ -8,9 +8,11 @@
"posted-by": "مشاركة من طرف",
"in-categories": "في الفئات",
"search-child-categories": "بحث في الفئات الفرعية",
"has-tags": "Has tags",
"reply-count": "عدد المشاركات",
"at-least": "على اﻷقل",
"at-most": "على اﻷكثر",
"relevance": "Relevance",
"post-time": "تاريخ المشاركة",
"newer-than": "أحدث من",
"older-than": "أقدم من",

View File

@@ -13,7 +13,9 @@
"notify_me": "تلق تنبيهات بالردود الجديدة في هذا الموضوع",
"quote": "اقتبس",
"reply": "رد",
"reply-as-topic": "Reply as topic",
"replies_to_this_post": "%1 Replies",
"last_reply_time": "Last reply",
"reply-as-topic": "رد بموضوع",
"guest-login-reply": "يجب عليك تسجيل الدخول للرد",
"edit": "تعديل",
"delete": "حذف",
@@ -24,25 +26,32 @@
"link": "رابط",
"share": "نشر",
"tools": "أدوات",
"flag": "تبليغ",
"locked": "مقفل",
"bookmark_instructions": "Click here to return to the last unread post in this thread.",
"pinned": "مثبت",
"moved": "منقول",
"bookmark_instructions": "اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
"flag_title": "إشعار بمشاركة مخلة.",
"flag_success": "تم الإشعار بهذه المشاركة على أنها مخلة",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
"not_following_topic.message": "لن تستلم أي تنبيه بخصوص عذا الموضوع بعد الآن.",
"not_following_topic.message": "You will see this topic in the unread topics list, but you will not receive notifications when somebody posts to this topic.",
"ignoring_topic.message": "You will no longer see this topic in the unread topics list. You will be notified when you are mentioned or your post is up voted.",
"login_to_subscribe": "المرجو إنشاء حساب أو تسجيل الدخول حتى يمكنك متابعة هذا الموضوع.",
"markAsUnreadForAll.success": "تم تحديد الموضوع على أنه غير مقروء.",
"mark_unread": "Mark unread",
"mark_unread.success": "Topic marked as unread.",
"mark_unread": "حدده كغير مقروء",
"mark_unread.success": "الموضوع حدد على أنه غير مقروء",
"watch": "مراقبة",
"unwatch": "الغاء المراقبة",
"watch.title": "استلم تنبيها بالردود الجديدة في هذا الموضوع",
"unwatch.title": "ألغ مراقبة هذا الموضوع",
"share_this_post": "انشر هذا الموضوع",
"watching": "مراقبة",
"not-watching": "غير مراقب",
"ignoring": "تجاهل",
"watching.description": "بلغني بالردود الجديدة<br/>\nاظهر الموضوع في غير مقروء",
"not-watching.description": "Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.",
"ignoring.description": "Do not notify me of new replies.<br/>Do not show topic in unread.",
"thread_tools.title": "أدوات الموضوع",
"thread_tools.markAsUnreadForAll": "علم غير مقروء",
"thread_tools.markAsUnreadForAll": "Mark unread for all",
"thread_tools.pin": "علق الموضوع",
"thread_tools.unpin": "إلغاء تعليق الموضوع",
"thread_tools.lock": "أقفل الموضوع",
@@ -51,7 +60,7 @@
"thread_tools.move_all": "نقل الكل",
"thread_tools.fork": "إنشاء فرع الموضوع",
"thread_tools.delete": "حذف الموضوع",
"thread_tools.delete-posts": "Delete Posts",
"thread_tools.delete-posts": "مشاركات محذوفة",
"thread_tools.delete_confirm": "هل أنت متأكد أنك تريد حذف هذا الموضوع؟",
"thread_tools.restore": "استعادة الموضوع",
"thread_tools.restore_confirm": "هل أنت متأكد أنك تريد استعادة هذا الموضوع؟",
@@ -65,9 +74,9 @@
"disabled_categories_note": "الفئات المعطلة رمادية",
"confirm_move": "انقل",
"confirm_fork": "فرع",
"favourite": "Bookmark",
"favourites": "Bookmarks",
"favourites.has_no_favourites": "You haven't bookmarked any posts yet.",
"bookmark": "Bookmark",
"bookmarks": "Bookmarks",
"bookmarks.has_no_bookmarks": "You haven't bookmarked any posts yet.",
"loading_more_posts": "تحميل المزيد من المشاركات",
"move_topic": "نقل الموضوع",
"move_topics": "نقل المواضيع",
@@ -77,6 +86,7 @@
"topic_will_be_moved_to": "هذا الموضوع سوف ينقل إلى فئة",
"fork_topic_instruction": "إضغط على المشاركات التي تريد تفريعها",
"fork_no_pids": "لم تختر أي مشاركة",
"fork_pid_count": "1% مشاركة محددة",
"fork_success": "تم إنشاء فرع للموضوع بنجاح! إضغط هنا لمعاينة الفرع.",
"delete_posts_instruction": "Click the posts you want to delete/purge",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
@@ -103,10 +113,7 @@
"most_posts": "اﻷكثر رداً",
"stale.title": "Create new topic instead?",
"stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?",
"stale.create": "Create a new topic",
"stale.reply_anyway": "Reply to this topic anyway",
"link_back": "Re: [%1](%2)",
"spam": "Spam",
"offensive": "Offensive",
"custom-flag-reason": "Enter a flagging reason"
"stale.create": "موضوع جديد",
"stale.reply_anyway": "الرد على هذا الموضوع ",
"link_back": "رد: [%1](%2)"
}

View File

@@ -6,5 +6,8 @@
"selected": "المحددة",
"all": "الكل",
"all_categories": "كل الفئات",
"topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!"
"topics_marked_as_read.success": "تم تحديد المواضيع على أنها مقروءة!",
"all-topics": "كل المواضيع",
"new-topics": "مواضيع جديدة",
"watched-topics": "المواضيع المتابعة"
}

View File

@@ -1,6 +1,6 @@
{
"uploading-file": "Uploading the file...",
"select-file-to-upload": "Select a file to upload!",
"upload-success": "File uploaded successfully!",
"maximum-file-size": "Maximum %1 kb"
"uploading-file": "جاري رفع الملف...",
"select-file-to-upload": "إختر ملف لرفعه!",
"upload-success": "تم رفع الملف بنجاح!",
"maximum-file-size": "الحجم الأقصى %1 كيلوبت"
}

View File

@@ -6,6 +6,7 @@
"postcount": "عدد المشاركات",
"email": "البريد الإلكتروني",
"confirm_email": "تأكيد عنوان البريد الإلكتروني",
"account_info": "معلومات الحساب",
"ban_account": "Ban Account",
"ban_account_confirm": "هل تريد حقاً حظر هاذا العضو؟",
"unban_account": "Unban Account",
@@ -22,7 +23,7 @@
"profile": "الملف الشخصي",
"profile_views": "عدد المشاهدات",
"reputation": "السمعة",
"favourites": "Bookmarks",
"bookmarks": "Bookmarks",
"watched": "متابع",
"followers": "المتابعون",
"following": "يتابع",
@@ -30,16 +31,18 @@
"signature": "توقيع",
"birthday": "عيد ميلاد",
"chat": "محادثة",
"chat_with": "Chat with %1",
"chat_with": "Continue chat with %1",
"new_chat_with": "Start new chat with %1",
"flag-profile": "Flag Profile",
"follow": "تابع",
"unfollow": "إلغاء المتابعة",
"more": "المزيد",
"profile_update_success": "تم تحديث الملف الشخصي بنجاح",
"change_picture": "تغيير الصورة",
"change_username": "Change Username",
"change_email": "Change Email",
"change_username": "تغيير اسم المستخدم",
"change_email": "تغيير البريد اﻹلكتروني",
"edit": "تعديل",
"edit-profile": "Edit Profile",
"edit-profile": "تعديل الملف الشخصي",
"default_picture": "Default Icon",
"uploaded_picture": "الصورة المرفوعة",
"upload_new_picture": "رفع صورة جديدة",
@@ -61,6 +64,9 @@
"upload_a_picture": "رفع صورة",
"remove_uploaded_picture": "Remove Uploaded Picture",
"upload_cover_picture": "Upload cover picture",
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"crop_picture": "Crop picture",
"upload_cropped_picture": "Crop and upload",
"settings": "خيارات",
"show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل",
@@ -88,22 +94,42 @@
"topics_per_page": "المواضيع في كل صفحة",
"posts_per_page": "الردود في كل صفحة",
"notification_sounds": "تشغيل صوت عند تلقي تنبيه",
"notifications_and_sounds": "Notifications & Sounds",
"incoming-message-sound": "Incoming message sound",
"outgoing-message-sound": "Outgoing message sound",
"notification-sound": "Notification sound",
"no-sound": "No sound",
"browsing": "خيارات التصفح",
"open_links_in_new_tab": "فتح الروابط الخارجية في نافدة جديدة",
"enable_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",
"delay_image_loading": "Delay Image Loading",
"image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد فيها",
"follow_topics_you_create": "متابعة المواضيع التي تنشئها",
"grouptitle": "حدد عنوان المجموعة الذي تريد عرضه",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
"grouptitle": "عنوان المجموعة",
"no-group-title": "لا يوجد عنوان للمجموعة",
"select-skin": "Select a Skin",
"select-homepage": "Select a Homepage",
"homepage": "Homepage",
"homepage": "الصفحة الرئيسية",
"homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.",
"custom_route": "Custom Homepage Route",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")",
"sso.title": "Single Sign-on Services",
"sso.associated": "Associated with",
"sso.not-associated": "Click here to associate with"
"sso.not-associated": "Click here to associate with",
"info.latest-flags": "Latest Flags",
"info.no-flags": "No Flagged Posts Found",
"info.ban-history": "Recent Ban History",
"info.no-ban-history": "This user has never been banned",
"info.banned-until": "Banned until %1",
"info.banned-permanently": "Banned permanently",
"info.banned-reason-label": "Reason",
"info.banned-no-reason": "No reason given.",
"info.username-history": "Username History",
"info.email-history": "Email History",
"info.moderation-note": "Moderation Note",
"info.moderation-note.success": "Moderation note saved",
"info.moderation-note.add": "Add note"
}

View File

@@ -2,6 +2,7 @@
"latest_users": "أحدث الأعضاء",
"top_posters": "اﻷكثر مشاركة",
"most_reputation": "أعلى سمعة",
"most_flags": "Most Flags",
"search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث",
"load_more": "حمل المزيد",

View File

@@ -0,0 +1,7 @@
{
"alert.confirm-reload": "Наистина ли искате да презаредите NodeBB?",
"alert.confirm-restart": "Наистина ли искате да рестартирате NodeBB?",
"acp-title": "%1 | Контролен панел за администратори на NodeBB",
"settings-header-contents": "Съдържание"
}

View File

@@ -0,0 +1,11 @@
{
"post-cache": "Кеш за публикации",
"posts-in-cache": "Публикации в кеша",
"average-post-size": "Среден обем на публикация",
"length-to-max": "Дължина / максимум",
"percent-full": "Запълненост: %1%",
"post-cache-size": "Размер на кеша за публикации",
"items-in-cache": "Елементи в кеша",
"control-panel": "Контролен панел",
"update-settings": "Обновяване на настройките на кеша"
}

View File

@@ -0,0 +1,35 @@
{
"x-b": "%1 Б",
"x-mb": "%1 МБ",
"uptime-seconds": "Активно време в секунди",
"uptime-days": "Активно време в дни",
"mongo": "Mongo",
"mongo.version": "Версия на MongoDB",
"mongo.storage-engine": "Система за съхранение",
"mongo.collections": "Колекции",
"mongo.objects": "Обекти",
"mongo.avg-object-size": "Среден размер на обект",
"mongo.data-size": "Размер на данните",
"mongo.storage-size": "Размер на съхраненото",
"mongo.index-size": "Размер на индексите",
"mongo.file-size": "Размер на файловете",
"mongo.resident-memory": "Текущо активна памет",
"mongo.virtual-memory": "Виртуална памет",
"mongo.mapped-memory": "Заделена памет",
"mongo.raw-info": "Сурови данни от MongoDB",
"redis": "Redis",
"redis.version": "Версия на Redis",
"redis.connected-clients": "Свързани клиенти",
"redis.connected-slaves": "Свързани второстепенни сървъри",
"redis.blocked-clients": "Блокирани клиенти",
"redis.used-memory": "Използвана памет",
"redis.memory-frag-ratio": "Коефициент на фрагментиране на паметта",
"redis.total-connections-recieved": "Общо получени свързвания",
"redis.total-commands-processed": "Общо обработени команди",
"redis.iops": "Едновременни операции в секунда",
"redis.keyspace-hits": "Успешни търсения на ключове",
"redis.keyspace-misses": "Неуспешни търсения на ключове",
"redis.raw-info": "Сурови данни от Redis"
}

View File

@@ -0,0 +1,14 @@
{
"figure-x": "Фигура %1",
"error-events-per-day": "<code>%1</code> събития на ден",
"error.404": "Страницата не е намерена (Грешка 404)",
"error.503": "Услугата е недостъпна (Грешка 503)",
"manage-error-log": "Управление на журнала за грешки",
"export-error-log": "Изнасяне на журнала за грешки (CSV)",
"clear-error-log": "Изчистване на журнала за грешки",
"route": "Маршрут",
"count": "Брой",
"no-routes-not-found": "Ура! Няма грешки от вида „404“!",
"clear404-confirm": "Наистина ли искате да изчистите журналите за грешки от вида 404?",
"clear404-success": "Грешките от вида „Страницата не е намерена (Грешка 404)“ бяха изчистени."
}

View File

@@ -0,0 +1,6 @@
{
"events": "Събития",
"no-events": "Няма събития",
"control-panel": "Контролен панел за събитията",
"delete-events": "Изтриване на събитията"
}

View File

@@ -0,0 +1,7 @@
{
"logs": "Журнали",
"control-panel": "Контролен панел за журналите",
"reload": "Презареждане на журналите",
"clear": "Изчистване на журналите",
"clear-success": "Журналите са изчистени!"
}

View File

@@ -0,0 +1,9 @@
{
"custom-css": "Персонализиран CSS",
"custom-css.description": "Въведете своите собствени декларации за стилове, те ще бъдат приложени след всички останали стилове.",
"custom-css.enable": "Включване на персонализиран CSS",
"custom-header": "Персонализирана заглавна част",
"custom-header.description": "Въведете своя персонализиран код HTML тук (напр. JavaScript, елементи „meta“ и т.н.), те ще бъдат добавени към секцията <code>&lt;head&gt;</code> в кода на Вашия форум.",
"custom-header.enable": "Включване на персонализирана заглавна част"
}

View File

@@ -0,0 +1,9 @@
{
"loading": "Зареждане на облиците…",
"homepage": "Начална страница",
"select-skin": "Изберете облик",
"current-skin": "Текущ облик",
"skin-updated": "Обликът е променен",
"applied-success": "Обликът „%1“ беше успешно приложен",
"revert-success": "Обликът е върнат към основните цветове."
}

View File

@@ -0,0 +1,11 @@
{
"checking-for-installed": "Проверяване за инсталирани теми…",
"homepage": "Начална страница",
"select-theme": "Изберете тема",
"current-theme": "Текуща тема",
"no-themes": "Няма намерени инсталирани теми",
"revert-confirm": "Наистина ли искате да възстановите стандартната тема на NodeBB?",
"theme-changed": "Темата е променена",
"revert-success": "Вие възстановихте успешно стандартната тема на NodeBB.",
"restart-to-activate": "Моля, рестартирайте NodeBB, за да може тази тема да влезе в сила напълно."
}

View File

@@ -0,0 +1,16 @@
{
"you-are-on": "Информация — Вие сте на <strong>%1:%2</strong>",
"host": "сървър",
"pid": "ид. на процеса",
"nodejs": "nodejs",
"online": "на линия",
"git": "git",
"load": "натоварване",
"uptime": "активно време",
"registered": "Регистрирани",
"sockets": "Сокети",
"guests": "Гости",
"info": "Информация"
}

View File

@@ -0,0 +1,12 @@
{
"logger-settings": "Настройки на журнала",
"description": "Ако поставите отметки тук, Вие ще виждате журнала в терминала си. Ако посочите пътечка, то вместо това журналите ще бъдат записвани във файл. Журналът чрез HTTP е удобен за получаване на статистика за това кога, кои и какви хора посещават форума Ви. В допълнение към следенето на заявките чрез HTTP, можем също да следим и събитията на socket.io. Журналът на Socket.io, в комбинация с redis-cli, може да Ви бъде много полезно, ако искате да разучите как работи NodeBB.",
"explanation": "За да включите или изключите журналите в реално време, просто поставете или премахнете отметките в настройките на журнала. Няма нужда от рестартиране.",
"enable-http": "Включване на журнала чрез HTTP",
"enable-socket": "Включване на журналите за събития на socket.io",
"file-path": "Път до файла на журнала",
"file-path-placeholder": "/път/до/файла/на/журнала.log ::: ако е празно, журналът ще се извежда в терминала",
"control-panel": "Контролен панел за журнала",
"update-settings": "Промяна на настройките на журнала"
}

View File

@@ -0,0 +1,47 @@
{
"installed": "Инсталирани",
"active": "Включени",
"inactive": "Изключени",
"out-of-date": "Остарели",
"none-found": "Няма намерени добавки.",
"none-active": "Няма включени добавки.",
"find-plugins": "Търсене на добавки",
"plugin-search": "Търсене на добавки",
"plugin-search-placeholder": "Търсене на добавка…",
"reorder-plugins": "Пренареждане на добавките",
"order-active": "Подреждане на включените добавки",
"dev-interested": "Искате ли да пишете добавки за NodeBB?",
"docs-info": "Документацията за създаване на добавки може да бъде открита в <a target=\"_blank\" href=\"https://docs.nodebb.org/en/latest/plugins/create.html\">страницата с документация на NodeBB</a>.",
"order.description": "Някои добавки работят най-добре, ако бъдат инсталирани преди или след други добавки.",
"order.explanation": "Добавките се зареждат в реда, посочен тук, от горе надолу.",
"plugin-item.themes": "Теми",
"plugin-item.deactivate": "Изключване",
"plugin-item.activate": "Включване",
"plugin-item.install": "Инсталиране",
"plugin-item.uninstall": "Деинсталиране",
"plugin-item.settings": "Настройки",
"plugin-item.installed": "Инсталирани",
"plugin-item.latest": "Най-нови",
"plugin-item.upgrade": "Обновяване",
"plugin-item.more-info": "За повече информация",
"plugin-item.unknown": "Неизвестно",
"plugin-item.unknown-explanation": "Състоянието на тази добавка не може да бъде определено, може би поради грешка в конфигурацията.",
"alert.enabled": "Добавката е включена",
"alert.disabled": "Добавката е изключена",
"alert.upgraded": "Добавката е обновена",
"alert.installed": "Добавката е инсталирана",
"alert.uninstalled": "Добавката е деинсталирана",
"alert.activate-success": "Моля, рестартирайте NodeBB, за да включите тази добавка напълно.",
"alert.deactivate-success": "Добавката е изключена успешно.",
"alert.upgrade-success": "Моля, презаредете NodeBB, за да обновите тази добавка напълно.",
"alert.install-success": "Добавката е инсталирана успешно, моля, включете я",
"alert.uninstall-success": "Добавката беше изключена и деинсталирана успешно.",
"alert.suggest-error": "<p>NodeBB не може да се свърже с пакетния мениджър. Искате ли да продължите с инсталацията на най-новата версия?</p><div class=\"alert alert-danger\"><strong>Сървърът върна (%1)</strong>: %2</div>",
"alert.package-manager-unreachable": "<p>NodeBB не може да се свърже с пакетния мениджър. Не се препоръчва обновяване в момента.</p>",
"alert.incompatible": "<p>Вашата версия на NodeBB (версия %1) може да използва най-много версия %2 на тази добавка. Моля, обновете NodeBB, ако искате да инсталирате по-нова версия на тази добавка.</p>",
"alert.possibly-incompatible": "<div class=\"alert alert-warning\"><p><strong>Няма информация за съвместимостта</strong></p><p>Тази добавка не е посочила конкретна версия за инсталация, съвместима с Вашата версия на NodeBB. Не можем да гарантираме пълна съвместимост и има възможност Вашият NodeBB да не може да стартира правилно.</p></div><p>Ако NodeBB не може да стартира, използвайте следната команда:</p><pre><code>$ ./nodebb reset plugin=\"%1\"</code></pre><p>Искате ли да продължите с инсталацията на най-новата версия на тази добавка?</p>"
}

View File

@@ -0,0 +1,17 @@
{
"rewards": "Награди",
"condition-if-users": "Ако потребителският(ата/ото)",
"condition-is": "Е:",
"condition-then": "Тогава:",
"max-claims": "Колко пъти може да бъде получавана наградата",
"zero-infinite": "0 = безкраен брой пъти",
"delete": "Изтриване",
"enable": "Включване",
"disable": "Изключване",
"control-panel": "Управление на наградите",
"new-reward": "Нова награда",
"alert.delete-success": "Наградата е изтрита успешно",
"alert.no-inputs-found": "Неправомерна награда — няма нищо въведено!",
"alert.save-success": "Наградите са запазени успешно"
}

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