<html>
<head>
<style><!--
  body {background-color:#ffffff;}
  .file {border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;}
  .pathname {font-family:monospace; float:right;}
  .fileheader {margin-bottom:.5em;}
  .diff {margin:0;}
  .tasklist {padding:4px;border:1px dashed #000000;margin-top:1em;}
  .tasklist ul {margin-top:0;margin-bottom:0;}
  tr.alt {background-color:#eeeeee}
  #added {background-color:#ddffdd;}
  #addedchars {background-color:#99ff99;font-weight:bolder;}
  tr.alt #added {background-color:#ccf7cc;}
  #removed {background-color:#ffdddd;}
  #removedchars {background-color:#ff9999;font-weight:bolder;}
  tr.alt #removed {background-color:#f7cccc;}
  #info {color:#888888;}
  #context {background-color:#eeeeee;}
  td {padding-left:.3em;padding-right:.3em;}
  tr.head {border-bottom-width:1px;border-bottom-style:solid;}
  tr.head td {padding:0;padding-top:.2em;}
  .task {background-color:#ffff00;}
  .comment {padding:4px;border:1px dashed #000000;background-color:#ffffdd}
  .error {color:red;}
  hr {border-width:0px;height:2px;background:black;}
--></style>
</head>
<body>
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head"><td colspan="4">Commit in <b><tt>trunk/as2api/output/html</tt></b><span id="info"> on MAIN</span></td></tr>
<tr><td><tt><a href="#file1">driver.rb</a></tt></td><td align="right" id="added">+1</td><td align="right" id="removed">-1</td><td nowrap="nowrap" align="center">255 -&gt; 256</td></tr>
<tr class="alt"><td><tt><a href="#file2">html_framework.rb</a></tt></td><td align="right" id="added">+5</td><td align="right" id="removed">-1</td><td nowrap="nowrap" align="center">255 -&gt; 256</td></tr>
<tr><td><tt><a href="#file3">index.rb</a></tt></td><td></td><td align="right" id="removed">-25</td><td nowrap="nowrap" align="center">255 -&gt; 256</td></tr>
<tr class="alt"><td><tt><a href="#file4">quicknav.rb</a></tt></td><td align="right" id="added">+55</td><td align="right" id="removed">-19</td><td nowrap="nowrap" align="center">255 -&gt; 256</td></tr>
<tr><td></td><td align="right" id="added">+61</td><td align="right" id="removed">-46</td><td></td></tr>
</table>
<small id="info">4 modified files</small><br />
<pre class="comment">
Do it with XML.  No longer breaks the back button, but only tested in Firefox
so far.
</pre>
<hr /><a name="file1" /><div class="file">
<span class="pathname">trunk/as2api/output/html</span><br />
<div class="fileheader"><big><b>driver.rb</b></big> <small id="info">255 -&gt; 256</small></div>
<pre class="diff"><small id="info">--- trunk/as2api/output/html/driver.rb        2005-11-07 19:44:09 UTC (rev 255)
+++ trunk/as2api/output/html/driver.rb        2005-11-08 14:34:23 UTC (rev 256)
@@ -93,7 +93,7 @@
</small></pre><pre class="diff" id="context">     indexer = Indexer.new
     indexer.create_index(@type_agregator)
     list &lt;&lt; IndexPage.new(@conf, indexer)
</pre><pre class="diff" id="removed">-    list &lt;&lt; QuicknavData.new(<span id="removedchars">@conf,&nbsp;</span>indexer)
</pre><pre class="diff" id="added">+    list &lt;&lt; QuicknavData.new(indexer)
</pre><pre class="diff" id="context">   end
 
   def build_navigation_template
</pre></div>
<hr /><a name="file2" /><div class="file">
<span class="pathname">trunk/as2api/output/html</span><br />
<div class="fileheader"><big><b>html_framework.rb</b></big> <small id="info">255 -&gt; 256</small></div>
<pre class="diff"><small id="info">--- trunk/as2api/output/html/html_framework.rb        2005-11-07 19:44:09 UTC (rev 255)
+++ trunk/as2api/output/html/html_framework.rb        2005-11-08 14:34:23 UTC (rev 256)
@@ -42,6 +42,10 @@
</small></pre><pre class="diff" id="context"> 
   attr_writer :title
 
</pre><pre class="diff" id="added">+  def base_name
+    "#{@base_name}.html"
+  end
+
</pre><pre class="diff" id="context">   def title
     if @title_extra
       if @title
</pre><pre class="diff"><small id="info">@@ -424,7 +428,7 @@
</small></pre><pre class="diff" id="context"> 
 def create_page(output_dir, page, format)
   dir = File.join(output_dir, page.path_name)
</pre><pre class="diff" id="removed">-  write_file(dir, "#{page.base_name}.html") do |io|
</pre><pre class="diff" id="added">+  write_file(dir, page.base_name) do |io|
</pre><pre class="diff" id="context">     if format
       out = XMLFormatter.new(XMLWriter.new(io))
       out.inlines ["span", "abbr", "acronym", "cite", "code", "dfn", "em", "kbd", "q", "samp", "strong", "var", "p", "address", "h1", "h2", "h3", "h4", "h5", "h6", "a", "dt", "dd", "li", "ins", "del", "bdo", "b", "big", "i", "small", "sub", "sup", "tt", "img", "th", "td",]
</pre></div>
<hr /><a name="file3" /><div class="file">
<span class="pathname">trunk/as2api/output/html</span><br />
<div class="fileheader"><big><b>index.rb</b></big> <small id="info">255 -&gt; 256</small></div>
<pre class="diff"><small id="info">--- trunk/as2api/output/html/index.rb        2005-11-07 19:44:09 UTC (rev 255)
+++ trunk/as2api/output/html/index.rb        2005-11-08 14:34:23 UTC (rev 256)
@@ -148,29 +148,4 @@
</small></pre><pre class="diff" id="context">   end
 end
 
</pre><pre class="diff" id="removed">-class QuicknavData &lt; Page
-  def initialize(conf, indexer)
-    super("quicknav", "index-files")
-    @indexer = indexer
-    @title = "Alphabetical Index"
-  end
-
-  def generate_content
-    html_ul do
-      @indexer.index.each do |element|
-        html_li do
-          element.link(self)
-        end
-      end
-    end
-  end
-
-  def extra_metadata
-    # no point in search engines indexing our index,
-    {
-      "robots" =&gt; "noindex"
-    }
-  end
-end
-
</pre><pre class="diff" id="context"> # vim:softtabstop=2:shiftwidth=2
</pre></div>
<hr /><a name="file4" /><div class="file">
<span class="pathname">trunk/as2api/output/html</span><br />
<div class="fileheader"><big><b>quicknav.rb</b></big> <small id="info">255 -&gt; 256</small></div>
<pre class="diff"><small id="info">--- trunk/as2api/output/html/quicknav.rb        2005-11-07 19:44:09 UTC (rev 255)
+++ trunk/as2api/output/html/quicknav.rb        2005-11-08 14:34:23 UTC (rev 256)
@@ -7,7 +7,22 @@
</small></pre><pre class="diff" id="context"> 
   write_file(output_dir, name) do |out|
     out.print &lt;&lt;-HERE
</pre><pre class="diff" id="removed">-function attachQuicknav() {
</pre><pre class="diff" id="added">+var quicknavDoc;
+
+function loadData() {
+        // silently fails to load anything if the required DOM APIs
+        // are missing, in which case the quicknav will not appear.
+        if (document.implementation &amp;&amp; document.implementation.createDocument) {
+                quicknavDoc = document.implementation.createDocument("", "", null);
+                quicknavDoc.onload = attachQuicknav;
+                if (quicknavDoc.load) {
+                        quicknavDoc.load(adjustHref("quicknav.xml"));
+                }
+        }
+}
+
+function attachQuicknav(event) {
+        if (quicknavDoc.documentElement == null) { return; }
</pre><pre class="diff" id="context">         var main_nav = document.getElementById("main_nav");
         var li = document.createElement("li");
         var span = document.createElement("span");
</pre><pre class="diff"><small id="info">@@ -30,16 +45,7 @@
</small></pre><pre class="diff" id="context">         menu.id = "quicknav_menu";
         menu.style.visibility = "hidden";
         menu.appendChild(document.createTextNode("Loading..."));
</pre><pre class="diff" id="removed">-        
</pre><pre class="diff" id="context">         span.appendChild(menu);
</pre><pre class="diff" id="removed">-        // setup frame to load search data,
-        var dataFrame = document.createElement("iframe");
-        dataFrame.style.width = "0";
-        dataFrame.style.height = "0";
-        dataFrame.style.visibility = "hidden";
-        dataFrame.src = adjustHref("quicknav.html");
-        dataFrame.id = "data_frame"
-        span.appendChild(dataFrame);
</pre><pre class="diff" id="context"> }
 
 function quicknavFocus() {
</pre><pre class="diff"><small id="info">@@ -52,21 +58,16 @@
</small></pre><pre class="diff" id="context"> }
 function quicknavSearch() {
          var input = document.getElementById("quicknav_input");
</pre><pre class="diff" id="removed">-        var dataFrame = document.getElementById("data_frame");
</pre><pre class="diff" id="context">         var search = input.value.toLowerCase();
</pre><pre class="diff" id="removed">-        var items = dataFrame.contentDocument.getElementsByTagName("li");
</pre><pre class="diff" id="added">+        var items = quicknavDoc.getElementsByTagName("li");
</pre><pre class="diff" id="context">         var menu = document.getElementById("quicknav_menu");
         clearQuicknavMenu(menu);
         var count = 0;
         for (var i=0; i &lt; items.length; i++) {
                 var item = items[i];
</pre><pre class="diff" id="removed">-                var match = item.firstChild.text;
</pre><pre class="diff" id="added">+                var match = item.firstChild.firstChild.nodeValue;
</pre><pre class="diff" id="context">                 if (match.substr(0, search.length).toLowerCase() == search) {
</pre><pre class="diff" id="removed">-                        var clone = item.cloneNode(true);
-                        var href = clone.firstChild.getAttribute("href");
-                        href = adjustHref(href);
-                        clone.firstChild.setAttribute("href", href);
-                        menu.appendChild(clone);
</pre><pre class="diff" id="added">+                        menu.appendChild(createMenuItem(item));
</pre><pre class="diff" id="context">                         count++;
                 }
                 if (count &gt;= 8) {
</pre><pre class="diff"><small id="info">@@ -75,6 +76,18 @@
</small></pre><pre class="diff" id="context">         }
 }
 
</pre><pre class="diff" id="added">+function createMenuItem(sourceNode) {
+        var li = document.createElement("li");
+        var a = document.createElement("a");
+        li.appendChild(a);
+        var anchorText = sourceNode.firstChild.firstChild.nodeValue;
+        a.appendChild(document.createTextNode(anchorText));
+        var href = sourceNode.firstChild.getAttribute("href");
+        href = adjustHref(href);
+        a.setAttribute("href", href);
+        return li;
+}
+
</pre><pre class="diff" id="context"> function adjustHref(href) {
         return document.quicknavBasePath + "/" + href;
 }
</pre><pre class="diff"><small id="info">@@ -146,7 +159,30 @@
</small></pre><pre class="diff" id="context">     }
 }
 
</pre><pre class="diff" id="removed">-window.onload = attachQuicknav;
</pre><pre class="diff" id="added">+window.onload = loadData;
</pre><pre class="diff" id="context">     HERE
   end
 end
</pre><pre class="diff" id="added">+
+class QuicknavData &lt; Page
+
+  def initialize(indexer)
+    super("quicknav.xml", "index-files")
+    @indexer = indexer
+  end
+
+  def base_name
+    @base_name
+  end
+
+  def generate(xml_writer)
+    @io = xml_writer
+    html_ul do
+      @indexer.index.each do |element|
+        html_li do
+          element.link(self)
+        end
+      end
+    end
+  end
+end
</pre></div>
<center><small><a href="http://www.badgers-in-foil.co.uk/projects/cvsspam/" title="commit -&gt; email">CVSspam</a> 0.2.11</small></center>
</body></html>