Add ability to retrieve specific page versions and nodes with ?version=XX param
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -12,13 +12,24 @@ class Page extends Controller {
|
||||
const PageId = req.params.PageId
|
||||
const user = req.user
|
||||
|
||||
const page = await PageModel.findOne({UUID: PageId})
|
||||
let page = await PageModel.findOne({UUID: PageId})
|
||||
if ( !page ) return res.status(404).message('Page not found with that ID.').api({})
|
||||
|
||||
if ( !(await page.is_accessible_by(user)) ) return req.security.deny()
|
||||
page.level = await page.access_level_for(req.user)
|
||||
const level = await page.access_level_for(req.user)
|
||||
|
||||
return res.api(page)
|
||||
const version_num = req.body.version || req.query.version
|
||||
if ( version_num ) {
|
||||
if ( page.has_version(version_num) ) {
|
||||
page = await page.as_version(version_num)
|
||||
}
|
||||
}
|
||||
|
||||
const data = page.toJSON()
|
||||
delete data.version_archive
|
||||
data.level = level
|
||||
data._id = page.id
|
||||
return res.api(data)
|
||||
}
|
||||
|
||||
async save_page(req, res) {
|
||||
@@ -35,7 +46,7 @@ class Page extends Controller {
|
||||
page.OrgUserId = req.user._id
|
||||
}
|
||||
|
||||
let save_message = 'Updated page metadata'
|
||||
let save_message = 'Page contents saved'
|
||||
|
||||
if ( !req.body.Name ) return res.status(400).message('Missing required: Name').api({})
|
||||
|
||||
@@ -84,17 +95,24 @@ class Page extends Controller {
|
||||
if ( !(await page.is_accessible_by(req.user)) ) return req.security.deny()
|
||||
}
|
||||
|
||||
const nodes = await Node.find({PageId: page.UUID});
|
||||
const version_num = req.body.version || req.query.version
|
||||
if ( version_num ) {
|
||||
if ( page.has_version(version_num) ) {
|
||||
page = await page.as_version(version_num)
|
||||
}
|
||||
}
|
||||
|
||||
const nodes = await page.nodes
|
||||
const assoc_nodes = {}
|
||||
nodes.forEach(node => {
|
||||
assoc_nodes[node.UUID] = node
|
||||
})
|
||||
|
||||
const return_nodes = [];
|
||||
const return_nodes = []
|
||||
for ( const uuid of page.NodeIds ) {
|
||||
return_nodes.push(assoc_nodes[uuid])
|
||||
}
|
||||
return res.api(return_nodes);
|
||||
return res.api(return_nodes)
|
||||
}
|
||||
|
||||
async save_node_to_page(req, res) {
|
||||
|
||||
Reference in New Issue
Block a user