Merge branch '34023-navigation-sidebar' into 'master'
Resolve "Navigation - Move contextual navigation to sidebar" Closes #34023 See merge request !12470
This commit is contained in:
commit
18a7fa550d
13 changed files with 624 additions and 12 deletions
|
@ -74,6 +74,8 @@ $red-700: #a62d19;
|
|||
$red-800: #8b2615;
|
||||
$red-900: #711e11;
|
||||
|
||||
$purple-600: #6e49cb;
|
||||
$purple-650: #5c35ae;
|
||||
$purple-700: #4a2192;
|
||||
$purple-800: #2c0a5c;
|
||||
$purple-900: #380d75;
|
||||
|
@ -103,6 +105,7 @@ $well-light-text-color: #5b6169;
|
|||
*/
|
||||
$gl-font-size: 14px;
|
||||
$gl-text-color: rgba(0, 0, 0, .85);
|
||||
$gl-text-color-light: rgba(0, 0, 0, .7);
|
||||
$gl-text-color-secondary: rgba(0, 0, 0, .55);
|
||||
$gl-text-color-disabled: rgba(0, 0, 0, .35);
|
||||
$gl-text-color-inverted: rgba(255, 255, 255, 1.0);
|
||||
|
|
121
app/assets/stylesheets/new_sidebar.scss
Normal file
121
app/assets/stylesheets/new_sidebar.scss
Normal file
|
@ -0,0 +1,121 @@
|
|||
@import "framework/variables";
|
||||
@import 'framework/tw_bootstrap_variables';
|
||||
@import "bootstrap/variables";
|
||||
|
||||
$new-sidebar-width: 220px;
|
||||
|
||||
.page-with-new-sidebar {
|
||||
|
||||
@media (min-width: $screen-sm-min) {
|
||||
padding-left: $new-sidebar-width;
|
||||
}
|
||||
|
||||
.right-sidebar {
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-sidebar {
|
||||
position: fixed;
|
||||
z-index: 400;
|
||||
width: $new-sidebar-width;
|
||||
top: 50px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
overflow: auto;
|
||||
background-color: $gray-light;
|
||||
border-right: 1px solid $border-color;
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
li {
|
||||
a {
|
||||
display: block;
|
||||
padding: 12px 14px;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $gl-text-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-sub-level-items {
|
||||
display: none;
|
||||
|
||||
> li {
|
||||
a {
|
||||
padding: 12px 24px;
|
||||
color: $gl-text-color-light;
|
||||
|
||||
&:hover {
|
||||
color: $gl-text-color;
|
||||
background-color: $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
> a {
|
||||
color: $purple-650;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-top-level-items {
|
||||
> li {
|
||||
.badge {
|
||||
float: right;
|
||||
background-color: $border-color;
|
||||
color: $gl-text-color;
|
||||
}
|
||||
|
||||
&.active {
|
||||
> a {
|
||||
background-color: $purple-600;
|
||||
color: $white-light;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.badge {
|
||||
background-color: $purple-700;
|
||||
color: $white-light;
|
||||
}
|
||||
|
||||
.sidebar-sub-level-items {
|
||||
background-color: $gray-normal;
|
||||
border-left: 6px solid $purple-600;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.active) > a:hover {
|
||||
background-color: $border-color;
|
||||
|
||||
.badge {
|
||||
transition: background-color 100ms linear;
|
||||
background-color: $gray-normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Make issue boards full-height now that sub-nav is gone
|
||||
|
||||
.boards-list {
|
||||
height: calc(100vh - 50px);
|
||||
|
||||
@media (min-width: $screen-sm-min) {
|
||||
height: 475px; // Needed for PhantomJS
|
||||
// scss-lint:disable DuplicateProperty
|
||||
height: calc(100vh - 120px);
|
||||
// scss-lint:enable DuplicateProperty
|
||||
}
|
||||
}
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
- if show_new_nav?
|
||||
= stylesheet_link_tag "new_nav", media: "all"
|
||||
= stylesheet_link_tag "new_sidebar", media: "all"
|
||||
|
||||
= Gon::Base.render_data
|
||||
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
.page-with-sidebar{ class: page_gutter_class }
|
||||
- if defined?(nav) && nav
|
||||
.layout-nav
|
||||
.container-fluid
|
||||
= render "layouts/nav/#{nav}"
|
||||
- if content_for?(:sub_nav)
|
||||
= yield :sub_nav
|
||||
.content-wrapper{ class: layout_nav_class }
|
||||
.page-with-sidebar{ class: "#{('page-with-new-sidebar' if defined?(@new_sidebar) && @new_sidebar)} #{page_gutter_class}" }
|
||||
- if show_new_nav?
|
||||
- if defined?(nav) && nav
|
||||
= render "layouts/nav/#{nav}"
|
||||
- else
|
||||
- if defined?(nav) && nav
|
||||
.layout-nav
|
||||
.container-fluid
|
||||
= render "layouts/nav/#{nav}"
|
||||
- if content_for?(:sub_nav)
|
||||
= yield :sub_nav
|
||||
.content-wrapper{ class: "#{(layout_nav_class unless show_new_nav?)}" }
|
||||
.alert-wrapper
|
||||
= render "layouts/broadcast"
|
||||
= render "layouts/flash"
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
- page_title "Admin Area"
|
||||
- header_title "Admin Area", admin_root_path
|
||||
- nav "admin"
|
||||
- if show_new_nav?
|
||||
- nav "new_admin_sidebar"
|
||||
- @new_sidebar = true
|
||||
- else
|
||||
- nav "admin"
|
||||
|
||||
= render template: "layouts/application"
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
- page_title @group.name
|
||||
- page_description @group.description unless page_description
|
||||
- header_title group_title(@group) unless header_title
|
||||
- nav "group"
|
||||
- if show_new_nav?
|
||||
- nav "new_group_sidebar"
|
||||
- @new_sidebar = true
|
||||
- else
|
||||
- nav "group"
|
||||
|
||||
= render template: "layouts/application"
|
||||
|
|
119
app/views/layouts/nav/_new_admin_sidebar.html.haml
Normal file
119
app/views/layouts/nav/_new_admin_sidebar.html.haml
Normal file
|
@ -0,0 +1,119 @@
|
|||
.nav-sidebar
|
||||
%ul.sidebar-top-level-items
|
||||
= nav_link(controller: %w(dashboard admin projects users groups builds runners cohorts), html_options: {class: 'home'}) do
|
||||
= link_to admin_root_path, title: 'Overview', class: 'shortcuts-tree' do
|
||||
%span
|
||||
Overview
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
= nav_link(controller: :dashboard, html_options: {class: 'home'}) do
|
||||
= link_to admin_root_path, title: 'Overview' do
|
||||
%span
|
||||
Overview
|
||||
= nav_link(controller: [:admin, :projects]) do
|
||||
= link_to admin_projects_path, title: 'Projects' do
|
||||
%span
|
||||
Projects
|
||||
= nav_link(controller: :users) do
|
||||
= link_to admin_users_path, title: 'Users' do
|
||||
%span
|
||||
Users
|
||||
= nav_link(controller: :groups) do
|
||||
= link_to admin_groups_path, title: 'Groups' do
|
||||
%span
|
||||
Groups
|
||||
= nav_link path: 'builds#index' do
|
||||
= link_to admin_jobs_path, title: 'Jobs' do
|
||||
%span
|
||||
Jobs
|
||||
= nav_link path: ['runners#index', 'runners#show'] do
|
||||
= link_to admin_runners_path, title: 'Runners' do
|
||||
%span
|
||||
Runners
|
||||
= nav_link path: 'cohorts#index' do
|
||||
= link_to admin_cohorts_path, title: 'Cohorts' do
|
||||
%span
|
||||
Cohorts
|
||||
|
||||
= nav_link(controller: %w(conversational_development_index system_info background_jobs logs health_check requests_profiles)) do
|
||||
= link_to admin_conversational_development_index_path, title: 'Monitoring' do
|
||||
%span
|
||||
Monitoring
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
= nav_link(controller: :conversational_development_index) do
|
||||
= link_to admin_conversational_development_index_path, title: 'ConvDev Index' do
|
||||
%span
|
||||
ConvDev Index
|
||||
= nav_link(controller: :system_info) do
|
||||
= link_to admin_system_info_path, title: 'System Info' do
|
||||
%span
|
||||
System Info
|
||||
= nav_link(controller: :background_jobs) do
|
||||
= link_to admin_background_jobs_path, title: 'Background Jobs' do
|
||||
%span
|
||||
Background Jobs
|
||||
= nav_link(controller: :logs) do
|
||||
= link_to admin_logs_path, title: 'Logs' do
|
||||
%span
|
||||
Logs
|
||||
= nav_link(controller: :health_check) do
|
||||
= link_to admin_health_check_path, title: 'Health Check' do
|
||||
%span
|
||||
Health Check
|
||||
= nav_link(controller: :requests_profiles) do
|
||||
= link_to admin_requests_profiles_path, title: 'Requests Profiles' do
|
||||
%span
|
||||
Requests Profiles
|
||||
|
||||
= nav_link(controller: :broadcast_messages) do
|
||||
= link_to admin_broadcast_messages_path, title: 'Messages' do
|
||||
%span
|
||||
Messages
|
||||
= nav_link(controller: [:hooks, :hook_logs]) do
|
||||
= link_to admin_hooks_path, title: 'Hooks' do
|
||||
%span
|
||||
System Hooks
|
||||
|
||||
= nav_link(controller: :applications) do
|
||||
= link_to admin_applications_path, title: 'Applications' do
|
||||
%span
|
||||
Applications
|
||||
|
||||
= nav_link(controller: :abuse_reports) do
|
||||
= link_to admin_abuse_reports_path, title: "Abuse Reports" do
|
||||
%span
|
||||
Abuse Reports
|
||||
%span.badge.count= number_with_delimiter(AbuseReport.count(:all))
|
||||
|
||||
- if akismet_enabled?
|
||||
= nav_link(controller: :spam_logs) do
|
||||
= link_to admin_spam_logs_path, title: "Spam Logs" do
|
||||
%span
|
||||
Spam Logs
|
||||
|
||||
= nav_link(controller: :deploy_keys) do
|
||||
= link_to admin_deploy_keys_path, title: 'Deploy Keys' do
|
||||
%span
|
||||
Deploy Keys
|
||||
|
||||
= nav_link(controller: :services) do
|
||||
= link_to admin_application_settings_services_path, title: 'Service Templates' do
|
||||
%span
|
||||
Service Templates
|
||||
|
||||
= nav_link(controller: :labels) do
|
||||
= link_to admin_labels_path, title: 'Labels' do
|
||||
%span
|
||||
Labels
|
||||
|
||||
= nav_link(controller: :appearances) do
|
||||
= link_to admin_appearances_path, title: 'Appearances' do
|
||||
%span
|
||||
Appearance
|
||||
|
||||
%li.divider
|
||||
= nav_link(controller: :application_settings) do
|
||||
= link_to admin_application_settings_path, title: 'Settings' do
|
||||
%span
|
||||
Settings
|
56
app/views/layouts/nav/_new_group_sidebar.html.haml
Normal file
56
app/views/layouts/nav/_new_group_sidebar.html.haml
Normal file
|
@ -0,0 +1,56 @@
|
|||
.nav-sidebar
|
||||
%ul.sidebar-top-level-items
|
||||
= nav_link(path: ['groups#show', 'groups#activity', 'groups#subgroups'], html_options: { class: 'home' }) do
|
||||
= link_to group_path(@group), title: 'Home' do
|
||||
%span
|
||||
Group
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
= nav_link(path: ['groups#show', 'groups#subgroups'], html_options: { class: 'home' }) do
|
||||
= link_to group_path(@group), title: 'Group Home' do
|
||||
%span
|
||||
Home
|
||||
|
||||
= nav_link(path: 'groups#activity') do
|
||||
= link_to activity_group_path(@group), title: 'Activity' do
|
||||
%span
|
||||
Activity
|
||||
|
||||
= nav_link(path: ['groups#issues', 'labels#index', 'milestones#index']) do
|
||||
= link_to issues_group_path(@group), title: 'Issues' do
|
||||
%span
|
||||
Issues
|
||||
- issues = IssuesFinder.new(current_user, group_id: @group.id, state: 'opened').execute
|
||||
%span.badge.count= number_with_delimiter(issues.count)
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
= nav_link(path: 'groups#issues', html_options: { class: 'home' }) do
|
||||
= link_to issues_group_path(@group), title: 'List' do
|
||||
%span
|
||||
List
|
||||
|
||||
= nav_link(path: 'labels#index') do
|
||||
= link_to group_labels_path(@group), title: 'Labels' do
|
||||
%span
|
||||
Labels
|
||||
|
||||
= nav_link(path: 'milestones#index') do
|
||||
= link_to group_milestones_path(@group), title: 'Milestones' do
|
||||
%span
|
||||
Milestones
|
||||
|
||||
= nav_link(path: 'groups#merge_requests') do
|
||||
= link_to merge_requests_group_path(@group), title: 'Merge Requests' do
|
||||
%span
|
||||
Merge Requests
|
||||
- merge_requests = MergeRequestsFinder.new(current_user, group_id: @group.id, state: 'opened', non_archived: true).execute
|
||||
%span.badge.count= number_with_delimiter(merge_requests.count)
|
||||
= nav_link(path: 'group_members#index') do
|
||||
= link_to group_group_members_path(@group), title: 'Members' do
|
||||
%span
|
||||
Members
|
||||
- if current_user && can?(current_user, :admin_group, @group)
|
||||
= nav_link(path: %w[groups#projects groups#edit]) do
|
||||
= link_to edit_group_path(@group), title: 'Settings' do
|
||||
%span
|
||||
Settings
|
49
app/views/layouts/nav/_new_profile_sidebar.html.haml
Normal file
49
app/views/layouts/nav/_new_profile_sidebar.html.haml
Normal file
|
@ -0,0 +1,49 @@
|
|||
.nav-sidebar
|
||||
%ul.sidebar-top-level-items
|
||||
= nav_link(path: 'profiles#show', html_options: {class: 'home'}) do
|
||||
= link_to profile_path, title: 'Profile Settings' do
|
||||
%span
|
||||
Profile
|
||||
= nav_link(controller: [:accounts, :two_factor_auths]) do
|
||||
= link_to profile_account_path, title: 'Account' do
|
||||
%span
|
||||
Account
|
||||
- if current_application_settings.user_oauth_applications?
|
||||
= nav_link(controller: 'oauth/applications') do
|
||||
= link_to applications_profile_path, title: 'Applications' do
|
||||
%span
|
||||
Applications
|
||||
= nav_link(controller: :chat_names) do
|
||||
= link_to profile_chat_names_path, title: 'Chat' do
|
||||
%span
|
||||
Chat
|
||||
= nav_link(controller: :personal_access_tokens) do
|
||||
= link_to profile_personal_access_tokens_path, title: 'Access Tokens' do
|
||||
%span
|
||||
Access Tokens
|
||||
= nav_link(controller: :emails) do
|
||||
= link_to profile_emails_path, title: 'Emails' do
|
||||
%span
|
||||
Emails
|
||||
- unless current_user.ldap_user?
|
||||
= nav_link(controller: :passwords) do
|
||||
= link_to edit_profile_password_path, title: 'Password' do
|
||||
%span
|
||||
Password
|
||||
= nav_link(controller: :notifications) do
|
||||
= link_to profile_notifications_path, title: 'Notifications' do
|
||||
%span
|
||||
Notifications
|
||||
|
||||
= nav_link(controller: :keys) do
|
||||
= link_to profile_keys_path, title: 'SSH Keys' do
|
||||
%span
|
||||
SSH Keys
|
||||
= nav_link(controller: :preferences) do
|
||||
= link_to profile_preferences_path, title: 'Preferences' do
|
||||
%span
|
||||
Preferences
|
||||
= nav_link(path: 'profiles#audit_log') do
|
||||
= link_to audit_log_profile_path, title: 'Authentication log' do
|
||||
%span
|
||||
Authentication log
|
242
app/views/layouts/nav/_new_project_sidebar.html.haml
Normal file
242
app/views/layouts/nav/_new_project_sidebar.html.haml
Normal file
|
@ -0,0 +1,242 @@
|
|||
.nav-sidebar
|
||||
- can_edit = can?(current_user, :admin_project, @project)
|
||||
%ul.sidebar-top-level-items
|
||||
= 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
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
= nav_link(path: 'projects#show') do
|
||||
= link_to project_path(@project), title: _('Project home'), class: 'shortcuts-project' do
|
||||
%span= _('Home')
|
||||
|
||||
= nav_link(path: 'projects#activity') do
|
||||
= link_to activity_project_path(@project), title: _('Activity'), class: 'shortcuts-project-activity' do
|
||||
%span= _('Activity')
|
||||
|
||||
- if can?(current_user, :read_cycle_analytics, @project)
|
||||
= nav_link(path: 'cycle_analytics#show') do
|
||||
= link_to project_cycle_analytics_path(@project), title: _('Cycle Analytics'), class: 'shortcuts-project-cycle-analytics' do
|
||||
%span= _('Cycle Analytics')
|
||||
|
||||
- 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
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
= nav_link(controller: %w(tree blob blame edit_tree new_tree find_file)) do
|
||||
= link_to project_files_path(@project) do
|
||||
#{ _('Files') }
|
||||
|
||||
= nav_link(controller: [:commit, :commits]) do
|
||||
= link_to namespace_project_commits_path(@project.namespace, @project, current_ref) do
|
||||
#{ _('Commits') }
|
||||
|
||||
= nav_link(html_options: {class: branches_tab_class}) do
|
||||
= link_to namespace_project_branches_path(@project.namespace, @project) do
|
||||
#{ _('Branches') }
|
||||
|
||||
= nav_link(controller: [:tags, :releases]) do
|
||||
= link_to namespace_project_tags_path(@project.namespace, @project) do
|
||||
#{ _('Tags') }
|
||||
|
||||
= nav_link(path: 'graphs#show') do
|
||||
= link_to namespace_project_graph_path(@project.namespace, @project, current_ref) do
|
||||
#{ _('Contributors') }
|
||||
|
||||
= nav_link(controller: %w(network)) do
|
||||
= link_to namespace_project_network_path(@project.namespace, @project, current_ref) do
|
||||
#{ s_('ProjectNetworkGraph|Graph') }
|
||||
|
||||
= nav_link(controller: :compare) do
|
||||
= link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: current_ref) do
|
||||
#{ _('Compare') }
|
||||
|
||||
= nav_link(path: 'graphs#charts') do
|
||||
= link_to charts_namespace_project_graph_path(@project.namespace, @project, current_ref) do
|
||||
#{ _('Charts') }
|
||||
|
||||
- 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).execute.opened.count)
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
- if project_nav_tab?(:issues) && !current_controller?(:merge_requests)
|
||||
= nav_link(controller: :issues) do
|
||||
= link_to namespace_project_issues_path(@project.namespace, @project), title: 'Issues' do
|
||||
%span
|
||||
List
|
||||
|
||||
= nav_link(controller: :boards) do
|
||||
= link_to namespace_project_boards_path(@project.namespace, @project), title: 'Board' do
|
||||
%span
|
||||
Board
|
||||
|
||||
- if project_nav_tab?(:merge_requests) && current_controller?(:merge_requests)
|
||||
= nav_link(controller: :merge_requests) do
|
||||
= link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests' do
|
||||
%span
|
||||
Merge Requests
|
||||
|
||||
- if project_nav_tab? :labels
|
||||
= nav_link(controller: :labels) do
|
||||
= link_to namespace_project_labels_path(@project.namespace, @project), title: 'Labels' do
|
||||
%span
|
||||
Labels
|
||||
|
||||
- if project_nav_tab? :milestones
|
||||
= nav_link(controller: :milestones) do
|
||||
= link_to namespace_project_milestones_path(@project.namespace, @project), title: 'Milestones' do
|
||||
%span
|
||||
Milestones
|
||||
|
||||
- if project_nav_tab? :merge_requests
|
||||
= nav_link(controller: @project.default_issues_tracker? ? :merge_requests : [:merge_requests, :labels, :milestones]) 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).execute.opened.count)
|
||||
|
||||
- if project_nav_tab? :pipelines
|
||||
= nav_link(controller: [:pipelines, :builds, :jobs, :pipeline_schedules, :environments, :artifacts]) do
|
||||
= link_to project_pipelines_path(@project), title: 'Pipelines', class: 'shortcuts-pipelines' do
|
||||
%span
|
||||
Pipelines
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
- if project_nav_tab? :pipelines
|
||||
= nav_link(path: ['pipelines#index', 'pipelines#show']) do
|
||||
= link_to project_pipelines_path(@project), title: 'Pipelines', class: 'shortcuts-pipelines' do
|
||||
%span
|
||||
Pipelines
|
||||
|
||||
- if project_nav_tab? :builds
|
||||
= nav_link(controller: [:jobs, :artifacts]) do
|
||||
= link_to project_jobs_path(@project), title: 'Jobs', class: 'shortcuts-builds' do
|
||||
%span
|
||||
Jobs
|
||||
|
||||
- if project_nav_tab? :pipelines
|
||||
= nav_link(controller: :pipeline_schedules) do
|
||||
= link_to pipeline_schedules_path(@project), title: 'Schedules', class: 'shortcuts-builds' do
|
||||
%span
|
||||
Schedules
|
||||
|
||||
- if project_nav_tab? :environments
|
||||
= nav_link(controller: :environments) do
|
||||
= link_to project_environments_path(@project), title: 'Environments', class: 'shortcuts-environments' do
|
||||
%span
|
||||
Environments
|
||||
|
||||
- if @project.feature_available?(:builds, current_user) && !@project.empty_repo?
|
||||
= nav_link(path: 'pipelines#charts') do
|
||||
= link_to charts_namespace_project_pipelines_path(@project.namespace, @project), title: 'Charts', class: 'shortcuts-pipelines-charts' do
|
||||
%span
|
||||
Charts
|
||||
|
||||
- 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
|
||||
|
||||
%ul.sidebar-sub-level-items
|
||||
- can_edit = can?(current_user, :admin_project, @project)
|
||||
- if can_edit
|
||||
= nav_link(controller: :projects) do
|
||||
= link_to edit_project_path(@project), title: 'General' do
|
||||
%span
|
||||
General
|
||||
= nav_link(controller: :members) do
|
||||
= link_to project_settings_members_path(@project), title: 'Members' do
|
||||
%span
|
||||
Members
|
||||
- if can_edit
|
||||
= nav_link(controller: [:integrations, :services, :hooks, :hook_logs]) do
|
||||
= link_to project_settings_integrations_path(@project), title: 'Integrations' do
|
||||
%span
|
||||
Integrations
|
||||
= nav_link(controller: :repository) do
|
||||
= link_to namespace_project_settings_repository_path(@project.namespace, @project), title: 'Repository' do
|
||||
%span
|
||||
Repository
|
||||
- if @project.feature_available?(:builds, current_user)
|
||||
= nav_link(controller: :ci_cd) do
|
||||
= link_to namespace_project_settings_ci_cd_path(@project.namespace, @project), title: 'Pipelines' do
|
||||
%span
|
||||
Pipelines
|
||||
- if Gitlab.config.pages.enabled
|
||||
= nav_link(controller: :pages) do
|
||||
= link_to namespace_project_pages_path(@project.namespace, @project), title: 'Pages' do
|
||||
%span
|
||||
Pages
|
||||
|
||||
- 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'
|
|
@ -1,6 +1,10 @@
|
|||
- page_title "User Settings"
|
||||
- header_title "User Settings", profile_path unless header_title
|
||||
- sidebar "dashboard"
|
||||
- nav "profile"
|
||||
- if show_new_nav?
|
||||
- nav "new_profile_sidebar"
|
||||
- @new_sidebar = true
|
||||
- else
|
||||
- nav "profile"
|
||||
|
||||
= render template: "layouts/application"
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
- page_title @project.name_with_namespace
|
||||
- page_description @project.description unless page_description
|
||||
- header_title project_title(@project) unless header_title
|
||||
- nav "project"
|
||||
- if show_new_nav?
|
||||
- nav "new_project_sidebar"
|
||||
- @new_sidebar = true
|
||||
- else
|
||||
- nav "project"
|
||||
|
||||
- content_for :project_javascripts do
|
||||
- project = @target_project || @project
|
||||
|
|
|
@ -110,6 +110,7 @@ module Gitlab
|
|||
config.assets.precompile << "vendor/assets/fonts/*"
|
||||
config.assets.precompile << "test.css"
|
||||
config.assets.precompile << "new_nav.css"
|
||||
config.assets.precompile << "new_sidebar.css"
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets
|
||||
config.assets.version = '1.0'
|
||||
|
|
Loading…
Reference in a new issue