From 7bde7576d5db26b30f2990a7322edfcb1dbece43 Mon Sep 17 00:00:00 2001 From: garrettmills Date: Mon, 16 Nov 2020 09:58:44 -0600 Subject: [PATCH] Add ability to fetch only page-type menu items --- app/controllers/api/v1/Menu.controller.js | 7 ++++--- app/models/api/Page.model.js | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/v1/Menu.controller.js b/app/controllers/api/v1/Menu.controller.js index 89e3f98..076d58b 100644 --- a/app/controllers/api/v1/Menu.controller.js +++ b/app/controllers/api/v1/Menu.controller.js @@ -12,10 +12,11 @@ class Menu extends Controller { async get_items(req, res) { const Page = this.models.get('api:Page') + const page_only = req.query.type === 'page' // Build the "My Tree" option 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 = [] menu.push({ @@ -83,7 +84,7 @@ class Menu extends Controller { 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}}) if ( children ) { for ( const child of children ) { @@ -91,7 +92,7 @@ class Menu extends Controller { id: child.UUID, name: child.is_shared() ? child.Name + ' ⁽ˢʰᵃʳᵉᵈ⁾' : child.Name, 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', }) } diff --git a/app/models/api/Page.model.js b/app/models/api/Page.model.js index f9a2f7c..d3cbc0f 100644 --- a/app/models/api/Page.model.js +++ b/app/models/api/Page.model.js @@ -247,7 +247,9 @@ class Page extends VersionedModel { await user.save() } - async get_menu_items() { + async get_menu_items(page_only) { + if ( page_only ) return []; + // { // id: child.UUID, // name: child.is_shared() ? child.Name + ' ⁽ˢʰᵃʳᵉᵈ⁾' : child.Name,