Commit 8045a81bcf5822f1992442750e1484a93c368229
Exists in
master
and in
4 other branches
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.
CHANGELOG
Gemfile
... | ... | @@ -32,9 +32,6 @@ gem 'gitlab_omniauth-ldap', '1.0.2', require: "omniauth-ldap" |
32 | 32 | # Dump db to yml file. Mostly used to migrate from sqlite to mysql |
33 | 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 | 35 | # Syntax highlighter |
39 | 36 | gem "pygments.rb", git: "https://github.com/gitlabhq/pygments.rb.git", branch: "master" |
40 | 37 | |
... | ... | @@ -165,5 +162,5 @@ group :test do |
165 | 162 | end |
166 | 163 | |
167 | 164 | group :production do |
168 | - gem "gitlab_meta", '4.0' | |
165 | + gem "gitlab_meta", '5.0' | |
169 | 166 | end | ... | ... |
Gemfile.lock
... | ... | @@ -107,7 +107,6 @@ GEM |
107 | 107 | coderay (>= 1.0.0) |
108 | 108 | erubis (>= 2.7.0) |
109 | 109 | binding_of_caller (0.6.8) |
110 | - blankslate (3.1.2) | |
111 | 110 | bootstrap-sass (2.2.1.1) |
112 | 111 | sass (~> 3.2) |
113 | 112 | builder (3.0.4) |
... | ... | @@ -188,17 +187,13 @@ GEM |
188 | 187 | mime-types (~> 1.19) |
189 | 188 | pygments.rb (>= 0.2.13) |
190 | 189 | github-markup (0.7.4) |
191 | - gitlab_meta (4.0) | |
190 | + gitlab_meta (5.0) | |
192 | 191 | gitlab_omniauth-ldap (1.0.2) |
193 | 192 | net-ldap (~> 0.2.2) |
194 | 193 | omniauth (~> 1.0) |
195 | 194 | pyu-ruby-sasl (~> 0.0.3.1) |
196 | 195 | rubyntlm (~> 0.1.1) |
197 | 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 | 197 | grape (0.2.2) |
203 | 198 | activesupport |
204 | 199 | hashie (~> 1.2) |
... | ... | @@ -208,7 +203,6 @@ GEM |
208 | 203 | rack-accept |
209 | 204 | rack-mount |
210 | 205 | virtus |
211 | - gratr19 (0.4.4.1) | |
212 | 206 | growl (1.0.3) |
213 | 207 | guard (1.5.4) |
214 | 208 | listen (>= 0.4.2) |
... | ... | @@ -227,8 +221,6 @@ GEM |
227 | 221 | activesupport (>= 3.1, < 4.1) |
228 | 222 | haml (~> 3.1) |
229 | 223 | railties (>= 3.1, < 4.1) |
230 | - hashery (1.5.0) | |
231 | - blankslate | |
232 | 224 | hashie (1.2.0) |
233 | 225 | hike (1.2.1) |
234 | 226 | http_parser.rb (0.5.3) |
... | ... | @@ -494,10 +486,9 @@ DEPENDENCIES |
494 | 486 | git |
495 | 487 | github-linguist (~> 2.3.4) |
496 | 488 | github-markup (~> 0.7.4) |
497 | - gitlab_meta (= 4.0) | |
489 | + gitlab_meta (= 5.0) | |
498 | 490 | gitlab_omniauth-ldap (= 1.0.2) |
499 | 491 | gitlab_yaml_db (= 1.0.0) |
500 | - gitolite (= 1.1.0) | |
501 | 492 | grack! |
502 | 493 | grape (~> 0.2.1) |
503 | 494 | grit! | ... | ... |
ROADMAP.md
1 | 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 | 6 | * Usability improvements |
7 | 7 | * Notification improvements |
8 | 8 | |
9 | 9 | ### v4.2 February 22 |
10 | 10 | |
11 | -* Campfire integration service | |
12 | 11 | * Teams |
13 | 12 | ... | ... |
VERSION
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 | 20 | |
21 | 21 | if(NoteList.reversed) { |
22 | 22 | var form = $(".js-main-target-form"); |
23 | - form.find(".buttons, .note_options").hide(); | |
23 | + form.find(".note-form-actions").hide(); | |
24 | 24 | var textarea = form.find(".js-note-text"); |
25 | 25 | textarea.css("height", "40px"); |
26 | 26 | textarea.on("focus", function(){ |
27 | 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
app/assets/stylesheets/gitlab_bootstrap.scss
... | ... | @@ -17,6 +17,8 @@ $baseLineHeight: 18px !default; |
17 | 17 | @import "gitlab_bootstrap/variables.scss"; |
18 | 18 | @import "gitlab_bootstrap/fonts.scss"; |
19 | 19 | @import "gitlab_bootstrap/mixins.scss"; |
20 | +@import "gitlab_bootstrap/avatar.scss"; | |
21 | +@import "gitlab_bootstrap/nav.scss"; | |
20 | 22 | @import "gitlab_bootstrap/common.scss"; |
21 | 23 | @import "gitlab_bootstrap/typography.scss"; |
22 | 24 | @import "gitlab_bootstrap/buttons.scss"; | ... | ... |
... | ... | @@ -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
app/assets/stylesheets/gitlab_bootstrap/buttons.scss
1 | 1 | .btn { |
2 | - @include linear-gradient(#f7f7f7, #d5d5d5); | |
2 | + @include linear-gradient(#f1f1f1, #e1e1e1); | |
3 | + text-shadow: 0 1px 1px #FFF; | |
3 | 4 | border-color: #BBB; |
5 | + | |
4 | 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 | 10 | color: #333; |
8 | 11 | } |
9 | 12 | |
10 | - &.btn-white { | |
11 | - background: #FFF; | |
12 | - } | |
13 | - | |
14 | - &.primary { | |
13 | + &.btn-primary { | |
15 | 14 | background: #2a79A3; |
16 | 15 | @include linear-gradient(#47A7b7, #2585b5); |
17 | 16 | border-color: #2A79A3; |
... | ... | @@ -58,21 +57,18 @@ |
58 | 57 | } |
59 | 58 | } |
60 | 59 | |
61 | - &.save-btn { | |
60 | + &.btn-create { | |
62 | 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 | 72 | @extend .btn-danger; |
77 | 73 | border-color: #BD362F; |
78 | 74 | |
... | ... | @@ -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 | 90 | &.small { |
... | ... | @@ -95,7 +96,7 @@ |
95 | 96 | background-color: #ccc; |
96 | 97 | } |
97 | 98 | |
98 | - &.very_small { | |
99 | + &.btn-tiny { | |
99 | 100 | font-size: 11px; |
100 | 101 | padding: 2px 6px; |
101 | 102 | line-height: 16px; | ... | ... |
app/assets/stylesheets/gitlab_bootstrap/common.scss
... | ... | @@ -9,7 +9,6 @@ |
9 | 9 | |
10 | 10 | /** COMMON CLASSES **/ |
11 | 11 | .left { float:left } |
12 | -.right { float:right!important } | |
13 | 12 | .append-bottom-10 { margin-bottom:10px } |
14 | 13 | .append-bottom-20 { margin-bottom:20px } |
15 | 14 | .prepend-top-10 { margin-top:10px } |
... | ... | @@ -22,82 +21,13 @@ |
22 | 21 | .light { color: #888 } |
23 | 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 | 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 | 32 | /** HELPERS **/ |
103 | 33 | .nothing_here_message { | ... | ... |
... | ... | @@ -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
app/assets/stylesheets/sections/login.scss
app/assets/stylesheets/sections/nav.scss
... | ... | @@ -6,8 +6,7 @@ ul.main_menu { |
6 | 6 | margin: auto; |
7 | 7 | margin: 30px 0; |
8 | 8 | margin-top: 10px; |
9 | - border-bottom: 1px solid #DDD; | |
10 | - height: 37px; | |
9 | + height: 38px; | |
11 | 10 | position: relative; |
12 | 11 | overflow: hidden; |
13 | 12 | .count { |
... | ... | @@ -33,6 +32,7 @@ ul.main_menu { |
33 | 32 | margin: 0; |
34 | 33 | display: table-cell; |
35 | 34 | width: 1%; |
35 | + border-bottom: 2px solid #EEE; | |
36 | 36 | &.active { |
37 | 37 | border-bottom: 2px solid #474D57; |
38 | 38 | a { |
... | ... | @@ -42,10 +42,8 @@ ul.main_menu { |
42 | 42 | |
43 | 43 | &.home { |
44 | 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 | 47 | position: relative; |
50 | 48 | top: 4px; |
51 | 49 | } |
... | ... | @@ -56,7 +54,7 @@ ul.main_menu { |
56 | 54 | display: block; |
57 | 55 | text-align: center; |
58 | 56 | font-weight: normal; |
59 | - height: 35px; | |
57 | + height: 36px; | |
60 | 58 | line-height: 36px; |
61 | 59 | color: #777; |
62 | 60 | text-shadow: 0 1px 1px white; | ... | ... |
app/assets/stylesheets/sections/notes.scss
... | ... | @@ -81,14 +81,6 @@ ul.notes { |
81 | 81 | .attachment { |
82 | 82 | font-size: 14px; |
83 | 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 | 85 | .note-body { |
94 | 86 | margin-left: 45px; |
... | ... | @@ -214,9 +206,11 @@ ul.notes { |
214 | 206 | * Note Form |
215 | 207 | */ |
216 | 208 | |
217 | -.comment-btn, | |
209 | +.comment-btn { | |
210 | + @extend .btn-create; | |
211 | +} | |
218 | 212 | .reply-btn { |
219 | - @extend .save-btn; | |
213 | + @extend .btn-primary; | |
220 | 214 | } |
221 | 215 | .file .content tr.line_holder:hover > td { background: $hover !important; } |
222 | 216 | .file .content tr.line_holder:hover > td .line_note_link { |
... | ... | @@ -227,11 +221,6 @@ ul.notes { |
227 | 221 | .discussion { |
228 | 222 | .new_note { |
229 | 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 | 226 | .new_note { |
... | ... | @@ -244,37 +233,6 @@ ul.notes { |
244 | 233 | .clearfix { |
245 | 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 | 236 | .note_text_and_preview { |
279 | 237 | // makes the "absolute" position for links relative to this |
280 | 238 | position: relative; |
... | ... | @@ -313,3 +271,17 @@ ul.notes { |
313 | 271 | @extend .thumbnail; |
314 | 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
app/controllers/application_controller.rb
... | ... | @@ -4,16 +4,12 @@ class ApplicationController < ActionController::Base |
4 | 4 | before_filter :set_current_user_for_observers |
5 | 5 | before_filter :add_abilities |
6 | 6 | before_filter :dev_tools if Rails.env == 'development' |
7 | + before_filter :default_headers | |
7 | 8 | |
8 | 9 | protect_from_forgery |
9 | 10 | |
10 | 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 | 13 | rescue_from Encoding::CompatibilityError do |exception| |
18 | 14 | log_exception(exception) |
19 | 15 | render "errors/encoding", layout: "errors", status: 500 |
... | ... | @@ -148,4 +144,8 @@ class ApplicationController < ActionController::Base |
148 | 144 | Rack::MiniProfiler.authorize_request |
149 | 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 | 151 | end | ... | ... |
... | ... | @@ -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 < ApplicationController |
6 | 6 | |
7 | 7 | # Authorize |
8 | 8 | before_filter :authorize_read_group!, except: [:new, :create] |
9 | + before_filter :authorize_admin_group!, only: [:edit, :update, :destroy] | |
9 | 10 | before_filter :authorize_create_group!, only: [:new, :create] |
10 | 11 | |
11 | 12 | # Load group projects |
... | ... | @@ -84,6 +85,31 @@ class GroupsController < ApplicationController |
84 | 85 | redirect_to people_group_path(@group), notice: 'Users was successfully added.' |
85 | 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 | 113 | protected |
88 | 114 | |
89 | 115 | def group |
... | ... | @@ -106,6 +132,14 @@ class GroupsController < ApplicationController |
106 | 132 | end |
107 | 133 | |
108 | 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 | 144 | end |
111 | 145 | end | ... | ... |
app/controllers/projects_controller.rb
... | ... | @@ -90,16 +90,6 @@ class ProjectsController < ProjectResourceController |
90 | 90 | end |
91 | 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 | 93 | def destroy |
104 | 94 | return access_denied! unless can?(current_user, :remove_project, project) |
105 | 95 | ... | ... |
app/controllers/refs_controller.rb
... | ... | @@ -13,6 +13,8 @@ class RefsController < ProjectResourceController |
13 | 13 | format.html do |
14 | 14 | new_path = if params[:destination] == "tree" |
15 | 15 | project_tree_path(@project, (@ref + "/" + params[:path])) |
16 | + elsif params[:destination] == "graph" | |
17 | + project_graph_path(@project, @ref) | |
16 | 18 | else |
17 | 19 | project_commits_path(@project, @ref) |
18 | 20 | end | ... | ... |
app/helpers/projects_helper.rb
... | ... | @@ -43,7 +43,7 @@ module ProjectsHelper |
43 | 43 | tm = project.team_member_by_id(author) |
44 | 44 | |
45 | 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 | 47 | else |
48 | 48 | author_html |
49 | 49 | end.html_safe | ... | ... |
app/mailers/notify.rb
... | ... | @@ -10,6 +10,10 @@ class Notify < ActionMailer::Base |
10 | 10 | |
11 | 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 < ActionMailer::Base |
63 | 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 | 71 | @note = Note.find(note_id) |
68 | 72 | @commit = @note.noteable |
69 | 73 | @commit = CommitDecorator.decorate(@commit) |
70 | 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 | 76 | end |
73 | 77 | |
74 | 78 | def note_issue_email(recipient_id, note_id) | ... | ... |
app/models/key.rb
... | ... | @@ -24,8 +24,8 @@ class Key < ActiveRecord::Base |
24 | 24 | before_save :set_identifier |
25 | 25 | |
26 | 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 | 30 | delegate :name, :email, to: :user, prefix: true |
31 | 31 | |
... | ... | @@ -33,14 +33,6 @@ class Key < ActiveRecord::Base |
33 | 33 | self.key = self.key.strip unless self.key.blank? |
34 | 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 | 36 | def fingerprintable_key |
45 | 37 | return true unless key # Don't test if there is no key. |
46 | 38 | # `ssh-keygen -lf /dev/stdin <<< "#{key}"` errors with: redirection unexpected |
... | ... | @@ -65,7 +57,7 @@ class Key < ActiveRecord::Base |
65 | 57 | end |
66 | 58 | |
67 | 59 | def is_deploy_key |
68 | - true if project_id | |
60 | + !!project_id | |
69 | 61 | end |
70 | 62 | |
71 | 63 | # projects that has this key |
... | ... | @@ -77,7 +69,7 @@ class Key < ActiveRecord::Base |
77 | 69 | end |
78 | 70 | end |
79 | 71 | |
80 | - def last_deploy? | |
81 | - Key.where(identifier: identifier).count == 0 | |
72 | + def shell_id | |
73 | + "key-#{self.id}" | |
82 | 74 | end |
83 | 75 | end | ... | ... |
app/models/namespace.rb
... | ... | @@ -27,7 +27,6 @@ class Namespace < ActiveRecord::Base |
27 | 27 | |
28 | 28 | after_create :ensure_dir_exist |
29 | 29 | after_update :move_dir |
30 | - after_commit :update_gitolite, on: :update, if: :require_update_gitolite | |
31 | 30 | after_destroy :rm_dir |
32 | 31 | |
33 | 32 | scope :root, where('type IS NULL') |
... | ... | @@ -89,11 +88,6 @@ class Namespace < ActiveRecord::Base |
89 | 88 | end |
90 | 89 | end |
91 | 90 | |
92 | - def update_gitolite | |
93 | - @require_update_gitolite = false | |
94 | - projects.each(&:update_repository) | |
95 | - end | |
96 | - | |
97 | 91 | def rm_dir |
98 | 92 | dir_path = File.join(Gitlab.config.gitolite.repos_path, path) |
99 | 93 | FileUtils.rm_r( dir_path, force: true ) | ... | ... |
app/models/project.rb
... | ... | @@ -8,7 +8,6 @@ |
8 | 8 | # description :text |
9 | 9 | # created_at :datetime not null |
10 | 10 | # updated_at :datetime not null |
11 | -# private_flag :boolean default(TRUE), not null | |
12 | 11 | # creator_id :integer |
13 | 12 | # default_branch :string(255) |
14 | 13 | # issues_enabled :boolean default(TRUE), not null |
... | ... | @@ -16,6 +15,7 @@ |
16 | 15 | # merge_requests_enabled :boolean default(TRUE), not null |
17 | 16 | # wiki_enabled :boolean default(TRUE), not null |
18 | 17 | # namespace_id :integer |
18 | +# public :boolean default(FALSE), not null | |
19 | 19 | # |
20 | 20 | |
21 | 21 | require "grit" |
... | ... | @@ -262,8 +262,6 @@ class Project < ActiveRecord::Base |
262 | 262 | |
263 | 263 | Gitlab::ProjectMover.new(self, old_dir, new_dir).execute |
264 | 264 | |
265 | - gitolite.move_repository(old_repo, self) | |
266 | - | |
267 | 265 | save! |
268 | 266 | end |
269 | 267 | rescue Gitlab::ProjectMover::ProjectMoveError => ex |
... | ... | @@ -459,20 +457,6 @@ class Project < ActiveRecord::Base |
459 | 457 | namespace.try(:path) || '' |
460 | 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 | 460 | def repo_exists? |
477 | 461 | @repo_exists ||= (repository && repository.branches.present?) |
478 | 462 | rescue | ... | ... |
app/models/project_team.rb
app/models/protected_branch.rb
... | ... | @@ -18,13 +18,6 @@ class ProtectedBranch < ActiveRecord::Base |
18 | 18 | validates :name, presence: true |
19 | 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 | 21 | def commit |
29 | 22 | project.repository.commit(self.name) |
30 | 23 | end | ... | ... |
app/models/user.rb
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 | 13 | class UserTeam < ActiveRecord::Base |
2 | 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 | 13 | class UserTeamProjectRelationship < ActiveRecord::Base |
2 | 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 | 14 | class UserTeamUserRelationship < ActiveRecord::Base |
2 | 15 | attr_accessible :group_admin, :permission, :user_id, :user_team_id |
3 | 16 | ... | ... |
app/models/users_project.rb
... | ... | @@ -25,15 +25,12 @@ class UsersProject < ActiveRecord::Base |
25 | 25 | |
26 | 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 | 28 | validates :user, presence: true |
32 | 29 | validates :user_id, uniqueness: { scope: [:project_id], message: "already exists in project" } |
33 | 30 | validates :project_access, inclusion: { in: [GUEST, REPORTER, DEVELOPER, MASTER] }, presence: true |
34 | 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 | 35 | scope :guests, where(project_access: GUEST) |
39 | 36 | scope :reporters, where(project_access: REPORTER) |
... | ... | @@ -84,11 +81,6 @@ class UsersProject < ActiveRecord::Base |
84 | 81 | end |
85 | 82 | end |
86 | 83 | |
87 | - GitoliteWorker.perform_async( | |
88 | - :update_repositories, | |
89 | - project_ids | |
90 | - ) | |
91 | - | |
92 | 84 | true |
93 | 85 | rescue |
94 | 86 | false |
... | ... | @@ -103,11 +95,6 @@ class UsersProject < ActiveRecord::Base |
103 | 95 | end |
104 | 96 | end |
105 | 97 | |
106 | - GitoliteWorker.perform_async( | |
107 | - :update_repositories, | |
108 | - project_ids | |
109 | - ) | |
110 | - | |
111 | 98 | true |
112 | 99 | rescue |
113 | 100 | false |
... | ... | @@ -136,10 +123,6 @@ class UsersProject < ActiveRecord::Base |
136 | 123 | end |
137 | 124 | end |
138 | 125 | |
139 | - def update_repository | |
140 | - project.update_repository | |
141 | - end | |
142 | - | |
143 | 126 | def project_access_human |
144 | 127 | Project.access_options.key(self.project_access) |
145 | 128 | end | ... | ... |
app/observers/key_observer.rb
... | ... | @@ -3,20 +3,17 @@ class KeyObserver < ActiveRecord::Observer |
3 | 3 | |
4 | 4 | def after_save(key) |
5 | 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 | 10 | end |
12 | 11 | |
13 | 12 | def after_destroy(key) |
14 | - return if key.is_deploy_key && !key.last_deploy? | |
15 | - | |
16 | 13 | GitoliteWorker.perform_async( |
17 | 14 | :remove_key, |
18 | - key.identifier, | |
19 | - key.projects.map(&:id) | |
15 | + key.shell_id, | |
16 | + key.key, | |
20 | 17 | ) |
21 | 18 | end |
22 | 19 | end | ... | ... |
app/observers/note_observer.rb
... | ... | @@ -11,7 +11,9 @@ class NoteObserver < ActiveRecord::Observer |
11 | 11 | notify_team(note) |
12 | 12 | elsif note.notify_author |
13 | 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 | 17 | else |
16 | 18 | # Otherwise ignore it |
17 | 19 | nil | ... | ... |
app/observers/project_observer.rb
1 | 1 | class ProjectObserver < ActiveRecord::Observer |
2 | 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 | 9 | end |
5 | 10 | |
6 | 11 | def after_update(project) |
... | ... | @@ -8,14 +13,14 @@ class ProjectObserver < ActiveRecord::Observer |
8 | 13 | end |
9 | 14 | |
10 | 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 | 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 | 24 | end |
20 | 25 | |
21 | 26 | protected | ... | ... |
app/views/admin/dashboard/index.html.haml
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | = link_to admin_projects_path do |
7 | 7 | %h1= Project.count |
8 | 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 | 10 | .span4 |
11 | 11 | .ui-box |
12 | 12 | %h5.title Groups |
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | = link_to admin_groups_path do |
15 | 15 | %h1= Group.count |
16 | 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 | 18 | .span4 |
19 | 19 | .ui-box |
20 | 20 | %h5.title Users |
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 | = link_to admin_users_path do |
23 | 23 | %h1= User.count |
24 | 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 | 27 | .row |
28 | 28 | .span4 |
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 | - @projects.each do |project| |
32 | 32 | %p |
33 | 33 | = link_to project.name_with_namespace, [:admin, project] |
34 | - %span.light.right | |
34 | + %span.light.pull-right | |
35 | 35 | = time_ago_in_words project.created_at |
36 | 36 | ago |
37 | 37 | |
... | ... | @@ -42,7 +42,7 @@ |
42 | 42 | %p |
43 | 43 | = link_to [:admin, user] do |
44 | 44 | = user.name |
45 | - %span.light.right | |
45 | + %span.light.pull-right | |
46 | 46 | = time_ago_in_words user.created_at |
47 | 47 | ago |
48 | 48 | |
... | ... | @@ -51,25 +51,25 @@ |
51 | 51 | %hr |
52 | 52 | %p |
53 | 53 | Issues |
54 | - %span.light.right | |
54 | + %span.light.pull-right | |
55 | 55 | = Issue.count |
56 | 56 | %p |
57 | 57 | Merge Requests |
58 | - %span.light.right | |
58 | + %span.light.pull-right | |
59 | 59 | = MergeRequest.count |
60 | 60 | %p |
61 | 61 | Notes |
62 | - %span.light.right | |
62 | + %span.light.pull-right | |
63 | 63 | = Note.count |
64 | 64 | %p |
65 | 65 | Snippets |
66 | - %span.light.right | |
66 | + %span.light.pull-right | |
67 | 67 | = Snippet.count |
68 | 68 | %p |
69 | 69 | SSH Keys |
70 | - %span.light.right | |
70 | + %span.light.pull-right | |
71 | 71 | = Key.count |
72 | 72 | %p |
73 | 73 | Milestones |
74 | - %span.light.right | |
74 | + %span.light.pull-right | |
75 | 75 | = Milestone.count | ... | ... |
app/views/admin/groups/edit.html.haml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | %hr |
3 | 3 | = form_for [:admin, @group] do |f| |
4 | 4 | - if @group.errors.any? |
5 | - .alert-message.block-message.error | |
5 | + .alert.alert-error | |
6 | 6 | %span= @group.errors.full_messages.first |
7 | 7 | .clearfix.group_name_holder |
8 | 8 | = f.label :name do |
... | ... | @@ -24,5 +24,5 @@ |
24 | 24 | %li It will change the git path to repositories under this group. |
25 | 25 | |
26 | 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 | 4 | allows you to keep projects organized. |
5 | 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 | 8 | %br |
9 | 9 | = form_tag admin_groups_path, method: :get, class: 'form-inline' do |
10 | 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 | 13 | %table |
14 | 14 | %thead |
... | ... | @@ -30,6 +30,6 @@ |
30 | 30 | %td |
31 | 31 | = link_to group.owner_name, admin_user_path(group.owner_id) |
32 | 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 | 35 | = paginate @groups, theme: "admin" | ... | ... |
app/views/admin/groups/new.html.haml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | %hr |
3 | 3 | = form_for [:admin, @group] do |f| |
4 | 4 | - if @group.errors.any? |
5 | - .alert-message.block-message.error | |
5 | + .alert.alert-error | |
6 | 6 | %span= @group.errors.full_messages.first |
7 | 7 | .clearfix |
8 | 8 | = f.label :name do |
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | .input |
11 | 11 | = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left" |
12 | 12 | |
13 | - = f.submit 'Create group', class: "btn primary" | |
13 | + = f.submit 'Create group', class: "btn btn-primary" | |
14 | 14 | %hr |
15 | 15 | .padded |
16 | 16 | %ul | ... | ... |
app/views/admin/groups/show.html.haml
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | %td |
15 | 15 | = @group.name |
16 | 16 | |
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 | 18 | %i.icon-edit |
19 | 19 | Rename |
20 | 20 | %tr |
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 | Owner: |
30 | 30 | %td |
31 | 31 | = @group.owner_name |
32 | - .right | |
32 | + .pull-right | |
33 | 33 | = link_to "#", class: "btn btn-small change-owner-link" do |
34 | 34 | %i.icon-edit |
35 | 35 | Change owner |
... | ... | @@ -42,7 +42,7 @@ |
42 | 42 | = form_for [:admin, @group] do |f| |
43 | 43 | = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'} |
44 | 44 | %div |
45 | - = f.submit 'Change Owner', class: "btn danger" | |
45 | + = f.submit 'Change Owner', class: "btn btn-remove" | |
46 | 46 | = link_to "Cancel", "#", class: "btn change-owner-cancel-link" |
47 | 47 | |
48 | 48 | - if @group.projects.any? |
... | ... | @@ -63,7 +63,7 @@ |
63 | 63 | %span.monospace= project.path_with_namespace + ".git" |
64 | 64 | %td= project.users.count |
65 | 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 | 68 | = form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do |
69 | 69 | %table.zebra-striped |
... | ... | @@ -88,7 +88,7 @@ |
88 | 88 | %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} |
89 | 89 | |
90 | 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 | 92 | %td |
93 | 93 | Read more about project permissions |
94 | 94 | %strong= link_to "here", help_permissions_path, class: "vlink" |
... | ... | @@ -110,7 +110,7 @@ |
110 | 110 | .input |
111 | 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 | 112 | .form-actions |
113 | - = submit_tag 'Add', class: "btn primary" | |
113 | + = submit_tag 'Add', class: "btn btn-primary" | |
114 | 114 | |
115 | 115 | :javascript |
116 | 116 | $(function(){ | ... | ... |
app/views/admin/hooks/index.html.haml
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | |
8 | 8 | = form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f| |
9 | 9 | -if @hook.errors.any? |
10 | - .alert-message.block-message.error | |
10 | + .alert.alert-error | |
11 | 11 | - @hook.errors.full_messages.each do |msg| |
12 | 12 | %p= msg |
13 | 13 | .clearfix |
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | .input |
16 | 16 | = f.text_field :url, class: "text_field xxlarge" |
17 | 17 | |
18 | - = f.submit "Add System Hook", class: "btn primary" | |
18 | + = f.submit "Add System Hook", class: "btn btn-primary" | |
19 | 19 | %hr |
20 | 20 | |
21 | 21 | -if @hooks.any? |
... | ... | @@ -33,7 +33,7 @@ |
33 | 33 | %td |
34 | 34 | = link_to admin_hook_path(hook) do |
35 | 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 | 37 | %td POST |
38 | 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 | 15 | .file_title |
16 | 16 | %i.icon-file |
17 | 17 | githost.log |
18 | - .right | |
18 | + .pull-right | |
19 | 19 | = link_to '#', class: 'log-bottom' do |
20 | 20 | %i.icon-arrow-down |
21 | 21 | Scroll down |
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 | .file_title |
30 | 30 | %i.icon-file |
31 | 31 | application.log |
32 | - .right | |
32 | + .pull-right | |
33 | 33 | = link_to '#', class: 'log-bottom' do |
34 | 34 | %i.icon-arrow-down |
35 | 35 | Scroll down |
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 | .file_title |
44 | 44 | %i.icon-file |
45 | 45 | production.log |
46 | - .right | |
46 | + .pull-right | |
47 | 47 | = link_to '#', class: 'log-bottom' do |
48 | 48 | %i.icon-arrow-down |
49 | 49 | Scroll down |
... | ... | @@ -57,7 +57,7 @@ |
57 | 57 | .file_title |
58 | 58 | %i.icon-file |
59 | 59 | sidekiq.log |
60 | - .right | |
60 | + .pull-right | |
61 | 61 | = link_to '#', class: 'log-bottom' do |
62 | 62 | %i.icon-arrow-down |
63 | 63 | Scroll down | ... | ... |
app/views/admin/projects/_form.html.haml
1 | 1 | = form_for [:admin, project] do |f| |
2 | 2 | -if project.errors.any? |
3 | - .alert-message.block-message.error | |
3 | + .alert.alert-error | |
4 | 4 | %ul |
5 | 5 | - project.errors.full_messages.each do |msg| |
6 | 6 | %li= msg |
... | ... | @@ -65,8 +65,8 @@ |
65 | 65 | |
66 | 66 | |
67 | 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 | 1 | %h3.page_title |
2 | 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 | 5 | %hr |
6 | 6 | |
... | ... | @@ -37,7 +37,7 @@ |
37 | 37 | |
38 | 38 | |
39 | 39 | .form-actions |
40 | - = submit_tag "Search", class: "btn submit primary" | |
40 | + = submit_tag "Search", class: "btn submit btn-primary" | |
41 | 41 | = link_to "Reset", admin_projects_path, class: "btn" |
42 | 42 | .span8 |
43 | 43 | .ui-box |
... | ... | @@ -51,9 +51,9 @@ |
51 | 51 | - else |
52 | 52 | %i.icon-lock.cgreen |
53 | 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 | 57 | - if @projects.blank? |
58 | 58 | %p.nothing_here_message 0 projects matches |
59 | 59 | - else | ... | ... |
app/views/admin/projects/members/_form.html.haml
1 | 1 | = form_for @team_member_relation, as: :team_member, url: admin_project_member_path(@project, @member) do |f| |
2 | 2 | -if @team_member_relation.errors.any? |
3 | - .alert-message.block-message.error | |
3 | + .alert.alert-error | |
4 | 4 | %ul |
5 | 5 | - @team_member_relation.errors.full_messages.each do |msg| |
6 | 6 | %li= msg |
... | ... | @@ -12,5 +12,5 @@ |
12 | 12 | |
13 | 13 | %br |
14 | 14 | .actions |
15 | - = f.submit 'Save', class: "btn primary" | |
15 | + = f.submit 'Save', class: "btn btn-primary" | |
16 | 16 | = link_to 'Cancel', :back, class: "btn" | ... | ... |
app/views/admin/projects/show.html.haml
1 | 1 | %h3.page_title |
2 | 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 | 4 | %i.icon-edit |
5 | 5 | Edit |
6 | 6 | |
... | ... | @@ -129,8 +129,8 @@ |
129 | 129 | %td |
130 | 130 | = link_to tm.name, admin_user_path(tm) |
131 | 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 | 135 | %br |
136 | 136 | %h5 Add new team member |
... | ... | @@ -147,7 +147,7 @@ |
147 | 147 | %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} |
148 | 148 | |
149 | 149 | %tr |
150 | - %td= submit_tag 'Add', class: "btn primary" | |
150 | + %td= submit_tag 'Add', class: "btn btn-primary" | |
151 | 151 | %td |
152 | 152 | Read more about project permissions |
153 | 153 | %strong= link_to "here", help_permissions_path, class: "vlink" | ... | ... |
app/views/admin/teams/edit.html.haml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | %hr |
3 | 3 | = form_for @team, url: admin_team_path(@team), method: :put do |f| |
4 | 4 | - if @team.errors.any? |
5 | - .alert-message.block-message.error | |
5 | + .alert.alert-error | |
6 | 6 | %span= @team.errors.full_messages.first |
7 | 7 | .clearfix.team_name_holder |
8 | 8 | = f.label :name do |
... | ... | @@ -19,5 +19,5 @@ |
19 | 19 | %li It will change web url for access team and team projects. |
20 | 20 | |
21 | 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 | 3 | %small |
4 | 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 | 7 | %br |
8 | 8 | |
9 | 9 | = form_tag admin_teams_path, method: :get, class: 'form-inline' do |
10 | 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 | 13 | %table |
14 | 14 | %thead |
... | ... | @@ -32,7 +32,7 @@ |
32 | 32 | %td |
33 | 33 | = link_to team.owner.name, admin_user_path(team.owner_id) |
34 | 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 | 38 | = paginate @teams, theme: "admin" | ... | ... |
app/views/admin/teams/members/_form.html.haml
1 | 1 | = form_tag admin_team_member_path(@team, @member), method: :put do |
2 | 2 | -if @member.errors.any? |
3 | - .alert-message.block-message.error | |
3 | + .alert.alert-error | |
4 | 4 | %ul |
5 | 5 | - @member.errors.full_messages.each do |msg| |
6 | 6 | %li= msg |
... | ... | @@ -16,5 +16,5 @@ |
16 | 16 | |
17 | 17 | %br |
18 | 18 | .actions |
19 | - = submit_tag 'Save', class: "btn primary" | |
19 | + = submit_tag 'Save', class: "btn btn-primary" | |
20 | 20 | = link_to 'Cancel', :back, class: "btn" | ... | ... |
app/views/admin/teams/members/new.html.haml
app/views/admin/teams/new.html.haml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | %hr |
3 | 3 | = form_for @team, url: admin_teams_path do |f| |
4 | 4 | - if @team.errors.any? |
5 | - .alert-message.block-message.error | |
5 | + .alert.alert-error | |
6 | 6 | %span= @team.errors.full_messages.first |
7 | 7 | .clearfix |
8 | 8 | = f.label :name do |
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | .input |
11 | 11 | = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left" |
12 | 12 | |
13 | - = f.submit 'Create team', class: "btn primary" | |
13 | + = f.submit 'Create team', class: "btn btn-primary" | |
14 | 14 | %hr |
15 | 15 | .padded |
16 | 16 | %ul | ... | ... |
app/views/admin/teams/projects/_form.html.haml
1 | 1 | = form_tag admin_team_project_path(@team, @project), method: :put do |
2 | 2 | -if @project.errors.any? |
3 | - .alert-message.block-message.error | |
3 | + .alert.alert-error | |
4 | 4 | %ul |
5 | 5 | - @project.errors.full_messages.each do |msg| |
6 | 6 | %li= msg |
... | ... | @@ -12,5 +12,5 @@ |
12 | 12 | |
13 | 13 | %br |
14 | 14 | .actions |
15 | - = submit_tag 'Save', class: "btn primary" | |
15 | + = submit_tag 'Save', class: "btn btn-primary" | |
16 | 16 | = link_to 'Cancel', :back, class: "btn" | ... | ... |
app/views/admin/teams/projects/new.html.haml
... | ... | @@ -20,4 +20,4 @@ |
20 | 20 | %tr |
21 | 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 | 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 | 14 | %td |
15 | 15 | = @team.name |
16 | 16 | |
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 | 18 | %i.icon-edit |
19 | 19 | Rename |
20 | 20 | %tr |
... | ... | @@ -23,7 +23,7 @@ |
23 | 23 | Owner: |
24 | 24 | %td |
25 | 25 | = @team.owner.name |
26 | - .right | |
26 | + .pull-right | |
27 | 27 | = link_to "#", class: "btn btn-small change-owner-link" do |
28 | 28 | %i.icon-edit |
29 | 29 | Change owner |
... | ... | @@ -36,13 +36,13 @@ |
36 | 36 | = form_for @team, url: admin_team_path(@team) do |f| |
37 | 37 | = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'} |
38 | 38 | %div |
39 | - = f.submit 'Change Owner', class: "btn danger" | |
39 | + = f.submit 'Change Owner', class: "btn btn-remove" | |
40 | 40 | = link_to "Cancel", "#", class: "btn change-owner-cancel-link" |
41 | 41 | |
42 | 42 | %fieldset |
43 | 43 | %legend |
44 | 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 | 46 | - if @team.members.any? |
47 | 47 | %table#members_list |
48 | 48 | %thead |
... | ... | @@ -60,14 +60,14 @@ |
60 | 60 | %td= @team.human_default_projects_access(member) |
61 | 61 | %td= @team.admin?(member) ? "Admin" : "Member" |
62 | 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 | 64 | |
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 | 67 | %fieldset |
68 | 68 | %legend |
69 | 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 | 71 | - if @team.projects.any? |
72 | 72 | %table#projects_list |
73 | 73 | %thead |
... | ... | @@ -82,9 +82,9 @@ |
82 | 82 | %td |
83 | 83 | %span= @team.human_max_project_access(project) |
84 | 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 | 86 | |
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 | 89 | :javascript |
90 | 90 | $(function(){ | ... | ... |
app/views/admin/users/_form.html.haml
... | ... | @@ -63,10 +63,10 @@ |
63 | 63 | .alert.alert-error |
64 | 64 | - if @admin_user.blocked |
65 | 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 | 67 | - else |
68 | 68 | %p Blocked users will be removed from all projects & 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 | 70 | %fieldset |
71 | 71 | %legend Profile |
72 | 72 | .clearfix |
... | ... | @@ -80,8 +80,8 @@ |
80 | 80 | .input= f.text_field :twitter |
81 | 81 | |
82 | 82 | .actions |
83 | - = f.submit 'Save', class: "btn save-btn" | |
83 | + = f.submit 'Save', class: "btn btn-save" | |
84 | 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 | 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 | 1 | %h3.page_title |
2 | 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 | 4 | %br |
5 | 5 | |
6 | 6 | = form_tag admin_users_path, method: :get, class: 'form-inline' do |
7 | 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 | 9 | %ul.nav.nav-tabs |
10 | 10 | %li{class: "#{'active' unless params[:filter]}"} |
11 | 11 | = link_to admin_users_path do |
... | ... | @@ -44,15 +44,15 @@ |
44 | 44 | %td= user.username |
45 | 45 | %td= user.email |
46 | 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 | 48 | %td.bgred |
49 | 49 | - if user == current_user |
50 | 50 | %span.cred It's you! |
51 | 51 | - else |
52 | 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 | 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 | 58 | = paginate @admin_users, theme: "admin" | ... | ... |
app/views/admin/users/show.html.haml
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | %small Blocked |
5 | 5 | - if @admin_user.admin |
6 | 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 | 8 | %i.icon-edit |
9 | 9 | Edit |
10 | 10 | |
... | ... | @@ -86,7 +86,7 @@ |
86 | 86 | %td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3" |
87 | 87 | |
88 | 88 | %tr |
89 | - %td= submit_tag 'Add', class: "btn primary" | |
89 | + %td= submit_tag 'Add', class: "btn btn-primary" | |
90 | 90 | %td |
91 | 91 | Read more about project permissions |
92 | 92 | %strong= link_to "here", help_permissions_path, class: "vlink" |
... | ... | @@ -123,5 +123,5 @@ |
123 | 123 | %tr |
124 | 124 | %td= link_to project.name_with_namespace, admin_project_path(project) |
125 | 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
app/views/commit/huge_commit.html.haml
app/views/commit/show.html.haml
app/views/commits/_commit_box.html.haml
1 | 1 | .ui-box.ui-box-show |
2 | 2 | .ui-box-head |
3 | - .right | |
3 | + .pull-right | |
4 | 4 | - if @notes_count > 0 |
5 | 5 | %span.btn.disabled.grouped |
6 | 6 | %i.icon-comment |
... | ... | @@ -13,7 +13,7 @@ |
13 | 13 | %ul.dropdown-menu |
14 | 14 | %li= link_to "Email Patches", project_commit_path(@project, @commit, format: :patch) |
15 | 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 | 17 | %span Browse Code » |
18 | 18 | %h3.commit-title.page_title |
19 | 19 | = gfm escape_once(@commit.title) | ... | ... |
app/views/commits/_diffs.html.haml
1 | 1 | - if @suppress_diff |
2 | - .alert-message.block-message | |
2 | + .alert.alert-block | |
3 | 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 | 5 | %p To prevent performance issue we rejected diff information. |
6 | 6 | %p |
7 | 7 | But if you still want to see diff |
... | ... | @@ -25,7 +25,7 @@ |
25 | 25 | %span= diff.old_path |
26 | 26 | |
27 | 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 | 29 | View file @ |
30 | 30 | %span.commit-short-id= @commit.short_id(6) |
31 | 31 | - else |
... | ... | @@ -33,7 +33,7 @@ |
33 | 33 | - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode |
34 | 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 | 37 | View file @ |
38 | 38 | %span.commit-short-id= @commit.short_id(6) |
39 | 39 | ... | ... |
app/views/commits/_head.html.haml
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 | |
23 | 23 | |
24 | 24 | - if current_controller?(:commits) && current_user.private_token |
25 | - %li.right | |
25 | + %li.pull-right | |
26 | 26 | %span.rss-icon |
27 | 27 | = link_to project_commits_path(@project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Feed" do |
28 | 28 | = image_tag "rss_ui.png", title: "feed" | ... | ... |
app/views/compare/_form.html.haml
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | = text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge" |
20 | 20 | .pull-left |
21 | 21 | |
22 | - = submit_tag "Compare", class: "btn primary wide commits-compare-btn" | |
22 | + = submit_tag "Compare", class: "btn btn-primary wide commits-compare-btn" | |
23 | 23 | - if @refs_are_same |
24 | 24 | .alert |
25 | 25 | %span Refs are the same | ... | ... |
app/views/dashboard/_filter.html.haml
... | ... | @@ -25,9 +25,9 @@ |
25 | 25 | %li{class: ("active" if params[:project_id] == project.id.to_s)} |
26 | 26 | = link_to dashboard_filter_path(entity, project_id: project.id) do |
27 | 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 | 30 | %fieldset |
31 | 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 | 4 | %small |
5 | 5 | (#{groups.count}) |
6 | 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 | 9 | %i.icon-plus |
10 | 10 | New Group |
11 | 11 | %ul.well-list |
... | ... | @@ -13,6 +13,6 @@ |
13 | 13 | %li |
14 | 14 | = link_to group_path(id: group.path), class: dom_class(group) do |
15 | 15 | %strong.well-title= truncate(group.name, length: 35) |
16 | - %span.right.light | |
16 | + %span.pull-right.light | |
17 | 17 | - if group.owner == current_user |
18 | 18 | %i.icon-wrench | ... | ... |
app/views/dashboard/_projects.html.haml
... | ... | @@ -4,8 +4,8 @@ |
4 | 4 | %small |
5 | 5 | (#{@projects_count}) |
6 | 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 | 9 | %i.icon-plus |
10 | 10 | New Project |
11 | 11 | ... | ... |
app/views/dashboard/_teams.html.haml
... | ... | @@ -3,8 +3,8 @@ |
3 | 3 | Teams |
4 | 4 | %small |
5 | 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 | 8 | %i.icon-plus |
9 | 9 | New Team |
10 | 10 | %ul.well-list |
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 | %li |
13 | 13 | = link_to team_path(id: team.path), class: dom_class(team) do |
14 | 14 | %strong.well-title= truncate(team.name, length: 35) |
15 | - %span.right.light | |
15 | + %span.pull-right.light | |
16 | 16 | - if team.owner == current_user |
17 | 17 | %i.icon-wrench |
18 | 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 | 6 | = current_user.projects_limit |
7 | 7 | projects. Click on button below to add a new one |
8 | 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 | 10 | New Project » |
11 | 11 | - else |
12 | 12 | If you will be added to project - it will be displayed here | ... | ... |
app/views/dashboard/issues.html.haml
app/views/dashboard/merge_requests.html.haml
app/views/dashboard/projects.html.haml
... | ... | @@ -3,8 +3,8 @@ |
3 | 3 | %span |
4 | 4 | (#{@projects.total_count}) |
5 | 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 | 8 | %i.icon-plus |
9 | 9 | New Project |
10 | 10 | |
... | ... | @@ -42,7 +42,7 @@ |
42 | 42 | %small.light |
43 | 43 | %strong Last activity: |
44 | 44 | %span= project_last_activity(project) |
45 | - .right.light | |
45 | + .pull-right.light | |
46 | 46 | - if project.owner == current_user |
47 | 47 | %i.icon-wrench |
48 | 48 | - tm = project.team.get_tm(current_user.id) | ... | ... |
app/views/deploy_keys/_form.html.haml
1 | 1 | %div |
2 | 2 | = form_for [@project, @key], url: project_deploy_keys_path do |f| |
3 | 3 | -if @key.errors.any? |
4 | - .alert-message.block-message.error | |
4 | + .alert.alert-error | |
5 | 5 | %ul |
6 | 6 | - @key.errors.full_messages.each do |msg| |
7 | 7 | %li= msg |
... | ... | @@ -18,6 +18,6 @@ |
18 | 18 | = link_to "here", help_ssh_path |
19 | 19 | |
20 | 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 | 8 | = time_ago_in_words(key.created_at) |
9 | 9 | ago |
10 | 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 | 4 | Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers. |
5 | 5 | |
6 | 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 | 8 | Add Deploy Key |
9 | 9 | - if @keys.any? |
10 | 10 | %table | ... | ... |
app/views/deploy_keys/show.html.haml
... | ... | @@ -10,5 +10,5 @@ |
10 | 10 | ← To keys list |
11 | 11 | %hr |
12 | 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 | 8 | %div |
9 | 9 | = f.password_field :password_confirmation, class: "text bottom", placeholder: "Confirm new password" |
10 | 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 | 3 | <%= devise_error_messages! %> |
4 | - <%= f.email_field :email, :placeholder => "Email", :class => "text" %> | |
4 | + <%= f.email_field :email, placeholder: "Email", class: "text" %> | |
5 | 5 | <br/> |
6 | 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 | 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 | 3 | = devise_error_messages! |
4 | 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 | 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 | 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 | 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 | 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 | 14 | %div |
15 | - = f.submit "Sign up", :class => "primary btn wide" | |
16 | - %br | |
15 | + = f.submit "Sign up", class: "btn-create btn" | |
17 | 16 | %hr |
18 | 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 | 3 | = text_field_tag :username, nil, {:class => "text top", :placeholder => "LDAP Login"} |
4 | 4 | = password_field_tag :password, nil, {:class => "text bottom", :placeholder => "Password"} |
5 | 5 | %br/ |
6 | - = submit_tag "LDAP Sign in", :class => "primary btn" | |
6 | + = submit_tag "LDAP Sign in", :class => "btn-primary btn" | |
7 | 7 | - if devise_mapping.omniauthable? |
8 | 8 | - (resource_class.omniauth_providers - [:ldap]).each do |provider| |
9 | 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 | 11 | %br/ |
12 | 12 | %hr/ |
13 | 13 | %a#other_form_toggle{:href => "#", :onclick => "javascript:$('#new_user').toggle();"} Other Sign in |
... | ... | @@ -24,6 +24,6 @@ |
24 | 24 | = f.check_box :remember_me |
25 | 25 | %span Remember me |
26 | 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 | 29 | = render :partial => "devise/shared/links" | ... | ... |
app/views/devise/sessions/new.html.haml
... | ... | @@ -11,18 +11,18 @@ |
11 | 11 | = f.check_box :remember_me |
12 | 12 | %span Remember me |
13 | 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 | 16 | = link_to "Forgot your password?", new_password_path(resource_name), :class => "btn" |
17 | 17 | %br/ |
18 | - %br/ | |
19 | 18 | - if Gitlab.config.gitlab.signup_enabled |
20 | 19 | %hr/ |
21 | 20 | Don't have an account? |
22 | 21 | = link_to "Sign up", new_registration_path(resource_name) |
23 | - .clearfix | |
24 | 22 | - if devise_mapping.omniauthable? && resource_class.omniauth_providers.present? |
23 | + %hr | |
25 | 24 | %div |
25 | + %span Sign in with: | |
26 | 26 | - resource_class.omniauth_providers.each do |provider| |
27 | 27 | %span |
28 | 28 | = link_to authbutton(provider, 32), omniauth_authorize_path(resource_name, provider) | ... | ... |
app/views/events/_event.html.haml
... | ... | @@ -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 | 25 | %li{class: ("active" if params[:project_id] == project.id.to_s)} |
26 | 26 | = link_to group_filter_path(entity, project_id: project.id) do |
27 | 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 | 30 | %fieldset |
31 | 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
app/views/groups/_new_member.html.haml
app/views/groups/_people_filter.html.haml
... | ... | @@ -6,9 +6,9 @@ |
6 | 6 | %li{class: ("active" if params[:project_id] == project.id.to_s)} |
7 | 7 | = link_to people_group_path(@group, project_id: project.id) do |
8 | 8 | = project.name_with_namespace |
9 | - %small.right= project.users.count | |
9 | + %small.pull-right= project.users.count | |
10 | 10 | |
11 | 11 | %fieldset |
12 | 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 | 4 | %small |
5 | 5 | (#{projects.count}) |
6 | 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 | 9 | %i.icon-plus |
10 | 10 | New Project |
11 | 11 | %ul.well-list | ... | ... |
... | ... | @@ -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 | + | |
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
app/views/groups/merge_requests.html.haml
app/views/groups/new.html.haml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | %hr |
3 | 3 | = form_for @group do |f| |
4 | 4 | - if @group.errors.any? |
5 | - .alert-message.block-message.error | |
5 | + .alert.alert-error | |
6 | 6 | %span= @group.errors.full_messages.first |
7 | 7 | .clearfix |
8 | 8 | = f.label :name do |
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | .input |
11 | 11 | = f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left" |
12 | 12 | |
13 | - = f.submit 'Create group', class: "btn primary" | |
13 | + = f.submit 'Create group', class: "btn btn-create" | |
14 | 14 | %hr |
15 | 15 | .padded |
16 | 16 | %ul | ... | ... |
app/views/groups/people.html.haml
app/views/groups/search.html.haml
... | ... | @@ -4,6 +4,6 @@ |
4 | 4 | %strong Looking for |
5 | 5 | .input |
6 | 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 | 8 | - if params[:search].present? |
9 | 9 | = render 'search/result' | ... | ... |
app/views/groups/show.html.haml
1 | 1 | .projects |
2 | 2 | .activities.span8 |
3 | 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 | 5 | ← To dashboard |
6 | 6 | |
7 | 7 | %span.cgray You will only see events from projects in this group | ... | ... |