From 9fd602bffaef6d8705e42a8c3ca5f3e0636283d7 Mon Sep 17 00:00:00 2001 From: Siddarth Gajjar Date: Mon, 15 Jun 2020 11:50:00 +0000 Subject: [PATCH] [IMP] website_slides: allow to delete slide category from frontend - Before this commit, deleting slide category from frontend was not possible - After this commit, there is a 'trash' icon on the category while hovering on it (just like slides), clicking which will delete that category and reload the page to re-arragne the content. If there are slides under the category being deleted, they will be uncategorized and move to the top. Task: 2093671 Closes #49646 Signed-off-by: Thibault Delavallee (tde) --- .../static/src/js/slides_category_delete.js | 79 +++++++++++++++++++ .../static/src/scss/website_slides.scss | 6 ++ .../static/src/xml/slide_management.xml | 6 ++ addons/website_slides/views/assets.xml | 1 + .../views/website_slides_templates_course.xml | 12 ++- 5 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 addons/website_slides/static/src/js/slides_category_delete.js diff --git a/addons/website_slides/static/src/js/slides_category_delete.js b/addons/website_slides/static/src/js/slides_category_delete.js new file mode 100644 index 00000000000..58b75c3bd50 --- /dev/null +++ b/addons/website_slides/static/src/js/slides_category_delete.js @@ -0,0 +1,79 @@ +odoo.define('website_slides.category.delete', function (require) { +'use strict'; + +const publicWidget = require('web.public.widget'); +const Dialog = require('web.Dialog'); +const core = require('web.core'); +const _t = core._t; + +const categoryDeleteDialog = Dialog.extend({ + template: 'slides.category.delete', + + /** + * @constructor + * @param {Widget} parent + * @param {DOM Object} slideTarget + */ + init(parent, slideTarget) { + this.categoryId = parseInt(slideTarget.dataset.categoryId); + this._super(parent, { + title: _t('Delete Category'), + size: 'medium', + buttons: [{ + text: _t('Delete'), + classes: 'btn-primary', + click: () => this._onClickDelete(), + }, { + text: _t('Cancel'), + close: true + }] + }); + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * Calls 'unlink' method on slides.slide to delete the category and + * reloads page after deletion to re-arrange the content on UI + * + * @private + */ + _onClickDelete() { + this._rpc({ + model: 'slide.slide', + method: 'unlink', + args: [this.categoryId], + }).then(function () { + window.location.reload(); + }); + } +}); + +publicWidget.registry.websiteSlidesCategoryDelete = publicWidget.Widget.extend({ + selector: '.o_wslides_js_category_delete', + xmlDependencies: ['/website_slides/static/src/xml/slide_management.xml'], + events: { + 'click': '_onClickDeleteCateogry', + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @private + * @param {MouseEvent} ev + */ + _onClickDeleteCateogry(ev) { + new categoryDeleteDialog(this, ev.currentTarget).open(); + }, +}); + +return { + categoryDeleteDialog: categoryDeleteDialog, + websiteSlidesCategoryDelete: publicWidget.registry.websiteSlidesCategoryDelete +}; + +}); diff --git a/addons/website_slides/static/src/scss/website_slides.scss b/addons/website_slides/static/src/scss/website_slides.scss index c3b87821628..17ab57c7aa3 100644 --- a/addons/website_slides/static/src/scss/website_slides.scss +++ b/addons/website_slides/static/src/scss/website_slides.scss @@ -379,6 +379,12 @@ $o-wslides-fs-side-width: 300px; & + ul { z-index: 0; } + .o_wslides_js_category_delete { + display: none; + } + &:hover .o_wslides_js_category_delete { + display: block; + } } .o_text_link { diff --git a/addons/website_slides/static/src/xml/slide_management.xml b/addons/website_slides/static/src/xml/slide_management.xml index 53397b20e12..e030a756375 100644 --- a/addons/website_slides/static/src/xml/slide_management.xml +++ b/addons/website_slides/static/src/xml/slide_management.xml @@ -7,6 +7,12 @@ + +
+

Are you sure you want to delete this category ?

+
+
+
diff --git a/addons/website_slides/views/assets.xml b/addons/website_slides/views/assets.xml index 5bc0cae721a..be74235eae8 100644 --- a/addons/website_slides/views/assets.xml +++ b/addons/website_slides/views/assets.xml @@ -22,6 +22,7 @@