From ff4fd8cf9523e09a5957f0b55c15d5980d02aa7d Mon Sep 17 00:00:00 2001
From: NodeBB Misty <deploy@nodebb.org>
Date: Thu, 4 Aug 2016 09:04:27 -0400
Subject: [PATCH 1/4] Latest translations and fallbacks

---
 public/language/es/error.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/public/language/es/error.json b/public/language/es/error.json
index 68696133bc..723aa9beb6 100644
--- a/public/language/es/error.json
+++ b/public/language/es/error.json
@@ -120,5 +120,5 @@
     "no-users-in-room": "No hay usuarios en esta sala",
     "cant-kick-self": "No te puedes expulsar a ti mismo del grupo",
     "no-users-selected": "Ningun usuario(s) seleccionado",
-    "invalid-home-page-route": "Invalid home page route"
+    "invalid-home-page-route": "Ruta de página de inicio invalida"
 }
\ No newline at end of file

From e02134f981d23c56097bd2e56d1e23c47d8d386e Mon Sep 17 00:00:00 2001
From: Julian Lam <julian@nodebb.org>
Date: Thu, 4 Aug 2016 12:24:44 -0400
Subject: [PATCH 2/4] closes #4911

---
 package.json                     |  4 ++--
 public/language/en_GB/topic.json |  1 +
 public/src/client/topic/fork.js  | 24 ++++++------------------
 public/src/modules/postSelect.js |  4 ++--
 4 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/package.json b/package.json
index ea0f045b1e..22da7f7443 100644
--- a/package.json
+++ b/package.json
@@ -57,8 +57,8 @@
     "nodebb-plugin-spam-be-gone": "0.4.9",
     "nodebb-rewards-essentials": "0.0.9",
     "nodebb-theme-lavender": "3.0.13",
-    "nodebb-theme-persona": "4.1.13",
-    "nodebb-theme-vanilla": "5.1.4",
+    "nodebb-theme-persona": "4.1.14",
+    "nodebb-theme-vanilla": "5.1.5",
     "nodebb-widget-essentials": "2.0.10",
     "nodemailer": "2.0.0",
     "nodemailer-sendmail-transport": "1.0.0",
diff --git a/public/language/en_GB/topic.json b/public/language/en_GB/topic.json
index 15edaa947f..78769c64b5 100644
--- a/public/language/en_GB/topic.json
+++ b/public/language/en_GB/topic.json
@@ -101,6 +101,7 @@
 	"topic_will_be_moved_to": "This topic will be moved to the category",
 	"fork_topic_instruction": "Click the posts you want to fork",
 	"fork_no_pids": "No posts selected!",
+	"fork_pid_count": "%1 post(s) selected",
 	"fork_success": "Successfully forked topic! Click here to go to the forked topic.",
 	"delete_posts_instruction": "Click the posts you want to delete/purge",
 
diff --git a/public/src/client/topic/fork.js b/public/src/client/topic/fork.js
index 50888a9ca3..feb02a9f78 100644
--- a/public/src/client/topic/fork.js
+++ b/public/src/client/topic/fork.js
@@ -16,16 +16,12 @@ define('forum/topic/fork', ['components', 'postSelect'], function(components, po
 		parseModal(function(html) {
 			forkModal = $(html);
 
-			forkModal.on('hidden.bs.modal', function() {
-				forkModal.remove();
-			});
-
 			forkCommit = forkModal.find('#fork_thread_commit');
 
-			showForkModal();
+			$(document.body).append(forkModal);
 
 			forkModal.find('.close,#fork_thread_cancel').on('click', closeForkModal);
-			forkModal.find('#fork-title').on('change', checkForkButtonEnable);
+			forkModal.find('#fork-title').on('keyup', checkForkButtonEnable);
 
 			postSelect.init(function() {
 				checkForkButtonEnable();
@@ -43,14 +39,6 @@ define('forum/topic/fork', ['components', 'postSelect'], function(components, po
 		});
 	}
 
-	function showForkModal() {
-		forkModal.modal({backdrop: false, show: true})
-			.css('position', 'fixed')
-			.css('left', Math.max(0, (($(window).width() - forkModal.outerWidth()) / 2) + $(window).scrollLeft()) + 'px')
-			.css('top', '0px')
-			.css('z-index', '2000');
-	}
-
 	function createTopicFromPosts() {
 		forkCommit.attr('disabled', true);
 		socket.emit('topics.createTopicFromPosts', {
@@ -88,14 +76,14 @@ define('forum/topic/fork', ['components', 'postSelect'], function(components, po
 
 	function showPostsSelected() {
 		if (postSelect.pids.length) {
-			forkModal.find('#fork-pids').text(postSelect.pids.join(', '));
+			forkModal.find('#fork-pids').translateHtml('[[topic:fork_pid_count, ' + postSelect.pids.length + ']]');
 		} else {
 			forkModal.find('#fork-pids').translateHtml('[[topic:fork_no_pids]]');
 		}
 	}
 
 	function checkForkButtonEnable() {
-		if (forkModal.find('#fork-title').length && postSelect.pids.length) {
+		if (forkModal.find('#fork-title').val().length && postSelect.pids.length) {
 			forkCommit.removeAttr('disabled');
 		} else {
 			forkCommit.attr('disabled', true);
@@ -104,10 +92,10 @@ define('forum/topic/fork', ['components', 'postSelect'], function(components, po
 
 	function closeForkModal() {
 		postSelect.pids.forEach(function(pid) {
-			components.get('post', 'pid', pid).css('opacity', 1);
+			components.get('post', 'pid', pid).toggleClass('bg-success', false);
 		});
 
-		forkModal.modal('hide');
+		forkModal.remove();
 
 		components.get('topic').off('click', '[data-pid]');
 		postSelect.enableClicksOnPosts();
diff --git a/public/src/modules/postSelect.js b/public/src/modules/postSelect.js
index 9812bf284e..4f7439aff0 100644
--- a/public/src/modules/postSelect.js
+++ b/public/src/modules/postSelect.js
@@ -27,10 +27,10 @@ define('postSelect', ['components'], function(components) {
 			var index = PostSelect.pids.indexOf(newPid);
 			if(index === -1) {
 				PostSelect.pids.push(newPid);
-				post.css('opacity', '0.5');
+				post.toggleClass('bg-success', true);
 			} else {
 				PostSelect.pids.splice(index, 1);
-				post.css('opacity', '1.0');
+				post.toggleClass('bg-success', false);
 			}
 
 			if (PostSelect.pids.length) {

From f222adb0a3eb301382c5e1cfd648d4b6d9f86750 Mon Sep 17 00:00:00 2001
From: barisusakli <barisusakli@gmail.com>
Date: Thu, 4 Aug 2016 19:40:48 +0300
Subject: [PATCH 3/4] closes #4910

---
 public/src/client/account/info.js | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 public/src/client/account/info.js

diff --git a/public/src/client/account/info.js b/public/src/client/account/info.js
new file mode 100644
index 0000000000..b95f68b838
--- /dev/null
+++ b/public/src/client/account/info.js
@@ -0,0 +1,13 @@
+'use strict';
+
+/* globals define */
+
+define('forum/account/info', ['forum/account/header'], function(header) {
+	var Info = {};
+
+	Info.init = function() {
+		header.init();
+	};
+
+	return Info;
+});

From 7f041a756dc0fb99ddb20a8267f970b2e587a0ae Mon Sep 17 00:00:00 2001
From: barisusakli <barisusakli@gmail.com>
Date: Thu, 4 Aug 2016 20:58:04 +0300
Subject: [PATCH 4/4] closes #4865

---
 src/database/mongo.js |  1 +
 src/database/redis.js |  1 +
 src/install.js        | 16 ++++++----------
 3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/database/mongo.js b/src/database/mongo.js
index 7dd854e4cf..25d34ce02b 100644
--- a/src/database/mongo.js
+++ b/src/database/mongo.js
@@ -33,6 +33,7 @@
 			name: 'mongo:password',
 			description: 'Password of your MongoDB database',
 			hidden: true,
+			default: nconf.get('mongo:password') || '',
 			before: function(value) { value = value || nconf.get('mongo:password') || ''; return value; }
 		},
 		{
diff --git a/src/database/redis.js b/src/database/redis.js
index 239090aa95..8af568b5d9 100644
--- a/src/database/redis.js
+++ b/src/database/redis.js
@@ -25,6 +25,7 @@
 			name: 'redis:password',
 			description: 'Password of your Redis database',
 			hidden: true,
+			default: nconf.get('redis:password') || '',
 			before: function(value) { value = value || nconf.get('redis:password') || ''; return value; }
 		},
 		{
diff --git a/src/install.js b/src/install.js
index 900a0e3ee4..f9fae4ffdf 100644
--- a/src/install.js
+++ b/src/install.js
@@ -43,8 +43,8 @@ questions.optional = [
 ];
 
 function checkSetupFlag(next) {
-	var	envSetupKeys = ['database'],
-		setupVal;
+	var setupVal;
+
 	try {
 		if (nconf.get('setup')) {
 			setupVal = JSON.parse(nconf.get('setup'));
@@ -74,14 +74,10 @@ function checkSetupFlag(next) {
 
 			process.exit();
 		}
-	} else if (envSetupKeys.every(function(key) {
-		return nconf.stores.env.store.hasOwnProperty(key);
-	})) {
-		install.values = envSetupKeys.reduce(function(config, key) {
-			config[key] = nconf.stores.env.store[key];
-			return config;
-		}, {});
-
+	} else if (nconf.get('database')) {
+		install.values = {
+			database: nconf.get('database')
+		};
 		next();
 	} else {
 		next();