Merge pull request #1499 from gollum/primer_breadcrumbs
Primer CSS breadcrumbs (related to #1394).
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user