def self.traverse(path, directory_sort = false, paths = [], key_paths = [], &block)
- entries = Dir.glob(File.join(path,'*'))
+ entries = Dir.glob(File.join(path,'*')).sort
entries.sort_by! { |e| File.directory?(e) ? 1 : 0 } if directory_sort
"<li><a href='#{child[:url]}'>#{child[:title]}</a></li>"
end.uniq
- "<ul>#{entries.join}</ul>"
+ "<div id='subtopics'>
+ <h2>This chapter covers the following topics:</h2>
+ <ul>
+ #{entries.join}
+ </ul>
+ </div>
+ "
end
end
end
current_a = current.split('/').reject(&:empty?)
tree = Manual.traverse_data(@@data_tree) do |entry|
-
+
url = entry[:url]
url_a = url.split('/').reject(&:empty?)
depth = url_a.length
is_current, position, level = *process_hierarchy(current_a, url_a)
-
+
# this massively speeds up build time by not including the whole menu tree for each page
next if depth > 1 && current_a[0] != url_a[0]
erb = ::ERB.new <<-HTML
<dt class="<%= css_classes %>">
- <a name="<%= entry[:url] %>" href="<%= entry[:url] %>"><%= entry[:menu_title] %></a>
+ <a href="<%= entry[:url] %>"><%= entry[:menu_title] %></a>
</dt>
<dd class="<%= css_classes %>">
<% if entry[:children].any? %>
erb = ::ERB.new <<-HTML
<dt class="<%= css_classes %>">
- <a name="<%= entry[:url] %>" href="<%= entry[:url] %>"><%= entry[:menu_title] %></a>
+ <a href="<%= entry[:url] %>"><%= entry[:menu_title] %></a>
</dt>
<dd class="<%= css_classes %>">
</dd>
erb.result(binding)
end
end
+
+
end
- "<dl>#{tree.join}</dl>"
+ "<dl>#{tree.join}</dl>
+ <script type='text/javascript'>
+ //<![CDATA[
+ offset = document.getElementsByClassName('active')[0].offsetTop;
+ height = document.getElementById('tree').clientHeight;
+ if (offset > (height * .7)) {
+ tree.scrollTop = offset - height * .3;
+ }
+ //]]>
+ </script>"
end