From a8b8ed0032d9b889c8ad784b1b01c8e377347c3d Mon Sep 17 00:00:00 2001 From: Murod Khaydarov Date: Fri, 25 Jan 2019 06:06:52 +0300 Subject: [PATCH] bugfix --- src/controllers/aliases.js | 8 -------- src/controllers/pages.js | 4 ++++ src/models/alias.js | 25 +++++++++++++------------ src/routes/api/pages.js | 22 ++++++++++++---------- src/views/pages/form.twig | 2 +- src/views/pages/page.twig | 2 +- 6 files changed, 31 insertions(+), 32 deletions(-) diff --git a/src/controllers/aliases.js b/src/controllers/aliases.js index e1f3a1f..dbabca9 100644 --- a/src/controllers/aliases.js +++ b/src/controllers/aliases.js @@ -21,14 +21,6 @@ class Aliases { return alias; } - - /** - * @param id - * @returns {Promise} - */ - static async removeById(id) { - return Alias.destroyByEntityId(id); - } } module.exports = Aliases; diff --git a/src/controllers/pages.js b/src/controllers/pages.js index 86d116f..2eb64d0 100644 --- a/src/controllers/pages.js +++ b/src/controllers/pages.js @@ -186,6 +186,10 @@ class Pages { throw new Error('Page with given id does not exist'); } + const alias = await Alias.get(page.uri); + + await alias.destroy(); + return page.destroy(); } } diff --git a/src/models/alias.js b/src/models/alias.js index 64dc0ff..8fefd8a 100644 --- a/src/models/alias.js +++ b/src/models/alias.js @@ -13,6 +13,8 @@ const binaryMD5 = require('../utils/crypto'); /** * @class Alias + * @classdesc Alias model + * * @property {string} _id - alias id * @property {string} hash - alias binary hash * @property {string} type - entity type @@ -47,18 +49,6 @@ class Alias { return new Alias(data); } - /** - * @param {string} id - * @returns {Promise} - */ - static async destroyByEntityId(id) { - await aliasesDb.remove({id}); - - delete this._id; - - return this; - } - /** * @constructor * @@ -136,6 +126,17 @@ class Alias { return alias.save(); } + + /** + * @returns {Promise} + */ + async destroy() { + await aliasesDb.remove({_id: this._id}); + + delete this._id; + + return this; + } } module.exports = Alias; diff --git a/src/routes/api/pages.js b/src/routes/api/pages.js index 1a78102..b082bb0 100644 --- a/src/routes/api/pages.js +++ b/src/routes/api/pages.js @@ -117,16 +117,21 @@ router.delete('/page/:id', async (req, res) => { const pageBeforeId = parentPageOrder.getPageBefore(page._id); const pageAfterId = parentPageOrder.getPageAfter(page._id); - let responsePage; + let pageToRedirect; if (pageBeforeId) { - responsePage = await Pages.get(pageBeforeId); + pageToRedirect = await Pages.get(pageBeforeId); } else if (pageAfterId) { - responsePage = await Pages.get(pageAfterId); + pageToRedirect = await Pages.get(pageAfterId); } else { - responsePage = page._parent !== "0" ? await Pages.get(page._parent) : null; + pageToRedirect = page._parent !== "0" ? await Pages.get(page._parent) : null; } - // remove current page and go deeper to remove children with orders + /** + * remove current page and go deeper to remove children with orders + * + * @param startFrom + * @returns {Promise} + */ async function deleteRecursively(startFrom) { let order = []; try { @@ -138,24 +143,21 @@ router.delete('/page/:id', async (req, res) => { await deleteRecursively(id); }); + await Pages.remove(startFrom); try { - await Pages.remove(startFrom); await PagesOrder.remove(startFrom); - await Aliases.removeById(startFrom); } catch (e) {} - } await deleteRecursively(req.params.id); // remove also from parent's order parentPageOrder.remove(req.params.id); - await Aliases.removeById(req.params.id); await parentPageOrder.save(); res.json({ success: true, - result: responsePage + result: pageToRedirect }); } catch (err) { res.status(400).json({ diff --git a/src/views/pages/form.twig b/src/views/pages/form.twig index a2a1a3a..51f2005 100644 --- a/src/views/pages/form.twig +++ b/src/views/pages/form.twig @@ -49,7 +49,7 @@
{% if page._id is not empty %} - Remove + Remove {% endif %}
{% if page is not empty %} diff --git a/src/views/pages/page.twig b/src/views/pages/page.twig index 5539735..a5c73a3 100644 --- a/src/views/pages/page.twig +++ b/src/views/pages/page.twig @@ -28,7 +28,7 @@
{% for block in page.body.blocks %} - {#Skip first header, because it is already showed as a Title#} + {# Skip first header, because it is already showed as a Title #} {% if not (loop.first and block.type == 'header') %} {% if block.type in ['paragraph', 'header', 'list', 'code'] %} {% include './blocks/' ~ block.type ~ '.twig' with block.data %}