2022-03-05 22:57:23 +04:00
|
|
|
import express, { NextFunction, Request, Response } from 'express';
|
2022-08-24 17:05:40 +03:00
|
|
|
import Pages from '../controllers/pages.js';
|
|
|
|
import PagesOrder from '../controllers/pagesOrder.js';
|
|
|
|
import verifyToken from './middlewares/token.js';
|
|
|
|
import allowEdit from './middlewares/locals.js';
|
|
|
|
import PagesFlatArray from '../models/pagesFlatArray.js';
|
2022-10-03 16:23:59 +04:00
|
|
|
import { toEntityId } from '../database/index.js';
|
2022-03-05 22:57:23 +04:00
|
|
|
|
|
|
|
const router = express.Router();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create new page form
|
|
|
|
*/
|
|
|
|
router.get('/page/new', verifyToken, allowEdit, async (req: Request, res: Response, next: NextFunction) => {
|
|
|
|
try {
|
2022-06-22 07:09:08 -07:00
|
|
|
const pagesAvailableGrouped = await Pages.groupByParent();
|
2022-03-05 22:57:23 +04:00
|
|
|
|
2022-10-03 16:23:59 +04:00
|
|
|
console.log(pagesAvailableGrouped);
|
|
|
|
|
2022-03-05 22:57:23 +04:00
|
|
|
res.render('pages/form', {
|
2022-06-22 07:09:08 -07:00
|
|
|
pagesAvailableGrouped,
|
2022-03-05 22:57:23 +04:00
|
|
|
page: null,
|
|
|
|
});
|
|
|
|
} catch (error) {
|
|
|
|
res.status(404);
|
|
|
|
next(error);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Edit page form
|
|
|
|
*/
|
|
|
|
router.get('/page/edit/:id', verifyToken, allowEdit, async (req: Request, res: Response, next: NextFunction) => {
|
2022-10-03 16:23:59 +04:00
|
|
|
const pageId = toEntityId(req.params.id);
|
2022-03-05 22:57:23 +04:00
|
|
|
|
|
|
|
try {
|
|
|
|
const page = await Pages.get(pageId);
|
|
|
|
const pagesAvailable = await Pages.getAllExceptChildren(pageId);
|
2022-06-22 07:09:08 -07:00
|
|
|
const pagesAvailableGrouped = await Pages.groupByParent(pageId);
|
2022-03-05 22:57:23 +04:00
|
|
|
|
|
|
|
if (!page._parent) {
|
|
|
|
throw new Error('Parent not found');
|
|
|
|
}
|
|
|
|
|
|
|
|
const parentsChildrenOrdered = await PagesOrder.getOrderedChildren(pagesAvailable, pageId, page._parent, true);
|
|
|
|
|
|
|
|
res.render('pages/form', {
|
|
|
|
page,
|
|
|
|
parentsChildrenOrdered,
|
2022-06-22 07:09:08 -07:00
|
|
|
pagesAvailableGrouped,
|
2022-03-05 22:57:23 +04:00
|
|
|
});
|
|
|
|
} catch (error) {
|
|
|
|
res.status(404);
|
|
|
|
next(error);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
|
|
|
* View page
|
|
|
|
*/
|
|
|
|
router.get('/page/:id', verifyToken, async (req: Request, res: Response, next: NextFunction) => {
|
2022-10-03 16:23:59 +04:00
|
|
|
const pageId = toEntityId(req.params.id);
|
2022-03-05 22:57:23 +04:00
|
|
|
|
|
|
|
try {
|
|
|
|
const page = await Pages.get(pageId);
|
|
|
|
|
|
|
|
const pageParent = await page.parent;
|
|
|
|
|
Added page navigation (#209)
* Added navigation on page
* Removed useless log, added docs to navigator component
* Fixed duplicated variables, some changes in navigation functions, changed pages.twig and navigator.twig
* Added flatArray model, changed navigation functions
* Replaced page footer style to page.pcss
* Fixed generating flat array, when pages remove
* Removed useless generating
* Renamed flatArray model to pagesFlatArray, updated descriptions, renamed generate to regenerate, removed hardcoded key name in cache
* Changed styles naming and added margin for navigation
* Added ability to change nesting in flat array, fixed BEM
* Updated nesting parameter, fixed BEM
* Changed navigator component by passing objects, removed navigator wrapper
* Style navigator renamed to navigator__item
* Update src/backend/models/pagesFlatArray.ts
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* Renamed navigator__item to navigator_item
* Deleted wrappers from navigator buttons, removed page__footer
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
2022-08-02 17:38:02 +03:00
|
|
|
const previousPage = await PagesFlatArray.getPageBefore(pageId);
|
|
|
|
const nextPage = await PagesFlatArray.getPageAfter(pageId);
|
|
|
|
|
2022-03-05 22:57:23 +04:00
|
|
|
res.render('pages/page', {
|
|
|
|
page,
|
|
|
|
pageParent,
|
|
|
|
config: req.app.locals.config,
|
Added page navigation (#209)
* Added navigation on page
* Removed useless log, added docs to navigator component
* Fixed duplicated variables, some changes in navigation functions, changed pages.twig and navigator.twig
* Added flatArray model, changed navigation functions
* Replaced page footer style to page.pcss
* Fixed generating flat array, when pages remove
* Removed useless generating
* Renamed flatArray model to pagesFlatArray, updated descriptions, renamed generate to regenerate, removed hardcoded key name in cache
* Changed styles naming and added margin for navigation
* Added ability to change nesting in flat array, fixed BEM
* Updated nesting parameter, fixed BEM
* Changed navigator component by passing objects, removed navigator wrapper
* Style navigator renamed to navigator__item
* Update src/backend/models/pagesFlatArray.ts
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* Renamed navigator__item to navigator_item
* Deleted wrappers from navigator buttons, removed page__footer
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
2022-08-02 17:38:02 +03:00
|
|
|
previousPage,
|
|
|
|
nextPage,
|
2022-03-05 22:57:23 +04:00
|
|
|
});
|
|
|
|
} catch (error) {
|
|
|
|
res.status(404);
|
|
|
|
next(error);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export default router;
|