summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/node/hooks/express/adminplugins.js22
-rw-r--r--src/templates/admin/plugins.html38
2 files changed, 41 insertions, 19 deletions
diff --git a/src/node/hooks/express/adminplugins.js b/src/node/hooks/express/adminplugins.js
index d3884acb..4dbd788f 100644
--- a/src/node/hooks/express/adminplugins.js
+++ b/src/node/hooks/express/adminplugins.js
@@ -32,14 +32,24 @@ exports.socketio = function (hook_name, args, cb) {
});
});
- socket.on("install", function (query) {
+ socket.on("install", function (plugin_name) {
+ socket.emit("progress", {progress:0, message:'Downloading and installing ' + plugin_name + "..."});
+ installer.install(plugin_name, function (er) {
+ if (er)
+ socket.emit("progress", {progress:1, error:er});
+ else
+ socket.emit("progress", {progress:1, message:'Done.'});
+ });
});
- socket.on("uninstall", function (query) {
+ socket.on("uninstall", function (plugin_name) {
+ socket.emit("progress", {progress:0, message:'Uninstalling ' + plugin_name + "..."});
+ installer.uninstall(plugin_name, function (er) {
+ if (er)
+ socket.emit("progress", {progress:1, error:er});
+ else
+ socket.emit("progress", {progress:1, message:'Done.'});
+ });
});
-
-
-
-
});
}
diff --git a/src/templates/admin/plugins.html b/src/templates/admin/plugins.html
index f8316857..61e277d2 100644
--- a/src/templates/admin/plugins.html
+++ b/src/templates/admin/plugins.html
@@ -54,14 +54,28 @@
$(document).ready(function () {
var socket = io.connect().of("/pluginfw/installer");
- $("#progress.dialog .close").click(function () {
- $("#progress.dialog").hide();
- });
+ function updateHandlers() {
+ $("#progress.dialog .close").click(function () {
+ $("#progress.dialog").hide();
+ });
- $("#do-search").click(function () {
- if ($("#search-query")[0].value != "")
- socket.emit("search", $("#search-query")[0].value);
- });
+ $("#do-search").click(function () {
+ if ($("#search-query")[0].value != "")
+ socket.emit("search", $("#search-query")[0].value);
+ });
+
+ $("#do-install").click(function (e) {
+ var row = $(e.target).closest("tr");
+ socket.emit("install", row.find(".name").html());
+ });
+
+ $("#do-uninstall").click(function (e) {
+ var row = $(e.target).closest("tr");
+ socket.emit("install", row.find(".name").html());
+ });
+ }
+
+ updateHandlers();
socket.on('progress', function (data) {
$("#progress.dialog .close").hide();
@@ -93,6 +107,7 @@
}
$("#search-results").append(row);
}
+ updateHandlers();
});
});
</script>
@@ -120,13 +135,10 @@
<% for (var plugin_name in plugins) { %>
<% var plugin = plugins[plugin_name]; %>
<tr>
- <td><%= plugin.package.name %></td>
+ <td class="name"><%= plugin.package.name %></td>
<td><%= plugin.package.description %></td>
<td>
- <form method="post">
- <input type="hidden" name="uninstall_plugin" value="<%= plugin.package.name %>">
- <input type="submit" value="U">
- </form>
+ <input type="submit" value="U" class="do-uninstall">
</td>
</tr>
<% } %>
@@ -153,7 +165,7 @@
<td class="name"></td>
<td class="description"></td>
<td class="actions">
- <input type="button" value="I">
+ <input type="button" value="I" class="do-install">
</td>
</tr>
</tbody>