sugarcrm将电子邮件地址添加到to_collection

时间:2018-03-13 18:51:31

标签: javascript sugarcrm

我一直试图通过代码将电子邮件地址添加到电子邮件模型的to_collection字段中。 to_collection已经有一些方法,如添加,创建,删除。我尝试使用创建一个函数,但每当我使用时,我在to_collection模型中的电子邮件地址设置为空白。

所以这就是我正在做的事情

var email = app.data.createBean('Emails', {id: <email_id> });
email.fetch({
       view:'record',
       success:__bind(function (data) {
           console.log('[TEST]',data);
           var prefill = app.data.createBean('Emails');
           prefill.copy(data);
           prefill.unset("to_collection");
           var to_col = data.get('from_collection').models[0];
           to_col.link.name = 'to';
           to_col.set('_link','to');               
           var t = data.get('to_collection');
           //t.create(to_col)

      },this)
})

这些是第一个控制台日志的属性值,如果我不使用t.create(to_col);

date_modified:"2018-03-14T00:06:36+05:30"
email_address:"xxx@gmail.com"
email_address_id:"69895ac6-e32e-11e7-b6fd-02ee7fb3392f"
email_addresses:
{email_address: "xxx@gmail.com", id: "69895ac6-e32e-11e7-b6fd-02ee7fb3392f"}
id:"a9e537b6-1704-11e8-bf1e-02b02daff135"
parent:[]
parent_id:""
parent_name:""
parent_type:""
_acl:
{fields: {…}}
_link:"to"
_module:"EmailParticipants"

如果我使用t.create(to_col);

它显示空白email_address:""

Preview.js and Preview.hbs

2 个答案:

答案 0 :(得分:1)

在Sugar 7.9中测试

由于这是我们正在讨论的抽屉,您可以将地址作为System.in数组传递,Sugar将使用它们预填充到:输入栏。如果用户未删除,则会在保存时将其添加到context.prepopulate.to_addresses

E.g。在浏览器的JS控制台中尝试这个(在Sugar中):

to_collection

在Sugar 7.11中测试

在7.9之后的电子邮件模块中,似乎有必要使用预先存在的电子邮件地址bean。

有一个utils函数可以打开抽屉并接受App.drawer.open({ layout: 'compose', context: { create: true, module: 'Emails', prepopulate: { to_addresses: [ {email: "example@whatever.fake"}, {email: "example2@whatever.fake", name: "Example Two"}, ], } } }) 参数对象中的/ cc / bcc电子邮件地址Bean集合(或属性数组)数组。

data

因为你已经有一个来自不同模型的to_collection,你可以这样做:

openEmailCreateDrawer: function(layout, data, onClose)

也可以使用相同的App.utils.openEmailCreateDrawer( 'compose', { to: data.get("to_collection") } ) 参数预填充主题,html正文和附件。

e.g。使用您的变量可能如下所示:

data

这是基于负责解析app.utils.openEmailCreateDrawer( 'compose-email', { to: data.get("to_collection"), name: subject, description_html: body, attachments: attachments } ) 中上述函数data的辅助函数的注释:

utils.js

答案 1 :(得分:1)

Well I did solve this issue by doing following

prefill.get('to_collection').create({
      deleted: false,
      email_address: to_coll.get('email_address'),
      email_address_id: to_coll.get('email_address_id'),
      _link: "to"
 });

But, I don't know this is a proper way or not.