oils-plugin-braziw-cms
Advanced tools
Comparing version 5.0.0 to 7.0.0
@@ -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); | ||
} | ||
} | ||
} | ||
} |
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
1
316237
3472
- Removedasync@3.1.x
- Removedasync@3.1.1(transitive)
Updatedmulter@^1.4.2