42ccb5981a
When we are filtering by a single project, and the current user has access to see confidential issues on that project, we don't need to filter by confidentiality at all - just as if the user were an admin. The filter by confidentiality often picks a non-optimal query plan: for instance, AND-ing the results of all issues in the project (a relatively small set), and all issues in the states requested (a huge set), rather than just starting small and winnowing further.
108 lines
4.9 KiB
Text
108 lines
4.9 KiB
Text
- can_edit = can?(current_user, :admin_project, @project)
|
|
.scrolling-tabs-container{ class: nav_control_class }
|
|
.fade-left
|
|
= icon('angle-left')
|
|
.fade-right
|
|
= icon('angle-right')
|
|
%ul.nav-links.scrolling-tabs
|
|
= nav_link(path: ['projects#show', 'projects#activity', 'cycle_analytics#show'], html_options: { class: 'home' }) do
|
|
= link_to project_path(@project), title: 'Project', class: 'shortcuts-project' do
|
|
%span
|
|
Project
|
|
|
|
- if project_nav_tab? :files
|
|
= nav_link(controller: %w(tree blob blame edit_tree new_tree find_file commit commits compare projects/repositories tags branches releases graphs network)) do
|
|
= link_to project_files_path(@project), title: 'Repository', class: 'shortcuts-tree' do
|
|
%span
|
|
Repository
|
|
|
|
- if project_nav_tab? :container_registry
|
|
= nav_link(controller: %w[projects/registry/repositories]) do
|
|
= link_to project_container_registry_path(@project), title: 'Container Registry', class: 'shortcuts-container-registry' do
|
|
%span
|
|
Registry
|
|
|
|
- if project_nav_tab? :issues
|
|
= nav_link(controller: @project.default_issues_tracker? ? [:issues, :labels, :milestones, :boards] : :issues) do
|
|
= link_to namespace_project_issues_path(@project.namespace, @project), title: 'Issues', class: 'shortcuts-issues' do
|
|
%span
|
|
Issues
|
|
- if @project.default_issues_tracker?
|
|
%span.badge.count.issue_counter= number_with_delimiter(IssuesFinder.new(current_user, project_id: @project.id, state: :opened).execute.count)
|
|
|
|
- if project_nav_tab? :merge_requests
|
|
- controllers = [:merge_requests, 'projects/merge_requests/conflicts']
|
|
- controllers.push(:merge_requests, :labels, :milestones) unless @project.default_issues_tracker?
|
|
= nav_link(controller: controllers) do
|
|
= link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do
|
|
%span
|
|
Merge Requests
|
|
%span.badge.count.merge_counter.js-merge-counter= number_with_delimiter(MergeRequestsFinder.new(current_user, project_id: @project.id, state: :opened).execute.count)
|
|
|
|
- if project_nav_tab? :pipelines
|
|
= nav_link(controller: [:pipelines, :builds, :environments, :artifacts]) do
|
|
= link_to project_pipelines_path(@project), title: 'Pipelines', class: 'shortcuts-pipelines' do
|
|
%span
|
|
Pipelines
|
|
|
|
- if project_nav_tab? :wiki
|
|
= nav_link(controller: :wikis) do
|
|
= link_to get_project_wiki_path(@project), title: 'Wiki', class: 'shortcuts-wiki' do
|
|
%span
|
|
Wiki
|
|
|
|
- if project_nav_tab? :snippets
|
|
= nav_link(controller: :snippets) do
|
|
= link_to namespace_project_snippets_path(@project.namespace, @project), title: 'Snippets', class: 'shortcuts-snippets' do
|
|
%span
|
|
Snippets
|
|
|
|
- if project_nav_tab? :settings
|
|
= nav_link(path: %w[projects#edit members#show integrations#show services#edit repository#show ci_cd#show pages#show]) do
|
|
= link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do
|
|
%span
|
|
Settings
|
|
- else
|
|
= nav_link(path: %w[members#show]) do
|
|
= link_to namespace_project_settings_members_path(@project.namespace, @project), title: 'Settings', class: 'shortcuts-tree' do
|
|
%span
|
|
Settings
|
|
|
|
-# Shortcut to Project > Activity
|
|
%li.hidden
|
|
= link_to activity_project_path(@project), title: 'Activity', class: 'shortcuts-project-activity' do
|
|
%span
|
|
Activity
|
|
|
|
-# Shortcut to Repository > Graph (formerly, Network)
|
|
- if project_nav_tab? :network
|
|
%li.hidden
|
|
= link_to namespace_project_network_path(@project.namespace, @project, current_ref), title: 'Network', class: 'shortcuts-network' do
|
|
Graph
|
|
|
|
-# Shortcut to Repository > Charts (formerly, top-nav item "Graphs")
|
|
- unless @project.empty_repo?
|
|
%li.hidden
|
|
= link_to charts_namespace_project_graph_path(@project.namespace, @project, current_ref), title: 'Charts', class: 'shortcuts-repository-charts' do
|
|
Charts
|
|
|
|
-# Shortcut to Issues > New Issue
|
|
%li.hidden
|
|
= link_to new_namespace_project_issue_path(@project.namespace, @project), class: 'shortcuts-new-issue' do
|
|
Create a new issue
|
|
|
|
-# Shortcut to Pipelines > Jobs
|
|
- if project_nav_tab? :builds
|
|
%li.hidden
|
|
= link_to project_jobs_path(@project), title: 'Jobs', class: 'shortcuts-builds' do
|
|
Jobs
|
|
|
|
-# Shortcut to commits page
|
|
- if project_nav_tab? :commits
|
|
%li.hidden
|
|
= link_to project_commits_path(@project), title: 'Commits', class: 'shortcuts-commits' do
|
|
Commits
|
|
|
|
-# Shortcut to issue boards
|
|
%li.hidden
|
|
= link_to 'Issue Boards', namespace_project_boards_path(@project.namespace, @project), title: 'Issue Boards', class: 'shortcuts-issue-boards'
|