mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-19 05:09:41 +02:00
Don't allow to set child element as parent. (#19)
* filter available pages * refactor set function as method of Pages * change wrong word * change commentaries * change method name * refactor refactor * Update src/controllers/pages.js Co-Authored-By: cabad11 <44175180+cabad11@users.noreply.github.com> * refactor change comments change metod name
This commit is contained in:
parent
9966131100
commit
dbfc594e66
2 changed files with 33 additions and 1 deletions
|
@ -41,6 +41,38 @@ class Pages {
|
|||
return Model.getAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* @static
|
||||
* Return all pages without children of passed page
|
||||
*
|
||||
* @param {string} parent - id of current page
|
||||
* @returns {Promise<Page[]>}
|
||||
*/
|
||||
static async getAllExceptChildrens(parent) {
|
||||
let pagesAvailable = this.removeChildren(await Pages.getAll(), parent);
|
||||
|
||||
return pagesAvailable.filter((item) => item !== null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @static
|
||||
* Set all children elements to null
|
||||
*
|
||||
* @param {Page[]} [pagesAvailable] - Array of all pages
|
||||
* @param {string} parent - id of parent page
|
||||
* @returns {Array<?Page>}
|
||||
*/
|
||||
static removeChildren(pagesAvailable, parent) {
|
||||
pagesAvailable.forEach(async (item, index) => {
|
||||
if (item === null || item._parent !== parent) {
|
||||
return;
|
||||
}
|
||||
pagesAvailable[index] = null;
|
||||
pagesAvailable = Pages.removeChildren(pagesAvailable, item._id);
|
||||
});
|
||||
return pagesAvailable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new page model and save it in the database
|
||||
*
|
||||
|
|
|
@ -22,7 +22,7 @@ router.get('/page/edit/:id', async (req, res, next) => {
|
|||
|
||||
try {
|
||||
let page = await Pages.get(pageId);
|
||||
let pagesAvailable = await Pages.getAll();
|
||||
let pagesAvailable = await Pages.getAllExceptChildrens(pageId);
|
||||
|
||||
res.render('pages/form', {
|
||||
pagesAvailable,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue