37 lines
990 B
JavaScript
37 lines
990 B
JavaScript
|
const Controller = require('libflitter/controller/Controller')
|
||
|
|
||
|
/*
|
||
|
* Menu Controller
|
||
|
* -------------------------------------------------------------
|
||
|
* Put some description here!
|
||
|
*/
|
||
|
class Menu extends Controller {
|
||
|
static get services() {
|
||
|
return [...super.services, 'models']
|
||
|
}
|
||
|
|
||
|
async get_items(req, res) {
|
||
|
const root_page = await req.user.get_root_page()
|
||
|
const nodes = await this._build_menu_object(root_page)
|
||
|
return res.api(nodes)
|
||
|
}
|
||
|
|
||
|
async _build_menu_object(parent_node, arr= []) {
|
||
|
const children = await this.models.get('api:Page').find({UUID: {$in: parent_node.ChildPageIds}})
|
||
|
if ( children ) {
|
||
|
for ( const child of children ) {
|
||
|
arr.push({
|
||
|
id: child.UUID,
|
||
|
name: child.Name,
|
||
|
children: await this._build_menu_object(child),
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return arr
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports = exports = Menu
|