From f3f67b31d56373d1cc87fc65830e133e51c9b7cc Mon Sep 17 00:00:00 2001
From: Erik Dasque
Date: Tue, 3 Nov 2015 13:07:20 -0500
Subject: [PATCH 01/78] Insured we're on a recent & Long Time Support (LTS)
version of node. Also added some helpful comment to explain what is doing
what and the choices made.
---
Dockerfile | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index c44b71096d..7229e6be25 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,8 +1,15 @@
-FROM node:0.10-onbuild
+# The base image is the latest 4.x node (LTS) on jessie (debian)
+# -onbuild will install the node dependencies found in the project package.json
+# and copy its content in /usr/src/app, its WORKDIR
+FROM node:4-onbuild
ENV NODE_ENV=production \
daemon=false \
silent=false
+# nodebb setup will ask you for connection information to a redis (default), mongodb then run the forum
+# nodebb upgrade is not included and might be desired
CMD node app --setup && npm start
+
+# the default port for NodeBB is exposed outside the container
EXPOSE 4567
From ad5ddcbb7333fae4a7e0cc95ed5b90b5a672b38b Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Sat, 7 Nov 2015 12:31:19 -0500
Subject: [PATCH 02/78] whitespace fixes
---
src/socket.io/admin/rooms.js | 4 ++--
src/upgrade.js | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/socket.io/admin/rooms.js b/src/socket.io/admin/rooms.js
index 618d5b9c0b..bf66873a52 100644
--- a/src/socket.io/admin/rooms.js
+++ b/src/socket.io/admin/rooms.js
@@ -79,8 +79,8 @@ SocketRooms.getAll = function(socket, data, callback) {
totals.topics = {};
topTenTopics.forEach(function(topic, index) {
totals.topics[topic.tid] = {
- value: topic.count || 0,
- title: validator.escape(titles[index].title)
+ value: topic.count || 0,
+ title: validator.escape(titles[index].title)
};
});
diff --git a/src/upgrade.js b/src/upgrade.js
index ad31e95e8e..4a03f458b0 100644
--- a/src/upgrade.js
+++ b/src/upgrade.js
@@ -536,7 +536,7 @@ Upgrade.upgrade = function(callback) {
if (err) {
return next(err);
}
-
+
if (!userData.picture || !userData.gravatarpicture) {
return next();
}
@@ -548,7 +548,7 @@ Upgrade.upgrade = function(callback) {
},
function (next) {
db.deleteObjectField('user:' + uid, 'gravatarpicture', next);
- }
+ }
], next);
} else {
db.deleteObjectField('user:' + uid, 'gravatarpicture', next);
From 290f953475e5467b172dbafd8abb320a2f6ded57 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Sat, 7 Nov 2015 16:09:54 -0500
Subject: [PATCH 03/78] up persona
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 529470c731..0d6935566d 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"nodebb-plugin-spam-be-gone": "0.4.2",
"nodebb-rewards-essentials": "0.0.5",
"nodebb-theme-lavender": "2.0.13",
- "nodebb-theme-persona": "4.0.31",
+ "nodebb-theme-persona": "4.0.32",
"nodebb-theme-vanilla": "5.0.13",
"nodebb-widget-essentials": "2.0.4",
"nodemailer": "0.7.1",
From 35eb0faac8badb3d06ee5edb8d794ddb79ef2839 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Sat, 7 Nov 2015 17:11:35 -0500
Subject: [PATCH 04/78] closes #3850
---
src/controllers/accounts/settings.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/controllers/accounts/settings.js b/src/controllers/accounts/settings.js
index 34f4f24478..1109f58813 100644
--- a/src/controllers/accounts/settings.js
+++ b/src/controllers/accounts/settings.js
@@ -131,6 +131,10 @@ settingsController.get = function(req, res, callback) {
{ "name": "Yeti", "value": "yeti" }
];
+ userData.homePageRoutes.forEach(function(route) {
+ route.selected = route.route === userData.settings.homePageRoute;
+ });
+
userData.bootswatchSkinOptions.forEach(function(skin) {
skin.selected = skin.value === userData.settings.bootswatchSkin;
});
From 323cc165b663a078c50da10ca9d79c48feddd4a4 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Sat, 7 Nov 2015 18:34:40 -0500
Subject: [PATCH 05/78] closes #3851
dont use post file upload for cover uploads
check cover upload file size against new setting
store cover uploads in profile folder
use `uid-profilecover` filename for cover uploads
---
install/data/defaults.json | 1 +
public/src/client/account/header.js | 2 +-
src/controllers/accounts/edit.js | 4 +--
src/controllers/uploads.js | 4 ---
src/user/picture.js | 50 ++++++++++++++++++++---------
src/views/admin/settings/user.tpl | 7 +++-
6 files changed, 44 insertions(+), 24 deletions(-)
diff --git a/install/data/defaults.json b/install/data/defaults.json
index 6d81fdbc82..39a2226c5a 100644
--- a/install/data/defaults.json
+++ b/install/data/defaults.json
@@ -25,6 +25,7 @@
"maximumSignatureLength": 255,
"maximumAboutMeLength": 1000,
"maximumProfileImageSize": 256,
+ "maximumCoverImageSize": 2048,
"profileImageDimension": 128,
"requireEmailConfirmation": 0,
"profile:allowProfileImageUploads": 1,
diff --git a/public/src/client/account/header.js b/public/src/client/account/header.js
index bf64c92f9d..b67f9dd4a9 100644
--- a/public/src/client/account/header.js
+++ b/public/src/client/account/header.js
@@ -66,7 +66,7 @@ define('forum/account/header', [
},
function() {
uploader.open(RELATIVE_PATH + '/api/user/' + ajaxify.data.userslug + '/uploadcover', { uid: yourid }, 0, function(imageUrlOnServer) {
- components.get('account/cover').css('background-image', 'url(' + imageUrlOnServer + ')');
+ components.get('account/cover').css('background-image', 'url(' + imageUrlOnServer + '?v=' + Date.now() + ')');
});
},
removeCover
diff --git a/src/controllers/accounts/edit.js b/src/controllers/accounts/edit.js
index 349a6c856e..a6b2f7ad55 100644
--- a/src/controllers/accounts/edit.js
+++ b/src/controllers/accounts/edit.js
@@ -122,9 +122,9 @@ editController.uploadPicture = function (req, res, next) {
editController.uploadCoverPicture = function(req, res, next) {
var params = JSON.parse(req.body.params);
-
+
user.updateCoverPicture({
- file: req.files.files[0].path,
+ file: req.files.files[0],
uid: params.uid
}, function(err, image) {
if (err) {
diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js
index d798524f3e..3ee0c97c8e 100644
--- a/src/controllers/uploads.js
+++ b/src/controllers/uploads.js
@@ -96,10 +96,6 @@ uploadsController.uploadGroupCover = function(data, next) {
uploadImage(0, data, next);
};
-uploadsController.uploadUserCover = function(data, next) {
- uploadImage(data.uid, data, next);
-};
-
function uploadImage(uid, image, callback) {
if (plugins.hasListeners('filter:uploadImage')) {
return plugins.fireHook('filter:uploadImage', {image: image, uid: uid}, callback);
diff --git a/src/user/picture.js b/src/user/picture.js
index 503efd8845..96612ee14c 100644
--- a/src/user/picture.js
+++ b/src/user/picture.js
@@ -9,7 +9,6 @@ var async = require('async'),
request = require('request'),
mime = require('mime'),
- uploadsController = require('../controllers/uploads'),
plugins = require('../plugins'),
file = require('../file'),
image = require('../image'),
@@ -141,8 +140,18 @@ module.exports = function(User) {
return User.updateCoverPosition(data.uid, data.position, callback);
}
- async.series([
+ if (!data.imageData && !data.file) {
+ return callback(new Error('[[error:invalid-data]]'));
+ }
+
+ async.waterfall([
function(next) {
+ var size = data.file ? data.file.size : data.imageData.length;
+ meta.config.maximumCoverImageSize = meta.config.maximumCoverImageSize || 2048;
+ if (size > parseInt(meta.config.maximumCoverImageSize, 10) * 1024) {
+ return next(new Error('[[error:file-too-big, ' + meta.config.maximumCoverImageSize + ']]'));
+ }
+
if (data.file) {
return next();
}
@@ -150,12 +159,6 @@ module.exports = function(User) {
md5sum = crypto.createHash('md5');
md5sum.update(data.imageData);
md5sum = md5sum.digest('hex');
- next();
- },
- function(next) {
- if (data.file) {
- return next();
- }
tempPath = path.join(nconf.get('base_dir'), nconf.get('upload_path'), md5sum);
var buffer = new Buffer(data.imageData.slice(data.imageData.indexOf('base64') + 7), 'base64');
@@ -165,24 +168,39 @@ module.exports = function(User) {
}, next);
},
function(next) {
- uploadsController.uploadUserCover({
+ var image = {
name: 'profileCover',
- path: data.file ? data.file : tempPath,
+ path: data.file ? data.file.path : tempPath,
uid: data.uid
- }, function(err, uploadData) {
+ };
+
+ if (plugins.hasListeners('filter:uploadImage')) {
+ return plugins.fireHook('filter:uploadImage', {image: image, uid: data.uid}, next);
+ }
+
+ var filename = data.uid + '-profilecover';
+ file.saveFileToLocal(filename, 'profile', image.path, function(err, upload) {
if (err) {
return next(err);
}
- url = uploadData.url;
- next();
+ next(null, {
+ url: nconf.get('relative_path') + upload.url,
+ name: image.name
+ });
});
},
- function(next) {
- User.setUserField(data.uid, 'cover:url', url, next);
+ function(uploadData, next) {
+ url = uploadData.url;
+ User.setUserField(data.uid, 'cover:url', uploadData.url, next);
},
function(next) {
- require('fs').unlink(data.file ? data.file : tempPath, next);
+ require('fs').unlink(data.file ? data.file.path : tempPath, function(err) {
+ if (err) {
+ winston.error(err);
+ }
+ next();
+ });
}
], function(err) {
if (err) {
diff --git a/src/views/admin/settings/user.tpl b/src/views/admin/settings/user.tpl
index d361a92cc0..0b27b24175 100644
--- a/src/views/admin/settings/user.tpl
+++ b/src/views/admin/settings/user.tpl
@@ -100,9 +100,14 @@
-
+
+
+
+
+
+
From 27f77bf8323d690f3a3e7e8ce39d86552b613802 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Sat, 7 Nov 2015 18:46:31 -0500
Subject: [PATCH 06/78] show proper error if user is not logged in
---
src/socket.io/posts/favourites.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/socket.io/posts/favourites.js b/src/socket.io/posts/favourites.js
index 71aab9100f..6883ece06a 100644
--- a/src/socket.io/posts/favourites.js
+++ b/src/socket.io/posts/favourites.js
@@ -100,6 +100,9 @@ module.exports = function(SocketPosts) {
};
function favouriteCommand(socket, command, eventName, notification, data, callback) {
+ if (!socket.uid) {
+ return callback(new Error('[[error:not-logged-in]]'))
+ }
if(!data || !data.pid || !data.room_id) {
return callback(new Error('[[error:invalid-data]]'));
}
From 3bd83cd732abc8204de0c724478fefb572d19ece Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Sat, 7 Nov 2015 18:54:08 -0500
Subject: [PATCH 07/78] remove dupe code
---
public/src/modules/coverPhoto.js | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/public/src/modules/coverPhoto.js b/public/src/modules/coverPhoto.js
index df9246ab7f..c9794d3370 100644
--- a/public/src/modules/coverPhoto.js
+++ b/public/src/modules/coverPhoto.js
@@ -16,12 +16,7 @@ define('coverPhoto', [
coverEl.find('.upload').on('click', uploadFn);
coverEl.find('.resize').on('click', function() {
- coverEl
- .toggleClass('active', 1)
- .backgroundDraggable({
- axis: 'y',
- units: 'percent'
- });
+ enableDragging(coverEl);
});
coverEl.find('.remove').on('click', removeFn);
@@ -53,16 +48,18 @@ define('coverPhoto', [
};
reader.readAsDataURL(files[0]);
-
- coverPhoto.coverEl
- .addClass('active', 1)
- .backgroundDraggable({
- axis: 'y',
- units: 'percent'
- });
+ enableDragging(coverPhoto.coverEl);
}
};
+ function enableDragging(coverEl) {
+ coverEl.toggleClass('active', 1)
+ .backgroundDraggable({
+ axis: 'y',
+ units: 'percent'
+ });
+ }
+
coverPhoto.save = function() {
coverPhoto.coverEl.addClass('saving');
From 948c98b66860165d09af0c23e7c1a8b4b0d668e6 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Sun, 8 Nov 2015 11:57:04 -0500
Subject: [PATCH 08/78] adding plaintext email via html-to-text module
---
package.json | 1 +
src/emailer.js | 15 +++++++++------
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 529470c731..80a08c6cb6 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"express-session": "^1.8.2",
"gravatar": "^1.1.0",
"heapdump": "^0.3.0",
+ "html-to-text": "1.3.2",
"jimp": "^0.2.5",
"less": "^2.0.0",
"logrotate-stream": "^0.2.3",
diff --git a/src/emailer.js b/src/emailer.js
index fc96081b6f..2e1318d0cc 100644
--- a/src/emailer.js
+++ b/src/emailer.js
@@ -4,12 +4,16 @@ var async = require('async'),
winston = require('winston'),
templates = require('templates.js'),
nodemailer = require('nodemailer'),
+ htmlToText = require('html-to-text'),
User = require('./user'),
Plugins = require('./plugins'),
meta = require('./meta'),
translator = require('../public/src/modules/translator'),
+ transports = {
+ direct: nodemailer.createTransport('direct')
+ },
app;
(function(Emailer) {
@@ -54,9 +58,6 @@ var async = require('async'),
html: function(next) {
renderAndTranslate('emails/' + template, params, lang, next);
},
- plaintext: function(next) {
- renderAndTranslate('emails/' + template + '_plaintext', params, lang, next);
- },
subject: function(next) {
translator.translate(params.subject, lang, function(translated) {
next(null, translated);
@@ -65,13 +66,16 @@ var async = require('async'),
}, next);
},
function (results, next) {
+
var data = {
to: email,
from: meta.config['email:from'] || 'no-reply@localhost.lan',
from_name: meta.config['email:from_name'] || 'NodeBB',
subject: results.subject,
html: results.html,
- plaintext: results.plaintext,
+ plaintext: htmlToText.fromString(results.html, {
+ ignoreImage: true
+ }),
template: template,
uid: params.uid,
pid: params.pid,
@@ -96,8 +100,7 @@ var async = require('async'),
data.text = data.plaintext;
delete data.plaintext;
- nodemailer.mail(data);
- callback(null);
+ transports.direct.sendMail(data, callback);
};
function render(tpl, params, next) {
From 8304740bd58690da0209e419b584f0bd489989ba Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Sun, 8 Nov 2015 11:57:18 -0500
Subject: [PATCH 09/78] fixing crash on settings save
---
src/meta/settings.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/meta/settings.js b/src/meta/settings.js
index 96ea0a8708..ed6702a943 100644
--- a/src/meta/settings.js
+++ b/src/meta/settings.js
@@ -29,7 +29,7 @@ module.exports = function(Meta) {
settings: values
});
- meta.reloadRequired = true;
+ Meta.reloadRequired = true;
callback();
});
};
From e37709ad8bfae20c2f8f789af6377a01e22a214e Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Sun, 8 Nov 2015 12:28:48 -0500
Subject: [PATCH 10/78] something..
---
src/emailer.js | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/emailer.js b/src/emailer.js
index 2e1318d0cc..d63aa1bb7e 100644
--- a/src/emailer.js
+++ b/src/emailer.js
@@ -2,9 +2,11 @@
var async = require('async'),
winston = require('winston'),
+ nconf = require('nconf'),
templates = require('templates.js'),
nodemailer = require('nodemailer'),
htmlToText = require('html-to-text'),
+ url = require('url'),
User = require('./user'),
Plugins = require('./plugins'),
@@ -66,10 +68,9 @@ var async = require('async'),
}, next);
},
function (results, next) {
-
var data = {
to: email,
- from: meta.config['email:from'] || 'no-reply@localhost.lan',
+ from: meta.config['email:from'] || 'no-reply@' + getHostname(),
from_name: meta.config['email:from_name'] || 'NodeBB',
subject: results.subject,
html: results.html,
@@ -129,5 +130,12 @@ var async = require('async'),
], callback);
}
+ function getHostname() {
+ var configUrl = nconf.get('url'),
+ parsed = url.parse(configUrl);
+
+ return parsed.hostname;
+ };
+
}(module.exports));
From efe0726f9be653ff7549f35405395aa0f141ff28 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Sun, 8 Nov 2015 12:32:39 -0500
Subject: [PATCH 11/78] removing unused plaintext templates, closes #3854
---
src/views/emails/digest_plaintext.tpl | 30 -------------------
src/views/emails/invitation_plaintext.tpl | 10 -------
src/views/emails/notif_chat_plaintext.tpl | 14 ---------
src/views/emails/notif_post_plaintext.tpl | 13 --------
.../registration_accepted_plaintext.tpl | 8 -----
src/views/emails/reset_notify_plaintext.tpl | 7 -----
src/views/emails/reset_plaintext.tpl | 9 ------
src/views/emails/test_plaintext.tpl | 5 ----
src/views/emails/welcome_plaintext.tpl | 10 -------
9 files changed, 106 deletions(-)
delete mode 100644 src/views/emails/digest_plaintext.tpl
delete mode 100644 src/views/emails/invitation_plaintext.tpl
delete mode 100644 src/views/emails/notif_chat_plaintext.tpl
delete mode 100644 src/views/emails/notif_post_plaintext.tpl
delete mode 100644 src/views/emails/registration_accepted_plaintext.tpl
delete mode 100644 src/views/emails/reset_notify_plaintext.tpl
delete mode 100644 src/views/emails/reset_plaintext.tpl
delete mode 100644 src/views/emails/test_plaintext.tpl
delete mode 100644 src/views/emails/welcome_plaintext.tpl
diff --git a/src/views/emails/digest_plaintext.tpl b/src/views/emails/digest_plaintext.tpl
deleted file mode 100644
index d47c3a0166..0000000000
--- a/src/views/emails/digest_plaintext.tpl
+++ /dev/null
@@ -1,30 +0,0 @@
-[[email:welcome.greeting, {username}]],
-
-
-[[email:digest.notifications, {site_title}]]
-
-
-* {notifications.text} ({url}{notifications.path})
-
-
-===
-
-
-[[email:digest.latest_topics]]
-
-
-
-* {recent.title} ({url}/topic/{recent.slug})
-
-
-* [[email:digest.no_topics, {interval}]]
-
-
-[[email:digest.cta, {site_title}]]: {url}
-
-
-{footer_plaintext}
-
-===
-
-[[email:digest.unsub.info]] [[email:unsub.cta]]: {url}/user/{userslug}/settings.
\ No newline at end of file
diff --git a/src/views/emails/invitation_plaintext.tpl b/src/views/emails/invitation_plaintext.tpl
deleted file mode 100644
index 0ec6501f05..0000000000
--- a/src/views/emails/invitation_plaintext.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-[[email:greeting_no_name]],
-
-[[email:invitation.text1, {username}, {site_title}]]
-
-[[email:invitation.ctr]]
-
- {registerLink}
-
-{footer_plaintext}
-
diff --git a/src/views/emails/notif_chat_plaintext.tpl b/src/views/emails/notif_chat_plaintext.tpl
deleted file mode 100644
index 59cc5dc3ca..0000000000
--- a/src/views/emails/notif_chat_plaintext.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-[[email:greeting_with_name, {username}]],
-
-{summary}:
-
-{message.content}
-
-[[email:notif.chat.cta]]: {url}/chats/{fromUserslug}
-
-
-{footer_plaintext}
-
-===
-
-[[email:notif.chat.unsub.info]] [[email:unsub.cta]].
diff --git a/src/views/emails/notif_post_plaintext.tpl b/src/views/emails/notif_post_plaintext.tpl
deleted file mode 100644
index a2bf23fe20..0000000000
--- a/src/views/emails/notif_post_plaintext.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-[[email:greeting_with_name, {username}]],
-
-{intro}:
-
-{postBody}
-
-[[email:notif.post.cta]]: {url}
-
-{footer_plaintext}
-
-===
-
-[[email:notif.post.unsub.info]] [[email:unsub.cta]].
diff --git a/src/views/emails/registration_accepted_plaintext.tpl b/src/views/emails/registration_accepted_plaintext.tpl
deleted file mode 100644
index 404afd083f..0000000000
--- a/src/views/emails/registration_accepted_plaintext.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-[[email:greeting_with_name, {username}]],
-
-[[email:welcome.text1, {site_title}]]
-
-[[email:welcome.text3]]
-
-
-{footer_plaintext}
\ No newline at end of file
diff --git a/src/views/emails/reset_notify_plaintext.tpl b/src/views/emails/reset_notify_plaintext.tpl
deleted file mode 100644
index a2239ec13c..0000000000
--- a/src/views/emails/reset_notify_plaintext.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-[[email:greeting_with_name, {username}]],
-
-[[email:reset.notify.text1, {date}]]
-
-[[email:reset.notify.text2]]
-
-{footer_plaintext}
\ No newline at end of file
diff --git a/src/views/emails/reset_plaintext.tpl b/src/views/emails/reset_plaintext.tpl
deleted file mode 100644
index 7114b967a7..0000000000
--- a/src/views/emails/reset_plaintext.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-[[email:greeting_no_name]],
-
-[[email:reset.text1]]
-
-[[email:reset.text2]] [[email:reset.cta]]
-
- {reset_link}
-
-{footer_plaintext}
\ No newline at end of file
diff --git a/src/views/emails/test_plaintext.tpl b/src/views/emails/test_plaintext.tpl
deleted file mode 100644
index b7036533f4..0000000000
--- a/src/views/emails/test_plaintext.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-[[email:greeting_no_name]],
-
-[[email:test.text1]]
-
-{footer_plaintext}
\ No newline at end of file
diff --git a/src/views/emails/welcome_plaintext.tpl b/src/views/emails/welcome_plaintext.tpl
deleted file mode 100644
index 53d9543a0e..0000000000
--- a/src/views/emails/welcome_plaintext.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-[[email:greeting_with_name, {username}]],
-
-[[email:welcome.text1, {site_title}]]
-
-[[email:welcome.text2]] [[email:welcome.cta]]:
-
- {confirm_link}
-
-
-{footer_plaintext}
\ No newline at end of file
From 6f864a635421a4eb22611fccd94c6edf8d8f4007 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Sun, 8 Nov 2015 14:57:55 -0500
Subject: [PATCH 12/78] joindate iso
---
src/controllers/accounts/helpers.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js
index 75cbc4e7e0..77a71aba66 100644
--- a/src/controllers/accounts/helpers.js
+++ b/src/controllers/accounts/helpers.js
@@ -57,7 +57,7 @@ helpers.getUserDataByUserSlug = function(userslug, callerUID, callback) {
var isAdmin = results.isAdmin;
var self = parseInt(callerUID, 10) === parseInt(userData.uid, 10);
- userData.joindate = utils.toISOString(userData.joindate);
+ userData.joindateISO = utils.toISOString(userData.joindate);
userData.lastonlineISO = utils.toISOString(userData.lastonline || userData.joindate);
userData.age = userData.birthday ? Math.floor((new Date().getTime() - new Date(userData.birthday).getTime()) / 31536000000) : '';
From 1c76dd9ae54fff6cc7d497402fcd8e9c777e144e Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Sun, 8 Nov 2015 15:13:41 -0500
Subject: [PATCH 13/78] up emoji extended
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index f81545da14..6574b91a1c 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,7 @@
"nconf": "~0.8.2",
"nodebb-plugin-composer-default": "1.0.20",
"nodebb-plugin-dbsearch": "0.2.17",
- "nodebb-plugin-emoji-extended": "0.4.15",
+ "nodebb-plugin-emoji-extended": "0.4.16",
"nodebb-plugin-markdown": "4.0.7",
"nodebb-plugin-mentions": "1.0.9",
"nodebb-plugin-soundpack-default": "0.1.4",
From 3acf2e0812f288d4dbee47c59c5936b7e5449fc2 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Sun, 8 Nov 2015 15:25:44 -0500
Subject: [PATCH 14/78] pruned upgrade script
---
src/upgrade.js | 429 +------------------------------------------------
1 file changed, 2 insertions(+), 427 deletions(-)
diff --git a/src/upgrade.js b/src/upgrade.js
index 4a03f458b0..ecbfcfe6dd 100644
--- a/src/upgrade.js
+++ b/src/upgrade.js
@@ -3,21 +3,10 @@
var db = require('./database'),
async = require('async'),
winston = require('winston'),
- fs = require('fs'),
- path = require('path'),
-
- User = require('./user'),
- Topics = require('./topics'),
- Posts = require('./posts'),
- Categories = require('./categories'),
- Groups = require('./groups'),
- Meta = require('./meta'),
- Plugins = require('./plugins'),
- Utils = require('../public/src/utils'),
Upgrade = {},
- minSchemaDate = Date.UTC(2015, 0, 30), // This value gets updated every new MINOR version
+ minSchemaDate = Date.UTC(2015, 7, 18), // This value gets updated every new MINOR version
schemaDate, thisSchemaDate,
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema
@@ -58,7 +47,7 @@ Upgrade.upgrade = function(callback) {
// Prepare for upgrade & check to make sure the upgrade is possible
db.get('schemaDate', function(err, value) {
if(!value) {
- db.set('schemaDate', latestSchema, function(err) {
+ db.set('schemaDate', latestSchema, function() {
next();
});
schemaDate = latestSchema;
@@ -73,420 +62,6 @@ Upgrade.upgrade = function(callback) {
}
});
},
- function(next) {
- thisSchemaDate = Date.UTC(2015, 1, 8);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/02/08] Clearing reset tokens');
-
- db.deleteAll(['reset:expiry', 'reset:uid'], function(err) {
- if (err) {
- winston.error('[2015/02/08] Error encountered while Clearing reset tokens');
- return next(err);
- }
-
- winston.info('[2015/02/08] Clearing reset tokens done');
- Upgrade.update(thisSchemaDate, next);
- });
- } else {
- winston.info('[2015/02/08] Clearing reset tokens skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 1, 17);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/02/17] renaming home.tpl to categories.tpl');
-
- db.rename('widgets:home.tpl', 'widgets:categories.tpl', function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/02/17] renaming home.tpl to categories.tpl done');
- Upgrade.update(thisSchemaDate, next);
- });
- } else {
- winston.info('[2015/02/17] renaming home.tpl to categories.tpl skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 1, 23);
- if (schemaDate < thisSchemaDate) {
- db.setAdd('plugins:active', 'nodebb-rewards-essentials', function(err) {
- winston.info('[2015/2/23] Activating NodeBB Essential Rewards');
- Plugins.reload(function() {
- if (err) {
- next(err);
- } else {
- Upgrade.update(thisSchemaDate, next);
- }
- });
- });
- } else {
- winston.info('[2015/2/23] Activating NodeBB Essential Rewards - skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 1, 24);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/02/24] Upgrading plugins:active to sorted set');
-
- db.getSetMembers('plugins:active', function(err, activePlugins) {
- if (err) {
- return next(err);
- }
- if (!Array.isArray(activePlugins) || !activePlugins.length) {
- winston.info('[2015/02/24] Upgrading plugins:active to sorted set done');
- Upgrade.update(thisSchemaDate, next);
- }
-
- db.delete('plugins:active', function(err) {
- if (err) {
- return next(err);
- }
- var order = -1;
- async.eachSeries(activePlugins, function(plugin, next) {
- ++order;
- db.sortedSetAdd('plugins:active', order, plugin, next);
- }, function(err) {
- if (err) {
- return next(err);
- }
- winston.info('[2015/02/24] Upgrading plugins:active to sorted set done');
- Upgrade.update(thisSchemaDate, next);
- });
- });
- });
- } else {
- winston.info('[2015/02/24] Upgrading plugins:active to sorted set skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 1, 24, 1);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/02/24] Upgrading privilege groups to system groups');
-
- var isPrivilegeGroup = /^cid:\d+:privileges:[\w:]+$/;
- db.getSortedSetRange('groups:createtime', 0, -1, function (err, groupNames) {
- groupNames = groupNames.filter(function(name) {
- return isPrivilegeGroup.test(name);
- });
-
- async.eachLimit(groupNames, 5, function(groupName, next) {
- db.setObjectField('group:' + groupName, 'system', '1', next);
- }, function(err) {
- if (err) {
- return next(err);
- }
- winston.info('[2015/02/24] Upgrading privilege groups to system groups done');
- Upgrade.update(thisSchemaDate, next);
- });
- });
- } else {
- winston.info('[2015/02/24] Upgrading privilege groups to system groups skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 1, 25, 6);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/02/25] Upgrading menu items to dynamic navigation system');
-
- require('./navigation/admin').save(require('../install/data/navigation.json'), function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/02/25] Upgrading menu items to dynamic navigation system done');
- Upgrade.update(thisSchemaDate, next);
- });
- } else {
- winston.info('[2015/02/25] Upgrading menu items to dynamic navigation system skipped');
- next();
- }
- },
- function(next) {
- function upgradeHashToSortedSet(hash, callback) {
- db.getObject(hash, function(err, oldHash) {
- if (err || !oldHash) {
- return callback(err);
- }
-
- db.rename(hash, hash + '_old', function(err) {
- if (err) {
- return callback(err);
- }
- var keys = Object.keys(oldHash);
- if (!keys.length) {
- return callback();
- }
- async.each(keys, function(key, next) {
- db.sortedSetAdd(hash, oldHash[key], key, next);
- }, callback);
- });
- });
- }
-
- thisSchemaDate = Date.UTC(2015, 4, 7);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/05/07] Upgrading uid mappings to sorted set');
-
- async.series([
- async.apply(upgradeHashToSortedSet, 'email:uid'),
- async.apply(upgradeHashToSortedSet, 'fullname:uid'),
- async.apply(upgradeHashToSortedSet, 'username:uid'),
- async.apply(upgradeHashToSortedSet, 'userslug:uid'),
- ], function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/05/07] Upgrading uid mappings to sorted set done');
- Upgrade.update(thisSchemaDate, next);
- });
-
- } else {
- winston.info('[2015/05/07] Upgrading uid mappings to sorted set skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 4, 8);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/05/08] Fixing emails');
-
- db.getSortedSetRangeWithScores('email:uid', 0, -1, function(err, users) {
- if (err) {
- return next(err);
- }
-
- async.eachLimit(users, 100, function(user, next) {
- var newEmail = user.value.replace(/\uff0E/g, '.');
- if (newEmail === user.value) {
- return process.nextTick(next);
- }
- async.series([
- async.apply(db.sortedSetRemove, 'email:uid', user.value),
- async.apply(db.sortedSetAdd, 'email:uid', user.score, newEmail)
- ], next);
-
- }, function(err) {
- if (err) {
- return next(err);
- }
- winston.info('[2015/05/08] Fixing emails done');
- Upgrade.update(thisSchemaDate, next);
- });
- });
-
- } else {
- winston.info('[2015/05/08] Fixing emails skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 4, 11);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/05/11] Updating widgets to tjs 0.2x');
-
- require('./widgets/admin').get(function(err, data) {
- async.each(data.areas, function(area, next) {
- require('./widgets').getArea(area.template, area.location, function(err, widgets) {
- if (err) {
- return next(err);
- }
-
- for (var w in widgets) {
- if (widgets.hasOwnProperty(w)) {
- widgets[w].data.container = widgets[w].data.container
- .replace(/\{\{([\s\S]*?)\}\}/g, '{$1}')
- .replace(/\{([\s\S]*?)\}/g, '{{$1}}');
- }
- }
-
- require('./widgets').setArea({
- template: area.template,
- location: area.location,
- widgets: widgets
- }, next);
- });
- }, function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/05/11] Updating widgets to tjs 0.2x done');
- Upgrade.update(thisSchemaDate, next);
- });
- });
- } else {
- winston.info('[2015/05/11] Updating widgets to tjs 0.2x skipped');
- next();
- }
- },
- function(next) {
- function upgradeSet(set, callback) {
- db.getSortedSetRangeWithScores(set + ':uid', 0, -1, function(err, userData) {
- if (err) {
- return callback(err);
- }
-
- userData = userData.filter(function(user) {
- return user && user.value;
- });
-
- async.eachLimit(userData, 500, function(userData, next) {
- db.sortedSetAdd(set + ':sorted', 0, userData.value.toLowerCase() + ':' + userData.score, next);
- }, function(err) {
- callback(err);
- });
- });
- }
-
- thisSchemaDate = Date.UTC(2015, 4, 20);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/05/20] Adding username:sorted and email:sorted');
-
- async.series([
- function(next) {
- upgradeSet('username', next);
- },
- function(next) {
- upgradeSet('email', next);
- }
- ], function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/05/20] Added username:sorted and email:sorted');
- Upgrade.update(thisSchemaDate, next);
- });
- } else {
- winston.info('[2015/05/20] Adding username:sorted and email:sorted skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 5, 2);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/06/02] Creating group sorted sets');
-
- db.getSortedSetRange('groups:createtime', 0, -1, function(err, groupNames) {
- if (err) {
- return callback(err);
- }
-
- groupNames = groupNames.filter(Boolean);
-
- async.eachLimit(groupNames, 500, function(groupName, next) {
- db.getObjectFields('group:' + groupName, ['hidden', 'system', 'createtime', 'memberCount'], function(err, groupData) {
- if (err) {
- return next(err);
- }
-
- if (parseInt(groupData.hidden, 10) === 1 || parseInt(groupData.system, 10) === 1) {
- return next();
- }
- async.parallel([
- async.apply(db.sortedSetAdd, 'groups:visible:createtime', groupData.createtime, groupName),
- async.apply(db.sortedSetAdd, 'groups:visible:memberCount', groupData.memberCount || 0, groupName),
- async.apply(db.sortedSetAdd, 'groups:visible:name', 0, groupName.toLowerCase() + ':' + groupName)
- ], next);
- });
- }, function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/06/02] Creating group sorted sets done');
- Upgrade.update(thisSchemaDate, next);
- });
- });
- } else {
- winston.info('[2015/06/02] Creating group sorted sets skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 6, 3);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/07/03] Enabling default composer plugin');
-
- db.isSortedSetMember('plugins:active', 'nodebb-plugin-composer-default', function(err, active) {
- if (!active) {
- Plugins.toggleActive('nodebb-plugin-composer-default', function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/07/03] Enabling default composer plugin done');
- Upgrade.update(thisSchemaDate, next);
- });
- } else {
- winston.info('[2015/07/03] Enabling default composer plugin done');
- Upgrade.update(thisSchemaDate, next);
- }
- });
- } else {
- winston.info('[2015/07/03] Enabling default composer plugin skipped');
- next();
- }
- },
- function(next) {
- thisSchemaDate = Date.UTC(2015, 7, 18);
- if (schemaDate < thisSchemaDate) {
- updatesMade = true;
- winston.info('[2015/08/18] Creating children category sorted sets');
-
- db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) {
- if (err) {
- return next(err);
- }
-
- async.each(cids, function(cid, next) {
- db.getObjectFields('category:' + cid, ['parentCid', 'order'], function(err, category) {
- if (err) {
- return next(err);
- }
- if (!category) {
- return next();
- }
- if (parseInt(category.parentCid, 10)) {
- db.sortedSetAdd('cid:' + category.parentCid + ':children', parseInt(category.order, 10), cid, next);
- } else {
- db.sortedSetAdd('cid:0:children', parseInt(category.order, 10), cid, next);
- }
- });
- }, function(err) {
- if (err) {
- return next(err);
- }
-
- winston.info('[2015/08/18] Creating children category sorted sets done');
- Upgrade.update(thisSchemaDate, next);
- });
- });
-
- } else {
- winston.info('[2015/08/18] Creating children category sorted sets skipped');
- next();
- }
- },
function(next) {
thisSchemaDate = Date.UTC(2015, 8, 30);
if (schemaDate < thisSchemaDate) {
From ccdca39ad8eb9fcff7ad9c793fde85becc941c68 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 11:23:36 -0500
Subject: [PATCH 15/78] updated dependencies with versions that have proper
nbbpm compatibility values
---
package.json | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 6574b91a1c..fb474b1f6c 100644
--- a/package.json
+++ b/package.json
@@ -41,18 +41,18 @@
"mmmagic": "^0.4.0",
"morgan": "^1.3.2",
"nconf": "~0.8.2",
- "nodebb-plugin-composer-default": "1.0.20",
+ "nodebb-plugin-composer-default": "1.0.21",
"nodebb-plugin-dbsearch": "0.2.17",
"nodebb-plugin-emoji-extended": "0.4.16",
- "nodebb-plugin-markdown": "4.0.7",
- "nodebb-plugin-mentions": "1.0.9",
- "nodebb-plugin-soundpack-default": "0.1.4",
+ "nodebb-plugin-markdown": "4.0.8",
+ "nodebb-plugin-mentions": "1.0.10",
+ "nodebb-plugin-soundpack-default": "0.1.5",
"nodebb-plugin-spam-be-gone": "0.4.2",
- "nodebb-rewards-essentials": "0.0.5",
+ "nodebb-rewards-essentials": "0.0.6",
"nodebb-theme-lavender": "2.0.13",
- "nodebb-theme-persona": "4.0.32",
+ "nodebb-theme-persona": "4.0.33",
"nodebb-theme-vanilla": "5.0.13",
- "nodebb-widget-essentials": "2.0.4",
+ "nodebb-widget-essentials": "2.0.5",
"nodemailer": "0.7.1",
"npm": "^2.1.4",
"passport": "^0.3.0",
From 8a90afeed20bb0ea5fcfd82fc07cb5ac5886564b Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 11:55:44 -0500
Subject: [PATCH 16/78] fixes #3859
---
public/src/modules/search.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/public/src/modules/search.js b/public/src/modules/search.js
index f88f62b066..7b889999ea 100644
--- a/public/src/modules/search.js
+++ b/public/src/modules/search.js
@@ -35,9 +35,11 @@ define('search', ['navigator', 'translator'], function(nav, translator) {
};
function createQueryString(data) {
- var searchIn = data.in || 'titlesposts';
+ var searchIn = data['in'] || 'titlesposts';
var postedBy = data.by || '';
- var query = {in: searchIn};
+ var query = {
+ 'in': searchIn
+ };
if (postedBy && (searchIn === 'posts' || searchIn === 'titles' || searchIn === 'titlesposts')) {
query.by = postedBy;
From b9c9e24ca71514afdc8cee8283c0932a83f11377 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 12:59:11 -0500
Subject: [PATCH 17/78] upping lav minver
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index fb474b1f6c..43e25a66f8 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"nodebb-plugin-soundpack-default": "0.1.5",
"nodebb-plugin-spam-be-gone": "0.4.2",
"nodebb-rewards-essentials": "0.0.6",
- "nodebb-theme-lavender": "2.0.13",
+ "nodebb-theme-lavender": "3.0.0",
"nodebb-theme-persona": "4.0.33",
"nodebb-theme-vanilla": "5.0.13",
"nodebb-widget-essentials": "2.0.5",
From 051a8e22df4ad8cdc0de31a25b0874722454e662 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 14:39:00 -0500
Subject: [PATCH 18/78] Removed allowedFileExtensions meta config
Now, when NodeBB needs to determine file compatibility, jimp
will attempt to open the file for reading. If it fails, file is
considered to be of an invalid type.
---
package.json | 2 +-
src/controllers/uploads.js | 4 +--
src/file.js | 42 ++++---------------------------
src/user/picture.js | 2 +-
src/views/admin/settings/post.tpl | 3 ---
5 files changed, 9 insertions(+), 44 deletions(-)
diff --git a/package.json b/package.json
index 43e25a66f8..b08527d70d 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"gravatar": "^1.1.0",
"heapdump": "^0.3.0",
"html-to-text": "1.3.2",
- "jimp": "^0.2.5",
+ "jimp": "0.2.17",
"less": "^2.0.0",
"logrotate-stream": "^0.2.3",
"lru-cache": "^2.6.1",
diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js
index 3ee0c97c8e..7d45bea675 100644
--- a/src/controllers/uploads.js
+++ b/src/controllers/uploads.js
@@ -46,7 +46,7 @@ uploadsController.upload = function(req, res, filesIterator, next) {
uploadsController.uploadPost = function(req, res, next) {
uploadsController.upload(req, res, function(uploadedFile, next) {
- file.isFileTypeAllowed(uploadedFile.path, file.allowedExtensions(), function(err) {
+ file.isFileTypeAllowed(uploadedFile.path, function(err) {
if (err) {
return next(err);
}
@@ -67,7 +67,7 @@ uploadsController.uploadThumb = function(req, res, next) {
}
uploadsController.upload(req, res, function(uploadedFile, next) {
- file.isFileTypeAllowed(uploadedFile.path, file.allowedExtensions(), function(err) {
+ file.isFileTypeAllowed(uploadedFile.path, function(err) {
if (err) {
return next(err);
}
diff --git a/src/file.js b/src/file.js
index 80f0289a59..4dc258aa37 100644
--- a/src/file.js
+++ b/src/file.js
@@ -7,6 +7,7 @@ var fs = require('fs'),
mmmagic = require('mmmagic'),
Magic = mmmagic.Magic,
mime = require('mime'),
+ jimp = require('jimp'),
utils = require('../public/src/utils');
@@ -40,46 +41,13 @@ file.saveFileToLocal = function(filename, folder, tempPath, callback) {
is.pipe(os);
};
-file.isFileTypeAllowed = function(path, allowedExtensions, callback) {
- if (!Array.isArray(allowedExtensions) || !allowedExtensions.length) {
- return callback();
- }
-
- var magic = new Magic(mmmagic.MAGIC_MIME_TYPE);
- magic.detectFile(path, function(err, mimeType) {
- if (err) {
- return callback(err);
- }
-
- var uploadedFileExtension = mime.extension(mimeType);
-
- if (allowedExtensions.indexOf(uploadedFileExtension) === -1) {
- return callback(new Error('[[error:invalid-file-type, ' + allowedExtensions.join(', ') + ']]'));
- }
-
- callback();
+file.isFileTypeAllowed = function(path, callback) {
+ // Attempt to read the file, if it passes, file type is allowed
+ jimp.read(path, function(err) {
+ callback(err);
});
};
-file.allowedExtensions = function() {
- var meta = require('./meta');
- var allowedExtensions = (meta.config.allowedFileExtensions || '').trim();
- if (!allowedExtensions) {
- return [];
- }
- allowedExtensions = allowedExtensions.split(',');
- allowedExtensions = allowedExtensions.filter(Boolean).map(function(extension) {
- extension = extension.trim();
- return extension.replace(/\./g, '');
- });
-
- if (allowedExtensions.indexOf('jpg') !== -1 && allowedExtensions.indexOf('jpeg') === -1) {
- allowedExtensions.push('jpeg');
- }
-
- return allowedExtensions;
-};
-
file.exists = function(path, callback) {
fs.stat(path, function(err, stat) {
callback(!err && stat);
diff --git a/src/user/picture.js b/src/user/picture.js
index 96612ee14c..2d72d265d8 100644
--- a/src/user/picture.js
+++ b/src/user/picture.js
@@ -36,7 +36,7 @@ module.exports = function(User) {
next(!extension ? new Error('[[error:invalid-image-extension]]') : null);
},
function(next) {
- file.isFileTypeAllowed(picture.path, ['png', 'jpeg', 'jpg', 'gif'], next);
+ file.isFileTypeAllowed(picture.path, next);
},
function(next) {
image.resizeImage({
diff --git a/src/views/admin/settings/post.tpl b/src/views/admin/settings/post.tpl
index 84f2772086..96ceb01ff6 100644
--- a/src/views/admin/settings/post.tpl
+++ b/src/views/admin/settings/post.tpl
@@ -147,9 +147,6 @@
Topic Thumb Size
-
- Allowed file types, (ie png, jpg, pdf, zip). Leave empty to allow all.
-
From 277a3ba2af85f20d0cb6ade13e98513abf7e3e4a Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 14:47:40 -0500
Subject: [PATCH 19/78] Updated guest user icon and bgColor
Due to the label for guests being translatable, the
first character for guests was actually "[", causing
their user icon to be "[" with a colour.
This commit changes it to be a hardcoded question mark
and with a grey background colour.
---
src/user/data.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/user/data.js b/src/user/data.js
index e4bd7e8a2e..36dfc79247 100644
--- a/src/user/data.js
+++ b/src/user/data.js
@@ -105,6 +105,8 @@ module.exports = function(User) {
user.username = '[[global:guest]]';
user.userslug = '';
user.picture = '';
+ user['icon:text'] = '?';
+ user['icon:bgColor'] = '#aaa';
}
if (user.picture && user.picture === user.uploadedpicture) {
@@ -118,7 +120,7 @@ module.exports = function(User) {
}
// User Icons
- if (user.hasOwnProperty('picture') && user.username) {
+ if (user.hasOwnProperty('picture') && user.username && parseInt(user.uid, 10)) {
user['icon:text'] = (user.username[0] || '').toUpperCase();
user['icon:bgColor'] = iconBackgrounds[Array.prototype.reduce.call(user.username, function(cur, next) {
return cur + next.charCodeAt();
From ccf957f6814d850de4bfff389e49ed945bc41ea3 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 15:04:47 -0500
Subject: [PATCH 20/78] Added cancel button to picture change modal
---
public/src/client/account/edit.js | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js
index ed94cf4b57..baf6741078 100644
--- a/public/src/client/account/edit.js
+++ b/public/src/client/account/edit.js
@@ -89,6 +89,11 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'],
message: html,
show: true,
buttons: {
+ close: {
+ label: '[[global:close]]',
+ callback: onCloseModal,
+ className: 'btn-link'
+ },
update: {
label: '[[global:save_changes]]',
callback: saveSelection
@@ -137,6 +142,10 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'],
ajaxify.refresh();
});
}
+
+ function onCloseModal() {
+ modal.modal('hide');
+ }
});
});
});
From a9cb98c02ee816a28e0cee7ab4909d307b9f00f8 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 15:16:10 -0500
Subject: [PATCH 21/78] upped persona minver
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index b08527d70d..7219c2a55c 100644
--- a/package.json
+++ b/package.json
@@ -50,7 +50,7 @@
"nodebb-plugin-spam-be-gone": "0.4.2",
"nodebb-rewards-essentials": "0.0.6",
"nodebb-theme-lavender": "3.0.0",
- "nodebb-theme-persona": "4.0.33",
+ "nodebb-theme-persona": "4.0.34",
"nodebb-theme-vanilla": "5.0.13",
"nodebb-widget-essentials": "2.0.5",
"nodemailer": "0.7.1",
From 61889d9c30b9204b6cb04b85277686dbd3d86c2f Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 15:23:16 -0500
Subject: [PATCH 22/78] upped persona minver
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 7219c2a55c..0446b8226a 100644
--- a/package.json
+++ b/package.json
@@ -50,7 +50,7 @@
"nodebb-plugin-spam-be-gone": "0.4.2",
"nodebb-rewards-essentials": "0.0.6",
"nodebb-theme-lavender": "3.0.0",
- "nodebb-theme-persona": "4.0.34",
+ "nodebb-theme-persona": "4.0.35",
"nodebb-theme-vanilla": "5.0.13",
"nodebb-widget-essentials": "2.0.5",
"nodemailer": "0.7.1",
From 96afd131552edf11180e318d18faf355903222af Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 15:32:04 -0500
Subject: [PATCH 23/78] Removed mmmagic from dependencies, closes #3836
---
package.json | 1 -
src/file.js | 2 --
2 files changed, 3 deletions(-)
diff --git a/package.json b/package.json
index 0446b8226a..f630c487a4 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,6 @@
"mime": "^1.3.4",
"minimist": "^1.1.1",
"mkdirp": "~0.5.0",
- "mmmagic": "^0.4.0",
"morgan": "^1.3.2",
"nconf": "~0.8.2",
"nodebb-plugin-composer-default": "1.0.21",
diff --git a/src/file.js b/src/file.js
index 4dc258aa37..01a40ee6bd 100644
--- a/src/file.js
+++ b/src/file.js
@@ -4,8 +4,6 @@ var fs = require('fs'),
nconf = require('nconf'),
path = require('path'),
winston = require('winston'),
- mmmagic = require('mmmagic'),
- Magic = mmmagic.Magic,
mime = require('mime'),
jimp = require('jimp'),
From 8944856692cd21c5f0093e26c40098ced741dee4 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 9 Nov 2015 15:59:16 -0500
Subject: [PATCH 24/78] updated approval queue message to use modal
---
public/src/client/register.js | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/public/src/client/register.js b/public/src/client/register.js
index 099b31c087..ef11e4a4bd 100644
--- a/public/src/client/register.js
+++ b/public/src/client/register.js
@@ -84,7 +84,12 @@ define('forum/register', ['csrf', 'translator'], function(csrf, translator) {
if (data.referrer) {
window.location.href = data.referrer;
} else if (data.message) {
- app.alert({message: data.message, timeout: 20000});
+ require(['translator'], function(translator) {
+ translator.translate(data.message, function(msg) {
+ bootbox.alert(msg);
+ ajaxify.go('/');
+ });
+ });
}
},
error: function(data, status) {
From ec3ae307e976b395876a6df4ef0cf03fd3903023 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Tue, 10 Nov 2015 13:13:16 -0500
Subject: [PATCH 25/78] closes #3853
---
src/user/create.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/user/create.js b/src/user/create.js
index 9beca877f4..45fd9cbe62 100644
--- a/src/user/create.js
+++ b/src/user/create.js
@@ -151,7 +151,7 @@ module.exports = function(User) {
}
},
userNameValid: function(next) {
- next((!utils.isUserNameValid(userData.username) || !userData.userslug) ? new Error('[[error:invalid-username]]') : null);
+ next((!utils.isUserNameValid(userData.username) || !userData.userslug) ? new Error('[[error:invalid-username, ' + userData.username + ']]') : null);
},
passwordValid: function(next) {
if (userData.password) {
From e5cd92841915aaf992141b3ea17f7f9a1d35c279 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Tue, 10 Nov 2015 13:18:06 -0500
Subject: [PATCH 26/78] closes #3826
---
public/src/client/topic/posts.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js
index e83d30b36d..3af4945d51 100644
--- a/public/src/client/topic/posts.js
+++ b/public/src/client/topic/posts.js
@@ -212,6 +212,7 @@ define('forum/topic/posts', [
Posts.processPage = function(posts) {
Posts.showBottomPostBar();
+ posts.find('[component="post/content"] img:not(.not-responsive)').addClass('img-responsive');
app.createUserTooltips(posts);
app.replaceSelfLinks(posts.find('a'));
utils.addCommasToNumbers(posts.find('.formatted-number'));
From dc035c11f3da18421640569940589323a8c14b9f Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Tue, 10 Nov 2015 14:40:11 -0500
Subject: [PATCH 27/78] updated widget code to work better with sidebar areas
---
package.json | 2 +-
public/src/widgets.js | 8 +++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index f630c487a4..e3d766a9bb 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"nodebb-plugin-spam-be-gone": "0.4.2",
"nodebb-rewards-essentials": "0.0.6",
"nodebb-theme-lavender": "3.0.0",
- "nodebb-theme-persona": "4.0.35",
+ "nodebb-theme-persona": "4.0.36",
"nodebb-theme-vanilla": "5.0.13",
"nodebb-widget-essentials": "2.0.5",
"nodemailer": "0.7.1",
diff --git a/public/src/widgets.js b/public/src/widgets.js
index 18d593ad1f..2a8b052bba 100644
--- a/public/src/widgets.js
+++ b/public/src/widgets.js
@@ -57,7 +57,13 @@
if (location === 'footer' && !$('#content [widget-area="footer"]').length) {
$('#content').append($(''));
} else if (location === 'sidebar' && !$('#content [widget-area="sidebar"]').length) {
- $('#content > *').wrapAll($(''));
+ if ($('[component="account/cover"]').length) {
+ $('[component="account/cover"]').nextAll().wrapAll($(''));
+ } else if ($('[component="groups/cover"]').length) {
+ $('[component="groups/cover"]').nextAll().wrapAll($(''));
+ } else {
+ $('#content > *').wrapAll($(''));
+ }
} else if (location === 'header' && !$('#content [widget-area="header"]').length) {
$('#content').prepend($(''));
}
From 00a4ba6617a2c9f3d3632913902099d1f48a9893 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Tue, 10 Nov 2015 15:36:49 -0500
Subject: [PATCH 28/78] latest translations
---
public/language/bg/error.json | 4 +--
public/language/gl/error.json | 2 +-
public/language/gl/user.json | 2 +-
public/language/he/groups.json | 16 ++++++------
public/language/he/login.json | 6 ++---
public/language/he/modules.json | 12 ++++-----
public/language/he/recent.json | 2 +-
public/language/ro/global.json | 24 +++++++++---------
public/language/ro/groups.json | 2 +-
public/language/ro/pages.json | 6 ++---
public/language/ro/search.json | 44 ++++++++++++++++-----------------
public/language/ro/user.json | 2 +-
public/language/ro/users.json | 16 ++++++------
13 files changed, 69 insertions(+), 69 deletions(-)
diff --git a/public/language/bg/error.json b/public/language/bg/error.json
index c6eff6fd3f..f95a736f82 100644
--- a/public/language/bg/error.json
+++ b/public/language/bg/error.json
@@ -59,8 +59,8 @@
"group-name-too-short": "Името на групата е твърде кратко",
"group-already-exists": "Вече съществува такава група",
"group-name-change-not-allowed": "Промяната на името на групата не е разрешено",
- "group-already-member": "Already part of this group",
- "group-not-member": "Not a member of this group",
+ "group-already-member": "Вече членувате в тази група",
+ "group-not-member": "Не членувате в тази група",
"group-needs-owner": "Тази група се нуждае от поне един собственик",
"group-already-invited": "Този потребител вече е бил поканен",
"group-already-requested": "Вашата заявка за членство вече е била изпратена",
diff --git a/public/language/gl/error.json b/public/language/gl/error.json
index 892e1d42ec..96a6409dae 100644
--- a/public/language/gl/error.json
+++ b/public/language/gl/error.json
@@ -73,7 +73,7 @@
"invalid-file": "Arquivo Inválido",
"uploads-are-disabled": "As subidas están deshabilitadas",
"signature-too-long": "Desculpa, a firma non pode ser maior de %1 carácter(es).",
- "about-me-too-long": "Desculpa, o teu \"sobre min\" non pode superar-los %1 caracter(es),",
+ "about-me-too-long": "Desculpa, o teu \"sobre min\" non pode supera-los %1 caracteres,",
"cant-chat-with-yourself": "Non podes falar contigo mesmo!",
"chat-restricted": "Este usuario restrinxiu as charlas. Debedes seguirvos antes de que poidas falar con el. ",
"too-many-messages": "Estás a enviar moitas mensaxes, por favor, agarda un anaco. ",
diff --git a/public/language/gl/user.json b/public/language/gl/user.json
index fc5bb19223..2c82c76f13 100644
--- a/public/language/gl/user.json
+++ b/public/language/gl/user.json
@@ -96,7 +96,7 @@
"homepage": "Páxina de inicio",
"homepage_description": "Escolla unha páxina para o seu uso habitual como a páxina principal do foro ou \"Ningún\" para empregar a páxina de inicio",
"custom_route": "Modificar páxina de ruta",
- "custom_route_help": "Introduza o nome de ruta aquí, sen ningunha barra anterior (por exemplo, \"recente\", ou \"popular\")",
+ "custom_route_help": "Introduza o nome de ruta aquí, sen ningunha barra (por exemplo, \"recente\", ou \"popular\")",
"sso.title": "Servizos de Inicio de Sesión Único",
"sso.associated": "Asociado con",
"sso.not-associated": "Pica aquí para asociarte con"
diff --git a/public/language/he/groups.json b/public/language/he/groups.json
index 1fa0c01e99..3b5aaf3a28 100644
--- a/public/language/he/groups.json
+++ b/public/language/he/groups.json
@@ -10,7 +10,7 @@
"pending.reject_all": "דחה הכל",
"pending.none": "There are no pending members at this time",
"invited.none": "There are no invited members at this time",
- "invited.uninvite": "Rescind Invitation",
+ "invited.uninvite": "בטל הזמנה",
"invited.search": "Search for a user to invite to this group",
"invited.notification_title": "You have been invited to join %1",
"request.notification_title": "Group Membership Request from %1",
@@ -20,10 +20,10 @@
"details.title": "פרטי הקבוצה",
"details.members": "רשימת חברי הקבוצה",
"details.pending": "חברי קבוצה הממתינים לאישור",
- "details.invited": "Invited Members",
+ "details.invited": "חברים מוזמנים",
"details.has_no_posts": "חברי הקבוצה הזו לא העלו אף פוסט.",
"details.latest_posts": "פוסטים אחרונים",
- "details.private": "Private",
+ "details.private": "פרטי",
"details.grant": "Grant/Rescind Ownership",
"details.kick": "Kick",
"details.owner_options": "ניהול הקבוצה",
@@ -37,15 +37,15 @@
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
- "details.hidden": "Hidden",
+ "details.hidden": "מוסתר",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "מחק קבוצה",
"event.updated": "פרטי הקבוצה עודכנו",
"event.deleted": "קבוצת \"%1\" נמחקה",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
+ "membership.join-group": "הצטרף לקבוצה",
+ "membership.leave-group": "עזוב קבוצה",
"membership.reject": "דחה",
- "new-group.group_name": "Group Name:"
+ "new-group.group_name": "שם קבוצה"
}
\ No newline at end of file
diff --git a/public/language/he/login.json b/public/language/he/login.json
index 0a21aa92ba..6142a8a045 100644
--- a/public/language/he/login.json
+++ b/public/language/he/login.json
@@ -1,7 +1,7 @@
{
- "username-email": "Username / Email",
- "username": "Username",
- "email": "Email",
+ "username-email": "שם משתמש/אימייל",
+ "username": "שם משתמש",
+ "email": "אימייל",
"remember_me": "זכור אותי?",
"forgot_password": "שכחת סיסמתך?",
"alternative_logins": "התחבר באמצעות...",
diff --git a/public/language/he/modules.json b/public/language/he/modules.json
index fc02693c54..c1eb273a21 100644
--- a/public/language/he/modules.json
+++ b/public/language/he/modules.json
@@ -16,15 +16,15 @@
"chat.thirty_days": "30 ימים",
"chat.three_months": "3 חודשים",
"composer.compose": "Compose",
- "composer.show_preview": "Show Preview",
- "composer.hide_preview": "Hide Preview",
+ "composer.show_preview": "הצג תצוגה מקדימה",
+ "composer.hide_preview": "הסתר תצוגה מקדימה",
"composer.user_said_in": "%1 אמר ב%2:",
"composer.user_said": "%1 אמר:",
"composer.discard": "האם למחוק פוסט זה?",
"composer.submit_and_lock": "Submit and Lock",
"composer.toggle_dropdown": "Toggle Dropdown",
- "composer.uploading": "Uploading %1",
- "bootbox.ok": "OK",
- "bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "composer.uploading": "העלאה %1",
+ "bootbox.ok": "בסדר",
+ "bootbox.cancel": "בטל",
+ "bootbox.confirm": "אשר"
}
\ No newline at end of file
diff --git a/public/language/he/recent.json b/public/language/he/recent.json
index 7d4d3bf1a9..913388686a 100644
--- a/public/language/he/recent.json
+++ b/public/language/he/recent.json
@@ -6,7 +6,7 @@
"year": "שנה",
"alltime": "כל הזמן",
"no_recent_topics": "אין נושאים חדשים",
- "no_popular_topics": "There are no popular topics.",
+ "no_popular_topics": "אין נושאים פופולריים.",
"there-is-a-new-topic": "יש נושא חדש.",
"there-is-a-new-topic-and-a-new-post": "יש נושא ופוסט חדש.",
"there-is-a-new-topic-and-new-posts": "יש נושא ו%1 פוסטים חדשים.",
diff --git a/public/language/ro/global.json b/public/language/ro/global.json
index 191551b1cd..6b956122d8 100644
--- a/public/language/ro/global.json
+++ b/public/language/ro/global.json
@@ -22,18 +22,18 @@
"pagination.out_of": "%1 din %2",
"pagination.enter_index": "Introdu index",
"header.admin": "Admin",
- "header.categories": "Categories",
+ "header.categories": "Categorii",
"header.recent": "Recente",
"header.unread": "Necitite",
"header.tags": "Taguri",
"header.popular": "Populare",
"header.users": "Utilizatori",
- "header.groups": "Groups",
+ "header.groups": "Grupuri",
"header.chats": "Conversații",
"header.notifications": "Notificări",
"header.search": "Căutare",
"header.profile": "Profil",
- "header.navigation": "Navigation",
+ "header.navigation": "Navigare",
"notifications.loading": "Se încarcă notificările",
"chats.loading": "Se încarcă conversațiile",
"motd.welcome": "Bine ai venit la NodeBB, platforma de discuții a viitorului.",
@@ -52,12 +52,12 @@
"views": "Vizualizări",
"reputation": "Reputație",
"read_more": "citește mai mult",
- "more": "More",
+ "more": "Mai multe",
"posted_ago_by_guest": "postat %1 de Vizitator",
"posted_ago_by": "postat %1 de %2",
"posted_ago": "postat %1",
- "posted_in": "posted in %1",
- "posted_in_by": "posted in %1 by %2",
+ "posted_in": "postat în %1",
+ "posted_in_by": "postat în %1 de %2",
"posted_in_ago": "postat în %1 %2",
"posted_in_ago_by": "postat în %1 %2 de %3",
"posted_in_ago_by_guest": "postat în %1 %2 de Vizitator",
@@ -70,7 +70,7 @@
"recentposts": "Mesaje Recente",
"recentips": "Adrese IP autentificate recent",
"away": "Plecat",
- "dnd": "Do not disturb",
+ "dnd": "Nu mă deranja",
"invisible": "Invizibil",
"offline": "Deconectat",
"email": "Email",
@@ -79,9 +79,9 @@
"guests": "Vizitatori",
"updated.title": "Forumul a fost actualizat",
"updated.message": "Acest forum a fost actualizat la ultima version. Apasă aici pentru a reîmprospăta pagina.",
- "privacy": "Privacy",
- "follow": "Follow",
- "unfollow": "Unfollow",
- "delete_all": "Delete All",
- "map": "Map"
+ "privacy": "Intimitate",
+ "follow": "Urmăreşte",
+ "unfollow": "Nu mai urmări",
+ "delete_all": "Şterge Tot",
+ "map": "Hartă"
}
\ No newline at end of file
diff --git a/public/language/ro/groups.json b/public/language/ro/groups.json
index 721276d096..de4a00d287 100644
--- a/public/language/ro/groups.json
+++ b/public/language/ro/groups.json
@@ -1,5 +1,5 @@
{
- "groups": "Groups",
+ "groups": "Grupuri",
"view_group": "Vezi Grup",
"owner": "Group Owner",
"new_group": "Create New Group",
diff --git a/public/language/ro/pages.json b/public/language/ro/pages.json
index 5d81331aaa..154c115150 100644
--- a/public/language/ro/pages.json
+++ b/public/language/ro/pages.json
@@ -13,13 +13,13 @@
"users/map": "User Map",
"users/search": "User Search",
"notifications": "Notificări",
- "tags": "Tags",
+ "tags": "Taguri",
"tag": "Topics tagged under \"%1\"",
"register": "Register an account",
"login": "Login to your account",
"reset": "Reset your account password",
- "categories": "Categories",
- "groups": "Groups",
+ "categories": "Categorii",
+ "groups": "Grupuri",
"group": "%1 group",
"chats": "Chats",
"chat": "Chatting with %1",
diff --git a/public/language/ro/search.json b/public/language/ro/search.json
index 6af7a31683..6ba92e0b84 100644
--- a/public/language/ro/search.json
+++ b/public/language/ro/search.json
@@ -1,28 +1,28 @@
{
"results_matching": "%1 rezultat(e) pentru \"%2\", (%3 secunde)",
- "no-matches": "No matches found",
- "advanced-search": "Advanced Search",
- "in": "In",
- "titles": "Titles",
- "titles-posts": "Titles and Posts",
- "posted-by": "Posted by",
- "in-categories": "In Categories",
+ "no-matches": "Nu a fost găsit nici un rezultat",
+ "advanced-search": "Căutare avansată",
+ "in": "În",
+ "titles": "Titluri",
+ "titles-posts": "Titluri şi Mesaje",
+ "posted-by": "Postat de",
+ "in-categories": "În Categorii",
"search-child-categories": "Search child categories",
- "reply-count": "Reply Count",
- "at-least": "At least",
- "at-most": "At most",
- "post-time": "Post time",
- "newer-than": "Newer than",
- "older-than": "Older than",
- "any-date": "Any date",
- "yesterday": "Yesterday",
- "one-week": "One week",
- "two-weeks": "Two weeks",
- "one-month": "One month",
- "three-months": "Three months",
- "six-months": "Six months",
- "one-year": "One year",
- "sort-by": "Sort by",
+ "reply-count": "Numărul de răspunsuri",
+ "at-least": "Cel puţin",
+ "at-most": "Cel mult",
+ "post-time": "Ora mesajului",
+ "newer-than": "Mai noi decât",
+ "older-than": "Mai vechi decât",
+ "any-date": "Orice Dată",
+ "yesterday": "Ieri",
+ "one-week": "Acum o săptămână",
+ "two-weeks": "Două săptămâni",
+ "one-month": "O lună",
+ "three-months": "Trei luni",
+ "six-months": "Şase luni",
+ "one-year": "Un an",
+ "sort-by": "Sortează după",
"last-reply-time": "Last reply time",
"topic-title": "Topic title",
"number-of-replies": "Number of replies",
diff --git a/public/language/ro/user.json b/public/language/ro/user.json
index 6d0d199d07..587eb27570 100644
--- a/public/language/ro/user.json
+++ b/public/language/ro/user.json
@@ -33,7 +33,7 @@
"chat_with": "Chat with %1",
"follow": "Urmărește",
"unfollow": "Oprește urmărirea",
- "more": "More",
+ "more": "Mai multe",
"profile_update_success": "Profilul tău a fost actualizat cu succes!",
"change_picture": "Schimbă Poza",
"change_username": "Change Username",
diff --git a/public/language/ro/users.json b/public/language/ro/users.json
index 238636e567..d7a1a72fc4 100644
--- a/public/language/ro/users.json
+++ b/public/language/ro/users.json
@@ -9,13 +9,13 @@
"filter-by": "Filter By",
"online-only": "Online only",
"picture-only": "Picture only",
- "invite": "Invite",
+ "invite": "Invită",
"invitation-email-sent": "An invitation email has been sent to %1",
- "user_list": "User List",
- "recent_topics": "Recent Topics",
- "popular_topics": "Popular Topics",
- "unread_topics": "Unread Topics",
- "categories": "Categories",
- "tags": "Tags",
- "map": "Map"
+ "user_list": "Listă utilizatori",
+ "recent_topics": "Subiecte Noi",
+ "popular_topics": "Subiecte Populare",
+ "unread_topics": "Subiecte Necitite",
+ "categories": "Categorii",
+ "tags": "Taguri",
+ "map": "Hartă"
}
\ No newline at end of file
From 93c077dabd2e02a542d8f5ee6939f705a24be213 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Tue, 10 Nov 2015 16:02:56 -0500
Subject: [PATCH 29/78] closes #3825
---
public/language/en_GB/modules.json | 6 +++++-
public/src/modules/coverPhoto.js | 8 ++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/public/language/en_GB/modules.json b/public/language/en_GB/modules.json
index 673ad026a9..6bb97b68a4 100644
--- a/public/language/en_GB/modules.json
+++ b/public/language/en_GB/modules.json
@@ -28,5 +28,9 @@
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/src/modules/coverPhoto.js b/public/src/modules/coverPhoto.js
index c9794d3370..6a45732c9b 100644
--- a/public/src/modules/coverPhoto.js
+++ b/public/src/modules/coverPhoto.js
@@ -58,6 +58,13 @@ define('coverPhoto', [
axis: 'y',
units: 'percent'
});
+
+ app.alert({
+ alert_id: 'drag_start',
+ title: '[[modules:cover.dragging_title]]',
+ message: '[[modules:cover.dragging_message]]',
+ timeout: 5000
+ });
}
coverPhoto.save = function() {
@@ -69,6 +76,7 @@ define('coverPhoto', [
coverPhoto.coverEl.backgroundDraggable('disable');
coverPhoto.coverEl.off('dragover', coverPhoto.onDragOver);
coverPhoto.coverEl.off('drop', coverPhoto.onDrop);
+ app.alertSuccess('[[modules:cover.saved]]');
} else {
app.alertError(err.message);
}
From 3469c47a591524c7e708737520a827edd0ee137f Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Tue, 10 Nov 2015 16:04:13 -0500
Subject: [PATCH 30/78] language fallbacks for #3825
---
public/language/ar/modules.json | 5 ++++-
public/language/bg/modules.json | 5 ++++-
public/language/bn/modules.json | 5 ++++-
public/language/cs/modules.json | 5 ++++-
public/language/da/modules.json | 5 ++++-
public/language/de/modules.json | 5 ++++-
public/language/el/modules.json | 5 ++++-
public/language/en@pirate/modules.json | 5 ++++-
public/language/en_US/modules.json | 5 ++++-
public/language/es/modules.json | 5 ++++-
public/language/et/modules.json | 5 ++++-
public/language/fa_IR/modules.json | 5 ++++-
public/language/fi/modules.json | 5 ++++-
public/language/fr/modules.json | 5 ++++-
public/language/gl/modules.json | 5 ++++-
public/language/he/modules.json | 5 ++++-
public/language/hu/modules.json | 5 ++++-
public/language/id/modules.json | 5 ++++-
public/language/it/modules.json | 5 ++++-
public/language/ja/modules.json | 5 ++++-
public/language/ko/modules.json | 5 ++++-
public/language/lt/modules.json | 5 ++++-
public/language/ms/modules.json | 5 ++++-
public/language/nb/modules.json | 5 ++++-
public/language/nl/modules.json | 5 ++++-
public/language/pl/modules.json | 5 ++++-
public/language/pt_BR/modules.json | 5 ++++-
public/language/ro/modules.json | 5 ++++-
public/language/ru/modules.json | 5 ++++-
public/language/rw/modules.json | 5 ++++-
public/language/sc/modules.json | 5 ++++-
public/language/sk/modules.json | 5 ++++-
public/language/sl/modules.json | 5 ++++-
public/language/sr/modules.json | 5 ++++-
public/language/sv/modules.json | 5 ++++-
public/language/th/modules.json | 5 ++++-
public/language/tr/modules.json | 5 ++++-
public/language/vi/modules.json | 5 ++++-
public/language/zh_CN/modules.json | 5 ++++-
public/language/zh_TW/modules.json | 5 ++++-
40 files changed, 160 insertions(+), 40 deletions(-)
diff --git a/public/language/ar/modules.json b/public/language/ar/modules.json
index d2ede1b1ca..17998d13f9 100644
--- a/public/language/ar/modules.json
+++ b/public/language/ar/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "إلغاء",
- "bootbox.confirm": "تأكيد"
+ "bootbox.confirm": "تأكيد",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/bg/modules.json b/public/language/bg/modules.json
index 0be9ae627b..5f964a2b3d 100644
--- a/public/language/bg/modules.json
+++ b/public/language/bg/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Качване на %1",
"bootbox.ok": "Добре",
"bootbox.cancel": "Отказ",
- "bootbox.confirm": "Потвърждаване"
+ "bootbox.confirm": "Потвърждаване",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/bn/modules.json b/public/language/bn/modules.json
index 4c586d7150..dc26f2fd17 100644
--- a/public/language/bn/modules.json
+++ b/public/language/bn/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/cs/modules.json b/public/language/cs/modules.json
index 43d2a86062..cd4fe64059 100644
--- a/public/language/cs/modules.json
+++ b/public/language/cs/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/da/modules.json b/public/language/da/modules.json
index 71b98a18c7..81f62a112c 100644
--- a/public/language/da/modules.json
+++ b/public/language/da/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Annuller",
- "bootbox.confirm": "Bekræft"
+ "bootbox.confirm": "Bekræft",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/de/modules.json b/public/language/de/modules.json
index 00c80cc01f..167eda7885 100644
--- a/public/language/de/modules.json
+++ b/public/language/de/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Abbrechen",
- "bootbox.confirm": "Bestätigen"
+ "bootbox.confirm": "Bestätigen",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/el/modules.json b/public/language/el/modules.json
index f2a6f3a7e2..a47af0e58a 100644
--- a/public/language/el/modules.json
+++ b/public/language/el/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/en@pirate/modules.json b/public/language/en@pirate/modules.json
index 2a8d53b65f..7d2111c556 100644
--- a/public/language/en@pirate/modules.json
+++ b/public/language/en@pirate/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/en_US/modules.json b/public/language/en_US/modules.json
index 9280b26f21..b089365c68 100644
--- a/public/language/en_US/modules.json
+++ b/public/language/en_US/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/es/modules.json b/public/language/es/modules.json
index 95f7a7bfb6..ce265eaf87 100644
--- a/public/language/es/modules.json
+++ b/public/language/es/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Subiendo %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancelar",
- "bootbox.confirm": "Confirmar"
+ "bootbox.confirm": "Confirmar",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/et/modules.json b/public/language/et/modules.json
index 1b7c0c048f..99ab787405 100644
--- a/public/language/et/modules.json
+++ b/public/language/et/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "Olgu",
"bootbox.cancel": "Katkesta",
- "bootbox.confirm": "Kinnita"
+ "bootbox.confirm": "Kinnita",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/fa_IR/modules.json b/public/language/fa_IR/modules.json
index 738df3b45a..6548730c12 100644
--- a/public/language/fa_IR/modules.json
+++ b/public/language/fa_IR/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/fi/modules.json b/public/language/fi/modules.json
index 76893f6b1a..cd30656984 100644
--- a/public/language/fi/modules.json
+++ b/public/language/fi/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/fr/modules.json b/public/language/fr/modules.json
index 8b7892291f..2294209496 100644
--- a/public/language/fr/modules.json
+++ b/public/language/fr/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Envoi en cours %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Annuler",
- "bootbox.confirm": "Confirmer"
+ "bootbox.confirm": "Confirmer",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/gl/modules.json b/public/language/gl/modules.json
index 8c9102e625..cf3d04838f 100644
--- a/public/language/gl/modules.json
+++ b/public/language/gl/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Subindo %1",
"bootbox.ok": "De acordo",
"bootbox.cancel": "Cancelar",
- "bootbox.confirm": "Confirmar"
+ "bootbox.confirm": "Confirmar",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/he/modules.json b/public/language/he/modules.json
index c1eb273a21..5e39866635 100644
--- a/public/language/he/modules.json
+++ b/public/language/he/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "העלאה %1",
"bootbox.ok": "בסדר",
"bootbox.cancel": "בטל",
- "bootbox.confirm": "אשר"
+ "bootbox.confirm": "אשר",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/hu/modules.json b/public/language/hu/modules.json
index 56ad4ac7ca..476f5a1ce4 100644
--- a/public/language/hu/modules.json
+++ b/public/language/hu/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/id/modules.json b/public/language/id/modules.json
index 7dc353508e..e78074ee16 100644
--- a/public/language/id/modules.json
+++ b/public/language/id/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/it/modules.json b/public/language/it/modules.json
index 03e6d27018..04b4d8df6f 100644
--- a/public/language/it/modules.json
+++ b/public/language/it/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Annulla",
- "bootbox.confirm": "Conferma"
+ "bootbox.confirm": "Conferma",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/ja/modules.json b/public/language/ja/modules.json
index 1daf348dc2..1bfece5756 100644
--- a/public/language/ja/modules.json
+++ b/public/language/ja/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/ko/modules.json b/public/language/ko/modules.json
index 686e06078b..b398719598 100644
--- a/public/language/ko/modules.json
+++ b/public/language/ko/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/lt/modules.json b/public/language/lt/modules.json
index 8edd717201..2ce3c13d35 100644
--- a/public/language/lt/modules.json
+++ b/public/language/lt/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/ms/modules.json b/public/language/ms/modules.json
index a1f1fb2ca8..3278bad63d 100644
--- a/public/language/ms/modules.json
+++ b/public/language/ms/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Memuat naik %1",
"bootbox.ok": "Ok",
"bootbox.cancel": "Batal",
- "bootbox.confirm": "Pasti"
+ "bootbox.confirm": "Pasti",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/nb/modules.json b/public/language/nb/modules.json
index 8e422b9a47..0a2e6a3b16 100644
--- a/public/language/nb/modules.json
+++ b/public/language/nb/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Avbryt",
- "bootbox.confirm": "Bekreft"
+ "bootbox.confirm": "Bekreft",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/nl/modules.json b/public/language/nl/modules.json
index 672f1dc3e3..3342832755 100644
--- a/public/language/nl/modules.json
+++ b/public/language/nl/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Anuleren",
- "bootbox.confirm": "Bevestig"
+ "bootbox.confirm": "Bevestig",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/pl/modules.json b/public/language/pl/modules.json
index efe8b450f8..47a4eb6fa3 100644
--- a/public/language/pl/modules.json
+++ b/public/language/pl/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Anuluj",
- "bootbox.confirm": "Potwierdź"
+ "bootbox.confirm": "Potwierdź",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/pt_BR/modules.json b/public/language/pt_BR/modules.json
index d19c5cc8b5..103c81a8e5 100644
--- a/public/language/pt_BR/modules.json
+++ b/public/language/pt_BR/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Enviando %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancelar",
- "bootbox.confirm": "Confirmar"
+ "bootbox.confirm": "Confirmar",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/ro/modules.json b/public/language/ro/modules.json
index 8dd9ea3d42..c3d76d0617 100644
--- a/public/language/ro/modules.json
+++ b/public/language/ro/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/ru/modules.json b/public/language/ru/modules.json
index 2ec5e4306f..68032d3140 100644
--- a/public/language/ru/modules.json
+++ b/public/language/ru/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "ОК",
"bootbox.cancel": "Отмена",
- "bootbox.confirm": "Подтвердить"
+ "bootbox.confirm": "Подтвердить",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/rw/modules.json b/public/language/rw/modules.json
index c502325b1f..2990e472a1 100644
--- a/public/language/rw/modules.json
+++ b/public/language/rw/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/sc/modules.json b/public/language/sc/modules.json
index 391fdad811..401825cafc 100644
--- a/public/language/sc/modules.json
+++ b/public/language/sc/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/sk/modules.json b/public/language/sk/modules.json
index f88f61bbf5..655385ee82 100644
--- a/public/language/sk/modules.json
+++ b/public/language/sk/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/sl/modules.json b/public/language/sl/modules.json
index a98131711a..ab7048bbfa 100644
--- a/public/language/sl/modules.json
+++ b/public/language/sl/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "Vredu",
"bootbox.cancel": "Prekliči",
- "bootbox.confirm": "Potrdi"
+ "bootbox.confirm": "Potrdi",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/sr/modules.json b/public/language/sr/modules.json
index b3dc55b245..e1410e6399 100644
--- a/public/language/sr/modules.json
+++ b/public/language/sr/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/sv/modules.json b/public/language/sv/modules.json
index eeb6a32fb5..5df9836063 100644
--- a/public/language/sv/modules.json
+++ b/public/language/sv/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/th/modules.json b/public/language/th/modules.json
index d6eb21f7a4..df389d716f 100644
--- a/public/language/th/modules.json
+++ b/public/language/th/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/tr/modules.json b/public/language/tr/modules.json
index 05c8d40ebf..da7c7a156c 100644
--- a/public/language/tr/modules.json
+++ b/public/language/tr/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Yükleniyor %1",
"bootbox.ok": "Tamam",
"bootbox.cancel": "İptal",
- "bootbox.confirm": "Onayla"
+ "bootbox.confirm": "Onayla",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/vi/modules.json b/public/language/vi/modules.json
index b015560386..9b1b93666d 100644
--- a/public/language/vi/modules.json
+++ b/public/language/vi/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/zh_CN/modules.json b/public/language/zh_CN/modules.json
index 745e0f2b9f..839b1e3bc3 100644
--- a/public/language/zh_CN/modules.json
+++ b/public/language/zh_CN/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "确认",
"bootbox.cancel": "取消",
- "bootbox.confirm": "确认"
+ "bootbox.confirm": "确认",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
diff --git a/public/language/zh_TW/modules.json b/public/language/zh_TW/modules.json
index ce543360b5..a6b03030b8 100644
--- a/public/language/zh_TW/modules.json
+++ b/public/language/zh_TW/modules.json
@@ -26,5 +26,8 @@
"composer.uploading": "Uploading %1",
"bootbox.ok": "OK",
"bootbox.cancel": "Cancel",
- "bootbox.confirm": "Confirm"
+ "bootbox.confirm": "Confirm",
+ "cover.dragging_title": "Cover Photo Positioning",
+ "cover.dragging_message": "Drag the cover photo to the desired position and click \"Save\"",
+ "cover.saved": "Cover photo image and position saved"
}
\ No newline at end of file
From 872e00849a6cdd93629477e2c40b964b8234b02b Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Wed, 11 Nov 2015 00:00:02 -0500
Subject: [PATCH 31/78] moved deleteVotes into deleteAccount
---
src/user/delete.js | 85 ++++++++++++++++++++++------------------------
1 file changed, 41 insertions(+), 44 deletions(-)
diff --git a/src/user/delete.js b/src/user/delete.js
index 778d270ecc..2fc444da42 100644
--- a/src/user/delete.js
+++ b/src/user/delete.js
@@ -22,35 +22,12 @@ module.exports = function(User) {
function(next) {
deleteTopics(uid, next);
},
- function(next) {
- deleteVotes(uid, next);
- },
function(next) {
User.deleteAccount(uid, next);
}
], callback);
};
- function deleteVotes(uid, callback) {
- async.waterfall([
- function (next) {
- async.parallel({
- upvotedPids: async.apply(db.getSortedSetRange, 'uid:' + uid + ':upvote', 0, -1),
- downvotedPids: async.apply(db.getSortedSetRange, 'uid:' + uid + ':downvote', 0, -1)
- }, next);
- },
- function (pids, next) {
- pids = pids.upvotedPids.concat(pids.downvotedPids).filter(function(pid, index, array) {
- return pid && array.indexOf(pid) === index;
- });
-
- async.eachLimit(pids, 50, function(pid, next) {
- favourites.unvote(pid, uid, next);
- }, next);
- }
- ], callback);
- }
-
function deletePosts(uid, callback) {
deleteSortedSetElements('uid:' + uid + ':posts', posts.purge, callback);
}
@@ -66,18 +43,19 @@ module.exports = function(User) {
}
User.deleteAccount = function(uid, callback) {
- User.getUserFields(uid, ['username', 'userslug', 'fullname', 'email'], function(err, userData) {
- if (err) {
- return callback(err);
- }
-
- plugins.fireHook('static:user.delete', {
- uid: uid
- }, function(err) {
- if (err) {
- return callback(err);
- }
-
+ var userData;
+ async.waterfall([
+ function (next) {
+ User.getUserFields(uid, ['username', 'userslug', 'fullname', 'email'], next);
+ },
+ function (_userData, next) {
+ userData = _userData;
+ plugins.fireHook('static:user.delete', {uid: uid}, next);
+ },
+ function (next) {
+ deleteVotes(uid, next);
+ },
+ function (next) {
async.parallel([
function(next) {
db.sortedSetRemove('username:uid', userData.username, next);
@@ -137,17 +115,36 @@ module.exports = function(User) {
// Deprecated as of v0.7.4, remove in v1.0.0
plugins.fireHook('filter:user.delete', uid, next);
}
- ], function(err) {
- if (err) {
- return callback(err);
- }
-
- db.deleteAll(['followers:' + uid, 'following:' + uid, 'user:' + uid], callback);
- });
- });
- });
+ ], next);
+ },
+ function (results, next) {
+ db.deleteAll(['followers:' + uid, 'following:' + uid, 'user:' + uid], next);
+ }
+ ], callback);
};
+ function deleteVotes(uid, callback) {
+ async.waterfall([
+ function (next) {
+ async.parallel({
+ upvotedPids: async.apply(db.getSortedSetRange, 'uid:' + uid + ':upvote', 0, -1),
+ downvotedPids: async.apply(db.getSortedSetRange, 'uid:' + uid + ':downvote', 0, -1)
+ }, next);
+ },
+ function (pids, next) {
+ pids = pids.upvotedPids.concat(pids.downvotedPids).filter(function(pid, index, array) {
+ return pid && array.indexOf(pid) === index;
+ });
+
+ async.eachLimit(pids, 50, function(pid, next) {
+ favourites.unvote(pid, uid, next);
+ }, next);
+ }
+ ], function(err) {
+ callback(err);
+ });
+ }
+
function deleteUserIps(uid, callback) {
async.waterfall([
function (next) {
From dbe5b963bd9a490ff86e3ae419f2957440450b0b Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Wed, 11 Nov 2015 13:52:29 -0500
Subject: [PATCH 32/78] fixes #3863 :trollface:
---
src/controllers/uploads.js | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js
index 7d45bea675..511cfe2f8e 100644
--- a/src/controllers/uploads.js
+++ b/src/controllers/uploads.js
@@ -46,17 +46,17 @@ uploadsController.upload = function(req, res, filesIterator, next) {
uploadsController.uploadPost = function(req, res, next) {
uploadsController.upload(req, res, function(uploadedFile, next) {
- file.isFileTypeAllowed(uploadedFile.path, function(err) {
- if (err) {
- return next(err);
- }
+ if (uploadedFile.type.match(/image./)) {
+ file.isFileTypeAllowed(uploadedFile.path, function(err) {
+ if (err) {
+ return next(err);
+ }
- if (uploadedFile.type.match(/image./)) {
uploadImage(req.user.uid, uploadedFile, next);
- } else {
- uploadFile(req.user.uid, uploadedFile, next);
- }
- });
+ });
+ } else {
+ uploadFile(req.user.uid, uploadedFile, next);
+ }
}, next);
};
From 34725ec3e5df9f1523adf6fa756728cb31823304 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Wed, 11 Nov 2015 14:20:43 -0500
Subject: [PATCH 33/78] Fixes #3852
Added meta data to user profile pages, and also added noEscape
option to meta tag input. If set, validator escaping won't be
run on that value.
---
src/controllers/accounts/profile.js | 37 +++++++++++++++++++++++++++++
src/controllers/topics.js | 9 ++++---
src/meta/tags.js | 11 ++++++---
3 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js
index 7ecca84789..29e353b084 100644
--- a/src/controllers/accounts/profile.js
+++ b/src/controllers/accounts/profile.js
@@ -2,6 +2,7 @@
var nconf = require('nconf'),
async = require('async'),
+ S = require('string'),
user = require('../../user'),
posts = require('../../posts'),
@@ -80,6 +81,42 @@ profileController.get = function(req, res, callback) {
userData.profileviews = 1;
}
+ var plainAboutMe = S(userData.aboutme).decodeHTMLEntities().stripTags().s;
+
+ res.locals.metaTags = [
+ {
+ name: "title",
+ content: userData.fullname || userData.username
+ },
+ {
+ name: "description",
+ content: plainAboutMe
+ },
+ {
+ property: 'og:title',
+ content: userData.fullname || userData.username
+ },
+ {
+ property: 'og:description',
+ content: plainAboutMe
+ }
+ ];
+
+ if (userData.picture) {
+ res.locals.metaTags.push(
+ {
+ property: 'og:image',
+ content: userData.picture,
+ noEscape: true
+ },
+ {
+ property: "og:image:url",
+ content: userData.picture,
+ noEscape: true
+ }
+ );
+ }
+
plugins.fireHook('filter:user.account', {userData: userData, uid: req.uid}, next);
}
], function(err, results) {
diff --git a/src/controllers/topics.js b/src/controllers/topics.js
index f5fb015c15..aa3da51053 100644
--- a/src/controllers/topics.js
+++ b/src/controllers/topics.js
@@ -203,15 +203,18 @@ topicsController.get = function(req, res, callback) {
},
{
property: "og:url",
- content: nconf.get('url') + '/topic/' + topicData.slug + (req.params.post_index ? ('/' + req.params.post_index) : '')
+ content: nconf.get('url') + '/topic/' + topicData.slug + (req.params.post_index ? ('/' + req.params.post_index) : ''),
+ noEscape: true
},
{
property: 'og:image',
- content: ogImageUrl
+ content: ogImageUrl,
+ noEscape: true
},
{
property: "og:image:url",
- content: ogImageUrl
+ content: ogImageUrl,
+ noEscape: true
},
{
property: "article:published_time",
diff --git a/src/meta/tags.js b/src/meta/tags.js
index d571038cc4..55e5bd32d2 100644
--- a/src/meta/tags.js
+++ b/src/meta/tags.js
@@ -32,10 +32,12 @@ module.exports = function(Meta) {
content: Meta.config.keywords || ''
}, {
name: 'msapplication-badge',
- content: 'frequency=30; polling-uri=' + nconf.get('url') + '/sitemap.xml'
+ content: 'frequency=30; polling-uri=' + nconf.get('url') + '/sitemap.xml',
+ noEscape: true
}, {
name: 'msapplication-square150x150logo',
- content: Meta.config['brand:logo'] || ''
+ content: Meta.config['brand:logo'] || '',
+ noEscape: true
}];
plugins.fireHook('filter:meta.getMetaTags', defaultTags, next);
},
@@ -89,7 +91,10 @@ module.exports = function(Meta) {
return tag;
}
- tag.content = validator.escape(tag.content);
+ if (!tag.noEscape) {
+ tag.content = validator.escape(tag.content);
+ }
+
return tag;
});
From 440bd5c37c0b071cfbf30a089f6b26784bd5ac6c Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Wed, 11 Nov 2015 15:19:11 -0500
Subject: [PATCH 34/78] fixed crash on empty aboutme
---
src/controllers/accounts/profile.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js
index 29e353b084..278211e94e 100644
--- a/src/controllers/accounts/profile.js
+++ b/src/controllers/accounts/profile.js
@@ -81,7 +81,7 @@ profileController.get = function(req, res, callback) {
userData.profileviews = 1;
}
- var plainAboutMe = S(userData.aboutme).decodeHTMLEntities().stripTags().s;
+ var plainAboutMe = userData.aboutme ? S(userData.aboutme).decodeHTMLEntities().stripTags().s : '';
res.locals.metaTags = [
{
From 0260c5b68b2c5ea2c86e613be5972842ee17da7f Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Wed, 11 Nov 2015 15:38:34 -0500
Subject: [PATCH 35/78] updated image_spec to not have gif, but bmp
---
public/language/en_GB/user.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json
index 15cf8d7405..c789570359 100644
--- a/public/language/en_GB/user.json
+++ b/public/language/en_GB/user.json
@@ -62,7 +62,7 @@
"upload_picture": "Upload picture",
"upload_a_picture": "Upload a picture",
"remove_uploaded_picture" : "Remove Uploaded Picture",
- "image_spec": "You may only upload PNG, JPG, or GIF files",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Settings",
"show_email": "Show My Email",
From e35cb6d78db5cef2a2cff563058509c47ceb267d Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Wed, 11 Nov 2015 15:41:08 -0500
Subject: [PATCH 36/78] latest translations
---
public/language/ar/user.json | 2 +-
public/language/bg/user.json | 2 +-
public/language/bn/user.json | 2 +-
public/language/cs/user.json | 2 +-
public/language/da/user.json | 18 +++++++++---------
public/language/de/user.json | 2 +-
public/language/el/user.json | 2 +-
public/language/en@pirate/user.json | 2 +-
public/language/en_US/user.json | 2 +-
public/language/es/search.json | 2 +-
public/language/es/user.json | 2 +-
public/language/et/user.json | 2 +-
public/language/fa_IR/user.json | 2 +-
public/language/fi/user.json | 2 +-
public/language/fr/user.json | 2 +-
public/language/gl/user.json | 2 +-
public/language/he/user.json | 2 +-
public/language/hu/user.json | 2 +-
public/language/id/user.json | 2 +-
public/language/it/user.json | 2 +-
public/language/ja/user.json | 2 +-
public/language/ko/user.json | 2 +-
public/language/lt/user.json | 2 +-
public/language/ms/user.json | 2 +-
public/language/nb/user.json | 2 +-
public/language/nl/user.json | 2 +-
public/language/pl/user.json | 2 +-
public/language/pt_BR/user.json | 2 +-
public/language/ro/user.json | 2 +-
public/language/ru/user.json | 2 +-
public/language/rw/user.json | 2 +-
public/language/sc/user.json | 2 +-
public/language/sk/user.json | 2 +-
public/language/sl/user.json | 2 +-
public/language/sr/user.json | 2 +-
public/language/sv/user.json | 2 +-
public/language/th/user.json | 2 +-
public/language/tr/user.json | 2 +-
public/language/vi/user.json | 2 +-
public/language/zh_CN/user.json | 2 +-
public/language/zh_TW/user.json | 2 +-
41 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/public/language/ar/user.json b/public/language/ar/user.json
index 2440385a2a..c5f21a0d78 100644
--- a/public/language/ar/user.json
+++ b/public/language/ar/user.json
@@ -58,7 +58,7 @@
"upload_picture": "ارفع الصورة",
"upload_a_picture": "رفع صورة",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "لايمكنك رفع إلا الصور ذات الصيغ PNG أو JPG أو GIF.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "خيارات",
"show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل",
diff --git a/public/language/bg/user.json b/public/language/bg/user.json
index ddcc7e54e9..01d20857ad 100644
--- a/public/language/bg/user.json
+++ b/public/language/bg/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Качване на снимка",
"upload_a_picture": "Качване на снимка",
"remove_uploaded_picture": "Премахване на качената снимка",
- "image_spec": "Можете да качвате само PNG, JPG, или GIF файлове",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Настройки",
"show_email": "Да се показва е-пощата ми",
"show_fullname": "Да се показва цялото ми име",
diff --git a/public/language/bn/user.json b/public/language/bn/user.json
index 85f91b3a97..93f901f128 100644
--- a/public/language/bn/user.json
+++ b/public/language/bn/user.json
@@ -58,7 +58,7 @@
"upload_picture": "ছবি আপলোড করুন",
"upload_a_picture": "ছবি (একটি) আপলোড করুন",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "আপনি কেবলমাত্র PNG, JPG অথবা GIF ফাইল আপলোড করতে পারবেন",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "সেটিংস",
"show_email": "আমার ইমেইল দেখাও",
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
diff --git a/public/language/cs/user.json b/public/language/cs/user.json
index 2866317dce..ef2e3ba003 100644
--- a/public/language/cs/user.json
+++ b/public/language/cs/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Nahrát obrázek",
"upload_a_picture": "Nahrát obrázek",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Nahrávat lze pouze soubory PNG, JPG a GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Nastavení",
"show_email": "Zobrazovat můj email v profilu",
"show_fullname": "Zobrazovat celé jméno",
diff --git a/public/language/da/user.json b/public/language/da/user.json
index aa2250f5fa..1eaefaf54a 100644
--- a/public/language/da/user.json
+++ b/public/language/da/user.json
@@ -30,16 +30,16 @@
"signature": "Signatur",
"birthday": "Fødselsdag",
"chat": "Chat",
- "chat_with": "Chat with %1",
+ "chat_with": "Chat med %1",
"follow": "Følg",
"unfollow": "Følg ikke",
"more": "Mere",
"profile_update_success": "Din profil blev opdateret",
"change_picture": "Skift billede",
- "change_username": "Change Username",
- "change_email": "Change Email",
+ "change_username": "Ændre brugernavn",
+ "change_email": "Ændre email",
"edit": "Rediger",
- "default_picture": "Default Icon",
+ "default_picture": "Standard ikon",
"uploaded_picture": "Upload billede",
"upload_new_picture": "Upload nyt billede",
"upload_new_picture_from_url": "Upload nyt billede fra URL",
@@ -54,11 +54,11 @@
"confirm_password": "Bekræft kodeord",
"password": "Kodeord",
"username_taken_workaround": "Det valgte brugernavn er allerede taget, så vi har ændret det en smule. Du hedder nu %1",
- "password_same_as_username": "Your password is the same as your username, please select another password.",
+ "password_same_as_username": "Din adgangskode er det samme som dit brugernavn, vælg venligst en anden adgangskode.",
"upload_picture": "Upload billede",
"upload_a_picture": "Upload et billede",
"remove_uploaded_picture": "Fjern uploaded billede",
- "image_spec": "Du kan kun uploade PNG, JPG eller GIF billeder",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Indstillinger",
"show_email": "Vis min emailaddresse",
"show_fullname": "Vis mit fulde navn",
@@ -92,9 +92,9 @@
"grouptitle": "Vælg gruppe titlen du gerne vil fremvise",
"no-group-title": "Ingen gruppe titel",
"select-skin": "Vælg et skin",
- "select-homepage": "Select a Homepage",
- "homepage": "Homepage",
- "homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.",
+ "select-homepage": "Vælg en hjemmeside",
+ "homepage": "Hjemmeside",
+ "homepage_description": "Vælg en side som forummets hjemmeside, eller 'Ingen' for at bruge standard hjemmesiden.",
"custom_route": "Custom Homepage Route",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")",
"sso.title": "Single Sign-on Services",
diff --git a/public/language/de/user.json b/public/language/de/user.json
index 0ae7801ae1..1156bdeea6 100644
--- a/public/language/de/user.json
+++ b/public/language/de/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Bild hochladen",
"upload_a_picture": "Ein Bild hochladen",
"remove_uploaded_picture": "Hochgeladenes Bild entfernen",
- "image_spec": "Sie dürfen nur Dateien vom Typ PNG, JPG oder GIF hochladen",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Einstellungen",
"show_email": "Zeige meine E-Mail Adresse an.",
"show_fullname": "Zeige meinen kompletten Namen an",
diff --git a/public/language/el/user.json b/public/language/el/user.json
index d94895fdd4..530635982c 100644
--- a/public/language/el/user.json
+++ b/public/language/el/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Ανέβασμα φωτογραφίας",
"upload_a_picture": "Ανέβασε μια φωτογραφία",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Μπορείς να ανεβάσεις αρχεία τύπου PNG, JPG ή GIF μόνο",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Επιλογές",
"show_email": "Εμφάνιση του email μου",
"show_fullname": "Show My Full Name",
diff --git a/public/language/en@pirate/user.json b/public/language/en@pirate/user.json
index 4f4841504b..95531ce7b3 100644
--- a/public/language/en@pirate/user.json
+++ b/public/language/en@pirate/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Upload picture",
"upload_a_picture": "Upload a picture",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "You may only upload PNG, JPG, or GIF files",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Settings",
"show_email": "Show My Email",
"show_fullname": "Show My Full Name",
diff --git a/public/language/en_US/user.json b/public/language/en_US/user.json
index 96cbd4ea14..3d59f40954 100644
--- a/public/language/en_US/user.json
+++ b/public/language/en_US/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Upload picture",
"upload_a_picture": "Upload a picture",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "You may only upload PNG, JPG, or GIF files",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Settings",
"show_email": "Show My Email",
"show_fullname": "Show My Full Name",
diff --git a/public/language/es/search.json b/public/language/es/search.json
index 06ace7e9a9..aa9fff4136 100644
--- a/public/language/es/search.json
+++ b/public/language/es/search.json
@@ -4,7 +4,7 @@
"advanced-search": "Búsqueda Avanzada",
"in": "En",
"titles": "Títulos",
- "titles-posts": "Títulos y publicaciones",
+ "titles-posts": "Títulos y posts",
"posted-by": "Publicado por",
"in-categories": "En categorías",
"search-child-categories": "Buscar categorías hijas",
diff --git a/public/language/es/user.json b/public/language/es/user.json
index a3c508ca0b..cf245bd3bc 100644
--- a/public/language/es/user.json
+++ b/public/language/es/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Subir foto",
"upload_a_picture": "Subir una foto",
"remove_uploaded_picture": "Borrar Imagen subida",
- "image_spec": "Sólo puedes subir imágenes en formato PNG, JPG o GIF.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Opciones",
"show_email": "Mostrar mi correo electrónico",
"show_fullname": "Mostrar mi nombre completo",
diff --git a/public/language/et/user.json b/public/language/et/user.json
index 50916c3513..dae31e0614 100644
--- a/public/language/et/user.json
+++ b/public/language/et/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Laadi pilt",
"upload_a_picture": "Lae pilt üles",
"remove_uploaded_picture": "Eemalda üleslaetud pilt",
- "image_spec": "Failid peavad olema PNG, JPG või GIF vormingus.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Seaded",
"show_email": "Näita minu emaili",
"show_fullname": "Näita minu täisnime",
diff --git a/public/language/fa_IR/user.json b/public/language/fa_IR/user.json
index 6e8715d0a6..e0249abb3c 100644
--- a/public/language/fa_IR/user.json
+++ b/public/language/fa_IR/user.json
@@ -58,7 +58,7 @@
"upload_picture": "بارگذاری تصویر",
"upload_a_picture": "یک تصویر بارگذاری کنید",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "شما تنها میتوانید پروندههای PNG، JPG و GIF بار بگذارید.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "تنظیمات",
"show_email": "نمایش رایانامهام",
"show_fullname": "نام کامل من را نشان بده",
diff --git a/public/language/fi/user.json b/public/language/fi/user.json
index ac89e1a1f6..23d6279270 100644
--- a/public/language/fi/user.json
+++ b/public/language/fi/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Lataa kuva",
"upload_a_picture": "Lataa kuva",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Voit ladata vain PNG-, JPG- tai GIF-tiedostoja",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Asetukset",
"show_email": "Näytä sähköpostiosoitteeni",
"show_fullname": "Näytä koko nimeni",
diff --git a/public/language/fr/user.json b/public/language/fr/user.json
index c3393c3e77..4f2eb535d9 100644
--- a/public/language/fr/user.json
+++ b/public/language/fr/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Envoyer l'image",
"upload_a_picture": "Envoyer une image",
"remove_uploaded_picture": "Supprimer l'image envoyée",
- "image_spec": "Vous ne pouvez envoyer que des fichiers PNG, JPG ou GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Paramètres",
"show_email": "Afficher mon email",
"show_fullname": "Afficher mon nom complet",
diff --git a/public/language/gl/user.json b/public/language/gl/user.json
index 2c82c76f13..f817958818 100644
--- a/public/language/gl/user.json
+++ b/public/language/gl/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Subir foto",
"upload_a_picture": "Subir unha foto",
"remove_uploaded_picture": "Borrar unha foto subida",
- "image_spec": "Só podes subir archivos en formato PNG, JPG ou GIF.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Opcións",
"show_email": "Amosa-lo meu Email",
"show_fullname": "Amosa-lo meu Nome Completo",
diff --git a/public/language/he/user.json b/public/language/he/user.json
index c0e51fbf68..be35b06e87 100644
--- a/public/language/he/user.json
+++ b/public/language/he/user.json
@@ -58,7 +58,7 @@
"upload_picture": "העלה תמונה",
"upload_a_picture": "העלה תמונה",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "ניתן להעלות תמונות בפורמט PNG, JPG או GIF בלבד",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "הגדרות",
"show_email": "פרסם את כתובת האימייל שלי",
"show_fullname": "הצג את שמי המלא",
diff --git a/public/language/hu/user.json b/public/language/hu/user.json
index 2e302dd195..957b5f070a 100644
--- a/public/language/hu/user.json
+++ b/public/language/hu/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Kép feltöltése",
"upload_a_picture": "Egy kép feltöltése",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Csak PNG, JPG vagy GIF kiterjesztésű fájlokat tölthetsz fel",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Beállítások",
"show_email": "E-mail címem mutatása",
"show_fullname": "A teljes nevem mutatása",
diff --git a/public/language/id/user.json b/public/language/id/user.json
index 46762c3570..d9cb3ed1de 100644
--- a/public/language/id/user.json
+++ b/public/language/id/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Unggah gambar/foto",
"upload_a_picture": "Unggah sebuah gambar/foto",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Kamu hanya diijinkan mengunggah berkas dengan format PNG, JPG, atau GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Pengaturan",
"show_email": "Tampilkan Email Saya",
"show_fullname": "Tampilkan Nama Lengkap Saya",
diff --git a/public/language/it/user.json b/public/language/it/user.json
index c0c8933f96..9bd3466159 100644
--- a/public/language/it/user.json
+++ b/public/language/it/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Carica foto",
"upload_a_picture": "Carica una foto",
"remove_uploaded_picture": "Elimina foto caricata",
- "image_spec": "Puoi caricare solo file PNG, JPG o GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Impostazioni",
"show_email": "Mostra la mia Email",
"show_fullname": "Vedi il Mio Nome Completo",
diff --git a/public/language/ja/user.json b/public/language/ja/user.json
index 4dc2ef0327..dacec887db 100644
--- a/public/language/ja/user.json
+++ b/public/language/ja/user.json
@@ -58,7 +58,7 @@
"upload_picture": "画像をアップロード",
"upload_a_picture": "画像をアップロード",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "PNG、JPGかGIFフォーマットの画像をアップロードしてください。",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "設定",
"show_email": "メールアドレスを表示",
"show_fullname": "Show My Full Name",
diff --git a/public/language/ko/user.json b/public/language/ko/user.json
index ff571913d9..f8de5f2bbe 100644
--- a/public/language/ko/user.json
+++ b/public/language/ko/user.json
@@ -58,7 +58,7 @@
"upload_picture": "사진 업로드",
"upload_a_picture": "사진 업로드",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "PNG, JPG, GIF 파일만 업로드할 수 있습니다.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "설정",
"show_email": "이메일 공개",
"show_fullname": "실명 공개",
diff --git a/public/language/lt/user.json b/public/language/lt/user.json
index eee369f195..e2de08e23a 100644
--- a/public/language/lt/user.json
+++ b/public/language/lt/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Įkelti paveikslėlį",
"upload_a_picture": "Įkelti paveikslėlį",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Galite įkelti tik PNG, JPG arba GIF failus",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Nustatymai",
"show_email": "Rodyti mano el. paštą viešai",
"show_fullname": "Rodyti mano vardą ir pavardę",
diff --git a/public/language/ms/user.json b/public/language/ms/user.json
index fba7fabbd5..f073c8a168 100644
--- a/public/language/ms/user.json
+++ b/public/language/ms/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Muatnaik gambar",
"upload_a_picture": "Muatnaik sekeping gambar",
"remove_uploaded_picture": "Buang Gambar Yang Dimuatnaik",
- "image_spec": "Anda hanya boleh memuatnaikkan fail PNG, JPG atau GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Tetapan",
"show_email": "Tunjukkan emel saya",
"show_fullname": "Tunjukkan Nama Penuh",
diff --git a/public/language/nb/user.json b/public/language/nb/user.json
index 139c1bb6de..ed408e51c3 100644
--- a/public/language/nb/user.json
+++ b/public/language/nb/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Last opp bilde",
"upload_a_picture": "Last opp et bilde",
"remove_uploaded_picture": "Fjern Opplastet Bilde",
- "image_spec": "Du kan bare laste opp PNG, JPG eller GIF-filer",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Innstillinger",
"show_email": "Vis min e-post",
"show_fullname": "Vis mitt fulle navn",
diff --git a/public/language/nl/user.json b/public/language/nl/user.json
index 95e6a74b89..f7c799b384 100644
--- a/public/language/nl/user.json
+++ b/public/language/nl/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Upload afbeelding",
"upload_a_picture": "Upload een afbeelding",
"remove_uploaded_picture": "Verwijder gëuploade foto",
- "image_spec": "Alleen afbeeldingsbestanden van het type PNG, JPG/JPEG, of GIF worden ondersteund.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Instellingen",
"show_email": "Inschakelen weergave van e-mailadres op profielpagina",
"show_fullname": "Laat mijn volledige naam zien",
diff --git a/public/language/pl/user.json b/public/language/pl/user.json
index 779e1aa2a5..5e4802a3b1 100644
--- a/public/language/pl/user.json
+++ b/public/language/pl/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Prześlij zdjęcie",
"upload_a_picture": "Prześlij zdjęcie",
"remove_uploaded_picture": "Usuń Przesłane Zdjęcie",
- "image_spec": "Możesz przesłać tylko pliki PNG, JPG lub GIF.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Ustawienia",
"show_email": "Wyświetlaj mój adres e-mail",
"show_fullname": "Wyświetlaj moją pełną nazwę",
diff --git a/public/language/pt_BR/user.json b/public/language/pt_BR/user.json
index 643df3ee7c..b282e24bfb 100644
--- a/public/language/pt_BR/user.json
+++ b/public/language/pt_BR/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Carregar Foto",
"upload_a_picture": "Carregue uma Foto",
"remove_uploaded_picture": "Remover Foto Enviada",
- "image_spec": "Você pode usar somente arquivos PNG, JPG ou GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Configurações",
"show_email": "Mostrar Meu Email",
"show_fullname": "Mostrar Meu Nome Completo",
diff --git a/public/language/ro/user.json b/public/language/ro/user.json
index 587eb27570..1c2c0dc235 100644
--- a/public/language/ro/user.json
+++ b/public/language/ro/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Uploadează poză",
"upload_a_picture": "Uploadează o poză",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Ai voie să uploadezi doar fișiere PNG, JPG sau GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Setări",
"show_email": "Arată adresa mea de email",
"show_fullname": "Show My Full Name",
diff --git a/public/language/ru/user.json b/public/language/ru/user.json
index 998520d30f..83a614e156 100644
--- a/public/language/ru/user.json
+++ b/public/language/ru/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Загрузить фотографию",
"upload_a_picture": "Загрузить фотографию",
"remove_uploaded_picture": "Удалить загруженные фотографии",
- "image_spec": "Поддерживаются только PNG, JPG или GIF файлы",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Настройки",
"show_email": "Показывать мой Email",
"show_fullname": "Показывать Полное Имя",
diff --git a/public/language/rw/user.json b/public/language/rw/user.json
index db6db6ba1c..6ec759ab7d 100644
--- a/public/language/rw/user.json
+++ b/public/language/rw/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Gushyiraho ifoto",
"upload_a_picture": "Shyiraho ifoto",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Wemerewe gushyiraho ifoto iri muri foruma ya PNG, JPG, cyangwa GIF ",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Itunganya",
"show_email": "Hagaragazwe Email Yanjye",
"show_fullname": "Hagaragazwe Izina Ryuzuye Ryanjye",
diff --git a/public/language/sc/user.json b/public/language/sc/user.json
index 4fedaf0f10..a9ffcb66e0 100644
--- a/public/language/sc/user.json
+++ b/public/language/sc/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Càrriga immàgine",
"upload_a_picture": "Càrriga un'immàgine",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Podes carrigare isceti files PNG, JPG o GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Sèberos",
"show_email": "Ammustra s'Email Mia",
"show_fullname": "Show My Full Name",
diff --git a/public/language/sk/user.json b/public/language/sk/user.json
index 3682b618ad..50d1ee152f 100644
--- a/public/language/sk/user.json
+++ b/public/language/sk/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Nahrať obrázok",
"upload_a_picture": "Nahrať obrázok",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Môžeš pridať len obrázky typu PNG, JPG alebo GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Nastavenia",
"show_email": "Zobrazovať môj email v profile",
"show_fullname": "Show My Full Name",
diff --git a/public/language/sl/user.json b/public/language/sl/user.json
index 5164354e1c..f25c54c9aa 100644
--- a/public/language/sl/user.json
+++ b/public/language/sl/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Naloži fotografijo",
"upload_a_picture": "Naloži fotografijo",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Lahko naložiš fotografije formata PNG, JPG ali GIF.",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Nastavitve.",
"show_email": "Pokaži moj e-poštni naslov.",
"show_fullname": "Pokaži moj ime in priimek.",
diff --git a/public/language/sr/user.json b/public/language/sr/user.json
index cf48284b19..cc69327a27 100644
--- a/public/language/sr/user.json
+++ b/public/language/sr/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Upload picture",
"upload_a_picture": "Upload a picture",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "You may only upload PNG, JPG, or GIF files",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Подешавања",
"show_email": "Прикажи моју лозинку",
"show_fullname": "Прикажи моје пуно име",
diff --git a/public/language/sv/user.json b/public/language/sv/user.json
index 8b99037cbd..8646ffbd78 100644
--- a/public/language/sv/user.json
+++ b/public/language/sv/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Ladda upp bild",
"upload_a_picture": "Ladda upp en bild",
"remove_uploaded_picture": "Ta bort uppladdad bild",
- "image_spec": "Du får bara ladda upp PNG, JPG eller GIF-filer",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Inställningar",
"show_email": "Visa min epost",
"show_fullname": "Visa Fullständigt Namn",
diff --git a/public/language/th/user.json b/public/language/th/user.json
index 51fe75806e..6d009aeab5 100644
--- a/public/language/th/user.json
+++ b/public/language/th/user.json
@@ -58,7 +58,7 @@
"upload_picture": "อัปโหลดรูป",
"upload_a_picture": "อัปโหลดรูป",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "คุณสามารถอัปโหลด PNG, JPG หรือ GIF ไฟล์เท่านั้น",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "ตั้งค่า",
"show_email": "แสดงอีเมล์",
"show_fullname": "แสดงชื่อจริง",
diff --git a/public/language/tr/user.json b/public/language/tr/user.json
index 9cc4e77220..861dfb90b5 100644
--- a/public/language/tr/user.json
+++ b/public/language/tr/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Resim Yükle",
"upload_a_picture": "Bir Resim Yükle",
"remove_uploaded_picture": "Yüklenmiş fotoğrafı kaldır",
- "image_spec": "Sadece PNG, JPG veya GIF dosyaları yükleyebilirsiniz",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Ayarlar",
"show_email": "E-postamı göster",
"show_fullname": "Tam ismimi göster",
diff --git a/public/language/vi/user.json b/public/language/vi/user.json
index 9c257683b2..f3c4b7af34 100644
--- a/public/language/vi/user.json
+++ b/public/language/vi/user.json
@@ -58,7 +58,7 @@
"upload_picture": "Tải lên hình ảnh",
"upload_a_picture": "Tải lên một hình ảnh",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "Bạn chỉ có thể tải lên được các file PNG, JPG hoặc GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "Thiết lập",
"show_email": "Hiện Email của tôi",
"show_fullname": "Hiện tên đầy đủ",
diff --git a/public/language/zh_CN/user.json b/public/language/zh_CN/user.json
index ee038e9da6..93614b3486 100644
--- a/public/language/zh_CN/user.json
+++ b/public/language/zh_CN/user.json
@@ -58,7 +58,7 @@
"upload_picture": "上传头像",
"upload_a_picture": "上传头像",
"remove_uploaded_picture": "删除已上传的头像",
- "image_spec": "您只能上传 PNG, JPG 或者 GIF 图片文件",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "设置",
"show_email": "显示我的电子邮箱",
"show_fullname": "显示我的全名",
diff --git a/public/language/zh_TW/user.json b/public/language/zh_TW/user.json
index 457dd493f1..b31915819b 100644
--- a/public/language/zh_TW/user.json
+++ b/public/language/zh_TW/user.json
@@ -58,7 +58,7 @@
"upload_picture": "上傳頭像",
"upload_a_picture": "上傳一張照片",
"remove_uploaded_picture": "Remove Uploaded Picture",
- "image_spec": "支援的圖檔格式包含 PNG, JPG, 或是 GIF",
+ "image_spec": "You may only upload PNG, JPG, or BMP files",
"settings": "設定",
"show_email": "顯示我的郵箱",
"show_fullname": "顯示我的全名",
From b02fd102cbf115ce08af601d51bfe88bd15c5bd6 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Wed, 11 Nov 2015 20:28:42 -0500
Subject: [PATCH 37/78] update async uglify
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index e3d766a9bb..683a1dd4e1 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
"test": "mocha ./tests -t 10000"
},
"dependencies": {
- "async": "~1.4.2",
+ "async": "~1.5.0",
"bcryptjs": "~2.3.0",
"body-parser": "^1.9.0",
"colors": "^1.1.0",
@@ -70,7 +70,7 @@
"string": "^3.0.0",
"templates.js": "0.3.0",
"toobusy-js": "^0.4.2",
- "uglify-js": "^2.4.24",
+ "uglify-js": "^2.5.0",
"underscore": "~1.8.3",
"underscore.deep": "^0.5.1",
"validator": "^4.0.5",
From 13c7fc0e7ffdcef715fa97188adb41926f25b26a Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Wed, 11 Nov 2015 20:32:24 -0500
Subject: [PATCH 38/78] update winston
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 683a1dd4e1..bdd90daeac 100644
--- a/package.json
+++ b/package.json
@@ -74,7 +74,7 @@
"underscore": "~1.8.3",
"underscore.deep": "^0.5.1",
"validator": "^4.0.5",
- "winston": "^1.0.1",
+ "winston": "^2.1.0",
"xregexp": "~3.0.0"
},
"devDependencies": {
From a6b561d8c03fb646061026971b57577dced3daa1 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Wed, 11 Nov 2015 20:53:22 -0500
Subject: [PATCH 39/78] removed gravatar from package.json
---
package.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/package.json b/package.json
index bdd90daeac..6306febe4d 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,6 @@
"daemon": "~1.1.0",
"express": "^4.9.5",
"express-session": "^1.8.2",
- "gravatar": "^1.1.0",
"heapdump": "^0.3.0",
"html-to-text": "1.3.2",
"jimp": "0.2.17",
From 20c841128722b66c8daa17b08641598cf0e98a5e Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 12 Nov 2015 14:14:27 -0500
Subject: [PATCH 40/78] closes #3767 closes #3774
---
public/src/client/category.js | 10 ++++------
public/src/modules/navigator.js | 9 ++++++---
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/public/src/client/category.js b/public/src/client/category.js
index d213663aa8..34ecb73fec 100644
--- a/public/src/client/category.js
+++ b/public/src/client/category.js
@@ -104,7 +104,9 @@ define('forum/category', [
var bookmarkIndex = localStorage.getItem('category:' + cid + ':bookmark');
var clickedIndex = localStorage.getItem('category:' + cid + ':bookmark:clicked');
- if (!bookmarkIndex) {
+ bookmarkIndex = Math.max(0, parseInt(bookmarkIndex, 10) || 0);
+ clickedIndex = Math.max(0, parseInt(clickedIndex, 10) || 0);
+ if (!parseInt(bookmarkIndex, 10)) {
return;
}
@@ -123,13 +125,9 @@ define('forum/category', [
return;
}
- if (bookmarkIndex < 0) {
- bookmarkIndex = 0;
- }
-
$('[component="category"]').empty();
- loadTopicsAfter(bookmarkIndex - 1, 1, function() {
+ loadTopicsAfter(Math.max(0, bookmarkIndex - 1), 1, function() {
Category.scrollToTopic(bookmarkIndex, clickedIndex, 0);
});
}
diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js
index d635eae181..33d3599228 100644
--- a/public/src/modules/navigator.js
+++ b/public/src/modules/navigator.js
@@ -95,11 +95,14 @@ define('navigator', ['forum/pagination', 'components'], function(pagination, com
navigator.update = function() {
toggle(!!count);
- var middleOfViewport = $(window).scrollTop() + $(window).height() / 2;
+ var els = $(navigator.selector);
+ if (els.length) {
+ index = parseInt(els.first().attr('data-index'), 10) + 1;
+ }
- index = parseInt($(navigator.selector).first().attr('data-index'), 10) + 1;
+ var middleOfViewport = $(window).scrollTop() + $(window).height() / 2;
var previousDistance = Number.MAX_VALUE;
- $(navigator.selector).each(function() {
+ els.each(function() {
var distanceToMiddle = Math.abs(middleOfViewport - $(this).offset().top);
if (distanceToMiddle > previousDistance) {
From 23e57a800112d76d3a2bf5b95476db1758d8dc98 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 12 Nov 2015 14:17:04 -0500
Subject: [PATCH 41/78] closes #3861
---
src/views/admin/settings/group.tpl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/views/admin/settings/group.tpl b/src/views/admin/settings/group.tpl
index 17cefdf00e..13b5121b24 100644
--- a/src/views/admin/settings/group.tpl
+++ b/src/views/admin/settings/group.tpl
@@ -6,7 +6,7 @@