[MERGE] forward port branch saas-11.4 up to 3c108977c1

This commit is contained in:
Christophe Simonis
2018-10-22 16:59:51 +02:00
85 changed files with 1439 additions and 192 deletions
+75 -28
View File
@@ -500,6 +500,10 @@ var FieldDate = InputField.extend({
this._super.apply(this, arguments);
// use the session timezone when formatting dates
this.formatOptions.timezone = true;
this.datepickerOptions = _.defaults(
this.nodeOptions.datepicker || {},
{defaultDate: this.value}
);
},
/**
* In edit mode, instantiates a DateWidget datepicker and listen to changes.
@@ -583,13 +587,7 @@ var FieldDate = InputField.extend({
* @private
*/
_makeDatePicker: function () {
return new datepicker.DateWidget(
this,
_.defaults(
this.nodeOptions.datepicker || {},
{defaultDate: this.value}
)
);
return new datepicker.DateWidget(this, this.datepickerOptions);
},
/**
@@ -607,6 +605,17 @@ var FieldDate = InputField.extend({
var FieldDateTime = FieldDate.extend({
supportedFieldTypes: ['datetime'],
/**
* @override
*/
init: function () {
this._super.apply(this, arguments);
if (this.value) {
var offset = this.getSession().getTZOffset(this.value);
var displayedValue = this.value.clone().add(offset, 'minutes');
this.datepickerOptions.defaultDate = displayedValue;
}
},
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
@@ -637,10 +646,8 @@ var FieldDateTime = FieldDate.extend({
* @private
*/
_makeDatePicker: function () {
var value = this.value && this.value.clone().add(this.getSession().getTZOffset(this.value), 'minutes');
return new datepicker.DateTimeWidget(this, {defaultDate: value});
return new datepicker.DateTimeWidget(this, this.datepickerOptions);
},
/**
* Set the datepicker to the right value rather than the default one.
*
@@ -1171,6 +1178,9 @@ var HandleWidget = AbstractField.extend({
var FieldEmail = InputField.extend({
className: 'o_field_email',
events: _.extend({}, InputField.prototype.events, {
'click': '_onClick',
}),
prefix: 'mailto',
supportedFieldTypes: ['char'],
@@ -1211,7 +1221,21 @@ var FieldEmail = InputField.extend({
this.$el.text(this.value)
.addClass('o_form_uri o_text_overflow')
.attr('href', this.prefix + ':' + this.value);
}
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* Prevent the URL click from opening the record (when used on a list).
*
* @private
* @param {MouseEvent} ev
*/
_onClick: function (ev) {
ev.stopPropagation();
},
});
var FieldPhone = FieldEmail.extend({
@@ -1238,6 +1262,9 @@ var FieldPhone = FieldEmail.extend({
var UrlWidget = InputField.extend({
className: 'o_field_url',
events: _.extend({}, InputField.prototype.events, {
'click': '_onClick',
}),
supportedFieldTypes: ['char'],
/**
@@ -1279,7 +1306,21 @@ var UrlWidget = InputField.extend({
.addClass('o_form_uri o_text_overflow')
.attr('target', '_blank')
.attr('href', this.value);
}
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* Prevent the URL click from opening the record (when used on a list).
*
* @private
* @param {MouseEvent} ev
*/
_onClick: function (ev) {
ev.stopPropagation();
},
});
var CopyClipboard = {
@@ -1645,19 +1686,23 @@ var FieldPdfViewer = FieldBinaryFile.extend({
},
/**
* @private
* @param {string} [fileURI] file URI if specified
* @returns {string} the pdf viewer URI
*/
_getURI: function () {
var queryObj = {
model: this.model,
field: this.name,
id: this.res_id,
};
_getURI: function (fileURI) {
var page = this.recordData[this.name + '_page'] || 1;
var queryString = $.param(queryObj);
var url = encodeURIComponent('/web/image?' + queryString);
if (!fileURI) {
var queryObj = {
model: this.model,
field: this.name,
id: this.res_id,
};
var queryString = $.param(queryObj);
fileURI = '/web/image?' + queryString
}
fileURI = encodeURIComponent(fileURI);
var viewerURL = '/web/static/lib/pdfjs/web/viewer.html?file=';
return viewerURL + url + '#page=' + page;
return viewerURL + fileURI + '#page=' + page;
},
/**
* @private
@@ -1701,14 +1746,16 @@ var FieldPdfViewer = FieldBinaryFile.extend({
*/
on_file_change: function (ev) {
this._super.apply(this, arguments);
var files = ev.target.files;
if (!files || files.length === 0) {
return;
}
// TOCheck: is there requirement to fallback on FileReader if browser don't support URL
var fileURI = URL.createObjectURL(files[0]);
if (this.PDFViewerApplication) {
var files = ev.target.files;
if (!files || files.length === 0) {
return;
}
var file = files[0];
// TOCheck: is there requirement to fallback on FileReader if browser don't support URL
this.PDFViewerApplication.open(URL.createObjectURL(file), 0);
this.PDFViewerApplication.open(fileURI, 0);
} else {
this.$('.o_pdfview_iframe').attr('src', this._getURI(fileURI));
}
},
/**