diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_slides/static/src/js/slides_slide_archive.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_slides/static/src/js/slides_slide_archive.js')
| -rw-r--r-- | addons/website_slides/static/src/js/slides_slide_archive.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/addons/website_slides/static/src/js/slides_slide_archive.js b/addons/website_slides/static/src/js/slides_slide_archive.js new file mode 100644 index 00000000..cccf2e0b --- /dev/null +++ b/addons/website_slides/static/src/js/slides_slide_archive.js @@ -0,0 +1,108 @@ +odoo.define('website_slides.slide.archive', function (require) { +'use strict'; + +var publicWidget = require('web.public.widget'); +var Dialog = require('web.Dialog'); +var core = require('web.core'); +var _t = core._t; + +var SlideArchiveDialog = Dialog.extend({ + template: 'slides.slide.archive', + + /** + * @override + */ + init: function (parent, options) { + options = _.defaults(options || {}, { + title: _t('Archive Slide'), + size: 'medium', + buttons: [{ + text: _t('Archive'), + classes: 'btn-primary', + click: this._onClickArchive.bind(this) + }, { + text: _t('Cancel'), + close: true + }] + }); + + this.$slideTarget = options.slideTarget; + this.slideId = this.$slideTarget.data('slideId'); + this._super(parent, options); + }, + _checkForEmptySections: function (){ + $('.o_wslides_slide_list_category').each(function (){ + var $categoryHeader = $(this).find('.o_wslides_slide_list_category_header'); + var categorySlideCount = $(this).find('.o_wslides_slides_list_slide:not(.o_not_editable)').length; + var $emptyFlagContainer = $categoryHeader.find('.o_wslides_slides_list_drag').first(); + var $emptyFlag = $emptyFlagContainer.find('small'); + if (categorySlideCount === 0 && $emptyFlag.length === 0){ + $emptyFlagContainer.append($('<small>', { + 'class': "ml-1 text-muted font-weight-bold", + text: _t("(empty)") + })); + } + }); + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * Calls 'archive' on slide controller and then visually removes the slide dom element + */ + _onClickArchive: function () { + var self = this; + + this._rpc({ + route: '/slides/slide/archive', + params: { + slide_id: this.slideId + }, + }).then(function (isArchived) { + if (isArchived){ + self.$slideTarget.closest('.o_wslides_slides_list_slide').remove(); + self._checkForEmptySections(); + } + self.close(); + }); + } +}); + +publicWidget.registry.websiteSlidesSlideArchive = publicWidget.Widget.extend({ + selector: '.o_wslides_js_slide_archive', + xmlDependencies: ['/website_slides/static/src/xml/slide_management.xml'], + events: { + 'click': '_onArchiveSlideClick', + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + _openDialog: function ($slideTarget) { + new SlideArchiveDialog(this, {slideTarget: $slideTarget}).open(); + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @private + * @param {Event} ev + */ + _onArchiveSlideClick: function (ev) { + ev.preventDefault(); + var $slideTarget = $(ev.currentTarget); + this._openDialog($slideTarget); + }, +}); + +return { + slideArchiveDialog: SlideArchiveDialog, + websiteSlidesSlideArchive: publicWidget.registry.websiteSlidesSlideArchive +}; + +}); |
