oils-plugin-braziw-cms
Advanced tools
Comparing version 3.0.1 to 3.0.2
@@ -23,2 +23,3 @@ const path = require('path'); | ||
"showIconDescrip": true, | ||
"autoCreateAdminUser": false, | ||
"uploadDir": uploadDir, | ||
@@ -25,0 +26,0 @@ "adminTemplate": pluginPath + "/views/templates/admin-template.html", |
@@ -30,4 +30,3 @@ module.exports = function(pluginConf, web) { | ||
context: context, | ||
folderId: | ||
folderId, | ||
folderId: folderId, | ||
parentFolders: parentFolders, | ||
@@ -34,0 +33,0 @@ folderPath: folderPath, |
{ | ||
"name": "oils-plugin-braziw-cms", | ||
"version": "3.0.1", | ||
"version": "3.0.2", | ||
"description": "Content and document management system plugin for oils js", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -227,3 +227,3 @@ module.exports = function(pluginConf, web, next) { | ||
function cmsRunOnce() { | ||
if (web.auth) { | ||
if (web.auth && pluginConf.autoCreateAdminUser) { | ||
let User = web.auth.UserModel; | ||
@@ -233,9 +233,13 @@ | ||
let saveAdminUser = function() { | ||
//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 = 'abcd1234'; | ||
user.birthday= new Date(); | ||
user.lastname ='John'; | ||
user.firstname = 'Doe'; | ||
user.middlename = 'Admin'; | ||
user.password = pluginConf.defaultAdminPassword; | ||
user.birthday = new Date(); | ||
user.role = 'ADMIN'; | ||
@@ -242,0 +246,0 @@ user.fullname = 'Admin'; |
@@ -12,47 +12,59 @@ const _path = require('path'); | ||
self.handleFolder = 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; | ||
} | ||
} | ||
Document.findOne({_id: parentFolderId}, function(err, folder) { | ||
return new Promise(function(resolve, reject) { | ||
if (parentFolderId) { | ||
if (!folder) { | ||
console.error('Folder not found error: ' + parentFolderId); | ||
redirectToMainWithError(req, res, 'Folder not found.'); | ||
return | ||
try { | ||
parentFolderId = mongoose.Types.ObjectId(parentFolderId) | ||
} catch(e) { | ||
console.error('Folder id error: ' + parentFolderId, e); | ||
redirectToMainWithError(req, res, 'Invalid folder.'); | ||
return; | ||
} | ||
} | ||
if (folder) { | ||
if (parentFolders == null) { | ||
parentFolders = []; | ||
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 | ||
} | ||
} | ||
parentFolders.unshift(folder); | ||
if (folder.parentFolderId) { | ||
self.handleFolder(folder.parentFolderId.toString(), req, res, callback, parentFolders); | ||
//WARNING this will return | ||
return; | ||
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(); | ||
} | ||
callback(err, folder, folderId, parentFolders); | ||
let folderId = null; | ||
if (parentFolders) { | ||
folder = parentFolders[parentFolders.length-1]; | ||
folderId = folder._id.toString(); | ||
} | ||
}) | ||
if (callback) { | ||
callback(err, folder, folderId, parentFolders); | ||
} | ||
if (err) { | ||
reject(err); | ||
} else { | ||
resolve(folder, folderId, parentFolders); | ||
} | ||
}) | ||
}); | ||
} | ||
@@ -115,7 +127,14 @@ | ||
self.getChildren = function(doc, callback) { | ||
Document.find({parentFolderId:doc._id}, function(err, docs) { | ||
if (err) throw err; | ||
return new Promise(function(resolve, reject) { | ||
Document.find({parentFolderId:doc._id}, function(err, docs) { | ||
if (err) throw err; | ||
callback(err, docs); | ||
if (callback) { | ||
callback(err, docs); | ||
} | ||
resolve(docs); | ||
}); | ||
}); | ||
} | ||
@@ -125,3 +144,3 @@ | ||
//breadth first search delete | ||
self._breadthFirstSearchDelete([doc], callback); | ||
return self._breadthFirstSearchDelete([doc], callback); | ||
} | ||
@@ -131,16 +150,25 @@ | ||
self._breadthFirstSearchDelete = function(arrDocs, callback) { | ||
async.whilst(function() { | ||
return 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]); | ||
} | ||
return new Promise(function(resolve, reject) { | ||
async.whilst(function() { | ||
return 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]); | ||
} | ||
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); | ||
} | ||
console.debug('Deleting ' + lastDoc.name); | ||
} | ||
lastDoc.remove(function(err) { | ||
@@ -150,19 +178,20 @@ if (err) throw err; | ||
}) | ||
}) | ||
} else { | ||
if (console.isDebug) { | ||
console.debug('Deleting ' + lastDoc.name); | ||
} | ||
lastDoc.remove(function(err) { | ||
if (err) throw err; | ||
asyncCallback(); | ||
}) | ||
} | ||
} | ||
}, | ||
}, | ||
function(err) { | ||
callback(err); | ||
}) | ||
function(err) { | ||
if (callback) { | ||
callback(err); | ||
} | ||
if (err) { | ||
reject(err); | ||
} else { | ||
resolve(); | ||
} | ||
}) | ||
}); | ||
@@ -173,19 +202,26 @@ } | ||
self.deletePath = function(path, callback) { | ||
self.retrieveDoc(path, function(err, doc) { | ||
if (err) throw err; | ||
return new Promise(function(resolve, reject) { | ||
self.retrieveDoc(path, function(err, doc) { | ||
if (err) throw err; | ||
if (!doc) { | ||
console.warn('Delete path do not exist ' + path); | ||
if (callback) { | ||
callback(); | ||
} | ||
} else { | ||
self.deleteDoc(doc, function(err) { | ||
if (err) throw err; | ||
if (!doc) { | ||
console.warn('Delete path do not exist ' + path); | ||
if (callback) { | ||
callback(); | ||
} | ||
}) | ||
} | ||
resolve(); | ||
} else { | ||
self.deleteDoc(doc, function(err) { | ||
if (err) throw err; | ||
if (callback) { | ||
callback(); | ||
} | ||
resolve(); | ||
}) | ||
} | ||
}) | ||
}) | ||
} | ||
@@ -198,53 +234,91 @@ | ||
} | ||
let SpecificObject = null; | ||
if (optionalDocType) { | ||
SpecificObject = web.cms.getCmsModel(optionalDocType); | ||
} else { | ||
SpecificObject = Document; | ||
} | ||
SpecificObject.findOne({parentFolderId: parentDocId, lowerCaseName: name.toLowerCase()}, function(err, doc) { | ||
callback(err, doc); | ||
}) | ||
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); | ||
} | ||
if (err) { | ||
reject(err); | ||
} else { | ||
resolve(doc); | ||
} | ||
}) | ||
}); | ||
}; | ||
self.retrieveDoc = function(path, callback) { | ||
let arrPaths = self.getPathAsArray(path); | ||
return new Promise(function(resolve, reject) { | ||
let arrPaths = self.getPathAsArray(path); | ||
self._retrieveDocFromArray(arrPaths, function(err, doc) { | ||
if (err) throw err; | ||
callback(err, doc); | ||
}) | ||
self._retrieveDocFromArray(arrPaths, function(err, doc) { | ||
if (err) throw err; | ||
if (callback) { | ||
callback(err, doc); | ||
} | ||
resolve(doc); | ||
}) | ||
}); | ||
} | ||
self.retrieveDocById = function(id, callback) { | ||
Document.findOne({_id: id}, function(err, doc) { | ||
callback(err, doc); | ||
}) | ||
return new Promise(function(resolve, reject) { | ||
Document.findOne({_id: id}, function(err, doc) { | ||
if (callback) { | ||
callback(err, doc); | ||
} | ||
if (err) { | ||
reject(err); | ||
} else { | ||
resolve(doc); | ||
} | ||
}) | ||
}); | ||
} | ||
self._retrieveDocFromArray = function(arrPaths, callback, currDoc) { | ||
if (arrPaths.length == 0) { | ||
callback(null, currDoc); | ||
return; | ||
} | ||
return new Promise(function(resolve, reject) { | ||
// if (console.isDebug) { | ||
// console.debug('Retrieve doc from array: ' + arrPaths); | ||
// } | ||
let firstFile = arrPaths[0]; | ||
if (arrPaths.length == 0) { | ||
if (callback) { | ||
callback(null, currDoc); | ||
} | ||
resolve(currDoc); | ||
return; | ||
} | ||
arrPaths.shift(); | ||
// if (console.isDebug) { | ||
// console.debug('Retrieve doc from array: ' + arrPaths); | ||
// } | ||
let firstFile = arrPaths[0]; | ||
let parentDocId = currDoc ? currDoc._id : null; | ||
arrPaths.shift(); | ||
self.checkExistence(firstFile, parentDocId, function(err, doc) { | ||
if (err) throw err; | ||
let parentDocId = currDoc ? currDoc._id : null; | ||
if (!doc) { | ||
self.checkExistence(firstFile, parentDocId, function(err, doc) { | ||
if (err) throw err; | ||
callback(); | ||
} else { | ||
self._retrieveDocFromArray(arrPaths, callback, doc); | ||
} | ||
if (!doc) { | ||
if (callback) { | ||
callback(); | ||
} | ||
resolve(); | ||
} else { | ||
self._retrieveDocFromArray(arrPaths, callback, doc); | ||
} | ||
}); | ||
}); | ||
@@ -254,25 +328,32 @@ } | ||
self.getFolderPath = function(doc, cb, parentFolders) { | ||
if (doc.folderPath && !parentFolders) { | ||
//console.log('Hello!!', doc.folderPath); | ||
cb(null, doc.folderPath); | ||
return; | ||
} | ||
if (parentFolders == null) { | ||
parentFolders = []; | ||
} | ||
if (!doc.parentFolderId) { | ||
let folderPath = '/'; | ||
if (parentFolders && parentFolders.length > 0) { | ||
folderPath = folderPath + parentFolders.join('/') + '/'; | ||
return new Promise(function(resolve, reject) { | ||
if (doc.folderPath && !parentFolders) { | ||
//console.log('Hello!!', doc.folderPath); | ||
if (cb) { | ||
cb(null, doc.folderPath); | ||
} | ||
resolve(doc.folderPath); | ||
return; | ||
} | ||
cb(null, folderPath); | ||
return; | ||
} | ||
//console.log('!!!' + doc.parentFolderId); | ||
self.retrieveDocById(doc.parentFolderId, function(err, doc) { | ||
if (err) {cb(err, null)} | ||
parentFolders.unshift(doc.name); | ||
self.getFolderPath(doc, cb, parentFolders); | ||
if (parentFolders == null) { | ||
parentFolders = []; | ||
} | ||
if (!doc.parentFolderId) { | ||
let folderPath = '/'; | ||
if (parentFolders && parentFolders.length > 0) { | ||
folderPath = folderPath + parentFolders.join('/') + '/'; | ||
} | ||
cb(null, folderPath); | ||
return; | ||
} | ||
//console.log('!!!' + doc.parentFolderId); | ||
self.retrieveDocById(doc.parentFolderId, function(err, doc) { | ||
if (err) {cb(err, null)} | ||
parentFolders.unshift(doc.name); | ||
self.getFolderPath(doc, cb, parentFolders); | ||
}); | ||
}); | ||
@@ -287,61 +368,78 @@ } | ||
if (optionalContent !== null && typeof optionalContent === 'string') { | ||
let strValue = optionalContent; | ||
optionalContent = new Object(); | ||
optionalContent.content = strValue; | ||
} | ||
return new Promise(function(resolve, reject) { | ||
let parentDir = _path.dirname(path); | ||
self.mkdirs(parentDir, function(err, parentDoc) { | ||
if (err) throw err; | ||
if (optionalContent !== null && typeof optionalContent === 'string') { | ||
let strValue = optionalContent; | ||
optionalContent = new Object(); | ||
optionalContent.content = strValue; | ||
} | ||
let basename = _path.basename(path); | ||
let parentDocId = parentDoc ? parentDoc._id : null | ||
let parentDir = _path.dirname(path); | ||
self.mkdirs(parentDir, function(err, parentDoc) { | ||
let myDocType = null; | ||
if (optionalContent && optionalContent.docType) { | ||
myDocType = optionalContent.docType; | ||
} | ||
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; | ||
} | ||
let basename = _path.basename(path); | ||
let parentDocId = parentDoc ? parentDoc._id : null | ||
doc.docType = web.cms.constants.file; | ||
let myDocType = null; | ||
if (optionalContent && optionalContent.docType) { | ||
myDocType = optionalContent.docType; | ||
} | ||
if (optionalContent) { | ||
for (let i in optionalContent) { | ||
doc[i] = new Buffer(optionalContent[i], "utf8"); | ||
} | ||
} | ||
self.checkExistence(basename, parentDoc, myDocType, function(err, doc) { | ||
if (err) throw err; | ||
doc.save(function(err) { | ||
if (err) { | ||
callback(err); | ||
if (!doc) { | ||
if (myDocType) { | ||
let SpecificObject = web.cms.getCmsModel(myDocType); | ||
doc = new SpecificObject(); | ||
} else { | ||
callback(null, doc, false); | ||
doc = new Document(); | ||
} | ||
}); | ||
doc.name = basename; | ||
if (parentDoc) { | ||
doc.parentFolderId = parentDoc._id; | ||
} | ||
doc.docType = web.cms.constants.file; | ||
} else { | ||
callback(null, doc, true); | ||
} | ||
}) | ||
if (optionalContent) { | ||
for (let i in optionalContent) { | ||
doc[i] = new Buffer(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); | ||
} | ||
}); | ||
} else { | ||
if (callback) { | ||
callback(null, doc, true); | ||
} | ||
resolve(doc, true); | ||
} | ||
}) | ||
}); | ||
}); | ||
}; | ||
@@ -358,3 +456,3 @@ | ||
//console.log('!' + arrFolders); | ||
_mkdirs(arrFolders, callback, 0); | ||
return _mkdirs(arrFolders, callback, 0); | ||
@@ -364,23 +462,38 @@ }; | ||
let _mkdirs = function(arrFolders, callback, index, parentFolderId) { | ||
let folderName = arrFolders[index]; | ||
//console.log('ZZZ!!!' + folderName); | ||
Document.findOne({parentFolderId: parentFolderId, lowerCaseName: folderName.toLowerCase()}, function(err, doc) { | ||
if (!doc) { | ||
doc = new Document(); | ||
doc.name = folderName; | ||
doc.parentFolderId = parentFolderId; | ||
doc.docType = web.cms.constants.folder; | ||
doc.save(function(err) { | ||
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); | ||
} | ||
if (err) { | ||
console.error(err); | ||
reject(err); | ||
} else { | ||
_handleMkdirsCallback(doc, arrFolders, callback, index, parentFolderId); | ||
resolve(doc); | ||
} | ||
}); | ||
} else { | ||
_handleMkdirsCallback(doc, arrFolders, callback, index, parentFolderId); | ||
} | ||
}) | ||
} | ||
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); | ||
} | ||
}) | ||
}); | ||
}; | ||
@@ -387,0 +500,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
66451
26
1584