[IMP]: solve problem for mail getway
authorksa (Open ERP) <ksa@tinyerp.co.in>
Wed, 11 Aug 2010 14:07:26 +0000 (19:37 +0530)
committerksa (Open ERP) <ksa@tinyerp.co.in>
Wed, 11 Aug 2010 14:07:26 +0000 (19:37 +0530)
bzr revid: ksa@tinyerp.co.in-20100811140726-ky86i3z0x9s4io80

12 files changed:
addons/mail_gateway/mail_gateway.py
addons/thunderbird/__openerp__.py
addons/thunderbird/partner/partner.py
addons/thunderbird/plugin/chrome/openerp_plugin.jar
addons/thunderbird/plugin/chrome/openerp_plugin/content/address.xul
addons/thunderbird/plugin/chrome/openerp_plugin/content/plugin.xul
addons/thunderbird/plugin/chrome/openerp_plugin/content/tiny_xmlrpc.js
addons/thunderbird/plugin/openerp_plugin.xpi
addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin.jar
addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin/content/address.xul
addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin/content/plugin.xul
addons/thunderbird/plugin/openerp_plugin/chrome/openerp_plugin/content/tiny_xmlrpc.js

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