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 @@ + diff --git a/addons/website_slides/views/website_slides_templates_course.xml b/addons/website_slides/views/website_slides_templates_course.xml index a294b9bd3cb..951e87fc6a1 100644 --- a/addons/website_slides/views/website_slides_templates_course.xml +++ b/addons/website_slides/views/website_slides_templates_course.xml @@ -398,9 +398,17 @@ (empty) - + + + +
Are you sure you want to delete this category ?