diff --git a/middleman-core/lib/middleman-core/meta_pages.rb b/middleman-core/lib/middleman-core/meta_pages.rb index 340ee626..e6afae1b 100644 --- a/middleman-core/lib/middleman-core/meta_pages.rb +++ b/middleman-core/lib/middleman-core/meta_pages.rb @@ -1,6 +1,7 @@ require 'rack/builder' require 'rack/static' require 'tilt' +require 'middleman-core/meta_pages/sitemap_tree' module Middleman module MetaPages @@ -42,18 +43,13 @@ module Middleman def sitemap(env) resources = @middleman.sitemap.resources(true) - resource_tree = {} + sitemap_tree = SitemapTree.new + resources.each do |resource| - branch = resource_tree - path_parts = resource.path.split('/') - path_parts[0...-1].each do |path_part| - branch[path_part] ||= {} - branch = branch[path_part] - end - branch[path_parts.last] = resource + sitemap_tree.add_resource resource end - template('sitemap.html.erb', :resource_tree => resource_tree) + template('sitemap.html.erb', :sitemap_tree => sitemap_tree) end private @@ -61,7 +57,7 @@ module Middleman # Render a template with the given name and locals def template(template_name, locals={}) template_path = File.join(File.dirname(__FILE__), 'meta_pages', 'templates', template_name) - content = Tilt.new(template_path).render(RenderHelper.new, locals) + content = Tilt.new(template_path).render(nil, locals) response(content) end @@ -69,13 +65,6 @@ module Middleman def response(content) [ 200, {"Content-Type" => "text/html"}, Array(content) ] end - - class RenderHelper - def partial(partial_name, locals={}) - partial_path = File.join(File.dirname(__FILE__), 'meta_pages', 'templates', 'partials', partial_name) - content = Tilt.new(partial_path).render(RenderHelper.new, locals) - end - end end end end diff --git a/middleman-core/lib/middleman-core/meta_pages/assets/sitemap.js b/middleman-core/lib/middleman-core/meta_pages/assets/sitemap.js new file mode 100644 index 00000000..18f7dd1b --- /dev/null +++ b/middleman-core/lib/middleman-core/meta_pages/assets/sitemap.js @@ -0,0 +1 @@ +alert("foo"); \ No newline at end of file diff --git a/middleman-core/lib/middleman-core/meta_pages/sitemap_resource.rb b/middleman-core/lib/middleman-core/meta_pages/sitemap_resource.rb new file mode 100644 index 00000000..769e401f --- /dev/null +++ b/middleman-core/lib/middleman-core/meta_pages/sitemap_resource.rb @@ -0,0 +1,14 @@ +module Middleman + module MetaPages + # View class for a sitemap resource + class SitemapResource + def initialize(resource) + @resource = resource + end + + def render + "
#{@resource.destination_path}
" + end + end + end +end diff --git a/middleman-core/lib/middleman-core/meta_pages/sitemap_tree.rb b/middleman-core/lib/middleman-core/meta_pages/sitemap_tree.rb new file mode 100644 index 00000000..ddd7f27b --- /dev/null +++ b/middleman-core/lib/middleman-core/meta_pages/sitemap_tree.rb @@ -0,0 +1,48 @@ +require 'middleman-core/meta_pages/sitemap_resource' + +module Middleman + module MetaPages + # View class for a sitemap tree + class SitemapTree + def initialize + @children = {} + end + + def add_resource(resource) + add_path(resource.path.split('/'), resource) + end + + def render + content = "" + @children.keys.sort_by(&:downcase).each do |path_part| + content << "