barisusakli 11 years ago
parent 4cbb7e9832
commit 3819d11be2

@ -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() { $('#plugin-search').on('input propertychange', function() {
var term = $(this).val(); var term = $(this).val();
$('.plugins li').each(function() { $('.plugins li').each(function() {

@ -7,6 +7,7 @@ var fs = require('fs'),
nconf = require('nconf'), nconf = require('nconf'),
semver = require('semver'), semver = require('semver'),
express = require('express'), express = require('express'),
npm = require('npm'),
db = require('./database'), db = require('./database'),
emitter = require('./emitter'), emitter = require('./emitter'),
@ -555,8 +556,6 @@ var fs = require('fs'),
return callback(err); return callback(err);
} }
var npm = require('npm');
async.waterfall([ async.waterfall([
function(next) { function(next) {
Plugins.isActive(id, 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) { Plugins.getTemplates = function(callback) {
var templates = {}; var templates = {};
@ -684,7 +694,6 @@ var fs = require('fs'),
}; };
function getVersion(name, callback) { function getVersion(name, callback) {
var npm = require('npm');
npm.load({}, function() { npm.load({}, function() {
npm.commands.show([name, 'version'], true, function(err, version) { npm.commands.show([name, 'version'], true, function(err, version) {
if (err || !version) { if (err || !version) {

@ -98,6 +98,10 @@ SocketAdmin.plugins.toggleInstall = function(socket, plugin_id, callback) {
plugins.toggleInstall(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) { SocketAdmin.widgets.set = function(socket, data, callback) {
if(!data) { if(!data) {
return callback(new Error('[[error:invalid-data]]')); return callback(new Error('[[error:invalid-data]]'));

@ -20,9 +20,9 @@
<!-- IF plugins.description --> <!-- IF plugins.description -->
<p>{plugins.description}</p> <p>{plugins.description}</p>
<!-- ENDIF plugins.description --> <!-- ENDIF plugins.description -->
<!-- IF plugins.outdated --><i class="fa fa-exclamation-triangle text-danger"></i> <!-- ENDIF plugins.outdated --><small>Installed <strong>{plugins.version}</strong> | Latest <strong>{plugins.latest}</strong></small> <!-- IF plugins.outdated --><i class="fa fa-exclamation-triangle text-danger"></i> <!-- ENDIF plugins.outdated --><small>Installed <strong class="currentVersion">{plugins.version}</strong> | Latest <strong class="latestVersion">{plugins.latest}</strong></small>
<!-- IF plugins.outdated --> <!-- IF plugins.outdated -->
<button data-action="upgrade" class="btn btn-success btn-xs">Upgrade</button> <button data-action="upgrade" class="btn btn-success btn-xs"><i class="fa fa-download"></i> Upgrade</button>
<!-- ENDIF plugins.outdated --> <!-- ENDIF plugins.outdated -->
<!-- IF plugins.url --> <!-- IF plugins.url -->
<p>For more information: <a href="{plugins.url}">{plugins.url}</a></p> <p>For more information: <a href="{plugins.url}">{plugins.url}</a></p>

Loading…
Cancel
Save