(split from Problems with graphviz.pm plug-in)

[graphviz] generates image URLs relative to the page being rendered, which means the URLs wont work when previewing a graph from the CGI script.

Here is an updated patch againt ikiwiki-2.5:

Applied, thanks. --Joey

--- IkiWiki/Plugin/graphviz.pm.orig 2007-07-27 11:35:05.000000000 +0200
+++ IkiWiki/Plugin/graphviz.pm  2007-07-27 11:36:02.000000000 +0200
@@ -69,7 +69,12 @@ sub render_graph (\%) {
        }
    }

-   return "<img src=\"".urlto($dest, $params{page})."\" />\n";
+   if ($params{preview}) {
+       return "<img src=\"".urlto($dest, "")."\" />\n";
+   }
+   else {
+       return "<img src=\"".urlto($dest, $params{page})."\" />\n";
+   }
 }

 sub graph (@) {

--HenrikBrixAndersen

Despite this patch I am still experiencing the problem. Normal page source for a graph contains:

<div id="content">
<p><img src="./graph-c9fd2a197322feb417bdedbca5e99f5aa65b3f06.png" /></p>

</div>

preview contains

<div id="preview">
<p><img src="./demo/diagrams/graph-c9fd2a197322feb417bdedbca5e99f5aa65b3f06.png" /></p>

</div>

I don't quite understand why, this makes sense from the CGI path (in my case from the root of the site). The browsers appear to be trying to fetch /demo/diagrams/demo/diagrams/graph-c9fd2a197322feb417bdedbca5e99f5aa65b3f06.png (i.e., prepending the required relpath twice). -- Jon

Yeah, that patch may have been right once, but it's wrong now; preview mode uses <base> to make urls work the same as they would when viewing the html page.

Perhaps this was not noticed for a while while because it only shows up if previewing an unchanged graph on a page that has already been built before. Fixed now. done --Joey