mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-09 23:45:45 +01:00
merge fork with upstream master
This commit is contained in:
15
.tx/config
15
.tx/config
@@ -15,6 +15,7 @@ trans.he = public/language/he/category.json
|
|||||||
trans.hu = public/language/hu/category.json
|
trans.hu = public/language/hu/category.json
|
||||||
trans.it = public/language/it/category.json
|
trans.it = public/language/it/category.json
|
||||||
trans.nb = public/language/nb/category.json
|
trans.nb = public/language/nb/category.json
|
||||||
|
trans.nl = public/language/nl/category.json
|
||||||
trans.pl = public/language/pl/category.json
|
trans.pl = public/language/pl/category.json
|
||||||
trans.pt_BR = public/language/pt_BR/category.json
|
trans.pt_BR = public/language/pt_BR/category.json
|
||||||
trans.ru = public/language/ru/category.json
|
trans.ru = public/language/ru/category.json
|
||||||
@@ -39,6 +40,7 @@ trans.he = public/language/he/login.json
|
|||||||
trans.hu = public/language/hu/login.json
|
trans.hu = public/language/hu/login.json
|
||||||
trans.it = public/language/it/login.json
|
trans.it = public/language/it/login.json
|
||||||
trans.nb = public/language/nb/login.json
|
trans.nb = public/language/nb/login.json
|
||||||
|
trans.nl = public/language/nl/login.json
|
||||||
trans.pl = public/language/pl/login.json
|
trans.pl = public/language/pl/login.json
|
||||||
trans.pt_BR = public/language/pt_BR/login.json
|
trans.pt_BR = public/language/pt_BR/login.json
|
||||||
trans.ru = public/language/ru/login.json
|
trans.ru = public/language/ru/login.json
|
||||||
@@ -62,6 +64,7 @@ trans.he = public/language/he/recent.json
|
|||||||
trans.hu = public/language/hu/recent.json
|
trans.hu = public/language/hu/recent.json
|
||||||
trans.it = public/language/it/recent.json
|
trans.it = public/language/it/recent.json
|
||||||
trans.nb = public/language/nb/recent.json
|
trans.nb = public/language/nb/recent.json
|
||||||
|
trans.nl = public/language/nl/recent.json
|
||||||
trans.pl = public/language/pl/recent.json
|
trans.pl = public/language/pl/recent.json
|
||||||
trans.pt_BR = public/language/pt_BR/recent.json
|
trans.pt_BR = public/language/pt_BR/recent.json
|
||||||
trans.ru = public/language/ru/recent.json
|
trans.ru = public/language/ru/recent.json
|
||||||
@@ -85,6 +88,7 @@ trans.he = public/language/he/unread.json
|
|||||||
trans.hu = public/language/hu/unread.json
|
trans.hu = public/language/hu/unread.json
|
||||||
trans.it = public/language/it/unread.json
|
trans.it = public/language/it/unread.json
|
||||||
trans.nb = public/language/nb/unread.json
|
trans.nb = public/language/nb/unread.json
|
||||||
|
trans.nl = public/language/nl/unread.json
|
||||||
trans.pl = public/language/pl/unread.json
|
trans.pl = public/language/pl/unread.json
|
||||||
trans.pt_BR = public/language/pt_BR/unread.json
|
trans.pt_BR = public/language/pt_BR/unread.json
|
||||||
trans.ru = public/language/ru/unread.json
|
trans.ru = public/language/ru/unread.json
|
||||||
@@ -108,6 +112,7 @@ trans.he = public/language/he/footer.json
|
|||||||
trans.hu = public/language/hu/footer.json
|
trans.hu = public/language/hu/footer.json
|
||||||
trans.it = public/language/it/footer.json
|
trans.it = public/language/it/footer.json
|
||||||
trans.nb = public/language/nb/footer.json
|
trans.nb = public/language/nb/footer.json
|
||||||
|
trans.nl = public/language/nl/footer.json
|
||||||
trans.pl = public/language/pl/footer.json
|
trans.pl = public/language/pl/footer.json
|
||||||
trans.pt_BR = public/language/pt_BR/footer.json
|
trans.pt_BR = public/language/pt_BR/footer.json
|
||||||
trans.ru = public/language/ru/footer.json
|
trans.ru = public/language/ru/footer.json
|
||||||
@@ -131,6 +136,7 @@ trans.he = public/language/he/modules.json
|
|||||||
trans.hu = public/language/hu/modules.json
|
trans.hu = public/language/hu/modules.json
|
||||||
trans.it = public/language/it/modules.json
|
trans.it = public/language/it/modules.json
|
||||||
trans.nb = public/language/nb/modules.json
|
trans.nb = public/language/nb/modules.json
|
||||||
|
trans.nl = public/language/nl/modules.json
|
||||||
trans.pl = public/language/pl/modules.json
|
trans.pl = public/language/pl/modules.json
|
||||||
trans.pt_BR = public/language/pt_BR/modules.json
|
trans.pt_BR = public/language/pt_BR/modules.json
|
||||||
trans.ru = public/language/ru/modules.json
|
trans.ru = public/language/ru/modules.json
|
||||||
@@ -154,6 +160,7 @@ trans.he = public/language/he/register.json
|
|||||||
trans.hu = public/language/hu/register.json
|
trans.hu = public/language/hu/register.json
|
||||||
trans.it = public/language/it/register.json
|
trans.it = public/language/it/register.json
|
||||||
trans.nb = public/language/nb/register.json
|
trans.nb = public/language/nb/register.json
|
||||||
|
trans.nl = public/language/nl/register.json
|
||||||
trans.pl = public/language/pl/register.json
|
trans.pl = public/language/pl/register.json
|
||||||
trans.pt_BR = public/language/pt_BR/register.json
|
trans.pt_BR = public/language/pt_BR/register.json
|
||||||
trans.ru = public/language/ru/register.json
|
trans.ru = public/language/ru/register.json
|
||||||
@@ -177,6 +184,7 @@ trans.he = public/language/he/user.json
|
|||||||
trans.hu = public/language/hu/user.json
|
trans.hu = public/language/hu/user.json
|
||||||
trans.it = public/language/it/user.json
|
trans.it = public/language/it/user.json
|
||||||
trans.nb = public/language/nb/user.json
|
trans.nb = public/language/nb/user.json
|
||||||
|
trans.nl = public/language/nl/user.json
|
||||||
trans.pl = public/language/pl/user.json
|
trans.pl = public/language/pl/user.json
|
||||||
trans.pt_BR = public/language/pt_BR/user.json
|
trans.pt_BR = public/language/pt_BR/user.json
|
||||||
trans.ru = public/language/ru/user.json
|
trans.ru = public/language/ru/user.json
|
||||||
@@ -200,6 +208,7 @@ trans.he = public/language/he/global.json
|
|||||||
trans.hu = public/language/hu/global.json
|
trans.hu = public/language/hu/global.json
|
||||||
trans.it = public/language/it/global.json
|
trans.it = public/language/it/global.json
|
||||||
trans.nb = public/language/nb/global.json
|
trans.nb = public/language/nb/global.json
|
||||||
|
trans.nl = public/language/nl/global.json
|
||||||
trans.pl = public/language/pl/global.json
|
trans.pl = public/language/pl/global.json
|
||||||
trans.pt_BR = public/language/pt_BR/global.json
|
trans.pt_BR = public/language/pt_BR/global.json
|
||||||
trans.ru = public/language/ru/global.json
|
trans.ru = public/language/ru/global.json
|
||||||
@@ -223,6 +232,7 @@ trans.he = public/language/he/notifications.json
|
|||||||
trans.hu = public/language/hu/notifications.json
|
trans.hu = public/language/hu/notifications.json
|
||||||
trans.it = public/language/it/notifications.json
|
trans.it = public/language/it/notifications.json
|
||||||
trans.nb = public/language/nb/notifications.json
|
trans.nb = public/language/nb/notifications.json
|
||||||
|
trans.nl = public/language/nl/notifications.json
|
||||||
trans.pl = public/language/pl/notifications.json
|
trans.pl = public/language/pl/notifications.json
|
||||||
trans.pt_BR = public/language/pt_BR/notifications.json
|
trans.pt_BR = public/language/pt_BR/notifications.json
|
||||||
trans.ru = public/language/ru/notifications.json
|
trans.ru = public/language/ru/notifications.json
|
||||||
@@ -246,6 +256,7 @@ trans.he = public/language/he/reset_password.json
|
|||||||
trans.hu = public/language/hu/reset_password.json
|
trans.hu = public/language/hu/reset_password.json
|
||||||
trans.it = public/language/it/reset_password.json
|
trans.it = public/language/it/reset_password.json
|
||||||
trans.nb = public/language/nb/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.pl = public/language/pl/reset_password.json
|
||||||
trans.pt_BR = public/language/pt_BR/reset_password.json
|
trans.pt_BR = public/language/pt_BR/reset_password.json
|
||||||
trans.ru = public/language/ru/reset_password.json
|
trans.ru = public/language/ru/reset_password.json
|
||||||
@@ -269,6 +280,7 @@ trans.he = public/language/he/users.json
|
|||||||
trans.hu = public/language/hu/users.json
|
trans.hu = public/language/hu/users.json
|
||||||
trans.it = public/language/it/users.json
|
trans.it = public/language/it/users.json
|
||||||
trans.nb = public/language/nb/users.json
|
trans.nb = public/language/nb/users.json
|
||||||
|
trans.nl = public/language/nl/users.json
|
||||||
trans.pl = public/language/pl/users.json
|
trans.pl = public/language/pl/users.json
|
||||||
trans.pt_BR = public/language/pt_BR/users.json
|
trans.pt_BR = public/language/pt_BR/users.json
|
||||||
trans.ru = public/language/ru/users.json
|
trans.ru = public/language/ru/users.json
|
||||||
@@ -292,6 +304,7 @@ trans.he = public/language/he/language.json
|
|||||||
trans.hu = public/language/hu/language.json
|
trans.hu = public/language/hu/language.json
|
||||||
trans.it = public/language/it/language.json
|
trans.it = public/language/it/language.json
|
||||||
trans.nb = public/language/nb/language.json
|
trans.nb = public/language/nb/language.json
|
||||||
|
trans.nl = public/language/nl/language.json
|
||||||
trans.pl = public/language/pl/language.json
|
trans.pl = public/language/pl/language.json
|
||||||
trans.pt_BR = public/language/pt_BR/language.json
|
trans.pt_BR = public/language/pt_BR/language.json
|
||||||
trans.ru = public/language/ru/language.json
|
trans.ru = public/language/ru/language.json
|
||||||
@@ -315,6 +328,7 @@ trans.he = public/language/he/pages.json
|
|||||||
trans.hu = public/language/hu/pages.json
|
trans.hu = public/language/hu/pages.json
|
||||||
trans.it = public/language/it/pages.json
|
trans.it = public/language/it/pages.json
|
||||||
trans.nb = public/language/nb/pages.json
|
trans.nb = public/language/nb/pages.json
|
||||||
|
trans.nl = public/language/nl/pages.json
|
||||||
trans.pl = public/language/pl/pages.json
|
trans.pl = public/language/pl/pages.json
|
||||||
trans.pt_BR = public/language/pt_BR/pages.json
|
trans.pt_BR = public/language/pt_BR/pages.json
|
||||||
trans.ru = public/language/ru/pages.json
|
trans.ru = public/language/ru/pages.json
|
||||||
@@ -338,6 +352,7 @@ trans.he = public/language/he/topic.json
|
|||||||
trans.hu = public/language/hu/topic.json
|
trans.hu = public/language/hu/topic.json
|
||||||
trans.it = public/language/it/topic.json
|
trans.it = public/language/it/topic.json
|
||||||
trans.nb = public/language/nb/topic.json
|
trans.nb = public/language/nb/topic.json
|
||||||
|
trans.nl = public/language/nl/topic.json
|
||||||
trans.pl = public/language/pl/topic.json
|
trans.pl = public/language/pl/topic.json
|
||||||
trans.pt_BR = public/language/pt_BR/topic.json
|
trans.pt_BR = public/language/pt_BR/topic.json
|
||||||
trans.ru = public/language/ru/topic.json
|
trans.ru = public/language/ru/topic.json
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# <img alt="NodeBB" src="http://i.imgur.com/3yj1n6N.png" />
|
# <img alt="NodeBB" src="http://i.imgur.com/3yj1n6N.png" />
|
||||||
[](https://david-dm.org/designcreateplay/nodebb)
|
[](https://david-dm.org/designcreateplay/nodebb)
|
||||||
|
[](https://codeclimate.com/github/designcreateplay/NodeBB)
|
||||||
|
|
||||||
**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.
|
**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.
|
||||||
|
|
||||||
|
|||||||
11
loader.js
11
loader.js
@@ -1,6 +1,6 @@
|
|||||||
var fork = require('child_process').fork,
|
var fork = require('child_process').fork,
|
||||||
start = function() {
|
start = function() {
|
||||||
var nbb = fork('./app', process.argv.slice(2), {
|
nbb = fork('./app', process.argv.slice(2), {
|
||||||
env: {
|
env: {
|
||||||
'NODE_ENV': process.env.NODE_ENV
|
'NODE_ENV': process.env.NODE_ENV
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,13 @@ var fork = require('child_process').fork,
|
|||||||
nbb.kill();
|
nbb.kill();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
|
stop = function() {
|
||||||
|
nbb.kill();
|
||||||
|
},
|
||||||
|
nbb;
|
||||||
|
|
||||||
|
process.on('SIGINT', stop);
|
||||||
|
process.on('SIGTERM', stop);
|
||||||
|
|
||||||
start();
|
start();
|
||||||
2
nodebb
2
nodebb
@@ -37,7 +37,7 @@ case "$1" in
|
|||||||
echo "Launching NodeBB in \"development\" mode."
|
echo "Launching NodeBB in \"development\" mode."
|
||||||
echo "To run the production build of NodeBB, please use \"forever\"."
|
echo "To run the production build of NodeBB, please use \"forever\"."
|
||||||
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
|
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
|
||||||
NODE_ENV=development supervisor -q --extensions 'node|js|tpl' -- app "$@"
|
NODE_ENV=development supervisor -q --extensions 'node|js|tpl' -- loader "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"new_topic_button": "Aloita uusi keskustelu.",
|
"new_topic_button": "Uusi aihe",
|
||||||
"no_topics": "<strong>Tällä aihealueella ei ole yhtään viestiketjua.</strong><br />Miksi et aloittaisi yhtä?",
|
"no_topics": "<strong>Tällä aihealueella ei ole yhtään aihetta.</strong><br />Miksi et aloittaisi uutta?",
|
||||||
"sidebar.recent_replies": "Viimeisimmät vastaukset",
|
"sidebar.recent_replies": "Viimeisimmät vastaukset",
|
||||||
"sidebar.active_participants": "Aktiiviset keskustelijat",
|
"sidebar.active_participants": "Aktiiviset keskustelijat",
|
||||||
"sidebar.moderators": "Moderaattorit",
|
"sidebar.moderators": "Moderaattorit",
|
||||||
"posts": "viestit",
|
"posts": "viestit",
|
||||||
"views": "katsottu",
|
"views": "katsottu",
|
||||||
"posted": "lähetetty",
|
"posted": "kirjoitettu",
|
||||||
"browsing": "selaamassa",
|
"browsing": "selaamassa",
|
||||||
"no_replies": "Kukaan ei ole vastannut",
|
"no_replies": "Kukaan ei ole vastannut",
|
||||||
"replied": "vastasi",
|
"replied": "vastasi",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"stats.online": "Online",
|
"stats.online": "Online",
|
||||||
"stats.users": "Käyttäjää",
|
"stats.users": "Käyttäjää",
|
||||||
"stats.topics": "Viestiketjua",
|
"stats.topics": "Aihetta",
|
||||||
"stats.posts": "Viestiä",
|
"stats.posts": "Viestiä",
|
||||||
"success": "onnistunut"
|
"success": "onnistunut"
|
||||||
}
|
}
|
||||||
@@ -1,56 +1,58 @@
|
|||||||
{
|
{
|
||||||
"home": "Etusivu",
|
"home": "Etusivu",
|
||||||
"search": "Etsi",
|
"search": "Hae",
|
||||||
"buttons.close": "Sulje",
|
"buttons.close": "Sulje",
|
||||||
"403.title": "Pääsy kielletty",
|
"403.title": "Pääsy kielletty",
|
||||||
"403.message": "Olet päätynyt sivulle jolle sinulla ei ole tarvittavia oikeuksia. Ehkäpä sinun tulisi <a href='/login'>kirjaudu sisään</a>?",
|
"403.message": "Olet päätynyt sivulle, johon sinulla ei ole tarvittavia oikeuksia. Sinun pitäisi kai <a href='/login'>kirjautua sisään</a>.",
|
||||||
"404.title": "Sivua ei löydy",
|
"404.title": "Ei löydy",
|
||||||
"404.message": "Olet päätynyt sivulle jota ei ole olemassa. Palaa <a href='/'>etusivulle</a>.",
|
"404.message": "Olet päätynyt sivulle, jota ei ole olemassa. Palaa <a href='/'>etusivulle</a>.",
|
||||||
"500.title": "Sisäinen virhe.",
|
"500.title": "Sisäinen virhe.",
|
||||||
"500.message": "Oho! Jotain meni pieleen!",
|
"500.message": "Oho! Jotain meni pieleen!",
|
||||||
"register": "Rekisteröidy",
|
"register": "Rekisteröidy",
|
||||||
"login": "Kirjaudu",
|
"login": "Kirjaudu",
|
||||||
"welcome_back": "Welcome Back ",
|
"please_log_in": "Kirjaudu, ole hyvä",
|
||||||
"you_have_successfully_logged_in": "You have successfully logged in",
|
"posting_restriction_info": "Kirjoittaminen on tällä hetkellä rajattu vain rekisteröityneille käyttäjille. Napsauta tätä kirjautuaksesi.",
|
||||||
|
"welcome_back": "Tervetuloa takaisin",
|
||||||
|
"you_have_successfully_logged_in": "Olet onnistuneesti kirjautunut sisään",
|
||||||
"logout": "Kirjaudu ulos",
|
"logout": "Kirjaudu ulos",
|
||||||
"logout.title": "Olet nyt kirjaunut ulos.",
|
"logout.title": "Olet nyt kirjautunut ulos.",
|
||||||
"logout.message": "Olet onnistuneesti kirjautunut ulos NodeBB:stä",
|
"logout.message": "Olet onnistuneesti kirjautunut ulos NodeBB:stä",
|
||||||
"save_changes": "Tallenna muutokset",
|
"save_changes": "Tallenna muutokset",
|
||||||
"close": "Sulje",
|
"close": "Sulje",
|
||||||
"pagination": "Pagination",
|
"pagination": "Sivutus",
|
||||||
"header.admin": "Admin",
|
"header.admin": "Ylläpitäjä",
|
||||||
"header.recent": "Viimeisimmät",
|
"header.recent": "Viimeisimmät",
|
||||||
"header.unread": "Lukemattomat",
|
"header.unread": "Lukemattomat",
|
||||||
"header.popular": "Popular",
|
"header.popular": "Suositut",
|
||||||
"header.users": "Käyttäjät",
|
"header.users": "Käyttäjät",
|
||||||
"header.chats": "Chats",
|
"header.chats": "Keskustelut",
|
||||||
"header.notifications": "Notifications",
|
"header.notifications": "Ilmoitukset",
|
||||||
"header.search": "Etsi",
|
"header.search": "Hae",
|
||||||
"header.profile": "Profiili",
|
"header.profile": "Profiili",
|
||||||
"notifications.loading": "Ladataan ilmoituksia.",
|
"notifications.loading": "Ladataan ilmoituksia",
|
||||||
"chats.loading": "Ladataan keskusteluja",
|
"chats.loading": "Ladataan keskusteluja",
|
||||||
"motd.welcome": "Tervetuloa NodeBB:n, tulevaisuuden keskustelualustalle.",
|
"motd.welcome": "Tervetuloa NodeBB:hen, tulevaisuuden keskustelualustalle.",
|
||||||
"motd.get": "Hanki NodeBB",
|
"motd.get": "Hanki NodeBB",
|
||||||
"motd.fork": "Fork",
|
"motd.fork": "Forkkaa",
|
||||||
"motd.like": "Tykkää",
|
"motd.like": "Tykkää",
|
||||||
"motd.follow": "Seuraa",
|
"motd.follow": "Seuraa",
|
||||||
"previouspage": "Previous Page",
|
"previouspage": "Edellinen sivu",
|
||||||
"nextpage": "Next Page",
|
"nextpage": "Seuraava sivu",
|
||||||
"alert.success": "Success",
|
"alert.success": "Onnistui",
|
||||||
"alert.error": "Error",
|
"alert.error": "Virhe",
|
||||||
"alert.banned": "Banned",
|
"alert.banned": "Estetty",
|
||||||
"alert.banned.message": "You are banned you will be logged out!",
|
"alert.banned.message": "Sinut on estetty ja kirjaudut ulos!",
|
||||||
"alert.unfollow": "You are no longer following %1!",
|
"alert.unfollow": "Et seuraa enää %1!",
|
||||||
"alert.follow": "You are now following %1!",
|
"alert.follow": "Seuraat nyt %1!",
|
||||||
"posts": "Posts",
|
"posts": "Viestit",
|
||||||
"views": "Views",
|
"views": "Katsottu",
|
||||||
"posted": "posted",
|
"posted": "kirjoitettu",
|
||||||
"in": "in",
|
"in": "alueelle",
|
||||||
"recentposts": "Recent Posts",
|
"recentposts": "Viimeisimmät viestit",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
"away": "Away",
|
"away": "Poissa",
|
||||||
"dnd": "Do not Disturb",
|
"dnd": "Älä häiritse",
|
||||||
"invisible": "Invisible",
|
"invisible": "Näkymätön",
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"privacy": "Privacy"
|
"privacy": "Yksityisyys"
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"login": "Kirjaudu sisään",
|
"login": "Kirjaudu sisään",
|
||||||
"username": "Käyttäjän nimi",
|
"username": "Käyttäjänimi",
|
||||||
"password": "Salasana",
|
"password": "Salasana",
|
||||||
"remember_me": "Muista minut?",
|
"remember_me": "Muista minut?",
|
||||||
"forgot_password": "Unohtuiko salasana?",
|
"forgot_password": "Unohditko salasanasi?",
|
||||||
"alternative_logins": "Vaihtoehtoiset sisäänkirjaantumistavat",
|
"alternative_logins": "Vaihtoehtoiset kirjautumistavat",
|
||||||
"failed_login_attempt": "Sisäänkirjaantuminen epäonnistui, ole hyvä ja yritä uudestaan.",
|
"failed_login_attempt": "Kirjautumisyritys epäonnistui, ole hyvä ja yritä uudestaan.",
|
||||||
"login_successful": "Olet onnistuneesti kirjautunut sisään!"
|
"login_successful": "Olet onnistuneesti kirjautunut sisään!"
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"chat.chatting_with": "Juttele <span id=\"chat-with-name\"></span> kanssa",
|
"chat.chatting_with": "Keskustele käyttäjän <span id=\"chat-with-name\"></span> kanssa",
|
||||||
"chat.placeholder": "kirjoita viestisi tähän, paina enter lähettääksesi",
|
"chat.placeholder": "kirjoita viestisi tähän ja paina enter lähettääksesi",
|
||||||
"chat.send": "Lähetä",
|
"chat.send": "Lähetä",
|
||||||
"chat.no_active": "Sinulla ei ole aktiivisiä keskusteluita."
|
"chat.no_active": "Sinulla ei ole aktiivisia keskusteluita."
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"title": "Ilmoitukset",
|
"title": "Ilmoitukset",
|
||||||
"no_notifs": "You have no new notifications",
|
"no_notifs": "Sinulla ei ole uusia ilmoituksia",
|
||||||
"see_all": "See all Notifications",
|
"see_all": "Katso kaikki ilmoitukset",
|
||||||
"back_to_home": "Takaisin NodeBB:n",
|
"back_to_home": "Takaisin NodeBB:hen",
|
||||||
"outgoing_link": "Ulkopuolinen linkki",
|
"outgoing_link": "Ulkopuolinen linkki",
|
||||||
"outgoing_link_message": "Olet nyt poistumassa",
|
"outgoing_link_message": "Olet nyt poistumassa",
|
||||||
"continue_to": "Jatka",
|
"continue_to": "Jatka",
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"home": "Home",
|
"home": "Etusivu",
|
||||||
"unread": "Unread Topics",
|
"unread": "Lukemattomat aiheet",
|
||||||
"popular": "Popular Topics",
|
"popular": "Suositut aiheet",
|
||||||
"recent": "Recent Topics",
|
"recent": "Viimeisimmät aiheet",
|
||||||
"users": "Registered Users",
|
"users": "Rekisteröityneet käyttäjät",
|
||||||
"notifications": "Notifications",
|
"notifications": "Ilmoitukset",
|
||||||
"user.edit": "Editing \"%1\"",
|
"user.edit": "Muokataan \"%1\"",
|
||||||
"user.following": "People %1 Follows",
|
"user.following": "Käyttäjät, joita %1 seuraa",
|
||||||
"user.followers": "People who Follow %1",
|
"user.followers": "Käyttäjät, jotka seuraavat käyttäjää %1",
|
||||||
"user.favourites": "%1's Favourite Posts",
|
"user.favourites": "Käyttäjän %1 suosikkiviestit",
|
||||||
"user.settings": "User Settings"
|
"user.settings": "Käyttäjän asetukset"
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"title": "Recent",
|
"title": "Viimeisimmät",
|
||||||
"day": "Päivä",
|
"day": "Päivä",
|
||||||
"week": "Viikko",
|
"week": "Viikko",
|
||||||
"month": "Kuukausi",
|
"month": "Kuukausi",
|
||||||
"no_recent_topics": "There are no recent topics."
|
"no_recent_topics": "Ei viimeisimpiä aiheita."
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
{
|
{
|
||||||
"register": "Rekisteröidy",
|
"register": "Rekisteröidy",
|
||||||
"help.email": "Oletuksena sähköposti osoitettasi ei näytetä muille .",
|
"help.email": "Oletuksena sähköpostiosoitettasi ei näytetä muille.",
|
||||||
"help.username_restrictions": "Yksilöllinen käyttäjänimi, pitää olla %1 - %2 merkkiä pitkä. Toiset voivat mainita sinut @<span id='yourUsername'>käyttäjänimi</span>.",
|
"help.username_restrictions": "Yksilöllisen käyttäjätunnuksen pitää olla %1-%2 merkkiä pitkä. Toiset voivat mainita sinut @<span id='yourUsername'>username</span>.",
|
||||||
"help.minimum_password_length": "Salasanasi pitää olla vähintään %1 merkin mittainen.",
|
"help.minimum_password_length": "Salasanasi pitää olla vähintään %1 merkin mittainen.",
|
||||||
"email_address": "Sähköposti",
|
"email_address": "Sähköpostiosoite",
|
||||||
"email_address_placeholder": "Anna sähköpostiosoitteesi",
|
"email_address_placeholder": "Syötä sähköpostiosoitteesi",
|
||||||
"username": "Käyttäjänimi",
|
"username": "Käyttäjätunnus",
|
||||||
"username_placeholder": "Syötä käyttäjänimesi",
|
"username_placeholder": "Syötä käyttäjätunnuksesi",
|
||||||
"password": "Salasana",
|
"password": "Salasana",
|
||||||
"password_placeholder": "Syötä salasanasi",
|
"password_placeholder": "Syötä salasanasi",
|
||||||
"confirm_password": "Vahvista salasana",
|
"confirm_password": "Vahvista salasanasi",
|
||||||
"confirm_password_placeholder": "Vahvista salasana",
|
"confirm_password_placeholder": "Vahvista salasanasi",
|
||||||
"register_now_button": "Rekisteröidy nyt",
|
"register_now_button": "Rekisteröidy nyt",
|
||||||
"alternative_registration": "Vaihtoehtoiset rekisteröitymistavat",
|
"alternative_registration": "Vaihtoehtoiset rekisteröitymistavat",
|
||||||
"terms_of_use": "Terms of Use",
|
"terms_of_use": "Käyttöehdot",
|
||||||
"agree_to_terms_of_use": "I agree to the Terms of Use"
|
"agree_to_terms_of_use": "Hyväksyn käyttöehdot"
|
||||||
}
|
}
|
||||||
@@ -2,12 +2,12 @@
|
|||||||
"reset_password": "Palauta salasana",
|
"reset_password": "Palauta salasana",
|
||||||
"update_password": "Päivitä salasana",
|
"update_password": "Päivitä salasana",
|
||||||
"password_changed.title": "Salasana muutettu",
|
"password_changed.title": "Salasana muutettu",
|
||||||
"password_changed.message": "<p>Salasana palautettu onnistunesti, ole hyvä ja <a href=\"/login\">kirjaudu sisään uudestaan.</a>.",
|
"password_changed.message": "<p>Salasanasi on palautettu onnistuneesti, ole hyvä ja <a href=\"/login\">kirjaudu uudestaan</a>.",
|
||||||
"wrong_reset_code.title": "Väärä palautuskoodi",
|
"wrong_reset_code.title": "Väärä palautuskoodi",
|
||||||
"wrong_reset_code.message": "Annettu palautuskoodi oli väärä. Ole hyvä yritä uudelleen, tai <a href=\"/reset\">pyydä uutta palautuskoodia</a>.",
|
"wrong_reset_code.message": "Annettu palautuskoodi oli väärä. Ole hyvä ja yritä uudelleen tai <a href=\"/reset\">pyydä uutta palautuskoodia</a>.",
|
||||||
"new_password": "Uusi salasana",
|
"new_password": "Uusi salasana",
|
||||||
"repeat_password": "Vahvista salasana",
|
"repeat_password": "Vahvista salasana",
|
||||||
"enter_email": "Syötä <strong>sähköpostiosoitteesi</strong> niin me lähetämänne Sinulle ohjeet kuinka voit palauttaa käyttäjätilisi.",
|
"enter_email": "Syötä <strong>sähköpostiosoitteesi</strong>, niin me lähetämme sinulle sähköpostilla ohjeet käyttäjätilisi palauttamiseksi.",
|
||||||
"password_reset_sent": "Salasanan palautus lähetetty",
|
"password_reset_sent": "Salasanan palautuskoodi lähetetty",
|
||||||
"invalid_email": "Väärä sähköpostiosoite / Sähköpostiosoitetta ei ole!"
|
"invalid_email": "Virheellinen sähköpostiosoite / Sähköpostiosoitetta ei ole olemassa!"
|
||||||
}
|
}
|
||||||
@@ -1,65 +1,73 @@
|
|||||||
{
|
{
|
||||||
"topic": "Keskustelu",
|
"topic": "Aihe",
|
||||||
"topics": "Keskustelut",
|
"topics": "Aiheet",
|
||||||
"no_topics_found": "Keskusteluja ei löytynyt!",
|
"no_topics_found": "Aiheita ei löytynyt!",
|
||||||
"no_posts_found": "No posts found!",
|
"no_posts_found": "Viestejä ei löytynyt!",
|
||||||
"profile": "Profiili",
|
"profile": "Profiili",
|
||||||
"posted_by": "Posted by",
|
"posted_by": "Kirjoittanut",
|
||||||
"chat": "Juttele",
|
"chat": "Keskustele",
|
||||||
"notify_me": "Ilmoita uusista viesteistä tässä keskustelussa",
|
"notify_me": "Ilmoita, kun tähän keskusteluun tulee uusia viestejä",
|
||||||
"quote": "Lainaa",
|
"quote": "Lainaa",
|
||||||
"reply": "Vastaa",
|
"reply": "Vastaa",
|
||||||
"edit": "Muokkaa",
|
"edit": "Muokkaa",
|
||||||
"delete": "Poista",
|
"delete": "Poista",
|
||||||
"move": "Siirrä",
|
"move": "Siirrä",
|
||||||
"fork": "Haaroita",
|
"fork": "Haaroita",
|
||||||
"banned": "banned",
|
"banned": "estetty",
|
||||||
"link": "Linkkaa",
|
"link": "Linkitä",
|
||||||
"share": "Jaa",
|
"share": "Jaa",
|
||||||
"tools": "Työkalut",
|
"tools": "Työkalut",
|
||||||
"flag": "Flag",
|
"flag": "Ilmianna",
|
||||||
"flag_title": "Flag this post for moderation",
|
"flag_title": "Ilmianna tämä viesti moderaattoreille",
|
||||||
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
|
"deleted_message": "Tämä viestiketju on poistettu. Vain käyttäjät, joilla on viestiketjujen hallintaoikeudet, voivat nähdä sen.",
|
||||||
"watch": "Watch",
|
"following_topic.title": "Seurataan aihetta",
|
||||||
"share_this_post": "Share this Post",
|
"following_topic.message": "Saat nyt ilmoituksen, kun joku kirjoittaa tähän aiheeseen.",
|
||||||
"thread_tools.title": "Ketjun työkalut",
|
"not_following_topic.title": "Et seuraa aihetta",
|
||||||
"thread_tools.markAsUnreadForAll": "Merkitse luetuiksi",
|
"not_following_topic.message": "Et saa enää ilmoituksia tästä aiheesta.",
|
||||||
"thread_tools.pin": "Pin Topic",
|
"login_to_subscribe": "Ole hyvä ja rekisteröidy tai kirjaudu sisään tilataksesi tämän aiheen",
|
||||||
"thread_tools.unpin": "Unpin Topic",
|
"watch": "Tarkkaile",
|
||||||
"thread_tools.lock": "Lock Topic",
|
"share_this_post": "Jaa tämä viesti",
|
||||||
"thread_tools.unlock": "Unlock Topic",
|
"thread_tools.title": "Aiheen työkalut",
|
||||||
"thread_tools.move": "Move Topic",
|
"thread_tools.markAsUnreadForAll": "Merkitse lukemattomaksi",
|
||||||
"thread_tools.fork": "Fork Topic",
|
"thread_tools.pin": "Kiinnitä aihe",
|
||||||
"thread_tools.delete": "Delete Topic",
|
"thread_tools.unpin": "Poista aiheen kiinnitys",
|
||||||
"thread_tools.restore": "Restore Topic",
|
"thread_tools.lock": "Lukitse aihe",
|
||||||
|
"thread_tools.unlock": "Poista aiheen lukitus",
|
||||||
|
"thread_tools.move": "Siirrä aihe",
|
||||||
|
"thread_tools.fork": "Haaroita aihe",
|
||||||
|
"thread_tools.delete": "Poista aihe",
|
||||||
|
"thread_tools.restore": "Palauta aihe",
|
||||||
"load_categories": "Ladataan aihealueita",
|
"load_categories": "Ladataan aihealueita",
|
||||||
"disabled_categories_note": "Käytöstä poistetut aihealueetta ovat harmaina",
|
"disabled_categories_note": "Käytöstä poistetut aihealueet ovat harmaina",
|
||||||
"confirm_move": "Siirrä",
|
"confirm_move": "Siirrä",
|
||||||
"confirm_fork": "Haaroita",
|
"confirm_fork": "Haaroita",
|
||||||
"favourite": "Suosikki",
|
"favourite": "Lisää suosikiksi",
|
||||||
"favourites": "Suosikit",
|
"favourites": "Suosikit",
|
||||||
"favourites.not_logged_in.title": "Ei kirjaantuneena sisään",
|
"favourites.not_logged_in.title": "Et ole kirjautunut",
|
||||||
"favourites.not_logged_in.message": "Kirjaudu sisään jotta voit lisätä tämän viestin suosikkeihisi.",
|
"favourites.not_logged_in.message": "Kirjaudu sisään, jotta voit lisätä tämän viestin suosikkeihisi",
|
||||||
"favourites.has_no_favourites": "Sinulla ei ole yhtään suosikkiviestiä.",
|
"favourites.has_no_favourites": "Sinulla ei ole yhtään suosikkiviestiä. Lisää joitakin viestejä suosikeiksi nähdäksesi ne täällä!",
|
||||||
"vote.not_logged_in.title": "Not Logged In",
|
"vote.not_logged_in.title": "Et ole kirjautunut",
|
||||||
"vote.not_logged_in.message": "Please log in in order to vote",
|
"vote.not_logged_in.message": "Kirjaudu sisään äänestääksesi",
|
||||||
"vote.cant_vote_self.title": "Invalid Vote",
|
"vote.cant_vote_self.title": "Virheellinen ääni",
|
||||||
"vote.cant_vote_self.message": "You cannot vote for your own post",
|
"vote.cant_vote_self.message": "Et voi äänestää omaa viestiäsi",
|
||||||
"loading_more_posts": "Ladataan lisää viestejä",
|
"loading_more_posts": "Ladataan lisää viestejä",
|
||||||
"move_topic": "Siirrä keskustelu",
|
"move_topic": "Siirrä aihe",
|
||||||
"move_post": "Siirrä viesti",
|
"move_post": "Siirrä viesti",
|
||||||
"fork_topic": "Haaroita keskustelu",
|
"fork_topic": "Haaroita keskustelu",
|
||||||
"topic_will_be_moved_to": "Tämä keskustelu siirretään aihealueelle ",
|
"topic_will_be_moved_to": "Tämä keskustelu siirretään aihealueelle",
|
||||||
"fork_topic_instruction": "Klikkaa viestejä jotka haluat haaroittaa",
|
"fork_topic_instruction": "Napsauta viestejä, jotka haluat haaroittaa",
|
||||||
"fork_no_pids": "Ei valittuja viestejä!",
|
"fork_no_pids": "Ei valittuja viestejä!",
|
||||||
"fork_success": "Keskustelu haaroitettu onnistuneesti!",
|
"fork_success": "Keskustelu haaroitettu onnistuneesti!",
|
||||||
"reputation": "Maine",
|
"reputation": "Maine",
|
||||||
"posts": "Viestejä",
|
"posts": "Viestejä",
|
||||||
"composer.title_placeholder": "Enter your topic title here...",
|
"composer.title_placeholder": "Syötä aiheesi otsikko tähän...",
|
||||||
"composer.write": "Write",
|
"composer.write": "Kirjoita",
|
||||||
"composer.preview": "Preview",
|
"composer.preview": "Esikatsele",
|
||||||
"composer.discard": "Discard",
|
"composer.discard": "Hylkää",
|
||||||
"composer.submit": "Submit",
|
"composer.submit": "Lähetä",
|
||||||
"composer.replying_to": "Replying to",
|
"composer.replying_to": "Vastataan aiheeseen",
|
||||||
"composer.new_topic": "New Topic"
|
"composer.new_topic": "Uusi aihe",
|
||||||
|
"composer.drag_and_drop_images": "Vedä ja pudota kuvat tähän",
|
||||||
|
"composer.content_is_parsed_with": "Sisältö jäsennetään muodossa",
|
||||||
|
"composer.upload_instructions": "Lataa kuvia vetämällä & pudottamalla ne."
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"title": "Unread",
|
"title": "Lukematon",
|
||||||
"no_unread_topics": "Ei lukemattomia keskusteluja.",
|
"no_unread_topics": "Ei lukemattomia aiheita.",
|
||||||
"mark_all_read": "Merkitse kaikki luetuiksi",
|
"mark_all_read": "Merkitse kaikki luetuiksi",
|
||||||
"load_more": "Lataa lisää"
|
"load_more": "Lataa lisää"
|
||||||
}
|
}
|
||||||
@@ -1,47 +1,47 @@
|
|||||||
{
|
{
|
||||||
"banned": "Porttikiellossa",
|
"banned": "Bannattu",
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"username": "Käyttäjän nimi",
|
"username": "Käyttäjän nimi",
|
||||||
"email": "Sähköposti",
|
"email": "Sähköposti",
|
||||||
"fullname": "Kokonimi",
|
"fullname": "Koko nimi",
|
||||||
"website": "Kotisivu",
|
"website": "Kotisivu",
|
||||||
"location": "Sijainti",
|
"location": "Sijainti",
|
||||||
"age": "Ikä",
|
"age": "Ikä",
|
||||||
"joined": "Liittynyt",
|
"joined": "Liittynyt",
|
||||||
"lastonline": "Viimeksi online",
|
"lastonline": "Viimeksi online",
|
||||||
"profile": "Profile",
|
"profile": "Profiili",
|
||||||
"profile_views": "Profiilin katselukerrat",
|
"profile_views": "Profiilia katsottu",
|
||||||
"reputation": "Maine",
|
"reputation": "Maine",
|
||||||
"posts": "Viestit",
|
"posts": "Viestit",
|
||||||
"favourites": "Favourites",
|
"favourites": "Suosikit",
|
||||||
"followers": "Seuraajat",
|
"followers": "Seuraajat",
|
||||||
"following": "Seuraa",
|
"following": "Seuratut",
|
||||||
"signature": "Allekirjoitus",
|
"signature": "Allekirjoitus",
|
||||||
"gravatar": "Gravatar",
|
"gravatar": "Gravatar",
|
||||||
"birthday": "Syntymäpäivä",
|
"birthday": "Syntymäpäivä",
|
||||||
"chat": "Chat",
|
"chat": "Keskustele",
|
||||||
"follow": "Follow",
|
"follow": "Seuraa",
|
||||||
"unfollow": "Unfollow",
|
"unfollow": "Älä seuraa",
|
||||||
"change_picture": "Vaihda kuvaa",
|
"change_picture": "Vaihda kuva",
|
||||||
"edit": "Muokkaa",
|
"edit": "Muokkaa",
|
||||||
"uploaded_picture": "Siirretty kuva",
|
"uploaded_picture": "Ladattu kuva",
|
||||||
"upload_new_picture": "Siirrä uusi kuva",
|
"upload_new_picture": "Lataa uusi kuva",
|
||||||
"current_password": "Current Password",
|
"current_password": "Nykyinen salasana",
|
||||||
"change_password": "Vaihda salasanaa",
|
"change_password": "Vaihda salasana",
|
||||||
"confirm_password": "Vahvista salasanaa",
|
"confirm_password": "Vahvista salasana",
|
||||||
"password": "Salasana",
|
"password": "Salasana",
|
||||||
"upload_picture": "Siirrä kuva",
|
"upload_picture": "Lataa kuva",
|
||||||
"upload_a_picture": "Siirrä kuva",
|
"upload_a_picture": "Lataa kuva",
|
||||||
"image_spec": "You may only upload PNG, JPG, or GIF files",
|
"image_spec": "Voit ladata vain PNG-, JPG- tai GIF-tiedostoja",
|
||||||
"max": "max.",
|
"max": "max.",
|
||||||
"settings": "Settings",
|
"settings": "Asetukset",
|
||||||
"show_email": "Näytä sähköpostiosoitteeni",
|
"show_email": "Näytä sähköpostiosoitteeni",
|
||||||
"has_no_follower": "Tällä käyttäjällä ei ole yhtään seuraaja :(",
|
"has_no_follower": "Kukaan ei seuraa tätä käyttäjää :(",
|
||||||
"follows_no_one": "Tämä käyttäjä ei seuraa ketään :(",
|
"follows_no_one": "Tämä käyttäjä ei seuraa ketään :(",
|
||||||
"has_no_posts": "This user didn't post anything yet.",
|
"has_no_posts": "Tämä käyttäjä ei ole kirjoittanut vielä mitään.",
|
||||||
"email_hidden": "Sähköposti piilotettu",
|
"email_hidden": "Sähköposti piilotettu",
|
||||||
"hidden": "piilotettu",
|
"hidden": "piilotettu",
|
||||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
|
"paginate_description": "Sivuta aiheet ja viestit loputtoman vierittämisen sijaan.",
|
||||||
"topics_per_page": "Topics per Page",
|
"topics_per_page": "Aihetta per sivu",
|
||||||
"posts_per_page": "Posts per Page"
|
"posts_per_page": "Viestiä per sivu"
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"latest_users": "Viimeisimmät Käyttäjät",
|
"latest_users": "Viimeisimmät käyttäjät",
|
||||||
"top_posters": "Aktiivisimmat viestittelijät",
|
"top_posters": "Aktiivisimmat viestittelijät",
|
||||||
"most_reputation": "Eniten mainetta",
|
"most_reputation": "Eniten mainetta",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
"search": "Etsi",
|
"search": "Hae",
|
||||||
"enter_username": "Syötä käyttäjänimi etsiäksesi",
|
"enter_username": "Syötä käyttäjätunnus hakeaksesi",
|
||||||
"load_more": "Lataa lisää"
|
"load_more": "Lataa lisää"
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,11 @@
|
|||||||
"flag": "Jelentés",
|
"flag": "Jelentés",
|
||||||
"flag_title": "A hozzászólás jelentése a moderátoroknál",
|
"flag_title": "A hozzászólás jelentése a moderátoroknál",
|
||||||
"deleted_message": "Ez a topik törölve lett. Kizárólag azok a felhasználók láthatják, akiknek joga van hozzá.",
|
"deleted_message": "Ez a topik törölve lett. Kizárólag azok a felhasználók láthatják, akiknek joga van hozzá.",
|
||||||
|
"following_topic.title": "Following Topic",
|
||||||
|
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
|
||||||
|
"not_following_topic.title": "Not Following 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",
|
||||||
"watch": "Watch",
|
"watch": "Watch",
|
||||||
"share_this_post": "Share this Post",
|
"share_this_post": "Share this Post",
|
||||||
"thread_tools.title": "Téma Eszközök",
|
"thread_tools.title": "Téma Eszközök",
|
||||||
@@ -57,9 +62,12 @@
|
|||||||
"posts": "Hozzászólás",
|
"posts": "Hozzászólás",
|
||||||
"composer.title_placeholder": "Írd be a témanevet...",
|
"composer.title_placeholder": "Írd be a témanevet...",
|
||||||
"composer.write": "Ír",
|
"composer.write": "Ír",
|
||||||
"composer.preview": "Előzénet",
|
"composer.preview": "Előnézet",
|
||||||
"composer.discard": "Elvet",
|
"composer.discard": "Elvet",
|
||||||
"composer.submit": "Küldés",
|
"composer.submit": "Küldés",
|
||||||
"composer.replying_to": "Válasz erre:",
|
"composer.replying_to": "Válasz erre:",
|
||||||
"composer.new_topic": "Új Topik"
|
"composer.new_topic": "Új Topik",
|
||||||
|
"composer.drag_and_drop_images": "Drag and Drop Images Here",
|
||||||
|
"composer.content_is_parsed_with": "Content is parsed with",
|
||||||
|
"composer.upload_instructions": "Upload images by dragging & dropping them."
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"new_topic_button": "Nuova Discussione",
|
"new_topic_button": "Nuovo Argomento",
|
||||||
"no_topics": "<strong>Non ci sono discussioni in questa categoria.</strong><br />Perché non ne inizi una?",
|
"no_topics": "<strong>Non ci sono discussioni in questa categoria.</strong><br />Perché non ne inizi una?",
|
||||||
"sidebar.recent_replies": "Risposte Recenti",
|
"sidebar.recent_replies": "Risposte Recenti",
|
||||||
"sidebar.active_participants": "Partecipanti Attivi",
|
"sidebar.active_participants": "Partecipanti Attivi",
|
||||||
"sidebar.moderators": "Moderatori",
|
"sidebar.moderators": "Moderatori",
|
||||||
"posts": "post",
|
"posts": "post",
|
||||||
"views": "visualizzazioni",
|
"views": "visualizzazioni",
|
||||||
"posted": "inserito",
|
"posted": "postato",
|
||||||
"browsing": "navigazione",
|
"browsing": "visualizzando",
|
||||||
"no_replies": "Non ha ancora risposto nessuno",
|
"no_replies": "Nessuno ha risposto",
|
||||||
"replied": "risposto",
|
"replied": "risposto",
|
||||||
"last_edited_by": "ultima modifica di"
|
"last_edited_by": "ultima modifica di"
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"stats.online": "Online",
|
"stats.online": "Online",
|
||||||
"stats.users": "Utenti",
|
"stats.users": "Utenti",
|
||||||
"stats.topics": "Discussioni",
|
"stats.topics": "Argomenti",
|
||||||
"stats.posts": "Post",
|
"stats.posts": "Post",
|
||||||
"success": "successo"
|
"success": "successo"
|
||||||
}
|
}
|
||||||
@@ -10,47 +10,49 @@
|
|||||||
"500.message": "Oops! Qualcosa non funziona come si deve!",
|
"500.message": "Oops! Qualcosa non funziona come si deve!",
|
||||||
"register": "Registrazione",
|
"register": "Registrazione",
|
||||||
"login": "Login",
|
"login": "Login",
|
||||||
"welcome_back": "Welcome Back ",
|
"please_log_in": "Per favore Accedi",
|
||||||
"you_have_successfully_logged_in": "You have successfully logged in",
|
"posting_restriction_info": "L'inserimento è attualmente ristretto ai soli utenti registrati, clicca qui per effettuare l'accesso.",
|
||||||
|
"welcome_back": "Bentornato",
|
||||||
|
"you_have_successfully_logged_in": "Login avvenuto con successo",
|
||||||
"logout": "Logout",
|
"logout": "Logout",
|
||||||
"logout.title": "Disconnessione avvenuta.",
|
"logout.title": "Disconnessione avvenuta.",
|
||||||
"logout.message": "Logout effettuato con successo",
|
"logout.message": "Logout effettuato con successo",
|
||||||
"save_changes": "Salva",
|
"save_changes": "Salva cambiamenti",
|
||||||
"close": "Chiudi",
|
"close": "Chiudi",
|
||||||
"pagination": "Pagination",
|
"pagination": "Paginazione",
|
||||||
"header.admin": "Amministratore",
|
"header.admin": "Amministratore",
|
||||||
"header.recent": "Recenti",
|
"header.recent": "Recenti",
|
||||||
"header.unread": "Non letti",
|
"header.unread": "Non letti",
|
||||||
"header.popular": "Popular",
|
"header.popular": "Popolare",
|
||||||
"header.users": "Utenti",
|
"header.users": "Utenti",
|
||||||
"header.chats": "Chats",
|
"header.chats": "Messaggi",
|
||||||
"header.notifications": "Notifications",
|
"header.notifications": "Notifiche",
|
||||||
"header.search": "Cerca",
|
"header.search": "Cerca",
|
||||||
"header.profile": "Profilo",
|
"header.profile": "Profilo",
|
||||||
"notifications.loading": "Caricamento delle Notifiche",
|
"notifications.loading": "Caricamento delle Notifiche",
|
||||||
"chats.loading": "Caricamento delle Chat",
|
"chats.loading": "Caricamento Messaggi",
|
||||||
"motd.welcome": "Benvenuti al NodeBB, la piattaforma di discussione del futuro.",
|
"motd.welcome": "Benvenuti in NodeBB, la piattaforma di discussione del futuro.",
|
||||||
"motd.get": "Ottenere NodeBB",
|
"motd.get": "Ottieni NodeBB",
|
||||||
"motd.fork": "Fork",
|
"motd.fork": "Dividi",
|
||||||
"motd.like": "Mi piace",
|
"motd.like": "Mi piace",
|
||||||
"motd.follow": "Segui",
|
"motd.follow": "Segui",
|
||||||
"previouspage": "Previous Page",
|
"previouspage": "Pagina Precedente",
|
||||||
"nextpage": "Next Page",
|
"nextpage": "Pagina Successiva",
|
||||||
"alert.success": "Success",
|
"alert.success": "Riuscito",
|
||||||
"alert.error": "Error",
|
"alert.error": "Errore",
|
||||||
"alert.banned": "Banned",
|
"alert.banned": "Bannato",
|
||||||
"alert.banned.message": "You are banned you will be logged out!",
|
"alert.banned.message": "Sei bannato e verrai disconnesso!",
|
||||||
"alert.unfollow": "You are no longer following %1!",
|
"alert.unfollow": "Non stai più seguendo %1!",
|
||||||
"alert.follow": "You are now following %1!",
|
"alert.follow": "Stai seguendo %1!",
|
||||||
"posts": "Posts",
|
"posts": "Post",
|
||||||
"views": "Views",
|
"views": "Visualizzazioni",
|
||||||
"posted": "posted",
|
"posted": "postato",
|
||||||
"in": "in",
|
"in": "in",
|
||||||
"recentposts": "Recent Posts",
|
"recentposts": "Post Recenti",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
"away": "Away",
|
"away": "Non disponibile",
|
||||||
"dnd": "Do not Disturb",
|
"dnd": "Non disturbare",
|
||||||
"invisible": "Invisible",
|
"invisible": "Invisibile",
|
||||||
"offline": "Offline",
|
"offline": "Non in linea",
|
||||||
"privacy": "Privacy"
|
"privacy": "Privacy"
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"login": "Login",
|
"login": "Accedi",
|
||||||
"username": "Nome utente",
|
"username": "Nome utente",
|
||||||
"password": "Password",
|
"password": "Password",
|
||||||
"remember_me": "Memorizzami?",
|
"remember_me": "Memorizzami?",
|
||||||
"forgot_password": "Password dimenticata?",
|
"forgot_password": "Password dimenticata?",
|
||||||
"alternative_logins": "Login Alternativi",
|
"alternative_logins": "Accessi Alternativi",
|
||||||
"failed_login_attempt": "Tentativo di login fallito; prova ancora.",
|
"failed_login_attempt": "Tentativo di accesso fallito, prova ancora.",
|
||||||
"login_successful": "Login avvenuto con successo!"
|
"login_successful": "Sei entrato con successo!"
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"chat.chatting_with": "Chatta con <span id=\"chat-with-name\"></span>",
|
"chat.chatting_with": "Chatta con <span id=\"chat-with-name\"></span>",
|
||||||
"chat.placeholder": "scrivi un messaggio qui e premi Invio",
|
"chat.placeholder": "scrivi un messaggio qui, poi premi Invio",
|
||||||
"chat.send": "Invia",
|
"chat.send": "Invia",
|
||||||
"chat.no_active": "Non hai le chat attive."
|
"chat.no_active": "Non hai discussioni attive."
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"title": "Notifiche",
|
"title": "Notifiche",
|
||||||
"no_notifs": "You have no new notifications",
|
"no_notifs": "Non hai nuove notifiche",
|
||||||
"see_all": "See all Notifications",
|
"see_all": "Vedi tutte le Notifiche",
|
||||||
"back_to_home": "Torna alla pagina iniziale",
|
"back_to_home": "Torna alla pagina iniziale",
|
||||||
"outgoing_link": "Link in uscita",
|
"outgoing_link": "Link in uscita",
|
||||||
"outgoing_link_message": "Ci stai abbandonando",
|
"outgoing_link_message": "Stai lasciando",
|
||||||
"continue_to": "Continua verso",
|
"continue_to": "Continua verso",
|
||||||
"return_to": "Ritorna a "
|
"return_to": "Ritorna a "
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"home": "Home",
|
"home": "Home",
|
||||||
"unread": "Unread Topics",
|
"unread": "Argomenti non letti",
|
||||||
"popular": "Popular Topics",
|
"popular": "Argomenti Popolari",
|
||||||
"recent": "Recent Topics",
|
"recent": "Argomenti Recenti",
|
||||||
"users": "Registered Users",
|
"users": "Utenti Registrati",
|
||||||
"notifications": "Notifications",
|
"notifications": "Notifiche",
|
||||||
"user.edit": "Editing \"%1\"",
|
"user.edit": "Modificando \"%1\"",
|
||||||
"user.following": "People %1 Follows",
|
"user.following": "%1 Persone seguono",
|
||||||
"user.followers": "People who Follow %1",
|
"user.followers": "Persone che seguono %1",
|
||||||
"user.favourites": "%1's Favourite Posts",
|
"user.favourites": "Post Favoriti di %1",
|
||||||
"user.settings": "User Settings"
|
"user.settings": "Impostazioni Utente"
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"title": "Recent",
|
"title": "Recenti",
|
||||||
"day": "Giorno",
|
"day": "Giorno",
|
||||||
"week": "Settimana",
|
"week": "Settimana",
|
||||||
"month": "Mese",
|
"month": "Mese",
|
||||||
"no_recent_topics": "There are no recent topics."
|
"no_recent_topics": "Non ci sono discussioni recenti."
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,6 @@
|
|||||||
"confirm_password_placeholder": "Conferma la Password",
|
"confirm_password_placeholder": "Conferma la Password",
|
||||||
"register_now_button": "Registrati",
|
"register_now_button": "Registrati",
|
||||||
"alternative_registration": "Altri metodi di registrazione",
|
"alternative_registration": "Altri metodi di registrazione",
|
||||||
"terms_of_use": "Terms of Use",
|
"terms_of_use": "Termini di Utilizzo",
|
||||||
"agree_to_terms_of_use": "I agree to the Terms of Use"
|
"agree_to_terms_of_use": "Accetto i Termini di Utilizzo"
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
"reset_password": "Resetta la Password",
|
"reset_password": "Resetta la Password",
|
||||||
"update_password": "Cambia la Password",
|
"update_password": "Cambia la Password",
|
||||||
"password_changed.title": "Password Modificata",
|
"password_changed.title": "Password Modificata",
|
||||||
"password_changed.message": "<p>La password è stata resettata con successo. <a href=\"/login\">Effettua di nuovo il log in</a>.",
|
"password_changed.message": "<p>La password è stata resettata con successo. <a href=\"/login\">Effettua di nuovo l'accesso</a>.",
|
||||||
"wrong_reset_code.title": "Codice di reset non corretto",
|
"wrong_reset_code.title": "Codice di reset non corretto",
|
||||||
"wrong_reset_code.message": "Il codice di reset ricevuto non è corretto. Prova ancora, o <a href=\"/reset\">richiedi un nuovo codice</a>.",
|
"wrong_reset_code.message": "Il codice di reset ricevuto non è corretto. Prova ancora, oppure <a href=\"/reset\">richiedi un nuovo codice</a>.",
|
||||||
"new_password": "Nuova Password",
|
"new_password": "Nuova Password",
|
||||||
"repeat_password": "Conferma la Password",
|
"repeat_password": "Conferma la Password",
|
||||||
"enter_email": "Inserisci il tuo <strong>indirizzo email</strong> e ti invieremo un'email con le istruzioni per resettare il tuo account.",
|
"enter_email": "Inserisci il tuo <strong>indirizzo email</strong> e ti invieremo un'email con le istruzioni per resettare il tuo account.",
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"topic": "Discussione",
|
"topic": "Argomento",
|
||||||
"topics": "Discussioni",
|
"topics": "Argomenti",
|
||||||
"no_topics_found": "Nessuna discussione trovata!",
|
"no_topics_found": "Nessuna discussione trovata!",
|
||||||
"no_posts_found": "No posts found!",
|
"no_posts_found": "Nessun post trovato!",
|
||||||
"profile": "Profilo",
|
"profile": "Profilo",
|
||||||
"posted_by": "Posted by",
|
"posted_by": "Inviato da",
|
||||||
"chat": "Chat",
|
"chat": "Chat",
|
||||||
"notify_me": "Ricevi notifiche di nuove risposte in questa discussione",
|
"notify_me": "Ricevi notifiche di nuove risposte in questa discussione",
|
||||||
"quote": "Citazione",
|
"quote": "Citazione",
|
||||||
@@ -12,54 +12,62 @@
|
|||||||
"edit": "Modifica",
|
"edit": "Modifica",
|
||||||
"delete": "Cancella",
|
"delete": "Cancella",
|
||||||
"move": "Muovi",
|
"move": "Muovi",
|
||||||
"fork": "Fork",
|
"fork": "Dividi",
|
||||||
"banned": "bannato",
|
"banned": "bannato",
|
||||||
"link": "Link",
|
"link": "Link",
|
||||||
"share": "Share",
|
"share": "Condividi",
|
||||||
"tools": "Tools",
|
"tools": "Strumenti",
|
||||||
"flag": "Flag",
|
"flag": "Segnala",
|
||||||
"flag_title": "Flag this post for moderation",
|
"flag_title": "Segnala questo post per la moderazione",
|
||||||
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
|
"deleted_message": "Questo argomento è stato cancellato. Solo gli utenti che possono gestire gli argomenti riescono a vederlo.",
|
||||||
"watch": "Watch",
|
"following_topic.title": "Argomento seguente",
|
||||||
"share_this_post": "Share this Post",
|
"following_topic.message": "Da ora riceverai notifiche quando qualcuno posterà in questa discussione.",
|
||||||
|
"not_following_topic.title": "Non stai seguendo questo argomento",
|
||||||
|
"not_following_topic.message": "Non riceverai più notifiche da questa discussione.",
|
||||||
|
"login_to_subscribe": "Per favore registrati o accedi per sottoscrivere questo argomento",
|
||||||
|
"watch": "Guarda",
|
||||||
|
"share_this_post": "Condividi questo Post",
|
||||||
"thread_tools.title": "Strumenti per il Thread",
|
"thread_tools.title": "Strumenti per il Thread",
|
||||||
"thread_tools.markAsUnreadForAll": "Mark Unread",
|
"thread_tools.markAsUnreadForAll": "Segna come non letto",
|
||||||
"thread_tools.pin": "Pin Topic",
|
"thread_tools.pin": "Pinna Argomento",
|
||||||
"thread_tools.unpin": "Unpin Topic",
|
"thread_tools.unpin": "Unpin Argomento",
|
||||||
"thread_tools.lock": "Lock Topic",
|
"thread_tools.lock": "Blocca Discussione",
|
||||||
"thread_tools.unlock": "Unlock Topic",
|
"thread_tools.unlock": "Sblocca Discussione",
|
||||||
"thread_tools.move": "Move Topic",
|
"thread_tools.move": "Sposta Discussione",
|
||||||
"thread_tools.fork": "Fork Topic",
|
"thread_tools.fork": "Dividi Discussione",
|
||||||
"thread_tools.delete": "Delete Topic",
|
"thread_tools.delete": "Elimina Discussione",
|
||||||
"thread_tools.restore": "Restore Topic",
|
"thread_tools.restore": "Ripristina Discussione",
|
||||||
"load_categories": "Caricamento delle Categorie",
|
"load_categories": "Caricamento Categorie",
|
||||||
"disabled_categories_note": "Le Categorie disabilitate sono in grigio",
|
"disabled_categories_note": "Le Categorie disabilitate sono in grigio",
|
||||||
"confirm_move": "Sposta",
|
"confirm_move": "Sposta",
|
||||||
"confirm_fork": "Fork",
|
"confirm_fork": "Dividi",
|
||||||
"favourite": "Preferito",
|
"favourite": "Preferito",
|
||||||
"favourites": "Preferiti",
|
"favourites": "Preferiti",
|
||||||
"favourites.not_logged_in.title": "Non collegato/a",
|
"favourites.not_logged_in.title": "Non collegato/a",
|
||||||
"favourites.not_logged_in.message": "Log in per aggiungere questo post ai preferiti",
|
"favourites.not_logged_in.message": "Accedi per aggiungere questo post ai preferiti",
|
||||||
"favourites.has_no_favourites": "Non hai ancun post preferito; aggiungi qualche post ai preferiti per vederli qui!",
|
"favourites.has_no_favourites": "Non hai ancun post preferito; aggiungi qualche post ai preferiti per vederli qui!",
|
||||||
"vote.not_logged_in.title": "Not Logged In",
|
"vote.not_logged_in.title": "Non loggato",
|
||||||
"vote.not_logged_in.message": "Please log in in order to vote",
|
"vote.not_logged_in.message": "Accedi per poter votare",
|
||||||
"vote.cant_vote_self.title": "Invalid Vote",
|
"vote.cant_vote_self.title": "Voto non valido",
|
||||||
"vote.cant_vote_self.message": "You cannot vote for your own post",
|
"vote.cant_vote_self.message": "Non puoi votare per i tuoi post",
|
||||||
"loading_more_posts": "Caricamento altri post",
|
"loading_more_posts": "Caricamento altri post",
|
||||||
"move_topic": "Spsota Discussione",
|
"move_topic": "Sposta Discussione",
|
||||||
"move_post": "Sposta Post",
|
"move_post": "Sposta Post",
|
||||||
"fork_topic": "Fork Topic",
|
"fork_topic": "Dividi il Topic",
|
||||||
"topic_will_be_moved_to": "Questa discussione verrà spostata nella categoria",
|
"topic_will_be_moved_to": "Questa discussione verrà spostata nella categoria",
|
||||||
"fork_topic_instruction": "Clicca sui post che vuoi forkare",
|
"fork_topic_instruction": "Clicca sui post che vuoi dividere",
|
||||||
"fork_no_pids": "Nessun post selezionato!",
|
"fork_no_pids": "Nessun post selezionato!",
|
||||||
"fork_success": "Discussione forkata con successo!",
|
"fork_success": "Discussione divisa con successo!",
|
||||||
"reputation": "Reputazione",
|
"reputation": "Reputazione",
|
||||||
"posts": "Post",
|
"posts": "Post",
|
||||||
"composer.title_placeholder": "Enter your topic title here...",
|
"composer.title_placeholder": "Inserisci qui il titolo della discussione...",
|
||||||
"composer.write": "Write",
|
"composer.write": "Scrivi",
|
||||||
"composer.preview": "Preview",
|
"composer.preview": "Anteprima",
|
||||||
"composer.discard": "Discard",
|
"composer.discard": "Scarta",
|
||||||
"composer.submit": "Submit",
|
"composer.submit": "Invia",
|
||||||
"composer.replying_to": "Replying to",
|
"composer.replying_to": "Rispondendo a",
|
||||||
"composer.new_topic": "New Topic"
|
"composer.new_topic": "Nuovo Argomento",
|
||||||
|
"composer.drag_and_drop_images": "Trascina e rilascia le immagini qui",
|
||||||
|
"composer.content_is_parsed_with": "Il contenuto è analizzato con",
|
||||||
|
"composer.upload_instructions": "Carica immagini trascinandole e rilasciandole."
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"title": "Unread",
|
"title": "Non letto",
|
||||||
"no_unread_topics": "Non ci sono discussioni non lette.",
|
"no_unread_topics": "Non ci sono discussioni non lette.",
|
||||||
"mark_all_read": "Segna tutto come già letto",
|
"mark_all_read": "Segna tutto come già letto",
|
||||||
"load_more": "Carica Altro"
|
"load_more": "Carica Altro"
|
||||||
|
|||||||
@@ -9,39 +9,39 @@
|
|||||||
"age": "Età",
|
"age": "Età",
|
||||||
"joined": "Iscrizione",
|
"joined": "Iscrizione",
|
||||||
"lastonline": "Ultima volta in linea",
|
"lastonline": "Ultima volta in linea",
|
||||||
"profile": "Profile",
|
"profile": "Profilo",
|
||||||
"profile_views": "Visite al profilo",
|
"profile_views": "Visite al profilo",
|
||||||
"reputation": "Reputazione",
|
"reputation": "Reputazione",
|
||||||
"posts": "Post",
|
"posts": "Post",
|
||||||
"favourites": "Favourites",
|
"favourites": "Favoriti",
|
||||||
"followers": "Da chi è seguito",
|
"followers": "Da chi è seguito",
|
||||||
"following": "Chi segue",
|
"following": "Chi segue",
|
||||||
"signature": "Firma",
|
"signature": "Firma",
|
||||||
"gravatar": "Gravatar",
|
"gravatar": "Gravatar",
|
||||||
"birthday": "Data di nascita",
|
"birthday": "Data di nascita",
|
||||||
"chat": "Chat",
|
"chat": "Chat",
|
||||||
"follow": "Follow",
|
"follow": "Segui",
|
||||||
"unfollow": "Unfollow",
|
"unfollow": "Smetti di seguire",
|
||||||
"change_picture": "Cambia la foto",
|
"change_picture": "Cambia Foto",
|
||||||
"edit": "Modifica",
|
"edit": "Modifica",
|
||||||
"uploaded_picture": "Foto caricata",
|
"uploaded_picture": "Foto caricata",
|
||||||
"upload_new_picture": "Carica una nuova foto",
|
"upload_new_picture": "Carica una nuova foto",
|
||||||
"current_password": "Current Password",
|
"current_password": "Password corrente",
|
||||||
"change_password": "Cambia la Password",
|
"change_password": "Cambia la Password",
|
||||||
"confirm_password": "Conferma la Password",
|
"confirm_password": "Conferma la Password",
|
||||||
"password": "Password",
|
"password": "Password",
|
||||||
"upload_picture": "Carica foto",
|
"upload_picture": "Carica foto",
|
||||||
"upload_a_picture": "Carica una foto",
|
"upload_a_picture": "Carica una foto",
|
||||||
"image_spec": "You may only upload PNG, JPG, or GIF files",
|
"image_spec": "Puoi caricare solo file PNG, JPG o GIF",
|
||||||
"max": "max.",
|
"max": "massimo.",
|
||||||
"settings": "Settings",
|
"settings": "Impostazioni",
|
||||||
"show_email": "Mostra la mia Email",
|
"show_email": "Mostra la mia Email",
|
||||||
"has_no_follower": "Questo utente non è seguito da nessuno :(",
|
"has_no_follower": "Questo utente non è seguito da nessuno :(",
|
||||||
"follows_no_one": "Questo utente non segue nessuno :(",
|
"follows_no_one": "Questo utente non segue nessuno :(",
|
||||||
"has_no_posts": "This user didn't post anything yet.",
|
"has_no_posts": "Questo utente non ha ancora postato nulla.",
|
||||||
"email_hidden": "Email Nascosta",
|
"email_hidden": "Email Nascosta",
|
||||||
"hidden": "nascosta",
|
"hidden": "nascosta",
|
||||||
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
|
"paginate_description": "Dividi argomenti e post in pagine anziché usare lo scroll infinito.",
|
||||||
"topics_per_page": "Topics per Page",
|
"topics_per_page": "Argomenti per Pagina",
|
||||||
"posts_per_page": "Posts per Page"
|
"posts_per_page": "Post per Pagina"
|
||||||
}
|
}
|
||||||
@@ -5,5 +5,5 @@
|
|||||||
"online": "In linea",
|
"online": "In linea",
|
||||||
"search": "Cerca",
|
"search": "Cerca",
|
||||||
"enter_username": "Inserisci il nome utente da cercare",
|
"enter_username": "Inserisci il nome utente da cercare",
|
||||||
"load_more": "Carica di più"
|
"load_more": "Carica altri"
|
||||||
}
|
}
|
||||||
14
public/language/nl/category.json
Normal file
14
public/language/nl/category.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"new_topic_button": "Nieuw onderwerp",
|
||||||
|
"no_topics": "<strong>Er zijn geen onderwerpen in deze categorie.</strong><br />Waarom maak je er niet een aan?",
|
||||||
|
"sidebar.recent_replies": "Recente Reacties",
|
||||||
|
"sidebar.active_participants": "Actieve Deelnemers",
|
||||||
|
"sidebar.moderators": "Moderators",
|
||||||
|
"posts": "berichten",
|
||||||
|
"views": "weergaven",
|
||||||
|
"posted": "geplaatst",
|
||||||
|
"browsing": "verkennen",
|
||||||
|
"no_replies": "Niemand heeft gereageerd",
|
||||||
|
"replied": "gereageerd",
|
||||||
|
"last_edited_by": "voor het laatst aangepast door"
|
||||||
|
}
|
||||||
7
public/language/nl/footer.json
Normal file
7
public/language/nl/footer.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"stats.online": "Online",
|
||||||
|
"stats.users": "Gebruikers",
|
||||||
|
"stats.topics": "Onderwerpen",
|
||||||
|
"stats.posts": "Berichten",
|
||||||
|
"success": "succes"
|
||||||
|
}
|
||||||
58
public/language/nl/global.json
Normal file
58
public/language/nl/global.json
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"home": "Home",
|
||||||
|
"search": "Zoeken",
|
||||||
|
"buttons.close": "Sluiten",
|
||||||
|
"403.title": "Toegang Geweigerd",
|
||||||
|
"403.message": "Het lijkt erop dat je op een pagina beland bent waar je geen toegang tot hebt. Misschien moet je <a href='/login'>inloggen</a>?",
|
||||||
|
"404.title": "Niet Gevonden",
|
||||||
|
"404.message": "Het lijkt erop dat je op een pagina beland bent die niet bestaat. Ga terug naar de <a href='/'>home pagina</a>.",
|
||||||
|
"500.title": "Interne fout.",
|
||||||
|
"500.message": "Oeps! Het lijkt erop dat iets is fout gegaan!",
|
||||||
|
"register": "Registeren",
|
||||||
|
"login": "Inloggen",
|
||||||
|
"please_log_in": "Please Log In",
|
||||||
|
"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",
|
||||||
|
"logout": "Uitloggen",
|
||||||
|
"logout.title": "Je bent nu uitgelogd.",
|
||||||
|
"logout.message": "Je bent met succes uitgelogd van NodeBB",
|
||||||
|
"save_changes": "Aanpassingen Opslaan",
|
||||||
|
"close": "Sluiten",
|
||||||
|
"pagination": "Pagination",
|
||||||
|
"header.admin": "Admin",
|
||||||
|
"header.recent": "Recent",
|
||||||
|
"header.unread": "Ongelezen",
|
||||||
|
"header.popular": "Populair",
|
||||||
|
"header.users": "Gebruikers",
|
||||||
|
"header.chats": "Chats",
|
||||||
|
"header.notifications": "Notificaties",
|
||||||
|
"header.search": "Zoeken",
|
||||||
|
"header.profile": "Profiel",
|
||||||
|
"notifications.loading": "Notificaties Laden",
|
||||||
|
"chats.loading": "Chats Laden",
|
||||||
|
"motd.welcome": "Welkom bij NodeBB, het discussie platform van de toekomst.",
|
||||||
|
"motd.get": "Verkrijg NodeBB",
|
||||||
|
"motd.fork": "Fork",
|
||||||
|
"motd.like": "Like",
|
||||||
|
"motd.follow": "Volgen",
|
||||||
|
"previouspage": "Vorige Pagina",
|
||||||
|
"nextpage": "Volgende Pagina",
|
||||||
|
"alert.success": "Succes",
|
||||||
|
"alert.error": "Fout",
|
||||||
|
"alert.banned": "Verbannen",
|
||||||
|
"alert.banned.message": "Je bent verbannen en zal uitgelogd worden!",
|
||||||
|
"alert.unfollow": "Je volgt niet langer %1!",
|
||||||
|
"alert.follow": "Je volgt nu %1!",
|
||||||
|
"posts": "Berichten",
|
||||||
|
"views": "Weergaven",
|
||||||
|
"posted": "geplaatst",
|
||||||
|
"in": "in",
|
||||||
|
"recentposts": "Recente Berichten",
|
||||||
|
"online": "Online",
|
||||||
|
"away": "Afwezig",
|
||||||
|
"dnd": "Niet Storen",
|
||||||
|
"invisible": "Onzichtbaar",
|
||||||
|
"offline": "Offline",
|
||||||
|
"privacy": "Privacy"
|
||||||
|
}
|
||||||
5
public/language/nl/language.json
Normal file
5
public/language/nl/language.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "Nederlands",
|
||||||
|
"code": "nl",
|
||||||
|
"dir": "ltr"
|
||||||
|
}
|
||||||
10
public/language/nl/login.json
Normal file
10
public/language/nl/login.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"login": "Inloggen",
|
||||||
|
"username": "Gebruikersnaam",
|
||||||
|
"password": "Wachtwoord",
|
||||||
|
"remember_me": "Mij Onthouden?",
|
||||||
|
"forgot_password": "Wachtwoord Vergeten?",
|
||||||
|
"alternative_logins": "Alternatieve Logins",
|
||||||
|
"failed_login_attempt": "Mislukte inlog poging, probeer het later opnieuw.",
|
||||||
|
"login_successful": "Je bent succesvol ingelogd!"
|
||||||
|
}
|
||||||
6
public/language/nl/modules.json
Normal file
6
public/language/nl/modules.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"chat.chatting_with": "Chat met <span id=\"chat-with-name\"></span>",
|
||||||
|
"chat.placeholder": "type chat bericht hier, druk op enter om te verzenden",
|
||||||
|
"chat.send": "Verzenden",
|
||||||
|
"chat.no_active": "Je hebt geen actieve chats."
|
||||||
|
}
|
||||||
10
public/language/nl/notifications.json
Normal file
10
public/language/nl/notifications.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"title": "Notificaties",
|
||||||
|
"no_notifs": "You have no new notifications",
|
||||||
|
"see_all": "Bekijk alle Notificaties",
|
||||||
|
"back_to_home": "Terug naar NodeBB",
|
||||||
|
"outgoing_link": "Uitgaande Link",
|
||||||
|
"outgoing_link_message": "Je verlaat nu",
|
||||||
|
"continue_to": "Doorgaan naar",
|
||||||
|
"return_to": "Teruggaan naar"
|
||||||
|
}
|
||||||
13
public/language/nl/pages.json
Normal file
13
public/language/nl/pages.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"home": "Home",
|
||||||
|
"unread": "Ongelezen Onderwerpen",
|
||||||
|
"popular": "Popular Topics",
|
||||||
|
"recent": "Recente Onderwerpen",
|
||||||
|
"users": "Geregistreerde Gebruikers",
|
||||||
|
"notifications": "Notificaties",
|
||||||
|
"user.edit": "\"%1\" aanpassen",
|
||||||
|
"user.following": "Mensen %1 Volgt",
|
||||||
|
"user.followers": "Mensen die %1 Volgen",
|
||||||
|
"user.favourites": "%1's Favoriete Berichten",
|
||||||
|
"user.settings": "Gebruikersinstellingen"
|
||||||
|
}
|
||||||
7
public/language/nl/recent.json
Normal file
7
public/language/nl/recent.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"title": "Recent",
|
||||||
|
"day": "Dag",
|
||||||
|
"week": "Week",
|
||||||
|
"month": "Maand",
|
||||||
|
"no_recent_topics": "Er zijn geen recente reacties."
|
||||||
|
}
|
||||||
18
public/language/nl/register.json
Normal file
18
public/language/nl/register.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"register": "Registreren",
|
||||||
|
"help.email": "Je email is standaard verborgen voor andere gebruikers.",
|
||||||
|
"help.username_restrictions": "Een unieke gebruikersnaam tussen %1 en %2 karakters. Anderen kunnen je vermelden met @<span id='yourUsername'>gebruikersnaam</span>.",
|
||||||
|
"help.minimum_password_length": "Je wachtwoord moet tenminste %1 karakters lang zijn.",
|
||||||
|
"email_address": "Email Adres",
|
||||||
|
"email_address_placeholder": "Vul Email Adres in",
|
||||||
|
"username": "Gebruikersnaam",
|
||||||
|
"username_placeholder": "Vul Gebruikersnaam in",
|
||||||
|
"password": "Wachtwoord",
|
||||||
|
"password_placeholder": "Vul Wachtwoord in",
|
||||||
|
"confirm_password": "Bevestig Wachtwoord",
|
||||||
|
"confirm_password_placeholder": "Bevestig Wachtwoord",
|
||||||
|
"register_now_button": "Nu Registreren",
|
||||||
|
"alternative_registration": "Alternatieve Registratie",
|
||||||
|
"terms_of_use": "Gebruiksvoorwaarden",
|
||||||
|
"agree_to_terms_of_use": "Ik ga akkoord van de Gebruiksvoorwaarden"
|
||||||
|
}
|
||||||
13
public/language/nl/reset_password.json
Normal file
13
public/language/nl/reset_password.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"reset_password": "Wachtwoord opnieuw instellen",
|
||||||
|
"update_password": "Wachtwoord Updaten",
|
||||||
|
"password_changed.title": "Wachtwoord Veranderd",
|
||||||
|
"password_changed.message": "<p>Wachtwoord is met succes gereset, log a.u.b. <a href=\"/login\">opnieuw in</a>.",
|
||||||
|
"wrong_reset_code.title": "Incorrecte Reset Code",
|
||||||
|
"wrong_reset_code.message": "De ontvangen reset code is incorrect. Probeer het opnieuw, of <a href=\"/reset\">vraag een nieuwe code aan</a>.",
|
||||||
|
"new_password": "Nieuw Wachtwoord",
|
||||||
|
"repeat_password": "Bevestig Wachtwoord",
|
||||||
|
"enter_email": "Vul a.u.b. je <strong>email address</strong> in en we versturen je een email met de stappen hoe je je account reset.",
|
||||||
|
"password_reset_sent": "Wachtwoord Reset Verzonden",
|
||||||
|
"invalid_email": "Fout Email Adres / Email Adres bestaat niet!"
|
||||||
|
}
|
||||||
73
public/language/nl/topic.json
Normal file
73
public/language/nl/topic.json
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
"topic": "Onderwerp",
|
||||||
|
"topics": "Onderwerpen",
|
||||||
|
"no_topics_found": "Geen onderwerpen gevonden!",
|
||||||
|
"no_posts_found": "Geen berichten gevonden!",
|
||||||
|
"profile": "Profiel",
|
||||||
|
"posted_by": "Geplaatst door",
|
||||||
|
"chat": "Chat",
|
||||||
|
"notify_me": "Krijg notificaties van nieuwe reacties op dit onderwerp",
|
||||||
|
"quote": "Citeren",
|
||||||
|
"reply": "Reageren",
|
||||||
|
"edit": "Aanpassen",
|
||||||
|
"delete": "Verwijderen",
|
||||||
|
"move": "Verplaatsen",
|
||||||
|
"fork": "Fork",
|
||||||
|
"banned": "verbannen",
|
||||||
|
"link": "Link",
|
||||||
|
"share": "Delen",
|
||||||
|
"tools": "Gereedschap",
|
||||||
|
"flag": "Markeren",
|
||||||
|
"flag_title": "Dit bericht markeren voor moderatie",
|
||||||
|
"deleted_message": "Dit onderwerp is verwijderd. Alleen gebruikers met onderwerp management privileges kunnen dit onderwerp zien.",
|
||||||
|
"following_topic.title": "Following Topic",
|
||||||
|
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
|
||||||
|
"not_following_topic.title": "Not Following 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",
|
||||||
|
"watch": "Watch",
|
||||||
|
"share_this_post": "Share this Post",
|
||||||
|
"thread_tools.title": "Thread Gereedschap",
|
||||||
|
"thread_tools.markAsUnreadForAll": "Ongelezen Markeren",
|
||||||
|
"thread_tools.pin": "Onderwerp Vastmaken",
|
||||||
|
"thread_tools.unpin": "Onderwerp Losmaken",
|
||||||
|
"thread_tools.lock": "Onderwerp Sluiten",
|
||||||
|
"thread_tools.unlock": "Onderwerp Openen",
|
||||||
|
"thread_tools.move": "Onderwerp Verplaatsen",
|
||||||
|
"thread_tools.fork": "Onderwerp Forken",
|
||||||
|
"thread_tools.delete": "Onderwerp Verwijderen",
|
||||||
|
"thread_tools.restore": "Onderwerp Herstellen",
|
||||||
|
"load_categories": "Categorieën Laden",
|
||||||
|
"disabled_categories_note": "Uitgeschakelde Categorieën zijn grijs",
|
||||||
|
"confirm_move": "Verplaatsen",
|
||||||
|
"confirm_fork": "Fork",
|
||||||
|
"favourite": "Favoriet",
|
||||||
|
"favourites": "Favorieten",
|
||||||
|
"favourites.not_logged_in.title": "Niet Ingelogd",
|
||||||
|
"favourites.not_logged_in.message": "Log a.u.b. in om dit bericht als Favoriet op te slaan",
|
||||||
|
"favourites.has_no_favourites": "Je hebt geen favorieten, sla een aantal berichten op als favoriet om ze hier te zien!",
|
||||||
|
"vote.not_logged_in.title": "Niet Ingelogd",
|
||||||
|
"vote.not_logged_in.message": "Log a.u.b. in om te kunnen stemmen",
|
||||||
|
"vote.cant_vote_self.title": "Ongeldige Stem",
|
||||||
|
"vote.cant_vote_self.message": "Je kan niet op je eigen berichten stemmen",
|
||||||
|
"loading_more_posts": "Meer Berichten Laden",
|
||||||
|
"move_topic": "Onderwerp Verplaatsen",
|
||||||
|
"move_post": "Bericht Verplaatsen",
|
||||||
|
"fork_topic": "Onderwerp Forken",
|
||||||
|
"topic_will_be_moved_to": "Dit onderwerp zal verplaatst worden naar de categorie",
|
||||||
|
"fork_topic_instruction": "Klik op de berichten die je wilt forken",
|
||||||
|
"fork_no_pids": "Geen berichten geselecteerd!",
|
||||||
|
"fork_success": "Onderwerp is met succes geforkt!",
|
||||||
|
"reputation": "Reputatie",
|
||||||
|
"posts": "Berichten",
|
||||||
|
"composer.title_placeholder": "Vul de titel voor het onderwerp hier in...",
|
||||||
|
"composer.write": "Schrijven",
|
||||||
|
"composer.preview": "Voorbeeld",
|
||||||
|
"composer.discard": "Annuleren",
|
||||||
|
"composer.submit": "Opslaan",
|
||||||
|
"composer.replying_to": "Reageren op",
|
||||||
|
"composer.new_topic": "Nieuw Onderwerp",
|
||||||
|
"composer.drag_and_drop_images": "Drag and Drop Images Here",
|
||||||
|
"composer.content_is_parsed_with": "Content is parsed with",
|
||||||
|
"composer.upload_instructions": "Upload images by dragging & dropping them."
|
||||||
|
}
|
||||||
6
public/language/nl/unread.json
Normal file
6
public/language/nl/unread.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"title": "Ongelezen",
|
||||||
|
"no_unread_topics": "Er zijn geen ongelezen onderwerpen",
|
||||||
|
"mark_all_read": "Alles markeren als Gelezen",
|
||||||
|
"load_more": "Meer Laden"
|
||||||
|
}
|
||||||
47
public/language/nl/user.json
Normal file
47
public/language/nl/user.json
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"banned": "Verbannen",
|
||||||
|
"offline": "Offline",
|
||||||
|
"username": "Gebruikersnaam",
|
||||||
|
"email": "Email",
|
||||||
|
"fullname": "Volledige Naam",
|
||||||
|
"website": "Website",
|
||||||
|
"location": "Locatie",
|
||||||
|
"age": "Leeftijd",
|
||||||
|
"joined": "Geregistreerd",
|
||||||
|
"lastonline": "Laatst Online",
|
||||||
|
"profile": "Profiel",
|
||||||
|
"profile_views": "Profiel weergaven",
|
||||||
|
"reputation": "Reputatie",
|
||||||
|
"posts": "Berichten",
|
||||||
|
"favourites": "Favorieten",
|
||||||
|
"followers": "Volgers",
|
||||||
|
"following": "Volgend",
|
||||||
|
"signature": "Handtekening",
|
||||||
|
"gravatar": "Gravatar",
|
||||||
|
"birthday": "Verjaardag",
|
||||||
|
"chat": "Chat",
|
||||||
|
"follow": "Follow",
|
||||||
|
"unfollow": "Unfollow",
|
||||||
|
"change_picture": "Afbeelding Aanpassen",
|
||||||
|
"edit": "Aanpassen",
|
||||||
|
"uploaded_picture": "Afbeelding Uploaden",
|
||||||
|
"upload_new_picture": "Nieuwe Afbeelding Uploaden",
|
||||||
|
"current_password": "Current Password",
|
||||||
|
"change_password": "Wachtwoord Aanpassen",
|
||||||
|
"confirm_password": "Bevestig Wachtwoord",
|
||||||
|
"password": "Wachtwoord",
|
||||||
|
"upload_picture": "Afbeelding Uploaden",
|
||||||
|
"upload_a_picture": "Upload een afbeelding",
|
||||||
|
"image_spec": "You may only upload PNG, JPG, or GIF files",
|
||||||
|
"max": "max.",
|
||||||
|
"settings": "Instellingen",
|
||||||
|
"show_email": "Laat Mijn Email Zien",
|
||||||
|
"has_no_follower": "Deze gebruiker heeft geen volgers :(",
|
||||||
|
"follows_no_one": "Deze gebruiker volgt niemand :(",
|
||||||
|
"has_no_posts": "Deze gebruiker heeft nog geen berichten geplaatst",
|
||||||
|
"email_hidden": "Email Verborgen",
|
||||||
|
"hidden": "verborgen",
|
||||||
|
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
|
||||||
|
"topics_per_page": "Topics per Page",
|
||||||
|
"posts_per_page": "Posts per Page"
|
||||||
|
}
|
||||||
9
public/language/nl/users.json
Normal file
9
public/language/nl/users.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"latest_users": "Nieuwste Gebruikers",
|
||||||
|
"top_posters": "Meest Actief",
|
||||||
|
"most_reputation": "Meeste Reputatie",
|
||||||
|
"online": "Online",
|
||||||
|
"search": "Zoeken",
|
||||||
|
"enter_username": "Vul een gebruikersnaam in om te zoeken",
|
||||||
|
"load_more": "Meer Laden"
|
||||||
|
}
|
||||||
@@ -10,6 +10,8 @@
|
|||||||
"500.message": "Coś poszło nie tak.",
|
"500.message": "Coś poszło nie tak.",
|
||||||
"register": "Zarejestruj się",
|
"register": "Zarejestruj się",
|
||||||
"login": "Zaloguj się",
|
"login": "Zaloguj się",
|
||||||
|
"please_log_in": "Proszę się zalogować",
|
||||||
|
"posting_restriction_info": "Pisanie jest dostępne tylko dla zarejestrowanych członków forum, kliknij tutaj aby się zalogować.",
|
||||||
"welcome_back": "Witaj z powrotem!",
|
"welcome_back": "Witaj z powrotem!",
|
||||||
"you_have_successfully_logged_in": "Zostałeś pomyślnie zalogowany.",
|
"you_have_successfully_logged_in": "Zostałeś pomyślnie zalogowany.",
|
||||||
"logout": "Wyloguj się",
|
"logout": "Wyloguj się",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"home": "Strona główna",
|
"home": "Strona główna",
|
||||||
"unread": "Nieprzeczytane wątki",
|
"unread": "Nieprzeczytane wątki",
|
||||||
"popular": "Popular Topics",
|
"popular": "Popularne wątki",
|
||||||
"recent": "Ostatnie wątki",
|
"recent": "Ostatnie wątki",
|
||||||
"users": "Zarejestrowani użytkownicy",
|
"users": "Zarejestrowani użytkownicy",
|
||||||
"notifications": "Powiadomienia",
|
"notifications": "Powiadomienia",
|
||||||
|
|||||||
@@ -20,6 +20,11 @@
|
|||||||
"flag": "Zgłoś",
|
"flag": "Zgłoś",
|
||||||
"flag_title": "Zgłoś post do moderacji",
|
"flag_title": "Zgłoś post do moderacji",
|
||||||
"deleted_message": "Ten wątek został usunięty. Tylko użytkownicy z uprawnieniami do zarządzania wątkami mogą go widzieć.",
|
"deleted_message": "Ten wątek został usunięty. Tylko użytkownicy z uprawnieniami do zarządzania wątkami mogą go widzieć.",
|
||||||
|
"following_topic.title": "Obserwujesz wątek",
|
||||||
|
"following_topic.message": "Będziesz otrzymywał powiadomienia, gdy ktoś odpowie w tym wątku.",
|
||||||
|
"not_following_topic.title": "Nie obserwujesz wątku",
|
||||||
|
"not_following_topic.message": "Nie będziesz otrzymywał więcej powiadomień z tego wątku.",
|
||||||
|
"login_to_subscribe": "Zaloguj się, aby subskrybować ten wątek.",
|
||||||
"watch": "Obserwuj",
|
"watch": "Obserwuj",
|
||||||
"share_this_post": "Udostępnij",
|
"share_this_post": "Udostępnij",
|
||||||
"thread_tools.title": "Narzędzia wątków",
|
"thread_tools.title": "Narzędzia wątków",
|
||||||
@@ -61,5 +66,8 @@
|
|||||||
"composer.discard": "Odrzuć",
|
"composer.discard": "Odrzuć",
|
||||||
"composer.submit": "Wyślij",
|
"composer.submit": "Wyślij",
|
||||||
"composer.replying_to": "Odpowiadasz",
|
"composer.replying_to": "Odpowiadasz",
|
||||||
"composer.new_topic": "Nowy wątek"
|
"composer.new_topic": "Nowy wątek",
|
||||||
|
"composer.drag_and_drop_images": "Przeciągnij i upuść obrazek tutaj.",
|
||||||
|
"composer.content_is_parsed_with": "Tekst jest parsowany przy pomocy",
|
||||||
|
"composer.upload_instructions": "Prześlij obrazki przeciągając i upuszczając je."
|
||||||
}
|
}
|
||||||
@@ -7,50 +7,52 @@
|
|||||||
"404.title": "无法找到该页",
|
"404.title": "无法找到该页",
|
||||||
"404.message": "你所查找的页面并不存在,返回<a href='/'>主页</a>。",
|
"404.message": "你所查找的页面并不存在,返回<a href='/'>主页</a>。",
|
||||||
"500.title": "内部错误",
|
"500.title": "内部错误",
|
||||||
"500.message": "不好!看来是哪里出错了!",
|
"500.message": "哎呀!看来是哪里出错了!",
|
||||||
"register": "注册",
|
"register": "注册",
|
||||||
"login": "登录",
|
"login": "登录",
|
||||||
|
"please_log_in": "请登录",
|
||||||
|
"posting_restriction_info": "发表目前仅限于注册会员,点击这里登录。",
|
||||||
"welcome_back": "欢迎回来",
|
"welcome_back": "欢迎回来",
|
||||||
"you_have_successfully_logged_in": "You have successfully logged in",
|
"you_have_successfully_logged_in": "你已经退出登录",
|
||||||
"logout": "退出",
|
"logout": "退出",
|
||||||
"logout.title": "你已经退出。",
|
"logout.title": "你已经退出。",
|
||||||
"logout.message": "你已经成功退出登录。",
|
"logout.message": "你已经成功退出登录。",
|
||||||
"save_changes": "保存修改",
|
"save_changes": "保存修改",
|
||||||
"close": "关闭",
|
"close": "关闭",
|
||||||
"pagination": "Pagination",
|
"pagination": "分页",
|
||||||
"header.admin": "管理",
|
"header.admin": "管理",
|
||||||
"header.recent": "最近",
|
"header.recent": "最近",
|
||||||
"header.unread": "未读",
|
"header.unread": "未读",
|
||||||
"header.popular": "Popular",
|
"header.popular": "流行",
|
||||||
"header.users": "用户",
|
"header.users": "用户",
|
||||||
"header.chats": "Chats",
|
"header.chats": "聊天",
|
||||||
"header.notifications": "Notifications",
|
"header.notifications": "通知",
|
||||||
"header.search": "搜索",
|
"header.search": "搜索",
|
||||||
"header.profile": "设置",
|
"header.profile": "设置",
|
||||||
"notifications.loading": "消息载入中",
|
"notifications.loading": "消息载入中",
|
||||||
"chats.loading": "聊天载入中",
|
"chats.loading": "聊天载入中",
|
||||||
"motd.welcome": "Welcome to NodeBB, the discussion platform of the future.",
|
"motd.welcome": "欢迎来到NodeBB,未来的社区论坛平台。",
|
||||||
"motd.get": "Get NodeBB",
|
"motd.get": "获取NodeBB",
|
||||||
"motd.fork": "Fork",
|
"motd.fork": "分支",
|
||||||
"motd.like": "讚",
|
"motd.like": "赞",
|
||||||
"motd.follow": "关注",
|
"motd.follow": "关注",
|
||||||
"previouspage": "Previous Page",
|
"previouspage": "上一页",
|
||||||
"nextpage": "Next Page",
|
"nextpage": "下一页",
|
||||||
"alert.success": "Success",
|
"alert.success": "成功",
|
||||||
"alert.error": "Error",
|
"alert.error": "错误",
|
||||||
"alert.banned": "Banned",
|
"alert.banned": "禁止",
|
||||||
"alert.banned.message": "You are banned you will be logged out!",
|
"alert.banned.message": "你被禁止了将会退出登录。",
|
||||||
"alert.unfollow": "You are no longer following %1!",
|
"alert.unfollow": "你不再是关注的那1%!",
|
||||||
"alert.follow": "You are now following %1!",
|
"alert.follow": "你现在属于关注的1%!",
|
||||||
"posts": "Posts",
|
"posts": "帖子",
|
||||||
"views": "Views",
|
"views": "浏览",
|
||||||
"posted": "posted",
|
"posted": "发布",
|
||||||
"in": "in",
|
"in": "在",
|
||||||
"recentposts": "Recent Posts",
|
"recentposts": "最新发表",
|
||||||
"online": "Online",
|
"online": " 在线",
|
||||||
"away": "Away",
|
"away": "离开",
|
||||||
"dnd": "Do not Disturb",
|
"dnd": "不打扰",
|
||||||
"invisible": "Invisible",
|
"invisible": "不可见",
|
||||||
"offline": "Offline",
|
"offline": "离线",
|
||||||
"privacy": "Privacy"
|
"privacy": "隐私"
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"title": "消息",
|
"title": "通知",
|
||||||
"no_notifs": "You have no new notifications",
|
"no_notifs": "你没有新的通知",
|
||||||
"see_all": "See all Notifications",
|
"see_all": "查看所有通知",
|
||||||
"back_to_home": "返回主页",
|
"back_to_home": "返回主页",
|
||||||
"outgoing_link": "站外链接",
|
"outgoing_link": "站外链接",
|
||||||
"outgoing_link_message": "你正在离开本站。",
|
"outgoing_link_message": "你正在离开本站",
|
||||||
"continue_to": "继续前往",
|
"continue_to": "继续前往",
|
||||||
"return_to": "返回"
|
"return_to": "返回"
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"home": "Home",
|
"home": "主页",
|
||||||
"unread": "Unread Topics",
|
"unread": "未读",
|
||||||
"popular": "Popular Topics",
|
"popular": "受欢迎的主题",
|
||||||
"recent": "Recent Topics",
|
"recent": "最新主题",
|
||||||
"users": "Registered Users",
|
"users": "已注册用户",
|
||||||
"notifications": "Notifications",
|
"notifications": "提醒",
|
||||||
"user.edit": "Editing \"%1\"",
|
"user.edit": "编辑 \"%1\"",
|
||||||
"user.following": "People %1 Follows",
|
"user.following": "%1的人关注",
|
||||||
"user.followers": "People who Follow %1",
|
"user.followers": "%1关注的人",
|
||||||
"user.favourites": "%1's Favourite Posts",
|
"user.favourites": "%1 喜爱的帖子",
|
||||||
"user.settings": "User Settings"
|
"user.settings": "用户设置"
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"title": "Recent",
|
"title": "最近",
|
||||||
"day": "今日",
|
"day": "今日",
|
||||||
"week": "本周",
|
"week": "本周",
|
||||||
"month": "本月",
|
"month": "本月",
|
||||||
"no_recent_topics": "There are no recent topics."
|
"no_recent_topics": "没有最近的话题。"
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
"help.email": "默认情况下,你的邮箱不会公开。",
|
"help.email": "默认情况下,你的邮箱不会公开。",
|
||||||
"help.username_restrictions": "用户名由%1到%2个字符组成。其他人可以通过 @<span id='yourUsername'>用户名</span> 点名你。",
|
"help.username_restrictions": "用户名由%1到%2个字符组成。其他人可以通过 @<span id='yourUsername'>用户名</span> 点名你。",
|
||||||
"help.minimum_password_length": "密码必须至少包含%1个字符。",
|
"help.minimum_password_length": "密码必须至少包含%1个字符。",
|
||||||
"email_address": "Email",
|
"email_address": "邮箱地址",
|
||||||
"email_address_placeholder": "输入邮箱地址",
|
"email_address_placeholder": "输入邮箱地址",
|
||||||
"username": "用户名",
|
"username": "用户名",
|
||||||
"username_placeholder": "输入用户名",
|
"username_placeholder": "输入用户名",
|
||||||
@@ -13,6 +13,6 @@
|
|||||||
"confirm_password_placeholder": "再次输入密码",
|
"confirm_password_placeholder": "再次输入密码",
|
||||||
"register_now_button": "现在注册",
|
"register_now_button": "现在注册",
|
||||||
"alternative_registration": "其他方式注册",
|
"alternative_registration": "其他方式注册",
|
||||||
"terms_of_use": "Terms of Use",
|
"terms_of_use": "使用条款",
|
||||||
"agree_to_terms_of_use": "I agree to the Terms of Use"
|
"agree_to_terms_of_use": "我同意使用条款"
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
"topic": "主题",
|
"topic": "主题",
|
||||||
"topics": "主题",
|
"topics": "主题",
|
||||||
"no_topics_found": "没有找到主题!",
|
"no_topics_found": "没有找到主题!",
|
||||||
"no_posts_found": "No posts found!",
|
"no_posts_found": "没有找到帖子!",
|
||||||
"profile": "资料",
|
"profile": "资料",
|
||||||
"posted_by": "Posted by",
|
"posted_by": "发表",
|
||||||
"chat": "聊天",
|
"chat": "聊天",
|
||||||
"notify_me": "该主题有新回复时通知我",
|
"notify_me": "该主题有新回复时通知我",
|
||||||
"quote": "引用",
|
"quote": "引用",
|
||||||
@@ -13,25 +13,30 @@
|
|||||||
"delete": "删除",
|
"delete": "删除",
|
||||||
"move": "移动",
|
"move": "移动",
|
||||||
"fork": "作为主题",
|
"fork": "作为主题",
|
||||||
"banned": "封禁",
|
"banned": "禁止",
|
||||||
"link": "链接",
|
"link": "链接",
|
||||||
"share": "Share",
|
"share": "分享",
|
||||||
"tools": "Tools",
|
"tools": "工具",
|
||||||
"flag": "Flag",
|
"flag": "标志",
|
||||||
"flag_title": "Flag this post for moderation",
|
"flag_title": "标志受限的帖子",
|
||||||
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
|
"deleted_message": "这个帖子已经删除,只有帖子的拥有者才有权限去查看。",
|
||||||
"watch": "Watch",
|
"following_topic.title": "关注该主题",
|
||||||
"share_this_post": "Share this Post",
|
"following_topic.message": "当有回复提交的时候你将会收到通知。",
|
||||||
|
"not_following_topic.title": "非关注主题",
|
||||||
|
"not_following_topic.message": "你将不再接受来自该帖子的通知。",
|
||||||
|
"login_to_subscribe": "请注册或登录以订阅该主题",
|
||||||
|
"watch": "查看",
|
||||||
|
"share_this_post": "分享帖子",
|
||||||
"thread_tools.title": "管理工具",
|
"thread_tools.title": "管理工具",
|
||||||
"thread_tools.markAsUnreadForAll": "Mark Unread",
|
"thread_tools.markAsUnreadForAll": "标记未读",
|
||||||
"thread_tools.pin": "Pin Topic",
|
"thread_tools.pin": "置顶主题",
|
||||||
"thread_tools.unpin": "Unpin Topic",
|
"thread_tools.unpin": "解除置顶",
|
||||||
"thread_tools.lock": "Lock Topic",
|
"thread_tools.lock": "锁定主题",
|
||||||
"thread_tools.unlock": "Unlock Topic",
|
"thread_tools.unlock": "解除锁定",
|
||||||
"thread_tools.move": "Move Topic",
|
"thread_tools.move": "移动主题",
|
||||||
"thread_tools.fork": "Fork Topic",
|
"thread_tools.fork": "分叉主题",
|
||||||
"thread_tools.delete": "Delete Topic",
|
"thread_tools.delete": "删除主题",
|
||||||
"thread_tools.restore": "Restore Topic",
|
"thread_tools.restore": "恢复主题",
|
||||||
"load_categories": "版面载入中",
|
"load_categories": "版面载入中",
|
||||||
"disabled_categories_note": "停用的版面为灰色",
|
"disabled_categories_note": "停用的版面为灰色",
|
||||||
"confirm_move": "移动",
|
"confirm_move": "移动",
|
||||||
@@ -41,10 +46,10 @@
|
|||||||
"favourites.not_logged_in.title": "未登录",
|
"favourites.not_logged_in.title": "未登录",
|
||||||
"favourites.not_logged_in.message": "收藏帖子之前请先登录。",
|
"favourites.not_logged_in.message": "收藏帖子之前请先登录。",
|
||||||
"favourites.has_no_favourites": "你还没有任何收藏,收藏的帖子将会出现在这里!",
|
"favourites.has_no_favourites": "你还没有任何收藏,收藏的帖子将会出现在这里!",
|
||||||
"vote.not_logged_in.title": "Not Logged In",
|
"vote.not_logged_in.title": "未登录",
|
||||||
"vote.not_logged_in.message": "Please log in in order to vote",
|
"vote.not_logged_in.message": "收藏帖子之前请先登录。",
|
||||||
"vote.cant_vote_self.title": "Invalid Vote",
|
"vote.cant_vote_self.title": "废票 ",
|
||||||
"vote.cant_vote_self.message": "You cannot vote for your own post",
|
"vote.cant_vote_self.message": "你不能为自己的帖子投票",
|
||||||
"loading_more_posts": "载入更多帖子",
|
"loading_more_posts": "载入更多帖子",
|
||||||
"move_topic": "移动主题",
|
"move_topic": "移动主题",
|
||||||
"move_post": "移动帖子",
|
"move_post": "移动帖子",
|
||||||
@@ -55,11 +60,14 @@
|
|||||||
"fork_success": "成功将帖子作为主题!",
|
"fork_success": "成功将帖子作为主题!",
|
||||||
"reputation": "声望",
|
"reputation": "声望",
|
||||||
"posts": "发帖数",
|
"posts": "发帖数",
|
||||||
"composer.title_placeholder": "Enter your topic title here...",
|
"composer.title_placeholder": "在这里输入你的主题标题...",
|
||||||
"composer.write": "Write",
|
"composer.write": "书写",
|
||||||
"composer.preview": "Preview",
|
"composer.preview": "预览",
|
||||||
"composer.discard": "Discard",
|
"composer.discard": "丢弃",
|
||||||
"composer.submit": "Submit",
|
"composer.submit": "提交",
|
||||||
"composer.replying_to": "Replying to",
|
"composer.replying_to": "回复",
|
||||||
"composer.new_topic": "New Topic"
|
"composer.new_topic": "新主题",
|
||||||
|
"composer.drag_and_drop_images": "把图像拖到此处",
|
||||||
|
"composer.content_is_parsed_with": "内容已经被解析",
|
||||||
|
"composer.upload_instructions": "拖拽图片以上传"
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"title": "Unread",
|
"title": "未读",
|
||||||
"no_unread_topics": "没有未读主题。",
|
"no_unread_topics": "没有未读主题。",
|
||||||
"mark_all_read": "标记全部为已读",
|
"mark_all_read": "标记全部为已读",
|
||||||
"load_more": "载入更多"
|
"load_more": "载入更多"
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
define(['composer', 'forum/pagination'], function(composer, pagination) {
|
define(['composer', 'forum/pagination'], function(composer, pagination) {
|
||||||
var Topic = {},
|
var Topic = {},
|
||||||
infiniteLoaderActive = false,
|
infiniteLoaderActive = false,
|
||||||
scrollingToPost = false;
|
scrollingToPost = false,
|
||||||
|
currentUrl = '';
|
||||||
|
|
||||||
function showBottomPostBar() {
|
function showBottomPostBar() {
|
||||||
if($('#post-container .post-row').length > 1 || !$('#post-container li[data-index="0"]').length) {
|
if($('#post-container .post-row').length > 1 || !$('#post-container li[data-index="0"]').length) {
|
||||||
@@ -1018,6 +1019,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
|
|||||||
|
|
||||||
$('.posts > .post-row').each(function() {
|
$('.posts > .post-row').each(function() {
|
||||||
var el = $(this);
|
var el = $(this);
|
||||||
|
|
||||||
if (elementInView(el)) {
|
if (elementInView(el)) {
|
||||||
var index = parseInt(el.attr('data-index'), 10) + 1;
|
var index = parseInt(el.attr('data-index'), 10) + 1;
|
||||||
if(index === 0) {
|
if(index === 0) {
|
||||||
@@ -1026,17 +1028,19 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
|
|||||||
localStorage.setItem("topic:" + templates.get('topic_id') + ":bookmark", el.attr('data-pid'));
|
localStorage.setItem("topic:" + templates.get('topic_id') + ":bookmark", el.attr('data-pid'));
|
||||||
|
|
||||||
if (!scrollingToPost) {
|
if (!scrollingToPost) {
|
||||||
if (history.replaceState) {
|
var newUrl = window.location.protocol + '//' + window.location.host + window.location.pathname + '#' + el.attr('data-pid')
|
||||||
history.replaceState({
|
if (newUrl !== currentUrl) {
|
||||||
|
if (history.replaceState) {
|
||||||
|
history.replaceState({
|
||||||
url: window.location.pathname.slice(1) + '#' + el.attr('data-pid')
|
url: window.location.pathname.slice(1) + '#' + el.attr('data-pid')
|
||||||
},
|
}, null, newUrl);
|
||||||
null,
|
} else {
|
||||||
window.location.protocol + '//' + window.location.host + window.location.pathname + '#' + el.attr('data-pid'));
|
// this is very slugish on IE8/9, it causes the browser to adjust its scroll on its own,
|
||||||
} else {
|
// it can be fixed, but too much work for a very little return just so ie8/9 users can have the hash updated
|
||||||
// this is very slugish on IE8/9, it causes the browser to adjust its scroll on its own,
|
// commenting it out, sorry
|
||||||
// it can be fixed, but too much work for a very little return just so ie8/9 users can have the hash updated
|
// location.hash = '#' + el.attr('data-pid');
|
||||||
// commenting it out, sorry
|
}
|
||||||
// location.hash = '#' + el.attr('data-pid');
|
currentUrl = newUrl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1107,9 +1111,9 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
|
|||||||
}, duration !== undefined ? duration : 400, function() {
|
}, duration !== undefined ? duration : 400, function() {
|
||||||
scrollingToPost = false;
|
scrollingToPost = false;
|
||||||
if (highlight) {
|
if (highlight) {
|
||||||
scrollTo.parent().addClass('highlight');
|
scrollTo.parent().find('.topic-item').addClass('highlight');
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
scrollTo.parent().removeClass('highlight');
|
scrollTo.parent().find('.topic-item').removeClass('highlight');
|
||||||
}, 5000);
|
}, 5000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
var config = {},
|
var config = {},
|
||||||
templates,
|
templates,
|
||||||
fs = null,
|
fs = null,
|
||||||
|
path = null,
|
||||||
available_templates = [],
|
available_templates = [],
|
||||||
parsed_variables = {},
|
parsed_variables = {},
|
||||||
apiXHR;
|
apiXHR;
|
||||||
@@ -13,11 +14,12 @@
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
fs = require('fs');
|
fs = require('fs');
|
||||||
|
path = require('path');
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
templates.force_refresh = function (tpl) {
|
templates.force_refresh = function (tpl) {
|
||||||
return !!config.force_refresh[tpl];
|
return !!config.force_refresh[tpl];
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.get_custom_map = function (tpl) {
|
templates.get_custom_map = function (tpl) {
|
||||||
if (config['custom_mapping'] && tpl) {
|
if (config['custom_mapping'] && tpl) {
|
||||||
@@ -125,7 +127,28 @@
|
|||||||
|
|
||||||
templates.init = function (templates_to_load, custom_templates) {
|
templates.init = function (templates_to_load, custom_templates) {
|
||||||
loadTemplates(templates_to_load || [], custom_templates || false);
|
loadTemplates(templates_to_load || [], custom_templates || false);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
templates.render = function(filename, options, fn) {
|
||||||
|
if ('function' === typeof options) {
|
||||||
|
fn = options, options = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var tpl = filename
|
||||||
|
.replace(path.join(__dirname + '/../templates/'), '')
|
||||||
|
.replace('.' + options.settings['view engine'], '');
|
||||||
|
|
||||||
|
if (!templates[tpl]) {
|
||||||
|
fs.readFile(filename, function (err, html) {
|
||||||
|
templates[tpl] = html.toString();
|
||||||
|
templates.prepare(templates[tpl]);
|
||||||
|
|
||||||
|
return fn(err, templates[tpl].parse(options));
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return fn(null, templates[tpl].parse(options));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
templates.getTemplateNameFromUrl = function (url) {
|
templates.getTemplateNameFromUrl = function (url) {
|
||||||
var parts = url.split('?')[0].split('/');
|
var parts = url.split('?')[0].split('/');
|
||||||
@@ -136,7 +159,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.preload_template = function(tpl_name, callback) {
|
templates.preload_template = function(tpl_name, callback) {
|
||||||
|
|
||||||
@@ -153,7 +176,7 @@
|
|||||||
this.toString = function () {
|
this.toString = function () {
|
||||||
return this.html;
|
return this.html;
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
|
||||||
template.prototype.parse = parse;
|
template.prototype.parse = parse;
|
||||||
template.prototype.html = String(html);
|
template.prototype.html = String(html);
|
||||||
@@ -163,7 +186,7 @@
|
|||||||
|
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.load_template = function (callback, url, template) {
|
templates.load_template = function (callback, url, template) {
|
||||||
var location = document.location || window.location,
|
var location = document.location || window.location,
|
||||||
@@ -247,29 +270,29 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.cancelRequest = function() {
|
templates.cancelRequest = function() {
|
||||||
if (apiXHR) {
|
if (apiXHR) {
|
||||||
apiXHR.abort();
|
apiXHR.abort();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.flush = function () {
|
templates.flush = function () {
|
||||||
parsed_variables = {};
|
parsed_variables = {};
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.get = function (key) {
|
templates.get = function (key) {
|
||||||
return parsed_variables[key];
|
return parsed_variables[key];
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.set = function (key, value) {
|
templates.set = function (key, value) {
|
||||||
parsed_variables[key] = value;
|
parsed_variables[key] = value;
|
||||||
}
|
};
|
||||||
|
|
||||||
templates.setGlobal = function(key, value) {
|
templates.setGlobal = function(key, value) {
|
||||||
templates.globals[key] = value;
|
templates.globals[key] = value;
|
||||||
}
|
};
|
||||||
|
|
||||||
//modified from https://github.com/psychobunny/dcp.templates
|
//modified from https://github.com/psychobunny/dcp.templates
|
||||||
var parse = function (data) {
|
var parse = function (data) {
|
||||||
@@ -419,6 +442,8 @@
|
|||||||
})(data, "", template);
|
})(data, "", template);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports.__express = module.exports.render;
|
||||||
|
|
||||||
if ('undefined' !== typeof window) {
|
if ('undefined' !== typeof window) {
|
||||||
window.templates = module.exports;
|
window.templates = module.exports;
|
||||||
templates.init();
|
templates.init();
|
||||||
@@ -428,4 +453,4 @@
|
|||||||
module: {
|
module: {
|
||||||
exports: {}
|
exports: {}
|
||||||
}
|
}
|
||||||
} : module)
|
} : module);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<ul class="plugins">
|
<ul class="plugins">
|
||||||
<!-- BEGIN plugins -->
|
<!-- BEGIN plugins -->
|
||||||
<li data-plugin-id="{plugins.id}">
|
<li data-plugin-id="{plugins.id}">
|
||||||
<h2>{plugins.name}</h2>
|
<h2><strong>{plugins.name}</strong></h2>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<button data-action="toggleActive" class="btn <!-- IF plugins.active -->btn-warning<!-- ELSE -->btn-success<!-- ENDIF plugins.active -->">{plugins.activeText}</button>
|
<button data-action="toggleActive" class="btn <!-- IF plugins.active -->btn-warning<!-- ELSE -->btn-success<!-- ENDIF plugins.active -->">{plugins.activeText}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
|
|
||||||
|
<input type="hidden" template-variable="category_id" value="{cid}" />
|
||||||
|
<input type="hidden" template-variable="category_name" value="{name}" />
|
||||||
|
<input type="hidden" template-variable="currentPage" value="{currentPage}" />
|
||||||
|
<input type="hidden" template-variable="pageCount" value="{pageCount}" />
|
||||||
|
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
<li itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
||||||
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
||||||
<span itemprop="title">{category_name} <a target="_blank" href="../{category_id}.rss"><i class="fa fa-rss-square"></i></a></span>
|
<span itemprop="title">{name} <a target="_blank" href="../{cid}.rss"><i class="fa fa-rss-square"></i></a></span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
@@ -11,13 +17,13 @@
|
|||||||
<!-- IF privileges.write -->
|
<!-- IF privileges.write -->
|
||||||
<button id="new_post" class="btn btn-primary">[[category:new_topic_button]]</button>
|
<button id="new_post" class="btn btn-primary">[[category:new_topic_button]]</button>
|
||||||
<!-- ENDIF privileges.write -->
|
<!-- ENDIF privileges.write -->
|
||||||
<!-- IF !disableSocialButtons -->
|
<!-- IF !config.disableSocialButtons -->
|
||||||
<div class="inline-block pull-right">
|
<div class="inline-block pull-right">
|
||||||
<a href="#" id="facebook-share"><i class="fa fa-facebook-square fa-2x"></i></a>
|
<a href="#" id="facebook-share"><i class="fa fa-facebook-square fa-2x"></i></a>
|
||||||
<a href="#" id="twitter-share"><i class="fa fa-twitter-square fa-2x"></i></a>
|
<a href="#" id="twitter-share"><i class="fa fa-twitter-square fa-2x"></i></a>
|
||||||
<a href="#" id="google-share"><i class="fa fa-google-plus-square fa-2x"></i></a>
|
<a href="#" id="google-share"><i class="fa fa-google-plus-square fa-2x"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<!-- ENDIF !disableSocialButtons -->
|
<!-- ENDIF !config.disableSocialButtons -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
@@ -109,7 +115,3 @@
|
|||||||
<!-- ENDIF topics.length -->
|
<!-- ENDIF topics.length -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="hidden" template-variable="category_id" value="{category_id}" />
|
|
||||||
<input type="hidden" template-variable="category_name" value="{category_name}" />
|
|
||||||
<input type="hidden" template-variable="currentPage" value="{currentPage}" />
|
|
||||||
<input type="hidden" template-variable="pageCount" value="{pageCount}" />
|
|
||||||
@@ -3,17 +3,17 @@
|
|||||||
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
||||||
<span itemprop="title">{category_name} <a target="_blank" href="../{category_id}.rss"><i class="fa fa-rss-square"></i></a></span>
|
<span itemprop="title">{name} <a target="_blank" href="../{cid}.rss"><i class="fa fa-rss-square"></i></a></span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<ul class="topics" itemscope itemtype="http://www.schema.org/ItemList" data-nextstart="{nextStart}">
|
<ul class="topics" itemscope itemtype="http://www.schema.org/ItemList" data-nextstart="{nextStart}">
|
||||||
<!-- BEGIN topics -->
|
<!-- BEGIN topics -->
|
||||||
<li itemprop="itemListElement">
|
<li itemprop="itemListElement">
|
||||||
<meta itemprop="name" content="{topics.title}">
|
<meta itemprop="name" content="{topics.title}">
|
||||||
<span class="timestamp">{topics.teaser_timestamp}</span>
|
<span class="timestamp">{topics.teaser.timestamp}</span>
|
||||||
<a href="../../topic/{topics.slug}" itemprop="url">{topics.title} ({topics.postcount})</a>
|
<a href="../../topic/{topics.slug}" itemprop="url">{topics.title} ({topics.postcount})</a>
|
||||||
<div class="teaser">
|
<div class="teaser">
|
||||||
<img class="img-thumbnail" src="{topics.teaser_userpicture}" />
|
<img class="img-thumbnail" src="{topics.teaser.picture}" />
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
||||||
</li>
|
</li>
|
||||||
<li itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
<li itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
||||||
<a href="{relative_path}/category/{category_slug}" itemprop="url"><span itemprop="title">{category_name}</span></a>
|
<a href="{relative_path}/category/{category.slug}" itemprop="url"><span itemprop="title">{category.name}</span></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
||||||
<span itemprop="title">{topic_name} <a target="_blank" href="../{topic_id}.rss"><i class="fa fa-rss-square"></i></a></span>
|
<span itemprop="title">{title} <a target="_blank" href="../{tid}.rss"><i class="fa fa-rss-square"></i></a></span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<ul class="posts">
|
<ul class="posts">
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<input type="hidden" template-variable="expose_tools" value="{expose_tools}" />
|
<input type="hidden" template-variable="expose_tools" value="{expose_tools}" />
|
||||||
<input type="hidden" template-variable="topic_id" value="{topic_id}" />
|
<input type="hidden" template-variable="topic_id" value="{tid}" />
|
||||||
<input type="hidden" template-variable="currentPage" value="{currentPage}" />
|
<input type="hidden" template-variable="currentPage" value="{currentPage}" />
|
||||||
<input type="hidden" template-variable="pageCount" value="{pageCount}" />
|
<input type="hidden" template-variable="pageCount" value="{pageCount}" />
|
||||||
<input type="hidden" template-variable="locked" value="{locked}" />
|
<input type="hidden" template-variable="locked" value="{locked}" />
|
||||||
<input type="hidden" template-variable="deleted" value="{deleted}" />
|
<input type="hidden" template-variable="deleted" value="{deleted}" />
|
||||||
<input type="hidden" template-variable="pinned" value="{pinned}" />
|
<input type="hidden" template-variable="pinned" value="{pinned}" />
|
||||||
<input type="hidden" template-variable="topic_name" value="{topic_name}" />
|
<input type="hidden" template-variable="topic_name" value="{title}" />
|
||||||
<input type="hidden" template-variable="postcount" value="{postcount}" />
|
<input type="hidden" template-variable="postcount" value="{postcount}" />
|
||||||
|
|
||||||
<div class="topic">
|
<div class="topic">
|
||||||
@@ -14,14 +14,14 @@
|
|||||||
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
<a href="{relative_path}/" itemprop="url"><span itemprop="title">[[global:home]]</span></a>
|
||||||
</li>
|
</li>
|
||||||
<li itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
<li itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
||||||
<a href="{relative_path}/category/{category_slug}" itemprop="url"><span itemprop="title">{category_name}</span></a>
|
<a href="{relative_path}/category/{category.slug}" itemprop="url"><span itemprop="title">{category.name}</span></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
<li class="active" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
|
||||||
<span itemprop="title">{topic_name} <a target="_blank" href="../{topic_id}.rss"><i class="fa fa-rss-square"></i></a></span>
|
<span itemprop="title">{title} <a target="_blank" href="../{tid}.rss"><i class="fa fa-rss-square"></i></a></span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<ul id="post-container" class="posts" data-tid="{topic_id}">
|
<ul id="post-container" class="posts" data-tid="{tid}">
|
||||||
<!-- BEGIN posts -->
|
<!-- BEGIN posts -->
|
||||||
<li class="post-row infiniteloaded" data-pid="{posts.pid}" data-uid="{posts.uid}" data-username="{posts.username}" data-userslug="{posts.userslug}" data-index="{posts.index}" data-deleted="{posts.deleted}" itemscope itemtype="http://schema.org/Comment">
|
<li class="post-row infiniteloaded" data-pid="{posts.pid}" data-uid="{posts.uid}" data-username="{posts.username}" data-userslug="{posts.userslug}" data-index="{posts.index}" data-deleted="{posts.deleted}" itemscope itemtype="http://schema.org/Comment">
|
||||||
<a id="post_anchor_{posts.pid}" name="{posts.pid}"></a>
|
<a id="post_anchor_{posts.pid}" name="{posts.pid}"></a>
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-11 panel panel-default post-block">
|
<div class="col-md-11 panel panel-default post-block topic-item">
|
||||||
|
|
||||||
<a class="main-post avatar" href="{relative_path}/user/{posts.userslug}">
|
<a class="main-post avatar" href="{relative_path}/user/{posts.userslug}">
|
||||||
<img itemprop="image" src="{posts.picture}" align="left" class="img-thumbnail" width=150 height=150 />
|
<img itemprop="image" src="{posts.picture}" align="left" class="img-thumbnail" width=150 height=150 />
|
||||||
</a>
|
</a>
|
||||||
<h3 class="main-post">
|
<h3 class="main-post">
|
||||||
<p id="topic_title_{posts.pid}" class="topic-title" itemprop="name">{topic_name}</p>
|
<p id="topic_title_{posts.pid}" class="topic-title" itemprop="name">{title}</p>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div class="topic-buttons">
|
<div class="topic-buttons">
|
||||||
@@ -99,11 +99,11 @@
|
|||||||
<div class="dropdown share-dropdown">
|
<div class="dropdown share-dropdown">
|
||||||
<button title="[[topic:share]]"class="btn btn-sm btn-default share" data-toggle="dropdown" href="#"><i class="fa fa-share-square-o"></i></button>
|
<button title="[[topic:share]]"class="btn btn-sm btn-default share" data-toggle="dropdown" href="#"><i class="fa fa-share-square-o"></i></button>
|
||||||
<ul class="dropdown-menu text-center pull-right" role="menu" aria-labelledby="dLabel">
|
<ul class="dropdown-menu text-center pull-right" role="menu" aria-labelledby="dLabel">
|
||||||
<!-- IF !disableSocialButtons -->
|
<!-- IF !config.disableSocialButtons -->
|
||||||
<li class="btn btn-sm btn-default facebook-share" type="button" title=""><i class="fa fa-facebook fa-fw"></i></li>
|
<li class="btn btn-sm btn-default facebook-share" type="button" title=""><i class="fa fa-facebook fa-fw"></i></li>
|
||||||
<li class="btn btn-sm btn-default twitter-share" type="button" title=""><i class="fa fa-twitter fa-fw"></i></li>
|
<li class="btn btn-sm btn-default twitter-share" type="button" title=""><i class="fa fa-twitter fa-fw"></i></li>
|
||||||
<li class="btn btn-sm btn-default google-share" type="button" title=""><i class="fa fa-google-plus fa-fw"></i></li>
|
<li class="btn btn-sm btn-default google-share" type="button" title=""><i class="fa fa-google-plus fa-fw"></i></li>
|
||||||
<!-- ENDIF !disableSocialButtons -->
|
<!-- ENDIF !config.disableSocialButtons -->
|
||||||
<li>
|
<li>
|
||||||
<input type="text" id="post_{posts.pid}_link" value="" class="form-control pull-right post-link" style=""></input>
|
<input type="text" id="post_{posts.pid}_link" value="" class="form-control pull-right post-link" style=""></input>
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
@@ -59,39 +59,26 @@ var db = require('./database'),
|
|||||||
Categories.markAsRead(cid, uid);
|
Categories.markAsRead(cid, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCategoryData(next) {
|
|
||||||
Categories.getCategoryData(cid, next);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTopics(next) {
|
|
||||||
Categories.getCategoryTopics(cid, start, end, uid, next);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getPageCount(next) {
|
|
||||||
Categories.getPageCount(cid, uid, next);
|
|
||||||
}
|
|
||||||
|
|
||||||
async.parallel({
|
async.parallel({
|
||||||
'category': getCategoryData,
|
category: function(next) {
|
||||||
'topics': getTopics,
|
Categories.getCategoryData(cid, next);
|
||||||
'pageCount': getPageCount
|
},
|
||||||
|
topics: function(next) {
|
||||||
|
Categories.getCategoryTopics(cid, start, end, uid, next);
|
||||||
|
},
|
||||||
|
pageCount: function(next) {
|
||||||
|
Categories.getPageCount(cid, uid, next);
|
||||||
|
}
|
||||||
}, function(err, results) {
|
}, function(err, results) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var category = {
|
var category = results.category;
|
||||||
'category_name': results.category.name,
|
category.topics = results.topics.topics;
|
||||||
'category_description': results.category.description,
|
category.nextStart = results.topics.nextStart;
|
||||||
'link': results.category.link,
|
category.pageCount = results.pageCount;
|
||||||
'disabled': results.category.disabled,
|
category.topic_row_size = 'col-md-9';
|
||||||
'topic_row_size': 'col-md-9',
|
|
||||||
'category_id': cid,
|
|
||||||
'topics': results.topics.topics,
|
|
||||||
'nextStart': results.topics.nextStart,
|
|
||||||
'pageCount': results.pageCount,
|
|
||||||
'disableSocialButtons': meta.config.disableSocialButtons !== undefined ? parseInt(meta.config.disableSocialButtons, 10) !== 0 : false,
|
|
||||||
};
|
|
||||||
|
|
||||||
callback(null, category);
|
callback(null, category);
|
||||||
});
|
});
|
||||||
@@ -103,26 +90,26 @@ var db = require('./database'),
|
|||||||
Categories.getTopicIds(cid, start, stop, next);
|
Categories.getTopicIds(cid, start, stop, next);
|
||||||
},
|
},
|
||||||
function(tids, next) {
|
function(tids, next) {
|
||||||
topics.getTopicsByTids(tids, cid, uid, next);
|
topics.getTopicsByTids(tids, uid, next);
|
||||||
},
|
},
|
||||||
function(topics, next) {
|
function(topics, next) {
|
||||||
if (topics && topics.length > 0) {
|
if (!topics || !topics.length) {
|
||||||
db.sortedSetRevRank('categories:' + cid + ':tid', topics[topics.length - 1].tid, function(err, rank) {
|
return next(null, {
|
||||||
if(err) {
|
topics: [],
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
next(null, {
|
|
||||||
topics: topics,
|
|
||||||
nextStart: parseInt(rank, 10) + 1
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
next(null, {
|
|
||||||
topics: topics,
|
|
||||||
nextStart: 1
|
nextStart: 1
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
db.sortedSetRevRank('categories:' + cid + ':tid', topics[topics.length - 1].tid, function(err, rank) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
next(null, {
|
||||||
|
topics: topics,
|
||||||
|
nextStart: parseInt(rank, 10) + 1
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
@@ -299,14 +286,14 @@ var db = require('./database'),
|
|||||||
|
|
||||||
Categories.getCategories = function(cids, uid, callback) {
|
Categories.getCategories = function(cids, uid, callback) {
|
||||||
if (!cids || !Array.isArray(cids) || cids.length === 0) {
|
if (!cids || !Array.isArray(cids) || cids.length === 0) {
|
||||||
return callback(new Error('invalid-cids'), null);
|
return callback(new Error('invalid-cids'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCategory(cid, callback) {
|
function getCategory(cid, callback) {
|
||||||
Categories.getCategoryData(cid, function(err, categoryData) {
|
Categories.getCategoryData(cid, function(err, categoryData) {
|
||||||
if (err) {
|
if (err) {
|
||||||
winston.warn('Attempted to retrieve cid ' + cid + ', but nothing was returned!');
|
winston.warn('Attempted to retrieve cid ' + cid + ', but nothing was returned!');
|
||||||
return callback(err, null);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
Categories.hasReadCategory(cid, uid, function(hasRead) {
|
Categories.hasReadCategory(cid, uid, function(hasRead) {
|
||||||
@@ -338,7 +325,7 @@ var db = require('./database'),
|
|||||||
|
|
||||||
db.getSortedSetRange('uid:' + uid + ':posts', 0, -1, function(err, pids) {
|
db.getSortedSetRange('uid:' + uid + ':posts', 0, -1, function(err, pids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err, null);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var index = 0,
|
var index = 0,
|
||||||
@@ -359,15 +346,11 @@ var db = require('./database'),
|
|||||||
}
|
}
|
||||||
|
|
||||||
++index;
|
++index;
|
||||||
callback(null);
|
callback();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function(err) {
|
function(err) {
|
||||||
if (err) {
|
callback(err, active);
|
||||||
return callback(err, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
callback(null, active);
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@@ -424,6 +407,6 @@ var db = require('./database'),
|
|||||||
|
|
||||||
Categories.addActiveUser(cid, uid, timestamp);
|
Categories.addActiveUser(cid, uid, timestamp);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
}(exports));
|
}(exports));
|
||||||
@@ -153,24 +153,13 @@ var async = require('async'),
|
|||||||
downvoted: function(next) {
|
downvoted: function(next) {
|
||||||
db.isSetMember('pid:' + pid + ':downvote', uid, next);
|
db.isSetMember('pid:' + pid + ':downvote', uid, next);
|
||||||
}
|
}
|
||||||
}, function(err, results) {
|
}, callback);
|
||||||
callback(err, results)
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Favourites.getVoteStatusByPostIDs = function(pids, uid, callback) {
|
Favourites.getVoteStatusByPostIDs = function(pids, uid, callback) {
|
||||||
var data = {};
|
async.map(pids, function(pid, next) {
|
||||||
|
Favourites.hasVoted(pid, uid, next);
|
||||||
function iterator(pid, next) {
|
}, callback);
|
||||||
Favourites.hasVoted(pid, uid, function(err, voteStatus) {
|
|
||||||
data[pid] = voteStatus;
|
|
||||||
next()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async.each(pids, iterator, function(err) {
|
|
||||||
callback(data);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Favourites.favourite = function (pid, room_id, uid, socket) {
|
Favourites.favourite = function (pid, room_id, uid, socket) {
|
||||||
@@ -248,33 +237,15 @@ var async = require('async'),
|
|||||||
};
|
};
|
||||||
|
|
||||||
Favourites.getFavouritesByPostIDs = function(pids, uid, callback) {
|
Favourites.getFavouritesByPostIDs = function(pids, uid, callback) {
|
||||||
var data = {};
|
async.map(pids, function(pid, next) {
|
||||||
|
Favourites.hasFavourited(pid, uid, next);
|
||||||
function iterator(pid, next) {
|
}, callback);
|
||||||
Favourites.hasFavourited(pid, uid, function(err, hasFavourited) {
|
|
||||||
data[pid] = hasFavourited;
|
|
||||||
next()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async.each(pids, iterator, function(err) {
|
|
||||||
callback(data);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Favourites.getFavouritedUidsByPids = function(pids, callback) {
|
Favourites.getFavouritedUidsByPids = function(pids, callback) {
|
||||||
var data = {};
|
async.map(pids, function(pid, next) {
|
||||||
|
db.getSetMembers('pid:' + pid + ':users_favourited', next);
|
||||||
function getUids(pid, next) {
|
}, callback)
|
||||||
db.getSetMembers('pid:' + pid + ':users_favourited', function(err, uids) {
|
|
||||||
data[pid] = uids;
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async.each(pids, getUids, function(err) {
|
|
||||||
callback(data);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}(exports));
|
}(exports));
|
||||||
@@ -60,6 +60,7 @@ var path = require('path'),
|
|||||||
config.allowFileUploads = parseInt(meta.config.allowFileUploads, 10) === 1;
|
config.allowFileUploads = parseInt(meta.config.allowFileUploads, 10) === 1;
|
||||||
config.allowTopicsThumbnail = parseInt(meta.config.allowTopicsThumbnail, 10) === 1;
|
config.allowTopicsThumbnail = parseInt(meta.config.allowTopicsThumbnail, 10) === 1;
|
||||||
config.usePagination = parseInt(meta.config.usePagination, 10) === 1;
|
config.usePagination = parseInt(meta.config.usePagination, 10) === 1;
|
||||||
|
config.disableSocialButtons = parseInt(meta.config.disableSocialButtons, 10) === 1;
|
||||||
config.topicsPerPage = meta.config.topicsPerPage || 20;
|
config.topicsPerPage = meta.config.topicsPerPage || 20;
|
||||||
config.postsPerPage = meta.config.postsPerPage || 20;
|
config.postsPerPage = meta.config.postsPerPage || 20;
|
||||||
config.maximumFileSize = meta.config.maximumFileSize;
|
config.maximumFileSize = meta.config.maximumFileSize;
|
||||||
@@ -169,7 +170,8 @@ var path = require('path'),
|
|||||||
});
|
});
|
||||||
|
|
||||||
app.get('/topic/:id/:slug?', function (req, res, next) {
|
app.get('/topic/:id/:slug?', function (req, res, next) {
|
||||||
var uid = (req.user) ? req.user.uid : 0;
|
var uid = req.user? parseInt(req.user.uid, 10) : 0;
|
||||||
|
var tid = req.params.id;
|
||||||
var page = 1;
|
var page = 1;
|
||||||
if(req.query && req.query.page) {
|
if(req.query && req.query.page) {
|
||||||
page = req.query.page;
|
page = req.query.page;
|
||||||
@@ -187,29 +189,41 @@ var path = require('path'),
|
|||||||
var start = (page - 1) * settings.postsPerPage;
|
var start = (page - 1) * settings.postsPerPage;
|
||||||
var end = start + settings.postsPerPage - 1;
|
var end = start + settings.postsPerPage - 1;
|
||||||
|
|
||||||
ThreadTools.privileges(req.params.id, uid, function(err, privileges) {
|
ThreadTools.privileges(tid, uid, function(err, privileges) {
|
||||||
if (privileges.read) {
|
if(err) {
|
||||||
topics.getTopicWithPosts(req.params.id, uid, start, end, false, function (err, data) {
|
return next(err);
|
||||||
if(err) {
|
}
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(page > data.pageCount) {
|
if(!privileges.read) {
|
||||||
return res.send(404);
|
|
||||||
}
|
|
||||||
|
|
||||||
data.currentPage = page;
|
|
||||||
data.privileges = privileges;
|
|
||||||
|
|
||||||
if (parseInt(data.deleted, 10) === 1 && parseInt(data.expose_tools, 10) === 0) {
|
|
||||||
return res.json(404, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
res.json(data);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
res.send(403);
|
res.send(403);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
topics.getTopicWithPosts(tid, uid, start, end, function (err, data) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(page > data.pageCount) {
|
||||||
|
return res.send(404);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parseInt(data.deleted, 10) === 1 && parseInt(data.expose_tools, 10) === 0) {
|
||||||
|
return res.json(404, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
data.currentPage = page;
|
||||||
|
data.privileges = privileges;
|
||||||
|
|
||||||
|
if (uid) {
|
||||||
|
topics.markAsRead(tid, uid, function(err) {
|
||||||
|
topics.pushUnreadCount(uid);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
topics.increaseViewCount(tid);
|
||||||
|
|
||||||
|
res.json(data);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -401,7 +415,7 @@ var path = require('path'),
|
|||||||
return callback(err, null);
|
return callback(err, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
topics.getTopicsByTids(tids, 0, 0, callback);
|
topics.getTopicsByTids(tids, 0, callback);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,6 +526,14 @@ var path = require('path'),
|
|||||||
app.get('/500', function(req, res) {
|
app.get('/500', function(req, res) {
|
||||||
res.json({errorMessage: 'testing'});
|
res.json({errorMessage: 'testing'});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.namespace('/categories', function() {
|
||||||
|
app.get(':cid/moderators', function(req, res) {
|
||||||
|
categories.getModerators(req.params.cid, function(err, moderators) {
|
||||||
|
res.json({moderators: moderators});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}(exports));
|
}(exports));
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
function generateForTopic(req, res, next) {
|
function generateForTopic(req, res, next) {
|
||||||
var tid = req.params.topic_id;
|
var tid = req.params.topic_id;
|
||||||
|
|
||||||
topics.getTopicWithPosts(tid, 0, 0, 25, true, function (err, topicData) {
|
topics.getTopicWithPosts(tid, 0, 0, 25, function (err, topicData) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
var author = topicData.posts.length ? topicData.posts[0].username : '';
|
var author = topicData.posts.length ? topicData.posts[0].username : '';
|
||||||
|
|
||||||
var feed = new rss({
|
var feed = new rss({
|
||||||
title: topicData.topic_name,
|
title: topicData.title,
|
||||||
description: description,
|
description: description,
|
||||||
feed_url: nconf.get('url') + '/topic/' + tid + '.rss',
|
feed_url: nconf.get('url') + '/topic/' + tid + '.rss',
|
||||||
site_url: nconf.get('url') + '/topic/' + topicData.slug,
|
site_url: nconf.get('url') + '/topic/' + topicData.slug,
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
dateStamp = new Date(parseInt(parseInt(postData.edited, 10) === 0 ? postData.timestamp : postData.edited, 10)).toUTCString();
|
dateStamp = new Date(parseInt(parseInt(postData.edited, 10) === 0 ? postData.timestamp : postData.edited, 10)).toUTCString();
|
||||||
|
|
||||||
feed.item({
|
feed.item({
|
||||||
title: 'Reply to ' + topicData.topic_name + ' on ' + dateStamp,
|
title: 'Reply to ' + topicData.title + ' on ' + dateStamp,
|
||||||
description: postData.content,
|
description: postData.content,
|
||||||
url: nconf.get('url') + '/topic/' + topicData.slug + '#' + postData.pid,
|
url: nconf.get('url') + '/topic/' + topicData.slug + '#' + postData.pid,
|
||||||
author: postData.username,
|
author: postData.username,
|
||||||
@@ -109,10 +109,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var feed = new rss({
|
var feed = new rss({
|
||||||
title: categoryData.category_name,
|
title: categoryData.name,
|
||||||
description: categoryData.category_description,
|
description: categoryData.description,
|
||||||
feed_url: nconf.get('url') + '/category/' + cid + '.rss',
|
feed_url: nconf.get('url') + '/category/' + cid + '.rss',
|
||||||
site_url: nconf.get('url') + '/category/' + categoryData.category_id,
|
site_url: nconf.get('url') + '/category/' + categoryData.cid,
|
||||||
ttl: 60
|
ttl: 60
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ var path = require('path'),
|
|||||||
|
|
||||||
db.getObjectFields('config', ['theme:type', 'theme:id'], function(err, themeData) {
|
db.getObjectFields('config', ['theme:type', 'theme:id'], function(err, themeData) {
|
||||||
var themeId = (themeData['theme:id'] || 'nodebb-theme-vanilla'),
|
var themeId = (themeData['theme:id'] || 'nodebb-theme-vanilla'),
|
||||||
baseThemePath = path.join(nconf.get('themes_path'), themeId),
|
baseThemePath = path.join(nconf.get('themes_path'), (themeData['theme:type'] && themeData['theme:type'] === 'local' ? themeId : 'nodebb-theme-vanilla')),
|
||||||
paths = [baseThemePath, path.join(__dirname, '../../node_modules')],
|
paths = [baseThemePath, path.join(__dirname, '../../node_modules')],
|
||||||
source = '@import "./theme";',
|
source = '@import "./theme";',
|
||||||
x, numLESS;
|
x, numLESS;
|
||||||
@@ -26,28 +26,21 @@ var path = require('path'),
|
|||||||
source += '\n@import "./' + plugins.lessFiles[x] + '";';
|
source += '\n@import "./' + plugins.lessFiles[x] + '";';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Detect if a theme has been selected, and handle appropriately
|
var parser = new (less.Parser)({
|
||||||
if (!themeData['theme:type'] || themeData['theme:type'] === 'local') {
|
paths: paths
|
||||||
// Local theme
|
|
||||||
var parser = new (less.Parser)({
|
|
||||||
paths: paths
|
|
||||||
});
|
|
||||||
|
|
||||||
parser.parse(source, function(err, tree) {
|
|
||||||
if (err) {
|
|
||||||
res.send(500, err.message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
meta.css.cache = tree.toCSS({
|
|
||||||
compress: true
|
|
||||||
});
|
|
||||||
res.type('text/css').send(200, meta.css.cache);
|
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
// Bootswatch theme not supported yet
|
parser.parse(source, function(err, tree) {
|
||||||
res.send(500, 'Give me time!');
|
if (err) {
|
||||||
}
|
res.send(500, err.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
meta.css.cache = tree.toCSS({
|
||||||
|
compress: true
|
||||||
|
});
|
||||||
|
res.type('text/css').send(200, meta.css.cache);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -207,30 +207,37 @@ SocketPosts.getPrivileges = function(socket, pid, callback) {
|
|||||||
|
|
||||||
SocketPosts.getFavouritedUsers = function(socket, pid, callback) {
|
SocketPosts.getFavouritedUsers = function(socket, pid, callback) {
|
||||||
|
|
||||||
favourites.getFavouritedUidsByPids([pid], function(data) {
|
favourites.getFavouritedUidsByPids([pid], function(err, data) {
|
||||||
|
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!Array.isArray(data) || !data.length) {
|
||||||
|
callback(null, "");
|
||||||
|
}
|
||||||
|
|
||||||
var max = 5; //hardcoded
|
var max = 5; //hardcoded
|
||||||
var usernames = "";
|
var usernames = "";
|
||||||
|
|
||||||
var pid_uids = data[pid];
|
var pid_uids = data[0];
|
||||||
var rest_amount = 0;
|
var rest_amount = 0;
|
||||||
if (data.hasOwnProperty(pid) && pid_uids.length > 0) {
|
|
||||||
if (pid_uids.length > max) {
|
|
||||||
rest_amount = pid_uids.length - max;
|
|
||||||
pid_uids = pid_uids.slice(0, max);
|
|
||||||
}
|
|
||||||
user.getUsernamesByUids(pid_uids, function(err, result) {
|
|
||||||
if(err) {
|
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
usernames = result.join(', ') + (rest_amount > 0
|
if (pid_uids.length > max) {
|
||||||
? " and " + rest_amount + (rest_amount > 1 ? " others" : " other")
|
rest_amount = pid_uids.length - max;
|
||||||
: "");
|
pid_uids = pid_uids.slice(0, max);
|
||||||
callback(null, usernames);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
callback(null, "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
user.getUsernamesByUids(pid_uids, function(err, result) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
usernames = result.join(', ') + (rest_amount > 0
|
||||||
|
? " and " + rest_amount + (rest_amount > 1 ? " others" : " other")
|
||||||
|
: "");
|
||||||
|
callback(null, usernames);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ SocketTopics.loadMore = function(socket, data, callback) {
|
|||||||
|
|
||||||
async.parallel({
|
async.parallel({
|
||||||
posts: function(next) {
|
posts: function(next) {
|
||||||
topics.getTopicPosts(data.tid, start, end, socket.uid, next);
|
topics.getTopicPosts(data.tid, start, end, socket.uid, false, next);
|
||||||
},
|
},
|
||||||
privileges: function(next) {
|
privileges: function(next) {
|
||||||
threadTools.privileges(data.tid, socket.uid, next);
|
threadTools.privileges(data.tid, socket.uid, next);
|
||||||
|
|||||||
235
src/topics.js
235
src/topics.js
@@ -1,3 +1,5 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
var async = require('async'),
|
var async = require('async'),
|
||||||
gravatar = require('gravatar'),
|
gravatar = require('gravatar'),
|
||||||
path = require('path'),
|
path = require('path'),
|
||||||
@@ -53,7 +55,7 @@ var async = require('async'),
|
|||||||
};
|
};
|
||||||
|
|
||||||
if(thumb) {
|
if(thumb) {
|
||||||
topicData['thumb'] = thumb;
|
topicData.thumb = thumb;
|
||||||
}
|
}
|
||||||
|
|
||||||
db.setObject('topic:' + tid, topicData, function(err) {
|
db.setObject('topic:' + tid, topicData, function(err) {
|
||||||
@@ -109,8 +111,8 @@ var async = require('async'),
|
|||||||
categoryTools.exists(cid, next);
|
categoryTools.exists(cid, next);
|
||||||
},
|
},
|
||||||
function(categoryExists, next) {
|
function(categoryExists, next) {
|
||||||
if(!categoryExists) {
|
if (!categoryExists) {
|
||||||
return next(new Error('category doesn\'t exist'))
|
return next(new Error('category doesn\'t exist'));
|
||||||
}
|
}
|
||||||
categoryTools.privileges(cid, uid, next);
|
categoryTools.privileges(cid, uid, next);
|
||||||
},
|
},
|
||||||
@@ -134,7 +136,7 @@ var async = require('async'),
|
|||||||
next(null, postData);
|
next(null, postData);
|
||||||
},
|
},
|
||||||
function(postData, next) {
|
function(postData, next) {
|
||||||
Topics.getTopicsByTids([postData.tid], data.cid, uid, function(err, topicData) {
|
Topics.getTopicsByTids([postData.tid], uid, function(err, topicData) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
@@ -350,12 +352,7 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTopicPosts = function(tid, start, end, current_user, reverse, callback) {
|
Topics.getTopicPosts = function(tid, start, end, uid, reverse, callback) {
|
||||||
if (typeof reverse === 'function') {
|
|
||||||
callback = reverse;
|
|
||||||
reverse = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
posts.getPostsByTid(tid, start, end, reverse, function(err, postData) {
|
posts.getPostsByTid(tid, start, end, reverse, function(err, postData) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
@@ -369,69 +366,39 @@ var async = require('async'),
|
|||||||
postData[i].index = start + i;
|
postData[i].index = start + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
pids = postData.map(function(post) {
|
var pids = postData.map(function(post) {
|
||||||
return post.pid;
|
return post.pid;
|
||||||
});
|
});
|
||||||
|
|
||||||
function getFavouritesData(next) {
|
async.parallel({
|
||||||
favourites.getFavouritesByPostIDs(pids, current_user, function(fav_data) {
|
favourites : function(next) {
|
||||||
next(null, fav_data);
|
favourites.getFavouritesByPostIDs(pids, uid, next);
|
||||||
});
|
},
|
||||||
}
|
voteData : function(next) {
|
||||||
|
favourites.getVoteStatusByPostIDs(pids, uid, next);
|
||||||
function getVoteStatusData(next) {
|
},
|
||||||
favourites.getVoteStatusByPostIDs(pids, current_user, function(vote_data) {
|
userData : function(next) {
|
||||||
next(null, vote_data);
|
async.each(postData, posts.addUserInfoToPost, next);
|
||||||
})
|
},
|
||||||
}
|
privileges : function(next) {
|
||||||
|
async.map(pids, function (pid, next) {
|
||||||
function addUserInfoToPosts(next) {
|
postTools.privileges(pid, uid, next);
|
||||||
function iterator(post, callback) {
|
}, next);
|
||||||
posts.addUserInfoToPost(post, function() {
|
|
||||||
callback(null);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
}, function(err, results) {
|
||||||
async.each(postData, iterator, function(err) {
|
|
||||||
next(err, null);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getPrivileges(next) {
|
|
||||||
var privs = {};
|
|
||||||
async.each(pids, getPostPrivileges, function(err) {
|
|
||||||
next(err, privs);
|
|
||||||
});
|
|
||||||
|
|
||||||
function getPostPrivileges(pid, next) {
|
|
||||||
postTools.privileges(pid, current_user, function(err, postPrivileges) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
privs[pid] = postPrivileges;
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async.parallel([getFavouritesData, addUserInfoToPosts, getPrivileges, getVoteStatusData], function(err, results) {
|
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var fav_data = results[0],
|
|
||||||
privileges = results[2],
|
|
||||||
voteStatus = results[3];
|
|
||||||
|
|
||||||
for (var i = 0; i < postData.length; ++i) {
|
for (var i = 0; i < postData.length; ++i) {
|
||||||
var pid = postData[i].pid;
|
postData[i].favourited = results.favourites[i];
|
||||||
postData[i].favourited = fav_data[pid];
|
postData[i].upvoted = results.voteData[i].upvoted;
|
||||||
postData[i].upvoted = voteStatus[pid].upvoted;
|
postData[i].downvoted = results.voteData[i].downvoted;
|
||||||
postData[i].downvoted = voteStatus[pid].downvoted;
|
|
||||||
postData[i].votes = postData[i].votes || 0;
|
postData[i].votes = postData[i].votes || 0;
|
||||||
postData[i].display_moderator_tools = (current_user != 0) && privileges[pid].editable;
|
postData[i].display_moderator_tools = parseInt(uid, 10) !== 0 && results.privileges[i].editable;
|
||||||
postData[i].display_move_tools = privileges[pid].move;
|
postData[i].display_move_tools = results.privileges[i].move;
|
||||||
if(parseInt(postData[i].deleted, 10) === 1 && !privileges[pid].view_deleted) {
|
|
||||||
|
if(parseInt(postData[i].deleted, 10) === 1 && !results.privileges[i].view_deleted) {
|
||||||
postData[i].content = 'This post is deleted!';
|
postData[i].content = 'This post is deleted!';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -484,7 +451,7 @@ var async = require('async'),
|
|||||||
next(!err && privileges.read);
|
next(!err && privileges.read);
|
||||||
});
|
});
|
||||||
}, function(tids) {
|
}, function(tids) {
|
||||||
Topics.getTopicsByTids(tids, 0, uid, function(err, topicData) {
|
Topics.getTopicsByTids(tids, uid, function(err, topicData) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@@ -495,7 +462,7 @@ var async = require('async'),
|
|||||||
|
|
||||||
db.sortedSetRevRank(set, topicData[topicData.length - 1].tid, function(err, rank) {
|
db.sortedSetRevRank(set, topicData[topicData.length - 1].tid, function(err, rank) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return calllback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
returnTopics.nextStart = parseInt(rank, 10) + 1;
|
returnTopics.nextStart = parseInt(rank, 10) + 1;
|
||||||
@@ -513,7 +480,7 @@ var async = require('async'),
|
|||||||
month: 2592000000
|
month: 2592000000
|
||||||
};
|
};
|
||||||
|
|
||||||
var since = terms['day'];
|
var since = terms.day;
|
||||||
if(terms[term]) {
|
if(terms[term]) {
|
||||||
since = terms[term];
|
since = terms[term];
|
||||||
}
|
}
|
||||||
@@ -608,7 +575,7 @@ var async = require('async'),
|
|||||||
|
|
||||||
function sendUnreadTopics(topicIds) {
|
function sendUnreadTopics(topicIds) {
|
||||||
|
|
||||||
Topics.getTopicsByTids(topicIds, 0, uid, function(err, topicData) {
|
Topics.getTopicsByTids(topicIds, uid, function(err, topicData) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@@ -670,7 +637,7 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTopicsByTids = function(tids, cid, current_user, callback) {
|
Topics.getTopicsByTids = function(tids, uid, callback) {
|
||||||
|
|
||||||
if (!Array.isArray(tids) || tids.length === 0) {
|
if (!Array.isArray(tids) || tids.length === 0) {
|
||||||
return callback(null, []);
|
return callback(null, []);
|
||||||
@@ -679,13 +646,13 @@ var async = require('async'),
|
|||||||
function getTopicInfo(topicData, callback) {
|
function getTopicInfo(topicData, callback) {
|
||||||
async.parallel({
|
async.parallel({
|
||||||
hasread : function (next) {
|
hasread : function (next) {
|
||||||
Topics.hasReadTopic(topicData.tid, current_user, next);
|
Topics.hasReadTopic(topicData.tid, uid, next);
|
||||||
},
|
},
|
||||||
teaser : function (next) {
|
teaser : function (next) {
|
||||||
Topics.getTeaser(topicData.tid, next);
|
Topics.getTeaser(topicData.tid, next);
|
||||||
},
|
},
|
||||||
privileges : function (next) {
|
privileges : function (next) {
|
||||||
categoryTools.privileges(topicData.cid, current_user, next);
|
categoryTools.privileges(topicData.cid, uid, next);
|
||||||
},
|
},
|
||||||
categoryData : function (next) {
|
categoryData : function (next) {
|
||||||
categories.getCategoryFields(topicData.cid, ['name', 'slug', 'icon'], next);
|
categories.getCategoryFields(topicData.cid, ['name', 'slug', 'icon'], next);
|
||||||
@@ -696,7 +663,7 @@ var async = require('async'),
|
|||||||
function isTopicVisible(topicData, topicInfo) {
|
function isTopicVisible(topicData, topicInfo) {
|
||||||
var deleted = parseInt(topicData.deleted, 10) !== 0;
|
var deleted = parseInt(topicData.deleted, 10) !== 0;
|
||||||
|
|
||||||
return !deleted || (deleted && topicInfo.privileges.view_deleted) || topicData.uid === current_user;
|
return !deleted || (deleted && topicInfo.privileges.view_deleted) || parseInt(topicData.uid, 10) === parseInt(uid, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadTopic(tid, next) {
|
function loadTopic(tid, next) {
|
||||||
@@ -722,7 +689,7 @@ var async = require('async'),
|
|||||||
topicData.pinned = parseInt(topicData.pinned, 10) === 1;
|
topicData.pinned = parseInt(topicData.pinned, 10) === 1;
|
||||||
topicData.locked = parseInt(topicData.locked, 10) === 1;
|
topicData.locked = parseInt(topicData.locked, 10) === 1;
|
||||||
topicData.deleted = parseInt(topicData.deleted, 10) === 1;
|
topicData.deleted = parseInt(topicData.deleted, 10) === 1;
|
||||||
topicData.unread = !(topicInfo.hasread && parseInt(current_user, 10) !== 0);
|
topicData.unread = !(topicInfo.hasread && parseInt(uid, 10) !== 0);
|
||||||
topicData.unreplied = parseInt(topicData.postcount, 10) === 1;
|
topicData.unreplied = parseInt(topicData.postcount, 10) === 1;
|
||||||
|
|
||||||
topicData.category = topicInfo.categoryData;
|
topicData.category = topicInfo.categoryData;
|
||||||
@@ -746,78 +713,46 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTopicWithPosts = function(tid, current_user, start, end, quiet, callback) {
|
Topics.getTopicWithPosts = function(tid, uid, start, end, callback) {
|
||||||
threadTools.exists(tid, function(err, exists) {
|
threadTools.exists(tid, function(err, exists) {
|
||||||
if (err || !exists) {
|
if (err || !exists) {
|
||||||
return callback(err || new Error('Topic tid \'' + tid + '\' not found'));
|
return callback(err || new Error('Topic tid \'' + tid + '\' not found'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// "quiet" is used for things like RSS feed updating, HTML parsing for non-js users, etc
|
async.parallel({
|
||||||
if (!quiet) {
|
topicData : function(next) {
|
||||||
Topics.markAsRead(tid, current_user, function(err) {
|
Topics.getTopicData(tid, next);
|
||||||
Topics.pushUnreadCount(current_user);
|
},
|
||||||
});
|
posts : function(next) {
|
||||||
Topics.increaseViewCount(tid);
|
Topics.getTopicPosts(tid, start, end, uid, false, next);
|
||||||
}
|
},
|
||||||
|
privileges : function(next) {
|
||||||
function getTopicData(next) {
|
threadTools.privileges(tid, uid, next);
|
||||||
Topics.getTopicData(tid, next);
|
},
|
||||||
}
|
category : function(next) {
|
||||||
|
Topics.getCategoryData(tid, next);
|
||||||
function getTopicPosts(next) {
|
},
|
||||||
Topics.getTopicPosts(tid, start, end, current_user, next);
|
pageCount : function(next) {
|
||||||
}
|
Topics.getPageCount(tid, uid, next);
|
||||||
|
},
|
||||||
function getPrivileges(next) {
|
threadTools : function(next) {
|
||||||
threadTools.privileges(tid, current_user, next);
|
Plugins.fireHook('filter:topic.thread_tools', [], next);
|
||||||
}
|
}
|
||||||
|
}, function(err, results) {
|
||||||
function getCategoryData(next) {
|
|
||||||
Topics.getCategoryData(tid, next);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getPageCount(next) {
|
|
||||||
Topics.getPageCount(tid, current_user, next);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getThreadTools(next) {
|
|
||||||
Plugins.fireHook('filter:topic.thread_tools', [], function(err, threadTools) {
|
|
||||||
next(err, threadTools);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async.parallel([getTopicData, getTopicPosts, getPrivileges, getCategoryData, getPageCount, getThreadTools], function(err, results) {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
winston.error('[Topics.getTopicWithPosts] Could not retrieve topic data: ', err.message);
|
winston.error('[Topics.getTopicWithPosts] Could not retrieve topic data: ', err.message);
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var topicData = results[0],
|
var topicData = results.topicData;
|
||||||
privileges = results[2],
|
topicData.category = results.category;
|
||||||
categoryData = results[3],
|
topicData.posts = results.posts;
|
||||||
pageCount = results[4],
|
topicData.thread_tools = results.threadTools;
|
||||||
threadTools = results[5];
|
topicData.pageCount = results.pageCount;
|
||||||
|
topicData.unreplied = parseInt(topicData.postcount, 10) === 1;
|
||||||
|
topicData.expose_tools = results.privileges.editable ? 1 : 0;
|
||||||
|
|
||||||
callback(null, {
|
callback(null, topicData);
|
||||||
'topic_name': topicData.title,
|
|
||||||
'category_name': categoryData.name,
|
|
||||||
'category_slug': categoryData.slug,
|
|
||||||
'locked': topicData.locked,
|
|
||||||
'deleted': topicData.deleted,
|
|
||||||
'pinned': topicData.pinned,
|
|
||||||
'timestamp': topicData.timestamp,
|
|
||||||
'slug': topicData.slug,
|
|
||||||
'thumb': topicData.thumb,
|
|
||||||
'postcount': topicData.postcount,
|
|
||||||
'viewcount': topicData.viewcount,
|
|
||||||
'pageCount': pageCount,
|
|
||||||
'unreplied': parseInt(topicData.postcount, 10) === 1,
|
|
||||||
'topic_id': tid,
|
|
||||||
'expose_tools': privileges.editable ? 1 : 0,
|
|
||||||
'thread_tools': threadTools,
|
|
||||||
'disableSocialButtons': meta.config.disableSocialButtons !== undefined ? parseInt(meta.config.disableSocialButtons, 10) !== 0 : false,
|
|
||||||
'posts': results[1]
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -895,7 +830,7 @@ var async = require('async'),
|
|||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
Topics.markCategoryUnreadForAll(tid, callback)
|
Topics.markCategoryUnreadForAll(tid, callback);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -958,7 +893,7 @@ var async = require('async'),
|
|||||||
return callback(null, []);
|
return callback(null, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
async.map(tids, Topics.getTeaser, callback)
|
async.map(tids, Topics.getTeaser, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Topics.getTeaser = function(tid, callback) {
|
Topics.getTeaser = function(tid, callback) {
|
||||||
@@ -993,19 +928,19 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.getTopicField = function(tid, field, callback) {
|
Topics.getTopicField = function(tid, field, callback) {
|
||||||
db.getObjectField('topic:' + tid, field, callback);
|
db.getObjectField('topic:' + tid, field, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.getTopicFields = function(tid, fields, callback) {
|
Topics.getTopicFields = function(tid, fields, callback) {
|
||||||
db.getObjectFields('topic:' + tid, fields, callback);
|
db.getObjectFields('topic:' + tid, fields, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.setTopicField = function(tid, field, value, callback) {
|
Topics.setTopicField = function(tid, field, value, callback) {
|
||||||
db.setObjectField('topic:' + tid, field, value, callback);
|
db.setObjectField('topic:' + tid, field, value, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.increasePostCount = function(tid, callback) {
|
Topics.increasePostCount = function(tid, callback) {
|
||||||
db.incrObjectField('topic:' + tid, 'postcount', function(err, value) {
|
db.incrObjectField('topic:' + tid, 'postcount', function(err, value) {
|
||||||
@@ -1014,7 +949,7 @@ var async = require('async'),
|
|||||||
}
|
}
|
||||||
db.sortedSetAdd('topics:posts', value, tid, callback);
|
db.sortedSetAdd('topics:posts', value, tid, callback);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.decreasePostCount = function(tid, callback) {
|
Topics.decreasePostCount = function(tid, callback) {
|
||||||
db.decrObjectField('topic:' + tid, 'postcount', function(err, value) {
|
db.decrObjectField('topic:' + tid, 'postcount', function(err, value) {
|
||||||
@@ -1023,7 +958,7 @@ var async = require('async'),
|
|||||||
}
|
}
|
||||||
db.sortedSetAdd('topics:posts', value, tid, callback);
|
db.sortedSetAdd('topics:posts', value, tid, callback);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.increaseViewCount = function(tid, callback) {
|
Topics.increaseViewCount = function(tid, callback) {
|
||||||
db.incrObjectField('topic:' + tid, 'viewcount', function(err, value) {
|
db.incrObjectField('topic:' + tid, 'viewcount', function(err, value) {
|
||||||
@@ -1032,7 +967,7 @@ var async = require('async'),
|
|||||||
}
|
}
|
||||||
db.sortedSetAdd('topics:views', value, tid, callback);
|
db.sortedSetAdd('topics:views', value, tid, callback);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.isLocked = function(tid, callback) {
|
Topics.isLocked = function(tid, callback) {
|
||||||
Topics.getTopicField(tid, 'locked', function(err, locked) {
|
Topics.getTopicField(tid, 'locked', function(err, locked) {
|
||||||
@@ -1041,30 +976,30 @@ var async = require('async'),
|
|||||||
}
|
}
|
||||||
callback(null, parseInt(locked, 10) === 1);
|
callback(null, parseInt(locked, 10) === 1);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.updateTimestamp = function(tid, timestamp) {
|
Topics.updateTimestamp = function(tid, timestamp) {
|
||||||
db.sortedSetAdd('topics:recent', timestamp, tid);
|
db.sortedSetAdd('topics:recent', timestamp, tid);
|
||||||
Topics.setTopicField(tid, 'lastposttime', timestamp);
|
Topics.setTopicField(tid, 'lastposttime', timestamp);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.onNewPostMade = function(tid, pid, timestamp, callback) {
|
Topics.onNewPostMade = function(tid, pid, timestamp, callback) {
|
||||||
Topics.increasePostCount(tid);
|
Topics.increasePostCount(tid);
|
||||||
Topics.updateTimestamp(tid, timestamp);
|
Topics.updateTimestamp(tid, timestamp);
|
||||||
Topics.addPostToTopic(tid, pid, timestamp, callback);
|
Topics.addPostToTopic(tid, pid, timestamp, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.addPostToTopic = function(tid, pid, timestamp, callback) {
|
Topics.addPostToTopic = function(tid, pid, timestamp, callback) {
|
||||||
db.sortedSetAdd('tid:' + tid + ':posts', timestamp, pid, callback);
|
db.sortedSetAdd('tid:' + tid + ':posts', timestamp, pid, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.removePostFromTopic = function(tid, pid, callback) {
|
Topics.removePostFromTopic = function(tid, pid, callback) {
|
||||||
db.sortedSetRemove('tid:' + tid + ':posts', pid, callback);
|
db.sortedSetRemove('tid:' + tid + ':posts', pid, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.getPids = function(tid, callback) {
|
Topics.getPids = function(tid, callback) {
|
||||||
db.getSortedSetRange('tid:' + tid + ':posts', 0, -1, callback);
|
db.getSortedSetRange('tid:' + tid + ':posts', 0, -1, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.getUids = function(tid, callback) {
|
Topics.getUids = function(tid, callback) {
|
||||||
var uids = {};
|
var uids = {};
|
||||||
@@ -1088,7 +1023,7 @@ var async = require('async'),
|
|||||||
callback(null, Object.keys(uids));
|
callback(null, Object.keys(uids));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
Topics.updateTopicCount = function(callback) {
|
Topics.updateTopicCount = function(callback) {
|
||||||
db.sortedSetCard('topics:recent', function(err, count) {
|
db.sortedSetCard('topics:recent', function(err, count) {
|
||||||
@@ -1167,4 +1102,4 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}(exports));
|
}(exports));
|
||||||
56
src/user.js
56
src/user.js
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var bcrypt = require('bcryptjs'),
|
var bcrypt = require('bcryptjs'),
|
||||||
async = require('async'),
|
async = require('async'),
|
||||||
nconf = require('nconf'),
|
nconf = require('nconf'),
|
||||||
@@ -17,7 +19,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
Emailer = require('./emailer');
|
Emailer = require('./emailer');
|
||||||
|
|
||||||
(function(User) {
|
(function(User) {
|
||||||
'use strict';
|
|
||||||
User.create = function(userData, callback) {
|
User.create = function(userData, callback) {
|
||||||
userData = userData || {};
|
userData = userData || {};
|
||||||
userData.userslug = utils.slugify(userData.username);
|
userData.userslug = utils.slugify(userData.username);
|
||||||
@@ -210,7 +212,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!settings) {
|
if(!settings) {
|
||||||
settings = {}
|
settings = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.showemail = settings.showemail ? parseInt(settings.showemail, 10) !== 0 : false;
|
settings.showemail = settings.showemail ? parseInt(settings.showemail, 10) !== 0 : false;
|
||||||
@@ -220,7 +222,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
|
|
||||||
callback(null, settings);
|
callback(null, settings);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
User.saveSettings = function(uid, data, callback) {
|
User.saveSettings = function(uid, data, callback) {
|
||||||
|
|
||||||
@@ -234,7 +236,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
topicsPerPage: data.topicsPerPage,
|
topicsPerPage: data.topicsPerPage,
|
||||||
postsPerPage: data.postsPerPage
|
postsPerPage: data.postsPerPage
|
||||||
}, callback);
|
}, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
User.updateLastOnlineTime = function(uid, callback) {
|
User.updateLastOnlineTime = function(uid, callback) {
|
||||||
User.getUserField(uid, 'status', function(err, status) {
|
User.getUserField(uid, 'status', function(err, status) {
|
||||||
@@ -418,7 +420,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
User.isEmailAvailable = function(email, callback) {
|
User.isEmailAvailable = function(email, callback) {
|
||||||
db.isObjectField('email:uid', email, function(err, exists) {
|
db.isObjectField('email:uid', email, function(err, exists) {
|
||||||
@@ -561,29 +563,28 @@ var bcrypt = require('bcryptjs'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// thanks to @akhoury
|
|
||||||
User.getUsersCSV = function(callback) {
|
User.getUsersCSV = function(callback) {
|
||||||
var csvContent = "";
|
var csvContent = "";
|
||||||
|
|
||||||
db.getObjectValues('username:uid', function(err, uids) {
|
db.getObjectValues('username:uid', function(err, uids) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
async.each(uids, function(uid, next) {
|
async.each(uids, function(uid, next) {
|
||||||
User.getUserFields(uid, ['email', 'username'], function(err, userData) {
|
User.getUserFields(uid, ['email', 'username'], function(err, userData) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
csvContent += userData.email+ ',' + userData.username + ',' + uid +'\n';
|
csvContent += userData.email + ',' + userData.username + ',' + uid + '\n';
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
}, function(err) {
|
}, function(err) {
|
||||||
if (err) {
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
|
|
||||||
callback(err, csvContent);
|
callback(err, csvContent);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
User.search = function(query, callback) {
|
User.search = function(query, callback) {
|
||||||
if (!query || query.length === 0) {
|
if (!query || query.length === 0) {
|
||||||
@@ -727,7 +728,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
User.getFollowerCount(uid, next);
|
User.getFollowerCount(uid, next);
|
||||||
}
|
}
|
||||||
}, callback);
|
}, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
User.getDataForUsers = function(uids, callback) {
|
User.getDataForUsers = function(uids, callback) {
|
||||||
|
|
||||||
@@ -850,22 +851,11 @@ var bcrypt = require('bcryptjs'),
|
|||||||
};
|
};
|
||||||
|
|
||||||
User.isModerator = function(uid, cid, callback) {
|
User.isModerator = function(uid, cid, callback) {
|
||||||
groups.isMemberByGroupName(uid, 'cid:' + cid + ':privileges:mod', function(err, isMember) {
|
groups.isMemberByGroupName(uid, 'cid:' + cid + ':privileges:mod', callback);
|
||||||
if(err) {
|
|
||||||
return calback(err);
|
|
||||||
}
|
|
||||||
callback(err, isMember);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
User.isAdministrator = function(uid, callback) {
|
User.isAdministrator = function(uid, callback) {
|
||||||
groups.getGidFromName('administrators', function(err, gid) {
|
groups.isMemberByGroupName(uid, 'administrators', callback);
|
||||||
if(err) {
|
|
||||||
return callback(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
groups.isMember(uid, gid, callback);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
User.reset = {
|
User.reset = {
|
||||||
@@ -882,7 +872,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expiry >= +Date.now() / 1000 | 0) {
|
if (parseInt(expiry, 10) >= Date.now() / 1000) {
|
||||||
callback(null, true);
|
callback(null, true);
|
||||||
} else {
|
} else {
|
||||||
// Expired, delete from db
|
// Expired, delete from db
|
||||||
@@ -909,15 +899,15 @@ var bcrypt = require('bcryptjs'),
|
|||||||
// Generate a new reset code
|
// Generate a new reset code
|
||||||
var reset_code = utils.generateUUID();
|
var reset_code = utils.generateUUID();
|
||||||
db.setObjectField('reset:uid', reset_code, uid);
|
db.setObjectField('reset:uid', reset_code, uid);
|
||||||
db.setObjectField('reset:expiry', reset_code, (60 * 60) + new Date() / 1000 | 0); // Active for one hour
|
db.setObjectField('reset:expiry', reset_code, (60 * 60) + Math.floor(Date.now() / 1000));
|
||||||
|
|
||||||
var reset_link = nconf.get('url') + '/reset/' + reset_code;
|
var reset_link = nconf.get('url') + '/reset/' + reset_code;
|
||||||
|
|
||||||
Emailer.send('reset', uid, {
|
Emailer.send('reset', uid, {
|
||||||
'site_title': (meta.config['title'] || 'NodeBB'),
|
'site_title': (meta.config.title || 'NodeBB'),
|
||||||
'reset_link': reset_link,
|
'reset_link': reset_link,
|
||||||
|
|
||||||
subject: 'Password Reset Requested - ' + (meta.config['title'] || 'NodeBB') + '!',
|
subject: 'Password Reset Requested - ' + (meta.config.title || 'NodeBB') + '!',
|
||||||
template: 'reset',
|
template: 'reset',
|
||||||
uid: uid
|
uid: uid
|
||||||
});
|
});
|
||||||
@@ -1003,11 +993,11 @@ var bcrypt = require('bcryptjs'),
|
|||||||
// Send intro email w/ confirm code
|
// Send intro email w/ confirm code
|
||||||
User.getUserField(uid, 'username', function(err, username) {
|
User.getUserField(uid, 'username', function(err, username) {
|
||||||
Emailer.send('welcome', uid, {
|
Emailer.send('welcome', uid, {
|
||||||
'site_title': (meta.config['title'] || 'NodeBB'),
|
'site_title': (meta.config.title || 'NodeBB'),
|
||||||
username: username,
|
username: username,
|
||||||
'confirm_link': confirm_link,
|
'confirm_link': confirm_link,
|
||||||
|
|
||||||
subject: 'Welcome to ' + (meta.config['title'] || 'NodeBB') + '!',
|
subject: 'Welcome to ' + (meta.config.title || 'NodeBB') + '!',
|
||||||
template: 'welcome',
|
template: 'welcome',
|
||||||
uid: uid
|
uid: uid
|
||||||
});
|
});
|
||||||
@@ -1086,7 +1076,7 @@ var bcrypt = require('bcryptjs'),
|
|||||||
}
|
}
|
||||||
}, function(err, notifications) {
|
}, function(err, notifications) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return calback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove empties
|
// Remove empties
|
||||||
|
|||||||
@@ -226,6 +226,10 @@ process.on('uncaughtException', function(err) {
|
|||||||
|
|
||||||
// Middlewares
|
// Middlewares
|
||||||
app.configure(function() {
|
app.configure(function() {
|
||||||
|
app.engine('tpl', templates.__express);
|
||||||
|
app.set('view engine', 'tpl');
|
||||||
|
app.set('views', path.join(__dirname, '../public/templates'));
|
||||||
|
|
||||||
async.series([
|
async.series([
|
||||||
function(next) {
|
function(next) {
|
||||||
// Pre-router middlewares
|
// Pre-router middlewares
|
||||||
@@ -596,7 +600,7 @@ process.on('uncaughtException', function(err) {
|
|||||||
var start = (page - 1) * settings.topicsPerPage,
|
var start = (page - 1) * settings.topicsPerPage,
|
||||||
end = start + settings.topicsPerPage - 1;
|
end = start + settings.topicsPerPage - 1;
|
||||||
|
|
||||||
topics.getTopicWithPosts(tid, uid, start, end, true, function (err, topicData) {
|
topics.getTopicWithPosts(tid, uid, start, end, function (err, topicData) {
|
||||||
if (topicData) {
|
if (topicData) {
|
||||||
if (parseInt(topicData.deleted, 10) === 1 && parseInt(topicData.expose_tools, 10) === 0) {
|
if (parseInt(topicData.deleted, 10) === 1 && parseInt(topicData.expose_tools, 10) === 0) {
|
||||||
return next(new Error('Topic deleted'), null);
|
return next(new Error('Topic deleted'), null);
|
||||||
@@ -642,7 +646,7 @@ process.on('uncaughtException', function(err) {
|
|||||||
metaTags: [
|
metaTags: [
|
||||||
{
|
{
|
||||||
name: "title",
|
name: "title",
|
||||||
content: topicData.topic_name
|
content: topicData.title
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "description",
|
name: "description",
|
||||||
@@ -650,7 +654,7 @@ process.on('uncaughtException', function(err) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'og:title',
|
property: 'og:title',
|
||||||
content: topicData.topic_name
|
content: topicData.title
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'og:description',
|
property: 'og:description',
|
||||||
@@ -682,7 +686,7 @@ process.on('uncaughtException', function(err) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'article:section',
|
property: 'article:section',
|
||||||
content: topicData.category_name
|
content: topicData.category.name
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
linkTags: [
|
linkTags: [
|
||||||
@@ -693,7 +697,7 @@ process.on('uncaughtException', function(err) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
rel: 'up',
|
rel: 'up',
|
||||||
href: nconf.get('url') + '/category/' + topicData.category_slug
|
href: nconf.get('url') + '/category/' + topicData.category.slug
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}, function (err, header) {
|
}, function (err, header) {
|
||||||
@@ -783,15 +787,15 @@ process.on('uncaughtException', function(err) {
|
|||||||
metaTags: [
|
metaTags: [
|
||||||
{
|
{
|
||||||
name: 'title',
|
name: 'title',
|
||||||
content: categoryData.category_name
|
content: categoryData.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'og:title',
|
property: 'og:title',
|
||||||
content: categoryData.category_name
|
content: categoryData.name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'description',
|
name: 'description',
|
||||||
content: categoryData.category_description
|
content: categoryData.description
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: "og:type",
|
property: "og:type",
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ describe('Categories', function() {
|
|||||||
it('should retrieve a newly created category by its ID', function(done) {
|
it('should retrieve a newly created category by its ID', function(done) {
|
||||||
Categories.getCategoryById(categoryObj.cid, 0, -1, 0, function(err, categoryData) {
|
Categories.getCategoryById(categoryObj.cid, 0, -1, 0, function(err, categoryData) {
|
||||||
assert(categoryData);
|
assert(categoryData);
|
||||||
assert.equal(categoryObj.name, categoryData.category_name);
|
assert.equal(categoryObj.name, categoryData.name);
|
||||||
assert.equal(categoryObj.description, categoryData.category_description);
|
assert.equal(categoryObj.description, categoryData.description);
|
||||||
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user