summaryrefslogtreecommitdiff
path: root/addons/website_slides/static/src/js/slides_share.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_share.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (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.js105
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();
+ })
+ },
+});
+});