Commit 8045a81bcf5822f1992442750e1484a93c368229

Authored by Sebastian Ziebell
2 parents 5d8a99f1 2f0a75ab

Merge branch 'master' into fixes/api

Showing 262 changed files with 1808 additions and 1431 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 262 files displayed.

  1 +v 5.0.0
  2 + - replaced gitolite with gitlab-shell
  3 +
1 v 4.2.0 4 v 4.2.0
2 - User show page. Via /u/username 5 - User show page. Via /u/username
3 - Show help contents on pages for better navigation 6 - Show help contents on pages for better navigation
@@ -32,9 +32,6 @@ gem 'gitlab_omniauth-ldap', '1.0.2', require: "omniauth-ldap" @@ -32,9 +32,6 @@ gem 'gitlab_omniauth-ldap', '1.0.2', require: "omniauth-ldap"
32 # Dump db to yml file. Mostly used to migrate from sqlite to mysql 32 # Dump db to yml file. Mostly used to migrate from sqlite to mysql
33 gem 'gitlab_yaml_db', '1.0.0', require: "yaml_db" 33 gem 'gitlab_yaml_db', '1.0.0', require: "yaml_db"
34 34
35 -# Gitolite client (for work with gitolite-admin repo)  
36 -gem "gitolite", '1.1.0'  
37 -  
38 # Syntax highlighter 35 # Syntax highlighter
39 gem "pygments.rb", git: "https://github.com/gitlabhq/pygments.rb.git", branch: "master" 36 gem "pygments.rb", git: "https://github.com/gitlabhq/pygments.rb.git", branch: "master"
40 37
@@ -165,5 +162,5 @@ group :test do @@ -165,5 +162,5 @@ group :test do
165 end 162 end
166 163
167 group :production do 164 group :production do
168 - gem "gitlab_meta", '4.0' 165 + gem "gitlab_meta", '5.0'
169 end 166 end
@@ -107,7 +107,6 @@ GEM @@ -107,7 +107,6 @@ GEM
107 coderay (>= 1.0.0) 107 coderay (>= 1.0.0)
108 erubis (>= 2.7.0) 108 erubis (>= 2.7.0)
109 binding_of_caller (0.6.8) 109 binding_of_caller (0.6.8)
110 - blankslate (3.1.2)  
111 bootstrap-sass (2.2.1.1) 110 bootstrap-sass (2.2.1.1)
112 sass (~> 3.2) 111 sass (~> 3.2)
113 builder (3.0.4) 112 builder (3.0.4)
@@ -188,17 +187,13 @@ GEM @@ -188,17 +187,13 @@ GEM
188 mime-types (~> 1.19) 187 mime-types (~> 1.19)
189 pygments.rb (>= 0.2.13) 188 pygments.rb (>= 0.2.13)
190 github-markup (0.7.4) 189 github-markup (0.7.4)
191 - gitlab_meta (4.0) 190 + gitlab_meta (5.0)
192 gitlab_omniauth-ldap (1.0.2) 191 gitlab_omniauth-ldap (1.0.2)
193 net-ldap (~> 0.2.2) 192 net-ldap (~> 0.2.2)
194 omniauth (~> 1.0) 193 omniauth (~> 1.0)
195 pyu-ruby-sasl (~> 0.0.3.1) 194 pyu-ruby-sasl (~> 0.0.3.1)
196 rubyntlm (~> 0.1.1) 195 rubyntlm (~> 0.1.1)
197 gitlab_yaml_db (1.0.0) 196 gitlab_yaml_db (1.0.0)
198 - gitolite (1.1.0)  
199 - gratr19 (~> 0.4.4.1)  
200 - grit (~> 2.5.0)  
201 - hashery (~> 1.5.0)  
202 grape (0.2.2) 197 grape (0.2.2)
203 activesupport 198 activesupport
204 hashie (~> 1.2) 199 hashie (~> 1.2)
@@ -208,7 +203,6 @@ GEM @@ -208,7 +203,6 @@ GEM
208 rack-accept 203 rack-accept
209 rack-mount 204 rack-mount
210 virtus 205 virtus
211 - gratr19 (0.4.4.1)  
212 growl (1.0.3) 206 growl (1.0.3)
213 guard (1.5.4) 207 guard (1.5.4)
214 listen (>= 0.4.2) 208 listen (>= 0.4.2)
@@ -227,8 +221,6 @@ GEM @@ -227,8 +221,6 @@ GEM
227 activesupport (>= 3.1, < 4.1) 221 activesupport (>= 3.1, < 4.1)
228 haml (~> 3.1) 222 haml (~> 3.1)
229 railties (>= 3.1, < 4.1) 223 railties (>= 3.1, < 4.1)
230 - hashery (1.5.0)  
231 - blankslate  
232 hashie (1.2.0) 224 hashie (1.2.0)
233 hike (1.2.1) 225 hike (1.2.1)
234 http_parser.rb (0.5.3) 226 http_parser.rb (0.5.3)
@@ -494,10 +486,9 @@ DEPENDENCIES @@ -494,10 +486,9 @@ DEPENDENCIES
494 git 486 git
495 github-linguist (~> 2.3.4) 487 github-linguist (~> 2.3.4)
496 github-markup (~> 0.7.4) 488 github-markup (~> 0.7.4)
497 - gitlab_meta (= 4.0) 489 + gitlab_meta (= 5.0)
498 gitlab_omniauth-ldap (= 1.0.2) 490 gitlab_omniauth-ldap (= 1.0.2)
499 gitlab_yaml_db (= 1.0.0) 491 gitlab_yaml_db (= 1.0.0)
500 - gitolite (= 1.1.0)  
501 grack! 492 grack!
502 grape (~> 0.2.1) 493 grape (~> 0.2.1)
503 grit! 494 grit!
1 ## GitLab Roadmap 1 ## GitLab Roadmap
2 2
3 -### v4.3 March 22 3 +### v5.0 March 22
4 4
5 -* Jenkins CI integration service 5 +* Replace gitolite with gitlab-shell
6 * Usability improvements 6 * Usability improvements
7 * Notification improvements 7 * Notification improvements
8 8
9 ### v4.2 February 22 9 ### v4.2 February 22
10 10
11 -* Campfire integration service  
12 * Teams 11 * Teams
13 12
1 -4.2.0pre 1 +5.0.0pre
app/assets/images/home_icon.PNG

596 Bytes

app/assets/images/icon-attachment.png

450 Bytes

app/assets/javascripts/notes.js
@@ -20,12 +20,12 @@ var NoteList = { @@ -20,12 +20,12 @@ var NoteList = {
20 20
21 if(NoteList.reversed) { 21 if(NoteList.reversed) {
22 var form = $(".js-main-target-form"); 22 var form = $(".js-main-target-form");
23 - form.find(".buttons, .note_options").hide(); 23 + form.find(".note-form-actions").hide();
24 var textarea = form.find(".js-note-text"); 24 var textarea = form.find(".js-note-text");
25 textarea.css("height", "40px"); 25 textarea.css("height", "40px");
26 textarea.on("focus", function(){ 26 textarea.on("focus", function(){
27 textarea.css("height", "80px"); 27 textarea.css("height", "80px");
28 - form.find(".buttons, .note_options").show(); 28 + form.find(".note-form-actions").show();
29 }); 29 });
30 } 30 }
31 31
app/assets/stylesheets/common.scss
@@ -338,10 +338,6 @@ li.note { @@ -338,10 +338,6 @@ li.note {
338 li { 338 li {
339 border-bottom:none !important; 339 border-bottom:none !important;
340 } 340 }
341 - .attachment {  
342 - padding-left: 20px;  
343 - background:url("icon-attachment.png") no-repeat left center;  
344 - }  
345 } 341 }
346 } 342 }
347 343
app/assets/stylesheets/gitlab_bootstrap.scss
@@ -17,6 +17,8 @@ $baseLineHeight: 18px !default; @@ -17,6 +17,8 @@ $baseLineHeight: 18px !default;
17 @import "gitlab_bootstrap/variables.scss"; 17 @import "gitlab_bootstrap/variables.scss";
18 @import "gitlab_bootstrap/fonts.scss"; 18 @import "gitlab_bootstrap/fonts.scss";
19 @import "gitlab_bootstrap/mixins.scss"; 19 @import "gitlab_bootstrap/mixins.scss";
  20 +@import "gitlab_bootstrap/avatar.scss";
  21 +@import "gitlab_bootstrap/nav.scss";
20 @import "gitlab_bootstrap/common.scss"; 22 @import "gitlab_bootstrap/common.scss";
21 @import "gitlab_bootstrap/typography.scss"; 23 @import "gitlab_bootstrap/typography.scss";
22 @import "gitlab_bootstrap/buttons.scss"; 24 @import "gitlab_bootstrap/buttons.scss";
app/assets/stylesheets/gitlab_bootstrap/avatar.scss 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +/** AVATARS **/
  2 +img.avatar { float: left; margin-right: 12px; width: 40px; border: 1px solid #ddd; padding: 1px; }
  3 +img.avatar.s16 { width: 16px; height: 16px; margin-right: 6px; }
  4 +img.avatar.s24 { width: 24px; height: 24px; margin-right: 8px; }
  5 +img.avatar.s32 { width: 32px; height: 32px; margin-right: 10px; }
  6 +img.avatar.s90 { width: 90px; height: 90px; margin-right: 15px; }
  7 +img.lil_av { padding-left: 4px; padding-right: 3px; }
  8 +img.small { width: 80px; }
app/assets/stylesheets/gitlab_bootstrap/blocks.scss
@@ -95,7 +95,11 @@ @@ -95,7 +95,11 @@
95 95
96 form { 96 form {
97 margin-bottom: 0; 97 margin-bottom: 0;
98 - margin-top: 3px; 98 + margin-top: 0;
  99 + }
  100 +
  101 + .btn-tiny {
  102 + @include box-shadow(0 0px 0px 1px #f1f1f1);
99 } 103 }
100 104
101 .nav-pills { 105 .nav-pills {
app/assets/stylesheets/gitlab_bootstrap/buttons.scss
1 .btn { 1 .btn {
2 - @include linear-gradient(#f7f7f7, #d5d5d5); 2 + @include linear-gradient(#f1f1f1, #e1e1e1);
  3 + text-shadow: 0 1px 1px #FFF;
3 border-color: #BBB; 4 border-color: #BBB;
  5 +
4 &:hover { 6 &:hover {
5 - @include bg-gray-gradient;  
6 - border-color: #bbb; 7 + background: #f1f1f1;
  8 + @include linear-gradient(#fAfAfA, #f1f1f1);
  9 + border-color: #AAA;
7 color: #333; 10 color: #333;
8 } 11 }
9 12
10 - &.btn-white {  
11 - background: #FFF;  
12 - }  
13 -  
14 - &.primary { 13 + &.btn-primary {
15 background: #2a79A3; 14 background: #2a79A3;
16 @include linear-gradient(#47A7b7, #2585b5); 15 @include linear-gradient(#47A7b7, #2585b5);
17 border-color: #2A79A3; 16 border-color: #2A79A3;
@@ -58,21 +57,18 @@ @@ -58,21 +57,18 @@
58 } 57 }
59 } 58 }
60 59
61 - &.save-btn { 60 + &.btn-create {
62 @extend .wide; 61 @extend .wide;
63 - @extend .primary; 62 + @extend .success;
64 } 63 }
65 64
66 - &.cancel-btn {  
67 - float: right;  
68 - }  
69 -  
70 - &.wide {  
71 - padding-left: 30px;  
72 - padding-right: 30px; 65 + &.btn-save {
  66 + @extend .wide;
  67 + @extend .btn-primary;
73 } 68 }
74 69
75 - &.danger { 70 + &.btn-close,
  71 + &.btn-remove {
76 @extend .btn-danger; 72 @extend .btn-danger;
77 border-color: #BD362F; 73 border-color: #BD362F;
78 74
@@ -82,8 +78,13 @@ @@ -82,8 +78,13 @@
82 } 78 }
83 } 79 }
84 80
85 - &.danger {  
86 - @extend .btn-danger; 81 + &.btn-cancel {
  82 + float: right;
  83 + }
  84 +
  85 + &.wide {
  86 + padding-left: 20px;
  87 + padding-right: 20px;
87 } 88 }
88 89
89 &.small { 90 &.small {
@@ -95,7 +96,7 @@ @@ -95,7 +96,7 @@
95 background-color: #ccc; 96 background-color: #ccc;
96 } 97 }
97 98
98 - &.very_small { 99 + &.btn-tiny {
99 font-size: 11px; 100 font-size: 11px;
100 padding: 2px 6px; 101 padding: 2px 6px;
101 line-height: 16px; 102 line-height: 16px;
app/assets/stylesheets/gitlab_bootstrap/common.scss
@@ -9,7 +9,6 @@ @@ -9,7 +9,6 @@
9 9
10 /** COMMON CLASSES **/ 10 /** COMMON CLASSES **/
11 .left { float:left } 11 .left { float:left }
12 -.right { float:right!important }  
13 .append-bottom-10 { margin-bottom:10px } 12 .append-bottom-10 { margin-bottom:10px }
14 .append-bottom-20 { margin-bottom:20px } 13 .append-bottom-20 { margin-bottom:20px }
15 .prepend-top-10 { margin-top:10px } 14 .prepend-top-10 { margin-top:10px }
@@ -22,82 +21,13 @@ @@ -22,82 +21,13 @@
22 .light { color: #888 } 21 .light { color: #888 }
23 .tiny { font-weight: normal } 22 .tiny { font-weight: normal }
24 23
25 -/** PILLS & TABS**/  
26 -.nav-pills {  
27 - .active a {  
28 - background: $primary_color;  
29 - }  
30 -  
31 - > li > a {  
32 - @include border-radius(0);  
33 - }  
34 - &.nav-stacked {  
35 - > li > a {  
36 - border-left: 4px solid #EEE;  
37 - padding: 12px;  
38 - }  
39 - > .active > a {  
40 - border-color: #29B;  
41 - border-radius: 0;  
42 - background: #F1F1F1;  
43 - color: $style_color;  
44 - font-weight: bold;  
45 - }  
46 - }  
47 -}  
48 -  
49 -.nav-pills > .active > a > i[class^="icon-"] { background: inherit; }  
50 -  
51 -  
52 -  
53 -/**  
54 - * nav-tabs  
55 - *  
56 - */  
57 -.nav-tabs > li > a, .nav-pills > li > a { color: $style_color; }  
58 -.nav.nav-tabs {  
59 - li {  
60 - > a {  
61 - padding: 8px 20px;  
62 - margin-right: 7px;  
63 - line-height: 20px;  
64 - border-color: #EEE;  
65 - color: #888;  
66 - border-bottom: 1px solid #ddd;  
67 - .badge {  
68 - background-color: #eee;  
69 - color: #888;  
70 - text-shadow: 0 1px 1px #fff;  
71 - }  
72 - i[class^="icon-"] {  
73 - line-height: 14px;  
74 - }  
75 - }  
76 - &.active {  
77 - > a {  
78 - border-color: #CCC;  
79 - border-bottom: 1px solid #fff;  
80 - color: #333;  
81 - }  
82 - }  
83 - }  
84 -  
85 - &.nav-small-tabs > li > a { padding: 6px 9px; }  
86 -}  
87 24
88 /** ALERT MESSAGES **/ 25 /** ALERT MESSAGES **/
89 -.alert-message { @extend .alert; }  
90 -.alert-messag.success { @extend .alert-success; }  
91 -.alert-message.error { @extend .alert-error; }  
92 -  
93 -/** AVATARS **/  
94 -img.avatar { float: left; margin-right: 12px; width: 40px; border: 1px solid #ddd; padding: 1px; }  
95 -img.avatar.s16 { width: 16px; height: 16px; margin-right: 6px; }  
96 -img.avatar.s24 { width: 24px; height: 24px; margin-right: 8px; }  
97 -img.avatar.s32 { width: 32px; height: 32px; margin-right: 10px; }  
98 -img.avatar.s90 { width: 90px; height: 90px; margin-right: 15px; }  
99 -img.lil_av { padding-left: 4px; padding-right: 3px; }  
100 -img.small { width: 80px; } 26 +.alert.alert-disabled {
  27 + background: #EEE;
  28 + color: #777;
  29 + border-color: #DDD;
  30 +}
101 31
102 /** HELPERS **/ 32 /** HELPERS **/
103 .nothing_here_message { 33 .nothing_here_message {
app/assets/stylesheets/gitlab_bootstrap/nav.scss 0 → 100644
@@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
  1 +/**
  2 + * nav-pills
  3 + *
  4 + */
  5 +.nav-pills {
  6 + .active a {
  7 + background: $primary_color;
  8 + }
  9 +
  10 + > li > a {
  11 + @include border-radius(0);
  12 + }
  13 + &.nav-stacked {
  14 + > li > a {
  15 + border-left: 4px solid #EEE;
  16 + padding: 12px;
  17 + }
  18 + > .active > a {
  19 + border-color: #29B;
  20 + border-radius: 0;
  21 + background: #F1F1F1;
  22 + color: $style_color;
  23 + font-weight: bold;
  24 + }
  25 + }
  26 +}
  27 +
  28 +.nav-pills > .active > a > i[class^="icon-"] { background: inherit; }
  29 +
  30 +
  31 +
  32 +/**
  33 + * nav-tabs
  34 + *
  35 + */
  36 +.nav-tabs > li > a, .nav-pills > li > a { color: $style_color; }
  37 +.nav.nav-tabs {
  38 + li {
  39 + > a {
  40 + padding: 8px 20px;
  41 + margin-right: 7px;
  42 + line-height: 20px;
  43 + border-color: #EEE;
  44 + color: #888;
  45 + border-bottom: 1px solid #ddd;
  46 + .badge {
  47 + background-color: #eee;
  48 + color: #888;
  49 + text-shadow: 0 1px 1px #fff;
  50 + }
  51 + i[class^="icon-"] {
  52 + line-height: 14px;
  53 + }
  54 + }
  55 + &.active {
  56 + > a {
  57 + border-color: #CCC;
  58 + border-bottom: 1px solid #fff;
  59 + color: #333;
  60 + }
  61 + }
  62 + }
  63 +
  64 + &.nav-small-tabs > li > a { padding: 6px 9px; }
  65 +}
app/assets/stylesheets/sections/events.scss
@@ -127,7 +127,7 @@ @@ -127,7 +127,7 @@
127 .btn-new-mr { 127 .btn-new-mr {
128 @extend .btn-info; 128 @extend .btn-info;
129 @extend .small; 129 @extend .small;
130 - @extend .right; 130 + @extend .pull-right;
131 margin: -3px; 131 margin: -3px;
132 } 132 }
133 } 133 }
app/assets/stylesheets/sections/login.scss
1 /* Login Page */ 1 /* Login Page */
2 -body.login-page{  
3 - padding-top: 10%;  
4 - background: #f1f1f1; 2 +body.login-page{
  3 + padding-top: 7%;
  4 + background: #666;
5 } 5 }
6 6
7 .login-box{ 7 .login-box{
app/assets/stylesheets/sections/nav.scss
@@ -6,8 +6,7 @@ ul.main_menu { @@ -6,8 +6,7 @@ ul.main_menu {
6 margin: auto; 6 margin: auto;
7 margin: 30px 0; 7 margin: 30px 0;
8 margin-top: 10px; 8 margin-top: 10px;
9 - border-bottom: 1px solid #DDD;  
10 - height: 37px; 9 + height: 38px;
11 position: relative; 10 position: relative;
12 overflow: hidden; 11 overflow: hidden;
13 .count { 12 .count {
@@ -33,6 +32,7 @@ ul.main_menu { @@ -33,6 +32,7 @@ ul.main_menu {
33 margin: 0; 32 margin: 0;
34 display: table-cell; 33 display: table-cell;
35 width: 1%; 34 width: 1%;
  35 + border-bottom: 2px solid #EEE;
36 &.active { 36 &.active {
37 border-bottom: 2px solid #474D57; 37 border-bottom: 2px solid #474D57;
38 a { 38 a {
@@ -42,10 +42,8 @@ ul.main_menu { @@ -42,10 +42,8 @@ ul.main_menu {
42 42
43 &.home { 43 &.home {
44 a { 44 a {
45 - background: url(home_icon.PNG) no-repeat center center;  
46 - text-indent:-9999px;  
47 - min-width: 20px;  
48 - img { 45 + i {
  46 + font-size: 20px;
49 position: relative; 47 position: relative;
50 top: 4px; 48 top: 4px;
51 } 49 }
@@ -56,7 +54,7 @@ ul.main_menu { @@ -56,7 +54,7 @@ ul.main_menu {
56 display: block; 54 display: block;
57 text-align: center; 55 text-align: center;
58 font-weight: normal; 56 font-weight: normal;
59 - height: 35px; 57 + height: 36px;
60 line-height: 36px; 58 line-height: 36px;
61 color: #777; 59 color: #777;
62 text-shadow: 0 1px 1px white; 60 text-shadow: 0 1px 1px white;
app/assets/stylesheets/sections/notes.scss
@@ -81,14 +81,6 @@ ul.notes { @@ -81,14 +81,6 @@ ul.notes {
81 .attachment { 81 .attachment {
82 font-size: 14px; 82 font-size: 14px;
83 margin-top: -20px; 83 margin-top: -20px;
84 -  
85 - .icon-attachment {  
86 - @extend .icon-paper-clip;  
87 - font-size: 24px;  
88 - position: relative;  
89 - text-align: right;  
90 - top: 6px;  
91 - }  
92 } 84 }
93 .note-body { 85 .note-body {
94 margin-left: 45px; 86 margin-left: 45px;
@@ -214,9 +206,11 @@ ul.notes { @@ -214,9 +206,11 @@ ul.notes {
214 * Note Form 206 * Note Form
215 */ 207 */
216 208
217 -.comment-btn, 209 +.comment-btn {
  210 + @extend .btn-create;
  211 +}
218 .reply-btn { 212 .reply-btn {
219 - @extend .save-btn; 213 + @extend .btn-primary;
220 } 214 }
221 .file .content tr.line_holder:hover > td { background: $hover !important; } 215 .file .content tr.line_holder:hover > td { background: $hover !important; }
222 .file .content tr.line_holder:hover > td .line_note_link { 216 .file .content tr.line_holder:hover > td .line_note_link {
@@ -227,11 +221,6 @@ ul.notes { @@ -227,11 +221,6 @@ ul.notes {
227 .discussion { 221 .discussion {
228 .new_note { 222 .new_note {
229 margin: 8px 5px 8px 0; 223 margin: 8px 5px 8px 0;
230 -  
231 - .note_options {  
232 - // because of the smaller width and the extra "cancel" button  
233 - margin-top: 8px;  
234 - }  
235 } 224 }
236 } 225 }
237 .new_note { 226 .new_note {
@@ -244,37 +233,6 @@ ul.notes { @@ -244,37 +233,6 @@ ul.notes {
244 .clearfix { 233 .clearfix {
245 margin-bottom: 0; 234 margin-bottom: 0;
246 } 235 }
247 - .note_options {  
248 - h6 {  
249 - @extend .left;  
250 - line-height: 20px;  
251 - padding-right: 16px;  
252 - padding-bottom: 16px;  
253 - }  
254 - label {  
255 - padding: 0;  
256 - }  
257 -  
258 - .attachment {  
259 - @extend .right;  
260 - position: relative;  
261 - width: 350px;  
262 - height: 50px;  
263 - margin:0 0 5px !important;  
264 -  
265 - // hide the actual file field  
266 - input {  
267 - display: none;  
268 - }  
269 -  
270 - .choose-btn {  
271 - float: right;  
272 - }  
273 - }  
274 - .notify_options {  
275 - @extend .right;  
276 - }  
277 - }  
278 .note_text_and_preview { 236 .note_text_and_preview {
279 // makes the "absolute" position for links relative to this 237 // makes the "absolute" position for links relative to this
280 position: relative; 238 position: relative;
@@ -313,3 +271,17 @@ ul.notes { @@ -313,3 +271,17 @@ ul.notes {
313 @extend .thumbnail; 271 @extend .thumbnail;
314 margin-left: 45px; 272 margin-left: 45px;
315 } 273 }
  274 +
  275 +
  276 +.note-form-actions {
  277 + background: #F9F9F9;
  278 + height: 45px;
  279 + padding: 0 5px;
  280 +
  281 + .note-form-option {
  282 + margin-top: 8px;
  283 + margin-left: 15px;
  284 + @extend .pull-left;
  285 + @extend .span4;
  286 + }
  287 +}
app/assets/stylesheets/sections/projects.scss
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 } 4 }
5 5
6 .side { 6 .side {
7 - @extend .right; 7 + @extend .pull-right;
8 8
9 .projects_box { 9 .projects_box {
10 > .title { 10 > .title {
app/controllers/application_controller.rb
@@ -4,16 +4,12 @@ class ApplicationController &lt; ActionController::Base @@ -4,16 +4,12 @@ class ApplicationController &lt; ActionController::Base
4 before_filter :set_current_user_for_observers 4 before_filter :set_current_user_for_observers
5 before_filter :add_abilities 5 before_filter :add_abilities
6 before_filter :dev_tools if Rails.env == 'development' 6 before_filter :dev_tools if Rails.env == 'development'
  7 + before_filter :default_headers
7 8
8 protect_from_forgery 9 protect_from_forgery
9 10
10 helper_method :abilities, :can? 11 helper_method :abilities, :can?
11 12
12 - rescue_from Gitlab::Gitolite::AccessDenied do |exception|  
13 - log_exception(exception)  
14 - render "errors/gitolite", layout: "errors", status: 500  
15 - end  
16 -  
17 rescue_from Encoding::CompatibilityError do |exception| 13 rescue_from Encoding::CompatibilityError do |exception|
18 log_exception(exception) 14 log_exception(exception)
19 render "errors/encoding", layout: "errors", status: 500 15 render "errors/encoding", layout: "errors", status: 500
@@ -148,4 +144,8 @@ class ApplicationController &lt; ActionController::Base @@ -148,4 +144,8 @@ class ApplicationController &lt; ActionController::Base
148 Rack::MiniProfiler.authorize_request 144 Rack::MiniProfiler.authorize_request
149 end 145 end
150 146
  147 + def default_headers
  148 + headers['X-Frame-Options'] = 'DENY'
  149 + headers['X-XSS-Protection'] = '1; mode=block'
  150 + end
151 end 151 end
app/controllers/graph_controller.rb 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +class GraphController < ProjectResourceController
  2 + include ExtractsPath
  3 +
  4 + # Authorize
  5 + before_filter :authorize_read_project!
  6 + before_filter :authorize_code_access!
  7 + before_filter :require_non_empty_project
  8 +
  9 + def show
  10 + respond_to do |format|
  11 + format.html
  12 + format.json do
  13 + graph = Gitlab::Graph::JsonBuilder.new(project, @ref)
  14 + render :json => graph.to_json
  15 + end
  16 + end
  17 + end
  18 +end
app/controllers/groups_controller.rb
@@ -6,6 +6,7 @@ class GroupsController &lt; ApplicationController @@ -6,6 +6,7 @@ class GroupsController &lt; ApplicationController
6 6
7 # Authorize 7 # Authorize
8 before_filter :authorize_read_group!, except: [:new, :create] 8 before_filter :authorize_read_group!, except: [:new, :create]
  9 + before_filter :authorize_admin_group!, only: [:edit, :update, :destroy]
9 before_filter :authorize_create_group!, only: [:new, :create] 10 before_filter :authorize_create_group!, only: [:new, :create]
10 11
11 # Load group projects 12 # Load group projects
@@ -84,6 +85,31 @@ class GroupsController &lt; ApplicationController @@ -84,6 +85,31 @@ class GroupsController &lt; ApplicationController
84 redirect_to people_group_path(@group), notice: 'Users was successfully added.' 85 redirect_to people_group_path(@group), notice: 'Users was successfully added.'
85 end 86 end
86 87
  88 + def edit
  89 + end
  90 +
  91 + def update
  92 + group_params = params[:group].dup
  93 + owner_id =group_params.delete(:owner_id)
  94 +
  95 + if owner_id
  96 + @group.owner = User.find(owner_id)
  97 + end
  98 +
  99 + if @group.update_attributes(group_params)
  100 + redirect_to @group, notice: 'Group was successfully updated.'
  101 + else
  102 + render action: "edit"
  103 + end
  104 + end
  105 +
  106 + def destroy
  107 + @group.truncate_teams
  108 + @group.destroy
  109 +
  110 + redirect_to root_path, notice: 'Group was removed.'
  111 + end
  112 +
87 protected 113 protected
88 114
89 def group 115 def group
@@ -106,6 +132,14 @@ class GroupsController &lt; ApplicationController @@ -106,6 +132,14 @@ class GroupsController &lt; ApplicationController
106 end 132 end
107 133
108 def authorize_create_group! 134 def authorize_create_group!
109 - can?(current_user, :create_group, nil) 135 + unless can?(current_user, :create_group, nil)
  136 + return render_404
  137 + end
  138 + end
  139 +
  140 + def authorize_admin_group!
  141 + unless can?(current_user, :manage_group, group)
  142 + return render_404
  143 + end
110 end 144 end
111 end 145 end
app/controllers/projects_controller.rb
@@ -90,16 +90,6 @@ class ProjectsController &lt; ProjectResourceController @@ -90,16 +90,6 @@ class ProjectsController &lt; ProjectResourceController
90 end 90 end
91 end 91 end
92 92
93 - def graph  
94 - respond_to do |format|  
95 - format.html  
96 - format.json do  
97 - graph = Gitlab::Graph::JsonBuilder.new(project)  
98 - render :json => graph.to_json  
99 - end  
100 - end  
101 - end  
102 -  
103 def destroy 93 def destroy
104 return access_denied! unless can?(current_user, :remove_project, project) 94 return access_denied! unless can?(current_user, :remove_project, project)
105 95
app/controllers/refs_controller.rb
@@ -13,6 +13,8 @@ class RefsController &lt; ProjectResourceController @@ -13,6 +13,8 @@ class RefsController &lt; ProjectResourceController
13 format.html do 13 format.html do
14 new_path = if params[:destination] == "tree" 14 new_path = if params[:destination] == "tree"
15 project_tree_path(@project, (@ref + "/" + params[:path])) 15 project_tree_path(@project, (@ref + "/" + params[:path]))
  16 + elsif params[:destination] == "graph"
  17 + project_graph_path(@project, @ref)
16 else 18 else
17 project_commits_path(@project, @ref) 19 project_commits_path(@project, @ref)
18 end 20 end
app/helpers/projects_helper.rb
@@ -43,7 +43,7 @@ module ProjectsHelper @@ -43,7 +43,7 @@ module ProjectsHelper
43 tm = project.team_member_by_id(author) 43 tm = project.team_member_by_id(author)
44 44
45 if tm 45 if tm
46 - link_to author_html, project_team_member_path(project, tm), class: "author_link" 46 + link_to author_html, project_team_member_path(project, tm.user_username), class: "author_link"
47 else 47 else
48 author_html 48 author_html
49 end.html_safe 49 end.html_safe
app/mailers/notify.rb
@@ -10,6 +10,10 @@ class Notify &lt; ActionMailer::Base @@ -10,6 +10,10 @@ class Notify &lt; ActionMailer::Base
10 10
11 default from: Gitlab.config.gitlab.email_from 11 default from: Gitlab.config.gitlab.email_from
12 12
  13 + # Just send email with 3 seconds delay
  14 + def self.delay
  15 + delay_for(2.seconds)
  16 + end
13 17
14 18
15 # 19 #
@@ -63,12 +67,12 @@ class Notify &lt; ActionMailer::Base @@ -63,12 +67,12 @@ class Notify &lt; ActionMailer::Base
63 # Note 67 # Note
64 # 68 #
65 69
66 - def note_commit_email(commit_autor_email, note_id) 70 + def note_commit_email(recipient_id, note_id)
67 @note = Note.find(note_id) 71 @note = Note.find(note_id)
68 @commit = @note.noteable 72 @commit = @note.noteable
69 @commit = CommitDecorator.decorate(@commit) 73 @commit = CommitDecorator.decorate(@commit)
70 @project = @note.project 74 @project = @note.project
71 - mail(to: commit_autor_email, subject: subject("note for commit #{@commit.short_id}", @commit.title)) 75 + mail(to: recipient(recipient_id), subject: subject("note for commit #{@commit.short_id}", @commit.title))
72 end 76 end
73 77
74 def note_issue_email(recipient_id, note_id) 78 def note_issue_email(recipient_id, note_id)
app/models/key.rb
@@ -24,8 +24,8 @@ class Key &lt; ActiveRecord::Base @@ -24,8 +24,8 @@ class Key &lt; ActiveRecord::Base
24 before_save :set_identifier 24 before_save :set_identifier
25 25
26 validates :title, presence: true, length: { within: 0..255 } 26 validates :title, presence: true, length: { within: 0..255 }
27 - validates :key, presence: true, length: { within: 0..5000 }, format: { :with => /ssh-.{3} / }  
28 - validate :unique_key, :fingerprintable_key 27 + validates :key, presence: true, length: { within: 0..5000 }, format: { :with => /ssh-.{3} / }, uniqueness: true
  28 + validate :fingerprintable_key
29 29
30 delegate :name, :email, to: :user, prefix: true 30 delegate :name, :email, to: :user, prefix: true
31 31
@@ -33,14 +33,6 @@ class Key &lt; ActiveRecord::Base @@ -33,14 +33,6 @@ class Key &lt; ActiveRecord::Base
33 self.key = self.key.strip unless self.key.blank? 33 self.key = self.key.strip unless self.key.blank?
34 end 34 end
35 35
36 - def unique_key  
37 - query = Key.where(key: key)  
38 - query = query.where('(project_id IS NULL OR project_id = ?)', project_id) if project_id  
39 - if (query.count > 0)  
40 - errors.add :key, 'already exist.'  
41 - end  
42 - end  
43 -  
44 def fingerprintable_key 36 def fingerprintable_key
45 return true unless key # Don't test if there is no key. 37 return true unless key # Don't test if there is no key.
46 # `ssh-keygen -lf /dev/stdin <<< "#{key}"` errors with: redirection unexpected 38 # `ssh-keygen -lf /dev/stdin <<< "#{key}"` errors with: redirection unexpected
@@ -65,7 +57,7 @@ class Key &lt; ActiveRecord::Base @@ -65,7 +57,7 @@ class Key &lt; ActiveRecord::Base
65 end 57 end
66 58
67 def is_deploy_key 59 def is_deploy_key
68 - true if project_id 60 + !!project_id
69 end 61 end
70 62
71 # projects that has this key 63 # projects that has this key
@@ -77,7 +69,7 @@ class Key &lt; ActiveRecord::Base @@ -77,7 +69,7 @@ class Key &lt; ActiveRecord::Base
77 end 69 end
78 end 70 end
79 71
80 - def last_deploy?  
81 - Key.where(identifier: identifier).count == 0 72 + def shell_id
  73 + "key-#{self.id}"
82 end 74 end
83 end 75 end
app/models/namespace.rb
@@ -27,7 +27,6 @@ class Namespace &lt; ActiveRecord::Base @@ -27,7 +27,6 @@ class Namespace &lt; ActiveRecord::Base
27 27
28 after_create :ensure_dir_exist 28 after_create :ensure_dir_exist
29 after_update :move_dir 29 after_update :move_dir
30 - after_commit :update_gitolite, on: :update, if: :require_update_gitolite  
31 after_destroy :rm_dir 30 after_destroy :rm_dir
32 31
33 scope :root, where('type IS NULL') 32 scope :root, where('type IS NULL')
@@ -89,11 +88,6 @@ class Namespace &lt; ActiveRecord::Base @@ -89,11 +88,6 @@ class Namespace &lt; ActiveRecord::Base
89 end 88 end
90 end 89 end
91 90
92 - def update_gitolite  
93 - @require_update_gitolite = false  
94 - projects.each(&:update_repository)  
95 - end  
96 -  
97 def rm_dir 91 def rm_dir
98 dir_path = File.join(Gitlab.config.gitolite.repos_path, path) 92 dir_path = File.join(Gitlab.config.gitolite.repos_path, path)
99 FileUtils.rm_r( dir_path, force: true ) 93 FileUtils.rm_r( dir_path, force: true )
app/models/project.rb
@@ -8,7 +8,6 @@ @@ -8,7 +8,6 @@
8 # description :text 8 # description :text
9 # created_at :datetime not null 9 # created_at :datetime not null
10 # updated_at :datetime not null 10 # updated_at :datetime not null
11 -# private_flag :boolean default(TRUE), not null  
12 # creator_id :integer 11 # creator_id :integer
13 # default_branch :string(255) 12 # default_branch :string(255)
14 # issues_enabled :boolean default(TRUE), not null 13 # issues_enabled :boolean default(TRUE), not null
@@ -16,6 +15,7 @@ @@ -16,6 +15,7 @@
16 # merge_requests_enabled :boolean default(TRUE), not null 15 # merge_requests_enabled :boolean default(TRUE), not null
17 # wiki_enabled :boolean default(TRUE), not null 16 # wiki_enabled :boolean default(TRUE), not null
18 # namespace_id :integer 17 # namespace_id :integer
  18 +# public :boolean default(FALSE), not null
19 # 19 #
20 20
21 require "grit" 21 require "grit"
@@ -262,8 +262,6 @@ class Project &lt; ActiveRecord::Base @@ -262,8 +262,6 @@ class Project &lt; ActiveRecord::Base
262 262
263 Gitlab::ProjectMover.new(self, old_dir, new_dir).execute 263 Gitlab::ProjectMover.new(self, old_dir, new_dir).execute
264 264
265 - gitolite.move_repository(old_repo, self)  
266 -  
267 save! 265 save!
268 end 266 end
269 rescue Gitlab::ProjectMover::ProjectMoveError => ex 267 rescue Gitlab::ProjectMover::ProjectMoveError => ex
@@ -459,20 +457,6 @@ class Project &lt; ActiveRecord::Base @@ -459,20 +457,6 @@ class Project &lt; ActiveRecord::Base
459 namespace.try(:path) || '' 457 namespace.try(:path) || ''
460 end 458 end
461 459
462 - def update_repository  
463 - GitoliteWorker.perform_async(  
464 - :update_repository,  
465 - self.id  
466 - )  
467 - end  
468 -  
469 - def destroy_repository  
470 - GitoliteWorker.perform_async(  
471 - :remove_repository,  
472 - self.path_with_namespace  
473 - )  
474 - end  
475 -  
476 def repo_exists? 460 def repo_exists?
477 @repo_exists ||= (repository && repository.branches.present?) 461 @repo_exists ||= (repository && repository.branches.present?)
478 rescue 462 rescue
app/models/project_team.rb
@@ -112,7 +112,6 @@ class ProjectTeam @@ -112,7 +112,6 @@ class ProjectTeam
112 source_team.each do |tm| 112 source_team.each do |tm|
113 tm.save 113 tm.save
114 end 114 end
115 - target_project.update_repository  
116 end 115 end
117 116
118 true 117 true
app/models/protected_branch.rb
@@ -18,13 +18,6 @@ class ProtectedBranch &lt; ActiveRecord::Base @@ -18,13 +18,6 @@ class ProtectedBranch &lt; ActiveRecord::Base
18 validates :name, presence: true 18 validates :name, presence: true
19 validates :project, presence: true 19 validates :project, presence: true
20 20
21 - after_save :update_repository  
22 - after_destroy :update_repository  
23 -  
24 - def update_repository  
25 - project.update_repository  
26 - end  
27 -  
28 def commit 21 def commit
29 project.repository.commit(self.name) 22 project.repository.commit(self.name)
30 end 23 end
app/models/user.rb
@@ -31,6 +31,8 @@ @@ -31,6 +31,8 @@
31 # extern_uid :string(255) 31 # extern_uid :string(255)
32 # provider :string(255) 32 # provider :string(255)
33 # username :string(255) 33 # username :string(255)
  34 +# can_create_group :boolean default(TRUE), not null
  35 +# can_create_team :boolean default(TRUE), not null
34 # 36 #
35 37
36 class User < ActiveRecord::Base 38 class User < ActiveRecord::Base
app/models/user_team.rb
  1 +# == Schema Information
  2 +#
  3 +# Table name: user_teams
  4 +#
  5 +# id :integer not null, primary key
  6 +# name :string(255)
  7 +# path :string(255)
  8 +# owner_id :integer
  9 +# created_at :datetime not null
  10 +# updated_at :datetime not null
  11 +#
  12 +
1 class UserTeam < ActiveRecord::Base 13 class UserTeam < ActiveRecord::Base
2 attr_accessible :name, :owner_id, :path 14 attr_accessible :name, :owner_id, :path
3 15
app/models/user_team_project_relationship.rb
  1 +# == Schema Information
  2 +#
  3 +# Table name: user_team_project_relationships
  4 +#
  5 +# id :integer not null, primary key
  6 +# project_id :integer
  7 +# user_team_id :integer
  8 +# greatest_access :integer
  9 +# created_at :datetime not null
  10 +# updated_at :datetime not null
  11 +#
  12 +
1 class UserTeamProjectRelationship < ActiveRecord::Base 13 class UserTeamProjectRelationship < ActiveRecord::Base
2 attr_accessible :greatest_access, :project_id, :user_team_id 14 attr_accessible :greatest_access, :project_id, :user_team_id
3 15
app/models/user_team_user_relationship.rb
  1 +# == Schema Information
  2 +#
  3 +# Table name: user_team_user_relationships
  4 +#
  5 +# id :integer not null, primary key
  6 +# user_id :integer
  7 +# user_team_id :integer
  8 +# group_admin :boolean
  9 +# permission :integer
  10 +# created_at :datetime not null
  11 +# updated_at :datetime not null
  12 +#
  13 +
1 class UserTeamUserRelationship < ActiveRecord::Base 14 class UserTeamUserRelationship < ActiveRecord::Base
2 attr_accessible :group_admin, :permission, :user_id, :user_team_id 15 attr_accessible :group_admin, :permission, :user_id, :user_team_id
3 16
app/models/users_project.rb
@@ -25,15 +25,12 @@ class UsersProject &lt; ActiveRecord::Base @@ -25,15 +25,12 @@ class UsersProject &lt; ActiveRecord::Base
25 25
26 attr_accessor :skip_git 26 attr_accessor :skip_git
27 27
28 - after_save :update_repository, unless: :skip_git?  
29 - after_destroy :update_repository, unless: :skip_git?  
30 -  
31 validates :user, presence: true 28 validates :user, presence: true
32 validates :user_id, uniqueness: { scope: [:project_id], message: "already exists in project" } 29 validates :user_id, uniqueness: { scope: [:project_id], message: "already exists in project" }
33 validates :project_access, inclusion: { in: [GUEST, REPORTER, DEVELOPER, MASTER] }, presence: true 30 validates :project_access, inclusion: { in: [GUEST, REPORTER, DEVELOPER, MASTER] }, presence: true
34 validates :project, presence: true 31 validates :project, presence: true
35 32
36 - delegate :name, :email, to: :user, prefix: true 33 + delegate :name, :username, :email, to: :user, prefix: true
37 34
38 scope :guests, where(project_access: GUEST) 35 scope :guests, where(project_access: GUEST)
39 scope :reporters, where(project_access: REPORTER) 36 scope :reporters, where(project_access: REPORTER)
@@ -84,11 +81,6 @@ class UsersProject &lt; ActiveRecord::Base @@ -84,11 +81,6 @@ class UsersProject &lt; ActiveRecord::Base
84 end 81 end
85 end 82 end
86 83
87 - GitoliteWorker.perform_async(  
88 - :update_repositories,  
89 - project_ids  
90 - )  
91 -  
92 true 84 true
93 rescue 85 rescue
94 false 86 false
@@ -103,11 +95,6 @@ class UsersProject &lt; ActiveRecord::Base @@ -103,11 +95,6 @@ class UsersProject &lt; ActiveRecord::Base
103 end 95 end
104 end 96 end
105 97
106 - GitoliteWorker.perform_async(  
107 - :update_repositories,  
108 - project_ids  
109 - )  
110 -  
111 true 98 true
112 rescue 99 rescue
113 false 100 false
@@ -136,10 +123,6 @@ class UsersProject &lt; ActiveRecord::Base @@ -136,10 +123,6 @@ class UsersProject &lt; ActiveRecord::Base
136 end 123 end
137 end 124 end
138 125
139 - def update_repository  
140 - project.update_repository  
141 - end  
142 -  
143 def project_access_human 126 def project_access_human
144 Project.access_options.key(self.project_access) 127 Project.access_options.key(self.project_access)
145 end 128 end
app/observers/key_observer.rb
@@ -3,20 +3,17 @@ class KeyObserver &lt; ActiveRecord::Observer @@ -3,20 +3,17 @@ class KeyObserver &lt; ActiveRecord::Observer
3 3
4 def after_save(key) 4 def after_save(key)
5 GitoliteWorker.perform_async( 5 GitoliteWorker.perform_async(
6 - :set_key,  
7 - key.identifier,  
8 - key.key,  
9 - key.projects.map(&:id) 6 + :add_key,
  7 + key.shell_id,
  8 + key.key
10 ) 9 )
11 end 10 end
12 11
13 def after_destroy(key) 12 def after_destroy(key)
14 - return if key.is_deploy_key && !key.last_deploy?  
15 -  
16 GitoliteWorker.perform_async( 13 GitoliteWorker.perform_async(
17 :remove_key, 14 :remove_key,
18 - key.identifier,  
19 - key.projects.map(&:id) 15 + key.shell_id,
  16 + key.key,
20 ) 17 )
21 end 18 end
22 end 19 end
app/observers/note_observer.rb
@@ -11,7 +11,9 @@ class NoteObserver &lt; ActiveRecord::Observer @@ -11,7 +11,9 @@ class NoteObserver &lt; ActiveRecord::Observer
11 notify_team(note) 11 notify_team(note)
12 elsif note.notify_author 12 elsif note.notify_author
13 # Notify only author of resource 13 # Notify only author of resource
14 - Notify.delay.note_commit_email(note.noteable.author_email, note.id) 14 + if note.commit_author
  15 + Notify.delay.note_commit_email(note.commit_author.id, note.id)
  16 + end
15 else 17 else
16 # Otherwise ignore it 18 # Otherwise ignore it
17 nil 19 nil
app/observers/project_observer.rb
1 class ProjectObserver < ActiveRecord::Observer 1 class ProjectObserver < ActiveRecord::Observer
2 def after_create(project) 2 def after_create(project)
3 - project.update_repository 3 + GitoliteWorker.perform_async(
  4 + :add_repository,
  5 + project.path_with_namespace
  6 + )
  7 +
  8 + log_info("#{project.owner.name} created a new project \"#{project.name_with_namespace}\"")
4 end 9 end
5 10
6 def after_update(project) 11 def after_update(project)
@@ -8,14 +13,14 @@ class ProjectObserver &lt; ActiveRecord::Observer @@ -8,14 +13,14 @@ class ProjectObserver &lt; ActiveRecord::Observer
8 end 13 end
9 14
10 def after_destroy(project) 15 def after_destroy(project)
11 - log_info("Project \"#{project.name}\" was removed") 16 + GitoliteWorker.perform_async(
  17 + :remove_repository,
  18 + project.path_with_namespace
  19 + )
12 20
13 project.satellite.destroy 21 project.satellite.destroy
14 - project.destroy_repository  
15 - end  
16 22
17 - def after_create project  
18 - log_info("#{project.owner.name} created a new project \"#{project.name_with_namespace}\"") 23 + log_info("Project \"#{project.name}\" was removed")
19 end 24 end
20 25
21 protected 26 protected
app/views/admin/dashboard/index.html.haml
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 = link_to admin_projects_path do 6 = link_to admin_projects_path do
7 %h1= Project.count 7 %h1= Project.count
8 %hr 8 %hr
9 - = link_to 'New Project', new_project_path, class: "btn small" 9 + = link_to 'New Project', new_project_path, class: "btn btn-small"
10 .span4 10 .span4
11 .ui-box 11 .ui-box
12 %h5.title Groups 12 %h5.title Groups
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 = link_to admin_groups_path do 14 = link_to admin_groups_path do
15 %h1= Group.count 15 %h1= Group.count
16 %hr 16 %hr
17 - = link_to 'New Group', new_admin_group_path, class: "btn small" 17 + = link_to 'New Group', new_admin_group_path, class: "btn btn-small"
18 .span4 18 .span4
19 .ui-box 19 .ui-box
20 %h5.title Users 20 %h5.title Users
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 = link_to admin_users_path do 22 = link_to admin_users_path do
23 %h1= User.count 23 %h1= User.count
24 %hr 24 %hr
25 - = link_to 'New User', new_admin_user_path, class: "btn small" 25 + = link_to 'New User', new_admin_user_path, class: "btn btn-small"
26 26
27 .row 27 .row
28 .span4 28 .span4
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 - @projects.each do |project| 31 - @projects.each do |project|
32 %p 32 %p
33 = link_to project.name_with_namespace, [:admin, project] 33 = link_to project.name_with_namespace, [:admin, project]
34 - %span.light.right 34 + %span.light.pull-right
35 = time_ago_in_words project.created_at 35 = time_ago_in_words project.created_at
36 ago 36 ago
37 37
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 %p 42 %p
43 = link_to [:admin, user] do 43 = link_to [:admin, user] do
44 = user.name 44 = user.name
45 - %span.light.right 45 + %span.light.pull-right
46 = time_ago_in_words user.created_at 46 = time_ago_in_words user.created_at
47 ago 47 ago
48 48
@@ -51,25 +51,25 @@ @@ -51,25 +51,25 @@
51 %hr 51 %hr
52 %p 52 %p
53 Issues 53 Issues
54 - %span.light.right 54 + %span.light.pull-right
55 = Issue.count 55 = Issue.count
56 %p 56 %p
57 Merge Requests 57 Merge Requests
58 - %span.light.right 58 + %span.light.pull-right
59 = MergeRequest.count 59 = MergeRequest.count
60 %p 60 %p
61 Notes 61 Notes
62 - %span.light.right 62 + %span.light.pull-right
63 = Note.count 63 = Note.count
64 %p 64 %p
65 Snippets 65 Snippets
66 - %span.light.right 66 + %span.light.pull-right
67 = Snippet.count 67 = Snippet.count
68 %p 68 %p
69 SSH Keys 69 SSH Keys
70 - %span.light.right 70 + %span.light.pull-right
71 = Key.count 71 = Key.count
72 %p 72 %p
73 Milestones 73 Milestones
74 - %span.light.right 74 + %span.light.pull-right
75 = Milestone.count 75 = Milestone.count
app/views/admin/groups/edit.html.haml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 %hr 2 %hr
3 = form_for [:admin, @group] do |f| 3 = form_for [:admin, @group] do |f|
4 - if @group.errors.any? 4 - if @group.errors.any?
5 - .alert-message.block-message.error 5 + .alert.alert-error
6 %span= @group.errors.full_messages.first 6 %span= @group.errors.full_messages.first
7 .clearfix.group_name_holder 7 .clearfix.group_name_holder
8 = f.label :name do 8 = f.label :name do
@@ -24,5 +24,5 @@ @@ -24,5 +24,5 @@
24 %li It will change the git path to repositories under this group. 24 %li It will change the git path to repositories under this group.
25 25
26 .form-actions 26 .form-actions
27 - = f.submit 'Rename group', class: "btn danger"  
28 - = link_to 'Cancel', admin_groups_path, class: "btn cancel-btn" 27 + = f.submit 'Rename group', class: "btn btn-remove"
  28 + = link_to 'Cancel', admin_groups_path, class: "btn btn-cancel"
app/views/admin/groups/index.html.haml
@@ -4,11 +4,11 @@ @@ -4,11 +4,11 @@
4 allows you to keep projects organized. 4 allows you to keep projects organized.
5 Use groups for uniting related projects. 5 Use groups for uniting related projects.
6 6
7 - = link_to 'New Group', new_admin_group_path, class: "btn small right" 7 + = link_to 'New Group', new_admin_group_path, class: "btn btn-small pull-right"
8 %br 8 %br
9 = form_tag admin_groups_path, method: :get, class: 'form-inline' do 9 = form_tag admin_groups_path, method: :get, class: 'form-inline' do
10 = text_field_tag :name, params[:name], class: "xlarge" 10 = text_field_tag :name, params[:name], class: "xlarge"
11 - = submit_tag "Search", class: "btn submit primary" 11 + = submit_tag "Search", class: "btn submit btn-primary"
12 12
13 %table 13 %table
14 %thead 14 %thead
@@ -30,6 +30,6 @@ @@ -30,6 +30,6 @@
30 %td 30 %td
31 = link_to group.owner_name, admin_user_path(group.owner_id) 31 = link_to group.owner_name, admin_user_path(group.owner_id)
32 %td.bgred 32 %td.bgred
33 - = link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small"  
34 - = link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger" 33 + = link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn btn-small"
  34 + = link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
35 = paginate @groups, theme: "admin" 35 = paginate @groups, theme: "admin"
app/views/admin/groups/new.html.haml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 %hr 2 %hr
3 = form_for [:admin, @group] do |f| 3 = form_for [:admin, @group] do |f|
4 - if @group.errors.any? 4 - if @group.errors.any?
5 - .alert-message.block-message.error 5 + .alert.alert-error
6 %span= @group.errors.full_messages.first 6 %span= @group.errors.full_messages.first
7 .clearfix 7 .clearfix
8 = f.label :name do 8 = f.label :name do
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 .input 10 .input
11 = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left" 11 = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
12 &nbsp; 12 &nbsp;
13 - = f.submit 'Create group', class: "btn primary" 13 + = f.submit 'Create group', class: "btn btn-primary"
14 %hr 14 %hr
15 .padded 15 .padded
16 %ul 16 %ul
app/views/admin/groups/show.html.haml
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 %td 14 %td
15 = @group.name 15 = @group.name
16 &nbsp; 16 &nbsp;
17 - = link_to edit_admin_group_path(@group), class: "btn btn-small right" do 17 + = link_to edit_admin_group_path(@group), class: "btn btn-small pull-right" do
18 %i.icon-edit 18 %i.icon-edit
19 Rename 19 Rename
20 %tr 20 %tr
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
29 Owner: 29 Owner:
30 %td 30 %td
31 = @group.owner_name 31 = @group.owner_name
32 - .right 32 + .pull-right
33 = link_to "#", class: "btn btn-small change-owner-link" do 33 = link_to "#", class: "btn btn-small change-owner-link" do
34 %i.icon-edit 34 %i.icon-edit
35 Change owner 35 Change owner
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 = form_for [:admin, @group] do |f| 42 = form_for [:admin, @group] do |f|
43 = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'} 43 = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
44 %div 44 %div
45 - = f.submit 'Change Owner', class: "btn danger" 45 + = f.submit 'Change Owner', class: "btn btn-remove"
46 = link_to "Cancel", "#", class: "btn change-owner-cancel-link" 46 = link_to "Cancel", "#", class: "btn change-owner-cancel-link"
47 47
48 - if @group.projects.any? 48 - if @group.projects.any?
@@ -63,7 +63,7 @@ @@ -63,7 +63,7 @@
63 %span.monospace= project.path_with_namespace + ".git" 63 %span.monospace= project.path_with_namespace + ".git"
64 %td= project.users.count 64 %td= project.users.count
65 %td.bgred 65 %td.bgred
66 - = link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn danger small" 66 + = link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn btn-remove small"
67 67
68 = form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do 68 = form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do
69 %table.zebra-striped 69 %table.zebra-striped
@@ -88,7 +88,7 @@ @@ -88,7 +88,7 @@
88 %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} 88 %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}
89 89
90 %tr 90 %tr
91 - %td= submit_tag 'Add user to projects in group', class: "btn primary" 91 + %td= submit_tag 'Add user to projects in group', class: "btn btn-primary"
92 %td 92 %td
93 Read more about project permissions 93 Read more about project permissions
94 %strong= link_to "here", help_permissions_path, class: "vlink" 94 %strong= link_to "here", help_permissions_path, class: "vlink"
@@ -110,7 +110,7 @@ @@ -110,7 +110,7 @@
110 .input 110 .input
111 = select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5' 111 = select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
112 .form-actions 112 .form-actions
113 - = submit_tag 'Add', class: "btn primary" 113 + = submit_tag 'Add', class: "btn btn-primary"
114 114
115 :javascript 115 :javascript
116 $(function(){ 116 $(function(){
app/views/admin/hooks/index.html.haml
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 7
8 = form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f| 8 = form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f|
9 -if @hook.errors.any? 9 -if @hook.errors.any?
10 - .alert-message.block-message.error 10 + .alert.alert-error
11 - @hook.errors.full_messages.each do |msg| 11 - @hook.errors.full_messages.each do |msg|
12 %p= msg 12 %p= msg
13 .clearfix 13 .clearfix
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 .input 15 .input
16 = f.text_field :url, class: "text_field xxlarge" 16 = f.text_field :url, class: "text_field xxlarge"
17 &nbsp; 17 &nbsp;
18 - = f.submit "Add System Hook", class: "btn primary" 18 + = f.submit "Add System Hook", class: "btn btn-primary"
19 %hr 19 %hr
20 20
21 -if @hooks.any? 21 -if @hooks.any?
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 %td 33 %td
34 = link_to admin_hook_path(hook) do 34 = link_to admin_hook_path(hook) do
35 %strong= hook.url 35 %strong= hook.url
36 - = link_to 'Test Hook', admin_hook_test_path(hook), class: "btn small right" 36 + = link_to 'Test Hook', admin_hook_test_path(hook), class: "btn btn-small pull-right"
37 %td POST 37 %td POST
38 %td 38 %td
39 - = link_to 'Remove', admin_hook_path(hook), confirm: 'Are you sure?', method: :delete, class: "danger btn small right" 39 + = link_to 'Remove', admin_hook_path(hook), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove btn-small pull-right"
app/views/admin/logs/show.html.haml
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 .file_title 15 .file_title
16 %i.icon-file 16 %i.icon-file
17 githost.log 17 githost.log
18 - .right 18 + .pull-right
19 = link_to '#', class: 'log-bottom' do 19 = link_to '#', class: 'log-bottom' do
20 %i.icon-arrow-down 20 %i.icon-arrow-down
21 Scroll down 21 Scroll down
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
29 .file_title 29 .file_title
30 %i.icon-file 30 %i.icon-file
31 application.log 31 application.log
32 - .right 32 + .pull-right
33 = link_to '#', class: 'log-bottom' do 33 = link_to '#', class: 'log-bottom' do
34 %i.icon-arrow-down 34 %i.icon-arrow-down
35 Scroll down 35 Scroll down
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 .file_title 43 .file_title
44 %i.icon-file 44 %i.icon-file
45 production.log 45 production.log
46 - .right 46 + .pull-right
47 = link_to '#', class: 'log-bottom' do 47 = link_to '#', class: 'log-bottom' do
48 %i.icon-arrow-down 48 %i.icon-arrow-down
49 Scroll down 49 Scroll down
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 .file_title 57 .file_title
58 %i.icon-file 58 %i.icon-file
59 sidekiq.log 59 sidekiq.log
60 - .right 60 + .pull-right
61 = link_to '#', class: 'log-bottom' do 61 = link_to '#', class: 'log-bottom' do
62 %i.icon-arrow-down 62 %i.icon-arrow-down
63 Scroll down 63 Scroll down
app/views/admin/projects/_form.html.haml
1 = form_for [:admin, project] do |f| 1 = form_for [:admin, project] do |f|
2 -if project.errors.any? 2 -if project.errors.any?
3 - .alert-message.block-message.error 3 + .alert.alert-error
4 %ul 4 %ul
5 - project.errors.full_messages.each do |msg| 5 - project.errors.full_messages.each do |msg|
6 %li= msg 6 %li= msg
@@ -65,8 +65,8 @@ @@ -65,8 +65,8 @@
65 65
66 66
67 .actions 67 .actions
68 - = f.submit 'Save Project', class: "btn save-btn"  
69 - = link_to 'Cancel', admin_projects_path, class: "btn cancel-btn" 68 + = f.submit 'Save Project', class: "btn btn-save"
  69 + = link_to 'Cancel', admin_projects_path, class: "btn btn-cancel"
70 70
71 71
72 72
app/views/admin/projects/index.html.haml
1 %h3.page_title 1 %h3.page_title
2 Projects 2 Projects
3 - = link_to 'New Project', new_project_path, class: "btn small right" 3 + = link_to 'New Project', new_project_path, class: "btn btn-small pull-right"
4 4
5 %hr 5 %hr
6 6
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 37
38 38
39 .form-actions 39 .form-actions
40 - = submit_tag "Search", class: "btn submit primary" 40 + = submit_tag "Search", class: "btn submit btn-primary"
41 = link_to "Reset", admin_projects_path, class: "btn" 41 = link_to "Reset", admin_projects_path, class: "btn"
42 .span8 42 .span8
43 .ui-box 43 .ui-box
@@ -51,9 +51,9 @@ @@ -51,9 +51,9 @@
51 - else 51 - else
52 %i.icon-lock.cgreen 52 %i.icon-lock.cgreen
53 = link_to project.name_with_namespace, [:admin, project] 53 = link_to project.name_with_namespace, [:admin, project]
54 - .right  
55 - = link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn small"  
56 - = link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn small danger" 54 + .pull-right
  55 + = link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
  56 + = link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
57 - if @projects.blank? 57 - if @projects.blank?
58 %p.nothing_here_message 0 projects matches 58 %p.nothing_here_message 0 projects matches
59 - else 59 - else
app/views/admin/projects/members/_form.html.haml
1 = form_for @team_member_relation, as: :team_member, url: admin_project_member_path(@project, @member) do |f| 1 = form_for @team_member_relation, as: :team_member, url: admin_project_member_path(@project, @member) do |f|
2 -if @team_member_relation.errors.any? 2 -if @team_member_relation.errors.any?
3 - .alert-message.block-message.error 3 + .alert.alert-error
4 %ul 4 %ul
5 - @team_member_relation.errors.full_messages.each do |msg| 5 - @team_member_relation.errors.full_messages.each do |msg|
6 %li= msg 6 %li= msg
@@ -12,5 +12,5 @@ @@ -12,5 +12,5 @@
12 12
13 %br 13 %br
14 .actions 14 .actions
15 - = f.submit 'Save', class: "btn primary" 15 + = f.submit 'Save', class: "btn btn-primary"
16 = link_to 'Cancel', :back, class: "btn" 16 = link_to 'Cancel', :back, class: "btn"
app/views/admin/projects/show.html.haml
1 %h3.page_title 1 %h3.page_title
2 Project: #{@project.name_with_namespace} 2 Project: #{@project.name_with_namespace}
3 - = link_to edit_admin_project_path(@project), class: "btn right" do 3 + = link_to edit_admin_project_path(@project), class: "btn pull-right" do
4 %i.icon-edit 4 %i.icon-edit
5 Edit 5 Edit
6 6
@@ -129,8 +129,8 @@ @@ -129,8 +129,8 @@
129 %td 129 %td
130 = link_to tm.name, admin_user_path(tm) 130 = link_to tm.name, admin_user_path(tm)
131 %td= @project.project_access_human(tm) 131 %td= @project.project_access_human(tm)
132 - %td= link_to 'Edit Access', edit_admin_project_member_path(@project, tm), class: "btn small"  
133 - %td= link_to 'Remove from team', admin_project_member_path(@project, tm), confirm: 'Are you sure?', method: :delete, class: "btn danger small" 132 + %td= link_to 'Edit Access', edit_admin_project_member_path(@project, tm), class: "btn btn-small"
  133 + %td= link_to 'Remove from team', admin_project_member_path(@project, tm), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove small"
134 134
135 %br 135 %br
136 %h5 Add new team member 136 %h5 Add new team member
@@ -147,7 +147,7 @@ @@ -147,7 +147,7 @@
147 %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} 147 %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}
148 148
149 %tr 149 %tr
150 - %td= submit_tag 'Add', class: "btn primary" 150 + %td= submit_tag 'Add', class: "btn btn-primary"
151 %td 151 %td
152 Read more about project permissions 152 Read more about project permissions
153 %strong= link_to "here", help_permissions_path, class: "vlink" 153 %strong= link_to "here", help_permissions_path, class: "vlink"
app/views/admin/teams/edit.html.haml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 %hr 2 %hr
3 = form_for @team, url: admin_team_path(@team), method: :put do |f| 3 = form_for @team, url: admin_team_path(@team), method: :put do |f|
4 - if @team.errors.any? 4 - if @team.errors.any?
5 - .alert-message.block-message.error 5 + .alert.alert-error
6 %span= @team.errors.full_messages.first 6 %span= @team.errors.full_messages.first
7 .clearfix.team_name_holder 7 .clearfix.team_name_holder
8 = f.label :name do 8 = f.label :name do
@@ -19,5 +19,5 @@ @@ -19,5 +19,5 @@
19 %li It will change web url for access team and team projects. 19 %li It will change web url for access team and team projects.
20 20
21 .form-actions 21 .form-actions
22 - = f.submit 'Rename team', class: "btn danger"  
23 - = link_to 'Cancel', admin_teams_path, class: "btn cancel-btn" 22 + = f.submit 'Rename team', class: "btn btn-remove"
  23 + = link_to 'Cancel', admin_teams_path, class: "btn btn-cancel"
app/views/admin/teams/index.html.haml
@@ -3,12 +3,12 @@ @@ -3,12 +3,12 @@
3 %small 3 %small
4 simple Teams description 4 simple Teams description
5 5
6 - = link_to 'New Team', new_admin_team_path, class: "btn small right" 6 + = link_to 'New Team', new_admin_team_path, class: "btn btn-small pull-right"
7 %br 7 %br
8 8
9 = form_tag admin_teams_path, method: :get, class: 'form-inline' do 9 = form_tag admin_teams_path, method: :get, class: 'form-inline' do
10 = text_field_tag :name, params[:name], class: "xlarge" 10 = text_field_tag :name, params[:name], class: "xlarge"
11 - = submit_tag "Search", class: "btn submit primary" 11 + = submit_tag "Search", class: "btn submit btn-primary"
12 12
13 %table 13 %table
14 %thead 14 %thead
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 %td 32 %td
33 = link_to team.owner.name, admin_user_path(team.owner_id) 33 = link_to team.owner.name, admin_user_path(team.owner_id)
34 %td.bgred 34 %td.bgred
35 - = link_to 'Rename', edit_admin_team_path(team), id: "edit_#{dom_id(team)}", class: "btn small"  
36 - = link_to 'Destroy', admin_team_path(team), confirm: "REMOVE #{team.name}? Are you sure?", method: :delete, class: "btn small danger" 35 + = link_to 'Rename', edit_admin_team_path(team), id: "edit_#{dom_id(team)}", class: "btn btn-small"
  36 + = link_to 'Destroy', admin_team_path(team), confirm: "REMOVE #{team.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
37 37
38 = paginate @teams, theme: "admin" 38 = paginate @teams, theme: "admin"
app/views/admin/teams/members/_form.html.haml
1 = form_tag admin_team_member_path(@team, @member), method: :put do 1 = form_tag admin_team_member_path(@team, @member), method: :put do
2 -if @member.errors.any? 2 -if @member.errors.any?
3 - .alert-message.block-message.error 3 + .alert.alert-error
4 %ul 4 %ul
5 - @member.errors.full_messages.each do |msg| 5 - @member.errors.full_messages.each do |msg|
6 %li= msg 6 %li= msg
@@ -16,5 +16,5 @@ @@ -16,5 +16,5 @@
16 16
17 %br 17 %br
18 .actions 18 .actions
19 - = submit_tag 'Save', class: "btn primary" 19 + = submit_tag 'Save', class: "btn btn-primary"
20 = link_to 'Cancel', :back, class: "btn" 20 = link_to 'Cancel', :back, class: "btn"
app/views/admin/teams/members/new.html.haml
@@ -26,4 +26,4 @@ @@ -26,4 +26,4 @@
26 %td 26 %td
27 %span= check_box_tag :group_admin 27 %span= check_box_tag :group_admin
28 %span Admin? 28 %span Admin?
29 - %td= submit_tag 'Add', class: "btn primary", id: :add_members_to_team 29 + %td= submit_tag 'Add', class: "btn btn-primary", id: :add_members_to_team
app/views/admin/teams/new.html.haml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 %hr 2 %hr
3 = form_for @team, url: admin_teams_path do |f| 3 = form_for @team, url: admin_teams_path do |f|
4 - if @team.errors.any? 4 - if @team.errors.any?
5 - .alert-message.block-message.error 5 + .alert.alert-error
6 %span= @team.errors.full_messages.first 6 %span= @team.errors.full_messages.first
7 .clearfix 7 .clearfix
8 = f.label :name do 8 = f.label :name do
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 .input 10 .input
11 = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left" 11 = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
12 &nbsp; 12 &nbsp;
13 - = f.submit 'Create team', class: "btn primary" 13 + = f.submit 'Create team', class: "btn btn-primary"
14 %hr 14 %hr
15 .padded 15 .padded
16 %ul 16 %ul
app/views/admin/teams/projects/_form.html.haml
1 = form_tag admin_team_project_path(@team, @project), method: :put do 1 = form_tag admin_team_project_path(@team, @project), method: :put do
2 -if @project.errors.any? 2 -if @project.errors.any?
3 - .alert-message.block-message.error 3 + .alert.alert-error
4 %ul 4 %ul
5 - @project.errors.full_messages.each do |msg| 5 - @project.errors.full_messages.each do |msg|
6 %li= msg 6 %li= msg
@@ -12,5 +12,5 @@ @@ -12,5 +12,5 @@
12 12
13 %br 13 %br
14 .actions 14 .actions
15 - = submit_tag 'Save', class: "btn primary" 15 + = submit_tag 'Save', class: "btn btn-primary"
16 = link_to 'Cancel', :back, class: "btn" 16 = link_to 'Cancel', :back, class: "btn"
app/views/admin/teams/projects/new.html.haml
@@ -20,4 +20,4 @@ @@ -20,4 +20,4 @@
20 %tr 20 %tr
21 %td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5' 21 %td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
22 %td= select_tag :greatest_project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3" } 22 %td= select_tag :greatest_project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3" }
23 - %td= submit_tag 'Add', class: "btn primary", id: :assign_projects_to_team 23 + %td= submit_tag 'Add', class: "btn btn-primary", id: :assign_projects_to_team
app/views/admin/teams/show.html.haml
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 %td 14 %td
15 = @team.name 15 = @team.name
16 &nbsp; 16 &nbsp;
17 - = link_to edit_admin_team_path(@team), class: "btn btn-small right" do 17 + = link_to edit_admin_team_path(@team), class: "btn btn-small pull-right" do
18 %i.icon-edit 18 %i.icon-edit
19 Rename 19 Rename
20 %tr 20 %tr
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 Owner: 23 Owner:
24 %td 24 %td
25 = @team.owner.name 25 = @team.owner.name
26 - .right 26 + .pull-right
27 = link_to "#", class: "btn btn-small change-owner-link" do 27 = link_to "#", class: "btn btn-small change-owner-link" do
28 %i.icon-edit 28 %i.icon-edit
29 Change owner 29 Change owner
@@ -36,13 +36,13 @@ @@ -36,13 +36,13 @@
36 = form_for @team, url: admin_team_path(@team) do |f| 36 = form_for @team, url: admin_team_path(@team) do |f|
37 = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'} 37 = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
38 %div 38 %div
39 - = f.submit 'Change Owner', class: "btn danger" 39 + = f.submit 'Change Owner', class: "btn btn-remove"
40 = link_to "Cancel", "#", class: "btn change-owner-cancel-link" 40 = link_to "Cancel", "#", class: "btn change-owner-cancel-link"
41 41
42 %fieldset 42 %fieldset
43 %legend 43 %legend
44 Members (#{@team.members.count}) 44 Members (#{@team.members.count})
45 - %span= link_to 'Add members', new_admin_team_member_path(@team), class: "btn success small right", id: :add_members_to_team 45 + %span= link_to 'Add members', new_admin_team_member_path(@team), class: "btn btn-primary btn-small pull-right", id: :add_members_to_team
46 - if @team.members.any? 46 - if @team.members.any?
47 %table#members_list 47 %table#members_list
48 %thead 48 %thead
@@ -60,14 +60,14 @@ @@ -60,14 +60,14 @@
60 %td= @team.human_default_projects_access(member) 60 %td= @team.human_default_projects_access(member)
61 %td= @team.admin?(member) ? "Admin" : "Member" 61 %td= @team.admin?(member) ? "Admin" : "Member"
62 %td.bgred 62 %td.bgred
63 - = link_to 'Edit', edit_admin_team_member_path(@team, member), class: "btn small" 63 + = link_to 'Edit', edit_admin_team_member_path(@team, member), class: "btn btn-small"
64 &nbsp; 64 &nbsp;
65 - = link_to 'Remove', admin_team_member_path(@team, member), confirm: 'Remove member from team. Are you sure?', method: :delete, class: "btn danger small", id: "remove_member_#{member.id}" 65 + = link_to 'Remove', admin_team_member_path(@team, member), confirm: 'Remove member from team. Are you sure?', method: :delete, class: "btn btn-remove btn-small", id: "remove_member_#{member.id}"
66 66
67 %fieldset 67 %fieldset
68 %legend 68 %legend
69 Projects (#{@team.projects.count}) 69 Projects (#{@team.projects.count})
70 - %span= link_to 'Add projects', new_admin_team_project_path(@team), class: "btn success small right", id: :assign_projects_to_team 70 + %span= link_to 'Add projects', new_admin_team_project_path(@team), class: "btn btn-primary btn-small pull-right", id: :assign_projects_to_team
71 - if @team.projects.any? 71 - if @team.projects.any?
72 %table#projects_list 72 %table#projects_list
73 %thead 73 %thead
@@ -82,9 +82,9 @@ @@ -82,9 +82,9 @@
82 %td 82 %td
83 %span= @team.human_max_project_access(project) 83 %span= @team.human_max_project_access(project)
84 %td.bgred 84 %td.bgred
85 - = link_to 'Edit', edit_admin_team_project_path(@team, project), class: "btn small" 85 + = link_to 'Edit', edit_admin_team_project_path(@team, project), class: "btn btn-small"
86 &nbsp; 86 &nbsp;
87 - = link_to 'Relegate', admin_team_project_path(@team, project), confirm: 'Remove project from team. Are you sure?', method: :delete, class: "btn danger small", id: "relegate_project_#{project.id}" 87 + = link_to 'Relegate', admin_team_project_path(@team, project), confirm: 'Remove project from team. Are you sure?', method: :delete, class: "btn btn-remove small", id: "relegate_project_#{project.id}"
88 88
89 :javascript 89 :javascript
90 $(function(){ 90 $(function(){
app/views/admin/users/_form.html.haml
@@ -63,10 +63,10 @@ @@ -63,10 +63,10 @@
63 .alert.alert-error 63 .alert.alert-error
64 - if @admin_user.blocked 64 - if @admin_user.blocked
65 %p This user is blocked and is not able to login to GitLab 65 %p This user is blocked and is not able to login to GitLab
66 - = link_to 'Unblock User', unblock_admin_user_path(@admin_user), method: :put, class: "btn small" 66 + = link_to 'Unblock User', unblock_admin_user_path(@admin_user), method: :put, class: "btn btn-small"
67 - else 67 - else
68 %p Blocked users will be removed from all projects &amp; will not be able to login to GitLab. 68 %p Blocked users will be removed from all projects &amp; will not be able to login to GitLab.
69 - = link_to 'Block User', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger" 69 + = link_to 'Block User', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn btn-small btn-remove"
70 %fieldset 70 %fieldset
71 %legend Profile 71 %legend Profile
72 .clearfix 72 .clearfix
@@ -80,8 +80,8 @@ @@ -80,8 +80,8 @@
80 .input= f.text_field :twitter 80 .input= f.text_field :twitter
81 81
82 .actions 82 .actions
83 - = f.submit 'Save', class: "btn save-btn" 83 + = f.submit 'Save', class: "btn btn-save"
84 - if @admin_user.new_record? 84 - if @admin_user.new_record?
85 - = link_to 'Cancel', admin_users_path, class: "btn cancel-btn" 85 + = link_to 'Cancel', admin_users_path, class: "btn btn-cancel"
86 - else 86 - else
87 - = link_to 'Cancel', admin_user_path(@admin_user), class: "btn cancel-btn" 87 + = link_to 'Cancel', admin_user_path(@admin_user), class: "btn btn-cancel"
app/views/admin/users/index.html.haml
1 %h3.page_title 1 %h3.page_title
2 Users 2 Users
3 - = link_to 'New User', new_admin_user_path, class: "btn small right" 3 + = link_to 'New User', new_admin_user_path, class: "btn btn-small pull-right"
4 %br 4 %br
5 5
6 = form_tag admin_users_path, method: :get, class: 'form-inline' do 6 = form_tag admin_users_path, method: :get, class: 'form-inline' do
7 = text_field_tag :name, params[:name], class: "xlarge" 7 = text_field_tag :name, params[:name], class: "xlarge"
8 - = submit_tag "Search", class: "btn submit primary" 8 + = submit_tag "Search", class: "btn submit btn-primary"
9 %ul.nav.nav-tabs 9 %ul.nav.nav-tabs
10 %li{class: "#{'active' unless params[:filter]}"} 10 %li{class: "#{'active' unless params[:filter]}"}
11 = link_to admin_users_path do 11 = link_to admin_users_path do
@@ -44,15 +44,15 @@ @@ -44,15 +44,15 @@
44 %td= user.username 44 %td= user.username
45 %td= user.email 45 %td= user.email
46 %td= user.users_projects.count 46 %td= user.users_projects.count
47 - %td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn small" 47 + %td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn btn-small"
48 %td.bgred 48 %td.bgred
49 - if user == current_user 49 - if user == current_user
50 %span.cred It's you! 50 %span.cred It's you!
51 - else 51 - else
52 - if user.blocked 52 - if user.blocked
53 - = link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success" 53 + = link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn btn-small success"
54 - else 54 - else
55 - = link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"  
56 - = link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn small danger" 55 + = link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn btn-small btn-remove"
  56 + = link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn btn-small btn-remove"
57 57
58 = paginate @admin_users, theme: "admin" 58 = paginate @admin_users, theme: "admin"
app/views/admin/users/show.html.haml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 %small Blocked 4 %small Blocked
5 - if @admin_user.admin 5 - if @admin_user.admin
6 %small Administrator 6 %small Administrator
7 - = link_to edit_admin_user_path(@admin_user), class: "btn right" do 7 + = link_to edit_admin_user_path(@admin_user), class: "btn pull-right" do
8 %i.icon-edit 8 %i.icon-edit
9 Edit 9 Edit
10 10
@@ -86,7 +86,7 @@ @@ -86,7 +86,7 @@
86 %td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3" 86 %td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3"
87 87
88 %tr 88 %tr
89 - %td= submit_tag 'Add', class: "btn primary" 89 + %td= submit_tag 'Add', class: "btn btn-primary"
90 %td 90 %td
91 Read more about project permissions 91 Read more about project permissions
92 %strong= link_to "here", help_permissions_path, class: "vlink" 92 %strong= link_to "here", help_permissions_path, class: "vlink"
@@ -123,5 +123,5 @@ @@ -123,5 +123,5 @@
123 %tr 123 %tr
124 %td= link_to project.name_with_namespace, admin_project_path(project) 124 %td= link_to project.name_with_namespace, admin_project_path(project)
125 %td= tm.project_access_human 125 %td= tm.project_access_human
126 - %td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn small"  
127 - %td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn small danger" 126 + %td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn btn-small"
  127 + %td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn btn-small btn-remove"
app/views/blame/_head.html.haml
@@ -3,5 +3,5 @@ @@ -3,5 +3,5 @@
3 = render partial: 'shared/ref_switcher', locals: {destination: 'tree', path: params[:path]} 3 = render partial: 'shared/ref_switcher', locals: {destination: 'tree', path: params[:path]}
4 = nav_link(controller: :refs) do 4 = nav_link(controller: :refs) do
5 = link_to 'Source', project_tree_path(@project, @ref) 5 = link_to 'Source', project_tree_path(@project, @ref)
6 - %li.right 6 + %li.pull-right
7 = render "shared/clone_panel" 7 = render "shared/clone_panel"
app/views/commit/huge_commit.html.haml
1 = render "commits/commit_box" 1 = render "commits/commit_box"
2 -.alert-message.block-message.error 2 +.alert.alert-error
3 %h4 Commit diffs are too big to be displayed 3 %h4 Commit diffs are too big to be displayed
app/views/commit/show.html.haml
1 = render "commits/commit_box" 1 = render "commits/commit_box"
2 2
3 -%p.right.cgray 3 +%p.pull-right.cgray
4 This commit has 4 This commit has
5 %span.cgreen #{@commit.stats.additions} additions 5 %span.cgreen #{@commit.stats.additions} additions
6 and 6 and
app/views/commits/_commit_box.html.haml
1 .ui-box.ui-box-show 1 .ui-box.ui-box-show
2 .ui-box-head 2 .ui-box-head
3 - .right 3 + .pull-right
4 - if @notes_count > 0 4 - if @notes_count > 0
5 %span.btn.disabled.grouped 5 %span.btn.disabled.grouped
6 %i.icon-comment 6 %i.icon-comment
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 %ul.dropdown-menu 13 %ul.dropdown-menu
14 %li= link_to "Email Patches", project_commit_path(@project, @commit, format: :patch) 14 %li= link_to "Email Patches", project_commit_path(@project, @commit, format: :patch)
15 %li= link_to "Plain Diff", project_commit_path(@project, @commit, format: :diff) 15 %li= link_to "Plain Diff", project_commit_path(@project, @commit, format: :diff)
16 - = link_to project_tree_path(@project, @commit), class: "btn primary grouped" do 16 + = link_to project_tree_path(@project, @commit), class: "btn btn-primary grouped" do
17 %span Browse Code » 17 %span Browse Code »
18 %h3.commit-title.page_title 18 %h3.commit-title.page_title
19 = gfm escape_once(@commit.title) 19 = gfm escape_once(@commit.title)
app/views/commits/_diffs.html.haml
1 - if @suppress_diff 1 - if @suppress_diff
2 - .alert-message.block-message 2 + .alert.alert-block
3 %p 3 %p
4 - %strong Warning! Large commit with more then #{Commit::DIFF_SAFE_SIZE} files changed. 4 + %strong Warning! Large commit with more than #{Commit::DIFF_SAFE_SIZE} files changed.
5 %p To prevent performance issue we rejected diff information. 5 %p To prevent performance issue we rejected diff information.
6 %p 6 %p
7 But if you still want to see diff 7 But if you still want to see diff
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 %span= diff.old_path 25 %span= diff.old_path
26 26
27 - if @commit.prev_commit 27 - if @commit.prev_commit
28 - = link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn right view-file'} do 28 + = link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn pull-right view-file'} do
29 View file @ 29 View file @
30 %span.commit-short-id= @commit.short_id(6) 30 %span.commit-short-id= @commit.short_id(6)
31 - else 31 - else
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode 33 - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
34 %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}" 34 %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}"
35 35
36 - = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn very_small right view-file'} do 36 + = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn btn-tiny pull-right view-file'} do
37 View file @ 37 View file @
38 %span.commit-short-id= @commit.short_id(6) 38 %span.commit-short-id= @commit.short_id(6)
39 39
app/views/commits/_head.html.haml
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 22
23 23
24 - if current_controller?(:commits) && current_user.private_token 24 - if current_controller?(:commits) && current_user.private_token
25 - %li.right 25 + %li.pull-right
26 %span.rss-icon 26 %span.rss-icon
27 = link_to project_commits_path(@project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Feed" do 27 = link_to project_commits_path(@project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Feed" do
28 = image_tag "rss_ui.png", title: "feed" 28 = image_tag "rss_ui.png", title: "feed"
app/views/compare/_form.html.haml
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 = text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge" 19 = text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
20 .pull-left 20 .pull-left
21 &nbsp; 21 &nbsp;
22 - = submit_tag "Compare", class: "btn primary wide commits-compare-btn" 22 + = submit_tag "Compare", class: "btn btn-primary wide commits-compare-btn"
23 - if @refs_are_same 23 - if @refs_are_same
24 .alert 24 .alert
25 %span Refs are the same 25 %span Refs are the same
app/views/dashboard/_filter.html.haml
@@ -25,9 +25,9 @@ @@ -25,9 +25,9 @@
25 %li{class: ("active" if params[:project_id] == project.id.to_s)} 25 %li{class: ("active" if params[:project_id] == project.id.to_s)}
26 = link_to dashboard_filter_path(entity, project_id: project.id) do 26 = link_to dashboard_filter_path(entity, project_id: project.id) do
27 = project.name_with_namespace 27 = project.name_with_namespace
28 - %small.right= entities_per_project(project, entity) 28 + %small.pull-right= entities_per_project(project, entity)
29 29
30 %fieldset 30 %fieldset
31 %hr 31 %hr
32 - = link_to "Reset", dashboard_filter_path(entity), class: 'btn right' 32 + = link_to "Reset", dashboard_filter_path(entity), class: 'btn pull-right'
33 33
app/views/dashboard/_groups.html.haml
@@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
4 %small 4 %small
5 (#{groups.count}) 5 (#{groups.count})
6 - if current_user.can_create_group? 6 - if current_user.can_create_group?
7 - %span.right  
8 - = link_to new_group_path, class: "btn very_small info" do 7 + %span.pull-right
  8 + = link_to new_group_path, class: "btn btn-tiny info" do
9 %i.icon-plus 9 %i.icon-plus
10 New Group 10 New Group
11 %ul.well-list 11 %ul.well-list
@@ -13,6 +13,6 @@ @@ -13,6 +13,6 @@
13 %li 13 %li
14 = link_to group_path(id: group.path), class: dom_class(group) do 14 = link_to group_path(id: group.path), class: dom_class(group) do
15 %strong.well-title= truncate(group.name, length: 35) 15 %strong.well-title= truncate(group.name, length: 35)
16 - %span.right.light 16 + %span.pull-right.light
17 - if group.owner == current_user 17 - if group.owner == current_user
18 %i.icon-wrench 18 %i.icon-wrench
app/views/dashboard/_projects.html.haml
@@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
4 %small 4 %small
5 (#{@projects_count}) 5 (#{@projects_count})
6 - if current_user.can_create_project? 6 - if current_user.can_create_project?
7 - %span.right  
8 - = link_to new_project_path, class: "btn very_small info" do 7 + %span.pull-right
  8 + = link_to new_project_path, class: "btn btn-tiny info" do
9 %i.icon-plus 9 %i.icon-plus
10 New Project 10 New Project
11 11
app/views/dashboard/_teams.html.haml
@@ -3,8 +3,8 @@ @@ -3,8 +3,8 @@
3 Teams 3 Teams
4 %small 4 %small
5 (#{@teams.count}) 5 (#{@teams.count})
6 - %span.right  
7 - = link_to new_team_path, class: "btn very_small info" do 6 + %span.pull-right
  7 + = link_to new_team_path, class: "btn btn-tiny info" do
8 %i.icon-plus 8 %i.icon-plus
9 New Team 9 New Team
10 %ul.well-list 10 %ul.well-list
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 %li 12 %li
13 = link_to team_path(id: team.path), class: dom_class(team) do 13 = link_to team_path(id: team.path), class: dom_class(team) do
14 %strong.well-title= truncate(team.name, length: 35) 14 %strong.well-title= truncate(team.name, length: 35)
15 - %span.right.light 15 + %span.pull-right.light
16 - if team.owner == current_user 16 - if team.owner == current_user
17 %i.icon-wrench 17 %i.icon-wrench
18 - tm = current_user.user_team_user_relationships.find_by_user_team_id(team.id) 18 - tm = current_user.user_team_user_relationships.find_by_user_team_id(team.id)
app/views/dashboard/_zero_authorized_projects.html.haml
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 = current_user.projects_limit 6 = current_user.projects_limit
7 projects. Click on button below to add a new one 7 projects. Click on button below to add a new one
8 .link_holder 8 .link_holder
9 - = link_to new_project_path, class: "btn primary" do 9 + = link_to new_project_path, class: "btn btn-primary" do
10 New Project » 10 New Project »
11 - else 11 - else
12 If you will be added to project - it will be displayed here 12 If you will be added to project - it will be displayed here
app/views/dashboard/issues.html.haml
1 %h3.page_title 1 %h3.page_title
2 Issues 2 Issues
3 %small (assigned to you) 3 %small (assigned to you)
4 - %small.right #{@issues.total_count} issues 4 + %small.pull-right #{@issues.total_count} issues
5 5
6 %hr 6 %hr
7 7
app/views/dashboard/merge_requests.html.haml
1 %h3.page_title 1 %h3.page_title
2 Merge Requests 2 Merge Requests
3 %small (authored by or assigned to you) 3 %small (authored by or assigned to you)
4 - %small.right #{@merge_requests.total_count} merge requests 4 + %small.pull-right #{@merge_requests.total_count} merge requests
5 5
6 %hr 6 %hr
7 .row 7 .row
app/views/dashboard/projects.html.haml
@@ -3,8 +3,8 @@ @@ -3,8 +3,8 @@
3 %span 3 %span
4 (#{@projects.total_count}) 4 (#{@projects.total_count})
5 - if current_user.can_create_project? 5 - if current_user.can_create_project?
6 - %span.right  
7 - = link_to new_project_path, class: "btn very_small info" do 6 + %span.pull-right
  7 + = link_to new_project_path, class: "btn btn-tiny info" do
8 %i.icon-plus 8 %i.icon-plus
9 New Project 9 New Project
10 10
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 %small.light 42 %small.light
43 %strong Last activity: 43 %strong Last activity:
44 %span= project_last_activity(project) 44 %span= project_last_activity(project)
45 - .right.light 45 + .pull-right.light
46 - if project.owner == current_user 46 - if project.owner == current_user
47 %i.icon-wrench 47 %i.icon-wrench
48 - tm = project.team.get_tm(current_user.id) 48 - tm = project.team.get_tm(current_user.id)
app/views/deploy_keys/_form.html.haml
1 %div 1 %div
2 = form_for [@project, @key], url: project_deploy_keys_path do |f| 2 = form_for [@project, @key], url: project_deploy_keys_path do |f|
3 -if @key.errors.any? 3 -if @key.errors.any?
4 - .alert-message.block-message.error 4 + .alert.alert-error
5 %ul 5 %ul
6 - @key.errors.full_messages.each do |msg| 6 - @key.errors.full_messages.each do |msg|
7 %li= msg 7 %li= msg
@@ -18,6 +18,6 @@ @@ -18,6 +18,6 @@
18 = link_to "here", help_ssh_path 18 = link_to "here", help_ssh_path
19 19
20 .actions 20 .actions
21 - = f.submit 'Save', class: "save-btn btn"  
22 - = link_to "Cancel", project_deploy_keys_path(@project), class: "btn cancel-btn" 21 + = f.submit 'Save', class: "btn-save btn"
  22 + = link_to "Cancel", project_deploy_keys_path(@project), class: "btn btn-cancel"
23 23
app/views/deploy_keys/_show.html.haml
@@ -8,5 +8,5 @@ @@ -8,5 +8,5 @@
8 = time_ago_in_words(key.created_at) 8 = time_ago_in_words(key.created_at)
9 ago 9 ago
10 %td 10 %td
11 - = link_to 'Remove', project_deploy_key_path(key.project, key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key small right" 11 + = link_to 'Remove', project_deploy_key_path(key.project, key), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove delete-key btn-small pull-right"
12 12
app/views/deploy_keys/index.html.haml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers. 4 Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers.
5 5
6 - if can? current_user, :admin_project, @project 6 - if can? current_user, :admin_project, @project
7 - = link_to new_project_deploy_key_path(@project), class: "btn small", title: "New Deploy Key" do 7 + = link_to new_project_deploy_key_path(@project), class: "btn btn-small", title: "New Deploy Key" do
8 Add Deploy Key 8 Add Deploy Key
9 - if @keys.any? 9 - if @keys.any?
10 %table 10 %table
app/views/deploy_keys/show.html.haml
@@ -10,5 +10,5 @@ @@ -10,5 +10,5 @@
10 &larr; To keys list 10 &larr; To keys list
11 %hr 11 %hr
12 %pre= @key.key 12 %pre= @key.key
13 -.right  
14 - = link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key" 13 +.pull-right
  14 + = link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "btn-remove btn delete-key"
app/views/devise/passwords/edit.html.haml
@@ -8,5 +8,5 @@ @@ -8,5 +8,5 @@
8 %div 8 %div
9 = f.password_field :password_confirmation, class: "text bottom", placeholder: "Confirm new password" 9 = f.password_field :password_confirmation, class: "text bottom", placeholder: "Confirm new password"
10 %div 10 %div
11 - = f.submit "Change my password", class: "btn primary"  
12 - .right= render partial: "devise/shared/links" 11 + = f.submit "Change my password", class: "btn btn-primary"
  12 + .pull-right= render partial: "devise/shared/links"
app/views/devise/passwords/new.html.erb
1 -<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :class => "login-box", :method => :post }) do |f| %>  
2 - <%= image_tag "login-logo.png", :width => "304", :height => "66", :class => "login-logo", :alt => "Login Logo" %> 1 +<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { class: "login-box", method: :post }) do |f| %>
  2 + <%= image_tag "login-logo.png", width: "304", height: "66", class: "login-logo", alt: "Login Logo" %>
3 <%= devise_error_messages! %> 3 <%= devise_error_messages! %>
4 - <%= f.email_field :email, :placeholder => "Email", :class => "text" %> 4 + <%= f.email_field :email, placeholder: "Email", class: "text" %>
5 <br/> 5 <br/>
6 <br/> 6 <br/>
7 - <%= f.submit "Reset password", :class => "primary btn" %>  
8 - <div class="right"> <%= link_to "Sign in", new_session_path(resource_name), :class => "btn" %><br /></div> 7 + <%= f.submit "Reset password", class: "btn-primary btn" %>
  8 + <div class="pull-right"> <%= link_to "Sign in", new_session_path(resource_name), class: "btn" %><br /></div>
9 <% end %> 9 <% end %>
app/views/devise/registrations/new.html.haml
1 -= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "login-box" }) do |f|  
2 - = image_tag "login-logo.png", :width => "304", :height => "66", :class => "login-logo", :alt => "Login Logo" 1 += form_for(resource, as: resource_name, url: registration_path(resource_name), html: { class: "login-box" }) do |f|
  2 + = image_tag "login-logo.png", width: "304", height: "66", class: "login-logo", alt: "Login Logo"
3 = devise_error_messages! 3 = devise_error_messages!
4 %div 4 %div
5 - = f.text_field :name, :class => "text top", :placeholder => "Name", :required => true 5 + = f.text_field :name, class: "text top", placeholder: "Name", required: true
6 %div 6 %div
7 - = f.text_field :username, :class => "text middle", :placeholder => "Username", :required => true 7 + = f.text_field :username, class: "text middle", placeholder: "Username", required: true
8 %div 8 %div
9 - = f.email_field :email, :class => "text middle", :placeholder => "Email", :required => true 9 + = f.email_field :email, class: "text middle", placeholder: "Email", required: true
10 %div 10 %div
11 - = f.password_field :password, :class => "text middle", :placeholder => "Password", :required => true 11 + = f.password_field :password, class: "text middle", placeholder: "Password", required: true
12 %div 12 %div
13 - = f.password_field :password_confirmation, :class => "text bottom", :placeholder => "Confirm password", :required => true 13 + = f.password_field :password_confirmation, class: "text bottom", placeholder: "Confirm password", required: true
14 %div 14 %div
15 - = f.submit "Sign up", :class => "primary btn wide"  
16 - %br 15 + = f.submit "Sign up", class: "btn-create btn"
17 %hr 16 %hr
18 = link_to "Sign in", new_session_path(resource_name) 17 = link_to "Sign in", new_session_path(resource_name)
19 - = link_to "Forgot your password?", new_password_path(resource_name), :class => "right" 18 + = link_to "Forgot your password?", new_password_path(resource_name), class: "pull-right"
app/views/devise/sessions/_new_ldap.html.haml
@@ -3,11 +3,11 @@ @@ -3,11 +3,11 @@
3 = text_field_tag :username, nil, {:class => "text top", :placeholder => "LDAP Login"} 3 = text_field_tag :username, nil, {:class => "text top", :placeholder => "LDAP Login"}
4 = password_field_tag :password, nil, {:class => "text bottom", :placeholder => "Password"} 4 = password_field_tag :password, nil, {:class => "text bottom", :placeholder => "Password"}
5 %br/ 5 %br/
6 - = submit_tag "LDAP Sign in", :class => "primary btn" 6 + = submit_tag "LDAP Sign in", :class => "btn-primary btn"
7 - if devise_mapping.omniauthable? 7 - if devise_mapping.omniauthable?
8 - (resource_class.omniauth_providers - [:ldap]).each do |provider| 8 - (resource_class.omniauth_providers - [:ldap]).each do |provider|
9 %hr/ 9 %hr/
10 - = link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider), :class => "btn primary" 10 + = link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider), :class => "btn btn-primary"
11 %br/ 11 %br/
12 %hr/ 12 %hr/
13 %a#other_form_toggle{:href => "#", :onclick => "javascript:$('#new_user').toggle();"} Other Sign in 13 %a#other_form_toggle{:href => "#", :onclick => "javascript:$('#new_user').toggle();"} Other Sign in
@@ -24,6 +24,6 @@ @@ -24,6 +24,6 @@
24 = f.check_box :remember_me 24 = f.check_box :remember_me
25 %span Remember me 25 %span Remember me
26 %br/ 26 %br/
27 - = f.submit "Sign in", :class => "primary btn"  
28 - .right 27 + = f.submit "Sign in", :class => "btn-primary btn"
  28 + .pull-right
29 = render :partial => "devise/shared/links" 29 = render :partial => "devise/shared/links"
app/views/devise/sessions/new.html.haml
@@ -11,18 +11,18 @@ @@ -11,18 +11,18 @@
11 = f.check_box :remember_me 11 = f.check_box :remember_me
12 %span Remember me 12 %span Remember me
13 %br/ 13 %br/
14 - = f.submit "Sign in", :class => "primary btn wide"  
15 - .right 14 + = f.submit "Sign in", :class => "btn-create btn"
  15 + .pull-right
16 = link_to "Forgot your password?", new_password_path(resource_name), :class => "btn" 16 = link_to "Forgot your password?", new_password_path(resource_name), :class => "btn"
17 %br/ 17 %br/
18 - %br/  
19 - if Gitlab.config.gitlab.signup_enabled 18 - if Gitlab.config.gitlab.signup_enabled
20 %hr/ 19 %hr/
21 Don't have an account? 20 Don't have an account?
22 = link_to "Sign up", new_registration_path(resource_name) 21 = link_to "Sign up", new_registration_path(resource_name)
23 - .clearfix  
24 - if devise_mapping.omniauthable? && resource_class.omniauth_providers.present? 22 - if devise_mapping.omniauthable? && resource_class.omniauth_providers.present?
  23 + %hr
25 %div 24 %div
  25 + %span Sign in with: &nbsp;
26 - resource_class.omniauth_providers.each do |provider| 26 - resource_class.omniauth_providers.each do |provider|
27 %span 27 %span
28 = link_to authbutton(provider, 32), omniauth_authorize_path(resource_name, provider) 28 = link_to authbutton(provider, 32), omniauth_authorize_path(resource_name, provider)
app/views/events/_event.html.haml
1 - if event.proper? 1 - if event.proper?
2 %div.event-item 2 %div.event-item
3 - %span.cgray.right 3 + %span.cgray.pull-right
4 #{time_ago_in_words(event.created_at)} ago. 4 #{time_ago_in_words(event.created_at)} ago.
5 5
6 = image_tag gravatar_icon(event.author_email), class: "avatar s24" 6 = image_tag gravatar_icon(event.author_email), class: "avatar s24"
app/views/graph/show.html.haml 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +%h3.page_title Project Network Graph
  2 +%br
  3 += render partial: 'shared/ref_switcher', locals: {destination: 'graph', path: @path}
  4 +%br
  5 +.graph_holder
  6 + %h4
  7 + %small You can move around the graph by using the arrow keys.
  8 + #holder.graph
  9 + .loading.loading-gray
  10 +
  11 +:javascript
  12 + var branch_graph;
  13 + $(function(){
  14 + branch_graph = new BranchGraph($("#holder"), {
  15 + url: '#{project_graph_path(@project, @ref, format: :json)}',
  16 + commit_url: '#{project_commit_path(@project, 'ae45ca32').gsub("ae45ca32", "%s")}',
  17 + ref: '#{@ref}'
  18 + });
  19 + });
app/views/groups/_filter.html.haml
@@ -25,9 +25,9 @@ @@ -25,9 +25,9 @@
25 %li{class: ("active" if params[:project_id] == project.id.to_s)} 25 %li{class: ("active" if params[:project_id] == project.id.to_s)}
26 = link_to group_filter_path(entity, project_id: project.id) do 26 = link_to group_filter_path(entity, project_id: project.id) do
27 = project.name_with_namespace 27 = project.name_with_namespace
28 - %small.right= entities_per_project(project, entity) 28 + %small.pull-right= entities_per_project(project, entity)
29 29
30 %fieldset 30 %fieldset
31 %hr 31 %hr
32 - = link_to "Reset", group_filter_path(entity), class: 'btn right' 32 + = link_to "Reset", group_filter_path(entity), class: 'btn pull-right'
33 33
app/views/groups/_new_group_member.html.haml
@@ -14,5 +14,5 @@ @@ -14,5 +14,5 @@
14 14
15 .form-actions 15 .form-actions
16 = hidden_field_tag :redirect_to, people_group_path(@group) 16 = hidden_field_tag :redirect_to, people_group_path(@group)
17 - = f.submit 'Add', class: "btn save-btn" 17 + = f.submit 'Add', class: "btn btn-save"
18 18
app/views/groups/_new_member.html.haml
@@ -14,5 +14,5 @@ @@ -14,5 +14,5 @@
14 14
15 .form-actions 15 .form-actions
16 = hidden_field_tag :redirect_to, people_group_path(@group, project_id: @project.id) 16 = hidden_field_tag :redirect_to, people_group_path(@group, project_id: @project.id)
17 - = f.submit 'Add', class: "btn save-btn" 17 + = f.submit 'Add', class: "btn btn-save"
18 18
app/views/groups/_people_filter.html.haml
@@ -6,9 +6,9 @@ @@ -6,9 +6,9 @@
6 %li{class: ("active" if params[:project_id] == project.id.to_s)} 6 %li{class: ("active" if params[:project_id] == project.id.to_s)}
7 = link_to people_group_path(@group, project_id: project.id) do 7 = link_to people_group_path(@group, project_id: project.id) do
8 = project.name_with_namespace 8 = project.name_with_namespace
9 - %small.right= project.users.count 9 + %small.pull-right= project.users.count
10 10
11 %fieldset 11 %fieldset
12 %hr 12 %hr
13 - = link_to "Reset", people_group_path(@group), class: 'btn right' 13 + = link_to "Reset", people_group_path(@group), class: 'btn pull-right'
14 14
app/views/groups/_projects.html.haml
@@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
4 %small 4 %small
5 (#{projects.count}) 5 (#{projects.count})
6 - if can? current_user, :manage_group, @group 6 - if can? current_user, :manage_group, @group
7 - %span.right  
8 - = link_to new_project_path(namespace_id: @group.id), class: "btn very_small info" do 7 + %span.pull-right
  8 + = link_to new_project_path(namespace_id: @group.id), class: "btn btn-tiny info" do
9 %i.icon-plus 9 %i.icon-plus
10 New Project 10 New Project
11 %ul.well-list 11 %ul.well-list
app/views/groups/edit.html.haml 0 → 100644
@@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
  1 +%h3.page_title Edit Group
  2 +%hr
  3 += form_for @group do |f|
  4 + - if @group.errors.any?
  5 + .alert.alert-error
  6 + %span= @group.errors.full_messages.first
  7 + .clearfix
  8 + = f.label :name do
  9 + Group name is
  10 + .input
  11 + = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
  12 + &nbsp;
  13 + = f.submit 'Save group', class: "btn btn-save"
  14 +%hr
  15 +
  16 +
  17 +.row
  18 + .span7
  19 + .ui-box
  20 + %h5.title Projects
  21 + %ul.well-list
  22 + - @group.projects.each do |project|
  23 + %li
  24 + - if project.public
  25 + %i.icon-share
  26 + - else
  27 + %i.icon-lock.cgreen
  28 + = link_to project.name_with_namespace, project
  29 + .pull-right
  30 + = link_to 'Team', project_team_index_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
  31 + = link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
  32 + = link_to 'Remove', project, confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
  33 +
  34 + .span5
  35 + .ui-box
  36 + %h5.title Transfer group
  37 + .padded
  38 + %p
  39 + Transferring group will cause loss of admin control over group and all child projects
  40 + = form_for @group do |f|
  41 + = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
  42 + = f.submit 'Transfer group', class: "btn btn-small"
  43 + .ui-box
  44 + %h5.title Remove group
  45 + .padded.bgred
  46 + %p
  47 + Remove of group will cause removing all child projects and resources
  48 + %br
  49 + Removed group can not be restored!
  50 + = link_to 'Remove Group', @group, confirm: 'Removed group can not be restored! Are you sure?', method: :delete, class: "btn btn-remove btn-small"
app/views/groups/issues.html.haml
1 %h3.page_title 1 %h3.page_title
2 Issues 2 Issues
3 %small (assigned to you) 3 %small (assigned to you)
4 - %small.right #{@issues.total_count} issues 4 + %small.pull-right #{@issues.total_count} issues
5 5
6 %hr 6 %hr
7 .row 7 .row
app/views/groups/merge_requests.html.haml
1 %h3.page_title 1 %h3.page_title
2 Merge Requests 2 Merge Requests
3 %small (authored by or assigned to you) 3 %small (authored by or assigned to you)
4 - %small.right #{@merge_requests.total_count} merge requests 4 + %small.pull-right #{@merge_requests.total_count} merge requests
5 5
6 %hr 6 %hr
7 .row 7 .row
app/views/groups/new.html.haml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 %hr 2 %hr
3 = form_for @group do |f| 3 = form_for @group do |f|
4 - if @group.errors.any? 4 - if @group.errors.any?
5 - .alert-message.block-message.error 5 + .alert.alert-error
6 %span= @group.errors.full_messages.first 6 %span= @group.errors.full_messages.first
7 .clearfix 7 .clearfix
8 = f.label :name do 8 = f.label :name do
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 .input 10 .input
11 = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left" 11 = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
12 &nbsp; 12 &nbsp;
13 - = f.submit 'Create group', class: "btn primary" 13 + = f.submit 'Create group', class: "btn btn-create"
14 %hr 14 %hr
15 .padded 15 .padded
16 %ul 16 %ul
app/views/groups/people.html.haml
@@ -16,5 +16,5 @@ @@ -16,5 +16,5 @@
16 %strong= user.name 16 %strong= user.name
17 %span.cgray= user.email 17 %span.cgray= user.email
18 - if @group.owner == user 18 - if @group.owner == user
19 - %span.btn.btn-small.disabled.right Group Owner 19 + %span.btn.btn-small.disabled.pull-right Group Owner
20 20
app/views/groups/search.html.haml
@@ -4,6 +4,6 @@ @@ -4,6 +4,6 @@
4 %strong Looking for 4 %strong Looking for
5 .input 5 .input
6 = search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search" 6 = search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search"
7 - = submit_tag 'Search', class: "btn primary wide" 7 + = submit_tag 'Search', class: "btn btn-primary wide"
8 - if params[:search].present? 8 - if params[:search].present?
9 = render 'search/result' 9 = render 'search/result'
app/views/groups/show.html.haml
1 .projects 1 .projects
2 .activities.span8 2 .activities.span8
3 = render "events/event_last_push", event: @last_push 3 = render "events/event_last_push", event: @last_push
4 - = link_to dashboard_path, class: 'btn very_small' do 4 + = link_to dashboard_path, class: 'btn btn-tiny' do
5 &larr; To dashboard 5 &larr; To dashboard
6 &nbsp; 6 &nbsp;
7 %span.cgray You will only see events from projects in this group 7 %span.cgray You will only see events from projects in this group