1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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();
})
},
});
});
|