Commit 031ae7756e11f3aa3c53b81b408abdd762eef42a
1 parent
51f174b9
Exists in
master
and in
4 other branches
Refactored navigation
Showing
9 changed files
with
152 additions
and
72 deletions
Show diff stats
app/assets/images/ajax_loader.gif
app/assets/stylesheets/header.scss
| @@ -74,7 +74,7 @@ header { | @@ -74,7 +74,7 @@ header { | ||
| 74 | font-size:24px; | 74 | font-size:24px; |
| 75 | line-height:36px; | 75 | line-height:36px; |
| 76 | font-weight:500; | 76 | font-weight:500; |
| 77 | - color:#567; | 77 | + color:$style_color; |
| 78 | text-shadow: 0 1px 1px #FFF; | 78 | text-shadow: 0 1px 1px #FFF; |
| 79 | } | 79 | } |
| 80 | 80 | ||
| @@ -82,7 +82,9 @@ header { | @@ -82,7 +82,9 @@ header { | ||
| 82 | float: right; | 82 | float: right; |
| 83 | margin-right:10px; | 83 | margin-right:10px; |
| 84 | .btn { | 84 | .btn { |
| 85 | - margin-left:8px; | 85 | + margin-left:7px; |
| 86 | + background: #F1F1F1; | ||
| 87 | + border: 1px solid #CCC; | ||
| 86 | } | 88 | } |
| 87 | } | 89 | } |
| 88 | 90 | ||
| @@ -96,8 +98,8 @@ header { | @@ -96,8 +98,8 @@ header { | ||
| 96 | float: right; | 98 | float: right; |
| 97 | margin-right: 55px; | 99 | margin-right: 55px; |
| 98 | 100 | ||
| 99 | - .search-input { | ||
| 100 | - width:130px; | 101 | + .search-input { |
| 102 | + @extend .span2; | ||
| 101 | background-image: url("icon-search.png"); | 103 | background-image: url("icon-search.png"); |
| 102 | background-repeat: no-repeat; | 104 | background-repeat: no-repeat; |
| 103 | background-position: 10px; | 105 | background-position: 10px; |
app/assets/stylesheets/nav.scss
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | * Main Menu of Application | 2 | * Main Menu of Application |
| 3 | * | 3 | * |
| 4 | */ | 4 | */ |
| 5 | -nav.main_menu { | 5 | +ul.main_menu { |
| 6 | border-radius: 4px; | 6 | border-radius: 4px; |
| 7 | margin: auto; | 7 | margin: auto; |
| 8 | margin:30px 0; | 8 | margin:30px 0; |
| @@ -13,9 +13,7 @@ nav.main_menu { | @@ -13,9 +13,7 @@ nav.main_menu { | ||
| 13 | background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf); | 13 | background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf); |
| 14 | background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); | 14 | background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); |
| 15 | background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf); | 15 | background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf); |
| 16 | - display:table; | ||
| 17 | - table-layout:fixed; | ||
| 18 | - width:100%; | 16 | + position:relative; |
| 19 | @include shade; | 17 | @include shade; |
| 20 | .count { | 18 | .count { |
| 21 | position: relative; | 19 | position: relative; |
| @@ -39,10 +37,14 @@ nav.main_menu { | @@ -39,10 +37,14 @@ nav.main_menu { | ||
| 39 | text-shadow:none; | 37 | text-shadow:none; |
| 40 | color:$style_color; | 38 | color:$style_color; |
| 41 | } | 39 | } |
| 42 | - a { | ||
| 43 | - display:table-cell; | ||
| 44 | - text-align:center; | ||
| 45 | - font-weight:bold; | 40 | + li { |
| 41 | + list-style-type: none; | ||
| 42 | + margin: 0; | ||
| 43 | + display: table-cell; | ||
| 44 | + width: 1%; | ||
| 45 | + border-right: 1px solid #DDD; | ||
| 46 | + border-left: 1px solid #EEE; | ||
| 47 | + | ||
| 46 | &:first-child{ | 48 | &:first-child{ |
| 47 | -webkit-border-top-left-radius: 4px; | 49 | -webkit-border-top-left-radius: 4px; |
| 48 | -webkit-border-bottom-left-radius: 4px; | 50 | -webkit-border-bottom-left-radius: 4px; |
| @@ -52,22 +54,7 @@ nav.main_menu { | @@ -52,22 +54,7 @@ nav.main_menu { | ||
| 52 | border-bottom-left-radius: 4px; | 54 | border-bottom-left-radius: 4px; |
| 53 | border-left: 0; | 55 | border-left: 0; |
| 54 | } | 56 | } |
| 55 | - padding: 9px 2px; | ||
| 56 | - color: $style_color; | ||
| 57 | - position: relative; | ||
| 58 | - margin: 0; | ||
| 59 | - text-shadow:0 1px 1px white; | ||
| 60 | - border-right: 1px solid #DDD; | ||
| 61 | - border-left: 1px solid #EEE; | ||
| 62 | 57 | ||
| 63 | - &.home { | ||
| 64 | - background: url(home_icon.PNG) no-repeat center center; | ||
| 65 | - text-indent:-9999px; | ||
| 66 | - img { | ||
| 67 | - position:relative; | ||
| 68 | - top:4px; | ||
| 69 | - } | ||
| 70 | - } | ||
| 71 | &.current { | 58 | &.current { |
| 72 | background-color:#D5D5D5; | 59 | background-color:#D5D5D5; |
| 73 | border-bottom: 1px solid #567; | 60 | border-bottom: 1px solid #567; |
| @@ -80,11 +67,28 @@ nav.main_menu { | @@ -80,11 +67,28 @@ nav.main_menu { | ||
| 80 | } | 67 | } |
| 81 | } | 68 | } |
| 82 | 69 | ||
| 83 | - &.wide { | ||
| 84 | - width:185px; | ||
| 85 | - @media (min-width: 1080px) and (max-width: 1200px) { width:160px; } | 70 | + &.home { |
| 71 | + a { | ||
| 72 | + background: url(home_icon.PNG) no-repeat center center; | ||
| 73 | + text-indent:-9999px; | ||
| 74 | + min-width:20px; | ||
| 75 | + img { | ||
| 76 | + position:relative; | ||
| 77 | + top:4px; | ||
| 78 | + } | ||
| 79 | + } | ||
| 86 | } | 80 | } |
| 87 | } | 81 | } |
| 82 | + a { | ||
| 83 | + display: block; | ||
| 84 | + text-align: center; | ||
| 85 | + font-weight:bold; | ||
| 86 | + height:35px; | ||
| 87 | + line-height:36px; | ||
| 88 | + color: $style_color; | ||
| 89 | + text-shadow:0 1px 1px white; | ||
| 90 | + | ||
| 91 | + } | ||
| 88 | } | 92 | } |
| 89 | /* | 93 | /* |
| 90 | * End of Main Menu | 94 | * End of Main Menu |
app/assets/stylesheets/themes/ui_modern.scss
| @@ -9,19 +9,21 @@ | @@ -9,19 +9,21 @@ | ||
| 9 | * | 9 | * |
| 10 | */ | 10 | */ |
| 11 | .ui_modern { | 11 | .ui_modern { |
| 12 | - nav.main_menu { | 12 | + ul.main_menu { |
| 13 | background:none; | 13 | background:none; |
| 14 | box-shadow:none; | 14 | box-shadow:none; |
| 15 | @include border-radius(0px); | 15 | @include border-radius(0px); |
| 16 | border:none; | 16 | border:none; |
| 17 | border-bottom:2px solid #456; | 17 | border-bottom:2px solid #456; |
| 18 | 18 | ||
| 19 | - a { | 19 | + li { |
| 20 | border:none; | 20 | border:none; |
| 21 | 21 | ||
| 22 | &.current { | 22 | &.current { |
| 23 | border-bottom:2px solid #f90; | 23 | border-bottom:2px solid #f90; |
| 24 | background-color:#fff; | 24 | background-color:#fff; |
| 25 | + position:relative; | ||
| 26 | + top:1px; | ||
| 25 | } | 27 | } |
| 26 | } | 28 | } |
| 27 | } | 29 | } |
app/helpers/application_helper.rb
| @@ -96,4 +96,41 @@ module ApplicationHelper | @@ -96,4 +96,41 @@ module ApplicationHelper | ||
| 96 | event.project && | 96 | event.project && |
| 97 | event.project.merge_requests_enabled | 97 | event.project.merge_requests_enabled |
| 98 | end | 98 | end |
| 99 | + | ||
| 100 | + def tab_class(tab_key) | ||
| 101 | + active = case tab_key | ||
| 102 | + | ||
| 103 | + # Project Area | ||
| 104 | + when :wall; wall_tab? | ||
| 105 | + when :wiki; controller.controller_name == "wikis" | ||
| 106 | + when :issues; issues_tab? | ||
| 107 | + when :network; current_page?(:controller => "projects", :action => "graph", :id => @project) | ||
| 108 | + when :merge_requests; controller.controller_name == "merge_requests" | ||
| 109 | + | ||
| 110 | + # Dashboard Area | ||
| 111 | + when :help; controller.controller_name == "help" | ||
| 112 | + when :search; current_page?(search_path) | ||
| 113 | + when :dash_issues; current_page?(dashboard_issues_path) | ||
| 114 | + when :dash_mr; current_page?(dashboard_merge_requests_path) | ||
| 115 | + when :root; current_page?(dashboard_path) || current_page?(root_path) | ||
| 116 | + | ||
| 117 | + # Profile Area | ||
| 118 | + when :profile; current_page?(:controller => "profile", :action => :show) | ||
| 119 | + when :password; current_page?(:controller => "profile", :action => :password) | ||
| 120 | + when :token; current_page?(:controller => "profile", :action => :token) | ||
| 121 | + when :design; current_page?(:controller => "profile", :action => :design) | ||
| 122 | + when :ssh_keys; controller.controller_name == "keys" | ||
| 123 | + | ||
| 124 | + # Admin Area | ||
| 125 | + when :admin_root; controller.controller_name == "dashboard" | ||
| 126 | + when :admin_users; controller.controller_name == 'users' | ||
| 127 | + when :admin_projects; controller.controller_name == "projects" | ||
| 128 | + when :admin_emails; controller.controller_name == 'mailer' | ||
| 129 | + when :admin_resque; controller.controller_name == 'resque' | ||
| 130 | + | ||
| 131 | + else | ||
| 132 | + false | ||
| 133 | + end | ||
| 134 | + active ? "current" : nil | ||
| 135 | + end | ||
| 99 | end | 136 | end |
app/views/layouts/_app_menu.html.haml
| 1 | -%nav.main_menu | ||
| 2 | - = link_to "Home", root_path, :class => "home #{"current" if current_page?(dashboard_path) || current_page?(root_path)}", :title => "Home" | ||
| 3 | - = link_to dashboard_issues_path, :class => "#{"current" if current_page?(dashboard_issues_path)}", :id => "issues_slide" do | ||
| 4 | - Issues | ||
| 5 | - %span.count= current_user.assigned_issues.opened.count | ||
| 6 | - = link_to dashboard_merge_requests_path, :class => "#{"current" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide" do | ||
| 7 | - Requests | ||
| 8 | - %span.count= current_user.cared_merge_requests.count | ||
| 9 | - = link_to search_path, :class => "#{"current" if current_page?(search_path)}" do | ||
| 10 | - Search | ||
| 11 | - = link_to "Help", help_path, :class => "#{"current" if controller.controller_name == "help"}" | 1 | +%ul.main_menu |
| 2 | + %li.home{:class => tab_class(:root)} | ||
| 3 | + = link_to "Home", root_path, :title => "Home" | ||
| 4 | + | ||
| 5 | + %li{:class => tab_class(:dash_issues)} | ||
| 6 | + = link_to dashboard_issues_path do | ||
| 7 | + Issues | ||
| 8 | + %span.count= current_user.assigned_issues.opened.count | ||
| 9 | + | ||
| 10 | + %li{:class => tab_class(:dash_mr)} | ||
| 11 | + = link_to dashboard_merge_requests_path do | ||
| 12 | + Merge Requests | ||
| 13 | + %span.count= current_user.cared_merge_requests.count | ||
| 14 | + | ||
| 15 | + %li{:class => tab_class(:search)} | ||
| 16 | + = link_to "Search", search_path | ||
| 17 | + | ||
| 18 | + %li{:class => tab_class(:help)} | ||
| 19 | + = link_to "Help", help_path |
app/views/layouts/_project_menu.html.haml
| 1 | -%nav.main_menu | ||
| 2 | - = link_to @project.code, project_path(@project), :class => "home #{project_tab_class}", :title => "Project" | 1 | +%ul.main_menu |
| 2 | + %li.home{:class => project_tab_class} | ||
| 3 | + = link_to @project.code, project_path(@project), :title => "Project" | ||
| 4 | + | ||
| 3 | - if @project.repo_exists? | 5 | - if @project.repo_exists? |
| 4 | - if can? current_user, :download_code, @project | 6 | - if can? current_user, :download_code, @project |
| 5 | - = link_to tree_project_ref_path(@project, @project.root_ref), :class => tree_tab_class do | ||
| 6 | - Files | ||
| 7 | - = link_to "Commits", project_commits_path(@project), :class => commit_tab_class | 7 | + %li{:class => tree_tab_class} |
| 8 | + = link_to tree_project_ref_path(@project, @project.root_ref) do | ||
| 9 | + Files | ||
| 10 | + %li{:class => commit_tab_class} | ||
| 11 | + = link_to "Commits", project_commits_path(@project) | ||
| 12 | + | ||
| 13 | + %li{:class => tab_class(:network)} | ||
| 14 | + = link_to "Network", graph_project_path(@project) | ||
| 8 | 15 | ||
| 9 | - = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil | ||
| 10 | - if @project.issues_enabled | 16 | - if @project.issues_enabled |
| 11 | - = link_to project_issues_filter_path(@project), :class => issues_tab? ? "current" : nil do | ||
| 12 | - Issues | ||
| 13 | - %span.count= @project.issues.opened.count | 17 | + %li{:class => tab_class(:issues)} |
| 18 | + = link_to project_issues_filter_path(@project) do | ||
| 19 | + Issues | ||
| 20 | + %span.count= @project.issues.opened.count | ||
| 21 | + | ||
| 14 | - if @project.merge_requests_enabled | 22 | - if @project.merge_requests_enabled |
| 15 | - = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current wide" : "wide" do | ||
| 16 | - Merge Requests | ||
| 17 | - %span.count= @project.merge_requests.opened.count | 23 | + %li{:class => tab_class(:merge_requests)} |
| 24 | + = link_to project_merge_requests_path(@project) do | ||
| 25 | + Merge Requests | ||
| 26 | + %span.count= @project.merge_requests.opened.count | ||
| 18 | 27 | ||
| 19 | - if @project.wall_enabled | 28 | - if @project.wall_enabled |
| 20 | - = link_to wall_project_path(@project), :class => wall_tab? ? "current" : nil do | ||
| 21 | - Wall | 29 | + %li{:class => tab_class(:wall)} |
| 30 | + = link_to wall_project_path(@project) do | ||
| 31 | + Wall | ||
| 22 | 32 | ||
| 23 | - if @project.wiki_enabled | 33 | - if @project.wiki_enabled |
| 24 | - = link_to project_wiki_path(@project, :index), :class => (controller.controller_name == "wikis") ? "current" : nil do | ||
| 25 | - Wiki | 34 | + %li{:class => tab_class(:wiki)} |
| 35 | + = link_to project_wiki_path(@project, :index) do | ||
| 36 | + Wiki |
app/views/layouts/admin.html.haml
| @@ -5,11 +5,16 @@ | @@ -5,11 +5,16 @@ | ||
| 5 | = render "layouts/flash" | 5 | = render "layouts/flash" |
| 6 | = render "layouts/head_panel", :title => "Admin area" | 6 | = render "layouts/head_panel", :title => "Admin area" |
| 7 | .container | 7 | .container |
| 8 | - %nav.main_menu | ||
| 9 | - = link_to "Stats", admin_root_path, :class => "home #{'current' if controller.controller_name == "dashboard"}" | ||
| 10 | - = link_to "Projects", admin_projects_path, :class => ('current' if controller.controller_name == "projects") | ||
| 11 | - = link_to "Users", admin_users_path, :class => ('current' if controller.controller_name == 'users') | ||
| 12 | - = link_to "Emails", admin_emails_path, :class => ('current' if controller.controller_name == 'mailer') | ||
| 13 | - = link_to "Resque", admin_resque_path, :class => ('current' if controller.controller_name == 'resque') | 8 | + %ul.main_menu |
| 9 | + %li.home{:class => tab_class(:admin_root)} | ||
| 10 | + = link_to "Stats", admin_root_path | ||
| 11 | + %li{:class => tab_class(:admin_projects)} | ||
| 12 | + = link_to "Projects", admin_projects_path | ||
| 13 | + %li{:class => tab_class(:admin_users)} | ||
| 14 | + = link_to "Users", admin_users_path | ||
| 15 | + %li{:class => tab_class(:admin_emails)} | ||
| 16 | + = link_to "Emails", admin_emails_path | ||
| 17 | + %li{:class => tab_class(:admin_resque)} | ||
| 18 | + = link_to "Resque", admin_resque_path | ||
| 14 | 19 | ||
| 15 | .content= yield | 20 | .content= yield |
app/views/layouts/profile.html.haml
| @@ -5,12 +5,23 @@ | @@ -5,12 +5,23 @@ | ||
| 5 | = render "layouts/flash" | 5 | = render "layouts/flash" |
| 6 | = render "layouts/head_panel", :title => "Profile" | 6 | = render "layouts/head_panel", :title => "Profile" |
| 7 | .container | 7 | .container |
| 8 | - %nav.main_menu | ||
| 9 | - = link_to "Profile", profile_path, :class => "home #{current_page?(:controller => "profile", :action => :show) ? "current" : nil}" | ||
| 10 | - = link_to "Password", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil | ||
| 11 | - = link_to "Token", profile_token_path, :class => current_page?(:controller => "profile", :action => :token) ? "current" : nil | ||
| 12 | - = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil | ||
| 13 | - = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do | ||
| 14 | - SSH Keys | 8 | + %ul.main_menu |
| 9 | + %li.home{:class => tab_class(:profile)} | ||
| 10 | + = link_to "Profile", profile_path | ||
| 11 | + | ||
| 12 | + %li{:class => tab_class(:password)} | ||
| 13 | + = link_to "Password", profile_password_path | ||
| 14 | + | ||
| 15 | + %li{:class => tab_class(:token)} | ||
| 16 | + = link_to "Token", profile_token_path | ||
| 17 | + | ||
| 18 | + %li{:class => tab_class(:design)} | ||
| 19 | + = link_to "Design", profile_design_path | ||
| 20 | + | ||
| 21 | + %li{:class => tab_class(:ssh_keys)} | ||
| 22 | + = link_to keys_path do | ||
| 23 | + SSH Keys | ||
| 24 | + %span.count= current_user.keys.count | ||
| 25 | + | ||
| 15 | .content | 26 | .content |
| 16 | = yield | 27 | = yield |