Browse Source

Move mail_forward module from [odoo-grupoesoc-addons][1]

[1]: https://github.com/grupoesoc/odoo-grupoesoc-addons
pull/12/head
Jairo Llopis 9 years ago
parent
commit
cc0dfa80a1
  1. 102
      mail_forward/README.rst
  2. 5
      mail_forward/__init__.py
  3. 26
      mail_forward/__openerp__.py
  4. 394
      mail_forward/i18n/es.po
  5. BIN
      mail_forward/static/description/icon.png
  6. 12
      mail_forward/static/src/css/mail_forward.css
  7. 65
      mail_forward/static/src/js/mail_forward.js
  8. 14
      mail_forward/static/src/xml/mail_forward.xml
  9. 21
      mail_forward/views/assets.xml
  10. 0
      mail_forward/wizard/__init__.py
  11. 120
      mail_forward/wizard/mail_forward.py
  12. 64
      mail_forward/wizard/mail_forward.xml

102
mail_forward/README.rst

@ -0,0 +1,102 @@
.. 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
===============
Message forward
===============
This module was written to extend the functionality of mails to support
forwarding them to another contact or database object.
* **To another object of the database:**
* All its followers are notified according to their settings.
* **To other contacts:**
* They recieve the forwarded message according to the usual notification
rules of Odoo.
Installation
============
When installed, this module allows forwarding to the following database
objects:
* ``crm.lead``
* ``crm.meeting``
* ``crm.phonecall``
* ``mail.group``
* ``note.note``
* ``product.product``
* ``project.project``
* ``project.task``
* ``res.partner``
* ``sale.order``
Of course, if some of those are not available in your database, they will be
hidden until you install the module that adds them.
Usage
=====
To use this module, you need to:
* Go to any view that has a message thread.
* Press *Forward* (the button with a curved arrow pointing to the right).
* Modify the subject if you wish.
* If you want to forward the message to an *object*, choose it from the
selector.
* If you want to forward the message to some partner(s), add them in the
selector.
* Modify the message if you want.
* Add attachments if you want.
* If the message contains attachments, you can turn on the *Move attachments*
option, and those will get attached to the new object.
You will need to install the *document* module and have at least *User*
permissions for *Knowledge* to see the effect.
.. info::
Technical note: Internally, forwarded messages are modified copies of
original ones, but attachments are references to the exact originals to
avoid duplicating disk space. Keep that in mind when managing permissions.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/205/8.0
For further information, please visit:
* https://www.odoo.com/forum/help-1
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/social/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/social/issues/new?body=module:%20mail_forward%0Aversion:%208.0.6.0.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Jairo Llopis <j.llopis@grupoesoc.es>
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 http://odoo-community.org.

5
mail_forward/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# © 2014-2015 Grupo ESOC <www.grupoesoc.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from .wizard import mail_forward

26
mail_forward/__openerp__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# © 2014-2015 Grupo ESOC <www.grupoesoc.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Message Forward",
"summary": "Add option to forward messages",
"version": "8.0.6.0.0",
"category": "Social Network",
"website": "http://www.grupoesoc.es, https://odoo-community.org/",
"author": "Grupo ESOC, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"mail",
"web",
],
"data": [
"wizard/mail_forward.xml",
"views/assets.xml",
],
"qweb": [
"static/src/xml/mail_forward.xml",
],
}

394
mail_forward/i18n/es.po

@ -0,0 +1,394 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_forward
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-12-11 10:00+0000\n"
"PO-Revision-Date: 2014-12-11 11:07+0100\n"
"Last-Translator: Jairo Llopis <j.llopis@grupoesoc.es>\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: es_ES\n"
#. module: mail_forward
#. openerp-web
#: code:addons/mail_forward/static/src/js/mail_forward.js:37
#, python-format
msgid "(No subject)"
msgstr "(Sin asunto)"
#. module: mail_forward
#: field:mail.compose.forward,active_domain:0
msgid "Active domain"
msgstr "Dominio activo"
#. module: mail_forward
#: field:mail.compose.forward,partner_ids:0
msgid "Additional contacts"
msgstr "Contactos adicionales"
#. module: mail_forward
#: help:mail.compose.forward,no_auto_thread:0
msgid ""
"Answers do not go in the original document' discussion thread. This has an "
"impact on the generated message-id."
msgstr ""
"Las respuestas no van en el hilo de discusión original del documento. Esto "
"tiene un impacto en el ID generado para el mensaje."
#. module: mail_forward
#: field:mail.compose.forward,attachment_ids:0
msgid "Attachments"
msgstr "Adjuntos"
#. module: mail_forward
#: help:mail.compose.forward,move_attachments:0
msgid ""
"Attachments will be assigned to the chosen destination object and you will "
"be able to pick them from its 'Attachments' button, but they will not be "
"there for the current object if any. In any case you can always open it from "
"the message itself."
msgstr ""
"Los adjuntos se asignarán al objeto de destino escogido, y podrás "
"seleccionarlos desde el botón \"Adjuntos\", pero se quitarán del objeto en "
"el que estén adjuntados actualmente, si lo hay. En cualquier caso, siempre "
"puedes abrirlos desde el propio mensaje."
#. module: mail_forward
#: field:mail.compose.forward,author_id:0
msgid "Author"
msgstr "Autor"
#. module: mail_forward
#: help:mail.compose.forward,author_id:0
msgid ""
"Author of the message. If not set, email_from may hold an email address that "
"did not match any partner."
msgstr ""
"Autor del mensaje. Si no está establecido, puede que encuentres una "
"dirección que no coincide con ninguna empresa en \"email_from\"."
#. module: mail_forward
#: field:mail.compose.forward,author_avatar:0
msgid "Author's Avatar"
msgstr "Avatar del autor"
#. module: mail_forward
#: help:mail.compose.forward,body:0
msgid "Automatically sanitized HTML contents"
msgstr "Contenidos HTML automáticamente desinfectados"
#. module: mail_forward
#: field:mail.compose.forward,child_ids:0
msgid "Child Messages"
msgstr "Mensajes hijos"
#. module: mail_forward
#: selection:mail.compose.forward,type:0
msgid "Comment"
msgstr "Comentario"
#. module: mail_forward
#: field:mail.compose.forward,composition_mode:0
msgid "Composition mode"
msgstr "Modo de composición"
#. module: mail_forward
#: field:mail.compose.forward,body:0
msgid "Contents"
msgstr "Contenidos"
#. module: mail_forward
#: field:mail.compose.forward,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: mail_forward
#: field:mail.compose.forward,create_date:0
msgid "Created on"
msgstr "Creado el"
#. module: mail_forward
#: help:mail.compose.forward,starred:0
msgid "Current user has a starred notification linked to this message"
msgstr ""
"El usuario actual tiene una notificación por realizar vinculada a este "
"mensaje"
#. module: mail_forward
#: help:mail.compose.forward,to_read:0
msgid "Current user has an unread notification linked to this message"
msgstr ""
"El usuario actual tiene una notificación sin leer vinculada a este mensaje"
#. module: mail_forward
#: field:mail.compose.forward,date:0
msgid "Date"
msgstr "Fecha"
#. module: mail_forward
#. openerp-web
#: code:addons/mail_forward/static/src/js/mail_forward.js:55
#, python-format
msgid "Date:"
msgstr "Fecha:"
#. module: mail_forward
#: field:mail.compose.forward,destination_object_id:0
msgid "Destination object"
msgstr "Objeto de destino"
#. module: mail_forward
#: selection:mail.compose.forward,type:0
msgid "Email"
msgstr "Correo electrónico"
#. module: mail_forward
#: help:mail.compose.forward,email_from:0
msgid ""
"Email address of the sender. This field is set when no matching partner is "
"found for incoming emails."
msgstr ""
"Dirección de correo electrónico del autor. Este campo se establece cuando no "
"se puede encontrar una empresa correspondiente para los correos entrantes."
#. module: mail_forward
#: model:ir.model,name:mail_forward.model_mail_compose_forward
msgid "Email composition wizard"
msgstr "Asistente de redacción de correo electrónico."
#. module: mail_forward
#. openerp-web
#: code:addons/mail_forward/static/src/xml/mail_forward.xml:25
#, python-format
msgid "Forward"
msgstr "Reenviar"
#. module: mail_forward
#: model:ir.actions.act_window,name:mail_forward.compose_action
msgid "Forward Email"
msgstr "Reenviar correo electrónico"
#. module: mail_forward
#. openerp-web
#: code:addons/mail_forward/static/src/js/mail_forward.js:51
#, python-format
msgid "Forwarded message"
msgstr "Mensaje reenviado"
#. module: mail_forward
#: field:mail.compose.forward,email_from:0
msgid "From"
msgstr "De"
#. module: mail_forward
#. openerp-web
#: code:addons/mail_forward/static/src/js/mail_forward.js:53
#, python-format
msgid "From:"
msgstr "De:"
#. module: mail_forward
#: field:mail.compose.forward,id:0
msgid "ID"
msgstr "ID"
#. module: mail_forward
#: help:mail.compose.forward,parent_id:0
msgid "Initial thread message."
msgstr "Mensaje inicial del hilo."
#. module: mail_forward
#: field:mail.compose.forward,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: mail_forward
#: field:mail.compose.forward,write_date:0
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: mail_forward
#: field:mail.compose.forward,is_log:0
msgid "Log an Internal Note"
msgstr "Registrar una nota interna"
#. module: mail_forward
#: field:mail.compose.forward,record_name:0
msgid "Message Record Name"
msgstr "Nombre del registro del mensaje"
#. module: mail_forward
#: help:mail.compose.forward,type:0
msgid ""
"Message type: email for email message, notification for system message, "
"comment for other messages such as user replies"
msgstr ""
"Tipo de mensaje: \"email\" para mensaje de correo electrónico, \"notification"
"\" para mensaje del sistema, \"comment\" para otros mensajes, como "
"respuestas de usuarios"
#. module: mail_forward
#: help:mail.compose.forward,message_id:0
msgid "Message unique identifier"
msgstr "Identificador único del mensaje"
#. module: mail_forward
#: field:mail.compose.forward,message_id:0
msgid "Message-Id"
msgstr "ID del mensaje"
#. module: mail_forward
#: field:mail.compose.forward,move_attachments:0
msgid "Move attachments"
msgstr "Mover adjuntos"
#. module: mail_forward
#: help:mail.compose.forward,record_name:0
msgid "Name get of the related document."
msgstr "Obtener nombre del documento relacionado."
#. module: mail_forward
#: field:mail.compose.forward,no_auto_thread:0
msgid "No threading for answers"
msgstr "Sin hilos para las respuestas"
#. module: mail_forward
#: field:mail.compose.forward,notification_ids:0
msgid "Notifications"
msgstr "Notificaciones"
#. module: mail_forward
#: field:mail.compose.forward,notified_partner_ids:0
msgid "Notified partners"
msgstr "Empresas notificadas"
#. module: mail_forward
#: field:mail.compose.forward,notify:0
msgid "Notify followers"
msgstr "Notificar a los seguidores"
#. module: mail_forward
#: help:mail.compose.forward,notify:0
msgid "Notify followers of the document (mass post only)"
msgstr "Notificar a los seguidores de este documento (solo envío masivo)"
#. module: mail_forward
#: help:mail.compose.forward,destination_object_id:0
msgid "Object where the forwarded message will be attached"
msgstr "Objeto al que se enganchará el mensaje reenviado"
#. module: mail_forward
#: field:mail.compose.forward,mail_server_id:0
msgid "Outgoing mail server"
msgstr "Servidor de correo saliente"
#. module: mail_forward
#: field:mail.compose.forward,parent_id:0
msgid "Parent Message"
msgstr "Mensaje padre"
#. module: mail_forward
#: help:mail.compose.forward,notified_partner_ids:0
msgid ""
"Partners that have a notification pushing this message in their mailboxes"
msgstr ""
"Empresas que son notificados de este mensaje en sus bandejas de entrada"
#. module: mail_forward
#: field:mail.compose.forward,res_id:0
msgid "Related Document ID"
msgstr "ID del documento relacionado"
#. module: mail_forward
#: field:mail.compose.forward,model:0
msgid "Related Document Model"
msgstr "Modelo del documento relacionado"
#. module: mail_forward
#: help:mail.compose.forward,reply_to:0
msgid ""
"Reply email address. Setting the reply_to bypasses the automatic thread "
"creation."
msgstr ""
"Email de respuesta. Al establecer esto, se omite la creación automática de "
"hilos."
#. module: mail_forward
#: field:mail.compose.forward,reply_to:0
msgid "Reply-To"
msgstr "Responder a"
#. module: mail_forward
#: field:mail.compose.forward,starred:0
msgid "Starred"
msgstr "Por realizar"
#. module: mail_forward
#: field:mail.compose.forward,subject:0
msgid "Subject"
msgstr "Asunto"
#. module: mail_forward
#: field:mail.compose.forward,subtype_id:0
msgid "Subtype"
msgstr "Subtipo"
#. module: mail_forward
#: selection:mail.compose.forward,type:0
msgid "System notification"
msgstr "Notificación del sistema"
#. module: mail_forward
#: help:mail.compose.forward,notification_ids:0
msgid ""
"Technical field holding the message notifications. Use notified_partner_ids "
"to access notified partners."
msgstr ""
"Campo técnico que contiene las notificaciones del mensaje. Use "
"\"notified_partner_ids\" para acceder a las empresas notificadas."
#. module: mail_forward
#: field:mail.compose.forward,to_read:0
msgid "To read"
msgstr "Sin leer"
#. module: mail_forward
#: field:mail.compose.forward,type:0
msgid "Type"
msgstr "Tipo"
#. module: mail_forward
#: field:mail.compose.forward,use_active_domain:0
msgid "Use active domain"
msgstr "Usar dominio activo"
#. module: mail_forward
#: field:mail.compose.forward,template_id:0
msgid "Use template"
msgstr "Usar plantilla"
#. module: mail_forward
#: help:mail.compose.forward,vote_user_ids:0
msgid "Users that voted for this message"
msgstr "Usuarios que han votado por este mensaje"
#. module: mail_forward
#: field:mail.compose.forward,vote_user_ids:0
msgid "Votes"
msgstr "Votos"
#. module: mail_forward
#: help:mail.compose.forward,is_log:0
msgid "Whether the message is an internal note (comment mode only)"
msgstr ""
"Indica si el mensaje es una nota interna (solo para el modo comentarios)"
#~ msgid "Filters"
#~ msgstr "Filtros"

BIN
mail_forward/static/description/icon.png

After

Width: 100  |  Height: 100  |  Size: 1.8 KiB

12
mail_forward/static/src/css/mail_forward.css

@ -0,0 +1,12 @@
/* © 2014-2015 Grupo ESOC <www.grupoesoc.es>
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
.openerp .oe_mail .oe_msg .oe_msg_icons .oe_forward:hover a {
color: #1FC0FF;
text-shadow: 0px 1px #184FC5,
0px -1px #184FC5,
-1px 0px #184FC5,
1px 0px #184FC5,
0px 3px 3px rgba(0, 0, 0, 0.1);
}

65
mail_forward/static/src/js/mail_forward.js

@ -0,0 +1,65 @@
/* © 2014-2015 Grupo ESOC <www.grupoesoc.es>
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
*/
openerp.mail_forward = function (instance) {
var _t = instance.web._t;
instance.mail.ThreadMessage.include({
bind_events: function () {
this._super.apply(this, arguments);
this.$('.oe_forward').on('click', this.on_message_forward);
},
on_message_forward: function () {
// Generate email subject as possible from record_name and subject
var subject = ["FWD"];
if (this.record_name && (this.show_record_name ||
this.parent_id))
{
subject.push(this.record_name);
}
if (this.subject) {
subject.push(this.subject);
} else if (subject.length < 2) {
subject.push(_t("(No subject)"));
}
// Get only ID from the attachments
var attachment_ids = [];
for (n in this.attachment_ids) {
attachment_ids.push(this.attachment_ids[n].id);
}
// Get necessary fields from the forwarded message
var context = {
default_attachment_ids: attachment_ids,
default_body:
"<p><i>----------" +
_t("Forwarded message") +
"----------<br/>" +
_t("From:") + " " +
_.str.escapeHTML(this.author_id[1]) + "<br/>" +
_t("Date:") + " " + this.date + "</i></p><br/>" +
this.body,
default_model: this.model,
default_res_id: this.res_id,
default_subject: subject.join(": "),
};
if (this.model && this.res_id) {
context.default_destination_object_id =
[this.model, this.res_id].join();
}
// Get the action data and execute it to open the composer wizard
var do_action = this.do_action;
this.rpc("/web/action/load", {
"action_id": "mail_forward.compose_action",
})
.done(function(action) {
action.context = context;
do_action(action);
});
}
});
};

14
mail_forward/static/src/xml/mail_forward.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- © 2014-2015 Grupo ESOC <www.grupoesoc.es>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<template>
<t t-extend="mail.thread.message">
<t t-jquery=".oe_msg_icons .oe_reply" t-operation="before">
<span class="oe_forward">
<a title="Forward" class="oe_e">*</a>
</span>
</t>
</t>
</template>

21
mail_forward/views/assets.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- © 2014-2015 Grupo ESOC <www.grupoesoc.es>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<openerp>
<data>
<template id="assets_backend"
name="Mail forward assets"
inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet"
href="/mail_forward/static/src/css/mail_forward.css"/>
<script type="text/javascript"
src="/mail_forward/static/src/js/mail_forward.js"/>
</xpath>
</template>
</data>
</openerp>

0
mail_forward/wizard/__init__.py

120
mail_forward/wizard/mail_forward.py

@ -0,0 +1,120 @@
# -*- coding: utf-8 -*-
# © 2014-2015 Grupo ESOC <www.grupoesoc.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import api, fields, models
class MailForwardComposeMessage(models.TransientModel):
"""Allow forwarding a message.
It duplicates the message and optionally attaches it to another object
of the database and sends it to another recipients than the original one.
"""
_name = "mail_forward.compose.message"
_inherits = {"mail.compose.message": "original_wizard_id"}
_models = [
"crm.lead",
"crm.meeting",
"crm.phonecall",
"mail.group",
"note.note",
"product.product",
"project.project",
"project.task",
"res.partner",
"sale.order",
]
@api.model
def default_get(self, fields):
"""Fix default values.
Sometimes :meth:`openerp.addons.mail.mail_compose_message
.mail_compose_message.default_get` overwrites the default value
for the ``subject`` field, even when it gets the right default value
from the context.
This method fixes that by getting it from the context if available.
"""
result = self.original_wizard_id.default_get(fields)
if "subject" in result and "default_subject" in self.env.context:
result["subject"] = self.env.context["default_subject"]
return result
@api.model
def models(self):
"""Get allowed models and their names.
It searches for the models on the database, so if modules are not
installed, models will not be shown.
"""
model_objs = self.env["ir.model"].search(
[("model", "in", self.env.context.get("model_list",
self._models))],
order="name")
return [(m.model, m.name) for m in model_objs]
@api.one
@api.onchange("destination_object_id")
def change_destination_object(self):
"""Update some fields for the new message."""
if self.destination_object_id:
self.model = self.destination_object_id._name
self.res_id = self.destination_object_id.id
model_name = (self.env["ir.model"]
.search([("model", "=", self.model)])
.name)
record_name = self.destination_object_id.name_get()[0][1]
if model_name:
record_name = "%s %s" % (model_name, record_name)
self.record_name = record_name
else:
self.model = self.res_id = self.record_name = False
@api.one
def send_mail(self):
"""Send mail and execute the attachment relocation if needed."""
# Let the original wizard do de hard work
result = self.original_wizard_id.send_mail()
# Relocate attachments if needed
if (self.move_attachments and
self.model and
self.res_id and
self.attachment_ids):
for attachment in self.attachment_ids:
attachment.res_model = self.model
attachment.res_id = self.res_id
return result
destination_object_id = fields.Reference(
models,
"Destination object",
help="Object where the forwarded message will be attached")
move_attachments = fields.Boolean(
"Move attachments",
help="Attachments will be assigned to the chosen destination "
"object and you will be able to pick them from its "
"'Attachments' button, but they will not be there for "
"the current object if any. In any case you can always "
"open it from the message itself.")
original_wizard_id = fields.Many2one(
"mail.compose.message",
"Original message compose wizard",
delegate=True,
ondelete="cascade",
required=True)

64
mail_forward/wizard/mail_forward.xml

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- © 2014-2015 Grupo ESOC <www.grupoesoc.es>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<openerp>
<data>
<record id="compose_form" model="ir.ui.view">
<field name="name">Forward Email Form</field>
<field name="model">mail_forward.compose.message</field>
<field name="inherit_id" ref="mail.email_compose_message_wizard_form"/>
<field name="arch" type="xml">
<data>
<!-- It's required to fill either `partner_ids` or
`destination_object_id` -->
<xpath expr="//field[@name='partner_ids']" position="attributes">
<attribute name="attrs">{
'required': [('destination_object_id', '=', False)]
}</attribute>
</xpath>
<xpath expr="//label[@for='partner_ids']" position="before">
<!-- Object where the message will be attached -->
<field
attrs="{
'required': [('partner_ids', '=', [[6, False, []]])]}"
name="destination_object_id"/>
<!-- If the message has attachments, should we move them to the
new object? -->
<field
name="move_attachments"
attrs="{
'invisible': [
'|',
('destination_object_id', '=', False),
('attachment_ids', '=', [[6, False, []]])]}"/>
</xpath>
<!-- If there's no document to follow, hide the message -->
<xpath expr="//span[text()='Followers of the document and']"
position="attributes">
<attribute name="attrs">{
'invisible': [('destination_object_id', '=', False)]
}</attribute>
</xpath>
</data>
</field>
</record>
<record id="compose_action" model="ir.actions.act_window">
<field name="name">Forward Email</field>
<field name="res_model">mail_forward.compose.message</field>
<field name="src_model">mail.message</field>
<field name="type">ir.actions.act_window</field>
<field name="view_id" ref="compose_form"/>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>
Loading…
Cancel
Save