From 9d75c482360fa14a8ed538e787a39698940dc5ea Mon Sep 17 00:00:00 2001
From: barisusakli <barisusakli@gmail.com>
Date: Thu, 15 Dec 2016 13:03:14 +0300
Subject: [PATCH] closes #4563 closes #4569 closes #4566

---
 public/less/admin/extend/plugins.less              | 6 ++++++
 public/src/admin/modules/instance.js               | 4 ++--
 src/plugins.js                                     | 1 +
 src/views/admin/partials/installed_plugin_item.tpl | 9 ++++++++-
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/public/less/admin/extend/plugins.less b/public/less/admin/extend/plugins.less
index b07d9f16b9..97ea6e8fcb 100644
--- a/public/less/admin/extend/plugins.less
+++ b/public/less/admin/extend/plugins.less
@@ -24,4 +24,10 @@
 			.pointer;
 		}
 	}
+	.controls .btn {
+		display: list-item;
+		width: 120px;
+		margin-bottom: 3px;
+		margin-left: 10px;
+	}
 }
\ No newline at end of file
diff --git a/public/src/admin/modules/instance.js b/public/src/admin/modules/instance.js
index d057ff9853..0b74ef3405 100644
--- a/public/src/admin/modules/instance.js
+++ b/public/src/admin/modules/instance.js
@@ -36,7 +36,7 @@ define('admin/modules/instance', function () {
 			alert_id: 'instance_restart',
 			type: 'info',
 			title: 'Rebuilding... <i class="fa fa-spin fa-refresh"></i>',
-			message: 'NodeBB is rebiulding front-end assets (css, javascript, etc).',
+			message: 'NodeBB is rebuilding front-end assets (css, javascript, etc).',
 			timeout: 10000
 		});
 
@@ -64,6 +64,6 @@ define('admin/modules/instance', function () {
 			});
 		});
 	};
-	
+
 	return instance;
 });
diff --git a/src/plugins.js b/src/plugins.js
index 8f9d0a3a45..e14bf70f03 100644
--- a/src/plugins.js
+++ b/src/plugins.js
@@ -291,6 +291,7 @@ var middleware;
 				pluginMap[plugin.id].error = plugin.error || false;
 				pluginMap[plugin.id].active = plugin.active;
 				pluginMap[plugin.id].version = plugin.version;
+				pluginMap[plugin.id].settingsRoute = plugin.settingsRoute;
 
 				// If package.json defines a version to use, stick to that
 				if (dependencies.hasOwnProperty(plugin.id) && semver.valid(dependencies[plugin.id])) {
diff --git a/src/views/admin/partials/installed_plugin_item.tpl b/src/views/admin/partials/installed_plugin_item.tpl
index 3c95bcc2c1..525225d4bc 100644
--- a/src/views/admin/partials/installed_plugin_item.tpl
+++ b/src/views/admin/partials/installed_plugin_item.tpl
@@ -1,6 +1,6 @@
 					<!-- IF !installed.error -->
 					<li id="{installed.id}" data-plugin-id="{installed.id}" data-version="{installed.version}" class="clearfix <!-- IF installed.active -->active<!-- ENDIF installed.active -->">
-						<div class="pull-right">
+						<div class="pull-right controls">
 							<!-- IF installed.isTheme -->
 							<a href="{config.relative_path}/admin/appearance/themes" class="btn btn-info">Themes</a>
 							<!-- ELSE -->
@@ -8,6 +8,12 @@
 							<!-- ENDIF installed.isTheme -->
 
 							<button data-action="toggleInstall" data-installed="1" class="btn btn-danger"><i class="fa fa-trash-o"></i> Uninstall</button>
+
+							<!-- IF installed.active -->
+							<!-- IF installed.settingsRoute -->
+							<a href="{config.relative_path}{installed.settingsRoute}" class="btn btn-primary"><i class="fa fa-wrench"></i> Settings </a>
+							<!-- ENDIF installed.settingsRoute -->
+							<!-- ENDIF installed.active -->
 						</div>
 
 						<h2><strong>{installed.name}</strong></h2>
@@ -30,6 +36,7 @@
 							<button class="btn btn-default disabled"><i class="fa fa-exclamation-triangle"></i> Unknown</button>
 
 							<button data-action="toggleInstall" data-installed="1" class="btn btn-danger"><i class="fa fa-trash-o"></i> Uninstall</button>
+
 						</div>
 
 						<h2><strong>{installed.id}</strong></h2>