summaryrefslogtreecommitdiff
path: root/addons/website_slides/static/src/js/slides_slide_archive.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_slides/static/src/js/slides_slide_archive.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (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.js108
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
+};
+
+});