braziw-plugin-dbedit
Version:
Braziw js Mongo DB object editor / scaffolding.
71 lines (53 loc) • 1.65 kB
JavaScript
;
var dbeditUtils = require('./utils/dbeditUtils.js');
var fs = require('fs');
module.exports = function DbEdit(pluginConf, web, next) {
var pluginPath = pluginConf.pluginPath;
pluginConf = web.utils.extend(require('./conf/conf-dbedit.js'), pluginConf);
var self = this;
web.cms.dbedit = self;
web.cms.dbedit.utils = dbeditUtils;
web.cms.dbedit.csvUtils = require('./utils/csvUtils.js');
web.cms.dbedit.searchUtils = require('./utils/searchUtils.js');
this.conf = pluginConf;
web.addRoutes(require('./conf/routes.js'));
if (pluginConf.addToMenu) {
web.cms.adminMenu.push({
headerText:'DB Editor',
permissions: ['ADMIN'],
items:[
{ text: 'Collections', link:'/admin/dbedit/collections'},
]
})
}
setupModels();
next();
}
function setupModels() {
var modelInfos = web.cms.dbedit.conf.models;
scanModelsDir(modelInfos);
for (var i in modelInfos) {
var modelInfo = modelInfos[i];
if (!modelInfo.name) {
modelInfo.name = getModelNameFromPath(modelInfo.path);
}
}
}
function getModelNameFromPath(modelPath) {
if (!modelPath) {
return null;
}
var arrModelSplit = modelPath.split('/');
var nameWithJs = arrModelSplit[arrModelSplit.length-1];
return nameWithJs.split('.')[0];
}
function scanModelsDir(modelInfos) {
var files = fs.readdirSync(web.conf.baseDir + web.conf.modelsDir);
for (var i in files) {
var file = files[i];
var modelName = getModelNameFromPath(file);
if (!dbeditUtils.getModelConf(modelName) && web.stringUtils.endsWith(file, '.js')) {
modelInfos.push({path: modelName});
}
}
}