Merge pull request #1499 from gollum/primer_breadcrumbs

Primer CSS breadcrumbs (related to #1394).
This commit is contained in:
Bart Kamphorst
2020-03-26 09:20:03 +01:00
committed by GitHub
4 changed files with 13 additions and 10 deletions
+5 -5
View File
@@ -20,18 +20,18 @@ module Precious
def breadcrumb def breadcrumb
if @path if @path
path = Pathname.new(@path) path = Pathname.new(@path)
breadcrumb = [%{<a href="#{overview_path}">Home</a>}] breadcrumb = [%{<nav aria-label="Breadcrumb"><ol><li class="breadcrumb-item"><a href="#{overview_path}">Home</a></li>}]
path.descend do |crumb| path.descend do |crumb|
title = crumb.basename title = crumb.basename
if title == path.basename if title == path.basename
breadcrumb << title breadcrumb << %{<li class="breadcrumb-item" aria-current="page">#{title}</li>}
else else
breadcrumb << %{<a href="#{overview_path}/#{crumb}/">#{title}</a>} breadcrumb << %{<li class="breadcrumb-item"><a href="#{overview_path}/#{crumb}/">#{title}</a></li>}
end end
end end
breadcrumb << %{</ol></nav>}
breadcrumb.join(' / ') breadcrumb.join("\n")
else else
'Home' 'Home'
end end
+4 -3
View File
@@ -28,13 +28,14 @@ module Precious
def breadcrumb def breadcrumb
path = Pathname.new(@page.url_path).parent path = Pathname.new(@page.url_path).parent
return '' if path.to_s == '.' return '' if path.to_s == '.'
breadcrumb = [] breadcrumb = [%{<nav aria-label="Breadcrumb"><ol>}]
path.descend do |crumb| path.descend do |crumb|
element = "#{crumb.basename}" element = "#{crumb.basename}"
next if element == @page.title next if element == @page.title
breadcrumb << %{<a href="#{overview_path}/#{crumb}/">#{element}</a>} breadcrumb << %{<li class="breadcrumb-item"><a href="#{overview_path}/#{crumb}/">#{element}</a></li>}
end end
breadcrumb.join(' / ') << ' /' breadcrumb << %{</ol></nav>}
breadcrumb.join("\n")
end end
def content def content
+2 -1
View File
@@ -41,7 +41,8 @@ context "Precious::Views::Overview" do
test "breadcrumb" do test "breadcrumb" do
@page.instance_variable_set("@path", "Mordor/Eye-Of-Sauron/Saruman") @page.instance_variable_set("@path", "Mordor/Eye-Of-Sauron/Saruman")
@page.instance_variable_set("@base_url", "") @page.instance_variable_set("@base_url", "")
assert_equal '<a href="/gollum/overview">Home</a> / <a href="/gollum/overview/Mordor/">Mordor</a> / <a href="/gollum/overview/Mordor/Eye-Of-Sauron/">Eye-Of-Sauron</a> / Saruman', @page.breadcrumb $stderr.puts @page.breadcrumb.inspect
assert_equal "<nav aria-label=\"Breadcrumb\"><ol><li class=\"breadcrumb-item\"><a href=\"/gollum/overview\">Home</a></li>\n<li class=\"breadcrumb-item\"><a href=\"/gollum/overview/Mordor/\">Mordor</a></li>\n<li class=\"breadcrumb-item\"><a href=\"/gollum/overview/Mordor/Eye-Of-Sauron/\">Eye-Of-Sauron</a></li>\n<li class=\"breadcrumb-item\" aria-current=\"page\">Saruman</li>\n</ol></nav>", @page.breadcrumb
end end
test "breadcrumb with no path" do test "breadcrumb with no path" do
+2 -1
View File
@@ -115,7 +115,8 @@ EOS
@view = Precious::Views::Page.new @view = Precious::Views::Page.new
@view.instance_variable_set :@page, page @view.instance_variable_set :@page, page
@view.instance_variable_set :@content, page.formatted_data @view.instance_variable_set :@content, page.formatted_data
assert_equal @view.breadcrumb, '<a href="/gollum/overview/subdir/">subdir</a> /' assert_equal @view.breadcrumb, "<nav aria-label=\"Breadcrumb\"><ol>\n<li class=\"breadcrumb-item\"><a href=\"/gollum/overview/subdir/\">subdir</a></li>\n</ol></nav>"
# No breadcrumb on unnested page # No breadcrumb on unnested page
@wiki.write_page('BC Test 2', :markdown, 'Test', commit_details) @wiki.write_page('BC Test 2', :markdown, 'Test', commit_details)