odoo.define('mail.utils', function (require) { "use strict"; var bus = require('bus.bus').bus; function send_notification(widget, title, content) { if (window.Notification && Notification.permission === "granted") { if (bus.is_master) { _send_native_notification(title, content); } } else { widget.do_notify(title, content); if (bus.is_master) { _beep(widget); } } } function _send_native_notification(title, content) { var notification = new Notification(title, {body: content, icon: "/mail/static/src/img/odoo_o.png"}); notification.onclick = function () { window.focus(); if (this.cancel) { this.cancel(); } else if (this.close) { this.close(); } }; } var _beep = (function () { if (typeof(Audio) === "undefined") { return function () {}; } var audio; return function (widget) { if (!audio) { audio = new Audio(); var ext = audio.canPlayType("audio/ogg; codecs=vorbis") ? ".ogg" : ".mp3"; var session = widget.getSession(); audio.src = session.url("/mail/static/src/audio/ting" + ext); } audio.play(); }; })(); function parse_and_transform(html_string, transform_function) { var open_token = "OPEN" + Date.now(); var string = html_string.replace(/</g, open_token); var children = $('
, )
// TDE note : should be done server-side, in Python -> use mail.compose.message ?
function get_text2html (text) {
return text
.replace(/((?:https?|ftp):\/\/[\S]+)/g,'$1 ')
.replace(/[\n\r]/g,'
');
}
var accented_letters_mapping = {
'a': '[àáâãäå]',
'ae': 'æ',
'c': 'ç',
'e': '[èéêë]',
'i': '[ìíîï]',
'n': 'ñ',
'o': '[òóôõö]',
'oe': 'œ',
'u': '[ùúûűü]',
'y': '[ýÿ]',
};
function unaccent (str) {
_.each(accented_letters_mapping, function (value, key) {
str = str.replace(new RegExp(value, 'g'), key);
});
return str;
}
return {
send_notification: send_notification,
parse_and_transform: parse_and_transform,
add_link: add_link,
linkify: linkify,
strip_html: strip_html,
inline: inline,
parse_email: parse_email,
get_text2html: get_text2html,
unaccent: unaccent,
};
});