Implement top navigation concept for profile area

Main idea is to keep left sidebar static so user is not confused by
changing context. Instead we put changing navigation with changing
content in one main block

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
Dmitriy Zaporozhets 2016-04-19 20:05:30 +02:00
parent 55380e69fc
commit 324e57693b
No known key found for this signature in database
GPG Key ID: 627C5F589F467F17
16 changed files with 33 additions and 22 deletions

View File

@ -185,3 +185,11 @@
}
}
}
.layout-nav {
margin-bottom: 5px;
.nav-links {
padding: 0 $gl-padding;
}
}

View File

@ -84,6 +84,14 @@ module PageLayoutHelper
end
end
def nav(name = nil)
if name
@nav = name
else
@nav
end
end
def fluid_layout(enabled = false)
if @fluid_layout.nil?
@fluid_layout = (current_user && current_user.layout == "fluid") || enabled

View File

@ -110,4 +110,12 @@ module TabHelper
'active'
end
end
def profile_tab_class
if controller.controller_path =~ /\Aprofiles/
return 'active'
end
'active' if current_controller?('oauth/applications')
end
end

View File

@ -1,5 +1,4 @@
- page_title "Applications"
- header_title page_title, applications_profile_path
.row.prepend-top-default
.col-lg-3.profile-settings-sidebar

View File

@ -25,6 +25,9 @@
.content-wrapper
= render "layouts/flash"
= yield :flash_message
- if defined?(nav) && nav
.layout-nav
= render "layouts/nav/#{nav}"
%div{ class: (container_class unless @no_container) }
.content
.clearfix

View File

@ -6,6 +6,6 @@
= yield :scripts_body_top
= render "layouts/header/default", title: header_title
= render 'layouts/page', sidebar: sidebar
= render 'layouts/page', sidebar: sidebar, nav: nav
= yield :scripts_body

View File

@ -48,8 +48,7 @@
%span
Help
%li.separate-item
= nav_link(controller: :profile) do
= nav_link(html_options: {class: profile_tab_class}) do
= link_to profile_path, title: 'Profile Settings', data: {placement: 'bottom'} do
= icon('user fw')
%span

View File

@ -1,17 +1,9 @@
%ul.nav.nav-sidebar
= nav_link do
= link_to root_path, title: 'Go to dashboard', class: 'back-link' do
= icon('caret-square-o-left fw')
%span
Go to dashboard
%li.separate-item
%ul.nav-links
= nav_link(path: 'profiles#show', html_options: {class: 'home'}) do
= link_to profile_path, title: 'Profile Settings' do
= icon('user fw')
%span
Profile Settings
Profile
= nav_link(controller: [:accounts, :two_factor_auths]) do
= link_to profile_account_path, title: 'Account' do
= icon('gear fw')

View File

@ -1,5 +1,6 @@
- page_title "Profile Settings"
- header_title "Profile Settings", profile_path unless header_title
- sidebar "profile"
- sidebar "dashboard"
- nav "profile"
= render template: "layouts/application"

View File

@ -1,5 +1,4 @@
- page_title "Account"
- header_title page_title, profile_account_path
- if current_user.ldap_user?
.alert.alert-info

View File

@ -1,5 +1,4 @@
- page_title "Audit Log"
- header_title page_title, audit_log_profile_path
.row.prepend-top-default
.col-lg-3.profile-settings-sidebar

View File

@ -1,5 +1,4 @@
- page_title "Emails"
- header_title page_title, profile_emails_path
.row.prepend-top-default
.col-lg-3.profile-settings-sidebar

View File

@ -1,5 +1,4 @@
- page_title "SSH Keys"
- header_title page_title, profile_keys_path
.row.prepend-top-default
.col-lg-3.profile-settings-sidebar

View File

@ -1,5 +1,4 @@
- page_title "Notifications"
- header_title page_title, profile_notifications_path
%div
- if @user.errors.any?

View File

@ -1,5 +1,4 @@
- page_title "Password"
- header_title page_title, edit_profile_password_path
.row.prepend-top-default
.col-lg-3.profile-settings-sidebar

View File

@ -1,5 +1,4 @@
- page_title 'Preferences'
- header_title page_title, profile_preferences_path
= form_for @user, url: profile_preferences_path, remote: true, method: :put, html: {class: 'row prepend-top-default js-preferences-form'} do |f|
.col-lg-3.profile-settings-sidebar