fixed merge conflict

v1.18.x
psychobunny 11 years ago
commit 4435a20d90

2
.gitignore vendored

@ -20,3 +20,5 @@ feeds/recent.rss
# winston?
error.log
events.log
pidfile

@ -1,5 +1,6 @@
# <img alt="NodeBB" src="http://i.imgur.com/3yj1n6N.png" />
[![Dependency Status](https://david-dm.org/designcreateplay/nodebb.png)](https://david-dm.org/designcreateplay/nodebb)
[![Code Climate](https://codeclimate.com/github/designcreateplay/NodeBB.png)](https://codeclimate.com/github/designcreateplay/NodeBB)
**NodeBB 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.

@ -82,8 +82,7 @@ if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf
displayHelp();
};
function start() {
function loadConfig() {
nconf.file({
file: configFile
});
@ -92,13 +91,18 @@ function start() {
themes_path: path.join(__dirname, 'node_modules')
});
// Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
}
function start() {
loadConfig();
nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
nconf.set('upload_url', path.join(path.sep, nconf.get('relative_path'), 'uploads', path.sep));
nconf.set('base_dir', __dirname);
// Ensure themes_path is a full filepath
nconf.set('themes_path', path.resolve(__dirname, nconf.get('themes_path')));
winston.info('Time: ' + new Date());
winston.info('Initializing NodeBB v' + pkg.version);
winston.info('* using configuration stored in: ' + configFile);
@ -157,16 +161,14 @@ function start() {
}
function setup() {
loadConfig();
if (nconf.get('setup')) {
winston.info('NodeBB Setup Triggered via Command Line');
} else {
winston.warn('Configuration not found, starting NodeBB setup');
}
nconf.file({
file: __dirname + '/config.json'
});
var install = require('./src/install');
winston.info('Welcome to NodeBB!');
@ -185,9 +187,7 @@ function setup() {
}
function upgrade() {
nconf.file({
file: __dirname + '/config.json'
});
loadConfig();
var meta = require('./src/meta');
@ -199,9 +199,7 @@ function upgrade() {
}
function reset() {
nconf.file({
file: __dirname + '/config.json'
});
loadConfig();
var meta = require('./src/meta'),
db = require('./src/database'),

@ -1,26 +1,65 @@
var fork = require('child_process').fork,
"use strict";
var nconf = require('nconf'),
fs = require('fs'),
pidFilePath = __dirname + '/pidfile',
start = function() {
nbb = fork('./app', process.argv.slice(2), {
env: {
'NODE_ENV': process.env.NODE_ENV
}
});
var fork = require('child_process').fork,
nbb_start = function() {
nbb = fork('./app', process.argv.slice(2), {
env: {
'NODE_ENV': process.env.NODE_ENV
}
});
nbb.on('message', function(cmd) {
if (cmd === 'nodebb:restart') {
nbb.on('exit', function() {
start();
nbb.on('message', function(cmd) {
if (cmd === 'nodebb:restart') {
nbb.on('exit', function() {
nbb_start();
});
nbb.kill();
}
});
},
nbb_stop = function() {
nbb.kill();
}
});
},
stop = function() {
nbb.kill();
if (fs.existsSync(pidFilePath)) {
var pid = parseInt(fs.readFileSync(pidFilePath, { encoding: 'utf-8' }), 10);
if (process.pid === pid) {
fs.unlinkSync(pidFilePath);
}
}
};
process.on('SIGINT', nbb_stop);
process.on('SIGTERM', nbb_stop);
nbb_start();
},
nbb;
process.on('SIGINT', stop);
process.on('SIGTERM', stop);
nconf.argv();
if (nconf.get('d')) {
// Check for a still-active NodeBB process
if (fs.existsSync(pidFilePath)) {
console.log('\n Error: Another NodeBB is already running!');
process.exit();
}
// Initialise logging streams
var outputStream = fs.createWriteStream(__dirname + '/logs/output.log');
outputStream.on('open', function(fd) {
// Daemonize
require('daemon')({
stdout: fd
});
// Write its pid to a pidfile
fs.writeFile(__dirname + '/pidfile', process.pid);
start();
start();
});
} else {
start();
}

1
logs/.gitignore vendored

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

@ -6,7 +6,19 @@
case "$1" in
start)
node loader "$@"
echo "Starting NodeBB";
echo " \"./nodebb stop\" to stop the NodeBB server";
echo " \"./nodebb log\" to view server output";
node loader -d "$@"
;;
stop)
echo "Stopping NodeBB. Goodbye!";
kill `cat pidfile`;
;;
log)
tail -F ./logs/output.log;
;;
upgrade)
@ -42,13 +54,17 @@ case "$1" in
*)
echo "Welcome to NodeBB"
echo $"Usage: $0 {start|dev|watch|upgrade}"
echo $"Usage: $0 {start|stop|log|setup|reset|upgrade|dev|watch}"
echo ''
column -s ' ' -t <<< '
start Start NodeBB in production mode
dev Start NodeBB in development mode
watch Start NodeBB in development mode and watch for changes
start Start the NodeBB server
stop Stops the NodeBB server
log Opens the logging interface (useful for debugging)
setup Runs the NodeBB setup script
reset Disables all plugins, restores the default theme.
upgrade Run NodeBB upgrade scripts, ensure packages are up-to-date
dev Start NodeBB in interactive development mode
watch Start NodeBB in development mode and watch for changes
'
exit 1
esac

@ -10,6 +10,8 @@
},
"main": "app.js",
"scripts": {
"start": "./nodebb start",
"stop": "./nodebb stop",
"test": "mocha ./tests"
},
"dependencies": {
@ -38,12 +40,13 @@
"socket.io-wildcard": "~0.1.1",
"bcryptjs": "~0.7.10",
"nodebb-plugin-mentions": "~0.4",
"nodebb-plugin-markdown": "~0.3",
"nodebb-plugin-markdown": "~0.4",
"nodebb-widget-essentials": "~0.0",
"nodebb-theme-vanilla": "~0.0.14",
"nodebb-theme-cerulean": "~0.0.13",
"nodebb-theme-lavender": "~0.0.22",
"less": "^1.6.3"
"less": "^1.6.3",
"daemon": "~1.1.0"
},
"optionalDependencies": {
"redis": "0.8.3",

@ -1,9 +1,6 @@
{
"new_topic_button": "موضوع جديد",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لماذا لا تحاول نشر واحد؟<br />",
"sidebar.recent_replies": "الردود مؤخرا",
"sidebar.active_participants": "المشاركون النشطة",
"sidebar.moderators": "المشرفين",
"posts": "مشاركات",
"views": "مشاهدات",
"posted": "نشر",

@ -10,6 +10,8 @@
"500.message": "عفوا! يبدو وكأنه شيء ذهب على نحو خاطئ!",
"register": "تسجيل",
"login": "دخول",
"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": "تسجيل الخروج",
@ -47,6 +49,7 @@
"posted": "posted",
"in": "in",
"recentposts": "Recent Posts",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Away",
"dnd": "Do not Disturb",

@ -8,6 +8,7 @@
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

@ -11,6 +11,7 @@
"reply": "رد",
"edit": "صحح",
"delete": "حذف",
"restore": "Restore",
"move": "انقل",
"fork": "فرع",
"banned": "محظور",
@ -18,8 +19,15 @@
"share": "شارك",
"tools": "أدوات",
"flag": "Flag",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"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.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "أدوات الموضوع",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Nové téma",
"no_topics": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
"sidebar.recent_replies": "Poslední příspěvky",
"sidebar.active_participants": "Aktivní účastníci",
"sidebar.moderators": "Moderátoři",
"posts": "příspěvky",
"views": "zobrazení",
"posted": "odesláno",

@ -10,6 +10,8 @@
"500.message": "Jejda, vypadá to, že se něco pokazilo.",
"register": "Registrovat",
"login": "Přihlásit se",
"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": "Odhlásit se",
@ -47,6 +49,7 @@
"posted": "odesláno",
"in": "v",
"recentposts": "Nedávné příspěvky",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Pryč",
"dnd": "Nerušit",

@ -8,6 +8,7 @@
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

@ -11,6 +11,7 @@
"reply": "Odpovědět",
"edit": "Upravit",
"delete": "Smazat",
"restore": "Restore",
"move": "Přesunout",
"fork": "Rozdělit",
"banned": "banned",
@ -18,8 +19,15 @@
"share": "Sdílet",
"tools": "Nástroje",
"flag": "Flag",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"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.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Nástroje",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Neues Thema",
"no_topics": "<strong>Es gibt noch keine Threads in dieser Kategorie.</strong><br />Warum beginnst du nicht den ersten?",
"sidebar.recent_replies": "Neuste Antworten",
"sidebar.active_participants": "Aktive Teilnehmer",
"sidebar.moderators": "Moderatoren",
"posts": "Posts",
"views": "Aufrufe",
"posted": "Geposted",

@ -10,6 +10,8 @@
"500.message": "Ooops! Looks like something went wrong!",
"register": "Registrierung",
"login": "Login",
"please_log_in": "Bitte einloggen",
"posting_restriction_info": "Nur registrierte Mitglieder dürfen Beiträge verfassen. Hier klicken zum Einloggen.",
"welcome_back": "Willkommen zurück",
"you_have_successfully_logged_in": "Du hast dich erfolgreich eingeloggt",
"logout": "Logout",
@ -47,6 +49,7 @@
"posted": "geposted",
"in": "in",
"recentposts": "Aktuelle Beiträge",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Abwesend",
"dnd": "Nicht stören",

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

@ -11,6 +11,7 @@
"reply": "antworten",
"edit": "bearbeiten",
"delete": "löschen",
"restore": "Restore",
"move": "Verschieben",
"fork": "Aufspalten",
"banned": "gesperrt",
@ -18,8 +19,15 @@
"share": "Teilen",
"tools": "Tools",
"flag": "Markieren",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Diesen Beitrag zur Moderation markieren",
"deleted_message": "Dieser Thread wurde gelöscht. Nur Nutzer mit Thread-Management Rechten können ihn sehen.",
"following_topic.title": "Thema wird gefolgt",
"following_topic.message": "Du erhälst nun eine Benachrichtigung, wenn jemand einen Beitrag zu diesem Thema verfasst.",
"not_following_topic.title": "Thema nicht gefolgt",
"not_following_topic.message": "Du erhälst keine weiteren Benachrichtigungen zu diesem Thema.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Beobachten",
"share_this_post": "Diesen Beitrag teilen",
"thread_tools.title": "Thread Tools",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Hier den Titel des Themas eingeben...",
"composer.write": "Schreiben",
"composer.preview": "Vorschau",
"composer.help": "Help",
"composer.discard": "Verwerfen",
"composer.submit": "Absenden",
"composer.replying_to": "Als Antwort auf",
"composer.new_topic": "Neues Thema"
"composer.new_topic": "Neues Thema",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Bilder hier reinziehen",
"composer.upload_instructions": "Zum Hochladen Bilder hier reinziehen."
}

@ -22,6 +22,8 @@
"tools": "Tools",
"flag": "Flag",
"bookmark_instructions" : "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
@ -30,7 +32,9 @@
"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",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success" : "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
@ -77,6 +81,7 @@
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
@ -89,6 +94,5 @@
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"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,9 +1,6 @@
{
"new_topic_button": "Nuevo Tema",
"no_topics": "<strong>No hay temas en esta categoría.</strong><br />Por que no te animas y publicas uno?",
"sidebar.recent_replies": "Respuestas recientes",
"sidebar.active_participants": "Miembros más activos",
"sidebar.moderators": "Moderadores",
"posts": "respuestas",
"views": "visitas",
"posted": "posted",

@ -10,6 +10,8 @@
"500.message": "Ooops! Algo salio mal!, No te alarmes. Nuestros simios hiperinteligentes lo solucionarán",
"register": "Registrarse",
"login": "Conectarse",
"please_log_in": "Por favor conectate.",
"posting_restriction_info": "Para publicar debes ser miembro, registrate o conectate.",
"welcome_back": "Bienvenido de nuevo!",
"you_have_successfully_logged_in": "Te has conectado!",
"logout": "Salir",
@ -47,10 +49,11 @@
"posted": "publicado",
"in": "en",
"recentposts": "Publicaciones Recientes",
"recentips": "Recently Logged In IPs",
"online": "Conectado",
"away": "No disponible",
"dnd": "No molestar",
"invisible": "Invisible",
"offline": "Desconectado",
"privacy": "Privacidad"
}
}

@ -8,6 +8,7 @@
"user.edit": "Editando \"%1\"",
"user.following": "Gente que sigue %1 ",
"user.followers": "Seguidores de %1",
"user.posts": "Posts made by %1",
"user.favourites": "Publicaciones favoritas de %1 ",
"user.settings": "Preferencias del Usuario"
}

@ -11,6 +11,7 @@
"reply": "Responder",
"edit": "Editar",
"delete": "Borrar",
"restore": "Restore",
"move": "Mover",
"fork": "Bifurcar",
"banned": "baneado",
@ -18,8 +19,15 @@
"share": "Compartir",
"tools": "Herramientas",
"flag": "Reportar",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Reportar esta publicación a los moderadores",
"deleted_message": "Este tema ha sido borrado. Solo los miembros con privilegios pueden verlo.",
"following_topic.title": "Siguendo tema",
"following_topic.message": "Ahora recibiras notificaciones cuando alguien publique en este tema.",
"not_following_topic.title": "No sigues este tema",
"not_following_topic.message": "No recibiras notificaciones de este tema.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Seguir",
"share_this_post": "Compartir este post",
"thread_tools.title": "Herramientas del Tema",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Ingresa el titulo de tu tema",
"composer.write": "Escribe",
"composer.preview": "Previsualización",
"composer.help": "Help",
"composer.discard": "Descartar",
"composer.submit": "Enviar",
"composer.replying_to": "Respondiendo a",
"composer.new_topic": "Nuevo Tema"
"composer.new_topic": "Nuevo Tema",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Arrastra las imagenes aqui",
"composer.upload_instructions": "Carga tus imagenes con solo arrastrarlas aqui."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Uusi aihe",
"no_topics": "<strong>Tällä aihealueella ei ole yhtään aihetta.</strong><br />Miksi et aloittaisi uutta?",
"sidebar.recent_replies": "Viimeisimmät vastaukset",
"sidebar.active_participants": "Aktiiviset keskustelijat",
"sidebar.moderators": "Moderaattorit",
"posts": "viestit",
"views": "katsottu",
"posted": "kirjoitettu",

@ -49,6 +49,7 @@
"posted": "kirjoitettu",
"in": "alueelle",
"recentposts": "Viimeisimmät viestit",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Poissa",
"dnd": "Älä häiritse",

@ -8,6 +8,7 @@
"user.edit": "Muokataan \"%1\"",
"user.following": "Käyttäjät, joita %1 seuraa",
"user.followers": "Käyttäjät, jotka seuraavat käyttäjää %1",
"user.posts": "Posts made by %1",
"user.favourites": "Käyttäjän %1 suosikkiviestit",
"user.settings": "Käyttäjän asetukset"
}

@ -11,6 +11,7 @@
"reply": "Vastaa",
"edit": "Muokkaa",
"delete": "Poista",
"restore": "Restore",
"move": "Siirrä",
"fork": "Haaroita",
"banned": "estetty",
@ -18,13 +19,15 @@
"share": "Jaa",
"tools": "Työkalut",
"flag": "Ilmianna",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Ilmianna tämä viesti moderaattoreille",
"deleted_message": "Tämä viestiketju on poistettu. Vain käyttäjät, joilla on viestiketjujen hallintaoikeudet, voivat nähdä sen.",
"following_topic.title": "Seurataan aihetta",
"following_topic.message": "Saat nyt ilmoituksen, kun joku kirjoittaa tähän aiheeseen.",
"not_following_topic.title": "Et seuraa aihetta",
"not_following_topic.message": "Et saa enää ilmoituksia tästä aiheesta.",
"login_to_subscribe": "Ole hyvä ja rekisteröidy tai kirjaudu sisään tilataksesi tämän aiheen",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Tarkkaile",
"share_this_post": "Jaa tämä viesti",
"thread_tools.title": "Aiheen työkalut",
@ -63,11 +66,17 @@
"composer.title_placeholder": "Syötä aiheesi otsikko tähän...",
"composer.write": "Kirjoita",
"composer.preview": "Esikatsele",
"composer.help": "Help",
"composer.discard": "Hylkää",
"composer.submit": "Lähetä",
"composer.replying_to": "Vastataan aiheeseen",
"composer.new_topic": "Uusi aihe",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "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,9 +1,6 @@
{
"new_topic_button": "Nouveau Sujet",
"no_topics": "<strong>Il n'y a aucun topic dans cette catégorie.</strong><br />Pourquoi ne pas en créer un?",
"sidebar.recent_replies": "Réponses Récentes",
"sidebar.active_participants": "Participants Actifs",
"sidebar.moderators": "Modérateurs",
"posts": "messages",
"views": "vues",
"posted": "posté",

@ -10,6 +10,8 @@
"500.message": "Oops! Il semblerait que quelque chose se soit mal passé!",
"register": "S'inscrire",
"login": "Connecter",
"please_log_in": "Connectez vous",
"posting_restriction_info": "L'écriture de message est réservée aux membres enregistrés, cliquer ici pour se connecter",
"welcome_back": "Bon retour parmis nous",
"you_have_successfully_logged_in": "Vous vous êtes connecté avec succès.",
"logout": "Déconnection",
@ -47,6 +49,7 @@
"posted": "posté",
"in": "dans",
"recentposts": "Messages Récents",
"recentips": "Recently Logged In IPs",
"online": "En ligne",
"away": "Absent",
"dnd": "Occupé",

@ -1,13 +1,14 @@
{
"home": "Accueil",
"unread": "Sujets non lus",
"popular": "Popular Topics",
"popular": "Sujets Populaires",
"recent": "Sujets Récents",
"users": "Utilisateurs enregistrés",
"notifications": "Notifications",
"user.edit": "Edite \"%1\"",
"user.following": "Personnes que %1 suit",
"user.followers": "Personnes qui suivent %1",
"user.posts": "Posts made by %1",
"user.favourites": "Messages favoris de %1",
"user.settings": "Préférences Utilisateur"
}

@ -11,6 +11,7 @@
"reply": "Répondre",
"edit": "Editer",
"delete": "Supprimer",
"restore": "Restore",
"move": "Déplacer",
"fork": "Scinder",
"banned": "bannis",
@ -18,8 +19,15 @@
"share": "Partager",
"tools": "Outils",
"flag": "Signaler",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Signaler ce post pour modération",
"deleted_message": "Ce sujet a été supprimé. Seuls les utilsateurs avec les droits d'administration peuvent le voir.",
"following_topic.title": "Sujet suivi",
"following_topic.message": "Vous recevrez désormais des notifications lorsque quelqu'un postera dans ce sujet.",
"not_following_topic.title": "Sujet non suivi",
"not_following_topic.message": "Vous ne recevrez plus de notifications pour ce sujet.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Suivre",
"share_this_post": "Partager ce message",
"thread_tools.title": "Outils du Fil",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Entrer le titre du sujet ici...",
"composer.write": "Ecriture",
"composer.preview": "Aperçu",
"composer.help": "Help",
"composer.discard": "Abandon",
"composer.submit": "Envoi",
"composer.replying_to": "Répondre à",
"composer.new_topic": "Nouveau Sujet"
"composer.new_topic": "Nouveau Sujet",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Glisser-déposer ici les images",
"composer.upload_instructions": "Uploader des images par glisser-déposer."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "נושא חדש",
"no_topics": "<strong>קטגוריה זו ריקה מנושאים.</strong><br />למה שלא תנסה להוסיף נושא חדש?",
"sidebar.recent_replies": "תגובות אחרונות",
"sidebar.active_participants": "משתתפים פעילים",
"sidebar.moderators": "מנהלי הפורום",
"posts": "פוסטים",
"views": "צפיות",
"posted": "פורסם",

@ -10,6 +10,8 @@
"500.message": "אופס! נראה שמשהו השתבש!",
"register": "הרשמה",
"login": "התחברות",
"please_log_in": "Please Log In",
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "ברוכים השבים",
"you_have_successfully_logged_in": "התחברת בהצלחה",
"logout": "יציאה",
@ -47,6 +49,7 @@
"posted": "פורסם",
"in": "ב",
"recentposts": "פוסטים אחרונים",
"recentips": "Recently Logged In IPs",
"online": "מחובר",
"away": "לא נמצא",
"dnd": "לא להפריע",

@ -8,6 +8,7 @@
"user.edit": "עורך את %1",
"user.following": "אנשים ש%1 עוקב אחריהם",
"user.followers": "אנשים שעוקבים אחרי %1",
"user.posts": "Posts made by %1",
"user.favourites": "הפוסטים המועדפים על %1",
"user.settings": "הגדרות משתמש"
}

@ -11,6 +11,7 @@
"reply": "תגובה",
"edit": "עריכה",
"delete": "מחק",
"restore": "Restore",
"move": "הזז",
"fork": "פורק",
"banned": "מורחק",
@ -18,8 +19,15 @@
"share": "Share",
"tools": "כלים",
"flag": "דווח",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "דווח על פוסט זה למנהל",
"deleted_message": "הנושא הזה נמחק. רק מנהלים מורשים לראות אותו",
"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.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "עקוב",
"share_this_post": "שתף פוסט זה",
"thread_tools.title": "כלים",
@ -58,8 +66,17 @@
"composer.title_placeholder": "הכנס את כותרת הנושא כאן...",
"composer.write": "כתוב",
"composer.preview": "תצוגה מקדימה",
"composer.help": "Help",
"composer.discard": "מחק",
"composer.submit": "שלח",
"composer.replying_to": "תגובה",
"composer.new_topic": "נושא חדש"
"composer.new_topic": "נושא חדש",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Új Topik",
"no_topics": "<strong>Még nincs nyitva egy téma sem ebben a kategóriában.</strong>Miért nem hozol létre egyet?",
"sidebar.recent_replies": "Friss Válaszok",
"sidebar.active_participants": "Aktív Résztvevők",
"sidebar.moderators": "Moderátorok",
"posts": "hozzászólások",
"views": "megtekintések",
"posted": "hozzászólt",

@ -10,6 +10,8 @@
"500.message": "Hoppá! Úgy tűnik valami hiba történt!",
"register": "Regisztrálás",
"login": "Belépés",
"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": "Kijelentkezés",
@ -47,6 +49,7 @@
"posted": "hozzászólt",
"in": "itt:",
"recentposts": "Friss hozzászólások",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Távol van",
"dnd": "Elfoglalt",

@ -8,6 +8,7 @@
"user.edit": "Szerkesztés \"%1\"",
"user.following": "Tagok akiket %1 követ",
"user.followers": "Tagok akik követik %1 -t",
"user.posts": "Posts made by %1",
"user.favourites": "%1 Kedvenc Hozzászólásai",
"user.settings": "Felhasználói Beállítások"
}

@ -11,6 +11,7 @@
"reply": "Válasz",
"edit": "Szerkeszt",
"delete": "Töröl",
"restore": "Restore",
"move": "Áthelyez",
"fork": "Szétszedés",
"banned": "tiltva",
@ -18,13 +19,15 @@
"share": "Megosztás",
"tools": "Eszközök",
"flag": "Jelentés",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"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á.",
"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",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Téma Eszközök",
@ -63,11 +66,17 @@
"composer.title_placeholder": "Írd be a témanevet...",
"composer.write": "Ír",
"composer.preview": "Előnézet",
"composer.help": "Help",
"composer.discard": "Elvet",
"composer.submit": "Küldés",
"composer.replying_to": "Válasz erre:",
"composer.new_topic": "Új Topik",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.content_is_parsed_with": "Content is parsed with",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Nuovo Argomento",
"no_topics": "<strong>Non ci sono discussioni in questa categoria.</strong><br />Perché non ne inizi una?",
"sidebar.recent_replies": "Risposte Recenti",
"sidebar.active_participants": "Partecipanti Attivi",
"sidebar.moderators": "Moderatori",
"posts": "post",
"views": "visualizzazioni",
"posted": "postato",

@ -49,6 +49,7 @@
"posted": "postato",
"in": "in",
"recentposts": "Post Recenti",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Non disponibile",
"dnd": "Non disturbare",

@ -1,5 +1,5 @@
{
"name": "Italiano",
"code": "it_IT",
"code": "it",
"dir": "ltr"
}

@ -8,6 +8,7 @@
"user.edit": "Modificando \"%1\"",
"user.following": "%1 Persone seguono",
"user.followers": "Persone che seguono %1",
"user.posts": "Posts made by %1",
"user.favourites": "Post Favoriti di %1",
"user.settings": "Impostazioni Utente"
}

@ -11,6 +11,7 @@
"reply": "Rispondi",
"edit": "Modifica",
"delete": "Cancella",
"restore": "Restore",
"move": "Muovi",
"fork": "Dividi",
"banned": "bannato",
@ -18,14 +19,16 @@
"share": "Condividi",
"tools": "Strumenti",
"flag": "Segnala",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Segnala questo post per la moderazione",
"deleted_message": "Questo argomento è stato cancellato. Solo gli utenti che possono gestire gli argomenti riescono a vederlo.",
"following_topic.title": "Argomento seguente",
"following_topic.title": "Stai seguendo questa Discussione",
"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.title": "Non stai seguendo questa Discussione",
"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",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Osserva",
"share_this_post": "Condividi questo Post",
"thread_tools.title": "Strumenti per il Thread",
"thread_tools.markAsUnreadForAll": "Segna come non letto",
@ -63,11 +66,17 @@
"composer.title_placeholder": "Inserisci qui il titolo della discussione...",
"composer.write": "Scrivi",
"composer.preview": "Anteprima",
"composer.discard": "Scarta",
"composer.help": "Help",
"composer.discard": "Annulla",
"composer.submit": "Invia",
"composer.replying_to": "Rispondendo a",
"composer.new_topic": "Nuovo Argomento",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Trascina e rilascia le immagini qui",
"composer.content_is_parsed_with": "Il contenuto è analizzato con",
"composer.upload_instructions": "Carica immagini trascinandole e rilasciandole."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Nytt emne",
"no_topics": "<strong>Det er ingen emner i denne kategorien</strong><br />Hvorfor ikke lage ett?",
"sidebar.recent_replies": "Seneste svar",
"sidebar.active_participants": "Aktive deltakere",
"sidebar.moderators": "Moderatorer",
"posts": "inlegg",
"views": "visninger",
"posted": "skapte",

@ -10,6 +10,8 @@
"500.message": "Oops! Ser ut som noe gikk galt!",
"register": "Registrer",
"login": "Logg inn",
"please_log_in": "Vennligst logg inn",
"posting_restriction_info": "Posting er foreløpig begrenset til registrerte medlemmer, klikk her for å logge inn.",
"welcome_back": "Velkommen tilbake",
"you_have_successfully_logged_in": "Du har blitt logget inn",
"logout": "Logg ut",
@ -47,6 +49,7 @@
"posted": "skapt",
"in": "i",
"recentposts": "Seneste innlegg",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Borte",
"dnd": "Ikke forsturr",

@ -1,13 +1,14 @@
{
"home": "Hjem",
"unread": "Uleste emner",
"popular": "Popular Topics",
"popular": "Populære tråder",
"recent": "Seneste emner",
"users": "Registrerte brukere",
"notifications": "Varsler",
"user.edit": "Endrer \"%1\"",
"user.following": "Personer %1 følger",
"user.followers": "Personer som følger %1",
"user.posts": "Posts made by %1",
"user.favourites": "%1 sine favoritt-innlegg",
"user.settings": "Brukerinnstillinger"
}

@ -11,6 +11,7 @@
"reply": "Svar",
"edit": "Endre",
"delete": "Slett",
"restore": "Restore",
"move": "Flytt",
"fork": "Del",
"banned": "utestengt",
@ -18,8 +19,15 @@
"share": "Del",
"tools": "Verktøy",
"flag": "Rapporter",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Rapporter dette innlegget for granskning",
"deleted_message": "Denne tråden har blitt slettet. Bare brukere med trådhåndterings-privilegier kan se den.",
"following_topic.title": "Følger tråd",
"following_topic.message": "Du vil nå motta varsler når noen skriver i denne tråden.",
"not_following_topic.title": "Følger ikke tråd",
"not_following_topic.message": "Du vil ikke lenger motta varsler fra denne tråden.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Overvåk",
"share_this_post": "Del ditt innlegg",
"thread_tools.title": "Trådverktøy",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Skriv din tråd-tittel her",
"composer.write": "Skriv",
"composer.preview": "Forhåndsvis",
"composer.help": "Help",
"composer.discard": "Forkast",
"composer.submit": "Send",
"composer.replying_to": "Svarer til",
"composer.new_topic": "Ny tråd"
"composer.new_topic": "Ny tråd",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Dra og slipp bilder her",
"composer.upload_instructions": "Last opp bilder ved å dra og slippe dem."
}

@ -1,9 +1,6 @@
{
"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",

@ -49,6 +49,7 @@
"posted": "geplaatst",
"in": "in",
"recentposts": "Recente Berichten",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Afwezig",
"dnd": "Niet Storen",

@ -8,6 +8,7 @@
"user.edit": "\"%1\" aanpassen",
"user.following": "Mensen %1 Volgt",
"user.followers": "Mensen die %1 Volgen",
"user.posts": "Posts made by %1",
"user.favourites": "%1's Favoriete Berichten",
"user.settings": "Gebruikersinstellingen"
}

@ -11,6 +11,7 @@
"reply": "Reageren",
"edit": "Aanpassen",
"delete": "Verwijderen",
"restore": "Restore",
"move": "Verplaatsen",
"fork": "Fork",
"banned": "verbannen",
@ -18,13 +19,15 @@
"share": "Delen",
"tools": "Gereedschap",
"flag": "Markeren",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"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",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Thread Gereedschap",
@ -63,11 +66,17 @@
"composer.title_placeholder": "Vul de titel voor het onderwerp hier in...",
"composer.write": "Schrijven",
"composer.preview": "Voorbeeld",
"composer.help": "Help",
"composer.discard": "Annuleren",
"composer.submit": "Opslaan",
"composer.replying_to": "Reageren op",
"composer.new_topic": "Nieuw Onderwerp",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.content_is_parsed_with": "Content is parsed with",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Nowy wątek",
"no_topics": "<strong>W tej kategorii nie ma jeszcze żadnych wątków.</strong><br />Dlaczego ty nie utworzysz jakiegoś?",
"sidebar.recent_replies": "Ostatnie odpowiedzi",
"sidebar.active_participants": "Aktywni uczestnicy",
"sidebar.moderators": "Moderatorzy",
"posts": "postów",
"views": "wyświetleń",
"posted": "napisano",

@ -49,6 +49,7 @@
"posted": "napisano",
"in": "w",
"recentposts": "Ostatnie posty",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Z dala",
"dnd": "Nie przeszkadzać",

@ -8,6 +8,7 @@
"user.edit": "Edytowanie \"%1\"",
"user.following": "Obserwowani przez %1",
"user.followers": "Obserwujący %1",
"user.posts": "Posts made by %1",
"user.favourites": "Ulubione posty %1",
"user.settings": "Ustawienia użytkownika"
}

@ -11,6 +11,7 @@
"reply": "Odpowiedz",
"edit": "Edytuj",
"delete": "Usuń",
"restore": "Restore",
"move": "Przenieś",
"fork": "Skopiuj",
"banned": "zbanowany",
@ -18,13 +19,15 @@
"share": "Udostępnij",
"tools": "Narzędzia",
"flag": "Zgłoś",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"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ć.",
"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.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Obserwuj",
"share_this_post": "Udostępnij",
"thread_tools.title": "Narzędzia wątków",
@ -63,11 +66,17 @@
"composer.title_placeholder": "Wpisz tytuł wątku tutaj",
"composer.write": "Pisz",
"composer.preview": "Podgląd",
"composer.help": "Help",
"composer.discard": "Odrzuć",
"composer.submit": "Wyślij",
"composer.replying_to": "Odpowiadasz",
"composer.new_topic": "Nowy wątek",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "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."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Novo Tópico",
"no_topics": "<strong>Não tem nenhum tópico nesta categoria.</strong><br />Por que não tenta postar um?",
"sidebar.recent_replies": "Respostas Recentes",
"sidebar.active_participants": "Participantes Ativos",
"sidebar.moderators": "Moderadores",
"posts": "posts",
"views": "visualizações",
"posted": "postado",

@ -10,14 +10,16 @@
"500.message": "Oops! deu algo errado!",
"register": "Cadastrar",
"login": "Logar",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"please_log_in": "Por favor efetue o login",
"posting_restriction_info": "Postagens esta restritas para membros registrados. clique aqui para logar",
"welcome_back": "Bem vindo de volta",
"you_have_successfully_logged_in": "Você logou com sucesso",
"logout": "Logout",
"logout.title": "Logout com sucesso.",
"logout.message": "Logado com Sucesso!",
"save_changes": "Salvar Alterações",
"close": "Fechar",
"pagination": "Pagination",
"pagination": "Paginação",
"header.admin": "Admin",
"header.recent": "Recente",
"header.unread": "Não Lido",
@ -47,10 +49,11 @@
"posted": "Postado",
"in": "em",
"recentposts": "Posts Recentes",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Ausente",
"dnd": "Não Perturbe",
"invisible": "Invisível",
"offline": "Offline",
"privacy": "Privacy"
"privacy": "Privacidade"
}

@ -1,7 +1,7 @@
{
"title": "Notificações",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"no_notifs": "Você não tem nenhuma notificação nova",
"see_all": "Visualizar todas as Notificações",
"back_to_home": "voltar para home",
"outgoing_link": "Link Externo",
"outgoing_link_message": "Você está; saindo para um link externo",

@ -1,13 +1,14 @@
{
"home": "Home",
"unread": "Tópicos Não Lidos",
"popular": "Popular Topics",
"popular": "Tópicos Populares",
"recent": "Tópicos Recentes",
"users": "Usuários Registrados",
"notifications": "Notificações",
"user.edit": "Editando \"%1\"",
"user.following": "Pessoas %1 Seguindo",
"user.followers": "Pessoas que seguem %1",
"user.posts": "Posts made by %1",
"user.favourites": "%1's Posts Favoritos",
"user.settings": "Configurações de Usuário"
}

@ -3,5 +3,5 @@
"day": "Dia",
"week": "Semana",
"month": "Mês",
"no_recent_topics": "There are no recent topics."
"no_recent_topics": "Nenhum tópico recente."
}

@ -2,7 +2,7 @@
"topic": "Tópico",
"topics": "Tópicos",
"no_topics_found": "Nenhum tópico encontrado!",
"no_posts_found": "No posts found!",
"no_posts_found": "Nenhum post encontrado!",
"profile": "Profile",
"posted_by": "Postado por",
"chat": "Bate Papo",
@ -11,6 +11,7 @@
"reply": "Responder",
"edit": "Editar",
"delete": "Deletar",
"restore": "Restore",
"move": "Mover",
"fork": "Fork",
"banned": "Banido",
@ -18,20 +19,27 @@
"share": "Compartilhar",
"tools": "Ferramentas",
"flag": "Marcar",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Marcar este post para moderação",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"watch": "Watch",
"share_this_post": "Share this Post",
"deleted_message": "Esta Thread foi deletada. Somente usuários com privilégios administrativos podem ver.",
"following_topic.title": "Seguir Tópico",
"following_topic.message": "Você receberá notificações quando alguém responder este tópico.",
"not_following_topic.title": "Não está seguindo Tópico",
"not_following_topic.message": "Você não irá mais receber notificações deste tópico.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Acompanhar",
"share_this_post": "Compartilhar este Post",
"thread_tools.title": "Ferramentas da Thread",
"thread_tools.markAsUnreadForAll": "Marcar como não lido",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.restore": "Restore Topic",
"thread_tools.pin": "Fixar Tópico",
"thread_tools.unpin": "Remover Fixação do Tópico",
"thread_tools.lock": "Trancar Tópico",
"thread_tools.unlock": "Destrancar Tópico",
"thread_tools.move": "Mover Tópico",
"thread_tools.fork": "Fork Tópico",
"thread_tools.delete": "Deletar Tópico",
"thread_tools.restore": "Restaurar Tópico",
"load_categories": "Carregando Categorias",
"disabled_categories_note": "Categorias desabilitadas estão em cinza",
"confirm_move": "Mover",
@ -41,10 +49,10 @@
"favourites.not_logged_in.title": "Não Logado",
"favourites.not_logged_in.message": "Por Favor logar para favoritar o tópico",
"favourites.has_no_favourites": "Você não tem nenhum item favoritado!",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"vote.not_logged_in.title": "Não está logado",
"vote.not_logged_in.message": "Por favor efetuar login para votar",
"vote.cant_vote_self.title": "Voto inválido",
"vote.cant_vote_self.message": "Você não pode votar o seu próprio post",
"loading_more_posts": "Carregando mais posts",
"move_topic": "Mover Tó;pico",
"move_post": "Mover Post",
@ -55,11 +63,20 @@
"fork_success": "Fork realizado com sucesso!",
"reputation": "Reputação",
"posts": "Posts",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.title_placeholder": "Digite seu tópico aqui...",
"composer.write": "Escreva",
"composer.preview": "Pré Visualização",
"composer.help": "Help",
"composer.discard": "Descartar",
"composer.submit": "Enviar",
"composer.replying_to": "Respondendo para",
"composer.new_topic": "Novo Tópico",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Clique e arraste imagens aqui",
"composer.upload_instructions": "Mande suas imagens arrastando e soltando."
}

@ -9,7 +9,7 @@
"age": "Idade",
"joined": "Cadastrou",
"lastonline": "Última vez online",
"profile": "Profile",
"profile": "Perfil",
"profile_views": "Visualizações de Profile",
"reputation": "Reputação",
"posts": "Posts",
@ -19,29 +19,29 @@
"signature": "Assinatura",
"gravatar": "Gravatar",
"birthday": "Aniversário",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"chat": "Bate Papo",
"follow": "Seguir",
"unfollow": "Deixar de Seguir",
"change_picture": "Alterar Foto",
"edit": "Editar",
"uploaded_picture": "Foto Carregada",
"upload_new_picture": "Carregar novo Foto",
"current_password": "Current Password",
"current_password": "Senha Atual",
"change_password": "Alterar Senha",
"confirm_password": "Confirmar Senha",
"password": "Senha",
"upload_picture": "Carregar Foto",
"upload_a_picture": "Carregar Foto",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"image_spec": "Você pode usar somente arquivos PNG, JPG ou GIF",
"max": "max.",
"settings": "Configurações",
"show_email": "Mostrar meu email",
"has_no_follower": "Ninguém está seguindo esse usuário :(",
"follows_no_one": "Este usuário não está seguindo ninguém :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_posts": "Este usuário não postou nada ainda.",
"email_hidden": "Email Escondido",
"hidden": "Escondido",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page"
"paginate_description": "Paginação de tópicos e posts ao invés de usar \"scroll infinito\"",
"topics_per_page": "Tópicos por Página",
"posts_per_page": "Posts por Página"
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Создать тему",
"no_topics": "<strong>В этой категории еще нет тем.</strong><br />Почему бы вам не создать первую?",
"sidebar.recent_replies": "Последние сообщения",
"sidebar.active_participants": "Активные участники",
"sidebar.moderators": "Модераторы",
"posts": "сообщений",
"views": "просмотров",
"posted": "написано",

@ -10,6 +10,8 @@
"500.message": "Упс! Похоже, что-то пошло не так!",
"register": "Зарегистрироваться",
"login": "Войти",
"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": "Выйти",
@ -47,6 +49,7 @@
"posted": "создан",
"in": "в",
"recentposts": "Свежие записи",
"recentips": "Recently Logged In IPs",
"online": "В сети",
"away": "Отсутствует",
"dnd": "Не беспокоить",

@ -8,6 +8,7 @@
"user.edit": "Редактирование \"%1\"",
"user.following": "%1 читает",
"user.followers": "Читают %1",
"user.posts": "Posts made by %1",
"user.favourites": "Избранные сообщения %1",
"user.settings": "Настройки"
}

@ -11,6 +11,7 @@
"reply": "Ответить",
"edit": "Редактировать",
"delete": "Удалить",
"restore": "Restore",
"move": "Перенести",
"fork": "Ответвление",
"banned": "заблокировано",
@ -18,8 +19,15 @@
"share": "Поделиться",
"tools": "Опции",
"flag": "Отметить",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Отметить сообщение для модерирования",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"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.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Опции Темы",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Nová téma",
"no_topics": "<strong>V tejto kategórií zatiaľ nie sú žiadne príspevky.</strong><br />Môžeš byť prvý!",
"sidebar.recent_replies": "Posledné príspevky",
"sidebar.active_participants": "Aktívni účastníci",
"sidebar.moderators": "Moderátori",
"posts": "príspevkov",
"views": "zobrazení",
"posted": "odoslané",

@ -10,6 +10,8 @@
"500.message": "Jejda, vyzerá, že sa niečo pokazilo.",
"register": "Registrovať",
"login": "Prihlásiť sa",
"please_log_in": "Prosím Prihláste sa",
"posting_restriction_info": "Prispievanie je obmedzené len pre registrovaných, kliknite pre Prihlásenie sa ",
"welcome_back": "Vitaj naspäť",
"you_have_successfully_logged_in": "Úspešne si sa prihlásil",
"logout": "Odhlásiť sa",
@ -47,6 +49,7 @@
"posted": "príspevok",
"in": "v",
"recentposts": "Posledné príspevky",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Preč",
"dnd": "Nevyrušovať",

@ -1,13 +1,14 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"popular": "Populárne Témy",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

@ -11,6 +11,7 @@
"reply": "Odpovedať",
"edit": "Upraviť",
"delete": "Zmazať",
"restore": "Restore",
"move": "Presunúť",
"fork": "Rozdeliť",
"banned": "Zakázaný",
@ -18,8 +19,15 @@
"share": "Zdieľaj",
"tools": "Nástroje",
"flag": "Označiť",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Označiť príspevok pre moderáciu",
"deleted_message": "Toto vlákno bolo vymazané. Iba užívatelia s privilégiami ho môžu vidieť.",
"following_topic.title": "Sledovať Tému",
"following_topic.message": "Budete teraz príjimať notifikácie, ked niekto prispeje do témy.",
"not_following_topic.title": "Nesledujete Tému",
"not_following_topic.message": "Nebudete už dostávať notifikácie z tejto Témy",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Sledovať",
"share_this_post": "Zdielaj tento príspevok",
"thread_tools.title": "Nástroje",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Vlož nadpis témy sem...",
"composer.write": "Píš",
"composer.preview": "Náhľad",
"composer.help": "Help",
"composer.discard": "Zahodiť",
"composer.submit": "Poslať",
"composer.replying_to": "Odpovedáš ",
"composer.new_topic": "Nová téma"
"composer.new_topic": "Nová téma",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Pretiahni a Pusť Obrázky Sem",
"composer.upload_instructions": "Nahraj obrázky pretiahnutím a pustením ich."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Nytt ämne",
"no_topics": "<strong>Det finns inga ämnen i denna kategori.</strong><br />Varför inte skapa ett?",
"sidebar.recent_replies": "Senaste svaren",
"sidebar.active_participants": "Aktiva deltagare",
"sidebar.moderators": "Moderatorer",
"posts": "inlägg",
"views": "tittningar",
"posted": "skapad",

@ -10,6 +10,8 @@
"500.message": "Hoppsan! Verkar som att något gått snett!",
"register": "Registrera",
"login": "Logga in",
"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": "Logga ut",
@ -47,6 +49,7 @@
"posted": "svarade",
"in": "i",
"recentposts": "Senaste ämnena",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Borta",
"dnd": "Stör ej",

@ -8,6 +8,7 @@
"user.edit": "Ändrar \"%1\"",
"user.following": "Personer %1 Följer",
"user.followers": "Personer som följer %1",
"user.posts": "Posts made by %1",
"user.favourites": "%1's favorit-inlägg",
"user.settings": "Avnändarinställningar"
}

@ -11,6 +11,7 @@
"reply": "Svara",
"edit": "Ändra",
"delete": "Ta bort",
"restore": "Restore",
"move": "Flytta",
"fork": "Grena",
"banned": "bannad",
@ -18,8 +19,15 @@
"share": "Dela",
"tools": "Verktyg",
"flag": "Rapportera",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Rapportera detta inlägg för granskning",
"deleted_message": "Denna tråd har tagits bort. Endast användare med administrations-rättigheter kan se den.",
"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.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Trådverktyg",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Skriv in ämnets titel här...",
"composer.write": "Skriv",
"composer.preview": "Förhandsgranska",
"composer.help": "Help",
"composer.discard": "Avbryt",
"composer.submit": "Spara",
"composer.replying_to": "Svarar till",
"composer.new_topic": "Nytt ämne"
"composer.new_topic": "Nytt ämne",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "Yeni Başlık",
"no_topics": "<strong> Bu kategoride hiç konu yok. </strong> <br /> Yeni bir konu açmak istemez misiniz?",
"sidebar.recent_replies": "Güncel Cevaplar",
"sidebar.active_participants": "Aktif Katılımcılar",
"sidebar.moderators": "Moderatörler",
"posts": "ileti",
"views": "görüntülemeler",
"posted": "yayımlandı",

@ -10,6 +10,8 @@
"500.message": "Ups! Bir şeyler ters gitti sanki!",
"register": "Kayıt Ol",
"login": "Giriş",
"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": ıkış",
@ -47,6 +49,7 @@
"posted": "gönderildi",
"in": "içinde",
"recentposts": "Güncel İletiler",
"recentips": "Recently Logged In IPs",
"online": "Çevrimiçi",
"away": "Dışarıda",
"dnd": "Rahatsız Etmeyin",

@ -8,6 +8,7 @@
"user.edit": "\"% 1\" düzenleniyor",
"user.following": "İnsanlar %1 Takip Ediyor",
"user.followers": "%1 takip edenler",
"user.posts": "Posts made by %1",
"user.favourites": "%1'in Favori İletileri",
"user.settings": "Kullanıcı Ayarları"
}

@ -11,6 +11,7 @@
"reply": "Cevap",
"edit": "Düzenle",
"delete": "Sil",
"restore": "Restore",
"move": "Taşı",
"fork": "Fork",
"banned": "yasaklı",
@ -18,8 +19,15 @@
"share": "Paylaş",
"tools": "Araçlar",
"flag": "Bayrak",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Bu iletiyi moderatöre haber et",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"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.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Seçenekler",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,9 +1,6 @@
{
"new_topic_button": "新主题",
"no_topics": "<strong>这个版面还没有任何内容。</strong><br />赶紧来发帖吧!",
"sidebar.recent_replies": "最近回复",
"sidebar.active_participants": "活跃用户",
"sidebar.moderators": "版主",
"posts": "帖子",
"views": "浏览",
"posted": "发布",

@ -13,7 +13,7 @@
"please_log_in": "请登录",
"posting_restriction_info": "发表目前仅限于注册会员,点击这里登录。",
"welcome_back": "欢迎回来",
"you_have_successfully_logged_in": "你已经退出登录",
"you_have_successfully_logged_in": "你已成功登录!",
"logout": "退出",
"logout.title": "你已经退出。",
"logout.message": "你已经成功退出登录。",
@ -49,6 +49,7 @@
"posted": "发布",
"in": "在",
"recentposts": "最新发表",
"recentips": "Recently Logged In IPs",
"online": " 在线",
"away": "离开",
"dnd": "不打扰",

@ -8,6 +8,7 @@
"user.edit": "编辑 \"%1\"",
"user.following": "%1的人关注",
"user.followers": "%1关注的人",
"user.posts": "Posts made by %1",
"user.favourites": "%1 喜爱的帖子",
"user.settings": "用户设置"
}

@ -11,6 +11,7 @@
"reply": "回复",
"edit": "编辑",
"delete": "删除",
"restore": "Restore",
"move": "移动",
"fork": "作为主题",
"banned": "禁止",
@ -18,13 +19,15 @@
"share": "分享",
"tools": "工具",
"flag": "标志",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "标志受限的帖子",
"deleted_message": "这个帖子已经删除,只有帖子的拥有者才有权限去查看。",
"following_topic.title": "关注该主题",
"following_topic.message": "当有回复提交的时候你将会收到通知。",
"not_following_topic.title": "非关注主题",
"not_following_topic.message": "你将不再接受来自该帖子的通知。",
"login_to_subscribe": "请注册或登录以订阅该主题",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "查看",
"share_this_post": "分享帖子",
"thread_tools.title": "管理工具",
@ -63,11 +66,17 @@
"composer.title_placeholder": "在这里输入你的主题标题...",
"composer.write": "书写",
"composer.preview": "预览",
"composer.help": "Help",
"composer.discard": "丢弃",
"composer.submit": "提交",
"composer.replying_to": "回复",
"composer.new_topic": "新主题",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "把图像拖到此处",
"composer.content_is_parsed_with": "内容已经被解析",
"composer.upload_instructions": "拖拽图片以上传"
}

@ -1,9 +1,6 @@
{
"new_topic_button": "新主題",
"no_topics": "<strong>這個版面還沒有任何內容。</strong><br />趕緊來發帖吧!",
"sidebar.recent_replies": "最近回復",
"sidebar.active_participants": "活躍用戶",
"sidebar.moderators": "版主",
"posts": "帖子",
"views": "瀏覽",
"posted": "發布",

@ -10,6 +10,8 @@
"500.message": "不好!看來是哪裡出錯了!",
"register": "注冊",
"login": "登錄",
"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": "退出",
@ -47,6 +49,7 @@
"posted": "posted",
"in": "in",
"recentposts": "Recent Posts",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Away",
"dnd": "Do not Disturb",

@ -8,6 +8,7 @@
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

@ -11,6 +11,7 @@
"reply": "回復",
"edit": "編輯",
"delete": "刪除",
"restore": "Restore",
"move": "移動",
"fork": "作為主題",
"banned": "封禁",
@ -18,8 +19,15 @@
"share": "Share",
"tools": "Tools",
"flag": "Flag",
"bookmark_instructions": "Click here to return to your last position or close to discard.",
"flag_title": "Flag this post for moderation",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"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.",
"markAsUnreadForAll.success": "Topic marked as unread for all.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "管理工具",
@ -58,8 +66,17 @@
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.help": "Help",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.new_topic": "New Topic",
"composer.uploading": "uploading...",
"composer.thumb_url_label": "Paste a topic thumbnail URL",
"composer.thumb_title": "Add a thumbnail to this topic",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",
"composer.thumb_file_label": "Or upload a file",
"composer.thumb_remove": "Clear fields",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -2,16 +2,13 @@
var ajaxify = {};
(function ($) {
(function () {
/*global app, templates, utils*/
var location = document.location || window.location,
rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''),
content = null;
var current_state = null;
var executed = {};
var events = [];
ajaxify.register_events = function (new_page_events) {
for (var i = 0, ii = events.length; i < ii; i++) {
@ -114,7 +111,7 @@ var ajaxify = {};
require(['vendor/async'], function(async) {
$('#content [widget-area]').each(function() {
widgetLocations.push(this.getAttribute('widget-area'));
widgetLocations.push($(this).attr('widget-area'));
});
async.each(widgetLocations, function(location, next) {
@ -127,7 +124,9 @@ var ajaxify = {};
if (!renderedWidgets.length) {
$('body [no-widget-class]').each(function() {
this.className = this.getAttribute('no-widget-class');
var $this = $(this);
$this.removeClass();
$this.addClass($this.attr('no-widget-class'));
});
}
@ -174,7 +173,7 @@ var ajaxify = {};
app.previousUrl = window.location.href;
}
if (this.getAttribute('data-ajaxify') === 'false') {
if ($(this).attr('data-ajaxify') === 'false') {
return;
}
@ -198,4 +197,4 @@ var ajaxify = {};
});
});
}(jQuery));
}());

@ -1,10 +1,10 @@
var socket,
config,
app = {
"username": null,
"uid": null,
"isFocused": true,
"currentRoom": null
'username': null,
'uid': null,
'isFocused': true,
'currentRoom': null
};
(function () {
@ -175,23 +175,27 @@ var socket,
var alert = $('#' + alert_id);
var title = params.title || '';
function startTimeout(div, timeout) {
function fadeOut() {
alert.fadeOut(500, function () {
$(this).remove();
});
}
function startTimeout(timeout) {
var timeoutId = setTimeout(function () {
$(div).fadeOut(1000, function () {
$(this).remove();
});
fadeOut();
}, timeout);
$(div).attr('timeoutId', timeoutId);
alert.attr('timeoutId', timeoutId);
}
if (alert.length > 0) {
alert.find('strong').html(title);
alert.find('p').html(params.message);
alert.attr('class', "alert alert-dismissable alert-" + params.type);
alert.attr('class', 'alert alert-dismissable alert-' + params.type);
clearTimeout(alert.attr('timeoutId'));
startTimeout(alert, params.timeout);
startTimeout(params.timeout);
alert.children().fadeOut('100');
translator.translate(alert.html(), function(translatedHTML) {
@ -199,42 +203,45 @@ var socket,
alert.html(translatedHTML);
});
} else {
var div = $('<div id="' + alert_id + '" class="alert alert-dismissable alert-' + params.type +'"></div>'),
button = $('<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>'),
strong = $('<strong>' + title + '</strong>'),
p = $('<p>' + params.message + '</p>');
div.append(button)
.append(strong)
.append(p);
alert = $('<div id="' + alert_id + '" class="alert alert-dismissable alert-' + params.type +'"></div>');
button.on('click', function () {
div.remove();
});
alert.append($('<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>'))
.append($('<strong>' + title + '</strong>'))
.append($('<p>' + params.message + '</p>'));
if (params.location == null)
if (params.location == null) {
params.location = 'alert_window';
}
translator.translate(div.html(), function(translatedHTML) {
div.html(translatedHTML);
$('#' + params.location).prepend(div.fadeIn('100'));
translator.translate(alert.html(), function(translatedHTML) {
alert.html(translatedHTML);
$('#' + params.location).prepend(alert.fadeIn('100'));
if(typeof params.closefn === 'function') {
alert.find('button').on('click', function () {
params.closefn();
fadeOut();
});
}
});
if (params.timeout) {
startTimeout(div, params.timeout);
startTimeout(params.timeout);
}
if (params.clickfn) {
div.on('click', function () {
if (typeof params.clickfn === 'function') {
alert.on('click', function () {
params.clickfn();
div.fadeOut(500, function () {
$(this).remove();
});
fadeOut();
});
}
}
};
app.removeAlert = function(id) {
$('#' + 'alert_button_' + id).remove();
}
app.alertSuccess = function (message, timeout) {
if (!timeout)
timeout = 2000;
@ -277,7 +284,7 @@ var socket,
app.populateOnlineUsers = function () {
var uids = [];
jQuery('.post-row').each(function () {
$('.post-row').each(function () {
var uid = $(this).attr('data-uid');
if(uids.indexOf(uid) === -1) {
uids.push(uid);
@ -286,8 +293,8 @@ var socket,
socket.emit('user.getOnlineUsers', uids, function (err, users) {
jQuery('.username-field').each(function (index, element) {
var el = jQuery(this),
$('.username-field').each(function (index, element) {
var el = $(this),
uid = el.parents('li').attr('data-uid');
if (uid && users[uid]) {
@ -307,19 +314,19 @@ var socket,
parts = path.split('/'),
active = parts[parts.length - 1];
jQuery('#main-nav li').removeClass('active');
$('#main-nav li').removeClass('active');
if (active) {
jQuery('#main-nav li a').each(function () {
var href = this.getAttribute('href');
$('#main-nav li a').each(function () {
var href = $(this).attr('href');
if (active == "sort-posts" || active == "sort-reputation" || active == "search" || active == "latest" || active == "online")
active = 'users';
if (href && href.match(active)) {
jQuery(this.parentNode).addClass('active');
$(this.parentNode).addClass('active');
return false;
}
});
}
};
}
app.createUserTooltips = function() {
$('img[title].teaser-pic,img[title].user-img').each(function() {
@ -335,7 +342,7 @@ var socket,
selector:'.fa-circle.status',
placement: 'top'
});
}
};
app.makeNumbersHumanReadable = function(elements) {
elements.each(function() {
@ -452,7 +459,7 @@ var socket,
}
previousScrollTop = currentScrollTop;
});
}
};
var titleObj = {
active: false,
@ -589,7 +596,7 @@ var socket,
});
};
jQuery('document').ready(function () {
$('document').ready(function () {
$('#search-form').on('submit', function () {
var input = $(this).find('input');
ajaxify.go("search/" + input.val());

@ -9,7 +9,7 @@ define(function() {
hideLinks();
selectActivePill();
}
};
AccountHeader.createMenu = function() {
var userslug = $('.account-username-box').attr('data-userslug');
@ -30,7 +30,7 @@ define(function() {
selectActivePill();
hideLinks();
});
}
};
function hideLinks() {
var yourid = templates.get('yourid'),

@ -57,7 +57,7 @@ define(['uploader'], function(uploader) {
function updateCategoryOrders() {
var categories = $('.admin-categories #entry-container').children();
for(var i=0; i<categories.length; ++i) {
for(var i = 0; i<categories.length; ++i) {
var input = $(categories[i]).find('input[data-name="order"]');
input.val(i+1).attr('data-value', i+1);
@ -66,13 +66,14 @@ define(['uploader'], function(uploader) {
}
$('#entry-container').sortable({
stop: function( event, ui ) {
stop: function(event, ui) {
updateCategoryOrders();
},
distance: 10
});
$('.blockclass').each(function() {
$(this).val(this.getAttribute('data-value'));
var $this = $(this);
$this.val($this.attr('data-value'));
});
@ -115,29 +116,30 @@ define(['uploader'], function(uploader) {
}
function enableColorPicker(idx, inputEl) {
var jinputEl = $(inputEl),
previewEl = jinputEl.parents('[data-cid]').find('.preview-box');
var $inputEl = $(inputEl),
previewEl = $inputEl.parents('[data-cid]').find('.preview-box');
jinputEl.ColorPicker({
color: jinputEl.val() || '#000',
$inputEl.ColorPicker({
color: $inputEl.val() || '#000',
onChange: function(hsb, hex) {
jinputEl.val('#' + hex);
if (inputEl.getAttribute('data-name') === 'bgColor') previewEl.css('background', '#' + hex);
else if (inputEl.getAttribute('data-name') === 'color') previewEl.css('color', '#' + hex);
modified(inputEl);
$inputEl.val('#' + hex);
if ($inputEl.attr('data-name') === 'bgColor') previewEl.css('background', '#' + hex);
else if ($inputEl.attr('data-name') === 'color') previewEl.css('color', '#' + hex);
modified($inputEl[0]);
}
});
}
$('document').ready(function() {
$(function() {
var url = window.location.href,
parts = url.split('/'),
active = parts[parts.length - 1];
$('.nav-pills li').removeClass('active');
$('.nav-pills li a').each(function() {
if (this.getAttribute('href').match(active)) {
$(this.parentNode).addClass('active');
var $this = $(this);
if ($this.attr('href').match(active)) {
$this.parent().addClass('active');
return false;
}
});
@ -159,11 +161,11 @@ define(['uploader'], function(uploader) {
});
$('.dropdown').on('click', '[data-disabled]', function(ev) {
var btn = $(this);
var categoryRow = btn.parents('li');
var cid = categoryRow.attr('data-cid');
var btn = $(this),
categoryRow = btn.parents('li'),
cid = categoryRow.attr('data-cid'),
disabled = btn.attr('data-disabled') === 'false' ? '1' : '0';
var disabled = this.getAttribute('data-disabled') === 'false' ? '1' : '0';
categoryRow.remove();
modified_categories[cid] = modified_categories[cid] || {};
modified_categories[cid]['disabled'] = disabled;
@ -185,14 +187,15 @@ define(['uploader'], function(uploader) {
$('.admin-categories').on('click', '.upload-button', function() {
var inputEl = this;
var cid = $(this).parents('li[data-cid]').attr('data-cid');
uploader.open(RELATIVE_PATH + '/admin/category/uploadpicture', {cid:cid}, 0, function(imageUrlOnServer) {
inputEl.value = imageUrlOnServer;
var previewBox = $(inputEl).parents('li[data-cid]').find('.preview-box');
var inputEl = $(this),
cid = inputEl.parents('li[data-cid]').attr('data-cid');
uploader.open(RELATIVE_PATH + '/admin/category/uploadpicture', {cid: cid}, 0, function(imageUrlOnServer) {
inputEl.val(imageUrlOnServer);
var previewBox = inputEl.parents('li[data-cid]').find('.preview-box');
previewBox.css('background', 'url(' + imageUrlOnServer + '?' + new Date().getTime() + ')')
.css('background-size', 'cover');
modified(inputEl);
modified(inputEl[0]);
});
});
@ -202,12 +205,12 @@ define(['uploader'], function(uploader) {
preview = parent.find('.preview-box'),
bgColor = parent.find('.category_bgColor').val();
inputEl.value = '';
modified(inputEl);
inputEl.val('');
modified(inputEl[0]);
preview.css('background', bgColor);
$(this).hide();
$(this).addClass('hide').hide();
});
});
};
@ -221,8 +224,8 @@ define(['uploader'], function(uploader) {
searchEl.off().on('keyup', function() {
var searchEl = this,
resultsFrag = document.createDocumentFragment(),
liEl = document.createElement('li');
liEl;
clearTimeout(searchDelay);
searchDelay = setTimeout(function() {
@ -236,23 +239,21 @@ define(['uploader'], function(uploader) {
var numResults = results.length,
resultObj;
for(var x=0;x<numResults;x++) {
for(var x = 0; x < numResults; x++) {
resultObj = results[x];
liEl.setAttribute('data-uid', resultObj.uid);
liEl.innerHTML = '<div class="pull-right">' +
'<div class="btn-group">' +
'<button type="button" data-priv="+r" class="btn btn-default' + (resultObj.privileges['+r'] ? ' active' : '') + '">Read</button>' +
'<button type="button" data-priv="+w" class="btn btn-default' + (resultObj.privileges['+w'] ? ' active' : '') + '">Write</button>' +
'<button type="button" data-priv="mods" class="btn btn-default' + (resultObj.privileges['mods'] ? ' active' : '') + '">Moderator</button>' +
'</div>' +
'</div>' +
'<img src="' + resultObj.picture + '" /> ' + resultObj.username;
resultsFrag.appendChild(liEl.cloneNode(true));
liEl = $('<li />')
.attr('data-uid', resultObj.uid)
.html('<div class="pull-right">' +
'<div class="btn-group">' +
'<button type="button" data-priv="+r" class="btn btn-default' + (resultObj.privileges['+r'] ? ' active' : '') + '">Read</button>' +
'<button type="button" data-priv="+w" class="btn btn-default' + (resultObj.privileges['+w'] ? ' active' : '') + '">Write</button>' +
'<button type="button" data-priv="mods" class="btn btn-default' + (resultObj.privileges['mods'] ? ' active' : '') + '">Moderator</button>' +
'</div>' +
'</div>' +
'<img src="' + resultObj.picture + '" /> ' + resultObj.username);
resultsEl.append(liEl);
}
resultsEl.html(resultsFrag);
});
}, 250);
});
@ -262,7 +263,7 @@ define(['uploader'], function(uploader) {
resultsEl.off().on('click', '[data-priv]', function(e) {
var btnEl = $(this),
uid = btnEl.parents('li[data-uid]').attr('data-uid'),
privilege = this.getAttribute('data-priv');
privilege = btnEl.attr('data-priv');
e.preventDefault();
socket.emit('admin.categories.setPrivilege', {
@ -278,7 +279,7 @@ define(['uploader'], function(uploader) {
});
modal.off().on('click', '.members li > img', function() {
searchEl.val(this.getAttribute('title'));
searchEl.val($(this).attr('title'));
searchEl.keyup();
});
@ -287,33 +288,31 @@ define(['uploader'], function(uploader) {
if(err) {
return app.alertError(err.message);
}
var groupsFrag = document.createDocumentFragment(),
numResults = results.length,
trEl = document.createElement('tr'),
var numResults = results.length,
trEl,
resultObj;
for(var x=0;x<numResults;x++) {
for(var x = 0; x < numResults; x++) {
resultObj = results[x];
trEl.setAttribute('data-gid', resultObj.gid);
trEl.innerHTML = '<td><h4>' + resultObj.name + '</h4></td>' +
'<td>' +
'<div class="btn-group pull-right">' +
'<button type="button" data-gpriv="g+r" class="btn btn-default' + (resultObj.privileges['g+r'] ? ' active' : '') + '">Read</button>' +
'<button type="button" data-gpriv="g+w" class="btn btn-default' + (resultObj.privileges['g+w'] ? ' active' : '') + '">Write</button>' +
'</div>' +
'</td>';
groupsFrag.appendChild(trEl.cloneNode(true));
trEl = $('<tr />')
.attr('data-gid', resultObj.gid)
.html('<td><h4>' + resultObj.name + '</h4></td>' +
'<td>' +
'<div class="btn-group pull-right">' +
'<button type="button" data-gpriv="g+r" class="btn btn-default' + (resultObj.privileges['g+r'] ? ' active' : '') + '">Read</button>' +
'<button type="button" data-gpriv="g+w" class="btn btn-default' + (resultObj.privileges['g+w'] ? ' active' : '') + '">Write</button>' +
'</div>' +
'</td>');
groupsResultsEl.append(trEl);
}
groupsResultsEl.html(groupsFrag);
});
groupsResultsEl.off().on('click', '[data-gpriv]', function(e) {
var btnEl = $(this),
gid = btnEl.parents('tr[data-gid]').attr('data-gid'),
privilege = this.getAttribute('data-gpriv');
privilege = btnEl.attr('data-gpriv');
e.preventDefault();
socket.emit('admin.categories.setGroupPrivilege', {
cid: cid,
gid: gid,
@ -324,7 +323,7 @@ define(['uploader'], function(uploader) {
btnEl.toggleClass('active');
}
});
})
});
modal.modal();
};
@ -338,57 +337,40 @@ define(['uploader'], function(uploader) {
var readLength = privilegeList['+r'].length,
writeLength = privilegeList['+w'].length,
modLength = privilegeList['mods'].length,
readFrag = document.createDocumentFragment(),
writeFrag = document.createDocumentFragment(),
modFrag = document.createDocumentFragment(),
liEl = document.createElement('li'),
x, userObj;
liEl, x, userObj;
if (readLength > 0) {
for(x=0;x<readLength;x++) {
for(x = 0; x < readLength; x++) {
userObj = privilegeList['+r'][x];
liEl.setAttribute('data-uid', userObj.uid);
liEl.innerHTML = '<img src="' + userObj.picture + '" title="' + userObj.username + '" />';
readFrag.appendChild(liEl.cloneNode(true));
liEl = $('<li/>').attr('data-uid', userObj.uid).html('<img src="' + userObj.picture + '" title="' + userObj.username + '" />');
readMembers.append(liEl);
}
} else {
liEl.className = 'empty';
liEl.innerHTML = 'All users can read and see this category';
readFrag.appendChild(liEl.cloneNode(true));
liEl = $('<li/>').addClass('empty').html('All users can read and see this category');
readMembers.append(liEl);
}
if (writeLength > 0) {
for(x=0;x<writeLength;x++) {
userObj = privilegeList['+w'][x];
liEl.setAttribute('data-uid', userObj.uid);
liEl.innerHTML = '<img src="' + userObj.picture + '" title="' + userObj.username + '" />';
writeFrag.appendChild(liEl.cloneNode(true));
$('<li />').attr('data-uid', userObj.uid).html('<img src="' + userObj.picture + '" title="' + userObj.username + '" />');
writeMembers.append(liEl);
}
} else {
liEl.className = 'empty';
liEl.innerHTML = 'All users can write to this category';
writeFrag.appendChild(liEl.cloneNode(true));
liEl = $('<li />').addClass('empty').html('All users can write to this category');
writeMembers.append(liEl);
}
if (modLength > 0) {
for(x=0;x<modLength;x++) {
for(x = 0;x < modLength; x++) {
userObj = privilegeList['mods'][x];
liEl.setAttribute('data-uid', userObj.uid);
liEl.innerHTML = '<img src="' + userObj.picture + '" title="' + userObj.username + '" />';
modFrag.appendChild(liEl.cloneNode(true));
liEl = $('<li />').attr('data-uid', userObj.uid).html('<img src="' + userObj.picture + '" title="' + userObj.username + '" />');
moderatorsEl.append(liEl);
}
} else {
liEl.className = 'empty';
liEl.innerHTML = 'No moderators';
modFrag.appendChild(liEl.cloneNode(true));
liEl = $('<li />').addClass('empty').html('No moderators');
moderatorsEl.appendChild(liEl);
}
readMembers.html(readFrag);
writeMembers.html(writeFrag);
moderatorsEl.html(modFrag);
});
};

@ -1,18 +1,28 @@
jQuery('document').ready(function() {
// On menu click, change "active" state
var menuEl = document.querySelector('.sidebar-nav'),
liEls = menuEl.querySelectorAll('li')
parentEl = null;
$(function() {
var menuEl = $('.sidebar-nav'),
liEls = menuEl.find('li'),
parentEl,
activate = function(li) {
liEls.removeClass('active');
li.addClass('active');
};
menuEl.addEventListener('click', function(e) {
parentEl = e.target.parentNode;
if (parentEl.nodeName === 'LI') {
for (var x = 0, numLis = liEls.length; x < numLis; x++) {
if (liEls[x] !== parentEl) jQuery(liEls[x]).removeClass('active');
else jQuery(parentEl).addClass('active');
}
// also on ready, check the pathname, maybe it was a page refresh and no item was clicked
liEls.each(function(i, li){
li = $(li);
if ((li.find('a').attr('href') || '').indexOf(location.pathname) >= 0) {
activate(li);
}
});
// On menu click, change "active" state
menuEl.on('click', function(e) {
parentEl = $(e.target).parent();
if (parentEl.is('li')) {
activate(parentEl);
}
}, false);
});
});
socket.emit('admin.config.get', function(err, config) {

@ -3,9 +3,9 @@ define(function() {
Groups.init = function() {
var yourid = templates.get('yourid'),
createEl = document.getElementById('create'),
createEl = $('#create'),
createModal = $('#create-modal'),
createSubmitBtn = document.getElementById('create-modal-go'),
createSubmitBtn = $('#create-modal-go'),
createNameEl = $('#create-group-name'),
detailsModal = $('#group-details-modal'),
detailsSearch = detailsModal.find('#group-details-search'),
@ -15,14 +15,14 @@ define(function() {
searchDelay = undefined,
listEl = $('#groups-list');
createEl.addEventListener('click', function() {
createEl.on('click', function() {
createModal.modal('show');
setTimeout(function() {
createNameEl.focus();
}, 250);
}, false);
});
createSubmitBtn.addEventListener('click', function() {
createSubmitBtn.on('click', function() {
var submitObj = {
name: createNameEl.val(),
description: $('#create-group-desc').val()
@ -37,7 +37,7 @@ define(function() {
errorText = '<strong>Please choose another name</strong><p>There seems to be a group with this name already.</p>';
break;
case 'name-too-short':
errorText = '<strong>Please specify a grou name</strong><p>A group name is required for administrative purposes.</p>';
errorText = '<strong>Please specify a group name</strong><p>A group name is required for administrative purposes.</p>';
break;
default:
errorText = '<strong>Uh-Oh</strong><p>There was a problem creating your group. Please try again later!</p>';
@ -57,8 +57,9 @@ define(function() {
});
listEl.on('click', 'button[data-action]', function() {
var action = this.getAttribute('data-action'),
gid = $(this).parents('li[data-gid]').attr('data-gid');
var el = $(this),
action = el.attr('data-action'),
gid = el.parents('li[data-gid]').attr('data-gid');
switch (action) {
case 'delete':
@ -80,28 +81,20 @@ define(function() {
var formEl = detailsModal.find('form'),
nameEl = formEl.find('#change-group-name'),
descEl = formEl.find('#change-group-desc'),
memberIcon = document.createElement('li'),
numMembers = groupObj.members.length,
membersFrag = document.createDocumentFragment(),
memberIconImg, x;
x;
nameEl.val(groupObj.name);
descEl.val(groupObj.description);
// Member list
memberIcon.innerHTML = '<img /><span></span>';
memberIconImg = memberIcon.querySelector('img');
memberIconLabel = memberIcon.querySelector('span');
if (numMembers > 0) {
groupMembersEl.empty();
for (x = 0; x < numMembers; x++) {
memberIconImg.src = groupObj.members[x].picture;
memberIconLabel.innerHTML = groupObj.members[x].username;
memberIcon.setAttribute('data-uid', groupObj.members[x].uid);
membersFrag.appendChild(memberIcon.cloneNode(true));
var memberIcon = $('<li />')
.append($('<img />').attr('src', groupObj.members[x].picture))
.append($('<span />').attr('data-uid', groupObj.members[x].uid).html(groupObj.members[x].username));
groupMembersEl.append(memberIcon);
}
groupMembersEl.html('');
groupMembersEl[0].appendChild(membersFrag);
}
detailsModal.attr('data-gid', groupObj.gid);
@ -118,43 +111,39 @@ define(function() {
searchDelay = setTimeout(function() {
var searchText = searchEl.value,
resultsEl = document.getElementById('group-details-search-results'),
foundUser = document.createElement('li'),
foundUserImg, foundUserLabel;
foundUser.innerHTML = '<img /><span></span>';
foundUserImg = foundUser.getElementsByTagName('img')[0];
foundUserLabel = foundUser.getElementsByTagName('span')[0];
resultsEl = $('#group-details-search-results'),
foundUser;
socket.emit('admin.user.search', searchText, function(err, results) {
if (!err && results && results.users.length > 0) {
var numResults = results.users.length,
resultsSlug = document.createDocumentFragment(),
x;
var numResults = results.users.length, x;
if (numResults > 4) numResults = 4;
resultsEl.empty();
for (x = 0; x < numResults; x++) {
foundUserImg.src = results.users[x].picture;
foundUserLabel.innerHTML = results.users[x].username;
foundUser.setAttribute('title', results.users[x].username);
foundUser.setAttribute('data-uid', results.users[x].uid);
resultsSlug.appendChild(foundUser.cloneNode(true));
}
foundUser = $('<li />');
foundUser
.attr({title: results.users[x].username, 'data-uid': results.users[x].uid})
.append($('<img />').attr('src', results.users[x].picture))
.append($('<span />').html(results.users[x].username));
resultsEl.innerHTML = '';
resultsEl.appendChild(resultsSlug);
} else resultsEl.innerHTML = '<li>No Users Found</li>';
resultsEl.appendChild(foundUser);
}
} else {
resultsEl.html('<li>No Users Found</li>');
}
});
}, 200);
});
searchResults.on('click', 'li[data-uid]', function() {
var userLabel = this,
uid = parseInt(this.getAttribute('data-uid')),
var userLabel = $(this),
uid = parseInt(userLabel.attr('data-uid')),
gid = detailsModal.attr('data-gid'),
members = [];
groupMembersEl.find('li[data-uid]').each(function() {
members.push(parseInt(this.getAttribute('data-uid')));
members.push(parseInt($(this).attr('data-uid')));
});
if (members.indexOf(uid) === -1) {
@ -170,7 +159,7 @@ define(function() {
});
groupMembersEl.on('click', 'li[data-uid]', function() {
var uid = this.getAttribute('data-uid'),
var uid = $(this).attr('data-uid'),
gid = detailsModal.attr('data-gid');
socket.emit('admin.groups.get', gid, function(err, groupObj){

@ -1,5 +1,5 @@
define(['forum/admin/settings'], function(Settings) {
jQuery('document').ready(function() {
$(function() {
Settings.prepare();
});
});

@ -15,38 +15,38 @@ define(['uploader'], function(uploader) {
}
// Populate the fields on the page from the config
var fields = document.querySelectorAll('#content [data-field]'),
var fields = $('#content [data-field]'),
numFields = fields.length,
saveBtn = document.getElementById('save'),
x, key, inputType;
saveBtn = $('#save'),
x, key, inputType, field;
for (x = 0; x < numFields; x++) {
key = fields[x].getAttribute('data-field');
inputType = fields[x].getAttribute('type');
if (fields[x].nodeName === 'INPUT') {
field = fields.eq(x);
key = field.attr('data-field');
inputType = field.attr('type');
if (field.is('input')) {
if (app.config[key]) {
switch (inputType) {
case 'text':
case 'password':
case 'textarea':
case 'number':
fields[x].value = app.config[key];
field.val(app.config[key]);
break;
case 'checkbox':
fields[x].checked = parseInt(app.config[key], 10) === 1;
field.prop('checked', parseInt(app.config[key], 10) === 1);
break;
}
}
} else if (fields[x].nodeName === 'TEXTAREA') {
if (app.config[key]) fields[x].value = app.config[key];
} else if (fields[x].nodeName === 'SELECT') {
if (app.config[key]) fields[x].value = app.config[key];
} else if (field.is('textarea')) {
if (app.config[key]) field.val(app.config[key]);
} else if (field.is('select')) {
if (app.config[key]) field.val(app.config[key]);
}
}
saveBtn.addEventListener('click', function(e) {
saveBtn.on('click', function(e) {
e.preventDefault();
for (x = 0; x < numFields; x++) {
@ -55,27 +55,28 @@ define(['uploader'], function(uploader) {
});
function saveField(field) {
var key = field.getAttribute('data-field'),
field = $(field);
var key = field.attr('data-field'),
value;
if (field.nodeName === 'INPUT') {
inputType = field.getAttribute('type');
if (field.is('input')) {
inputType = field.attr('type');
switch (inputType) {
case 'text':
case 'password':
case 'textarea':
case 'number':
value = field.value;
value = field.val();
break;
case 'checkbox':
value = field.checked ? '1' : '0';
value = field.prop('checked') ? '1' : '0';
break;
}
} else if (field.nodeName === 'TEXTAREA') {
value = field.value;
} else if (field.nodeName === 'SELECT') {
value = field.value;
} else if (field.is('textarea')) {
value = field.val();
} else if (field.is('select')) {
value = field.val();
}
socket.emit('admin.config.set', {

@ -2,17 +2,21 @@ define(['forum/admin/settings'], function(Settings) {
var Themes = {};
Themes.init = function() {
var scriptEl = document.createElement('script');
scriptEl.src = 'http://api.bootswatch.com/3/?callback=bootswatchListener';
document.body.appendChild(scriptEl);
var scriptEl = $('<script />');
scriptEl.attr('src', 'http://api.bootswatch.com/3/?callback=bootswatchListener');
$('body').append(scriptEl);
var bootstrapThemeContainer = $('#bootstrap_themes'),
installedThemeContainer = $('#installed_themes'),
var bootstrapThemeContainer = document.querySelector('#bootstrap_themes'),
installedThemeContainer = document.querySelector('#installed_themes'),
themeEvent = function(e) {
if (e.target.hasAttribute('data-action')) {
switch (e.target.getAttribute('data-action')) {
var target = $(e.target),
action = target.attr('data-action');
if (action) {
switch (action) {
case 'use':
var parentEl = $(e.target).parents('li'),
var parentEl = target.parents('li'),
themeType = parentEl.attr('data-type'),
cssSrc = parentEl.attr('data-css'),
themeId = parentEl.attr('data-theme');
@ -30,16 +34,15 @@ define(['forum/admin/settings'], function(Settings) {
timeout: 3500
});
});
break;
break;
}
}
};
bootstrapThemeContainer.addEventListener('click', themeEvent);
installedThemeContainer.addEventListener('click', themeEvent);
bootstrapThemeContainer.on('click', themeEvent);
installedThemeContainer.on('click', themeEvent);
var revertEl = document.getElementById('revert_theme');
revertEl.addEventListener('click', function() {
$('#revert_theme').on('click', function() {
bootbox.confirm('Are you sure you wish to remove the custom theme and restore the NodeBB default theme?', function(confirm) {
if (confirm) {
socket.emit('admin.themes.set', {
@ -64,37 +67,32 @@ define(['forum/admin/settings'], function(Settings) {
return app.alertError(err.message);
}
var instListEl = document.getElementById('installed_themes'),
themeFrag = document.createDocumentFragment(),
liEl = document.createElement('li');
liEl.setAttribute('data-type', 'local');
var instListEl = $('#installed_themes').empty(), liEl;
if (themes.length > 0) {
for (var x = 0, numThemes = themes.length; x < numThemes; x++) {
liEl.setAttribute('data-theme', themes[x].id);
liEl.innerHTML = '<img src="' + (themes[x].screenshot ? '/css/previews/' + themes[x].id : RELATIVE_PATH + '/images/themes/default.png') + '" />' +
'<div>' +
'<div class="pull-right">' +
'<button class="btn btn-primary" data-action="use">Use</button> ' +
'</div>' +
'<h4>' + themes[x].name + '</h4>' +
'<p>' +
themes[x].description +
(themes[x].url ? ' (<a href="' + themes[x].url + '">Homepage</a>)' : '') +
'</p>' +
'</div>' +
'<div class="clear">';
themeFrag.appendChild(liEl.cloneNode(true));
liEl = $('<li/ >').attr({
'data-type': 'local',
'data-theme': themes[x].id
}).html('<img src="' + (themes[x].screenshot ? '/css/previews/' + themes[x].id : RELATIVE_PATH + '/images/themes/default.png') + '" />' +
'<div>' +
'<div class="pull-right">' +
'<button class="btn btn-primary" data-action="use">Use</button> ' +
'</div>' +
'<h4>' + themes[x].name + '</h4>' +
'<p>' +
themes[x].description +
(themes[x].url ? ' (<a href="' + themes[x].url + '">Homepage</a>)' : '') +
'</p>' +
'</div>' +
'<div class="clear">');
instListEl.append(liEl);
}
} else {
// No themes found
liEl.className = 'no-themes';
liEl.innerHTML = 'No installed themes found';
themeFrag.appendChild(liEl);
instListEl.append($('<li/ >').addClass('no-themes').html('No installed themes found'));
}
instListEl.innerHTML = '';
instListEl.appendChild(themeFrag);
});
// Proper tabbing for "Custom CSS" field
@ -105,34 +103,30 @@ define(['forum/admin/settings'], function(Settings) {
Themes.prepareWidgets();
Settings.prepare();
}
};
Themes.render = function(bootswatch) {
var themeFrag = document.createDocumentFragment(),
themeEl = document.createElement('li'),
themeContainer = document.querySelector('#bootstrap_themes'),
numThemes = bootswatch.themes.length;
themeEl.setAttribute('data-type', 'bootswatch');
var themeContainer = $('#bootstrap_themes').empty(),
numThemes = bootswatch.themes.length, themeEl, theme;
for (var x = 0; x < numThemes; x++) {
var theme = bootswatch.themes[x];
themeEl.setAttribute('data-css', theme.cssCdn);
themeEl.setAttribute('data-theme', theme.name);
themeEl.innerHTML = '<img src="' + theme.thumbnail + '" />' +
'<div>' +
'<div class="pull-right">' +
'<button class="btn btn-primary" data-action="use">Use</button> ' +
'</div>' +
'<h4>' + theme.name + '</h4>' +
'<p>' + theme.description + '</p>' +
'</div>' +
'<div class="clear">';
themeFrag.appendChild(themeEl.cloneNode(true));
theme = bootswatch.themes[x];
themeEl = $('<li />').attr({
'data-type': 'bootswatch',
'data-css': theme.cssCdn,
'data-theme': theme.name
}).html('<img src="' + theme.thumbnail + '" />' +
'<div>' +
'<div class="pull-right">' +
'<button class="btn btn-primary" data-action="use">Use</button> ' +
'</div>' +
'<h4>' + theme.name + '</h4>' +
'<p>' + theme.description + '</p>' +
'</div>' +
'<div class="clear">');
themeContainer.append(themeEl);
}
themeContainer.innerHTML = '';
themeContainer.appendChild(themeFrag);
}
};
Themes.prepareWidgets = function() {
$('#widgets .available-widgets .panel').draggable({
@ -167,8 +161,8 @@ define(['forum/admin/settings'], function(Settings) {
hoverClass: "panel-info"
})
.children('.panel-heading')
.append('<div class="pull-right pointer"><span class="delete-widget"><i class="fa fa-times-circle"></i></span></div><div class="pull-left pointer"><span class="toggle-widget"><i class="fa fa-chevron-circle-down"></i></span>&nbsp;</div>')
.children('small').html('');
.append('<div class="pull-right pointer"><span class="delete-widget"><i class="fa fa-times-circle"></i></span></div><div class="pull-left pointer"><span class="toggle-widget"><i class="fa fa-chevron-circle-down"></i></span>&nbsp;</div>')
.children('small').html('');
}
}
@ -178,18 +172,18 @@ define(['forum/admin/settings'], function(Settings) {
},
connectWith: "div"
}).on('click', '.toggle-widget', function() {
$(this).parents('.panel').children('.panel-body').toggleClass('hidden');
}).on('click', '.delete-widget', function() {
var panel = $(this).parents('.panel');
$(this).parents('.panel').children('.panel-body').toggleClass('hidden');
}).on('click', '.delete-widget', function() {
var panel = $(this).parents('.panel');
bootbox.confirm('Are you sure you wish to delete this widget?', function(confirm) {
if (confirm) {
panel.remove();
}
bootbox.confirm('Are you sure you wish to delete this widget?', function(confirm) {
if (confirm) {
panel.remove();
}
});
}).on('dblclick', '.panel-heading', function() {
$(this).parents('.panel').children('.panel-body').toggleClass('hidden');
});
}).on('dblclick', '.panel-heading', function() {
$(this).parents('.panel').children('.panel-body').toggleClass('hidden');
});
$('#widgets .btn[data-template]').on('click', function() {
var btn = $(this),
@ -205,13 +199,13 @@ define(['forum/admin/settings'], function(Settings) {
for (var d in data) {
if (data.hasOwnProperty(d)) {
if (data[d].name) {
widgetData[data[d].name] = data[d].value;
widgetData[data[d].name] = data[d].value;
}
}
}
widgets.push({
widget: this.getAttribute('data-widget'),
widget: $(this).attr('data-widget'),
data: widgetData
});
});
@ -245,7 +239,7 @@ define(['forum/admin/settings'], function(Settings) {
return widget;
}
$.get(RELATIVE_PATH + '/api/admin/themes', function(data) {
var areas = data.areas;

@ -2,14 +2,14 @@ define(function() {
var Topics = {};
Topics.init = function() {
var topicsListEl = document.querySelector('.topics'),
loadMoreEl = document.getElementById('topics_loadmore');
var topicsListEl = $('.topics'),
loadMoreEl = $('#topics_loadmore');
this.resolveButtonStates();
$(topicsListEl).on('click', '[data-action]', function() {
topicsListEl.on('click', '[data-action]', function() {
var $this = $(this),
action = this.getAttribute('data-action'),
action = $this.attr('data-action'),
tid = $this.parents('[data-tid]').attr('data-tid');
switch (action) {
@ -40,17 +40,17 @@ define(function() {
}
});
loadMoreEl.addEventListener('click', function() {
if (this.className.indexOf('disabled') === -1) {
var topics = document.querySelectorAll('.topics li[data-tid]');
loadMoreEl.on('click', function() {
if (!$(this).hasClass('disabled')) {
var topics = $('.topics li[data-tid]');
if(!topics.length) {
return;
}
var lastTid = parseInt(topics[topics.length - 1].getAttribute('data-tid'));
var lastTid = parseInt(topics.eq(topics.length - 1).attr('data-tid'));
this.innerHTML = '<i class="fa fa-refresh fa-spin"></i> Retrieving topics';
$(this).html('<i class="fa fa-refresh fa-spin"></i> Retrieving topics');
socket.emit('admin.topics.getMore', {
limit: 10,
after: lastTid
@ -59,27 +59,27 @@ define(function() {
return app.alertError(err.message);
}
var btnEl = document.getElementById('topics_loadmore');
var btnEl = $('#topics_loadmore');
if (topics.length > 0) {
var html = templates.prepare(templates['admin/topics'].blocks['topics']).parse({
topics: topics
}),
topicsListEl = document.querySelector('.topics');
topicsListEl = $('.topics');
// Fix relative paths
html = html.replace(/\{relative_path\}/g, RELATIVE_PATH);
topicsListEl.innerHTML += html;
topicsListEl.html(topicsListEl.html() + html);
Topics.resolveButtonStates();
btnEl.innerHTML = 'Load More Topics';
btnEl.html('Load More Topics');
$('span.timeago').timeago();
} else {
// Exhausted all topics
btnEl.className += ' disabled';
btnEl.innerHTML = 'No more topics';
btnEl.addClass('disabled');
btnEl.html('No more topics');
}
});
}
@ -88,24 +88,26 @@ define(function() {
Topics.resolveButtonStates = function() {
// Resolve proper button state for all topics
var topicsListEl = document.querySelector('.topics'),
topicEls = topicsListEl.querySelectorAll('li'),
var topicsListEl = $('.topics'),
topicEls = topicsListEl.find('li'),
numTopics = topicEls.length;
for (var x = 0; x < numTopics; x++) {
if (topicEls[x].getAttribute('data-pinned') === '1') {
topicEls[x].querySelector('[data-action="pin"]').className += ' active';
topicEls[x].removeAttribute('data-pinned');
var topic = topicEls.eq(x);
if (topic.attr('data-pinned') === '1') {
topic.find('[data-action="pin"]').addClass('active');
topic.removeAttr('data-pinned');
}
if (topicEls[x].getAttribute('data-locked') === '1') {
topicEls[x].querySelector('[data-action="lock"]').className += ' active';
topicEls[x].removeAttribute('data-locked');
if (topic.attr('data-locked') === '1') {
topic.find('[data-action="lock"]').addClass('active');
topic.removeAttr('data-locked');
}
if (topicEls[x].getAttribute('data-deleted') === '1') {
topicEls[x].querySelector('[data-action="delete"]').className += ' active';
topicEls[x].removeAttribute('data-deleted');
if (topic.attr('data-deleted') === '1') {
topic.find('[data-action="delete"]').addClass('active');
topic.removeAttr('data-deleted');
}
}
}
};
Topics.setDeleted = function(err, response) {
if(err) {
@ -113,10 +115,9 @@ define(function() {
}
if (response && response.tid) {
var btnEl = document.querySelector('li[data-tid="' + response.tid + '"] button[data-action="delete"]');
$(btnEl).addClass('active');
$(btnEl).siblings('[data-action="lock"]').addClass('active');
var btnEl = $('li[data-tid="' + response.tid + '"] button[data-action="delete"]');
btnEl.addClass('active');
btnEl.siblings('[data-action="lock"]').addClass('active');
}
};
@ -126,10 +127,10 @@ define(function() {
}
if (response && response.tid) {
var btnEl = document.querySelector('li[data-tid="' + response.tid + '"] button[data-action="delete"]');
var btnEl = $('li[data-tid="' + response.tid + '"] button[data-action="delete"]');
$(btnEl).removeClass('active');
$(btnEl).siblings('[data-action="lock"]').removeClass('active');
btnEl.removeClass('active');
btnEl.siblings('[data-action="lock"]').removeClass('active');
}
};
@ -139,9 +140,9 @@ define(function() {
}
if (response && response.tid) {
var btnEl = document.querySelector('li[data-tid="' + response.tid + '"] button[data-action="lock"]');
var btnEl = $('li[data-tid="' + response.tid + '"] button[data-action="lock"]');
$(btnEl).addClass('active');
btnEl.addClass('active');
}
};
@ -151,9 +152,9 @@ define(function() {
}
if (response && response.tid) {
var btnEl = document.querySelector('li[data-tid="' + response.tid + '"] button[data-action="lock"]');
var btnEl = $('li[data-tid="' + response.tid + '"] button[data-action="lock"]');
$(btnEl).removeClass('active');
btnEl.removeClass('active');
}
};
@ -164,9 +165,9 @@ define(function() {
}
if (response && response.tid) {
var btnEl = document.querySelector('li[data-tid="' + response.tid + '"] button[data-action="pin"]');
var btnEl = $('li[data-tid="' + response.tid + '"] button[data-action="pin"]');
$(btnEl).removeClass('active');
btnEl.removeClass('active');
}
};
@ -176,9 +177,9 @@ define(function() {
}
if (response && response.tid) {
var btnEl = document.querySelector('li[data-tid="' + response.tid + '"] button[data-action="pin"]');
var btnEl = $('li[data-tid="' + response.tid + '"] button[data-action="pin"]');
$(btnEl).addClass('active');
btnEl.addClass('active');
}
};

@ -156,7 +156,7 @@ define(function() {
}
jQuery('document').ready(function() {
$('document').ready(function() {
var timeoutId = 0,
loadingMoreUsers = false;
@ -165,15 +165,16 @@ define(function() {
parts = url.split('/'),
active = parts[parts.length - 1];
jQuery('.nav-pills li').removeClass('active');
jQuery('.nav-pills li a').each(function() {
if (this.getAttribute('href').match(active)) {
jQuery(this.parentNode).addClass('active');
$('.nav-pills li').removeClass('active');
$('.nav-pills li a').each(function() {
var $this = $(this);
if ($this.attr('href').match(active)) {
$this.parent().addClass('active');
return false;
}
});
jQuery('#search-user').on('keyup', function() {
$('#search-user').on('keyup', function() {
if (timeoutId !== 0) {
clearTimeout(timeoutId);
timeoutId = 0;
@ -182,7 +183,7 @@ define(function() {
timeoutId = setTimeout(function() {
var username = $('#search-user').val();
jQuery('.fa-spinner').removeClass('none');
$('.fa-spinner').removeClass('none');
socket.emit('admin.user.search', username, function(err, data) {
if(err) {
@ -195,7 +196,7 @@ define(function() {
userListEl = document.querySelector('.users');
userListEl.innerHTML = html;
jQuery('.fa-spinner').addClass('none');
$('.fa-spinner').addClass('none');
if (data && data.users.length === 0) {
$('#user-notfound-notify').html('User not found!')

@ -65,8 +65,8 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
topics = $('#topics-container').children('.category-item'),
numTopics = topics.length;
jQuery('#topics-container, .category-sidebar').removeClass('hidden');
jQuery('#category-no-topics').remove();
$('#topics-container, .category-sidebar').removeClass('hidden');
$('#category-no-topics').remove();
if (numTopics > 0) {
for (var x = 0; x < numTopics; x++) {
@ -104,8 +104,8 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
translator.translate(html, function(translatedHTML) {
var container = $('#topics-container');
jQuery('#topics-container, .category-sidebar').removeClass('hidden');
jQuery('#category-no-topics').remove();
$('#topics-container, .category-sidebar').removeClass('hidden');
$('#category-no-topics').remove();
html = $(translatedHTML);

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

Loading…
Cancel
Save