Commit e60185699b0cd34fe3ae37db6db318478232c84b
1 parent
b1be377f
Exists in
master
and in
4 other branches
Add 'breadcrumbs' helper for Commit breadcrumb links
Closes #1731
Showing
2 changed files
with
26 additions
and
8 deletions
Show diff stats
app/helpers/tree_helper.rb
| ... | ... | @@ -67,4 +67,29 @@ module TreeHelper |
| 67 | 67 | can?(current_user, :push_code, @project) |
| 68 | 68 | end |
| 69 | 69 | end |
| 70 | + | |
| 71 | + # Breadcrumb links for a Project and, if applicable, a tree path | |
| 72 | + def breadcrumbs | |
| 73 | + return unless @project && @ref | |
| 74 | + | |
| 75 | + # Add the root project link and the arrow icon | |
| 76 | + crumbs = content_tag(:li) do | |
| 77 | + content_tag(:span, nil, class: 'arrow') + | |
| 78 | + link_to(@project.name, project_commits_path(@project, @ref)) | |
| 79 | + end | |
| 80 | + | |
| 81 | + if @path | |
| 82 | + parts = @path.split('/') | |
| 83 | + | |
| 84 | + parts.each_with_index do |part, i| | |
| 85 | + crumbs += content_tag(:span, '/', class: 'divider') | |
| 86 | + crumbs += content_tag(:li) do | |
| 87 | + # The text is just the individual part, but the link needs all the parts before it | |
| 88 | + link_to part, project_commits_path(@project, tree_join(@ref, parts[0..i].join('/'))) | |
| 89 | + end | |
| 90 | + end | |
| 91 | + end | |
| 92 | + | |
| 93 | + crumbs.html_safe | |
| 94 | + end | |
| 70 | 95 | end | ... | ... |
app/views/commits/show.html.haml
| ... | ... | @@ -2,14 +2,7 @@ |
| 2 | 2 | |
| 3 | 3 | - if @path.present? |
| 4 | 4 | %ul.breadcrumb |
| 5 | - %li | |
| 6 | - %span.arrow | |
| 7 | - = link_to project_commits_path(@project) do | |
| 8 | - = @project.name | |
| 9 | - %span.divider | |
| 10 | - \/ | |
| 11 | - %li | |
| 12 | - %a{href: "#"}= @path.split("/").join(" / ") | |
| 5 | + = breadcrumbs | |
| 13 | 6 | |
| 14 | 7 | %div{id: dom_id(@project)} |
| 15 | 8 | #commits_list= render "commits" | ... | ... |