diff options
author | Marcel Klehr <mklehr@gmx.net> | 2013-01-26 22:13:28 +0100 |
---|---|---|
committer | Marcel Klehr <mklehr@gmx.net> | 2013-01-26 22:13:28 +0100 |
commit | 0549a4fec7c8128b0bcb67639ca9baa2ce2d2322 (patch) | |
tree | d265d91c0f88caaee22f07a6ff7f94320a5c249c /src/node/hooks/express/adminplugins.js | |
parent | 2841bfc009bf76ad8b28d972ef3b9770db61a939 (diff) | |
download | etherpad-lite-0549a4fec7c8128b0bcb67639ca9baa2ce2d2322.zip |
Add checkUpdates endpoinnt for /admin/plugins
Diffstat (limited to 'src/node/hooks/express/adminplugins.js')
-rw-r--r-- | src/node/hooks/express/adminplugins.js | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/node/hooks/express/adminplugins.js b/src/node/hooks/express/adminplugins.js index 97a0d602..7e221cf1 100644 --- a/src/node/hooks/express/adminplugins.js +++ b/src/node/hooks/express/adminplugins.js @@ -2,6 +2,9 @@ var path = require('path'); var eejs = require('ep_etherpad-lite/node/eejs'); var installer = require('ep_etherpad-lite/static/js/pluginfw/installer'); var plugins = require('ep_etherpad-lite/static/js/pluginfw/plugins'); +var _ = require('underscore'); +var semver = require('semver'); +var async = require('async'); exports.expressCreateServer = function (hook_name, args, cb) { args.app.get('/admin/plugins', function(req, res) { @@ -25,8 +28,26 @@ exports.socketio = function (hook_name, args, cb) { if (!socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; socket.on("load", function (query) { + // send currently installed plugins socket.emit("installed-results", {results: plugins.plugins}); + socket.emit("progress", {progress:1}); }); + + socket.on("checkUpdates", function() { + socket.emit("progress", {progress:0, message:'Checking for plugin updates...'}); + // Check plugins for updates + installer.search({offset: 0, pattern: '', limit: 500}, /*useCache:*/true, function(data) { // hacky + if (!data.results) return; + var updatable = _(plugins.plugins).keys().filter(function(plugin) { + if(!data.results[plugin]) return false; + var latestVersion = data.results[plugin]['dist-tags'].latest + var currentVersion = plugins.plugins[plugin].package.version + return semver.gt(latestVersion, currentVersion) + }); + socket.emit("updatable", {updatable: updatable}); + socket.emit("progress", {progress:1}); + }); + }) socket.on("search", function (query) { socket.emit("progress", {progress:0, message:'Fetching results...'}); |