diff options
author | Egil Moeller <egil.moller@freecode.no> | 2012-03-17 18:17:10 +0100 |
---|---|---|
committer | Egil Moeller <egil.moller@freecode.no> | 2012-03-17 18:17:10 +0100 |
commit | af96509fbb84f2c05426ba2e5208dcd34edd4f90 (patch) | |
tree | e920fe066a8f7f120f8974f41743e60875d2ddc6 /src | |
parent | 81250cba158384b40fe32ccf44dc10ccdaa3e80b (diff) | |
download | etherpad-lite-af96509fbb84f2c05426ba2e5208dcd34edd4f90.zip |
Plugin install/uninstall
Diffstat (limited to 'src')
-rw-r--r-- | src/node/hooks/express/adminplugins.js | 22 | ||||
-rw-r--r-- | src/templates/admin/plugins.html | 38 |
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> |