UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

90 lines (79 loc) 2.43 kB
var async = require("async"); var logger = require("./logger"); var container = {}; /* callback: (err) */ module.exports.init = function(server, callback) { try { //initialize all of the registered plugins var keys = module.exports.getPluginKeys(); async.each(keys, function (key, done) { var p = module.exports.get(key); if (p && typeof p.init === 'function') { p.init(server, function (err) { if (err) { logger.error("Error initializing plugin: " + err + ". Call Stack: " + err.stack); done(err); } else { logger.info("Plugin initialized: " + key); done(); } }); } else { done(); } }, function (err) { if (callback) callback(err); }); } catch(e) { logger.error(e); if (callback) callback(e); } }; module.exports.set = function(key, obj) { logger.info("Registering plugin: " + key); container[key] = obj; }; module.exports.get = function(key) { return container[key]; }; module.exports.getPluginKeys = function() { return Object.keys(container); }; module.exports.getPlugins = function() { var keys = Object.keys(container); var arr = []; for(var i = 0; i < keys.length; i++) { var obj = module.exports.get(keys[i]); if (obj) arr.push(obj); } return arr; }; module.exports.getPluginResources = function() { var result = { scripts: [], styles: [] }; var plugins = module.exports.getPlugins(); if (plugins && plugins.length > 0) { for(var i = 0; i < plugins.length; i++) { var obj = plugins[i]; if (obj && typeof obj.getResources == 'function') { var r = obj.getResources(); if (r) { if (r.scripts) { for(var j = 0; j < r.scripts.length; j++) result.scripts.push(r.scripts[j]); } if (r.styles) { for(var j = 0; j < r.styles.length; j++) result.styles.push(r.styles[j]); } } } } } return result; };