Commit 74c8a635ce27336cd385d438291b22e921f88e1c

Authored by Dmitriy Zaporozhets
1 parent 313ac555

Move project nav checks to helper

app/helpers/projects_helper.rb
@@ -48,4 +48,36 @@ module ProjectsHelper @@ -48,4 +48,36 @@ module ProjectsHelper
48 def remove_project_message(project) 48 def remove_project_message(project)
49 "You are going to remove #{project.name_with_namespace}.\n Removed project CANNOT be restored!\n Are you ABSOLUTELY sure?" 49 "You are going to remove #{project.name_with_namespace}.\n Removed project CANNOT be restored!\n Are you ABSOLUTELY sure?"
50 end 50 end
  51 +
  52 + def project_nav_tabs
  53 + @nav_tabs ||= get_project_nav_tabs(@project, current_user)
  54 + end
  55 +
  56 + def project_nav_tab?(name)
  57 + project_nav_tabs.include? name
  58 + end
  59 +
  60 + private
  61 +
  62 + def get_project_nav_tabs(project, current_user)
  63 + nav_tabs = [:home]
  64 +
  65 + if project.repo_exists? && can?(current_user, :download_code, project)
  66 + nav_tabs << [:files, :commits, :network, :graphs]
  67 + end
  68 +
  69 + if project.repo_exists? && project.merge_requests_enabled
  70 + nav_tabs << :merge_requests
  71 + end
  72 +
  73 + if can?(current_user, :admin_project, project)
  74 + nav_tabs << :settings
  75 + end
  76 +
  77 + [:issues, :wiki, :wall, :snippets].each do |feature|
  78 + nav_tabs << feature if project.send :"#{feature}_enabled"
  79 + end
  80 +
  81 + nav_tabs.flatten
  82 + end
51 end 83 end
app/views/layouts/nav/_project.html.haml
@@ -3,43 +3,48 @@ @@ -3,43 +3,48 @@
3 = link_to project_path(@project), title: "Project" do 3 = link_to project_path(@project), title: "Project" do
4 %i.icon-home 4 %i.icon-home
5 5
6 - - unless @project.empty_repo?  
7 - - if can? current_user, :download_code, @project  
8 - = nav_link(controller: %w(tree blob blame)) do  
9 - = link_to 'Files', project_tree_path(@project, @ref || @repository.root_ref)  
10 - = nav_link(controller: %w(commit commits compare repositories protected_branches)) do  
11 - = link_to "Commits", project_commits_path(@project, @ref || @repository.root_ref)  
12 - = nav_link(controller: %w(network)) do  
13 - = link_to "Network", project_network_path(@project, @ref || @repository.root_ref)  
14 - = nav_link(controller: %w(graphs)) do  
15 - = link_to "Graphs", project_graph_path(@project, @ref || @repository.root_ref)  
16 -  
17 - - if @project.issues_enabled 6 + - if project_nav_tab? :files
  7 + = nav_link(controller: %w(tree blob blame)) do
  8 + = link_to 'Files', project_tree_path(@project, @ref || @repository.root_ref)
  9 +
  10 + - if project_nav_tab? :commits
  11 + = nav_link(controller: %w(commit commits compare repositories protected_branches)) do
  12 + = link_to "Commits", project_commits_path(@project, @ref || @repository.root_ref)
  13 +
  14 + - if project_nav_tab? :network
  15 + = nav_link(controller: %w(network)) do
  16 + = link_to "Network", project_network_path(@project, @ref || @repository.root_ref)
  17 +
  18 + - if project_nav_tab? :graphs
  19 + = nav_link(controller: %w(graphs)) do
  20 + = link_to "Graphs", project_graph_path(@project, @ref || @repository.root_ref)
  21 +
  22 + - if project_nav_tab? :issues
18 = nav_link(controller: %w(issues milestones labels)) do 23 = nav_link(controller: %w(issues milestones labels)) do
19 = link_to url_for_project_issues do 24 = link_to url_for_project_issues do
20 Issues 25 Issues
21 - if @project.used_default_issues_tracker? 26 - if @project.used_default_issues_tracker?
22 %span.count.issue_counter= @project.issues.opened.count 27 %span.count.issue_counter= @project.issues.opened.count
23 28
24 - - if @project.repo_exists? && @project.merge_requests_enabled 29 + - if project_nav_tab? :merge_requests
25 = nav_link(controller: :merge_requests) do 30 = nav_link(controller: :merge_requests) do
26 = link_to project_merge_requests_path(@project) do 31 = link_to project_merge_requests_path(@project) do
27 Merge Requests 32 Merge Requests
28 %span.count.merge_counter= @project.merge_requests.opened.count 33 %span.count.merge_counter= @project.merge_requests.opened.count
29 34
30 - - if @project.wiki_enabled 35 + - if project_nav_tab? :wiki
31 = nav_link(controller: :wikis) do 36 = nav_link(controller: :wikis) do
32 = link_to 'Wiki', project_wiki_path(@project, :home) 37 = link_to 'Wiki', project_wiki_path(@project, :home)
33 38
34 - - if @project.wall_enabled 39 + - if project_nav_tab? :wall
35 = nav_link(controller: :walls) do 40 = nav_link(controller: :walls) do
36 = link_to 'Wall', project_wall_path(@project) 41 = link_to 'Wall', project_wall_path(@project)
37 42
38 - - if @project.snippets_enabled 43 + - if project_nav_tab? :snippets
39 = nav_link(controller: :snippets) do 44 = nav_link(controller: :snippets) do
40 = link_to 'Snippets', project_snippets_path(@project) 45 = link_to 'Snippets', project_snippets_path(@project)
41 46
42 - - if can? current_user, :admin_project, @project 47 + - if project_nav_tab? :settings
43 = nav_link(html_options: {class: "#{project_tab_class}"}) do 48 = nav_link(html_options: {class: "#{project_tab_class}"}) do
44 = link_to edit_project_path(@project), class: "stat-tab tab " do 49 = link_to edit_project_path(@project), class: "stat-tab tab " do
45 Settings 50 Settings