Socket
Socket
Sign inDemoInstall

oils-plugin-braziw-cms

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

oils-plugin-braziw-cms - npm Package Compare versions

Comparing version 5.0.0 to 7.0.0

2

controllers/admin/dashboard.js

@@ -5,3 +5,3 @@ module.exports = function(pluginConf, web) {

get: function(req, res) {
res.renderFile(pluginConf.pluginPath + '/views/admin/dashboard.html');
res.render(pluginConf.pluginPath + '/views/admin/dashboard.html');

@@ -8,0 +8,0 @@ }

@@ -60,3 +60,3 @@ module.exports = function(pluginConf, web) {

res.renderFile(pluginConf.views.addDocument,
res.render(pluginConf.views.addDocument,
{context: context, mimeType: doc.mimeType, cmMode: cmMode, folderId: folderId, isFolder: doc.isFolder, doc: doc, modelEditables: modelEditables, docTypeMap: docTypeMap});

@@ -72,3 +72,3 @@ })

let modelEditables = getModelEditables(doc.docType);
res.renderFile(pluginConf.views.addDocument,
res.render(pluginConf.views.addDocument,
{context: context, folderId: folderId, isFolder: req.query.isFolder, doc: doc, customDocType: doc.docType, modelEditables: modelEditables, docTypeMap: docTypeMap});

@@ -135,3 +135,3 @@ }

if (editable.type == "file") {
doc[name] = new Buffer(content, "utf8");
doc[name] = Buffer.from(content, "utf8");
//console.log('SAVEF BUFFER: ' + req.body[name])

@@ -138,0 +138,0 @@ } else if (editable.type == "date") {

@@ -37,3 +37,3 @@ module.exports = function(pluginConf, web) {

web.callEvent('cms.beforeRenderList', [options, req, res])
res.renderFile(pluginConf.views.list, options);
res.render(pluginConf.views.list, options);
})

@@ -40,0 +40,0 @@

@@ -0,3 +1,6 @@

'use strict';
const mongoose = web.require('mongoose');
const Schema = mongoose.Schema;
module.exports = {

@@ -37,3 +40,3 @@ name: 'Document',

schema.pre('save', function(next) {
schema.pre('save', async function() {
this.isFolder = (this.docType == web.cms.constants.folder);

@@ -61,7 +64,6 @@ this.lowerCaseName = this.name.toLowerCase();

let self = this;
web.cms.utils.getFolderPath(this, function(err, folderPath) {
if (err) {
console.error('Get folder path ' + err);
}
let folderPath = await web.cms.utils.getFolderPath(self);
if (!folderPath) {
console.error('Get folder path ' + err);
} else {
if (console.isDebug) {

@@ -72,4 +74,3 @@ console.debug('Assigning folder path to %s: %s', self.name, folderPath);

self.folderPath = folderPath;
next();
})
}

@@ -76,0 +77,0 @@ })

{
"name": "oils-plugin-braziw-cms",
"version": "5.0.0",
"version": "7.0.0",
"description": "Content and document management system plugin for oils js",

@@ -25,7 +25,6 @@ "keywords": [

"engines": {
"node": ">= 8.0.0"
"node": ">= 10.0.0"
},
"dependencies": {
"async": "3.1.x",
"multer": "~1.4.2"
"multer": "^1.4.2"
},

@@ -32,0 +31,0 @@ "license": "MIT",

@@ -1,2 +0,2 @@

module.exports = function(pluginConf, web, next) {
module.exports = async function(pluginConf, web) {
let pjson = require(web.conf.baseDir + '/package.json');

@@ -20,2 +20,3 @@ let self = this;

web.cms.utils = new DmsUtils(pluginConf, web);
web.dmsUtils = web.cms.utils;
web.cms.constants = {};

@@ -82,8 +83,9 @@ web.cms.constants.file = 'file';

web.on('beforeRender', function(view, options) {
options = options || {};
options._cms = web.cms;
let cmsObj = {
adminMenu: web.cms.adminMenu,
conf: web.cms.conf,
}
options._cms = cmsObj;
});
routes[context] = web.include(pluginConf.contextController);

@@ -134,9 +136,6 @@

web.addRoutes(routes);
web.cms.utils.initDocRoutes();
await web.cms.utils.initDocRoutes();
// let WCM = require('./wcm/wcm.js');
// web.cms.wcm = new WCM(pluginConf, web);
const SiteSetting = web.cms.getCmsModel('SiteSetting');
let SiteSetting = web.cms.getCmsModel('SiteSetting');
let updateSiteSettingCache = function(options) {

@@ -166,4 +165,2 @@ SiteSetting.findOne({docType:'SiteSetting'}).lean().exec(function(err,siteSetting) {

options = options || {};
let site = web.cms.siteSettingCache || {};

@@ -173,4 +170,5 @@ options._site = site;

});
web.on('initServer', function() {
web.on('initServer', async function() {
if (!web.syspars) {

@@ -181,74 +179,70 @@ throw new Error('CMS needs oils-plugin-syspars plugin');

let Document = web.includeModel(pluginConf.models.Document);
if (!Document.getModelDictionary().schema.createDt) {
throw new Error("Your Document schema is outdated. Please change to latest.");
}
web.syspars.get('CMS_RUN_ONCE', function(err, syspar) {
if (!syspar) {
await web.runOnce('CMS_RUN_ONCE', async function() {
await cmsRunOnce();
})
});
cmsRunOnce();
web.syspars.set('CMS_RUN_ONCE', 'Y');
}
async function cmsRunOnce() {
if (web.auth && pluginConf.autoCreateAdminUser) {
let User = web.auth.UserModel;
function cmsRunOnce() {
if (web.auth && pluginConf.autoCreateAdminUser) {
let User = web.auth.UserModel;
let saveAdminUser = function() {
let saveAdminUser = function() {
//deprecated, auth plugin now handles admin registration for new websites
//deprecated, auth plugin now handles admin registration for new websites
if (!pluginConf.defaultAdminPassword) {
throw new Error("cms-pluginConf.defaultAdminPassword is required");
}
let user = new User();
user.username = 'admin';
user.password = pluginConf.defaultAdminPassword;
user.birthday = new Date();
user.role = 'ADMIN';
user.fullname = 'Admin';
user.nickname = 'Admin';
user.email = 'admin@example.com';
user.save(function(err) {
if (err) throw err;
});
console.log('Admin user saved.');
};
if (!pluginConf.defaultAdminPassword) {
throw new Error("cms-pluginConf.defaultAdminPassword is required");
}
let user = new User();
user.username = 'admin';
user.password = pluginConf.defaultAdminPassword;
user.birthday = new Date();
user.role = 'ADMIN';
user.fullname = 'Admin';
user.nickname = 'Admin';
user.email = 'admin@example.com';
user.save(function(err) {
if (err) throw err;
});
console.log('Admin user saved.');
};
console.log('First time to run. Running DMS init data.');
//init-data
User.findOne({username:'admin'}, function(err, user) {
if (!user) {
saveAdminUser();
} else if (user.role != 'ADMIN') {
user.remove(function() {
saveAdminUser();
});
}
console.log('First time to run. Running DMS init data.');
//init-data
User.findOne({username:'admin'}, function(err, user) {
if (!user) {
saveAdminUser();
} else if (user.role != 'ADMIN') {
user.remove(function() {
saveAdminUser();
});
}
});
}
SiteSetting.findOne({docType:'SiteSetting'}, function(err, siteSetting) {
if (!siteSetting) {
siteSetting = new SiteSetting();
siteSetting.title = pluginConf.defaultSiteTitle;
siteSetting.save(function(err) {
if (err) throw err;
web.cms.updateSiteSettingCache();
});
}
SiteSetting.findOne({docType:'SiteSetting'}, function(err, siteSetting) {
if (!siteSetting) {
siteSetting = new SiteSetting();
siteSetting.title = pluginConf.defaultSiteTitle;
siteSetting.save(function(err) {
if (err) throw err;
web.cms.updateSiteSettingCache();
});
}
});
}
});
next();
};

@@ -0,3 +1,5 @@

'use strict';
const _path = require('path');
const async = require('async');
module.exports = function(pluginConf, web) {

@@ -9,64 +11,49 @@ let self = this;

self.handleFolder = async function(parentFolderId, req, res, callback, parentFolders) {
if (parentFolderId) {
try {
parentFolderId = mongoose.Types.ObjectId(parentFolderId)
} catch(e) {
console.error('Folder id error: ' + parentFolderId, e);
redirectToMainWithError(req, res, 'Invalid folder.');
return;
}
} else {
parentFolderId = null;
}
let folder = await Document.findOne({_id: parentFolderId});
self.handleFolder = function(parentFolderId, req, res, callback, parentFolders) {
return new Promise(function(resolve, reject) {
if (parentFolderId) {
try {
parentFolderId = mongoose.Types.ObjectId(parentFolderId)
} catch(e) {
console.error('Folder id error: ' + parentFolderId, e);
redirectToMainWithError(req, res, 'Invalid folder.');
return;
}
} else {
parentFolderId = null;
if (parentFolderId) {
if (!folder) {
console.error('Folder not found error: ' + parentFolderId);
redirectToMainWithError(req, res, 'Folder not found.');
return
}
Document.findOne({_id: parentFolderId}, function(err, folder) {
if (parentFolderId) {
if (!folder) {
console.error('Folder not found error: ' + parentFolderId);
redirectToMainWithError(req, res, 'Folder not found.');
return
}
}
}
if (folder) {
if (parentFolders == null) {
parentFolders = [];
}
parentFolders.unshift(folder);
if (folder.parentFolderId) {
return await self.handleFolder(folder.parentFolderId.toString(), req, res, callback, parentFolders);
}
if (folder) {
if (parentFolders == null) {
parentFolders = [];
}
parentFolders.unshift(folder);
if (folder.parentFolderId) {
self.handleFolder(folder.parentFolderId.toString(), req, res, callback, parentFolders);
//WARNING this will return
return;
}
}
}
let folderId = null;
if (parentFolders) {
folder = parentFolders[parentFolders.length-1];
folderId = folder._id.toString();
}
let folderId = null;
if (parentFolders) {
folder = parentFolders[parentFolders.length-1];
folderId = folder._id.toString();
}
if (callback) {
callback(err, folder, folderId, parentFolders);
}
if (callback) {
callback(null, folder, folderId, parentFolders);
}
if (err) {
reject(err);
} else {
resolve(folder, folderId, parentFolders);
}
})
});
return {folder, folderId, parentFolders};
}

@@ -91,11 +78,12 @@

self.initDocRoutes = function() {
Document.find({route: {'$ne': null}}, '', {lean: true}, function(err, docs) {
for (let i in docs) {
let doc = docs[i];
self.addDocRoute(doc);
}
self.initDocRoutes = async function() {
let docs = await Document.find({route: {'$ne': null}}, '', {lean: true});
for (let i in docs) {
let doc = docs[i];
self.addDocRoute(doc);
})
}
return docs;
};

@@ -129,69 +117,48 @@

self.getChildren = function(doc, callback) {
return new Promise(function(resolve, reject) {
Document.find({parentFolderId:doc._id}, function(err, docs) {
if (err) throw err;
if (callback) {
callback(err, docs);
}
resolve(docs);
});
});
self.getChildren = async function(doc, cb) {
let docs = await Document.find({parentFolderId:doc._id});
if (cb) {
cb(null, docs);
}
return docs;
}
self.deleteDoc = function(doc, callback) {
self.deleteDoc = async function(doc, cb) {
//breadth first search delete
return self._breadthFirstSearchDelete([doc], callback);
await self._breadthFirstSearchDelete([doc]);
if (cb) {
cb();
}
}
//slower but more reliable than recursive
self._breadthFirstSearchDelete = function(arrDocs, callback) {
return new Promise(function(resolve, reject) {
async.whilst(function(cb) {
cb(null, arrDocs.length > 0);
}, function(asyncCallback) {
let lastDoc = arrDocs.pop();
if (lastDoc.isFolder) {
self.getChildren(lastDoc, function(err, docs) {
for (let i in docs) {
arrDocs.unshift(docs[i]);
}
self._breadthFirstSearchDelete = async function(arrDocs, cb) {
while (arrDocs.length > 0) {
let lastDoc = arrDocs.pop();
if (console.isDebug) {
console.debug('Deleting ' + lastDoc.name);
}
lastDoc.remove(function(err) {
if (err) throw err;
asyncCallback();
})
})
} else {
if (console.isDebug) {
console.debug('Deleting ' + lastDoc.name);
}
lastDoc.remove(function(err) {
if (err) throw err;
asyncCallback();
})
if (lastDoc.isFolder) {
let docs = await self.getChildren(lastDoc);
for (let i in docs) {
arrDocs.unshift(docs[i]);
}
if (console.isDebug) {
console.debug('Deleting ' + lastDoc.name);
}
},
await lastDoc.remove();
function(err) {
if (callback) {
callback(err);
} else {
if (console.isDebug) {
console.debug('Deleting ' + lastDoc.name);
}
if (err) {
reject(err);
} else {
resolve();
}
})
});
await lastDoc.remove();
}
}
if (cb) {
cb();
}

@@ -201,31 +168,18 @@ }

self.deletePath = function(path, callback) {
return new Promise(function(resolve, reject) {
self.retrieveDoc(path, function(err, doc) {
if (err) throw err;
self.deletePath = async function(path, callback) {
let doc = await self.retrieveDoc(path);
if (!doc) {
console.warn('Delete path do not exist ' + path);
if (callback) {
callback();
}
if (!doc) {
console.warn('Delete path do not exist ' + path);
} else {
await self.deleteDoc(doc);
}
resolve();
} else {
self.deleteDoc(doc, function(err) {
if (err) throw err;
if (callback) {
callback();
}
resolve();
})
}
})
})
if (callback) {
callback();
}
}
self.checkExistence = function(name, parentDocId, optionalDocType, callback) {
if (arguments.length < 4) {
self.checkExistence = async function(name, parentDocId, optionalDocType, callback) {
if (web.objectUtils.isFunction(optionalDocType)) {
callback = optionalDocType;

@@ -235,138 +189,105 @@ optionalDocType = null;

return new Promise(function(resolve, reject) {
let SpecificObject = null;
if (optionalDocType) {
SpecificObject = web.cms.getCmsModel(optionalDocType);
} else {
SpecificObject = Document;
}
SpecificObject.findOne({parentFolderId: parentDocId, lowerCaseName: name.toLowerCase()}, function(err, doc) {
if (callback) {
callback(err, doc);
}
let SpecificObject = null;
if (optionalDocType) {
SpecificObject = web.cms.getCmsModel(optionalDocType);
} else {
SpecificObject = Document;
}
let doc = await SpecificObject.findOne({parentFolderId: parentDocId, lowerCaseName: name.toLowerCase()});
if (err) {
reject(err);
} else {
resolve(doc);
}
})
});
if (callback) {
callback(null, doc);
}
return doc;
};
self.retrieveDoc = function(path, callback) {
return new Promise(function(resolve, reject) {
self.retrieveDoc = async function(path, callback) {
let arrPaths = self.getPathAsArray(path);
self._retrieveDocFromArray(arrPaths, function(err, doc) {
if (err) throw err;
if (callback) {
callback(err, doc);
}
resolve(doc);
})
});
let doc = await self._retrieveDocFromArray(arrPaths);
if (callback) {
callback(null, doc);
}
return doc;
}
self.retrieveDocById = function(id, callback) {
return new Promise(function(resolve, reject) {
Document.findOne({_id: id}, function(err, doc) {
if (callback) {
callback(err, doc);
}
self.retrieveDocById = async function(id, callback) {
if (err) {
reject(err);
} else {
resolve(doc);
}
})
});
let doc = await Document.findOne({_id: id});
if (callback) {
callback(null, doc);
}
return doc;
}
self._retrieveDocFromArray = function(arrPaths, callback, currDoc) {
return new Promise(function(resolve, reject) {
self._retrieveDocFromArray = async function(arrPaths, callback, currDoc) {
if (arrPaths.length == 0) {
if (callback) {
callback(null, currDoc);
}
resolve(currDoc);
return;
if (arrPaths.length == 0) {
if (callback) {
callback(null, currDoc);
}
return currDoc;
}
// if (console.isDebug) {
// console.debug('Retrieve doc from array: ' + arrPaths);
// }
let firstFile = arrPaths[0];
let firstFile = arrPaths[0];
arrPaths.shift();
arrPaths.shift();
let parentDocId = currDoc ? currDoc._id : null;
let parentDocId = currDoc ? currDoc._id : null;
self.checkExistence(firstFile, parentDocId, function(err, doc) {
if (err) throw err;
let doc = await self.checkExistence(firstFile, parentDocId);
if (!doc) {
if (callback) {
callback();
}
if (!doc) {
if (callback) {
callback();
}
resolve();
} else {
self._retrieveDocFromArray(arrPaths, callback, doc);
}
});
});
return;
}
return await self._retrieveDocFromArray(arrPaths, callback, doc);
}
self.getFolderPath = function(doc, cb, parentFolders) {
return new Promise(function(resolve, reject) {
if (doc.folderPath && !parentFolders) {
//console.log('Hello!!', doc._id, doc.folderPath, parentFolders);
if (cb) {
cb(null, doc.folderPath);
}
resolve(doc.folderPath);
return;
self.getFolderPath = async function(doc, cb, parentFolders) {
if (doc.folderPath && !parentFolders) {
if (cb) {
cb(null, doc.folderPath);
}
if (parentFolders == null) {
parentFolders = [];
return doc.folderPath;
}
if (parentFolders == null) {
parentFolders = [];
}
if (!doc.parentFolderId) {
let folderPath = '/';
if (parentFolders && parentFolders.length > 0) {
folderPath = folderPath + parentFolders.join('/') + '/';
}
if (cb) {
cb(null, folderPath);
}
return folderPath;
}
if (!doc.parentFolderId) {
let folderPath = '/';
if (parentFolders && parentFolders.length > 0) {
folderPath = folderPath + parentFolders.join('/') + '/';
}
if (cb) {
cb(null, folderPath);
}
resolve(folderPath);
return;
}
//console.log('!!!' + doc.parentFolderId);
self.retrieveDocById(doc.parentFolderId, function(err, doc) {
if (err) {
if (cb) {
cb(err, null);
}
reject(err);
return;
}
parentFolders.unshift(doc.name);
self.getFolderPath(doc, cb, parentFolders);
});
});
let docParent = await self.retrieveDocById(doc.parentFolderId);
if (!docParent) {
throw new Error("[getFolderPath] Doc not found");
}
parentFolders.unshift(docParent.name);
return await self.getFolderPath(docParent, cb, parentFolders);
}
self.createFileIfNotExist = function(path, optionalContent, callback) {
if (arguments.length < 3) {
self.createFileIfNotExist = async function(path, optionalContent, callback) {
if (web.objectUtils.isFunction(optionalContent)) {
callback = optionalContent;

@@ -376,80 +297,67 @@ optionalContent = null;

return new Promise(function(resolve, reject) {
if (optionalContent !== null && typeof optionalContent === 'string') {
let strValue = optionalContent;
optionalContent = new Object();
optionalContent.content = strValue;
}
if (optionalContent !== null && typeof optionalContent === 'string') {
let strValue = optionalContent;
optionalContent = new Object();
optionalContent.content = strValue;
}
let parentDir = _path.dirname(path);
self.mkdirs(parentDir, function(err, parentDoc) {
let parentDir = _path.dirname(path);
let parentDoc = await self.mkdirs(parentDir);
if (err) throw err;
let basename = _path.basename(path);
let parentDocId = parentDoc ? parentDoc._id : null
let basename = _path.basename(path);
let parentDocId = parentDoc ? parentDoc._id : null
let myDocType = null;
if (optionalContent && optionalContent.docType) {
myDocType = optionalContent.docType;
}
let myDocType = null;
if (optionalContent && optionalContent.docType) {
myDocType = optionalContent.docType;
}
let doc = await self.checkExistence(basename, parentDoc, myDocType);
self.checkExistence(basename, parentDoc, myDocType, function(err, doc) {
if (err) throw err;
if (!doc) {
if (myDocType) {
let SpecificObject = web.cms.getCmsModel(myDocType);
doc = new SpecificObject();
} else {
doc = new Document();
}
doc.name = basename;
if (parentDoc) {
doc.parentFolderId = parentDoc._id;
}
if (!doc) {
if (myDocType) {
let SpecificObject = web.cms.getCmsModel(myDocType);
doc = new SpecificObject();
} else {
doc = new Document();
}
doc.name = basename;
if (parentDoc) {
doc.parentFolderId = parentDoc._id;
}
doc.docType = web.cms.constants.file;
doc.docType = web.cms.constants.file;
if (optionalContent) {
for (let i in optionalContent) {
doc[i] = new Buffer(optionalContent[i], "utf8");
}
}
if (optionalContent) {
for (let i in optionalContent) {
doc[i] = Buffer.from(optionalContent[i], "utf8");
}
}
doc.save(function(err) {
if (err) {
if (callback) {
callback(err);
}
reject(err);
} else {
if (callback) {
callback(null, doc, false);
}
resolve(doc, false);
}
});
await doc.save();
doc.existingDoc = false;
if (callback) {
callback(null, doc, false);
}
} else {
if (callback) {
callback(null, doc, true);
}
return doc;
resolve(doc, true);
}
})
});
});
} else {
};
doc.existingDoc = true;
if (callback) {
callback(null, doc, true);
}
return doc;
}
}
self.getPathAsArray = function(path) {

@@ -461,58 +369,34 @@ //console.log('!!!!' + path + ' ::: ' + path.substr(1).split('/'))

self.mkdirs = function(path, callback) {
self.mkdirs = async function(path, callback) {
let arrFolders = self.getPathAsArray(path);
//console.log('!' + arrFolders);
return _mkdirs(arrFolders, callback, 0);
return await _mkdirs(arrFolders, callback, 0);
};
let _mkdirs = function(arrFolders, callback, index, parentFolderId) {
return new Promise(function(resolve, reject) {
let folderName = arrFolders[index];
//console.log('ZZZ!!!' + folderName);
Document.findOne({parentFolderId: parentFolderId, lowerCaseName: folderName.toLowerCase()}, function(err, doc) {
let myCb = function(err, doc) {
if (callback) {
callback(err, doc);
}
let _mkdirs = async function(arrFolders, callback) {
if (err) {
reject(err);
} else {
resolve(doc);
}
}
if (!doc) {
doc = new Document();
doc.name = folderName;
doc.parentFolderId = parentFolderId;
doc.docType = web.cms.constants.folder;
doc.save(function(err) {
if (err) {
console.error(err);
} else {
_handleMkdirsCallback(doc, arrFolders, myCb, index, parentFolderId);
}
});
} else {
_handleMkdirsCallback(doc, arrFolders, myCb, index, parentFolderId);
}
let parentFolderId = null;
let lastDoc = null;
for (let folderName of arrFolders) {
let doc = await Document.findOne({parentFolderId: parentFolderId, lowerCaseName: folderName.toLowerCase()});
if (!doc) {
doc = new Document();
doc.name = folderName;
})
});
doc.parentFolderId = parentFolderId;
doc.docType = web.cms.constants.folder;
await doc.save();
}
parentFolderId = doc._id;
lastDoc = doc;
}
if (callback) {
callback(null, lastDoc);
}
return lastDoc;
};
let _handleMkdirsCallback = function(doc, arrFolders, callback, index, parentFolderId) {
index++;
if (index < arrFolders.length) {
_mkdirs(arrFolders, callback, index, doc._id);
} else {
if (callback) {
callback(null, doc);
}
}
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc