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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
odoo.define('website_slides.slides', function (require) {
'use strict';
var publicWidget = require('web.public.widget');
var time = require('web.time');
publicWidget.registry.websiteSlides = publicWidget.Widget.extend({
selector: '#wrapwrap',
/**
* @override
* @param {Object} parent
*/
start: function (parent) {
var defs = [this._super.apply(this, arguments)];
_.each($("timeago.timeago"), function (el) {
var datetime = $(el).attr('datetime');
var datetimeObj = time.str_to_datetime(datetime);
// if presentation 7 days, 24 hours, 60 min, 60 second, 1000 millis old(one week)
// then return fix formate string else timeago
var displayStr = '';
if (datetimeObj && new Date().getTime() - datetimeObj.getTime() > 7 * 24 * 60 * 60 * 1000) {
displayStr = moment(datetimeObj).format('ll');
} else {
displayStr = moment(datetimeObj).fromNow();
}
$(el).text(displayStr);
});
return Promise.all(defs);
},
});
return publicWidget.registry.websiteSlides;
});
//==============================================================================
odoo.define('website_slides.slides_embed', function (require) {
'use strict';
var publicWidget = require('web.public.widget');
require('website_slides.slides');
var SlideSocialEmbed = publicWidget.Widget.extend({
events: {
'change input': '_onChangePage',
},
/**
* @constructor
* @param {Object} parent
* @param {Number} maxPage
*/
init: function (parent, maxPage) {
this._super.apply(this, arguments);
this.max_page = maxPage || false;
},
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* @private
* @param {Number} page
*/
_updateEmbeddedCode: function (page) {
var $embedInput = this.$('.slide_embed_code');
var newCode = $embedInput.val().replace(/(page=).*?([^\d]+)/, '$1' + page + '$2');
$embedInput.val(newCode);
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* @private
* @param {Object} ev
*/
_onChangePage: function (ev) {
ev.preventDefault();
var input = this.$('input');
var page = parseInt(input.val());
if (this.max_page && !(page > 0 && page <= this.max_page)) {
page = 1;
}
this._updateEmbeddedCode(page);
},
});
publicWidget.registry.websiteSlidesEmbed = publicWidget.Widget.extend({
selector: '#wrapwrap',
/**
* @override
* @param {Object} parent
*/
start: function (parent) {
var defs = [this._super.apply(this, arguments)];
$('iframe.o_wslides_iframe_viewer').on('ready', this._onIframeViewerReady.bind(this));
return Promise.all(defs);
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* @private
* @param {Event} ev
*/
_onIframeViewerReady: function (ev) {
// TODO : make it work. For now, once the iframe is loaded, the value of #page_count is
// still now set (the pdf is still loading)
var $iframe = $(ev.currentTarget);
var maxPage = $iframe.contents().find('#page_count').val();
new SlideSocialEmbed(this, maxPage).attachTo($('.oe_slide_js_embed_code_widget'));
},
});
});
|