all files / src/controllers/admin/ plugins.js

22.73% Statements 5/22
0% Branches 0/10
0% Functions 0/10
22.73% Lines 5/22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50                                                                                         
'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;