Compare commits

...

2598 Commits

Author SHA1 Message Date
Julian Lam
2832265677 fixed #1477 2014-05-04 16:47:58 -04:00
Julian Lam
5df0ebf895 updated shrinkwrap file 2014-05-02 23:55:09 -04:00
Julian Lam
0bc8b20f70 Merge branch 'master' into v0.4.x 2014-05-02 23:54:25 -04:00
Julian Lam
436a97129f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-05-02 23:53:37 -04:00
Julian Lam
6f064a4f15 latest translations 2014-05-02 23:53:30 -04:00
Julian Lam
4f127e2001 tr and fr changes 2014-05-02 23:50:10 -04:00
barisusakli
ab15dba0de closes #1472 2014-05-02 18:07:58 -04:00
psychobunny
111898ab0f closes #1467 2014-05-02 16:49:56 -04:00
barisusakli
f3d0d70867 closes #1471 2014-05-02 16:02:26 -04:00
psychobunny
681d9c95ab updating plugin docs 2014-05-02 02:22:10 -04:00
Julian Lam
d112d62a3f updated plugin docs 2014-05-02 02:03:10 -04:00
psychobunny
6f0e749b60 Merge pull request #1462 from frissdiegurke/master
added new settings-system
2014-05-02 01:41:10 -04:00
Barış Soner Uşaklı
1ed9d4a9c9 Merge pull request #1468 from Schamper/patch-1
Add a return statement to the callback
2014-05-01 19:30:18 -04:00
barisusakli
936530dc48 possible fix for #1467 2014-05-01 19:01:19 -04:00
Erik Schamper
849db3b858 Add a return statement to the callback
To prevent a "callback already called".
2014-05-02 00:57:05 +02:00
barisusakli
dea4b78cb9 fixes tooltip for users that go online/offline 2014-05-01 18:30:26 -04:00
psychobunny
fe739aac71 updated hooks docs 2014-05-01 16:22:06 -04:00
psychobunny
531ad4dec1 action:settings.set 2014-05-01 16:22:05 -04:00
Julian Lam
90269ad9b8 fixed bad example code 2014-05-01 15:43:28 -04:00
Julian Lam
f4d5c93b78 0.4.2 2014-05-01 15:26:47 -04:00
Julian Lam
727ac0d534 0.4.2 2014-05-01 15:26:04 -04:00
Julian Lam
7f54cb2452 updating shrinkwrap file for 0.4.2 2014-05-01 15:25:57 -04:00
Julian Lam
b858193753 Merge branch 'master' into v0.4.x 2014-05-01 15:24:30 -04:00
Julian Lam
a5410f7ae7 added stub plugins socket file for plugin usage (ping @schamper @frissdiegurke @akhoury @psychobunny @barisusakli) 2014-05-01 15:23:58 -04:00
Julian Lam
b1b2a03747 Merge branch 'master' into v0.4.x 2014-05-01 15:15:25 -04:00
Julian Lam
970b259e06 fixed #907 2014-05-01 15:06:27 -04:00
psychobunny
3e296a42f7 documenting the new hook 2014-05-01 14:37:46 -04:00
psychobunny
65565e187b simplified the above to action.user.set instead 2014-05-01 14:37:26 -04:00
psychobunny
75baf28530 added action:user.decremented and action:user.incremented hooks 2014-05-01 14:30:53 -04:00
psychobunny
a14ce9d0c6 closes #1352 2014-05-01 14:24:31 -04:00
psychobunny
271843d417 closes #1385 2014-05-01 14:04:27 -04:00
psychobunny
882589acae moved findBootstrapEnvironment into utils 2014-05-01 13:43:07 -04:00
barisusakli
3ecd523799 added jquery ui datepicker 2014-05-01 11:59:28 -04:00
Ole Reglitzki
4da8121827 jsbeautify 2014-05-01 15:12:31 +02:00
Ole Reglitzki
d76ba519d4 added new settings-system 2014-05-01 14:58:12 +02:00
barisusakli
e0a83728d6 closes #1458 2014-04-30 18:02:35 -04:00
barisusakli
63d88957a8 replace self links client side 2014-04-30 17:42:50 -04:00
barisusakli
c8efeb7d7c closes #1400, bunch of other fixes to 404, 403 in accounts 2014-04-30 17:24:53 -04:00
psychobunny
8fa3baf32d closes #1455 2014-04-30 16:00:06 -04:00
psychobunny
4961becd1d Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-04-30 14:51:10 -04:00
Barış Soner Uşaklı
e5d33a57d9 Update style-guide.rst 2014-04-30 14:50:56 -04:00
psychobunny
809db61b8a Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-04-30 14:50:52 -04:00
psychobunny
48d3e884ea updated nodebb logo to https 2014-04-30 14:50:46 -04:00
barisusakli
af6a40e23c use thumb directly 2014-04-30 14:48:48 -04:00
psychobunny
4b18403fa6 moving controls object into its own module 2014-04-30 14:23:07 -04:00
psychobunny
775e6ec8ce comopser bugfix 2014-04-30 14:23:06 -04:00
psychobunny
090ecaffd1 closes #1444 2014-04-30 14:23:04 -04:00
barisusakli
75824c0d81 dont send notifications for guests 2014-04-30 14:21:52 -04:00
psychobunny
bb12ebac48 closes #1442 2014-04-30 13:42:54 -04:00
barisusakli
b88df6420d check err 2014-04-30 13:37:56 -04:00
psychobunny
5538cb22b0 Update README.md 2014-04-30 13:35:02 -04:00
psychobunny
f72fd302dc Update README.md 2014-04-30 13:33:00 -04:00
psychobunny
1baf2286c2 Update README.md 2014-04-30 13:32:31 -04:00
Julian Lam
b049bd466c added 'config.version' to client-side 2014-04-30 09:12:15 -04:00
Julian Lam
e65896351a checkReplace typo 2014-04-29 21:32:54 -04:00
barisusakli
3552678645 use id as name like others 2014-04-29 14:14:08 -04:00
barisusakli
dde872d6d5 log user ip register 2014-04-29 14:08:05 -04:00
barisusakli
a329fcadaa possibly fixes #1454 2014-04-29 13:54:04 -04:00
barisusakli
fdfd421e1c fixes error during user delete and ban 2014-04-28 22:39:27 -04:00
psychobunny
45195aa59a for https://github.com/designcreateplay/NodeBB/issues/1393 2014-04-28 19:00:29 -04:00
barisusakli
5f7ed289de print stack on db error 2014-04-28 18:55:09 -04:00
psychobunny
8e3f1e66e9 changed the copyright from our usernames to just NodeBB 2014-04-28 17:18:17 -04:00
psychobunny
76d60be60a fixed all of the internal links that were still pointing to the wiki 2014-04-28 17:18:16 -04:00
psychobunny
320909d5fb converting md to rest 2014-04-28 17:18:15 -04:00
psychobunny
1d6623dd1c forgot to port "how to run nodebb" 2014-04-28 17:18:14 -04:00
psychobunny
ca365118d3 converted upgrading steps, also added to backup section (todo: mongo) 2014-04-28 17:18:14 -04:00
psychobunny
35e202a64e converted widgets section over 2014-04-28 17:18:13 -04:00
psychobunny
56da48b222 l2documentation 2014-04-28 17:18:12 -04:00
psychobunny
c41a8872d3 finished help section 2014-04-28 17:18:11 -04:00
psychobunny
245bb6e7b0 some md to rest changes 2014-04-28 17:18:10 -04:00
psychobunny
1e9439b9b4 removing some unused files 2014-04-28 17:18:09 -04:00
psychobunny
f86a0eab64 helping out the nodebb project section 2014-04-28 17:18:08 -04:00
psychobunny
a8ad38816b simplified the ToC tree a little, and got rid of the i8n section 2014-04-28 17:18:08 -04:00
psychobunny
23f39fd13e fixed some internal links 2014-04-28 17:18:07 -04:00
psychobunny
eddf1a6436 fixed ToC 2014-04-28 17:18:06 -04:00
psychobunny
96ddd024b5 creating a new theme 2014-04-28 17:18:05 -04:00
psychobunny
6640b4b899 rewrote the templating docs (never updated that since 0.3x derp) 2014-04-28 17:18:04 -04:00
psychobunny
7e46d3de5e contributing docs 2014-04-28 17:18:03 -04:00
psychobunny
e64ab5fa82 merged help sections into one 2014-04-28 17:18:03 -04:00
psychobunny
66182b881a got rid of the separate resources sections and combined into one developer's resources 2014-04-28 17:18:02 -04:00
psychobunny
68e250ed02 plugin resources section 2014-04-28 17:18:01 -04:00
psychobunny
d4fa056569 removed deprecated documentation in plugins; fixed internal links 2014-04-28 17:18:00 -04:00
psychobunny
f3cc98b2c0 wrapped up hooks section 2014-04-28 17:17:59 -04:00
psychobunny
8bb225d8c0 init plugins documentation 2014-04-28 17:17:58 -04:00
psychobunny
f3fcae0711 contributors section 2014-04-28 17:17:57 -04:00
psychobunny
db31072f91 style guide docs 2014-04-28 17:17:57 -04:00
psychobunny
eae4fa59e3 imgur and s3 docs 2014-04-28 17:17:56 -04:00
psychobunny
be2ed6b7d7 file/image uploading docs 2014-04-28 17:17:55 -04:00
psychobunny
11a64f3789 social network docs 2014-04-28 17:17:54 -04:00
psychobunny
ee63ecbe3e ported varnish docs 2014-04-28 17:17:53 -04:00
psychobunny
7ac3f82c5e ported nginx docs 2014-04-28 17:17:52 -04:00
psychobunny
7e63d61ef0 finished porting apache docs 2014-04-28 17:17:51 -04:00
psychobunny
aada6c3b6e edited makefile to delete the build directory before compiling 2014-04-28 17:17:50 -04:00
psychobunny
be28f7b378 fixing menu 2014-04-28 17:17:49 -04:00
psychobunny
054f534108 proxies init 2014-04-28 17:17:48 -04:00
psychobunny
119da68310 added ToC and more description to intro 2014-04-28 17:17:47 -04:00
psychobunny
c41f983df9 ported level docs 2014-04-28 17:17:46 -04:00
psychobunny
e7fb82dbe3 ported mongo docs 2014-04-28 17:17:45 -04:00
psychobunny
a7a70accad configuring databases, init 2014-04-28 17:17:45 -04:00
psychobunny
0e13c585d6 organized installation guides better 2014-04-28 17:17:44 -04:00
psychobunny
ce4d0b366f ported cloud9 docs 2014-04-28 17:17:43 -04:00
psychobunny
f3695cf2da ported heroku docs 2014-04-28 17:17:42 -04:00
psychobunny
cc106d1251 docs: installing nodebb on the cloud 2014-04-28 17:17:42 -04:00
psychobunny
df6fdf6f09 moved all installation guides into separate files; finished converting installation section to reST 2014-04-28 17:17:41 -04:00
psychobunny
e23750ac49 minor changes to docs 2014-04-28 17:17:40 -04:00
psychobunny
87fee232bc completed the skeleton files for all the docs 2014-04-28 17:17:39 -04:00
psychobunny
6d48acfd37 okay... wrote an index for help and organized stuff. lets do this! 2014-04-28 17:17:38 -04:00
psychobunny
1bea6e4ee5 more documentation, man reST hurts my brain 2014-04-28 17:17:37 -04:00
psychobunny
d84182cb9b .gitignore for sphinx 2014-04-28 17:17:36 -04:00
psychobunny
ca2743eb07 starting porting installation page 2014-04-28 17:17:36 -04:00
psychobunny
39befcb65b docs index page 2014-04-28 17:17:35 -04:00
psychobunny
85312da334 activate sphinx theme 2014-04-28 17:17:34 -04:00
psychobunny
c60da18bd6 sphinx theme 2014-04-28 17:17:34 -04:00
psychobunny
ed51a739ea init sphinx docs 2014-04-28 17:17:33 -04:00
barisusakli
80ef7e5085 closes #1423 2014-04-28 15:54:37 -04:00
psychobunny
1996c8ad49 fixing less imports on windows 2014-04-28 14:44:42 -04:00
Julian Lam
807f81bc9f Merge pull request #1450 from frissdiegurke/patch-1
use nodejs instead of node command if it exists
2014-04-28 07:43:49 -04:00
frissdiegurke
64a1eab980 use nodejs instead of node command if it exists
closes #1449
2014-04-28 11:39:50 +02:00
barisusakli
ee12b4fd3e removed duplication in uploads 2014-04-28 01:52:25 -04:00
barisusakli
8ce3e44d7b closes #1418 2014-04-27 17:40:39 -04:00
barisusakli
53021d31b0 closes #1446 2014-04-27 17:32:24 -04:00
barisusakli
fa8cdce748 closes #1448 2014-04-27 17:17:07 -04:00
barisusakli
1d1d677b56 closes #1422 2014-04-27 16:41:40 -04:00
Julian Lam
a32fd3f6f9 fixed #1222 2014-04-27 13:32:58 -04:00
Julian Lam
8f67252547 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-04-27 12:29:06 -04:00
barisusakli
cd3bb77a7f added reqFromSocket to topic posting
new filter topic.post
2014-04-27 00:47:08 -04:00
barisusakli
efdb511c2c fixed posted_in_ago language key 2014-04-26 16:33:28 -04:00
barisusakli
c9551abc5d closes #1432
ability to select a default gravatar image (default, identicon,
mystery-man, monsterid, wavatar, retro) or upload a custom image to use
as default gravatar image
2014-04-26 15:53:00 -04:00
psychobunny
066b1c0d64 @akhoury and his comments.. :p + jshinting 2014-04-26 04:43:53 -04:00
psychobunny
eac0044dd1 Merge pull request #1443 from akhoury/master
added new hook:  filter:topic.reply
2014-04-26 04:39:48 -04:00
Aziz Khoury
32a5334402 socket.handshake.address may not always be defined, thanks @psychobunny 2014-04-26 04:29:53 -04:00
Aziz Khoury
056b39709f no need for quotes 2014-04-26 03:26:23 -04:00
Aziz Khoury
65ff72b0e3 its 3am 2014-04-26 03:19:56 -04:00
Aziz Khoury
c7bd27fb3f spaces vs tabs ugh 2014-04-26 03:16:07 -04:00
Aziz Khoury
fa7db423c6 adding hook filter:topic.reply for antispam 2014-04-26 03:00:56 -04:00
barisusakli
caa0c45a11 closes #1441 2014-04-25 16:34:34 -04:00
Julian Lam
f8d57aae09 jp config to tx 2014-04-25 08:21:09 -04:00
Julian Lam
4c4689474f Merge pull request #1440 from rjyo/feature/japanese-translation
Add Japanese translation
2014-04-25 08:17:52 -04:00
Rakuraku Jyo
614210f08e Use less characters to describe the same meaning 2014-04-25 16:07:14 +09:00
Rakuraku Jyo
4c9670208b Add Japanese translation 2014-04-25 15:17:21 +09:00
barisusakli
d05920ec78 refactor of thread tools 2014-04-24 20:05:05 -04:00
barisusakli
68fd997efd closes #1419 2014-04-24 18:59:19 -04:00
barisusakli
fa221437dc removed whitespace 2014-04-24 16:32:43 -04:00
barisusakli
7339cb5d61 closes #1434 2014-04-24 16:19:31 -04:00
barisusakli
6f2ea3eafc closes #1439 2014-04-24 15:53:41 -04:00
barisusakli
adf6f34e42 closes #1436 2014-04-24 15:29:05 -04:00
Tung
06632f05e0 Vietnamese translations from Transifex 2014-04-24 08:26:21 -04:00
psychobunny
f9291ced2d fixed plugin activation of unpublished plugins 2014-04-23 23:18:10 -04:00
barisusakli
cf94a71499 closes #1427
flag and chat buttons are hidden on self posts, updated in vanilla and
lavender
2014-04-23 21:47:51 -04:00
barisusakli
3ca45fa061 closes #1433
installed plugins are displayed at the top
2014-04-23 21:23:07 -04:00
Julian Lam
2b9b888aee minor jshinting 2014-04-23 21:20:55 -04:00
Julian Lam
4ca7eaf1fc latest translations 2014-04-23 21:12:32 -04:00
psychobunny
ef03af9614 allow supervisor to watch less files as well 2014-04-23 19:59:55 -04:00
psychobunny
2627ed0fcd fixed filter:admin.scripts.get 2014-04-23 19:30:38 -04:00
psychobunny
0079964d68 fixing start up crash when running with supervisor 2014-04-23 18:31:59 -04:00
Julian Lam
5f5906860e fixed #1406 2014-04-23 16:21:14 -04:00
Julian Lam
46c281db3d Merge pull request #1409 from miksago/formatting-dispatch-table
Composer: Implement formatting bar dispatch table
2014-04-23 15:55:04 -04:00
Julian Lam
a796940064 closed #1421 use --no-daemon flag to... not daemonize. Also, install script can be canceled without throwing errors. 2014-04-23 08:54:31 -04:00
Julian Lam
33bba9b596 Merge pull request #1431 from frissdiegurke/patch-1
added request as dependency. fixes #1430
2014-04-23 08:16:27 -04:00
frissdiegurke
5bb02d62e7 added request as dependency. fixes #1430 2014-04-23 14:04:27 +02:00
barisusakli
a1e6a3616c ability to install/uninstall plugins from ACP 2014-04-22 21:02:58 -04:00
psychobunny
e97a705f5c couple of console.logs 2014-04-22 14:45:55 -04:00
barisusakli
90f5683cc2 read redis host just before connecting 2014-04-22 01:39:57 -04:00
Julian Lam
dd53fb9b6a latest translations 2014-04-21 18:25:38 -04:00
barisusakli
1000df09ff replaced hardcoded english string 2014-04-21 15:15:38 -04:00
barisusakli
2d48f670c7 moved html from language files to templates 2014-04-21 14:54:27 -04:00
barisusakli
3c11030929 closes #1398 2014-04-21 13:29:40 -04:00
Julian Lam
4144abf6e3 added Malay language pack. Tahniah! 2014-04-20 17:54:09 -04:00
Julian Lam
3a32f6161a latest translations 2014-04-20 17:53:16 -04:00
Julian Lam
93b02e8591 latest translations from German 2014-04-20 17:51:41 -04:00
barisusakli
3ed90cda91 added new language string for guests 2014-04-20 17:49:58 -04:00
barisusakli
21e30cc0c7 new language string 2014-04-20 16:27:58 -04:00
barisusakli
844923d538 added guest language string 2014-04-20 15:17:17 -04:00
barisusakli
2ad715ead3 closes #1412 2014-04-20 15:07:53 -04:00
Julian Lam
e86d2d72c6 updated pt_BR 2014-04-20 11:03:51 -04:00
barisusakli
a8a38522c1 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-04-20 01:31:21 -04:00
barisusakli
bca2755c3e possible fix for #1410 2014-04-20 01:31:17 -04:00
Barış Soner Uşaklı
eb0f18c586 Merge pull request #1413 from frissdiegurke/patch-1
fixed wrong calls of getSortedSetRevRangeByScore
2014-04-20 01:26:46 -04:00
frissdiegurke
590604b288 fixed wrong calls of getSortedSetRevRangeByScore 2014-04-20 07:23:19 +02:00
barisusakli
1ed5145738 better check for pinned 2014-04-20 01:18:20 -04:00
barisusakli
1e3577afe5 fixes topics going to the bottom 2014-04-20 00:45:25 -04:00
barisusakli
c64da01080 closes #1410 2014-04-19 20:12:58 -04:00
psychobunny
ad8239aa31 alerts - parse globals before translating 2014-04-19 16:38:14 -04:00
Julian Lam
9a75a55500 removing footer from tx config 2014-04-19 14:34:32 -04:00
barisusakli
8d3f72b5a1 closes #1404 2014-04-19 14:31:46 -04:00
psychobunny
090c4e2aa9 action:ajaxify.contentLoaded - after #content is populated but before fade in animation - append elements to DOM at this stage. 2014-04-19 12:38:34 -04:00
psychobunny
da4113e1f1 Revert "last commit doesn't play well with ajaxify, need a rethink."
This reverts commit f85678e938.
2014-04-19 12:24:45 -04:00
psychobunny
f85678e938 last commit doesn't play well with ajaxify, need a rethink. 2014-04-19 12:15:17 -04:00
psychobunny
1f9bdd840f allow for the possibility of custom post-header or pre-footer templating 2014-04-19 11:56:39 -04:00
psychobunny
af54d9fa64 if translator.addTranslation is called before translator is done loading, the loading property is never set, which crashes translator 2014-04-19 10:52:53 -04:00
Micheil Smith
ae9f675b80 Composer: Use formatting dispatch table for inserting uploads and pictures 2014-04-19 15:14:23 +01:00
Micheil Smith
bf7de0d051 Composer: Switch to using a dispatch table for buttons
Note: for now, it looks a little messy, but once I merge wrapSelectionInTextareaWith and insertIntoTextarea, it won't be. Promise.
2014-04-19 15:13:57 +01:00
psychobunny
7b453edb2d don't crash if language file not found
@barisusakli seems like something needs footer.json, maybe it's a plugin
if its not crashing for you
2014-04-19 10:01:01 -04:00
psychobunny
7fb5db76d3 updated copyright year 2014-04-19 09:50:36 -04:00
psychobunny
016ea8dc32 Merge pull request #1408 from xbenjii/master
Alert typo
2014-04-19 08:36:03 -04:00
xbenjii
e1ad061fdc Fixed typo 2014-04-19 12:02:33 +01:00
Julian Lam
82fd8d79a0 turkish updates 2014-04-19 02:17:41 -04:00
barisusakli
254267e577 removed 2 titles 2014-04-18 17:52:11 -04:00
barisusakli
d431c94ed8 added variable to replying to string 2014-04-18 17:49:39 -04:00
barisusakli
9d61a1bae3 fixed translation string 2014-04-18 16:22:16 -04:00
barisusakli
6cac3c176e removed onlined from users 2014-04-18 15:37:55 -04:00
barisusakli
255115745f new language keys closes #1403 2014-04-18 15:13:55 -04:00
psychobunny
0a727a4af9 use ajaxify.refresh() to revert changes 2014-04-18 13:22:07 -04:00
psychobunny
f3993aca4d closes #1397 2014-04-18 13:20:50 -04:00
barisusakli
6a1fa82b8b closes #1402 2014-04-18 13:14:38 -04:00
Julian Lam
758a7f109e missing comma -- fixed #1401 2014-04-18 12:57:26 -04:00
Julian Lam
28bad893e5 Revert "removed until #1401 is fixed"
This reverts commit 87fc70d90d.
2014-04-18 12:57:16 -04:00
Julian Lam
8934ac1a2d added try..catch to server parsing of translations, in case a file has a syntax error -- #1401 2014-04-18 12:55:11 -04:00
barisusakli
b4dc2eebe9 removed one of the timeouts in user search 2014-04-18 12:46:50 -04:00
Julian Lam
770bf2bc44 fixed minver warning, so that nodebb doesn't complain that your version is too NEW for a plugin, heh 2014-04-18 12:43:32 -04:00
barisusakli
87fc70d90d removed until #1401 is fixed 2014-04-18 02:14:42 -04:00
Julian Lam
7aa785b205 fixed problem with nodebb always restarting when SIGTERM'd -- @frissdiegurke 2014-04-17 22:35:57 -04:00
barisusakli
ef342b9d40 added two new strings for #1399 2014-04-17 22:12:04 -04:00
barisusakli
e12beccc09 closes #1371
adds a dropdown to category view to move/pin/lock/delete multiple topics
2014-04-17 20:07:27 -04:00
psychobunny
45e9b53f10 button to revert changes in categories admin 2014-04-17 14:39:20 -04:00
psychobunny
a5e304cc0a inline editing of admin/categories description & name 2014-04-17 14:25:07 -04:00
psychobunny
6f1a795f0e upload_url shouldn't use path.join 2014-04-17 13:22:03 -04:00
psychobunny
51a7d163be fixes #1396 2014-04-17 13:12:01 -04:00
Julian Lam
5b38c3b9ee fixed #1395 2014-04-17 13:04:46 -04:00
Julian Lam
d95398f808 more graceful handling of missing pidfile, #1395 2014-04-17 12:09:42 -04:00
Julian Lam
20d1723e84 added success and error to transifex, latest translations 2014-04-17 10:51:39 -04:00
Julian Lam
a73588c764 Lithuanian translations 2014-04-17 10:42:19 -04:00
Julian Lam
c03099ce90 fixed wrong capitalization -- thanks @akhoury 2014-04-16 21:59:02 -04:00
psychobunny
bd59134cf0 closes #1391 2014-04-16 21:05:14 -04:00
psychobunny
0be414dab9 add registered-only checkbox option to widgets 2014-04-16 21:02:25 -04:00
Julian Lam
126260a027 added cache-buster to template xhr urls -- closed #1392 2014-04-16 20:19:26 -04:00
barisusakli
7c00bce63c faster checkAndReplace
still need a better solution for this uniqueId business but this is
better than before.
2014-04-16 18:07:45 -04:00
Julian Lam
8aea4ad7fa latest translations 2014-04-16 17:43:04 -04:00
psychobunny
7487a92953 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-04-16 17:42:47 -04:00
psychobunny
ef52d47f41 importing latest templates.js 2014-04-16 17:42:43 -04:00
Julian Lam
c9f82d26ff Merge branch 'issue-1249' 2014-04-16 17:39:31 -04:00
Julian Lam
dc051b9060 final pass #1249 2014-04-16 17:38:34 -04:00
barisusakli
e7a415246e closes #1390 2014-04-16 17:33:48 -04:00
Julian Lam
15bf804fa7 daily digest settings in User Settings 2014-04-16 16:47:51 -04:00
Julian Lam
20a3c1612c increased CI timer to 10s 2014-04-16 16:13:48 -04:00
Julian Lam
7c08831aaf Merge remote-tracking branch 'origin/master' into issue-1249 2014-04-16 16:10:11 -04:00
barisusakli
92db112367 reverted previous commit 2014-04-16 15:51:05 -04:00
barisusakli
f0428f5f1f removed double post notification #1386 2014-04-16 15:46:50 -04:00
barisusakli
f9897daad1 all notifications are translated now closes #1388 2014-04-16 15:31:51 -04:00
Julian Lam
e00f49ae8c restored test coverage... lol 2014-04-16 15:22:39 -04:00
Julian Lam
84a34933fe fixed #1351 -- ACP will tell user that they need to restart, if they need to restart 2014-04-16 15:11:00 -04:00
Julian Lam
8cb2b9b97a fixed #1351 -- themes and plugins no longer auto-restart the server 2014-04-16 14:46:14 -04:00
barisusakli
9dbe479d11 closes #1389 2014-04-16 14:43:25 -04:00
barisusakli
01555cbb5c return privileges in category 2014-04-16 14:30:36 -04:00
psychobunny
5b8fcbe27e fixed post error message 2014-04-16 13:12:26 -04:00
Julian Lam
c3a4bcb116 first pass #1249 -- this causes emails to be sent if you have not been to the site in over 24 hours. 2014-04-15 21:45:36 -04:00
Julian Lam
d027355ae9 bundling dbsearch with nodebb 2014-04-15 20:46:50 -04:00
barisusakli
63dfc38dea topic changes to match the new post-bar partial 2014-04-15 16:41:13 -04:00
barisusakli
f9572cc5c7 fixes chat messages 2014-04-15 14:39:13 -04:00
psychobunny
a6c84ac1a8 don't reset the global footer (copyright) when changing themes - they should all be compatible anyways 2014-04-15 14:26:39 -04:00
psychobunny
f895ae6ce4 updated to latest compressed notifications 2014-04-15 13:59:29 -04:00
Julian Lam
35c87a17bb removed attribution file -- now found in https://github.com/julianlam/nodebb-plugin-soundpack-default 2014-04-15 13:57:38 -04:00
Julian Lam
889c90673d windows compat for sounds -- #clevercode 2014-04-15 13:37:33 -04:00
barisusakli
85b96bb2d7 removed reds from nodebb core 2014-04-15 12:54:04 -04:00
barisusakli
04488a9a14 closes #1139 2014-04-15 12:48:32 -04:00
psychobunny
549f87132d fixes for dual database; moved dependency definitions into the database object 2014-04-15 12:40:30 -04:00
psychobunny
79d5142693 fixed leveldb installation; console.log 2014-04-15 12:23:17 -04:00
Julian Lam
5782a382be hardcoding connect-redis version 2014-04-15 12:14:46 -04:00
Julian Lam
4f7810090a first pass #1384 2014-04-15 12:14:46 -04:00
Julian Lam
cbca9a4faf adding soundpack to list of default-activated plugins 2014-04-15 12:14:46 -04:00
psychobunny
7a823283e4 fixed my derp 2014-04-15 12:02:36 -04:00
psychobunny
0851102800 newline 2014-04-15 02:48:34 -04:00
psychobunny
cac69c3d63 use valid json 2014-04-15 02:45:09 -04:00
psychobunny
a8801feabe cleanup 2014-04-15 02:42:40 -04:00
psychobunny
da665853e4 bugfixes 2014-04-15 02:40:18 -04:00
psychobunny
78dea8ea40 don't attempt to require a directory 2014-04-15 02:33:48 -04:00
psychobunny
5ffeb3319b socket.io admin/groups 2014-04-15 02:33:31 -04:00
psychobunny
aaa2dbe757 removed unused topics; fixed require 2014-04-15 02:28:49 -04:00
psychobunny
9e24ccc976 socket.io admin/categories 2014-04-15 02:27:58 -04:00
psychobunny
2fc6bfaa72 socket.io admin/user 2014-04-15 02:25:42 -04:00
psychobunny
3f22027007 avoid doing nconf.get over and over again on the same key 2014-04-15 02:16:03 -04:00
psychobunny
3c0c3a9649 renaming install function properly 2014-04-15 02:02:03 -04:00
Julian Lam
4c9ea62c0d resolved #1372 -- username clashes will now cause a random # to be appended to the username 2014-04-15 00:17:42 -04:00
psychobunny
f892a6793a mongo/redis - don't show passwords when typing in CLI 2014-04-14 20:33:08 -04:00
barisusakli
d832a6f805 closes #1381 2014-04-14 18:04:17 -04:00
psychobunny
3c711d72fb regex - no need to escape special characters inside [] 2014-04-14 17:42:47 -04:00
psychobunny
e5486db1ae Merge branch 'code-quality' of https://github.com/miksago/NodeBB into miksago-code-quality
Conflicts:
	src/database.js
2014-04-14 17:36:10 -04:00
barisusakli
3ea49a8f90 if language or default language is not set use en 2014-04-14 17:17:02 -04:00
psychobunny
268be5f35c fixed LevelDB helpers 2014-04-14 17:14:09 -04:00
psychobunny
71d33c0a79 fixed mongo helpers 2014-04-14 17:09:03 -04:00
barisusakli
3e60451ce4 closes #1013
lets user change languages,
2014-04-14 15:58:19 -04:00
psychobunny
98b112bb36 use_port only accepts string but saves as boolean, accept both now
previously, if you re-feed your config back in, it breaks
2014-04-14 15:28:41 -04:00
psychobunny
8496bdcff6 fixed automated setup bug 2014-04-14 15:26:42 -04:00
psychobunny
8a1f6eb43e forgot to export helpers as well for secondary db 2014-04-14 15:15:21 -04:00
psychobunny
290e348851 move database helpers into their own files 2014-04-14 15:09:57 -04:00
psychobunny
ae1ecb490f whitespace 2014-04-14 15:06:25 -04:00
psychobunny
7df7df09dd moved database specific questions into install/databases.js 2014-04-14 15:03:11 -04:00
psychobunny
75f19262ef no need for comments detailing what a function does anymore 2014-04-14 14:12:12 -04:00
psychobunny
0a94cf7c95 refactored out giant async.series 2014-04-14 14:10:57 -04:00
psychobunny
be83157de2 install.js minor refactor - moved questions into their own modules; don't need to export installation questions 2014-04-14 13:54:11 -04:00
psychobunny
f3fe79ab60 initialize / shutdown dbs simultaneously 2014-04-14 13:52:14 -04:00
psychobunny
bba3df6802 moving db.close into the parent module 2014-04-14 13:51:45 -04:00
psychobunny
df5f3d185a don't attempt to initialize db until we attempt to initialize 2014-04-14 13:41:33 -04:00
psychobunny
d5b5dd6fa5 hide secondary_database option behind "advanced" setup flag 2014-04-14 13:29:21 -04:00
psychobunny
ffe9afc3c4 configure secondary db modules 2014-04-14 13:09:54 -04:00
psychobunny
98270bf500 linting 2014-04-14 12:54:11 -04:00
psychobunny
8f71a4ebfe moved installation defaults into install/data/defaults.json 2014-04-14 12:53:03 -04:00
psychobunny
901a64ae14 got optional secondary_database questions working 2014-04-14 12:48:59 -04:00
psychobunny
4353adb914 forgot to add levelQuestions here 2014-04-14 11:45:16 -04:00
psychobunny
74674c8494 Merge remote-tracking branch 'origin/master' into secondary_database
Conflicts:
	src/database/level/main.js
2014-04-14 11:43:54 -04:00
psychobunny
5950b162b9 reverting attempt 2014-04-14 11:39:13 -04:00
barisusakli
beb7313138 added err to next 2014-04-13 22:32:51 -04:00
barisusakli
9125292b0e removed get and mget 2014-04-13 22:24:21 -04:00
barisusakli
8aa4f053e8 converted translator.get to translator.translate 2014-04-13 22:16:43 -04:00
barisusakli
fb43282a9c removed for in loop 2014-04-13 22:04:08 -04:00
Julian Lam
ef4972f66b added sounds folder to gitignore 2014-04-13 21:34:58 -04:00
Julian Lam
d69b0953a2 latest translations 2014-04-13 21:09:49 -04:00
Julian Lam
78538ddb28 added American English to languages 2014-04-13 18:40:57 -04:00
barisusakli
557426c1c9 translator refactor
no longer loads all language files on startup
2014-04-13 16:24:12 -04:00
barisusakli
90540f64cf removed some unused translator requires 2014-04-13 15:05:17 -04:00
barisusakli
fc8e97448c load sounds on demand, refactored sounds 2014-04-12 19:19:57 -04:00
Julian Lam
5e279e067f Merge branch 'plugin-sounds' 2014-04-12 18:36:38 -04:00
Julian Lam
df8728c785 allowing plugins to define new sounds -- woot.
Also moving the core sounds into a separate package, soundpack-default
2014-04-12 18:36:23 -04:00
Julian Lam
c9a2724bfd allowing plugins to define new sounds -- woot.
Also moving the core sounds into a separate package, soundpack-default
2014-04-12 18:33:52 -04:00
barisusakli
f8a6ab5cf4 if no icon is selected for a category icon will be empty string 2014-04-12 17:36:52 -04:00
Julian Lam
29ec14efa0 fixed #1365 2014-04-12 17:05:22 -04:00
psychobunny
49bbbe3682 secondary_database attempt 2014-04-11 17:35:43 -04:00
psychobunny
4d429aa6d6 linting install.js 2014-04-11 17:19:40 -04:00
barisusakli
a091e06fe3 more work for #1368 2014-04-11 17:01:27 -04:00
barisusakli
06dddccf8e more refactor 2014-04-11 15:53:57 -04:00
psychobunny
4877e4a9d1 fixed allQuestions property 2014-04-11 15:50:06 -04:00
psychobunny
a7582e2cca organized level helpers ala mongo driver 2014-04-11 15:47:49 -04:00
barisusakli
252e757185 some more language strings and account.js refactor 2014-04-11 15:44:57 -04:00
psychobunny
46b6a93e98 organizing mongo driver 2014-04-11 15:44:53 -04:00
psychobunny
9ad7ce9ca8 organizing redis driver 2014-04-11 15:29:01 -04:00
psychobunny
2ba767b499 Merge branch 'master' of https://github.com/designcreateplay/NodeBB
Conflicts:
	tests/database.js
2014-04-11 15:26:42 -04:00
psychobunny
e09b156d13 removing unnecessary return 2014-04-11 15:25:20 -04:00
psychobunny
e442fed40a fixed getSortedSetRevRangeByScore test 2014-04-11 15:22:37 -04:00
Julian Lam
b12b2f13ea closed #1375 2014-04-11 13:24:44 -04:00
barisusakli
828fd6b978 fixed sortedSetRevRangeByScore test 2014-04-11 12:49:57 -04:00
psychobunny
c28308ee97 added instructions for adding a test database for Level DB #1373 2014-04-11 12:45:22 -04:00
psychobunny
c86635b4ce making changes for compatibility with 9d405812cb 2014-04-11 02:32:43 -04:00
psychobunny
136542f8dd Merge remote-tracking branch 'origin/master' into LevelDB
Conflicts:
	tests/database.js
2014-04-11 02:27:15 -04:00
psychobunny
f5716de06e forgot to use the passed in fn 2014-04-11 02:24:11 -04:00
psychobunny
2acdcd9ba2 more cleanup 2014-04-11 02:13:08 -04:00
psychobunny
4d65a51ede LevelDB - organization 2014-04-11 02:04:12 -04:00
psychobunny
5bac03a37b removed newline 2014-04-11 01:41:56 -04:00
psychobunny
cbec5cd3a1 cleanup 2014-04-11 01:41:01 -04:00
psychobunny
e5674dd5cc not all DB's use a hostname 2014-04-11 01:38:47 -04:00
psychobunny
c506a2ce1d LevelDB installation questions 2014-04-11 01:38:28 -04:00
psychobunny
4892fc81a2 added to database tests 2014-04-11 01:38:09 -04:00
psychobunny
21cb2c384e woo, NodeBB actually works on LevelDB 2014-04-11 01:37:39 -04:00
barisusakli
7545d55b22 jshint and refactor accountedit 2014-04-10 22:01:00 -04:00
barisusakli
1e3b88a7f0 passing array straight to redis 2014-04-10 21:13:46 -04:00
barisusakli
9d405812cb changed sortedSetRangeByScore 2014-04-10 20:59:17 -04:00
Micheil Smith
8da45b72a9 Composer: Rework formatting bar logic 2014-04-10 22:32:34 +01:00
Micheil Smith
78e1e4fbac Composer: simplify code with early returns 2014-04-10 22:31:55 +01:00
Julian Lam
74ff579412 added startTimer so that repeated errors on startup don't cause the loader to go into an infinite loop 2014-04-10 17:08:34 -04:00
Barış Soner Uşaklı
b28b837d72 fixed error.json 2014-04-10 16:41:45 -04:00
Micheil Smith
9dc0a4b115 Admin/Groups: Pass radix argument to parseInt 2014-04-10 20:56:53 +01:00
Micheil Smith
3e82cab398 Add missing new lines at end of files. 2014-04-10 20:56:53 +01:00
Micheil Smith
66d1f2505f Composer: Pass radix argument to parseInt 2014-04-10 20:56:53 +01:00
Micheil Smith
85cab3aec8 Composer: Escape special characters in regex 2014-04-10 20:56:52 +01:00
Micheil Smith
e860b0dd4c Composer: Remove unused variables 2014-04-10 20:56:52 +01:00
Micheil Smith
6e4639496e Improve readability of a selector 2014-04-10 20:56:52 +01:00
Micheil Smith
11b6794946 Refactor connection logic
Aiming to be flatter, with less deep nesting. Still more to go here.
2014-04-10 20:56:52 +01:00
Micheil Smith
0bbd29ac42 Reduce DOM queries for Search elements 2014-04-10 20:56:52 +01:00
Micheil Smith
01013f5c9d Refactor plugin logic.
This relies more heavily on `async` and also makes the loading process more asynchronous. It does remove one warning in the case that a plugin is enabled but not installed.
2014-04-10 20:56:51 +01:00
Micheil Smith
5f6d5cd9a5 Reduce duplication in src/categoryTools.js 2014-04-10 20:56:51 +01:00
Micheil Smith
2c2e5de911 Add missing 'global' variable declaration 2014-04-10 20:06:25 +01:00
barisusakli
14d0081fdf replace 2 error messages with keys 2014-04-10 12:47:48 -04:00
psychobunny
129019777f move work on LevelDB 2014-04-10 00:36:28 -04:00
psychobunny
e79284e75f LevelDB init 2014-04-09 23:22:43 -04:00
barisusakli
a345302454 really fixed test 2014-04-09 22:34:42 -04:00
barisusakli
b731d6af3b fixed topic test 2014-04-09 22:30:02 -04:00
barisusakli
1f77df794a added lots of error keys 2014-04-09 22:26:23 -04:00
barisusakli
0ac58dbee6 more error strings 2014-04-09 21:56:30 -04:00
barisusakli
fdeaf3a16e user.js error keys 2014-04-09 21:44:00 -04:00
barisusakli
eaf4be4979 posts.js error keys 2014-04-09 21:40:39 -04:00
barisusakli
b07efb0085 modules.js error keys 2014-04-09 21:36:57 -04:00
barisusakli
7b992e7a20 meta.js error language keys 2014-04-09 21:27:20 -04:00
barisusakli
197e61a5d0 admin js language keys 2014-04-09 21:26:37 -04:00
barisusakli
d366be7967 added error key 2014-04-09 21:22:37 -04:00
barisusakli
95972209f4 favourite changes
favourites.js no longer makes socket calls, moved that code into
socket.io/posts.js. it also makes a single socket call when you downvote
a post that you previously upvoted.
2014-04-09 20:55:53 -04:00
Julian Lam
e7f16e2b17 latest translations 2014-04-09 20:34:06 -04:00
barisusakli
296d5127c9 update to use error messages 2014-04-09 16:51:10 -04:00
barisusakli
34b73e15e6 dont add dupes to widgetLocations
this prevents widgets from being executed multiple times
2014-04-09 16:35:51 -04:00
barisusakli
d61e632c59 closes #1366 2014-04-09 15:49:36 -04:00
barisusakli
3dc1b87f01 removed reply from not logged in error message 2014-04-09 15:43:27 -04:00
barisusakli
a75baef450 removed socket emits for post errors 2014-04-09 15:39:30 -04:00
Julian Lam
d1a64798b9 removing use of slugs in groups... pending having more time 2014-04-09 14:46:18 -04:00
Julian Lam
bd2a1a3efa Revert "reverting groups.js to 4701eb1cee1a35b7f059f4362773bd9d67b7370c"
This reverts commit d8df9ab3ed.
2014-04-09 14:37:16 -04:00
Julian Lam
45c62da51c Merge branch 'master' into v0.4.x 2014-04-09 14:24:40 -04:00
barisusakli
e2d0d4db5c added error and success language files
removed some code from server side that was emitting alerts
2014-04-09 14:12:50 -04:00
psychobunny
d8df9ab3ed reverting groups.js to 4701eb1cee 2014-04-09 14:11:03 -04:00
psychobunny
81dfbba0ec imported latest templates.js 2014-04-09 14:08:38 -04:00
Julian Lam
0a35195fc7 an attempt at addressing loader madness... #1364 2014-04-09 13:10:28 -04:00
Julian Lam
95bd153446 added Travis CI badge [skip ci] 2014-04-09 08:43:10 -04:00
Julian Lam
f2c0175b5c increased test timeout 2014-04-08 23:40:35 -04:00
Julian Lam
2c5876779f only build the master branch, TravisCI... 2014-04-08 21:38:54 -04:00
Julian Lam
f88d7e6170 Merge remote-tracking branch 'origin/v0.4.x' into v0.4.x 2014-04-08 21:30:39 -04:00
Julian Lam
13b4aa2282 updated shrinkwrap file for v0.4.1 2014-04-08 21:30:03 -04:00
Julian Lam
995fb22600 Merge branch 'master' into v0.4.x 2014-04-08 21:25:30 -04:00
Julian Lam
53908d347e 0.4.1 2014-04-08 21:24:53 -04:00
Julian Lam
f279515d36 updated travis config with new CI values 2014-04-08 21:09:59 -04:00
Julian Lam
2627240d80 changing minimum required version for NodeBB to 0.10, and updated travis config. Allowing new setup option "ci", for TravisCI integration 2014-04-08 21:08:51 -04:00
Julian Lam
e579db8bf3 using tildes instead of carats 2014-04-08 20:08:52 -04:00
Julian Lam
5db18e307c removing apt-get lines from travis config 2014-04-08 18:15:55 -04:00
Julian Lam
8e0d33144c updated travis.yaml 2014-04-08 18:12:50 -04:00
Julian Lam
70c1beb6d2 updated travis CI yaml file 2014-04-08 18:00:51 -04:00
psychobunny
cf362f64a3 woops, now everybody is an android browser. 2014-04-08 17:59:08 -04:00
Julian Lam
3ac9425669 TravisCI integration 2014-04-08 17:41:43 -04:00
Julian Lam
49a686af78 fixing groups tests 2014-04-08 17:37:11 -04:00
psychobunny
8432d8827e attempt at fixing #1323 2014-04-08 17:35:30 -04:00
psychobunny
d5baaacb72 utils.isAndroidBrowser 2014-04-08 17:35:29 -04:00
psychobunny
ff43a619c5 moving utils.js to the top 2014-04-08 17:35:28 -04:00
barisusakli
7a6f7d3e49 fixed 2 tests 2014-04-08 17:21:04 -04:00
Julian Lam
1cc15a71d6 resolved #1350 2014-04-08 16:53:08 -04:00
Julian Lam
3378717562 dbmock 4-spaces 2014-04-08 16:53:08 -04:00
psychobunny
2288da4daf ./nodebb reset widgets - global widgets as well 2014-04-08 16:52:52 -04:00
psychobunny
ba1e04741b settings reset message 2014-04-08 16:50:30 -04:00
barisusakli
1e96c21cae removed the span size 2014-04-08 16:48:13 -04:00
psychobunny
21a4651a64 latest templates.js, gotta switch to the version on npm soon 2014-04-08 16:45:17 -04:00
psychobunny
c52583ae28 replaying changes from a150b2c6f7 2014-04-08 16:10:27 -04:00
barisusakli
c0145ad301 move db.init to reset function 2014-04-08 16:03:45 -04:00
psychobunny
c5cae312d7 error out early when saving widgets 2014-04-08 15:58:47 -04:00
psychobunny
61478caa3d imported latest templates.js 2014-04-08 15:51:20 -04:00
barisusakli
2195b20385 closes #1263 2014-04-08 15:29:56 -04:00
psychobunny
015ee701c4 @barisusakli is a stickler and wants to increase registration api call times by 0.0000000001s 2014-04-08 13:51:05 -04:00
psychobunny
5423434b3f closes #1362 2014-04-08 13:48:26 -04:00
Julian Lam
ee44128c8c not requiring email any longer for user creation (regression -- closes julianlam/nodebb-plugin-sso-twitter#4) 2014-04-07 20:19:40 -04:00
Julian Lam
ba16f95d1f Resetting 'all' done in series now -- #1317 2014-04-07 19:15:38 -04:00
barisusakli
67f9c8670a closes #1355 2014-04-07 18:54:55 -04:00
psychobunny
a150b2c6f7 handle if invalid tpl is passed in 2014-04-07 18:06:58 -04:00
barisusakli
d2033abf96 fixes unread page
if you had more than 20 unread topics it was loading 40 now it will only
load 21 then keep loading with infinite loading
2014-04-07 18:06:03 -04:00
barisusakli
54ba2d2ac3 removed console.log 2014-04-07 18:01:48 -04:00
barisusakli
d1ec101248 fixed infinite load and select 2014-04-07 17:55:19 -04:00
psychobunny
42c9185c7d closes #1317 2014-04-07 17:52:53 -04:00
barisusakli
4e71c8328c closes #1346 2014-04-07 17:38:58 -04:00
Barış Soner Uşaklı
962b141e85 Merge pull request #1356 from miksago/fix-pagination-offset-error
Fixed: Category pagination error; Check if first offset is NaN
2014-04-07 17:12:50 -04:00
barisusakli
e5cf44d398 closes #1353
mark all read will mark everything read, can also select topics and mark
them read, can mark specific categories read too
2014-04-07 17:09:59 -04:00
Micheil Smith
47d21eb008 Fixed: Category pagination error; Check if first offset is NaN 2014-04-07 20:41:51 +01:00
psychobunny
e383524334 fixed a problem with cerulean which duped motd and forced you to toggle themes to deactivate 2014-04-07 15:16:11 -04:00
psychobunny
b464099cca finally found reliable repro steps and squashed you like the bug you are. fixed #1280 2014-04-07 14:32:17 -04:00
psychobunny
591fb41c08 removed unused content variable 2014-04-07 12:46:03 -04:00
Julian Lam
b616ba7304 using preventDefault instead of return false 2014-04-06 21:11:31 -04:00
barisusakli
cb692c27e5 removed 0..n from mongo install questions 2014-04-06 16:58:38 -04:00
Julian Lam
bb629c1815 fixing language file for estonian 2014-04-06 16:19:30 -04:00
Julian Lam
a93357168c Adding Estonian language to NodeBB, tänan väga! 2014-04-06 16:15:05 -04:00
Julian Lam
cbd58bd5b9 latest translations 2014-04-06 16:14:57 -04:00
Julian Lam
d74aee97cf Merge branch 'trans-german' of github.com:JonathanMH/NodeBB into JonathanMH-trans-german 2014-04-06 16:06:58 -04:00
Julian Lam
6afd0fd9de added two failing tests for #1331 2014-04-06 15:04:05 -04:00
Jonathan M. Hethey
2bc4de4545 added additional German translations 2014-04-06 13:51:44 +02:00
Julian Lam
14b9c03199 First pass at #1331 - Groups.search() + Tests 2014-04-05 13:01:31 -04:00
Barış Soner Uşaklı
d8a2681e2b Merge pull request #1344 from frissdiegurke/master
Added svg-support for category pictures
2014-04-05 12:45:17 -04:00
frissdiegurke
993b745f1c Added svg-support for category pictures 2014-04-05 12:00:23 +02:00
Julian Lam
320f187829 split reset into themes, plugins, and all -- #1317 2014-04-04 22:47:35 -04:00
barisusakli
57dd44a871 removed console.log 2014-04-04 16:20:13 -04:00
barisusakli
5ddf70a671 closes #1273 2014-04-04 16:18:51 -04:00
barisusakli
3c5dd6a5e7 small tweak to reply with text selected 2014-04-04 15:56:22 -04:00
psychobunny
c352b4c06d imported latest templates.js, fixes #1327 2014-04-04 13:28:51 -04:00
barisusakli
770e0a67c1 send values directly 2014-04-04 13:11:09 -04:00
psychobunny
f235c86a0a closes #1330 2014-04-04 12:59:53 -04:00
barisusakli
04b60f4f99 refactored parse 2014-04-04 12:55:44 -04:00
barisusakli
c1f0d47cd4 closes #1335
looks like copy pasta fail
2014-04-04 12:47:16 -04:00
barisusakli
0cd13b7b66 closes #1273 2014-04-04 12:42:41 -04:00
barisusakli
640686f031 added back paragraph tags 2014-04-04 10:02:00 -04:00
Julian Lam
b9aa0d2121 stripping paragraph tags from post summaries in an effort to collapse it all into one paragraph block. 2014-04-04 09:21:17 -04:00
barisusakli
a7c5a5e819 closes #1334 2014-04-03 18:15:09 -04:00
barisusakli
cc3150ff09 closes #1316 2014-04-03 18:07:31 -04:00
barisusakli
421a25eb56 closes #1288 2014-04-03 17:36:31 -04:00
barisusakli
5de430deb5 add taskbar to body 2014-04-03 17:30:46 -04:00
Julian Lam
b2c663925b Merge branch 'spawn-minifier' 2014-04-03 17:27:42 -04:00
Julian Lam
7a993eb2ca closed #1328 2014-04-03 17:27:26 -04:00
psychobunny
f3eb30b674 fixed automatic updating of home page 2014-04-03 17:16:40 -04:00
barisusakli
ef2221d677 closes #1305 2014-04-03 17:14:25 -04:00
barisusakli
6b7049cdae closes #1333 2014-04-03 16:11:34 -04:00
barisusakli
5209c614fc add taskbar to body 2014-04-03 15:46:47 -04:00
Julian Lam
f3a78c2b6f #1328 - first pass 2014-04-03 15:35:59 -04:00
psychobunny
212768ee86 closes #1325 2014-04-03 14:35:09 -04:00
psychobunny
f16d98fcab linting 2014-04-03 14:33:03 -04:00
psychobunny
3840a9e67e translating the footer... and sending the original 'doh 2014-04-03 14:04:02 -04:00
barisusakli
a316927b2e added user topics page title 2014-04-03 13:43:51 -04:00
barisusakli
3a5048a6cd moved account menu to partial 2014-04-03 13:24:15 -04:00
barisusakli
41d5d16bac show widget title next to type, closes #1313 2014-04-03 13:03:40 -04:00
barisusakli
1edd2649fc this doesnt exist on topics page 2014-04-03 12:43:51 -04:00
barisusakli
4bc3f54468 closes #1318 2014-04-03 12:42:40 -04:00
barisusakli
3f44f4bb3a closes #1319 2014-04-02 16:55:01 -04:00
Julian Lam
4498f6e410 removing less-middleware calls 2014-04-02 14:41:52 -04:00
Julian Lam
27fddb0b48 removing less-middleware 2014-04-02 14:36:42 -04:00
barisusakli
82fabad364 closes #1321 2014-04-02 14:31:26 -04:00
barisusakli
bdefebeea0 reverting some of my code and fixed #1322 properly 2014-04-02 13:58:10 -04:00
Julian Lam
682fa1f874 fixed incorrect scoping for new post event introduced accidentally last commit 2014-04-02 11:13:49 -04:00
Julian Lam
90616c6e7b closed #1322 2014-04-02 11:11:01 -04:00
Julian Lam
77a4c871f6 latest translations and fallbacks 2014-04-02 10:32:17 -04:00
Julian Lam
ef47fc78eb fixed up translation strings, closed #1278 2014-04-02 10:29:42 -04:00
Julian Lam
fa6d6816e4 removing two keys from source language 2014-04-02 10:15:35 -04:00
Julian Lam
e1c9bd7229 updated shrinkwrap file 2014-04-02 09:15:11 -04:00
Julian Lam
eabbc81b40 Merge branch 'master' into v0.4.x 2014-04-02 09:05:46 -04:00
Julian Lam
ec062533a0 updating minvers, removing cerulean from bundled themes 2014-04-02 08:56:13 -04:00
Julian Lam
fdf9deb7aa latest translations and fallbacks 2014-04-02 08:54:10 -04:00
Julian Lam
339d0e5495 flag post translations 2014-04-02 08:18:28 -04:00
Julian Lam
bc29f832fe language keys for password changing -- issue #1278 2014-04-01 21:44:04 -04:00
Julian Lam
1abba25f83 language keys for accountedit.tpl 2014-04-01 21:44:04 -04:00
barisusakli
10f56faf9d admin cleanup
removed unnecessary admin checks in src/admin/user then realized they
are just one liners so moved them to src/socket.io.admin.js moved
categories update to categories folder
2014-04-01 17:12:07 -04:00
Julian Lam
e29aa5abf8 Merge branch 'master' into v0.4.x 2014-04-01 17:00:43 -04:00
barisusakli
ac88b5fc25 fixing user deletion, missing cb 2014-04-01 17:00:24 -04:00
Julian Lam
cde7168f9c adding shrinkwrap file for release 2014-04-01 16:41:06 -04:00
Julian Lam
f12b641d11 whoops, fixing bad db call 2014-04-01 16:37:02 -04:00
Julian Lam
2c1978218c moving the db require to where it is actually needed 2014-04-01 16:35:44 -04:00
Julian Lam
5daf89f263 0.4.0 2014-04-01 16:21:39 -04:00
psychobunny
4693f64bef better layout for global sidebars on mobile 2014-04-01 14:49:30 -04:00
psychobunny
15c2e4d968 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-04-01 14:00:36 -04:00
psychobunny
488e31df64 added X-Powered-By header for builtwith.com 2014-04-01 14:00:33 -04:00
barisusakli
b5f4503e9f fixed share url 2014-04-01 12:11:45 -04:00
psychobunny
e886e232c5 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-04-01 12:02:54 -04:00
psychobunny
e32adf9477 console.log 2014-04-01 12:02:51 -04:00
barisusakli
99e6223bf0 removed console.log 2014-04-01 12:02:05 -04:00
barisusakli
f185e13175 added check to isReadyToPost, banned and exists 2014-04-01 12:01:16 -04:00
psychobunny
3aa4ae4b99 move deprecated vanilla footer widgets into draft zone 2014-04-01 11:48:15 -04:00
psychobunny
d1495102f2 fixed positioning if no sidebar widget selected 2014-04-01 11:22:03 -04:00
psychobunny
260579b525 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-04-01 11:19:15 -04:00
psychobunny
b82b5794bc add copyright widget on fresh install 2014-04-01 11:19:12 -04:00
Julian Lam
10fc991a7b Merge branch 'master' of github.com:MrHohenheim/NodeBB into MrHohenheim-master
Conflicts:
	public/language/hu/global.json
	public/language/hu/topic.json
2014-03-31 22:06:44 -04:00
Julian Lam
3ff588415c latest translations 2014-03-31 18:04:29 -04:00
Julian Lam
bb4d4eaec7 added pirate english... yarrr 2014-03-31 18:04:03 -04:00
Pénzes Tamás
d6682048a1 Update topic.json
not finished
2014-03-31 23:36:28 +02:00
Pénzes Tamás
83156701df Update reset_password.json
done
2014-03-31 23:31:09 +02:00
Pénzes Tamás
175da41131 Update pages.json
done
2014-03-31 23:29:24 +02:00
Pénzes Tamás
4a1bd2fe93 Update notifications.json
done
2014-03-31 23:27:41 +02:00
Pénzes Tamás
b23a6fecc3 Update login.json
done
2014-03-31 23:26:27 +02:00
Pénzes Tamás
c199aca4e8 Update global.json
translated some but still not finished
2014-03-31 23:24:50 +02:00
Pénzes Tamás
c4f436283e Update user.json
fixed line 47
2014-03-31 23:15:28 +02:00
psychobunny
5305bc0138 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-31 16:20:00 -04:00
psychobunny
7926514c95 draft zone for widgets, closes #1238 2014-03-31 16:19:57 -04:00
barisusakli
e7a791ab74 removed unused globals from share module 2014-03-31 15:29:29 -04:00
barisusakli
273f499cc2 moved the duplicated sharing code to requirejs module 2014-03-31 15:22:35 -04:00
barisusakli
1d3c25fdcc moved alert to its own requirejs module 2014-03-31 14:49:48 -04:00
barisusakli
b1a6d394e3 moved format number functions to utils 2014-03-31 14:43:48 -04:00
psychobunny
f01cb88c57 deprecated: plugins/fireHook, filter:server.create_routes, filter:admin.create_routes 2014-03-31 13:03:22 -04:00
psychobunny
0f20352fbb closes #1289 2014-03-31 13:00:01 -04:00
psychobunny
924388d96f widgets - only collapse / expand divs that specify a target location 2014-03-31 12:54:27 -04:00
psychobunny
375c2c2ce1 upgrade.js for re-adding copyright footer 2014-03-31 12:42:13 -04:00
psychobunny
576246c315 global widget areas (sidebar/footer) - closes #1097 2014-03-31 12:27:24 -04:00
barisusakli
ed3a1b47bd category changes 2014-03-30 19:17:48 -04:00
Julian Lam
0b6817b9a7 latest translations 2014-03-30 13:34:23 -04:00
Julian Lam
4161f138f3 adding data-dir attribute for languages 2014-03-29 21:43:33 -04:00
Julian Lam
b3e8b1a152 removed language strings for logout page that doesn't exist anymore 2014-03-29 20:48:16 -04:00
barisusakli
35eebbf20a chat message fix 2014-03-29 19:40:53 -04:00
Julian Lam
3f1df52773 settings.get should return empty obj instead of null 2014-03-29 17:58:41 -04:00
Julian Lam
2430b970f3 fixed issue where timeago strings were not rendering in the correct language on cold loads 2014-03-29 17:44:13 -04:00
Julian Lam
4b45a4b168 fixing persian language timeago mapping 2014-03-29 17:33:20 -04:00
psychobunny
0ba7c4891c closes #1295 2014-03-29 17:16:41 -04:00
psychobunny
7678eaf528 fixes #1296 2014-03-29 17:13:33 -04:00
psychobunny
5ce069fdd3 imported latest templates.js 2014-03-29 17:08:23 -04:00
psychobunny
ab20880332 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-29 16:48:24 -04:00
psychobunny
31d8f13f7b closes #1297 2014-03-29 16:48:21 -04:00
barisusakli
70f415446b added watch title language string 2014-03-29 16:05:29 -04:00
barisusakli
500ca33675 changed bootswatch to protocolless 2014-03-29 15:29:39 -04:00
psychobunny
d27eb17b32 fixes #1294 2014-03-29 15:03:14 -04:00
psychobunny
d89c0d698e prevent crash on widget containers 2014-03-29 14:44:51 -04:00
psychobunny
15773f28f2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-29 14:37:47 -04:00
psychobunny
c76a073482 added skins tab; closes #1293 2014-03-29 14:37:44 -04:00
Julian Lam
365c889dbd Latest transations (oh boy, there were a lot), and fallbacks for those that haven't been translated yet. 2014-03-29 14:29:10 -04:00
Julian Lam
bcae47bb1e Welcome to NodeBB, Persian language pack! :D 2014-03-29 14:28:23 -04:00
psychobunny
d89f280c73 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-29 13:18:51 -04:00
psychobunny
7c8d5614c6 update nodebb-widget-essentials to latest; fixes #1292 2014-03-29 13:18:48 -04:00
barisusakli
219c0d75c4 fix for #1290 2014-03-28 21:30:02 -04:00
psychobunny
ed87d40f71 helpers.buildMetaTag 2014-03-28 18:59:10 -04:00
psychobunny
40cc21fad8 closes #1100 2014-03-28 18:30:11 -04:00
psychobunny
baadd0f2ed allow logged in users to access /users page 2014-03-28 17:58:28 -04:00
psychobunny
dab91d6ce9 fixed require.js error 2014-03-28 17:54:27 -04:00
psychobunny
3ae8aa1c55 helpers.js (client/server); closes #1275 2014-03-28 17:49:58 -04:00
psychobunny
eab0ca7463 allow custom themes to include templates that don't exist in the base theme 2014-03-28 17:05:09 -04:00
psychobunny
fb7e0bb7c2 updating vanilla/lavender deps 2014-03-28 16:47:31 -04:00
psychobunny
f913c58925 imported latest templates.js updates 2014-03-28 16:14:18 -04:00
psychobunny
0c8c246be4 simplified widgets 2014-03-28 16:01:33 -04:00
psychobunny
4f04bd82a6 some fixes 2014-03-28 15:35:07 -04:00
psychobunny
4d02600820 fixing some things code climate was qq'ing about 2014-03-28 14:21:34 -04:00
psychobunny
b023ef01af moving widgets and variables code out of ajaxify 2014-03-28 14:18:42 -04:00
psychobunny
0dd7339bec fixed admin/users banning/admin 2014-03-28 14:10:14 -04:00
psychobunny
1b206a6ae8 ajaxify cleanup 2014-03-28 14:06:34 -04:00
psychobunny
67b1dd546c Merge remote-tracking branch 'origin/master' into templates.js-merge 2014-03-28 13:58:18 -04:00
psychobunny
dbb75f181d more cleanup 2014-03-28 13:54:20 -04:00
psychobunny
e4f136c208 cleanup 2014-03-28 13:34:20 -04:00
psychobunny
2ae0b3905d forgot to remove error first from templates.js 2014-03-28 13:32:10 -04:00
psychobunny
7e11d29f06 got rid of all templates.prepare; pull blocks using templates.getBlock instead of parsing twice 2014-03-28 13:29:51 -04:00
psychobunny
339eafd6be updating templates.parseTemplateVariables to ajaxify.variables.parse 2014-03-28 13:02:36 -04:00
psychobunny
7217954078 updating all templates.get to ajaxify.variables.get 2014-03-28 13:02:13 -04:00
psychobunny
113eb38f9a moving ajaxify-related things out of templates and into ajaxify 2014-03-28 13:01:43 -04:00
psychobunny
608a1ce6d0 https://github.com/psychobunny/templates.js 2014-03-28 13:01:24 -04:00
barisusakli
3a69a191ff closes #1285 2014-03-28 12:13:06 -04:00
Julian Lam
131b71f361 language: fr 2014-03-28 10:51:41 -04:00
barisusakli
fdf0076f37 decrease user count when user is deleted 2014-03-27 19:59:44 -04:00
Julian Lam
1eab829dec Merge pull request #1255 from theon/absolute-path-config
Allow absolute config paths
2014-03-27 13:10:29 -04:00
barisusakli
0e5c65199d simpler static 2014-03-27 12:59:27 -04:00
barisusakli
824d849a52 removed req 2014-03-27 03:12:23 -04:00
barisusakli
a3842d2c61 removed similar code 2014-03-26 23:29:50 -04:00
barisusakli
e5a5b8e8bf added privateUserInfo and isLoggedIn for #1275 2014-03-26 11:57:46 -04:00
Julian Lam
be45ad163a properly fixed #1274 2014-03-26 11:43:42 -04:00
Julian Lam
585eb9e1be fixed #1274 2014-03-26 11:39:27 -04:00
barisusakli
4f88e9cf2c shortened the user postcount update code 2014-03-26 11:15:27 -04:00
barisusakli
d6ad100ed5 not used anymore 2014-03-25 14:50:08 -04:00
barisusakli
68db8c04f7 added missing radix 2014-03-25 14:18:24 -04:00
barisusakli
5fe5e3d893 topics.js refactor 2014-03-25 14:17:00 -04:00
barisusakli
2507d6c853 display_moderator_tools is already returned
when new posts were loaded, we were making a socket call for each post
to check if the post is editable, but this data is already returned in
display_moderator_tools when posts are loaded.
2014-03-25 13:52:25 -04:00
barisusakli
e4fbb31e68 some cleanup 2014-03-25 13:24:51 -04:00
barisusakli
61ae01543c fixed to use postsPerPage 2014-03-25 12:47:15 -04:00
barisusakli
a400e5de81 #1269 2014-03-25 12:23:55 -04:00
barisusakli
e8265efc20 closes #1271 2014-03-25 12:10:42 -04:00
barisusakli
038a833125 check to see if there are topics 2014-03-24 21:53:14 -04:00
barisusakli
3493be4ef0 closes #1268 2014-03-24 21:05:02 -04:00
barisusakli
6fc3103aef topic og:image changes 2014-03-24 20:43:29 -04:00
Julian Lam
fc1cb76444 fixed #1266 2014-03-24 20:24:22 -04:00
barisusakli
abc7fd54f3 added class to chat messages 2014-03-24 20:12:03 -04:00
barisusakli
48ed540801 closed #1267 2014-03-24 19:57:25 -04:00
barisusakli
22ba104930 chat style 2014-03-24 18:18:00 -04:00
Julian Lam
31606578f5 putting cache buster back in header template arguments 2014-03-24 18:09:49 -04:00
Julian Lam
1487545fd2 fixing issue where cold loads were calling client-side event action:ajaxify.end with the wrong "url" 2014-03-24 16:22:10 -04:00
barisusakli
0c744a947e chat will use timeago 2014-03-24 15:58:02 -04:00
Julian Lam
17dd113a94 fixed issue where plugin css and js wasn't loaded -- also less files no longer blow up 2014-03-24 15:35:58 -04:00
Julian Lam
c2f6717e88 adding cache-buster to template globals 2014-03-24 14:36:20 -04:00
Julian Lam
8c7b474e8b moved fontawesome CSS into stylesheet.css, and updating the js and css middlewares to compile at app start, not on first load 2014-03-24 14:36:20 -04:00
barisusakli
980cf2ccf9 closes #1184 2014-03-24 14:30:11 -04:00
barisusakli
1664d179b9 closes #1245 2014-03-24 13:45:31 -04:00
Julian Lam
0ef2be61b1 translations 2014-03-24 11:42:48 -04:00
Julian Lam
6fb69e6c19 removing error output for incorrect pw on login 2014-03-24 11:07:39 -04:00
Barış Soner Uşaklı
9f5893bc83 Update delete.js 2014-03-23 23:34:04 -04:00
barisusakli
642b9e4d69 fixed extra space in new if there is no username 2014-03-23 19:00:08 -04:00
barisusakli
0741b162cb #1265 2014-03-23 18:53:21 -04:00
barisusakli
f247c2195e fixed user picture in og:image 2014-03-23 17:17:56 -04:00
barisusakli
94a589e0e4 #1190 2014-03-23 16:57:04 -04:00
barisusakli
bcc464a196 fixed reverse loading of topics
data.after can be zero which was causing a invalid data error
2014-03-23 15:05:04 -04:00
barisusakli
a3404d3d4f closes #1253 2014-03-23 14:25:16 -04:00
barisusakli
36dc086470 no need to get signature and custom profile info 2014-03-22 21:04:53 -04:00
Julian Lam
fdc6b004c5 closed #1260, closed #1261 2014-03-22 09:51:29 -04:00
barisusakli
04e0c58b84 fixes realtime update of home 2014-03-21 22:16:30 -04:00
Barış Soner Uşaklı
4e10ee473c Merge pull request #1257 from theon/fix-syntax-error
Fix syntax error
2014-03-21 20:51:38 -04:00
Ian Forsey
28f186d4a7 Fix syntax error 2014-03-22 00:46:11 +00:00
barisusakli
1f2d5abbb7 possible fix for #1256 2014-03-21 20:37:53 -04:00
Ian Forsey
6ca5a42936 Allow absolute config paths 2014-03-21 23:07:05 +00:00
barisusakli
2b2e83992e changed messages 2014-03-21 18:44:14 -04:00
barisusakli
0cfd05d839 closes #1254 2014-03-21 18:36:06 -04:00
barisusakli
d6223406e9 added space between uploading and number 2014-03-21 18:23:59 -04:00
barisusakli
ca0dbf84be no need for exists check
if topic doesnt exist topicData will be null
2014-03-21 18:20:06 -04:00
barisusakli
a695c6134b added missing meta 2014-03-21 17:59:46 -04:00
barisusakli
db3632557e moved notification push out of markAsRead 2014-03-21 17:48:32 -04:00
barisusakli
7a1037dc11 moved posts and recent to new files 2014-03-21 17:04:15 -04:00
barisusakli
38733ef94b moved reply post create to topics/create.js 2014-03-21 15:55:03 -04:00
barisusakli
478429af3a moved fork to new file 2014-03-21 15:47:46 -04:00
barisusakli
bac3cf03cb moved unread to new file 2014-03-21 15:40:37 -04:00
barisusakli
ec63ba4b17 removed unused method 2014-03-21 15:04:10 -04:00
barisusakli
8b6f701246 removd dupe 2014-03-21 14:57:38 -04:00
barisusakli
b470a9b264 fixes jumping to top on vote 2014-03-21 14:00:13 -04:00
barisusakli
7f193041a8 removed admin topics 2014-03-21 13:24:31 -04:00
Julian Lam
8abaa812ec fixing client-side script for groups page in ACP 2014-03-21 13:20:13 -04:00
barisusakli
880c393b6d fixed admin groups page
changed gid to groupName
2014-03-21 12:52:35 -04:00
Julian Lam
6f78d29498 upgrade script should not delete non-hidden groups 2014-03-21 12:14:58 -04:00
Julian Lam
1e3b9b7cf6 removing console logs 2014-03-21 12:11:34 -04:00
Julian Lam
d33253bc3a Merge remote-tracking branch 'origin/master' 2014-03-21 12:06:19 -04:00
Julian Lam
96d58288c9 tweaking upgrade script so it works with a real db 2014-03-21 11:29:00 -04:00
Julian Lam
4701eb1cee updating groups so that members leave a group when it is deleted 2014-03-21 09:27:13 -04:00
Julian Lam
ce867aec53 updated upgrade script date 2014-03-21 09:18:33 -04:00
Julian Lam
4206c17da3 rounding out tests for groups 2014-03-21 09:05:29 -04:00
Julian Lam
1dcac09e53 OMG TESTS #1252 2014-03-20 20:49:57 -04:00
Julian Lam
0e44eb8629 final refactoring pass for groups -- #1252 2014-03-20 16:26:00 -04:00
barisusakli
26d67257fe moved privilege check out of getRecentReplies
it was being called twice in api/home
2014-03-20 14:58:45 -04:00
barisusakli
ef0740049a dont return everything in followers, #1250 2014-03-20 14:28:37 -04:00
barisusakli
b2a837d283 getPostSummary change 2014-03-20 13:18:12 -04:00
barisusakli
301008b9cb missed this one 2014-03-20 12:49:31 -04:00
Julian Lam
7b4f596aba updating all group lib methods, and their callers -- #1252 2014-03-20 09:13:09 -04:00
barisusakli
c7c3bc1c8e no need to create empty array 2014-03-19 21:40:26 -04:00
barisusakli
fa98da6978 related to #1250 2014-03-19 21:32:13 -04:00
Julian Lam
befaa56ad0 derp derp derp more refactoring of groups 2014-03-19 20:40:34 -04:00
Julian Lam
c893effcb9 WIP commit -- groups refactoring + upgrade scripts 2014-03-19 20:33:39 -04:00
barisusakli
2f8ecc00d8 closes #1250 2014-03-19 18:31:19 -04:00
Julian Lam
d6b6e39f2a Sardinian (sc) and Thai (th) 2014-03-19 16:18:16 -04:00
Julian Lam
85a5c123af minor tweak to winston logging for user jobs 2014-03-19 16:11:20 -04:00
barisusakli
c070808209 store postcontainer 2014-03-19 15:56:22 -04:00
barisusakli
cabc3e5e3d more cleanup 2014-03-19 15:47:53 -04:00
barisusakli
9b63facf6f more postTools refactor 2014-03-19 15:26:38 -04:00
barisusakli
9dd0f3c9b9 some more 2014-03-19 15:04:56 -04:00
barisusakli
363e7c23bd postTools cleanup 2014-03-19 14:53:31 -04:00
barisusakli
8ffaecaa4c fixed paginator on entry, moved out postTools to a new file 2014-03-19 14:29:59 -04:00
psychobunny
3bd93a40fc closes #1235 2014-03-19 14:05:48 -04:00
Julian Lam
c709b7ed5b Merge remote-tracking branch 'origin/master' 2014-03-19 10:28:40 -04:00
Julian Lam
4239c376c8 truncating user list in Groups ACP page, resolved #1132. Refactored system groups handling 2014-03-19 10:27:02 -04:00
Julian Lam
3c5fc72e20 adding "system" flag to system groups 2014-03-19 09:28:18 -04:00
barisusakli
567d867b1e fixed require to missing public config.json 2014-03-19 02:07:18 -04:00
Julian Lam
ab5ec68f2f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-18 20:22:02 -04:00
Julian Lam
da1a1d5930 adding callback to settings.load, and omitting password validation check on user creation if no password is entered (e.g. SSO login) 2014-03-18 20:21:47 -04:00
barisusakli
e86eb8667e threadTools jshint 2014-03-18 20:03:56 -04:00
barisusakli
f61ca4327d fixed profile 2014-03-18 18:51:08 -04:00
Julian Lam
cc0fabc619 removing console logs from upgrade script 2014-03-18 18:31:38 -04:00
barisusakli
7d382b2900 closes #1243 2014-03-18 18:15:07 -04:00
barisusakli
d2af4a6b69 user images wont be responsive in widgets 2014-03-18 18:06:00 -04:00
barisusakli
0f66e80a5a added setting to disable notification sounds 2014-03-18 17:01:41 -04:00
Julian Lam
36e949acea Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-18 16:53:40 -04:00
Julian Lam
3308da64cb updating language strings for it and nb 2014-03-18 16:53:27 -04:00
barisusakli
45f0021503 moved follow to thread tools 2014-03-18 16:46:07 -04:00
Julian Lam
98745ae0c4 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-18 15:38:06 -04:00
Julian Lam
2b8a7c73ac daily digest emails! resolved #326 2014-03-18 15:37:17 -04:00
barisusakli
64676b66c8 removed unused validator require 2014-03-18 14:28:45 -04:00
barisusakli
6774f0f52f fit image to 128x128 and keep aspect ratio, closes #1240 2014-03-18 14:27:00 -04:00
barisusakli
6a4dd5cc05 closes #1160 2014-03-18 14:11:26 -04:00
barisusakli
e11efad0b7 added getSortedSetRangeByScore 2014-03-18 13:25:09 -04:00
Julian Lam
2badb76fc2 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-18 11:44:56 -04:00
Julian Lam
61afee98c3 updates to new settings mechanism, updating markdown minver, minor linting for upgrades.js, and upgrade stmt for markdown migration 2014-03-18 11:44:22 -04:00
barisusakli
e67e9aee42 moved user creation to new file 2014-03-17 21:47:37 -04:00
barisusakli
3f23821580 moved topic moving and thread tools out of topic.js 2014-03-17 21:23:30 -04:00
barisusakli
f83b7ee972 renamed event 2014-03-17 17:38:47 -04:00
barisusakli
8efc33d6a1 closes #976 2014-03-17 17:27:47 -04:00
psychobunny
ef97f627f4 closes #1237 2014-03-17 17:25:22 -04:00
Julian Lam
39b22058b7 tilde, not nothing. 2014-03-17 17:07:43 -04:00
Julian Lam
3cb2ac166b Merge branch 'patch-1' of github.com:JohnMcLear/NodeBB into JohnMcLear-patch-1 2014-03-17 17:07:16 -04:00
psychobunny
af997061aa Merge pull request #1185 from gusnips/patch-1
accept arguments on setup
2014-03-17 16:37:25 -04:00
barisusakli
10d8eed7b9 closes #1229 2014-03-17 16:28:00 -04:00
psychobunny
f0a19b06c2 launch aesthetics 2014-03-17 16:22:03 -04:00
psychobunny
c6a89b504f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-17 16:09:22 -04:00
psychobunny
6262312747 closes #1153 2014-03-17 16:09:20 -04:00
Julian Lam
012480c2e1 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-17 15:48:47 -04:00
Julian Lam
43e0c726fa relaxed isClientScript regex, fixed #1198 2014-03-17 15:48:34 -04:00
barisusakli
e49d445422 added err checking 2014-03-17 15:46:53 -04:00
psychobunny
da7d6a3137 closes #1175 2014-03-17 15:38:06 -04:00
psychobunny
11dddc9c6f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-17 15:15:18 -04:00
psychobunny
653007b72e closes #1231 2014-03-17 15:15:16 -04:00
barisusakli
76d8f19e73 forgot to return #963 2014-03-17 14:56:32 -04:00
barisusakli
cd4a204f99 closes #963 2014-03-17 14:56:05 -04:00
psychobunny
99108c750a don't refresh widgets on every new post 2014-03-17 14:45:08 -04:00
psychobunny
197b34461f potentially fixes #1228 2014-03-17 14:18:58 -04:00
psychobunny
e60b2f7716 closes #1174 2014-03-17 13:38:32 -04:00
psychobunny
1804373322 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-17 13:23:08 -04:00
psychobunny
0627734fc0 trim leading whitespace/#/? in search closes #1195 2014-03-17 13:23:05 -04:00
Julian Lam
d30acee9d3 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-17 13:20:29 -04:00
Julian Lam
0459e242fc resolved #1223 2014-03-17 13:20:07 -04:00
psychobunny
6e64712fd3 fixed bug in api/search causing it to crash if term is not passed in via ajaxify, see #1195 2014-03-17 13:18:43 -04:00
psychobunny
941c3b2d7e added emitter class; express.listen only after background tasks complete; closes #1227 2014-03-17 12:53:31 -04:00
Julian Lam
16f1db4f5d fireEvent reflection socket call, tweaks to Sounds page in ACP 2014-03-17 11:36:30 -04:00
Julian Lam
14a0b45ae8 securing settings.save socket listeners behind admin namespace 2014-03-17 10:48:30 -04:00
Julian Lam
c1ccc81400 ACP integration for Sounds 2014-03-17 10:37:11 -04:00
Julian Lam
eeb3bdc7f7 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-17 08:54:47 -04:00
barisusakli
4cadd8da7a missing radix 2014-03-16 14:29:51 -04:00
barisusakli
367a9aa022 composer jshint 2014-03-16 14:17:43 -04:00
John McLear
ecd3f15381 Use specified Less version
Fixed https://github.com/designcreateplay/NodeBB/issues/1219
2014-03-16 18:13:54 +00:00
Julian Lam
17903adace Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-16 14:13:27 -04:00
barisusakli
b4af4c72cc alertSuccess can take language strings 2014-03-15 18:05:59 -04:00
barisusakli
da8c2896d7 moved to showForkModal 2014-03-15 17:56:21 -04:00
barisusakli
38d4fd1a59 took out forking to its own file 2014-03-15 17:50:19 -04:00
barisusakli
46a475fdde controllers/admin/users cleanup 2014-03-15 16:28:57 -04:00
barisusakli
ea4931fa1d removed dupe from controllers/user.js 2014-03-15 16:18:03 -04:00
barisusakli
19c2a85bf1 logger jshint 2014-03-15 16:08:31 -04:00
barisusakli
37e8856861 new middleware to add slug to topic and category 2014-03-15 15:29:56 -04:00
barisusakli
1eafc6ba3d moved user delete to its own file, closes #746 2014-03-15 15:09:54 -04:00
Julian Lam
f942c03a58 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-15 14:39:16 -04:00
barisusakli
611c16b5a6 closes #1126 2014-03-15 00:26:09 -04:00
Barış Soner Uşaklı
d233e7927d added tablet screenshot 2014-03-14 20:56:06 -04:00
barisusakli
7873b90caf missing ; 2014-03-14 20:06:46 -04:00
barisusakli
3d6cce44c7 dont display chats with deleted users 2014-03-14 19:34:05 -04:00
barisusakli
42f42adfaf clean up, radix 2014-03-14 19:22:56 -04:00
barisusakli
1354739d19 user deletion #746
user deletion NOT SKALABLE
2014-03-14 19:07:50 -04:00
Julian Lam
0ea14324ac adding missing files 2014-03-14 00:35:36 -04:00
Julian Lam
ebe61450a1 WIP - settings.prepare refactoring... because. 2014-03-14 00:34:51 -04:00
Julian Lam
6d03f713c5 "Sounds" tab in Settings page... WIP, needs fixing. 2014-03-13 23:43:36 -04:00
barisusakli
a0e784a612 closes #1138 2014-03-13 20:24:04 -04:00
barisusakli
6011399063 removed comment 2014-03-13 18:50:57 -04:00
barisusakli
d2bef79888 closes #1194 2014-03-13 18:11:41 -04:00
Julian Lam
97a64122b4 updates to language files 2014-03-13 17:39:00 -04:00
Julian Lam
66fd13be97 Merge branch 'master' of github.com:qk168899/NodeBB into qk168899-master 2014-03-13 17:35:17 -04:00
sam
9c3c536ae8 fine tune zh-TW 2014-03-14 05:21:16 +08:00
barisusakli
ccc717b339 account posts jshint 2014-03-13 17:19:28 -04:00
Julian Lam
401bd02748 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-13 17:15:24 -04:00
Julian Lam
553cabdcfa refactored sound system so that they can be specified in ACP, updated soundfile to work in FF, which fixes #1209 2014-03-13 17:15:09 -04:00
barisusakli
bddc270033 changed addUserInfoToPost to add a user object 2014-03-13 16:41:45 -04:00
barisusakli
e0911c1fff replaced exists check with getCategoryData 2014-03-13 16:21:16 -04:00
psychobunny
9223865c80 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-13 15:46:22 -04:00
psychobunny
9de21995c4 added category bgColor and color to topics api 2014-03-13 15:46:19 -04:00
barisusakli
9685cb7fe0 removed broken post update 2014-03-13 15:23:02 -04:00
barisusakli
161c7f1875 closes #1201 2014-03-13 15:13:47 -04:00
barisusakli
175230e337 closes #1205 2014-03-13 14:08:58 -04:00
barisusakli
2bb5918b6c closes #1208 2014-03-13 13:49:22 -04:00
psychobunny
e3df487173 cleanup 2014-03-13 02:06:59 -04:00
psychobunny
79bacfe164 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-13 00:52:12 -04:00
psychobunny
6563a72b5b fixed emailer templates 2014-03-13 00:49:32 -04:00
barisusakli
7668b95c66 register.js cleanup 2014-03-12 23:18:54 -04:00
barisusakli
d8e00f95a2 moved user search to its own file 2014-03-12 22:11:48 -04:00
barisusakli
383b68e7fc user js refactor 2014-03-12 21:57:25 -04:00
barisusakli
cc0ac29b36 categories refactor 2014-03-12 21:41:53 -04:00
barisusakli
970639274e fixes image uploads
if images had special regex characters in them upload text was failing
2014-03-12 21:18:39 -04:00
barisusakli
90e398e5c9 user js refactor, category fix
if a category that didn't exist was request with category/1231 or
api/category/1231 it was crashing.
2014-03-12 20:53:48 -04:00
Julian Lam
67ef155c60 fixing image uploads 2014-03-12 20:03:20 -04:00
psychobunny
b2986f2a4e removing use strict from forum/topic.js until its refactored properly 2014-03-12 18:32:40 -04:00
psychobunny
bdfe12f365 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-12 18:30:17 -04:00
psychobunny
35ac0bb793 linted app.js 2014-03-12 18:30:13 -04:00
psychobunny
dd7433bab6 fixed active users icon in thread 2014-03-12 18:30:06 -04:00
barisusakli
3f5c51174d refactored user.js
took out notifications, email and reset code to separate files
2014-03-12 18:00:33 -04:00
psychobunny
f47f146320 moved out uploads and users from controllers/admin into their own files 2014-03-12 17:59:29 -04:00
psychobunny
641ec3ef82 moved duplicate upload validation code into its own fn 2014-03-12 17:46:03 -04:00
psychobunny
0bbff06cfa use middleware.authenticate instead of checking in each fn 2014-03-12 17:39:10 -04:00
psychobunny
01cda60704 moved admin upload functions into controllers/admin; re-organized routes/admin to look like routes/index; removed unused deps 2014-03-12 17:34:59 -04:00
psychobunny
01077cb35b Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-12 17:11:20 -04:00
psychobunny
0d625761be fixing bug introduced @ da0355ef79 (multiple widget areas defined = explosion) 2014-03-12 17:11:13 -04:00
barisusakli
0f19578523 removed dupe body 2014-03-12 17:08:06 -04:00
psychobunny
bdc7a19bd7 don't attempt to parse a non-existing widget area 2014-03-12 16:51:59 -04:00
psychobunny
58fe16e15c Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-12 16:31:29 -04:00
psychobunny
7fc2e627c5 linting templates.js; got rid of some unused server-side code 2014-03-12 16:31:26 -04:00
Julian Lam
e611a8174e linting setting.js again and abstracting out saveField 2014-03-12 16:21:19 -04:00
psychobunny
0a293be823 linting categories.js and footer.js 2014-03-12 16:18:48 -04:00
psychobunny
d183e58771 linting admin/groups 2014-03-12 16:17:00 -04:00
psychobunny
6ea760d636 linting admin/index; admin/languages 2014-03-12 16:15:39 -04:00
psychobunny
2d65a746e4 linting admin/settings 2014-03-12 16:14:18 -04:00
psychobunny
81de895c0e Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-12 16:12:27 -04:00
psychobunny
b515995432 removed unnecessary switch case 2014-03-12 16:12:23 -04:00
Julian Lam
4da1a2da97 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-12 16:11:49 -04:00
Julian Lam
1e0ec5dd47 appending relative path to user images for subfolder installs 2014-03-12 16:11:33 -04:00
psychobunny
8e4c23149c more re-organization of routes/index.js 2014-03-12 16:07:54 -04:00
psychobunny
e9fb2f4135 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-12 16:02:03 -04:00
psychobunny
44a91fe9ea linting admin/themes 2014-03-12 16:01:58 -04:00
barisusakli
2220483915 notifications 2014-03-12 15:59:02 -04:00
Julian Lam
5647354421 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-12 15:51:49 -04:00
Julian Lam
ca2e9d7d9e linting and moving xregexp back to .js 2014-03-12 15:51:24 -04:00
psychobunny
bff722925f Merge pull request #1206 from BitBangersCode/plugin-templates-fix
Fix importing of templates served by plugins
2014-03-12 15:46:53 -04:00
MrWaffle
c1a580c51d Fix importing of templates served by plugins 2014-03-12 20:45:07 +01:00
Julian Lam
738ada9b16 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-12 15:41:26 -04:00
Julian Lam
816d9e5d12 minifying xregext lib 2014-03-12 15:41:21 -04:00
psychobunny
fdb9b889ec Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-12 15:20:23 -04:00
psychobunny
fb1ddc3d9b minifying colorpicker.js 2014-03-12 15:20:20 -04:00
Julian Lam
b525d95915 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-12 15:18:22 -04:00
Julian Lam
6aa8df1d24 removed unminified buzz library, keeping minified version 2014-03-12 15:18:16 -04:00
psychobunny
da0355ef79 remove async dep for widgets (30kb was overkill for one use of async.each); linting 2014-03-12 15:05:07 -04:00
Julian Lam
dc99701d42 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-12 14:09:11 -04:00
Julian Lam
2826381b20 draft saving in composer -- resolved #1197 2014-03-12 14:08:55 -04:00
barisusakli
7b409c095c mongo callback refactor 2014-03-12 13:38:25 -04:00
barisusakli
4f72513f19 removed keys 2014-03-12 12:46:34 -04:00
Julian Lam
da0793c011 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-12 11:41:55 -04:00
Julian Lam
da05330ded updated cron dependency to require v0.1.4 at least, due to fixes upstream
re-enabling notifications pruning
2014-03-12 11:41:41 -04:00
barisusakli
6eff7d4c51 mongo cleanup 2014-03-12 02:04:31 -04:00
barisusakli
c320051a1e chat jshint 2014-03-12 01:40:35 -04:00
Julian Lam
e757183cec linting 2014-03-12 01:29:24 -04:00
Julian Lam
89ba0840e6 minor reordering of jslint comment 2014-03-12 01:23:35 -04:00
Julian Lam
0668556d4f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-12 01:23:20 -04:00
Julian Lam
c000a8c5ba linting 2014-03-12 01:23:11 -04:00
barisusakli
a0222b69bb closes #1200 2014-03-12 00:45:15 -04:00
barisusakli
e9ab9dcce2 search cleanup 2014-03-12 00:13:42 -04:00
barisusakli
33e34ca864 change getRecentPosts to take count 2014-03-11 23:31:28 -04:00
Julian Lam
caa9c17bc2 fixed login routes on subfolder installs 2014-03-11 23:26:33 -04:00
Julian Lam
5e5c6014ac updated vanilla minver 2014-03-11 23:20:35 -04:00
Julian Lam
9bf1d345e2 adding relative path to a category image for subfolder installs 2014-03-11 23:19:48 -04:00
barisusakli
67f1251ba3 pagination cleanup 2014-03-11 22:54:17 -04:00
barisusakli
3f12e51045 removed relative path from upload_url 2014-03-11 22:34:27 -04:00
barisusakli
6e6c5688d9 more cleanup 2014-03-11 22:31:09 -04:00
barisusakli
2befa06a33 some cleanup to socket posts 2014-03-11 21:52:22 -04:00
barisusakli
92267de9d8 feeds 2014-03-11 20:48:06 -04:00
Julian Lam
313c51cfb1 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-11 20:14:53 -04:00
Julian Lam
392075eb27 fixing theme previews in subfolder installs 2014-03-11 20:14:45 -04:00
barisusakli
3a42200e24 refactored feeds 2014-03-11 20:10:09 -04:00
Julian Lam
bf8f91f0d9 'less bad' handling of background image in home.tpl 2014-03-11 20:08:52 -04:00
Julian Lam
82a3415ab1 fixing admin routes on subfolder installs 2014-03-11 19:46:33 -04:00
Julian Lam
f28c690f2f fixing up robots.txt 2014-03-11 19:44:48 -04:00
Julian Lam
08b2106e0f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-11 19:42:18 -04:00
Julian Lam
7111adb3c2 fixed subfolder installs again (a bit), also stopped apple-touch-icon from clobbering /apple-touch-icon 2014-03-11 19:41:58 -04:00
barisusakli
d4556d4da3 added minifed js files
replace jquery form and timeago with minified versions
2014-03-11 19:31:30 -04:00
Julian Lam
a500899fdf removing unused bootstrap js file 2014-03-11 19:13:18 -04:00
Julian Lam
4343f240d0 moving async back to proper vendor folder 2014-03-11 18:51:59 -04:00
Julian Lam
2f1707e772 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-11 18:48:57 -04:00
barisusakli
813b3d6fcc changes for live streaming of posts 2014-03-11 18:46:27 -04:00
psychobunny
1e9850b6b9 vendor* 2014-03-11 18:38:23 -04:00
psychobunny
df29410c08 moving async back to require.js modules/vendor folder 2014-03-11 18:37:16 -04:00
psychobunny
5dc5eb41df fixed ajaxify bug introduced in last commit 2014-03-11 18:33:19 -04:00
psychobunny
e451a145dd Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-11 18:10:11 -04:00
psychobunny
c8bf617f4b allow plugins to override any route (except for admin routes) 2014-03-11 18:09:56 -04:00
Julian Lam
3dc4fd9fd9 added sounds for incoming and outgoing chat, and new notification 2014-03-11 17:47:13 -04:00
Julian Lam
4cb9f34253 adding buzz and sound assets 2014-03-11 17:10:49 -04:00
Julian Lam
f65a7f96ff moving async to proper vendor folder 2014-03-11 16:32:28 -04:00
Julian Lam
cb304d7d54 fixed #1188 2014-03-11 15:56:04 -04:00
Julian Lam
41116bc0b2 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-11 15:51:29 -04:00
Julian Lam
4bb6d89e83 fixed #1172 2014-03-11 15:51:25 -04:00
Julian Lam
b259c3d422 categoryData should return better topics (non-anon uid passed in now) 2014-03-11 15:48:29 -04:00
Julian Lam
82a82afe99 updated the way privileges were handled in the .get() category controller 2014-03-11 15:32:32 -04:00
barisusakli
350070339b added home room emit 2014-03-11 15:18:14 -04:00
barisusakli
a5f4135c62 added socket listeners to home 2014-03-11 15:15:54 -04:00
psychobunny
5abc96399e Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-11 14:48:38 -04:00
psychobunny
5f7f5a37c1 linting 2014-03-11 14:48:35 -04:00
barisusakli
76037a5f14 closes #1191
added a new method called isSetMembers takes in an array of values to
test if they are members of a set
2014-03-11 14:43:42 -04:00
psychobunny
29ad8d2582 closes #1192 2014-03-11 14:41:32 -04:00
Julian Lam
21d28b0f58 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-11 11:26:22 -04:00
Julian Lam
de6f58842b fixed issue where events page would error out if log was not already created. 2014-03-11 11:26:06 -04:00
barisusakli
88c4b90fc8 accounts controller removed duplication 2014-03-11 04:33:08 -04:00
barisusakli
037e8943a8 removed left over 2014-03-11 04:10:39 -04:00
barisusakli
9564b6fda2 closes #1165 2014-03-11 04:10:00 -04:00
barisusakli
3d68c7c6b6 added getObjectsFields methods to db class, changed getUsers methods to use the new method, refactor to user.js and mongo.js 2014-03-11 03:39:41 -04:00
Julian Lam
8873963946 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-10 21:55:57 -04:00
Julian Lam
88b4516ef8 added compiled templates to gitignore 2014-03-10 21:55:32 -04:00
Julian Lam
ffa42ffea3 moving pluginRoutes to top of route stack (like others), put app.load hook behind plugins' ready callback 2014-03-10 21:54:30 -04:00
barisusakli
c41ef10572 removed routes/user.js 2014-03-10 20:35:55 -04:00
barisusakli
661dff2f9b added jquery css 2014-03-10 20:19:27 -04:00
barisusakli
326eddf39e Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-10 19:00:30 -04:00
barisusakli
4e3819603b jshint fixed missing var 2014-03-10 19:00:23 -04:00
Barış Soner Uşaklı
900c0d838d Update README.md 2014-03-10 18:56:17 -04:00
barisusakli
e83ad1ab4a Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-10 18:28:42 -04:00
barisusakli
974333dbc3 fixed missing currentPage 2014-03-10 18:28:34 -04:00
Julian Lam
efb933f102 backwards-compatibility for plugins if they return a callback 2014-03-10 17:32:50 -04:00
Julian Lam
19c9f1bb19 backwards compatibility with plugins that are assuming no callback 2014-03-10 16:58:16 -04:00
Julian Lam
a7f310b49a fixed #1189 2014-03-10 15:31:47 -04:00
psychobunny
65b49d5de8 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-10 14:41:35 -04:00
psychobunny
116dad2858 updated widget-essentials dep to 0.0.11 2014-03-10 14:41:32 -04:00
barisusakli
656ec227e9 merge 2014-03-10 14:39:40 -04:00
barisusakli
78f9c25c9c added autocomplete to jquery fixed search results 2014-03-10 14:36:29 -04:00
psychobunny
337b3a2aa7 updated nodebb dependencies 2014-03-10 14:34:52 -04:00
psychobunny
d61a75a5c2 updated deprecation notices 2014-03-10 01:30:29 -04:00
psychobunny
2cde4508b0 Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-03-10 01:28:13 -04:00
psychobunny
23983c4c80 cleanup - search routes 2014-03-10 01:07:37 -04:00
barisusakli
71f84655ca minor cleanup 2014-03-10 00:17:06 -04:00
barisusakli
b413f06b72 removed unused function from groups, jshint 2014-03-09 23:51:09 -04:00
psychobunny
a68ba044c3 fixed missing topic_name and viewcount when reverse infinite scrolling 2014-03-09 23:48:22 -04:00
psychobunny
30cfddda68 fix for topics view count, and marking topics as unread 2014-03-09 23:20:59 -04:00
barisusakli
16d2e65ea0 optimized getCategories 2014-03-09 23:09:08 -04:00
psychobunny
857df86726 fixed pagination, and loading of template blocks on cold load (temp solution) 2014-03-09 22:35:09 -04:00
psychobunny
6ea4d89edc fixed search routes 2014-03-09 21:43:35 -04:00
psychobunny
875c8ed66c console.log 2014-03-09 21:21:57 -04:00
psychobunny
62afe65ccf bugfix + deprecated templates.getTemplateNameFromUrl 2014-03-09 21:05:01 -04:00
psychobunny
712c382a28 optimizing ajaxify (still needs work though) 2014-03-09 20:48:15 -04:00
psychobunny
4e54d500c0 fix bug where inactive plugin templates were being compiled as well 2014-03-09 20:45:37 -04:00
psychobunny
4793b6b4f9 fixed invalid path for apple-touch-icon 2014-03-09 20:08:51 -04:00
psychobunny
a99be8e7be got rid of all the res.locals.isAPI checks in all controller methods. now 1000% cleaner :shipit: 2014-03-09 20:05:14 -04:00
psychobunny
faf3de7e27 added a check for res.locals.isAPI inside res.render, instead of doing it all over the place in code 2014-03-09 19:54:16 -04:00
psychobunny
1b3f089804 fixed /admin/index 404 2014-03-09 19:47:39 -04:00
psychobunny
6acdc66470 fixed bug if default templates folder missing (in case you planned on building an entire theme from scratch) 2014-03-09 19:47:33 -04:00
psychobunny
464c2f42c3 Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	public/templates/admin/themes.tpl
	src/meta.js
	src/routes/api.js
2014-03-09 19:19:13 -04:00
psychobunny
37840d35f0 missing variable - numCSS 2014-03-09 19:15:18 -04:00
psychobunny
68b41083ad removing re-added templates from core 2014-03-09 19:14:50 -04:00
Gustavo Salomé Silva
475ac1e772 accept arguments on setup
useful if you want to setup a new instance programatically
2014-03-09 19:07:28 -03:00
barisusakli
73c89010cb closes #1182 2014-03-09 17:29:05 -04:00
barisusakli
57f9f8bc57 closes #1176 2014-03-09 16:39:31 -04:00
psychobunny
1ef95bd09e Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	app.js
	public/templates/category.tpl
	public/templates/popular.tpl
	public/templates/recent.tpl
	public/templates/unread.tpl
	src/routes/plugins.js
	src/webserver.js
2014-03-09 16:07:34 -04:00
barisusakli
281c482f1c Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-09 14:02:33 -04:00
barisusakli
6496b91c29 closes #1180 2014-03-09 14:02:30 -04:00
Julian Lam
4309fe3192 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-09 00:47:25 -05:00
Julian Lam
820cdf8a47 temporarily removing cronjob until upstream bugs are fixed -- resolved #1178 2014-03-09 00:47:21 -05:00
barisusakli
ec86aafb48 return user object 2014-03-09 00:20:29 -05:00
barisusakli
b4b9ed1841 optimized getTopicsByTids, single db call to get topicData, added cache for privilege/category/user data 2014-03-09 00:16:05 -05:00
barisusakli
1568c50906 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-08 17:41:51 -05:00
barisusakli
23e1cc010c removed removeHiddenFields function, using mongo selector instead 2014-03-08 17:41:23 -05:00
Julian Lam
6fb393de78 fixing #1177 2014-03-08 16:50:32 -05:00
Julian Lam
f00f7c8818 fixed apple-touch-icon for subfolder installs 2014-03-08 16:08:52 -05:00
Julian Lam
d9d04a3982 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-08 16:04:43 -05:00
Julian Lam
5a8a3627d2 bringing subfolder installations to v0.4.0 - JUST FOR @PLANNER 2014-03-08 16:04:22 -05:00
barisusakli
7fa8f5ef36 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-08 15:45:56 -05:00
barisusakli
284276cbb6 messaging jshint 2014-03-08 15:45:42 -05:00
psychobunny
f99c1f9921 removed code climate badge until analysis is complete 2014-03-08 02:56:24 -05:00
psychobunny
e84dd4fd94 Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	public/templates/accountedit.tpl
	public/templates/header.tpl
	src/routes/meta.js
	src/webserver.js
2014-03-07 19:21:40 -05:00
Julian Lam
c9642cecd2 setting Lavender as default theme for 0.4.0, woo! 2014-03-06 23:24:47 -05:00
Baris Soner Usakli
e51016ee66 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-06 20:53:51 -05:00
Baris Soner Usakli
30130b2d62 set back to false when loading indicator fades out 2014-03-06 20:53:41 -05:00
Julian Lam
90b29031fe backwards compatibility with older plugins using css with staticDir 2014-03-06 20:36:05 -05:00
Julian Lam
6a31bd9af6 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-06 19:48:54 -05:00
Julian Lam
552a63367d workaround for problem arising from switch to Date.UTC() 2014-03-06 19:48:38 -05:00
Baris Soner Usakli
6a824a2e10 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-06 17:57:15 -05:00
Baris Soner Usakli
7dfdab0a2d search page change 2014-03-06 17:57:07 -05:00
Julian Lam
5880590425 removing "pluginCSS", "css" in plugins is now included directly into stylesheet.css. This is a breaking change.
fixes #1168
2014-03-06 17:51:17 -05:00
psychobunny
23e4eb7cd9 deprecating filter:server.create_routes and filter:admin.create_routes; maintains limited functionality but recommended you migrate asap 2014-03-06 16:49:32 -05:00
psychobunny
7183fda2eb console.log 2014-03-06 16:48:55 -05:00
psychobunny
bcd8137d0e console.log 2014-03-06 16:47:59 -05:00
psychobunny
55a7838725 temporary templateMapping fix for admin side; will come back to this after merging this branch 2014-03-06 16:00:17 -05:00
Julian Lam
958e85a31f updated readme to point to wiki for platform specific install docs 2014-03-06 15:56:14 -05:00
Julian Lam
4add89cea4 Merge branch 'master' of github.com:tparnell8/NodeBB into tparnell8-master 2014-03-06 15:40:07 -05:00
Julian Lam
1f23642ab4 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-06 15:38:02 -05:00
Julian Lam
b2bc1d4555 setting password to null in getUserData, because Object.delete is bad? :P (thanks @barisusakli) 2014-03-06 15:37:29 -05:00
Julian Lam
e9e53ad95e added a new property to userData "hasPassword", disabling "current password" field in user editing if no password is set (for SSO logins, for example) 2014-03-06 15:32:06 -05:00
Baris Soner Usakli
d34e68ca25 convert score to int in mongo 2014-03-06 15:31:10 -05:00
Baris Soner Usakli
acd4771012 dbmock changes 2014-03-06 15:11:29 -05:00
Baris Soner Usakli
da0e1a8eb9 added back err to redis flushdb 2014-03-06 14:52:34 -05:00
Baris Soner Usakli
4986c8ed3a fixed tests 2014-03-06 14:51:43 -05:00
psychobunny
8c8055fbae fix for multiple synchronous hooks (synchronous hooks to be deprecated in 0.4x) 2014-03-06 14:23:48 -05:00
psychobunny
178edd150a moved action:app.load out of webserver; passing in app, mdw, and controllers into action:app.load. now we can create routes dynamically ;) 2014-03-06 14:09:10 -05:00
psychobunny
a9cccc9b9c allow hooks to accept single/multiple arguments instead of requiring you to send in a hash 2014-03-06 14:07:56 -05:00
Baris Soner Usakli
7135e9424c closes #1167 2014-03-06 13:32:26 -05:00
Baris Soner Usakli
3fe9bdc24c removed the postbar selector from activeusers 2014-03-06 13:08:22 -05:00
psychobunny
a9046b926d clean templates directory before beginning compilation 2014-03-06 12:25:10 -05:00
psychobunny
90a80ad83d plugins can now define a templates directory which gets compiled onload without requiring any hooks 2014-03-06 12:06:19 -05:00
psychobunny
c054ae121b Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-03-06 10:56:36 -05:00
Julian Lam
4a1513eabf fixed #1161 properly - Merge remote-tracking branch 'origin/master'
Conflicts:
	src/upgrade.js
2014-03-06 10:35:12 -05:00
Barış Soner Uşaklı
b79169a765 Merge pull request #1161 from code-press/master
Upgrade script incorrectly looking for "err"
2014-03-06 01:24:32 -05:00
Anthony Webb
21b1bc1729 Revert "Remove text"
This reverts commit c25835c63e.
2014-03-06 00:13:13 -06:00
Anthony Webb
6f8ed7f073 err doesnt exist here 2014-03-06 00:07:07 -06:00
Anthony Webb
d9ca95a5a3 Merge remote-tracking branch 'upstream/master' 2014-03-06 00:04:47 -06:00
psychobunny
f20a2a2047 merging changes from deprecated routes/user.js 2014-03-06 00:52:12 -05:00
psychobunny
8a05eee1f5 Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	src/routes/user.js
2014-03-06 00:51:36 -05:00
Baris Soner Usakli
096f352c82 closes #1130 2014-03-05 23:00:27 -05:00
Julian Lam
e956c19587 #1110 - moved isEmailAvailable into User.email 2014-03-05 21:21:53 -05:00
Julian Lam
e0dcf95138 fixed missing err in upgrade script 2014-03-05 21:19:36 -05:00
Baris Soner Usakli
38145abae1 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-05 20:37:40 -05:00
Baris Soner Usakli
58cb51bb02 removed unused imagemagick require 2014-03-05 20:37:31 -05:00
Julian Lam
b404b0197f final pass, resolved #1155 2014-03-05 19:51:16 -05:00
Julian Lam
5f52ef5f01 removed all 0.3.x related upgrade scripts, and updated minSchemaDate 2014-03-05 19:41:16 -05:00
Julian Lam
64aa89f5ee updating upgrade script to use UTC timestamps *facepalm*. God, I hope I didn't break anything...
(first pass #1155)
2014-03-05 19:33:10 -05:00
psychobunny
34552f7fb0 added middleware.guestSearchingAllowed to the actual search API call 2014-03-05 17:37:54 -05:00
psychobunny
542f937589 Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	src/routes/api.js
2014-03-05 17:35:41 -05:00
psychobunny
b9e119241e moved get_custom_templates into plugins.js 2014-03-05 17:23:08 -05:00
psychobunny
8f7a7fec7d more cleanup; commenting out custom plugin routes until its fixed properly 2014-03-05 17:13:55 -05:00
psychobunny
c0cd6148f4 one final push, cleanup + organize + lint; made feeds/meta/plugins routes follow same pattern as other route files 2014-03-05 17:06:24 -05:00
Baris Soner Usakli
c028761857 new route to get recent posts 2014-03-05 16:49:42 -05:00
psychobunny
1dbc47b890 deps cleanup 2014-03-05 16:25:55 -05:00
psychobunny
73d637096c Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	public/templates/account.tpl
	public/templates/accountposts.tpl
	public/templates/favourites.tpl
	public/templates/search.tpl
2014-03-05 15:59:50 -05:00
psychobunny
3efca794fd regex cleanup; fixed indenting on partials 2014-03-05 15:58:43 -05:00
Baris Soner Usakli
6f806d80c2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-05 15:39:02 -05:00
Baris Soner Usakli
c9c25bd174 added getRecentPost 2014-03-05 15:38:54 -05:00
Julian Lam
6192af18ab Merge pull request #1159 from BitBangersCode/settings-callback
Send the callback to the retry
2014-03-05 15:37:45 -05:00
psychobunny
67517c58e3 added warning if partial template was not found 2014-03-05 15:31:02 -05:00
psychobunny
d442e10037 template compilation + partials support 2014-03-05 15:13:54 -05:00
MrWaffle
33a5a2177e Send the callback to the retry 2014-03-05 20:57:32 +01:00
Baris Soner Usakli
976744480f post summary change 2014-03-05 14:52:32 -05:00
David Hoff
c25835c63e Remove text 2014-03-05 13:59:59 -05:00
psychobunny
3614211f0e Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	public/templates/accountposts.tpl
	public/templates/header.tpl
2014-03-04 17:52:15 -05:00
psychobunny
552eb78db8 template compiling init; changing themes now finally works on this branch 2014-03-04 17:49:56 -05:00
psychobunny
88e5ddac76 deprecating hook events on body 2014-03-04 17:22:45 -05:00
psychobunny
c67182204f clean-up + bugfixes 2014-03-04 17:20:12 -05:00
psychobunny
444956d517 deprecated loadTemplates client-side as well 2014-03-04 17:16:12 -05:00
psychobunny
68d526b762 deprecated templates.ready, templates.init, templates.loadServer; start webserver immediately without having to wait for templates.js 2014-03-04 17:14:01 -05:00
psychobunny
d471ea2d5b app.create_route removed 2014-03-04 17:11:40 -05:00
psychobunny
da331a1e6b clean up in routes/admin.js 2014-03-04 17:10:51 -05:00
psychobunny
fe147bfb67 have supervisor ignore public/templates folder 2014-03-04 17:08:30 -05:00
psychobunny
f73fd1eeae removed an unused hack in utils.js 2014-03-04 17:08:15 -05:00
Baris Soner Usakli
76d8d09f9b closes #1141 2014-03-04 16:48:07 -05:00
psychobunny
1dc63caf77 using views_dir config 2014-03-04 16:12:02 -05:00
psychobunny
d4f453cde3 added gitignore to public/templates dir 2014-03-04 16:11:03 -05:00
psychobunny
a3a0aabd22 return error if template doesn't exist 2014-03-04 16:08:02 -05:00
psychobunny
66ef8c8284 removed vanilla templates from core into nodebb-theme-vanilla :shipit: 2014-03-04 16:07:50 -05:00
Baris Soner Usakli
d100a41ce7 fixes topic follow 2014-03-04 15:23:26 -05:00
psychobunny
6e8c618fb1 prevent translator crash if data is undefined; linted/cleanup 2014-03-04 15:18:05 -05:00
psychobunny
cd336006fc optimized cold loading 2014-03-04 15:02:05 -05:00
Baris Soner Usakli
8c11299197 template language fix 2014-03-04 14:56:05 -05:00
psychobunny
10f4fa004e Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-03-04 14:53:31 -05:00
psychobunny
48df0cf889 Merge remote-tracking branch 'origin/master' into webserver.js-refactor
Conflicts:
	src/routes/admin.js
2014-03-04 14:50:44 -05:00
Barış Soner Uşaklı
81378e071b Merge pull request #1157 from MakerStudios/alertclose_nofire_click
Don't fire click when closing an alert
2014-03-04 13:43:04 -05:00
Julian Lam
9b53dd1014 english fallback for 'reset_password' translations 2014-03-04 13:35:20 -05:00
medwards20x6
76b53478ce Don't fire click when closing an alert 2014-03-04 10:30:44 -08:00
Baris Soner Usakli
b28e4846a4 fixed disconnect check 2014-03-04 13:28:24 -05:00
Baris Soner Usakli
3c97ef6829 closes #1156 2014-03-04 13:09:58 -05:00
Baris Soner Usakli
dbb814fe4e category permission page fixes 2014-03-04 12:54:25 -05:00
Baris Soner Usakli
7bb3766ebd 2 column layout for admin index 2014-03-03 22:05:25 -05:00
Baris Soner Usakli
814db2e1d8 icon first 2014-03-03 17:52:00 -05:00
Baris Soner Usakli
4b64b9dcdc closes #951 2014-03-03 17:46:54 -05:00
Baris Soner Usakli
1f7a717bf0 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-03 17:24:52 -05:00
Baris Soner Usakli
50f83abf75 closes 1150 2014-03-03 17:24:38 -05:00
psychobunny
c24c2a5422 search and reset routes, the very last of the views to be refactored :shipit: 2014-03-03 17:16:53 -05:00
psychobunny
8802fc5a33 fixing link tags; misc bug fixes 2014-03-03 16:56:35 -05:00
psychobunny
d3aead7c13 changing renderHeader function signature to req, res, next 2014-03-03 16:54:28 -05:00
Julian Lam
57d0273c13 dutch translations 2014-03-03 16:40:57 -05:00
psychobunny
48b9289002 use the proper footer for admin 2014-03-03 16:40:26 -05:00
psychobunny
7ef6f9bbf5 buckled down and refactored pretty much all of admin routes x_x 2014-03-03 16:35:21 -05:00
Julian Lam
8846f7fb9b fixing mappedPath in windows 2014-03-03 16:32:41 -05:00
Baris Soner Usakli
37aeda14c4 fixed email retrieval in mongo 2014-03-03 16:16:41 -05:00
Baris Soner Usakli
be70b3de57 closes #1090 2014-03-03 15:26:15 -05:00
Baris Soner Usakli
529cd60dd2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-03 14:46:57 -05:00
Baris Soner Usakli
70299ea5c2 better search result page 2014-03-03 14:46:50 -05:00
psychobunny
c26af77a24 fixing cold load of admin/index 2014-03-03 14:43:25 -05:00
psychobunny
d360320441 finally got admin header and footer working 👍 2014-03-03 14:30:39 -05:00
psychobunny
eed97648b1 started moving admin mdw into middleware/admin.js; res.render post-processing to append admin footer/header 2014-03-03 13:17:10 -05:00
psychobunny
e588762aa0 yes, I've finally started on the dreaded admin refactor (not much else left to do :/) 2014-03-03 12:50:21 -05:00
psychobunny
209bcaba8c middleware.updateLastOnlineTime; middleware.prepareAPI (reinstated) 2014-03-03 12:49:47 -05:00
Julian Lam
9c55b202e7 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-03 12:47:43 -05:00
Julian Lam
dc8839b63c updating validator to 3.4.0 2014-03-03 12:47:40 -05:00
psychobunny
f943a194b6 added plugin deprecation notices to NOTES.md 2014-03-03 12:39:58 -05:00
psychobunny
f785f7f6e3 added deprecation notice to plugins/fireHook 2014-03-03 12:37:57 -05:00
psychobunny
94aeb3ab22 notifications route; added middleware.authenticate to user/uploadpicture api route 2014-03-03 12:30:27 -05:00
psychobunny
5b8e8e4b67 deprecating use of templates.setGlobal on server side in favour of passing in api.config into res.locals (still needs work) 2014-03-03 12:16:46 -05:00
psychobunny
188aeabba8 missed a file in previous commit 2014-03-03 11:45:40 -05:00
psychobunny
7bef58deb1 started moving out api functionality out of the route file into controllers/api.js 2014-03-03 11:45:23 -05:00
psychobunny
138b12e815 re-added linkTags into header; clean up 2014-03-03 11:44:52 -05:00
psychobunny
d18ce28de0 fixxed categories.get; privileges object and currentPage were missing on original route 2014-03-03 11:28:31 -05:00
Julian Lam
64ee792013 fixed #1154 2014-03-03 11:12:28 -05:00
Julian Lam
5a8fa9b1f7 fixed regression in groups management modal 2014-03-03 11:07:37 -05:00
psychobunny
c5066ed100 Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-03-03 10:40:56 -05:00
Julian Lam
30e83fdabe fixing upgrade script if order is not set 2014-03-03 10:17:11 -05:00
psychobunny
31d576e9ed deprecation notice 2014-03-03 00:22:10 -05:00
psychobunny
fe9d4efa98 moved api-only routes into routes/api.js, cleanup & linting 2014-03-03 00:12:25 -05:00
psychobunny
d75bc9578b deprecating middleware.prepareAPI in favour of using app.all('*') in /api namespace 2014-03-02 23:49:15 -05:00
psychobunny
5b25e21606 console.log 2014-03-02 23:45:41 -05:00
psychobunny
8ad24818df fixed FOUS in category sidebar 2014-03-02 23:40:31 -05:00
psychobunny
71675d0aa0 removed required "ajaxifying" class for #content - breaks browsers with noscript turned on. 2014-03-02 23:36:27 -05:00
psychobunny
88ca3733a7 more jshinting 2014-03-02 23:07:16 -05:00
psychobunny
d20501b29d meta.js merge conflict 2014-03-02 22:59:57 -05:00
psychobunny
cdf92c5cda fixed a really annoying bug - the original topics route pre-refactor never actually included a privileges object 2014-03-02 22:54:03 -05:00
psychobunny
c44934cc0d all JS files properly required on cold load 2014-03-02 22:51:40 -05:00
psychobunny
52a50a80ba templates.parseTemplateVariables, added optional callback 2014-03-02 22:48:18 -05:00
psychobunny
b9264dea76 ajaxify.loadScript 2014-03-02 22:47:14 -05:00
Julian Lam
fc53385ede removing socket.io library from minfile 2014-03-02 22:34:57 -05:00
psychobunny
fa2b5d1ee6 re-implementing meta and link tags - completified 2014-03-02 22:15:27 -05:00
psychobunny
3eb9f65c2e jshinting controllers/index.js; adding back meta tags to home page 2014-03-02 22:12:08 -05:00
psychobunny
8df33e65ac fixing bug in topics causing meta tags to revert on subsequent refresh 2014-03-02 22:10:57 -05:00
Julian Lam
044347ebca hotfix for vanilla missing socket.io lib 2014-03-02 22:02:55 -05:00
Julian Lam
aadde85e1b Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-02 20:41:49 -05:00
Julian Lam
28832a2540 fixing bug where sometimes a pidfile was left over, and nodebb would refuse to start a daemon again. 2014-03-02 20:37:57 -05:00
Baris Soner Usakli
f5ec24e925 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-02 20:01:01 -05:00
Baris Soner Usakli
016642bc16 show 1 ip per line 2014-03-02 20:00:54 -05:00
Julian Lam
34336a1069 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-02 19:56:27 -05:00
Julian Lam
1837a8443c shifting socket.io back to the end :\ 2014-03-02 19:55:50 -05:00
Baris Soner Usakli
98fa8c419d closes #1152 2014-03-02 19:55:26 -05:00
Baris Soner Usakli
55b5d0c209 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-02 16:58:56 -05:00
Baris Soner Usakli
e4b6d0e1ff closes #1096 2014-03-02 16:58:49 -05:00
Julian Lam
a8d2b46911 fixed incorrect path in plugin script inclusion 2014-03-02 16:44:41 -05:00
Julian Lam
e70bc9f163 added deprecation warning for plugins using filter:scripts.get 2014-03-02 16:33:45 -05:00
Julian Lam
5553e07bbd moving socket.IO client lib to top of file, just in case 2014-03-02 16:29:21 -05:00
Julian Lam
4c2a6953f1 concatenating the client scripts, instead of compressing, in development mode 2014-03-02 15:34:12 -05:00
psychobunny
dbbbe21883 re-implementing meta and link tags part 1 2014-03-02 15:14:38 -05:00
psychobunny
6820e9e662 random jshinting expedition 2014-03-02 14:45:57 -05:00
psychobunny
f0dfee5402 clean up 2014-03-02 14:21:24 -05:00
psychobunny
6c3c669e31 moved middleware out of webserver.js and into middleware.js 2014-03-02 14:16:16 -05:00
psychobunny
936e52a43f require db 2014-03-02 14:00:28 -05:00
Julian Lam
3860abdc24 plugins can now pass in scripts in plugin.json, and they will be bundled into nodebb.min.js 2014-03-02 13:58:25 -05:00
psychobunny
4d598dcd63 moved process events out of webserver.js and into app.js 2014-03-02 13:56:46 -05:00
psychobunny
ee5596fad5 Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-03-02 13:51:34 -05:00
Julian Lam
14d7453a23 bundling socket.io client library into minfile, minfile always used from this point forward, even in development mode.
Development mode will not compress the scripts, but will just concatenate.
2014-03-02 13:28:09 -05:00
Julian Lam
033c5d5726 es, fr, nb, sv, zh_CN translations 2014-03-02 11:06:21 -05:00
Baris Soner Usakli
5732994097 reset_code click fix 2014-03-01 23:18:05 -05:00
Baris Soner Usakli
feeb220514 removed console.log 2014-03-01 22:52:30 -05:00
Baris Soner Usakli
1b7f8cc5cb active users fix 2014-03-01 22:51:39 -05:00
Baris Soner Usakli
fb691b23b4 moved topic locked check to topic.reply 2014-03-01 22:03:21 -05:00
Julian Lam
77f5d6ff7d Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-01 22:00:28 -05:00
Julian Lam
1c324f45cf tried fixing absentee detection in active users 2014-03-01 21:59:51 -05:00
Baris Soner Usakli
c6ff8e1042 #1148 2014-03-01 21:55:29 -05:00
Julian Lam
079ed10631 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-01 21:32:43 -05:00
Julian Lam
2b178ff76d proper tracking of users' reply status when others enter the room 2014-03-01 21:31:50 -05:00
Baris Soner Usakli
2966cc4a49 minor fix 2014-03-01 19:18:15 -05:00
Baris Soner Usakli
b2f9184562 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-01 19:15:25 -05:00
Baris Soner Usakli
b6d97281d3 closes #1015 2014-03-01 19:15:18 -05:00
Julian Lam
a9b78d2600 minimizing the composer should unregister it 2014-03-01 17:49:39 -05:00
Julian Lam
68fb6ec09a Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-01 17:36:30 -05:00
Baris Soner Usakli
42a7c037e6 removed dupe i var 2014-03-01 17:36:29 -05:00
psychobunny
f46e563b8a moved all route definitions in webserver.js into routes/index.js 2014-03-01 17:35:47 -05:00
Julian Lam
f2ffc2b533 properly referencing the tid of the composer instead of blindly checking templates.get('topic_id') 2014-03-01 17:34:06 -05:00
psychobunny
08a9ce4950 moved all app.configure() code into middleware/index.js + organization/cleanup 2014-03-01 17:26:26 -05:00
Baris Soner Usakli
8cda88790e Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-01 17:11:59 -05:00
Baris Soner Usakli
3c6e4ebda1 possible fix to #1148 2014-03-01 17:11:49 -05:00
Julian Lam
fcb44ae256 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-01 17:06:02 -05:00
Julian Lam
d012d237bf added back clearInterval 2014-03-01 17:05:57 -05:00
Baris Soner Usakli
c4d1c8feff Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-01 16:59:13 -05:00
Baris Soner Usakli
87f337f2fb cleanup 2014-03-01 16:59:04 -05:00
Julian Lam
7ef84e0daa switched to 'ping active' system 2014-03-01 16:53:41 -05:00
Julian Lam
7ff9fa1a44 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-03-01 15:46:27 -05:00
Julian Lam
b3d7ae1c86 showing who is replying in the active users block 2014-03-01 15:46:13 -05:00
Baris Soner Usakli
0c9ab5e93f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-03-01 15:45:55 -05:00
psychobunny
804da0d8de removed unused deps in webser.js 2014-03-01 15:45:47 -05:00
Baris Soner Usakli
fff3ba5bec hinted redis.js 2014-03-01 15:45:43 -05:00
psychobunny
26853d024e Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-03-01 15:37:57 -05:00
Tommy Parnell
97cb11628d Installation instructions CentOS 6.5
ReadME.MD Adding installation instructions for CentOS 6.5, also adding npm strict-ssl to false to allow some npm packages that have self signed certs.
2014-03-01 15:37:02 -05:00
Julian Lam
ea222a4295 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-28 23:38:29 -05:00
Julian Lam
0fecbf7cbf entity decoding in filenames 2014-02-28 23:38:04 -05:00
Baris Soner Usakli
8eca195530 updateHeader once on load 2014-02-28 22:08:33 -05:00
Julian Lam
6bc759748f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-28 20:51:17 -05:00
Julian Lam
1f136c6a72 ninjafix to mappedPath 2014-02-28 20:51:12 -05:00
Baris Soner Usakli
24b669bd39 some fixes for search plugin 2014-02-28 20:47:49 -05:00
Julian Lam
1c19ae48bd fixed #1143 -- also removed near-meaningless info messages saying that a Hook had been registered. 2014-02-28 20:39:27 -05:00
Julian Lam
5540313b7f fixing path resolution for plugins in production mode 2014-02-28 20:13:28 -05:00
Julian Lam
5e2460e17e fixed #1144 2014-02-28 20:05:19 -05:00
Julian Lam
ac915c1190 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-28 19:56:20 -05:00
Julian Lam
d63ff461f3 changed executable to not run watch-mode using the loader 2014-02-28 19:56:00 -05:00
Baris Soner Usakli
84dc012198 closes #1142 2014-02-28 18:17:17 -05:00
Baris Soner Usakli
e75c303b89 added unique visitor count to admin dashboard 2014-02-28 17:19:42 -05:00
Baris Soner Usakli
7081c7dcc4 moved ip log to api 2014-02-28 16:50:39 -05:00
psychobunny
e73f8d6f37 Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-02-28 16:42:05 -05:00
psychobunny
4b2f5cbfab added NOTES.md to start keeping track of breaking changes in 0.4x refactoring 2014-02-28 16:27:43 -05:00
psychobunny
0211b4484b on cold load, only display page after widgets are rendered 2014-02-28 16:24:56 -05:00
psychobunny
6f21547a8d ajaxify.fadeIn, ajaxify.fadeOut 2014-02-28 16:24:25 -05:00
Baris Soner Usakli
9069f9aedc Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-28 16:23:53 -05:00
Baris Soner Usakli
6bf36a0468 if alert is closed dont fire clickfn 2014-02-28 16:23:46 -05:00
Julian Lam
6a649f9b9a Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-28 16:21:09 -05:00
Julian Lam
561b42d0f9 new staticDirs format, @mrwaffle 2014-02-28 16:21:02 -05:00
psychobunny
6827dbc9c4 render widgets on cold load 2014-02-28 16:17:35 -05:00
Baris Soner Usakli
eea677655f minor clean up to categories.js 2014-02-28 16:13:19 -05:00
psychobunny
23c283f06c ajaxify.getTemplateMapping 2014-02-28 16:13:00 -05:00
psychobunny
49997639e9 moved widget rendering code into ajaxify.renderWidgets 2014-02-28 16:08:25 -05:00
psychobunny
584347848b trigger action:ajaxify.start and action:ajaxify.end on cold load 2014-02-28 16:08:13 -05:00
psychobunny
f35c14ee07 bugfixes + cleanup for accounts and users routes 2014-02-28 15:58:29 -05:00
Baris Soner Usakli
eac201cae9 no need to do these on every ajaxify into categories 2014-02-28 15:56:30 -05:00
Baris Soner Usakli
7eae79cee9 anons cant chat 2014-02-28 15:36:57 -05:00
psychobunny
fa103b2d6e finally done with routes/user.js; accounts.getUserByUID; bug fixing and cleanup 2014-02-28 15:33:25 -05:00
psychobunny
08d3d9feb3 accounts.uploadPicture 2014-02-28 15:26:39 -05:00
Baris Soner Usakli
ccd29bfd61 added callback to category update 2014-02-28 15:25:50 -05:00
psychobunny
e67f6d2169 re-added filter:footer.build temporarily - to be deprecated for 0.4x 2014-02-28 15:15:00 -05:00
psychobunny
607bc8545b Merge remote-tracking branch 'origin/master' into webserver.js-refactor 2014-02-28 14:35:00 -05:00
psychobunny
cb15655c9c app.checkAccountPermissions middleware; some clean up & bug fixes 2014-02-28 14:34:35 -05:00
psychobunny
bfcb61f37d forgot to port getUserDataByUserSlug 2014-02-28 14:22:49 -05:00
psychobunny
d072ad60de all users/ pages converted 2014-02-28 14:19:43 -05:00
psychobunny
7c873c4314 decided to functionally separate accounts from users 2014-02-28 14:08:06 -05:00
psychobunny
e64d87cb1d all user account pages; all static pages; outgoing page 2014-02-28 14:04:21 -05:00
psychobunny
db0ad5b57c Merge pull request #1140 from mathisonian/patch-1
fix error with undefined callback
2014-02-28 13:07:49 -05:00
Matthew Conlen
a2a9c8fd8a fix error with undefined callback 2014-02-28 12:58:05 -05:00
Baris Soner Usakli
8064f7f0db scroll fix 2014-02-28 00:59:35 -05:00
Baris Soner Usakli
9b4ca12dc1 fixed missing var, posts.js cleanup 2014-02-28 00:14:11 -05:00
Baris Soner Usakli
8c6af7ef59 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-27 23:45:19 -05:00
Baris Soner Usakli
091723a8c5 closes #1101 2014-02-27 23:45:12 -05:00
Julian Lam
ed0a17b94a reoad, lol 2014-02-27 23:24:52 -05:00
Julian Lam
20b5d577dd ability to restart nodebb via executable 2014-02-27 20:36:04 -05:00
psychobunny
00df660fa5 robots + sitemap; some clean up 2014-02-27 17:16:06 -05:00
psychobunny
942d16a3b4 confirmEmail route 2014-02-27 17:04:41 -05:00
psychobunny
dae7b06f4d initial login and register routes 2014-02-27 16:52:46 -05:00
psychobunny
e193d58112 unreadTotal route 2014-02-27 16:39:34 -05:00
psychobunny
08c0a7fa5e removing old unread and recent routes 2014-02-27 16:38:10 -05:00
psychobunny
beafc881c4 added recent and unread in categoriesController 2014-02-27 16:35:29 -05:00
psychobunny
062e35c89e app.authenticate middleware; added new recent, unread routes 2014-02-27 16:34:58 -05:00
Baris Soner Usakli
0682b5c5ea fix admin users link 2014-02-27 15:44:34 -05:00
Baris Soner Usakli
389fc787a3 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-27 15:35:58 -05:00
Baris Soner Usakli
c49c3e3550 fixed jquery ui package 2014-02-27 15:35:50 -05:00
psychobunny
4435a20d90 fixed merge conflict 2014-02-27 15:11:50 -05:00
psychobunny
96d6b96ce4 controllers.home 2014-02-27 15:06:39 -05:00
psychobunny
c084529597 removed old api/home and api/popular 2014-02-27 14:56:54 -05:00
psychobunny
ad222dce2a controller indexx 2014-02-27 14:56:14 -05:00
psychobunny
233e49fd34 topics controller 2014-02-27 14:56:05 -05:00
psychobunny
62a4b419e3 categories controller 2014-02-27 14:55:53 -05:00
psychobunny
27b99d5c56 webserver.js refactor init 2014-02-27 14:55:41 -05:00
psychobunny
1db0651bff removing old api/popular code 2014-02-27 14:44:47 -05:00
psychobunny
4a33b41464 deprecating loadServer in favour of using res.render 2014-02-27 14:44:19 -05:00
Julian Lam
e2fb3dacca pushing new language fallbacks 2014-02-27 14:10:13 -05:00
Julian Lam
dfd13fac0d Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-27 14:05:55 -05:00
Julian Lam
44ac7ec262 added new hooks for rendering help messages in composer, removed markdown text from translation 2014-02-27 14:05:31 -05:00
Baris Soner Usakli
30eb85f96e fixed conflicts 2014-02-27 12:46:37 -05:00
Baris Soner Usakli
44d40fba35 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-27 12:15:34 -05:00
Baris Soner Usakli
0ca6c58ded closes #1137 2014-02-27 12:15:26 -05:00
Julian Lam
1a85d45567 portuguese and slovak translations 2014-02-27 10:41:59 -05:00
Julian Lam
a7c53519b6 updated executable help 2014-02-27 10:30:09 -05:00
Julian Lam
c7274e11d0 removing the bit of code that disables plugins if the minver does not satisfy (too annoying imo)... now that we have ./nodebb reset, this is moot 2014-02-27 10:28:49 -05:00
Julian Lam
4567e5fbd0 updated help blurb in executable 2014-02-27 10:13:36 -05:00
Julian Lam
5b301772bb added daemon capability to ./nodebb start, npm start/stop scripts 2014-02-27 10:06:31 -05:00
Baris Soner Usakli
38e4a6c8b0 better check 2014-02-27 01:51:33 -05:00
Baris Soner Usakli
b8c089cfaa added check for invalid tags 2014-02-27 01:43:24 -05:00
Baris Soner Usakli
fb1313ec90 load config change 2014-02-27 01:32:20 -05:00
Baris Soner Usakli
dcd3975933 closes #1135 2014-02-27 00:45:29 -05:00
akhoury
2209a55afc - changes per PR conversation 2014-02-26 23:34:03 -05:00
akhoury
0070e1158e removing a boolean left out from the addEventListener definition 2014-02-26 22:32:09 -05:00
Baris Soner Usakli
72aa22d824 removed unused timestamp 2014-02-26 22:19:01 -05:00
akhoury
3f1d5c6656 merge fork with upstream master 2014-02-26 22:01:29 -05:00
Baris Soner Usakli
87ccfdf5eb Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-26 21:58:12 -05:00
Baris Soner Usakli
d87034b131 use alert for bookmark 2014-02-26 21:58:04 -05:00
akhoury
1b207d8276 IE8 support, general cleanups, from native to $ objects ... 2014-02-26 21:55:29 -05:00
akhoury
b59c10a1e9 took out some overrides out utils to a new overrides.js 2014-02-26 21:49:22 -05:00
Julian Lam
ef2dbe8df6 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-26 21:10:15 -05:00
Julian Lam
04b2887d88 fixed it language code 2014-02-26 21:10:05 -05:00
Baris Soner Usakli
81f4767687 user.js hint 2014-02-26 21:04:20 -05:00
Baris Soner Usakli
6a962655e4 jshint for topics.js 2014-02-26 20:38:49 -05:00
Baris Soner Usakli
f1f7b59d58 missed this one 2014-02-26 20:31:30 -05:00
Baris Soner Usakli
d398d4c613 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-26 19:55:34 -05:00
Baris Soner Usakli
99bf882a1c removed cid from getTopicsByTids 2014-02-26 19:55:28 -05:00
Barış Soner Uşaklı
1ca1ace053 Update README.md 2014-02-26 19:45:07 -05:00
Baris Soner Usakli
ad37715972 empty array if not topics in catgory 2014-02-26 17:34:02 -05:00
Baris Soner Usakli
d5268f5497 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-26 17:17:02 -05:00
Baris Soner Usakli
56bbeb9950 use disableSocialButtons from config 2014-02-26 17:16:55 -05:00
psychobunny
2247a8b21f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-26 17:00:07 -05:00
psychobunny
aee2b2ecd0 allow express to serve parsed tpls via res.render 2014-02-26 17:00:03 -05:00
Baris Soner Usakli
7f2d70d7f6 minor cleanups 2014-02-26 16:58:02 -05:00
Baris Soner Usakli
a83d4a9dd5 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-26 16:43:28 -05:00
Baris Soner Usakli
ea6cf3bbd5 more cleanup and changes to topics 2014-02-26 16:43:21 -05:00
psychobunny
87baeebc3f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-26 15:58:45 -05:00
psychobunny
5145ba1aac added a route to get moderators by category id 2014-02-26 15:58:42 -05:00
Baris Soner Usakli
d149622f0b Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-26 15:32:40 -05:00
Baris Soner Usakli
8da7a6f2f3 cleanup 2014-02-26 15:32:32 -05:00
Julian Lam
74d6392bec added Dutch language 2014-02-26 14:55:45 -05:00
Julian Lam
c38e328377 language files for fi, it, zh_CN, pl, hu 2014-02-26 14:50:44 -05:00
Julian Lam
1397890dd8 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-26 13:45:18 -05:00
Julian Lam
7b46d66e68 having the loader play nicely with supervisor -- ./nodebb watch can now hit the restart button 2014-02-26 13:42:39 -05:00
Baris Soner Usakli
8a2266816d make plugin names strong 2014-02-26 13:14:48 -05:00
Julian Lam
3f7e458866 fixed #1127 2014-02-25 23:06:21 -05:00
Baris Soner Usakli
947836f815 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-25 22:05:16 -05:00
Baris Soner Usakli
36bc2967c2 fix highlight on vanilla, dont replaceState if url didnt change 2014-02-25 22:05:07 -05:00
Julian Lam
815e78339f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-25 18:14:11 -05:00
Julian Lam
101a6ab812 minifying css 2014-02-25 18:14:06 -05:00
Baris Soner Usakli
1ba3acfd03 display ips to admins/users on profile 2014-02-25 17:34:42 -05:00
Baris Soner Usakli
de3bc84fde removed logs 2014-02-25 17:23:13 -05:00
Baris Soner Usakli
ebdfd16e48 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-25 17:21:41 -05:00
Baris Soner Usakli
cc8ac2c026 get ips if admin or self 2014-02-25 17:21:30 -05:00
Julian Lam
6545357969 fixing admin stylesheet + lavender minver 2014-02-25 17:15:46 -05:00
Julian Lam
f5d1ba4231 closed #1113 2014-02-25 17:07:27 -05:00
Julian Lam
ee44778e2b Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-25 17:00:42 -05:00
Julian Lam
309dcaee06 fixed issue where even dev mode would call the minifier for js 2014-02-25 17:00:26 -05:00
Baris Soner Usakli
9683dc27db Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-25 16:55:11 -05:00
Baris Soner Usakli
8913de4ea8 dont add post-bar to each post 2014-02-25 16:55:05 -05:00
Julian Lam
656131be39 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-25 16:52:49 -05:00
Julian Lam
12e3e45398 closed #1095 - js is now minified and saved to memory the first time it is requested (on prod mode), same with theme CSS 2014-02-25 16:50:58 -05:00
Baris Soner Usakli
3c53ebb02e better scrolling 2014-02-25 16:33:22 -05:00
Baris Soner Usakli
23c20a2821 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-25 15:26:18 -05:00
Baris Soner Usakli
b658c68736 back doesnt work 2014-02-25 15:26:10 -05:00
Julian Lam
4c21b23ea2 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-25 15:21:10 -05:00
Julian Lam
bc1c419722 caching compiled CSS locally, so repeated calls to the stylesheet serve from cache 2014-02-25 15:20:21 -05:00
Baris Soner Usakli
a3855a47e5 check replaceState 2014-02-25 15:12:42 -05:00
Baris Soner Usakli
e050c15474 fixed conflict 2014-02-25 15:11:10 -05:00
Baris Soner Usakli
5567378234 change hash take 2 2014-02-25 15:10:50 -05:00
Julian Lam
7f11d78b82 Merge branch 'master' into less-is-moar 2014-02-25 14:59:21 -05:00
Julian Lam
e3ec4e938a Revert "update post has in address bar, #1126"
This reverts commit 4b1c8150d3.
2014-02-25 14:59:07 -05:00
Baris Soner Usakli
4b1c8150d3 update post has in address bar, #1126 2014-02-25 14:51:11 -05:00
Baris Soner Usakli
7c1a46f25d misc cleanup 2014-02-25 14:41:14 -05:00
Baris Soner Usakli
14b298eda8 cleaned updateHeader 2014-02-25 14:29:19 -05:00
Baris Soner Usakli
f39248c83b closes #1123 2014-02-25 14:17:42 -05:00
Julian Lam
53f1e4d3d4 dedicated stylesheet.css route for LESS compilation, no longer usin less-middleware for base theme... 2014-02-25 14:13:09 -05:00
Baris Soner Usakli
fd8e7327f0 removed console.log 2014-02-25 14:05:14 -05:00
Baris Soner Usakli
7e5a7c53bd changes to templates 2014-02-25 14:03:47 -05:00
psychobunny
156c0302c9 properly namespacing objects in templates 2014-02-25 13:15:23 -05:00
Baris Soner Usakli
037ac9180b closes #1122 2014-02-24 20:19:31 -05:00
Baris Soner Usakli
0777c96a55 dont highlight reverse infinite loaded posts 2014-02-24 19:26:26 -05:00
Baris Soner Usakli
17f2ff0ed9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-24 19:16:34 -05:00
Baris Soner Usakli
0da2839943 added the class for topic delete 2014-02-24 19:16:23 -05:00
Julian Lam
c48d81379b logging unique IPs as well 2014-02-24 17:49:22 -05:00
Julian Lam
aa71f1e088 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-24 17:20:57 -05:00
Julian Lam
1710b97df5 removed console log 2014-02-24 17:20:45 -05:00
Baris Soner Usakli
2597c4fc37 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-24 17:19:56 -05:00
Baris Soner Usakli
3ed2d21eb6 fixed flag post, added highlight to scroll post 2014-02-24 17:19:49 -05:00
Julian Lam
21685f8c84 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-24 17:17:20 -05:00
Julian Lam
8557c56c45 resolved #1117 2014-02-24 17:06:41 -05:00
Baris Soner Usakli
bbc2df11e1 fixed updateTopicCount 2014-02-24 16:24:21 -05:00
Baris Soner Usakli
8feac114c3 closes #1022 2014-02-24 16:23:11 -05:00
Baris Soner Usakli
f7cdc8c68c Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-24 16:01:08 -05:00
Baris Soner Usakli
ed8e76ebce added error check to getTopicDataWithUser 2014-02-24 16:01:01 -05:00
Barış Soner Uşaklı
9216b29b69 Update README.md 2014-02-24 15:54:43 -05:00
Baris Soner Usakli
0f8ee3a671 added instructions class 2014-02-24 15:45:30 -05:00
Baris Soner Usakli
7c49c32ad3 scroll fix 2014-02-24 15:23:26 -05:00
Baris Soner Usakli
cd9bd91ab2 fixes double hashes in share links 2014-02-24 15:10:27 -05:00
psychobunny
acafa9095f added footer widget area to topic.tpl 2014-02-24 14:28:09 -05:00
psychobunny
71ea01edb7 switching topics.thumb conditional back 2014-02-24 13:49:47 -05:00
psychobunny
a79ca2b135 clean up ENDIF conditional if object.value is undefined and is used in an ELSE block 2014-02-24 13:49:15 -05:00
Julian Lam
1052165373 updated messages when toggling themes or plugins 2014-02-23 23:13:32 -05:00
Julian Lam
2baa381917 plugins and themes now trigger a restart 2014-02-23 23:08:54 -05:00
Julian Lam
c797d6251d Revert "emitting alert when restart is attempted in development mode"
This reverts commit 059c5452ea.
2014-02-23 22:52:59 -05:00
Julian Lam
059c5452ea emitting alert when restart is attempted in development mode 2014-02-23 22:51:53 -05:00
Julian Lam
4ef1d83acd Merge branch 'master' into nodebb-loader 2014-02-23 22:48:11 -05:00
Julian Lam
1fa3880ffc Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-23 22:45:21 -05:00
Julian Lam
216ff0f3f9 some checks for handling plugin deletion 2014-02-23 22:44:49 -05:00
psychobunny
8fe9e5ab46 auto installing nodebb-widget-essentials on new setups 2014-02-23 22:22:17 -05:00
Baris Soner Usakli
fd41d93bdb took out if from the src 2014-02-23 22:09:06 -05:00
Baris Soner Usakli
c96d85911f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-23 21:50:09 -05:00
Baris Soner Usakli
e3d01df6a2 closes #980 2014-02-23 21:50:02 -05:00
Julian Lam
590fb2e68a added david dep badge to readme 2014-02-23 21:05:50 -05:00
Baris Soner Usakli
b8b83c2ec2 share buttons 2014-02-23 19:38:26 -05:00
Baris Soner Usakli
f967407805 follow state clean up 2014-02-23 18:38:46 -05:00
Baris Soner Usakli
649bcf49b4 one liner 2014-02-23 18:25:24 -05:00
Baris Soner Usakli
b5c8158ad5 more cleanup 2014-02-23 18:19:10 -05:00
Baris Soner Usakli
403de08d60 cleaned more 2014-02-23 18:05:50 -05:00
Baris Soner Usakli
122d1ad82a less is more 2014-02-23 17:42:31 -05:00
Julian Lam
2088903358 added check to upgrade.upgrade 2014-02-23 16:35:28 -05:00
Baris Soner Usakli
c1e3d95a84 upgrade fix for new installs 2014-02-23 16:19:30 -05:00
Baris Soner Usakli
e35a54bea4 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-23 15:08:06 -05:00
Baris Soner Usakli
6c6c57f45f closes #1108 2014-02-23 15:07:47 -05:00
Alejandro Del Rincón
a9f20a7791 More translation 2014-02-23 15:11:10 +01:00
Alejandro Del Rincón
8111b9e91f Finally reviewed spanish transalation
I revised the spanish translation to something more serious and complete. There was a lot of wrong spelled words and some untranslated/bad translated words
2014-02-23 15:00:52 +01:00
Alejandro Del Rincón López
8ef59adb4a Actualización lenguaje español
The translation was very faulty with a lack of accents and some words untranslated
2014-02-23 14:38:50 +01:00
Baris Soner Usakli
a29ea27596 closes #1106 2014-02-22 22:46:58 -05:00
Baris Soner Usakli
6e5a6b8784 upgraded categories to sorted set, score is the order set from acp, check if category topic exists before posting 2014-02-22 18:56:37 -05:00
Baris Soner Usakli
d6d9776cde added toPid to posts 2014-02-22 17:56:13 -05:00
Baris Soner Usakli
81555671da Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-22 16:49:07 -05:00
Baris Soner Usakli
60905b2e21 getPidPage fix, pids are strings 2014-02-22 16:48:58 -05:00
Julian Lam
7bd972355e Merge pull request #1105 from lucianojmf/master
Update package.json
2014-02-22 15:09:37 -05:00
Luciano Miranda
d4084b1586 Update package.json 2014-02-22 16:52:13 -03:00
Julian Lam
6bc6c88e89 pruning dependencies, and removed contributors from package.json -- full list can be found at https://github.com/designcreateplay/NodeBB/graphs/contributors 2014-02-22 11:18:16 -05:00
Julian Lam
ca4b9346f3 resolved #1039 2014-02-22 11:08:02 -05:00
Julian Lam
7760a6b207 added restart button to ACP (!!) 2014-02-22 03:11:13 -05:00
Julian Lam
b64e5870b7 loader now handles arguments and ./nodebb watch command updated to not use loader. 2014-02-22 03:01:54 -05:00
Baris Soner Usakli
a8c7b32a04 moved plugin alert to top 2014-02-22 02:44:30 -05:00
Baris Soner Usakli
3f43ca0925 change on click 2014-02-22 02:40:28 -05:00
Julian Lam
d6a1fad527 removing timeout before restarting nodebb, fixing nodebb executable 2014-02-22 02:36:56 -05:00
Baris Soner Usakli
f57e293abb plugin buttons indicate active state 2014-02-22 02:35:33 -05:00
Julian Lam
64c4dd7e63 communication between loader and child 2014-02-22 02:27:14 -05:00
Baris Soner Usakli
cfe5b6aa4a check if thumEl exists before trim 2014-02-22 02:01:08 -05:00
Baris Soner Usakli
bae76ebd70 fixed the redis error when going to unread/recent if nextStart is missing 2014-02-22 00:49:32 -05:00
Julian Lam
ef63d816fe NodeBB will now listen to SIGINT signal 2014-02-21 23:52:23 -05:00
Baris Soner Usakli
f4d23fe5df return version in config 2014-02-21 23:47:55 -05:00
Baris Soner Usakli
3958ee4120 added close db command 2014-02-21 23:42:16 -05:00
Baris Soner Usakli
dfe25d4bc0 only store thumb if is defined 2014-02-21 23:28:19 -05:00
Baris Soner Usakli
02b602f587 removed double translator 2014-02-21 23:16:21 -05:00
Baris Soner Usakli
63dba688ff Merge branch 'master' of https://github.com/designcreateplay/NodeBB into akhoury-topics-thumbnails 2014-02-21 23:15:38 -05:00
Baris Soner Usakli
29ba015d69 fixed topic thumbs 2014-02-21 23:15:25 -05:00
psychobunny
acb935bbc5 requiring translator in meta.js 2014-02-21 23:01:15 -05:00
psychobunny
002e149f42 reasons why comma first is better 2014-02-21 23:00:02 -05:00
Baris Soner Usakli
b7ccc12525 bump topic if its marked unread for all, so it shows up in unread 2014-02-21 22:13:13 -05:00
psychobunny
f862d856fc alright clearly, regex on fridays just don't happen for me. - fixed 2014-02-21 22:04:21 -05:00
psychobunny
027398f5ba unreverting change 2014-02-21 20:57:42 -05:00
psychobunny
6890d319ec Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-21 20:47:53 -05:00
psychobunny
0c54afe576 reverting previous template fix 2014-02-21 20:47:50 -05:00
Baris Soner Usakli
3a30db59c2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-21 20:47:04 -05:00
Baris Soner Usakli
dab71d04bd removed unused var 2014-02-21 20:46:56 -05:00
Julian Lam
a0b6d15b2e closed #1102 2014-02-21 20:05:44 -05:00
Baris Soner Usakli
9eb4945415 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-21 18:32:06 -05:00
Baris Soner Usakli
de34beaf6d closes #1087 2014-02-21 18:31:59 -05:00
psychobunny
2ec6dd1d14 added filter:topic.thread_tools for creating custom admin functionality in topics view 2014-02-21 16:47:40 -05:00
psychobunny
6f7243f42f fixed a bug running multiple blocks in one template on an empty array 2014-02-21 16:46:58 -05:00
psychobunny
32ac3d94d2 moved pin and lock out of .topic-title in popular/recent/unread 2014-02-21 16:15:33 -05:00
psychobunny
e9c7de951b moved pin and lock out of .topic-title 2014-02-21 16:08:43 -05:00
psychobunny
b63fe44da4 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-21 16:02:51 -05:00
psychobunny
c7fb34c23f new client-side hooks: filter:categories.new_topic, action:categories.new_topic.loaded 2014-02-21 16:02:48 -05:00
Baris Soner Usakli
eb3b240b04 some cleanup of unread 2014-02-21 15:54:51 -05:00
Baris Soner Usakli
31f877ccee merged 2014-02-21 14:54:01 -05:00
Baris Soner Usakli
ae93c372ff fixed mongo setAdd and setRemove to accept arrays like redis, fixed infinite scroll for mongo 2014-02-21 14:53:31 -05:00
Julian Lam
ea826ce487 type checking 'plugin' when loading 2014-02-21 13:55:04 -05:00
Julian Lam
f6ea278b09 closed #1095 2014-02-21 13:27:40 -05:00
Julian Lam
790b0f98d4 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-21 11:16:46 -05:00
Julian Lam
d3ba03ceae fixed #1089 2014-02-21 11:16:44 -05:00
psychobunny
15f19653c5 action:categories.loading and action.categories.loaded 2014-02-21 01:55:25 -05:00
psychobunny
7e767da73e closes #1086 and #1085 2014-02-21 01:54:48 -05:00
Julian Lam
a2942e22cc Revert "removing exported search methods from redis and mongo"
This reverts commit bba3b76108.
2014-02-21 00:37:03 -05:00
psychobunny
5179fec986 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-20 21:41:59 -05:00
psychobunny
a3191227de closes #1080 2014-02-20 21:41:56 -05:00
Julian Lam
f10bda49dc Merge remote-tracking branch 'origin/master' into search_hooks 2014-02-20 21:38:46 -05:00
Julian Lam
bba3b76108 removing exported search methods from redis and mongo 2014-02-20 21:38:31 -05:00
psychobunny
8cfa6e9d83 added panel container without header, closes #1081 2014-02-20 21:35:51 -05:00
psychobunny
ef0b610c3c Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-20 21:32:27 -05:00
psychobunny
86dd01154e closes #1079 2014-02-20 21:32:24 -05:00
Baris Soner Usakli
5aed1208c0 lol this was saving to 'uploadPath' 2014-02-20 21:26:05 -05:00
Julian Lam
2ba11dce15 hiding search buttons and route when search is not configured 2014-02-20 21:21:41 -05:00
Julian Lam
0e26fdf1da Merge branch 'master' into search_hooks 2014-02-20 21:08:31 -05:00
psychobunny
f83cd7c133 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-20 20:33:40 -05:00
psychobunny
251fef9c27 run plugins.reload after activating widget-essentials 2014-02-20 20:33:37 -05:00
Baris Soner Usakli
74b0da78f4 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-20 20:26:53 -05:00
Baris Soner Usakli
a92fb07f02 fixes multiple click handlers in admin users 2014-02-20 20:26:46 -05:00
psychobunny
fffbb1db34 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-20 20:23:33 -05:00
psychobunny
8059a83870 activate widget-essentials 2014-02-20 20:23:30 -05:00
Julian Lam
d140fa33dd fixing tab default + removing two calls to code.jquery.com 2014-02-20 20:06:14 -05:00
psychobunny
5de6ea0d97 updated cerulean dep to 0.0.13 2014-02-20 19:57:25 -05:00
psychobunny
fc866e4746 added notice to admins to check out the widgets panel IF motd is not set. upgraded motd to widget for lavender 2014-02-20 19:48:08 -05:00
psychobunny
9a5be0b334 updated lavender dep to 0.0.21 2014-02-20 19:39:22 -05:00
psychobunny
596a622197 updated vanilla dep to 0.0.14 2014-02-20 19:25:40 -05:00
psychobunny
52781bb539 Merge remote-tracking branch 'origin/master' into Widgets 2014-02-20 19:23:02 -05:00
psychobunny
e28589bea8 added jumbotron, alert widgets + color picker for alert and panel 2014-02-20 19:22:34 -05:00
psychobunny
2131506d59 widgets - user friendly instructions 2014-02-20 18:50:17 -05:00
psychobunny
ccf529ccca updated upgrade script to add titles and container to category sidebar widgets 2014-02-20 18:45:38 -05:00
psychobunny
8543d2d437 deprecated hard-coded panels in category sidebar, now you can set custom containers in widget ACP 2014-02-20 18:31:16 -05:00
Baris Soner Usakli
7e825c61bd some login changes 2014-02-20 18:30:15 -05:00
psychobunny
68b9e36218 rendering widget's container 2014-02-20 18:10:06 -05:00
psychobunny
80ce4db764 add container field and title field to all widgets by default 2014-02-20 17:58:12 -05:00
psychobunny
ef65f510a5 fomatting 2014-02-20 17:57:41 -05:00
psychobunny
5acf296ada added containers; drag on top of widgets to set a custom container 2014-02-20 17:12:56 -05:00
Baris Soner Usakli
b82a5461ce more cleanup to user routes 2014-02-20 17:03:08 -05:00
psychobunny
1b557d4141 upgrade.js - add forum stats widget to homepage footer 2014-02-20 16:14:24 -05:00
Baris Soner Usakli
905a99e638 user route cleanup 2014-02-20 16:07:22 -05:00
psychobunny
b821dc70cf moved Forum Stats widget out of core and into widget-essentials 2014-02-20 16:03:25 -05:00
psychobunny
3896cbd732 and fixed it again 2014-02-20 15:39:52 -05:00
psychobunny
c39a951727 fixed widget-essentials dep 2014-02-20 15:33:21 -05:00
psychobunny
068402c8ac wrong upgrade message 2014-02-20 15:31:42 -05:00
psychobunny
ae009e04bd added widgets-essentials to deps 2014-02-20 15:30:26 -05:00
psychobunny
0b3fa0c838 upgrade.js - add recentreplies, activeusers, and moderator widgets to the sidebar as default 2014-02-20 15:28:37 -05:00
Baris Soner Usakli
cec718de26 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-20 15:25:46 -05:00
Baris Soner Usakli
020a70ecb6 removed showemail setting from user hash, its in user settings now 2014-02-20 15:25:39 -05:00
Julian Lam
ac116bc9d0 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-20 15:14:27 -05:00
Julian Lam
94f67f518e fixed issue where a URL as the logo caused apple-touch-icon to explode 2014-02-20 15:13:15 -05:00
Baris Soner Usakli
3be0ad5bce wait for user object to be saved before returning from User.create 2014-02-20 14:53:35 -05:00
Baris Soner Usakli
93130b27d5 insert loggedIn before hash' 2014-02-20 14:37:10 -05:00
Baris Soner Usakli
34bf839751 closes #1067 2014-02-20 13:23:29 -05:00
psychobunny
b4a46339f3 Merge pull request #1075 from BitBangersCode/widgets-fix
Fix crash when there would be no widgets
2014-02-20 13:22:41 -05:00
MrWaffle
502886c3b9 Fix crash when there would be no widgets 2014-02-20 19:18:23 +01:00
Baris Soner Usakli
86556989f4 closes #1068 2014-02-20 12:56:35 -05:00
akhoury
63c9269240 merged composer and some other files with master 2014-02-20 02:25:15 -05:00
akhoury
25207852e8 added topics thumbnails support 2014-02-20 02:05:49 -05:00
Julian Lam
bc10080c49 close #1041 2014-02-19 21:47:26 -05:00
Julian Lam
813ff95146 removing useless jqueryUI CSS 2014-02-19 21:32:05 -05:00
Julian Lam
42d33f8338 first pass #899 2014-02-19 21:06:30 -05:00
Jason Nall
7937ecb6b4 Moved CSS above scripts to ensure CSS files are downloaded in parallel. This can improve page load speed in some browsers. 2014-02-19 20:22:42 -05:00
psychobunny
599027f2d3 send full url to widgets as well so they can parse based on path 2014-02-19 19:28:21 -05:00
psychobunny
18369fae7e fixed bug with sorting of widgets 2014-02-19 19:19:25 -05:00
psychobunny
fa4555e26e moved addActiveUser code to widget-essentials 2014-02-19 19:15:04 -05:00
psychobunny
305ec0da28 removed unused language strings from previous sidebar 2014-02-19 19:10:56 -05:00
psychobunny
835b4d61a2 removed active_users + moderator sidebar code from core in favour of widget system 2014-02-19 19:07:56 -05:00
psychobunny
cb986186a1 removing recent replies code + tpls from the core in favour of widget system 2014-02-19 18:53:28 -05:00
Julian Lam
fdd2dc322b first pass #992 2014-02-19 18:44:31 -05:00
psychobunny
1827c8390b filter:category.build_sidebars (custom sidebars in category view) is now deprecated 2014-02-19 18:19:25 -05:00
psychobunny
eda7455be2 using motd class instead of a well 2014-02-19 18:16:18 -05:00
Julian Lam
37bd88d1b2 faux masonry lol 2014-02-19 18:15:55 -05:00
psychobunny
aea7329871 animate page load only after widgets load 2014-02-19 18:15:19 -05:00
Julian Lam
f4ad1ac2dc moving active users list to bottom of admin index 2014-02-19 18:14:15 -05:00
psychobunny
ba657aec4e 110% -> upgrade.js converts existing motd's to html widgets for extra bonus points. 2014-02-19 18:13:56 -05:00
psychobunny
163b0f964e Merge remote-tracking branch 'origin/master' into Widgets 2014-02-19 17:45:40 -05:00
psychobunny
0963e62acb completely removing all motd code in favour of using the widget system 2014-02-19 17:31:13 -05:00
Julian Lam
f50d77bca0 resolved #1060 2014-02-19 17:23:25 -05:00
psychobunny
c0df95b2dc render widgets upon ajaxify - this widget feetorez iz completified! 2014-02-19 17:23:17 -05:00
psychobunny
c4121f6ee6 bugfixes in widgets 2014-02-19 17:22:26 -05:00
psychobunny
79e9819b7f SocketWidgets file 2014-02-19 17:11:07 -05:00
psychobunny
b3978d53bb widgets.render 2014-02-19 17:07:47 -05:00
psychobunny
37d673028a added async to client side 2014-02-19 17:07:19 -05:00
Baris Soner Usakli
ea222c4f8a crash fix for notifications, removed exec_body_script, closes #1058 2014-02-19 16:44:36 -05:00
psychobunny
4e1b3506e8 allow plugins/widgets to define widgets; moved sample widgets out of core and into nodebb-widget-essentials 2014-02-19 16:11:16 -05:00
psychobunny
f4ad1bdeae console.log 2014-02-19 15:43:05 -05:00
Baris Soner Usakli
fd3efd59f9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-19 15:34:06 -05:00
Baris Soner Usakli
495fded6dd closes #1038 2014-02-19 15:33:59 -05:00
Julian Lam
3107e43b64 cleaned up admin panel index a bit 2014-02-19 15:24:39 -05:00
psychobunny
26b0db3bea let plugins.js allow widgets to utilize hooks 2014-02-19 15:14:49 -05:00
psychobunny
86a8103c15 saving, updating, deleting widgets; widget dragging improvements 2014-02-19 15:07:38 -05:00
Julian Lam
0d7e47ded7 closed #1057 2014-02-19 14:47:00 -05:00
Julian Lam
7c7f66c08b bringing language files up to date 2014-02-19 14:34:50 -05:00
Julian Lam
3fdd0c1bff Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-19 14:33:37 -05:00
Julian Lam
031e8128c7 fixed #912, added new page string for popular topics 2014-02-19 14:33:34 -05:00
Baris Soner Usakli
7e2823bf30 show recent event data first' 2014-02-19 13:57:09 -05:00
Baris Soner Usakli
ab60da30da Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-19 13:30:39 -05:00
Baris Soner Usakli
520b349c17 closes #1044 2014-02-19 13:30:31 -05:00
psychobunny
9f8f78f6d4 client-side saving of widgets 2014-02-19 13:22:02 -05:00
psychobunny
447cff1995 got the basic ui, dragging, sorting etc going for widgets acp 2014-02-19 12:46:55 -05:00
psychobunny
fa5f528fb5 filter:widgets.getAreas - allows plugins to define widget locations in tpls 2014-02-19 11:43:25 -05:00
psychobunny
8f972d8cdc added widgets tab to themes acp 2014-02-19 11:38:31 -05:00
psychobunny
6496ad95e8 Revert "closes #992"
This reverts commit ed4b0461b9.
2014-02-19 02:07:48 -05:00
Baris Soner Usakli
bbe1a00d34 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-18 23:06:26 -05:00
Baris Soner Usakli
f33256d628 fixes error alerts if scroll is triggered during transitions 2014-02-18 23:06:18 -05:00
Julian Lam
b5496b5680 fixed executable help echo 2014-02-18 19:41:50 -05:00
Julian Lam
bc7eb501c8 same for topics (translation + pagination) 2014-02-18 19:41:02 -05:00
Julian Lam
0b0b74a559 properly translating strings in category nojs template, and added pagination (so not all topics are loaded on every request) 2014-02-18 19:23:36 -05:00
psychobunny
b71f1a410e added reset flag to ./nodebb script 2014-02-18 22:46:44 +00:00
psychobunny
e912ce038b closes #1035 2014-02-18 17:43:32 -05:00
Baris Soner Usakli
9a02f85620 update motd string 2014-02-18 16:00:59 -05:00
Baris Soner Usakli
8518f26adb closes #1023 2014-02-18 15:46:03 -05:00
Baris Soner Usakli
6140d76f76 fixed index of newly created posts, matched vanilla search form to lavender 2014-02-18 15:14:33 -05:00
Baris Soner Usakli
17cee2cb99 pagination fix if only 1 topic 2014-02-18 12:40:13 -05:00
Baris Soner Usakli
e1f016c075 closes #1046 2014-02-18 12:16:33 -05:00
Baris Soner Usakli
3993259336 closes #1055 2014-02-18 11:48:28 -05:00
Julian Lam
172b617cbc using 'trust proxy' on proxied requests 2014-02-18 10:34:56 -05:00
Julian Lam
3b4985efe5 tx translation update 2014-02-18 10:30:11 -05:00
Baris Soner Usakli
1712fcc9fe dont scroll to 0th post 2014-02-18 01:18:37 -05:00
Baris Soner Usakli
229fe2f80f seems to work better for long posts 2014-02-18 00:42:14 -05:00
Baris Soner Usakli
7aa38adb52 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-18 00:25:37 -05:00
Baris Soner Usakli
83ad454c3e better error message if image upload fails, #1052 2014-02-18 00:25:30 -05:00
psychobunny
d69835e115 allow any hash to be pushed to history 2014-02-18 00:00:42 -05:00
psychobunny
1e47953efd expanding hash regex to alphanumeric 2014-02-17 23:58:47 -05:00
Baris Soner Usakli
9d1a295b85 better topic delete restore 2014-02-17 22:53:01 -05:00
Baris Soner Usakli
9b88dcdc14 removed double if 2014-02-17 21:37:36 -05:00
Baris Soner Usakli
92ebf2975a possible fix for #1050 2014-02-17 21:32:00 -05:00
Baris Soner Usakli
a620a85d85 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-17 20:57:19 -05:00
Baris Soner Usakli
21367a1847 reverse infinite loading 2014-02-17 20:57:12 -05:00
psychobunny
ed4b0461b9 closes #992 2014-02-17 17:47:03 -05:00
Baris Soner Usakli
7918a23835 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-17 12:57:45 -05:00
Baris Soner Usakli
1da75866f4 added global loggedIn to templates' 2014-02-17 12:57:37 -05:00
Julian Lam
e4812fab87 removing console.log 2014-02-17 12:57:26 -05:00
Baris Soner Usakli
e665b79293 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-16 16:20:50 -05:00
Baris Soner Usakli
93257a8597 check if tids and uids array array before calling async 2014-02-16 16:20:44 -05:00
Julian Lam
560fa6ffe8 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-16 12:21:49 -05:00
Julian Lam
8e4c126e3c fixing template in favourites.tpl 2014-02-16 12:21:46 -05:00
Baris Soner Usakli
d3f5f9571a Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-16 12:15:27 -05:00
Baris Soner Usakli
0ec9f3835f fixed js error in composer 2014-02-16 12:15:20 -05:00
Julian Lam
1a962c03f4 Hungarian, Norwegian, and Polish translation strings updated from Tx 2014-02-16 11:40:59 -05:00
Baris Soner Usakli
0756410684 closes #1012 2014-02-16 11:36:11 -05:00
Baris Soner Usakli
d75cdf8b9f check err firsT 2014-02-16 11:13:37 -05:00
Julian Lam
c6ce42968d Merge pull request #1042 from miksago/config-file-fix
Fix configFile option handling
2014-02-16 00:52:13 -05:00
Micheil Smith
74049dccb1 Added log message about where configuration is being loaded from 2014-02-16 05:36:29 +00:00
Micheil Smith
0672c7276d Fix nconf.file not really using config file 2014-02-16 05:35:44 +00:00
Baris Soner Usakli
8eeb962ebc fixed small bug 2014-02-15 17:17:15 -05:00
Baris Soner Usakli
43e8016dd1 fixes admin user picture edit 2014-02-15 17:12:05 -05:00
Baris Soner Usakli
30cc992f5e closes #1036 2014-02-15 16:12:33 -05:00
Julian Lam
9e64f4e303 passing in a picture into notifications now 2014-02-15 15:43:44 -05:00
Julian Lam
ef45ae9ba3 fixed the rotating bell in notifications loading LOL 2014-02-15 15:14:17 -05:00
Julian Lam
07bd4d68d6 updating mentions minver 2014-02-15 14:54:32 -05:00
Julian Lam
aba1b95cac updating notifications.create to accept a hash instead of discrete arguments - breaking change 2014-02-15 14:52:59 -05:00
Julian Lam
17ae56e555 fixed #1027 2014-02-15 14:16:15 -05:00
Julian Lam
32b0b1f9fc #1034 2014-02-15 14:01:20 -05:00
Julian Lam
ce7c8c9495 updating translations 2014-02-15 12:28:46 -05:00
Julian Lam
d230b17517 polish tx format update 2014-02-15 12:27:18 -05:00
Julian Lam
0c3b3c288f added polish to tx config 2014-02-15 12:25:06 -05:00
unek
bea44ddd18 added polish language 2014-02-15 13:29:02 +01:00
Baris Soner Usakli
8b8fbfa113 added 3 more strings to translations 2014-02-14 22:36:07 -05:00
Baris Soner Usakli
fec1b75030 fixes pagination block on direct page load 2014-02-14 21:41:53 -05:00
Baris Soner Usakli
791a50a01b closes #1028 2014-02-14 20:46:00 -05:00
Baris Soner Usakli
884d42a363 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-14 19:40:45 -05:00
Baris Soner Usakli
0c093c2aaa fixes upgrade on a empty database 2014-02-14 19:40:38 -05:00
Julian Lam
01f2e7dccd 0.3.2 2014-02-14 15:25:18 -05:00
Baris Soner Usakli
893efa5f2a closes #1004 2014-02-14 15:08:56 -05:00
Baris Soner Usakli
8c14a59f93 added new sorted set posts:pid 2014-02-14 14:39:32 -05:00
Baris Soner Usakli
4663e0b8be paranoid 2014-02-14 14:14:05 -05:00
Baris Soner Usakli
1e44ca3a0f upgrade topics:tid to sorted set, topics:recent doesnt have deleted topics 2014-02-14 14:03:54 -05:00
Baris Soner Usakli
8506819a7d added back error check 2014-02-14 13:40:11 -05:00
Baris Soner Usakli
6ddf977166 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-14 13:38:17 -05:00
Baris Soner Usakli
c0e0da0f1d simplified getAllTopics 2014-02-14 13:38:10 -05:00
Julian Lam
8af5e089ff slovak translations by @yangwao 2014-02-14 12:16:23 -05:00
Micheil Smith
ee0f9d2bbe Rename themes_dir to themes_path for consistency with other configuration options 2014-02-14 17:11:25 +00:00
Julian Lam
55aef372e8 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-14 12:00:51 -05:00
Julian Lam
15e1b7e571 updating source string for notif message 2014-02-14 12:00:41 -05:00
Baris Soner Usakli
e5727af959 added missing winston to emailer 2014-02-14 11:58:51 -05:00
Julian Lam
d933e81b37 fixed #1025 2014-02-14 11:49:16 -05:00
Julian Lam
734d8f96e8 fixing symbols in plugin static path filenames -- can I tag people in commit messages? @frissdiegurke 2014-02-14 11:38:16 -05:00
Julian Lam
d0d3160fc7 final pass, #999 2014-02-14 11:04:00 -05:00
Julian Lam
8bd6f85478 first pass, #999 2014-02-14 10:49:43 -05:00
Julian Lam
28731e2dbd minor typo, and a fix I missed 2014-02-14 01:05:38 -05:00
Julian Lam
f698166395 minor fixes to paths accidentally introduced in #1020 2014-02-14 00:23:54 -05:00
Julian Lam
9d8aff5e63 fixed theme previews 2014-02-14 00:19:36 -05:00
Julian Lam
b6b795dbc6 Merge pull request #1020 from miksago/themes_dir
Implemented `themes_dir` configuration option.
2014-02-14 00:11:52 -05:00
Micheil Smith
a857d4cab0 Added logging on start up detailing where themes are being loaded from. 2014-02-14 05:04:08 +00:00
Micheil Smith
8866de8b30 Improved logging at startup 2014-02-14 05:03:38 +00:00
Micheil Smith
ceffd2e1e0 Remove warnings about themes being out of date 2014-02-14 05:02:17 +00:00
Micheil Smith
691fde0a27 Added ability to change where themes are stored via themes_dir configuration option
themes_dir is resolved to be relative to the root of the NodeBB install.
2014-02-14 05:01:02 +00:00
Julian Lam
20c95731ae Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-13 22:38:59 -05:00
Julian Lam
bbdcd5d460 resolved #997 2014-02-13 22:38:24 -05:00
Baris Soner Usakli
a909a25393 closes #1016 2014-02-13 21:06:41 -05:00
Baris Soner Usakli
695891ffd7 added missing file 2014-02-13 20:43:19 -05:00
Baris Soner Usakli
bdc93409a7 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-13 19:42:00 -05:00
Baris Soner Usakli
075c6c01f2 upload changes, show progres in composer 2014-02-13 19:41:54 -05:00
psychobunny
fe2e86da81 added optional 'reverse' parameter to Posts.getPostsByTid and Topics.getTopicPosts (incoming signature adjustment for 0.4x) 2014-02-13 15:21:24 -05:00
psychobunny
1f8f65308b added api/user/uid route 2014-02-13 14:08:16 -05:00
Julian Lam
843cb1b35b fixed #936 2014-02-13 13:51:00 -05:00
Julian Lam
cb012ffa7a #936 2014-02-13 13:10:40 -05:00
Julian Lam
750ce1f7f8 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-13 12:26:46 -05:00
Julian Lam
e2c6eca36e fixed #1006 2014-02-13 12:26:43 -05:00
Baris Soner Usakli
99a212d141 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-13 11:35:34 -05:00
Baris Soner Usakli
ce4896f2c5 fixed read notifications 2014-02-13 11:35:27 -05:00
Julian Lam
3e3250ccde pull-right first, then pull-left. 2014-02-12 22:50:41 -05:00
Baris Soner Usakli
9f663411db brand logo fix 2014-02-12 22:31:08 -05:00
Baris Soner Usakli
d4bc6904fb fixed socket crash 2014-02-12 17:30:49 -05:00
Baris Soner Usakli
53af836bdb 24 users 2014-02-12 17:29:37 -05:00
Baris Soner Usakli
7f4a1cd685 display 4 rows of active users 2014-02-12 17:24:51 -05:00
Baris Soner Usakli
1c14bcd1ed dont update last online time if status is offline 2014-02-12 17:16:16 -05:00
Baris Soner Usakli
b912dcb2f0 topic title 2014-02-12 16:02:07 -05:00
Baris Soner Usakli
896af72a25 added topic title to header 2014-02-12 15:44:48 -05:00
Baris Soner Usakli
ab9ff94713 fw changes 2014-02-12 14:03:02 -05:00
Baris Soner Usakli
860aabe0d3 oops fixed 2014-02-12 13:15:13 -05:00
Baris Soner Usakli
7b4f098cb4 dont allow negative or zero pagination values for user setting 2014-02-12 13:11:28 -05:00
Baris Soner Usakli
ccfa5bd618 copy pasta is bad for your health 2014-02-12 12:51:07 -05:00
Baris Soner Usakli
a4fd972b2b fixed again fail 2014-02-12 12:50:09 -05:00
Baris Soner Usakli
c703dba3dd closes #1009 2014-02-12 12:46:56 -05:00
Baris Soner Usakli
d0100176ef Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-12 12:31:15 -05:00
Baris Soner Usakli
7f298c596f fixed category save 2014-02-12 12:31:08 -05:00
Julian Lam
a106211956 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-12 12:11:34 -05:00
Julian Lam
bc1df3b10c sv translations 2014-02-12 12:11:26 -05:00
Baris Soner Usakli
2a41c3a312 crash fix 2014-02-12 11:35:53 -05:00
Baris Soner Usakli
639ebe9b71 added space to fix motd 2014-02-12 11:34:18 -05:00
Baris Soner Usakli
475f9bea04 closes #1011, last online wont give away your invisible status 2014-02-12 10:53:34 -05:00
Baris Soner Usakli
dcebb0cc4c removed whitespace 2014-02-12 10:43:32 -05:00
Baris Soner Usakli
4c6fb72db0 move cursor to end in share input 2014-02-12 10:36:17 -05:00
Baris Soner Usakli
b5d31dd889 replace eachSeries with map 2014-02-12 10:03:28 -05:00
Baris Soner Usakli
400af61e12 fixed minor issue, removed unused postPerPage 2014-02-12 09:42:52 -05:00
Baris Soner Usakli
9f1e0187ee fixed settings 2014-02-12 00:09:02 -05:00
Baris Soner Usakli
a813b3639e another eachSeries gone horray 2014-02-11 23:44:14 -05:00
Baris Soner Usakli
c560f8fb75 reduced DRY fail 2014-02-11 23:38:25 -05:00
Baris Soner Usakli
8456025f28 2 more maps 2014-02-11 23:14:41 -05:00
Baris Soner Usakli
5e0435677b function name is good enough :) 2014-02-11 23:00:13 -05:00
Baris Soner Usakli
a8e5c7d149 error checks more err first, replaced a eachSeries with async.map 2014-02-11 22:57:01 -05:00
Baris Soner Usakli
1b5e44a763 fix unreplied on getTopic 2014-02-11 22:27:40 -05:00
Baris Soner Usakli
521b3f02be removed log, lol 2014-02-11 20:40:06 -05:00
Baris Soner Usakli
bb59158bbc closes #721, admins can edit other users from their edit page 2014-02-11 20:39:07 -05:00
Baris Soner Usakli
1861273d45 delegated event for category save 2014-02-11 19:44:11 -05:00
Baris Soner Usakli
a274a8cc12 more unread changes 2014-02-11 18:58:46 -05:00
Baris Soner Usakli
859ca8dd18 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-11 18:22:11 -05:00
Baris Soner Usakli
d27ba5239e unread changes 2014-02-11 18:22:02 -05:00
psychobunny
ecb1fa928c console.log 2014-02-11 17:58:27 -05:00
psychobunny
ef9965832a updating account settings templates + client side to allow for dynamic parsing of user settings 2014-02-11 17:57:30 -05:00
psychobunny
53ef9c1b9f new hook - filter:user.settings allows plugins to generate custom user settings on account page 2014-02-11 17:57:29 -05:00
psychobunny
ad9209ec38 modifying user.getSettings / user.saveSettings to allow passing in custom data 2014-02-11 17:57:29 -05:00
psychobunny
225e8c012b SocketUser.getSettings 2014-02-11 17:57:28 -05:00
Baris Soner Usakli
85d4bc7232 fixed event log 2014-02-11 17:44:44 -05:00
Baris Soner Usakli
8ca3b667c7 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-11 17:16:23 -05:00
Baris Soner Usakli
4ff62f4e30 closes #1005 2014-02-11 17:16:17 -05:00
psychobunny
2781153640 removed some unused stuff in account settings 2014-02-11 16:48:34 -05:00
psychobunny
4f1f812062 reorganizing account settings 2014-02-11 16:48:34 -05:00
Baris Soner Usakli
39ec9e9ecb Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-11 16:44:05 -05:00
Baris Soner Usakli
02048e551f assorted CP changes 2014-02-11 16:43:57 -05:00
psychobunny
8dfd8c3bbb README - OK I promise I won't touch this again for at least a few months. 2014-02-11 15:42:15 -05:00
psychobunny
804997862b decided to move screenshots back up one level since we're using thumbnails instead 2014-02-11 15:28:33 -05:00
psychobunny
666cb4c927 README: forgot to credit manchester united forums 2014-02-11 15:26:48 -05:00
psychobunny
2c7ec620d0 README: added a few more screenshots to even things up a bit; emphasis on like/follow/star 2014-02-11 15:25:47 -05:00
Baris Soner Usakli
2f84a0a130 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-11 15:13:09 -05:00
Baris Soner Usakli
daa1154797 added timing to prune 2014-02-11 15:13:02 -05:00
psychobunny
ec21ea5df4 README: using thumbnails instead 2014-02-11 15:11:48 -05:00
psychobunny
a05f17b702 updated README: added links to blog, plugins, themes; added new screenshots (old ones were 0.2x); other minor changes 2014-02-11 15:01:37 -05:00
Baris Soner Usakli
11b0f44ae9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-11 14:40:50 -05:00
Baris Soner Usakli
20dd194171 show error in composer if upload fails 2014-02-11 14:40:43 -05:00
Julian Lam
01f7caa3af Proper handling of windows path separators in plugin js gets 2014-02-11 10:57:51 -05:00
Julian Lam
6d1ec8c7fe hebrew translations by orweinberger 2014-02-11 09:35:41 -05:00
Baris Soner Usakli
d0452dcc80 small pagination fix 2014-02-10 22:45:52 -05:00
Baris Soner Usakli
bc7fd3a724 fix for favicon 2014-02-10 22:24:36 -05:00
Baris Soner Usakli
cacde313cd closes #995 2014-02-10 19:59:04 -05:00
Baris Soner Usakli
fba16fdfce Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-10 19:14:57 -05:00
Baris Soner Usakli
55951fec6f removed marked from motd' 2014-02-10 19:14:50 -05:00
psychobunny
e8d30da006 removing qunit from ACP, since we don't actually use it anymore 2014-02-10 17:44:05 -05:00
Julian Lam
4429014d2f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-10 17:32:04 -05:00
Julian Lam
97e52fd169 adding new client-side hook and post_uuid to composer template 2014-02-10 17:31:51 -05:00
Baris Soner Usakli
84446e255d added parseInt 2014-02-10 16:32:47 -05:00
Barış Soner Uşaklı
2f764dcbb5 Merge pull request #991 from Maxorq/master
No point in having anonymous users as a link.
2014-02-10 14:42:17 -05:00
Maciej Benke
34338c3265 No point in having anonymous users as a link. 2014-02-10 20:35:35 +01:00
Baris Soner Usakli
b75877d61f some language strings 2014-02-10 14:21:45 -05:00
Baris Soner Usakli
8e756b5b26 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-10 14:15:58 -05:00
Baris Soner Usakli
242927d702 user selectable pagination 2014-02-10 14:15:54 -05:00
psychobunny
8c2611aeb5 potentially fixes #823 2014-02-10 14:05:09 -05:00
psychobunny
83a201acce closes #918 2014-02-10 13:55:47 -05:00
Julian Lam
e231a52369 new translations, plus fallbacks for new strings to English 2014-02-10 13:31:53 -05:00
Julian Lam
f24e6bdace Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-10 13:30:31 -05:00
Julian Lam
55b39f1eff second pass, #981 2014-02-10 13:30:26 -05:00
psychobunny
d02a1ef40a actually fixes #985 2014-02-10 13:29:59 -05:00
Julian Lam
e9852a804c language updates 2014-02-10 13:00:20 -05:00
Julian Lam
5f8bfaa871 reverting some fixes 2014-02-10 12:51:52 -05:00
Julian Lam
8f369d9dbc added 'topic' back to string 2014-02-10 12:47:01 -05:00
Julian Lam
37a1fbd9cd Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-10 12:41:34 -05:00
Julian Lam
b6e96541e7 first pass, #981 2014-02-10 12:41:29 -05:00
Baris Soner Usakli
93f5f320fe Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-10 12:27:46 -05:00
Baris Soner Usakli
02483b34bf closes #987 2014-02-10 12:27:43 -05:00
Julian Lam
3bdbd28532 removing console log in search template 2014-02-10 12:02:28 -05:00
Julian Lam
5b8585fafb fixed #985 2014-02-10 11:54:47 -05:00
Julian Lam
92d029f072 removed regex removal of @first block on infinite post load in favour of DOM method 2014-02-10 11:41:25 -05:00
psychobunny
ff9d7c6c24 removed unnecessary conditionals from app.updateHeader 2014-02-10 10:45:24 -05:00
Baris Soner Usakli
ca8f86c4ee fixed minor issue in prev PR 2014-02-09 18:49:34 -05:00
Barış Soner Uşaklı
8fad323d80 Merge pull request #984 from miksago/reorg-feed-routes
Move feed routing and logic to src/routes/feeds.js
2014-02-09 18:46:31 -05:00
Baris Soner Usakli
6ab5f42ef0 only update anon count if on online page 2014-02-09 18:45:41 -05:00
Micheil Smith
33607e0cd9 Move feed routing and logic to src/routes/feeds.js 2014-02-09 23:23:17 +00:00
Barış Soner Uşaklı
fdfe796fe3 Merge pull request #983 from miksago/improve-startup
Reworked startup sequence to respect server.listen() failures and timings
2014-02-09 18:13:26 -05:00
Micheil Smith
8cd1005a03 Reworked startup sequence to respect server.listen() failures and timings. 2014-02-09 23:07:12 +00:00
Julian Lam
83b22a357c Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-09 17:22:57 -05:00
Julian Lam
03a30c8583 temporarily commenting out apple-touch-icon, since it seems to be duplicating sessions on every reload 2014-02-09 17:22:38 -05:00
Baris Soner Usakli
6d8a1eb1f4 removed console.log 2014-02-09 17:14:56 -05:00
Baris Soner Usakli
49254f268e added missing next callbacks 2014-02-09 17:14:31 -05:00
Baris Soner Usakli
654f53f142 removed unused uids 2014-02-09 17:03:25 -05:00
Baris Soner Usakli
d063d4eac1 updated upgrade date 2014-02-09 17:00:45 -05:00
Barış Soner Uşaklı
59e56f0e28 Merge pull request #979 from miksago/ondemand-feeds
On-demand feeds
2014-02-09 16:55:43 -05:00
Micheil Smith
ffe798b494 Change Feed.forTopic to cap at 25 items, not infinite 2014-02-09 21:33:20 +00:00
Micheil Smith
a3bb9f4e3d Changed feeds to be generated on-demand
No longer are we writing them to disk, instead, we simply generate on demand.
2014-02-09 21:29:21 +00:00
Micheil Smith
12b52e5320 Removed storage of tid:lastFeedUpdate now that feeds are on-demand 2014-02-09 21:26:11 +00:00
Micheil Smith
cfaa0b3754 Added schema upgrade to delete the tid:lastFeedUpdate key 2014-02-09 21:25:28 +00:00
Julian Lam
5b16223923 proper RTL handling f hebrew and arabic 2014-02-09 15:52:02 -05:00
Julian Lam
b0bd015389 dir settings for languages 2014-02-09 15:48:49 -05:00
Julian Lam
88fe989fa2 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-09 15:41:29 -05:00
Julian Lam
e578b76b49 dir string in language 2014-02-09 15:41:23 -05:00
Micheil Smith
c619301735 Remove calls to feed.js 2014-02-09 20:34:11 +00:00
Baris Soner Usakli
e18d9dc1b4 closes #975 2014-02-09 15:11:58 -05:00
Baris Soner Usakli
2c18bbddbe upload changes, just pass filename to plugin or base64 data 2014-02-09 14:51:18 -05:00
Julian Lam
daa76e821c Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-09 13:24:51 -05:00
Julian Lam
2075049ae0 default en_GB 2014-02-09 13:24:45 -05:00
Baris Soner Usakli
042df13611 merged 2014-02-09 13:09:36 -05:00
Baris Soner Usakli
253c19abeb removed unused var added error log 2014-02-09 13:08:25 -05:00
Julian Lam
62f1b8b8f4 retrieving only the latest 25 posts in category rss feed now - issue #973 2014-02-09 12:35:26 -05:00
Julian Lam
7d736f9352 fixed hebrew language string and introducing fallback to english if wrong language is set 2014-02-09 12:15:47 -05:00
Julian Lam
90cd46815a adding Hebrew language 2014-02-09 12:03:25 -05:00
Julian Lam
7644ae1c21 removing npm from apt-get install command 2014-02-09 10:10:30 -05:00
Baris Soner Usakli
194c404857 more fixes to admin users 2014-02-09 01:45:56 -05:00
Baris Soner Usakli
0719baf8b2 fixes error in admin users page 2014-02-09 01:37:27 -05:00
Baris Soner Usakli
cbe13b6069 language fixes 2014-02-09 01:25:19 -05:00
Baris Soner Usakli
1c058658e6 small tweak 2014-02-09 00:47:08 -05:00
Baris Soner Usakli
20ec8ca768 added image file 2014-02-09 00:34:05 -05:00
Baris Soner Usakli
26849ba2b7 added hooks for image uploads into user and admin routes 2014-02-09 00:33:10 -05:00
Baris Soner Usakli
e163282995 added filter:post.uploadFile 2014-02-08 22:34:50 -05:00
Baris Soner Usakli
1fc4568333 changed hook name to filter:post.uploadImage 2014-02-08 22:21:57 -05:00
Baris Soner Usakli
378ccc3cb7 removed imgur from core 2014-02-08 22:09:28 -05:00
Baris Soner Usakli
94588e15f2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-08 21:02:13 -05:00
Baris Soner Usakli
0f2e7fa8bd added a hook to post image upload for starters, more coming 2014-02-08 21:02:06 -05:00
Julian Lam
b5e8c6aeae pushing fr translation updates 2014-02-08 17:08:22 -05:00
Baris Soner Usakli
c78942b7a4 added warnings if no pwd setup for db, #936 2014-02-08 14:05:45 -05:00
Baris Soner Usakli
2630a72f81 closes #965 2014-02-08 13:58:40 -05:00
Baris Soner Usakli
64687fef6a Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-08 13:44:26 -05:00
Baris Soner Usakli
c219935633 cleanup 2014-02-08 13:44:15 -05:00
Julian Lam
5a1046f15f Adding Русский language 2014-02-08 12:00:23 -05:00
Julian Lam
7ea379d4f1 added client side hooks: "action:topic.loading" and "action:topic.loaded" 2014-02-08 00:53:35 -05:00
Baris Soner Usakli
27381bfc35 misc responsive fixes 2014-02-07 22:18:18 -05:00
Baris Soner Usakli
3b1c26eae6 removed well from search tpl 2014-02-07 21:40:44 -05:00
Baris Soner Usakli
7dd2412655 profile 2014-02-07 21:28:05 -05:00
Baris Soner Usakli
d5938e4024 removed BS class, not needed 2014-02-07 20:44:10 -05:00
Baris Soner Usakli
0c4f0dff6f closes #962 2014-02-07 20:30:10 -05:00
Baris Soner Usakli
917458d48d minor cleanup 2014-02-07 20:04:14 -05:00
Baris Soner Usakli
e06a7a343a userslug for new chat messages 2014-02-07 19:29:54 -05:00
Baris Soner Usakli
7531d9dd2c fixes username in account page 2014-02-07 16:58:56 -05:00
Baris Soner Usakli
1d5239b9a5 closes #966 2014-02-07 16:24:09 -05:00
Baris Soner Usakli
d4c2a47c8e allow images in home and category 2014-02-07 15:00:53 -05:00
Baris Soner Usakli
e4c92880ea Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-07 13:25:21 -05:00
Baris Soner Usakli
b2d3578eac check if callback is function 2014-02-07 13:25:14 -05:00
Julian Lam
0670382992 final pass - resolved #961 2014-02-07 12:47:19 -05:00
Baris Soner Usakli
8da065d8fd Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-07 12:28:01 -05:00
Baris Soner Usakli
9b147edb36 closes #964 2014-02-07 12:27:55 -05:00
Julian Lam
69f90c0766 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-07 12:11:18 -05:00
Julian Lam
f8ea87b003 issue #961 - fixed bug where if a moderators group was not found, it would cause the active users box to derp out. Also renamed the moderators priv group name 2014-02-07 12:10:46 -05:00
Baris Soner Usakli
d6780652ad closes #960 2014-02-07 12:09:24 -05:00
Baris Soner Usakli
8efea65e87 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-07 11:45:19 -05:00
Baris Soner Usakli
72c35db6fd cleanup in move rencet replies' 2014-02-07 11:45:13 -05:00
Julian Lam
e176abae50 started #961, first pass 2014-02-07 11:21:23 -05:00
Baris Soner Usakli
d2bed7791c Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-06 18:40:10 -05:00
Baris Soner Usakli
a142789c25 if status is not set assume online 2014-02-06 18:40:01 -05:00
psychobunny
3c863feac2 fixes translation bug with app.alert 2014-02-06 17:21:58 -05:00
Baris Soner Usakli
a1807f3e12 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-06 17:12:19 -05:00
Baris Soner Usakli
11e8fa31ab small fix to online user visiblity 2014-02-06 17:12:13 -05:00
Julian Lam
720644b964 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-06 17:09:50 -05:00
Julian Lam
d360a9bcac resolved #868 2014-02-06 17:09:36 -05:00
Baris Soner Usakli
1bde667245 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-06 16:58:50 -05:00
Baris Soner Usakli
f05dc95aa5 removed console.log 2014-02-06 16:58:43 -05:00
psychobunny
a9fbd5be8a derp, upgrade was upvoting your own favourited posts as well 2014-02-06 16:55:41 -05:00
psychobunny
d9f61385ca cleanup 2014-02-06 16:50:39 -05:00
psychobunny
2c81d1f2d9 half hearted deprecation warning (maybe for 0.5x?) 2014-02-06 16:50:39 -05:00
psychobunny
37affe2489 no need to use mget, app.alert already translates 2014-02-06 16:50:38 -05:00
psychobunny
1b1bdd7912 upgrade script upvotes all previously favourited posts 2014-02-06 16:50:37 -05:00
psychobunny
1e955b769b refactoring favourites 2014-02-06 16:50:37 -05:00
psychobunny
25a6302c01 upvoting / downvoting complete 2014-02-06 16:50:36 -05:00
psychobunny
af805d3ca4 Favourites.hasVoted 2014-02-06 16:50:36 -05:00
psychobunny
d35dc2d89b favouriting no longer affects reputation 2014-02-06 16:50:35 -05:00
psychobunny
6ffab73784 removing reputation from favourites, adding voting buttons to template 2014-02-06 16:50:34 -05:00
psychobunny
ef1fdbed71 server-side voting logic 2014-02-06 16:50:34 -05:00
psychobunny
cf3f72feb9 client-side voting logic 2014-02-06 16:50:33 -05:00
psychobunny
113e5a381b voting en_GB lang keys 2014-02-06 16:50:33 -05:00
psychobunny
60ec23b200 upvote/downvote/unvote socket calls 2014-02-06 16:50:32 -05:00
Baris Soner Usakli
71c64de8bb pass error to next 2014-02-06 16:35:14 -05:00
Baris Soner Usakli
493ea79a0b Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-06 16:32:16 -05:00
Baris Soner Usakli
56cdc86a37 took out userSockets, using io.sockets.clients() now' 2014-02-06 16:32:11 -05:00
Julian Lam
4e776cad96 fixing unintentional bolding in category view in Turkish language 2014-02-06 16:19:50 -05:00
Julian Lam
b7cb0d02f8 resolved #944 2014-02-06 16:02:42 -05:00
Julian Lam
1e7adda054 for #944 2014-02-06 15:58:27 -05:00
Julian Lam
f3b2771802 fixing indentation 2014-02-06 15:50:49 -05:00
Julian Lam
054fd46924 Merge branch 'master' of github.com:greynaert/NodeBB into greynaert-master 2014-02-06 15:49:48 -05:00
Julian Lam
0fd9a88a3e Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-06 15:45:30 -05:00
Julian Lam
f949af70ad fixed #949 2014-02-06 15:45:21 -05:00
ferncoder
9fede2cb05 (issue #929) Admin users can now see offline users
Add the check of the req.user to allow anonymous user to watch de /user
pages
2014-02-06 21:12:12 +01:00
Baris Soner Usakli
dc592853fc closes #942 2014-02-06 14:27:37 -05:00
ferncoder
183f27b167 (issue #929) Admin users can now see offline users
https://github.com/designcreateplay/NodeBB/issues/929
2014-02-06 19:35:58 +01:00
Baris Soner Usakli
dedf4add53 better incr for mongo 2014-02-06 00:00:21 -05:00
Baris Soner Usakli
a0195ffa32 fixes users online loadmore 2014-02-05 22:49:10 -05:00
Baris Soner Usakli
3e92644104 removed console.log 2014-02-05 21:20:31 -05:00
Baris Soner Usakli
6d866ccc86 chat profile picture will go to users profile 2014-02-05 20:29:13 -05:00
Baris Soner Usakli
8ef9d787f5 human readable profile page numbers 2014-02-05 20:20:04 -05:00
Baris Soner Usakli
01cb67d1f3 closes #945 2014-02-05 18:25:13 -05:00
Baris Soner Usakli
a01008cf7d only logged in users increase profile view count 2014-02-04 19:19:57 -05:00
Baris Soner Usakli
d83b45a427 changed placed 2014-02-04 18:43:31 -05:00
Baris Soner Usakli
388532eedc closes #943 2014-02-04 18:16:45 -05:00
Baris Soner Usakli
9823ff0960 more fixes 2014-02-04 18:06:38 -05:00
Baris Soner Usakli
c17b8ae9a1 fixes 2014-02-04 17:46:28 -05:00
Baris Soner Usakli
574e981de9 closes #831, user profile changes 2014-02-04 17:31:05 -05:00
psychobunny
3c63b135c7 closes #939 2014-02-04 11:50:50 -05:00
psychobunny
cecd3fe969 adding return false to favouriting and following. using jq for follow code 2014-02-04 10:37:33 -05:00
Julian Lam
5c957e8f8b Merge pull request #940 from pillows/master
We must advance!
2014-02-04 04:47:49 -08:00
Hack Pie
c8208f2a3e We must advance! 2014-02-04 02:18:43 -05:00
Julian Lam
15728e90f6 okay, ACTUALLY adding those language strings. 2014-02-03 22:33:59 -05:00
Julian Lam
2b9106b5ce properly added Turkish, Norwegian, and Hungarian 2014-02-03 21:54:41 -05:00
Julian Lam
db00b01c4a updates to pt_BR 2014-02-03 21:41:43 -05:00
Julian Lam
bd4bce0e3f removing stuff that shouldn't have been committed 2014-02-03 21:40:35 -05:00
Julian Lam
a3cf42c072 Hungarian, Norwegian Bokmål, Turkish :) 2014-02-03 20:51:56 -05:00
Julian Lam
25b48c43eb Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-03 20:41:58 -05:00
Julian Lam
f7d1738a8e typechecking plugin loading 2014-02-03 20:41:42 -05:00
Baris Soner Usakli
de56107c2b Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-03 19:24:37 -05:00
Baris Soner Usakli
c7195290c8 added infinite load to user favourites page 2014-02-03 19:24:27 -05:00
Julian Lam
8ad8a60987 0.3.1 2014-02-03 18:15:38 -05:00
Baris Soner Usakli
d53480015b removed dupe route 2014-02-03 16:16:39 -05:00
Baris Soner Usakli
e8dd8db010 helper function to create routes 2014-02-03 15:18:06 -05:00
Baris Soner Usakli
5bed729682 closes #935 2014-02-03 13:23:57 -05:00
Baris Soner Usakli
d0592412e6 added status to template 2014-02-03 12:54:16 -05:00
Baris Soner Usakli
c2652f908a Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-02 15:43:36 -05:00
Baris Soner Usakli
8bba4889d2 moving deleted topics wont cause topic count to go negative 2014-02-02 15:43:33 -05:00
psychobunny
a53c35f071 added back 'body' trigger - to be deprecated in 0.4x 2014-02-02 15:11:33 -05:00
psychobunny
3955ca560f changed hook triggers to window from body 2014-02-02 15:10:44 -05:00
Baris Soner Usakli
3d61a1b15b use map instead of eachSeries 2014-02-02 15:02:27 -05:00
Baris Soner Usakli
6bd79a2fa0 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-02 14:51:26 -05:00
psychobunny
4abeed3802 client side hooks - action:connected, action:reconnected, action:disconnected 2014-02-02 14:51:16 -05:00
Baris Soner Usakli
60b13cd2f7 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-02 14:51:10 -05:00
Baris Soner Usakli
d788ad7cdf return offine status if user isnt online 2014-02-02 14:51:02 -05:00
psychobunny
609821029b app.isAdmin available client-side 2014-02-02 14:47:49 -05:00
psychobunny
1c1c5da8f2 isAdmin in header 2014-02-02 14:38:09 -05:00
Baris Soner Usakli
214b74abc9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-02 14:25:38 -05:00
Baris Soner Usakli
148438f7a0 closes #928, closes #930 2014-02-02 14:25:35 -05:00
psychobunny
3f0f2bc956 console.log 2014-02-02 13:53:50 -05:00
psychobunny
ecc1c315cc closes #927 2014-02-02 13:53:23 -05:00
Julian Lam
d1eba104d2 minor tweak to var names 2014-02-02 13:36:47 -05:00
Julian Lam
3d40cb095f Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-02 13:03:02 -05:00
Julian Lam
79af442306 resolved #926 2014-02-02 13:02:52 -05:00
Baris Soner Usakli
0afd4ffdda app.js cleanup 2014-02-02 01:38:46 -05:00
Baris Soner Usakli
94ae80010b Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-01 23:14:50 -05:00
Baris Soner Usakli
ca06a24df2 only logged in users can flag 2014-02-01 23:14:44 -05:00
Julian Lam
a942f4086c new german translations, yay! 2014-02-01 22:46:28 -05:00
Julian Lam
53285d70a9 just sneaking tabIndent into NodeBB core -- nothing to see here... 2014-02-01 22:38:52 -05:00
Julian Lam
29de88456b Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-02-01 14:59:51 -05:00
Julian Lam
8ac7ccb4f8 calling auth immediately after client connection (apparently, not doing so throws errors on install?) 2014-02-01 14:59:45 -05:00
Baris Soner Usakli
825c568bc1 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-02-01 13:41:39 -05:00
Baris Soner Usakli
15479a31c2 unread fix 2014-02-01 13:41:32 -05:00
Julian Lam
d9feaf6abc new tx strings with fallback (+ french translations) 2014-02-01 00:16:25 -05:00
Barış Soner Uşaklı
0517a63068 Update README.md 2014-01-31 23:56:18 -05:00
Baris Soner Usakli
5aa80619c8 default image for anon users 2014-01-31 23:27:54 -05:00
Baris Soner Usakli
0a8db4e4a7 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 23:04:09 -05:00
Baris Soner Usakli
23f3111173 fixes alert close 2014-01-31 23:04:01 -05:00
Julian Lam
3c55672f62 seconds != milliseconds *facepalm* 2014-01-31 22:59:49 -05:00
Julian Lam
cb5baec4eb Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-31 22:52:17 -05:00
Julian Lam
d7b44789fc updating stati to use sibling classes 2014-01-31 22:52:11 -05:00
Baris Soner Usakli
cb6116c6cf Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 22:26:05 -05:00
Baris Soner Usakli
db309ce8a1 closes #661 2014-01-31 22:25:59 -05:00
Julian Lam
c0ec0b2800 casing 2014-01-31 22:20:38 -05:00
Baris Soner Usakli
2cdddd2637 closes #925 2014-01-31 21:27:11 -05:00
Baris Soner Usakli
9e22b7c8fd focus composer text area after drag resize 2014-01-31 21:16:51 -05:00
Baris Soner Usakli
63a3bfd51d after drag focus input in chat, closes #924 2014-01-31 21:13:56 -05:00
Baris Soner Usakli
6c2a74bd38 if user status is offline dont show them in room browsing text 2014-01-31 20:19:59 -05:00
Baris Soner Usakli
27f0c0c910 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 18:17:20 -05:00
Baris Soner Usakli
1eb7ff9ff3 closes #923 2014-01-31 18:17:13 -05:00
Julian Lam
2e407b1f78 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-31 16:42:56 -05:00
Julian Lam
30f90fee31 running npm install for all plugins and themes as well, because npm (N) 2014-01-31 16:42:34 -05:00
Baris Soner Usakli
384834328c Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 16:21:48 -05:00
Baris Soner Usakli
c2746b3bb1 minor tweaks to status 2014-01-31 16:21:41 -05:00
Julian Lam
252af4e8cc fixing bug where new installs exposed the administrators group. 2014-01-31 16:04:33 -05:00
Baris Soner Usakli
feaea6dcea Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 15:47:42 -05:00
Baris Soner Usakli
52962a7e9b dont show invisible users in online users page 2014-01-31 15:47:26 -05:00
Julian Lam
b288edfb6b Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-31 15:27:28 -05:00
Julian Lam
9e8addee81 fixed #859 2014-01-31 15:27:13 -05:00
Baris Soner Usakli
700876fe58 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 15:13:58 -05:00
Baris Soner Usakli
97e0e48b07 closes #714, closes #824 2014-01-31 15:13:52 -05:00
Julian Lam
c9bb65133a Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-31 13:17:48 -05:00
Julian Lam
37f7d1d08a resolved issue #913 2014-01-31 13:17:28 -05:00
Baris Soner Usakli
1fa88b9475 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 13:01:06 -05:00
Baris Soner Usakli
22bc3e9571 added statuses into dropdown 2014-01-31 13:00:59 -05:00
Julian Lam
7fe5c33048 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-31 12:27:52 -05:00
Julian Lam
29c6b789a2 tweak to prev commit 2014-01-31 12:25:53 -05:00
Baris Soner Usakli
6fbed193f7 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 12:23:05 -05:00
Baris Soner Usakli
aa856e2f5c closes #847 2014-01-31 12:22:59 -05:00
Julian Lam
77cacda0fa Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-31 12:19:35 -05:00
Julian Lam
748055ac52 hiding development block from ACP if not in dev mode 2014-01-31 12:19:30 -05:00
Baris Soner Usakli
c122492470 added back the template if 2014-01-31 12:11:49 -05:00
Baris Soner Usakli
14b2fd050e Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-31 11:59:42 -05:00
Baris Soner Usakli
bdd4bb0003 closes #920' 2014-01-31 11:59:35 -05:00
Julian Lam
59d1a90820 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-31 11:48:15 -05:00
Julian Lam
1b794f00bd slovak updates 2014-01-31 11:48:05 -05:00
psychobunny
5b3862f58e updated links on ACP home page, part of #461 2014-01-31 11:47:11 -05:00
psychobunny
4647b88071 added optional forum terms of use to ACP, closes #775 2014-01-31 11:38:23 -05:00
Baris Soner Usakli
267e7a3d5b fixed redirect 2014-01-31 11:37:24 -05:00
Baris Soner Usakli
c042d4253b added popular rss feed 2014-01-31 11:16:23 -05:00
psychobunny
347d402f48 closes #752 2014-01-31 11:07:47 -05:00
psychobunny
e91ab5c660 closes #917 2014-01-31 10:56:43 -05:00
Julian Lam
4d23b46916 latest transifex changes 2014-01-31 10:17:21 -05:00
Barış Soner Uşaklı
f95725369a Merge pull request #922 from mattijle/master
err.message is undefined use err instead
2014-01-31 06:57:16 -08:00
Julian Lam
c89bc3b9d5 fixing missing template requirement on /reset 2014-01-31 09:03:06 -05:00
Matti Leppänen
b71607ea7d err.message is undefined use err instead 2014-01-31 15:19:45 +02:00
Julian Lam
bb316bd949 new transifex strings 2014-01-30 21:42:52 -05:00
Julian Lam
eff99ffabe fixed #915 2014-01-30 21:05:59 -05:00
Julian Lam
63437571b8 fixing header favicon to look for type as well 2014-01-30 20:51:14 -05:00
Julian Lam
ec61d62c63 recommit to Transifex formatting 2014-01-30 20:22:25 -05:00
Julian Lam
3f1582e053 Transifex config file 2014-01-30 20:19:57 -05:00
Julian Lam
a137fb76ed Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-30 20:14:33 -05:00
Julian Lam
a940915e48 re-encoding some pt_BR language files in UTF-8 2014-01-30 20:14:01 -05:00
Baris Soner Usakli
ab2b0e6560 fixed direct loading of popular page 2014-01-30 19:52:32 -05:00
Baris Soner Usakli
817546c6cf Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-30 19:46:32 -05:00
Baris Soner Usakli
a86ddc9934 closes #726 2014-01-30 19:46:25 -05:00
Julian Lam
39842b5ea9 Merge pull request #919 from tedr56/master
Fr translation - Flag
2014-01-30 16:16:55 -08:00
TedVJ
18051435e5 Fr translation - Flag 2014-01-31 01:12:36 +01:00
Baris Soner Usakli
45e2f7f7f5 removed console.log 2014-01-30 17:44:47 -05:00
Baris Soner Usakli
36ae568349 #656 2014-01-30 17:41:54 -05:00
Baris Soner Usakli
e48014ba61 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-30 16:44:45 -05:00
Baris Soner Usakli
0f5b3ae859 added img-responsive to images in chat messages 2014-01-30 16:44:36 -05:00
Julian Lam
55b67ed735 Merge branch 'master' of github.com:designcreateplay/NodeBB
Conflicts:
	src/routes/api.js
2014-01-30 15:40:44 -05:00
Julian Lam
0376e3d574 renamed language directories to ICU standard, upgrade script, no longer promoting english at top of list in languages tab, en now en_GB, encompasses Canadian and English English 2014-01-30 15:39:51 -05:00
Baris Soner Usakli
9fbd5ed596 removed unused function 2014-01-30 15:21:00 -05:00
psychobunny
23c711947b added support for !array.length 2014-01-30 14:33:03 -05:00
psychobunny
0cca8e0bcf closes #783, support for array.length 2014-01-30 14:26:55 -05:00
Baris Soner Usakli
efa45ad907 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-30 14:04:27 -05:00
Baris Soner Usakli
89e554b333 closes #906 2014-01-30 14:04:20 -05:00
psychobunny
112a9cb532 closes #689 2014-01-30 13:51:28 -05:00
psychobunny
68105c6289 send environment state to client 2014-01-30 13:37:30 -05:00
psychobunny
303a32dce6 closes #855 - app.alert strings are now passed through translator so we can finally start getting rid of the remainder of hardcoded strings 2014-01-30 13:31:05 -05:00
Baris Soner Usakli
fa910bac20 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-30 13:16:52 -05:00
Baris Soner Usakli
1291f31f3c closes #897 2014-01-30 13:16:45 -05:00
psychobunny
c253760737 converted filter:posts.custom_profile_info to accept an array instead of building a string for better themability. closes #886 2014-01-30 13:06:35 -05:00
Baris Soner Usakli
9afef92763 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-30 12:56:02 -05:00
Baris Soner Usakli
8607ea9a84 notifications fix 2014-01-30 12:55:55 -05:00
psychobunny
c673cf84c2 themes able to call upon hooks as well. closes #830 2014-01-30 11:57:55 -05:00
psychobunny
92725ee3df Merge pull request #874 from BitBangersCode/templates-fix
Add custom templates to /api/get_templates_listing
2014-01-30 08:38:16 -08:00
Baris Soner Usakli
a7d9944cc1 icons on register login in mobile menu 2014-01-30 11:33:58 -05:00
psychobunny
24d2ac270c changed notifications code to jq - prevents crashes if notification element does not exist 2014-01-30 11:06:29 -05:00
Julian Lam
d8eec5dd2e fixed missing og:title on category view 2014-01-30 10:12:45 -05:00
Julian Lam
b954668636 browser title, #911 2014-01-30 10:02:19 -05:00
Julian Lam
de751ed623 fixed #900 - api calls hopefully no longer cached 2014-01-30 09:31:53 -05:00
Julian Lam
fb2b54b314 refactored meta and link tag generation to template (yay frontend processing!)
cache busters now always added in template, instead of throughout code
2014-01-30 09:20:43 -05:00
Baris Soner Usakli
1a55f9217d turn off click events to prevent multiple calls' 2014-01-29 20:51:59 -05:00
Baris Soner Usakli
06ca569554 closes #909 2014-01-29 15:49:36 -05:00
Baris Soner Usakli
d0702f663b disable scroll events on ajaxify' 2014-01-29 15:19:54 -05:00
Baris Soner Usakli
3c273f4a66 error checks for missing after 2014-01-29 15:08:14 -05:00
Baris Soner Usakli
6a78221261 closes #903 2014-01-29 15:02:34 -05:00
Julian Lam
fe8156793a Merge branch 'master' of github.com:henrock/NodeBB into henrock-master 2014-01-29 14:41:20 -05:00
Julian Lam
3f876fec80 added ajaxify.start and ajaxify.end client-side hooks 2014-01-29 14:29:45 -05:00
Julian Lam
024cfc17c5 tweak 2014-01-29 12:58:52 -05:00
Julian Lam
95d671281a moved port 80 and 443 warnings to its own conditional 2014-01-29 12:42:33 -05:00
Julian Lam
38ee3fd5a3 don't bother firing hooks received by js unless a listener exists 2014-01-29 12:28:21 -05:00
Henrik Jerlenius
52ee5096af fixed translation on recent replies feed 2014-01-29 12:48:50 +01:00
Henrik Jerlenius
4f4fef3832 fixed another 'Fork' ;) 2014-01-29 12:34:47 +01:00
Henrik Jerlenius
ec72818988 updated all swedish translations 2014-01-29 12:25:54 +01:00
Henrik Jerlenius
8fad39725b updated all swedish translations 2014-01-29 12:23:10 +01:00
Henrik Jerlenius
b3718a1605 changed language info 2014-01-29 08:43:59 +01:00
Henrik Jerlenius
8784961e1e First commit on swedish translation 2014-01-29 08:34:23 +01:00
Julian Lam
133188f14c introducing cache buster to plugin CSS and loaded scripts 2014-01-28 22:06:27 -05:00
Baris Soner Usakli
cccaf642a6 closes #898 2014-01-28 20:10:53 -05:00
Baris Soner Usakli
38886f6b58 making a socket call will set lastonline 2014-01-28 16:14:56 -05:00
Baris Soner Usakli
ed401de169 closes #896 2014-01-27 20:21:14 -05:00
Baris Soner Usakli
5759b1b1a2 closes #857 2014-01-27 19:58:03 -05:00
Baris Soner Usakli
f68b692ce4 closes #863 2014-01-27 17:15:17 -05:00
Baris Soner Usakli
c06320e28b closes #870 2014-01-27 15:41:08 -05:00
Baris Soner Usakli
c0184ba350 blocked 2014-01-27 14:57:25 -05:00
Julian Lam
4e659cfeee Merge pull request #892 from tedr56/master
Fr translation update
2014-01-27 11:07:01 -08:00
Julian Lam
50c4a707e5 removing empty login.js 2014-01-27 13:40:35 -05:00
TedVJ
1cef31e47b Fr translation update 2014-01-27 19:38:43 +01:00
Julian Lam
744b6517bf issue #891 2014-01-27 13:37:31 -05:00
Julian Lam
4ae8824faf tweaks and formatting 2014-01-27 13:04:03 -05:00
Julian Lam
7edf041747 Merge branch 'master' of github.com:mattijle/NodeBB into mattijle-master 2014-01-27 12:52:52 -05:00
Julian Lam
db62e10673 upgrade scripts for sso plugins 2014-01-27 12:50:50 -05:00
Julian Lam
f51d525d9c errant semicolon 2014-01-27 12:29:48 -05:00
Julian Lam
d924d01677 timeago fix for brasilian portugueso 2014-01-27 12:28:36 -05:00
Julian Lam
aa81b25fe6 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-27 12:20:24 -05:00
Julian Lam
2d72956591 updated language files to match english pages.json 2014-01-27 12:20:11 -05:00
Julian Lam
fac55160fa new translation strings for pages, proper unicode handling in parseFragment 2014-01-27 12:19:25 -05:00
Julian Lam
e69f5fff3b added "pages" translation file to languages 2014-01-27 11:39:00 -05:00
Julian Lam
5482146bc4 simplified a conditional 2014-01-27 11:12:54 -05:00
Julian Lam
208fe454bb Merge pull request #890 from tedr56/master
Fr Translation Update
2014-01-27 08:05:42 -08:00
TedVJ
9a876f7003 Fr Translation Update 2014-01-27 16:21:54 +01:00
Julian Lam
6514504ddd fixed #889 2014-01-27 09:09:55 -05:00
Matti Leppänen
98c4b08f15 Merge remote-tracking branch 'upstream/master' 2014-01-27 16:07:08 +02:00
Leonardo Galani
90352cd858 adding brazilian portuguese language translations 2014-01-27 07:53:04 -05:00
Baris Soner Usakli
71ccd0854d fixes notification header icon 2014-01-27 01:58:16 -05:00
Baris Soner Usakli
f874059fe9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-27 01:48:50 -05:00
Baris Soner Usakli
9cb232c198 added header tooltips 2014-01-27 01:48:43 -05:00
Julian Lam
8e1137b5dd Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-26 23:35:11 -05:00
Julian Lam
ef39c128c2 Removing Google Plus integration from core - adios! 2014-01-26 23:34:54 -05:00
Baris Soner Usakli
c18788fbc9 crash fix if topic has no posts, and check confirm obj 2014-01-26 23:20:37 -05:00
Baris Soner Usakli
31a57cf0dd closes #885 2014-01-26 22:36:06 -05:00
Baris Soner Usakli
8e4236a3a9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-26 22:23:15 -05:00
Baris Soner Usakli
e4d60b7a55 Merge branch 'master' of https://github.com/richiepreece/NodeBB into richiepreece-master 2014-01-26 22:14:04 -05:00
psychobunny
f8be072b99 chats - isNew flag, and sending in userData.uid now 2014-01-26 22:10:12 -05:00
Baris Soner Usakli
d54e2fba9e closes #810 2014-01-26 21:32:53 -05:00
Matti Leppänen
4f495e2b46 quote gets added to the active composer instead of starting a new one. 2014-01-27 02:51:49 +02:00
Baris Soner Usakli
fb8fbb2372 removed console.log 2014-01-26 18:40:28 -05:00
Baris Soner Usakli
c0e818afc6 closes #854 2014-01-26 18:36:07 -05:00
Baris Soner Usakli
26673d3ada delegated events in admin categories 2014-01-26 17:55:51 -05:00
Julian Lam
7e3c46db61 Removing Twitter SSO - toodles! 2014-01-26 17:42:48 -05:00
Julian Lam
e7eab83d8f removing facebook SSO from core 2014-01-26 17:26:56 -05:00
Baris Soner Usakli
25c4648e2e load 20 in recent 2014-01-26 17:25:18 -05:00
Baris Soner Usakli
8770284661 removed console.log 2014-01-26 17:23:28 -05:00
Baris Soner Usakli
8d0b880e5a Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-26 17:17:49 -05:00
Baris Soner Usakli
25442a89ca closes #878 2014-01-26 17:17:34 -05:00
psychobunny
6ab08e91a2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-26 16:52:07 -05:00
psychobunny
45a5b88824 added filter:messaging.parse hook 2014-01-26 16:50:59 -05:00
Baris Soner Usakli
fac2cd9464 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-26 16:23:39 -05:00
Baris Soner Usakli
da626a4035 more fixes 2014-01-26 16:23:37 -05:00
Julian Lam
0c71707fb5 fixed #877 2014-01-26 16:22:50 -05:00
Julian Lam
0869765e2b Merge remote-tracking branch 'origin/master' 2014-01-26 16:01:36 -05:00
Julian Lam
22354227be hiding "Forgot Password" link using Plugins.hasListeners, instead of derpy config settings bool 2014-01-26 15:59:22 -05:00
Baris Soner Usakli
2560704839 recent unread cleanup 2014-01-26 14:56:16 -05:00
Baris Soner Usakli
c6d48f477c fixes recent topic post notification 2014-01-26 14:03:33 -05:00
Julian Lam
96b2a15290 user registration now no longer sends a welcome email if no emailers are present 2014-01-26 13:21:23 -05:00
Julian Lam
d7d4290099 resolved #879 2014-01-26 13:10:39 -05:00
Baris Soner Usakli
14e68bc9e2 dropup for bottom post bar 2014-01-26 01:34:40 -05:00
Baris Soner Usakli
bd0b5f4cdb more error checks in thread move 2014-01-25 22:43:49 -05:00
Baris Soner Usakli
810095d287 fixed infinite loading on categories 2014-01-25 22:30:48 -05:00
Baris Soner Usakli
2988230b07 some more fixes, cant quote and see deleted messages 2014-01-25 22:19:51 -05:00
Julian Lam
5fde1eb3e7 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-25 22:00:13 -05:00
Julian Lam
d42beda3da added page selection if you click on the pipe 2014-01-25 21:44:47 -05:00
Baris Soner Usakli
bf81159558 fixes a pagination bug 2014-01-25 21:35:09 -05:00
Baris Soner Usakli
dcefad1427 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-25 21:26:03 -05:00
Baris Soner Usakli
1afd7ae332 trim pagination numberS 2014-01-25 21:25:56 -05:00
Julian Lam
197b7f2a6c Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-25 20:42:37 -05:00
Julian Lam
a240fc81ce fixed #869 2014-01-25 20:42:29 -05:00
Baris Soner Usakli
6628db89af added saerch array 2014-01-25 20:36:55 -05:00
Baris Soner Usakli
b4ea8e58fa removed check for no topics in category, you should be able to go into empty categories 2014-01-25 20:08:02 -05:00
Baris Soner Usakli
6ff11c5243 check for number 2014-01-25 19:57:25 -05:00
Baris Soner Usakli
75f178636b more fixes 2014-01-25 19:50:50 -05:00
Baris Soner Usakli
1084523c92 lots of pagination work, query params, ajaxify to pids 2014-01-25 19:19:25 -05:00
MrWaffle
869f9e0d86 Add custom templates to /api/get_templates_listing 2014-01-25 23:13:51 +01:00
Baris Soner Usakli
8744013013 Merge branch 'master' of https://github.com/designcreateplay/NodeBB into pagination 2014-01-25 16:42:06 -05:00
Baris Soner Usakli
2e786cc4d1 closes #873, removed global translator, templates and server objects 2014-01-25 16:39:27 -05:00
Baris Soner Usakli
393bb7245c closes #866 2014-01-25 12:05:48 -05:00
Baris Soner Usakli
d718eca935 fixes global meta leak, and categories meta require, #873 2014-01-25 01:34:56 -05:00
psychobunny
46e29dfb2b Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-25 00:05:45 -05:00
psychobunny
d67ae5c2be changing undetected minified JS file warning to info message instead 2014-01-25 00:05:41 -05:00
Baris Soner Usakli
b23960e8d7 fixes to category pagination 2014-01-24 23:05:59 -05:00
Baris Soner Usakli
ef6fd35e85 lots of cleanup, moved pagination to requirejs module 2014-01-24 22:26:11 -05:00
Baris Soner Usakli
aa73a10fc4 added pagination to vanilla topic template 2014-01-24 21:01:28 -05:00
Baris Soner Usakli
0580d0c8a3 Merge branch 'master' of https://github.com/designcreateplay/NodeBB into pagination 2014-01-24 20:51:02 -05:00
Baris Soner Usakli
5f0c6e508d some cleanup 2014-01-24 20:50:55 -05:00
Baris Soner Usakli
606367701f pagination on posts 2014-01-24 20:00:56 -05:00
Julian Lam
1cce38cae6 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-24 19:55:34 -05:00
Julian Lam
d5534cf545 fixing upgrade script on edge builds 2014-01-24 19:55:19 -05:00
psychobunny
0a749023cb fixing if statements inside a @first / @last block 2014-01-24 14:19:24 -05:00
Baris Soner Usakli
8d007e7029 Merge branch 'master' of https://github.com/designcreateplay/NodeBB into pagination 2014-01-24 13:27:45 -05:00
Baris Soner Usakli
cf39c66017 some pagination work 2014-01-24 13:27:36 -05:00
Julian Lam
e09132350d re-adding conditional to hide quote/reply block if no write perm 2014-01-24 13:26:50 -05:00
psychobunny
503e59b12b clean up conditionals only at the very end of parsing 2014-01-24 13:25:33 -05:00
Julian Lam
26848641cd restoring post/quote buttons pending template system fix for IFs 2014-01-24 13:11:30 -05:00
Julian Lam
a3fe390810 reverting change to User.search that added "timing" to the return of User.search. Such a change can only be made for 0.4.0, sorry! 2014-01-24 13:09:44 -05:00
Julian Lam
be86f84ef8 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-24 12:29:28 -05:00
Julian Lam
ab85ef6b7b fixed issue where back button stopped ajaxifying internally. 2014-01-24 12:29:11 -05:00
Baris Soner Usakli
620ff65cbe Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-24 12:11:29 -05:00
Baris Soner Usakli
7f23f848fe fix for mismatch between favourite count and number of people in favourited seT 2014-01-24 12:11:22 -05:00
Julian Lam
459d5ddccd fixed #867 - added proper detection so that onpopstate would not react if it was a proper page load 2014-01-24 10:09:28 -05:00
Julian Lam
43808c01ec reduced the number of 'ajaxify.go' calls to one, in /src 2014-01-24 10:00:57 -05:00
Julian Lam
b587d7b5ad fixed issue where calls to ajaxify.go were sending in a "template" argument that had since been removed, navigating back to NodeBB from an external link now no longer clobbers the History stack. 2014-01-24 09:48:41 -05:00
Julian Lam
ef450edfea Revert "possible fix to #840", please see #867
This reverts commit 1d666bf7f0.
2014-01-24 08:48:40 -05:00
Julian Lam
dc7cd95f6d Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-24 08:18:02 -05:00
Barış Soner Uşaklı
c91ae0c4c4 Update categories.js 2014-01-24 00:42:34 -05:00
Baris Soner Usakli
f3bdc55348 little tweak to user search show timing and 10 users, sort after slicing 2014-01-23 23:31:10 -05:00
Baris Soner Usakli
1d666bf7f0 possible fix to #840 2014-01-23 22:45:11 -05:00
Baris Soner Usakli
3ea7d4d217 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-23 21:35:33 -05:00
Baris Soner Usakli
3793ddc2e8 fixes user tooltips on infinit load 2014-01-23 21:35:25 -05:00
Julian Lam
3fa9e3f31b Merge pull request #862 from akhoury/master
removed use_proxy config, cleaned-up some comments
2014-01-23 18:23:33 -08:00
akhoury
dcc6ec797e removed use_proxy config, cleaned-up some comments and sneaked in a time log print on initialization, also, related to pull#820 2014-01-23 20:35:53 -05:00
Baris Soner Usakli
b0ef974590 lots of cleanup and refactor 2014-01-23 19:01:30 -05:00
Baris Soner Usakli
f62c82c797 send app to action:app.load 2014-01-23 17:08:33 -05:00
Baris Soner Usakli
6da12d1a39 and for andrew 2014-01-23 16:37:11 -05:00
Baris Soner Usakli
bc1cde38da added getObjectKeys for julian :) 2014-01-23 16:34:54 -05:00
Julian Lam
2af14e47b1 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-23 16:20:46 -05:00
Julian Lam
d380f69310 support for "registered users" and "administrators" in access control (categories). Renamed "Administrators" group to "administrators", and made hidden 2014-01-23 16:19:10 -05:00
Baris Soner Usakli
824c5072e8 topics should be marked read correctly if you are already in it 2014-01-23 15:46:39 -05:00
Julian Lam
a0e9e52e70 adding xregexp to ACP header 2014-01-23 15:16:30 -05:00
Baris Soner Usakli
47c32738a6 removed tests from acp 2014-01-23 12:51:54 -05:00
Julian Lam
f02cd9df82 Merge branch 'master' of github.com:akhoury/NodeBB into akhoury-master
Conflicts:
	src/user.js
2014-01-23 08:15:16 -05:00
Matti Leppänen
4cfd970d5f Added Finnish language translation 2014-01-23 13:10:07 +02:00
Aziz Khoury
659817b4f1 Update comment 2014-01-23 01:07:10 -05:00
Aziz Khoury
7e3d8d65f5 Update login.js 2014-01-23 01:04:01 -05:00
Baris Soner Usakli
b717c74a81 closes #856 2014-01-22 23:58:21 -05:00
Baris Soner Usakli
042174290f removed console.log 2014-01-22 20:35:57 -05:00
Baris Soner Usakli
8aebb7f84d Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-22 19:48:01 -05:00
Baris Soner Usakli
b325212182 crash fix for admin verify email, temp fix 2014-01-22 19:47:55 -05:00
Julian Lam
1e99945515 Merge branch 'yangwao-master' 2014-01-22 19:37:06 -05:00
Julian Lam
f0e47e43bc fb and tw strings for traditional chinese 2014-01-22 19:34:06 -05:00
wao
7b150ab407 added Slovak language translation 2014-01-23 00:45:47 +01:00
Baris Soner Usakli
044382047d removed commented out section 2014-01-22 17:29:23 -05:00
Baris Soner Usakli
46fb6377ee fixed topic reply if title was 255, better notif text in unread and recent,removed console.log 2014-01-22 17:23:20 -05:00
Baris Soner Usakli
79803d2b3d Merge branch 'favourite-spy' of https://github.com/BitBangersCode/NodeBB into BitBangersCode-favourite-spy 2014-01-22 15:28:09 -05:00
MrWaffle
d63ced8a5c Move to client side 2014-01-22 21:08:43 +01:00
MrWaffle
03d92eb5cd Thought I'd refactor this for you guys 2014-01-22 20:29:37 +01:00
MrWaffle
da317b5a85 async wooo 2014-01-22 20:27:42 +01:00
MrWaffle
c0e2e9d011 Remove log 2014-01-22 20:21:56 +01:00
MrWaffle
69b54337bb Limit to 5 users 2014-01-22 20:21:12 +01:00
Baris Soner Usakli
b945dfc71d closes #843 2014-01-22 14:04:04 -05:00
MrWaffle
b887b76c29 Implement favourite tooltip to show who favourited a post 2014-01-22 19:46:34 +01:00
Baris Soner Usakli
45d2affdfb closes #833 2014-01-22 12:46:37 -05:00
Baris Soner Usakli
baa74958c5 can set image class for categories 2014-01-22 11:46:50 -05:00
Baris Soner Usakli
eac6b23811 closes #841 2014-01-22 11:08:52 -05:00
Barış Soner Uşaklı
c709fae251 Merge pull request #828 from BitBangersCode/admin-group-fix
Admin group fix
2014-01-22 08:03:01 -08:00
Richie Preece
d959aad41f Changed to bcrypt.js 2014-01-21 20:56:12 -07:00
Julian Lam
4c01fc4c0e Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-21 22:30:25 -05:00
Julian Lam
7db231ca54 traditional chinese language pack - 很好? 2014-01-21 22:30:03 -05:00
Baris Soner Usakli
18075b85c7 winston.error 2014-01-21 20:57:02 -05:00
Baris Soner Usakli
e997c63480 return error 2014-01-21 20:47:03 -05:00
Baris Soner Usakli
9393a39452 fixes translation in recent 2014-01-21 19:07:03 -05:00
Julian Lam
74786a32ac 0.3.0 2014-01-21 16:58:06 -05:00
Julian Lam
308110db49 adding lavender to dependencies 2014-01-21 16:57:28 -05:00
psychobunny
3b4f0a8f4e updating motd for incoming theme 2014-01-21 16:51:04 -05:00
Josh
4c211b7110 Fixed tabbing/spacing 2014-01-21 21:15:34 +00:00
Josh Rickers
21f6b10023 fixed indenting 2014-01-21 20:44:41 +00:00
Josh Rickers
f9e6fab3ea Fixed line spacing/tabbing 2014-01-21 20:40:55 +00:00
Julian Lam
53a1474785 second pass for #773, blocked for now 2014-01-21 15:29:34 -05:00
Julian Lam
bafc8caaf5 first pass at #773 2014-01-21 15:17:41 -05:00
Josh Rickers
55b0270b34 Merge branch 'master' into admin-group-fix 2014-01-21 19:59:21 +00:00
Josh Rickers
4c36083354 Added yourid so it can be used in groups.js 2014-01-21 19:39:06 +00:00
Josh Rickers
a91e464787 updated groups to stop you from removing yourself from the admin group 2014-01-21 19:37:41 +00:00
Josh Rickers
bac1a5ec3e updated groups to stop you from removing yourself from the admin group 2014-01-21 19:37:01 +00:00
Julian Lam
397861c3cc Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-21 14:01:38 -05:00
Julian Lam
0020f278a5 stopped using unnecessary regex in user search 2014-01-21 13:59:03 -05:00
Baris Soner Usakli
56c789ed61 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-21 12:35:41 -05:00
Baris Soner Usakli
aa2978976c notif fix 2014-01-21 12:35:34 -05:00
Julian Lam
73d9d6e1d3 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-21 12:33:22 -05:00
Julian Lam
92706a6550 fixed #826 2014-01-21 12:33:11 -05:00
Baris Soner Usakli
74ccfd1e4d moved islatin out too 2014-01-21 12:02:46 -05:00
Baris Soner Usakli
8f8ea4de92 slug fix 2014-01-21 12:01:09 -05:00
Baris Soner Usakli
104ec7de6e last poster is visible, slugify check for latin #777 2014-01-21 11:48:56 -05:00
Baris Soner Usakli
a1149b8f8d notif unread class 2014-01-21 10:38:20 -05:00
Baris Soner Usakli
f107803550 fix 2014-01-21 10:07:24 -05:00
Baris Soner Usakli
039f02456d if user is in the topic when a new post comes in mark the topic read 2014-01-21 10:06:13 -05:00
Baris Soner Usakli
9400e5bcc9 motd 2014-01-21 01:27:39 -05:00
Baris Soner Usakli
4cae491438 last one for the night 2014-01-21 00:47:33 -05:00
Baris Soner Usakli
93534832b9 small 2014-01-21 00:21:59 -05:00
Baris Soner Usakli
9cd2b36c97 minor fix to topic.tpl 2014-01-21 00:16:35 -05:00
Baris Soner Usakli
a0b80e4061 shouldnt be in template 2014-01-20 23:25:27 -05:00
Baris Soner Usakli
ccc62a202b dont go to top on search icon click 2014-01-20 21:41:04 -05:00
Baris Soner Usakli
0a1d45b0b9 default panle 2014-01-20 21:33:13 -05:00
Baris Soner Usakli
56fcae1cb2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-20 21:29:22 -05:00
Baris Soner Usakli
7c16a8be31 recent reply fix 2014-01-20 21:29:14 -05:00
Julian Lam
cc236c1f72 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-20 21:15:55 -05:00
Julian Lam
39d9dd76dc removed preview button from ACP/themes 2014-01-20 21:15:52 -05:00
Baris Soner Usakli
f282dcd677 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-20 21:00:21 -05:00
Baris Soner Usakli
55d4a5fe3a template fixes closes #825 2014-01-20 21:00:10 -05:00
Julian Lam
affa51856b closed #801 pending explanation 2014-01-20 19:05:19 -05:00
Baris Soner Usakli
12a5b6b4c6 body margin for composer 2014-01-20 16:50:39 -05:00
Aziz Khoury
da647d105b removing couple of console.log 2014-01-20 16:34:12 -05:00
Aziz Khoury
74f23497dc password should be passed to action hook, and it was being ovewritten 2014-01-20 16:29:46 -05:00
Aziz Khoury
4fad334e18 Merge remote-tracking branch 'upstream/master' 2014-01-20 16:21:57 -05:00
Barış Soner Uşaklı
94f38d0622 Merge pull request #822 from BitBangersCode/admin-fix
Confirmation when removing user from a group
2014-01-20 13:18:52 -08:00
Josh
f7a290d0b3 removed function
removed function that did not work
2014-01-20 20:55:53 +00:00
Josh
a86ff15f7b Removed code for yourid
removed code that will give the current user id in a var called yourid
2014-01-20 20:54:19 +00:00
Baris Soner Usakli
030cfbffa4 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-20 15:35:17 -05:00
Baris Soner Usakli
ed1c276739 only drag chat modal from header 2014-01-20 15:35:10 -05:00
Josh
f14ad11dd0 add remove user from group confirmation
Added confirmation request when removing user from a group.
2014-01-20 20:28:46 +00:00
Julian Lam
9c9fadb5a1 upping mentions minver 2014-01-20 14:53:09 -05:00
Julian Lam
663aff4b24 fixed #723 - bootswatch now using BootstrapCDN, scheme-independant URL 2014-01-20 13:41:46 -05:00
Aziz Khoury
a13c321de8 added "trust proxy" config option with default to true 2014-01-20 13:23:40 -05:00
Aziz Khoury
ba85ffb292 Merge remote-tracking branch 'upstream/master' 2014-01-20 13:22:16 -05:00
Julian Lam
2654a8e86a added cache buster to ACP theme 2014-01-20 13:22:03 -05:00
Julian Lam
cef54fbf6d Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-20 13:17:17 -05:00
Julian Lam
f9e8178d25 fixed timeagago for zh_cn 2014-01-20 13:16:23 -05:00
Baris Soner Usakli
71888adb09 closes #815, closes #816 2014-01-20 12:56:09 -05:00
Aziz Khoury
f74f01ca77 Changed User.create signature to accept a hash, added a couple of utility functions as well 2014-01-20 12:41:35 -05:00
Julian Lam
e2960e3ed6 Merge pull request #819 from BitBangersCode/mongo-fix
Add callback to mongo.searchRemove, fixes infinite schema update
2014-01-20 08:28:23 -08:00
MrWaffle
e4d8ddcf1b Add callback to mongo.removeSearch, fixes infinite schema update 2014-01-20 17:21:45 +01:00
Julian Lam
d6ae91312e Merge branch 'master' of github.com:TheRealDrZ/NodeBB into TheRealDrZ-master
Conflicts:
	public/templates/composer.tpl
2014-01-20 11:15:16 -05:00
Julian Lam
e1a9fe9691 Merge branch 'WindowsFix' of github.com:BitBangersCode/NodeBB into BitBangersCode-WindowsFix
Conflicts:
	src/webserver.js
2014-01-20 11:08:41 -05:00
Julian Lam
33c84d4684 Merge branch 'akhoury-master' 2014-01-20 11:04:10 -05:00
Julian Lam
95355f9036 added 'dir' value into language.json, added support for translator to add dir attribute to html element if necessary 2014-01-20 11:04:06 -05:00
Julian Lam
938b78786e closed #818 - case insensitive user search 2014-01-20 10:55:29 -05:00
Julian Lam
895bff9b62 Merge branch 'master' of github.com:akhoury/NodeBB into akhoury-master 2014-01-20 10:48:06 -05:00
Julian Lam
cf69b9fcb3 fixed #817 - issue where the bootswatch theme was loaded before vanilla, causing default bootstrap to override the bootswatch loaded bootstrap 2014-01-20 10:46:49 -05:00
akhoury
58525bd09c f'in arabs 2014-01-20 01:39:11 -05:00
Baris Soner Usakli
5a069f1076 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-19 22:44:16 -05:00
Baris Soner Usakli
84aa1ab527 motd string and class 2014-01-19 22:44:13 -05:00
Julian Lam
2cfe59f124 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-19 22:29:36 -05:00
Julian Lam
ee6ac77f8b new upgrade directive 2014-01-19 22:29:28 -05:00
Julian Lam
b6aa31b245 removed references to Reds user search 2014-01-19 22:11:34 -05:00
Julian Lam
e542da1f52 added alphanumeric user search (instead of using reds), and exposed a proper socket call for user searching for non-admins 2014-01-19 22:07:29 -05:00
Baris Soner Usakli
f7aa808fa7 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-19 22:06:33 -05:00
Baris Soner Usakli
050ab738e4 fixed drop area top 2014-01-19 22:06:25 -05:00
Julian Lam
483ad87c1d first pass 2014-01-19 21:46:39 -05:00
Julian Lam
cfe46f38ee Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-19 18:35:23 -05:00
Baris Soner Usakli
d1ccc692ae pull right dropdowns 2014-01-19 18:35:18 -05:00
Julian Lam
0c0ae6560a re: #808 -- removed upgrade directives for v0.2.x branch, and added minSchemaDate check so that if you try to upgrade without doing all upgrades in a previous branch, it will abort. 2014-01-19 18:34:11 -05:00
Baris Soner Usakli
c9f43a60b9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-19 18:18:55 -05:00
Baris Soner Usakli
3d30c0bd87 tmp fix for nested if 2014-01-19 18:18:47 -05:00
Julian Lam
3624717d84 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-19 18:02:07 -05:00
Julian Lam
07b286650c adding cache buster to ACP, removing bootstrap css in ACP 2014-01-19 18:02:03 -05:00
Baris Soner Usakli
4273fc4d23 added check for valid field 2014-01-19 18:02:01 -05:00
Baris Soner Usakli
32adbc8c77 close modal on error 2014-01-19 17:49:16 -05:00
Baris Soner Usakli
7310fe82d3 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-19 17:28:15 -05:00
Baris Soner Usakli
189e69284e fixes for post privileges 2014-01-19 17:28:08 -05:00
Julian Lam
0ccb8a77ba Merge pull request #811 from BitBangersCode/alternate_title_fix
Only alternate title when not focused
2014-01-19 14:25:15 -08:00
Julian Lam
e8d6df22cb Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-19 17:18:18 -05:00
Julian Lam
5861630dec - removed autocomplete in composer core (now entirely in mentions)
- upped jQuery UI to 1.10.4
2014-01-19 17:17:40 -05:00
MrWaffle
c1fea52a93 Only alternate title when not focused 2014-01-19 22:38:44 +01:00
Baris Soner Usakli
1980e945da fixed admin page active sockets 2014-01-19 14:42:47 -05:00
Baris Soner Usakli
16a42619b5 closes #809 2014-01-19 14:27:07 -05:00
Baris Soner Usakli
54c05f9027 title is no longer centered in composer 2014-01-19 12:59:45 -05:00
Baris Soner Usakli
9879f645f6 added check for undefined, null empty string 2014-01-18 23:28:13 -05:00
Baris Soner Usakli
bbac361670 fixed crash if empty topic was loaded without ajaxify 2014-01-18 23:18:58 -05:00
Baris Soner Usakli
84cbcc5a97 closes #798 2014-01-18 22:23:25 -05:00
Baris Soner Usakli
8c1c844007 closes #806 2014-01-18 21:57:06 -05:00
Baris Soner Usakli
1dddd77ae1 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-18 19:15:17 -05:00
Baris Soner Usakli
72447c9b9c grouped post buttons in dropdowns 2014-01-18 19:15:07 -05:00
psychobunny
025e1293fa removed deprecated cssSrc, replaced with optional bootswatchCSS 2014-01-18 16:13:01 -05:00
psychobunny
df53d836e5 fixed dependency check for cerulean 2014-01-18 16:01:14 -05:00
Baris Soner Usakli
e83e7870ce Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-18 16:00:12 -05:00
Baris Soner Usakli
d8e14acbbf closes #799 2014-01-18 16:00:05 -05:00
psychobunny
4ef5ffe7fd upped minver of cerulean to 0.0.12 - please upgrade 2014-01-18 15:59:39 -05:00
Baris Soner Usakli
5072b9c8a5 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-18 15:35:58 -05:00
Baris Soner Usakli
959e6e83ea closes #796 2014-01-18 15:35:51 -05:00
psychobunny
1528c70a30 deleted BS css files from core - please update vanilla 2014-01-18 15:12:49 -05:00
psychobunny
6af143900a upped minver of vanilla to 0.0.13 - please update 2014-01-18 15:12:35 -05:00
Dr.Z
43cc975ff7 Add Simplized Chinese.
Just modified the .json in language folder and some .tpl in the
templates folder(except the admin folder). Noted there are a lot of
front-end related code in the .js files, I’ll move on to them.
2014-01-19 01:04:12 +08:00
Julian Lam
0397773b22 Merge pull request #802 from tedr56/master
Fr translation Updates
2014-01-18 06:30:26 -08:00
MrWaffle
5ed77b032e Fix plugin CSS files on Windows 2014-01-18 14:58:20 +01:00
TedVJ
b5ed7b8b72 Fr translation fixes 2014-01-18 14:47:41 +01:00
TedVJ
a2165403a7 Fr translation for fd92d7b02a 2014-01-18 14:33:25 +01:00
Baris Soner Usakli
324bec41c4 chain 2014-01-17 20:10:09 -05:00
Baris Soner Usakli
0db6423c26 closes #792, fixes multiple composers 2014-01-17 19:42:20 -05:00
Baris Soner Usakli
dc27638ca8 sitemap fix 2014-01-17 18:58:38 -05:00
Baris Soner Usakli
c00bd0b8d0 oops fixed 2014-01-17 18:14:00 -05:00
Baris Soner Usakli
22e1b0f22e check result for null 2014-01-17 18:12:56 -05:00
Baris Soner Usakli
e6a9f5a704 error check 2014-01-17 18:11:36 -05:00
Baris Soner Usakli
fd92d7b02a can mark topic unread for all 2014-01-17 17:26:07 -05:00
Baris Soner Usakli
25b50323fa markdown text in composer 2014-01-17 17:07:09 -05:00
Baris Soner Usakli
7752d24b21 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-17 16:30:12 -05:00
Baris Soner Usakli
00c6fc17ac removed console.log 2014-01-17 16:27:17 -05:00
psychobunny
4e5dfbc1c9 find .post-row instead of any li 2014-01-17 16:26:32 -05:00
Baris Soner Usakli
24ceb0f083 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-17 16:16:07 -05:00
Baris Soner Usakli
48eb6a3f22 composer changeS 2014-01-17 16:16:00 -05:00
Julian Lam
123f92ca1e fixed #711 2014-01-17 15:36:10 -05:00
Julian Lam
917dfe74e6 removing console log and removing a bit of code that would cause infinite loader to take 2.5s extra each round :P 2014-01-17 14:52:43 -05:00
Julian Lam
d8c4609ee0 fixed #649 - Once you hit the end, infinite loader will stop for good. If infinite loader is active when the browser hits the bottom, updateHeader will not assume 100%. 2014-01-17 14:47:18 -05:00
Julian Lam
962955f06a fixed bug with search (getTopicsByTids became error-first) 2014-01-17 14:29:46 -05:00
Julian Lam
51abf60b3a Merge branch 'socketAL-fix' 2014-01-17 14:15:56 -05:00
Julian Lam
48c22567c2 fixed #791 2014-01-17 14:13:23 -05:00
Julian Lam
17f98804c6 commented out "remember me" checkbox because it actually does nothing... :x 2014-01-17 14:08:12 -05:00
Baris Soner Usakli
e884ff1f59 modules fixes 2014-01-17 12:55:38 -05:00
Baris Soner Usakli
a34775a6c2 meta fixes 2014-01-17 12:52:04 -05:00
Baris Soner Usakli
c0712583f2 fixed category sockets 2014-01-17 12:49:21 -05:00
Baris Soner Usakli
d72926a5bb Merge branch 'socketAL-fix' of https://github.com/designcreateplay/NodeBB into socketAL-fix 2014-01-17 12:42:26 -05:00
Baris Soner Usakli
a802dc4b68 admin.js socket fixes 2014-01-17 12:42:19 -05:00
Julian Lam
af6eb5359e Merge branch 'master' into socketAL-fix
Conflicts:
	public/language/cs/global.json
	public/language/fr/global.json
	src/routes/api.js
2014-01-17 12:10:49 -05:00
Julian Lam
727ad4b651 added cache buster to nodebb.min.js even if it has not changed 2014-01-17 12:07:33 -05:00
Julian Lam
5e695d3222 fixed incorrect language string used in fb button in default motd 2014-01-17 12:02:12 -05:00
Julian Lam
55c296a229 Merge pull request #790 from tedr56/master
Fr Translation Update
2014-01-17 08:33:15 -08:00
TedVJ
27762c2ab9 Fr Translation update #3 2014-01-17 16:41:04 +01:00
TedVJ
f63ab0faeb Fr Translation update #2 2014-01-17 16:35:32 +01:00
TedVJ
cfbbc238f6 Fr Translation Update 2014-01-17 16:16:51 +01:00
Julian Lam
2b32ede4d8 fixed czech welcome message 2014-01-17 09:09:43 -05:00
Julian Lam
04da0447b5 fixed global:motd.get in es 2014-01-17 08:58:53 -05:00
Julian Lam
45ce0566e7 added translation to default MOTD 2014-01-17 08:58:46 -05:00
Julian Lam
14b31cf4c8 hiding fork button on xs/sm devices (default motd) 2014-01-17 08:58:40 -05:00
Julian Lam
c1c9438220 patching translator to ignore non-js files 2014-01-17 08:58:33 -05:00
Julian Lam
13ae2e9401 fixed global:motd.get in es 2014-01-17 08:54:34 -05:00
Julian Lam
beec96416f added translation to default MOTD 2014-01-17 08:53:23 -05:00
Julian Lam
253913f8d9 hiding fork button on xs/sm devices (default motd) 2014-01-17 08:12:30 -05:00
Julian Lam
7e9d344487 patching translator to ignore non-js files 2014-01-17 08:04:23 -05:00
Baris Soner Usakli
cfaa6556d6 pass err 2014-01-17 00:07:02 -05:00
Baris Soner Usakli
b062af2c4b fixed user pwd reset 2014-01-16 23:46:08 -05:00
Baris Soner Usakli
b7f0c90bf7 more fixes 2014-01-16 22:44:34 -05:00
Baris Soner Usakli
b3816b98a1 more post fixes 2014-01-16 22:06:23 -05:00
Baris Soner Usakli
9e6f7fa960 reset 2014-01-16 21:19:57 -05:00
Baris Soner Usakli
31d353ab0e more fixes 2014-01-16 21:19:29 -05:00
Barış Soner Uşaklı
3a57c3b6d8 removed disabled attrib from reset button 2014-01-16 20:59:01 -05:00
Baris Soner Usakli
8740cc0fc7 Merge branch 'socketAL-fix' of https://github.com/designcreateplay/NodeBB into socketAL-fix 2014-01-16 20:53:42 -05:00
Baris Soner Usakli
ae76bb3928 lots of err first fixeS 2014-01-16 20:53:32 -05:00
Julian Lam
111776d878 notifications socket callbacks 2014-01-16 20:29:11 -05:00
Julian Lam
e95da77fe8 Merge branch 'socketAL-fix' of github.com:designcreateplay/NodeBB into socketAL-fix 2014-01-16 20:14:19 -05:00
Julian Lam
bc48ba874d fixed module.js callback format 2014-01-16 20:14:09 -05:00
Baris Soner Usakli
ced37044ca Merge branch 'socketAL-fix' of https://github.com/designcreateplay/NodeBB into socketAL-fix 2014-01-16 19:59:03 -05:00
Baris Soner Usakli
426d3e871f more fixes 2014-01-16 19:58:57 -05:00
Julian Lam
cbb630fd6b fixed categories.js socket callbacks 2014-01-16 19:57:28 -05:00
Julian Lam
8041bee9fd Merge branch 'socketAL-fix' of github.com:designcreateplay/NodeBB into socketAL-fix 2014-01-16 19:10:30 -05:00
Baris Soner Usakli
6da6baa213 more crash fixes to socketS 2014-01-16 18:50:45 -05:00
Baris Soner Usakli
ba8e98520c added data checks to user calls 2014-01-16 18:18:42 -05:00
Baris Soner Usakli
ddb9a4a60e fixed user load more 2014-01-16 18:12:31 -05:00
Baris Soner Usakli
4366c11ec0 users.js fix 2014-01-16 18:10:38 -05:00
Baris Soner Usakli
39b631a3a8 more fixes 2014-01-16 18:06:19 -05:00
Baris Soner Usakli
e061978bd5 more fixes 2014-01-16 17:52:46 -05:00
Baris Soner Usakli
2515ba9455 Merge branch 'socketAL-fix' of https://github.com/designcreateplay/NodeBB into socketAL-fix 2014-01-16 17:32:45 -05:00
Baris Soner Usakli
afe97233aa more fixes 2014-01-16 17:32:33 -05:00
Julian Lam
8b1ed1297b linting 2014-01-16 17:25:14 -05:00
Julian Lam
765402a2a0 fixed ACP online count 2014-01-16 17:22:11 -05:00
Baris Soner Usakli
e5c8caf5ff more fixes 2014-01-16 17:15:00 -05:00
Baris Soner Usakli
1ec21c2bfd metatitle 2014-01-16 17:11:27 -05:00
Baris Soner Usakli
7470c1bbd9 more fixes 2014-01-16 17:07:34 -05:00
Baris Soner Usakli
2893693d17 Merge branch 'socketAL-fix' of https://github.com/designcreateplay/NodeBB into socketAL-fix 2014-01-16 16:50:48 -05:00
Baris Soner Usakli
0b132cadcf user fixes 2014-01-16 16:50:41 -05:00
Julian Lam
3177fdfa74 partially fixed acp active users 2014-01-16 16:26:47 -05:00
Julian Lam
08f97efcd4 Merge branch 'socketAL-fix' of github.com:designcreateplay/NodeBB into socketAL-fix 2014-01-16 16:11:30 -05:00
Julian Lam
71f1f7137a fixes 2014-01-16 16:11:23 -05:00
Baris Soner Usakli
220b40ff9c topics.js 2014-01-16 16:10:23 -05:00
Julian Lam
97eff9c8a1 fixing index call and meta.js 2014-01-16 15:57:13 -05:00
Baris Soner Usakli
adf4a5c407 user.js changes 2014-01-16 15:46:37 -05:00
Julian Lam
42d6880ac4 migrating posts to new socketAL format 2014-01-16 15:34:43 -05:00
Julian Lam
35aa06c230 migrating notifications to new socketAL format 2014-01-16 15:31:57 -05:00
Julian Lam
be3284e05e migrating modules.js to new socketAL style 2014-01-16 15:28:21 -05:00
Baris Soner Usakli
8bb24fa034 fixed update header 2014-01-16 15:25:04 -05:00
Julian Lam
2235dbd2a0 migrating meta.js to new socketAL format 2014-01-16 15:19:07 -05:00
Baris Soner Usakli
f6bd52014e fixed conflict 2014-01-16 15:18:13 -05:00
Baris Soner Usakli
accde93fff removed api: from server 2014-01-16 15:17:25 -05:00
Julian Lam
69a9570186 migrated catefories.js to new socketAL format 2014-01-16 15:16:12 -05:00
Julian Lam
c215e61541 fixed up admin.js 2014-01-16 15:13:22 -05:00
Baris Soner Usakli
67799eac95 removed api: from client side socket calls 2014-01-16 15:10:37 -05:00
Julian Lam
4184574164 WIP admin.js socket underping 2014-01-16 15:00:49 -05:00
Baris Soner Usakli
d234dbdca2 first set of changes 2014-01-16 14:57:03 -05:00
Julian Lam
dfd2df99e6 removed "mark all as read" language strings and removed button from notifications page -- fixes #785 2014-01-16 14:25:46 -05:00
Julian Lam
b32887f2ce Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-16 12:35:18 -05:00
Julian Lam
a48a7acd51 fixing issue where after a user changed their username, the new name was not reindexed by Reds 2014-01-16 12:34:48 -05:00
Baris Soner Usakli
8f9f5b2849 added user images to profile button in mobile view 2014-01-16 02:37:55 -05:00
Baris Soner Usakli
72fd78ac26 fixed indent in chat.tpl 2014-01-15 19:22:11 -05:00
Baris Soner Usakli
16aeb2d09d added fb to motd default 2014-01-15 18:58:31 -05:00
Baris Soner Usakli
2d87ba534c can paste images directly from clipboard 2014-01-15 18:44:09 -05:00
Baris Soner Usakli
e671f0343e closes #782 2014-01-15 17:36:06 -05:00
Baris Soner Usakli
e16c3f3f80 added try catch to socket calls 2014-01-15 13:23:53 -05:00
Baris Soner Usakli
b303fdcfd7 removed inline css 2014-01-15 12:58:43 -05:00
MrWaffle
b78dc3eca8 Chat now supports markdown 2014-01-15 18:20:05 +01:00
Baris Soner Usakli
1bf3d33765 prevent clicks on autocomplete to scroll window to the top 2014-01-15 03:22:49 -05:00
Baris Soner Usakli
cd4cb240c8 upload file icon in composer was visible even when uploads were disabled 2014-01-15 02:33:20 -05:00
Baris Soner Usakli
82bc0aec6b Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-14 19:23:33 -05:00
Baris Soner Usakli
c94da47ae8 added profile func, shorter getRecentReplies 2014-01-14 19:23:27 -05:00
Julian Lam
7de540dc74 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-14 19:01:53 -05:00
Julian Lam
b3f23d41d3 fixed #744 2014-01-14 19:01:12 -05:00
Baris Soner Usakli
466c02a886 removed teaser_text 2014-01-14 19:00:18 -05:00
Baris Soner Usakli
265d1f6331 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-14 18:05:02 -05:00
Baris Soner Usakli
dcf47f558e limit search in db 2014-01-14 18:04:54 -05:00
Julian Lam
facacc65aa Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-14 17:03:13 -05:00
Julian Lam
442c543d27 fixed #776 2014-01-14 17:02:54 -05:00
psychobunny
8c5a458798 fixed 403 redirect from logged out /admin 2014-01-14 14:33:43 -05:00
psychobunny
98d42b0ade moving social sharing parsing code from server side to client side & cleaned up templates 2014-01-14 14:30:14 -05:00
Baris Soner Usakli
75850bd315 closes #772 2014-01-14 13:10:31 -05:00
Julian Lam
5efc1e5de8 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-14 12:34:54 -05:00
Julian Lam
d48e749d54 removed confirmation prompt in upgrade option in nodebb executable 2014-01-14 12:34:29 -05:00
psychobunny
6f129d9c68 allow password fields to be saved in ACP 2014-01-14 12:25:27 -05:00
Julian Lam
acc390f6ef added timeago locales, fixed timeago template error in ACP. 2014-01-14 11:13:58 -05:00
Julian Lam
c8a514aa37 updated new timeago path 2014-01-14 11:03:49 -05:00
Julian Lam
0ea09972b4 fixed issue where outgoing links warning page would intercept clicks to the search button in the headerbar (thanks @dove)
- linted some files
2014-01-14 10:31:21 -05:00
Julian Lam
3837841882 removed automatic "visible-xs-inline" on links added by static-page or -42 2014-01-14 10:13:12 -05:00
Julian Lam
a05d2d44e9 fixed cerulean version 2014-01-14 09:31:24 -05:00
Julian Lam
ebcf8eb03b upping cerulean minver 2014-01-14 09:28:44 -05:00
Julian Lam
bc407ee59c fixing topic moving 2014-01-14 09:19:33 -05:00
Julian Lam
a32aee60c2 reversing accidentally committed code to socket.io/index 2014-01-14 08:54:42 -05:00
Julian Lam
0266c5516c Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-14 08:53:25 -05:00
Julian Lam
32470efb22 fixing upgrade script console.log and missing sessionData for topic moving 2014-01-14 08:53:10 -05:00
Baris Soner Usakli
bbcc2312db better redis info parser from node-redis 2014-01-14 08:20:41 -05:00
Baris Soner Usakli
07085f1ff2 fixed sockettopics.post 2014-01-14 07:39:01 -05:00
Baris Soner Usakli
0198024db0 parseInt uid 2014-01-14 07:36:01 -05:00
Baris Soner Usakli
bc835f59d4 mongo getListRange fix 2014-01-13 20:46:43 -05:00
Baris Soner Usakli
a97ee201d8 makes recent unread and category pages a lot faster, added logging when a user changes their username 2014-01-13 18:02:06 -05:00
Baris Soner Usakli
c07bf466b2 added back search limiting 2014-01-13 15:45:50 -05:00
Baris Soner Usakli
3475ed59c8 removed reds from install.js 2014-01-13 15:38:27 -05:00
Baris Soner Usakli
93292e701d added error check to setOnEmpty 2014-01-13 14:28:05 -05:00
Baris Soner Usakli
243cb5af61 fixed mobile search link 2014-01-13 14:19:08 -05:00
Baris Soner Usakli
26274bd75a closes #767 2014-01-13 13:50:33 -05:00
Julian Lam
97cc6cde67 closed #733 - after upgrade script, all users will be in a system "registered users" group 2014-01-13 13:32:49 -05:00
Julian Lam
619fe74fc0 moved groups admin socket calls into admin file instead of standalone groups file 2014-01-13 12:09:13 -05:00
Julian Lam
4453d055ea linted socket/admin.js 2014-01-13 12:05:13 -05:00
Julian Lam
aa689a7a29 fixed active users socket calls in ACP 2014-01-13 12:01:42 -05:00
Julian Lam
3fb44d7693 who needs recursion, bitch?
- enhanced socket abs layer so that a method call of infinite depth is supported (theoretically).
2014-01-13 11:40:08 -05:00
Julian Lam
5db9ff11d5 linting and adding missing require'd dep 2014-01-13 11:23:21 -05:00
Julian Lam
5e538ef051 fixed #710 - added labels to the top bar (update vanilla!)
merged "loading" and "more_posts" in topic i18n data, changed behaviour so that on mobile, only the spinner shows.
2014-01-13 10:47:48 -05:00
Julian Lam
2078fa25f8 added classname to chat dropdown if there are no chats 2014-01-13 10:11:23 -05:00
Julian Lam
b86ae3f7f0 fixed #756 - sequestering Notifications and Chat DOM functions in their module, and not in footer 2014-01-13 10:06:00 -05:00
Julian Lam
e36f92b18e closed #764 2014-01-13 09:50:29 -05:00
Barış Soner Uşaklı
dea43ee008 Merge pull request #763 from bdharrington7/master
added login register selectors to close the nav when clicked
2014-01-12 15:22:07 -08:00
Baris Soner Usakli
6053a8caa5 search icon should be hidden-xs 2014-01-12 18:21:00 -05:00
bdharrington7
bf96903d6e removed submenu for login / register in guest menu options 2014-01-12 15:10:10 -08:00
bdharrington7
e8c7860f12 Merge branch 'master' of https://github.com/bdharrington7/NodeBB 2014-01-12 14:15:14 -08:00
bdharrington7
2b63b2c52a fixed bug that hid the login menu option 2014-01-12 13:45:27 -08:00
bdharrington7
0ad1f1576b Fix: login / register collapses on click, Search unavailable if not allowed 2014-01-12 13:45:27 -08:00
Baris Soner Usakli
5febb3dc23 clicking the pagination block no longer sends page to top 2014-01-12 13:45:27 -08:00
Baris Soner Usakli
a885444740 fixes toggle_mod_tools undefined error 2014-01-12 13:45:27 -08:00
bdharrington7
d60151a6cc excluding .DS_Store 2014-01-12 13:45:26 -08:00
bdharrington7
3ccc11d53c fixed bug that hid the login menu option 2014-01-12 13:36:15 -08:00
bdharrington7
cfda0a93c4 Fix: login / register collapses on click, Search unavailable if not allowed 2014-01-12 13:12:13 -08:00
Baris Soner Usakli
92894277a9 clicking the pagination block no longer sends page to top 2014-01-12 15:52:44 -05:00
Baris Soner Usakli
1580226757 fixes toggle_mod_tools undefined error 2014-01-12 15:37:33 -05:00
bdharrington7
ffa1f1703d Merge branch 'master' of https://github.com/bdharrington7/NodeBB 2014-01-12 12:32:48 -08:00
bdharrington7
99dc989c39 excluding .DS_Store 2014-01-12 12:32:18 -08:00
Julian Lam
8d71098a0f fixed detection for admin client-side scripts 2014-01-12 14:38:54 -05:00
Lumir Mrkva
bd0d09584b added czech translation 2014-01-12 19:24:02 +01:00
Baris Soner Usakli
1e59147d64 closes #760 2014-01-12 00:04:02 -05:00
Julian Lam
3da96faa12 fixed email exists error... weird. 2014-01-11 22:14:20 -05:00
Julian Lam
98e4257939 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-11 22:09:30 -05:00
Julian Lam
eb974ec1d8 fixing user register socket calls 2014-01-11 22:09:23 -05:00
Baris Soner Usakli
30ad852492 closes #758 2014-01-11 17:48:24 -05:00
Baris Soner Usakli
8bc0096b00 dont closed composer if callback isn't called 2014-01-11 16:15:50 -05:00
Baris Soner Usakli
f73c81d6c3 closes #755 2014-01-11 15:33:58 -05:00
Julian Lam
ee963e0c2a moved reconnected socket call to SocketsMeta 2014-01-11 14:03:50 -05:00
Julian Lam
99af660e48 adding missing modules.json files in languages 2014-01-11 14:03:28 -05:00
Julian Lam
6d300e1110 updated chat i18n strings to use new modules.json file, added said files to language dirs 2014-01-11 12:12:04 -05:00
Julian Lam
b61614f87b fixed htmlentities in italian translation 2014-01-11 11:52:43 -05:00
Francesco
fd83769bde added italian language files 2014-01-11 11:44:08 -05:00
Julian Lam
eabe3ada6f upped mentions minver to 0.2 2014-01-11 11:29:05 -05:00
Julian Lam
3264658269 Merge remote-tracking branch 'origin/master' into socketAL 2014-01-11 11:26:52 -05:00
Julian Lam
73cbde4098 removed websockets.js wooo 2014-01-11 11:26:44 -05:00
bdharrington7
e5fc0819b4 excluding .DS_Store 2014-01-10 20:22:17 -08:00
psychobunny
97ec312c72 console.log 2014-01-10 17:08:01 -05:00
psychobunny
05edfdc9c1 templates.js - if custom theme is missing a template, render default template 2014-01-10 17:06:56 -05:00
Julian Lam
067a7a544b Merge remote-tracking branch 'origin/master' into socketAL 2014-01-10 16:09:04 -05:00
Julian Lam
a150691b5e that's the last of it!! :D 2014-01-10 16:00:03 -05:00
Baris Soner Usakli
b8d858ccca Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-10 14:12:04 -05:00
Baris Soner Usakli
ee1ac1b2c3 fixes post move 2014-01-10 14:11:55 -05:00
Julian Lam
a2329980c8 Merge remote-tracking branch 'origin/master' into socketAL 2014-01-10 13:28:11 -05:00
Julian Lam
ea8aa3fff2 admin stuff, removed deprecated install templates, blah blah 2014-01-10 13:27:50 -05:00
Julian Lam
c5d8a5a6b2 thread tools (phew!) -- sessionData is getting larger :P 2014-01-10 10:50:05 -05:00
psychobunny
ef01717562 allow themes to set path to a frameworkCSS so you can include a customized BS or another framework altogether 2014-01-10 03:08:46 -05:00
Julian Lam
8dd8412ae3 so far so good... user, meta, notifications, categories 2014-01-09 22:47:07 -05:00
Julian Lam
5a589c885a Merge remote-tracking branch 'origin/master' into socketAL 2014-01-09 21:27:57 -05:00
Julian Lam
dfa9f203e6 crashing a lot less now, heh 2014-01-09 21:27:50 -05:00
Julian Lam
adb8f80b86 interim commit - removed calls to websockets.js, beginning porting to namespaced files 2014-01-09 20:13:17 -05:00
Baris Soner Usakli
92ca739002 center on load 2014-01-09 20:04:50 -05:00
Baris Soner Usakli
c19d3e8063 closes #738 2014-01-09 19:34:51 -05:00
Baris Soner Usakli
30624d4ad8 tabbified the admin settings page 2014-01-09 17:51:26 -05:00
Baris Soner Usakli
9c60182da4 closes #749 2014-01-09 15:58:31 -05:00
psychobunny
1caaa8c20a re-initialize translator when language is changed in ACP 2014-01-09 14:21:58 -05:00
Julian Lam
c2a1cd94d0 addressing issue for #728 where existing NodeBBs don't have a defaultLang set 2014-01-09 13:42:35 -05:00
Julian Lam
df4c6ca1c8 integrating client side translator into new languages tab in ACP 2014-01-09 13:37:25 -05:00
Julian Lam
cd6af45afb added icons to all h1s in admin panel
languages tab in ACP
each language now also has a "language.json"
2014-01-09 13:29:41 -05:00
Julian Lam
119079ace5 added missing link, numRecentReplies, and class values to category.create... fixed #754, fixed #751 2014-01-09 11:50:24 -05:00
Baris Soner Usakli
dff10045da removed my console.logs as usual 2014-01-08 22:55:33 -05:00
Baris Soner Usakli
dda4586a2f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-08 22:54:03 -05:00
Baris Soner Usakli
dabd2f29af closes #747 2014-01-08 22:53:55 -05:00
Julian Lam
029b91a323 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-08 21:50:26 -05:00
Julian Lam
ac04e04016 fixed #719 2014-01-08 21:50:19 -05:00
Baris Soner Usakli
3a6db04be5 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-08 21:47:16 -05:00
Baris Soner Usakli
eb65c5ad1b reindex user name after change, #745 2014-01-08 21:47:09 -05:00
Julian Lam
c2c1632c0e Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-08 21:25:11 -05:00
Julian Lam
2495b5b89b refactored group category permissions, removed getCategoryAccess method call 2014-01-08 21:25:01 -05:00
Baris Soner Usakli
176ac54cdf closes #745 2014-01-08 21:19:32 -05:00
Baris Soner Usakli
e07c848da7 closes #737 2014-01-08 16:30:27 -05:00
Baris Soner Usakli
6b8f7dba4f Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-08 16:11:59 -05:00
Baris Soner Usakli
825e4cca5a closes #744 2014-01-08 16:11:47 -05:00
Julian Lam
ab16b1184d fixing issue where nojs mode of a private category would show the category topics, even if the requesting user was not allowed inside 2014-01-08 15:09:24 -05:00
Julian Lam
127261100e fixed #698 - ajaxify.go will now cancel any active API requests when it is called 2014-01-08 14:53:32 -05:00
Baris Soner Usakli
67f8af7e3e #744 2014-01-08 06:19:22 -05:00
Baris Soner Usakli
d2c0aa9949 fixed auto complete for insertion in the middle, 6am commits FTW 2014-01-08 06:15:48 -05:00
Baris Soner Usakli
0d26b21a2c prevent double res.send/json if error occurs in profile image upload 2014-01-08 02:59:14 -05:00
Baris Soner Usakli
2d384a68d2 oops extra $ 2014-01-08 02:39:50 -05:00
Baris Soner Usakli
414eaea413 username mention auto completes 2014-01-08 02:39:06 -05:00
Baris Soner Usakli
a4ae9c70df closes #742, closes #741 2014-01-07 17:30:29 -05:00
Baris Soner Usakli
6f94acd0f2 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-07 15:00:12 -05:00
Baris Soner Usakli
8e6606fb5a move post 2014-01-07 15:00:05 -05:00
psychobunny
cfa4256df5 admin - download emails.csv, thanks to @akhoury for the gist 2014-01-07 14:01:32 -05:00
Baris Soner Usakli
4912b8a893 fixed language regex 2014-01-07 00:14:20 -05:00
Baris Soner Usakli
f75e55aa11 fixed path 2014-01-06 23:45:31 -05:00
Baris Soner Usakli
88305b3350 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-06 23:44:39 -05:00
Baris Soner Usakli
d6333a3969 fixed plugin css files for relative path 2014-01-06 23:44:32 -05:00
Julian Lam
538bb3e871 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-06 19:24:24 -05:00
Julian Lam
649d8af36b updated help doc for executable 2014-01-06 19:24:09 -05:00
Baris Soner Usakli
faf5ea2122 check if we have edit permission on the pids that we want to move 2014-01-06 19:20:01 -05:00
Baris Soner Usakli
291aa872c4 cant fork if not logged in 2014-01-06 19:12:34 -05:00
Baris Soner Usakli
2e575bb2d8 closes #524 2014-01-06 17:37:42 -05:00
psychobunny
7c8c735e05 i8n - if translation not present, use a readable key 2014-01-06 02:49:41 -05:00
psychobunny
b21a202142 my data went on a date and found out we have out of date data 2014-01-06 00:14:33 -05:00
psychobunny
032d46465d closes #551 2014-01-05 23:57:43 -05:00
psychobunny
6f120ff34a closes #732, custom robots.txt 2014-01-05 23:19:52 -05:00
psychobunny
0e5358a701 closes #698 2014-01-05 23:09:28 -05:00
psychobunny
7be16eab06 closes #722 2014-01-05 23:02:19 -05:00
Baris Soner Usakli
58580bd866 closes #716, also moved chat to its own template 2014-01-05 22:09:13 -05:00
Baris Soner Usakli
be316ff602 fixed mongo listRemoveAll 2014-01-05 20:44:06 -05:00
Baris Soner Usakli
dfc8aacbae closes #735, removed create collection calls 2014-01-05 19:08:36 -05:00
Baris Soner Usakli
8c04e8e56c Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-05 18:30:21 -05:00
Baris Soner Usakli
cd6750a38d minor fix 2014-01-05 18:30:14 -05:00
Julian Lam
71681b936f fixed #731 2014-01-05 18:27:13 -05:00
Julian Lam
4923c79496 tweaking upgrade script 2014-01-05 14:17:37 -05:00
Julian Lam
3f0f5a09a0 new upgrade directive to re-slugify usernames again 2014-01-05 14:07:26 -05:00
Julian Lam
f7b7af3004 so xregexp uses double backslashes... 2014-01-05 13:59:02 -05:00
Julian Lam
5a88a5ca60 allow underscores in slugs 2014-01-05 12:55:39 -05:00
Julian Lam
6567819294 commented out "language" directive in executable (didn't do anything anyway), and added "upgrade" directive 2014-01-05 12:15:23 -05:00
Baris Soner Usakli
e69611fa22 if email didnt change dont update and dont log 2014-01-05 01:53:01 -05:00
Baris Soner Usakli
48074ea93b redirect if category is accessed directly 2014-01-05 01:39:33 -05:00
Baris Soner Usakli
4dc8f2c2e1 closes #665 2014-01-05 01:26:23 -05:00
psychobunny
b131dacf39 set external link for categories 2014-01-05 01:16:39 -05:00
Baris Soner Usakli
32f17d5e13 closes #729 2014-01-05 00:39:15 -05:00
Julian Lam
bee3c06a07 clicking 'quote' now shows the quoted username before said quote 2014-01-04 21:41:22 -05:00
Julian Lam
8aa227b052 added note re: third-party emailer pluginses 2014-01-04 21:09:21 -05:00
Julian Lam
eaf25c4a5f removing SMTP settings fields in email settings portion of settings tab in ACP 2014-01-04 21:07:10 -05:00
Julian Lam
f90beca449 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-04 20:09:03 -05:00
Julian Lam
724dcb88c0 added translator integration to emailer 2014-01-04 20:08:59 -05:00
Baris Soner Usakli
e5ec5242c6 added relative_path 2014-01-04 19:35:02 -05:00
Baris Soner Usakli
c3f7faffd3 added relative_path in admin site templaets 2014-01-04 19:30:09 -05:00
Baris Soner Usakli
43a1ce66a1 added relative_path to recent_replies and browsing users 2014-01-04 19:20:59 -05:00
Baris Soner Usakli
9da165c1a7 added relative_path to templates 2014-01-04 19:08:09 -05:00
Baris Soner Usakli
02e550d3ad Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-04 18:28:01 -05:00
Baris Soner Usakli
680fac0674 added relative_path to header.tpl 2014-01-04 18:27:54 -05:00
psychobunny
ea49295774 some translator methods useful for plugins that wish to support i8n 2014-01-04 18:15:10 -05:00
Baris Soner Usakli
0edb895c2c indent 2014-01-04 18:09:43 -05:00
Baris Soner Usakli
981719dee1 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-04 18:05:22 -05:00
Baris Soner Usakli
1466e68aa1 ssl support 101 2014-01-04 18:05:15 -05:00
Julian Lam
f1412193ef Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-04 18:04:12 -05:00
Julian Lam
b6fdc5595d removed handlebars dependency for emailer, using ANDREWBARS now 2014-01-04 18:03:54 -05:00
psychobunny
fda68bc5dd added templates.setGlobal - allows you to add default template vars that are sent to all tpls upon parsing; added relative_path as global 2014-01-04 17:44:13 -05:00
Baris Soner Usakli
487281cc7a Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-04 17:11:04 -05:00
Baris Soner Usakli
751dc73ebe fixes login/register and auth routes in relative path install 2014-01-04 17:10:56 -05:00
psychobunny
7f8836daa4 simplified filter:server.create_routes - routes no longer require you to pass in req, res, name, route (the latter two was a mistake)
tl;dr - just content is all that is required. see
http://www.github.com/psychobunny/nodebb-plugin-static-page for more
info
2014-01-04 17:01:01 -05:00
Julian Lam
5c048ac20a closed #727 2014-01-04 14:24:50 -05:00
Julian Lam
11ed9e8c85 tweaks to emailer, implemented emailer hook for password reset 2014-01-04 11:55:41 -05:00
Julian Lam
0ac9ec6001 Merge remote-tracking branch 'origin/master' into email-revamp 2014-01-04 11:19:23 -05:00
Baris Soner Usakli
ecb64a0aa2 removed extra , 2014-01-04 02:10:37 -05:00
Baris Soner Usakli
8626122679 category active users are stored in a sorted set now 2014-01-04 01:15:41 -05:00
Baris Soner Usakli
8ab539b518 0.2.1 2014-01-04 00:50:23 -05:00
Baris Soner Usakli
9078c2a536 0.2.0 2014-01-04 00:49:10 -05:00
Baris Soner Usakli
fd20e4a400 5% more 2014-01-04 00:41:25 -05:00
Baris Soner Usakli
1a64e40b21 upgrade check 2014-01-04 00:38:43 -05:00
Julian Lam
cbfba4b45b 0.2.1 2014-01-04 00:04:37 -05:00
Baris Soner Usakli
f21a98f37f first pass, #524, #667 2014-01-03 21:33:41 -05:00
psychobunny
0edd6985ec templates.js added support for !@first and !@last conditionals 2014-01-03 21:23:08 -05:00
psychobunny
98a646fa62 changed numRecentTopics to numRecentReplies, that makes more sense now 2014-01-03 20:37:29 -05:00
psychobunny
1d69436b44 fix to getRecentReplies causing count = 0 to return unlimited 2014-01-03 20:36:00 -05:00
psychobunny
d6c7551120 pull # of recent replies based on settings 2014-01-03 20:29:09 -05:00
psychobunny
fb53e89023 upgrade.js - categories.numRecentTopics 2014-01-03 20:20:23 -05:00
psychobunny
d28beaa4dc admin - add "# recent topics to display" to categories 2014-01-03 20:17:55 -05:00
psychobunny
ac06567617 admin - add custom class to categories (forgot to commit this) 2014-01-03 20:14:26 -05:00
Baris Soner Usakli
d0a2c077ff refactored posts.create to use waterfall 2014-01-03 19:32:52 -05:00
psychobunny
ebf07626de use categories.class instead of hardcoded columns 2014-01-03 17:22:37 -05:00
psychobunny
9ef8bb4cdc woops, fail at iteration 2014-01-03 17:22:23 -05:00
psychobunny
bc8a53aadd upgrade.js - adding categories.class and categories.link 2014-01-03 17:09:19 -05:00
psychobunny
03c4a1bc73 remove console.log(file) - no more exploding terminals 2014-01-03 15:59:49 -05:00
Julian Lam
d93163896f Merge pull request #701 from aonz1982/install_automated_setup
Install automated setup
2014-01-02 18:47:38 -08:00
Julian Lam
08bdbc0bcc cleanup of PR - fixed some logic bugs and linted 2014-01-02 21:44:13 -05:00
Julian Lam
35d6a99775 Merge branch 'AdminButton' of github.com:genderup/NodeBB into genderup-AdminButton 2014-01-02 21:34:03 -05:00
Julian Lam
cdb0b4b49e Merge branch 'master' into email-revamp 2014-01-02 18:14:07 -05:00
Julian Lam
e45e86fcc1 fixed width icons in ACP. Also, who uses single quotes in HTML? ARGH 2014-01-02 18:13:46 -05:00
Julian Lam
24944762d7 fixing 'back to nodebb' ext, and revamping email confirm logic 2014-01-02 16:26:56 -05:00
Baris Soner Usakli
9589d340b9 removed console.log 2014-01-02 16:00:24 -05:00
Baris Soner Usakli
91afbf106e removed console.log 2014-01-02 16:00:05 -05:00
Baris Soner Usakli
aff11359ae Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-02 15:59:34 -05:00
Baris Soner Usakli
aff8cef5f3 closes #717 2014-01-02 15:59:25 -05:00
Julian Lam
d6e0625fc8 Merge remote-tracking branch 'origin/master' into email-revamp 2014-01-02 15:21:59 -05:00
Julian Lam
879855744d Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-02 15:21:00 -05:00
Julian Lam
b5ab0c9097 updated minvers for markdown and mentions 2014-01-02 15:20:54 -05:00
psychobunny
2c398f81d2 fixed the twitter link to @NodeBB 2014-01-02 15:06:08 -05:00
Baris Soner Usakli
520fcadd3f closes #456 2014-01-02 14:53:27 -05:00
Baris Soner Usakli
e8eb9f91b9 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2014-01-02 14:26:30 -05:00
Baris Soner Usakli
8bfb338eee #712 2014-01-02 14:26:08 -05:00
Julian Lam
bbb655abdd Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-02 02:17:55 -05:00
Julian Lam
095e5527e3 upping markdown minver 2014-01-02 02:17:47 -05:00
Barış Soner Uşaklı
4eb8c34855 Merge pull request #715 from cmastudios/age
Calculate age based on days instead of years
2014-01-01 18:35:47 -08:00
cmastudios
e3185b9560 Calculate age based on days instead of years
Calculating the age based on the year only caused issues in the display of the age because it was off. Example: Person who was born in march of 1999 is displayed as 15 instead of 14 after the turn of the year.
2014-01-01 19:46:11 -05:00
Julian Lam
449adfae59 Merge branch 'master' of github.com:designcreateplay/NodeBB 2014-01-01 15:31:32 -05:00
Julian Lam
714e61b137 upping markdown minver 2014-01-01 15:31:27 -05:00
Baris Soner Usakli
d0e4689907 removed extra event in websocket.js 2014-01-01 14:44:15 -05:00
Baris Soner Usakli
1996e64c9b if imgur client id is not set but local file uploads are enabled use that 2014-01-01 14:38:12 -05:00
Baris Soner Usakli
e2fb617cc0 thread delete restore fix 2014-01-01 14:15:53 -05:00
Baris Soner Usakli
fd88aff195 mongo string fix 2014-01-01 14:11:12 -05:00
Julian Lam
f7a1cca861 properly fixed #713 2013-12-31 20:53:24 -05:00
Julian Lam
e3fb996a80 Merge branch 'master' of github.com:designcreateplay/NodeBB 2013-12-31 20:28:37 -05:00
Julian Lam
fe53037e53 hopefully fixing #713 2013-12-31 20:28:31 -05:00
Baris Soner Usakli
438f90d859 expire functionality in dbal 2013-12-31 19:08:38 -05:00
Julian Lam
339ed4e47b implemented emailer for welcome email (though the email confirmation system is horribly broken) 2013-12-31 18:00:10 -05:00
Julian Lam
5a527de287 fixed debug output when plugin method is not found 2013-12-31 17:19:37 -05:00
Julian Lam
3ff550914f Merge remote-tracking branch 'origin/master' into email-revamp
Conflicts:
	package.json
2013-12-31 17:15:38 -05:00
Baris Soner Usakli
742c8fb43c closes #712 2013-12-31 17:14:27 -05:00
Baris Soner Usakli
d43f3cebc6 closes #707, closes #686 2013-12-31 17:01:51 -05:00
Julian Lam
9d452241ad Merge branch 'master' of github.com:designcreateplay/NodeBB 2013-12-31 14:46:33 -05:00
Julian Lam
c19a51e1b6 tweaking slugify code to not remove numbers 2013-12-31 14:46:28 -05:00
Baris Soner Usakli
1b41a8f467 fixed typo 2013-12-31 14:32:16 -05:00
Baris Soner Usakli
f933fc0167 forgot topics.js oops 2013-12-31 14:27:56 -05:00
Baris Soner Usakli
8cfb239aac closes #705 2013-12-31 14:25:26 -05:00
Baris Soner Usakli
a974c6fa99 possible fix for mongo crash 2013-12-31 13:45:37 -05:00
Julian Lam
998f780fd2 fuck, I am dumb. 2013-12-31 13:11:32 -05:00
Julian Lam
b022d46d47 upgrade script for Topic titless and Usernames - closes #709 2013-12-31 13:04:29 -05:00
Julian Lam
f7793e54b1 adding events.log 2013-12-31 10:49:26 -05:00
Julian Lam
1e61033667 Merge branch 'master' of github.com:designcreateplay/NodeBB 2013-12-31 10:49:05 -05:00
Julian Lam
53caa5e422 full unicode support in slugify method, thanks to XRegExp 2013-12-31 10:48:59 -05:00
Julian Lam
dd72e73284 emailer invocation for new users 2013-12-31 09:33:25 -05:00
Baris Soner Usakli
40d20846d8 moar refactor 2013-12-31 03:36:42 -05:00
Baris Soner Usakli
204913c63d Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2013-12-31 03:14:29 -05:00
Baris Soner Usakli
6c30437c47 closes #706, refactor admin image uploads, fixed gif uploads 2013-12-31 03:14:22 -05:00
Barış Soner Uşaklı
dd7fe47dfd Merge pull request #704 from akhoury/master
guarding against Errors on Socket Disconnect
2013-12-30 16:55:21 -08:00
Aziz Khoury
50323c3d23 guarding against Errors on Socket Disconnect
Saw this 

```
TypeError: Cannot call method 'indexOf' of undefined
    at Socket.<anonymous> (/home/admin/NodeBB/src/websockets.js:108:33)
    at Socket.EventEmitter.emit [as $emit] (events.js:95:17)
    at Socket.onDisconnect (/home/admin/NodeBB/node_modules/socket.io/lib/socket.js:153:10)
    at SocketNamespace.handleDisconnect (/home/admin/NodeBB/node_modules/socket.io/lib/namespace.js:229:46)
```

and this

```
/home/admin/NodeBB/src/websockets.js:113
			if (userSockets[uid].length === 0) {
			                    ^
TypeError: Cannot read property 'length' of undefined
    at Socket.<anonymous> (/home/admin/NodeBB/src/websockets.js:113:24)
```

in my logs, when users are disconnecting
2013-12-30 19:40:57 -05:00
psychobunny
69e0aa338d resolved some todo that's been in there for many months 2013-12-30 17:11:59 -05:00
psychobunny
6dcd06b63c removed unused parameter in templates.prepare 2013-12-30 16:26:30 -05:00
psychobunny
42d77080f3 plugins: filter:server.create_routes - allow plugins to add custom templates and/or modify individual blocks withiin a template 2013-12-30 16:20:05 -05:00
Baris Soner Usakli
fbb4998999 closes #676 2013-12-30 16:09:07 -05:00
Julian Lam
e4e57ce31f initial commit to emailer system overhaul 2013-12-30 14:02:43 -05:00
Julian Lam
14744a854f fixes #703 - topic feeds were not saving (who knows for how long!) 2013-12-30 12:39:13 -05:00
Pongsan Sayampol
2c6afb4244 Add a way to set social network logins 2013-12-30 11:46:33 +07:00
Pongsan Sayampol
24907e456d Fix the issue that the default values are saved to config.json 2013-12-30 11:45:10 +07:00
Baris Soner Usakli
2039885d96 removed console.logs 2013-12-29 23:35:04 -05:00
Baris Soner Usakli
daacdb50f3 closes #645 2013-12-29 23:33:28 -05:00
Baris Soner Usakli
21155b1b80 recent rss link fix 2013-12-29 21:35:03 -05:00
Barış Soner Uşaklı
5d69167a64 updated pictures 2013-12-29 20:55:46 -05:00
psychobunny
5db27a835f fix for minification of plugins static directories 2013-12-29 19:36:18 -05:00
Baris Soner Usakli
c8e423e9cf check if item is valid 2013-12-29 18:25:21 -05:00
Baris Soner Usakli
be3465c5ca display events in admin page events section 2013-12-29 18:10:42 -05:00
Baris Soner Usakli
637e037e27 Merge branch 'master' of https://github.com/designcreateplay/NodeBB 2013-12-29 16:03:32 -05:00
Baris Soner Usakli
3e6bcd83cc fixed typo in user reset 2013-12-29 16:03:25 -05:00
psychobunny
dc4aeca427 also send notification data along with event:new_notification socket call 2013-12-29 15:09:34 -05:00
Baris Soner Usakli
9eb09f14cb updated vanilla ver 2013-12-29 13:57:04 -05:00
Baris Soner Usakli
a55fc364a0 closes #697 2013-12-29 13:47:34 -05:00
Baris Soner Usakli
2f90949560 vanilla color fixes 2013-12-28 14:36:33 -05:00
Baris Soner Usakli
a940219321 remvoed the timeout on the login call 2013-12-28 13:11:49 -05:00
Michael Mitchell
aaf6b11dc9 removed extraneous 2013-12-28 08:34:59 -08:00
Michael Mitchell
0f0913bfe5 add admin button 2013-12-27 14:18:30 -08:00
Michael Mitchell
5569337c40 first 2013-12-27 14:09:27 -08:00
Baris Soner Usakli
ba2f47ead6 closes #690, closes #691 2013-12-27 14:09:22 -05:00
Julian Lam
b52782deb8 removed use of strip_tags and using String library instead 2013-12-26 21:10:26 -05:00
Julian Lam
2c6bf93eb5 added String parsing library, sanitizing meta tag "description" for
topics, and added og:description meta tag -- fixes #688
2013-12-26 20:37:45 -05:00
935 changed files with 46241 additions and 30915 deletions

9
.gitignore vendored
View File

@@ -14,8 +14,15 @@ Vagrantfile
.vagrant
provision.sh
*.komodoproject
.DS_Store
feeds/recent.rss
# winston?
error.log
events.log
pidfile
# templates
/public/templates
/public/sounds

12
.travis.yml Normal file
View File

@@ -0,0 +1,12 @@
services:
- redis-server
before_install:
- npm i --production
- node app --setup="{\"base_url\":\"http://127.0.0.1\",\"port\":4567,\"use_port\":false,\"secret\":\"abcdef\",\"bind_address\":\"0.0.0.0\",\"database\":\"redis\",\"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}"
language: node_js
node_js:
- "0.11"
- "0.10"
branches:
only:
- master

548
.tx/config Normal file
View File

@@ -0,0 +1,548 @@
[main]
host = https://www.transifex.com
[nodebb.category]
file_filter = public/language/<lang>/category.json
source_file = public/language/en_GB/category.json
source_lang = en_GB
trans.ar = public/language/ar/category.json
trans.cs = public/language/cs/category.json
trans.de = public/language/de/category.json
trans.en_US = public/language/en_US/category.json
trans.en@pirate = public/language/en@pirate/category.json
trans.es = public/language/es/category.json
trans.et = public/language/et/category.json
trans.fa_IR = public/language/fa_IR/category.json
trans.fi = public/language/fi/category.json
trans.fr = public/language/fr/category.json
trans.he = public/language/he/category.json
trans.hu = public/language/hu/category.json
trans.it = public/language/it/category.json
trans.ja = public/language/ja/category.json
trans.lt = public/language/lt/category.json
trans.ms = public/language/ms/category.json
trans.nb = public/language/nb/category.json
trans.nl = public/language/nl/category.json
trans.pl = public/language/pl/category.json
trans.pt_BR = public/language/pt_BR/category.json
trans.ru = public/language/ru/category.json
trans.sc = public/language/sc/category.json
trans.sk = public/language/sk/category.json
trans.sv = public/language/sv/category.json
trans.th = public/language/th/category.json
trans.tr = public/language/tr/category.json
trans.vi = public/language/vi/category.json
trans.zh_CN = public/language/zh_CN/category.json
trans.zh_TW = public/language/zh_TW/category.json
type = KEYVALUEJSON
[nodebb.login]
file_filter = public/language/<lang>/login.json
source_file = public/language/en_GB/login.json
source_lang = en_GB
trans.ar = public/language/ar/login.json
trans.cs = public/language/cs/login.json
trans.de = public/language/de/login.json
trans.en_US = public/language/en_US/login.json
trans.en@pirate = public/language/en@pirate/login.json
trans.es = public/language/es/login.json
trans.et = public/language/et/login.json
trans.fa_IR = public/language/fa_IR/login.json
trans.fi = public/language/fi/login.json
trans.fr = public/language/fr/login.json
trans.he = public/language/he/login.json
trans.hu = public/language/hu/login.json
trans.it = public/language/it/login.json
trans.ja = public/language/ja/login.json
trans.lt = public/language/lt/login.json
trans.ms = public/language/ms/login.json
trans.nb = public/language/nb/login.json
trans.nl = public/language/nl/login.json
trans.pl = public/language/pl/login.json
trans.pt_BR = public/language/pt_BR/login.json
trans.ru = public/language/ru/login.json
trans.sc = public/language/sc/login.json
trans.sk = public/language/sk/login.json
trans.sv = public/language/sv/login.json
trans.th = public/language/th/login.json
trans.tr = public/language/tr/login.json
trans.vi = public/language/vi/login.json
trans.zh_CN = public/language/zh_CN/login.json
trans.zh_TW = public/language/zh_TW/login.json
type = KEYVALUEJSON
[nodebb.recent]
source_file = public/language/en_GB/recent.json
source_lang = en_GB
trans.ar = public/language/ar/recent.json
trans.cs = public/language/cs/recent.json
trans.de = public/language/de/recent.json
trans.en_US = public/language/en_US/recent.json
trans.en@pirate = public/language/en@pirate/recent.json
trans.es = public/language/es/recent.json
trans.et = public/language/et/recent.json
trans.fa_IR = public/language/fa_IR/recent.json
trans.fi = public/language/fi/recent.json
trans.fr = public/language/fr/recent.json
trans.he = public/language/he/recent.json
trans.hu = public/language/hu/recent.json
trans.it = public/language/it/recent.json
trans.ja = public/language/ja/recent.json
trans.lt = public/language/lt/recent.json
trans.ms = public/language/ms/recent.json
trans.nb = public/language/nb/recent.json
trans.nl = public/language/nl/recent.json
trans.pl = public/language/pl/recent.json
trans.pt_BR = public/language/pt_BR/recent.json
trans.ru = public/language/ru/recent.json
trans.sc = public/language/sc/recent.json
trans.sk = public/language/sk/recent.json
trans.sv = public/language/sv/recent.json
trans.th = public/language/th/recent.json
trans.tr = public/language/tr/recent.json
trans.vi = public/language/vi/recent.json
trans.zh_CN = public/language/zh_CN/recent.json
trans.zh_TW = public/language/zh_TW/recent.json
type = KEYVALUEJSON
[nodebb.unread]
source_file = public/language/en_GB/unread.json
source_lang = en_GB
trans.ar = public/language/ar/unread.json
trans.cs = public/language/cs/unread.json
trans.de = public/language/de/unread.json
trans.en_US = public/language/en_US/unread.json
trans.en@pirate = public/language/en@pirate/unread.json
trans.es = public/language/es/unread.json
trans.et = public/language/et/unread.json
trans.fa_IR = public/language/fa_IR/unread.json
trans.fi = public/language/fi/unread.json
trans.fr = public/language/fr/unread.json
trans.he = public/language/he/unread.json
trans.hu = public/language/hu/unread.json
trans.it = public/language/it/unread.json
trans.ja = public/language/ja/unread.json
trans.lt = public/language/lt/unread.json
trans.ms = public/language/ms/unread.json
trans.nb = public/language/nb/unread.json
trans.nl = public/language/nl/unread.json
trans.pl = public/language/pl/unread.json
trans.pt_BR = public/language/pt_BR/unread.json
trans.ru = public/language/ru/unread.json
trans.sc = public/language/sc/unread.json
trans.sk = public/language/sk/unread.json
trans.sv = public/language/sv/unread.json
trans.th = public/language/th/unread.json
trans.tr = public/language/tr/unread.json
trans.vi = public/language/vi/unread.json
trans.zh_CN = public/language/zh_CN/unread.json
trans.zh_TW = public/language/zh_TW/unread.json
type = KEYVALUEJSON
[nodebb.modules]
source_file = public/language/en_GB/modules.json
source_lang = en_GB
trans.ar = public/language/ar/modules.json
trans.cs = public/language/cs/modules.json
trans.de = public/language/de/modules.json
trans.en_US = public/language/en_US/modules.json
trans.en@pirate = public/language/en@pirate/modules.json
trans.es = public/language/es/modules.json
trans.et = public/language/et/modules.json
trans.fa_IR = public/language/fa_IR/modules.json
trans.fi = public/language/fi/modules.json
trans.fr = public/language/fr/modules.json
trans.he = public/language/he/modules.json
trans.hu = public/language/hu/modules.json
trans.it = public/language/it/modules.json
trans.ja = public/language/ja/modules.json
trans.lt = public/language/lt/modules.json
trans.ms = public/language/ms/modules.json
trans.nb = public/language/nb/modules.json
trans.nl = public/language/nl/modules.json
trans.pl = public/language/pl/modules.json
trans.pt_BR = public/language/pt_BR/modules.json
trans.ru = public/language/ru/modules.json
trans.sc = public/language/sc/modules.json
trans.sk = public/language/sk/modules.json
trans.sv = public/language/sv/modules.json
trans.th = public/language/th/modules.json
trans.tr = public/language/tr/modules.json
trans.vi = public/language/vi/modules.json
trans.zh_CN = public/language/zh_CN/modules.json
trans.zh_TW = public/language/zh_TW/modules.json
type = KEYVALUEJSON
[nodebb.register]
source_file = public/language/en_GB/register.json
source_lang = en_GB
trans.ar = public/language/ar/register.json
trans.cs = public/language/cs/register.json
trans.de = public/language/de/register.json
trans.en_US = public/language/en_US/register.json
trans.en@pirate = public/language/en@pirate/register.json
trans.es = public/language/es/register.json
trans.et = public/language/et/register.json
trans.fa_IR = public/language/fa_IR/register.json
trans.fi = public/language/fi/register.json
trans.fr = public/language/fr/register.json
trans.he = public/language/he/register.json
trans.hu = public/language/hu/register.json
trans.it = public/language/it/register.json
trans.ja = public/language/ja/register.json
trans.lt = public/language/lt/register.json
trans.ms = public/language/ms/register.json
trans.nb = public/language/nb/register.json
trans.nl = public/language/nl/register.json
trans.pl = public/language/pl/register.json
trans.pt_BR = public/language/pt_BR/register.json
trans.ru = public/language/ru/register.json
trans.sc = public/language/sc/register.json
trans.sk = public/language/sk/register.json
trans.sv = public/language/sv/register.json
trans.th = public/language/th/register.json
trans.tr = public/language/tr/register.json
trans.vi = public/language/vi/register.json
trans.zh_CN = public/language/zh_CN/register.json
trans.zh_TW = public/language/zh_TW/register.json
type = KEYVALUEJSON
[nodebb.user]
source_file = public/language/en_GB/user.json
source_lang = en_GB
trans.ar = public/language/ar/user.json
trans.cs = public/language/cs/user.json
trans.de = public/language/de/user.json
trans.en_US = public/language/en_US/user.json
trans.en@pirate = public/language/en@pirate/user.json
trans.es = public/language/es/user.json
trans.et = public/language/et/user.json
trans.fa_IR = public/language/fa_IR/user.json
trans.fi = public/language/fi/user.json
trans.fr = public/language/fr/user.json
trans.he = public/language/he/user.json
trans.hu = public/language/hu/user.json
trans.it = public/language/it/user.json
trans.ja = public/language/ja/user.json
trans.lt = public/language/lt/user.json
trans.ms = public/language/ms/user.json
trans.nb = public/language/nb/user.json
trans.nl = public/language/nl/user.json
trans.pl = public/language/pl/user.json
trans.pt_BR = public/language/pt_BR/user.json
trans.ru = public/language/ru/user.json
trans.sc = public/language/sc/user.json
trans.sk = public/language/sk/user.json
trans.sv = public/language/sv/user.json
trans.th = public/language/th/user.json
trans.tr = public/language/tr/user.json
trans.vi = public/language/vi/user.json
trans.zh_CN = public/language/zh_CN/user.json
trans.zh_TW = public/language/zh_TW/user.json
type = KEYVALUEJSON
[nodebb.global]
source_file = public/language/en_GB/global.json
source_lang = en_GB
trans.ar = public/language/ar/global.json
trans.cs = public/language/cs/global.json
trans.de = public/language/de/global.json
trans.en_US = public/language/en_US/global.json
trans.en@pirate = public/language/en@pirate/global.json
trans.es = public/language/es/global.json
trans.et = public/language/et/global.json
trans.fa_IR = public/language/fa_IR/global.json
trans.fi = public/language/fi/global.json
trans.fr = public/language/fr/global.json
trans.he = public/language/he/global.json
trans.hu = public/language/hu/global.json
trans.it = public/language/it/global.json
trans.ja = public/language/ja/global.json
trans.lt = public/language/lt/global.json
trans.ms = public/language/ms/global.json
trans.nb = public/language/nb/global.json
trans.nl = public/language/nl/global.json
trans.pl = public/language/pl/global.json
trans.pt_BR = public/language/pt_BR/global.json
trans.ru = public/language/ru/global.json
trans.sc = public/language/sc/global.json
trans.sk = public/language/sk/global.json
trans.sv = public/language/sv/global.json
trans.th = public/language/th/global.json
trans.tr = public/language/tr/global.json
trans.vi = public/language/vi/global.json
trans.zh_CN = public/language/zh_CN/global.json
trans.zh_TW = public/language/zh_TW/global.json
type = KEYVALUEJSON
[nodebb.notifications]
source_file = public/language/en_GB/notifications.json
source_lang = en_GB
trans.ar = public/language/ar/notifications.json
trans.cs = public/language/cs/notifications.json
trans.de = public/language/de/notifications.json
trans.en_US = public/language/en_US/notifications.json
trans.en@pirate = public/language/en@pirate/notifications.json
trans.es = public/language/es/notifications.json
trans.et = public/language/et/notifications.json
trans.fa_IR = public/language/fa_IR/notifications.json
trans.fi = public/language/fi/notifications.json
trans.fr = public/language/fr/notifications.json
trans.he = public/language/he/notifications.json
trans.hu = public/language/hu/notifications.json
trans.it = public/language/it/notifications.json
trans.ja = public/language/ja/notifications.json
trans.lt = public/language/lt/notifications.json
trans.ms = public/language/ms/notifications.json
trans.nb = public/language/nb/notifications.json
trans.nl = public/language/nl/notifications.json
trans.pl = public/language/pl/notifications.json
trans.pt_BR = public/language/pt_BR/notifications.json
trans.ru = public/language/ru/notifications.json
trans.sc = public/language/sc/notifications.json
trans.sk = public/language/sk/notifications.json
trans.sv = public/language/sv/notifications.json
trans.th = public/language/th/notifications.json
trans.tr = public/language/tr/notifications.json
trans.vi = public/language/vi/notifications.json
trans.zh_CN = public/language/zh_CN/notifications.json
trans.zh_TW = public/language/zh_TW/notifications.json
type = KEYVALUEJSON
[nodebb.reset_password]
source_file = public/language/en_GB/reset_password.json
source_lang = en_GB
trans.ar = public/language/ar/reset_password.json
trans.cs = public/language/cs/reset_password.json
trans.de = public/language/de/reset_password.json
trans.en_US = public/language/en_US/reset_password.json
trans.en@pirate = public/language/en@pirate/reset_password.json
trans.es = public/language/es/reset_password.json
trans.et = public/language/et/reset_password.json
trans.fa_IR = public/language/fa_IR/reset_password.json
trans.fi = public/language/fi/reset_password.json
trans.fr = public/language/fr/reset_password.json
trans.he = public/language/he/reset_password.json
trans.hu = public/language/hu/reset_password.json
trans.it = public/language/it/reset_password.json
trans.ja = public/language/ja/reset_password.json
trans.lt = public/language/lt/reset_password.json
trans.ms = public/language/ms/reset_password.json
trans.nb = public/language/nb/reset_password.json
trans.nl = public/language/nl/reset_password.json
trans.pl = public/language/pl/reset_password.json
trans.pt_BR = public/language/pt_BR/reset_password.json
trans.ru = public/language/ru/reset_password.json
trans.sc = public/language/sc/reset_password.json
trans.sk = public/language/sk/reset_password.json
trans.sv = public/language/sv/reset_password.json
trans.th = public/language/th/reset_password.json
trans.tr = public/language/tr/reset_password.json
trans.vi = public/language/vi/reset_password.json
trans.zh_CN = public/language/zh_CN/reset_password.json
trans.zh_TW = public/language/zh_TW/reset_password.json
type = KEYVALUEJSON
[nodebb.users]
source_file = public/language/en_GB/users.json
source_lang = en_GB
trans.ar = public/language/ar/users.json
trans.cs = public/language/cs/users.json
trans.de = public/language/de/users.json
trans.en_US = public/language/en_US/users.json
trans.en@pirate = public/language/en@pirate/users.json
trans.es = public/language/es/users.json
trans.et = public/language/et/users.json
trans.fa_IR = public/language/fa_IR/users.json
trans.fi = public/language/fi/users.json
trans.fr = public/language/fr/users.json
trans.he = public/language/he/users.json
trans.hu = public/language/hu/users.json
trans.it = public/language/it/users.json
trans.ja = public/language/ja/users.json
trans.lt = public/language/lt/users.json
trans.ms = public/language/ms/users.json
trans.nb = public/language/nb/users.json
trans.nl = public/language/nl/users.json
trans.pl = public/language/pl/users.json
trans.pt_BR = public/language/pt_BR/users.json
trans.ru = public/language/ru/users.json
trans.sc = public/language/sc/users.json
trans.sk = public/language/sk/users.json
trans.sv = public/language/sv/users.json
trans.th = public/language/th/users.json
trans.tr = public/language/tr/users.json
trans.vi = public/language/vi/users.json
trans.zh_CN = public/language/zh_CN/users.json
trans.zh_TW = public/language/zh_TW/users.json
type = KEYVALUEJSON
[nodebb.language]
source_file = public/language/en_GB/language.json
source_lang = en_GB
trans.ar = public/language/ar/language.json
trans.cs = public/language/cs/language.json
trans.de = public/language/de/language.json
trans.en_US = public/language/en_US/language.json
trans.en@pirate = public/language/en@pirate/language.json
trans.es = public/language/es/language.json
trans.et = public/language/et/language.json
trans.fa_IR = public/language/fa_IR/language.json
trans.fi = public/language/fi/language.json
trans.fr = public/language/fr/language.json
trans.he = public/language/he/language.json
trans.hu = public/language/hu/language.json
trans.it = public/language/it/language.json
trans.ja = public/language/ja/language.json
trans.lt = public/language/lt/language.json
trans.ms = public/language/ms/language.json
trans.nb = public/language/nb/language.json
trans.nl = public/language/nl/language.json
trans.pl = public/language/pl/language.json
trans.pt_BR = public/language/pt_BR/language.json
trans.ru = public/language/ru/language.json
trans.sc = public/language/sc/language.json
trans.sk = public/language/sk/language.json
trans.sv = public/language/sv/language.json
trans.th = public/language/th/language.json
trans.tr = public/language/tr/language.json
trans.vi = public/language/vi/language.json
trans.zh_CN = public/language/zh_CN/language.json
trans.zh_TW = public/language/zh_TW/language.json
type = KEYVALUEJSON
[nodebb.pages]
source_file = public/language/en_GB/pages.json
source_lang = en_GB
trans.ar = public/language/ar/pages.json
trans.cs = public/language/cs/pages.json
trans.de = public/language/de/pages.json
trans.en_US = public/language/en_US/pages.json
trans.en@pirate = public/language/en@pirate/pages.json
trans.es = public/language/es/pages.json
trans.et = public/language/et/pages.json
trans.fa_IR = public/language/fa_IR/pages.json
trans.fi = public/language/fi/pages.json
trans.fr = public/language/fr/pages.json
trans.he = public/language/he/pages.json
trans.hu = public/language/hu/pages.json
trans.it = public/language/it/pages.json
trans.ja = public/language/ja/pages.json
trans.lt = public/language/lt/pages.json
trans.ms = public/language/ms/pages.json
trans.nb = public/language/nb/pages.json
trans.nl = public/language/nl/pages.json
trans.pl = public/language/pl/pages.json
trans.pt_BR = public/language/pt_BR/pages.json
trans.ru = public/language/ru/pages.json
trans.sc = public/language/sc/pages.json
trans.sk = public/language/sk/pages.json
trans.sv = public/language/sv/pages.json
trans.th = public/language/th/pages.json
trans.tr = public/language/tr/pages.json
trans.vi = public/language/vi/pages.json
trans.zh_CN = public/language/zh_CN/pages.json
trans.zh_TW = public/language/zh_TW/pages.json
type = KEYVALUEJSON
[nodebb.topic]
source_file = public/language/en_GB/topic.json
source_lang = en_GB
trans.ar = public/language/ar/topic.json
trans.cs = public/language/cs/topic.json
trans.de = public/language/de/topic.json
trans.en_US = public/language/en_US/topic.json
trans.en@pirate = public/language/en@pirate/topic.json
trans.es = public/language/es/topic.json
trans.et = public/language/et/topic.json
trans.fa_IR = public/language/fa_IR/topic.json
trans.fi = public/language/fi/topic.json
trans.fr = public/language/fr/topic.json
trans.he = public/language/he/topic.json
trans.hu = public/language/hu/topic.json
trans.it = public/language/it/topic.json
trans.ja = public/language/ja/topic.json
trans.lt = public/language/lt/topic.json
trans.ms = public/language/ms/topic.json
trans.nb = public/language/nb/topic.json
trans.nl = public/language/nl/topic.json
trans.pl = public/language/pl/topic.json
trans.pt_BR = public/language/pt_BR/topic.json
trans.ru = public/language/ru/topic.json
trans.sc = public/language/sc/topic.json
trans.sk = public/language/sk/topic.json
trans.sv = public/language/sv/topic.json
trans.th = public/language/th/topic.json
trans.tr = public/language/tr/topic.json
trans.vi = public/language/vi/topic.json
trans.zh_CN = public/language/zh_CN/topic.json
trans.zh_TW = public/language/zh_TW/topic.json
type = KEYVALUEJSON
[nodebb.success]
source_file = public/language/en_GB/success.json
source_lang = en_GB
trans.ar = public/language/ar/success.json
trans.cs = public/language/cs/success.json
trans.de = public/language/de/success.json
trans.en_US = public/language/en_US/success.json
trans.en@pirate = public/language/en@pirate/success.json
trans.es = public/language/es/success.json
trans.et = public/language/et/success.json
trans.fa_IR = public/language/fa_IR/success.json
trans.fi = public/language/fi/success.json
trans.fr = public/language/fr/success.json
trans.he = public/language/he/success.json
trans.hu = public/language/hu/success.json
trans.it = public/language/it/success.json
trans.ja = public/language/ja/success.json
trans.lt = public/language/lt/success.json
trans.ms = public/language/ms/success.json
trans.nb = public/language/nb/success.json
trans.nl = public/language/nl/success.json
trans.pl = public/language/pl/success.json
trans.pt_BR = public/language/pt_BR/success.json
trans.ru = public/language/ru/success.json
trans.sc = public/language/sc/success.json
trans.sk = public/language/sk/success.json
trans.sv = public/language/sv/success.json
trans.th = public/language/th/success.json
trans.tr = public/language/tr/success.json
trans.vi = public/language/vi/success.json
trans.zh_CN = public/language/zh_CN/success.json
trans.zh_TW = public/language/zh_TW/success.json
type = KEYVALUEJSON
[nodebb.error]
source_file = public/language/en_GB/error.json
source_lang = en_GB
trans.ar = public/language/ar/error.json
trans.cs = public/language/cs/error.json
trans.de = public/language/de/error.json
trans.en_US = public/language/en_US/error.json
trans.en@pirate = public/language/en@pirate/error.json
trans.es = public/language/es/error.json
trans.et = public/language/et/error.json
trans.fa_IR = public/language/fa_IR/error.json
trans.fi = public/language/fi/error.json
trans.fr = public/language/fr/error.json
trans.he = public/language/he/error.json
trans.hu = public/language/hu/error.json
trans.it = public/language/it/error.json
trans.ja = public/language/ja/error.json
trans.lt = public/language/lt/error.json
trans.ms = public/language/ms/error.json
trans.nb = public/language/nb/error.json
trans.nl = public/language/nl/error.json
trans.pl = public/language/pl/error.json
trans.pt_BR = public/language/pt_BR/error.json
trans.ru = public/language/ru/error.json
trans.sc = public/language/sc/error.json
trans.sk = public/language/sk/error.json
trans.sv = public/language/sv/error.json
trans.th = public/language/th/error.json
trans.tr = public/language/tr/error.json
trans.vi = public/language/vi/error.json
trans.zh_CN = public/language/zh_CN/error.json
trans.zh_TW = public/language/zh_TW/error.json
type = KEYVALUEJSON

15
NOTES.md Normal file
View File

@@ -0,0 +1,15 @@
## 0.4x Refactor Notes
Please remove this file after 0.4x (or perhaps organize it so that we can see the history of breaking changes)
### Immediate Deprecation Notices
* `action:ajaxifying` is no longer triggered on body but on window instead, in line with other similar hooks.
* `filter:server.create_routes` and `filter:admin.create_routes` will have limited support (ajaxify works, but first-load will not). Please have a look at [this plugin](https://github.com/psychobunny/nodebb-plugin-kitchen-sink/blob/master/library.js#L16-L22) for an example on how to create routes in plugins from now on.
### Upcoming Deprecation Warnings
* `filter:footer.build` will be deprecated for 0.4x in favour of the widget system (WIP)
* templates.setGlobal (server-side only) deprecated in favour of using res.locals
* `plugins/fireHook` route will be deprecated for 0.4x
* synchronous hooks will be deprecated for 0.4x - we're reducing complexity by removing the `callbacked: true` property in `plugin.json` - just use callbacks.

View File

@@ -1,69 +1,58 @@
# NodeBB
**NodeBB** is a robust Node.js driven forum built on a redis database. It is powered by web sockets, and is compatible down to IE8.
# <img alt="NodeBB" src="http://i.imgur.com/3yj1n6N.png" />
[![Build Status](https://travis-ci.org/designcreateplay/NodeBB.svg?branch=master)](https://travis-ci.org/designcreateplay/NodeBB)
[![Dependency Status](https://david-dm.org/designcreateplay/nodebb.png)](https://david-dm.org/designcreateplay/nodebb)
[![Code Climate](https://codeclimate.com/github/designcreateplay/NodeBB.png)](https://codeclimate.com/github/designcreateplay/NodeBB)
* [NodeBB Homepage](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://try.nodebb.org)
* [Wiki Guides](https://github.com/designcreateplay/NodeBB/wiki) - includes setup for other platforms
**NodeBB Forum Software** is powered by Node.js and built on a Redis database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.
* [Get NodeBB](http://www.nodebb.org/ "NodeBB")
* [Demo & Meta Discussion](http://community.nodebb.org)
* [NodeBB Blog](http://blog.nodebb.org)
* [Documentation](http://docs.nodebb.org) - includes setup instructions for other platforms
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/nodebb) - #nodebb on Freenode
* [Follow on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter")
* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook")
* [Get Plugins](http://community.nodebb.org/category/7/nodebb-plugins "NodeBB Plugins")
* [Get Themes](http://community.nodebb.org/category/10/nodebb-themes "NodeBB Themes")
* [Help translate NodeBB](https://www.transifex.com/projects/p/nodebb/)
![NodeBB Main Category Listing](http://i.imgur.com/zffCFoh.png)
## Screenshots
[<img src="http://i.imgur.com/FLOUuIqb.png" />](http://i.imgur.com/FLOUuIq.png)&nbsp;[<img src="http://i.imgur.com/Ud1LrfIb.png" />](http://i.imgur.com/Ud1LrfI.png)&nbsp;[<img src="http://i.imgur.com/ZC8W39ab.png" />](http://i.imgur.com/ZC8W39a.png)&nbsp;[<img src="http://i.imgur.com/o90kVPib.png" />](http://i.imgur.com/o90kVPi.png)&nbsp;[<img src="http://i.imgur.com/AaRRrU2b.png" />](http://i.imgur.com/AaRRrU2.png)&nbsp;[<img src="http://i.imgur.com/LmHtPhob.png" />](http://i.imgur.com/LmHtPho.png)&nbsp;[<img src="http://i.imgur.com/paiJPJkb.jpg" />](http://i.imgur.com/paiJPJk.jpg)&nbsp;[<img src="http://i.imgur.com/ZfavPHDb.png" />](http://i.imgur.com/ZfavPHD.png)&nbsp;[<img src="http://i.imgur.com/8vc1Ytc.png" />](http://i.imgur.com/8vc1Ytc.png)
Credit: [Convoe](http://www.convoe.com), [Kano](http://www.kano.me), [Manchester United Forum](http://manutdforums.com/).
![NodeBB Topic Page](http://i.imgur.com/JihdcUa.png)
## How can I follow along/contribute?
* Our feature roadmap is hosted on the project wiki's [Version History / Roadmap](https://github.com/designcreateplay/NodeBB/wiki/Version-History-%26-Roadmap)
* If you are a developer, feel free to check out the source and submit pull requests.
* If you are a designer, NodeBB needs themes! NodeBB will accept any LESS or CSS file and use it in place of the default Twitter Bootstrap theme. Consider extending Bootstrap themes by extending the base bootstrap LESS file.
* 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.
* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development.
## Requirements
NodeBB requires the following software to be installed:
* A version of Node.js at least 0.8 or greater
* Redis, version 2.6 or greater or MongoDB, version 2.4 or greater
* A version of Node.js at least 0.10 or greater
* Redis, version 2.6 or greater **or** MongoDB, version 2.4 or greater
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
## Installation
First, we install our base software stack:
[Please refer to platform-specific installation documentation](http://docs.nodebb.org/en/latest/installing/os.html)
# apt-get install git nodejs redis-server npm build-essential imagemagick
## Securing NodeBB
If you want to use MongoDB instead of Redis install it from http://www.mongodb.org/downloads and remove 'redis-server' from the above command. [MongoDB-Setup](https://github.com/designcreateplay/NodeBB/wiki/MongoDB-Setup)
It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:
**If your package manager only installed a version of Node.js that is less than 0.8 (e.g. Ubuntu 12.10, 13.04):**
# add-apt-repository ppa:chris-lea/node.js
# apt-get update && apt-get dist-upgrade
Next, clone this repository:
$ cd /path/to/nodebb/install/location
$ git clone git://github.com/designcreateplay/NodeBB.git nodebb
Obtain all of the dependencies required by NodeBB:
$ cd nodebb
$ npm install
Initiate the setup script by running the app with the `--setup` flag:
$ node app --setup
The default settings are for a local server running on the default port, with a redis store on the same machine/port.
Lastly, we run the forum.
$ node app
NodeBB can also be started with helper programs, such as `supervisor` and `forever`. [Take a look at the options here](https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB).
*(Optional)* Some server configurations may install the node binary as `nodejs` instead of `node`. You can re-map it (so as to not break compatibility with `node-supervisor`) by running the following command:
# update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions:
* Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only
* Use `requirepass` to secure Redis behind a password (preferably a long one)
* Familiarise yourself with [Redis Security](http://redis.io/topics/security)
2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`.
* e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)
## Upgrading NodeBB

382
app.js
View File

@@ -16,170 +16,302 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
(function () {
"use strict";
// Configuration setup
var nconf = require('nconf');
nconf.argv().env();
"use strict";
/*global require, global, process*/
var fs = require('fs'),
async = require('async'),
semver = require('semver'),
winston = require('winston'),
pkg = require('./package.json'),
path = require('path'),
meta;
var nconf = require('nconf');
nconf.argv().env();
// Runtime environment
global.env = process.env.NODE_ENV || 'production';
var fs = require('fs'),
os = require('os'),
semver = require('semver'),
winston = require('winston'),
path = require('path'),
pkg = require('./package.json'),
utils = require('./public/src/utils.js');
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
colorize: true
});
winston.add(winston.transports.File, {
filename: 'error.log',
level: 'error'
});
global.env = process.env.NODE_ENV || 'production';
// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed
winston.err = function (err) {
winston.error(err.stack);
};
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
colorize: true
});
winston.add(winston.transports.File, {
filename: 'logs/error.log',
level: 'error'
});
// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed
winston.err = function (err) {
winston.error(err.stack);
};
if(os.platform() === 'linux') {
require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) {
if(err || !stdout) {
winston.warn('Couldn\'t find convert. Did you install imagemagick?');
}
});
}
// Log GNU copyright info along with server info
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013 DesignCreatePlay 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('');
// Log GNU copyright info along with server info
winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 DesignCreatePlay Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');
// Alternate configuration file support
var configFile = __dirname + '/config.json',
configExists;
if (nconf.get('config')) {
configFile = path.resolve(__dirname, nconf.get('config'));
}
configExists = fs.existsSync(configFile);
if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && fs.existsSync(__dirname + '/config.json')) {
// Load server-side configs
nconf.file({
file: __dirname + '/config.json'
});
meta = require('./src/meta');
if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && !nconf.get('reset') && configExists) {
start();
} else if (nconf.get('setup') || nconf.get('install') || !configExists) {
setup();
} else if (nconf.get('upgrade')) {
upgrade();
} else if (nconf.get('reset')) {
reset();
} else {
displayHelp();
}
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path') + '/');
nconf.set('upload_url', nconf.get('url') + 'uploads/');
nconf.set('base_dir', __dirname);
function loadConfig() {
nconf.file({
file: configFile
});
winston.info('Initializing NodeBB v' + pkg.version + ', on port ' + nconf.get('port') + ', using Redis store at ' + nconf.get('redis:host') + ':' + nconf.get('redis:port') + '.');
winston.info('NodeBB instance bound to: ' + ((nconf.get('bind_address') === "0.0.0.0" || !nconf.get('bind_address')) ? 'Any address (0.0.0.0)' : nconf.get('bind_address')));
nconf.defaults({
base_dir: __dirname,
themes_path: path.join(__dirname, 'node_modules'),
upload_url: '/uploads/',
views_dir: path.join(__dirname, 'public/templates')
});
if (process.env.NODE_ENV === 'development') {
winston.info('Base Configuration OK.');
}
// Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
}
if (semver.gt(pkg.dependencies['nodebb-theme-cerulean'], require('./node_modules/nodebb-theme-cerulean/package.json').version)) {
winston.error('nodebb-theme-cerulean is out of date - please run npm install.')
}
function start() {
loadConfig();
require('./src/database').init(function(err) {
meta.configs.init(function () {
winston.info('Time: ' + new Date());
winston.info('Initializing NodeBB v' + pkg.version);
winston.info('* using configuration stored in: ' + configFile);
var host = nconf.get(nconf.get('database') + ':host'),
storeLocation = host ? 'at ' + host + (host.indexOf('/') === -1 ? ':' + nconf.get(nconf.get('database') + ':port') : '') : '';
var templates = require('./public/src/templates'),
translator = require('./public/src/translator'),
webserver = require('./src/webserver'),
SocketIO = require('socket.io').listen(global.server, { log: false, transports: ['websocket', 'xhr-polling', 'jsonp-polling', 'flashsocket'], 'browser client minification': true}),
websockets = require('./src/websockets'),
plugins = require('./src/plugins'),
notifications = require('./src/notifications'),
upgrade = require('./src/upgrade');
winston.info('* using ' + nconf.get('database') +' store ' + storeLocation);
winston.info('* using themes stored in: ' + nconf.get('themes_path'));
upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) {
websockets.init(SocketIO);
if (process.env.NODE_ENV === 'development') {
winston.info('Base Configuration OK.');
}
plugins.init();
global.templates = {};
global.translator = translator;
var meta = require('./src/meta');
translator.loadServer();
require('./src/database').init(function(err) {
meta.configs.init(function () {
var templates = require('./public/src/templates'),
webserver = require('./src/webserver'),
sockets = require('./src/socket.io'),
plugins = require('./src/plugins'),
upgrade = require('./src/upgrade')
meta = require('./src/meta');
var customTemplates = meta.config['theme:templates'] ? path.join(__dirname, 'node_modules', meta.config['theme:id'], meta.config['theme:templates']) : false;
templates.setGlobal('relative_path', nconf.get('relative_path'));
// todo: replace below with read directory code, derp.
templates.init([
'header', 'footer', 'logout', 'outgoing', 'admin/header', 'admin/footer', 'admin/index',
'emails/reset', 'emails/reset_plaintext', 'emails/email_confirm', 'emails/email_confirm_plaintext',
'emails/header', 'emails/footer',
upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) {
sockets.init(webserver.server);
plugins.init();
'noscript/header', 'noscript/home', 'noscript/category', 'noscript/topic'
], customTemplates);
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
plugins.ready(function() {
webserver.init();
});
plugins.ready(function() {
templates.ready(webserver.init);
});
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);
process.on('SIGHUP', restart);
process.on('uncaughtException', function(err) {
winston.error(err.message);
console.log(err.stack);
notifications.init();
} else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' node app --upgrade');
winston.warn('To ignore this error (not recommended):');
winston.warn(' node app --no-check-schema')
process.exit();
}
});
meta.js.killMinifier();
shutdown(1);
})
} else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' node app --upgrade');
winston.warn('To ignore this error (not recommended):');
winston.warn(' node app --no-check-schema');
process.exit();
}
});
});
} else if (nconf.get('setup') || nconf.get('install') || !fs.existsSync(__dirname + '/config.json')) {
// New install, ask setup questions
if (nconf.get('setup')) {
winston.info('NodeBB Setup Triggered via Command Line');
});
}
function setup() {
loadConfig();
if (nconf.get('setup')) {
winston.info('NodeBB Setup Triggered via Command Line');
} else {
winston.warn('Configuration not found, starting NodeBB setup');
}
var install = require('./src/install');
winston.info('Welcome to NodeBB!');
winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
winston.info('Press enter to accept the default setting (shown in brackets).');
install.setup(function (err) {
if (err) {
winston.error('There was a problem completing NodeBB setup: ', err.message);
} else {
winston.warn('Configuration not found, starting NodeBB setup');
winston.info('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.');
}
nconf.file({
file: __dirname + '/config.json'
process.exit();
});
}
function upgrade() {
loadConfig();
var meta = require('./src/meta');
require('./src/database').init(function(err) {
meta.configs.init(function () {
require('./src/upgrade').upgrade();
});
});
}
var install = require('./src/install');
winston.info('Welcome to NodeBB!');
winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
winston.info('Press enter to accept the default setting (shown in brackets).');
install.setup(function (err) {
if (err) {
winston.error('There was a problem completing NodeBB setup: ', err.message);
} else {
winston.info('NodeBB Setup Completed. Run \'node app\' to manually start your NodeBB server.');
}
function reset() {
loadConfig();
require('./src/database').init(function(err) {
if (err) {
winston.error(err.message);
process.exit();
});
}
} else if (nconf.get('upgrade')) {
nconf.file({
file: __dirname + '/config.json'
});
require('./src/database').init(function(err) {
meta = require('./src/meta.js');
meta.configs.init(function () {
require('./src/upgrade').upgrade();
if (nconf.get('themes')) {
resetThemes();
} else if (nconf.get('plugins')) {
resetPlugins();
} else if (nconf.get('widgets')) {
resetWidgets();
} else if (nconf.get('settings')) {
resetSettings();
} else if (nconf.get('all')) {
require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
if (!err) {
winston.info('[reset] Reset complete.');
} else {
winston.error('[reset] Errors were encountered while resetting your forum settings: ' + err.message);
}
process.exit();
});
} else {
console.log('no match');
}
});
}
function resetSettings(callback) {
var meta = require('./src/meta');
meta.configs.set('allowLocalLogin', 1, function(err) {
winston.info('[reset] Settings reset to default');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetThemes(callback) {
var meta = require('./src/meta');
meta.themes.set({
type: 'local',
id: 'nodebb-theme-vanilla'
}, function(err) {
winston.info('[reset] Theme reset to Vanilla');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetPlugins(callback) {
var db = require('./src/database');
db.delete('plugins:active', function(err) {
winston.info('[reset] All Plugins De-activated');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function resetWidgets(callback) {
require('./src/widgets').reset(function(err) {
winston.info('[reset] All Widgets moved to Draft Zone');
if (typeof callback === 'function') {
callback(err);
} else {
process.exit();
}
});
}
function shutdown(code) {
winston.info('[app] Shutdown (SIGTERM/SIGINT) Initialised.');
require('./src/database').close();
winston.info('[app] Database connection closed.');
winston.info('[app] Shutdown complete.');
process.exit(code || 0);
}
function restart() {
if (process.send) {
winston.info('[app] Restarting...');
process.send({
action: 'restart'
});
} else/* if (nconf.get('help') */{
winston.info('Usage: node app [options] [arguments]');
winston.info(' [NODE_ENV=development | NODE_ENV=production] node app [--start] [arguments]');
winston.info('');
winston.info('Options:');
winston.info(' --help displays this usage information');
winston.info(' --setup configure your environment and setup NodeBB');
winston.info(' --upgrade upgrade NodeBB, first read: github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB');
winston.info(' --start manually start NodeBB (default when no options are given)');
};
}());
} else {
winston.error('[app] Could not restart server. Shutting down.');
shutdown(1);
}
}
function displayHelp() {
winston.info('Usage: node app [options] [arguments]');
winston.info(' [NODE_ENV=development | NODE_ENV=production] node app [--start] [arguments]');
winston.info('');
winston.info('Options:');
winston.info(' --help displays this usage information');
winston.info(' --setup configure your environment and setup NodeBB');
winston.info(' --upgrade upgrade NodeBB, first read: github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB');
winston.info(' --reset soft resets NodeBB; disables all plugins and restores selected theme to Vanilla');
winston.info(' --start manually start NodeBB (default when no options are given)');
}

4
docs/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
*.sublime-build*
_build
_static
_templates

177
docs/Makefile Normal file
View File

@@ -0,0 +1,177 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/NodeBB.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/NodeBB.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/NodeBB"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/NodeBB"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

View File

@@ -0,0 +1,17 @@
"""Sphinx ReadTheDocs theme.
From https://github.com/ryan-roemer/sphinx-bootstrap-theme.
"""
import os
VERSION = (0, 1, 5)
__version__ = ".".join(str(v) for v in VERSION)
__version_full__ = __version__
def get_html_theme_path():
"""Return list of HTML theme paths."""
cur_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
return cur_dir

View File

@@ -0,0 +1,19 @@
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="{{ pathto(master_doc) }}">Docs</a> &raquo;</li>
{% for doc in parents %}
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a> &raquo;</li>
{% endfor %}
<li>{{ title }}</li>
<li class="wy-breadcrumbs-aside">
{% if display_github %}
<a href="https://github.com/{{ github_user }}/{{ github_repo }}/blob/{{ github_version }}{{ conf_py_path }}{{ pagename }}{{ source_suffix }}" class="fa fa-github"> Edit on GitHub</a>
{% elif display_bitbucket %}
<a href="https://bitbucket.org/{{ bitbucket_user }}/{{ bitbucket_repo }}/src/{{ bitbucket_version}}{{ conf_py_path }}{{ pagename }}{{ source_suffix }}" class="fa fa-bitbucket"> Edit on Bitbucket</a>
{% elif show_source and has_source and sourcename %}
<a href="{{ pathto('_sources/' + sourcename, true)|e }}" rel="nofollow"> View page source</a>
{% endif %}
</li>
</ul>
<hr/>
</div>

View File

@@ -0,0 +1,32 @@
<footer>
{% if next or prev %}
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
{% if next %}
<a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}">Next <span class="fa fa-arrow-circle-right"></span></a>
{% endif %}
{% if prev %}
<a href="{{ prev.link|e }}" class="btn btn-neutral" title="{{ prev.title|striptags|e }}"><span class="fa fa-arrow-circle-left"></span> Previous</a>
{% endif %}
</div>
{% endif %}
<hr/>
<div role="contentinfo">
<p>
{%- if show_copyright %}
{%- if hasdoc('copyright') %}
{% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
{%- else %}
{% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
{%- endif %}
{%- endif %}
{%- if last_updated %}
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
{%- endif %}
</p>
</div>
{% trans %}<a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>{% endtrans %}
</footer>

View File

@@ -0,0 +1,160 @@
{# TEMPLATE VAR SETTINGS #}
{%- set url_root = pathto('', 1) %}
{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
{%- if not embedded and docstitle %}
{%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
{%- else %}
{%- set titlesuffix = "" %}
{%- endif %}
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% block htmltitle %}
<title>{{ title|striptags|e }}{{ titlesuffix }}</title>
{% endblock %}
{# FAVICON #}
{% if favicon %}
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
{% endif %}
{# CSS #}
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
{# OPENSEARCH #}
{% if not embedded %}
{% if use_opensearch %}
<link rel="search" type="application/opensearchdescription+xml" title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" href="{{ pathto('_static/opensearch.xml', 1) }}"/>
{% endif %}
{% endif %}
{# RTD hosts this file, so just load on non RTD builds #}
{% if not READTHEDOCS %}
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
{% endif %}
{% for cssfile in css_files %}
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
{% endfor %}
{%- block linktags %}
{%- if hasdoc('about') %}
<link rel="author" title="{{ _('About these documents') }}"
href="{{ pathto('about') }}"/>
{%- endif %}
{%- if hasdoc('genindex') %}
<link rel="index" title="{{ _('Index') }}"
href="{{ pathto('genindex') }}"/>
{%- endif %}
{%- if hasdoc('search') %}
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}"/>
{%- endif %}
{%- if hasdoc('copyright') %}
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}"/>
{%- endif %}
<link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}"/>
{%- if parents %}
<link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}"/>
{%- endif %}
{%- if next %}
<link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}"/>
{%- endif %}
{%- if prev %}
<link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}"/>
{%- endif %}
{%- endblock %}
{%- block extrahead %} {% endblock %}
{# Keep modernizr in head - http://modernizr.com/docs/#installing #}
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
{# SIDE NAV, TOGGLES ON MOBILE #}
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-nav-search">
<a href="{{ pathto(master_doc) }}" class="fa fa-home"> {{ project }}</a>
{% include "searchbox.html" %}
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
{% set toctree = toctree(maxdepth=2, collapse=False, includehidden=True) %}
{% if toctree %}
{{ toctree }}
{% else %}
<!-- Local TOC -->
<div class="local-toc">{{ toc }}</div>
{% endif %}
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
{# MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #}
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="{{ pathto(master_doc) }}">{{ project }}</a>
</nav>
{# PAGE CONTENT #}
<div class="wy-nav-content">
<div class="rst-content">
{% include "breadcrumbs.html" %}
<div role="main">
{% block body %}{% endblock %}
</div>
{% include "footer.html" %}
</div>
</div>
</section>
</div>
{% include "versions.html" %}
{% if not embedded %}
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'{{ url_root }}',
VERSION:'{{ release|e }}',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'{{ '' if no_search_suffix else file_suffix }}',
HAS_SOURCE: {{ has_source|lower }}
};
</script>
{%- for scriptfile in script_files %}
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
{%- endfor %}
{% endif %}
{# RTD hosts this file, so just load on non RTD builds #}
{% if not READTHEDOCS %}
<script type="text/javascript" src="{{ pathto('_static/js/theme.js', 1) }}"></script>
{% endif %}
{# STICKY NAVIGATION #}
{% if theme_sticky_navigation %}
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
{% endif %}
{%- block footer %} {% endblock %}
</body>
</html>

View File

@@ -0,0 +1,205 @@
{#
basic/layout.html
~~~~~~~~~~~~~~~~~
Master layout template for Sphinx themes.
:copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{%- block doctype -%}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
{%- endblock %}
{%- set reldelim1 = reldelim1 is not defined and ' &raquo;' or reldelim1 %}
{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and
(sidebars != []) %}
{%- set url_root = pathto('', 1) %}
{# XXX necessary? #}
{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
{%- if not embedded and docstitle %}
{%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
{%- else %}
{%- set titlesuffix = "" %}
{%- endif %}
{%- macro relbar() %}
<div class="related">
<h3>{{ _('Navigation') }}</h3>
<ul>
{%- for rellink in rellinks %}
<li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
<a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}"
{{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
{%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
{%- endfor %}
{%- block rootrellink %}
<li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
{%- endblock %}
{%- for parent in parents %}
<li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li>
{%- endfor %}
{%- block relbaritems %} {% endblock %}
</ul>
</div>
{%- endmacro %}
{%- macro sidebar() %}
{%- if render_sidebar %}
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
{%- block sidebarlogo %}
{%- if logo %}
<p class="logo"><a href="{{ pathto(master_doc) }}">
<img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
</a></p>
{%- endif %}
{%- endblock %}
{%- if sidebars != None %}
{#- new style sidebar: explicitly include/exclude templates #}
{%- for sidebartemplate in sidebars %}
{%- include sidebartemplate %}
{%- endfor %}
{%- else %}
{#- old style sidebars: using blocks -- should be deprecated #}
{%- block sidebartoc %}
{%- include "localtoc.html" %}
{%- endblock %}
{%- block sidebarrel %}
{%- include "relations.html" %}
{%- endblock %}
{%- block sidebarsourcelink %}
{%- include "sourcelink.html" %}
{%- endblock %}
{%- if customsidebar %}
{%- include customsidebar %}
{%- endif %}
{%- block sidebarsearch %}
{%- include "searchbox.html" %}
{%- endblock %}
{%- endif %}
</div>
</div>
{%- endif %}
{%- endmacro %}
{%- macro script() %}
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '{{ url_root }}',
VERSION: '{{ release|e }}',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}',
HAS_SOURCE: {{ has_source|lower }}
};
</script>
{%- for scriptfile in script_files %}
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
{%- endfor %}
{%- endmacro %}
{%- macro css() %}
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
{%- for cssfile in css_files %}
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
{%- endfor %}
{%- endmacro %}
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" />
{{ metatags }}
{%- block htmltitle %}
<title>{{ title|striptags|e }}{{ titlesuffix }}</title>
{%- endblock %}
{{ css() }}
{%- if not embedded %}
{{ script() }}
{%- if use_opensearch %}
<link rel="search" type="application/opensearchdescription+xml"
title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
href="{{ pathto('_static/opensearch.xml', 1) }}"/>
{%- endif %}
{%- if favicon %}
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
{%- endif %}
{%- endif %}
{%- block linktags %}
{%- if hasdoc('about') %}
<link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
{%- endif %}
{%- if hasdoc('genindex') %}
<link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
{%- endif %}
{%- if hasdoc('search') %}
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
{%- endif %}
{%- if hasdoc('copyright') %}
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
{%- endif %}
<link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
{%- if parents %}
<link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" />
{%- endif %}
{%- if next %}
<link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
{%- endif %}
{%- if prev %}
<link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
{%- endif %}
{%- endblock %}
{%- block extrahead %} {% endblock %}
</head>
<body>
{%- block header %}{% endblock %}
{%- block relbar1 %}{{ relbar() }}{% endblock %}
{%- block content %}
{%- block sidebar1 %} {# possible location for sidebar #} {% endblock %}
<div class="document">
{%- block document %}
<div class="documentwrapper">
{%- if render_sidebar %}
<div class="bodywrapper">
{%- endif %}
<div class="body">
{% block body %} {% endblock %}
</div>
{%- if render_sidebar %}
</div>
{%- endif %}
</div>
{%- endblock %}
{%- block sidebar2 %}{{ sidebar() }}{% endblock %}
<div class="clearer"></div>
</div>
{%- endblock %}
{%- block relbar2 %}{{ relbar() }}{% endblock %}
{%- block footer %}
<div class="footer">
{%- if show_copyright %}
{%- if hasdoc('copyright') %}
{% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
{%- else %}
{% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
{%- endif %}
{%- endif %}
{%- if last_updated %}
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
{%- endif %}
{%- if show_sphinx %}
{% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx-doc.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
{%- endif %}
</div>
<p>asdf asdf asdf asdf 22</p>
{%- endblock %}
</body>
</html>

View File

@@ -0,0 +1,50 @@
{#
basic/search.html
~~~~~~~~~~~~~~~~~
Template for the search page.
:copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{%- extends "layout.html" %}
{% set title = _('Search') %}
{% set script_files = script_files + ['_static/searchtools.js'] %}
{% block footer %}
<script type="text/javascript">
jQuery(function() { Search.loadIndex("{{ pathto('searchindex.js', 1) }}"); });
</script>
{# this is used when loading the search index using $.ajax fails,
such as on Chrome for documents on localhost #}
<script type="text/javascript" id="searchindexloader"></script>
{{ super() }}
{% endblock %}
{% block body %}
<noscript>
<div id="fallback" class="admonition warning">
<p class="last">
{% trans %}Please activate JavaScript to enable the search
functionality.{% endtrans %}
</p>
</div>
</noscript>
{% if search_performed %}
<h2>{{ _('Search Results') }}</h2>
{% if not search_results %}
<p>{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}</p>
{% endif %}
{% endif %}
<div id="search-results">
{% if search_results %}
<ul>
{% for href, caption, context in search_results %}
<li>
<a href="{{ pathto(item.href) }}">{{ caption }}</a>
<p class="context">{{ context|e }}</p>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}

View File

@@ -0,0 +1,7 @@
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="{{ pathto('search') }}" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>

View File

@@ -0,0 +1 @@
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:"\f02d"}.icon-book:before{content:"\f02d"}.fa-caret-down:before{content:"\f0d7"}.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,414 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="fontawesomeregular" horiz-adv-x="1536" >
<font-face units-per-em="1792" ascent="1536" descent="-256" />
<missing-glyph horiz-adv-x="448" />
<glyph unicode=" " horiz-adv-x="448" />
<glyph unicode="&#x09;" horiz-adv-x="448" />
<glyph unicode="&#xa0;" horiz-adv-x="448" />
<glyph unicode="&#xa8;" horiz-adv-x="1792" />
<glyph unicode="&#xa9;" horiz-adv-x="1792" />
<glyph unicode="&#xae;" horiz-adv-x="1792" />
<glyph unicode="&#xb4;" horiz-adv-x="1792" />
<glyph unicode="&#xc6;" horiz-adv-x="1792" />
<glyph unicode="&#x2000;" horiz-adv-x="768" />
<glyph unicode="&#x2001;" />
<glyph unicode="&#x2002;" horiz-adv-x="768" />
<glyph unicode="&#x2003;" />
<glyph unicode="&#x2004;" horiz-adv-x="512" />
<glyph unicode="&#x2005;" horiz-adv-x="384" />
<glyph unicode="&#x2006;" horiz-adv-x="256" />
<glyph unicode="&#x2007;" horiz-adv-x="256" />
<glyph unicode="&#x2008;" horiz-adv-x="192" />
<glyph unicode="&#x2009;" horiz-adv-x="307" />
<glyph unicode="&#x200a;" horiz-adv-x="85" />
<glyph unicode="&#x202f;" horiz-adv-x="307" />
<glyph unicode="&#x205f;" horiz-adv-x="384" />
<glyph unicode="&#x2122;" horiz-adv-x="1792" />
<glyph unicode="&#x221e;" horiz-adv-x="1792" />
<glyph unicode="&#x2260;" horiz-adv-x="1792" />
<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
<glyph unicode="&#xf016;" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " />
<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" />
<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" />
<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" />
<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" />
<glyph unicode="&#xf035;" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" />
<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
<glyph unicode="&#xf053;" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" />
<glyph unicode="&#xf054;" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" />
<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf077;" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" />
<glyph unicode="&#xf078;" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
<glyph unicode="&#xf080;" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf082;" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
<glyph unicode="&#xf09a;" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" />
<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
<glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
<glyph unicode="&#xf0d4;" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" />
<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
<glyph unicode="&#xf0f3;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0f6;" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" />
<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
<glyph unicode="&#xf116;" horiz-adv-x="1792" />
<glyph unicode="&#xf117;" horiz-adv-x="1792" />
<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
<glyph unicode="&#xf15b;" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
<glyph unicode="&#xf15c;" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " />
<glyph unicode="&#xf174;" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
<glyph unicode="&#xf180;" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" />
<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
<glyph unicode="&#xf194;" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf197;" horiz-adv-x="1792" />
<glyph unicode="&#xf198;" horiz-adv-x="1792" />
<glyph unicode="&#xf199;" horiz-adv-x="1792" />
<glyph unicode="&#xf19a;" horiz-adv-x="1792" />
<glyph unicode="&#xf19b;" horiz-adv-x="1792" />
<glyph unicode="&#xf19c;" horiz-adv-x="1792" />
<glyph unicode="&#xf19d;" horiz-adv-x="1792" />
<glyph unicode="&#xf19e;" horiz-adv-x="1792" />
<glyph unicode="&#xf500;" horiz-adv-x="1792" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,47 @@
$( document ).ready(function() {
// Shift nav in mobile when clicking the menu.
$(document).on('click', "[data-toggle='wy-nav-top']", function() {
$("[data-toggle='wy-nav-shift']").toggleClass("shift");
$("[data-toggle='rst-versions']").toggleClass("shift");
});
// Close menu when you click a link.
$(document).on('click', ".wy-menu-vertical .current ul li a", function() {
$("[data-toggle='wy-nav-shift']").removeClass("shift");
$("[data-toggle='rst-versions']").toggleClass("shift");
});
$(document).on('click', "[data-toggle='rst-current-version']", function() {
$("[data-toggle='rst-versions']").toggleClass("shift-up");
});
// Make tables responsive
$("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
});
window.SphinxRtdTheme = (function (jquery) {
var stickyNav = (function () {
var navBar,
win,
stickyNavCssClass = 'stickynav',
applyStickNav = function () {
if (navBar.height() <= win.height()) {
navBar.addClass(stickyNavCssClass);
} else {
navBar.removeClass(stickyNavCssClass);
}
},
enable = function () {
applyStickNav();
win.on('resize', applyStickNav);
},
init = function () {
navBar = jquery('nav.wy-nav-side:first');
win = jquery(window);
};
jquery(init);
return {
enable : enable
};
}());
return {
StickyNav : stickyNav
};
}($));

View File

@@ -0,0 +1,8 @@
[theme]
inherit = basic
stylesheet = css/theme.css
[options]
typekit_id = hiw1hhg
analytics_id =
sticky_navigation = False

View File

@@ -0,0 +1,37 @@
{% if READTHEDOCS %}
{# Add rst-badge after rst-versions for small badge style. #}
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: {{ current_version }}
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
{% for slug, url in versions %}
<dd><a href="{{ url }}">{{ slug }}</a></dd>
{% endfor %}
</dl>
<dl>
<dt>Downloads</dt>
{% for type, url in downloads %}
<dd><a href="{{ url }}">{{ type }}</a></dd>
{% endfor %}
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="//{{ PRODUCTION_DOMAIN }}/projects/{{ slug }}/?fromdocs={{ slug }}">Project Home</a>
</dd>
<dd>
<a href="//{{ PRODUCTION_DOMAIN }}/builds/{{ slug }}/?fromdocs={{ slug }}">Builds</a>
</dd>
</dl>
<hr/>
Free document hosting provided by <a href="http://www.readthedocs.org">Read the Docs</a>.
</div>
</div>
{% endif %}

140
docs/admin/outline.rst Normal file
View File

@@ -0,0 +1,140 @@
Administrative Functions
========================
.. note::
These docs are out of date. If you are interested in updating these (preferably with screenshots) let us know on the `community forum <https://community.nodebb.org>`_ because we are planning on a design overhaul of the ACP soon.
**To view the admin panel** (if you are an admin): `http://your_nodebb_domain.com/admin`
**Top Menu** (all can be easily reached by other means)
* NodeBB ACP (Administrator Control Panel: this view)
* `http://your_nodebb_domain.com/admin/index` (see Home below)
* Forum
* `http://your_nodebb_domain.com` (your main forum)
* Home
* `http://your_nodebb_domain.com/admin/index` (see Home below)
* Settings
* `http://your_nodebb_domain.com/admin/settings` (see Settings below)
**Side Menu: NodeBB**
* Home
* `http://your_nodebb_domain.com/admin/index`
* Links all go to nodebb.com homepage
* NOTE: should all the links go to same place?
* Message reminder of what version this is and to check for updates (See :doc:`Upgrading NodeBB <../upgrading/index>`)
* NOTE: would a link to where the latest stable version is help?
* Active Users
* lists number users per page-path (?)
* NOTE: not clear exactly what the paths mean or how to visit that path
* Categories
* `http://your_nodebb_domain.com/admin/categories`
* Filters: Active, Disabled, Unit Tests
* List of Categories:
* Icon, Name, Desc, Action: Disable
* Actions: Save, Add New
* Users
* `http://your_nodebb_domain.com/admin/users`
* Filters: Latest Users, Top Posters, Most Reputation, Action: Search
* List of Users:
* Icon, Link: Name, Reputation(star), Number Posts(pencil), Action: Ban
* Action: Load More
* Groups
* `http://your_nodebb_domain.com/admin/groups`
* List of Groups
* Name, Desc, Icon
* Action: Delete Group
* NOTE: What exactly can Groups be set up to do, besides Admin?
* Topics
* `http://your_nodebb_domain.com/admin/topics`
* List of Topics
* Name [link to topic], Posted When and By, Number posts (Topic+Replies), Thread Actions: Pin(pushpin), Lock(lock), Delete(trashcan)
* Action: Load More Topics
* Topic [from List of Topics link]
* Normal View of Topic+Reply Posts but with:
* Link, Edit, Delete Actions all enabled for each Post
* Thread Tools:
* Pin, Lock, Move, Delete
* Themes (See :doc:`Theming NodeBB <../themes/create>`)
* `http://your_nodebb_domain.com/admin/themes`
* List of (Custom | Bootswatch) Themes
* Actions: Use, Preview
* Action: Revert (to base)
* Plugins (See :doc:`Writing Plugins for NodeBB <../plugins/create>`)
* `http://your_nodebb_domain.com/admin/plugins`
* List of Plugins
* Action: De/activate
* Info on making plugins
* Settings
* `http://your_nodebb_domain.com/admin/settings`
* General Settings
* (textbox) Site Title
* (textbox) Site Description
* (textbox) Site Keywords
* (textbox) Imgur Client ID
* NOTE: How does this function?
* (textbox) Maximum User Image Size
* Privilege Thresholds (Use privilege thresholds to manage how much reputation a user must gain to receive moderator access.)
* (textbox) Manage Thread
* (textbox) Moderate Users
* (textbox) Create Pinned Topics
* Email Settings
* (textbox) Email Address (The following email address refers to the email that the recipient will see in the "From" and "Reply To" fields.)
* (textbox) SMTP Server Host (Default: 127.0.0.1)
* (textbox) SMTP Server Port
* User Settings
* (textbox) Minimum Username Length
* (textbox) Maximum Username Length
* (textbox) Minimum Password Length
* Post Settings
* (textbox) Post Delay
* (textbox) Minimum Title Length
* (textbox) Minimum Post Length
* (checkbox) Use Outgoing Links Warning Page
* Action: Save
* Redis
* `http://your_nodebb_domain.com/admin/redis`
* Redis data storage stats
* Logger
* `http://your_nodebb_domain.com/admin/logger`
* (checkbox) Enable HTTP logging
* (checkbox) Enable socket.io event logging
* (textbox) Path to log file
* MOTD (Message of the Day)
* `http://your_nodebb_domain.com/admin/motd`
* (textarea) You can enter either full HTML or Markdown text.
* (checkbox) Show the Message of the Day
**Side Menu: Social Authentication** (See :doc:`Enabling Social Network Logins <../admin/sso>`)
* Twitter
* `http://your_nodebb_domain.com/admin/twitter`
* Facebook
* `http://your_nodebb_domain.com/admin/facebook`
* Google+
* `http://your_nodebb_domain.com/admin/gplus`
**Side Menu: Plugins** (Shows installed plugins)
**Side Menu: Unit Tests** (Will run qunit tests)

45
docs/admin/sso.rst Normal file
View File

@@ -0,0 +1,45 @@
Social Network SSOs
==================
NodeBB supports integration for Facebook, Twitter, and Google through third party plugins:
* `npm install nodebb-plugin-sso-facebook`
* `npm install nodebb-plugin-sso-twitter`
* `npm install nodebb-plugin-sso-google`
Other SSO vendors are available, such as GitHub. Please check the `plugin directory <http://community.nodebb.org/category/7/nodebb-plugins>`_ for a list of all SSO vendors.
After installing and activating them, they require an API key in order to function:
Facebook
---------
Register an application via the `Facebook Developers <https://developers.facebook.com/>`_ page. A credit card or mobile phone number may be required in order to create a Developer account.
Create a new application, and obtain an Application Key and Application Secret:
.. image:: http://i.imgur.com/hfy0eVo.png
Ensure that "Website with Facebook Login" is checked, and that the URL to your NodeBB instance is specified in the "Site URL" box. Add that site's domain to the "App Domains" field.
Paste this key and secret into the appropriate boxes in the NodeBB Administration Panel (accessible via /admin on your NodeBB install)
Twitter
---------
Register an application at the `Twitter Developers <https://dev.twitter.com/>`_ page. Create a new Application, and obtain the Access Token and Secret:
.. image:: http://i.imgur.com/ksrHkgN.png
**Important**: While setting up your application, be sure to specify a Callback URL. It does not have to correspond to your installation, it just cannot be blank.
Paste this token and secret into the appropriate boxes in the NodeBB Administration Panel (accessible via /admin on your NodeBB install)
Google
---------
Register an application at the `Google API Console <https://code.google.com/apis/console/>`_, and obtain a Client ID and Secret.
.. image:: http://i.imgur.com/xutDs1R.png
Paste this ID and secret into the appropriate boxes in the NodeBB Administration Panel (accessible via /admin on your NodeBB install)

33
docs/admin/uploads.rst Normal file
View File

@@ -0,0 +1,33 @@
Image Hosting APIs
======================
Enabling Imgur Image Uploads
----------------------------
To enable post image attachments, first create an imgur app from :
https://api.imgur.com/oauth2/addclient
You can use : "Anonymous usage without user authorization"
After that you will get a "Client ID".
Then install nodebb-plugin-imgur:
.. code::
npm install nodebb-plugin-imgur
Activate the plugin from the control panel and restart NodeBB.
You should see a Imgur menu item in the control panel. Paste the Client ID to the "Imgur Client ID" in the plugin page. Save and you should be able to upload images by dragging them into the composer window.
Uploading to Amazon S3
-----------------------
.. note::
No documentation for this yet! See `the plugin thread <https://community.nodebb.org/topic/796/nodebb-plugin-s3-uploads-store-your-uploads-in-aws-s3>`_ for more information.

258
docs/conf.py Normal file
View File

@@ -0,0 +1,258 @@
# -*- coding: utf-8 -*-
#
# NodeBB documentation build configuration file, created by
# sphinx-quickstart on Thu Apr 24 15:55:18 2014.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys
import os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = []
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'NodeBB'
copyright = u'2014, NodeBB'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '0.4.1'
# The full version, including alpha/beta/rc tags.
release = '0.4.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = "sphinx_rtd_theme"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = ["_themes", ]
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'NodeBBdoc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index', 'NodeBB.tex', u'NodeBB Documentation',
u'psychobunny, julianlam, barisusakli', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'nodebb', u'NodeBB Documentation',
[u'psychobunny, julianlam, barisusakli'], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'NodeBB', u'NodeBB Documentation',
u'psychobunny, julianlam, barisusakli', 'NodeBB', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False

View File

@@ -0,0 +1,39 @@
Configuring Databases
=====================
NodeBB has a Database Abstraction Layer (DBAL) that allows one to write drivers for their database of choice. Currently we have the following options:
.. toctree::
:hidden:
:maxdepth: 0
MongoDB <databases/mongo>
LevelDB <databases/level>
* Redis (default, see :doc:`installation guides <../installing/os>`)
* :doc:`Mongo <databases/mongo>`
* :doc:`Level <databases/level>`
.. note::
If you would like to write your own database driver for NodeBB, please visit our `community forum <https://community.nodebb.org>`_ and we can point you in the right direction.
Running a Secondary Database
----------------------------
.. warning::
**This option is experimental and should not be used on a production environment.**
Both databases **must** be flushed before beginning - there isn't a mechanism yet that detects an existing installation on one database but not another. Until fail-safe's such as these are implemented this option is hidden under the ``--advanced`` setup flag.
.. code:: bash
node app --setup --advanced
Consult the other database guides for instructions on how to set up each specific database. Once you select a secondary database's modules, there's no turning back - until somebody writes an exporter/importer.
Currently this setup is being tested with Redis as the primary store (sets, lists, and sorted sets, because Redis is super fast with these), and Mongo as the hash store (post and user data, because ideally we wouldn't want this in RAM).

View File

@@ -0,0 +1,19 @@
LevelDB
=======
Follow the :doc:`installation instructions <../../installing/os>` for your particular OS but feel free to omit the Redis installation.
After cloning NodeBB, ensure that you run:
.. code::
npm install levelup leveldown
Finally, set up a directory to store your LevelDB database, for example:
.. code::
mkdir /var/level/
Run the NodeBB install, select ``level`` when it prompts you for your database. If you created the folder as above, you can leave the rest of the questions as default.

View File

@@ -0,0 +1,126 @@
MongoDB
=======
If you're afraid of running out of memory by using Redis, or want your forum to be more easily scalable, you can install NodeBB with MongoDB. This tutorial assumes you know how to SSH into your server and have root access.
**These instructions are for Ubuntu. Adjust them accordingly for your distro.**
**Note:** If you have to add ``sudo`` to any command, do so. No one is going to hold it against you ;)
Step 1: Install MongoDB
-------------------------
The latest and greatest MongoDB is required (or at least greater than the package manager). The instructions to install it can be found on the `MongoDB manual <http://docs.mongodb.org/manual/administration/install-on-linux/>`_).
Step 2: Install node.js
-------------------------
Like MongoDB, the latest and greatest node.js is required (or at least greater than the package manager), so I'm leaving this to the official wiki. The instructions to install can be found on `Joyent <https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager>`_.
**Note: NPM is installed along with node.js, so there is no need to install it separately**
Step 3: Install the Base Software Stack
-------------------------
Enter the following into the terminal to install the base software required to run NodeBB:
.. code:: bash
# apt-get install git build-essential imagemagick
Step 4: Clone the Repository
-------------------------
Enter the following into the terminal, replacing `/path/to/nodebb/install/location` to where you would like NodeBB to be installed.
.. code:: bash
$ cd /path/to/nodebb/install/location
$ git clone git://github.com/designcreateplay/NodeBB.git nodebb
Step 5: Install The Required NodeBB Dependencies
-------------------------
Go into the newly created `nodebb` directory and install the required dependencies by entering the following.
.. code:: bash
$ cd nodebb
$ npm install
Step 6: Adding a New Database With Users
-------------------------
To go into the MongoDB command line, type:
.. code:: bash
$ mongo
To add a new database called `nodebb`, type:
.. code::
> use nodebb
To add a user to access the `nodebb` database, type:
.. code::
> db.addUser( { user: "nodebb",
... pwd: "<Enter in a secure password>",
... roles: [ "userAdmin" ] } )
**Note:** The role ``userAdmin`` gives all permissions to the user for that specific database.
Step 7: Configure MongoDB
-------------------------
MongoDB needs text search enabled. Modify ``/etc/mongodb.conf``.
.. code::
# nano /etc/mongodb.conf
Add ``setParameter=textSearchEnabled=true`` to the end. Also, to enable authentication, uncomment ``auth = true``. Restart MongoDB.
.. code::
# service mongodb restart
Step 8: Configuring NodeBB
-------------------------
Make sure you are in your NodeBB root folder. If not, just type:
.. code::
$ cd /path/to/nodebb
To setup the app, type:
.. code::
$ node app --setup
* Change the hostname to your domain name.
* Accept the defaults by pressing enter until it asks you what database you want to use. Type ``mongo`` in that field.
* Accept the default port, unless you changed it in the previous steps.
* Change your username to ``nodebb``, unless you set it to another username.
* Enter in the password you made in step 5.
* Change the database to ``nodebb``, unless you named it something else.
Continue with the installation, following the instructions the installer provides you.
Step 9: Starting the App
-------------------------
To start the app, run:
.. code::
$ node app
Now visit ``yourdomainorip.com:4567`` and your NodeBB installation should be running.
NodeBB can also be started with helper programs, such as :doc:`supervisor or forever <../../running/index>`. You can also use ``nginx`` as a :doc:`reverse proxy <../../configuring/proxies>`).

View File

@@ -0,0 +1,9 @@
**This option is experimental and should not be used on a production environment.**
Both databases **must** be flushed before beginning - there isn't a mechanism yet that detects an existing installation on one database but not another. Until fail-safe's such as these are implemented this option is hidden under the `--advanced` setup flag.
node app --setup --advanced
Consult the other database guides for instructions on how to set up each specific database. Once you select a secondary database's modules, there's no turning back - until somebody writes an exporter/importer.
Currently this setup is being tested with Redis as the primary store (sets, lists, and sorted sets, because Redis is super fast with these), and Mongo as the hash store (post and user data, because ideally we wouldn't want this in RAM).

View File

@@ -0,0 +1,16 @@
Configuring Web Server / Proxies
================================
Here a few options that you can use to proxy your NodeBB forum.
.. toctree::
:hidden:
:maxdepth: 0
Nginx <proxies/nginx>
Apache <proxies/apache>
Varnish Cache <proxies/varnish>
* :doc:`Nginx <proxies/nginx>`
* :doc:`Apache <proxies/apache>`
* :doc:`Varnish Cache <proxies/varnish>`

View File

@@ -0,0 +1,84 @@
Configuring apache as a proxy
=============================
**Prerequisites to making this work:**
Apache 2.4.x
What if I'm on 2.2.x (Debian/Ubuntu)?
------------------------------------
you need to manually compile and add the module "mod_proxy_wstunnel" to the Apache 2.2 branch. If you're running Ubuntu or Debian, you're likely on the 2.2 branch of code.
The following guide will assist with that if you're on Debian or Ubuntu. This is what I used to backport the mod_proxy_wstunnel module to the 2.2 code base of Apache;
http://www.amoss.me.uk/2013/06/apache-2-2-websocket-proxying-ubuntu-mod_proxy_wstunnel/
NOTE: On ubuntu, if youre missing the ./configure file
------------------------------------
You need to first run ./buildconf. After this is complete, you will then be able to use ./configure.
**automake & libtool package was needed too.**
.. code::
apt-get install automake libtool
Enable the necessary modules
-----------------------------
1. sudo a2enmod proxy
2. sudo a2enmod proxy_html
3. sudo a2enmod proxy_wstunnel
Add the config to Apache
-----------------------------
The next step is adding the configuration to your virtualhost.conf file, typically located in /etc/apache2/sites-available/. The below configuration assumes you've used 4567 (default) port for NobeBB installation. It also assumes you have the bind address set to 127.0.0.1.
.. code::
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /socket.io/1/websocket ws://127.0.0.1:4567/socket.io/1/websocket
ProxyPassReverse /socket.io/1/websocket ws://127.0.0.1:4567/socket.io/1/websocket
ProxyPass /socket.io/ http://127.0.0.1:4567/socket.io/
ProxyPassReverse /socket.io/ http://127.0.0.1:4567/socket.io/
ProxyPass / http://127.0.0.1:4567/
ProxyPassReverse / http://127.0.0.1:4567/
The last thing you need to be sure of is that the config.json in the NodeBB folder has use_port: false. Otherwise some functionality will not work properly.
Example nodebb/config.json
-----------------------------
.. code:: json
{
"base_url": "http://www.yoursite.com",
"port": "4567",
"use_port": false,
"secret": "55sb254c-62e3-4e23-9407-8655147562763",
"bind_address": "127.0.0.1",
"database": "redis",
"redis": {
"host": "127.0.0.1",
"port": "6379",
"password": "",
"database": "0"
},
"bcrypt_rounds": 12,
"upload_path": "/public/uploads",
"relative_path": ""
}
**Change the domain and dont use the secret in the example above.**

View File

@@ -0,0 +1,59 @@
Configuring nginx as a proxy
============================
NodeBB by default runs on port ``4567``, meaning that builds are usually accessed using a port number in addition to their hostname:
.. code::
http://example.org:4567
In order to allow NodeBB to be served without a port, nginx can be set up to proxy all requests to a particular hostname (or subdomain) to an upstream NodeBB build running on any port.
Requirements
------------
* NGINX version v1.3.13 or greater
* Package managers may not provide a new enough version. To get the latest version, `compile it yourself <http://nginx.org/en/download.html>`_, or if on Ubuntu, use the `NGINX Stable <https://launchpad.net/~nginx/+archive/stable>`_ or `NGINX Development <https://launchpad.net/~nginx/+archive/development>`_ PPA builds, if you are on Debian, use `DotDeb repository <http://www.dotdeb.org/instructions/>`_ to get the latest version of Nginx.
* To determine your nginx version, execute ``nginx -V`` in a shell
Configuration
------------
NGINX-served sites are contained in a ``server`` block. This block of options goes in a specific place based on how nginx was installed and configured:
* ``/path/to/nginx/sites-available/*`` -- files here must be aliased to ``../sites-enabled``
* ``/path/to/nginx/conf.d/*.conf`` -- filenames must end in ``.conf``
* ``/path/to/nginx/httpd.conf`` -- if all else fails
Below is the basic nginx configuration for a NodeBB build running on port ``4567``:
.. code:: nginx
server {
listen 80;
server_name forum.example.org;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4567/;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Notes
------------
* nginx must be on version 1.4.x to properly support websockets. Debian/Ubuntu use 1.2, although it will work there will be a reduction in functionality.
* The ``proxy_pass`` IP should be ``127.0.0.1`` if your NodeBB is hosted on the same physical server as your nginx server. Update the port to match your NodeBB, if necessary.
* This config sets up your nginx server to listen to requests for ``forum.example.org``. It doesn't magically route the internet to it, though, so you also have to update your DNS server to send requests for ``forum.example.org`` to the machine with nginx on it!

View File

@@ -0,0 +1,37 @@
Configuring Varnish Cache
==========================
To be sure Varnish will work properly with NodeBB check that your configuration ``/etc/varnish/default.vcl`` is optimized for **websockets**.
.. code::
backend nodebb {
.host = "127.0.0.1"; # your nodebb host
.port = "4567"; # your nodebb port
}
sub vcl_recv {
# Pipe websocket connections directly to Node.js
if (req.http.Upgrade ~ "(?i)websocket") {
set req.backend = nodebb;
return (pipe);
}
# NodeBB
if (req.http.host == "forum.yourwebsite.com") { # change this to match your host
if (req.url ~ "^/socket.io/") {
set req.backend = nodebb;
return (pipe); # return pass seems not working for websockets
}
return (pass); # don't cache
}
}
sub vcl_pipe {
# Need to copy the upgrade header
if (req.http.upgrade) {
set bereq.http.upgrade = req.http.upgrade;
}
}

View File

@@ -0,0 +1,76 @@
NodeBB Style Guide
==================
For the most part, NodeBB follows the `Google Javascript Style Guide <http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml>`_.
Code Formatting
-------------------
.. note::
The existing codebase as of July 2013 does not adhere to this style guide 100%. If you see instances where the style guide is not adhered to, feel free to restyle and send off a pull request.
Indentation & Bracing
-------------------
NodeBB uses tabbed indentation. Bracing should follow the `One True Brace Style <http://en.wikipedia.org/wiki/Indent_style#Variant:_1TBS>`_:
.. code:: javascript
if (condition) {
// code here ...
} else {
// otherwise ...
}
Put conditionals and statements on separate lines and wrap with curly braces even if it's just one line:
.. code:: javascript
if (leTired) {
haveANap();
}
Errors
-------------------
Most callbacks return an error as the first parameter. Handle this error first before processing further.
.. code:: javascript
someFunction(parameters, function(err, data) {
if(err) {
return callback(err); // or handle error
}
// proceed as usual
});
Variables
-------------------
Variables should always be prefaced with the `var` keyword:
.. code:: javascript
var foo = 'bar';
Multiple declarations are to be included in the same `var` statement:
.. code:: javascript
var foo = 'bar',
bar = 'baz';
Semicolons
-------------------
Use semicolons if at all possible
Nomenclature
-------------------
CamelCase if at all possible:
.. code:: javascript
functionNamesLikeThis, variableNamesLikeThis, ClassNamesLikeThis, EnumNamesLikeThis, methodNamesLikeThis, CONSTANT_VALUES_LIKE_THIS, foo.namespaceNamesLikeThis.bar, and filenameslikethis.js.

11
docs/help/faq.rst Normal file
View File

@@ -0,0 +1,11 @@
Frequently Asked Questions
==========================
testing
testing
-------
testing

50
docs/help/help.rst Normal file
View File

@@ -0,0 +1,50 @@
Need Help?
==========
Frequently Asked Questions
--------------------------
If you experience difficulties setting up a NodeBB instance, perhaps one of the following may help.
Is it possible to install NodeBB via FTP?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
It is possible to transfer the files to your remote server using FTP, but you do require shell access to the server in order to actually "start" NodeBB. Here is `a handy guide for installing NodeBB on DigitalOcean <http://burnaftercompiling.com/nodebb/setting-up-a-nodebb-forum-for-dummies/>`_
I'm getting an "npm ERR!" error
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For the most part, errors involving ``npm`` are due to Node.js being outdated. If you see an error similar to this one while running ``npm install``:
.. code:: bash
npm ERR! Unsupported
npm ERR! Not compatible with your version of node/npm: connect@2.7.11
You'll need to update your Node.js version to 0.8 or higher.
To do this on Ubuntu:
.. code:: bash
# add-apt-repository ppa:chris-lea/node.js
# apt-get update && apt-get dist-upgrade -y
# apt-cache policy nodejs // should show a version higher than 0.8
I upgraded NodeBB and now X isn't working properly!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Please consult [[Upgrading NodeBB]]
Submit Bugs on our Issue Tracker
--------------------------------
Before reporting bugs, please ensure that the issue has not already been filed on our `tracker <https://github.com/designcreateplay/NodeBB/issues?state=closed>`_, or has already been resolved on our `support forum <http://community.nodebb.org/category/6/bug-reports>`_. If it has not been filed, feel free to create an account on GitHub and `create a new issue <https://github.com/designcreateplay/NodeBB/issues>`_.
Ask the NodeBB Community
------------------------
Having trouble installing NodeBB? Or did something break? Don't hesitate to `join our forum <community.nodebb.org/register>`_ and ask for help. Hopefully one day you'll be able to help others too :)

34
docs/helping/index.rst Normal file
View File

@@ -0,0 +1,34 @@
Helping out the NodeBB Project
==============================
NodeBB is an open source project, and will forever remain free. Here's a number of ways you can help us, even if you aren't a programmer.
* `Like and share our content on Facebook <http://www.facebook.com/NodeBB>`_
* `Follow us on Twitter <http://www.twitter.com/NodeBB>`_ and perhaps tweet **#NodeBB is most awesome forum software @NodeBB**
* Update our wiki! ;) We need everything from development/design tutorials to user friendly how-to guides.
* Tell everybody about NodeBB, including your grandma and her cats.
* `Submit a pull request, or two, or three.. <http://www.github.com/designcreateplay/NodeBB>`_
* Build a new theme
* Write a plugin
* Keep the link back to us on the footer of your own NodeBB :)
* Blog about us! Give the gift of SEO juice this Christmas
* `Help Translate NodeBB <https://www.transifex.com/projects/p/nodebb/>`_ - It's a really simple translation tool and you don't need to know how to code.
* Join our `community <http://community.nodebb.org>`_ and give us a hard time about bugs and missing features
Translating NodeBB to another language
------------------------------------
NodeBB uses Transifex, which is a user friendly visual tool which allows any individual to translate text into a language of their choice. You don't need to be a programmer to do this, so what are you waiting for? `Join the translation team <https://www.transifex.com/projects/p/nodebb/>`_ now :)
Writing Documentation
---------------------
These docs were written using `Sphinx <http://sphinx-doc.org/>`_ and published using `rtfd.org <http://readthedocs.org/>`_.
You can edit these docs `directly on GitHub <https://github.com/designcreateplay/NodeBB/tree/master/docs>`_, or by clicking on "View page source" on the top right of any page.
If you wish, you can clone the repository and compile the documentation yourself. Check out the `Getting Started <https://read-the-docs.readthedocs.org/en/latest/getting_started.html>`_ section for more info on how to accomplish the latter.
Documentation are auto-compiled and pushed to rtfd.org after every commit.

125
docs/index.rst Normal file
View File

@@ -0,0 +1,125 @@
.. image:: https://i.imgur.com/3yj1n6N.png
|
**NodeBB** is a next-generation discussion platform that utilizes web sockets for instant interactions and real-time notifications. NodeBB forums have many modern features out of the box such as social network integration and streaming discussions.
NodeBB is an open source project which can be forked on `GitHub <https://github.com/designcreateplay/NodeBB/>`_. Don't forget to check out the ways that you can help contribute to this project, from translations, pull requests, and telling your friends.
Table of Contents
=================
.. _installing:
Installing NodeBB
-----------------
.. toctree::
:maxdepth: 2
installing/os
installing/cloud
.. _configuring:
Configuring NodeBB
------------------
.. toctree::
:maxdepth: 2
configuring/databases
configuring/proxies
Running NodeBB
------------------
.. toctree::
:maxdepth: 2
running/index
Upgrading NodeBB
------------------
.. toctree::
:maxdepth: 2
upgrading/index
Administrating NodeBB
---------------------
.. toctree::
:maxdepth: 2
admin/outline
admin/sso
admin/uploads
Contributing to NodeBB
----------------------
.. toctree::
:maxdepth: 2
contributing/style-guide
Plugin System
-------------
.. toctree::
:maxdepth: 2
plugins/create
plugins/hooks
Widgets System
--------------
.. toctree::
:maxdepth: 2
widgets/create
Theming Engine
--------------
.. toctree::
:maxdepth: 2
themes/create
themes/templates
Developer's Resources
---------------------
.. toctree::
:maxdepth: 2
resources
Helping out the NodeBB Project
------------------------------
.. toctree::
:maxdepth: 2
helping/index
Troubleshooting / Help
----------------------
.. toctree::
:maxdepth: 2
help/help
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

21
docs/installing/cloud.rst Normal file
View File

@@ -0,0 +1,21 @@
Installing NodeBB on the Cloud
==============================
The following are step-by-step guides to help you get up and running on the cloud using popular PaaS solutions.
.. note::
If the PaaS solution of your choice is not listed here, please feel free to request a guide on our `community <https://community.nodebb.org>`_ or even better yet, submit one here.
.. toctree::
:hidden:
:maxdepth: 0
Heroku <cloud/heroku>
Cloud9 <cloud/cloud9>
* :doc:`Heroku <cloud/heroku>`
* :doc:`Cloud9 <cloud/cloud9>`
* `Digital Ocean <http://burnaftercompiling.com/nodebb/setting-up-a-nodebb-forum-for-dummies/>`_ (external)

View File

@@ -0,0 +1,75 @@
Cloud 9 IDE
===========
The following are installation instructions for the `Cloud 9 <https://c9.io/>`_ web based IDE.
**Step 1:** Clone NodeBB into a new workspace from GitHub. You can use the following command from the terminal:
.. code:: bash
git clone git://github.com/designcreateplay/NodeBB.git nodebb
The nodebb command after the git url will create a file called nodebb so you have to CD into the file after you have cloned NodeBB.
**Step 2:** Install redis with Cloud9's package manager
.. code:: bash
nada-nix install redis
**Step 3:** Run your redis server on port 16379 - port 6379 tends to be already used on Cloud 9. The "&" makes the command run in the background. You can always terminate the process later. $IP is a Cloud 9 system variable containing the global ip of your server instance.
.. code:: bash
redis-server --port 16379 --bind $IP &
**Step 4:** Find out your instance's ip address so NodeBB can bind to it correctly. This is one of Cloud 9's demands and seems to be the only way it will work. You can't use $IP in your config.json either (which means you can't enter $IP in the node app --setup).
.. code:: bash
echo $IP
**Step 5:** Install NodeBB and it's dependencies:
.. code:: bash
npm install
**Step 6:** Run the nodebb setup utility:
.. code:: bash
node app --setup
URL of this installation should be set to 'http://workspace_name-c9-username.c9.io', replacing workspace_name with your workspace name and username with your username. Note that as NodeBB is currently using unsecure http for loading jQuery you will find it much easier using http:// instead of https:// for your base url. Otherwise jQuery won't load and NodeBB will break.
Port number isn't so important - Cloud9 may force you to use port 80 anyway. Just set it to 80. If this is another port, like 4567, that is also fine.
Use a port number to access NodeBB? Again, this doesn't seem to make a big difference. Set this to no. Either will work.
Host IP or address of your Redis instance: localhost (the output of the $IP Command is also acceptable)
IP or Hostname to bind to: Enter what your $IP value holds here found in step 4. It should look something like: 123.4.567.8
Host port of your Redis instance: 16379
Redis Password: Unless you have set one manually, Redis will be configured without a password. Leave this blank and press enter
First-time set-up will also require an Admin name, email address and password to be set.
And you're good to go! Don't use the Run button at the top if the IDE, it has been a little buggy for me. Besides, you're better off using the command line anyway. Run:
.. code:: bash
node app
And then open http://workspace_name-c9-username.c9.io in your browser.
Troubleshooting
---------------
A common problem is that the database hasn't been started. Make sure you have set Redis up correctly and ran
.. code:: bash
redis-server --port 16379 --bind $IP

View File

@@ -0,0 +1,47 @@
Heroku
======
**Note**: Installations to Heroku require a local machine with some flavour of unix, as NodeBB does not run on Windows.
1. Download and install `Heroku Toolbelt <https://toolbelt.heroku.com/>`_ for your operating system
2. Log into your Heroku account: ``heroku login``
3. Verify your Heroku account by adding a credit card (at http://heroku.com/verify)
4. Clone the repository: ``git clone https://github.com/designcreateplay/NodeBB.git /path/to/repo/clone``
5. ``cd /path/to/repo/clone``
6. Install dependencies locally ``npm install``
7. Create the heroku app: ``heroku create``
8. Enable WebSocket support (beta): ``heroku labs:enable websockets -a {APP_NAME}``, where ``{APP_NAME}`` is provided by Heroku, and looks something like ``adjective-noun-wxyz.herokuapp.com`` (NOTE: `See this doc <https://discussion.heroku.com/t/application-error/160>`_): drop the `.herokuapp.com` when entering ``{APP_NAME}`` above.
9. Enable `Redis To Go <https://addons.heroku.com/redistogo>`_ for your heroku account: ``heroku addons:add redistogo:nano``
10. Run the NodeBB setup script: ``node app --setup`` (information for your Heroku server and Redis to Go instance can be found in your account page)
* Your server name is found in your Heroku app's "settings" page, and looks something like ``adjective-noun-wxyz.herokuapp.com``
* Use any port number. It will be ignored.
* Specify "n" when asked if a port will be used. Heroku transparently proxies all requests.
* Your redis server can be found as part of the redis url. For example, for the url: ``redis://redistogo:h28h3wgh37fns7@crestfish.redistogo.com:12345/``
* The server is ``fishyfish.redistogo.com``
* The port is ``12345``
* The password is ``h28h3wgh37fns7``
11. Create a Procfile for Heroku: ``echo "web: node app.js" > Procfile``
12. Commit the Procfile:
.. code:: bash
git add -f Procfile config.json public/config.json && git commit -am "adding Procfile and configs for Heroku"
13. Push to heroku: ``git push heroku master``
* Ensure that a proper SSH key was added to your account, otherwise the push will not succeed!
14. Initialise a single dyno: ``heroku ps:scale web=1``
15. Visit your app!
If these instructions are unclear or if you run into trouble, please let us know by `filing an issue <https://github.com/designcreateplay/NodeBB/issues>`_.
Keeping it up to date
---------------------
If you wish to pull the latest changes from the git repository to your Heroku app:
1. Navigate to your repository at ``/path/to/nodebb``
2. ``git pull``
3. ``npm install``
4. ``node app --upgrade``
5. ``git commit -am "upgrading to latest nodebb"``
6. ``git push heroku master``

View File

@@ -0,0 +1,75 @@
Cloud 9 IDE
===========
The following are installation instructions for the `Cloud 9 <https://c9.io/>`_ web based IDE.
**Step 1:** Clone NodeBB into a new workspace from GitHub. You can use the following command from the terminal:
.. code:: bash
git clone git://github.com/designcreateplay/NodeBB.git nodebb
The nodebb command after the git url will create a file called nodebb so you have to CD into the file after you have cloned NodeBB.
**Step 2:** Install redis with Cloud9's package manager
.. code:: bash
nada-nix install redis
**Step 3:** Run your redis server on port 16379 - port 6379 tends to be already used on Cloud 9. The "&" makes the command run in the background. You can always terminate the process later. $IP is a Cloud 9 system variable containing the global ip of your server instance.
.. code:: bash
redis-server --port 16379 --bind $IP &
**Step 4:** Find out your instance's ip address so NodeBB can bind to it correctly. This is one of Cloud 9's demands and seems to be the only way it will work. You can't use $IP in your config.json either (which means you can't enter $IP in the node app --setup).
.. code:: bash
echo $IP
**Step 5:** Install NodeBB and it's dependencies:
.. code:: bash
npm install
**Step 6:** Run the nodebb setup utility:
.. code:: bash
node app --setup
URL of this installation should be set to 'http://workspace_name-c9-username.c9.io', replacing workspace_name with your workspace name and username with your username. Note that as NodeBB is currently using unsecure http for loading jQuery you will find it much easier using http:// instead of https:// for your base url. Otherwise jQuery won't load and NodeBB will break.
Port number isn't so important - Cloud9 may force you to use port 80 anyway. Just set it to 80. If this is another port, like 4567, that is also fine.
Use a port number to access NodeBB? Again, this doesn't seem to make a big difference. Set this to no. Either will work.
Host IP or address of your Redis instance: localhost (the output of the $IP Command is also acceptable)
IP or Hostname to bind to: Enter what your $IP value holds here found in step 4. It should look something like: 123.4.567.8
Host port of your Redis instance: 16379
Redis Password: Unless you have set one manually, Redis will be configured without a password. Leave this blank and press enter
First-time set-up will also require an Admin name, email address and password to be set.
And you're good to go! Don't use the Run button at the top if the IDE, it has been a little buggy for me. Besides, you're better off using the command line anyway. Run:
.. code:: bash
node app
And then open http://workspace_name-c9-username.c9.io in your browser.
Troubleshooting
---------------
A common problem is that the database hasn't been started. Make sure you have set Redis up correctly and ran
.. code:: bash
redis-server --port 16379 --bind $IP

View File

@@ -0,0 +1,47 @@
Heroku
======
**Note**: Installations to Heroku require a local machine with some flavour of unix, as NodeBB does not run on Windows.
1. Download and install `Heroku Toolbelt <https://toolbelt.heroku.com/>`_ for your operating system
2. Log into your Heroku account: ``heroku login``
3. Verify your Heroku account by adding a credit card (at http://heroku.com/verify)
4. Clone the repository: ``git clone https://github.com/designcreateplay/NodeBB.git /path/to/repo/clone``
5. ``cd /path/to/repo/clone``
6. Install dependencies locally ``npm install``
7. Create the heroku app: ``heroku create``
8. Enable WebSocket support (beta): ``heroku labs:enable websockets -a {APP_NAME}``, where ``{APP_NAME}`` is provided by Heroku, and looks something like ``adjective-noun-wxyz.herokuapp.com`` (NOTE: `See this doc <https://discussion.heroku.com/t/application-error/160>`_): drop the `.herokuapp.com` when entering ``{APP_NAME}`` above.
9. Enable `Redis To Go <https://addons.heroku.com/redistogo>`_ for your heroku account: ``heroku addons:add redistogo:nano``
10. Run the NodeBB setup script: ``node app --setup`` (information for your Heroku server and Redis to Go instance can be found in your account page)
* Your server name is found in your Heroku app's "settings" page, and looks something like ``adjective-noun-wxyz.herokuapp.com``
* Use any port number. It will be ignored.
* Specify "n" when asked if a port will be used. Heroku transparently proxies all requests.
* Your redis server can be found as part of the redis url. For example, for the url: ``redis://redistogo:h28h3wgh37fns7@crestfish.redistogo.com:12345/``
* The server is ``fishyfish.redistogo.com``
* The port is ``12345``
* The password is ``h28h3wgh37fns7``
11. Create a Procfile for Heroku: ``echo "web: node app.js" > Procfile``
12. Commit the Procfile:
.. code:: bash
git add -f Procfile config.json public/config.json && git commit -am "adding Procfile and configs for Heroku"
13. Push to heroku: ``git push heroku master``
* Ensure that a proper SSH key was added to your account, otherwise the push will not succeed!
14. Initialise a single dyno: ``heroku ps:scale web=1``
15. Visit your app!
If these instructions are unclear or if you run into trouble, please let us know by `filing an issue <https://github.com/designcreateplay/NodeBB/issues>`_.
Keeping it up to date
---------------------
If you wish to pull the latest changes from the git repository to your Heroku app:
1. Navigate to your repository at ``/path/to/nodebb``
2. ``git pull``
3. ``npm install``
4. ``node app --upgrade``
5. ``git commit -am "upgrading to latest nodebb"``
6. ``git push heroku master``

25
docs/installing/os.rst Normal file
View File

@@ -0,0 +1,25 @@
NodeBB Installation by OS
=========================
The following are step-by-step guides to help you get up and running.
.. note::
If your operating system is not listed here, please feel free to request a guide on our `community <https://community.nodebb.org>`_ or even better yet, submit one here.
.. toctree::
:hidden:
:maxdepth: 0
Ubuntu <os/ubuntu>
Debian <os/debian>
SmartOS <os/smartos>
Windows <os/windows8>
* :doc:`Ubuntu <os/ubuntu>`
* :doc:`Debian <os/debian>`
* :doc:`SmartOS <os/smartos>`
* :doc:`Windows <os/windows8>`
* `CentOS <https://blog.tommyparnell.com/installing-nodebb-on-centos-6-5/>`_ (external)

View File

@@ -0,0 +1,177 @@
Debian
======
The current Ubuntu guide is not completely compatible with Debian and there are some specificities and especially the NodeJS installation, and how to get latest Redis.
Requirements
^^^^^^^^^^^^^^^^^^^^^^^
NodeBB requires these software to be installed:
* Node.js at least 0.10 and greater
* Redis, version 2.6 or greater
* cURL installed, just do ``sudo apt-get install curl`` in order to install it
Node.js installation
^^^^^^^^^^^^^^^^^^^^^^^
Debian 7 and Debian 6 and older doesn't have `nodejs` packages included by default, but there are some solutions to install Node.js on your Debian distribution.
Wheezy Backport :
------------------
This solution is **ONLY for Debian 7**, simply run the following **as root** :
.. code:: bash
$ echo "deb http://ftp.us.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list
$ apt-get update
To install Node.js + NPM, run this :
.. code:: bash
$ apt-get install nodejs-legacy
$ curl --insecure https://www.npmjs.org/install.sh | bash
The following install a Node.js version who is greater than 0.8 (at 29 March 2014 : 0.10.21)
Compiling from the source :
------------------
This solution is for Debian 6 (Squeeze) and greater, in order to install NodeJS, run this **as root** :
.. code:: bash
$ sudo apt-get install python g++ make checkinstall
$ src=$(mktemp -d) && cd $src
$ wget -N http://nodejs.org/dist/node-latest.tar.gz
$ tar xzvf node-latest.tar.gz && cd node-v*
$ ./configure
$ fakeroot checkinstall -y --install=no --pkgversion $(echo $(pwd) | sed -n -re's/.+node-v(.+)$/\1/p') make -j$(($(nproc)+1)) install
$ sudo dpkg -i node_*
Get latest Software via DotDeb
^^^^^^^^^^^^^^^^^^^^^^^
Dotdeb is a repository containing packages to turn your Debian boxes into powerful, stable and up-to-date LAMP servers.
* Nginx,
* PHP 5.4 and 5.3 (useful PHP extensions : APC, imagick, Pinba, xcache, Xdebug, XHpro..)
* MySQL 5.5,
* Percona toolkit,
* Redis,
* Zabbix,
* Passenger…
Dotdeb supports :
* Debian 6.0 “Squeeze“ and 7 “Wheezy“
* both amd64 and i386 architectures
Debian 7 (Wheezy) :
------------------
For the complete DotDeb repositories :
.. code:: bash
$ sudo echo 'deb http://packages.dotdeb.org wheezy all' >> /etc/apt/sources.list
$ sudo echo 'deb-src http://packages.dotdeb.org wheezy all' >> /etc/apt/sources.list
After this, add the following GPC keys :
.. code:: bash
$ wget http://www.dotdeb.org/dotdeb.gpg
$ sudo apt-key add dotdeb.gpg
And update your package source :
.. code:: bash
$ sudo apt-get update
Debian 6 (Squeeze)
------------------
For the complete DotDeb repositories :
.. code:: bash
$ sudo echo 'deb http://packages.dotdeb.org squeeze all' >> /etc/apt/sources.list
$ sudo echo 'deb-src http://packages.dotdeb.org squeeze all' >> /etc/apt/sources.list
After this, add the following GPC keys :
.. code:: bash
$ wget http://www.dotdeb.org/dotdeb.gpg
$ sudo apt-key add dotdeb.gpg
And update your package source :
.. code:: bash
$ sudo apt-get update
Installing NodeBB
^^^^^^^^^^^^^^^^^^^^^^^
Now, we have NodeJS installed and Redis ready to be installed, run this command for install the base software stack :
.. code:: bash
$ apt-get install redis-server imagemagick git
Next clone this repository :
.. code:: bash
$ cd /path/to/nodebb/install/location
$ git clone git://github.com/designcreateplay/NodeBB.git nodebb
Now we are going to install all dependencies for NodeBB via NPM :
$ cd /path/to/nodebb/install/location/nodebb (or if you are on your install location directory run : cd nodebb)
$ npm install
Install NodeBB by running the app with `--setup` flag :
.. code:: bash
$ ./nodebb setup
1. `URL of this installation` is either your public ip address or your domain name pointing to that ip address.
**Example:** ``http://0.0.0.0`` or ``http://example.org``
2. ``Port number of your NodeBB`` is the port needed to access your site:
**Note:** If you do not proxy your port with something like nginx then port 80 is recommended for production.
3. If you used the above steps to setup your redis-server then use the default redis settings.
And after all.. let's run the NodeBB forum
.. code:: bash
$ ./nodebb start
**Note:** If you NodeBB or your server crash, your NodeBB instance will not reboot (snap), this is why you should take a look at the other way to start your NodeBB instance with helper programs such as ``supervisor`` and ``forever``, just :doc:`take a look here <../../running/index>` it's simple as a click!
Extras, tips and Advice
^^^^^^^^^^^^^^^^^^^^^^^
You should secure your NodeBB installation, `take a look here <https://github.com/designcreateplay/NodeBB#securing-nodebb>`_.
You should use Nginx (or similar) in order to reverse proxy your NodeBB installation on the port 80, :doc:`take a look here <../../configuring/proxies>`

View File

@@ -0,0 +1,133 @@
SmartOS
========
Requirements
----------------
NodeBB requires the following software to be installed:
* A version of Node.js at least 0.8 or greater.
* Redis, version 2.6 or greater (steps to install from Joyent's package repository given below).
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB server).
Server Access
----------------
1. Sign in your Joyent account: `Joyent.com <http://joyent.com>`_
2. Select: ``Create Instance``
3. Create the newest ``smartos nodejs`` image.
**Note:** The following steps have been tested with image: ``smartos nodejs 13.1.0``
4. Wait for your instance to show `Running` then click on its name.
5. Find your ``Login`` and admin password. If the ``Credentials`` section is missing, refresh the webpage.
**Example:** ``ssh root@0.0.0.0`` ``A#Ca{c1@3``
6. SSH into your server as the admin not root: ``ssh admin@0.0.0.0``
**Note:** For Windows users that do not have ssh installed, here is an option: `Cygwin.com <http://cygwin.com>`_
Installation
----------------
1. Install NodeBB's software dependencies:
.. code:: bash
$ sudo pkgin update
$ sudo pkgin install scmgit nodejs build-essential ImageMagick redis
If any of these failed:
.. code:: bash
$ pkgin search *failed-name*
$ sudo pkgin install *available-name*
2. **If needed** setup a redis-server with default settings as a service (automatically starts and restarts):
**Note:** These steps quickly setup a redis server but does not fine-tuned it for production.
**Note:** If you ran `redis-server` manually then exit out of it now.
.. code:: bash
$ svcadm enable redis
$ svcs
*-* If `svcs` shows "/pkgsrc/redis:default" in maintenance mode then:
.. code:: bash
$ scvadm clear redis
*-* To shut down your redis-server and keep it from restarting:
.. code:: bash
$ scvadm disable redis
*-* To start up your redis-server and have it always running:
.. code:: bash
$ scvadm enable redis
3. Move to where you want to create the nodebb folder:
.. code:: bash
$ cd /parent/directory/of/nodebb/
4. Clone NodeBB's repository:
.. code:: bash
$ git clone git://github.com/designcreateplay/NodeBB.git nodebb
5. Install NodeBB's npm dependencies:
.. code:: bash
$ cd nodebb/
$ npm install
6. Run NodeBB's setup script:
.. code:: bash
$ node app --setup
A. `URL of this installation` is either your public ip address from your ssh `Login` or your domain name pointing to that ip address.
**Example:** `http://0.0.0.0` or `http://example.org`
B. `Port number of your NodeBB` is the port needed to access your site:
**Note:** If you do not proxy your port with something like nginx then port 80 is recommended for production.
C. If you used the above steps to setup your redis-server then use the default redis settings.
7. Start NodeBB process:
**Run NodeBB manually:**
**Note:** This should not be used for production.
.. code:: bash
$ node app
8. Visit your app!
**Example:** With a port of 4567: ``http://0.0.0.0:4567`` or ``http://example.org:4567``
**Note:** With port 80 the `:80` does not need to be entered.
**Note:** If these instructions are unclear or if you run into trouble, please let us know by `filing an issue <https://github.com/designcreateplay/NodeBB/issues>`_.
Upgrading NodeBB
----------------
**Note:** Detailed upgrade instructions are listed in :doc:`Upgrading NodeBB <../../upgrading/index>`.

View File

@@ -0,0 +1,58 @@
Ubuntu
--------------------
First, we install our base software stack:
.. code:: bash
$ apt-get install git nodejs redis-server imagemagick
If you want to use MongoDB, LevelDB, or another database instead of Redis please look at the :doc:`Configuring Databases <../configuring/databases>` section.
**If your package manager only installed a version of Node.js that is less than 0.8 (e.g. Ubuntu 12.10, 13.04):**
.. code:: bash
$ add-apt-repository ppa:chris-lea/node.js
$ apt-get update && apt-get dist-upgrade
Next, clone this repository:
.. code:: bash
$ cd /path/to/nodebb/install/location
$ git clone git://github.com/designcreateplay/NodeBB.git nodebb
Obtain all of the dependencies required by NodeBB:
.. code:: bash
$ cd nodebb
$ npm install
Initiate the setup script by running the app with the ``setup`` flag:
.. code:: bash
$ ./nodebb setup
The default settings are for a local server running on the default port, with a redis store on the same machine/port.
Lastly, we run the forum.
.. code:: bash
$ ./nodebb start
NodeBB can also be started with helper programs, such as ``supervisor`` and ``forever``. :doc:`Take a look at the options here <../../running/index>`.

View File

@@ -0,0 +1,82 @@
Windows 8
==========
Required Software
---------------------
First, install the following programs:
* https://windows.github.com/
* http://nodejs.org/
* http://sourceforge.net/projects/redis/files/redis-2.6.10/
You may have to restart your computer.
Running NodeBB
---------------------
Start Redis Server
.. note::
The default location of Redis Server is
**C:\Program Files (x86)\Redis\StartRedisServer.cmd**
Open Git Shell, and type the following commands. Clone NodeBB repo:
.. code:: bash
git clone https://github.com/designcreateplay/NodeBB.git
Enter directory:
.. code:: bash
cd NodeBB
Install dependencies:
.. code:: bash
npm install
Run interactive installation:
.. code:: bash
node app.js
You may leave all of the options as default.
And you're done! After the installation, run
.. code:: bash
node app.js
You can visit your forum at ``http://127.0.0.1:4567/``
Developing on Windows
---------------------
It's a bit of a pain to shutdown and restart NodeBB everytime you make changes. First install supervisor:
.. code:: bash
npm install -g supervisor
Open up bash:
.. code:: bash
bash
And run NodeBB on "watch" mode:
.. code:: bash
./nodebb watch
It will launch NodeBB in development mode, and watch files that change and automatically restart your forum.

244
docs/make.bat Normal file
View File

@@ -0,0 +1,244 @@
@ECHO OFF
REM rmdir /s /q _build
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=_build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. xml to make Docutils-native XML files
echo. pseudoxml to make pseudoxml-XML files for display purposes
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\NodeBB.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\NodeBB.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %BUILDDIR%/..
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %BUILDDIR%/..
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
:end

121
docs/plugins/create.rst Normal file
View File

@@ -0,0 +1,121 @@
Writing Plugins for NodeBB
==========================
So you want to write a plugin for NodeBB, that's fantastic! There are a couple of things you need to know before starting that will help you out.
Like WordPress, NodeBB's plugins are built on top of a hook system in NodeBB. This system exposes parts of NodeBB to plugin creators in a controlled way, and allows them to alter content while it passes through, or execute certain behaviours when triggered.
See the full :doc:`list of hooks <hooks>` for more information.
Filters and Actions
------------------
There are two types of hooks: **filters** and **actions**.
**Filters** act on content, and can be useful if you want to alter certain pieces of content as it passes through NodeBB. For example, a filter may be used to alter posts so that any occurrences of "apple" gets changed to "orange". Likewise, filters may be used to beautify content (i.e. code filters), or remove offensive words (profanity filters).
**Actions** are executed at certain points of NodeBB, and are useful if you'd like to *do* something after a certain trigger. For example, an action hook can be used to notify an admin if a certain user has posted. Other uses include analytics recording, or automatic welcome posts on new user registration.
When you are writing your plugin, make sure a hook exists where you'd like something to happen. If a hook isn't present, `file an issue <https://github.com/designcreateplay/NodeBB/issues>`_ and we'll include it in the next version of NodeBB.
Configuration
------------------
Each plugin package contains a configuration file called ``plugin.json``. Here is a sample:
.. code:: json
{
"id": "my-plugin",
"name": "My Awesome Plugin",
"description": "Your plugin's description",
"url": "Absolute URL to your plugin or a Github repository",
"library": "./my-plugin.js",
"staticDirs": {
"images": "public/images"
},
"less": [
"assets/style.less"
],
"hooks": [
{ "hook": "filter:post.save", "method": "filter" },
{ "hook": "action:post.save", "method": "emailme" }
]
}
The ``id`` property is a unique name that identifies the plugin.
The ``library`` property is a relative path to the library in your package. It is automatically loaded by NodeBB (if the plugin is activated).
The ``staticDirs`` property is an object hash that maps out paths (relative to your plugin's root) to a directory that NodeBB will expose to the public at the route ``/plugins/{YOUR-PLUGIN-ID}``.
* e.g. The ``staticDirs`` hash in the sample configuration maps ``/path/to/your/plugin/public/images`` to ``/plugins/my-plugin/images``
The ``less`` property contains an array of paths (relative to your plugin's directory), that will be precompiled into the CSS served by NodeBB.
The ``hooks`` property is an array containing objects that tell NodeBB which hooks are used by your plugin, and what method in your library to invoke when that hook is called. Each object contains the following properties (those with a * are required):
* ``hook``, the name of the NodeBB hook
* ``method``, the method called in your plugin
* ``priority``, the relative priority of the method when it is eventually called (default: 10)
Writing the plugin library
------------------
The core of your plugin is your library file, which gets automatically included by NodeBB if your plugin is activated.
Each method you write into your library takes a certain number of arguments, depending on how it is called:
* Filters send a single argument through to your method, while asynchronous methods can also accept a callback.
* Actions send a number of arguments (the exact number depends how the hook is implemented). These arguments are listed in the :doc:`list of hooks <hooks>`.
Example library method
------------------
If we were to write method that listened for the ``action:post.save`` hook, we'd add the following line to the ``hooks`` portion of our ``plugin.json`` file:
.. code:: json
{ "hook": "action:post.save", "method": "myMethod" }
Our library would be written like so:
.. code:: javascript
var MyPlugin = {
myMethod: function(postData) {
// do something with postData here
}
};
Using NodeBB libraries to enhance your plugin
------------------
Occasionally, you may need to use NodeBB's libraries. For example, to verify that a user exists, you would need to call the ``exists`` method in the ``User`` class. To allow your plugin to access these NodeBB classes, use ``module.parent.require``:
.. code:: javascript
var User = module.parent.require('./user');
User.exists('foobar', function(err, exists) {
// ...
});
Installing the plugin
------------------
In almost all cases, your plugin should be published in `npm <https://npmjs.org/>`_, and your package's name should be prefixed "nodebb-plugin-". This will allow users to install plugins directly into their instances by running ``npm install``.
When installed via npm, your plugin **must** be prefixed with "nodebb-plugin-", or else it will not be found by NodeBB.
As of v0.0.5, "installing" a plugin by placing it in the ``/plugins`` folder is still supported, but keep in mind that the package ``id`` and its folder name must match exactly, or else NodeBB will not be able to load the plugin. *This feature may be deprecated in later versions of NodeBB*.
Testing
------------------
Run NodeBB in development mode:
.. code::
./nodebb dev
This will expose the plugin debug logs, allowing you to see if your plugin is loaded, and its hooks registered. Activate your plugin from the administration panel, and test it out.

193
docs/plugins/hooks.rst Normal file
View File

@@ -0,0 +1,193 @@
Available Hooks
=============
The following is a list of all hooks present in NodeBB. This list is intended to guide developers who are looking to write plugins for NodeBB. For more information, please consult :doc:`Writing Plugins for NodeBB <create>`.
There are two types of hooks, **filters**, and **actions**. Filters take an input (provided as a single argument), parse it in some way, and return the changed value. Actions take multiple inputs, and execute actions based on the inputs received. Actions do not return anything.
**Important**: This list is by no means exhaustive. Hooks are added on an as-needed basis (or if we can see a potential use case ahead of time), and all requests to add new hooks to NodeBB should be sent to us via the `issue tracker <https://github.com/designcreateplay/NodeBB/issues>`_.
Filters
----------
``filter:admin.header_build``
^^^^^^^^^^^^^^^^^^^^^
Allows plugins to create new navigation links in the ACP
``filter:post.save``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: A post's content (markdown text)
Executed whenever a post is created or edited, but before it is saved into the database.
``filter:post.get``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: A post object (javascript Object)
Executed whenever a post is retrieved, but before being sent to the client.
``filter:header.build``
^^^^^^^^^^^^^^^^^^^^^
**Allows plugins to add new navigation links to NodeBB**
``filter:post.parse``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: A post or signature's raw text (String)
Executed when a post or signature needs to be parsed from raw text to HTML (for output to client). This is useful if you'd like to use a parser to prettify posts, such as `Markdown <http://daringfireball.net/projects/markdown/>`_, or `BBCode <http://www.bbcode.org/>`_.
``filter:posts.custom_profile_info``
^^^^^^^^^^^^^^^^^^^^^
**Allows plugins to add custom profile information in the topic view's author post block**
``filter:register.check``
^^^^^^^^^^^^^^^^^^^^^
**Allows plugins to run checks on information and deny registration if necessary.**
``filter:scripts.get``
^^^^^^^^^^^^^^^^^^^^^
**Allows to add client-side JS to the header and queue up for minification on production**
``filter:uploadImage``
^^^^^^^^^^^^^^^^^^^^^
``filter:uploadFile``
^^^^^^^^^^^^^^^^^^^^^
``filter:widgets.getAreas``
^^^^^^^^^^^^^^^^^^^^^
``filter:widgets.getWidgets``
^^^^^^^^^^^^^^^^^^^^^
``filter:search.query``
^^^^^^^^^^^^^^^^^^^^^
``filter:post.parse``
^^^^^^^^^^^^^^^^^^^^^
``filter:messaging.parse``
^^^^^^^^^^^^^^^^^^^^^
``filter:sounds.get``
^^^^^^^^^^^^^^^^^^^^^
``filter:post.getPosts``
^^^^^^^^^^^^^^^^^^^^^
``filter:post.getFields``
^^^^^^^^^^^^^^^^^^^^^
``filter:auth.init``
^^^^^^^^^^^^^^^^^^^^^
``filter:composer.help``
^^^^^^^^^^^^^^^^^^^^^
``filter:topic.thread_tools``
^^^^^^^^^^^^^^^^^^^^^
``filter:user.create``
^^^^^^^^^^^^^^^^^^^^^
``filter:widget.render``
^^^^^^^^^^^^^^^^^^^^^
Actions
----------
``action:app.load``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: None
Executed when NodeBB is loaded, used to kickstart scripts in plugins (i.e. cron jobs, etc)
``action:page.load``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: An object containing the following properties:
* ``template`` - The template loaded
* ``url`` - Path to the page (relative to the site's base url)
``action:plugin.activate``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: A String containing the plugin's ``id`` (e.g. ``nodebb-plugin-markdown``)
Executed whenever a plugin is activated via the admin panel.
**Important**: Be sure to check the ``id`` that is sent in with this hook, otherwise your plugin will fire its registered hook method, even if your plugin was not the one that was activated.
``action:plugin.deactivate``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: A String containing the plugin's ``id`` (e.g. ``nodebb-plugin-markdown``)
Executed whenever a plugin is deactivated via the admin panel.
**Important**: Be sure to check the ``id`` that is sent in with this hook, otherwise your plugin will fire its registered hook method, even if your plugin was not the one that was deactivated.
``action:post.save``
^^^^^^^^^^^^^^^^^^^^^
**Argument(s)**: A post object (javascript Object)
Executed whenever a post is created or edited, after it is saved into the database.
``action:email.send``
^^^^^^^^^^^^^^^^^^^^^
``action:post.setField``
^^^^^^^^^^^^^^^^^^^^^
``action:topic.edit``
^^^^^^^^^^^^^^^^^^^^^
``action:post.edit``
^^^^^^^^^^^^^^^^^^^^^
``action:post.delete``
^^^^^^^^^^^^^^^^^^^^^
``action:post.restore``
^^^^^^^^^^^^^^^^^^^^^
``action:config.set``
^^^^^^^^^^^^^^^^^^^^^
``action:topic.save``
^^^^^^^^^^^^^^^^^^^^^
``action:user.create``
^^^^^^^^^^^^^^^^^^^^^
``action:topic.delete``
^^^^^^^^^^^^^^^^^^^^^
``action:user.set``
^^^^^^^^^^^^^^^^^^^^^
Parameters: field (str), value, type ('set', 'increment', or 'decrement')
Useful for things like awarding badges or achievements after a user has reached some value (ex. 100 posts)
``action:settings.set``
^^^^^^^^^^^^^^^^^^^^^
Parameters: hash (str), object (obj)
Useful if your plugins want to cache settings instead of pulling from DB everytime a method is called. Listen to this and refresh accordingly.

27
docs/resources.rst Normal file
View File

@@ -0,0 +1,27 @@
Developer's Resources
=====================
.. note::
This section is under construction.
Core
----
* `Building a new Admin Page <https://github.com/designcreateplay/NodeBB/wiki/How-to-build-a-new-Admin-Page>`_ (Out of date)
Plugins
-------
* `Developing plugins with Grunt and Coffeescript <https://github.com/frissdiegurke/nodebb-grunt-development>`_
* `Writing your first NodeBB plugin <http://burnaftercompiling.com/nodebb/writing-your-first-nodebb-plugin/>`_
Themes
------
Widgets
-------

45
docs/running/index.rst Normal file
View File

@@ -0,0 +1,45 @@
Running NodeBB
================
The preferred way to start and stop NodeBB is by invoking its executable:
* ``./nodebb start`` Starts the NodeBB server
* ``./nodebb stop`` Stops the NodeBB server
* Alternatively, you may use ``npm start`` and ``npm stop`` to do the same
The methods listed below are alternatives to starting NodeBB via the executable.
Simple Node.js Process
-----------------------
To start NodeBB, run it with ``node`` (some distributions use the executable ``nodejs``, please adjust accordingly):
.. code:: bash
$ cd /path/to/nodebb/install
$ node app
However, bear in mind that crashes will cause the NodeBB process to halt, bringing down your forum. Consider some of the more reliable options, below:
Supervisor Process
-----------------------
Using the `supervisor package <https://github.com/isaacs/node-supervisor>`_, you can have NodeBB restart itself if it crashes:
.. code:: bash
$ npm install -g supervisor
$ supervisor app
As ``supervisor`` by default continues to pipe output to ``stdout``, it is best suited to development builds.
Forever Daemon
-----------------------
Another way to keep NodeBB up is to use the `forever package <https://github.com/nodejitsu/forever>`_ via the command line interface, which can monitor NodeBB and re-launch it if necessary:
.. code:: bash
$ npm install -g forever
$ forever start app.js

61
docs/themes/create.rst vendored Normal file
View File

@@ -0,0 +1,61 @@
Creating a new NodeBB Theme
===========================
NodeBB is built on `Twitter Bootstrap <twitter.github.com/bootstrap/>`_, which makes theming incredibly simple.
Packaging for NodeBB
-------------------------------------
NodeBB expects any installed themes to be installed via ``npm``. Each individual theme is an npm package, and users can install themes through the command line, ex.:
.. code:: bash
npm install nodebb-theme-modern-ui
The theme's folder must contain at least two files for it to be a valid theme:
1. ``theme.json``
2. ``theme.less``
``theme.less`` is where your theme's styles will reside. NodeBB expects LESS to be present in this file, and will precompile it down to CSS on-demand. For more information regarding LESS, take a look at `the project homepage <http://lesscss.org/>`_.
**Note**: A *suggested* organization for ``theme.less`` is to ``@import`` multiple smaller files instead of placing all of the styles in the main ``theme.less`` file.
Configuration
-------------------------------------
The theme configuration file is a simple JSON string containing all appropriate meta data regarding the theme. Please take note of the following properties:
* ``id``: A unique id for a theme (e.g. "my-theme")
* ``name``: A user-friendly name for the theme (e.g. "My Theme")
* ``description``: A one/two line description about the theme (e.g. "This is the theme I made for my personal NodeBB")
* ``screenshot``: A filename (in the same folder) that is a preview image (ideally, 370x250, or an aspect ratio of 1.48:1)
* ``url``: A fully qualified URL linking back to the theme's homepage/project
Child Themes
-------------------------------------
If your theme is based off of another theme, simply modify your LESS files to point to the other theme as a base:
topic.less
^^^^^^^^^^
.. code: css
@import "../nodebb-theme-vanilla/topic";
.topic .main-post {
.post-info {
font-size: 20px; // My theme specific override
}
}
As ``topic.less`` from the theme ``nodebb-theme-vanilla`` was imported, those styles are automatically incorporated into your theme.
**Important**: If you depend on another theme, make sure that your theme specifically states this in its ``package.json``. For example, for the above theme, as we depend on ``nodebb-theme-vanilla``, we would explicitly state this by adding a new section into the ``package.json`` file:
.. code:: json
"peerDependencies": {
"nodebb-theme-vanilla": "~0.0.1"
}

194
docs/themes/templates.rst vendored Normal file
View File

@@ -0,0 +1,194 @@
Rendering Engine
=================
How it works
------------------------------------------------------
Every page has an associated API call, Template file, and Language File.
For example, if you navigate to `/topic/351/nodebb-wiki <http://community.nodebb.org/topic/351/nodebb-wiki>`_, the application will load three resources. The API return `/api/topic/351/nodebb-wiki <http://community.nodebb.org/api/topic/351/nodebb-wiki>`_ and the `template <http://community.nodebb.org/templates/topic.tpl>`_, in this example, "topic.tpl", and the appropriate `language file <community.nodebb.org/language/en_GB/topic.json>`_ "topic.json"*.
Just prepend api/ to the URL's path name to discover the JSON return. Any value in that return can be utilized in your template.
*A page's name corresponds to the template and language's filename (ex. ``http://domain.com/topic/xyz`` correlates to ``topic.tpl``). Sometimes this is not the case - ex. ``/user/xyz`` loads ``account.tpl``. Have a look at the ``custom_mapping`` section in ``public/templates/config.json`` for more details.
Templating Basics
------------------------------------------------------
Using the API return as your guide, you can utilize any of those values in your template/logic. Using the above API call as an example, for anything in the root level of the return you can do something like:
.. code:: html
{topic_name}
To access values in objects:
.. code:: html
{privileges.read}
And finally you can loop through arrays and create blocks like so:
.. code:: html
<!-- BEGIN posts -->
{posts.content}
<!-- END posts -->
The above will create X copies of the above block, for each item in the posts array.
Templating Logic
------------------------------------------------------
NodeBB's templating system implements some basic logic. Using the same API call as above for our example. You can write IF conditionals like so:
.. code:: html
<!-- IF unreplied -->
This thread is unreplied!
<!-- ENDIF unreplied -->
Another example:
.. code:: html
<!-- IF !disableSocialButtons -->
<button>Share on Facebook</button>
<!-- ELSE -->
Sharing has been disabled.
<!-- ENDIF !disableSocialButtons -->
We can check for the length of an array like so:
.. code:: html
<!-- IF posts.length -->
There be some posts
<!-- ENDIF posts.length -->
While looping through an array, we can check if our current index is the @first or @last like so:
.. code:: html
<!-- BEGIN posts -->
<!-- IF @first -->
<h1>Main Author: {posts.username}</h1>
<!-- ENDIF @first -->
{posts.content}
<!-- IF @last -->
End of posts. Click here to scroll to the top.
<!-- ENDIF @last -->
<!-- END posts -->
For more advanced documentation, have a look at the `templates.js <https://github.com/psychobunny/templates.js>`_ repository
Exposing template variables to client-side JavaScript
------------------------------------------------------
There are two ways of letting our JS know about data from the server-side, apart from WebSockets (TODO: will be covered in a different article).
Via jQuery.get
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If we require data from a different page we can make a ``$.get`` call to any other API call. For example, if we wanted to know more about a specific user we could make a call like so:
.. code:: javascript
$.get(RELATIVE_PATH + '/api/user/psychobunny', {}, function(user) {
console.log(user)
});
See this API call in action: http://community.nodebb.org/api/user/psychobunny
Via Template Variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In topic.tpl for example, we can add a hidden input like so:
.. code:: html
<input type="hidden" template-variable="pageCount" value="{pageCount}" />
The template system will immediately parse all of these and expose them via the following method:
.. code:: html
ajaxify.variables.get('pageCount');
This is the ideal method of letting JS know about important variables within the template.
Internationalization
---------------------
The template engine interfaces with the internationalization system as well. We can embed variables into language strings. Let's use `this API call <http://community.nodebb.org/api/register>`_ as well as this `language file <http://community.nodebb.org/language/en_GB/register.json>`_ as an example. We can now do something like the following:
.. code:: html
[[register:help.username_restrictions, {minimumUsernameLength}, {maximumUsernameLength}]]
Which will translate this string:
.. code:: html
A unique username between %1 and %2 characters
to
.. code:: html
A unique username between 2 and 16 characters
Advanced Topics
---------------------
Dynamically requiring and rendering a template file from client-side JavaScript
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The template engine lazy loads templates on an as-needed basis and caches them. If your code requires a template or partial on-demand then you can :
.. code:: javascript
ajaxify.loadTemplate('myTemplate', function(myTemplate) {
var html = templates.parse(myTemplate, myData);
});
You can also access the invidual blocks inside each template, which is handy for doing things like (for example) rendering a new post's ``<li>`` and dynamically sticking it in an already loaded ``<ul>``
.. code:: html
Some stuff here...
<!-- BEGIN posts -->
We just want to pull this block only.
<!-- END posts -->
... some stuff here
.. code:: javascript
ajaxify.loadTemplate('myTemplate', function(myTemplate) {
var block = templates.getBlock(myTemplate, 'posts');
var html = templates.parse(block, myData);
});
Rendering templates on server-side Node.js
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The templating system hooks into Express just like most other templating frameworks. Just use either ``app.render`` or ``res.render`` to parse the appropriate template.
.. code:: javascript
res.render('myTemplate', myData);
.. code:: javascript
app.render('myTemplate', myData, function(err, parsedTemplate) {
console.log(parsedTemplate);
});

148
docs/upgrading/index.rst Normal file
View File

@@ -0,0 +1,148 @@
Upgrading NodeBB
======================
NodeBB's periodic releases are located in the `Releases <https://github.com/designcreateplay/NodeBB/releases>`_. These releases contain what is usually considered the most bug-free code, and is designed to be used on production-level instances of NodeBB.
You can utilise git to install a specific version of NodeBB, and upgrade periodically as new releases are made.
To obtain the latest fixes and features, you can also ``git clone`` the latest version directly from the repository (``master`` branch), although its stability cannot be guaranteed. Core developers will attempt to ensure that every commit results in a working client, even if individual features may not be 100% complete.
***As always***, the NodeBB team is not responsible for any misadventures, loss of data, data corruption, or any other bad things that may arise due to a botched upgrade - so please **don't forget to back up** before beginning!
Upgrade Path
-------------------
NodeBB's upgrade path is designed so that upgrading between versions is straightforward. NodeBB will provide upgrade compatibility (via the ``--upgrade`` flag) between the latest version of a lower branch and the latest version of the higher branch. For example, if ``v0.2.2`` is the latest version in the ``v0.2.x`` branch, you can switch to the ``v0.3.x`` branch and suffer no ill effects. Upgrading from ``v0.2.0`` to ``v0.3.x`` is not supported, and NodeBB will warn you when attempting to upgrade that you are not upgrading cleanly.
Upgrading between patch revisions
^^^^^^^^^^^^^^^^^^^^^^^^^
*e.g. v0.1.0 to v0.1.1*
Patch revisions contain bugfixes and other minor changes. Updating to the latest version of code for your specific version branch is all that is usually required.
**Execute steps 1 through 3.**
Upgrading between minor revisions
^^^^^^^^^^^^^^^^^^^^^^^^^
*e.g. v0.1.3 to v0.2.0*
Minor revisions contain new features or substantial changes that are still backwards compatible. They may also contain dependent packages that require upgrading, and other features may be deprecated (but would ideally still be supported).
Execute steps 1 through 4.
.. (the block below was commented out in original, so I'm leaving it commented out)
Upgrading between major revisions
^^^^^^^^^^^^^^^^^^^^^^^^^
*e.g. v0.2.4 to v1.0.0*
Major revisions contain breaking changes that are done in a backwards incompatible manner. Complete rewrites of core functionality are not uncommon. In all cases, NodeBB will attempt to provide migration tools so that a transition is possible.
Execute all of the steps.
Upgrade Steps
-------------------
**Note**: After upgrading between revisions (i.e. v0.0.4 to v0.0.5), it may be necessary to run the following upgrade steps to ensure that any data schema changes are properly upgraded as well:
1. Shut down your forum
^^^^^^^^^^^^^^^^^^^^^^^^^
While it is possible to upgrade NodeBB while it is running, it is definitely not recommended, particularly if it is an active forum:
.. code:: bash
$ cd /path/to/nodebb
$ ./nodebb stop
2. Back up your data
^^^^^^^^^^^^^^^^^^^^^^^^^
.. note::
This section is incomplete, please take care to back up your files properly!
Backing up Redis
~~~~~~~~~~~~~~
As with all upgrades, the first step is to **back up your data**! Nobody likes database corruption/misplacement.
All of the textual data stored in NodeBB is found in a ``.rdb`` file. On typical installs of Redis, the main database is found at ``/var/lib/redis/dump.rdb``.
**Store this file somewhere safe.**
Backing up MongoDB
~~~~~~~~~~~~~~
TBA
Backing up LevelDB
~~~~~~~~~~~~~~
As LevelDB is simply a collection of flat files, just copy the database over to a safe location, ex.
.. code:: bash
cp -r /path/to/db /path/to/backups
**Store this file somewhere safe.**
Avatars
~~~~~~~~~~~~~~
Uploaded images (avatars) are stored in /public/uploads. Feel free to back up this folder too:
.. code:: bash
cd /path/to/nodebb/public
tar -czf ~/nodebb_assets.tar.gz ./uploads
3. Grab the latest and greatest code
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Navigate to your NodeBB: ``$ cd /path/to/nodebb``.
If you are upgrading from a lower branch to a higher branch, switch branches as necessary. ***Make sure you are completely up-to-date on your current branch!***.
For example, if upgrading from ``v0.1.4`` to ``v0.2.0``:
.. code:: bash
$ git fetch # Grab the latest code from your current branch
$ git checkout v0.2.x
If not upgrading between branches, skip the commands above.
Then, grab the latest code:
.. code:: bash
$ git pull
This should retrieve the latest (and greatest) version of NodeBB from the repository.
Alternatively, download and extract the latest versioned copy of the code from `the Releases Page <https://github.com/designcreateplay/NodeBB/releases>`_. Overwrite any files as necessary. This method is not supported.
4. Run the NodeBB upgrade script
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This script will install any missing dependencies, upgrade any plugins or themes (if an upgrade is available), and migrate the database if necessary.
.. code:: bash
$ ./nodebb upgrade
**Note**: ``./nodebb upgrade`` is only available after v0.3.0. If you are running an earlier version, run these instead:
* ``npm install``
* ``ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update``
* ``node app --upgrade``
6. Start up NodeBB & Test!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You should now be running the latest version of NodeBB.

78
docs/widgets/create.rst Normal file
View File

@@ -0,0 +1,78 @@
Writing Widgets for NodeBB
==========================
See the original `blog post <http://blog.nodebb.org/widgets-system/>`_ for a high level overview and screenshots of the widget system.
Embedding HTML and JavaScript
-----------------------------
You don't need to be a developer to figure this out. Head over to the Themes control panel and click on the Widgets tab. Create a new HTML widget by dragging and dropping the widget onto whatever template you want.
Copy and paste HTML or JavaScript into the widget and hit save - you're done!
You can optionally give your widget a container by dragging and dropping from the containers section onto your selected widget.
If you're looking for some sample scripts, head over to our `plugins section <http://community.nodebb.org/category/7/nodebb-plugins>`_ and look for any topic labelled ``nodebb-script-xyz``. Don't forget to submit your scripts and ideas as well!
Creating Widgets
-----------------------------
You can define widgets in both plugins and themes. If you're building a plugin which simply delivers a widget (or collection of widgets), we strongly suggest you follow the ``nodebb-widget-xyz`` nomenclature instead when publishing.
Registering your widget
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Listen to this hook to register your widget:
.. code:: json
"hook": "filter:widgets.getWidgets", "method": "defineWidgets", "callbacked": true
Pass this back in the array:
.. code:: json
{
widget: "widget_namespace",
name: "My Widget",
description: "Short description of what it does.",
content: "<input type=\"text\" name=\"myKey\" class=\"form-control\" />"
}
``Content`` defines the form that is displayed to customize your widget in the admin panel.
Listening to your widget
^^^^^^^^^^^^^^^^^^^^^^^^^^^
NodeBB core will call your widget on the appropriate page load by way of the hooks system. The hook will be named after your widget's namespace (see previous example) - like so: ``filter:widget.render:widget_namespace``
This will pass in an object with the following useful properties:
* ``obj.area`` - will have ``location``, ``template``, ``url``
* ``obj.data`` - will have your admin-defined data; in the example from the previous section you will be exposed an ``obj.data.myKey``
Defining Widget Areas in Themes
------------------------------------
A Widget Area is characterized by a template and a location. Themes can share widgets if they define the same Widget Areas. If an admin switches themes, widgets that were previously defined in a Widget Area incompatible with the new theme are saved.
Listen to this hook to register your Widget Area:
.. code:: json
"hook": "filter:widgets.getAreas", "method": "defineWidgetAreas", "callbacked": true
Pass this back in the array:
.. code:: json
{
name: "Category Sidebar",
template: "category.tpl",
location: "sidebar"
}
And that's all. You can define as many Widget Areas in your theme as you wish. If you're still stuck, have a look at `this commit <https://github.com/designcreateplay/nodebb-theme-cerulean/commit/50e49a9da5a89484fa8001bbda2e613b69f18e86>`_ which upgraded the Cerulean theme to use the widget system.

View File

@@ -1 +0,0 @@
*.rss

View File

@@ -1 +0,0 @@
*.rss

View File

@@ -1,4 +1,4 @@
[
[
{
"name": "Announcements",
"description": "Announcements regarding our community",

View File

@@ -0,0 +1,74 @@
[
{
"field": "title",
"value": "NodeBB"
},
{
"field": "postDelay",
"value": 10
},
{
"field": "minimumPostLength",
"value": 8
},
{
"field": "allowGuestPosting",
"value": 0
},
{
"field": "allowGuestSearching",
"value": 0
},
{
"field": "allowTopicsThumbnail",
"value": 0
},
{
"field": "allowRegistration",
"value": 1
},
{
"field": "allowLocalLogin",
"value": 1
},
{
"field": "allowFileUploads",
"value": 0
},
{
"field": "maximumFileSize",
"value": 2048
},
{
"field": "minimumTitleLength",
"value": 3
},
{
"field": "maximumTitleLength",
"value": 255
},
{
"field": "minimumUsernameLength",
"value": 2
},
{
"field": "maximumUsernameLength",
"value": 16
},
{
"field": "minimumPasswordLength",
"value": 6
},
{
"field": "maximumSignatureLength",
"value": 255
},
{
"field": "maximumProfileImageSize",
"value": 256
},
{
"field": "chatMessagesToDisplay",
"value": 50
}
]

113
install/databases.js Normal file
View File

@@ -0,0 +1,113 @@
"use strict";
var async = require('async'),
prompt = require('prompt'),
nconf = require('nconf'),
winston = require('winston'),
questions = {};
function success(err, config, callback) {
if (!config) {
return callback(new Error('aborted'));
}
var database = (config.redis || config.mongo || config.level) ? config.secondary_database : config.database;
function dbQuestionsSuccess(err, databaseConfig) {
if (!databaseConfig) {
return callback(new Error('aborted'));
}
// Translate redis properties into redis object
if(database === 'redis') {
config.redis = {
host: databaseConfig['redis:host'],
port: databaseConfig['redis:port'],
password: databaseConfig['redis:password'],
database: databaseConfig['redis:database']
};
if (config.redis.host.slice(0, 1) === '/') {
delete config.redis.port;
}
} else if (database === 'mongo') {
config.mongo = {
host: databaseConfig['mongo:host'],
port: databaseConfig['mongo:port'],
username: databaseConfig['mongo:username'],
password: databaseConfig['mongo:password'],
database: databaseConfig['mongo:database']
};
} else if (database === 'level') {
config.level = {
database: databaseConfig['level:database']
};
} else {
return callback(new Error('unknown database : ' + database));
}
var allQuestions = questions.redis.concat(questions.mongo.concat(questions.level));
for(var x=0;x<allQuestions.length;x++) {
delete config[allQuestions[x].name];
}
callback(err, config);
}
if(database === 'redis') {
if (config['redis:host'] && config['redis:port']) {
dbQuestionsSuccess(null, config);
} else {
prompt.get(questions.redis, dbQuestionsSuccess);
}
} else if(database === 'mongo') {
if (config['mongo:host'] && config['mongo:port']) {
dbQuestionsSuccess(null, config);
} else {
prompt.get(questions.mongo, dbQuestionsSuccess);
}
} else if(database === 'level') {
if (config['level:database']) {
dbQuestionsSuccess(null, config);
} else {
prompt.get(questions.level, dbQuestionsSuccess);
}
} else {
return callback(new Error('unknown database : ' + database));
}
}
function getSecondaryDatabaseModules(config, next) {
prompt.get({
"name": "secondary_db_modules",
"description": "Which database modules should " + config.secondary_database + " store?",
"default": nconf.get('secondary_db_modules') || "hash, list, sets, sorted"
}, function(err, db) {
config.secondary_db_modules = db.secondary_db_modules;
success(err, config, next);
});
}
module.exports = function(err, config, databases, callback) {
var allowedDBs = Object.keys(databases);
allowedDBs.forEach(function(db) {
questions[db] = require('./../src/database/' + db).questions;
});
async.waterfall([
function(next) {
winston.info('Now configuring ' + config.database + ' database:');
success(err, config, next);
},
function(config, next) {
winston.info('Now configuring ' + config.secondary_database + ' database:');
if (config.secondary_database && allowedDBs.indexOf(config.secondary_database) !== -1) {
getSecondaryDatabaseModules(config, next);
} else {
next(err, config);
}
}
], callback);
};

101
loader.js Normal file
View File

@@ -0,0 +1,101 @@
"use strict";
var nconf = require('nconf'),
fs = require('fs'),
pidFilePath = __dirname + '/pidfile',
output = fs.openSync(__dirname + '/logs/output.log', 'a'),
start = function() {
var fork = require('child_process').fork,
nbb_start = function() {
if (timesStarted > 3) {
console.log('\n[loader] Experienced three start attempts in 10 seconds, most likely an error on startup. Halting.');
return nbb_stop();
}
timesStarted++;
if (startTimer) {
clearTimeout(startTimer);
}
startTimer = setTimeout(resetTimer, 1000*10);
nbb = fork('./app', process.argv.slice(2), {
env: {
'NODE_ENV': process.env.NODE_ENV
}
});
nbb.on('message', function(message) {
if (message && typeof message === 'object' && message.action) {
if (message.action === 'restart') {
nbb_restart();
}
}
});
nbb.on('exit', function(code, signal) {
if (code) {
nbb_start();
} else {
nbb_stop();
}
});
},
nbb_stop = function() {
if (startTimer) {
clearTimeout(startTimer);
}
nbb.kill();
if (fs.existsSync(pidFilePath)) {
var pid = parseInt(fs.readFileSync(pidFilePath, { encoding: 'utf-8' }), 10);
if (process.pid === pid) {
fs.unlinkSync(pidFilePath);
}
}
},
nbb_restart = function() {
nbb.removeAllListeners('exit').on('exit', function() {
nbb_start();
});
nbb.kill();
},
resetTimer = function() {
clearTimeout(startTimer);
timesStarted = 0;
},
timesStarted = 0,
startTimer;
process.on('SIGINT', nbb_stop);
process.on('SIGTERM', nbb_stop);
process.on('SIGHUP', nbb_restart);
nbb_start();
},
nbb;
nconf.argv();
// Start the daemon!
if (nconf.get('daemon') !== false) {
// Check for a still-active NodeBB process
if (fs.existsSync(pidFilePath)) {
try {
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
process.kill(pid, 0);
process.exit();
} catch (e) {
fs.unlinkSync(pidFilePath);
}
}
// Daemonize and record new pid
require('daemon')({
stdout: output
});
fs.writeFile(__dirname + '/pidfile', process.pid);
start();
} else {
start();
}

1
logs/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.log

58
minifier.js Normal file
View File

@@ -0,0 +1,58 @@
var uglifyjs = require('uglify-js'),
less = require('less'),
async = require('async'),
fs = require('fs'),
Minifier = {
js: {},
css: {}
};
/* Javascript */
Minifier.js.minify = function (scripts, callback) {
try {
var minified = uglifyjs.minify(scripts);
callback(minified.code);
} catch(err) {
process.send({
action: 'error',
error: err
});
}
};
Minifier.js.concatenate = function(scripts, callback) {
async.map(scripts, function(path, next) {
fs.readFile(path, { encoding: 'utf-8' }, next);
}, function(err, contents) {
if (err) {
process.send({
action: 'error',
error: err
});
} else {
callback(contents.reduce(function(output, src) {
return output.length ? output + ';\n' + src : src;
}, ''));
}
});
};
process.on('message', function(payload) {
var executeCallback = function(data) {
process.send({
action: payload.action,
data: data
});
};
switch(payload.action) {
case 'js.minify':
Minifier.js.minify(payload.scripts, executeCallback);
break;
case 'js.concatenate':
Minifier.js.concatenate(payload.scripts, executeCallback);
break;
}
})

View File

@@ -5,6 +5,7 @@
(function(module) {
'use strict';
/*global before*/
var utils = require('./../public/src/utils.js'),
path = require('path'),
@@ -14,6 +15,12 @@
nconf.file({ file: path.join(__dirname, '../config.json') });
nconf.defaults({
base_dir: path.join(__dirname,'..'),
themes_path: path.join(__dirname, '../node_modules'),
upload_url: path.join(path.sep, '../uploads', path.sep),
views_dir: path.join(__dirname, '../public/templates')
});
var dbType = nconf.get('database'),
testDbConfig = nconf.get('test_database'),
@@ -26,17 +33,21 @@
"Please, add parameters for test database in config.json\n"+
"For example (redis):\n"+
'"test_database": {' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "6379",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "6379",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
'}\n'+
" or (mongo):\n" +
'"test_database": {' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "27017",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
'"test_database": {' + '\n' +
' "host": "127.0.0.1",' + '\n' +
' "port": "27017",' + '\n' +
' "password": "",' + '\n' +
' "database": "1"' + '\n' +
'}\n'+
" or (level):\n" +
'"test_database": {' + '\n' +
' "database": "/path/to/database"' + '\n' +
'}\n'+
"==========================================================="
);
@@ -55,23 +66,31 @@
nconf.set(dbType, testDbConfig);
db = require('../src/database');
before(function(done) {
var db = require('../src/database'),
meta = require('../src/meta');
before(function(done) {
db.init(function(err) {
//Clean up
db.flushdb(function(err) {
if(err){
if(err) {
winston.error(err);
throw new Error(err);
} else {
winston.info('test_database flushed');
done();
}
//TODO: data seeding, if needed at all
winston.info('test_database flushed');
meta.configs.init(function () {
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
var webserver = require('../src/webserver'),
sockets = require('../src/socket.io');
sockets.init(webserver.server);
done();
});
});
});
});

123
nodebb
View File

@@ -4,51 +4,126 @@
# $1 action
# $2 subaction
node="$(which nodejs 2>/dev/null)";
if [ $? -gt 0 ];
then node="$(which node)";
fi
function pidExists() {
if [ -e "pidfile" ];
then
kill -s 0 $(cat pidfile);
if [ !$? ];
then return 1;
else return 0;
fi
else
return 0;
fi
}
case "$1" in
start)
node app
echo "Starting NodeBB";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
if [ -f "./logs/output.log" ]; # Preserve the last output log
then
mv ./logs/output.log ./logs/output.1.log;
fi;
# Start the loader daemon
"$node" loader -d "$@"
;;
stop)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB is already stopped.";
else
echo "Stopping NodeBB. Goodbye!";
kill $(cat pidfile);
fi
;;
reload|restart)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB could not be restarted, as a running instance could not be found.";
else
echo "Restarting NodeBB.";
kill -1 $(cat pidfile);
fi
;;
status)
pidExists;
if [ 0 -eq $? ];
then
echo "NodeBB is not running";
echo " \"./nodebb start\" to launch the NodeBB server";
else
echo "NodeBB Running (pid $(cat pidfile))";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
echo " \"./nodebb restart\" to restart NodeBB";
fi
;;
log)
clear;
tail -F ./logs/output.log;
;;
upgrade)
npm install
ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm install
ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update
"$node" app --upgrade
touch package.json
echo -e "\n\e[00;32mNodeBB Dependencies up-to-date!\e[00;00m";
;;
setup)
"$node" app --setup "$@"
;;
reset)
"$node" app --reset --$2
;;
dev)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
NODE_ENV=development node app
NODE_ENV=development "$node" loader --no-daemon "$@"
;;
watch)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
NODE_ENV=development supervisor -q --extensions 'node|js|tpl' -- app $1
;;
language)
case "$2" in
check)
node app --language="check"
;;
*)
echo "Language Settings"
echo $"Usage: $0 language {check}"
echo ''
column -s ' ' -t <<< '
check Compare language files against the /en directory
'
;;
esac
NODE_ENV=development supervisor -q --ignore public/templates --extensions 'node|js|tpl|less' -- app "$@"
;;
*)
echo "Welcome to NodeBB"
echo $"Usage: $0 {start|dev|watch|language}"
echo $"Usage: $0 {start|stop|reload|restart|log|setup|reset|upgrade|dev|watch}"
echo ''
column -s ' ' -t <<< '
start Start NodeBB in production mode
dev Start NodeBB in development mode
start Start the NodeBB server
stop Stops the NodeBB server
reload Restarts NodeBB
restart Restarts NodeBB
log Opens the logging interface (useful for debugging)
setup Runs the NodeBB setup script
reset Disables all plugins, restores the default theme.
upgrade Run NodeBB upgrade scripts, ensure packages are up-to-date
dev Start NodeBB in interactive development mode
watch Start NodeBB in development mode and watch for changes
language Language settings
'
exit 1
esac

1190
npm-shrinkwrap.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPLv3 or later",
"description": "NodeBB Forum",
"version": "0.2.0",
"version": "0.4.2",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -10,47 +10,47 @@
},
"main": "app.js",
"scripts": {
"test": "mocha ./tests"
"start": "./nodebb start",
"stop": "./nodebb stop",
"test": "mocha ./tests -t 10000"
},
"dependencies": {
"socket.io": "~0.9.16",
"express": "3.2.0",
"express-namespace": "~0.1.1",
"emailjs": "0.3.4",
"cookie": "0.0.6",
"passport": "0.1.17",
"socket.io": "~0.9.16",
"socket.io-wildcard": "~0.1.1",
"passport": "~0.2.0",
"passport-local": "0.1.6",
"passport-twitter": "0.1.5",
"passport-google-oauth": "0.1.5",
"passport-facebook": "0.1.5",
"less-middleware": "0.1.12",
"marked": "0.2.8",
"bcrypt": "0.7.5",
"async": "~0.2.8",
"node-imagemagick": "0.1.8",
"gm": "1.14.2",
"gravatar": "1.0.6",
"nconf": "~0.6.7",
"sitemap": "~0.6.0",
"request": "~2.25.0",
"reds": "~0.2.4",
"sitemap": "~0.7.1",
"winston": "~0.7.2",
"rss": "~0.2.0",
"request": "~2.34.0",
"prompt": "~0.2.11",
"uglify-js": "~2.4.0",
"validator": "~1.5.1",
"nodebb-plugin-mentions": "~0.1.16",
"nodebb-plugin-markdown": "~0.2.1",
"nodebb-theme-vanilla": "~0.0.10",
"nodebb-theme-cerulean": "0.0.10",
"cron": "~1.0.1",
"semver": "~2.2.1"
},
"optionalDependencies": {
"redis": "0.8.3",
"mongodb": "~1.3.19",
"connect-redis": "1.4.5",
"connect-mongo": "0.4.0",
"hiredis": "~0.1.15"
"validator": "~3.4.0",
"cron": "~1.0.4",
"semver": "~2.2.1",
"string": "~1.7.0",
"xregexp": "~2.0.0",
"bcryptjs": "~0.7.10",
"less": "~1.6.3",
"daemon": "~1.1.0",
"underscore": "~1.6.0",
"mkdirp": "~0.3.5",
"rimraf": "~2.2.6",
"npm": "^1.4.6",
"nodebb-plugin-mentions": "~0.4.0",
"nodebb-plugin-markdown": "~0.4.1",
"nodebb-widget-essentials": "~0.0.21",
"nodebb-theme-vanilla": "~0.0.19",
"nodebb-theme-lavender": "~0.0.25",
"nodebb-plugin-soundpack-default": "~0.1.1",
"nodebb-plugin-dbsearch": "0.0.9"
},
"devDependencies": {
"mocha": "~1.13.0"
@@ -61,7 +61,7 @@
"engines": {
"node": ">=0.8"
},
"contributors": [
"maintainers": [
{
"name": "Andrew Rodrigues",
"email": "andrew@designcreateplay.com",
@@ -76,22 +76,6 @@
"name": "Barış Soner Uşaklı",
"email": "baris@designcreateplay.com",
"url": "https://github.com/barisusakli"
},
{
"name": "Andrew Darqui",
"url": "https://github.com/adarqui"
},
{
"name": "Damian Bushong",
"url": "https://github.com/damianb"
},
{
"name": "Matt Smith",
"url": "https://github.com/soimafreak"
},
{
"name": "Quinton Marchi",
"url": "https://github.com/iamcardinal"
}
]
}

View File

@@ -0,0 +1,7 @@
{
"new_topic_button": "موضوع جديد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لماذا لا تحاول نشر واحد؟<br />",
"browsing": "يتصفح",
"no_replies": "لم يرد أحد",
"share_this_category": "Share this category"
}

View File

@@ -0,0 +1,49 @@
{
"invalid-data": "Invalid Data",
"not-logged-in": "You don't seem to be logged in.",
"invalid-cid": "Invalid Category ID",
"invalid-tid": "Invalid Topic ID",
"invalid-pid": "Invalid Post ID",
"invalid-uid": "Invalid User ID",
"invalid-username": "Invalid Username",
"invalid-email": "Invalid Email",
"invalid-title": "Invalid title",
"invalid-user-data": "Invalid User Data",
"invalid-password": "Invalid Password",
"invalid-pagination-value": "Invalid pagination value",
"username-taken": "Username taken",
"email-taken": "Email taken",
"user-banned": "User banned",
"no-category": "Category doesn't exist",
"no-topic": "Topic doesn't exist",
"no-post": "Post doesn't exist",
"no-group": "Group doesn't exist",
"no-user": "User doesn't exist",
"no-teaser": "Teaser doesn't exist",
"no-privileges": "You don't have enough privileges for this action.",
"category-disabled": "Category disabled",
"topic-locked": "Topic Locked",
"still-uploading": "Please wait for uploads to complete.",
"content-too-short": "Please enter a longer post. At least %1 characters.",
"title-too-short": "Please enter a longer title. At least %1 characters.",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
"too-many-posts": "You can only post every %1 seconds.",
"file-too-big": "Maximum allowed file size is %1 kbs",
"cant-vote-self-post": "You cannot vote for your own post",
"already-favourited": "You already favourited this post",
"already-unfavourited": "You alread unfavourited this post",
"cant-ban-other-admins": "You can't ban other admins!",
"invalid-image-type": "Invalid image type",
"group-name-too-short": "Group name too short",
"group-already-exists": "Group already exists",
"group-name-change-not-allowed": "Group name change not allowed",
"post-already-deleted": "Post already deleted",
"post-already-restored": "Post already restored",
"topic-already-deleted": "Topic already deleted",
"topic-already-restored": "Topic already restored",
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
"invalid-file": "Invalid File",
"uploads-are-disabled": "Uploads are disabled",
"signature-too-long": "Signature can't be longer than %1 characters!",
"cant-chat-with-yourself": "You can't chat with yourself!"
}

View File

@@ -0,0 +1,7 @@
{
"stats.online": "حالياً على الموقع",
"stats.users": "مستخدمين",
"stats.topics": "مواضيع",
"stats.posts": "مشاركات",
"success": "نجاح"
}

View File

@@ -0,0 +1,70 @@
{
"home": "الصفحة الرئيسية",
"search": "بحث",
"buttons.close": "أغلق",
"403.title": "غير مسموح بالدخول",
"403.message": "يبدو أنك قد تعثر على الصفحة التي لم يكن لديك الوصول إليها. ربما يجب عليك <a href='/login'> تسجيل الدخول </a> ",
"404.title": "لم يتم العثور",
"404.message": "يبدو أنك قد تعثرت على صفحة غير موجودة. عودة إلى الصفحة الرئيسية.",
"500.title": "خطأ داخلي.",
"500.message": "عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!",
"register": "تسجيل",
"login": "دخول",
"please_log_in": "Please Log In",
"logout": "تسجيل الخروج",
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"save_changes": "حفظ التغييرات",
"close": "أغلق",
"pagination": "Pagination",
"header.admin": "مشرف",
"header.recent": "حديث",
"header.unread": "غير مقروء",
"header.popular": "Popular",
"header.users": "المستخدمين",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.search": "بحث",
"header.profile": "ملف",
"notifications.loading": "تحميل التبليغات",
"chats.loading": "تحميل الدردشات",
"motd.welcome": "مرحبا بكم NodeBB، منصة مناقشة المستقبل",
"previouspage": "Previous Page",
"nextpage": "Next Page",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"online": "Online",
"users": "Users",
"topics": "Topics",
"posts": "Posts",
"views": "Views",
"reputation": "Reputation",
"read_more": "read more",
"posted_ago_by_guest": "posted %1 by Guest",
"posted_ago_by": "posted %1 by %2",
"posted_ago": "posted %1",
"posted_in_ago_by_guest": "posted in %1 %2 by Guest",
"posted_in_ago_by": "posted in %1 %2 by %3",
"posted_in_ago": "posted in %1 %2",
"replied_ago": "replied %1",
"user_posted_ago": "%1 posted %2",
"guest_posted_ago": "Guest posted %1",
"last_edited_by_ago": "last edited by %1 %2",
"norecentposts": "No Recent Posts",
"norecenttopics": "No Recent Topics",
"recentposts": "Recent Posts",
"recentips": "Recently Logged In IPs",
"away": "Away",
"dnd": "Do not Disturb",
"invisible": "Invisible",
"offline": "Offline",
"email": "Email",
"language": "Language",
"guest": "Guest",
"guests": "Guests"
}

View File

@@ -0,0 +1,5 @@
{
"name": "العربية",
"code": "ar",
"dir": "rtl"
}

View File

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

View File

@@ -0,0 +1,7 @@
{
"chat.chatting_with": "الدردشة مع <span id=\"chat-with-name\"></span>",
"chat.placeholder": "اكتب رسالة دردشة هنا، وإضغط ENTER لإرسال",
"chat.send": "أرسل",
"chat.no_active": "لا يوجد لديك دردشات نشطة.",
"chat.user_typing": "%1 is typing ..."
}

View File

@@ -0,0 +1,18 @@
{
"title": "إعلام",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"back_to_home": "العودة إلى NodeBB",
"outgoing_link": "رابط خارجي",
"outgoing_link_message": "أنت الأن ترحل",
"continue_to": "أكمل إلى",
"return_to": "إرجع إلى",
"new_notification": "New Notification",
"you_have_unread_notifications": "You have unread notifications.",
"user_made_post": "<strong>%1</strong> made a new post",
"new_message_from": "New message from <strong>%1</strong>",
"upvoted_your_post": "<strong>%1</strong> has upvoted your post.",
"favourited_your_post": "<strong>%1</strong> has favourited your post.",
"user_flagged_post": "<strong>%1</strong> flagged a post.",
"user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>"
}

View File

@@ -0,0 +1,15 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

View File

@@ -0,0 +1,7 @@
{
"title": "Recent",
"day": "يوم",
"week": "أسبوع",
"month": "شهر",
"no_recent_topics": "There are no recent topics."
}

View File

@@ -0,0 +1,18 @@
{
"register": "تسجيل",
"help.email": "افتراضيا، سيتم إخفاء بريدك الإلكتروني من الجمهور.",
"help.username_restrictions": "اسم مستخدم فريدة من نوعها بين1% و2% حرفا. يمكن للآخرين ذكرك @ <'span id='your-username> اسم المستخدم </span>.",
"help.minimum_password_length": "كلمتك السر يجب أن تكون على الأقل متألفة من 1% أحرف",
"email_address": "عنوان البريد الإلكتروني",
"email_address_placeholder": "ادخل عنوان البريد الإلكتروني",
"username": "اسم المستخدم",
"username_placeholder": "أدخل اسم المستخدم",
"password": "كلمة السر",
"password_placeholder": "أدخل كلمة السر",
"confirm_password": "تأكيد كلمة السر",
"confirm_password_placeholder": "تأكيد كلمة السر",
"register_now_button": "قم بالتسجيل الآن",
"alternative_registration": "التسجيل البديلة",
"terms_of_use": "Terms of Use",
"agree_to_terms_of_use": "I agree to the Terms of Use"
}

View File

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

View File

@@ -0,0 +1,6 @@
{
"success": "Success",
"topic-post": "You have successfully posted.",
"authentication-successful": "Authentication Successful",
"settings-saved": "Settings saved!"
}

View File

@@ -0,0 +1,94 @@
{
"topic": "موضوع",
"topic_id": "Topic ID",
"topic_id_placeholder": "Enter topic ID",
"no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "No posts found!",
"post_is_deleted": "This post is deleted!",
"profile": "ملف",
"posted_by": "Posted by %1",
"posted_by_guest": "Posted by Guest",
"chat": "دردشة",
"notify_me": "تنبه من ردود جديدة في هذا الموضوع",
"quote": "اقتبس",
"reply": "رد",
"edit": "صحح",
"delete": "حذف",
"restore": "Restore",
"move": "انقل",
"fork": "فرع",
"banned": "محظور",
"link": "رابط",
"share": "شارك",
"tools": "أدوات",
"flag": "Flag",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"flag_confirm": "Are you sure you want to flag this post?",
"flag_success": "This post has been flagged for moderation.",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"watch.title": "Be notified of new replies in this topic",
"share_this_post": "Share this Post",
"thread_tools.title": "أدوات الموضوع",
"thread_tools.markAsUnreadForAll": "علم غير مقروء",
"thread_tools.pin": "علق الموضوع",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "قفل الموضوع",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "نقل الموضوع",
"thread_tools.move_all": "Move All",
"thread_tools.fork": "تفرع الموضوع",
"thread_tools.delete": "حذف الموضوع",
"thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
"thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
"topic_lock_success": "Topic has been successfully locked.",
"topic_unlock_success": "Topic has been successfully unlocked.",
"topic_pin_success": "Topic has been successfully pinned.",
"topic_unpin_success": "Topic has been successfully unpinned.",
"topic_move_success": "This topic has been successfully moved to %1",
"post_delete_confirm": "Are you sure you want to delete this post?",
"post_restore_confirm": "Are you sure you want to restore this post?",
"post_delete_error": "Could not delete this post!",
"post_restore_error": "Could not restore this post!",
"load_categories": "تحميل الفئات",
"disabled_categories_note": "الفئات المجلدة رمادية",
"confirm_move": "انقل",
"confirm_fork": "فرع",
"favourite": "المفضل",
"favourites": "المفضلة",
"favourites.has_no_favourites": "ليس لديك أي ردود مفضلة. فضل بعد الردود لرؤيتهم هنا",
"loading_more_posts": "تحميل المزيد من المشاركات",
"move_topic": "نقل الموضوع",
"move_post": "نقل الرد",
"post_moved": "Post moved!",
"fork_topic": "فرع الموضوع",
"topic_will_be_moved_to": "هذا الموضوع سوف ينقل إلى فئة",
"fork_topic_instruction": "إضغط على الردود لتفريعهم",
"fork_no_pids": "لم تختار أي رد",
"fork_success": "تفريع الموضوع بنجاح!",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to %1",
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them.",
"more_users_and_guests": "%1 more user(s) and %2 guest(s)",
"more_users": "%1 more user(s)",
"more_guests": "%1 more guest(s)"
}

View File

@@ -0,0 +1,9 @@
{
"title": "Unread",
"no_unread_topics": "ليس هناك أي موضوع غير مقروء",
"load_more": "حمل المزيد",
"mark_as_read": "Mark as Read",
"selected": "Selected",
"all": "All",
"topics_marked_as_read.success": "Topics marked as read!"
}

View File

@@ -0,0 +1,62 @@
{
"banned": "محظور",
"offline": "ليس موجود حالياً",
"username": "إسم المستخدم",
"email": "البريد الإلكتروني",
"fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني",
"location": "موقع",
"age": "عمر",
"joined": "تاريخ التسجيل",
"lastonline": "تاريخ أخر دخول",
"profile": "Profile",
"profile_views": "مشاهد الملف",
"reputation": "سمعة",
"favourites": "Favourites",
"followers": "أتباع",
"following": "يتبع",
"signature": "توقيع",
"gravatar": "Gravatar",
"birthday": "عيد ميلاد",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"profile_update_success": "Profile has been updated successfully!",
"change_picture": "تغيير الصورة",
"edit": "صحح",
"uploaded_picture": "صورة تم تحميلها",
"upload_new_picture": "تحميل صورة جديدة",
"current_password": "Current Password",
"change_password": "تغيير كلمة السر",
"change_password_error": "Invalid Password!",
"change_password_error_wrong_current": "Your current password is not correct!",
"change_password_error_length": "Password too short!",
"change_password_error_match": "Passwords must match!",
"change_password_error_privileges": "You do not have the rights to change this password.",
"change_password_success": "Your password is updated!",
"confirm_password": "تأكيد كلمة السر",
"password": "كلمة السر",
"username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as <strong>%1</strong>",
"upload_picture": "تحميل الصورة",
"upload_a_picture": "تحميل صورة",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"settings": "Settings",
"show_email": "أظهر بريدي الإلكتروني",
"digest_label": "Subscribe to Digest",
"digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule",
"digest_off": "Off",
"digest_daily": "Daily",
"digest_weekly": "Weekly",
"digest_monthly": "Monthly",
"has_no_follower": "هذا المستخدم ليس لديه أي أتباع :(",
"follows_no_one": "هذا المستخدم لا يتبع أحد :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page",
"notification_sounds": "Play a sound when you receive a notification."
}

View File

@@ -0,0 +1,8 @@
{
"latest_users": "أحدث المستخدمين",
"top_posters": "أكثر المشتركين",
"most_reputation": "أعلى سمعة",
"search": "بحث",
"enter_username": "أدخل اسم مستخدم للبحث",
"load_more": "حمل المزيد"
}

View File

@@ -0,0 +1,7 @@
{
"new_topic_button": "Nové téma",
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
"browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl",
"share_this_category": "Share this category"
}

View File

@@ -0,0 +1,49 @@
{
"invalid-data": "Invalid Data",
"not-logged-in": "You don't seem to be logged in.",
"invalid-cid": "Invalid Category ID",
"invalid-tid": "Invalid Topic ID",
"invalid-pid": "Invalid Post ID",
"invalid-uid": "Invalid User ID",
"invalid-username": "Invalid Username",
"invalid-email": "Invalid Email",
"invalid-title": "Invalid title",
"invalid-user-data": "Invalid User Data",
"invalid-password": "Invalid Password",
"invalid-pagination-value": "Invalid pagination value",
"username-taken": "Username taken",
"email-taken": "Email taken",
"user-banned": "User banned",
"no-category": "Category doesn't exist",
"no-topic": "Topic doesn't exist",
"no-post": "Post doesn't exist",
"no-group": "Group doesn't exist",
"no-user": "User doesn't exist",
"no-teaser": "Teaser doesn't exist",
"no-privileges": "You don't have enough privileges for this action.",
"category-disabled": "Category disabled",
"topic-locked": "Topic Locked",
"still-uploading": "Please wait for uploads to complete.",
"content-too-short": "Please enter a longer post. At least %1 characters.",
"title-too-short": "Please enter a longer title. At least %1 characters.",
"title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.",
"too-many-posts": "You can only post every %1 seconds.",
"file-too-big": "Maximum allowed file size is %1 kbs",
"cant-vote-self-post": "You cannot vote for your own post",
"already-favourited": "You already favourited this post",
"already-unfavourited": "You alread unfavourited this post",
"cant-ban-other-admins": "You can't ban other admins!",
"invalid-image-type": "Invalid image type",
"group-name-too-short": "Group name too short",
"group-already-exists": "Group already exists",
"group-name-change-not-allowed": "Group name change not allowed",
"post-already-deleted": "Post already deleted",
"post-already-restored": "Post already restored",
"topic-already-deleted": "Topic already deleted",
"topic-already-restored": "Topic already restored",
"topic-thumbnails-are-disabled": "Topic thumbnails are disabled.",
"invalid-file": "Invalid File",
"uploads-are-disabled": "Uploads are disabled",
"signature-too-long": "Signature can't be longer than %1 characters!",
"cant-chat-with-yourself": "You can't chat with yourself!"
}

View File

@@ -0,0 +1,7 @@
{
"stats.online": "Online",
"stats.users": "Uživatelé",
"stats.topics": "Témata",
"stats.posts": "Příspěvky",
"success": "úspěch"
}

View File

@@ -0,0 +1,70 @@
{
"home": "Domů",
"search": "Hledat",
"buttons.close": "Zavřít",
"403.title": "Přístup odepřen",
"403.message": "K této stránce nemáte přístup. Zkuste se <a href='/login'>přihlásit</a>?",
"404.title": "Stránka nenalezena",
"404.message": "Tato stránka bohužel neexistuje. Vraťte se na <a href='/'>domovskou stránku</a>.",
"500.title": "Neznámá chyba",
"500.message": "Jejda, vypadá to, že se něco pokazilo.",
"register": "Registrovat",
"login": "Přihlásit se",
"please_log_in": "Please Log In",
"logout": "Odhlásit se",
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"save_changes": "Uložit změny",
"close": "Zrušit",
"pagination": "Pagination",
"header.admin": "Administrace",
"header.recent": "Aktuality",
"header.unread": "Nepřečtené",
"header.popular": "Populární",
"header.users": "Uživatelé",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.search": "Hledat",
"header.profile": "Můj profil",
"notifications.loading": "Načítání upozornění",
"chats.loading": "Načítání grafů",
"motd.welcome": "Vítejte na NodeBB, diskusní platforma buducnosti.",
"previouspage": "Předchozí stránka",
"nextpage": "Další stránka",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"online": "Online",
"users": "Users",
"topics": "Topics",
"posts": "Příspěvky",
"views": "Zobrazení",
"reputation": "Reputation",
"read_more": "read more",
"posted_ago_by_guest": "posted %1 by Guest",
"posted_ago_by": "posted %1 by %2",
"posted_ago": "posted %1",
"posted_in_ago_by_guest": "posted in %1 %2 by Guest",
"posted_in_ago_by": "posted in %1 %2 by %3",
"posted_in_ago": "posted in %1 %2",
"replied_ago": "replied %1",
"user_posted_ago": "%1 posted %2",
"guest_posted_ago": "Guest posted %1",
"last_edited_by_ago": "last edited by %1 %2",
"norecentposts": "No Recent Posts",
"norecenttopics": "No Recent Topics",
"recentposts": "Nedávné příspěvky",
"recentips": "Recently Logged In IPs",
"away": "Pryč",
"dnd": "Nerušit",
"invisible": "Neviditelný",
"offline": "Offline",
"email": "Email",
"language": "Language",
"guest": "Guest",
"guests": "Guests"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Czech",
"code": "cs",
"dir": "ltr"
}

View File

@@ -0,0 +1,8 @@
{
"username": "Username / Email",
"remember_me": "Zapamatovat si mě?",
"forgot_password": "Zapomněli jste heslo?",
"alternative_logins": "Další způsoby přihlášení",
"failed_login_attempt": "Přihlášení se nezdařilo, zkuste to prosím znovu.",
"login_successful": "Přihlášení proběhlo úspěšně!"
}

View File

@@ -0,0 +1,7 @@
{
"chat.chatting_with": "Chat s <span id=\"chat-with-name\"></span>",
"chat.placeholder": "napište zprávu sem a zmáčkněte enter pro odeslání",
"chat.send": "Odeslat",
"chat.no_active": "Nemáte žádné aktivní konverzace.",
"chat.user_typing": "%1 is typing ..."
}

View File

@@ -0,0 +1,18 @@
{
"title": "Upozornění",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"back_to_home": "Zpět na úvodní stránku",
"outgoing_link": "Odkaz mimo fórum",
"outgoing_link_message": "Nyní opouštíte fórum",
"continue_to": "Přejít na",
"return_to": "Vrátit se na ",
"new_notification": "New Notification",
"you_have_unread_notifications": "You have unread notifications.",
"user_made_post": "<strong>%1</strong> made a new post",
"new_message_from": "New message from <strong>%1</strong>",
"upvoted_your_post": "<strong>%1</strong> has upvoted your post.",
"favourited_your_post": "<strong>%1</strong> has favourited your post.",
"user_flagged_post": "<strong>%1</strong> flagged a post.",
"user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>"
}

View File

@@ -0,0 +1,15 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

View File

@@ -0,0 +1,7 @@
{
"title": "Nedávné",
"day": "Den",
"week": "Týden",
"month": "Měsíc",
"no_recent_topics": "There are no recent topics."
}

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