2015-09-17 16:25:15 -04:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var async = require('async');
|
|
|
|
|
var plugins = require('../../plugins');
|
|
|
|
|
|
|
|
|
|
var pluginsController = {};
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
pluginsController.get = function (req, res, next) {
|
2015-09-17 16:25:15 -04:00
|
|
|
async.parallel({
|
2016-10-13 11:43:39 +02:00
|
|
|
compatible: function (next) {
|
|
|
|
|
plugins.list(function (err, plugins) {
|
2015-09-17 16:25:15 -04:00
|
|
|
if (err || !Array.isArray(plugins)) {
|
|
|
|
|
plugins = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
next(null, plugins);
|
|
|
|
|
});
|
|
|
|
|
},
|
2016-10-13 11:43:39 +02:00
|
|
|
all: function (next) {
|
|
|
|
|
plugins.list(false, function (err, plugins) {
|
2015-09-17 16:25:15 -04:00
|
|
|
if (err || !Array.isArray(plugins)) {
|
|
|
|
|
plugins = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
next(null, plugins);
|
|
|
|
|
});
|
2017-02-17 19:31:21 -07:00
|
|
|
},
|
2016-10-13 11:43:39 +02:00
|
|
|
}, function (err, payload) {
|
2015-09-17 16:25:15 -04:00
|
|
|
if (err) {
|
|
|
|
|
return next(err);
|
|
|
|
|
}
|
2016-10-13 11:43:39 +02:00
|
|
|
var compatiblePkgNames = payload.compatible.map(function (pkgData) {
|
2015-09-17 16:25:15 -04:00
|
|
|
return pkgData.name;
|
|
|
|
|
});
|
|
|
|
|
|
2017-02-18 01:31:47 -07:00
|
|
|
res.render('admin/extend/plugins', {
|
2016-10-13 11:43:39 +02:00
|
|
|
installed: payload.compatible.filter(function (plugin) {
|
2015-09-17 16:25:15 -04:00
|
|
|
return plugin.installed;
|
|
|
|
|
}),
|
2016-10-13 11:43:39 +02:00
|
|
|
upgradeCount: payload.compatible.reduce(function (count, current) {
|
2016-08-02 14:57:25 -04:00
|
|
|
if (current.installed && current.outdated) {
|
2017-02-18 01:12:18 -07:00
|
|
|
count += 1;
|
2016-08-02 14:57:25 -04:00
|
|
|
}
|
|
|
|
|
return count;
|
|
|
|
|
}, 0),
|
2016-10-13 11:43:39 +02:00
|
|
|
download: payload.compatible.filter(function (plugin) {
|
2015-09-17 16:25:15 -04:00
|
|
|
return !plugin.installed;
|
|
|
|
|
}),
|
2016-10-13 11:43:39 +02:00
|
|
|
incompatible: payload.all.filter(function (plugin) {
|
2015-09-17 16:25:15 -04:00
|
|
|
return compatiblePkgNames.indexOf(plugin.name) === -1;
|
2017-02-17 19:31:21 -07:00
|
|
|
}),
|
2015-09-17 16:25:15 -04:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = pluginsController;
|