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
|
odoo.define('website.set_view_track', function (require) {
"use strict";
var CustomizeMenu = require('website.customizeMenu');
var Widget = require('web.Widget');
var TrackPage = Widget.extend({
template: 'website.track_page',
xmlDependencies: ['/website/static/src/xml/track_page.xml'],
events: {
'change #switch-track-page': '_onTrackChange',
},
/**
* @override
*/
start: function () {
this.$input = this.$('#switch-track-page');
this._isTracked().then((data) => {
if (data[0]['track']) {
this.track = true;
this.$input.attr('checked', 'checked');
} else {
this.track = false;
}
});
},
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* @private
*/
_isTracked: function (val) {
var viewid = $('html').data('viewid');
if (!viewid) {
return Promise.reject();
} else {
return this._rpc({
model: 'ir.ui.view',
method: 'read',
args: [[viewid], ['track']],
});
}
},
/**
* @private
*/
_onTrackChange: function (ev) {
var checkboxValue = this.$input.is(':checked');
if (checkboxValue !== this.track) {
this.track = checkboxValue;
this._trackPage(checkboxValue);
}
},
/**
* @private
*/
_trackPage: function (val) {
var viewid = $('html').data('viewid');
if (!viewid) {
return Promise.reject();
} else {
return this._rpc({
model: 'ir.ui.view',
method: 'write',
args: [[viewid], {track: val}],
});
}
},
});
CustomizeMenu.include({
_loadCustomizeOptions: function () {
var self = this;
var def = this._super.apply(this, arguments);
return def.then(function () {
if (!self.__trackpageLoaded) {
self.__trackpageLoaded = true;
self.trackPage = new TrackPage(self);
self.trackPage.appendTo(self.$el.children('.dropdown-menu'));
}
});
},
});
});
|