Commit 796784c7c8d385b72cd1e4b5a8f0885d630586fb

Authored by Dmitriy Zaporozhets
2 parents fa07c9d6 0a0710a5

Merge branch 'events' of dev.gitlabhq.com:gitlabhq into events

@@ -58,5 +58,5 @@ end @@ -58,5 +58,5 @@ end
58 group :test do 58 group :test do
59 gem "turn", :require => false 59 gem "turn", :require => false
60 gem "simplecov", :require => false 60 gem "simplecov", :require => false
61 - gem "shoulda", "~> 3.0.0.beta2" 61 + gem "shoulda", "3.0.0"
62 end 62 end
@@ -232,9 +232,9 @@ GEM @@ -232,9 +232,9 @@ GEM
232 ffi (~> 1.0.9) 232 ffi (~> 1.0.9)
233 multi_json (~> 1.0.4) 233 multi_json (~> 1.0.4)
234 rubyzip 234 rubyzip
235 - shoulda (3.0.0.beta2)  
236 - shoulda-context (~> 1.0.0.beta1)  
237 - shoulda-matchers (~> 1.0.0.beta1) 235 + shoulda (3.0.0)
  236 + shoulda-context (~> 1.0.0)
  237 + shoulda-matchers (~> 1.0.0)
238 shoulda-context (1.0.0) 238 shoulda-context (1.0.0)
239 shoulda-matchers (1.0.0) 239 shoulda-matchers (1.0.0)
240 simplecov (0.5.4) 240 simplecov (0.5.4)
@@ -322,7 +322,7 @@ DEPENDENCIES @@ -322,7 +322,7 @@ DEPENDENCIES
322 rspec-rails 322 rspec-rails
323 sass-rails (= 3.2.3) 323 sass-rails (= 3.2.3)
324 seed-fu 324 seed-fu
325 - shoulda (~> 3.0.0.beta2) 325 + shoulda (= 3.0.0)
326 simplecov 326 simplecov
327 six 327 six
328 sqlite3 328 sqlite3
app/assets/images/Gear-UI.PNG

940 Bytes

app/assets/images/admin.PNG 0 → 100644

556 Bytes

app/assets/stylesheets/common.scss
@@ -40,6 +40,7 @@ a { @@ -40,6 +40,7 @@ a {
40 .cred { color:#D12F19; } 40 .cred { color:#D12F19; }
41 .cgreen { color:#44aa22; } 41 .cgreen { color:#44aa22; }
42 .cblack { color:#111; } 42 .cblack { color:#111; }
  43 +.cwhite { color:#fff !important }
43 44
44 /** COMMON STYLES **/ 45 /** COMMON STYLES **/
45 .left { 46 .left {
@@ -75,6 +76,10 @@ a { @@ -75,6 +76,10 @@ a {
75 .no-borders { 76 .no-borders {
76 border:none; 77 border:none;
77 } 78 }
  79 +table.no-borders {
  80 + border:none;
  81 + tr, td { border:none }
  82 +}
78 .no-padding { 83 .no-padding {
79 padding:0 !important; 84 padding:0 !important;
80 } 85 }
@@ -433,7 +438,7 @@ input.git_clone_url { @@ -433,7 +438,7 @@ input.git_clone_url {
433 } 438 }
434 439
435 .project_list_url { 440 .project_list_url {
436 - width:270px; 441 + width:250px;
437 background:#fff !important; 442 background:#fff !important;
438 } 443 }
439 444
@@ -441,7 +446,7 @@ input.git_clone_url { @@ -441,7 +446,7 @@ input.git_clone_url {
441 @include shade; 446 @include shade;
442 @include round-borders-all(4px); 447 @include round-borders-all(4px);
443 margin-bottom:20px; 448 margin-bottom:20px;
444 - width:338px; 449 + width:298px;
445 float:left; 450 float:left;
446 margin-left:20px; 451 margin-left:20px;
447 border: 1px solid #DDD; 452 border: 1px solid #DDD;
@@ -600,3 +605,24 @@ p.time { @@ -600,3 +605,24 @@ p.time {
600 font-size: 90%; 605 font-size: 90%;
601 margin: 30px 3px 3px 2px; 606 margin: 30px 3px 3px 2px;
602 } 607 }
  608 +
  609 +
  610 +.dashboard_category {
  611 + margin-bottom:30px;
  612 +
  613 + .dashboard_block {
  614 + width:700px;
  615 + margin:auto;
  616 +
  617 + .wll {
  618 + border:none;
  619 + &:hover {
  620 + background:none;
  621 + }
  622 +
  623 + h4 {
  624 + color:#666;
  625 + }
  626 + }
  627 + }
  628 +}
app/assets/stylesheets/main.scss
@@ -71,6 +71,11 @@ $hover: #FDF5D9; @@ -71,6 +71,11 @@ $hover: #FDF5D9;
71 @import "ui_basic.scss"; 71 @import "ui_basic.scss";
72 72
73 /** 73 /**
  74 + * UI mars theme
  75 + */
  76 +@import "ui_mars.scss";
  77 +
  78 +/**
74 * Most of application styles placed here. 79 * Most of application styles placed here.
75 * This file represent common UI that should not be changed between themes 80 * This file represent common UI that should not be changed between themes
76 * or project restyling like form width or user avatar class or commit title 81 * or project restyling like form width or user avatar class or commit title
app/assets/stylesheets/ui_basic.scss
@@ -57,11 +57,30 @@ @@ -57,11 +57,30 @@
57 text-shadow: 0 1px 1px #FFF; 57 text-shadow: 0 1px 1px #FFF;
58 } 58 }
59 59
60 - img {  
61 - float: left;  
62 - position: relative;  
63 - top: -9px;  
64 - width:46px; 60 + &.home {
  61 + img {
  62 + float: left;
  63 + position: relative;
  64 + top: -9px;
  65 + width:46px;
  66 +
  67 + }
  68 + }
  69 + &.admin_link {
  70 + width:16px;
  71 + height:16px;
  72 + padding: 5px;
  73 + border: 1px solid #ccc;
  74 + border-radius: 4px;
  75 + margin: 0px;
  76 + background: #eee;
  77 + margin-left:20px;
  78 + &:hover {
  79 + background:#f7f7f7;
  80 + }
  81 + img {
  82 + width:16px;
  83 + }
65 } 84 }
66 } 85 }
67 } 86 }
app/assets/stylesheets/ui_mars.scss 0 → 100644
@@ -0,0 +1,316 @@ @@ -0,0 +1,316 @@
  1 +/**
  2 + * This file represent some UI that can be changed
  3 + * during web app restyle or theme select.
  4 + *
  5 + * Next items should be placed there
  6 + * - link colors
  7 + * - header styles
  8 + * - main menu styles
  9 + *
  10 + */
  11 +.ui_mars {
  12 +
  13 + /*
  14 + * Common styles
  15 + *
  16 + */
  17 + a {
  18 + color: $link_color;
  19 + &:hover {
  20 + text-decoration:none;
  21 + color: $style_color;
  22 + }
  23 + }
  24 +
  25 +
  26 + /*
  27 + * Application Header
  28 + *
  29 + */
  30 + header {
  31 + width:100%;
  32 + padding:0;
  33 + margin:0;
  34 + top:1px;
  35 + left:0;
  36 +
  37 +
  38 + background: #474D57 url('bg-header.png') repeat-x bottom;
  39 +
  40 + z-index:10;
  41 + height:60px;
  42 +
  43 + .search-input {
  44 + background:#474D57;
  45 + border-color:#888;
  46 + }
  47 + .app_logo {
  48 + width:230px;
  49 + float:left;
  50 + position:relative;
  51 + top:-4px;
  52 +
  53 + a {
  54 + float:left;
  55 +
  56 + h1 {
  57 +
  58 + background: url('images.png') no-repeat -3px -7px;
  59 + width: 65px;
  60 + height: 26px;
  61 + margin: 5px 0;
  62 + padding: 0;
  63 + display: block;
  64 + float: left;
  65 + text-indent: -1000em;
  66 +
  67 + }
  68 +
  69 + &.home {
  70 + img {
  71 + display:none
  72 +
  73 + }
  74 + }
  75 + &.admin_link {
  76 + width:16px;
  77 + height:16px;
  78 + padding: 5px;
  79 + border: 1px solid #888;
  80 + border-radius: 4px;
  81 + margin: 0px;
  82 + background:#474D57 ;
  83 + margin-left:20px;
  84 + margin-top:4px;
  85 + &:hover {
  86 + background:#f7f7f7;
  87 + }
  88 + img {
  89 + width:16px;
  90 + }
  91 + }
  92 + }
  93 + }
  94 + .wrapper {
  95 + margin:auto;
  96 + min-width:$min_app_width;
  97 + max-width:$max_app_width;
  98 + position:relative;
  99 + padding:15px 0;
  100 +
  101 + .top_panel_content {
  102 + margin:0 $app_padding;
  103 + }
  104 + }
  105 +
  106 + .project_name {
  107 + float:left;
  108 + width:400px;
  109 + margin:0;
  110 + margin-right:30px;
  111 + font-size:20px;
  112 + line-height:34px;
  113 + font-weight:bold;
  114 + color:#fff;
  115 + text-shadow: 0 1px 1px #111;
  116 + }
  117 +
  118 + .git_url_wrapper {
  119 + padding:0px;
  120 + margin:0px;
  121 + float:left;
  122 +
  123 + .git-url {
  124 + padding:0px;
  125 + margin:0px;
  126 + font-size: 12px;
  127 + margin-right:10px;
  128 + border-radius: 4px;
  129 + -moz-border-radius: 4px;
  130 + color: #666;
  131 + border: 1px solid #AAA;
  132 + padding: 0 10px 0 30px;
  133 + background: transparent url('images.png') no-repeat 8px -42px;
  134 + width: 260px;
  135 + height:26px;
  136 + }
  137 + }
  138 +
  139 + /* Account box */
  140 + .account-box {
  141 + position: absolute;
  142 + right: 0;
  143 + top: 13px;
  144 + z-index: 10000;
  145 + width: 128px;
  146 + font-size: 11px;
  147 + float: right;
  148 + display: block;
  149 + cursor: pointer;
  150 + img {
  151 + border-radius: 4px;
  152 + right: 20px;
  153 + position: absolute;
  154 + width: 33px;
  155 + height: 33px;
  156 + display: block;
  157 + top: 0;
  158 + &:after {
  159 + content: " ";
  160 + display: block;
  161 + position: absolute;
  162 + top: 0;
  163 + right: 0;
  164 + left: 0;
  165 + bottom: 0;
  166 + float: right;
  167 + border-radius: 5px;
  168 + border: 1px solid rgba(255, 255, 255, 0.1);
  169 + border-bottom: 0;
  170 + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, 0.15)), to(rgba(0, 0, 0, 0.25))), -webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, 0.1)), color-stop(0.501, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0)));
  171 + background: -moz-linear-gradient(top, rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.25)), -moz-linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
  172 + background: linear-gradient(top, rgba(255, 255, 255, 0.15), rgba(0, 0, 0, 0.25)), linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
  173 + -webkit-background-origin: border-box;
  174 + -moz-background-origin: border;
  175 + background-origin: border-box; } } }
  176 +
  177 + .account-box {
  178 + &.hover {
  179 + height: 138px; }
  180 + &:hover > .account-links {
  181 + display: block; } }
  182 +
  183 + .account-links {
  184 + background: #79C3E0;
  185 + display: none;
  186 + border-radius: 5px;
  187 + width: 100px;
  188 + margin-top: 0;
  189 + float: right;
  190 + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
  191 + position: relative;
  192 + &:before {
  193 + content: ".";
  194 + width: 0;
  195 + height: 0;
  196 + position: absolute;
  197 + border: 5px solid transparent;
  198 + border-color: rgba(255, 255, 255, 0);
  199 + border-bottom-color: #333;
  200 + text-indent: -9999px;
  201 + top: -10px;
  202 + line-height: 0;
  203 + right: 10px;
  204 + z-index: 10; }
  205 + background: #333;
  206 + display: none;
  207 + z-index: 100000;
  208 + border-radius: 5px;
  209 + width: 100px;
  210 + position: absolute;
  211 + right: 20px;
  212 + top: 46px;
  213 + margin-top: 0;
  214 + float: right;
  215 + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
  216 + a {
  217 + color: #EEE;
  218 + padding: 6px 10px;
  219 + display: block;
  220 + text-shadow: none;
  221 + border-bottom: 1px solid #555;
  222 + &:hover {
  223 + background: #444; } } }
  224 +
  225 + .account-box.hover .arrow-up {
  226 + top: 41px;
  227 + right: 6px;
  228 + position: absolute; }
  229 +
  230 + .account-links a {
  231 + &:first-child {
  232 + -webkit-border-top-left-radius: 5px;
  233 + -webkit-border-top-right-radius: 5px;
  234 + -moz-border-radius-topleft: 5px;
  235 + -moz-border-radius-topright: 5px;
  236 + border-top-left-radius: 5px;
  237 + border-top-right-radius: 5px; }
  238 + &:last-child {
  239 + -webkit-border-bottom-right-radius: 5px;
  240 + -webkit-border-bottom-left-radius: 5px;
  241 + -moz-border-radius-bottomright: 5px;
  242 + -moz-border-radius-bottomleft: 5px;
  243 + border-bottom-right-radius: 5px;
  244 + border-bottom-left-radius: 5px;
  245 + border-bottom: 0; } }
  246 +
  247 + }
  248 + /*
  249 + * End of Application Header
  250 + *
  251 + */
  252 +
  253 + /*
  254 + * Main Menu of Application
  255 + *
  256 + */
  257 + nav.main_menu {
  258 + overflow:hidden;
  259 + border-radius: 4px;
  260 + margin: auto;
  261 + margin:30px $app_padding;
  262 + background:#eee;
  263 + border:1px solid #ccc;
  264 + height:38px;
  265 + background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
  266 + background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf);
  267 + background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf);
  268 + background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf);
  269 + @include shade;
  270 + .count {
  271 + color:#aaa;
  272 + margin-left:3px;
  273 + }
  274 + .label {
  275 + background:$hover;
  276 + text-shadow:none;
  277 + color:$style_color;
  278 + }
  279 + a {
  280 + font-weight:bold;
  281 + &:first-child{
  282 + -webkit-border-top-left-radius: 4px;
  283 + -webkit-border-bottom-left-radius: 4px;
  284 + -moz-border-radius-topleft: 4px;
  285 + -moz-border-radius-bottomleft: 4px;
  286 + border-top-left-radius: 4px;
  287 + border-bottom-left-radius: 4px;
  288 + }
  289 + padding: 10px 25px;
  290 + display: inline-block;
  291 + color: $style_color;
  292 + border-right: 1px solid #d5d5d5;
  293 + position: relative;
  294 + box-shadow: 1px 0 0 rgba(255, 255, 255, 0.1);
  295 + margin: 0;
  296 + float:left;
  297 + text-shadow:0 1px 1px white;
  298 + &.home {
  299 + background: url(home_icon.PNG) no-repeat center center;
  300 + text-indent:-9999px;
  301 + min-width:40px;
  302 + img {
  303 + position:relative;
  304 + top:4px;
  305 + }
  306 + }
  307 + &.current {
  308 + background-color:#DDD;
  309 + }
  310 + }
  311 + }
  312 + /*
  313 + * End of Main Menu
  314 + *
  315 + */
  316 +}
app/controllers/dashboard_controller.rb
@@ -3,7 +3,14 @@ class DashboardController < ApplicationController @@ -3,7 +3,14 @@ class DashboardController < ApplicationController
3 3
4 def index 4 def index
5 @projects = current_user.projects.all 5 @projects = current_user.projects.all
  6 +
6 @active_projects = @projects.select(&:repo_exists?).select(&:last_activity_date_cached).sort_by(&:last_activity_date_cached).reverse 7 @active_projects = @projects.select(&:repo_exists?).select(&:last_activity_date_cached).sort_by(&:last_activity_date_cached).reverse
  8 +
  9 + @merge_requests = MergeRequest.where("author_id = :id or assignee_id = :id", :id => current_user.id).opened.order("created_at DESC").limit(10)
  10 +
  11 + @user = current_user
  12 + @issues = current_user.assigned_issues.opened.order("created_at DESC").limit(10)
  13 + @issues = @issues.includes(:author, :project)
7 end 14 end
8 15
9 # Get authored or assigned open merge requests 16 # Get authored or assigned open merge requests
app/views/dashboard/_projects_feed.html.haml
1 -- @active_projects.first(3).each do |project|  
2 - = link_to project do  
3 - %h4= project.name  
4 - - project.updates(3).each do |update|  
5 - %a.project-update{:href => dashboard_feed_path(project, update)}  
6 - = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32  
7 - %div  
8 - = dashboard_feed_title(update)  
9 - %span.update-author  
10 - %strong= update.author_name  
11 - authored  
12 - = time_ago_in_words(update.created_at)  
13 - ago  
14 - .right  
15 - - klass = update.class.to_s.split("::").last.downcase  
16 - %span.tag{ :class => klass }= klass  
17 - 1 +- @active_projects.first(5).each do |project|
  2 + .wll
  3 + = link_to project do
  4 + %h4
  5 + = project.name
  6 + %small
  7 + last activity at
  8 + = project.last_activity_date_cached.stamp("Aug 25, 2011")
app/views/dashboard/index.html.haml
1 -%h3 Activities  
2 -%hr  
3 -.news-feed= render "dashboard/projects_feed" 1 +- if current_user.require_ssh_key?
  2 + .alert-message.warning
  3 + %p
  4 + You wont be able to pull/push project code unless you
  5 + = link_to new_key_path, :class => "vlink" do
  6 + add new key
  7 + to your profile
  8 +
  9 +%div.dashboard_category
  10 + %h3
  11 + Projects
  12 + %small
  13 + ( most recent )
  14 +
  15 + %strong.right
  16 + = link_to projects_path do
  17 + Projects list →
  18 + %hr
  19 + .row
  20 + .dashboard_block
  21 + .row
  22 + .span9= render "dashboard/projects_feed"
  23 + .span3.right
  24 + - if current_user.can_create_project?
  25 + .alert-message.block-message.warning
  26 + You can create up to
  27 + = current_user.projects_limit
  28 + projects. Click on link below to add a new one
  29 + .link_holder
  30 + = link_to new_project_path, :class => "" do
  31 + New Project »
  32 +
  33 +
  34 +- unless @merge_requests.blank?
  35 + %div.dashboard_category
  36 + %h3
  37 + Merge Requests
  38 + %small ( authored or assigned to you )
  39 + %strong.right
  40 + = link_to dashboard_merge_requests_path do
  41 + Vist merge requests page →
  42 + %hr
  43 + .row
  44 + .dashboard_block= render "dashboard/merge_requests_feed"
  45 +
  46 +- unless @issues.blank?
  47 + %div.dashboard_category
  48 + %h3
  49 + Issues
  50 + %small ( assigned to you )
  51 + %strong.right
  52 + = link_to dashboard_merge_requests_path do
  53 + Vist issues page →
  54 + %hr
  55 + .row
  56 + .dashboard_block= render "dashboard/issues_feed"
app/views/dashboard/issues.html.haml
@@ -2,5 +2,5 @@ @@ -2,5 +2,5 @@
2 Issues 2 Issues
3 %small ( assigned to you ) 3 %small ( assigned to you )
4 4
5 -%hr  
6 -= render "dashboard/issues_feed" 5 +%br
  6 +.ui-box= render "dashboard/issues_feed"
app/views/dashboard/merge_requests.html.haml
@@ -2,5 +2,5 @@ @@ -2,5 +2,5 @@
2 Merge Requests 2 Merge Requests
3 %small ( authored or assigned to you ) 3 %small ( authored or assigned to you )
4 4
5 -%hr  
6 -= render "dashboard/merge_requests_feed" 5 +%br
  6 +.ui-box= render "dashboard/merge_requests_feed"
app/views/errors/access_denied.html.haml
@@ -2,4 +2,4 @@ @@ -2,4 +2,4 @@
2 %h3 Access Denied 2 %h3 Access Denied
3 %hr 3 %hr
4 %p Youre not allowed to access this page 4 %p Youre not allowed to access this page
5 - %p Ream more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"} 5 + %p Read more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"}
app/views/layouts/_app_menu.html.haml
1 %nav.main_menu 1 %nav.main_menu
2 = render "layouts/const_menu_links" 2 = render "layouts/const_menu_links"
3 - -#= link_to "Projects", projects_path, :class => "#{"current" if current_page?(projects_path) || current_page?(root_path)}" 3 + = link_to "Projects", projects_path, :class => "#{"current" if current_page?(projects_path)}"
4 = link_to "Issues", dashboard_issues_path, :class => "#{"current" if current_page?(dashboard_issues_path)}", :id => "issues_slide" 4 = link_to "Issues", dashboard_issues_path, :class => "#{"current" if current_page?(dashboard_issues_path)}", :id => "issues_slide"
5 = link_to "Requests", dashboard_merge_requests_path, :class => "#{"current" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide" 5 = link_to "Requests", dashboard_merge_requests_path, :class => "#{"current" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide"
6 = link_to "Help", help_path, :class => "#{"current" if controller.controller_name == "help"}" 6 = link_to "Help", help_path, :class => "#{"current" if controller.controller_name == "help"}"
app/views/layouts/_const_menu_links.html.haml
1 -= link_to "Home", root_path, :class => "home #{"current" if current_page?(projects_path) || current_page?(root_path)}", :title => "Home" 1 += link_to "Home", root_path, :class => "home #{"current" if current_page?(dashboard_path) || current_page?(root_path)}", :title => "Home"
app/views/layouts/_head_panel.html.haml
@@ -5,7 +5,12 @@ @@ -5,7 +5,12 @@
5 %div.app_logo 5 %div.app_logo
6 = link_to root_path, :class => "home", :title => "Home" do 6 = link_to root_path, :class => "home", :title => "Home" do
7 = image_tag "logo_tr.png", :width => 50 7 = image_tag "logo_tr.png", :width => 50
8 - %h1 GITLAB 8 + %h1
  9 + GITLAB
  10 +
  11 + - if current_user.is_admin?
  12 + = link_to admin_projects_path, :class => "admin_link", :title => "Admin area" do
  13 + = image_tag "admin.PNG", :width => 16
9 14
10 %h1.project_name= title 15 %h1.project_name= title
11 .search= text_field_tag "search", nil, :placeholder => "Search", :class => "search-input" 16 .search= text_field_tag "search", nil, :placeholder => "Search", :class => "search-input"
app/views/layouts/application.html.haml
@@ -7,6 +7,4 @@ @@ -7,6 +7,4 @@
7 .container 7 .container
8 = render :partial => "layouts/app_menu" 8 = render :partial => "layouts/app_menu"
9 .content 9 .content
10 - .row  
11 - .span12= yield  
12 - .sidebar= render "layouts/projects_side" 10 + = yield
app/views/projects/_tile.html.haml
1 -- @projects.in_groups_of(2, false) do |projects| 1 +- @projects.in_groups_of(3, false) do |projects|
2 .row 2 .row
3 - projects.each_with_index do |project, i| 3 - projects.each_with_index do |project, i|
4 %div.project_tile 4 %div.project_tile
app/views/projects/empty.html.haml
1 - if current_user.require_ssh_key? 1 - if current_user.require_ssh_key?
2 .alert-message.block-message.error 2 .alert-message.block-message.error
3 %ul 3 %ul
4 - %li You have no ssh keys added yo tour profile. 4 + %li You have no ssh keys added to your profile.
5 %li You wont be able to pull/push repository. 5 %li You wont be able to pull/push repository.
6 %li Visit profile → keys and add public key of every machine you want to use for work with gitlabhq. 6 %li Visit profile → keys and add public key of every machine you want to use for work with gitlabhq.
7 7
app/views/projects/index.html.haml
1 %h3 1 %h3
2 Projects 2 Projects
3 %small= "( #{current_user.projects.count} )" 3 %small= "( #{current_user.projects.count} )"
  4 + - if current_user.can_create_project?
  5 + %span.right
  6 + = link_to new_project_path, :class => "btn small" do
  7 + New Project
4 %hr 8 %hr
5 - unless @projects.empty? 9 - unless @projects.empty?
6 %div.content_list= render "tile" 10 %div.content_list= render "tile"
app/views/protected_branches/index.html.haml
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 %ul 6 %ul
7 %li keep stable branches secured 7 %li keep stable branches secured
8 %li forced code review before merge to protected branches 8 %li forced code review before merge to protected branches
9 - %p Ream more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"} 9 + %p Read more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"}
10 10
11 11
12 12
config/routes.rb
@@ -123,5 +123,5 @@ Gitlab::Application.routes.draw do @@ -123,5 +123,5 @@ Gitlab::Application.routes.draw do
123 end 123 end
124 resources :notes, :only => [:index, :create, :destroy] 124 resources :notes, :only => [:index, :create, :destroy]
125 end 125 end
126 - root :to => "projects#index" 126 + root :to => "dashboard#index"
127 end 127 end