/************************************************************ * OpenERP, Open Source Management Solution * Copyright (C) 2004-2010 Tiny SPRL (). * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . ***************************************************************/ var xmlRpcClient; //Service name on server like /common,/db etc... var strServerService; //temporary variables var strobject; //Array var arrDbList = new Array(); var arrPartnerList = new Array(); var arrFinalList = new Array(); var contentType = new Array(); var uri = new Array(); var url = new Array(); var name = new Array(); var attach_eml ="no"; var popup_display = "yes" var rpc= { servers: {}, addserver: function(name,ip,port,path) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); this.servers[name]= { ip: ip, port: port, path: path, avaible: true, sock: Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(Components.interfaces.nsIXmlRpcClient)}; }, getany: function(rpcval,n) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); var t = ['PRUint8','PRUint16','PRInt16','PRInt32','PRBool','Char','CString','Float','Double','PRTime','InputStream','Array','Dictionary']; for (var i=0; i0) for (var i=0; i"+params[0]; msg+= "\n3. Your server may not be launched or connected to the network."; } func_out([false,'error '+status,msg]); } }; var p = []; for (var i=0; i 0) { setDBList("true"); var label = document.getElementById("database_option"); var vbox = document.createElement("vbox"); var hbox = document.createElement("hbox"); var label1 = document.createElement("label"); label1.setAttribute("width","80"); label1.setAttribute("value","Database:"); label1.setAttribute("id","label111"); var menu1 = document.createElement("menulist"); var menupopup1 = document.createElement("menupopup"); menu1.setAttribute("id","DBlist"); menu1.setAttribute("width","300"); var menuitem1 = document.createElement("menuitem"); database = arrDbList[0] menuitem1.setAttribute("label", arrDbList[0]); menuitem1.setAttribute("value", arrDbList[0]); menupopup1.appendChild(menuitem1); menu1.appendChild(menupopup1) hbox.appendChild(label1); hbox.appendChild(menu1); vbox.appendChild(hbox); label.appendChild(vbox); var d = document.getElementById("first"); var d_nested = document.getElementById("lbldb_list1"); var throwawayNode = d.removeChild(d_nested); var d_nested = document.getElementById("DBlist_text"); var throwawayNode = d.removeChild(d_nested); } else { setDBList("false"); } // Loop through the results, adding items to the list if (count) { const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var popup = document.getElementById("DBlist"); // a element var arrsec=new Array() for (var i=0;i element for (i=0;i element for (i=0;i element for (i=0;i0){ temp.AppendElement(test1); } return temp; } //function to search and fillup section selection box function createMenuItem(aLabel) { const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var item = document.createElementNS(XUL_NS, "menuitem"); // create a new XUL menuitem item.setAttribute("label", aLabel[1]); item.setAttribute("value", aLabel[0]); return item; } var listinstallmodulehandler = { onResult: function(client, context, result) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray); var count = arrIdList.Count(); if (count > 0) { setmodule_install('yes') } }, onFault: function (client, ctxt, fault) { setmodule_install('no') }, onError: function (client, ctxt, status, errorMsg) { setmodule_install('no') } } function module_install() { setmodule_install("no") 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 struid = xmlRpcClient.createType(xmlRpcClient.INT,{}); struid.data = branchobj.getIntPref('userid'); var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strpass.data = branchobj.getCharPref("password"); var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strmethod.data = 'name_search'; var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strobj.data = 'ir.model'; var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strvalue.data = 'thunderbird.partner'; xmlRpcClient.asyncCall(listinstallmodulehandler,null,'execute',[ strDbName,struid,strpass,strobj,strmethod, strvalue],6); } var listSearchContactHandler = { onResult: function(client, context, result) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); var sendername = getSenderEmail(); var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray); var count = arrIdList.Count(); for (i = 0; i < count; i++) { var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray); var strlSearchResult = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString); var strlSearchResultValue = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString); if(strlSearchResult=="partner_name"){ setPartnerName(strlSearchResultValue); var t = getPartnerName();} if(strlSearchResult=="contactname"){ setSenderName(strlSearchResultValue); var t = getSenderName();} if(strlSearchResult=="street"){ setStreet(strlSearchResultValue); var t = getStreet();} if(strlSearchResult=="street2"){ setStreet2(strlSearchResultValue); var t = getStreet2();} if(strlSearchResult=="zip"){ setZipCode(strlSearchResultValue); var t = getZipCode();} if(strlSearchResult=="city"){ setCity(strlSearchResultValue); var t = getCity();} if(strlSearchResult=="phone"){ setOfficenumber(strlSearchResultValue); var t = getOfficenumber();} if(strlSearchResult=="fax"){ setFax(strlSearchResultValue); var t = getFax();} if(strlSearchResult=="mobile"){ setMobilenumber(strlSearchResultValue); var t = getMobilenumber();} if(strlSearchResult=="email" && strlSearchResultValue!=''){ setSenderEmail(strlSearchResultValue); var t = getSenderEmail(); window.open("chrome://openerp_plugin/content/address.xul", "", "chrome, resizable=yes");} if(strlSearchResult=="email" && strlSearchResultValue==''){ alert("Contact is not available."); } if(strlSearchResult=="res_id"){ setResourceId(strlSearchResultValue); var t = getResourceId();} } }, onFault: function (client, ctxt, fault) { }, onError: function (client, ctxt, status, errorMsg) { } } var listSearchContactdetailHandler = { onResult: function(client, context, result) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); // var sendername = getSenderEmail(); var sendername = document.getElementById("txtemail").value var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray); var count = arrIdList.Count(); for (i = 0; i < count; i++) { var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray); var strlSearchResult = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString); var strlSearchResultValue = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString); if(strlSearchResult=="email" && strlSearchResultValue=='') { alert("Contact is not Available.") document.getElementById("txtemail").value = sendername; } if(strlSearchResult=="partner_name"){ document.getElementById("txtselectpartner").value =strlSearchResultValue;} if(strlSearchResult=="contactname"){ document.getElementById("txtcontactname").value =strlSearchResultValue;} if(strlSearchResult=="street"){ document.getElementById("txtstreet").value =strlSearchResultValue;} if(strlSearchResult=="street2"){ document.getElementById("txtstreet2").value =strlSearchResultValue;} if(strlSearchResult=="zip"){ document.getElementById("txtzip").value =strlSearchResultValue;} if(strlSearchResult=="city"){ document.getElementById("txtcity").value =strlSearchResultValue;} if(strlSearchResult=="phone"){ document.getElementById("txtoffice").value =strlSearchResultValue;} if(strlSearchResult=="fax"){ document.getElementById("txtfax").value =strlSearchResultValue;} if(strlSearchResult=="mobile"){ document.getElementById("txtmobile").value =strlSearchResultValue;} if(strlSearchResult=="email"&& strlSearchResultValue!=''){ alert("Contact is Available.") document.getElementById("txtemail").value =strlSearchResultValue;} if(strlSearchResult=="res_id"){ setResourceId(strlSearchResultValue); var t = getResourceId();} } }, onFault: function (client, ctxt, fault) { }, onError: function (client, ctxt, status, errorMsg) { } } function searchContactdetail() { var branchobj = getPref(); setServerService('xmlrpc/object'); netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); arrFinalList = []; var xmlRpcClient = getXmlRpc(); var cmbSearchList = document.getElementById('listSearchBox'); var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strDbName.data = branchobj.getCharPref("serverdbname"); var struid = xmlRpcClient.createType(xmlRpcClient.INT,{}); struid.data = branchobj.getIntPref('userid'); var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strpass.data = branchobj.getCharPref("password"); var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strobj.data = 'thunderbird.partner'; var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strmethod.data = 'search_contact'; var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strname.data = document.getElementById("txtemail").value; xmlRpcClient.asyncCall(listSearchContactdetailHandler,cmbSearchList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strname ],6); } //xmlrpc request handler for getting the search results for the particular selected check box object var listSearchCheckboxHandler = { onResult: function(client, context, result) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); var arrMethodList = result.QueryInterface(Components.interfaces.nsISupportsArray); // Set the number of results var count = arrMethodList.Count(); var close=0; if(count == 0 && popup_display != "no"){ alert("No Records Found"); return false; } else if(count ==2 ) { if (arrMethodList.QueryElementAt(0, Components.interfaces.nsISupportsCString)=="error") { close =1; } } popup_display = "yes" // Loop through the results, adding items to the list var arr1 = new Array(); var arr2 = new Array(); var flag1 = 0; var flag2 = 0; var er =""; var er_val =new Array(); for (i = 0; i < count; i++) { if(i%2==0){ if (arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString)=="error") { er = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString); er_val[0] =arrMethodList.QueryElementAt(i+1, Components.interfaces.nsISupportsArray); i +=1; continue; } arr1[flag1] = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString); flag1++; } else{ arr2[flag2] = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsArray); flag2++; } } if (er) { var arrSearchList1 = new Array(); for(j=0;j=1) { alert("Mail is Successfully Pushed."); } window.close(); }, onFault: function (client, ctxt, fault) { }, onError: function (client, ctxt, status, errorMsg) { } } //function to archive the mail content through xmlrpc request function upload_archivemail() { list_documents = document.getElementById('listSearchBox') var context = [] var cnt = list_documents.selectedCount var ref_ids = ""; 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,{}); for(i=0;i element if (String(popup) != "null"){ object=popup.value; if (object == undefined) { alert("select At Least one Document !")} else{ 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 = 'process_email'; var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strobj.data = 'thunderbird.partner'; var eml_string = parse_eml() var a = ['model', 'message']; var b = [object, eml_string]; var arrofarr = dictcontact(a,b); xmlRpcClient.asyncCall(listArchiveDocumentHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6); //alert("Document Created Successfully For " +" " + ":" + " "+ popup.label); } //window.close(); } else { alert(" select At Least one Document !") } } //xmlrpc request handler for creating a new contact var listCreateContactHandler = { onResult: function(client, context, result) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32); setContactId(createId); alert("Contact Created Successfully."); window.close(); }, onFault: function (client, ctxt, fault) { }, onError: function (client, ctxt, status, errorMsg) { } } var listUpdateContactHandler = { onResult: function(client, context, result) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); alert("Contact Update Successfully."); window.close(); var partnerId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32); setResourceId(partnerId); window.close(); }, onFault: function (client, ctxt, fault) { }, onError: function (client, ctxt, status, errorMsg) { } } //function to create a new contact function createContact(){ 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_contact'; var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strobj.data = 'thunderbird.partner'; var a = ['partner_id','name','street','street2','zip','city','country_id','state_id','phone','fax','mobile','email']; var b = [getPartnerId(),document.getElementById("txtname").value,document.getElementById("txtstreet").value,document.getElementById("txtstreet2").value,document.getElementById("txtzip").value, document.getElementById("txtcity").value,document.getElementById("country").value,document.getElementById("state").value,document.getElementById("txtoffice").value,document.getElementById("txtfax").value,document.getElementById("txtmobile").value,document.getElementById("txtemail").value]; var arrofarr = dictcontact(a,b); xmlRpcClient.asyncCall(listCreateContactHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6); } function UpdateContact(){ 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 = 'update_contact'; var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{}); strobj.data = 'thunderbird.partner'; var a = ['res_id','partner_id','name','street','street2','zip','city','country_id','state_id','phone','fax','mobile','email']; var b = [getResourceId(),document.getElementById("txtselectpartner").value,document.getElementById("txtcontactname").value,document.getElementById("txtstreet").value,document.getElementById("txtstreet2").value,document.getElementById("txtzip").value, document.getElementById("txtcity").value,document.getElementById("country").value,document.getElementById("state").value,document.getElementById("txtoffice").value,document.getElementById("txtfax").value,document.getElementById("txtmobile").value,document.getElementById("txtemail").value]; var arrofarr = dictcontact(a,b); xmlRpcClient.asyncCall(listUpdateContactHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6); } //xmlrpc request handler for creating a attachment record var listAttachHandler = { onResult: function(client, context, result) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32); }, onFault: function (client, ctxt, fault) { }, onError: function (client, ctxt, status, errorMsg) { } } //function to encode the string into base64 var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(""); function base64_encode (s) { // the result/encrypted string, the padding string, and the pad count var r = ""; var p = ""; var c = s.length % 3; // add a right zero pad to make this string a multiple of 3 characters if (c > 0) { for (; c < 3; c++) { p += '='; s += "\0"; } } // increment over the length of the string, three characters at a time for (c = 0; c < s.length; c += 3) { // we add newlines after every 76 output characters, according to the MIME specs if (c > 0 && (c / 3 * 4) % 76 == 0) { r += "\r\n"; } // these three 8-bit (ASCII) characters become one 24-bit number var n = (s.charCodeAt(c) << 16) + (s.charCodeAt(c+1) << 8) + s.charCodeAt(c+2); // this 24-bit number gets separated into four 6-bit numbers n = [(n >>> 18) & 63, (n >>> 12) & 63, (n >>> 6) & 63, n & 63]; // those four 6-bit numbers are used as indices into the base64 character list r += base64chars[n[0]] + base64chars[n[1]] + base64chars[n[2]] + base64chars[n[3]]; // add the actual padding string, after removing the zero pad } return r.substring(0, r.length - p.length) + p; } //function to encode the string into base64 var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv" + "wxyz0123456789+/" + "="+"-_.!~*'()"; function encode64(input) { var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < input.length); return output; } //function to read the contents of the attachment files from the temp folder function createInstance(name,test){ var encoded_string = ''; var file_name = '' for(i=0;i element object=popup.value; resobj.data = object; var a = ['object']; var b = [getPref().getCharPref("object")]; var arrofarr = dictcontact(a,b); xmlRpcClient.asyncCall(listsearchAttachmentHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6); } //function to create a new attachment record function win_close() { 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/" } try { name = fpath + getFileName() +".eml" var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath( name ); file.remove(true); window.close(); } catch(err) { window.close(); } } function attachmentWidnowOpen(msg) { if (msg=="create") { var popup = document.getElementById("section").selectedItem; // a element if (String(popup) != "null"){ object=popup.value; if (object=="" || object == undefined) { alert("select at least one document !")} else{ create_archivemail() } } else { alert("select at least one Document !") } } else if (msg=="upload") { if(document.getElementById('listSearchBox').selectedItem) { upload_archivemail() } else{ alert("Please select at least one record"); } } }