[MERGE] forward port branch 9.0 up to e544ec8df7
This commit is contained in:
@@ -471,6 +471,17 @@ function swap(array, elem1, elem2) {
|
||||
array[i1] = elem2;
|
||||
}
|
||||
|
||||
function is_email(value, allow_mailto) {
|
||||
// http://stackoverflow.com/questions/46155/validate-email-address-in-javascript
|
||||
var re;
|
||||
if (allow_mailto) {
|
||||
re = /^(mailto:)?(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
|
||||
} else {
|
||||
re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
|
||||
}
|
||||
return re.test(value);
|
||||
}
|
||||
|
||||
function toBoolElse (str, elseValues, trueValues, falseValues) {
|
||||
var ret = _.str.toBool(str, trueValues, falseValues);
|
||||
if (_.isUndefined(ret)) {
|
||||
@@ -535,6 +546,7 @@ return {
|
||||
reject_after: reject_after,
|
||||
delay: delay,
|
||||
swap: swap,
|
||||
is_email: is_email,
|
||||
toBoolElse: toBoolElse,
|
||||
async_when: async_when,
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@ var core = require('web.core');
|
||||
var ajax = require('web.ajax');
|
||||
var Dialog = require('web.Dialog');
|
||||
var Widget = require('web.Widget');
|
||||
var utils = require('web.utils');
|
||||
var base = require('web_editor.base');
|
||||
var rte = require('web_editor.rte');
|
||||
|
||||
@@ -1048,6 +1049,7 @@ var LinkDialog = Dialog.extend({
|
||||
if (!$e.length) {
|
||||
$e = this.$('input.url-source:first');
|
||||
}
|
||||
$e.closest('.form-group').removeClass('has-error');
|
||||
var val = $e.val();
|
||||
var label = this.$('#link-text').val() || val;
|
||||
|
||||
@@ -1068,8 +1070,7 @@ var LinkDialog = Dialog.extend({
|
||||
var size = this.$("input[name='link-style-size']:checked").val() || '';
|
||||
var classes = (this.data.className || "") + (style && style.length ? " btn " : "") + style + " " + size;
|
||||
var isNewWindow = this.$('input.window-new').prop('checked');
|
||||
|
||||
if ($e.hasClass('email-address') && $e.val().indexOf("@") !== -1) {
|
||||
if ($e.hasClass('email-address') && (_.str.startsWith(val, 'mailto:') || (val.indexOf("@") !== -1 && !_.str.startsWith(val, 'http') && !_.str.startsWith(val, 'www')))) {
|
||||
self.get_data_buy_mail(def, $e, isNewWindow, label, classes, test);
|
||||
} else {
|
||||
self.get_data_buy_url(def, $e, isNewWindow, label, classes, test);
|
||||
@@ -1078,7 +1079,13 @@ var LinkDialog = Dialog.extend({
|
||||
},
|
||||
get_data_buy_mail: function (def, $e, isNewWindow, label, classes, test) {
|
||||
var val = $e.val();
|
||||
def.resolve(val.indexOf("mailto:") === 0 ? val : 'mailto:' + val, isNewWindow, label, classes);
|
||||
if (utils.is_email(val, true)) {
|
||||
def.resolve(val.indexOf("mailto:") === 0 ? val : 'mailto:' + val, isNewWindow, label, classes);
|
||||
} else {
|
||||
$e.closest('.form-group').addClass('has-error');
|
||||
$e.focus();
|
||||
def.reject();
|
||||
}
|
||||
},
|
||||
get_data_buy_url: function (def, $e, isNewWindow, label, classes, test) {
|
||||
def.resolve($e.val(), isNewWindow, label, classes);
|
||||
|
||||
Reference in New Issue
Block a user