From 3819d11be2783aeb87da9f0d1ca43295698b1eab Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 9 Oct 2014 18:42:05 -0400 Subject: [PATCH] #2110 --- public/src/admin/extend/plugins.js | 18 ++++++++++++++++++ src/plugins.js | 15 ++++++++++++--- src/socket.io/admin.js | 4 ++++ src/views/admin/extend/plugins.tpl | 4 ++-- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/public/src/admin/extend/plugins.js b/public/src/admin/extend/plugins.js index 974e394ea6..b5f61a9801 100644 --- a/public/src/admin/extend/plugins.js +++ b/public/src/admin/extend/plugins.js @@ -65,6 +65,24 @@ define('admin/extend/plugins', function() { }); }); + pluginsList.on('click', 'button[data-action="upgrade"]', function() { + var btn = $(this); + var parent = btn.parents('li'); + pluginID = parent.attr('data-plugin-id'); + + btn.attr('disabled', true).find('i').attr('class', 'fa fa-refresh fa-spin'); + + socket.emit('admin.plugins.upgrade', pluginID, function(err) { + if (err) { + return app.alertError(err.message); + } + parent.find('.fa-exclamation-triangle').remove(); + parent.find('.currentVersion').text(parent.find('.latestVersion').text()); + btn.remove(); + }); + }); + + $('#plugin-search').on('input propertychange', function() { var term = $(this).val(); $('.plugins li').each(function() { diff --git a/src/plugins.js b/src/plugins.js index ce676abee4..df03b776cf 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -7,6 +7,7 @@ var fs = require('fs'), nconf = require('nconf'), semver = require('semver'), express = require('express'), + npm = require('npm'), db = require('./database'), emitter = require('./emitter'), @@ -555,8 +556,6 @@ var fs = require('fs'), return callback(err); } - var npm = require('npm'); - async.waterfall([ function(next) { Plugins.isActive(id, next); @@ -585,6 +584,17 @@ var fs = require('fs'), }); }; + Plugins.upgrade = function(id, callback) { + async.waterfall([ + function(next) { + npm.load({}, next); + }, + function(res, next) { + npm.commands.install([id], next); + } + ], callback); + }; + Plugins.getTemplates = function(callback) { var templates = {}; @@ -684,7 +694,6 @@ var fs = require('fs'), }; function getVersion(name, callback) { - var npm = require('npm'); npm.load({}, function() { npm.commands.show([name, 'version'], true, function(err, version) { if (err || !version) { diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index 47d38378f3..aea37b96f5 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -98,6 +98,10 @@ SocketAdmin.plugins.toggleInstall = function(socket, plugin_id, callback) { plugins.toggleInstall(plugin_id, callback); }; +SocketAdmin.plugins.upgrade = function(socket, plugin_id, callback) { + plugins.upgrade(plugin_id, callback); +}; + SocketAdmin.widgets.set = function(socket, data, callback) { if(!data) { return callback(new Error('[[error:invalid-data]]')); diff --git a/src/views/admin/extend/plugins.tpl b/src/views/admin/extend/plugins.tpl index 4d3922b477..63e5dbbad0 100644 --- a/src/views/admin/extend/plugins.tpl +++ b/src/views/admin/extend/plugins.tpl @@ -20,9 +20,9 @@

{plugins.description}

- Installed {plugins.version} | Latest {plugins.latest} + Installed {plugins.version} | Latest {plugins.latest} - +

For more information: {plugins.url}