feat: All Pages - include full parent paths in nav

This commit is contained in:
NGPixel
2017-04-23 20:45:27 -04:00
parent 0d3e10edda
commit 3c73f8285c
7 changed files with 90 additions and 20 deletions

View File

@@ -310,20 +310,15 @@ module.exports = {
subtitle: content.meta.subtitle || '',
parentTitle: content.parent.title || '',
parentPath: parentPath,
isDirectory: false
isDirectory: false,
isEntry: true
}, {
new: true,
upsert: true
})
}).then(result => {
return db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => {
if (allPaths.length > 0) {
return db.Entry.updateMany({ _id: { $in: allPaths } }, { $set: { isDirectory: true } }).then(() => {
return result
})
} else {
return result
}
return self.updateTreeInfo().then(() => {
return result
})
}).catch(err => {
winston.error(err)
@@ -331,6 +326,28 @@ module.exports = {
})
},
/**
* Update tree info for all directory and parent entries
*
* @returns {Promise<Boolean>} Promise of the operation
*/
updateTreeInfo () {
return db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => {
if (allPaths.length > 0) {
return Promise.map(allPaths, pathItem => {
let parentPath = _.chain(pathItem).split('/').initial().join('/').value()
let guessedTitle = _.chain(pathItem).split('/').last().startCase().value()
return db.Entry.update({ _id: pathItem }, {
$set: { isDirectory: true },
$setOnInsert: { isEntry: false, title: guessedTitle, parentPath }
}, { upsert: true })
})
} else {
return true
}
})
},
/**
* Create a new document
*
@@ -428,6 +445,6 @@ module.exports = {
* @return {Promise<Array>} List of entries
*/
getFromTree (basePath) {
return db.Entry.find({ parentPath: basePath })
return db.Entry.find({ parentPath: basePath }, 'title parentPath isDirectory isEntry').sort({ title: 'asc' })
}
}