You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.1 KiB
JavaScript

'use strict';
var async = require('async');
var plugins = require('../../plugins');
var pluginsController = {};
pluginsController.get = function(req, res, next) {
async.parallel({
compatible: function(next) {
plugins.list(function(err, plugins) {
if (err || !Array.isArray(plugins)) {
plugins = [];
}
next(null, plugins);
});
},
all: function(next) {
plugins.list(false, function(err, plugins) {
if (err || !Array.isArray(plugins)) {
plugins = [];
}
next(null, plugins);
});
}
}, function(err, payload) {
if (err) {
return next(err);
}
var compatiblePkgNames = payload.compatible.map(function(pkgData) {
return pkgData.name;
});
res.render('admin/extend/plugins' , {
installed: payload.compatible.filter(function(plugin) {
return plugin.installed;
}),
download: payload.compatible.filter(function(plugin) {
return !plugin.installed;
}),
incompatible: payload.all.filter(function(plugin) {
return compatiblePkgNames.indexOf(plugin.name) === -1;
})
});
});
};
module.exports = pluginsController;