[IMP]: Change also in source file
[odoo/odoo.git] / addons / thunderbird / plugin / openerp_plugin / chrome / openerp_plugin / content / overlay.js
1 //global array creation and declaration\r
2 var contentType = new Array();\r
3 var uri = new Array();\r
4 var url = new Array();\r
5 var name = new Array();\r
6 var test = new Array();\r
7 \r
8 var MBstrBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].\r
9             getService(Components.interfaces.nsIStringBundleService);\r
10 var mboximportbundle = MBstrBundleService.createBundle("chrome://mboximport/locale/mboximport.properties"); \r
11 //function to get the required details of the selected email\r
12 \r
13 function check()\r
14 {\r
15     setTimeout("createConnection()",5000)\r
16     if (getconnect_server() == "false")\r
17     {\r
18         alert("Please Login To The Database First !")\r
19         return false;\r
20     }\r
21     setTimeout("module_install()", 10000)\r
22     if (getmodule_install() == "no")\r
23     {\r
24         alert("Please install the thunderbird module on your '" + getDbName() +"' database and try again !");\r
25         return false\r
26     }\r
27     if(GetNumSelectedMessages() < 1 || GetNumSelectedMessages() > 1){\r
28         alert("You must select only one mail to archive");\r
29         return false\r
30     }\r
31     return true\r
32 \r
33 }\r
34 \r
35 function searchmail()\r
36 {   \r
37     if (check() == false){\r
38         return true\r
39     }\r
40     var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);\r
41     var username = Components.classes["@mozilla.org/process/environment;1"].\r
42             getService(Components.interfaces.nsIEnvironment).get('USERNAME')\r
43     var version_obj = prefService.getBranch("extensions.");\r
44     version_obj.QueryInterface(Components.interfaces.nsIPrefBranch2);\r
45     version = version_obj.getCharPref("lastAppVersion");\r
46     version = parseInt(version[0])\r
47     \r
48     file = getPredefinedFolder(2);\r
49     \r
50     if (version > 2)\r
51     {\r
52         var emlsArray = gFolderDisplay.selectedMessages;\r
53     }\r
54     else\r
55     {\r
56         var emlsArray = GetSelectedMessages();\r
57     }\r
58 \r
59     IETtotal = emlsArray.length;\r
60     IETexported = 0;\r
61     var msguri = emlsArray[0];\r
62 \r
63     \r
64     //gives the selected email uri\r
65     var messageUri= gDBView.URIForFirstSelectedMessage;\r
66 \r
67     var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
68 \r
69     //gives the selected email object\r
70     var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
71 \r
72 \r
73     if (version > 2)\r
74     {\r
75         m_uri = message.folder.getUriForMsg(message);\r
76         saveMsgAsEML(m_uri,file,false,emlsArray,null);\r
77     }\r
78     else\r
79     {\r
80         saveMsgAsEML(msguri,file,false,emlsArray,null);\r
81     }\r
82 \r
83     //gives the received email date\r
84     var stdate = new Date(message.date / 1000);\r
85 \r
86     //functionality to split the author name and email\r
87     if(message.author.charAt(0) == '"'){\r
88         sendername = message.author.split('"')[1].split('"')[0];\r
89     }\r
90     else if(message.author.indexOf('<')!=-1){\r
91         sendername = message.author.split('<')[0];\r
92     }\r
93     else{\r
94         sendername = message.author;\r
95     }\r
96     if(message.author.indexOf('<')!=-1){\r
97         senderemail = message.author.split('<')[1].split('>')[0];\r
98     }\r
99     else{\r
100         senderemail = message.author\r
101     }\r
102 \r
103     //gives the receiver email address\r
104     receiveremail = message.mime2DecodedRecipients;\r
105 \r
106     //parsing the received date in the particular format\r
107     receivedDate = stdate.getFullYear()+'/'+(stdate.getMonth()+1)+'/'+stdate.getDate();\r
108 \r
109     //gives the selected email subject\r
110     subject = message.subject;\r
111 \r
112     //gives the selected email cclist\r
113     cclist = message.ccList;\r
114 \r
115     //gives the selected email message body in text format\r
116     if (version > 2)\r
117     {\r
118         var listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"].createInstance(Components.interfaces.nsISyncStreamListener);  \r
119         var uri = message.folder.getUriForMsg(message);\r
120         messenger.messageServiceFromURI(uri)  \r
121             .streamMessage(uri, listener, null, null, false, "");    \r
122         var folder = message.folder;  \r
123         messagebody = folder.getMsgTextFromStream(listener.inputStream,message.Charset,65536,32768,false,true,{})\r
124     }\r
125     else\r
126     {\r
127         messagebody = getMessageBrowser().docShell.contentViewer.DOMDocument.body.textContent;\r
128     }\r
129     //gives the selected email message body in html format\r
130     msghtmlbody = ""// getMessageBrowser().docShell.contentViewer.DOMDocument.body.innerHTML;\r
131 \r
132     //set the initial information for the selected email\r
133     setSenderEmail(senderemail);\r
134     setSenderName(sendername);\r
135     setReceiverEmail(receiveremail);\r
136     setSubject(subject);\r
137     setReceivedDate(receivedDate);\r
138     setCCList(cclist);\r
139     setMessageBody(messagebody);\r
140     getPref().setCharPref('displayName','');\r
141     getPref().setCharPref('attachmentdata','');\r
142     name = [];\r
143     test = [];\r
144     getPref().setCharPref('attachmentlength',currentAttachments.length);\r
145     //retrieving the information for the selected email's attachment\r
146     if(currentAttachments.length > 0){\r
147         for(i=0;i<currentAttachments.length;i++){\r
148             contentType[i] = currentAttachments[i].contentType;\r
149             uri = currentAttachments[i].uri;\r
150             url[i] = currentAttachments[i].url;\r
151             name[i] = currentAttachments[i].displayName;\r
152             var obj = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
153             if(navigator.userAgent.indexOf('Linux')!= -1){\r
154                 obj.initWithPath("/tmp/");\r
155             }\r
156             else if(navigator.userAgent.indexOf('Win')!= -1){\r
157                 obj.initWithPath("C:\\Users\\"+ username +"\\");\r
158             }\r
159             else if(navigator.userAgent.indexOf('Mac OS X')!= -1){ \r
160                 obj.initWithPath("/tmp/");\r
161             } \r
162             else{\r
163                 alert("Not Compatible for this Operating System");\r
164                 false();\r
165             }\r
166             //saving the attachment files in system's temp folder\r
167             test[i] = messenger.saveAttachmentToFolder(contentType[i],url[i],name[i],uri,obj);\r
168         }\r
169         //function to read the attachment file contents\r
170         att =getAttachValue()\r
171         window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
172         createInstance(name,test)\r
173 \r
174     }\r
175     else\r
176     {\r
177         window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
178     }\r
179 }\r
180 \r
181 \r
182 var openPartnerHandler = {\r
183     onResult: function(client, context, result) {\r
184         netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');\r
185      //  var sendername = getSenderEmail();\r
186         var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);\r
187         var count = arrIdList.Count();\r
188         for (var i = 0; i < count; i++) {\r
189             var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);\r
190             var strlSearchResult = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString);\r
191             var strlSearchResultValue = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);\r
192             if(strlSearchResult=="email" && strlSearchResultValue=='')\r
193             {\r
194                 alert("Partner is not Available.");\r
195                 return;\r
196             } \r
197             if(strlSearchResult=="partner_id"){\r
198                 partner_id = strlSearchResultValue;\r
199                 weburl = getWebServerURL();\r
200 \r
201                 if (parseInt(partner_id) > 0){\r
202                     //Encode the url and form an url to have menu in webclient\r
203                     var encoded = encodeURIComponent("/openerp/form/view?model=res.partner&id="+partner_id)\r
204                     var t = weburl + "?next=" + encoded\r
205                     var messenger = Components.classes["@mozilla.org/messenger;1"].createInstance();\r
206                     messenger = messenger.QueryInterface(Components.interfaces.nsIMessenger);\r
207                     messenger.launchExternalURL(t);\r
208                 }\r
209                 else{\r
210                     alert("Partner is not Available.");\r
211                     return;\r
212                 }\r
213             }\r
214         }\r
215     },\r
216     onFault: function (client, ctxt, fault) {\r
217 \r
218     },\r
219 \r
220     onError: function (client, ctxt, status, errorMsg) {\r
221 \r
222     }\r
223 \r
224 }\r
225 \r
226 function searchPartner(email)\r
227 {\r
228     var branchobj = getPref();\r
229     setServerService('xmlrpc/object');\r
230     netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');\r
231     arrFinalList = [];\r
232     var xmlRpcClient = getXmlRpc();\r
233     var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
234     strDbName.data = branchobj.getCharPref("serverdbname");\r
235     var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});\r
236     struid.data = branchobj.getIntPref('userid');\r
237     var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
238     strpass.data = branchobj.getCharPref("password");\r
239     var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
240     strobj.data = 'thunderbird.partner';\r
241     var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
242     strmethod.data = 'search_contact';\r
243     var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
244     strname.data = email;\r
245     xmlRpcClient.asyncCall(openPartnerHandler,null,'execute',[ strDbName,struid,strpass,strobj,strmethod,strname ],6);\r
246 }\r
247 \r
248 \r
249 function open_partner()\r
250 {\r
251     if (check() == false){\r
252         return true\r
253     }\r
254     var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);\r
255     var version_obj = prefService.getBranch("extensions.");\r
256     version_obj.QueryInterface(Components.interfaces.nsIPrefBranch2);\r
257     version = version_obj.getCharPref("lastAppVersion");\r
258     version = parseInt(version[0])\r
259     \r
260     file = getPredefinedFolder(2);\r
261     \r
262     if (version > 2)\r
263     {\r
264         var emlsArray = gFolderDisplay.selectedMessages;\r
265     }\r
266     else\r
267     {\r
268         var emlsArray = GetSelectedMessages();\r
269     }\r
270 \r
271     IETtotal = emlsArray.length;\r
272     IETexported = 0;\r
273     var msguri = emlsArray[0];\r
274 \r
275     \r
276     //gives the selected email uri\r
277     var messageUri= gDBView.URIForFirstSelectedMessage;\r
278     \r
279 \r
280     var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
281 \r
282     //gives the selected email object \r
283     var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
284 \r
285     //functionality to split the author name and email\r
286     if(message.author.charAt(0) == '"'){\r
287         sendername = message.author.split('"')[1].split('"')[0];\r
288     }\r
289     else if(message.author.indexOf('<')!=-1){\r
290         sendername = message.author.split('<')[0];\r
291     }\r
292     else{\r
293         sendername = message.author;\r
294     }\r
295     if(message.author.indexOf('<')!=-1){\r
296         senderemail = message.author.split('<')[1].split('>')[0];\r
297     }\r
298     else{\r
299         senderemail = message.author\r
300     }\r
301     searchPartner(senderemail);\r
302 }\r
303 \r
304 \r
305 var listDocumentHandler = {\r
306     onResult: function(client, context, result) {\r
307         netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');\r
308         var res = result.QueryInterface(Components.interfaces.nsISupportsArray);\r
309         res_id = res.QueryElementAt(1, Components.interfaces.nsISupportsPRInt32);\r
310         model = res.QueryElementAt(0, Components.interfaces.nsISupportsCString); \r
311         weburl = getWebServerURL();\r
312         if(res_id==0)\r
313         {\r
314             alert("Document is not available.");\r
315             return;\r
316         }\r
317         else\r
318         {\r
319     \r
320             var encoded = encodeURIComponent("/openerp/form/view?model=" + model +"&id=" + res_id)\r
321             var t = weburl + "?next=" + encoded\r
322             var messenger = Components.classes["@mozilla.org/messenger;1"].createInstance();\r
323             messenger = messenger.QueryInterface(Components.interfaces.nsIMessenger);\r
324             messenger.launchExternalURL(t);\r
325         }\r
326 \r
327     },\r
328     onFault: function (client, ctxt, fault) {\r
329 \r
330     },\r
331 \r
332     onError: function (client, ctxt, status, errorMsg) {\r
333 \r
334     }\r
335\r
336 \r
337 //function to archive the mail content through xmlrpc request\r
338 function parse_eml(){\r
339     var fpath =""\r
340     var username = Components.classes["@mozilla.org/process/environment;1"].\r
341         getService(Components.interfaces.nsIEnvironment).get('USERNAME')\r
342     if(navigator.userAgent.indexOf('Linux')!= -1){\r
343         fpath ="/tmp/"\r
344     }\r
345     else if(navigator.userAgent.indexOf('Win')!= -1){\r
346         fpath ="C:\\Users\\"+ username +"\\"\r
347     }\r
348     else if(navigator.userAgent.indexOf('Mac OS X')!= -1){ \r
349         fpath ="/tmp/"\r
350     } \r
351     name = fpath + getPref().getCharPref('fname') +".eml"\r
352     var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
353     file.initWithPath( name );\r
354     if ( file.exists() == false ) {\r
355         return null;\r
356     } else {\r
357         var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );\r
358         is.init( file,0x01, 00004, null);\r
359         var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );\r
360         sis.init( is );\r
361         var output = sis.read( sis.available() );\r
362         return output\r
363     }\r
364     \r
365 }\r
366 function open_document()\r
367 {\r
368     if (check() == false){\r
369         return true\r
370     }\r
371     var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);\r
372     var version_obj = prefService.getBranch("extensions.");\r
373     version_obj.QueryInterface(Components.interfaces.nsIPrefBranch2);\r
374     version = version_obj.getCharPref("lastAppVersion");\r
375     version = parseInt(version[0])\r
376     file = getPredefinedFolder(2);\r
377     if (version > 2)\r
378     {\r
379         var emlsArray = gFolderDisplay.selectedMessages;\r
380     }\r
381     else\r
382     {\r
383         var emlsArray = GetSelectedMessages();\r
384     }\r
385     IETtotal = emlsArray.length;\r
386     IETexported = 0;\r
387     var msguri = emlsArray[0];\r
388     //gives the selected email uri\r
389     var messageUri= gDBView.URIForFirstSelectedMessage;\r
390     var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
391     //gives the selected email object\r
392     var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
393     if (version > 2)\r
394     {\r
395         m_uri = message.folder.getUriForMsg(message);\r
396         saveMsgAsEML(m_uri,file,false,emlsArray,null);\r
397     }\r
398     else\r
399     {\r
400         saveMsgAsEML(msguri,file,false,emlsArray,null);\r
401     }\r
402     //gives the received email date\r
403     var stdate = new Date(message.date / 1000);\r
404     var branchobj = getPref();\r
405     setServerService('xmlrpc/object');\r
406     netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');\r
407     var xmlRpcClient = getXmlRpc();\r
408     var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
409     strDbName.data = branchobj.getCharPref("serverdbname");\r
410     var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});\r
411     struids.data = branchobj.getIntPref('userid');\r
412     var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
413     strpass.data = branchobj.getCharPref("password");\r
414     var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
415     strmethod.data = 'search_message';\r
416     var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});\r
417     strobj.data = 'thunderbird.partner';\r
418     var eml_string = parse_eml()\r
419     var a = ['message'];\r
420     var b = [eml_string];\r
421     var arrofarr = dictcontact(a,b); \r
422     xmlRpcClient.asyncCall(listDocumentHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);\r
423 }\r
424 \r
425 function open_contact()\r
426 {   \r
427     if (check() == false){\r
428         return true\r
429     }\r
430     \r
431     var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);\r
432     var version_obj = prefService.getBranch("extensions.");\r
433     version_obj.QueryInterface(Components.interfaces.nsIPrefBranch2);\r
434     version = version_obj.getCharPref("lastAppVersion");\r
435     version = parseInt(version[0])\r
436     \r
437     file = getPredefinedFolder(2);\r
438     \r
439     if (version > 2)\r
440     {\r
441         var emlsArray = gFolderDisplay.selectedMessages;\r
442     }\r
443     else\r
444     {\r
445         var emlsArray = GetSelectedMessages();\r
446     }\r
447 \r
448     IETtotal = emlsArray.length;\r
449     IETexported = 0;\r
450     var msguri = emlsArray[0];\r
451 \r
452     \r
453     //gives the selected email uri\r
454     var messageUri= gDBView.URIForFirstSelectedMessage;\r
455 \r
456     var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
457 \r
458     //gives the selected email object \r
459     var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
460 \r
461     //functionality to split the author name and email\r
462     if(message.author.charAt(0) == '"'){\r
463         sendername = message.author.split('"')[1].split('"')[0];\r
464     }\r
465     else if(message.author.indexOf('<')!=-1){\r
466         sendername = message.author.split('<')[0];\r
467     }\r
468     else{\r
469         sendername = message.author;\r
470     }\r
471     if(message.author.indexOf('<')!=-1){\r
472         senderemail = message.author.split('<')[1].split('>')[0];\r
473     }\r
474     else{\r
475         senderemail = message.author\r
476     }\r
477 \r
478     //set the initial information for the selected email\r
479     setSenderEmail(senderemail);\r
480     setSenderName(sendername);\r
481     setPartnerName("");\r
482     setStreet("");\r
483     setStreet2("");\r
484     setZipCode("");\r
485     setCity("");\r
486     setOfficenumber("");\r
487     setFax("");\r
488     setMobilenumber("");\r
489     searchContact();\r
490 }\r
491 \r
492 \r
493 //function to open the configuration window\r
494 var Config = {\r
495   onLoad: function() {\r
496     // initialization code\r
497     this.initialized = true;\r
498   },\r
499 \r
500   onMenuItemCommand: function() {\r
501     window.open("chrome://openerp_plugin/content/config.xul", "", "chrome");\r
502   }\r
503 };\r
504 window.addEventListener("load", function(e) { Config.onLoad(e); }, false);\r
505 \r
506 //function to open the plugin window for searching the records for a particular object\r
507 var Plugin = {\r
508     onLoad: function() {\r
509     this.initialized = true;\r
510     },\r
511 \r
512     onMenuItemCommand: function() {\r
513         window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
514     }\r
515 };\r
516 window.addEventListener("load", function(e) { Plugin.onLoad(e); }, false);\r
517 \r
518 //function to open the window for creating a new partner contact\r
519 var Create = {\r
520     onLoad: function(){\r
521     this.initialized=true;\r
522     },\r
523 \r
524     onMenuItemCommand: function(){\r
525         window.open("chrome://openerp_plugin/content/create.xul", "", "chrome");\r
526     }\r
527 };\r
528 window.addEventListener("load", function(e) { Create.onLoad(e); }, false);\r
529 \r
530 var Address = {\r
531     onLoad: function(){\r
532     this.initialized=true;\r
533     },\r
534 \r
535     onMenuItemCommand: function(){\r
536        open_contact();\r
537        \r
538     }\r
539 };\r
540 \r
541 \r
542 //function to open the window for selecting the partner for a new contact creation\r
543 var Select = {\r
544     onLoad: function(){\r
545     this.initialized=true;\r
546     },\r
547 \r
548     onMenuItemCommand: function(){\r
549         // document.getElementById("txtselectpartner").value="";\r
550          window.open("chrome://openerp_plugin/content/selectpartner.xul", "", "chrome");\r
551     }\r
552 };\r
553 \r
554 \r
555 var CreatePartner = {\r
556     onLoad: function(){\r
557     this.initialized=true;\r
558     },\r
559 \r
560     onMenuItemCommand: function(){\r
561         window.open("chrome://openerp_plugin/content/createpartner.xul", "", "chrome");\r
562     }\r
563 };\r
564 window.addEventListener("load", function(e) { CreatePartner.onLoad(e); }, false);\r
565 \r