mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-19 21:29:41 +02:00
34 lines
819 B
JavaScript
34 lines
819 B
JavaScript
|
const Pages = require('../../controllers/pages');
|
||
|
const asyncMiddleware = require('../../utils/asyncMiddleware');
|
||
|
|
||
|
/**
|
||
|
* Process one-level pages list to parent-childrens list
|
||
|
* @param {Page[]} pages - list of all available pages
|
||
|
* @return {Page[]}
|
||
|
*/
|
||
|
function createMenuTree(pages) {
|
||
|
return pages.filter(page => page._parent === '0').map(page => {
|
||
|
return Object.assign({
|
||
|
children: pages.filter(child => child._parent === page._id).reverse()
|
||
|
}, page.data);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Middleware for all /page/... routes
|
||
|
* @param req
|
||
|
* @param res
|
||
|
* @param next
|
||
|
*/
|
||
|
module.exports = asyncMiddleware(async function (req, res, next) {
|
||
|
try {
|
||
|
const menu = await Pages.getAll();
|
||
|
|
||
|
res.locals.menu = createMenuTree(menu);
|
||
|
} catch (error) {
|
||
|
console.log('Can not load menu:', error);
|
||
|
}
|
||
|
|
||
|
next();
|
||
|
});
|