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 |