mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
Merge pull request #279 from initOS/web-mail-send-intern
Web mail send using composition wizard instead of 'mailto:'
This commit is contained in:
57
web_widget_mail_send_odoo/README.rst
Normal file
57
web_widget_mail_send_odoo/README.rst
Normal file
@@ -0,0 +1,57 @@
|
||||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
|
||||
=================================================
|
||||
Web Widget - Internal mail wizard for email links
|
||||
=================================================
|
||||
|
||||
This module was written to provide a new widget for Email fields to replace the
|
||||
standard behaviour of displaying a 'mailto:' link with JS to open the internal
|
||||
Email wizard from Odoo for message composition.
|
||||
|
||||
The message you sent gets appended to the chatter as if you where using the
|
||||
internal mail functions of Odoo.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To use this module, you need to:
|
||||
|
||||
* Install the module.
|
||||
* It will replace the default widget for email fields.
|
||||
|
||||
For further information, please visit:
|
||||
|
||||
* https://www.odoo.com/forum/help-1
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
|
||||
`here <https://github.com/OCA/web/issues/new?body=module:%20web_widget_mail_send_odoo%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* Peter Hahn <peter.hahn@initos.com>
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
To contribute to this module, please visit https://odoo-community.org.
|
||||
0
web_widget_mail_send_odoo/__init__.py
Normal file
0
web_widget_mail_send_odoo/__init__.py
Normal file
25
web_widget_mail_send_odoo/__openerp__.py
Normal file
25
web_widget_mail_send_odoo/__openerp__.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# © 2015 initOS GmbH (<http://www.initos.com>)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
{
|
||||
'name': 'Web Widget - Internal mail wizard for email links',
|
||||
'summary': 'Send mail using internal composition wizard.',
|
||||
'version': '8.0.1.0.0',
|
||||
'category': 'Social Network',
|
||||
'website': 'https://odoo-community.org',
|
||||
'author': 'initOS GmbH, Odoo Community Association (OCA)',
|
||||
'license': 'AGPL-3',
|
||||
'application': False,
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'depends': [
|
||||
'mail',
|
||||
],
|
||||
'data': [
|
||||
'assets.xml',
|
||||
],
|
||||
'qweb': [
|
||||
'static/src/xml/web_widget_mail_send_odoo.xml',
|
||||
],
|
||||
}
|
||||
13
web_widget_mail_send_odoo/assets.xml
Normal file
13
web_widget_mail_send_odoo/assets.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<template id="assets_backend" inherit_id="web.assets_backend">
|
||||
<xpath expr="." position="inside">
|
||||
<link rel="stylesheet" href="/web_widget_mail_send_odoo/static/src/css/web_widget_mail_send_odoo.css"/>
|
||||
<script type="text/javascript" src="/web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js"/>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
39
web_widget_mail_send_odoo/i18n/de.po
Normal file
39
web_widget_mail_send_odoo/i18n/de.po
Normal file
@@ -0,0 +1,39 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * web_widget_mail_send_odoo
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 8.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-01-27 20:09+0000\n"
|
||||
"PO-Revision-Date: 2016-01-27 21:12+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"Language: de\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#. module: web_widget_mail_send_odoo
|
||||
#. openerp-web
|
||||
#: code:addons/web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js:33
|
||||
#, python-format
|
||||
msgid "Can't send email to invalid e-mail address"
|
||||
msgstr "Die Empfängeradresse ist keine gültige Email."
|
||||
|
||||
#. module: web_widget_mail_send_odoo
|
||||
#. openerp-web
|
||||
#: code:addons/web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js:33
|
||||
#, python-format
|
||||
msgid "E-mail Error"
|
||||
msgstr "Email Fehler"
|
||||
|
||||
#. module: web_widget_mail_send_odoo
|
||||
#. openerp-web
|
||||
#: code:addons/web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js:75
|
||||
#, python-format
|
||||
msgid "Please complete partner's information."
|
||||
msgstr "Bitte vervollständigen Sie die Kontaktinformationen des Empfängers."
|
||||
38
web_widget_mail_send_odoo/i18n/web_widget_mail_send_odoo.pot
Normal file
38
web_widget_mail_send_odoo/i18n/web_widget_mail_send_odoo.pot
Normal file
@@ -0,0 +1,38 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * web_widget_mail_send_odoo
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 8.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-01-27 20:09+0000\n"
|
||||
"PO-Revision-Date: 2016-01-27 20:09+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: web_widget_mail_send_odoo
|
||||
#. openerp-web
|
||||
#: code:addons/web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js:33
|
||||
#, python-format
|
||||
msgid "Can't send email to invalid e-mail address"
|
||||
msgstr ""
|
||||
|
||||
#. module: web_widget_mail_send_odoo
|
||||
#. openerp-web
|
||||
#: code:addons/web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js:33
|
||||
#, python-format
|
||||
msgid "E-mail Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: web_widget_mail_send_odoo
|
||||
#. openerp-web
|
||||
#: code:addons/web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js:75
|
||||
#, python-format
|
||||
msgid "Please complete partner's information."
|
||||
msgstr ""
|
||||
|
||||
BIN
web_widget_mail_send_odoo/static/description/icon.png
Normal file
BIN
web_widget_mail_send_odoo/static/description/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
@@ -0,0 +1 @@
|
||||
.openerp .oe_form .oe_form_field_email_internal input,
|
||||
@@ -0,0 +1,107 @@
|
||||
/* © 2015 initOS GmbH (<http://www.initos.com>)
|
||||
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
*/
|
||||
|
||||
openerp.web_widget_mail_send_odoo = function(instance) {
|
||||
|
||||
var _t = instance.web._t,
|
||||
_lt = instance.web._lt;
|
||||
var QWeb = instance.web.qweb;
|
||||
|
||||
instance.web.form.FieldEmailIntern = instance.web.form.FieldChar.extend({
|
||||
template: 'FieldEmailIntern',
|
||||
initialize_content: function() {
|
||||
this._super();
|
||||
var $button = this.$('a');
|
||||
$button.click(this.on_clicked);
|
||||
this.setupFocus($button);
|
||||
},
|
||||
render_value: function() {
|
||||
var self = this;
|
||||
if (!this.get("effective_readonly")) {
|
||||
self._super();
|
||||
} else {
|
||||
self.$el.find('a')
|
||||
.removeAttr('href')
|
||||
.removeAttr('target')
|
||||
.text(self.get('value') || '');
|
||||
}
|
||||
},
|
||||
is_syntax_valid: function(){
|
||||
var self = this;
|
||||
if(!self._super())
|
||||
return false;
|
||||
if (!self.get("effective_readonly") && 0 < self.$("input").size() && self.$("input").val()) {
|
||||
try {
|
||||
var parsed_email = instance.mail.ChatterUtils.parse_email(self.$("input").val());
|
||||
console.log(parsed_email)
|
||||
if(!parsed_email[1])
|
||||
return false;
|
||||
return true;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
on_clicked: function() {
|
||||
var self = this;
|
||||
if (!self.get('value') || !self.is_syntax_valid()) {
|
||||
self.do_warn(_t("E-mail Error"), _t("Can't send email to invalid e-mail address"));
|
||||
} else {
|
||||
// find partner id for email
|
||||
var res_partner = new openerp.Model('res.partner');
|
||||
var parsed_email = instance.mail.ChatterUtils.parse_email(self.get('value'));
|
||||
res_partner.query(['id'])
|
||||
.filter([['email', '=', parsed_email[1]]])
|
||||
.first().then(function(partner){
|
||||
if(partner){
|
||||
var fm = self.field_manager
|
||||
self.do_action(
|
||||
'mail.action_email_compose_message_wizard', {
|
||||
additional_context: {
|
||||
default_partner_ids: [partner.id],
|
||||
default_composition_mode: 'comment',
|
||||
// write to active model:
|
||||
default_model: fm.dataset._model.name,
|
||||
default_res_id: fm.datarecord.id,
|
||||
},
|
||||
on_close: function(){
|
||||
// refresh the chatter widget here
|
||||
$.each(self.view.getChildren(),
|
||||
function(index, value){
|
||||
if(value.root && value.root.thread && value.root.thread.message_fetch){
|
||||
value.root.thread.message_fetch()
|
||||
}
|
||||
}
|
||||
);
|
||||
},
|
||||
}
|
||||
);
|
||||
} else {
|
||||
var pop = new instance.web.form.FormOpenPopup(self);
|
||||
var context = new instance.web.CompoundContext(self.build_context(), {
|
||||
default_name: parsed_email[0],
|
||||
default_email: parsed_email[1],
|
||||
force_email: true,
|
||||
});
|
||||
pop.show_element(
|
||||
'res.partner',
|
||||
false,
|
||||
context,
|
||||
{
|
||||
title: _t("Please complete partner's information."),
|
||||
}
|
||||
);
|
||||
pop.on('create_completed', self, function (id) {
|
||||
self.on_clicked()
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
instance.web.form.widgets.add('email_mailto', 'instance.web.form.FieldEmail')
|
||||
instance.web.form.widgets.add('email', 'instance.web.form.FieldEmailIntern')
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates>
|
||||
<t t-name="FieldEmailIntern" t-extend="FieldEmail">
|
||||
<t t-jquery="span:first">
|
||||
this.removeClass('oe_form_field_email').addClass('oe_form_field_email_internal');
|
||||
</t>
|
||||
</t>
|
||||
</templates>
|
||||
Reference in New Issue
Block a user