[IMP]: solve problem for mail getway

bzr revid: ksa@tinyerp.co.in-20100811140726-ky86i3z0x9s4io80
This commit is contained in:
ksa (Open ERP) 2010-08-11 19:37:26 +05:30
parent 6efbafae7b
commit da3ee80c6b
12 changed files with 294 additions and 245 deletions

View File

@ -112,7 +112,7 @@ class mailgate_thread(osv.osv):
if history:
for att in attach:
attachments.append(att_obj.create(cr, uid, {'name': att[0], 'datas': base64.encodestring(att[1])}))
for param in (email, email_cc, email_bcc):
if isinstance(param, list):
param = ", ".join(param)
@ -141,7 +141,7 @@ class mailgate_thread(osv.osv):
mailgate_thread()
def format_date_tz(date, tz=None):
if not date:
if not date:
return 'n/a'
format = tools.DEFAULT_SERVER_DATETIME_FORMAT
return tools.server_to_local_timestamp(date, format, format, tz)
@ -191,7 +191,7 @@ class mailgate_message(osv.osv):
'description': fields.text('Description', readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner', required=False),
'attachment_ids': fields.many2many('ir.attachment', 'message_attachment_rel', 'message_id', 'attachment_id', 'Attachments', readonly=True),
'display_text': fields.function(_get_display_text, method=True, type='text', size="512", string='Display Text'),
'display_text': fields.function(_get_display_text, method=True, type='text', size="512", string='Display Text'),
}
def init(self, cr):
@ -224,7 +224,7 @@ class mailgate_tool(osv.osv_memory):
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param model: OpenObject Model
@param res_ids: Ids of the record of OpenObject model created
@param res_ids: Ids of the record of OpenObject model created
@param msg: Email details
@param attach: Email attachments
"""
@ -241,7 +241,7 @@ class mailgate_tool(osv.osv_memory):
'res_model': model,
'email_cc': msg.get('cc'),
'email_from': msg.get('from'),
'email_to': msg.get('to'),
'email_to': msg.get('to'),
'message_id': msg.get('message-id'),
'references': msg.get('references') or msg.get('in-reply-to'),
'res_id': res_id,
@ -283,6 +283,7 @@ class mailgate_tool(osv.osv_memory):
tools.misc._email_send(smtp_from, self.to_email(email_error), msg, openobject_id=res.id)
def process_email(self, cr, uid, model, message, attach=True, context=None):
print "processssss_emaillllllllll",model
"""This function Processes email and create record for given OpenERP model
@param self: The object pointer
@param cr: the current row, from the database cursor,

View File

@ -22,11 +22,11 @@
{
"name" : "Thunderbird Interface",
"version" : "1.0",
"author" : "Axelor",
"website" : "http://www.axelor.com/",
"depends" : ["base"],
"author" : "OpenERP SA & Axelor",
"website" : "http://www.openerp.com/",
"depends" : ["base","mail_gateway"],
"category" : "Generic Modules/Thunderbird interface",
"description": '''
"description": """
This module is required for the thuderbird plug-in to work
properly.
@ -35,8 +35,7 @@
a project, an analytical account, or any other object and attach selected
mail as .eml file in attachment of selected record.
You can create new case in crm using Create Case button.
Select a section for which you want to create case.''',
""",
"init_xml" : [],
"demo_xml" : [],
"update_xml" : ['thunderbird_installer.xml',

View File

@ -25,27 +25,117 @@ from osv import osv,fields
import base64
import netsvc
from tools.translate import _
import email
import tools
import binascii
class email_server_tools(osv.osv_memory):
_inherit = "email.server.tools"
def history_message(self, cr, uid, model, res_id, message):
#@param message: string of mail which is read from EML File
attachment_pool = self.pool.get('ir.attachment')
msg = self.parse_message(message)
attachments = msg.get('attachments', [])
att_ids = []
for attachment in attachments:
data_attach = {
'name': attachment,
'datas': binascii.b2a_base64(str(attachments.get(attachment))),
'datas_fname': attachment,
'description': 'Mail attachment From Thunderbird msg_id: %s' %(msg.get('message_id', '')),
'res_model': model,
'res_id': res_id,
}
att_ids.append(attachment_pool.create(cr, uid, data_attach))
return self.history(cr, uid, model, res_id, msg, att_ids)
def parse_message(self, message):
#TOCHECK: put this function in mailgateway
msg_txt = email.message_from_string(message)
message_id = msg_txt.get('message-id', False)
msg = {}
msg_txt = email.message_from_string(message)
fields = msg_txt.keys()
msg['id'] = message_id
msg['message-id'] = message_id
if 'Subject' in fields:
msg['subject'] = self._decode_header(msg_txt.get('Subject'))
if 'Content-Type' in fields:
msg['content-type'] = msg_txt.get('Content-Type')
if 'From' in fields:
msg['from'] = self._decode_header(msg_txt.get('From'))
if 'Delivered-To' in fields:
msg['to'] = self._decode_header(msg_txt.get('Delivered-To'))
if 'CC' in fields:
msg['cc'] = self._decode_header(msg_txt.get('CC'))
if 'Reply-to' in fields:
msg['reply'] = self._decode_header(msg_txt.get('Reply-To'))
if 'Date' in fields:
msg['date'] = self._decode_header(msg_txt.get('Date'))
if 'Content-Transfer-Encoding' in fields:
msg['encoding'] = msg_txt.get('Content-Transfer-Encoding')
if 'References' in fields:
msg['references'] = msg_txt.get('References')
if 'In-Reply-To' in fields:
msg['in-reply-to'] = msg_txt.get('In-Reply-To')
if 'X-Priority' in fields:
msg['priority'] = msg_txt.get('X-Priority', '3 (Normal)').split(' ')[0]
if not msg_txt.is_multipart() or 'text/plain' in msg.get('Content-Type', ''):
encoding = msg_txt.get_content_charset()
body = msg_txt.get_payload(decode=True)
msg['body'] = tools.ustr(body, encoding)
attachments = {}
has_plain_text = False
if msg_txt.is_multipart() or 'multipart/alternative' in msg.get('content-type', ''):
body = ""
for part in msg_txt.walk():
if part.get_content_maintype() == 'multipart':
continue
encoding = part.get_content_charset()
filename = part.get_filename()
if part.get_content_maintype()=='text':
content = part.get_payload(decode=True)
if filename:
attachments[filename] = content
elif not has_plain_text:
# main content parts should have 'text' maintype
# and no filename. we ignore the html part if
# there is already a plaintext part without filename,
# because presumably these are alternatives.
content = tools.ustr(content, encoding)
if part.get_content_subtype() == 'html':
body = tools.ustr(tools.html2plaintext(content))
elif part.get_content_subtype() == 'plain':
body = content
has_plain_text = True
elif part.get_content_maintype() in ('application', 'image'):
if filename :
attachments[filename] = part.get_payload(decode=True)
else:
res = part.get_payload(decode=True)
body += tools.ustr(res, encoding)
msg['body'] = body
msg['attachments'] = attachments
return msg
email_server_tools()
class thunderbird_partner(osv.osv_memory):
_name = "thunderbird.partner"
_description="Thunderbid mails"
_rec_name="sender"
def mailcreate(self,cr,user,vals):
dictcreate = dict(vals)
import email
header_name = email.Header.decode_header(dictcreate['name'])
dictcreate['name'] = header_name and header_name[0] and header_name[0][0]
address_obj = self.pool.get('res.partner.address')
case_pool = self.pool.get(dictcreate.get('object','crm.lead'))
partner_ids = address_obj.search(cr,user,[('email','=',dictcreate['email_from'])])
partner = address_obj.read(cr,user,partner_ids,['partner_id','name'])
if partner and partner[0] and partner[0]['partner_id']:
dictcreate.update({'partner_id':partner[0]['partner_id'][0],'partner_name':partner[0]['name']})
create_id = case_pool.create(cr, user, dictcreate)
cases = case_pool.browse(cr,user,[create_id])
case_pool._history(cr, user, cases, _('Archive'), history=True, email=False)
return create_id
def create_contact(self,cr,user,vals):
dictcreate = dict(vals)
@ -54,6 +144,21 @@ class thunderbird_partner(osv.osv_memory):
create_id = self.pool.get('res.partner.address').create(cr, user, dictcreate)
return create_id
def history_message(self,cr,uid,vals):
dictcreate = dict(vals)
server_tools_pool = self.pool.get('email.server.tools')
res_id = int(dictcreate.get('res_id'))
model = str(dictcreate.get('model'))
message = str(dictcreate.get('message'))
server_tools_pool.history_message(cr,uid,model,res_id,message)
return True
def process_email(self,cr,uid,vals):
dictcreate = dict(vals)
model = str(dictcreate.get('model'))
message = str(dictcreate.get('message'))
return self.pool.get('email.server.tools').process_email(cr, uid, model, message, attach=True, context=None)
def search_contact(self, cr, user, vals):
address_obj = self.pool.get('res.partner.address')
partner = address_obj.search(cr, user,[('email','=',vals)])
@ -161,21 +266,7 @@ class thunderbird_partner(osv.osv_memory):
name_get.append(er_val)
return name_get
def create_attachment(self,cr,user,vals):
dictcreate = dict(vals)
datas = [dictcreate['datas']]
name = [dictcreate['name']]
f_name = [dictcreate['datas_fname']]
if(dictcreate['datas'].__contains__(',')):
name = dictcreate['name'].split(',')
datas = dictcreate['datas'].split(',')
f_name = dictcreate['datas_fname'].split(',')
for i in range(0,datas.__len__()):
dictcreate['name'] = name[i]
dictcreate['datas'] = datas[i]
dictcreate['datas_fname'] = f_name[i]
create_id = self.pool.get('ir.attachment').create(cr,user,dictcreate)
return 0
def list_alldocument(self,cr,user,vals):
obj_list= [('crm.lead','Lead'),('project.issue','Project Issue'), ('hr.applicant','HR Recruitment')]

View File

@ -17,13 +17,14 @@
<label align="right" id="emailid" value="&emailid.value;" width="94" />
<textbox id="txtemail" width="268" align="right"/>
<spacer width="5"/>
<button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
<button label="&bsearch.label;" oncommand="searchContactdetail();" image="&imagesearch.value;"/>
</hbox>
<hbox>
<label align="right" id="name" value="&name.value;" width="80" />
<textbox id="txtname" align="right" width="270" readonly="true"/>
<spacer width="5"/>
<button label="New Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);" width="130"/>
<button label="New Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);" width="133"/>
</hbox>
</groupbox>
</tabpanel>
@ -107,8 +108,7 @@
<description></description>
<hbox>
<spacer width="450"/>
<button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
<spacer width="600"/>
<button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
<button label="&ok.label;" image="&imageok.value;" oncommand="UpdateContact();"/>

View File

@ -34,7 +34,7 @@
<hbox>
<description>Documents</description>
</hbox>
<listbox height="250" id="listSearchBox" >
<listbox height="250" id="listSearchBox" seltype="multiple">
<listhead >
<listheader label="&listSearchBox.header;"/>
</listhead>

View File

@ -970,7 +970,7 @@ var listSearchContactHandler = {
var t = getMobilenumber();}
if(strlSearchResult=="email" && strlSearchResultValue!=''){
setSenderEmail(sendername);
setSenderEmail(strlSearchResultValue);
var t = getSenderEmail();}
if(strlSearchResult=="res_id"){
@ -1000,7 +1000,7 @@ var listSearchContactdetailHandler = {
if(strlSearchResult=="email" && strlSearchResultValue=='')
{
alert("Contact is not Available")
document.getElementById("txtemail").value = sendername;
document.getElementById("txtemail").value = strlSearchResultValue;
}
if(strlSearchResult=="partner_name"){
document.getElementById("txtname").value =strlSearchResultValue;}
@ -1380,7 +1380,70 @@ var listArchiveHandler = {
}
//function to archive the mail content through xmlrpc request
function archivemail(){
function parse_eml(){
var fpath =""
if(navigator.userAgent.indexOf('Linux')!= -1){
fpath ="/tmp/"
}
else if(navigator.userAgent.indexOf('Win')!= -1){
fpath ="C:\\"
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
fpath ="/tmp/"
}
name = fpath + getFileName() +".eml"
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( name );
if ( file.exists() == false ) {
return null;
} else {
var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
sis.init( is );
var output = sis.read( sis.available() );
return output
}
}
function upload_archivemail()
{
list_documents = document.getElementById('listSearchBox')
var context = []
var cnt = list_documents.selectedCount
for(i=0;i<=cnt;i++)
{
var object = list_documents.getSelectedItem(i)
var eml_string = parse_eml();
var model = object.label;
var res_id = object.value;
var branchobj = getPref();
setServerService('xmlrpc/object');
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
var xmlRpcClient = getXmlRpc();
var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strDbName.data = branchobj.getCharPref("serverdbname");
var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
struids.data = branchobj.getIntPref('userid');
var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strpass.data = branchobj.getCharPref("password");
var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strmethod.data = 'history_message';
var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strobj.data = 'thunderbird.partner';
var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
var a = ['model', 'res_id','message'];
var b = [model, res_id,eml_string];
var arrofarr = dictcontact(a,b)
xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
}
}
function create_archivemail(){
var popup = document.getElementById("section").selectedItem; // a <menupopup> element
if (String(popup) != "null"){
@ -1398,11 +1461,12 @@ function archivemail(){
var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strpass.data = branchobj.getCharPref("password");
var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strmethod.data = 'mailcreate';
strmethod.data = 'process_email';
var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strobj.data = 'thunderbird.partner';
var a = ['name','object','date','email_from','email_cc','description','user_id'];
var b = [getSubject(),object,getReceivedDate(),getSenderEmail(),getCCList(),getMessageBody(),branchobj.getIntPref('userid')];
var eml_string = parse_eml()
var a = ['model', 'message'];
var b = [object, eml_string];
var arrofarr = dictcontact(a,b);
xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
}
@ -1532,7 +1596,7 @@ var listAttachHandler = {
}
//function to create a new attachment record
function createAttachment(popup,res_id){
function createAttachment(popup, res_id){
var branchobj = getPref();
setServerService('xmlrpc/object');
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
@ -1993,91 +2057,6 @@ function listSearchDocumentAttachment(){
//function to create a new attachment record
function createAttachmentEML()
{
if(document.getElementById('listSearchBox').selectedItem)
{
data_attach = "no"
if(getPref().getCharPref('attachmentlength')>0 && getAttachment() == "yes"){
createAttachment(document.getElementById('listSearchBox').selectedItem.label , document.getElementById('listSearchBox').selectedItem.value)
data_attach = "yes"
}
var fpath =""
if(navigator.userAgent.indexOf('Linux')!= -1){
fpath ="/tmp/"
}
else if(navigator.userAgent.indexOf('Win')!= -1){
fpath ="C:\\"
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
fpath ="/tmp/"
}
var encoded_string=""
name = fpath + getFileName() +".eml"
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( name );
if ( file.exists() == false ) {
return null;
} else {
var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
sis.init( is );
var output = sis.read( sis.available() );
encoded_string += encode64(output)+',';
encoded_string = encoded_string.substring(0,encoded_string.length-1);
a = ":"
if (data_attach == "yes")
{
alert("Mail Archived Successfully With Attachments");
window.close();
}
else
{
alert("Mail Archived Successfully" + a);
window.close();
}
}
attach_eml="yes";
var branchobj = getPref();
setServerService('xmlrpc/object');
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
var xmlRpcClient = getXmlRpc();
var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strDbName.data = branchobj.getCharPref("serverdbname");
var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
struids.data = branchobj.getIntPref('userid');
var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strpass.data = branchobj.getCharPref("password");
var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strmethod.data = 'create_attachment';
var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strobj.data = 'thunderbird.partner';
var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
var popup = document.getElementById("section").selectedItem; // a <menupopup> element
object=popup.value;
resobj.data = object;
filename = getFileName()
if (getFileName().length > 60)
{
filename = filename.substring(0,60) ;
}
filename = filename + ".eml"
var a = ['name','datas','res_model','description','res_id','datas_fname'];
var b = [getFileName(),encoded_string,document.getElementById('listSearchBox').selectedItem.label,getSubject()+'\n'+getSenderEmail() ,document.getElementById('listSearchBox').selectedItem.value ,filename];
var arrofarr = dictcontact(a,b);
xmlRpcClient.asyncCall(listAttachHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
}
else
{
alert("you must select only one record");
}
}
//function to create a new attachment record
@ -2182,7 +2161,7 @@ function win_close()
function attachmentWidnowOpen(msg)
{
if(getPref().getCharPref('attachmentlength')>0)
/* if(getPref().getCharPref('attachmentlength')>0)
{
if (msg=="create"){
@ -2221,7 +2200,7 @@ function attachmentWidnowOpen(msg)
}
}
else
{
{ */
if (msg=="create")
{
var popup = document.getElementById("section").selectedItem; // a <menupopup> element
@ -2229,7 +2208,7 @@ function attachmentWidnowOpen(msg)
object=popup.value;
if (object=="" || object == undefined) { alert("select at least one document !")}
else{
archivemail()
create_archivemail()
}
}
else
@ -2241,11 +2220,11 @@ function attachmentWidnowOpen(msg)
{
if(document.getElementById('listSearchBox').selectedItem)
{
createAttachmentEML()
upload_archivemail()
}
else{
alert("you must select only one record");
}
}
}
//}
}

View File

@ -17,13 +17,14 @@
<label align="right" id="emailid" value="&emailid.value;" width="94" />
<textbox id="txtemail" width="268" align="right"/>
<spacer width="5"/>
<button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
<button label="&bsearch.label;" oncommand="searchContactdetail();" image="&imagesearch.value;"/>
</hbox>
<hbox>
<label align="right" id="name" value="&name.value;" width="80" />
<textbox id="txtname" align="right" width="270" readonly="true"/>
<spacer width="5"/>
<button label="New Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);" width="130"/>
<button label="New Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);" width="133"/>
</hbox>
</groupbox>
</tabpanel>
@ -107,8 +108,7 @@
<description></description>
<hbox>
<spacer width="450"/>
<button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
<spacer width="600"/>
<button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
<button label="&ok.label;" image="&imageok.value;" oncommand="UpdateContact();"/>

View File

@ -34,7 +34,7 @@
<hbox>
<description>Documents</description>
</hbox>
<listbox height="250" id="listSearchBox" >
<listbox height="250" id="listSearchBox" seltype="multiple">
<listhead >
<listheader label="&listSearchBox.header;"/>
</listhead>

View File

@ -970,7 +970,7 @@ var listSearchContactHandler = {
var t = getMobilenumber();}
if(strlSearchResult=="email" && strlSearchResultValue!=''){
setSenderEmail(sendername);
setSenderEmail(strlSearchResultValue);
var t = getSenderEmail();}
if(strlSearchResult=="res_id"){
@ -1000,7 +1000,7 @@ var listSearchContactdetailHandler = {
if(strlSearchResult=="email" && strlSearchResultValue=='')
{
alert("Contact is not Available")
document.getElementById("txtemail").value = sendername;
document.getElementById("txtemail").value = strlSearchResultValue;
}
if(strlSearchResult=="partner_name"){
document.getElementById("txtname").value =strlSearchResultValue;}
@ -1380,7 +1380,70 @@ var listArchiveHandler = {
}
//function to archive the mail content through xmlrpc request
function archivemail(){
function parse_eml(){
var fpath =""
if(navigator.userAgent.indexOf('Linux')!= -1){
fpath ="/tmp/"
}
else if(navigator.userAgent.indexOf('Win')!= -1){
fpath ="C:\\"
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
fpath ="/tmp/"
}
name = fpath + getFileName() +".eml"
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( name );
if ( file.exists() == false ) {
return null;
} else {
var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
sis.init( is );
var output = sis.read( sis.available() );
return output
}
}
function upload_archivemail()
{
list_documents = document.getElementById('listSearchBox')
var context = []
var cnt = list_documents.selectedCount
for(i=0;i<=cnt;i++)
{
var object = list_documents.getSelectedItem(i)
var eml_string = parse_eml();
var model = object.label;
var res_id = object.value;
var branchobj = getPref();
setServerService('xmlrpc/object');
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
var xmlRpcClient = getXmlRpc();
var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strDbName.data = branchobj.getCharPref("serverdbname");
var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
struids.data = branchobj.getIntPref('userid');
var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strpass.data = branchobj.getCharPref("password");
var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strmethod.data = 'history_message';
var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strobj.data = 'thunderbird.partner';
var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
var a = ['model', 'res_id','message'];
var b = [model, res_id,eml_string];
var arrofarr = dictcontact(a,b)
xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
}
}
function create_archivemail(){
var popup = document.getElementById("section").selectedItem; // a <menupopup> element
if (String(popup) != "null"){
@ -1398,11 +1461,12 @@ function archivemail(){
var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strpass.data = branchobj.getCharPref("password");
var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strmethod.data = 'mailcreate';
strmethod.data = 'process_email';
var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strobj.data = 'thunderbird.partner';
var a = ['name','object','date','email_from','email_cc','description','user_id'];
var b = [getSubject(),object,getReceivedDate(),getSenderEmail(),getCCList(),getMessageBody(),branchobj.getIntPref('userid')];
var eml_string = parse_eml()
var a = ['model', 'message'];
var b = [object, eml_string];
var arrofarr = dictcontact(a,b);
xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
}
@ -1532,7 +1596,7 @@ var listAttachHandler = {
}
//function to create a new attachment record
function createAttachment(popup,res_id){
function createAttachment(popup, res_id){
var branchobj = getPref();
setServerService('xmlrpc/object');
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
@ -1993,91 +2057,6 @@ function listSearchDocumentAttachment(){
//function to create a new attachment record
function createAttachmentEML()
{
if(document.getElementById('listSearchBox').selectedItem)
{
data_attach = "no"
if(getPref().getCharPref('attachmentlength')>0 && getAttachment() == "yes"){
createAttachment(document.getElementById('listSearchBox').selectedItem.label , document.getElementById('listSearchBox').selectedItem.value)
data_attach = "yes"
}
var fpath =""
if(navigator.userAgent.indexOf('Linux')!= -1){
fpath ="/tmp/"
}
else if(navigator.userAgent.indexOf('Win')!= -1){
fpath ="C:\\"
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
fpath ="/tmp/"
}
var encoded_string=""
name = fpath + getFileName() +".eml"
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( name );
if ( file.exists() == false ) {
return null;
} else {
var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
sis.init( is );
var output = sis.read( sis.available() );
encoded_string += encode64(output)+',';
encoded_string = encoded_string.substring(0,encoded_string.length-1);
a = ":"
if (data_attach == "yes")
{
alert("Mail Archived Successfully With Attachments");
window.close();
}
else
{
alert("Mail Archived Successfully" + a);
window.close();
}
}
attach_eml="yes";
var branchobj = getPref();
setServerService('xmlrpc/object');
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
var xmlRpcClient = getXmlRpc();
var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strDbName.data = branchobj.getCharPref("serverdbname");
var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
struids.data = branchobj.getIntPref('userid');
var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strpass.data = branchobj.getCharPref("password");
var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strmethod.data = 'create_attachment';
var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
strobj.data = 'thunderbird.partner';
var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
var popup = document.getElementById("section").selectedItem; // a <menupopup> element
object=popup.value;
resobj.data = object;
filename = getFileName()
if (getFileName().length > 60)
{
filename = filename.substring(0,60) ;
}
filename = filename + ".eml"
var a = ['name','datas','res_model','description','res_id','datas_fname'];
var b = [getFileName(),encoded_string,document.getElementById('listSearchBox').selectedItem.label,getSubject()+'\n'+getSenderEmail() ,document.getElementById('listSearchBox').selectedItem.value ,filename];
var arrofarr = dictcontact(a,b);
xmlRpcClient.asyncCall(listAttachHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
}
else
{
alert("you must select only one record");
}
}
//function to create a new attachment record
@ -2182,7 +2161,7 @@ function win_close()
function attachmentWidnowOpen(msg)
{
if(getPref().getCharPref('attachmentlength')>0)
/* if(getPref().getCharPref('attachmentlength')>0)
{
if (msg=="create"){
@ -2221,7 +2200,7 @@ function attachmentWidnowOpen(msg)
}
}
else
{
{ */
if (msg=="create")
{
var popup = document.getElementById("section").selectedItem; // a <menupopup> element
@ -2229,7 +2208,7 @@ function attachmentWidnowOpen(msg)
object=popup.value;
if (object=="" || object == undefined) { alert("select at least one document !")}
else{
archivemail()
create_archivemail()
}
}
else
@ -2241,11 +2220,11 @@ function attachmentWidnowOpen(msg)
{
if(document.getElementById('listSearchBox').selectedItem)
{
createAttachmentEML()
upload_archivemail()
}
else{
alert("you must select only one record");
}
}
}
//}
}