mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-19 05:09:41 +02:00
33 lines
819 B
JavaScript
33 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();
|
|
});
|