Fix the link to the images in the printer friendly version
git-svn-id: https://svn.apache.org/repos/asf/ant/ivy/site/xooki@795502 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/xooki.js b/xooki.js
index 2a6fd9b..6808e23 100644
--- a/xooki.js
+++ b/xooki.js
@@ -554,7 +554,7 @@
source = source.substring(beginIndex, endIndex);
var printerFriendly = "<h"+level+">"+page.title+"</h"+level+">";
- printerFriendly += xooki.input.format.main(source) + "<hr/>";
+ printerFriendly += xooki.input.format.main(source, level) + "<hr/>";
// inject block in page
var pf = document.getElementById('xooki-printerFriendly');
pf.innerHTML += printerFriendly;
@@ -590,7 +590,7 @@
source = source.substring(beginIndex, endIndex);
var printerFriendly = "<div class='toc-title toc-title-"+level+"'>"+page.title+"</div>";
- printerFriendly += xooki.input.format.main(source);
+ printerFriendly += xooki.input.format.main(source, level);
for (var i=0; i <page.children.length; i++) {
printerFriendly += "<hr/>";
printerFriendly += arguments.callee(page.children[i], level+1);
@@ -674,7 +674,7 @@
// filters: an array of input filter names
xooki.c[inputFormat+"InputFormat"] = filters;
},
- main: function(source) {
+ main: function(source, level) {
// formats an input source
if (xooki.c.inputFormat && typeof this.getInputFilters(xooki.c.inputFormat) != "undefined") {
format = xooki.c.inputFormat;
@@ -688,7 +688,7 @@
f = xooki.input.filters[filters[i]];
if (typeof f == "function") {
try {
- source = f(source); // process filter
+ source = f(source, level); // process filter
} catch (e) {
xooki.error(e, t("error occured while processing filter ${0}", filters[i]));
}
@@ -841,7 +841,25 @@
nextPos = input.indexOf("[<" , lastStart);
}
return result + input.slice(lastStart);
- }
+ },
+
+ printFormatImgFix: function (input, level) {
+ if (level == undefined || level < 3) {
+ return input;
+ }
+ return input.replace(new RegExp('<img +src *= *\\"([^\\"]*)\\"', "g"), function (str, img, offset, s) {
+ l = level;
+ while (l > 2) {
+ if (img.indexOf("../") >= 0) {
+ img = img.substring(3);
+ } else {
+ break;
+ }
+ l--;
+ }
+ return '<img src="'+img+'"';
+ });
+ }
},
@@ -952,7 +970,7 @@
xooki.c.initProperty("xookiInputFormat", ["xooki"]);
xooki.c.initProperty("allowEdit", !batchMode && xooki.pageURL.substr(0,5) == "file:");
- xooki.input.format.define("xooki", ["code", "shortcuts", "url", "xookiLinks", "jira", "lineBreak" , "includes"]);
+ xooki.input.format.define("xooki", ["code", "shortcuts", "url", "xookiLinks", "jira", "lineBreak" , "includes", "printFormatImgFix"]);
xooki.c.path = (typeof xooki.c.path != "undefined")?xooki.c.path:{};
xooki.c.path.initProperty = initConfigProperty;