diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000..dcbd0ac56e
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,9 @@
+services:
+ - redis-server
+before_install:
+ - npm i --production
+ - node app --setup="{\"base_url\":\"http://127.0.0.1\",\"port\":4567,\"use_port\":false,\"secret\":\"abcdef\",\"bind_address\":\"0.0.0.0\",\"database\":\"redis\",\"redis:host\":\"127.0.0.1\",\"redis:port\":6379,\"redis:password\":\"\",\"redis:database\":0,\"admin:username\":\"admin\",\"admin:email\":\"test@example.org\",\"admin:password\":\"abcdef\",\"admin:password:confirm\":\"abcdef\"}" --ci="{\"host\":\"127.0.0.1\",\"port\":6379,\"database\":0}"
+language: node_js
+node_js:
+ - "0.11"
+ - "0.10"
\ No newline at end of file
diff --git a/.tx/config b/.tx/config
index 22a8bee310..73d171c4a7 100644
--- a/.tx/config
+++ b/.tx/config
@@ -10,6 +10,7 @@ trans.cs = public/language/cs/category.json
trans.de = public/language/de/category.json
trans.en@pirate = public/language/en@pirate/category.json
trans.es = public/language/es/category.json
+trans.et = public/language/et/category.json
trans.fa_IR = public/language/fa_IR/category.json
trans.fi = public/language/fi/category.json
trans.fr = public/language/fr/category.json
@@ -39,6 +40,7 @@ trans.cs = public/language/cs/login.json
trans.de = public/language/de/login.json
trans.en@pirate = public/language/en@pirate/login.json
trans.es = public/language/es/login.json
+trans.et = public/language/et/login.json
trans.fa_IR = public/language/fa_IR/login.json
trans.fi = public/language/fi/login.json
trans.fr = public/language/fr/login.json
@@ -67,6 +69,7 @@ trans.cs = public/language/cs/recent.json
trans.de = public/language/de/recent.json
trans.en@pirate = public/language/en@pirate/recent.json
trans.es = public/language/es/recent.json
+trans.et = public/language/et/recent.json
trans.fa_IR = public/language/fa_IR/recent.json
trans.fi = public/language/fi/recent.json
trans.fr = public/language/fr/recent.json
@@ -95,6 +98,7 @@ trans.cs = public/language/cs/unread.json
trans.de = public/language/de/unread.json
trans.en@pirate = public/language/en@pirate/unread.json
trans.es = public/language/es/unread.json
+trans.et = public/language/et/unread.json
trans.fa_IR = public/language/fa_IR/unread.json
trans.fi = public/language/fi/unread.json
trans.fr = public/language/fr/unread.json
@@ -123,6 +127,7 @@ trans.cs = public/language/cs/footer.json
trans.de = public/language/de/footer.json
trans.en@pirate = public/language/en@pirate/footer.json
trans.es = public/language/es/footer.json
+trans.et = public/language/et/footer.json
trans.fa_IR = public/language/fa_IR/footer.json
trans.fi = public/language/fi/footer.json
trans.fr = public/language/fr/footer.json
@@ -151,6 +156,7 @@ trans.cs = public/language/cs/modules.json
trans.de = public/language/de/modules.json
trans.en@pirate = public/language/en@pirate/modules.json
trans.es = public/language/es/modules.json
+trans.et = public/language/et/modules.json
trans.fa_IR = public/language/fa_IR/modules.json
trans.fi = public/language/fi/modules.json
trans.fr = public/language/fr/modules.json
@@ -179,6 +185,7 @@ trans.cs = public/language/cs/register.json
trans.de = public/language/de/register.json
trans.en@pirate = public/language/en@pirate/register.json
trans.es = public/language/es/register.json
+trans.et = public/language/et/register.json
trans.fa_IR = public/language/fa_IR/register.json
trans.fi = public/language/fi/register.json
trans.fr = public/language/fr/register.json
@@ -207,6 +214,7 @@ trans.cs = public/language/cs/user.json
trans.de = public/language/de/user.json
trans.en@pirate = public/language/en@pirate/user.json
trans.es = public/language/es/user.json
+trans.et = public/language/et/user.json
trans.fa_IR = public/language/fa_IR/user.json
trans.fi = public/language/fi/user.json
trans.fr = public/language/fr/user.json
@@ -235,6 +243,7 @@ trans.cs = public/language/cs/global.json
trans.de = public/language/de/global.json
trans.en@pirate = public/language/en@pirate/global.json
trans.es = public/language/es/global.json
+trans.et = public/language/et/global.json
trans.fa_IR = public/language/fa_IR/global.json
trans.fi = public/language/fi/global.json
trans.fr = public/language/fr/global.json
@@ -263,6 +272,7 @@ trans.cs = public/language/cs/notifications.json
trans.de = public/language/de/notifications.json
trans.en@pirate = public/language/en@pirate/notifications.json
trans.es = public/language/es/notifications.json
+trans.et = public/language/et/notifications.json
trans.fa_IR = public/language/fa_IR/notifications.json
trans.fi = public/language/fi/notifications.json
trans.fr = public/language/fr/notifications.json
@@ -291,6 +301,7 @@ trans.cs = public/language/cs/reset_password.json
trans.de = public/language/de/reset_password.json
trans.en@pirate = public/language/en@pirate/reset_password.json
trans.es = public/language/es/reset_password.json
+trans.et = public/language/et/reset_password.json
trans.fa_IR = public/language/fa_IR/reset_password.json
trans.fi = public/language/fi/reset_password.json
trans.fr = public/language/fr/reset_password.json
@@ -319,6 +330,7 @@ trans.cs = public/language/cs/users.json
trans.de = public/language/de/users.json
trans.en@pirate = public/language/en@pirate/users.json
trans.es = public/language/es/users.json
+trans.et = public/language/et/users.json
trans.fa_IR = public/language/fa_IR/users.json
trans.fi = public/language/fi/users.json
trans.fr = public/language/fr/users.json
@@ -347,6 +359,7 @@ trans.cs = public/language/cs/language.json
trans.de = public/language/de/language.json
trans.en@pirate = public/language/en@pirate/language.json
trans.es = public/language/es/language.json
+trans.et = public/language/et/language.json
trans.fa_IR = public/language/fa_IR/language.json
trans.fi = public/language/fi/language.json
trans.fr = public/language/fr/language.json
@@ -375,6 +388,7 @@ trans.cs = public/language/cs/pages.json
trans.de = public/language/de/pages.json
trans.en@pirate = public/language/en@pirate/pages.json
trans.es = public/language/es/pages.json
+trans.et = public/language/et/pages.json
trans.fa_IR = public/language/fa_IR/pages.json
trans.fi = public/language/fi/pages.json
trans.fr = public/language/fr/pages.json
@@ -403,6 +417,7 @@ trans.cs = public/language/cs/topic.json
trans.de = public/language/de/topic.json
trans.en@pirate = public/language/en@pirate/topic.json
trans.es = public/language/es/topic.json
+trans.et = public/language/et/topic.json
trans.fa_IR = public/language/fa_IR/topic.json
trans.fi = public/language/fi/topic.json
trans.fr = public/language/fr/topic.json
diff --git a/README.md b/README.md
index bbc0b4b6dd..1e6a1fbed3 100644
--- a/README.md
+++ b/README.md
@@ -33,7 +33,7 @@ Credit: [Convoe](http://www.convoe.com), [Kano](http://www.kano.me), [Manchester
NodeBB requires the following software to be installed:
-* A version of Node.js at least 0.8 or greater
+* A version of Node.js at least 0.10 or greater
* Redis, version 2.6 or greater **or** MongoDB, version 2.4 or greater
* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB)
diff --git a/app.js b/app.js
index d66e81f137..6a1bb9d49d 100644
--- a/app.js
+++ b/app.js
@@ -39,7 +39,7 @@ winston.add(winston.transports.Console, {
});
winston.add(winston.transports.File, {
- filename: 'error.log',
+ filename: 'logs/error.log',
level: 'error'
});
@@ -88,7 +88,10 @@ function loadConfig() {
});
nconf.defaults({
- themes_path: path.join(__dirname, 'node_modules')
+ base_dir: __dirname,
+ themes_path: path.join(__dirname, 'node_modules'),
+ upload_url: path.join(path.sep, 'uploads', path.sep),
+ views_dir: path.join(__dirname, 'public/templates')
});
// Ensure themes_path is a full filepath
@@ -98,11 +101,6 @@ function loadConfig() {
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, 'uploads', path.sep));
- nconf.set('base_dir', __dirname);
- nconf.set('views_dir', path.join(__dirname, 'public/templates'));
-
winston.info('Time: ' + new Date());
winston.info('Initializing NodeBB v' + pkg.version);
winston.info('* using configuration stored in: ' + configFile);
@@ -133,6 +131,7 @@ function start() {
plugins.init();
translator.loadServer();
+ nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
@@ -201,38 +200,83 @@ function upgrade() {
function reset() {
loadConfig();
- var meta = require('./src/meta'),
- db = require('./src/database'),
- async = require('async');
+ require('./src/database').init(function(err) {
+ if (err) {
+ winston.error(err.message);
+ process.exit();
+ }
- db.init(function(err) {
- meta.configs.init(function () {
- async.parallel([
- function(next) {
- db.delete('plugins:active', next);
- },
- function(next) {
- meta.configs.set('theme:type', 'local', next);
- },
- function(next) {
- meta.configs.set('theme:id', 'nodebb-theme-vanilla', next);
- },
- function(next) {
- meta.configs.set('theme:staticDir', '', next);
- },
- function(next) {
- meta.configs.set('theme:templates', '', next);
- }
- ], function(err) {
- if (err) {
- winston.error(err);
+ if (nconf.get('themes')) {
+ resetThemes();
+ } else if (nconf.get('plugins')) {
+ resetPlugins();
+ } else if (nconf.get('widgets')) {
+ resetWidgets();
+ } else if (nconf.get('settings')) {
+ resetSettings();
+ } else if (nconf.get('all')) {
+ require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) {
+ if (!err) {
+ winston.info('[reset] Reset complete.');
} else {
- winston.info("Successfully reset theme to Vanilla and disabled all plugins.");
+ winston.error('[reset] Errors were encountered while resetting your forum settings: ' + err.message);
}
-
process.exit();
});
- });
+ } else {
+ console.log('no match');
+ }
+ });
+}
+
+function resetSettings(callback) {
+ var meta = require('./src/meta');
+ meta.configs.set('allowLocalLogin', 1, function(err) {
+ winston.info('[reset] Settings reset to default');
+ if (typeof callback === 'function') {
+ callback(err);
+ } else {
+ process.exit();
+ }
+ });
+}
+
+function resetThemes(callback) {
+ var meta = require('./src/meta');
+
+ meta.themes.set({
+ type: 'local',
+ id: 'nodebb-theme-vanilla'
+ }, function(err) {
+ winston.info('[reset] Theme reset to Vanilla');
+ if (typeof callback === 'function') {
+ callback(err);
+ } else {
+ process.exit();
+ }
+ });
+}
+
+function resetPlugins(callback) {
+ var db = require('./src/database');
+ db.delete('plugins:active', function(err) {
+ winston.info('[reset] All Plugins De-activated');
+ if (typeof callback === 'function') {
+ callback(err);
+ } else {
+ process.exit();
+ }
+ });
+}
+
+function resetWidgets(callback) {
+ require('./src/widgets').reset(function(err) {
+ winston.info('[reset] All Widgets moved to Draft Zone');
+ if (typeof callback === 'function') {
+ callback(err);
+ } else {
+ process.exit();
+ }
});
}
diff --git a/minifier.js b/minifier.js
new file mode 100644
index 0000000000..cddcd92b51
--- /dev/null
+++ b/minifier.js
@@ -0,0 +1,58 @@
+var uglifyjs = require('uglify-js'),
+ less = require('less'),
+ async = require('async'),
+ fs = require('fs'),
+
+ Minifier = {
+ js: {},
+ css: {}
+ };
+
+/* Javascript */
+Minifier.js.minify = function (scripts, callback) {
+ try {
+ var minified = uglifyjs.minify(scripts);
+ callback(minified.code);
+ } catch(err) {
+ process.send({
+ action: 'error',
+ error: err
+ });
+ }
+};
+
+Minifier.js.concatenate = function(scripts, callback) {
+ async.map(scripts, function(path, next) {
+ fs.readFile(path, { encoding: 'utf-8' }, next);
+ }, function(err, contents) {
+ if (err) {
+ process.send({
+ action: 'error',
+ error: err
+ });
+ } else {
+ callback(contents.reduce(function(output, src) {
+ return output.length ? output + ';\n' + src : src;
+ }, ''));
+ }
+ });
+};
+
+process.on('message', function(payload) {
+ var executeCallback = function(data) {
+ process.send({
+ action: payload.action,
+ data: data
+ });
+ };
+
+ switch(payload.action) {
+ case 'js.minify':
+ Minifier.js.minify(payload.scripts, executeCallback);
+ break;
+
+ case 'js.concatenate':
+ Minifier.js.concatenate(payload.scripts, executeCallback);
+ break;
+ }
+})
\ No newline at end of file
diff --git a/mocks/databasemock.js b/mocks/databasemock.js
index 7a2a11ca60..bc6bbbc019 100644
--- a/mocks/databasemock.js
+++ b/mocks/databasemock.js
@@ -14,6 +14,12 @@
nconf.file({ file: path.join(__dirname, '../config.json') });
+ nconf.defaults({
+ base_dir: path.join(__dirname,'..'),
+ themes_path: path.join(__dirname, '../node_modules'),
+ upload_url: path.join(path.sep, '../uploads', path.sep),
+ views_dir: path.join(__dirname, '../public/templates')
+ });
var dbType = nconf.get('database'),
testDbConfig = nconf.get('test_database'),
@@ -26,17 +32,17 @@
"Please, add parameters for test database in config.json\n"+
"For example (redis):\n"+
'"test_database": {' + '\n' +
- ' "host": "127.0.0.1",' + '\n' +
- ' "port": "6379",' + '\n' +
- ' "password": "",' + '\n' +
- ' "database": "1"' + '\n' +
+ ' "host": "127.0.0.1",' + '\n' +
+ ' "port": "6379",' + '\n' +
+ ' "password": "",' + '\n' +
+ ' "database": "1"' + '\n' +
'}\n'+
" or (mongo):\n" +
'"test_database": {' + '\n' +
- ' "host": "127.0.0.1",' + '\n' +
- ' "port": "27017",' + '\n' +
- ' "password": "",' + '\n' +
- ' "database": "1"' + '\n' +
+ ' "host": "127.0.0.1",' + '\n' +
+ ' "port": "27017",' + '\n' +
+ ' "password": "",' + '\n' +
+ ' "database": "1"' + '\n' +
'}\n'+
"==========================================================="
);
@@ -59,7 +65,6 @@
meta = require('../src/meta');
before(function(done) {
-
db.init(function(err) {
//Clean up
db.flushdb(function(err) {
@@ -71,6 +76,9 @@
winston.info('test_database flushed');
meta.configs.init(function () {
+ nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path'));
+ nconf.set('base_templates_path', path.join(nconf.get('themes_path'), 'nodebb-theme-vanilla/templates'));
+ nconf.set('theme_templates_path', meta.config['theme:templates'] ? path.join(nconf.get('themes_path'), meta.config['theme:id'], meta.config['theme:templates']) : nconf.get('base_templates_path'));
var webserver = require('../src/webserver'),
sockets = require('../src/socket.io');
diff --git a/nodebb b/nodebb
index b67b4ba0db..18f6df8966 100755
--- a/nodebb
+++ b/nodebb
@@ -71,7 +71,7 @@ case "$1" in
;;
reset)
- node loader --reset
+ node loader --reset --$2
;;
dev)
diff --git a/package.json b/package.json
index 2c4e6e29c1..bd50a98da3 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPLv3 or later",
"description": "NodeBB Forum",
- "version": "0.4.0",
+ "version": "0.4.1",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -20,7 +20,6 @@
"express-namespace": "~0.1.1",
"passport": "~0.2.0",
"passport-local": "0.1.6",
- "less-middleware": "0.1.12",
"marked": "0.2.8",
"async": "~0.2.8",
"gm": "1.14.2",
@@ -32,7 +31,7 @@
"rss": "~0.2.0",
"prompt": "~0.2.11",
"uglify-js": "~2.4.0",
- "validator": "^3.4.0",
+ "validator": "~3.4.0",
"cron": "~1.0.4",
"semver": "~2.2.1",
"string": "~1.7.0",
@@ -46,7 +45,7 @@
"nodebb-theme-lavender": "~0.0.25",
"less": "~1.6.3",
"daemon": "~1.1.0",
- "underscore": "^1.6.0",
+ "underscore": "~1.6.0",
"mkdirp": "~0.3.5",
"rimraf": "~2.2.6"
},
diff --git a/public/language/ar/pages.json b/public/language/ar/pages.json
index 6b41654688..4624ca716b 100644
--- a/public/language/ar/pages.json
+++ b/public/language/ar/pages.json
@@ -9,6 +9,7 @@
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
+ "user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}
\ No newline at end of file
diff --git a/public/language/ar/topic.json b/public/language/ar/topic.json
index 883407f80e..c6f94a4d52 100644
--- a/public/language/ar/topic.json
+++ b/public/language/ar/topic.json
@@ -44,7 +44,13 @@
"thread_tools.move": "نقل الموضوع",
"thread_tools.fork": "تفرع الموضوع",
"thread_tools.delete": "حذف الموضوع",
+ "thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
+ "thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
+ "post_delete_confirm": "Are you sure you want to delete this post?",
+ "post_restore_confirm": "Are you sure you want to restore this post?",
+ "post_delete_error": "Could not delete this post!",
+ "post_restore_error": "Could not restore this post!",
"load_categories": "تحميل الفئات",
"disabled_categories_note": "الفئات المجلدة رمادية",
"confirm_move": "انقل",
diff --git a/public/language/ar/user.json b/public/language/ar/user.json
index 06267826c5..66478af445 100644
--- a/public/language/ar/user.json
+++ b/public/language/ar/user.json
@@ -5,7 +5,6 @@
"email": "البريد الإلكتروني",
"fullname": "الاسم الكامل",
"website": "الموقع الإلكتروني",
- "user:website_placeholder": "http://...",
"location": "موقع",
"age": "عمر",
"joined": "تاريخ التسجيل",
@@ -20,7 +19,6 @@
"signature": "توقيع",
"gravatar": "Gravatar",
"birthday": "عيد ميلاد",
- "birthday_placeholder": "mm/dd/yyyy",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
@@ -47,6 +45,7 @@
"has_no_follower": "هذا المستخدم ليس لديه أي أتباع :(",
"follows_no_one": "هذا المستخدم لا يتبع أحد :(",
"has_no_posts": "This user didn't post anything yet.",
+ "has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "البريد الإلكتروني مخفي",
"hidden": "مخفي",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
diff --git a/public/language/cs/pages.json b/public/language/cs/pages.json
index 6b41654688..4624ca716b 100644
--- a/public/language/cs/pages.json
+++ b/public/language/cs/pages.json
@@ -9,6 +9,7 @@
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
+ "user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}
\ No newline at end of file
diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json
index d9c18201e4..7949c6c3b0 100644
--- a/public/language/cs/topic.json
+++ b/public/language/cs/topic.json
@@ -44,7 +44,13 @@
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
+ "thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
+ "thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
+ "post_delete_confirm": "Are you sure you want to delete this post?",
+ "post_restore_confirm": "Are you sure you want to restore this post?",
+ "post_delete_error": "Could not delete this post!",
+ "post_restore_error": "Could not restore this post!",
"load_categories": "Načítání kategorií",
"disabled_categories_note": "Vypnuté (disabled) kategorie jsou šedé.",
"confirm_move": "Přesunout",
diff --git a/public/language/cs/user.json b/public/language/cs/user.json
index 068d31d3ee..cabf958b64 100644
--- a/public/language/cs/user.json
+++ b/public/language/cs/user.json
@@ -5,7 +5,6 @@
"email": "Email",
"fullname": "Jméno a příjmení",
"website": "Webové stránky",
- "user:website_placeholder": "http://...",
"location": "Poloha",
"age": "Věk",
"joined": "Registrován",
@@ -20,7 +19,6 @@
"signature": "Podpis",
"gravatar": "Gravatar",
"birthday": "Datum narození",
- "birthday_placeholder": "mm/dd/yyyy",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
@@ -47,6 +45,7 @@
"has_no_follower": "Tohoto uživatele nikdo nesleduje :(",
"follows_no_one": "Tento uživatel nikoho nesleduje :(",
"has_no_posts": "This user didn't post anything yet.",
+ "has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Skrytý email",
"hidden": "skrytý",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
diff --git a/public/language/de/footer.json b/public/language/de/footer.json
index 94a3bd1ef3..fefe7b710c 100644
--- a/public/language/de/footer.json
+++ b/public/language/de/footer.json
@@ -3,5 +3,5 @@
"stats.users": "Benutzer",
"stats.topics": "Themen",
"stats.posts": "Beiträge",
- "success": "erfolg"
+ "success": "Erfolg"
}
\ No newline at end of file
diff --git a/public/language/de/global.json b/public/language/de/global.json
index 3094a06225..fc57856e6d 100644
--- a/public/language/de/global.json
+++ b/public/language/de/global.json
@@ -6,8 +6,8 @@
"403.message": "Du bist nicht dazu berechtigt, diese Seite aufzurufen. Logge dich ein und versuche es erneut.",
"404.title": " Nicht Gefunden",
"404.message": "Die abgefragte Seite wurde nicht gefunden. Zurück zur Übersicht.",
- "500.title": "Internal error.",
- "500.message": "Ooops! Looks like something went wrong!",
+ "500.title": "Interner Fehler.",
+ "500.message": "Ups! Scheint als wäre etwas schief gelaufen!",
"register": "Registrierung",
"login": "Login",
"please_log_in": "Bitte einloggen",
diff --git a/public/language/de/pages.json b/public/language/de/pages.json
index ca26360072..665423a4a7 100644
--- a/public/language/de/pages.json
+++ b/public/language/de/pages.json
@@ -1,14 +1,15 @@
{
"home": "Home",
- "unread": "Unread Topics",
+ "unread": "Ungelesene Themen",
"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",
+ "recent": "Neueste Topics",
+ "users": "Registrierte User",
+ "notifications": "Benachrichtigungen",
+ "user.edit": "Bearbeite \"%1\"",
+ "user.following": "User %1 folgen",
+ "user.followers": "User die folgen %1",
"user.posts": "Beiträge von %1",
+ "user.topics": "Topics created by %1",
"user.favourites": "%1's favorisierte Beiträge",
- "user.settings": "User Settings"
+ "user.settings": "User Einstellungen"
}
\ No newline at end of file
diff --git a/public/language/de/topic.json b/public/language/de/topic.json
index 8d396a8362..0d84419772 100644
--- a/public/language/de/topic.json
+++ b/public/language/de/topic.json
@@ -2,7 +2,7 @@
"topic": "Thema",
"topics": "Themen",
"topic_id": "Topic ID",
- "topic_id_placeholder": "Enter topic ID",
+ "topic_id_placeholder": "Topic ID eingeben",
"no_topics_found": "Keine passende Themen gefunden.",
"no_posts_found": "Keine Beiträge gefunden!",
"profile": "Profil",
@@ -23,8 +23,8 @@
"flag": "Markieren",
"bookmark_instructions": "Klicke hier um zur letzten Position zurückzukehren oder schließe zum Abbrechen.",
"flag_title": "Diesen Beitrag zur Moderation markieren",
- "flag_confirm": "Are you sure you want to flag this post?",
- "flag_success": "This post has been flagged for moderation.",
+ "flag_confirm": "Sind Sie sicher, dass Sie diesen Post markieren möchten?",
+ "flag_success": "Dieser Beitrag wurde erfolgreich für die Moderation markiert.",
"deleted_message": "Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden 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.",
@@ -44,10 +44,16 @@
"thread_tools.move": "Thema verschieben",
"thread_tools.fork": "Thema aufspalten",
"thread_tools.delete": "Thema löschen",
+ "thread_tools.delete_confirm": "Sind Sie sicher, dass Sie dieses Thema löschen möchten?",
"thread_tools.restore": "Thema wiederherstellen",
+ "thread_tools.restore_confirm": "Sind Sie sicher, dass Sie dieses Thema wiederherstellen möchten?",
+ "post_delete_confirm": "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?",
+ "post_restore_confirm": "Sind Sie sicher, dass Sie diesen Beitrag wiederherstellen möchten?",
+ "post_delete_error": "Beitrag konnte nicht gelöscht werden!",
+ "post_restore_error": "Beitrag konnte nicht wiederhergestellt werden!",
"load_categories": "Kategorien laden",
"disabled_categories_note": "Deaktivierte Kategorien sind ausgegraut.",
- "confirm_move": "verschieben",
+ "confirm_move": "Verschieben",
"confirm_fork": "Aufspalten",
"favourite": "Favorit",
"favourites": "Favoriten",
diff --git a/public/language/de/user.json b/public/language/de/user.json
index 2d451fef45..6f260f0daf 100644
--- a/public/language/de/user.json
+++ b/public/language/de/user.json
@@ -5,7 +5,6 @@
"email": "E-Mail",
"fullname": "Kompletter Name",
"website": "Homepage",
- "user:website_placeholder": "http://...",
"location": "Wohnort",
"age": "Alter",
"joined": "Beigetreten",
@@ -20,7 +19,6 @@
"signature": "Signatur",
"gravatar": "Gravatar",
"birthday": "Geburtstag",
- "birthday_placeholder": "mm/dd/yyyy",
"chat": "Chat",
"follow": "Folgen",
"unfollow": "Nicht mehr folgen",
@@ -30,23 +28,24 @@
"upload_new_picture": "Neues Bild hochladen",
"current_password": "Aktuelles Passwort",
"change_password": "Ändere Passwort",
- "change_password_error": "Invalid Password!",
- "change_password_error_wrong_current": "Your current password is not correct!",
- "change_password_error_length": "Password too short!",
- "change_password_error_match": "Passwords must match!",
- "change_password_error_privileges": "You are not have the rights to change this password.",
- "change_password_success": "Your password is updated!",
+ "change_password_error": "Ungültiges Passwort!",
+ "change_password_error_wrong_current": "Ihr derzeitiges Passwort ist ungültig!",
+ "change_password_error_length": "Passwort zu kurz!",
+ "change_password_error_match": "Passworte müssen übereinstimmen!",
+ "change_password_error_privileges": "Sie haben nicht die Berechtigungen dieses Passwort zu ändern.",
+ "change_password_success": "Ihr Passwort wurde aktualisiert!",
"confirm_password": "Passwort wiederholen",
"password": "Passwort",
"upload_picture": "Bild hochladen",
"upload_a_picture": "Ein Bild hochladen",
- "image_spec": "Du darfst nur Dateien vom Typ PNG, JPG oder GIF hochladen",
+ "image_spec": "Sie dürfen nur Dateien vom Typ PNG, JPG oder GIF hochladen",
"max": "max.",
"settings": "Einstellungen",
"show_email": "Zeige meine E-Mail Adresse an.",
"has_no_follower": "Dieser User hat noch keine Follower.",
"follows_no_one": "Dieser User folgt noch niemanden.",
"has_no_posts": "Dieser Nutzer hat noch nichts gepostet.",
+ "has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "E-Mail Adresse versteckt",
"hidden": "versteckt",
"paginate_description": "Themen und Beiträge auf Seiten aufteilen statt unendliches Scrollen verweden",
diff --git a/public/language/en@pirate/pages.json b/public/language/en@pirate/pages.json
index 6b41654688..4624ca716b 100644
--- a/public/language/en@pirate/pages.json
+++ b/public/language/en@pirate/pages.json
@@ -9,6 +9,7 @@
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
+ "user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}
\ No newline at end of file
diff --git a/public/language/en@pirate/topic.json b/public/language/en@pirate/topic.json
index 354d8a84cd..41e73389ae 100644
--- a/public/language/en@pirate/topic.json
+++ b/public/language/en@pirate/topic.json
@@ -44,7 +44,13 @@
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
+ "thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
+ "thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
+ "post_delete_confirm": "Are you sure you want to delete this post?",
+ "post_restore_confirm": "Are you sure you want to restore this post?",
+ "post_delete_error": "Could not delete this post!",
+ "post_restore_error": "Could not restore this post!",
"load_categories": "Loading Categories",
"disabled_categories_note": "Disabled Categories are greyed out",
"confirm_move": "Move",
diff --git a/public/language/en@pirate/user.json b/public/language/en@pirate/user.json
index 09adf3da95..65ae4fb5b1 100644
--- a/public/language/en@pirate/user.json
+++ b/public/language/en@pirate/user.json
@@ -5,7 +5,6 @@
"email": "Email",
"fullname": "Full Name",
"website": "Website",
- "user:website_placeholder": "http://...",
"location": "Location",
"age": "Age",
"joined": "Joined",
@@ -20,7 +19,6 @@
"signature": "Signature",
"gravatar": "Gravatar",
"birthday": "Birthday",
- "birthday_placeholder": "mm/dd/yyyy",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
@@ -47,6 +45,7 @@
"has_no_follower": "This user doesn't have any followers :(",
"follows_no_one": "This user isn't following anyone :(",
"has_no_posts": "This user didn't post anything yet.",
+ "has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Email Hidden",
"hidden": "hidden",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
diff --git a/public/language/en_GB/pages.json b/public/language/en_GB/pages.json
index 10a7ef070b..a91aec5e8e 100644
--- a/public/language/en_GB/pages.json
+++ b/public/language/en_GB/pages.json
@@ -9,6 +9,7 @@
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.posts": "Posts made by %1",
+ "user.topics": "Topics created by %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}
\ No newline at end of file
diff --git a/public/language/en_GB/topic.json b/public/language/en_GB/topic.json
index d9ed9e0bd9..1a38c9f776 100644
--- a/public/language/en_GB/topic.json
+++ b/public/language/en_GB/topic.json
@@ -53,7 +53,14 @@
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
+ "thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restore Topic",
+ "thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
+
+ "post_delete_confirm": "Are you sure you want to delete this post?",
+ "post_restore_confirm": "Are you sure you want to restore this post?",
+ "post_delete_error": "Could not delete this post!",
+ "post_restore_error": "Could not restore this post!",
"load_categories": "Loading Categories",
"disabled_categories_note": "Disabled Categories are greyed out",
diff --git a/public/language/en_GB/unread.json b/public/language/en_GB/unread.json
index 92abe978e9..8bd7a20711 100644
--- a/public/language/en_GB/unread.json
+++ b/public/language/en_GB/unread.json
@@ -1,6 +1,9 @@
{
"title": "Unread",
"no_unread_topics": "There are no unread topics.",
- "mark_all_read": "Mark all as Read",
- "load_more": "Load More"
+ "load_more": "Load More",
+ "mark_as_read": "Mark as Read",
+ "selected": "Selected",
+ "all": "All",
+ "topics_marked_as_read.success": "Topics marked as read!"
}
\ No newline at end of file
diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json
index 2363b1d09e..d7f2d83b2d 100644
--- a/public/language/en_GB/user.json
+++ b/public/language/en_GB/user.json
@@ -5,7 +5,6 @@
"email": "Email",
"fullname": "Full Name",
"website": "Website",
- "user:website_placeholder": "http://...",
"location": "Location",
"age": "Age",
"joined": "Joined",
@@ -20,7 +19,6 @@
"signature": "Signature",
"gravatar": "Gravatar",
"birthday": "Birthday",
- "birthday_placeholder": "mm/dd/yyyy",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
@@ -51,6 +49,7 @@
"has_no_follower": "This user doesn't have any followers :(",
"follows_no_one": "This user isn't following anyone :(",
"has_no_posts": "This user didn't post anything yet.",
+ "has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Email Hidden",
"hidden": "hidden",
diff --git a/public/language/es/pages.json b/public/language/es/pages.json
index fab5dc5001..a1e82b600c 100644
--- a/public/language/es/pages.json
+++ b/public/language/es/pages.json
@@ -9,6 +9,7 @@
"user.following": "Gente que sigue %1 ",
"user.followers": "Seguidores de %1",
"user.posts": "Posteos de %1",
+ "user.topics": "Topics created by %1",
"user.favourites": "Publicaciones favoritas de %1 ",
"user.settings": "Preferencias del Usuario"
}
\ No newline at end of file
diff --git a/public/language/es/topic.json b/public/language/es/topic.json
index 50055db176..1770e05512 100644
--- a/public/language/es/topic.json
+++ b/public/language/es/topic.json
@@ -1,8 +1,8 @@
{
"topic": "Tema",
"topics": "Temas",
- "topic_id": "Topic ID",
- "topic_id_placeholder": "Enter topic ID",
+ "topic_id": "ID Tema",
+ "topic_id_placeholder": "Introducir ID tema",
"no_topics_found": "No se encontraron temas!",
"no_posts_found": "No se encontraron publicaciones!",
"profile": "Perfil",
@@ -23,8 +23,8 @@
"flag": "Reportar",
"bookmark_instructions": "Click aqui para restablecer la ultima posicion del post o cierralo para descartar cambios.",
"flag_title": "Reportar esta publicación a los moderadores",
- "flag_confirm": "Are you sure you want to flag this post?",
- "flag_success": "This post has been flagged for moderation.",
+ "flag_confirm": "Estás seguro de que quieres marcar como indebido este mensaje?",
+ "flag_success": "Este mensaje ha sido marcado para la moderación.",
"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.",
@@ -44,7 +44,13 @@
"thread_tools.move": "Mover Tema",
"thread_tools.fork": "Bifurcar Tema",
"thread_tools.delete": "Borrar Tema",
+ "thread_tools.delete_confirm": "Are you sure you want to delete this thread?",
"thread_tools.restore": "Restaurar Tema",
+ "thread_tools.restore_confirm": "Are you sure you want to restore this thread?",
+ "post_delete_confirm": "Are you sure you want to delete this post?",
+ "post_restore_confirm": "Are you sure you want to restore this post?",
+ "post_delete_error": "Could not delete this post!",
+ "post_restore_error": "Could not restore this post!",
"load_categories": "Cargando Categorías",
"disabled_categories_note": "Las categorías deshabilitadas estan en gris",
"confirm_move": "Mover",
diff --git a/public/language/es/user.json b/public/language/es/user.json
index 5b2839b05b..c6bf41aa9a 100644
--- a/public/language/es/user.json
+++ b/public/language/es/user.json
@@ -5,7 +5,6 @@
"email": "Correo Electrónico",
"fullname": "Nombre",
"website": "Sitio Web",
- "user:website_placeholder": "http://...",
"location": "Ubicación",
"age": "Edad",
"joined": "Registro",
@@ -20,7 +19,6 @@
"signature": "Firma",
"gravatar": "Gravatar",
"birthday": "Cumpleaños",
- "birthday_placeholder": "mm/dd/yyyy",
"chat": "Chat!",
"follow": "Seguir",
"unfollow": "Dejar de Seguir",
@@ -30,12 +28,12 @@
"upload_new_picture": "Cargar Nueva Foto",
"current_password": "Contraseña actual",
"change_password": "Cambiar Contraseña",
- "change_password_error": "Invalid Password!",
- "change_password_error_wrong_current": "Your current password is not correct!",
- "change_password_error_length": "Password too short!",
- "change_password_error_match": "Passwords must match!",
- "change_password_error_privileges": "You are not have the rights to change this password.",
- "change_password_success": "Your password is updated!",
+ "change_password_error": "Contraseña no válida!",
+ "change_password_error_wrong_current": "Su contraseña actual no es correcta!",
+ "change_password_error_length": "La contraseña es demasiado corta!",
+ "change_password_error_match": "Las contraseñas deben coincidir!",
+ "change_password_error_privileges": "No tienes los derechos suficientes para cambiar esta contraseña.",
+ "change_password_success": "La contraseña ha sido actualizada correctamente!",
"confirm_password": "Confirmar Contraseña",
"password": "Contraseña",
"upload_picture": "Cargar foto",
@@ -47,6 +45,7 @@
"has_no_follower": "Este miembro no tiene seguidores.",
"follows_no_one": "Este miembro no sigue a nadie.",
"has_no_posts": "Este usuario aún no ha publicado nada.",
+ "has_no_topics": "This user didn't post any topics yet.",
"email_hidden": "Correo electrónico Oculto",
"hidden": "oculto",
"paginate_description": "La paginación de los temas no es por página, ya que tiene scroll infinito.",
diff --git a/public/language/et/category.json b/public/language/et/category.json
new file mode 100644
index 0000000000..e3c98dacde
--- /dev/null
+++ b/public/language/et/category.json
@@ -0,0 +1,12 @@
+{
+ "new_topic_button": "Uus teema",
+ "no_topics": "Kahjuks ei leidu siin kategoorias ühtegi teemat.
Soovid postitada?",
+ "posts": "postitused",
+ "views": "vaatamised",
+ "posted": "postitatud",
+ "browsing": "vaatab",
+ "no_replies": "Keegi pole vastanud",
+ "replied": "vastas",
+ "last_edited_by": "viimati muudetud",
+ "share_this_category": "Jaga seda kategooriat"
+}
\ No newline at end of file
diff --git a/public/language/et/footer.json b/public/language/et/footer.json
new file mode 100644
index 0000000000..f11c2d6e56
--- /dev/null
+++ b/public/language/et/footer.json
@@ -0,0 +1,7 @@
+{
+ "stats.online": "Sees",
+ "stats.users": "Kasutajad",
+ "stats.topics": "Teemad",
+ "stats.posts": "Postitused",
+ "success": "õnnestus"
+}
\ No newline at end of file
diff --git a/public/language/et/global.json b/public/language/et/global.json
new file mode 100644
index 0000000000..2bf5c84413
--- /dev/null
+++ b/public/language/et/global.json
@@ -0,0 +1,55 @@
+{
+ "home": "Avaleht",
+ "search": "Otsi",
+ "buttons.close": "Sulge",
+ "403.title": "Ligipääs puudub",
+ "403.message": "Tundub, et sul pole piisvalt õigusi selle lehe vaatamiseks. Äkki peaksid sisse logima?",
+ "404.title": "Ei leitud",
+ "404.message": "Tundub, et lehte mida otsid, ei eksisteeri. Mine tagasi avalehele.",
+ "500.title": "Süsteemi viga",
+ "500.message": "Oih! Midagi läks valesti!",
+ "register": "Registreeri",
+ "login": "Logi sisse",
+ "please_log_in": "Palun logi sisse",
+ "logout": "Logi välja",
+ "posting_restriction_info": "Siin foorumis on postitamine lubatud ainult registreeritud kasutajatel, palun logi sisse.",
+ "welcome_back": "Tere tulemast tagasi",
+ "you_have_successfully_logged_in": "Edukalt sisse logitud",
+ "save_changes": "Salvesta muudatused",
+ "close": "Sulge",
+ "pagination": "Lehekülgede numeratsioon",
+ "header.admin": "Admin",
+ "header.recent": "Hiljutised",
+ "header.unread": "Lugemata",
+ "header.popular": "Populaarne",
+ "header.users": "Kasutajad",
+ "header.chats": "Vestlused",
+ "header.notifications": "Teated",
+ "header.search": "Otsi",
+ "header.profile": "Profiil",
+ "notifications.loading": "Laen teateid",
+ "chats.loading": "Laen vestlusi",
+ "motd.welcome": "Tere tulemast NodeBB foorumisse.",
+ "previouspage": "Eelmine leht",
+ "nextpage": "Järgmine leht",
+ "alert.success": "Õnnestus",
+ "alert.error": "Viga",
+ "alert.banned": "Bannitud",
+ "alert.banned.message": "Oled bannitud!",
+ "alert.unfollow": "Sa ei jälgi enam %1!",
+ "alert.follow": "Sa jälgid nüüd %1!",
+ "posts": "Postitused",
+ "views": "Vaatamised",
+ "posted": "postitatud",
+ "in": "sees",
+ "norecentposts": "Hiljutisi postitusi ei ole",
+ "norecenttopics": "Hiljutisi teemasid ei ole",
+ "recentposts": "Hiljutised postitused",
+ "recentips": "Hiljutised IP'd, millelt sisse logitud",
+ "online": "Sees",
+ "away": "Eemal",
+ "dnd": "Hõivatud",
+ "invisible": "Nähtamatu",
+ "offline": "Väljas",
+ "privacy": "Privaatsus"
+}
\ No newline at end of file
diff --git a/public/language/et/language.json b/public/language/et/language.json
new file mode 100644
index 0000000000..5ebe9977ca
--- /dev/null
+++ b/public/language/et/language.json
@@ -0,0 +1,5 @@
+{
+ "name": "Estonian",
+ "code": "et",
+ "dir": "ltr"
+}
\ No newline at end of file
diff --git a/public/language/et/login.json b/public/language/et/login.json
new file mode 100644
index 0000000000..0353577038
--- /dev/null
+++ b/public/language/et/login.json
@@ -0,0 +1,10 @@
+{
+ "login": "Logi sisse",
+ "username": "Kasutajanimi / Email",
+ "password": "Parool",
+ "remember_me": "Mäleta mind?",
+ "forgot_password": "Unustasid parooli?",
+ "alternative_logins": "Alternatiivsed sisse logimise võimalused",
+ "failed_login_attempt": "Sisse logimine ebaõnnestus, palun proovi uuesti.",
+ "login_successful": "Edukalt sisse logitud!"
+}
\ No newline at end of file
diff --git a/public/language/et/modules.json b/public/language/et/modules.json
new file mode 100644
index 0000000000..0d8ff35254
--- /dev/null
+++ b/public/language/et/modules.json
@@ -0,0 +1,6 @@
+{
+ "chat.chatting_with": "Vestle ",
+ "chat.placeholder": "kirjuta oma sõnum siia ning sõnumi saatmiseks vajuta enterit",
+ "chat.send": "Saada",
+ "chat.no_active": "Sul ei ole hetkel aktiivseid vestlusi."
+}
\ No newline at end of file
diff --git a/public/language/et/notifications.json b/public/language/et/notifications.json
new file mode 100644
index 0000000000..d9a5454186
--- /dev/null
+++ b/public/language/et/notifications.json
@@ -0,0 +1,10 @@
+{
+ "title": "Teated",
+ "no_notifs": "Sul pole uusi teateid",
+ "see_all": "Vaata kõiki teateid",
+ "back_to_home": "Tagasi foorumisse",
+ "outgoing_link": "Väljaminev link",
+ "outgoing_link_message": "Lahkud foorumist",
+ "continue_to": "Jätka",
+ "return_to": "Pöördu tagasi"
+}
\ No newline at end of file
diff --git a/public/language/et/pages.json b/public/language/et/pages.json
new file mode 100644
index 0000000000..ff413c0658
--- /dev/null
+++ b/public/language/et/pages.json
@@ -0,0 +1,15 @@
+{
+ "home": "Avaleht",
+ "unread": "Lugemata teemad",
+ "popular": "Populaarsed teemad",
+ "recent": "Hiljutised teemad",
+ "users": "Registreeritud kasutajad",
+ "notifications": "Teated",
+ "user.edit": "Muudan \"%1\"",
+ "user.following": "Kasutaja %1 jälgib",
+ "user.followers": "Kasutajad, kes jälgivad %1",
+ "user.posts": "Postitused, mis on tehtud kasutaja %1 poolt",
+ "user.topics": "Topics created by %1",
+ "user.favourites": "%1's lemmikud postitused",
+ "user.settings": "Kasutaja sätted"
+}
\ No newline at end of file
diff --git a/public/language/et/recent.json b/public/language/et/recent.json
new file mode 100644
index 0000000000..b39fad1f6a
--- /dev/null
+++ b/public/language/et/recent.json
@@ -0,0 +1,7 @@
+{
+ "title": "Hiljutised",
+ "day": "Päev",
+ "week": "Nädal",
+ "month": "Kuu",
+ "no_recent_topics": "Hetkel ei ole hiljutisi teemasid."
+}
\ No newline at end of file
diff --git a/public/language/et/register.json b/public/language/et/register.json
new file mode 100644
index 0000000000..0305eddc67
--- /dev/null
+++ b/public/language/et/register.json
@@ -0,0 +1,18 @@
+{
+ "register": "Registreeri",
+ "help.email": "Algsättena peidetakse sinu e-mail avalikuse eest.",
+ "help.username_restrictions": "Unikaalne kasutajanimi, mis on %1 - %2 tähemärki pikk. Teised saavad sind postitustes mainida kasutades @kasutajanime.",
+ "help.minimum_password_length": "Sinu parooli pikkus peab olema vähemalt %1 tähemärki pikk.",
+ "email_address": "Emaili aadress",
+ "email_address_placeholder": "Sisesta emaili aadress",
+ "username": "Kasutajanimi",
+ "username_placeholder": "Sisesta kasutajanimi",
+ "password": "Parool",
+ "password_placeholder": "Sisesta parool",
+ "confirm_password": "Kinnita parool",
+ "confirm_password_placeholder": "Kinnita parool",
+ "register_now_button": "Registreeri",
+ "alternative_registration": "Alternatiivne registreerimismeetod",
+ "terms_of_use": "Foorumi reeglid",
+ "agree_to_terms_of_use": "Nõustun foorumi reeglitega"
+}
\ No newline at end of file
diff --git a/public/language/et/reset_password.json b/public/language/et/reset_password.json
new file mode 100644
index 0000000000..c504ed9296
--- /dev/null
+++ b/public/language/et/reset_password.json
@@ -0,0 +1,14 @@
+{
+ "reset_password": "Lähtesta parool",
+ "update_password": "Uuenda parooli",
+ "password_changed.title": "Parool muudetud",
+ "password_changed.message": "
Parool edukalt lähtestatud, palun logi uuesti sisse.", + "wrong_reset_code.title": "Vale kood", + "wrong_reset_code.message": "Sisestatud kood oil vale. Palun proovi uuesti või genereeri uus kood.", + "new_password": "Uus parool", + "repeat_password": "Kinnita parool", + "enter_email": "Palun sisesta oma emaili aadress ja me saadame sulle emaili koos õpetusega, kuidas oma parooli vahetada.", + "enter_email_address": "Sisesta emaili aadress", + "password_reset_sent": "Saadetud", + "invalid_email": "Vigane emaili aadress / emaili aadressi ei ekisteeri!" +} \ No newline at end of file diff --git a/public/language/et/topic.json b/public/language/et/topic.json new file mode 100644 index 0000000000..fc92457e30 --- /dev/null +++ b/public/language/et/topic.json @@ -0,0 +1,93 @@ +{ + "topic": "Teema", + "topics": "Teemad", + "topic_id": "Teema ID", + "topic_id_placeholder": "Sisesta teema ID", + "no_topics_found": "Teemasid ei leitud!", + "no_posts_found": "Postitusi ei leitud!", + "profile": "Profiil", + "posted_by": "Postitatud", + "chat": "Vestlus", + "notify_me": "Saa teateid uutest postitustest selles teemas", + "quote": "Tsiteeri", + "reply": "Vasta", + "edit": "Muuda", + "delete": "Kustuta", + "restore": "Taasta", + "move": "Liiguta", + "fork": "Fork", + "banned": "Bannitud", + "link": "Ühenda", + "share": "Jaga", + "tools": "Tööriistad", + "flag": "Märgista", + "bookmark_instructions": "Vajuta siia, et pöörduda tagasi oma viimasesse asukohta või sulge.", + "flag_title": "Märgista see postitus modereerimiseks", + "flag_confirm": "Oled kindel, et soovid märgistada antud postituse?", + "flag_success": "See posits on nüüd märgistatud modereerimiseks.", + "deleted_message": "Teema kustutati. Ainult kasutajad, kellel on piisavad õigused saavad seda veel näha.", + "following_topic.title": "Jälgid teemat", + "following_topic.message": "Sulle ei edastata enam teateid uutest postitustest kui keegi postitab siia teemasse.", + "not_following_topic.title": "Ei jälgi teemat", + "not_following_topic.message": "Sulle ei edastata enam teateid uutest postitustest siin teemas.", + "login_to_subscribe": "Palun registreeru kasutajaks või logi sisse, et tellida teateid selle postituse kohta.", + "markAsUnreadForAll.success": "Teema märgitud mitte-loetuks kõikidele.", + "watch": "Vaata", + "watch.title": "Saa teateid uutest postitustest siin teemas", + "share_this_post": "Jaga seda postitust", + "thread_tools.title": "Teema tööriistad", + "thread_tools.markAsUnreadForAll": "Märgi mitte-loetuks", + "thread_tools.pin": "Tõsta esile teema", + "thread_tools.unpin": "Märgista teema", + "thread_tools.lock": "Lukusta teema", + "thread_tools.unlock": "Eemalda märgistatud teema", + "thread_tools.move": "Liiguta teema", + "thread_tools.fork": "Fork Topic", + "thread_tools.delete": "Kustuta teema", + "thread_tools.delete_confirm": "Oled kindel, et soovid kustutada antud teema?", + "thread_tools.restore": "Taasta teema", + "thread_tools.restore_confirm": "Oled kindel, et soovid taastada antud teema?", + "post_delete_confirm": "Oled kindel, et soovid kustutada selle postituse?", + "post_restore_confirm": "Oled kindel, et soovid taastada antud postituse?", + "post_delete_error": "Ei saa kahjuks antud postitust kustutada!", + "post_restore_error": "Ei saa kahjuks antud postitust taastada!", + "load_categories": "Laen kategooriaid", + "disabled_categories_note": "Kinnised kategooriad on hallid", + "confirm_move": "Liiguta", + "confirm_fork": "Fork", + "favourite": "Märgi lemmikuks", + "favourites": "Lemmikud ", + "favourites.not_logged_in.title": "Pole sisse logitud", + "favourites.not_logged_in.message": "Palun logi sisse, et märkida see postitus lemmikuks", + "favourites.has_no_favourites": "Sul pole lemmikuid postitusi. Märgi mõned postitused lemmikuks ning need ilmuvad automaatselt siia!", + "vote.not_logged_in.title": "Ei ole sisse logitud", + "vote.not_logged_in.message": "Palun logi sisse, et hääletada", + "vote.cant_vote_self.title": "Vigane hääletus", + "vote.cant_vote_self.message": "Sa ei saa hääletada oma postituse poolt", + "loading_more_posts": "Laen postitusi", + "move_topic": "Liiguta teemat", + "move_post": "Liiguta postitust", + "fork_topic": "Fork Topic", + "topic_will_be_moved_to": "See teema liigutatakse antud kategooriasse", + "fork_topic_instruction": "Vajuta postitustele, mida soovid forkida", + "fork_no_pids": "Sa ei ole postitusi valinud!", + "fork_success": "Edukalt forkisid teema!", + "reputation": "Reputatsioon", + "posts": "Postitused", + "composer.title_placeholder": "Sisesta teema pealkiri siia...", + "composer.write": "Kirjuta", + "composer.preview": "Eelvaade", + "composer.help": "Abi", + "composer.discard": "Katkesta", + "composer.submit": "Postita", + "composer.replying_to": "Vastad", + "composer.new_topic": "Uus teema", + "composer.uploading": "laen üles...", + "composer.thumb_url_label": "Kleebi teema marge.", + "composer.thumb_title": "Lisa märge sellele teemale", + "composer.thumb_url_placeholder": "http://example.com/thumb.png", + "composer.thumb_file_label": "Või lae üles üks fail", + "composer.thumb_remove": "Puhasta väljad", + "composer.drag_and_drop_images": "Lohista pildid siia", + "composer.upload_instructions": "Lae üles pilte lohistades need siia." +} \ No newline at end of file diff --git a/public/language/et/unread.json b/public/language/et/unread.json new file mode 100644 index 0000000000..a8de01c463 --- /dev/null +++ b/public/language/et/unread.json @@ -0,0 +1,6 @@ +{ + "title": "Lugemata", + "no_unread_topics": "Siin ei ole lugemata teemasi.", + "mark_all_read": "Märgi kõik loetuks", + "load_more": "Lae rohkem" +} \ No newline at end of file diff --git a/public/language/et/user.json b/public/language/et/user.json new file mode 100644 index 0000000000..1afe6aef07 --- /dev/null +++ b/public/language/et/user.json @@ -0,0 +1,55 @@ +{ + "banned": "Banned", + "offline": "Väljas", + "username": "Kasutajanimi", + "email": "Email", + "fullname": "Täisnimi", + "website": "Koduleht", + "location": "Asukoht", + "age": "Vanus", + "joined": "Liitunud", + "lastonline": "Viimati online", + "profile": "Profiil", + "profile_views": "Profiili vaatamisi", + "reputation": "Reputatsioon", + "posts": "Postitused", + "favourites": "Lemmikud", + "followers": "Jälgijad", + "following": "Jälgid", + "signature": "Allkiri", + "gravatar": "Gravatar", + "birthday": "Sünnipäev", + "chat": "Vestlus", + "follow": "Jälgi", + "unfollow": "Ära jälgi enam", + "change_picture": "Vaheta pilti", + "edit": "Muuda", + "uploaded_picture": "Üleslaetud pilt", + "upload_new_picture": "Laadi uus pilt", + "current_password": "Praegune parool", + "change_password": "Vaheta parooli", + "change_password_error": "Vigane parool!", + "change_password_error_wrong_current": "Su praegune parool on vale!", + "change_password_error_length": "Parool liiga lühike!", + "change_password_error_match": "Paroolid peavad kattuma!", + "change_password_error_privileges": "Sul pole piisavalt õigusi, et vahetada seda parooli.", + "change_password_success": "Sinu parool on uuendatud!", + "confirm_password": "Kinnita parool", + "password": "Parool", + "upload_picture": "Laadi pilt", + "upload_a_picture": "Lae pilt üles", + "image_spec": "Failid peavad olema PNG, JPG või GIF vormingus.", + "max": "max.", + "settings": "Seaded", + "show_email": "Näita minu emaili", + "has_no_follower": "Sellel kasutajal pole ühtegi jälgijat :(", + "follows_no_one": "See kasutaja ei jälgi kedagi :(", + "has_no_posts": "See kasutaja pole midagi postitanud veel.", + "has_no_topics": "This user didn't post any topics yet.", + "email_hidden": "Peidetud email", + "hidden": "peidetud", + "paginate_description": "Nummerda leheküljed ja postitused ning ära kasuta ''lõputut scrolli''.", + "topics_per_page": "Teemasi ühe lehekülje kohta", + "posts_per_page": "Postitusi ühe lehekülje kohta", + "notification_sounds": "Tee häält, kui saabub teade." +} \ No newline at end of file diff --git a/public/language/et/users.json b/public/language/et/users.json new file mode 100644 index 0000000000..efb7591d41 --- /dev/null +++ b/public/language/et/users.json @@ -0,0 +1,9 @@ +{ + "latest_users": "Hilised kasutajad", + "top_posters": "Top postitajad", + "most_reputation": "Kõige rohkem reputatsiooni", + "online": "Online", + "search": "Otsi", + "enter_username": "Sisesta kasutajanimi, keda soovid otsida", + "load_more": "Lae veel" +} \ No newline at end of file diff --git a/public/language/fa_IR/pages.json b/public/language/fa_IR/pages.json index a3700da360..7a53bc6917 100644 --- a/public/language/fa_IR/pages.json +++ b/public/language/fa_IR/pages.json @@ -9,6 +9,7 @@ "user.following": "%1 کاربر دنبال میکنند", "user.followers": "کاربرانی که %1 را دنبال میکنند", "user.posts": "دیدگاههای %1", + "user.topics": "Topics created by %1", "user.favourites": "دیدگاههای پسندیدهٔ %1", "user.settings": "تنظیمات کاربر" } \ No newline at end of file diff --git a/public/language/fa_IR/topic.json b/public/language/fa_IR/topic.json index 7940969fff..335239cc45 100644 --- a/public/language/fa_IR/topic.json +++ b/public/language/fa_IR/topic.json @@ -1,8 +1,8 @@ { "topic": "جُستار", "topics": "جُستارها", - "topic_id": "Topic ID", - "topic_id_placeholder": "Enter topic ID", + "topic_id": "ID جستار", + "topic_id_placeholder": "ID جستار را بنویسید", "no_topics_found": "هیچ جستاری یافت نشد!", "no_posts_found": "دیدگاهی یافت نشد!", "profile": "نمایه", @@ -23,8 +23,8 @@ "flag": "پرچم", "bookmark_instructions": "برای بازگشت به مکان پیشین اینجا را بفشارید یا برای رد دادن ببندید.", "flag_title": "پرچمگذاری این جستار برای بررسی ناظران", - "flag_confirm": "Are you sure you want to flag this post?", - "flag_success": "This post has been flagged for moderation.", + "flag_confirm": "آیا مطمئنید که میخواهید روی این دیدگاه پرچم بگذارید.", + "flag_success": "این جستار برای بررسی ناظران پرچم گذاشته شد.", "deleted_message": "این جستار پاک شده است. تنها کاربران دارای پروانههای مدیریت جستار میتوانند آن را ببینند.", "following_topic.title": "جستار را دنبال میکنید", "following_topic.message": "از این پس اگر کسی در این جستار دیدگاه بگذارد، شما آگاه خواهید شد.", @@ -44,7 +44,13 @@ "thread_tools.move": "جابجا کردن جستار", "thread_tools.fork": "شاخه ساختن از جستار", "thread_tools.delete": "پاک کردن جستار", + "thread_tools.delete_confirm": "آیا از پاک کردن این جستار اطمینان دارید؟", "thread_tools.restore": "برگرداندن جستار", + "thread_tools.restore_confirm": "آیا از بازگردانی این جستار اطمینان دارید؟", + "post_delete_confirm": "آیا از پاک کردن این دیدگاه اطمینان دارید؟", + "post_restore_confirm": "آیا از بازگردانی این دیدگاه اطمینان دارید؟", + "post_delete_error": "ناتوانی در پاک کردن این دیدگاه!", + "post_restore_error": "ناتوانی در بازگردانی این دیدگاه!", "load_categories": "بارگذاری دستهها", "disabled_categories_note": "دستههای از کار افتاده به رنگ خاکستری در میآیند", "confirm_move": "جابهجا کردن", diff --git a/public/language/fa_IR/user.json b/public/language/fa_IR/user.json index b55c893ae0..e258074a84 100644 --- a/public/language/fa_IR/user.json +++ b/public/language/fa_IR/user.json @@ -5,7 +5,6 @@ "email": "رایانامه", "fullname": "نام کامل", "website": "تارنما", - "user:website_placeholder": "http://...", "location": "محل سکونت", "age": "سن", "joined": "عضو شده", @@ -20,7 +19,6 @@ "signature": "امضا", "gravatar": "گراواتار", "birthday": "روز تولد", - "birthday_placeholder": "mm/dd/yyyy", "chat": "گفتگو", "follow": "دنبال کن", "unfollow": "دنبال نکن", @@ -30,12 +28,12 @@ "upload_new_picture": "بارگذاری تصویر تازه", "current_password": "گذرواژه کنونی", "change_password": "تغیر گذرواژه", - "change_password_error": "Invalid Password!", - "change_password_error_wrong_current": "Your current password is not correct!", - "change_password_error_length": "Password too short!", - "change_password_error_match": "Passwords must match!", - "change_password_error_privileges": "You are not have the rights to change this password.", - "change_password_success": "Your password is updated!", + "change_password_error": "گذرواژهٔ نامعتبر!", + "change_password_error_wrong_current": "این گذرواژهٔ شما نادرست است.", + "change_password_error_length": "گذرواژه خیلی کوتاه است!", + "change_password_error_match": "گذرواژهها باید یکسان باشند.", + "change_password_error_privileges": "شما پروانهٔ تغییر این گذرواژه را ندارید.", + "change_password_success": "گذرواژهتان تازه شد.", "confirm_password": "تکرار گذرواژه", "password": "گذرواژه", "upload_picture": "بارگذاری تصویر", @@ -47,6 +45,7 @@ "has_no_follower": "این کاربر هیچ دنبالکنندهای ندارد :(", "follows_no_one": "این کاربر هیچ کسی را دنبال نمیکند :(", "has_no_posts": "این کاربر هنوز هیچ دیدگاهی نگذاشته است.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "رایانامه پنهان شده", "hidden": "پنهان", "paginate_description": "محدود کردن شمار جستارها و دیدگاهها در هر برگه به جای مرور بیپایان برگهها", diff --git a/public/language/fi/pages.json b/public/language/fi/pages.json index aaf5763470..3b606263af 100644 --- a/public/language/fi/pages.json +++ b/public/language/fi/pages.json @@ -9,6 +9,7 @@ "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.topics": "Topics created by %1", "user.favourites": "Käyttäjän %1 suosikkiviestit", "user.settings": "Käyttäjän asetukset" } \ No newline at end of file diff --git a/public/language/fi/topic.json b/public/language/fi/topic.json index bf45e30b8b..2e5a7eb3eb 100644 --- a/public/language/fi/topic.json +++ b/public/language/fi/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Siirrä aihe", "thread_tools.fork": "Haaroita aihe", "thread_tools.delete": "Poista aihe", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Palauta aihe", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Ladataan aihealueita", "disabled_categories_note": "Käytöstä poistetut aihealueet ovat harmaina", "confirm_move": "Siirrä", diff --git a/public/language/fi/user.json b/public/language/fi/user.json index 5e837df36c..f683ae923f 100644 --- a/public/language/fi/user.json +++ b/public/language/fi/user.json @@ -5,7 +5,6 @@ "email": "Sähköposti", "fullname": "Koko nimi", "website": "Kotisivu", - "user:website_placeholder": "http://...", "location": "Sijainti", "age": "Ikä", "joined": "Liittynyt", @@ -20,7 +19,6 @@ "signature": "Allekirjoitus", "gravatar": "Gravatar", "birthday": "Syntymäpäivä", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Keskustele", "follow": "Seuraa", "unfollow": "Älä seuraa", @@ -47,6 +45,7 @@ "has_no_follower": "Kukaan ei seuraa tätä käyttäjää :(", "follows_no_one": "Tämä käyttäjä ei seuraa ketään :(", "has_no_posts": "Tämä käyttäjä ei ole kirjoittanut vielä mitään.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Sähköposti piilotettu", "hidden": "piilotettu", "paginate_description": "Sivuta aiheet ja viestit loputtoman vierittämisen sijaan.", diff --git a/public/language/fr/pages.json b/public/language/fr/pages.json index b30a1c004a..d562c39d0b 100644 --- a/public/language/fr/pages.json +++ b/public/language/fr/pages.json @@ -9,6 +9,7 @@ "user.following": "Personnes que %1 suit", "user.followers": "Personnes qui suivent %1", "user.posts": "Message écrit par %1", + "user.topics": "Topics created by %1", "user.favourites": "Messages favoris de %1", "user.settings": "Préférences Utilisateur" } \ No newline at end of file diff --git a/public/language/fr/topic.json b/public/language/fr/topic.json index e9866ecb65..cce5359d19 100644 --- a/public/language/fr/topic.json +++ b/public/language/fr/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Déplacer le sujet", "thread_tools.fork": "Scinder le sujet", "thread_tools.delete": "Supprimer le sujet", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Restaurer le sujet", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Chargement des Categories", "disabled_categories_note": "Les catégories désactivées sont grisées", "confirm_move": "Déplacer", diff --git a/public/language/fr/user.json b/public/language/fr/user.json index 3c2327824d..2640dd40d2 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "Nom", "website": "Site Web", - "user:website_placeholder": "http://...", "location": "Emplacement", "age": "Age", "joined": "Inscrit", @@ -20,7 +19,6 @@ "signature": "Signature", "gravatar": "Gravatar", "birthday": "Anniversaire", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "S'abonner", "unfollow": "Se désabonner", @@ -30,12 +28,12 @@ "upload_new_picture": "Uploader une nouvelle image", "current_password": "Mot de passe actuel", "change_password": "Changer le mot de passe", - "change_password_error": "Invalid Password!", - "change_password_error_wrong_current": "Your current password is not correct!", - "change_password_error_length": "Password too short!", - "change_password_error_match": "Passwords must match!", - "change_password_error_privileges": "You are not have the rights to change this password.", - "change_password_success": "Your password is updated!", + "change_password_error": "Mot de Passe Invalide!", + "change_password_error_wrong_current": "Votre mot de passe est incorrect!", + "change_password_error_length": "Mot de Passe trop court!", + "change_password_error_match": "Les Mots de Passe doivent être identiques!", + "change_password_error_privileges": "Vous n'avez pas les autorisations pour modifier ce mot de passe.", + "change_password_success": "Votre mot de passe a été mis à jour.", "confirm_password": "Confirmer le mot de passe", "password": "Mot de passe", "upload_picture": "Uploader une image", @@ -47,6 +45,7 @@ "has_no_follower": "Cet utilisateur n'a aucun suiveur :(", "follows_no_one": "Cet utilisateur ne suit personne :(", "has_no_posts": "Ce membre n'a rien posté pour le moment", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Email masqué", "hidden": "masqué", "paginate_description": "Utiliser la pagination de sujets et messages au lieu du défilement infini.", diff --git a/public/language/he/pages.json b/public/language/he/pages.json index 44b12272f4..84e79442a4 100644 --- a/public/language/he/pages.json +++ b/public/language/he/pages.json @@ -9,6 +9,7 @@ "user.following": "אנשים ש%1 עוקב אחריהם", "user.followers": "אנשים שעוקבים אחרי %1", "user.posts": "Posts made by %1", + "user.topics": "Topics created by %1", "user.favourites": "הפוסטים המועדפים על %1", "user.settings": "הגדרות משתמש" } \ No newline at end of file diff --git a/public/language/he/topic.json b/public/language/he/topic.json index ff18a56ca4..65ba5151ea 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "הזז נושא", "thread_tools.fork": "שכפל נושא", "thread_tools.delete": "מחק נושא", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "שחזר נושא", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "טוען קטגוריות", "disabled_categories_note": "קטגוריות מבוטלות צבועות באפור", "confirm_move": "הזז", diff --git a/public/language/he/user.json b/public/language/he/user.json index 3f5a5e5ef7..4dcaf6c6c2 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -5,7 +5,6 @@ "email": "כתובת אימייל", "fullname": "שם מלא", "website": "אתר", - "user:website_placeholder": "http://...", "location": "מיקום", "age": "גיל", "joined": "הצטרף", @@ -20,7 +19,6 @@ "signature": "חתימה", "gravatar": "אווטר", "birthday": "יום הולדת", - "birthday_placeholder": "mm/dd/yyyy", "chat": "צ'אט", "follow": "עקוב", "unfollow": "הפסק לעקוב", @@ -47,6 +45,7 @@ "has_no_follower": "למשתמש זה אין עוקבים :(", "follows_no_one": "משתמש זה אינו עוקב אחרי אחרים :(", "has_no_posts": "המשתמש הזה עוד לא פרסם כלום.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "כתובת אימייל מוסתרת", "hidden": "מוסתר", "paginate_description": "צור עימוד לנושאים במקום לטעון את כל התוכן בעמוד אחד.", diff --git a/public/language/hu/pages.json b/public/language/hu/pages.json index f9237f1e8b..5ea9bdd9a7 100644 --- a/public/language/hu/pages.json +++ b/public/language/hu/pages.json @@ -9,6 +9,7 @@ "user.following": "Tagok akiket %1 követ", "user.followers": "Tagok akik követik %1 -t", "user.posts": "Hozzászólások által %1", + "user.topics": "Topics created by %1", "user.favourites": "%1 Kedvenc Hozzászólásai", "user.settings": "Felhasználói Beállítások" } \ No newline at end of file diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json index d09c983559..b1897d1f8d 100644 --- a/public/language/hu/topic.json +++ b/public/language/hu/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Topik mozgatása", "thread_tools.fork": "Topik szétszedése", "thread_tools.delete": "Topik törlése", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Topik visszaállítása", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Kategóriák betöltése", "disabled_categories_note": "Kikapcsolt kategóriák kiszürkülve", "confirm_move": "Áthelyezés", diff --git a/public/language/hu/user.json b/public/language/hu/user.json index 25e1f91cf2..53e5700aaa 100644 --- a/public/language/hu/user.json +++ b/public/language/hu/user.json @@ -5,7 +5,6 @@ "email": "E-mail", "fullname": "Teljes Név", "website": "Weboldal", - "user:website_placeholder": "http://...", "location": "Lakhely", "age": "Kor", "joined": "Csatlakozott", @@ -20,7 +19,6 @@ "signature": "Aláírás", "gravatar": "Gravatar", "birthday": "Szülinap", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "Követés", "unfollow": "Nem követem", @@ -47,6 +45,7 @@ "has_no_follower": "Ezt a felhasználót nem követi senki :(", "follows_no_one": "Ez a felhasználó nem követ senkit :(", "has_no_posts": "Ennek a felhasználónak még nincsen hozzászólása.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "E-mail rejtett", "hidden": "rejtett", "paginate_description": "Oldalszámok használata a témáknál és hozzászólásoknál a végtelen görgetés helyett.", diff --git a/public/language/it/pages.json b/public/language/it/pages.json index bfd9d4b813..2952c30df6 100644 --- a/public/language/it/pages.json +++ b/public/language/it/pages.json @@ -9,6 +9,7 @@ "user.following": "%1 Persone seguono", "user.followers": "Persone che seguono %1", "user.posts": "Post inviati da %1", + "user.topics": "Topics created by %1", "user.favourites": "Post Favoriti di %1", "user.settings": "Impostazioni Utente" } \ No newline at end of file diff --git a/public/language/it/topic.json b/public/language/it/topic.json index 48f91f31e9..cb1ce7ae07 100644 --- a/public/language/it/topic.json +++ b/public/language/it/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Sposta Discussione", "thread_tools.fork": "Dividi Discussione", "thread_tools.delete": "Elimina Discussione", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Ripristina Discussione", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Caricamento Categorie", "disabled_categories_note": "Le Categorie disabilitate sono in grigio", "confirm_move": "Sposta", diff --git a/public/language/it/user.json b/public/language/it/user.json index dd6f7a3c7d..334278e73b 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "Nome e Cognome", "website": "Sito Internet", - "user:website_placeholder": "http://...", "location": "Località", "age": "Età", "joined": "Iscrizione", @@ -20,7 +19,6 @@ "signature": "Firma", "gravatar": "Gravatar", "birthday": "Data di nascita", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "Segui", "unfollow": "Smetti di seguire", @@ -47,6 +45,7 @@ "has_no_follower": "Questo utente non è seguito da nessuno :(", "follows_no_one": "Questo utente non segue nessuno :(", "has_no_posts": "Questo utente non ha ancora postato nulla.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Email Nascosta", "hidden": "nascosta", "paginate_description": "Dividi argomenti e post in pagine anziché usare lo scroll infinito.", diff --git a/public/language/nb/pages.json b/public/language/nb/pages.json index 6a23fa2104..0e42905334 100644 --- a/public/language/nb/pages.json +++ b/public/language/nb/pages.json @@ -9,6 +9,7 @@ "user.following": "Personer %1 følger", "user.followers": "Personer som følger %1", "user.posts": "Innlegg laget av %1", + "user.topics": "Topics created by %1", "user.favourites": "%1 sine favoritt-innlegg", "user.settings": "Brukerinnstillinger" } \ No newline at end of file diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json index 9ad1192b82..b6bcd76e39 100644 --- a/public/language/nb/topic.json +++ b/public/language/nb/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Flytt tråd", "thread_tools.fork": "Forgren tråd", "thread_tools.delete": "Slett tråd", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Gjenopprett tråd", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Laster kategorier", "disabled_categories_note": "Deaktiverte kategorier er grået ut", "confirm_move": "Flytt", diff --git a/public/language/nb/user.json b/public/language/nb/user.json index 64609f2d5a..619ddc0ddb 100644 --- a/public/language/nb/user.json +++ b/public/language/nb/user.json @@ -5,7 +5,6 @@ "email": "E-post", "fullname": "Fullt navn", "website": "Nettsted", - "user:website_placeholder": "http://...", "location": "Plassering", "age": "Alder", "joined": "Ble med", @@ -20,7 +19,6 @@ "signature": "Signatur", "gravatar": "Gravatar", "birthday": "Bursdag", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chatt", "follow": "Følg", "unfollow": "Avfølg", @@ -47,6 +45,7 @@ "has_no_follower": "Denne brukeren har ingen følgere :(", "follows_no_one": "Denne brukeren følger ingen :(", "has_no_posts": "Denne brukeren har ikke skrevet noe enda.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "E-post skjult", "hidden": "skjult", "paginate_description": "Paginer tråder og innlegg istedet for å bruke uendelig skrolling.", diff --git a/public/language/nl/pages.json b/public/language/nl/pages.json index 70897ad6f4..c1e46c21a6 100644 --- a/public/language/nl/pages.json +++ b/public/language/nl/pages.json @@ -9,6 +9,7 @@ "user.following": "Mensen %1 Volgt", "user.followers": "Mensen die %1 Volgen", "user.posts": "Berichten geplaatst door %1", + "user.topics": "Topics created by %1", "user.favourites": "%1's Favoriete Berichten", "user.settings": "Gebruikersinstellingen" } \ No newline at end of file diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json index 491e4d11a3..0354b30e28 100644 --- a/public/language/nl/topic.json +++ b/public/language/nl/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Onderwerp Verplaatsen", "thread_tools.fork": "Onderwerp Forken", "thread_tools.delete": "Onderwerp Verwijderen", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Onderwerp Herstellen", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Categorieën Laden", "disabled_categories_note": "Uitgeschakelde Categorieën zijn grijs", "confirm_move": "Verplaatsen", diff --git a/public/language/nl/user.json b/public/language/nl/user.json index fe1c6e1c22..a44699785e 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "Volledige Naam", "website": "Website", - "user:website_placeholder": "http://...", "location": "Locatie", "age": "Leeftijd", "joined": "Geregistreerd", @@ -20,7 +19,6 @@ "signature": "Handtekening", "gravatar": "Gravatar", "birthday": "Verjaardag", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "Volgen", "unfollow": "Ontvolgen", @@ -47,6 +45,7 @@ "has_no_follower": "Deze gebruiker heeft geen volgers :(", "follows_no_one": "Deze gebruiker volgt niemand :(", "has_no_posts": "Deze gebruiker heeft nog geen berichten geplaatst", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Email Verborgen", "hidden": "verborgen", "paginate_description": "Blader door onderwerpen en berichten in plaats van oneindig scrollen.", diff --git a/public/language/pl/pages.json b/public/language/pl/pages.json index 483fb2d6ec..c18c45e0c5 100644 --- a/public/language/pl/pages.json +++ b/public/language/pl/pages.json @@ -8,7 +8,8 @@ "user.edit": "Edytowanie \"%1\"", "user.following": "Obserwowani przez %1", "user.followers": "Obserwujący %1", - "user.posts": "Posts made by %1", + "user.posts": "Posty napisane przez %1", + "user.topics": "Topics created by %1", "user.favourites": "Ulubione posty %1", "user.settings": "Ustawienia użytkownika" } \ No newline at end of file diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json index bc3f46fb39..7bf49001b4 100644 --- a/public/language/pl/topic.json +++ b/public/language/pl/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Przenieś wątek", "thread_tools.fork": "Skopiuj wątek", "thread_tools.delete": "Usuń wątek", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Przywróć wątek", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Ładowanie kategorii", "disabled_categories_note": "Zablokowane kategorie zostały wyszarzone.", "confirm_move": "Przenieś", diff --git a/public/language/pl/user.json b/public/language/pl/user.json index 408246fdcb..35988684df 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -5,7 +5,6 @@ "email": "Adres e-mail", "fullname": "Pełna nazwa", "website": "Strona WWW", - "user:website_placeholder": "http://...", "location": "Położenie", "age": "Wiek", "joined": "Dołączono", @@ -20,7 +19,6 @@ "signature": "Sygnatura", "gravatar": "Gravatar", "birthday": "Urodziny", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Rozmawiaj", "follow": "Śledź", "unfollow": "Przestań śledzić", @@ -30,12 +28,12 @@ "upload_new_picture": "Prześlij nowe zdjęcie", "current_password": "Obecne hasło", "change_password": "Zmień hasło", - "change_password_error": "Invalid Password!", - "change_password_error_wrong_current": "Your current password is not correct!", - "change_password_error_length": "Password too short!", - "change_password_error_match": "Passwords must match!", - "change_password_error_privileges": "You are not have the rights to change this password.", - "change_password_success": "Your password is updated!", + "change_password_error": "Błędne hasło!", + "change_password_error_wrong_current": "Twoje aktualne hasło nie jest poprawne!", + "change_password_error_length": "Hasło jest za krótkie!", + "change_password_error_match": "Hasła muszą pasować!", + "change_password_error_privileges": "Nie masz uprawnień do zmiany tego hasła.", + "change_password_success": "Twoje hasło jest zaktualizowane!", "confirm_password": "Potwierdź hasło", "password": "Hasło", "upload_picture": "Prześlij zdjęcie", @@ -47,6 +45,7 @@ "has_no_follower": "Ten użytkownik nie ma jeszcze żadnych obserwujących", "follows_no_one": "Użytkownik jeszcze nikogo nie obsweruje.", "has_no_posts": "Użytkownik nie napisał jeszcze żadnych postów.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Adres e-mail ukryty", "hidden": "ukryty", "paginate_description": "Użyj klasycznego trybu paginacji zamiast nieskończonego przewijania.", diff --git a/public/language/pt_BR/pages.json b/public/language/pt_BR/pages.json index 883b62d163..0fde4935c7 100644 --- a/public/language/pt_BR/pages.json +++ b/public/language/pt_BR/pages.json @@ -9,6 +9,7 @@ "user.following": "Pessoas %1 Seguindo", "user.followers": "Pessoas que seguem %1", "user.posts": "Post feito por %1", + "user.topics": "Topics created by %1", "user.favourites": "%1's Posts Favoritos", "user.settings": "Configurações de Usuário" } \ No newline at end of file diff --git a/public/language/pt_BR/topic.json b/public/language/pt_BR/topic.json index 58c3c082dc..5da0af9fa2 100644 --- a/public/language/pt_BR/topic.json +++ b/public/language/pt_BR/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Mover Tópico", "thread_tools.fork": "Fork Tópico", "thread_tools.delete": "Deletar Tópico", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Restaurar Tópico", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Carregando Categorias", "disabled_categories_note": "Categorias desabilitadas estão em cinza", "confirm_move": "Mover", diff --git a/public/language/pt_BR/user.json b/public/language/pt_BR/user.json index 70bc6b34c7..4da6cff1ad 100644 --- a/public/language/pt_BR/user.json +++ b/public/language/pt_BR/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "Nome Completo", "website": "Website", - "user:website_placeholder": "http://...", "location": "Localização", "age": "Idade", "joined": "Cadastrou", @@ -20,7 +19,6 @@ "signature": "Assinatura", "gravatar": "Gravatar", "birthday": "Aniversário", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Bate Papo", "follow": "Seguir", "unfollow": "Deixar de Seguir", @@ -47,6 +45,7 @@ "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": "Este usuário não postou nada ainda.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Email Escondido", "hidden": "Escondido", "paginate_description": "Paginação de tópicos e posts ao invés de usar \"scroll infinito\"", diff --git a/public/language/ru/pages.json b/public/language/ru/pages.json index 48a0755e63..c5543f1897 100644 --- a/public/language/ru/pages.json +++ b/public/language/ru/pages.json @@ -9,6 +9,7 @@ "user.following": "%1 читает", "user.followers": "Читают %1", "user.posts": "Posts made by %1", + "user.topics": "Topics created by %1", "user.favourites": "Избранные сообщения %1", "user.settings": "Настройки" } \ No newline at end of file diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json index dcf40c9c5c..537690e410 100644 --- a/public/language/ru/topic.json +++ b/public/language/ru/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Move Topic", "thread_tools.fork": "Fork Topic", "thread_tools.delete": "Delete Topic", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Restore Topic", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Загружаем Категории", "disabled_categories_note": "Отключенные категории затемненны", "confirm_move": "Перенести", diff --git a/public/language/ru/user.json b/public/language/ru/user.json index 621497a4af..e5f37019f4 100644 --- a/public/language/ru/user.json +++ b/public/language/ru/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "Полное имя", "website": "Сайт", - "user:website_placeholder": "http://...", "location": "Откуда", "age": "Возраст", "joined": "Зарегистрирован", @@ -20,7 +19,6 @@ "signature": "Подпись", "gravatar": "Gravatar", "birthday": "День рождения", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "Follow", "unfollow": "Unfollow", @@ -47,6 +45,7 @@ "has_no_follower": "Этого пользователя никто не читает :(", "follows_no_one": "Этот пользователь никого не читает :(", "has_no_posts": "This user didn't post anything yet.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Email Скрыт", "hidden": "скрыто", "paginate_description": "Paginate topics and posts instead of using infinite scroll.", diff --git a/public/language/sc/pages.json b/public/language/sc/pages.json index 083212dd7e..d64f46318e 100644 --- a/public/language/sc/pages.json +++ b/public/language/sc/pages.json @@ -9,6 +9,7 @@ "user.following": "Gente chi %1 Sighit", "user.followers": "Gente chi Sighit %1", "user.posts": "Arresonos fatos dae %1", + "user.topics": "Topics created by %1", "user.favourites": "Arresonos Preferidos de %1", "user.settings": "Sèberos de Impitadore" } \ No newline at end of file diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json index db30a7780b..bd1e186096 100644 --- a/public/language/sc/topic.json +++ b/public/language/sc/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Move Arresonada", "thread_tools.fork": "Partzi Arresonada", "thread_tools.delete": "Cantzella Arresonada", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Torra a s'Arresonada Allogada", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Carrighende Crezes", "disabled_categories_note": "Is Crezes Disativadas sunt postas in colore de chìghine", "confirm_move": "Move", diff --git a/public/language/sc/user.json b/public/language/sc/user.json index 46d180e414..6aac68292e 100644 --- a/public/language/sc/user.json +++ b/public/language/sc/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "Nùmene e Sambenadu", "website": "Giassu web", - "user:website_placeholder": "http://...", "location": "Logu", "age": "Edade", "joined": "intradu", @@ -20,7 +19,6 @@ "signature": "Firma", "gravatar": "Gravatas", "birthday": "Cumpleannu", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Tzarra", "follow": "Sighi", "unfollow": "Non sighes prus", @@ -47,6 +45,7 @@ "has_no_follower": "Custu impitadore non tenet perunu sighidore :(", "follows_no_one": "Custu impitadore no est sighende nissunu :(", "has_no_posts": "Custu impitadore no at ancora publicadu nudda.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Email Cuada", "hidden": "cuadu", "paginate_description": "Partzi is arresonadas e arresonos in pàginas a su postu de impreare su iscorrimentu infinidu.", diff --git a/public/language/sk/pages.json b/public/language/sk/pages.json index 22de254a9c..62997c0ffa 100644 --- a/public/language/sk/pages.json +++ b/public/language/sk/pages.json @@ -8,7 +8,8 @@ "user.edit": "Editing \"%1\"", "user.following": "People %1 Follows", "user.followers": "People who Follow %1", - "user.posts": "Posts made by %1", + "user.posts": "Príspevky od %1", + "user.topics": "Topics created by %1", "user.favourites": "%1's Favourite Posts", "user.settings": "User Settings" } \ No newline at end of file diff --git a/public/language/sk/topic.json b/public/language/sk/topic.json index 0a12b11875..184d6c06d4 100644 --- a/public/language/sk/topic.json +++ b/public/language/sk/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Presunúť tému", "thread_tools.fork": "Rozvetviť tému", "thread_tools.delete": "Vymazať tému", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Vrátiť tému", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Načítanie kategórií", "disabled_categories_note": "Vypnuté (disabled) kategorie sú šedé.", "confirm_move": "Presunúť", diff --git a/public/language/sk/user.json b/public/language/sk/user.json index e2113fbe3d..520fd6b7ea 100644 --- a/public/language/sk/user.json +++ b/public/language/sk/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "Meno a priezvisko", "website": "Webová stránka", - "user:website_placeholder": "http://...", "location": "Poloha", "age": "Vek", "joined": "Registrovaný", @@ -20,7 +19,6 @@ "signature": "Podpis", "gravatar": "Gravatar", "birthday": "Dátum narodenia", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "Nasleduj", "unfollow": "Nenasledovať", @@ -47,6 +45,7 @@ "has_no_follower": "Tohoto užívatela nikto nesleduje :(", "follows_no_one": "Tento užívateľ nikoho nesleduje :(", "has_no_posts": "Tento používateľ ešte nespravil príspevok", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Skrytý email", "hidden": "skrytý", "paginate_description": "Stránkuj témy a príspevky miesto používania nekonečného posúvania.", diff --git a/public/language/sv/category.json b/public/language/sv/category.json index f3e745d38b..d26e2e5db1 100644 --- a/public/language/sv/category.json +++ b/public/language/sv/category.json @@ -8,5 +8,5 @@ "no_replies": "Ingen har svarat", "replied": "svarade", "last_edited_by": "senaste ändrad av", - "share_this_category": "Share this category" + "share_this_category": "Dela den här kategorin" } \ No newline at end of file diff --git a/public/language/sv/global.json b/public/language/sv/global.json index 513d954afd..aaa8e317c9 100644 --- a/public/language/sv/global.json +++ b/public/language/sv/global.json @@ -42,8 +42,8 @@ "views": "Visningar", "posted": "svarade", "in": "i", - "norecentposts": "No Recent Posts", - "norecenttopics": "No Recent Topics", + "norecentposts": "Inga nya inlägg", + "norecenttopics": "Inga nya ämnen", "recentposts": "Senaste ämnena", "recentips": "Nyligen inloggade IPn", "online": "Online", @@ -51,5 +51,5 @@ "dnd": "Stör ej", "invisible": "Osynlig", "offline": "Offline", - "privacy": "Privacy" + "privacy": "Integritet" } \ No newline at end of file diff --git a/public/language/sv/login.json b/public/language/sv/login.json index e1259f230b..2586da7f8c 100644 --- a/public/language/sv/login.json +++ b/public/language/sv/login.json @@ -1,6 +1,6 @@ { "login": "Logga in", - "username": "Username / Email", + "username": "Användarnamn eller epostadress", "password": "Lösenord", "remember_me": "Kom ihåg mig?", "forgot_password": "Glömt lösenord?", diff --git a/public/language/sv/pages.json b/public/language/sv/pages.json index 815fc336dd..c7de9749f0 100644 --- a/public/language/sv/pages.json +++ b/public/language/sv/pages.json @@ -9,6 +9,7 @@ "user.following": "Personer %1 Följer", "user.followers": "Personer som följer %1", "user.posts": "Inlägg skapat av %1", + "user.topics": "Topics created by %1", "user.favourites": "%1's favorit-inlägg", "user.settings": "Avnändarinställningar" } \ No newline at end of file diff --git a/public/language/sv/reset_password.json b/public/language/sv/reset_password.json index 4b1b359450..03682d812e 100644 --- a/public/language/sv/reset_password.json +++ b/public/language/sv/reset_password.json @@ -8,7 +8,7 @@ "new_password": "Nytt lösenord", "repeat_password": "Bekräfta lösenord", "enter_email": "Var god fyll i din epost-adress så får du snart en epost med instruktioner hur du återsätller ditt konto.", - "enter_email_address": "Enter Email Address", + "enter_email_address": "Skriv in epostadress", "password_reset_sent": "Lösenordsåterställning skickad", "invalid_email": "Felaktig epost / Epost finns inte!" } \ No newline at end of file diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json index e93ff486f2..f7d8eaefb6 100644 --- a/public/language/sv/topic.json +++ b/public/language/sv/topic.json @@ -1,8 +1,8 @@ { "topic": "Ämne", "topics": "Ämnen", - "topic_id": "Topic ID", - "topic_id_placeholder": "Enter topic ID", + "topic_id": "ID för ämne", + "topic_id_placeholder": "Skriv in ID för ämne", "no_topics_found": "Inga ämnen hittades!", "no_posts_found": "Inga inlägg hittades!", "profile": "Profil", @@ -23,8 +23,8 @@ "flag": "Rapportera", "bookmark_instructions": "Klicka här för att återgå till den senaste positionen eller stäng för att kasta.", "flag_title": "Rapportera detta inlägg för granskning", - "flag_confirm": "Are you sure you want to flag this post?", - "flag_success": "This post has been flagged for moderation.", + "flag_confirm": "Är du säker på att du vill flagga det här inlägget?", + "flag_success": "Det här inlägget har flaggats för moderering.", "deleted_message": "Denna tråd har tagits bort. Endast användare med administrations-rättigheter kan se den.", "following_topic.title": "Följer ämne", "following_topic.message": "Du kommer nu få notiser när någon gör inlägg i detta ämne.", @@ -33,7 +33,7 @@ "login_to_subscribe": "Var god registrera eller logga in för att kunna prenumerera på detta ämne.", "markAsUnreadForAll.success": "Ämne markerat som oläst av alla.", "watch": "Följ", - "watch.title": "Be notified of new replies in this topic", + "watch.title": "Få notis om nya svar till det här ämnet", "share_this_post": "Dela detta inlägg", "thread_tools.title": "Trådverktyg", "thread_tools.markAsUnreadForAll": "Markera som oläst", @@ -44,7 +44,13 @@ "thread_tools.move": "Flytta ämne", "thread_tools.fork": "Grena ämne", "thread_tools.delete": "Ta bort ämne", + "thread_tools.delete_confirm": "Är du säker på att du vill ta bort den här tråden?", "thread_tools.restore": "Återställ ämne", + "thread_tools.restore_confirm": "Är du säker på att du vill återställa den här tråden?", + "post_delete_confirm": "Är du säker på att du vill ta bort det här inlägget?", + "post_restore_confirm": "Är du säker på att du vill återställa det här inlägget?", + "post_delete_error": "Kunde inte ta bort det här inlägget.", + "post_restore_error": "Kunde inte återställa det här inlägget.", "load_categories": "Laddar kategorier", "disabled_categories_note": "Inaktiverade kategorier är utgråade", "confirm_move": "Flytta", diff --git a/public/language/sv/user.json b/public/language/sv/user.json index ad69e3e0d1..b87aa02e3b 100644 --- a/public/language/sv/user.json +++ b/public/language/sv/user.json @@ -5,7 +5,6 @@ "email": "Epost", "fullname": "Hela namnet", "website": "Webbsida", - "user:website_placeholder": "http://...", "location": "Plats", "age": "Ålder", "joined": "Gick med", @@ -20,7 +19,6 @@ "signature": "Signatur", "gravatar": "Gravatar", "birthday": "Födelsedag", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chatta", "follow": "Följ", "unfollow": "Sluta följ", @@ -30,27 +28,28 @@ "upload_new_picture": "Ladda upp ny bild", "current_password": "Nuvarande lösenord", "change_password": "Ändra lösenord", - "change_password_error": "Invalid Password!", - "change_password_error_wrong_current": "Your current password is not correct!", - "change_password_error_length": "Password too short!", - "change_password_error_match": "Passwords must match!", - "change_password_error_privileges": "You are not have the rights to change this password.", - "change_password_success": "Your password is updated!", + "change_password_error": "Ogiltigt lösenord.", + "change_password_error_wrong_current": "Ditt nuvarande lösenord är inte korrekt.", + "change_password_error_length": "Lösenordet är för kort.", + "change_password_error_match": "Lösenorden måste stämma överens.", + "change_password_error_privileges": "Du har inte behörighet att ändra det här lösenordet.", + "change_password_success": "Ditt lösenord är uppdaterat.", "confirm_password": "Bekräfta lösenord", "password": "Lösenord", "upload_picture": "Ladda upp bild", "upload_a_picture": "Ladda upp en bild", "image_spec": "Du får bara ladda upp PNG, JPG eller GIF-filer", - "max": "max.", + "max": "max", "settings": "Inställningar", "show_email": "Visa min epost", "has_no_follower": "Denna användare har inga följare :(", "follows_no_one": "Denna användare följer ingen :(", "has_no_posts": "Denna användare har inte gjort några inlägg än.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "Epost dold", "hidden": "dold", "paginate_description": "Gör så att ämnen och inlägg visas som sidor istället för oändlig scroll.", "topics_per_page": "Ämnen per sida", "posts_per_page": "Inlägg per sida", - "notification_sounds": "Play a sound when you receive a notification." + "notification_sounds": "Spela ett ljud när du får en notis." } \ No newline at end of file diff --git a/public/language/th/pages.json b/public/language/th/pages.json index e3645a6738..8b031c9dec 100644 --- a/public/language/th/pages.json +++ b/public/language/th/pages.json @@ -9,6 +9,7 @@ "user.following": "ผู้ใช้ที่ %1 ติดตาม", "user.followers": "ผู้ใช้ที่ติดตาม %1", "user.posts": "กระทู้โดย %1", + "user.topics": "Topics created by %1", "user.favourites": "กระทู้ที่ %1 ชอบ", "user.settings": "ตั้งค่าผู้ใช้" } \ No newline at end of file diff --git a/public/language/th/topic.json b/public/language/th/topic.json index acd99b91df..4e095eba35 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "ย้ายกระทู้", "thread_tools.fork": "แยกกระทู้", "thread_tools.delete": "ลบกระทู้", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "กู้กระทู้", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "กำลังโหลดหมวดหมู่", "disabled_categories_note": "หมวดหมู่ที่ปิดใช้งานจะเป็นสีเทา", "confirm_move": "ย้าย", diff --git a/public/language/th/user.json b/public/language/th/user.json index cfbf607bc8..7d9f4c81ff 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -5,7 +5,6 @@ "email": "อีเมล์", "fullname": "ชื่อเต็ม", "website": "เว็บไซต์", - "user:website_placeholder": "http://...", "location": "สถานที่", "age": "อายุ", "joined": "เข้าร่วม", @@ -20,7 +19,6 @@ "signature": "ลายเซ็น", "gravatar": "Gravatar", "birthday": "วันเกิด", - "birthday_placeholder": "mm/dd/yyyy", "chat": "แชท", "follow": "ติดตาม", "unfollow": "เลิกติดตาม", @@ -47,6 +45,7 @@ "has_no_follower": "ผู้ใช้รายนี้ไม่มีใครติดตาม :(", "follows_no_one": "ผู้ใช้รายนี้ไม่ติดตามใคร :(", "has_no_posts": "ผู้ใช้รายนี้ไม่ได้โพสต์อะไรเลย", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "ซ่อนอีเมล์", "hidden": "ซ่อน", "paginate_description": "ให้เลขหน้ากระทู้และโพสต์แทนการใช้สกรอลล์ที่ไม่สิ้นสุด", diff --git a/public/language/tr/pages.json b/public/language/tr/pages.json index a2b94f72ef..79123d830a 100644 --- a/public/language/tr/pages.json +++ b/public/language/tr/pages.json @@ -9,6 +9,7 @@ "user.following": "İnsanlar %1 Takip Ediyor", "user.followers": "%1 takip edenler", "user.posts": "Posts made by %1", + "user.topics": "Topics created by %1", "user.favourites": "%1'in Favori İletileri", "user.settings": "Kullanıcı Ayarları" } \ No newline at end of file diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json index a4eae03b29..cbbf514eb0 100644 --- a/public/language/tr/topic.json +++ b/public/language/tr/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "Move Topic", "thread_tools.fork": "Fork Topic", "thread_tools.delete": "Delete Topic", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "Restore Topic", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "Kategoriler Yükleniyor", "disabled_categories_note": "Etkin Olmayan Kategoriler soluklaştırılır", "confirm_move": "Taşı", diff --git a/public/language/tr/user.json b/public/language/tr/user.json index 8dd925c25b..63429e4515 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -5,7 +5,6 @@ "email": "E-posta", "fullname": "Tam Ad", "website": "Websitesi", - "user:website_placeholder": "http://...", "location": "Konum", "age": "Yaş", "joined": "Katıldı", @@ -20,7 +19,6 @@ "signature": "İmza", "gravatar": "Avatar", "birthday": "Doğum Tarihi", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "Follow", "unfollow": "Unfollow", @@ -47,6 +45,7 @@ "has_no_follower": "Bu kullanıcının hiç takipçisi yok :(", "follows_no_one": "Bu kullanıcı kimseyi takip etmiyor :(", "has_no_posts": "This user didn't post anything yet.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "E-posta gizli", "hidden": "gizli", "paginate_description": "Paginate topics and posts instead of using infinite scroll.", diff --git a/public/language/zh_CN/pages.json b/public/language/zh_CN/pages.json index 59cfe38f1f..c321a1d897 100644 --- a/public/language/zh_CN/pages.json +++ b/public/language/zh_CN/pages.json @@ -9,6 +9,7 @@ "user.following": "%1的人关注", "user.followers": "%1关注的人", "user.posts": "%1 发表", + "user.topics": "Topics created by %1", "user.favourites": "%1 喜爱的帖子", "user.settings": "用户设置" } \ No newline at end of file diff --git a/public/language/zh_CN/topic.json b/public/language/zh_CN/topic.json index 7236386ef1..f4b067ef1d 100644 --- a/public/language/zh_CN/topic.json +++ b/public/language/zh_CN/topic.json @@ -44,7 +44,13 @@ "thread_tools.move": "移动主题", "thread_tools.fork": "分叉主题", "thread_tools.delete": "删除主题", + "thread_tools.delete_confirm": "Are you sure you want to delete this thread?", "thread_tools.restore": "恢复主题", + "thread_tools.restore_confirm": "Are you sure you want to restore this thread?", + "post_delete_confirm": "Are you sure you want to delete this post?", + "post_restore_confirm": "Are you sure you want to restore this post?", + "post_delete_error": "Could not delete this post!", + "post_restore_error": "Could not restore this post!", "load_categories": "版面载入中", "disabled_categories_note": "停用的版面为灰色", "confirm_move": "移动", diff --git a/public/language/zh_CN/user.json b/public/language/zh_CN/user.json index 464ae8f23b..2bda242030 100644 --- a/public/language/zh_CN/user.json +++ b/public/language/zh_CN/user.json @@ -5,7 +5,6 @@ "email": "邮件", "fullname": "姓名", "website": "网站", - "user:website_placeholder": "http://...", "location": "地址", "age": "年龄", "joined": "加入时间", @@ -20,7 +19,6 @@ "signature": "签名", "gravatar": "Gravatar头像", "birthday": "生日", - "birthday_placeholder": "mm/dd/yyyy", "chat": "聊天", "follow": "关注", "unfollow": "取消关注", @@ -47,6 +45,7 @@ "has_no_follower": "该用户还没有被任何人关注。", "follows_no_one": "该用户还没有关注过任何人。", "has_no_posts": "此用户还未发表过任何帖子.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "邮箱被隐藏", "hidden": "隐藏", "paginate_description": "使用分页方式显示话题和帖子,代替滚动显示", diff --git a/public/language/zh_TW/category.json b/public/language/zh_TW/category.json index 5d34af38f5..d50a18cf94 100644 --- a/public/language/zh_TW/category.json +++ b/public/language/zh_TW/category.json @@ -8,5 +8,5 @@ "no_replies": "還沒有回復", "replied": "回復", "last_edited_by": "最后編輯", - "share_this_category": "Share this category" + "share_this_category": "分享這類別" } \ No newline at end of file diff --git a/public/language/zh_TW/pages.json b/public/language/zh_TW/pages.json index 6b41654688..4624ca716b 100644 --- a/public/language/zh_TW/pages.json +++ b/public/language/zh_TW/pages.json @@ -9,6 +9,7 @@ "user.following": "People %1 Follows", "user.followers": "People who Follow %1", "user.posts": "Posts made by %1", + "user.topics": "Topics created by %1", "user.favourites": "%1's Favourite Posts", "user.settings": "User Settings" } \ No newline at end of file diff --git a/public/language/zh_TW/topic.json b/public/language/zh_TW/topic.json index 58ffbf2d58..9528d4f1c4 100644 --- a/public/language/zh_TW/topic.json +++ b/public/language/zh_TW/topic.json @@ -1,8 +1,8 @@ { "topic": "主題", "topics": "主題", - "topic_id": "Topic ID", - "topic_id_placeholder": "Enter topic ID", + "topic_id": "主題 ID", + "topic_id_placeholder": "輸入主題 ID", "no_topics_found": "沒有找到主題!", "no_posts_found": "找不到帖子!", "profile": "資料", @@ -23,8 +23,8 @@ "flag": "檢舉", "bookmark_instructions": "Click here to return to your last position or close to discard.", "flag_title": "檢舉這篇帖子, 交給仲裁者來審閱.", - "flag_confirm": "Are you sure you want to flag this post?", - "flag_success": "This post has been flagged for moderation.", + "flag_confirm": "你確定要檢舉這帖子嗎?", + "flag_success": "這帖子已經被檢舉要求仲裁.", "deleted_message": "已被刪除, 擁有管理權限的使用者才可觀看.", "following_topic.title": "正在關注的主題", "following_topic.message": "有人貼文回覆主題時, 你將會收到新通知.", @@ -44,7 +44,13 @@ "thread_tools.move": "Move Topic", "thread_tools.fork": "Fork Topic", "thread_tools.delete": "Delete Topic", + "thread_tools.delete_confirm": "你確定要刪除這討論串嗎?", "thread_tools.restore": "Restore Topic", + "thread_tools.restore_confirm": "你確定要還原這討論串嗎?", + "post_delete_confirm": "你確定要刪除這帖子嗎?", + "post_restore_confirm": "你確定要還原這帖子嗎?", + "post_delete_error": "無法刪除這帖子!", + "post_restore_error": "無法還原這帖子!", "load_categories": "版面載入中", "disabled_categories_note": "停用的版面為灰色", "confirm_move": "移動", diff --git a/public/language/zh_TW/user.json b/public/language/zh_TW/user.json index 949d69e4c3..212fb940c4 100644 --- a/public/language/zh_TW/user.json +++ b/public/language/zh_TW/user.json @@ -5,7 +5,6 @@ "email": "Email", "fullname": "姓名", "website": "網站", - "user:website_placeholder": "http://...", "location": "地址", "age": "年齡", "joined": "加入時間", @@ -20,7 +19,6 @@ "signature": "簽名", "gravatar": "Gravatar頭像", "birthday": "生日", - "birthday_placeholder": "mm/dd/yyyy", "chat": "Chat", "follow": "關注", "unfollow": "取消關注", @@ -30,12 +28,12 @@ "upload_new_picture": "上傳新頭像", "current_password": "目前的密碼", "change_password": "更改密碼", - "change_password_error": "Invalid Password!", - "change_password_error_wrong_current": "Your current password is not correct!", - "change_password_error_length": "Password too short!", - "change_password_error_match": "Passwords must match!", - "change_password_error_privileges": "You are not have the rights to change this password.", - "change_password_success": "Your password is updated!", + "change_password_error": "無效的密碼!", + "change_password_error_wrong_current": "目前的密碼不正確!", + "change_password_error_length": "密碼太短!", + "change_password_error_match": "密碼必須要一致!", + "change_password_error_privileges": "你沒有更改密碼的權限.", + "change_password_success": "你的密碼已經更新!", "confirm_password": "確認密碼", "password": "密碼", "upload_picture": "上傳頭像", @@ -47,6 +45,7 @@ "has_no_follower": "該用戶還沒有被任何人關注。", "follows_no_one": "該用戶還沒有關注過任何人。", "has_no_posts": "尚未有任何貼文.", + "has_no_topics": "This user didn't post any topics yet.", "email_hidden": "郵箱被隱藏", "hidden": "隱藏", "paginate_description": "使用分頁取代瀏覽載入帖子模式.", diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 00a2350aae..d190dbe8fb 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -7,7 +7,6 @@ var ajaxify = ajaxify || {}; var location = document.location || window.location, rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''), - content = null, templatesConfig = null, availableTemplates = null, apiXHR = null; @@ -227,8 +226,6 @@ var ajaxify = ajaxify || {}; return; // no ajaxification for old browsers } - content = content || document.getElementById('content'); - // Enhancing all anchors to ajaxify... $(document.body).on('click', 'a', function (e) { function hrefEmpty(href) { diff --git a/public/src/app.js b/public/src/app.js index f9a352a1a9..86e6033c45 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -9,10 +9,7 @@ var socket, 'isFocused': true, 'currentRoom': null, 'widgets': {} - }, - - MAX_RECONNECTION_ATTEMPTS = 5, - RECONNECTION_DELAY = 200; + }; (function () { var showWelcomeMessage = false; @@ -31,11 +28,17 @@ var socket, socket.socket.connect(); }, 200); } else { - socket = io.connect('', { - 'max reconnection attempts': MAX_RECONNECTION_ATTEMPTS, - 'reconnection delay': RECONNECTION_DELAY, + var ioParams = { + 'max reconnection attempts': config.maxReconnectionAttempts, + 'reconnection delay': config.reconnectionDelay, resource: RELATIVE_PATH.length ? RELATIVE_PATH.slice(1) + '/socket.io' : 'socket.io' - }); + }; + + if (utils.isAndroidBrowser()) { + ioParams.transports = ['xhr-polling']; + } + + socket = io.connect('', ioParams); var reconnecting = false, reconnectEl, reconnectTimer; @@ -112,9 +115,9 @@ var socket, }); socket.on('reconnecting', function (data, attempt) { - if(attempt === MAX_RECONNECTION_ATTEMPTS) { + if(attempt === config.maxReconnectionAttempts) { socket.socket.reconnectionAttempts = 0; - socket.socket.reconnectionDelay = RECONNECTION_DELAY; + socket.socket.reconnectionDelay = config.reconnectionDelay; return; } @@ -352,22 +355,10 @@ var socket, }); }; - app.scrollToTop = function () { - $('body,html').animate({ - scrollTop: 0 - }); - }; - - app.scrollToBottom = function () { - $('body,html').animate({ - scrollTop: $('html').height() - 100 - }); - }; - var previousScrollTop = 0; app.enableInfiniteLoading = function(callback) { - $(window).off('scroll').on('scroll', function() { + $(window).on('scroll', function() { var top = $(window).height() * 0.1; var bottom = ($(document).height() - $(window).height()) * 0.9; @@ -586,6 +577,13 @@ var socket, ajaxify.widgets.render(tpl_url, url); + if (window.history && window.history.replaceState) { + var hash = window.location.hash ? window.location.hash : ''; + window.history.replaceState({ + url: url + hash + }, url, RELATIVE_PATH + '/' + url + hash); + } + ajaxify.loadScript(tpl_url, function() { $(window).trigger('action:ajaxify.end', { url: url diff --git a/public/src/forum/accountheader.js b/public/src/forum/accountheader.js index 96f73c9fe0..4ff2f1be63 100644 --- a/public/src/forum/accountheader.js +++ b/public/src/forum/accountheader.js @@ -3,35 +3,11 @@ define(function() { AccountHeader.init = function() { - - AccountHeader.createMenu(); - hideLinks(); selectActivePill(); }; - AccountHeader.createMenu = function() { - var userslug = $('.account-username-box').attr('data-userslug'); - - var html ='
'; - - - translator.translate(html, function(translatedHtml) { - $('.account-username-box').append(translatedHtml); - selectActivePill(); - hideLinks(); - }); - }; - function hideLinks() { var yourid = ajaxify.variables.get('yourid'), theirid = ajaxify.variables.get('theirid'); diff --git a/public/src/forum/accountposts.js b/public/src/forum/accountposts.js index 1403b606fe..c1e304c3b7 100644 --- a/public/src/forum/accountposts.js +++ b/public/src/forum/accountposts.js @@ -1,6 +1,6 @@ 'use strict'; -/* globals define, app, socket, ajaxify, templates, translator */ +/* globals define, app, socket, ajaxify, templates, translator, utils */ define(['forum/accountheader'], function(header) { var AccountPosts = {}, @@ -29,7 +29,7 @@ define(['forum/accountheader'], function(header) { } if (data.posts && data.posts.length) { - onTopicsLoaded(data.posts); + onPostsLoaded(data.posts); $('.user-favourite-posts').attr('data-nextstart', data.nextStart); } @@ -37,17 +37,16 @@ define(['forum/accountheader'], function(header) { }); } - function onTopicsLoaded(posts) { + function onPostsLoaded(posts) { ajaxify.loadTemplate('accountposts', function(accountposts) { var html = templates.parse(templates.getBlock(accountposts, 'posts'), {posts: posts}); translator.translate(html, function(translatedHTML) { - $('#category-no-topics').remove(); html = $(translatedHTML); html.find('img').addClass('img-responsive'); $('.user-favourite-posts').append(html); - $('span.timeago').timeago(); + html.find('span.timeago').timeago(); app.createUserTooltips(); utils.makeNumbersHumanReadable(html.find('.human-readable-number')); }); diff --git a/public/src/forum/accounttopics.js b/public/src/forum/accounttopics.js new file mode 100644 index 0000000000..ed94057c4d --- /dev/null +++ b/public/src/forum/accounttopics.js @@ -0,0 +1,53 @@ +'use strict'; + +/* globals define, app, socket, ajaxify, templates, translator, utils */ + +define(['forum/accountheader'], function(header) { + var AccountTopics = {}, + loadingMore = false; + + AccountTopics.init = function() { + header.init(); + + app.enableInfiniteLoading(function() { + if(!loadingMore) { + loadMore(); + } + }); + }; + + function loadMore() { + loadingMore = true; + socket.emit('topics.loadMoreFromSet', { + set: 'uid:' + $('.account-username-box').attr('data-uid') + ':topics', + after: $('.user-topics').attr('data-nextstart') + }, function(err, data) { + if(err) { + return app.alertError(err.message); + } + + if (data.topics && data.topics.length) { + onTopicsLoaded(data.topics); + $('.user-topics').attr('data-nextstart', data.nextStart); + } + + loadingMore = false; + }); + } + + function onTopicsLoaded(topics) { + ajaxify.loadTemplate('accounttopics', function(accounttopics) { + var html = templates.parse(templates.getBlock(accounttopics, 'topics'), {topics: topics}); + + translator.translate(html, function(translatedHTML) { + html = $(translatedHTML); + $('#topics-container').append(html); + html.find('span.timeago').timeago(); + app.createUserTooltips(); + utils.makeNumbersHumanReadable(html.find('.human-readable-number')); + }); + }); + } + + return AccountTopics; +}); \ No newline at end of file diff --git a/public/src/forum/admin/themes.js b/public/src/forum/admin/themes.js index 4dc81d6660..acfb6f3e6e 100644 --- a/public/src/forum/admin/themes.js +++ b/public/src/forum/admin/themes.js @@ -11,7 +11,7 @@ define(['forum/admin/settings'], function(Settings) { Themes.init = function() { var scriptEl = $(''); - scriptEl.attr('src', '//api.bootswatch.com/3/?callback=bootswatchListener'); + scriptEl.attr('src', '//bootswatch.aws.af.cm/3/?callback=bootswatchListener'); $('body').append(scriptEl); var bootstrapThemeContainer = $('#bootstrap_themes'), @@ -26,7 +26,7 @@ define(['forum/admin/settings'], function(Settings) { themeType = parentEl.attr('data-type'), cssSrc = parentEl.attr('data-css'), themeId = parentEl.attr('data-theme'); - + socket.emit('admin.themes.set', { type: themeType, id: themeId, @@ -200,15 +200,17 @@ define(['forum/admin/settings'], function(Settings) { $(this).parents('.panel').children('.panel-body').toggleClass('hidden'); }); - $('#widgets .btn[data-template]').on('click', saveWidgets); + $('#widgets .save').on('click', saveWidgets); function saveWidgets() { - $('#widgets .btn[data-template]').each(function(i, el) { + var total = $('#widgets [data-template]').length; + + $('#widgets [data-template]').each(function(i, el) { el = $(el); var template = el.attr('data-template'), location = el.attr('data-location'), - area = el.parents('.area').children('.widget-area'), + area = el.children('.widget-area'), widgets = []; area.find('.panel[data-widget]').each(function() { @@ -228,24 +230,38 @@ define(['forum/admin/settings'], function(Settings) { data: widgetData }); }); - + socket.emit('admin.widgets.set', { template: template, location: location, widgets: widgets }, function(err) { - app.alert({ - alert_id: 'admin:widgets', - type: err ? 'danger' : 'success', - title: err ? 'Error' : 'Widgets Updated', - message: err ? err.message : 'Successfully updated widgets in ' + template + '/' + location, - timeout: 2500 - }); + total--; + + if (err) { + app.alertError(err.message); + } + + if (total === 0) { + app.alert({ + alert_id: 'admin:widgets', + type: 'success', + title: 'Widgets Updated', + message: 'Successfully updated widgets', + timeout: 2500 + }); + } + }); }); } function populateWidget(widget, data) { + if (data.title) { + var title = widget.find('.panel-heading strong'); + title.text(title.text() + ' - ' + data.title); + } + widget.find('input, textarea').each(function() { var input = $(this), value = data[input.attr('name')]; @@ -266,7 +282,7 @@ define(['forum/admin/settings'], function(Settings) { for (var a in areas) { if (areas.hasOwnProperty(a)) { var area = areas[a], - widgetArea = $('#widgets .area [data-template="' + area.template + '"][data-location="' + area.location + '"]').parents('.area').find('.widget-area'); + widgetArea = $('#widgets .area[data-template="' + area.template + '"][data-location="' + area.location + '"]').find('.widget-area'); for (var i in area.data) { if (area.data.hasOwnProperty(i)) { @@ -277,8 +293,6 @@ define(['forum/admin/settings'], function(Settings) { appendToggle(widgetEl); } } - - } } }); diff --git a/public/src/forum/category.js b/public/src/forum/category.js index ee19ccb7f5..7182aa19dc 100644 --- a/public/src/forum/category.js +++ b/public/src/forum/category.js @@ -1,10 +1,17 @@ "use strict"; /* global define, config, templates, app, ajaxify, socket, translator */ -define(['composer', 'forum/pagination', 'share'], function(composer, pagination, share) { +define(['composer', 'forum/pagination', 'share', 'navigator'], function(composer, pagination, share, navigator) { var Category = {}, loadingMoreTopics = false; + + $(window).on('action:ajaxify.start', function(ev, data) { + if(data.url.indexOf('category') !== 0) { + navigator.hide(); + } + }); + Category.init = function() { var cid = ajaxify.variables.get('category_id'); @@ -24,6 +31,10 @@ define(['composer', 'forum/pagination', 'share'], function(composer, pagination, enableInfiniteLoading(); + if (!config.usePagination) { + navigator.init('#topics-container > .category-item', ajaxify.variables.get('topic_count')); + } + $('#topics-container').on('click', '.topic-title', function() { var clickedTid = $(this).parents('li.category-item[data-tid]').attr('data-tid'); $('#topics-container li.category-item').each(function(index, el) { @@ -110,6 +121,7 @@ define(['composer', 'forum/pagination', 'share'], function(composer, pagination, scrollTop: (scrollTo.offset().top - $('#header-menu').height() - offset) + 'px' }, duration !== undefined ? duration : 400, function() { Category.highlightTopic(clickedTid); + navigator.update(); }); } } @@ -117,6 +129,7 @@ define(['composer', 'forum/pagination', 'share'], function(composer, pagination, function enableInfiniteLoading() { if(!config.usePagination) { + app.enableInfiniteLoading(function(direction) { if(!loadingMoreTopics && $('#topics-container').children().length) { @@ -131,6 +144,9 @@ define(['composer', 'forum/pagination', 'share'], function(composer, pagination, } else { el = $('#topics-container .category-item[data-tid]').first(); after = parseInt(el.attr('data-index'), 10); + if(isNaN(after)){ + after = 0; + } after -= config.topicsPerPage; if(after < 0) { after = 0; @@ -193,12 +209,22 @@ define(['composer', 'forum/pagination', 'share'], function(composer, pagination, topic.find('span.timeago').timeago(); app.createUserTooltips(); + updateTopicCount(); $(window).trigger('action:categories.new_topic.loaded'); }); }); }; + function updateTopicCount() { + socket.emit('categories.getTopicCount', ajaxify.variables.get('category_id'), function(err, topicCount) { + if(err) { + return app.alertError(err.message); + } + navigator.setCount(topicCount); + }); + } + Category.onTopicsLoaded = function(topics, callback) { if(!topics || !topics.length) { return; diff --git a/public/src/forum/home.js b/public/src/forum/home.js index 18462f87de..122b524b8b 100644 --- a/public/src/forum/home.js +++ b/public/src/forum/home.js @@ -16,6 +16,10 @@ define(function() { app.enterRoom('home'); socket.on('event:new_post', home.onNewPost); + + $('.home .category-header').tooltip({ + placement: 'bottom' + }); }; home.onNewPost = function(data) { @@ -63,7 +67,7 @@ define(function() { function parseAndTranslate(posts, callback) { ajaxify.loadTemplate('home', function(homeTemplate) { - var html = templates.parse(templates.getBlock(homeTemplate, 'categories.posts'), {categories: {posts: posts}}); + var html = templates.parse(templates.getBlock(homeTemplate, 'posts'), {categories: {posts: posts}}); translator.translate(html, function(translatedHTML) { translatedHTML = $(translatedHTML); diff --git a/public/src/forum/login.js b/public/src/forum/login.js index de0defd54a..dd1ba7f22b 100644 --- a/public/src/forum/login.js +++ b/public/src/forum/login.js @@ -2,7 +2,9 @@ define(function() { var Login = {}; Login.init = function() { - $('#login').on('click', function() { + $('#login').on('click', function(e) { + e.preventDefault(); + var loginData = { 'username': $('#username').val(), 'password': $('#password').val(), @@ -43,13 +45,11 @@ define(function() { dataType: 'json', async: true }); - - return false; }); - $('#login-error-notify button').on('click', function() { + $('#login-error-notify button').on('click', function(e) { + e.preventDefault(); $('#login-error-notify').hide(); - return false; }); $('#content #username').focus(); diff --git a/public/src/forum/popular.js b/public/src/forum/popular.js index c4817bbd71..5b99451cf3 100644 --- a/public/src/forum/popular.js +++ b/public/src/forum/popular.js @@ -35,7 +35,7 @@ define(['forum/recent'], function(recent) { } if (data.topics && data.topics.length) { - recent.onTopicsLoaded('popular', data.topics); + recent.onTopicsLoaded('popular', data.topics, false); $('#topics-container').attr('data-nextstart', data.nextStart); } else { $('#load-more-btn').hide(); diff --git a/public/src/forum/recent.js b/public/src/forum/recent.js index 17d5abedc8..1af4e764a5 100644 --- a/public/src/forum/recent.js +++ b/public/src/forum/recent.js @@ -107,7 +107,7 @@ define(function() { } if (data.topics && data.topics.length) { - Recent.onTopicsLoaded('recent', data.topics); + Recent.onTopicsLoaded('recent', data.topics, false); $('#topics-container').attr('data-nextstart', data.nextStart); } @@ -115,9 +115,9 @@ define(function() { }); } - Recent.onTopicsLoaded = function(templateName, topics) { + Recent.onTopicsLoaded = function(templateName, topics, showSelect) { ajaxify.loadTemplate(templateName, function(template) { - var html = templates.parse(templates.getBlock(template, 'topics'), {topics: topics}); + var html = templates.parse(templates.getBlock(template, 'topics'), {topics: topics, showSelect: showSelect}); translator.translate(html, function(translatedHTML) { $('#category-no-topics').remove(); diff --git a/public/src/forum/reset.js b/public/src/forum/reset.js index b03007c74e..95ee52a939 100644 --- a/public/src/forum/reset.js +++ b/public/src/forum/reset.js @@ -9,9 +9,7 @@ define(function() { $('#reset').on('click', function() { if (inputEl.val() && inputEl.val().indexOf('@') !== -1) { - socket.emit('user.reset.send', { - email: inputEl.val() - }, function(err, data) { + socket.emit('user.reset.send', inputEl.val(), function(err, data) { if(err) { return app.alertError(err.message); } diff --git a/public/src/forum/reset_code.js b/public/src/forum/reset_code.js index fc4c2ff704..0215669c39 100644 --- a/public/src/forum/reset_code.js +++ b/public/src/forum/reset_code.js @@ -35,9 +35,7 @@ define(function() { } }); - socket.emit('user.reset.valid', { - code: reset_code - }, function(err, valid) { + socket.emit('user.reset.valid', reset_code, function(err, valid) { if(err) { return app.alertError(err.message); } diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index 3b27079dd7..6df80606ea 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -1,9 +1,9 @@ 'use strict'; -/* globals define, app, templates, translator, socket, bootbox, config, ajaxify, RELATIVE_PATH */ +/* globals define, app, templates, translator, socket, bootbox, config, ajaxify, RELATIVE_PATH, utils */ -define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], function(pagination, threadTools, postTools) { +define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools', 'navigator'], function(pagination, threadTools, postTools, navigator) { var Topic = {}, infiniteLoaderActive = false, scrollingToPost = false, @@ -17,7 +17,7 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], $(window).on('action:ajaxify.start', function(ev, data) { if(data.url.indexOf('topic') !== 0) { - $('.pagination-block').addClass('hidden'); + navigator.hide(); $('.header-topic-title').find('span').text('').hide(); app.removeAlert('bookmark'); } @@ -87,8 +87,8 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], }); } - if (!window.location.hash && !config.usePagination) { - updateHeader(); + if (!config.usePagination) { + navigator.init('.posts > .post-row', Topic.postCount, Topic.navigatorCallback); } $('#post-container').on('mouseenter', '.favourite-tooltip', function(e) { @@ -106,9 +106,6 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], function enableInfiniteLoading() { if(!config.usePagination) { - $('.pagination-block').removeClass('hidden'); - - updatePaginationTextAndProgressBar(1); app.enableInfiniteLoading(function(direction) { @@ -138,7 +135,7 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], } }); } else { - $('.pagination-block').addClass('hidden'); + navigator.hide(); pagination.init(currentPage, pageCount); } @@ -511,79 +508,43 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], }); } - $(window).on('scroll', updateHeader); + $(window).on('scroll', updateTopicTitle); + $(window).trigger('action:topic.loaded'); }; - function updateHeader() { - - $('.pagination-block a').off('click').on('click', function() { - return false; - }); - - $('.pagination-block i:first').off('click').on('click', function() { - app.scrollToTop(); - }); - - $('.pagination-block i:last').off('click').on('click', function() { - app.scrollToBottom(); - }); - + function updateTopicTitle() { if($(window).scrollTop() > 50) { $('.header-topic-title').find('span').text(ajaxify.variables.get('topic_name')).show(); } else { $('.header-topic-title').find('span').text('').hide(); } + } - $($('.posts > .post-row').get().reverse()).each(function() { - var el = $(this); + Topic.navigatorCallback = function(element) { + var pid = element.attr('data-pid'); - if (elementInView(el)) { - var index = parseInt(el.attr('data-index'), 10) + 1; - if(index > Topic.postCount) { - index = Topic.postCount; + var currentBookmark = localStorage.getItem('topic:' + ajaxify.variables.get('topic_id') + ':bookmark'); + + if (!currentBookmark || parseInt(pid, 10) >= parseInt(currentBookmark, 10)) { + localStorage.setItem('topic:' + ajaxify.variables.get('topic_id') + ':bookmark', pid); + app.removeAlert('bookmark'); + } + + if (!scrollingToPost) { + + var newUrl = window.location.href.replace(window.location.hash, '') + '#' + pid; + + if (newUrl !== currentUrl) { + if (history.replaceState) { + history.replaceState({ + url: window.location.pathname.slice(1) + (window.location.search ? window.location.search : '' ) + '#' + pid + }, null, newUrl); } - - updatePaginationTextAndProgressBar(index); - - var currentBookmark = localStorage.getItem('topic:' + ajaxify.variables.get('topic_id') + ':bookmark'); - if (!currentBookmark || parseInt(el.attr('data-pid'), 10) >= parseInt(currentBookmark, 10)) { - localStorage.setItem('topic:' + ajaxify.variables.get('topic_id') + ':bookmark', el.attr('data-pid')); - app.removeAlert('bookmark'); - } - - if (!scrollingToPost) { - - var newUrl = window.location.href.replace(window.location.hash, '') + '#' + el.attr('data-pid'); - - if (newUrl !== currentUrl) { - if (history.replaceState) { - history.replaceState({ - url: window.location.pathname.slice(1) + (window.location.search ? window.location.search : '' ) + '#' + el.attr('data-pid') - }, null, newUrl); - } - currentUrl = newUrl; - } - } - - return false; + currentUrl = newUrl; } - }); - } - - function updatePaginationTextAndProgressBar(index) { - $('#pagination').html(index + ' out of ' + Topic.postCount); - $('.progress-bar').width((index / Topic.postCount * 100) + '%'); - } - - function elementInView(el) { - var scrollTop = $(window).scrollTop() + $('#header-menu').height(); - var scrollBottom = scrollTop + $(window).height(); - - var elTop = el.offset().top; - var elBottom = elTop + Math.floor(el.height()); - return (elTop >= scrollTop && elBottom <= scrollBottom) || (elTop <= scrollTop && elBottom >= scrollTop); - } + } + }; Topic.scrollToPost = function(pid, highlight, duration, offset) { if (!pid) { @@ -594,6 +555,8 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], offset = 0; } + scrollingToPost = true; + if($('#post_anchor_' + pid).length) { return scrollToPid(pid); } @@ -634,13 +597,11 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], tid = $('#post-container').attr('data-tid'); function animateScroll() { - scrollingToPost = true; - $("html, body").animate({ scrollTop: (scrollTo.offset().top - $('#header-menu').height() - offset) + "px" }, duration !== undefined ? duration : 400, function() { scrollingToPost = false; - updateHeader(); + navigator.update(); highlightPost(); }); } @@ -659,7 +620,7 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], if($('#post-container li.post-row[data-pid="' + pid + '"]').attr('data-index') !== '0') { animateScroll(); } else { - updateHeader(); + navigator.update(); highlightPost(); } } @@ -755,8 +716,17 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], } function onNewPostsLoaded(html, posts) { + function getPostPrivileges(pid) { + socket.emit('posts.getPrivileges', pid, function(err, privileges) { + if(err) { + return app.alertError(err.message); + } + toggle_mod_tools(html, privileges); + }); + } + for (var x = 0, numPosts = posts.length; x < numPosts; x++) { - toggle_mod_tools(posts[x].pid, posts[x].display_moderator_tools); + getPostPrivileges(posts[x].pid); } infiniteLoaderActive = false; @@ -771,9 +741,9 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], showBottomPostBar(); } - - function toggle_mod_tools(pid, editable) { - $('#post-container li[data-pid="' + pid + '"]').find('.edit, .delete').toggleClass('none', !editable); + function toggle_mod_tools(postHtml, privileges) { + postHtml.find('.edit, .delete').toggleClass('none', !privileges.editable); + postHtml.find('.move').toggleClass('none', !privileges.move); } function updatePostCount() { @@ -781,7 +751,7 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], if(!err) { Topic.postCount = postcount; $('#topic-post-count').html(Topic.postCount); - updateHeader(); + navigator.setCount(Topic.postCount); } }); } @@ -816,7 +786,7 @@ define(['forum/pagination', 'forum/topic/threadTools', 'forum/topic/postTools'], if (data && data.posts && data.posts.length) { createNewPosts(data, callback); } else { - updateHeader(); + navigator.update(); if (typeof callback === 'function') { callback(data.posts); } diff --git a/public/src/forum/topic/postTools.js b/public/src/forum/topic/postTools.js index 58e6406d29..36243dad79 100644 --- a/public/src/forum/topic/postTools.js +++ b/public/src/forum/topic/postTools.js @@ -69,15 +69,19 @@ define(['composer', 'share'], function(composer, share) { if ($(selection.baseNode).parents('.post-content').length > 0) { var snippet = selection.toString(); - if (snippet.length > 0) { - selectionText = '> ' + snippet.replace(/\n/g, '\n> '); + if (snippet.length) { + selectionText = '> ' + snippet.replace(/\n/g, '\n> ') + '\n\n'; } } - var username = getUserName(button); - username += username ? ' ' : ''; + var username = getUserName(selectionText ? $(selection.baseNode) : button); + + if (selectionText.length) { + composer.addQuote(tid, getPid(button), topicName, username, selectionText); + } else { + composer.newReply(tid, getPid(button), topicName, username ? username + ' ' : ''); + } - composer.newReply(tid, getPid(button), topicName, selectionText.length > 0 ? selectionText + '\n\n' + username : '' + username); } function onQuoteClicked(button, tid, topicName) { @@ -143,17 +147,19 @@ define(['composer', 'share'], function(composer, share) { postEl = $(document.querySelector('#post-container li[data-pid="' + pid + '"]')), action = !postEl.hasClass('deleted') ? 'delete' : 'restore'; - bootbox.confirm('Are you sure you want to ' + action + ' this post?', function(confirm) { - if (confirm) { - socket.emit('posts.' + action, { - pid: pid, - tid: tid - }, function(err) { - if(err) { - return app.alertError('Can\'t ' + action + ' post!'); - } - }); - } + translator.translate('[[topic:post_' + action + '_confirm]]', function(msg) { + bootbox.confirm(msg, function(confirm) { + if (confirm) { + socket.emit('posts.' + action, { + pid: pid, + tid: tid + }, function(err) { + if(err) { + return translator.translate('[[topic:post_' + action + '_error]]', app.alertError); + } + }); + } + }); }); } diff --git a/public/src/forum/topic/threadTools.js b/public/src/forum/topic/threadTools.js index 46ca06e45d..0836b8d3b5 100644 --- a/public/src/forum/topic/threadTools.js +++ b/public/src/forum/topic/threadTools.js @@ -15,11 +15,14 @@ define(['forum/topic/fork', 'forum/topic/move'], function(fork, move) { $('.delete_thread').on('click', function(e) { var command = threadState.deleted !== '1' ? 'delete' : 'restore'; - bootbox.confirm('Are you sure you want to ' + command + ' this thread?', function(confirm) { - if (confirm) { - socket.emit('topics.' + command, tid); - } + translator.translate('[[topic:thread_tools.' + command + '_confirm]]', function(msg) { + bootbox.confirm(msg, function(confirm) { + if (confirm) { + socket.emit('topics.' + command, tid); + } + }); }); + return false; }); diff --git a/public/src/forum/unread.js b/public/src/forum/unread.js index ac9b275a68..e944ffde16 100644 --- a/public/src/forum/unread.js +++ b/public/src/forum/unread.js @@ -1,3 +1,7 @@ +'use strict'; + +/* globals define, app, socket */ + define(['forum/recent'], function(recent) { var Unread = {}, loadingMoreTopics = false; @@ -11,26 +15,39 @@ define(['forum/recent'], function(recent) { recent.watchForNewPosts(); - $('#mark-allread-btn').on('click', function() { - function getUnreadTids() { + $('#markSelectedRead').on('click', function() { + function getSelectedTids() { var tids = []; - $('#topics-container .category-item[data-tid]').each(function() { + $('#topics-container .category-item.selected').each(function() { tids.push($(this).attr('data-tid')); }); return tids; } - - var btn = $(this); - - socket.emit('topics.markAllRead', getUnreadTids(), function(err) { + var tids = getSelectedTids(); + if(!tids.length) { + return; + } + socket.emit('topics.markTidsRead', tids, function(err) { if(err) { return app.alertError('There was an error marking topics read!'); } - btn.remove(); + doneRemovingTids(tids); + }); + }); + + $('#markAllRead').on('click', function() { + socket.emit('topics.markAllRead', function(err) { + if(err) { + return app.alertError('There was an error marking topics read!'); + } + + app.alertSuccess('[[unread:topics_marked_as_read.success]]'); + $('#topics-container').empty(); $('#category-no-topics').removeClass('hidden'); - app.alertSuccess('All topics marked as read!'); + $('.markread').addClass('hidden'); + $('#numUnreadBadge') .removeClass('badge-important') .addClass('badge-inverse') @@ -38,6 +55,37 @@ define(['forum/recent'], function(recent) { }); }); + $('.markread').on('click', '.category', function() { + function getCategoryTids(cid) { + var tids = []; + $('#topics-container .category-item[data-cid="' + cid + '"]').each(function() { + tids.push($(this).attr('data-tid')); + }); + return tids; + } + var cid = $(this).attr('data-cid'); + var tids = getCategoryTids(cid); + + socket.emit('topics.markCategoryTopicsRead', cid, function(err) { + if(err) { + return app.alertError('There was an error marking topics read!'); + } + + doneRemovingTids(tids); + }); + }); + + socket.emit('categories.get', onCategoriesLoaded); + + $('#topics-container').on('click', '.select', function() { + var select = $(this); + var isChecked = !select.hasClass('fa-square-o'); + + select.toggleClass('fa-check-square-o', !isChecked); + select.toggleClass('fa-square-o', isChecked); + select.parents('.category-item').toggleClass('selected', !isChecked); + }); + if ($("body").height() <= $(window).height() && $('#topics-container').children().length >= 20) { $('#load-more-btn').show(); } @@ -66,7 +114,7 @@ define(['forum/recent'], function(recent) { } if (data.topics && data.topics.length) { - recent.onTopicsLoaded('unread', data.topics); + recent.onTopicsLoaded('unread', data.topics, true); $('#topics-container').attr('data-nextstart', data.nextStart); } else { $('#load-more-btn').hide(); @@ -77,5 +125,42 @@ define(['forum/recent'], function(recent) { } }; + function doneRemovingTids(tids) { + removeTids(tids); + + app.alertSuccess('[[unread:topics_marked_as_read.success]]'); + + if (!$('#topics-container').children().length) { + $('#category-no-topics').removeClass('hidden'); + $('.markread').addClass('hidden'); + } + } + + function removeTids(tids) { + for(var i=0; i