Add ability to fetch only page-type menu items
This commit is contained in:
parent
22611612e5
commit
7bde7576d5
@ -12,10 +12,11 @@ class Menu extends Controller {
|
|||||||
|
|
||||||
async get_items(req, res) {
|
async get_items(req, res) {
|
||||||
const Page = this.models.get('api:Page')
|
const Page = this.models.get('api:Page')
|
||||||
|
const page_only = req.query.type === 'page'
|
||||||
|
|
||||||
// Build the "My Tree" option
|
// Build the "My Tree" option
|
||||||
const root_page = await req.user.get_root_page()
|
const root_page = await req.user.get_root_page()
|
||||||
const nodes = await this._build_menu_object(root_page)
|
const nodes = await this._build_menu_object(root_page, [], page_only)
|
||||||
const menu = []
|
const menu = []
|
||||||
|
|
||||||
menu.push({
|
menu.push({
|
||||||
@ -83,7 +84,7 @@ class Menu extends Controller {
|
|||||||
return res.api(menu)
|
return res.api(menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
async _build_menu_object(parent_node, arr= []) {
|
async _build_menu_object(parent_node, arr= [], page_only = false) {
|
||||||
const children = await this.models.get('api:Page').find({UUID: {$in: parent_node.ChildPageIds}})
|
const children = await this.models.get('api:Page').find({UUID: {$in: parent_node.ChildPageIds}})
|
||||||
if ( children ) {
|
if ( children ) {
|
||||||
for ( const child of children ) {
|
for ( const child of children ) {
|
||||||
@ -91,7 +92,7 @@ class Menu extends Controller {
|
|||||||
id: child.UUID,
|
id: child.UUID,
|
||||||
name: child.is_shared() ? child.Name + ' ⁽ˢʰᵃʳᵉᵈ⁾' : child.Name,
|
name: child.is_shared() ? child.Name + ' ⁽ˢʰᵃʳᵉᵈ⁾' : child.Name,
|
||||||
shared: child.is_shared(),
|
shared: child.is_shared(),
|
||||||
children: [...(await child.get_menu_items()), ...(await this._build_menu_object(child))],
|
children: [...(await child.get_menu_items(page_only)), ...(await this._build_menu_object(child, [], page_only))],
|
||||||
type: 'page',
|
type: 'page',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -247,7 +247,9 @@ class Page extends VersionedModel {
|
|||||||
await user.save()
|
await user.save()
|
||||||
}
|
}
|
||||||
|
|
||||||
async get_menu_items() {
|
async get_menu_items(page_only) {
|
||||||
|
if ( page_only ) return [];
|
||||||
|
|
||||||
// {
|
// {
|
||||||
// id: child.UUID,
|
// id: child.UUID,
|
||||||
// name: child.is_shared() ? child.Name + ' ⁽ˢʰᵃʳᵉᵈ⁾' : child.Name,
|
// name: child.is_shared() ? child.Name + ' ⁽ˢʰᵃʳᵉᵈ⁾' : child.Name,
|
||||||
|
Loading…
Reference in New Issue
Block a user