installed plugins are displayed at the top
v1.18.x
barisusakli 11 years ago
parent 4ca7eaf1fc
commit 3ca45fa061

@ -48,7 +48,7 @@ define(function() {
btn.html('<i class="fa fa-download"></i> Install'); btn.html('<i class="fa fa-download"></i> Install');
} }
btn.toggleClass('btn-warning', status.installed).toggleClass('btn-success', !status.installed) btn.toggleClass('btn-danger', status.installed).toggleClass('btn-success', !status.installed)
.attr('disabled', false); .attr('disabled', false);
activateBtn.toggleClass('hide', !status.installed); activateBtn.toggleClass('hide', !status.installed);

@ -484,27 +484,58 @@ var fs = require('fs'),
return callback(null, []); return callback(null, []);
} }
async.map(plugins, function(plugin, next) { var pluginMap = {};
for(var i=0; i<plugins.length; ++i) {
plugin.id = plugin.name; plugins[i].id = plugins[i].name;
plugins[i].installed = false;
plugins[i].active = false;
pluginMap[plugins[i].name] = plugins[i];
}
async.parallel({ Plugins.showInstalled(function(err, installedPlugins) {
active: function(next) { if (err) {
Plugins.isActive(plugin.id, next); return callback(err);
},
installed: function(next) {
Plugins.isInstalled(plugin.id, next);
} }
}, function(err, results) {
async.each(installedPlugins, function(plugin, next) {
pluginMap[plugin.id] = pluginMap[plugin.id] || {};
pluginMap[plugin.id].name = plugin.id;
pluginMap[plugin.id].description = plugin.description;
pluginMap[plugin.id].url = plugin.url;
pluginMap[plugin.id].installed = true;
Plugins.isActive(plugin.id, function(err, active) {
if (err) { if (err) {
return next(err); return next(err);
} }
plugin.active = results.active;
plugin.installed = results.installed; pluginMap[plugin.id].active = active;
next(null, plugin); next();
}); });
}, function(err) {
if (err) {
return callback(err);
}
var pluginArray = [];
}, callback); for (var key in pluginMap) {
pluginArray.push(pluginMap[key]);
}
pluginArray.sort(function(a, b) {
if(a.installed && !b.installed) {
return -1;
} else if(!a.installed && b.installed) {
return 1;
}
return 0;
});
callback(null, pluginArray);
});
});
}); });
}; };
@ -536,7 +567,7 @@ var fs = require('fs'),
} }
callback(stats.isDirectory()); callback(stats.isDirectory());
}) });
}, function(plugins){ }, function(plugins){
next(null, plugins); next(null, plugins);
}); });
@ -556,7 +587,7 @@ var fs = require('fs'),
try { try {
var config = JSON.parse(configJSON); var config = JSON.parse(configJSON);
} catch (err) { } catch (err) {
winston.warn("Plugin: " + file + " is corrupted or invalid. Please check plugin.json for errors.") winston.warn("Plugin: " + file + " is corrupted or invalid. Please check plugin.json for errors.");
return next(err, null); return next(err, null);
} }

Loading…
Cancel
Save