Commit 627efddf6343735ed95e49ac9b71d7929c879ea3
1 parent
2bad798e
Exists in
master
and in
4 other branches
migrated to bootstrap 2
Showing
37 changed files
with
686 additions
and
545 deletions
Show diff stats
Gemfile
| ... | ... | @@ -31,7 +31,7 @@ gem "httparty" |
| 31 | 31 | gem "charlock_holmes" |
| 32 | 32 | gem "foreman" |
| 33 | 33 | gem "omniauth-ldap" |
| 34 | -gem 'bootstrap-sass', "1.4.4" | |
| 34 | +gem 'bootstrap-sass', "2.0.2" | |
| 35 | 35 | gem "colored" |
| 36 | 36 | gem 'yaml_db', :git => "https://github.com/gitlabhq/yaml_db.git" |
| 37 | 37 | gem 'modularity' | ... | ... |
Gemfile.lock
| ... | ... | @@ -71,8 +71,7 @@ GEM |
| 71 | 71 | awesome_print (1.0.2) |
| 72 | 72 | bcrypt-ruby (3.0.1) |
| 73 | 73 | blankslate (2.1.2.4) |
| 74 | - bootstrap-sass (1.4.4) | |
| 75 | - sass-rails (~> 3.1) | |
| 74 | + bootstrap-sass (2.0.2) | |
| 76 | 75 | builder (3.0.0) |
| 77 | 76 | capybara (1.1.2) |
| 78 | 77 | mime-types (>= 1.16) |
| ... | ... | @@ -306,7 +305,7 @@ DEPENDENCIES |
| 306 | 305 | autotest |
| 307 | 306 | autotest-rails |
| 308 | 307 | awesome_print |
| 309 | - bootstrap-sass (= 1.4.4) | |
| 308 | + bootstrap-sass (= 2.0.2) | |
| 310 | 309 | capybara |
| 311 | 310 | carrierwave |
| 312 | 311 | charlock_holmes | ... | ... |
app/assets/javascripts/merge_requests.js
| ... | ... | @@ -4,18 +4,18 @@ var MergeRequest = { |
| 4 | 4 | |
| 5 | 5 | init: |
| 6 | 6 | function() { |
| 7 | - $(".tabs a").live("click", function() { | |
| 8 | - $(".tabs a").parent().removeClass("active"); | |
| 7 | + $(".nav-tabs a").live("click", function() { | |
| 8 | + $(".nav-tabs a").parent().removeClass("active"); | |
| 9 | 9 | $(this).parent().addClass("active"); |
| 10 | 10 | }); |
| 11 | 11 | |
| 12 | - $(".tabs a.merge-notes-tab").live("click", function(e) { | |
| 12 | + $(".nav-tabs a.merge-notes-tab").live("click", function(e) { | |
| 13 | 13 | $(".merge-request-diffs").hide(); |
| 14 | 14 | $(".merge_request_notes").show(); |
| 15 | 15 | e.preventDefault(); |
| 16 | 16 | }); |
| 17 | 17 | |
| 18 | - $(".tabs a.merge-diffs-tab").live("click", function(e) { | |
| 18 | + $(".nav-tabs a.merge-diffs-tab").live("click", function(e) { | |
| 19 | 19 | if(!MergeRequest.diffs_loaded) { |
| 20 | 20 | MergeRequest.loadDiff(); |
| 21 | 21 | } | ... | ... |
app/assets/stylesheets/common.scss
| 1 | -a { | |
| 2 | - outline: none; | |
| 3 | - color: $link_color; | |
| 4 | - &:hover { | |
| 5 | - text-decoration:none; | |
| 6 | - color: $blue_link; | |
| 7 | - } | |
| 8 | - | |
| 9 | - &.btn { | |
| 10 | - color: $style_color; | |
| 11 | - } | |
| 12 | - | |
| 13 | - &.dark { | |
| 14 | - color: $style_color; | |
| 15 | - } | |
| 16 | - | |
| 17 | - &.lined { | |
| 18 | - text-decoration:underlined; | |
| 19 | - } | |
| 20 | - | |
| 21 | - &.gray { | |
| 22 | - color:gray; | |
| 23 | - } | |
| 24 | - | |
| 25 | - &.supp_diff_link { | |
| 26 | - text-align:center; | |
| 27 | - padding:20px 0; | |
| 28 | - background:#f1f1f1; | |
| 29 | - width:100%; | |
| 30 | - float:left; | |
| 31 | - } | |
| 32 | - | |
| 33 | - &.neib { | |
| 34 | - margin-right:15px; | |
| 35 | - } | |
| 36 | -} | |
| 37 | - | |
| 38 | -.btn { | |
| 39 | - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), color-stop(25%, #f1f1f1), to(#e6e6e6)); | |
| 40 | - background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 41 | - background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 42 | - background-image: -ms-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 43 | - background-image: -o-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 44 | - background-image: linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 45 | - | |
| 46 | - &:hover { | |
| 47 | - } | |
| 48 | - | |
| 49 | - &.primary { | |
| 50 | - background:$link_color; | |
| 51 | - &:hover { | |
| 52 | - background:$blue_link; | |
| 53 | - } | |
| 54 | - } | |
| 55 | -} | |
| 56 | - | |
| 57 | -a:focus { | |
| 58 | - outline: none; | |
| 59 | -} | |
| 60 | - | |
| 61 | -.vlink { | |
| 62 | - color: $link_color !important; | |
| 63 | -} | |
| 64 | - | |
| 65 | -.pills a:hover { | |
| 66 | - background-color:#ccc; | |
| 67 | -} | |
| 68 | - | |
| 69 | -.pills .active a { | |
| 70 | - background-color: #aaa; | |
| 71 | -} | |
| 72 | - | |
| 73 | -.label { | |
| 74 | - background-color: #474D57; | |
| 75 | -} | |
| 76 | - | |
| 77 | -.pretty_label { | |
| 78 | - @include round-borders-all(4px); | |
| 79 | - padding:2px 4px; | |
| 80 | - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); | |
| 81 | - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); | |
| 82 | - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); | |
| 83 | - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); | |
| 84 | - color: #777; | |
| 85 | - border: 1px solid #DEDFE1; | |
| 86 | - | |
| 87 | - &.branch { | |
| 88 | - border:none; | |
| 89 | - font-size:13px; | |
| 90 | - background: #474D57; | |
| 91 | - color:#fff; | |
| 92 | - font-family: monospace; | |
| 93 | - } | |
| 94 | -} | |
| 95 | - | |
| 96 | -.event_label { | |
| 97 | - background: #FCEEC1; | |
| 98 | - padding:0 2px; | |
| 99 | - font-family: monospace; | |
| 100 | -} | |
| 101 | - | |
| 102 | -.tabs > li > a, .pills > li > a { | |
| 103 | - color:$style_color; | |
| 104 | -} | |
| 105 | - | |
| 106 | 1 | .diff_file_header a, |
| 107 | 2 | .file_stats a { |
| 108 | 3 | color:$style_color; |
| 109 | 4 | } |
| 110 | 5 | |
| 111 | -/** COLORS **/ | |
| 112 | -.cgray { color:gray; } | |
| 113 | -.cred { color:#D12F19; } | |
| 114 | -.cgreen { color:#44aa22; } | |
| 115 | -.cblack { color:#111; } | |
| 116 | -.cwhite { color:#fff !important } | |
| 117 | - | |
| 118 | -/** COMMON STYLES **/ | |
| 119 | -.left { | |
| 120 | - float:left; | |
| 121 | -} | |
| 122 | -.right { | |
| 123 | - float:right !important; | |
| 124 | -} | |
| 125 | -.width-50p{ | |
| 126 | - width:50%; | |
| 127 | -} | |
| 128 | -.width-49p{ | |
| 129 | - width:49%; | |
| 130 | -} | |
| 131 | -.width-30p{ | |
| 132 | - width:30%; | |
| 133 | -} | |
| 134 | -.width-65p{ | |
| 135 | - width:65%; | |
| 136 | -} | |
| 137 | -.width-100p{ | |
| 138 | - width:100%; | |
| 139 | -} | |
| 140 | -.append-bottom-10 { | |
| 141 | - margin-bottom:10px; | |
| 142 | -} | |
| 143 | -.append-bottom-20 { | |
| 144 | - margin-bottom:20px; | |
| 145 | -} | |
| 146 | -.prepend-top-10 { | |
| 147 | - margin-top:10px; | |
| 148 | -} | |
| 149 | - | |
| 150 | -.prepend-top-20 { | |
| 151 | - margin-top:20px; | |
| 152 | -} | |
| 153 | - | |
| 154 | -.padded { | |
| 155 | - padding:20px; | |
| 156 | -} | |
| 157 | - | |
| 158 | -.ipadded { | |
| 159 | - padding:20px !important; | |
| 160 | -} | |
| 161 | -.lborder { | |
| 162 | - border-left:1px solid #eee; | |
| 163 | -} | |
| 164 | -.no-borders { | |
| 165 | - border:none; | |
| 166 | -} | |
| 167 | -table.no-borders { | |
| 168 | - border:none; | |
| 169 | - tr, td { border:none } | |
| 170 | -} | |
| 171 | -.no-padding { | |
| 172 | - padding:0 !important; | |
| 173 | -} | |
| 174 | -.underlined { | |
| 175 | - border-bottom: 1px solid $border_color; | |
| 176 | -} | |
| 177 | 6 | |
| 178 | 7 | /** LAYOUT **/ |
| 179 | 8 | |
| 180 | 9 | .container { |
| 181 | - width:$min_app_width; | |
| 182 | 10 | padding-top:0; |
| 183 | 11 | z-index:5; |
| 12 | + min-width:$min_app_width; | |
| 13 | + padding:0 20px | |
| 184 | 14 | } |
| 185 | 15 | |
| 186 | 16 | .container .content { |
| 187 | - margin:0 $app_padding; | |
| 17 | + margin:0 0; | |
| 188 | 18 | } |
| 189 | 19 | |
| 190 | 20 | .container .sidebar { |
| ... | ... | @@ -212,7 +42,7 @@ header { |
| 212 | 42 | cursor: pointer; |
| 213 | 43 | img { |
| 214 | 44 | border-radius: 4px; |
| 215 | - right: 20px; | |
| 45 | + right: 0px; | |
| 216 | 46 | position: absolute; |
| 217 | 47 | width: 33px; |
| 218 | 48 | height: 33px; |
| ... | ... | @@ -271,7 +101,7 @@ header { |
| 271 | 101 | border-radius: 5px; |
| 272 | 102 | width: 100px; |
| 273 | 103 | position: absolute; |
| 274 | - right: 20px; | |
| 104 | + right: 10px; | |
| 275 | 105 | top: 46px; |
| 276 | 106 | margin-top: 0; |
| 277 | 107 | float: right; |
| ... | ... | @@ -319,7 +149,7 @@ header { |
| 319 | 149 | nav.main_menu { |
| 320 | 150 | border-radius: 4px; |
| 321 | 151 | margin: auto; |
| 322 | - margin:30px $app_padding; | |
| 152 | + margin:30px 0; | |
| 323 | 153 | background:#eee; |
| 324 | 154 | border:1px solid #bbb; |
| 325 | 155 | height:38px; |
| ... | ... | @@ -338,6 +168,14 @@ nav.main_menu { |
| 338 | 168 | color:$style_color; |
| 339 | 169 | } |
| 340 | 170 | a { |
| 171 | + // Landscape phone to portrait tablet | |
| 172 | + @media (max-width: 1080px) { min-width:35px; } | |
| 173 | + // Portrait tablet to landscape and desktop | |
| 174 | + @media (min-width: 1080px) and (max-width: 1200px) { min-width:40px; } | |
| 175 | + // Large desktop | |
| 176 | + @media (min-width: 1200px) { min-width:55px; } | |
| 177 | + | |
| 178 | + text-align:center; | |
| 341 | 179 | font-weight:bold; |
| 342 | 180 | &:first-child{ |
| 343 | 181 | -webkit-border-top-left-radius: 4px; |
| ... | ... | @@ -357,7 +195,7 @@ nav.main_menu { |
| 357 | 195 | &.home { |
| 358 | 196 | background: url(home_icon.PNG) no-repeat center center; |
| 359 | 197 | text-indent:-9999px; |
| 360 | - min-width:40px; | |
| 198 | + //min-width:40px; | |
| 361 | 199 | img { |
| 362 | 200 | position:relative; |
| 363 | 201 | top:4px; |
| ... | ... | @@ -377,23 +215,6 @@ nav.main_menu { |
| 377 | 215 | * |
| 378 | 216 | */ |
| 379 | 217 | |
| 380 | - | |
| 381 | - | |
| 382 | -img.avatar { | |
| 383 | - float:left; | |
| 384 | - margin-right:15px; | |
| 385 | - width:40px; | |
| 386 | - -webkit-border-radius: 4px; | |
| 387 | - -moz-border-radius: 4px; | |
| 388 | - border-radius: 4px; | |
| 389 | -} | |
| 390 | - | |
| 391 | -img.lil_av { | |
| 392 | - padding-left: 5px; | |
| 393 | - position: relative; | |
| 394 | - top: 3px; | |
| 395 | -} | |
| 396 | - | |
| 397 | 218 | .profile_avatar_holder { |
| 398 | 219 | float:left; |
| 399 | 220 | width:60px; |
| ... | ... | @@ -406,67 +227,11 @@ img.lil_av { |
| 406 | 227 | } |
| 407 | 228 | } |
| 408 | 229 | |
| 409 | -.wll { | |
| 410 | - background-color: #FFF; | |
| 411 | - padding: 10px 5px; | |
| 412 | - min-height: 20px; | |
| 413 | - border-bottom: 1px solid #eee; | |
| 414 | - border-bottom: 1px solid rgba(0, 0, 0, 0.05); | |
| 415 | - cursor:pointer; | |
| 416 | - &.smoke { | |
| 417 | - background-color:#f5f5f5; | |
| 418 | - } | |
| 419 | - &:hover { | |
| 420 | - background:$hover; | |
| 421 | - } | |
| 422 | - &:last-child { border:none } | |
| 423 | - p { padding-top:5px; margin:0; color:$style_color;} | |
| 424 | - .author { color: #999; } | |
| 425 | - p { | |
| 426 | - color:#222; | |
| 427 | - margin-bottom: 0; | |
| 428 | - img { | |
| 429 | - position:relative; | |
| 430 | - top:3px; | |
| 431 | - } | |
| 432 | - } | |
| 433 | -} | |
| 434 | 230 | |
| 435 | 231 | .visible_link, |
| 436 | 232 | .author_link { |
| 437 | 233 | color: $link_color; |
| 438 | 234 | } |
| 439 | -.entry { | |
| 440 | - position: relative; | |
| 441 | - padding: 7px 15px; | |
| 442 | - margin-bottom: 18px; | |
| 443 | - color: #404040; | |
| 444 | - filter:none; | |
| 445 | - | |
| 446 | - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); | |
| 447 | - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); | |
| 448 | - | |
| 449 | - -webkit-border-radius: 4px; | |
| 450 | - -moz-border-radius: 4px; | |
| 451 | - border-radius: 4px; | |
| 452 | - | |
| 453 | - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); | |
| 454 | - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); | |
| 455 | - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); | |
| 456 | - | |
| 457 | - background:#F1F1F1; | |
| 458 | - border: 1px solid #ccc; | |
| 459 | - | |
| 460 | - | |
| 461 | - p { | |
| 462 | - color:$style_color; | |
| 463 | - margin-bottom: 0; | |
| 464 | - img { | |
| 465 | - position:relative; | |
| 466 | - top:3px; | |
| 467 | - } | |
| 468 | - } | |
| 469 | -} | |
| 470 | 235 | |
| 471 | 236 | .widget { |
| 472 | 237 | @include shade; |
| ... | ... | @@ -492,86 +257,6 @@ img.lil_av { |
| 492 | 257 | } |
| 493 | 258 | } |
| 494 | 259 | |
| 495 | - | |
| 496 | -.ui-box { | |
| 497 | - margin-bottom: 40px; | |
| 498 | - @include round-borders-all(4px); | |
| 499 | - @include shade; | |
| 500 | - border-color:#ddd; | |
| 501 | - | |
| 502 | - ul { | |
| 503 | - margin:0; | |
| 504 | - } | |
| 505 | - | |
| 506 | - h5, .title { | |
| 507 | - padding: 0 10px; | |
| 508 | - background:#f5f5f5; | |
| 509 | - border-bottom: 1px solid #eee; | |
| 510 | - @include round-borders-top(4px); | |
| 511 | - border-top:none; | |
| 512 | - | |
| 513 | - form { | |
| 514 | - padding:9px 0; | |
| 515 | - margin:0px; | |
| 516 | - } | |
| 517 | - | |
| 518 | - .pills { | |
| 519 | - li { | |
| 520 | - padding:3px 0; | |
| 521 | - &.active a { background-color:$style_color; } | |
| 522 | - a { | |
| 523 | - border-radius:7px; | |
| 524 | - } | |
| 525 | - } | |
| 526 | - } | |
| 527 | - } | |
| 528 | - | |
| 529 | - .bottom { | |
| 530 | - background:#f5f5f5; | |
| 531 | - border-top: 1px solid #eee; | |
| 532 | - @include round-borders-bottom(4px); | |
| 533 | - border-bottom:none; | |
| 534 | - } | |
| 535 | - | |
| 536 | - &.padded { | |
| 537 | - h5, .title { | |
| 538 | - margin: -20px; | |
| 539 | - margin-bottom: 0; | |
| 540 | - padding: 5px 20px; | |
| 541 | - } | |
| 542 | - .middle_title { | |
| 543 | - background:#f5f5f5; | |
| 544 | - margin:20px -20px; | |
| 545 | - padding: 0 20px; | |
| 546 | - border-top:1px solid #eee; | |
| 547 | - border-bottom:1px solid #eee; | |
| 548 | - font-size:14px; | |
| 549 | - color:#777; | |
| 550 | - } | |
| 551 | - } | |
| 552 | - .row_title { | |
| 553 | - font-weight:bold; | |
| 554 | - color:#444; | |
| 555 | - &:hover { | |
| 556 | - text-decoration:underline; | |
| 557 | - } | |
| 558 | - } | |
| 559 | - | |
| 560 | - li, .wll { | |
| 561 | - padding:10px; | |
| 562 | - &:first-child { | |
| 563 | - @include round-borders-top(4px); | |
| 564 | - border-top:none; | |
| 565 | - } | |
| 566 | - | |
| 567 | - &:last-child { | |
| 568 | - @include round-borders-bottom(4px); | |
| 569 | - border:none; | |
| 570 | - } | |
| 571 | - } | |
| 572 | - | |
| 573 | -} | |
| 574 | - | |
| 575 | 260 | .help li { color:#111 } |
| 576 | 261 | |
| 577 | 262 | .back_link { |
| ... | ... | @@ -591,11 +276,6 @@ img.lil_av { |
| 591 | 276 | } |
| 592 | 277 | } |
| 593 | 278 | |
| 594 | -.borders { | |
| 595 | - border: 1px solid #ccc; | |
| 596 | - @include shade; | |
| 597 | -} | |
| 598 | - | |
| 599 | 279 | .download_repo_link { |
| 600 | 280 | background: url("images.png") no-repeat 0 -48px; |
| 601 | 281 | padding-left:20px; |
| ... | ... | @@ -623,6 +303,7 @@ table a code { |
| 623 | 303 | |
| 624 | 304 | .btn.padded { |
| 625 | 305 | margin-right:3px; |
| 306 | + padding:4px 10px 4px; | |
| 626 | 307 | } |
| 627 | 308 | |
| 628 | 309 | .loading { |
| ... | ... | @@ -726,7 +407,7 @@ a.project-update.titled { |
| 726 | 407 | |
| 727 | 408 | |
| 728 | 409 | input.git_clone_url { |
| 729 | - width:475px; | |
| 410 | + width:325px; | |
| 730 | 411 | } |
| 731 | 412 | |
| 732 | 413 | .merge-request-form-holder { |
| ... | ... | @@ -874,7 +555,7 @@ li.commit { |
| 874 | 555 | } |
| 875 | 556 | |
| 876 | 557 | code { |
| 877 | - padding:4px; | |
| 558 | + padding:0px; | |
| 878 | 559 | } |
| 879 | 560 | } |
| 880 | 561 | p.time { | ... | ... |
| ... | ... | @@ -0,0 +1,440 @@ |
| 1 | +a { | |
| 2 | + outline: none; | |
| 3 | + color: $link_color; | |
| 4 | + &:hover { | |
| 5 | + text-decoration:none; | |
| 6 | + color: $blue_link; | |
| 7 | + } | |
| 8 | + | |
| 9 | + &.btn { | |
| 10 | + color: $style_color; | |
| 11 | + } | |
| 12 | + | |
| 13 | + &.dark { | |
| 14 | + color: $style_color; | |
| 15 | + } | |
| 16 | + | |
| 17 | + &.lined { | |
| 18 | + text-decoration:underlined; | |
| 19 | + } | |
| 20 | + | |
| 21 | + &.gray { | |
| 22 | + color:gray; | |
| 23 | + } | |
| 24 | + | |
| 25 | + &.supp_diff_link { | |
| 26 | + text-align:center; | |
| 27 | + padding:20px 0; | |
| 28 | + background:#f1f1f1; | |
| 29 | + width:100%; | |
| 30 | + float:left; | |
| 31 | + } | |
| 32 | + | |
| 33 | + &.neib { | |
| 34 | + margin-right:15px; | |
| 35 | + } | |
| 36 | +} | |
| 37 | + | |
| 38 | +.alert-message { | |
| 39 | + @extend .alert; | |
| 40 | + | |
| 41 | + &.success { | |
| 42 | + @extend .alert-success; | |
| 43 | + } | |
| 44 | + | |
| 45 | + &.error { | |
| 46 | + @extend .alert-error; | |
| 47 | + } | |
| 48 | +} | |
| 49 | + | |
| 50 | +.alert { | |
| 51 | + &.alert-well { | |
| 52 | + background:#ddd; | |
| 53 | + border:1px solid #ccc; | |
| 54 | + background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #ddd), to(#dfdfdf)); | |
| 55 | + background-image: -webkit-linear-gradient(#ddd 6.6%, #dfdfdf); | |
| 56 | + background-image: -moz-linear-gradient(#ddd 6.6%, #dfdfdf); | |
| 57 | + background-image: -o-linear-gradient(#ddd 6.6%, #dfdfdf); | |
| 58 | + color:#111; | |
| 59 | + } | |
| 60 | +} | |
| 61 | + | |
| 62 | +h3, h4, h5, h6 { | |
| 63 | + line-height: 36px; | |
| 64 | +} | |
| 65 | + | |
| 66 | +code { | |
| 67 | + background:#FCEEC1; | |
| 68 | + color:$style_color; | |
| 69 | +} | |
| 70 | + | |
| 71 | +table { | |
| 72 | + width:100%; | |
| 73 | + th { | |
| 74 | + padding-top: 9px; | |
| 75 | + font-weight: bold; | |
| 76 | + vertical-align: middle; | |
| 77 | + } | |
| 78 | + th, td { | |
| 79 | + padding: 10px 10px 9px; | |
| 80 | + line-height: 18px; | |
| 81 | + text-align: left; | |
| 82 | + } | |
| 83 | + | |
| 84 | + &.bordered-table { | |
| 85 | + border: 1px solid #DDD; | |
| 86 | + border-collapse: separate; | |
| 87 | + -webkit-border-radius: 4px; | |
| 88 | + -moz-border-radius: 4px; | |
| 89 | + border-radius: 4px; | |
| 90 | + } | |
| 91 | + | |
| 92 | + &.zebra-striped { | |
| 93 | + @extend .table-striped; | |
| 94 | + } | |
| 95 | +} | |
| 96 | + | |
| 97 | +.btn { | |
| 98 | + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), color-stop(25%, #f1f1f1), to(#e6e6e6)); | |
| 99 | + background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 100 | + background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 101 | + background-image: -ms-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 102 | + background-image: -o-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 103 | + background-image: linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); | |
| 104 | + | |
| 105 | + &:hover { | |
| 106 | + } | |
| 107 | + | |
| 108 | + &.btn-primary { | |
| 109 | + background:$link_color; | |
| 110 | + &:hover { | |
| 111 | + background:$blue_link; | |
| 112 | + } | |
| 113 | + } | |
| 114 | + &.danger, | |
| 115 | + &.btn-danger { | |
| 116 | + background:#DD4B39; | |
| 117 | + color:white; | |
| 118 | + border-color:#990000; | |
| 119 | + text-shadow:0 0 1px #111; | |
| 120 | + &:hover { | |
| 121 | + color:white; | |
| 122 | + background:#DD0000; | |
| 123 | + } | |
| 124 | + } | |
| 125 | + | |
| 126 | + &.small { | |
| 127 | + @extend .btn-small; | |
| 128 | + } | |
| 129 | +} | |
| 130 | + | |
| 131 | +a:focus { | |
| 132 | + outline: none; | |
| 133 | +} | |
| 134 | + | |
| 135 | +.nav-pills a:hover { | |
| 136 | + background-color:#ccc; | |
| 137 | +} | |
| 138 | + | |
| 139 | +.nav-pills .active a { | |
| 140 | + background-color: #aaa; | |
| 141 | +} | |
| 142 | + | |
| 143 | +.label { | |
| 144 | + background-color: #474D57; | |
| 145 | +} | |
| 146 | + | |
| 147 | +.nav-tabs > li > a, .nav-pills > li > a { | |
| 148 | + color:$style_color; | |
| 149 | +} | |
| 150 | + | |
| 151 | +/** COLORS **/ | |
| 152 | +.cgray { color:gray; } | |
| 153 | +.cred { color:#D12F19; } | |
| 154 | +.cgreen { color:#44aa22; } | |
| 155 | +.cblack { color:#111; } | |
| 156 | +.cwhite { color:#fff !important } | |
| 157 | + | |
| 158 | +/** COMMON STYLES **/ | |
| 159 | +.left { | |
| 160 | + float:left; | |
| 161 | +} | |
| 162 | +.right { | |
| 163 | + float:right !important; | |
| 164 | +} | |
| 165 | +.width-50p{ | |
| 166 | + width:50%; | |
| 167 | +} | |
| 168 | +.width-49p{ | |
| 169 | + width:49%; | |
| 170 | +} | |
| 171 | +.width-30p{ | |
| 172 | + width:30%; | |
| 173 | +} | |
| 174 | +.width-65p{ | |
| 175 | + width:65%; | |
| 176 | +} | |
| 177 | +.width-100p{ | |
| 178 | + width:100%; | |
| 179 | +} | |
| 180 | +.append-bottom-10 { | |
| 181 | + margin-bottom:10px; | |
| 182 | +} | |
| 183 | +.append-bottom-20 { | |
| 184 | + margin-bottom:20px; | |
| 185 | +} | |
| 186 | +.prepend-top-10 { | |
| 187 | + margin-top:10px; | |
| 188 | +} | |
| 189 | + | |
| 190 | +.prepend-top-20 { | |
| 191 | + margin-top:20px; | |
| 192 | +} | |
| 193 | + | |
| 194 | +.padded { | |
| 195 | + padding:20px; | |
| 196 | +} | |
| 197 | + | |
| 198 | +.ipadded { | |
| 199 | + padding:20px !important; | |
| 200 | +} | |
| 201 | +.lborder { | |
| 202 | + border-left:1px solid #eee; | |
| 203 | +} | |
| 204 | + | |
| 205 | +.borders { | |
| 206 | + border: 1px solid #ccc; | |
| 207 | + @include shade; | |
| 208 | +} | |
| 209 | +.no-borders { | |
| 210 | + border:none; | |
| 211 | +} | |
| 212 | +table.no-borders { | |
| 213 | + border:none; | |
| 214 | + tr, td { border:none } | |
| 215 | +} | |
| 216 | +.no-padding { | |
| 217 | + padding:0 !important; | |
| 218 | +} | |
| 219 | +.underlined { | |
| 220 | + border-bottom: 1px solid $border_color; | |
| 221 | +} | |
| 222 | +.vlink { | |
| 223 | + color: $link_color !important; | |
| 224 | +} | |
| 225 | + | |
| 226 | +.pretty_label { | |
| 227 | + @include round-borders-all(4px); | |
| 228 | + padding:2px 4px; | |
| 229 | + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); | |
| 230 | + background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); | |
| 231 | + background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); | |
| 232 | + background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); | |
| 233 | + color: #777; | |
| 234 | + border: 1px solid #DEDFE1; | |
| 235 | + | |
| 236 | + &.branch { | |
| 237 | + border:none; | |
| 238 | + font-size:13px; | |
| 239 | + background: #474D57; | |
| 240 | + color:#fff; | |
| 241 | + font-family: monospace; | |
| 242 | + } | |
| 243 | +} | |
| 244 | + | |
| 245 | +.event_label { | |
| 246 | + background: #FCEEC1; | |
| 247 | + padding:0 2px; | |
| 248 | + font-family: monospace; | |
| 249 | +} | |
| 250 | + | |
| 251 | +img.avatar { | |
| 252 | + float:left; | |
| 253 | + margin-right:15px; | |
| 254 | + width:40px; | |
| 255 | + -webkit-border-radius: 4px; | |
| 256 | + -moz-border-radius: 4px; | |
| 257 | + border-radius: 4px; | |
| 258 | +} | |
| 259 | + | |
| 260 | +img.lil_av { | |
| 261 | + padding-left: 4px; | |
| 262 | + padding-right:3px; | |
| 263 | +} | |
| 264 | + | |
| 265 | +form { | |
| 266 | + @extend .form-horizontal; | |
| 267 | + | |
| 268 | + .actions { | |
| 269 | + @extend .form-actions; | |
| 270 | + } | |
| 271 | + | |
| 272 | + .clearfix { | |
| 273 | + @extend .control-group; | |
| 274 | + } | |
| 275 | + | |
| 276 | + .input { | |
| 277 | + @extend .controls; | |
| 278 | + } | |
| 279 | + | |
| 280 | + label { | |
| 281 | + @extend .control-label; | |
| 282 | + } | |
| 283 | + .xlarge { | |
| 284 | + @extend .input-xlarge; | |
| 285 | + } | |
| 286 | + .xxlarge { | |
| 287 | + @extend .input-xxlarge; | |
| 288 | + } | |
| 289 | +} | |
| 290 | + | |
| 291 | +/** | |
| 292 | + * List li block element #1 | |
| 293 | + * | |
| 294 | + */ | |
| 295 | +.wll { | |
| 296 | + background-color: #FFF; | |
| 297 | + padding: 10px 5px; | |
| 298 | + min-height: 20px; | |
| 299 | + border-bottom: 1px solid #eee; | |
| 300 | + border-bottom: 1px solid rgba(0, 0, 0, 0.05); | |
| 301 | + cursor:pointer; | |
| 302 | + &.smoke { | |
| 303 | + background-color:#f5f5f5; | |
| 304 | + } | |
| 305 | + &:hover { | |
| 306 | + background:$hover; | |
| 307 | + } | |
| 308 | + &:last-child { border:none } | |
| 309 | + p { padding-top:5px; margin:0; color:$style_color;} | |
| 310 | + .author { color: #999; } | |
| 311 | + p { | |
| 312 | + color:#222; | |
| 313 | + margin-bottom: 0; | |
| 314 | + img { | |
| 315 | + position:relative; | |
| 316 | + top:3px; | |
| 317 | + } | |
| 318 | + } | |
| 319 | +} | |
| 320 | + | |
| 321 | + | |
| 322 | +/** | |
| 323 | + * Block element #2 | |
| 324 | + * | |
| 325 | + */ | |
| 326 | +.entry { | |
| 327 | + position: relative; | |
| 328 | + padding: 7px 15px; | |
| 329 | + margin-bottom: 18px; | |
| 330 | + color: #404040; | |
| 331 | + filter:none; | |
| 332 | + | |
| 333 | + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); | |
| 334 | + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); | |
| 335 | + | |
| 336 | + -webkit-border-radius: 4px; | |
| 337 | + -moz-border-radius: 4px; | |
| 338 | + border-radius: 4px; | |
| 339 | + | |
| 340 | + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); | |
| 341 | + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); | |
| 342 | + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); | |
| 343 | + | |
| 344 | + background:#F1F1F1; | |
| 345 | + border: 1px solid #ccc; | |
| 346 | + | |
| 347 | + | |
| 348 | + p { | |
| 349 | + color:$style_color; | |
| 350 | + margin-bottom: 0; | |
| 351 | + img { | |
| 352 | + position:relative; | |
| 353 | + top:3px; | |
| 354 | + } | |
| 355 | + } | |
| 356 | +} | |
| 357 | + | |
| 358 | + | |
| 359 | +/** | |
| 360 | + * Big UI Block for show page content | |
| 361 | + * | |
| 362 | + */ | |
| 363 | +.ui-box { | |
| 364 | + margin-bottom: 40px; | |
| 365 | + @include round-borders-all(4px); | |
| 366 | + @include shade; | |
| 367 | + border-color:#ddd; | |
| 368 | + | |
| 369 | + ul { | |
| 370 | + margin:0; | |
| 371 | + } | |
| 372 | + | |
| 373 | + h5, .title { | |
| 374 | + padding: 0 10px; | |
| 375 | + background:#f5f5f5; | |
| 376 | + border-bottom: 1px solid #eee; | |
| 377 | + @include round-borders-top(4px); | |
| 378 | + border-top:none; | |
| 379 | + | |
| 380 | + form { | |
| 381 | + padding:9px 0; | |
| 382 | + margin:0px; | |
| 383 | + } | |
| 384 | + | |
| 385 | + .pills { | |
| 386 | + li { | |
| 387 | + padding:3px 0; | |
| 388 | + &.active a { background-color:$style_color; } | |
| 389 | + a { | |
| 390 | + border-radius:7px; | |
| 391 | + } | |
| 392 | + } | |
| 393 | + } | |
| 394 | + } | |
| 395 | + | |
| 396 | + .bottom { | |
| 397 | + background:#f5f5f5; | |
| 398 | + border-top: 1px solid #eee; | |
| 399 | + @include round-borders-bottom(4px); | |
| 400 | + border-bottom:none; | |
| 401 | + } | |
| 402 | + | |
| 403 | + &.padded { | |
| 404 | + h5, .title { | |
| 405 | + margin: -20px; | |
| 406 | + margin-bottom: 0; | |
| 407 | + padding: 5px 20px; | |
| 408 | + } | |
| 409 | + .middle_title { | |
| 410 | + background:#f5f5f5; | |
| 411 | + margin:20px -20px; | |
| 412 | + padding: 0 20px; | |
| 413 | + border-top:1px solid #eee; | |
| 414 | + border-bottom:1px solid #eee; | |
| 415 | + font-size:14px; | |
| 416 | + color:#777; | |
| 417 | + } | |
| 418 | + } | |
| 419 | + .row_title { | |
| 420 | + font-weight:bold; | |
| 421 | + color:#444; | |
| 422 | + &:hover { | |
| 423 | + text-decoration:underline; | |
| 424 | + } | |
| 425 | + } | |
| 426 | + | |
| 427 | + li, .wll { | |
| 428 | + padding:10px; | |
| 429 | + &:first-child { | |
| 430 | + @include round-borders-top(4px); | |
| 431 | + border-top:none; | |
| 432 | + } | |
| 433 | + | |
| 434 | + &:last-child { | |
| 435 | + @include round-borders-bottom(4px); | |
| 436 | + border:none; | |
| 437 | + } | |
| 438 | + } | |
| 439 | + | |
| 440 | +} | ... | ... |
app/assets/stylesheets/main.scss
| 1 | 1 | @import "bootstrap"; |
| 2 | +@import "bootstrap-responsive"; | |
| 2 | 3 | |
| 3 | 4 | /** GITLAB colors **/ |
| 4 | 5 | $text_color:#222; |
| ... | ... | @@ -76,6 +77,14 @@ $hover: #FDF5D9; |
| 76 | 77 | @import "ui_mars.scss"; |
| 77 | 78 | |
| 78 | 79 | /** |
| 80 | + * Gitlab bootstrap. | |
| 81 | + * Overrides some styles of twitter bootstrap. | |
| 82 | + * Also give some common classes for gitlab app | |
| 83 | + */ | |
| 84 | +@import "gitlab_bootstrap.scss"; | |
| 85 | + | |
| 86 | + | |
| 87 | +/** | |
| 79 | 88 | * Most of application styles placed here. |
| 80 | 89 | * This file represent common UI that should not be changed between themes |
| 81 | 90 | * or project restyling like form width or user avatar class or commit title | ... | ... |
app/assets/stylesheets/tree.scss
| ... | ... | @@ -124,14 +124,17 @@ |
| 124 | 124 | |
| 125 | 125 | .tree-item { |
| 126 | 126 | .tree-item-file-name { |
| 127 | + vertical-align:middle; | |
| 127 | 128 | font-weight:bold; |
| 128 | 129 | a { |
| 129 | 130 | color:$style_color; |
| 131 | + &:hover { | |
| 132 | + color:$blue_link; | |
| 133 | + } | |
| 130 | 134 | } |
| 131 | 135 | |
| 132 | 136 | img { |
| 133 | 137 | position: relative; |
| 134 | - top: 2px; | |
| 135 | 138 | } |
| 136 | 139 | } |
| 137 | 140 | } |
| ... | ... | @@ -139,6 +142,10 @@ |
| 139 | 142 | ul.breadcrumb { |
| 140 | 143 | background:white; |
| 141 | 144 | border:none; |
| 145 | + li { | |
| 146 | + display: inline; | |
| 147 | + text-shadow: 0 1px 0 white | |
| 148 | + } | |
| 142 | 149 | |
| 143 | 150 | a { |
| 144 | 151 | color:#474D57; |
| ... | ... | @@ -149,6 +156,7 @@ |
| 149 | 156 | |
| 150 | 157 | #tree-slider { |
| 151 | 158 | @include shade; |
| 159 | + width:100%; | |
| 152 | 160 | |
| 153 | 161 | border-color:#ccc; |
| 154 | 162 | ... | ... |
app/assets/stylesheets/ui_basic.scss
| ... | ... | @@ -63,15 +63,11 @@ |
| 63 | 63 | } |
| 64 | 64 | } |
| 65 | 65 | } |
| 66 | - .wrapper { | |
| 67 | - margin:auto; | |
| 68 | - min-width:$min_app_width; | |
| 69 | - max-width:$max_app_width; | |
| 70 | - position:relative; | |
| 71 | - padding:15px 0; | |
| 72 | - | |
| 66 | + .container { | |
| 73 | 67 | .top_panel_content { |
| 74 | - margin:0 $app_padding; | |
| 68 | + margin:auto; | |
| 69 | + position:relative; | |
| 70 | + padding:15px 0; | |
| 75 | 71 | } |
| 76 | 72 | } |
| 77 | 73 | ... | ... |
app/helpers/application_helper.rb
app/views/admin/projects/show.html.haml
app/views/commits/_head.html.haml
app/views/dashboard/index.html.haml
| ... | ... | @@ -42,7 +42,7 @@ |
| 42 | 42 | %br |
| 43 | 43 | = link_to profile_path, :class => "btn" do |
| 44 | 44 | Your Profile » |
| 45 | - .span12.left= render "dashboard/projects_feed", :projects => @active_projects | |
| 45 | + .span8.left= render "dashboard/projects_feed", :projects => @active_projects | |
| 46 | 46 | - if @last_push && @last_push.valid_push? |
| 47 | 47 | .padded.prepend-top-20 |
| 48 | 48 | %h5 | ... | ... |
app/views/issues/_head.html.haml
app/views/issues/index.html.haml
| ... | ... | @@ -22,7 +22,7 @@ |
| 22 | 22 | .title |
| 23 | 23 | .row |
| 24 | 24 | .span6 |
| 25 | - %ul.pills.left | |
| 25 | + %ul.nav.nav-pills.left | |
| 26 | 26 | %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} |
| 27 | 27 | = link_to project_issues_path(@project, :f => 0) do |
| 28 | 28 | Open |
| ... | ... | @@ -36,7 +36,7 @@ |
| 36 | 36 | = link_to project_issues_path(@project, :f => 1) do |
| 37 | 37 | All |
| 38 | 38 | |
| 39 | - .span6.right | |
| 39 | + .span4.right | |
| 40 | 40 | = form_tag project_issues_path(@project), :method => :get, :class => :right do |
| 41 | 41 | = select_tag(:milestone_id, options_from_collection_for_select(@project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), :prompt => "Select milestone") |
| 42 | 42 | ... | ... |
app/views/layouts/_head_panel.html.haml
app/views/merge_requests/_form.html.haml
| 1 | -= form_for [@project, @merge_request] do |f| | |
| 1 | += form_for [@project, @merge_request], :html => { :class => "new_merge_request form-horizontal" } do |f| | |
| 2 | 2 | -if @merge_request.errors.any? |
| 3 | 3 | .alert-message.block-message.error |
| 4 | 4 | %ul |
| 5 | 5 | - @merge_request.errors.full_messages.each do |msg| |
| 6 | 6 | %li= msg |
| 7 | 7 | |
| 8 | - .clearfix | |
| 9 | - = f.label :title | |
| 10 | - .input= f.text_area :title, :class => "xxlarge", :maxlength => 255, :rows => 5 | |
| 11 | - .clearfix | |
| 12 | - = f.label :source_branch, "From" | |
| 13 | - .input | |
| 8 | + .control-group | |
| 9 | + = f.label :title, :class => "control-label" | |
| 10 | + .controls= f.text_area :title, :class => "input-xxlarge", :maxlength => 255, :rows => 5 | |
| 11 | + .control-group | |
| 12 | + = f.label :source_branch, "From", :class => "control-label" | |
| 13 | + .controls | |
| 14 | 14 | = f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") |
| 15 | 15 | .mr_source_commit |
| 16 | - .clearfix | |
| 17 | - = f.label :target_branch, "To" | |
| 18 | - .input | |
| 16 | + .control-group | |
| 17 | + = f.label :target_branch, "To", :class => "control-label" | |
| 18 | + .controls | |
| 19 | 19 | = f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") |
| 20 | 20 | .mr_target_commit |
| 21 | 21 | .clearfix |
| 22 | - = f.label :assignee_id, "Assign to" | |
| 23 | - .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px") | |
| 22 | + = f.label :assignee_id, "Assign to", :class => "control-label" | |
| 23 | + .controls= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px") | |
| 24 | 24 | |
| 25 | - .actions | |
| 26 | - = f.submit 'Save', :class => "primary btn" | |
| 25 | + .form-actions | |
| 26 | + = f.submit 'Save', :class => "btn-primary btn" | |
| 27 | 27 | - if @merge_request.new_record? |
| 28 | 28 | = link_to project_merge_requests_path(@project), :class => "btn" do |
| 29 | 29 | Cancel | ... | ... |
app/views/merge_requests/index.html.haml
app/views/merge_requests/show.html.haml
app/views/milestones/_form.html.haml
| ... | ... | @@ -5,33 +5,33 @@ |
| 5 | 5 | |
| 6 | 6 | %hr |
| 7 | 7 | |
| 8 | -= form_for [@project, @milestone] do |f| | |
| 8 | += form_for [@project, @milestone], :html => {:class => "new_milestone form-horizontal"} do |f| | |
| 9 | 9 | -if @milestone.errors.any? |
| 10 | 10 | .alert-message.block-message.error |
| 11 | 11 | %ul |
| 12 | 12 | - @milestone.errors.full_messages.each do |msg| |
| 13 | 13 | %li= msg |
| 14 | 14 | .row |
| 15 | - .span7 | |
| 16 | - .clearfix | |
| 17 | - = f.label :title, "Title" | |
| 18 | - .input | |
| 19 | - = f.text_field :title, :maxlength => 255, :class => "xlarge" | |
| 20 | - %p.hint Required | |
| 21 | - .clearfix | |
| 22 | - = f.label :description, "Description" | |
| 23 | - .input | |
| 24 | - = f.text_area :description, :maxlength => 2000, :class => "xlarge", :rows => 10 | |
| 25 | - %p.hint Markdown is enabled. | |
| 26 | - .span8 | |
| 27 | - .clearfix | |
| 28 | - = f.label :due_date, "Due Date" | |
| 15 | + .span6 | |
| 16 | + .control-group | |
| 17 | + = f.label :title, "Title", :class => "control-label" | |
| 18 | + .controls | |
| 19 | + = f.text_field :title, :maxlength => 255, :class => "input-xlarge" | |
| 20 | + %p.help-block Required | |
| 21 | + .control-group | |
| 22 | + = f.label :description, "Description", :class => "control-label" | |
| 23 | + .controls | |
| 24 | + = f.text_area :description, :maxlength => 2000, :class => "input-xlarge", :rows => 10 | |
| 25 | + %p.help-block Markdown is enabled. | |
| 26 | + .span6 | |
| 27 | + .control-group | |
| 28 | + = f.label :due_date, "Due Date", :class => "control-label" | |
| 29 | 29 | .input= f.hidden_field :due_date |
| 30 | - .input | |
| 30 | + .controls | |
| 31 | 31 | .datepicker |
| 32 | 32 | |
| 33 | 33 | |
| 34 | - .actions | |
| 34 | + .form-actions | |
| 35 | 35 | - if @milestone.new_record? |
| 36 | 36 | = f.submit 'Create milestone', :class => "primary btn" |
| 37 | 37 | -else | ... | ... |
app/views/milestones/index.html.haml
app/views/profile/design.html.haml
| 1 | 1 | = form_for @user, :url => profile_update_path, :remote => true, :method => :put do |f| |
| 2 | - %h3 Application theme | |
| 3 | - %hr | |
| 4 | - .clearfix | |
| 5 | - = label_tag do | |
| 6 | - = f.radio_button :theme_id, 1 | |
| 7 | - Default | |
| 2 | + -#%div | |
| 3 | + %h3 Application theme | |
| 4 | + %hr | |
| 5 | + .clearfix | |
| 6 | + = label_tag do | |
| 7 | + = f.radio_button :theme_id, 1 | |
| 8 | + Default | |
| 8 | 9 | |
| 9 | - = label_tag do | |
| 10 | - = f.radio_button :theme_id, 2 | |
| 11 | - Classic | |
| 12 | - %br | |
| 10 | + = label_tag do | |
| 11 | + = f.radio_button :theme_id, 2 | |
| 12 | + Classic | |
| 13 | + %br | |
| 13 | 14 | %h3 Code review |
| 14 | 15 | %hr |
| 15 | 16 | .row |
| 16 | - %label.span4{:for => "user_dark_scheme_false"} | |
| 17 | - %center | |
| 18 | - %h4 | |
| 19 | - = f.radio_button :dark_scheme, false | |
| 20 | - White code preview | |
| 21 | - = image_tag "white.png", :width => 210, :class => "styled_image" | |
| 22 | - %label.span4{:for => "user_dark_scheme_true"} | |
| 23 | - %center | |
| 24 | - %h4 | |
| 25 | - = f.radio_button :dark_scheme, true | |
| 26 | - Dark code preview | |
| 27 | - = image_tag "dark.png", :width => 210, :class => "styled_image" | |
| 17 | + %label.span3{:for => "user_dark_scheme_false"} | |
| 18 | + .thumbnail | |
| 19 | + = image_tag "white.png", :width => 260, :class => "styled_image" | |
| 20 | + .caption | |
| 21 | + %h5 | |
| 22 | + = f.radio_button :dark_scheme, false | |
| 23 | + White code preview | |
| 24 | + %label.span3{:for => "user_dark_scheme_true"} | |
| 25 | + .thumbnail | |
| 26 | + = image_tag "dark.png", :width => 260, :class => "styled_image" | |
| 27 | + .caption | |
| 28 | + %h5 | |
| 29 | + = f.radio_button :dark_scheme, true | |
| 30 | + Dark code preview | |
| 28 | 31 | |
| 29 | 32 | :javascript |
| 30 | 33 | $(function(){ | ... | ... |
app/views/profile/password.html.haml
| 1 | 1 | .row |
| 2 | - .span8 | |
| 3 | - %h3 Password | |
| 4 | - %hr | |
| 5 | - = form_for @user, :url => profile_password_path, :method => :put do |f| | |
| 6 | - .data | |
| 7 | - .alert-message.block-message.warning | |
| 8 | - %p After successfull password update you will be redirected to login page where you should login with new password | |
| 9 | - -if @user.errors.any? | |
| 10 | - .alert-message.block-message.error | |
| 11 | - %ul | |
| 12 | - - @user.errors.full_messages.each do |msg| | |
| 13 | - %li= msg | |
| 2 | + .span6 | |
| 3 | + .thumbnail | |
| 4 | + .caption | |
| 5 | + %h3 Password | |
| 6 | + %hr | |
| 7 | + = form_for @user, :url => profile_password_path, :method => :put do |f| | |
| 8 | + .data | |
| 9 | + .alert-message.block-message.warning | |
| 10 | + %p After successfull password update you will be redirected to login page where you should login with new password | |
| 11 | + -if @user.errors.any? | |
| 12 | + .alert-message.block-message.error | |
| 13 | + %ul | |
| 14 | + - @user.errors.full_messages.each do |msg| | |
| 15 | + %li= msg | |
| 14 | 16 | |
| 15 | - .clearfix | |
| 16 | - = f.label :password | |
| 17 | - .input= f.password_field :password | |
| 18 | - .clearfix | |
| 19 | - = f.label :password_confirmation | |
| 20 | - .input= f.password_field :password_confirmation | |
| 21 | - .actions | |
| 22 | - = f.submit 'Save', :class => "btn" | |
| 17 | + .clearfix | |
| 18 | + = f.label :password | |
| 19 | + .input= f.password_field :password | |
| 20 | + .clearfix | |
| 21 | + = f.label :password_confirmation | |
| 22 | + .input= f.password_field :password_confirmation | |
| 23 | + %hr | |
| 24 | + = f.submit 'Save', :class => "btn" | |
| 23 | 25 | |
| 24 | - .span7.right | |
| 25 | - %h3 | |
| 26 | - Private token | |
| 27 | - %span.cred.right | |
| 28 | - keep it in secret! | |
| 29 | - %hr | |
| 30 | - = form_for @user, :url => profile_reset_private_token_path, :method => :put do |f| | |
| 31 | - .data | |
| 32 | - .alert-message.block-message.warning | |
| 33 | - %p Private token used to access application resources without authentication. | |
| 26 | + .span6.right | |
| 27 | + .thumbnail | |
| 28 | + .caption | |
| 29 | + %h3 | |
| 30 | + Private token | |
| 31 | + %span.cred.right | |
| 32 | + keep it in secret! | |
| 33 | + %hr | |
| 34 | + = form_for @user, :url => profile_reset_private_token_path, :method => :put do |f| | |
| 35 | + .data | |
| 36 | + .alert-message.block-message.warning | |
| 37 | + %p Private token used to access application resources without authentication. | |
| 38 | + %hr | |
| 39 | + %p * required for rss feed | |
| 40 | + %p.cgray | |
| 41 | + - if current_user.private_token | |
| 42 | + = text_field_tag "token", current_user.private_token | |
| 43 | + - else | |
| 44 | + You don`t have one yet. Click generate to fix it. | |
| 34 | 45 | %hr |
| 35 | - %p * required for rss feed | |
| 36 | - %p.cgray | |
| 37 | - - if current_user.private_token | |
| 38 | - = text_field_tag "token", current_user.private_token | |
| 39 | - - else | |
| 40 | - You don`t have one yet. Click generate to fix it. | |
| 41 | - .actions | |
| 42 | - - if current_user.private_token | |
| 43 | - = f.submit 'Reset', :confirm => "Are you sure?", :class => "btn" | |
| 44 | - - else | |
| 45 | - = f.submit 'Generate', :class => "btn" | |
| 46 | + - if current_user.private_token | |
| 47 | + = f.submit 'Reset', :confirm => "Are you sure?", :class => "btn" | |
| 48 | + - else | |
| 49 | + = f.submit 'Generate', :class => "btn" | |
| 46 | 50 | ... | ... |
app/views/profile/show.html.haml
| 1 | 1 | .row |
| 2 | - .span10 | |
| 2 | + .span8 | |
| 3 | 3 | .profile_avatar_holder |
| 4 | 4 | = image_tag gravatar_icon(@user.email, 90), :class => "styled_image" |
| 5 | 5 | %h3 |
| ... | ... | @@ -8,7 +8,7 @@ |
| 8 | 8 | %small |
| 9 | 9 | = @user.email |
| 10 | 10 | |
| 11 | - .span6.right | |
| 11 | + .span4.right | |
| 12 | 12 | %div |
| 13 | 13 | %div |
| 14 | 14 | %h5.cgray |
| ... | ... | @@ -23,45 +23,45 @@ |
| 23 | 23 | %span= current_user.keys.count |
| 24 | 24 | %hr |
| 25 | 25 | |
| 26 | -= form_for @user, :url => profile_update_path, :method => :put do |f| | |
| 26 | += form_for @user, :url => profile_update_path, :method => :put, :html => { :class => "edit_user form-horizontal" } do |f| | |
| 27 | 27 | -if @user.errors.any? |
| 28 | 28 | %div.alert-message.block-message.error |
| 29 | 29 | %ul |
| 30 | 30 | - @user.errors.full_messages.each do |msg| |
| 31 | 31 | %li= msg |
| 32 | 32 | .row |
| 33 | - .span9 | |
| 34 | - .clearfix | |
| 35 | - = f.label :name | |
| 36 | - .input | |
| 37 | - = f.text_field :name, :class => "xlarge" | |
| 33 | + .span7 | |
| 34 | + .control-group | |
| 35 | + = f.label :name, :class => "control-label" | |
| 36 | + .controls | |
| 37 | + = f.text_field :name, :class => "input-xlarge" | |
| 38 | 38 | %span.help-block Enter youre name, so people you know can recognize you. |
| 39 | - .clearfix | |
| 40 | - = f.label :email | |
| 41 | - .input | |
| 42 | - = f.text_field :email, :class => "xlarge" | |
| 39 | + .control-group | |
| 40 | + = f.label :email, :class => "control-label" | |
| 41 | + .controls | |
| 42 | + = f.text_field :email, :class => "input-xlarge" | |
| 43 | 43 | %span.help-block We also use email for avatar detection |
| 44 | - .clearfix | |
| 45 | - = f.label :skype | |
| 46 | - .input= f.text_field :skype, :class => "xlarge" | |
| 47 | - .clearfix | |
| 48 | - = f.label :linkedin | |
| 49 | - .input= f.text_field :linkedin, :class => "xlarge" | |
| 50 | - .clearfix | |
| 51 | - = f.label :twitter | |
| 52 | - .input= f.text_field :twitter, :class => "xlarge" | |
| 53 | - .clearfix | |
| 54 | - = f.label :bio | |
| 55 | - .input | |
| 56 | - = f.text_area :bio, :rows => 6, :class => "xlarge", :maxlength => 250 | |
| 44 | + .control-group | |
| 45 | + = f.label :skype, :class => "control-label" | |
| 46 | + .controls= f.text_field :skype, :class => "input-xlarge" | |
| 47 | + .control-group | |
| 48 | + = f.label :linkedin, :class => "control-label" | |
| 49 | + .controls= f.text_field :linkedin, :class => "input-xlarge" | |
| 50 | + .control-group | |
| 51 | + = f.label :twitter, :class => "control-label" | |
| 52 | + .controls= f.text_field :twitter, :class => "input-xlarge" | |
| 53 | + .control-group | |
| 54 | + = f.label :bio, :class => "control-label" | |
| 55 | + .controls | |
| 56 | + = f.text_area :bio, :rows => 6, :class => "input-xlarge", :maxlength => 250 | |
| 57 | 57 | %span.help-block About yourself in fewer than 250 characters. |
| 58 | - .span7.right | |
| 58 | + .span5.right | |
| 59 | 59 | %p.alert-message.block-message |
| 60 | 60 | %strong Tip: |
| 61 | 61 | You can change your avatar at gravatar.com |
| 62 | 62 | |
| 63 | - .actions | |
| 64 | - = f.submit 'Save', :class => "primary btn" | |
| 63 | + .form-actions | |
| 64 | + = f.submit 'Save', :class => "btn-primary btn" | |
| 65 | 65 | |
| 66 | 66 | -#= link_to "New project", new_project_path, :class => "btn small padded" |
| 67 | 67 | -#= link_to "New public key", new_key_path, :class => "btn small" | ... | ... |
app/views/projects/_project_head.html.haml
app/views/projects/index.html.haml
app/views/projects/show.html.haml
| 1 | 1 | = render "project_head" |
| 2 | -.main_box | |
| 3 | - .top_box_content | |
| 4 | - %h3 | |
| 5 | - = @project.name | |
| 6 | - %span.right | |
| 2 | + | |
| 3 | +.alert.alert-info | |
| 4 | + .row | |
| 5 | + -#.span2 | |
| 6 | + .back_link | |
| 7 | + = link_to projects_path do | |
| 8 | + ← To projects list | |
| 9 | + .span7 | |
| 10 | + .form-horizontal | |
| 11 | + .input-prepend | |
| 12 | + %span.add-on git clone | |
| 13 | + = text_field_tag :project_clone, @project.url_to_repo, :class => "one_click_select span5" | |
| 14 | + .span4.right | |
| 15 | + .right | |
| 7 | 16 | - if can? current_user, :download_code, @project |
| 8 | 17 | = link_to "Download", archive_project_repository_path(@project), :class => "btn small padded" |
| 9 | 18 | - if @project.merge_requests_enabled && can?(current_user, :write_merge_request, @project) |
| ... | ... | @@ -12,18 +21,7 @@ |
| 12 | 21 | - if @project.issues_enabled && can?(current_user, :write_issue, @project) |
| 13 | 22 | = link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do |
| 14 | 23 | Issue |
| 15 | - .back_link | |
| 16 | - = link_to projects_path do | |
| 17 | - ← To projects list | |
| 18 | - .middle_box_content | |
| 19 | - .input | |
| 20 | - .input-prepend | |
| 21 | - %span.add-on git clone | |
| 22 | - = text_field_tag :project_clone, @project.url_to_repo, :class => "xlarge one_click_select git_clone_url" | |
| 23 | 24 | |
| 24 | - - if @project.description.present? | |
| 25 | - .bottom_box_content | |
| 26 | - .markdown= markdown @project.description | |
| 27 | 25 | - unless @events.blank? |
| 28 | 26 | %br |
| 29 | 27 | %h5.cgray | ... | ... |
app/views/projects/team.html.haml
| 1 | 1 | = render "project_head" |
| 2 | 2 | |
| 3 | 3 | - if can? current_user, :admin_team_member, @project |
| 4 | - .alert-message.block-message | |
| 4 | + .alert.alert-info | |
| 5 | 5 | = link_to new_project_team_member_path(@project), :class => "btn small right", :title => "New Team Member" do |
| 6 | 6 | New Team Member |
| 7 | - %p Read more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"} | |
| 7 | + %p | |
| 8 | + Read more about project permissions | |
| 9 | + %strong= link_to "here", help_permissions_path, :class => "vlink" | |
| 8 | 10 | %p To open team member profile - click on avatar. |
| 9 | 11 | |
| 10 | 12 | ... | ... |
app/views/protected_branches/index.html.haml
| 1 | 1 | = render "repositories/branches_head" |
| 2 | 2 | |
| 3 | -.alert-message.block-message | |
| 3 | +.alert | |
| 4 | 4 | %p Protected branches designed to prevent push for all except #{link_to "masters", help_permissions_path, :class => "vlink"}. |
| 5 | 5 | %p This ability allows: |
| 6 | 6 | %ul |
| ... | ... | @@ -11,7 +11,7 @@ |
| 11 | 11 | |
| 12 | 12 | |
| 13 | 13 | - unless @branches.empty? |
| 14 | - %table.zebra-striped | |
| 14 | + %table.table-striped | |
| 15 | 15 | %thead |
| 16 | 16 | %tr |
| 17 | 17 | %th Name | ... | ... |
app/views/refs/_tree_file.html.haml
| ... | ... | @@ -4,14 +4,14 @@ |
| 4 | 4 | .row |
| 5 | 5 | .span1.file_icon= image_tag(file.image? ? "file_img.png" : "file_txt.png") |
| 6 | 6 | .span2.mode_text= file.mode |
| 7 | - .span7.file_name= name | |
| 8 | - .span4.right | |
| 7 | + .span5.file_name= name | |
| 8 | + .span3.right | |
| 9 | 9 | = link_to "raw", blob_project_ref_path(@project, @ref, :path => params[:path]), :class => "right", :target => "_blank" |
| 10 | 10 | = link_to "history", project_commits_path(@project, :path => params[:path], :ref => @ref), :class => "right", :style => "margin-right:10px;" |
| 11 | 11 | - if file.text? |
| 12 | 12 | .view_file_content |
| 13 | 13 | - unless file.empty? |
| 14 | - %div{:class => current_user.dark_scheme ? "black" : ""} | |
| 14 | + %div{:class => current_user.dark_scheme ? "black" : "white"} | |
| 15 | 15 | :erb |
| 16 | 16 | <%= raw file.colorize %> |
| 17 | 17 | - else | ... | ... |
app/views/refs/tree.html.haml
app/views/repositories/_branches_head.html.haml
app/views/repositories/branches.html.haml
app/views/repositories/tags.html.haml
app/views/search/show.html.haml
| ... | ... | @@ -2,8 +2,8 @@ |
| 2 | 2 | .padded |
| 3 | 3 | = label_tag :search, "Looking for" |
| 4 | 4 | .input |
| 5 | - = text_field_tag :search, params[:search],:placeholder => "issue 143", :class => "xxlarge" | |
| 6 | - = submit_tag 'Search', :class => "btn primary" | |
| 5 | + = text_field_tag :search, params[:search],:placeholder => "issue 143", :class => "input-xxlarge" | |
| 6 | + = submit_tag 'Search', :class => "btn btn-primary" | |
| 7 | 7 | - if params[:search].present? |
| 8 | 8 | %br |
| 9 | 9 | %h3 Search results | ... | ... |
app/views/team_members/_show.html.haml
| ... | ... | @@ -11,5 +11,5 @@ |
| 11 | 11 | .span3 |
| 12 | 12 | = form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f| |
| 13 | 13 | = f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, :class => "medium project-access-select", :disabled => !allow_admin |
| 14 | - - if @project.owner == user | |
| 15 | - %span.label Project Owner | |
| 14 | + - if @project.owner == user | |
| 15 | + %span.label Project Owner | ... | ... |
app/views/team_members/show.html.haml
| ... | ... | @@ -15,7 +15,7 @@ |
| 15 | 15 | ← To team list |
| 16 | 16 | %br |
| 17 | 17 | .row |
| 18 | - .span8 | |
| 18 | + .span6 | |
| 19 | 19 | %table.no-borders |
| 20 | 20 | %tr |
| 21 | 21 | %td Email |
| ... | ... | @@ -35,7 +35,7 @@ |
| 35 | 35 | %tr |
| 36 | 36 | %td Bio |
| 37 | 37 | %td= user.bio |
| 38 | - .span8 | |
| 38 | + .span6 | |
| 39 | 39 | %table.no-borders |
| 40 | 40 | %tr |
| 41 | 41 | %td Member since |
| ... | ... | @@ -50,8 +50,9 @@ |
| 50 | 50 | %hr |
| 51 | 51 | = render user.recent_events.limit(3) |
| 52 | 52 | - if can? current_user, :admin_project, @project |
| 53 | - .actions | |
| 54 | - = link_to 'Remove from team', project_team_member_path(:project_id => @project, :id => @team_member.id), :confirm => 'Are you sure?', :method => :delete, :class => "btn danger" | |
| 53 | + .form-horizontal | |
| 54 | + .form-actions | |
| 55 | + = link_to 'Remove from team', project_team_member_path(:project_id => @project, :id => @team_member.id), :confirm => 'Are you sure?', :method => :delete, :class => "btn btn-danger" | |
| 55 | 56 | |
| 56 | 57 | :javascript |
| 57 | 58 | $(function(){ | ... | ... |
db/schema.rb
| ... | ... | @@ -30,8 +30,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 30 | 30 | t.integer "assignee_id" |
| 31 | 31 | t.integer "author_id" |
| 32 | 32 | t.integer "project_id" |
| 33 | - t.datetime "created_at", :null => false | |
| 34 | - t.datetime "updated_at", :null => false | |
| 33 | + t.datetime "created_at" | |
| 34 | + t.datetime "updated_at" | |
| 35 | 35 | t.boolean "closed", :default => false, :null => false |
| 36 | 36 | t.integer "position", :default => 0 |
| 37 | 37 | t.boolean "critical", :default => false, :null => false |
| ... | ... | @@ -44,8 +44,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 44 | 44 | |
| 45 | 45 | create_table "keys", :force => true do |t| |
| 46 | 46 | t.integer "user_id" |
| 47 | - t.datetime "created_at", :null => false | |
| 48 | - t.datetime "updated_at", :null => false | |
| 47 | + t.datetime "created_at" | |
| 48 | + t.datetime "updated_at" | |
| 49 | 49 | t.text "key" |
| 50 | 50 | t.string "title" |
| 51 | 51 | t.string "identifier" |
| ... | ... | @@ -60,10 +60,10 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 60 | 60 | t.integer "assignee_id" |
| 61 | 61 | t.string "title" |
| 62 | 62 | t.boolean "closed", :default => false, :null => false |
| 63 | - t.datetime "created_at", :null => false | |
| 64 | - t.datetime "updated_at", :null => false | |
| 65 | - t.text "st_commits", :limit => 2147483647 | |
| 66 | - t.text "st_diffs", :limit => 2147483647 | |
| 63 | + t.datetime "created_at" | |
| 64 | + t.datetime "updated_at" | |
| 65 | + t.text "st_commits", :limit => 4294967295 | |
| 66 | + t.text "st_diffs", :limit => 4294967295 | |
| 67 | 67 | t.boolean "merged", :default => false, :null => false |
| 68 | 68 | end |
| 69 | 69 | |
| ... | ... | @@ -84,8 +84,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 84 | 84 | t.string "noteable_id" |
| 85 | 85 | t.string "noteable_type" |
| 86 | 86 | t.integer "author_id" |
| 87 | - t.datetime "created_at", :null => false | |
| 88 | - t.datetime "updated_at", :null => false | |
| 87 | + t.datetime "created_at" | |
| 88 | + t.datetime "updated_at" | |
| 89 | 89 | t.integer "project_id" |
| 90 | 90 | t.string "attachment" |
| 91 | 91 | t.string "line_code" |
| ... | ... | @@ -98,8 +98,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 98 | 98 | t.string "name" |
| 99 | 99 | t.string "path" |
| 100 | 100 | t.text "description" |
| 101 | - t.datetime "created_at", :null => false | |
| 102 | - t.datetime "updated_at", :null => false | |
| 101 | + t.datetime "created_at" | |
| 102 | + t.datetime "updated_at" | |
| 103 | 103 | t.boolean "private_flag", :default => true, :null => false |
| 104 | 104 | t.string "code" |
| 105 | 105 | t.integer "owner_id" |
| ... | ... | @@ -122,8 +122,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 122 | 122 | t.text "content" |
| 123 | 123 | t.integer "author_id", :null => false |
| 124 | 124 | t.integer "project_id", :null => false |
| 125 | - t.datetime "created_at", :null => false | |
| 126 | - t.datetime "updated_at", :null => false | |
| 125 | + t.datetime "created_at" | |
| 126 | + t.datetime "updated_at" | |
| 127 | 127 | t.string "file_name" |
| 128 | 128 | t.datetime "expires_at" |
| 129 | 129 | end |
| ... | ... | @@ -156,8 +156,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 156 | 156 | t.datetime "last_sign_in_at" |
| 157 | 157 | t.string "current_sign_in_ip" |
| 158 | 158 | t.string "last_sign_in_ip" |
| 159 | - t.datetime "created_at", :null => false | |
| 160 | - t.datetime "updated_at", :null => false | |
| 159 | + t.datetime "created_at" | |
| 160 | + t.datetime "updated_at" | |
| 161 | 161 | t.string "name" |
| 162 | 162 | t.boolean "admin", :default => false, :null => false |
| 163 | 163 | t.integer "projects_limit", :default => 10 |
| ... | ... | @@ -176,16 +176,16 @@ ActiveRecord::Schema.define(:version => 20120408181910) do |
| 176 | 176 | create_table "users_projects", :force => true do |t| |
| 177 | 177 | t.integer "user_id", :null => false |
| 178 | 178 | t.integer "project_id", :null => false |
| 179 | - t.datetime "created_at", :null => false | |
| 180 | - t.datetime "updated_at", :null => false | |
| 179 | + t.datetime "created_at" | |
| 180 | + t.datetime "updated_at" | |
| 181 | 181 | t.integer "project_access", :default => 0, :null => false |
| 182 | 182 | end |
| 183 | 183 | |
| 184 | 184 | create_table "web_hooks", :force => true do |t| |
| 185 | 185 | t.string "url" |
| 186 | 186 | t.integer "project_id" |
| 187 | - t.datetime "created_at", :null => false | |
| 188 | - t.datetime "updated_at", :null => false | |
| 187 | + t.datetime "created_at" | |
| 188 | + t.datetime "updated_at" | |
| 189 | 189 | end |
| 190 | 190 | |
| 191 | 191 | create_table "wikis", :force => true do |t| | ... | ... |