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_share.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_slides/static/src/js/slides_share.js')
| -rw-r--r-- | addons/website_slides/static/src/js/slides_share.js | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/addons/website_slides/static/src/js/slides_share.js b/addons/website_slides/static/src/js/slides_share.js new file mode 100644 index 00000000..c9942f79 --- /dev/null +++ b/addons/website_slides/static/src/js/slides_share.js @@ -0,0 +1,105 @@ +odoo.define('website_slides.slides_share', function (require) { +'use strict'; + +var publicWidget = require('web.public.widget'); +require('website_slides.slides'); +var core = require('web.core'); +var _t = core._t; + +var ShareMail = publicWidget.Widget.extend({ + events: { + 'click button': '_sendMail', + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @private + */ + _sendMail: function () { + var self = this; + var input = this.$('input'); + var slideID = this.$('button').data('slide-id'); + if (input.val() && input[0].checkValidity()) { + this.$el.removeClass('o_has_error').find('.form-control, .custom-select').removeClass('is-invalid'); + this._rpc({ + route: '/slides/slide/send_share_email', + params: { + slide_id: slideID, + email: input.val(), + }, + }).then(function () { + self.$el.html($('<div class="alert alert-info" role="alert">' + _t('<strong>Thank you!</strong> Mail has been sent.') + '</div>')); + }); + } else { + this.$el.addClass('o_has_error').find('.form-control, .custom-select').addClass('is-invalid'); + input.focus(); + } + }, +}); + +publicWidget.registry.websiteSlidesShare = publicWidget.Widget.extend({ + selector: '#wrapwrap', + events: { + 'click a.o_wslides_js_social_share': '_onSlidesSocialShare', + 'click .o_clipboard_button': '_onShareLinkCopy', + }, + + /** + * @override + * @param {Object} parent + */ + start: function (parent) { + var defs = [this._super.apply(this, arguments)]; + defs.push(new ShareMail(this).attachTo($('.oe_slide_js_share_email'))); + + return Promise.all(defs); + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @override + * @param {Object} ev + */ + _onSlidesSocialShare: function (ev) { + ev.preventDefault(); + var popUpURL = $(ev.currentTarget).attr('href'); + var popUp = window.open(popUpURL, 'Share Dialog', 'width=626,height=436'); + $(window).on('focus', function () { + if (popUp.closed) { + $(window).off('focus'); + } + }); + }, + + _onShareLinkCopy: function (ev) { + ev.preventDefault(); + var $clipboardBtn = $(ev.currentTarget); + $clipboardBtn.tooltip({title: "Copied !", trigger: "manual", placement: "bottom"}); + var self = this; + var clipboard = new ClipboardJS('#' + $clipboardBtn[0].id, { + target: function () { + var share_link_el = self.$('#wslides_share_link_id_' + $clipboardBtn[0].id.split('id_')[1]); + return share_link_el[0]; + }, + container: this.el + }); + clipboard.on('success', function () { + clipboard.destroy(); + $clipboardBtn.tooltip('show'); + _.delay(function () { + $clipboardBtn.tooltip("hide"); + }, 800); + }); + clipboard.on('error', function (e) { + console.log(e); + clipboard.destroy(); + }) + }, +}); +}); |
