Merge commit '920df48d1da4f9bf33bf1a01c60a2131e589d29c' into 3.0
This commit is contained in:
commit
f6c3f58bc2
|
@ -33,7 +33,6 @@
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
// "WebPageDump" Firefox Extension
|
// "WebPageDump" Firefox Extension
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
|
@ -42,8 +41,6 @@
|
||||||
// provides common functions (file, preferences, windows, error,...)
|
// provides common functions (file, preferences, windows, error,...)
|
||||||
//
|
//
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
var gBrowserWindow = null;
|
var gBrowserWindow = null;
|
||||||
var gExceptLocation = "about:blank";
|
var gExceptLocation = "about:blank";
|
||||||
var gCallback = "";
|
var gCallback = "";
|
||||||
|
@ -52,10 +49,10 @@ var gTimedOut = false;
|
||||||
var gWaitForPaint = false;
|
var gWaitForPaint = false;
|
||||||
|
|
||||||
var MODE_SIMULATE = false;
|
var MODE_SIMULATE = false;
|
||||||
var WPD_DEFAULTWIDTH=1024;
|
var WPD_DEFAULTWIDTH = 1024;
|
||||||
var WPD_DEFAULTHEIGHT=768;
|
var WPD_DEFAULTHEIGHT = 768;
|
||||||
|
|
||||||
var WPD_MAXUIERRORCOUNT=8;
|
var WPD_MAXUIERRORCOUNT = 8;
|
||||||
|
|
||||||
|
|
||||||
/*function wpdGetTopBrowserWindow()
|
/*function wpdGetTopBrowserWindow()
|
||||||
|
@ -74,14 +71,14 @@ var WPD_MAXUIERRORCOUNT=8;
|
||||||
/* [14:55:15] paolinho: var browserWin = windowMediator.getMostRecentWindow("navigator:browser");
|
/* [14:55:15] paolinho: var browserWin = windowMediator.getMostRecentWindow("navigator:browser");
|
||||||
const mainTabBox = browserWin.getBrowser().mTabBox;
|
const mainTabBox = browserWin.getBrowser().mTabBox;
|
||||||
const topWindow = browserWin.getBrowser().browsers[mainTabBox.selectedIndex].contentWindow;
|
const topWindow = browserWin.getBrowser().browsers[mainTabBox.selectedIndex].contentWindow;
|
||||||
[14:55:50] … var windowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
|
[14:55:50]
|
||||||
|
var windowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function wpdGetTopBrowserWindow()
|
function wpdGetTopBrowserWindow() {
|
||||||
{
|
|
||||||
var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
|
var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
|
||||||
var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
|
var windowManagerInterface = windowManager.QueryInterface(Components.interfaces.nsIWindowMediator);
|
||||||
var topWindowOfType = windowManagerInterface.getMostRecentWindow( "navigator:browser" );
|
var topWindowOfType = windowManagerInterface.getMostRecentWindow("navigator:browser");
|
||||||
|
|
||||||
if (topWindowOfType) {
|
if (topWindowOfType) {
|
||||||
return topWindowOfType;
|
return topWindowOfType;
|
||||||
|
@ -90,8 +87,7 @@ function wpdGetTopBrowserWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function wpdWindowLoaded()
|
function wpdWindowLoaded() {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
// this will be called multiple times if the page contains more than one document (frames, flash,...)
|
// this will be called multiple times if the page contains more than one document (frames, flash,...)
|
||||||
//var browser=this.document.getElementById("content");
|
//var browser=this.document.getElementById("content");
|
||||||
|
@ -101,91 +97,88 @@ function wpdWindowLoaded()
|
||||||
if (!(browser.webProgress.isLoadingDocument || browser.contentDocument.location == gExceptLocation)) {
|
if (!(browser.webProgress.isLoadingDocument || browser.contentDocument.location == gExceptLocation)) {
|
||||||
Zotero.debug("[wpdWindowLoaded] window finally loaded");
|
Zotero.debug("[wpdWindowLoaded] window finally loaded");
|
||||||
gBrowserWindow.clearTimeout(gTimeOutID);
|
gBrowserWindow.clearTimeout(gTimeOutID);
|
||||||
gBrowserWindow.removeEventListener("load",wpdWindowLoaded,true);
|
gBrowserWindow.removeEventListener("load", wpdWindowLoaded, true);
|
||||||
//dump("[wpdWindowLoaded] calling "+gCallback+"\n");
|
//dump("[wpdWindowLoaded] calling "+gCallback+"\n");
|
||||||
if (gWaitForPaint) {
|
if (gWaitForPaint) {
|
||||||
wpdCommon.sizeWindow(WPD_DEFAULTWIDTH-1,WPD_DEFAULTHEIGHT); // this is for the strange empty lines bug
|
wpdCommon.sizeWindow(WPD_DEFAULTWIDTH - 1, WPD_DEFAULTHEIGHT); // this is for the strange empty lines bug
|
||||||
wpdCommon.sizeWindow(WPD_DEFAULTWIDTH,WPD_DEFAULTHEIGHT);
|
wpdCommon.sizeWindow(WPD_DEFAULTWIDTH, WPD_DEFAULTHEIGHT);
|
||||||
}
|
}
|
||||||
var w=0;
|
var w = 0;
|
||||||
if (gWaitForPaint) w=5000; // wait for painting
|
if (gWaitForPaint) w = 5000; // wait for painting
|
||||||
gBrowserWindow.setTimeout(gCallback, w);
|
gBrowserWindow.setTimeout(gCallback, w);
|
||||||
}
|
}
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
Zotero.debug("[wpdWindowLoaded] EXCEPTION: "+ex);
|
Zotero.debug("[wpdWindowLoaded] EXCEPTION: " + ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function wpdTimeOut()
|
function wpdTimeOut() {
|
||||||
{
|
|
||||||
Zotero.debug("[wpdTimeOut] timeout triggered!");
|
Zotero.debug("[wpdTimeOut] timeout triggered!");
|
||||||
gTimedOut=true;
|
gTimedOut = true;
|
||||||
gBrowserWindow.clearTimeout(gTimeOutID);
|
gBrowserWindow.clearTimeout(gTimeOutID);
|
||||||
gBrowserWindow.removeEventListener("load",wpdWindowLoaded,true);
|
gBrowserWindow.removeEventListener("load", wpdWindowLoaded, true);
|
||||||
gBrowserWindow.setTimeout(gCallback, 0);
|
gBrowserWindow.setTimeout(gCallback, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function wpdIsTimedOut()
|
function wpdIsTimedOut() {
|
||||||
{
|
|
||||||
return gTimedOut;
|
return gTimedOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
function wpdLoadURL(aURI,aCallback)
|
function wpdLoadURL(aURI, aCallback) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
gTimedOut=false;
|
gTimedOut = false;
|
||||||
Zotero.debug("[wpdLoadURL] aURI: "+aURI);
|
Zotero.debug("[wpdLoadURL] aURI: " + aURI);
|
||||||
if (aURI=="") return;
|
if (aURI == "") return;
|
||||||
gBrowserWindow = wpdGetTopBrowserWindow();
|
gBrowserWindow = wpdGetTopBrowserWindow();
|
||||||
gBrowserWindow.loadURI(aURI);
|
gBrowserWindow.loadURI(aURI);
|
||||||
gCallback = aCallback;
|
gCallback = aCallback;
|
||||||
// 30 seconds maximum for loading the page
|
// 30 seconds maximum for loading the page
|
||||||
gTimeOutID=gBrowserWindow.setTimeout(wpdTimeOut, 60000);
|
gTimeOutID = gBrowserWindow.setTimeout(wpdTimeOut, 60000);
|
||||||
gBrowserWindow.addEventListener("load",wpdWindowLoaded, true);
|
gBrowserWindow.addEventListener("load", wpdWindowLoaded, true);
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
Zotero.debug("[wpdLoadURL] EXCEPTION: "+ex);
|
Zotero.debug("[wpdLoadURL] EXCEPTION: " + ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var wpdCommon = {
|
var wpdCommon = {
|
||||||
|
|
||||||
errList : "",
|
errList: "",
|
||||||
errCount : 0,
|
errCount: 0,
|
||||||
downloading : false,
|
downloading: false,
|
||||||
downloaded : false,
|
downloaded: false,
|
||||||
|
|
||||||
allowed_entities:
|
allowed_entities:
|
||||||
""&'<> ¡¢£¤¥¦"+
|
""&'<> ¡¢£¤¥¦" +
|
||||||
"§¨©ª«¬­®¯°±"+
|
"§¨©ª«¬­®¯°±" +
|
||||||
"²³´µ¶·¸¹º»"+
|
"²³´µ¶·¸¹º»" +
|
||||||
"¼½¾¿ÀÁÂÃÄ"+
|
"¼½¾¿ÀÁÂÃÄ" +
|
||||||
"ÅÆÇÈÉÊËÌÍ"+
|
"ÅÆÇÈÉÊËÌÍ" +
|
||||||
"ÎÏÐÑÒÓÔÕÖ"+
|
"ÎÏÐÑÒÓÔÕÖ" +
|
||||||
"רÙÚÛÜÝÞß"+
|
"רÙÚÛÜÝÞß" +
|
||||||
"àáâãäåæçè"+
|
"àáâãäåæçè" +
|
||||||
"éêëìíîïðñò"+
|
"éêëìíîïðñò" +
|
||||||
"óôõö÷øùúûü"+
|
"óôõö÷øùúûü" +
|
||||||
"ýþÿŒœŠšŸƒˆ"+
|
"ýþÿŒœŠšŸƒˆ" +
|
||||||
"˜ΑΒΓΔΕΖΗΘΙΚ"+
|
"˜ΑΒΓΔΕΖΗΘΙΚ" +
|
||||||
"ΛΜΝΞΟΠΡΣΤΥΦΧΨ"+
|
"ΛΜΝΞΟΠΡΣΤΥΦΧΨ" +
|
||||||
"Ωαβγδεζηθικ"+
|
"Ωαβγδεζηθικ" +
|
||||||
"λμνξοπρςστυφ"+
|
"λμνξοπρςστυφ" +
|
||||||
"χψωϑϒφϖ   ‌"+
|
"χψωϑϒφϖ   ‌" +
|
||||||
"‍‎‏–—‘’‚“”„"+
|
"‍‎‏–—‘’‚“”„" +
|
||||||
"†‡•…‰′″‹›"+
|
"†‡•…‰′″‹›" +
|
||||||
"‾⁄€ℑ℘ℜ™ℵ←↑"+
|
"‾⁄€ℑ℘ℜ™ℵ←↑" +
|
||||||
"→↓↔↵⇐⇑⇒⇓⇔∀"+
|
"→↓↔↵⇐⇑⇒⇓⇔∀" +
|
||||||
"∂∃∅∇∈∉∋∏∑−∗√"+
|
"∂∃∅∇∈∉∋∏∑−∗√" +
|
||||||
"∝∞∠∨∩∪∫∴∼≅≈≠≡"+
|
"∝∞∠∨∩∪∫∴∼≅≈≠≡" +
|
||||||
"≤≥⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈"+
|
"≤≥⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈" +
|
||||||
"⌉⌊⌋⟨⟩◊♠♣♥♦",
|
"⌉⌊⌋⟨⟩◊♠♣♥♦",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
trim : function (aString) {
|
trim: function (aString) {
|
||||||
try {
|
try {
|
||||||
return (aString.replace(/\s+$/,"").replace(/^\s+/,""));
|
return (aString.replace(/\s+$/, "").replace(/^\s+/, ""));
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
return aString;
|
return aString;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -193,27 +186,26 @@ var wpdCommon = {
|
||||||
|
|
||||||
// checks the CRLFs at the beginning - if there are CRLFs present
|
// checks the CRLFs at the beginning - if there are CRLFs present
|
||||||
// one additional CRLF will be added at the beginning
|
// one additional CRLF will be added at the beginning
|
||||||
checkCRLF : function (aNode)
|
checkCRLF: function (aNode) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
var before=false;
|
var before = false;
|
||||||
var after=false;
|
var after = false;
|
||||||
if (aNode.parentNode.firstChild==aNode) before=true;
|
if (aNode.parentNode.firstChild == aNode) before = true;
|
||||||
if (!before && !after) {
|
if (!before && !after) {
|
||||||
throw new Error("return");
|
throw new Error("return");
|
||||||
}
|
}
|
||||||
// why <BR>? Because the <BR> Tag ist not present in text DOM nodes...
|
// why <BR>? Because the <BR> Tag ist not present in text DOM nodes...
|
||||||
var aString=aNode.nodeValue;
|
var aString = aNode.nodeValue;
|
||||||
if (aString.search(/\n/)==-1) throw new Error("return");
|
if (aString.search(/\n/) == -1) throw new Error("return");
|
||||||
aString=(aString.replace(/\r\n/g,"<br>").replace(/\n/g,"<br>"));
|
aString = (aString.replace(/\r\n/g, "<br>").replace(/\n/g, "<br>"));
|
||||||
var a=aString.split("<br>");
|
var a = aString.split("<br>");
|
||||||
var s=0;
|
var s = 0;
|
||||||
var e=0;
|
var e = 0;
|
||||||
|
|
||||||
|
|
||||||
if (before) {
|
if (before) {
|
||||||
for (var i=0;i<a.length;i++) {
|
for (var i = 0; i < a.length; i++) {
|
||||||
if (this.trim(a[i])!="") {
|
if (this.trim(a[i]) != "") {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
s++;
|
s++;
|
||||||
|
@ -222,8 +214,8 @@ var wpdCommon = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
aString=a.join("\r\n");
|
aString = a.join("\r\n");
|
||||||
if (s>0) aString="\r\n"+aString;
|
if (s > 0) aString = "\r\n" + aString;
|
||||||
return aString;
|
return aString;
|
||||||
|
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
|
@ -231,29 +223,26 @@ var wpdCommon = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
unicodeToEntity : function (text,charset)
|
unicodeToEntity: function (text, charset) {
|
||||||
{
|
|
||||||
|
|
||||||
function convertEntity(letter) {
|
function convertEntity(letter) {
|
||||||
try {
|
try {
|
||||||
var l = gEntityConverter.ConvertToEntity(letter,entityVersion);
|
var l = gEntityConverter.ConvertToEntity(letter, entityVersion);
|
||||||
// is the entity allowed?
|
// is the entity allowed?
|
||||||
if (entities.indexOf(l)>=0) {
|
if (entities.indexOf(l) >= 0) {
|
||||||
return l;
|
return l;
|
||||||
} else if ( (l!=letter) ) {
|
} else if ((l != letter)) {
|
||||||
return "&#"+letter.charCodeAt(0)+";";
|
return "&#" + letter.charCodeAt(0) + ";";
|
||||||
}
|
|
||||||
} catch (ex) {
|
|
||||||
}
|
}
|
||||||
|
} catch (ex) {}
|
||||||
// now we check if the letter is valid inside the destination charset
|
// now we check if the letter is valid inside the destination charset
|
||||||
// (if the result is a ? it is not valid - except letter=?)
|
// (if the result is a ? it is not valid - except letter=?)
|
||||||
try {
|
try {
|
||||||
var s=gUnicodeConverter.ConvertFromUnicode(letter);
|
var s = gUnicodeConverter.ConvertFromUnicode(letter);
|
||||||
if ( (charset!="UTF-8") && (s=="?") ) {
|
if ((charset != "UTF-8") && (s == "?")) {
|
||||||
return "&#"+letter.charCodeAt(0)+";";
|
return "&#" + letter.charCodeAt(0) + ";";
|
||||||
}
|
|
||||||
} catch (ex) {
|
|
||||||
}
|
}
|
||||||
|
} catch (ex) {}
|
||||||
return letter;
|
return letter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,16 +250,16 @@ var wpdCommon = {
|
||||||
try {
|
try {
|
||||||
var gUnicodeConverter = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].getService(Components.interfaces.nsIScriptableUnicodeConverter);
|
var gUnicodeConverter = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].getService(Components.interfaces.nsIScriptableUnicodeConverter);
|
||||||
gUnicodeConverter.charset = charset;
|
gUnicodeConverter.charset = charset;
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
Zotero.debug ("gUnicodeConverter EXCEPTION:"+ex);
|
Zotero.debug("gUnicodeConverter EXCEPTION:" + ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gEntityConverter) {
|
if (!gEntityConverter) {
|
||||||
try {
|
try {
|
||||||
var gEntityConverter = Components.classes["@mozilla.org/intl/entityconverter;1"].createInstance(Components.interfaces.nsIEntityConverter);
|
var gEntityConverter = Components.classes["@mozilla.org/intl/entityconverter;1"].createInstance(Components.interfaces.nsIEntityConverter);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
Zotero.debug ("gEntityConverter EXCEPTION:"+ex);
|
Zotero.debug("gEntityConverter EXCEPTION:" + ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,51 +282,45 @@ var wpdCommon = {
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
playSound : function()
|
playSound: function () {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
var sound = Components.classes["@mozilla.org/sound;1"].createInstance(Components.interfaces.nsISound);
|
var sound = Components.classes["@mozilla.org/sound;1"].createInstance(Components.interfaces.nsISound);
|
||||||
sound.playSystemSound("ringin.wav");
|
sound.playSystemSound("ringin.wav");
|
||||||
} catch(ex) {
|
} catch (ex) {}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// return the current focused window
|
// return the current focused window
|
||||||
getFocusedWindow : function()
|
getFocusedWindow: function () {
|
||||||
{
|
|
||||||
var win = document.commandDispatcher.focusedWindow;
|
var win = document.commandDispatcher.focusedWindow;
|
||||||
if ( !win || win == window || win instanceof Components.interfaces.nsIDOMChromeWindow ) win = window._content;
|
if (!win || win == window || win instanceof Components.interfaces.nsIDOMChromeWindow) win = window._content;
|
||||||
return win;
|
return win;
|
||||||
},
|
},
|
||||||
|
|
||||||
sizeWindow : function(w,h)
|
sizeWindow: function (w, h) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
var window=this.getFocusedWindow();
|
var window = this.getFocusedWindow();
|
||||||
window.moveTo(0,0);
|
window.moveTo(0, 0);
|
||||||
if ((w==0) || (w>screen.availWidth)) w=screen.availWidth;
|
if ((w == 0) || (w > screen.availWidth)) w = screen.availWidth;
|
||||||
if ((h==0) || (w>screen.availHeight)) h=screen.availHeight;
|
if ((h == 0) || (w > screen.availHeight)) h = screen.availHeight;
|
||||||
window.resizeTo(w,h);
|
window.resizeTo(w, h);
|
||||||
window.focus();
|
window.focus();
|
||||||
} catch(ex) {
|
} catch (ex) {}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// add a line to the error list (displays a maximum of 15 errors)
|
// add a line to the error list (displays a maximum of 15 errors)
|
||||||
addError : function(aError)
|
addError: function (aError) {
|
||||||
{
|
Zotero.debug('ERROR: ' + aError);
|
||||||
Zotero.debug('ERROR: '+aError);
|
if (this.errCount < WPD_MAXUIERRORCOUNT) {
|
||||||
if (this.errCount<WPD_MAXUIERRORCOUNT) {
|
if (this.errList.indexOf(aError) > -1) return; // is the same
|
||||||
if (this.errList.indexOf(aError)>-1) return; // is the same
|
this.errList = this.errList + aError + "\n";
|
||||||
this.errList = this.errList+aError+"\n";
|
} else if (this.errCount == WPD_MAXUIERRORCOUNT) {
|
||||||
} else if (this.errCount==WPD_MAXUIERRORCOUNT) {
|
this.errList = this.errList + '...';
|
||||||
this.errList = this.errList+'...';
|
|
||||||
}
|
}
|
||||||
this.errCount++;
|
this.errCount++;
|
||||||
},
|
},
|
||||||
|
|
||||||
saveWebPage : function(aDestFile) {
|
saveWebPage: function (aDestFile) {
|
||||||
Zotero.debug("[saveWebPage] "+aDestFile);
|
Zotero.debug("[saveWebPage] " + aDestFile);
|
||||||
var nsIWBP = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
|
var nsIWBP = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
|
||||||
var doc = window.content.document;
|
var doc = window.content.document;
|
||||||
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
|
@ -348,20 +331,18 @@ var wpdCommon = {
|
||||||
},
|
},
|
||||||
|
|
||||||
// returns num as string of length i filled up with 0s
|
// returns num as string of length i filled up with 0s
|
||||||
addLeftZeros : function(num,i)
|
addLeftZeros: function (num, i) {
|
||||||
{
|
var s = "" + num;
|
||||||
var s=""+num;
|
var r = "";
|
||||||
var r="";
|
for (var f = 0; f < i - s.length; f++) r = r + "0";
|
||||||
for (var f=0;f<i-s.length;f++) r=r+"0";
|
return r + s;
|
||||||
return r+s;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// split the filename in filename and extension
|
// split the filename in filename and extension
|
||||||
splitFileName : function(aFileName)
|
splitFileName: function (aFileName) {
|
||||||
{
|
|
||||||
var pos = aFileName.lastIndexOf(".");
|
var pos = aFileName.lastIndexOf(".");
|
||||||
var ret = [];
|
var ret = [];
|
||||||
if ( pos != -1 ) {
|
if (pos != -1) {
|
||||||
ret[0] = aFileName.substring(0, pos);
|
ret[0] = aFileName.substring(0, pos);
|
||||||
ret[1] = aFileName.substring(pos + 1, aFileName.length);
|
ret[1] = aFileName.substring(pos + 1, aFileName.length);
|
||||||
} else {
|
} else {
|
||||||
|
@ -372,8 +353,7 @@ var wpdCommon = {
|
||||||
},
|
},
|
||||||
|
|
||||||
// replace illegal characters
|
// replace illegal characters
|
||||||
getValidFileName : function(aFileName)
|
getValidFileName: function (aFileName) {
|
||||||
{
|
|
||||||
aFileName = aFileName.replace(/[\"\?!~`]+/g, "");
|
aFileName = aFileName.replace(/[\"\?!~`]+/g, "");
|
||||||
aFileName = aFileName.replace(/[\*\&]+/g, "+");
|
aFileName = aFileName.replace(/[\*\&]+/g, "+");
|
||||||
aFileName = aFileName.replace(/[\\\/\|\:;]+/g, "-");
|
aFileName = aFileName.replace(/[\\\/\|\:;]+/g, "-");
|
||||||
|
@ -384,141 +364,127 @@ var wpdCommon = {
|
||||||
return aFileName;
|
return aFileName;
|
||||||
},
|
},
|
||||||
|
|
||||||
getURL : function()
|
getURL: function () {
|
||||||
{
|
|
||||||
return top.window._content.document.location.href;
|
return top.window._content.document.location.href;
|
||||||
},
|
},
|
||||||
|
|
||||||
// remove get variables from an URL
|
// remove get variables from an URL
|
||||||
removeGETFromURL : function(aURL)
|
removeGETFromURL: function (aURL) {
|
||||||
{
|
|
||||||
var pos;
|
var pos;
|
||||||
aURL = ( (pos = aURL.indexOf("?")) != -1 ) ? aURL.substring(0, pos) : aURL;
|
aURL = ((pos = aURL.indexOf("?")) != -1) ? aURL.substring(0, pos) : aURL;
|
||||||
aURL = ( (pos = aURL.indexOf("#")) != -1 ) ? aURL.substring(0, pos) : aURL;
|
aURL = ((pos = aURL.indexOf("#")) != -1) ? aURL.substring(0, pos) : aURL;
|
||||||
return aURL;
|
return aURL;
|
||||||
},
|
},
|
||||||
|
|
||||||
// extract filename from URL
|
// extract filename from URL
|
||||||
getFileName : function(aURL)
|
getFileName: function (aURL) {
|
||||||
{
|
|
||||||
var pos;
|
var pos;
|
||||||
aURL = this.removeGETFromURL(aURL);
|
aURL = this.removeGETFromURL(aURL);
|
||||||
aURL = ( (pos = aURL.lastIndexOf("/")) != -1 ) ? aURL.substring(++pos) : aURL;
|
aURL = ((pos = aURL.lastIndexOf("/")) != -1) ? aURL.substring(++pos) : aURL;
|
||||||
return aURL;
|
return aURL;
|
||||||
},
|
},
|
||||||
|
|
||||||
filePathToURI: function(filePath)
|
filePathToURI: function (filePath) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(filePath);
|
obj_File.initWithPath(filePath);
|
||||||
var obj_FPH = Components.classes["@mozilla.org/network/protocol;1?name=file"].getService(Components.interfaces.nsIFileProtocolHandler);
|
var obj_FPH = Components.classes["@mozilla.org/network/protocol;1?name=file"].getService(Components.interfaces.nsIFileProtocolHandler);
|
||||||
return obj_FPH.getURLSpecFromFile(obj_File);
|
return obj_FPH.getURLSpecFromFile(obj_File);
|
||||||
},
|
},
|
||||||
|
|
||||||
URLToFilePath: function(aURL)
|
URLToFilePath: function (aURL) {
|
||||||
{
|
|
||||||
var obj_FPH = Components.classes["@mozilla.org/network/protocol;1?name=file"].getService(Components.interfaces.nsIFileProtocolHandler);
|
var obj_FPH = Components.classes["@mozilla.org/network/protocol;1?name=file"].getService(Components.interfaces.nsIFileProtocolHandler);
|
||||||
try {
|
try {
|
||||||
return obj_FPH.getFileFromURLSpec(aURL).path;
|
return obj_FPH.getFileFromURLSpec(aURL).path;
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
return aURL;
|
return aURL;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// right part of filepath/filename
|
// right part of filepath/filename
|
||||||
getFileLeafName: function(filePath)
|
getFileLeafName: function (filePath) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(filePath);
|
obj_File.initWithPath(filePath);
|
||||||
return obj_File.leafName;
|
return obj_File.leafName;
|
||||||
},
|
},
|
||||||
|
|
||||||
getFilePath: function(filePath)
|
getFilePath: function (filePath) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(filePath);
|
obj_File.initWithPath(filePath);
|
||||||
var pos; // Added by Dan S. for Zotero
|
var pos; // Added by Dan S. for Zotero
|
||||||
return ( (pos = filePath.lastIndexOf(obj_File.leafName)) != -1 ) ? filePath.substring(0,pos) : filePath;
|
return ((pos = filePath.lastIndexOf(obj_File.leafName)) != -1) ? filePath.substring(0, pos) : filePath;
|
||||||
},
|
},
|
||||||
|
|
||||||
appendFilePath: function(filePath,appendPath)
|
appendFilePath: function (filePath, appendPath) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(filePath);
|
obj_File.initWithPath(filePath);
|
||||||
obj_File.appendRelativePath(appendPath);
|
obj_File.appendRelativePath(appendPath);
|
||||||
return obj_File.path;
|
return obj_File.path;
|
||||||
},
|
},
|
||||||
|
|
||||||
pathExists: function(filePath)
|
pathExists: function (filePath) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].getService(Components.interfaces.nsILocalFile);
|
||||||
try {
|
try {
|
||||||
obj_File.initWithPath(filePath);
|
obj_File.initWithPath(filePath);
|
||||||
return obj_File.exists();
|
return obj_File.exists();
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// add the HTML Tag Stuff to aNode and embedd the aNode.innerHTML between the tags
|
// add the HTML Tag Stuff to aNode and embedd the aNode.innerHTML between the tags
|
||||||
nodeToHTMLString: function(aNode)
|
nodeToHTMLString: function (aNode) {
|
||||||
{
|
if (aNode == null) return "";
|
||||||
if (aNode==null) return "";
|
|
||||||
var tag = "<" + aNode.nodeName.toLowerCase();
|
var tag = "<" + aNode.nodeName.toLowerCase();
|
||||||
for ( var i=0; i<aNode.attributes.length; i++ )
|
for (var i = 0; i < aNode.attributes.length; i++) {
|
||||||
tag += ' ' + aNode.attributes[i].name + '="' + aNode.attributes[i].value + '"';
|
tag += ' ' + aNode.attributes[i].name + '="' + aNode.attributes[i].value + '"';
|
||||||
|
}
|
||||||
tag += ">\n";
|
tag += ">\n";
|
||||||
return tag + aNode.innerHTML + "</" + aNode.nodeName.toLowerCase() + ">\n";
|
return tag + aNode.innerHTML + "</" + aNode.nodeName.toLowerCase() + ">\n";
|
||||||
},
|
},
|
||||||
|
|
||||||
ConvertFromUnicode16 : function(aString,charset)
|
ConvertFromUnicode16: function (aString, charset) {
|
||||||
{
|
if (!aString) return "";
|
||||||
if ( !aString ) return "";
|
|
||||||
try {
|
try {
|
||||||
var UNICODE = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].getService(Components.interfaces.nsIScriptableUnicodeConverter);
|
var UNICODE = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].getService(Components.interfaces.nsIScriptableUnicodeConverter);
|
||||||
UNICODE.charset = charset;
|
UNICODE.charset = charset;
|
||||||
aString = UNICODE.ConvertFromUnicode(aString);
|
aString = UNICODE.ConvertFromUnicode(aString);
|
||||||
aString = aString + UNICODE.Finish();
|
aString = aString + UNICODE.Finish();
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
//this.addError("[wpdCommon.convertStringToCharset]:\n -> charset: "+charset+"\n -> "+ex);
|
//this.addError("[wpdCommon.convertStringToCharset]:\n -> charset: "+charset+"\n -> "+ex);
|
||||||
}
|
}
|
||||||
return aString;
|
return aString;
|
||||||
},
|
},
|
||||||
|
|
||||||
ConvertToUnicode16 : function(aString,charset)
|
ConvertToUnicode16: function (aString, charset) {
|
||||||
{
|
if (!aString) return "";
|
||||||
if ( !aString ) return "";
|
|
||||||
try {
|
try {
|
||||||
var UNICODE = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].getService(Components.interfaces.nsIScriptableUnicodeConverter);
|
var UNICODE = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].getService(Components.interfaces.nsIScriptableUnicodeConverter);
|
||||||
UNICODE.charset = charset;
|
UNICODE.charset = charset;
|
||||||
aString = UNICODE.ConvertToUnicode(aString);
|
aString = UNICODE.ConvertToUnicode(aString);
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
//this.addError("[wpdCommon.convertStringToCharset]:\n -> charset: "+charset+"\n -> "+ex);
|
//this.addError("[wpdCommon.convertStringToCharset]:\n -> charset: "+charset+"\n -> "+ex);
|
||||||
}
|
}
|
||||||
return aString;
|
return aString;
|
||||||
},
|
},
|
||||||
|
|
||||||
// convert the doctype to an HTML doctype String
|
// convert the doctype to an HTML doctype String
|
||||||
doctypeToHTMLString : function(aDoctype)
|
doctypeToHTMLString: function (aDoctype) {
|
||||||
{
|
if (!aDoctype) return "";
|
||||||
if ( !aDoctype ) return "";
|
|
||||||
var ret = "<!DOCTYPE " + aDoctype.name;
|
var ret = "<!DOCTYPE " + aDoctype.name;
|
||||||
if ( aDoctype.publicId ) ret += ' PUBLIC "' + aDoctype.publicId + '"';
|
if (aDoctype.publicId) ret += ' PUBLIC "' + aDoctype.publicId + '"';
|
||||||
if ( aDoctype.systemId ) ret += ' "' + aDoctype.systemId + '"';
|
if (aDoctype.systemId) ret += ' "' + aDoctype.systemId + '"';
|
||||||
ret += ">\n";
|
ret += ">\n";
|
||||||
return ret;
|
return ret;
|
||||||
},
|
},
|
||||||
|
|
||||||
addCommentTag : function(targetNode, aComment)
|
addCommentTag: function (targetNode, aComment) {
|
||||||
{
|
|
||||||
targetNode.appendChild(document.createTextNode("\n"));
|
targetNode.appendChild(document.createTextNode("\n"));
|
||||||
targetNode.appendChild(document.createComment(aComment));
|
targetNode.appendChild(document.createComment(aComment));
|
||||||
targetNode.appendChild(document.createTextNode("\n"));
|
targetNode.appendChild(document.createTextNode("\n"));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
removeNodeFromParent : function(aNode)
|
removeNodeFromParent: function (aNode) {
|
||||||
{
|
|
||||||
// Added by Dan S. for Zotero
|
// Added by Dan S. for Zotero
|
||||||
var document = aNode.ownerDocument;
|
var document = aNode.ownerDocument;
|
||||||
|
|
||||||
|
@ -530,113 +496,102 @@ var wpdCommon = {
|
||||||
|
|
||||||
// convert URL String to Object
|
// convert URL String to Object
|
||||||
// for easier URL handling
|
// for easier URL handling
|
||||||
convertURLToObject : function(aURLString)
|
convertURLToObject: function (aURLString) {
|
||||||
{
|
|
||||||
var aURL = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURL);
|
var aURL = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURL);
|
||||||
aURL.spec = aURLString;
|
aURL.spec = aURLString;
|
||||||
return aURL;
|
return aURL;
|
||||||
},
|
},
|
||||||
|
|
||||||
// resolves the relative URL (aRelURL) with the base URL (aBaseURL)
|
// resolves the relative URL (aRelURL) with the base URL (aBaseURL)
|
||||||
resolveURL : function(aBaseURL, aRelURL)
|
resolveURL: function (aBaseURL, aRelURL) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
var aBaseURLObj = this.convertURLToObject(aBaseURL);
|
var aBaseURLObj = this.convertURLToObject(aBaseURL);
|
||||||
return aBaseURLObj.resolve(aRelURL);
|
return aBaseURLObj.resolve(aRelURL);
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
this.addError("[wpdCommon.resolveURL]:\n -> aBaseURL: "+aBaseURL+"\n -> aRelURL: "+aRelURL+"\n -> "+ex);
|
this.addError("[wpdCommon.resolveURL]:\n -> aBaseURL: " + aBaseURL + "\n -> aRelURL: " + aRelURL + "\n -> " + ex);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
|
|
||||||
getHostName : function(aURL)
|
getHostName: function (aURL) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
var aURLObj = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURI);
|
var aURLObj = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURI);
|
||||||
aURLObj.spec = aURL
|
aURLObj.spec = aURL
|
||||||
return aURLObj.asciiHost;
|
return aURLObj.asciiHost;
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
this.addError("[wpdCommon.getHostName]:\n -> aURL: "+aURL+"\n -> "+ex);
|
this.addError("[wpdCommon.getHostName]:\n -> aURL: " + aURL + "\n -> " + ex);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
|
|
||||||
convertUrlToASCII : function(aURL)
|
convertUrlToASCII: function (aURL) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
var aURLObj = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURI);
|
var aURLObj = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURI);
|
||||||
aURLObj.spec = aURL
|
aURLObj.spec = aURL
|
||||||
return aURLObj.asciiSpec;
|
return aURLObj.asciiSpec;
|
||||||
} catch(ex) {
|
} catch (ex) {
|
||||||
this.addError("[wpdCommon.getHostName]:\n -> aURL: "+aURL+"\n -> "+ex);
|
this.addError("[wpdCommon.getHostName]:\n -> aURL: " + aURL + "\n -> " + ex);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
|
|
||||||
createDir : function(str_Dir)
|
createDir: function (str_Dir) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(str_Dir);
|
obj_File.initWithPath(str_Dir);
|
||||||
if (!obj_File.exists())
|
if (!obj_File.exists()) obj_File.create(obj_File.DIRECTORY_TYPE, 0700);
|
||||||
obj_File.create(obj_File.DIRECTORY_TYPE, 0700);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
readDir : function(str_Dir)
|
readDir: function (str_Dir) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(str_Dir);
|
obj_File.initWithPath(str_Dir);
|
||||||
if (obj_File.exists()) return obj_File.directoryEntries;
|
if (obj_File.exists()) return obj_File.directoryEntries;
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
|
|
||||||
fileSize : function(str_Filename)
|
fileSize: function (str_Filename) {
|
||||||
{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(str_Filename);
|
obj_File.initWithPath(str_Filename);
|
||||||
return obj_File.fileSize;
|
return obj_File.fileSize;
|
||||||
},
|
},
|
||||||
|
|
||||||
// read the file (str_Filename) to a String Buffer (str_Buffer)
|
// read the file (str_Filename) to a String Buffer (str_Buffer)
|
||||||
readFile : function(str_Filename,removeComments,text)
|
readFile: function (str_Filename, removeComments, text) {
|
||||||
{
|
try {
|
||||||
try{
|
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(str_Filename);
|
obj_File.initWithPath(str_Filename);
|
||||||
if (!obj_File.exists()) {
|
if (!obj_File.exists()) {
|
||||||
this.addError("[wpdCommon.readFile]:\n -> str_Filename: "+str_Filename+"\n -> file not found!");
|
this.addError("[wpdCommon.readFile]:\n -> str_Filename: " + str_Filename + "\n -> file not found!");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
var obj_Transport = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
|
var obj_Transport = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
|
||||||
|
|
||||||
obj_Transport.init( obj_File, 0x01 , 004, 0 );
|
obj_Transport.init(obj_File, 0x01, 004, 0);
|
||||||
|
|
||||||
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
|
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
|
||||||
sis.init( obj_Transport );
|
sis.init(obj_Transport);
|
||||||
var output = sis.read( sis.available() );
|
var output = sis.read(sis.available());
|
||||||
if (text) output = output.replace(/\r/g,"");
|
if (text) output = output.replace(/\r/g, "");
|
||||||
if (text && removeComments) {
|
if (text && removeComments) {
|
||||||
output = output.replace(/^\/\/.*/g,"");
|
output = output.replace(/^\/\/.*/g, "");
|
||||||
output = output.replace(/\n\/\/.*/g,"");
|
output = output.replace(/\n\/\/.*/g, "");
|
||||||
output = output.replace(/\n\n+/g,"\n");
|
output = output.replace(/\n\n+/g, "\n");
|
||||||
}
|
}
|
||||||
if (text) output = output.split(/\n/g);
|
if (text) output = output.split(/\n/g);
|
||||||
return output;
|
return output;
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
this.addError("[wpdCommon.readFile]:\n -> str_Filename: "+str_Filename+"\n -> "+ex);
|
this.addError("[wpdCommon.readFile]:\n -> str_Filename: " + str_Filename + "\n -> " + ex);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
|
|
||||||
// write the String Buffer (str_Buffer) to a file (str_Filename)
|
// write the String Buffer (str_Buffer) to a file (str_Filename)
|
||||||
writeFile : function(str_Buffer,str_Filename)
|
writeFile: function (str_Buffer, str_Filename) {
|
||||||
{
|
|
||||||
if (MODE_SIMULATE) return true;
|
if (MODE_SIMULATE) return true;
|
||||||
try{
|
try {
|
||||||
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
var obj_File = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
obj_File.initWithPath(str_Filename);
|
obj_File.initWithPath(str_Filename);
|
||||||
if (!obj_File.exists())
|
if (!obj_File.exists()) obj_File.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666);
|
||||||
obj_File.create( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666 );
|
|
||||||
|
|
||||||
var obj_Transport = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
|
var obj_Transport = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
|
||||||
|
|
||||||
|
@ -663,43 +618,39 @@ var wpdCommon = {
|
||||||
00002 Write by others
|
00002 Write by others
|
||||||
00001 Execute by others.
|
00001 Execute by others.
|
||||||
*/
|
*/
|
||||||
obj_Transport.init( obj_File, 0x20 | 0x04 | 0x08, 064, 0 );
|
obj_Transport.init(obj_File, 0x20 | 0x04 | 0x08, 064, 0);
|
||||||
obj_Transport.write(str_Buffer,str_Buffer.length);
|
obj_Transport.write(str_Buffer, str_Buffer.length);
|
||||||
obj_Transport.flush();
|
obj_Transport.flush();
|
||||||
obj_Transport.close();
|
obj_Transport.close();
|
||||||
return true;
|
return true;
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
this.addError("[wpdCommon.writeFile]:\n -> str_Filename: "+str_Filename+"\n -> "+ex);
|
this.addError("[wpdCommon.writeFile]:\n -> str_Filename: " + str_Filename + "\n -> " + ex);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
copyFile : function(sourcefile,destfile)
|
copyFile: function (sourcefile, destfile) {
|
||||||
{
|
|
||||||
|
|
||||||
var destdir=this.getFilePath(destfile);
|
var destdir = this.getFilePath(destfile);
|
||||||
destfile=this.getFileLeafName(destfile);
|
destfile = this.getFileLeafName(destfile);
|
||||||
var aFile = Components.classes["@mozilla.org/file/local;1"]
|
var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
.createInstance(Components.interfaces.nsILocalFile);
|
|
||||||
if (!aFile) return false;
|
if (!aFile) return false;
|
||||||
|
|
||||||
var aDir = Components.classes["@mozilla.org/file/local;1"]
|
var aDir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||||
.createInstance(Components.interfaces.nsILocalFile);
|
|
||||||
if (!aDir) return false;
|
if (!aDir) return false;
|
||||||
|
|
||||||
aFile.initWithPath(sourcefile);
|
aFile.initWithPath(sourcefile);
|
||||||
|
|
||||||
aDir.initWithPath(destdir);
|
aDir.initWithPath(destdir);
|
||||||
|
|
||||||
aFile.copyTo(aDir,destfile);
|
aFile.copyTo(aDir, destfile);
|
||||||
return true; // Added by Dan S. for Zotero
|
return true; // Added by Dan S. for Zotero
|
||||||
},
|
},
|
||||||
|
|
||||||
// download aSourceURL to aTargetFilename
|
// download aSourceURL to aTargetFilename
|
||||||
// (works also on local files...)
|
// (works also on local files...)
|
||||||
downloadFile : function (aSourceURL,aTargetFilename)
|
downloadFile: function (aSourceURL, aTargetFilename) {
|
||||||
{
|
|
||||||
if (MODE_SIMULATE) return true;
|
if (MODE_SIMULATE) return true;
|
||||||
try {
|
try {
|
||||||
//new obj_URI object
|
//new obj_URI object
|
||||||
|
@ -718,76 +669,66 @@ var wpdCommon = {
|
||||||
|
|
||||||
// set flags
|
// set flags
|
||||||
const nsIWBP = Components.interfaces.nsIWebBrowserPersist;
|
const nsIWBP = Components.interfaces.nsIWebBrowserPersist;
|
||||||
var flags = nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
|
var flags = nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES | nsIWBP.PERSIST_FLAGS_FROM_CACHE;
|
||||||
nsIWBP.PERSIST_FLAGS_FROM_CACHE;
|
|
||||||
//nsIWBP.PERSIST_FLAGS_BYPASS_CACHE;
|
//nsIWBP.PERSIST_FLAGS_BYPASS_CACHE;
|
||||||
obj_Persist.persistFlags = flags;
|
obj_Persist.persistFlags = flags;
|
||||||
|
|
||||||
// has the url the same filetype like the file extension?
|
// has the url the same filetype like the file extension?
|
||||||
//save file to target
|
//save file to target
|
||||||
obj_Persist.saveURI(obj_URI,null,null,null,null,obj_TargetFile);
|
obj_Persist.saveURI(obj_URI, null, null, null, null, obj_TargetFile);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
aSourceURL=this.removeGETFromURL(aSourceURL);
|
aSourceURL = this.removeGETFromURL(aSourceURL);
|
||||||
this.addError("[wpdCommon.downloadFile]:\n -> aSourceURL: "+aSourceURL.substring(aSourceURL.length-60)+"\n -> aTargetFilename: "+aTargetFilename+"\n -> "+ex);
|
this.addError("[wpdCommon.downloadFile]:\n -> aSourceURL: " + aSourceURL.substring(aSourceURL.length - 60) + "\n -> aTargetFilename: " + aTargetFilename + "\n -> " + ex);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
// get the integer preferences
|
// get the integer preferences
|
||||||
getIntPrefs : function (branch)
|
getIntPrefs: function (branch) {
|
||||||
{
|
var mPrefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
||||||
var mPrefSvc=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
|
||||||
return mPrefSvc.getIntPref(branch);
|
return mPrefSvc.getIntPref(branch);
|
||||||
},
|
},
|
||||||
|
|
||||||
// set the integer preferences
|
// set the integer preferences
|
||||||
setIntPrefs : function (branch,value)
|
setIntPrefs: function (branch, value) {
|
||||||
{
|
var mPrefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
||||||
var mPrefSvc=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
return mPrefSvc.setIntPref(branch, value);
|
||||||
return mPrefSvc.setIntPref(branch,value);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// get the integer preferences
|
// get the integer preferences
|
||||||
getStrPrefs : function (branch)
|
getStrPrefs: function (branch) {
|
||||||
{
|
var mPrefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
||||||
var mPrefSvc=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
|
||||||
return mPrefSvc.getCharPref(branch);
|
return mPrefSvc.getCharPref(branch);
|
||||||
},
|
},
|
||||||
|
|
||||||
// set the string preferences
|
// set the string preferences
|
||||||
setStrPrefs : function (branch,value)
|
setStrPrefs: function (branch, value) {
|
||||||
{
|
var mPrefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
||||||
var mPrefSvc=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
return mPrefSvc.setCharPref(branch, value);
|
||||||
return mPrefSvc.setCharPref(branch,value);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// get the string preferences
|
// get the string preferences
|
||||||
getStrPrefsEx : function (branch)
|
getStrPrefsEx: function (branch) {
|
||||||
{
|
var mPrefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
||||||
var mPrefSvc=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
return mPrefSvc.getComplexValue(branch, Components.interfaces.nsISupportsString).data;
|
||||||
return mPrefSvc.getComplexValue(branch,Components.interfaces.nsISupportsString).data;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// set the string preferences
|
// set the string preferences
|
||||||
setStrPrefsEx : function (branch,value)
|
setStrPrefsEx: function (branch, value) {
|
||||||
{
|
|
||||||
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
|
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
|
||||||
str.data = value;
|
str.data = value;
|
||||||
var mPrefSvc=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
var mPrefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
||||||
return mPrefSvc.setComplexValue(branch,Components.interfaces.nsISupportsString,str);
|
return mPrefSvc.setComplexValue(branch, Components.interfaces.nsISupportsString, str);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
// Get the preferences branch ("browser.download." for normal 'save' mode)...
|
// Get the preferences branch ("browser.download." for normal 'save' mode)...
|
||||||
setBoolPrefs : function (branch,value)
|
setBoolPrefs: function (branch, value) {
|
||||||
{
|
var mPrefSvc = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
||||||
var mPrefSvc=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
|
return mPrefSvc.setBoolPref(branch, value);
|
||||||
return mPrefSvc.setBoolPref(branch,value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -819,6 +819,11 @@ function ChromeExtensionHandler() {
|
||||||
var fileURI = ph.newFileURI(file);
|
var fileURI = ph.newFileURI(file);
|
||||||
}
|
}
|
||||||
var channel = ioService.newChannelFromURI(fileURI);
|
var channel = ioService.newChannelFromURI(fileURI);
|
||||||
|
//set originalURI so that it seems like we're serving from zotero:// protocol
|
||||||
|
//this is necessary to allow url() links to work from within css files
|
||||||
|
//otherwise they try to link to files on the file:// protocol, which is not allowed
|
||||||
|
channel.originalURI = uri;
|
||||||
|
|
||||||
return channel;
|
return channel;
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user