diff options
Diffstat (limited to 'addons/thunderbird/plugin/chrome/openerp_plugin/content/exportTools.js')
| -rw-r--r-- | addons/thunderbird/plugin/chrome/openerp_plugin/content/exportTools.js | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/addons/thunderbird/plugin/chrome/openerp_plugin/content/exportTools.js b/addons/thunderbird/plugin/chrome/openerp_plugin/content/exportTools.js deleted file mode 100644 index 7da3701b1f3..00000000000 --- a/addons/thunderbird/plugin/chrome/openerp_plugin/content/exportTools.js +++ /dev/null @@ -1,248 +0,0 @@ - -var MBstrBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]. - getService(Components.interfaces.nsIStringBundleService); -var mboximportbundle = MBstrBundleService.createBundle("chrome://openerp_plugin/locale/mboximport.properties"); - - -function saveMsgAsEML(msguri,file,append,uriArray,hdrArray,fileArray) { - - var myEMLlistner = { - - scriptStream : null, - emailtext : "", - - QueryInterface : function(iid) { - if (iid.equals(Components.interfaces.nsIStreamListener) || - iid.equals(Components.interfaces.nsIMsgHeaderSink) || - iid.equals(Components.interfaces.nsISupports)) - return this; - - throw Components.results.NS_NOINTERFACE; - return 0; - }, - - onStartRequest : function (aRequest, aContext) { - this.scriptStream = Components.classes['@mozilla.org/binaryinputstream;1'].createInstance(Components.interfaces.nsIBinaryInputStream); - }, - - onStopRequest : function (aRequest, aContext, aStatusCode) { - this.scriptStream = null; - - if (append) { - if (this.emailtext != "") { - var data = this.emailtext + "\n"; - // Some Imap servers don't add to the message the "From" prologue - if (data && ! data.match(/^From/)) { - var now = new Date; - var prologue = "From - " + now.toString() + "\n"; - data = prologue+data; - } - data = IETescapeBeginningFrom(data); - } - var fileClone = file.clone(); - IETwriteDataOnDisk(fileClone,data,true,this.sub,null); - } - else { - if (! hdrArray) - var sub = getSubjectForHdr(hdr); - else { - var parts = hdrArray[IETexported].split("§][§^^§"); - var sub = parts[4]; - } - - var data = this.emailtext.replace(/^From.+\r?\n]/, ""); - data = IETescapeBeginningFrom(data); - var clone = file.clone(); - // The name is taken from the subject "corrected" - clone.append(sub+".eml"); - clone.createUnique(0,0644); - var time = (hdr.dateInSeconds)*1000; - IETwriteDataOnDisk(clone,data,false,null,time); - } - IETexported = IETexported + 1; - IETwritestatus(mboximportbundle.GetStringFromName("exported")+" "+IETexported+" "+mboximportbundle.GetStringFromName("msgs")+" "+IETtotal); - - if (IETexported < IETtotal) { - if (fileArray) { - var nextUri = uriArray[IETexported]; - var nextFile = fileArray[IETexported]; - } - else if (! hdrArray) { - var nextUri = uriArray[IETexported]; - var nextFile = file; - } - else { - parts = hdrArray[IETexported].split("§][§^^§"); - var nextUri = parts[5]; - var nextFile = file; - } - saveMsgAsEML(nextUri,nextFile,append,uriArray,hdrArray,fileArray); - } - else { - IETexported = 0; - IETtotal = 0; - } - }, - - onDataAvailable : function (aRequest, aContext, aInputStream, aOffset, aCount) { - this.scriptStream.setInputStream(aInputStream); - var chunk = this.scriptStream.readBytes(aCount); - this.emailtext += chunk; - } - }; - var mms = messenger.messageServiceFromURI(msguri).QueryInterface(Components.interfaces.nsIMsgMessageService); - var hdr = mms.messageURIToMsgHdr(msguri); - mms.streamMessage(msguri, myEMLlistner, msgWindow, null, false, null); -} - - -function nametoascii(str) { - if (! gPrefBranch.getBoolPref("mboximport.export.filenames_toascii")) { - str = str.replace(/[\x00-\x19]/g,"_"); - return str.replace(/[\/\\:,<>*\?\"\|]/g,"_"); - } - if (str) - str = str.replace(/[^a-zA-Z0-9]/g,"_"); - else - str = "Undefinied_or_empty"; - return str; -} - - -function IETwriteDataOnDisk(file,data,append,name,time) { - var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"] - .createInstance(Components.interfaces.nsIFileOutputStream); - if (append) { - file.append(name); - foStream.init(file, 0x02 | 0x08 | 0x10, 0664, 0); // write, create, append - } - else - foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate - if (data) - foStream.write(data,data.length); - foStream.close(); - var prefs = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefBranch); - if (time && prefs.getBoolPref("mboximport.export.set_filetime")) - file.lastModifiedTime = time; -} - - - -function IETescapeBeginningFrom(data) { - // Workaround to fix the "From " in beginning line problem in body messages - // See https://bugzilla.mozilla.org/show_bug.cgi?id=119441 and - // https://bugzilla.mozilla.org/show_bug.cgi?id=194382 - // TB2 has uncorrect beahviour with html messages - // This is not very fine, but I didnt' find anything better... - var datacorrected = data.replace(/\nFrom /g, "\n From "); - return datacorrected; -} - - -function getPredefinedFolder(type) { - var prefs = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefBranch); - // type 0 = folder - // type 1 = all messages - // type 2 = selected messages - - var use_dir = "mboximport.exportMSG.use_dir"; - - var dir_path=""; - if(navigator.userAgent.indexOf('Linux')!= -1){ - dir_path ="/tmp" - } - else if(navigator.userAgent.indexOf('Win')!= -1){ - dir_path ="C:\\" - } - else if(navigator.userAgent.indexOf('Mac OS X')!= -1){ - dir_path ="/tmp" - } - try { - var localFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); - localFile.initWithPath(dir_path); - return localFile; - - } - catch(e) { - return null; - } -} - -function getSubjectForHdr(hdr) { - var emlNameType = gPrefBranch.getIntPref("mboximport.exportEML.filename_format"); - var mustcorrectname = gPrefBranch.getBoolPref("mboximport.export.filenames_toascii"); - var subMaxLen = gPrefBranch.getIntPref("mboximport.subject.max_length")-1; - if (hdr.mime2DecodedSubject) - - var subj = hdr.mime2DecodedSubject.substring(0, subMaxLen); - else - var subj =IETnosub; - subj = nametoascii(subj); - var dateInSec = hdr.dateInSeconds; - var msgDate8601string = dateInSecondsTo8601(dateInSec); - var key = hdr.messageKey; - if (emlNameType == 2) { - var pattern = gPrefBranch.getCharPref("mboximport.export.filename_pattern"); - pattern = pattern.replace("%s",subj); - pattern = pattern.replace("%k",key); - pattern = pattern.replace("%d", msgDate8601string); - pattern = pattern.replace(/-%e/g, ""); - pattern = pattern.replace(/[\x00-\x19]/g,"_"); - var fname = pattern; - } - else { - - var fname = msgDate8601string+"-"+subj+"-"+hdr.messageKey; - } - setFileName(fname) - fname = fname.replace(/[\x00-\x19]/g,"_"); - if (mustcorrectname) - fname = nametoascii(fname); - else - fname = fname.replace(/[\/\\:,<>*\?\"\|]/g,"_"); - return fname; -} - -function dateInSecondsTo8601(secs) { - var addTime = gPrefBranch.getBoolPref("mboximport.export.filenames_addtime"); - var msgDate = new Date(secs*1000); - var msgDate8601 = msgDate.getFullYear(); - if (msgDate.getMonth() < 9) - var month = "0"+(msgDate.getMonth()+1); - else - var month = msgDate.getMonth()+1; - if (msgDate.getDate() < 10) - var day = "0"+ msgDate.getDate(); - else - var day = msgDate.getDate(); - var msgDate8601string = msgDate8601.toString()+month.toString()+day.toString(); - if (addTime && gPrefBranch.getIntPref("mboximport.exportEML.filename_format") == 2) { - if (msgDate.getHours() < 10) - var hours = "0"+msgDate.getHours(); - else - var hours = msgDate.getHours(); - if (msgDate.getMinutes() < 10) - var min = "0"+msgDate.getMinutes(); - else - var min = msgDate.getMinutes(); - msgDate8601string += "-"+ hours.toString() + min.toString(); - } - return msgDate8601string; -} - -function IETwritestatus(text) { - document.getElementById("statusText").setAttribute("label", text); - var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); - var delay = prefs.getIntPref("mboximport.delay.clean_statusbar"); - if (delay > 0) - window.setTimeout(function(){IETdeletestatus(text);}, delay); -} - -function IETdeletestatus(text) { - if (document.getElementById("statusText").getAttribute("label") == text) - document.getElementById("statusText").setAttribute("label", ""); -} - - |
