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,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 |
Gemfile.lock
| @@ -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! |
ROADMAP.md
| 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 |
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,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"; |
| @@ -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
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 { |
| @@ -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
app/assets/stylesheets/sections/login.scss
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
app/controllers/application_controller.rb
| @@ -4,16 +4,12 @@ class ApplicationController < ActionController::Base | @@ -4,16 +4,12 @@ class ApplicationController < 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 < ActionController::Base | @@ -148,4 +144,8 @@ class ApplicationController < 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 |
| @@ -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 < ApplicationController | @@ -6,6 +6,7 @@ class GroupsController < 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 < ApplicationController | @@ -84,6 +85,31 @@ class GroupsController < 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 < ApplicationController | @@ -106,6 +132,14 @@ class GroupsController < 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 < ProjectResourceController | @@ -90,16 +90,6 @@ class ProjectsController < 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 < ProjectResourceController | @@ -13,6 +13,8 @@ class RefsController < 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 < ActionMailer::Base | @@ -10,6 +10,10 @@ class Notify < 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 < ActionMailer::Base | @@ -63,12 +67,12 @@ class Notify < 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 < ActiveRecord::Base | @@ -24,8 +24,8 @@ class Key < 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 < ActiveRecord::Base | @@ -33,14 +33,6 @@ class Key < 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 < ActiveRecord::Base | @@ -65,7 +57,7 @@ class Key < 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 < ActiveRecord::Base | @@ -77,7 +69,7 @@ class Key < 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 < ActiveRecord::Base | @@ -27,7 +27,6 @@ class Namespace < 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 < ActiveRecord::Base | @@ -89,11 +88,6 @@ class Namespace < 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 < ActiveRecord::Base | @@ -262,8 +262,6 @@ class Project < 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 < ActiveRecord::Base | @@ -459,20 +457,6 @@ class Project < 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
app/models/protected_branch.rb
| @@ -18,13 +18,6 @@ class ProtectedBranch < ActiveRecord::Base | @@ -18,13 +18,6 @@ class ProtectedBranch < 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 < ActiveRecord::Base | @@ -25,15 +25,12 @@ class UsersProject < 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 < ActiveRecord::Base | @@ -84,11 +81,6 @@ class UsersProject < 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 < ActiveRecord::Base | @@ -103,11 +95,6 @@ class UsersProject < 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 < ActiveRecord::Base | @@ -136,10 +123,6 @@ class UsersProject < 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 < ActiveRecord::Observer | @@ -3,20 +3,17 @@ class KeyObserver < 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 < ActiveRecord::Observer | @@ -11,7 +11,9 @@ class NoteObserver < 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 < ActiveRecord::Observer | @@ -8,14 +13,14 @@ class ProjectObserver < 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 | | 12 | |
| 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 | | 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 | %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 | | 17 | |
| 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 | | 12 | |
| 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 | | 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 | %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 | | 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 | %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 | | 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 | :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 & will not be able to login to GitLab. | 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 | %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
app/views/commit/show.html.haml
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 | | 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 | - 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
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 | ← To keys list | 10 | ← 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: | ||
| 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" |
| @@ -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
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 |
| @@ -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 | + | ||
| 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
| 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 | | 12 | |
| 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 | ← To dashboard | 5 | ← To dashboard |
| 6 | | 6 | |
| 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 |