Browse Source

Fix according to review comments.

pull/279/head
Peter Hahn 8 years ago
parent
commit
08bb9053ef
  1. 8
      web_widget_mail_send_odoo/README.rst
  2. 3
      web_widget_mail_send_odoo/__openerp__.py
  3. 2
      web_widget_mail_send_odoo/assets.xml
  4. 2
      web_widget_mail_send_odoo/static/src/css/web_widget_mail_send_odoo.css
  5. 164
      web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js
  6. 2
      web_widget_mail_send_odoo/static/src/xml/web_widget_mail_send_odoo.xml

8
web_widget_mail_send_odoo/README.rst

@ -2,9 +2,9 @@
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
=====================================
Web Widget - Email internal mail link
=====================================
=================================================
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
@ -54,4 +54,4 @@ 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 http://odoo-community.org.
To contribute to this module, please visit https://odoo-community.org.

3
web_widget_mail_send_odoo/__openerp__.py

@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'Web Widget - Email internal mail link',
'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',
@ -14,7 +14,6 @@
'installable': True,
'auto_install': False,
'depends': [
'web',
'mail',
],
'data': [

2
web_widget_mail_send_odoo/assets.xml

@ -2,7 +2,7 @@
<openerp>
<data>
<template id="assets_backend" name="custom bar assets" inherit_id="web.assets_backend">
<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"/>

2
web_widget_mail_send_odoo/static/src/css/web_widget_mail_send_odoo.css

@ -1 +1 @@
.openerp .oe_form .oe_form_field_email_intern input,
.openerp .oe_form .oe_form_field_email_internal input,

164
web_widget_mail_send_odoo/static/src/js/web_widget_mail_send_odoo.js

@ -2,90 +2,88 @@
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
(function() {
openerp.web_widget_mail_send_odoo = function(instance) {
var instance = openerp;
var _t = instance.web._t,
_lt = instance.web._lt;
var QWeb = instance.web.qweb;
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.$el.find('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') || '');
}
},
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.widget=='mail_thread'){
value.root.thread.message_fetch()
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') || '');
}
},
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.widget=='mail_thread'){
value.root.thread.message_fetch()
}
}
}
);
},
}
);
} else {
console.log(self.build_context());
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],
});
pop.show_element(
'res.partner',
false,
context,
{
title: _t("Please complete partner's information."),
}
);
pop.on('create_completed', self, function (id) {
self.on_clicked()
});
}
})
}
},
});
);
},
}
);
} else {
console.log(self.build_context());
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],
});
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', 'instance.web.form.FieldEmailIntern')
})()
instance.web.form.widgets.add('email', 'instance.web.form.FieldEmailIntern')
}

2
web_widget_mail_send_odoo/static/src/xml/web_widget_mail_send_odoo.xml

@ -2,7 +2,7 @@
<templates>
<t t-name="FieldEmailIntern" t-extend="FieldEmail">
<t t-jquery="span:first">
this.removeClass('oe_form_field_email').addClass('oe_form_field_email_intern');
this.removeClass('oe_form_field_email').addClass('oe_form_field_email_internal');
</t>
</t>
</templates>
Loading…
Cancel
Save