Commit 66399d558da45fb9cd3ea972a47a4f7bb12bfc8d
Exists in
master
and in
4 other branches
Merge branch 'master' into hooray_apostrophes
Showing
18 changed files
with
335 additions
and
280 deletions
Show diff stats
app/assets/stylesheets/common.scss
| ... | ... | @@ -249,7 +249,7 @@ ul.bordered-list li:last-child { border:none } |
| 249 | 249 | li.commit { |
| 250 | 250 | .avatar { |
| 251 | 251 | width:24px; |
| 252 | - top:-3px; | |
| 252 | + top:-5px; | |
| 253 | 253 | margin-right:10px; |
| 254 | 254 | margin-left:10px; |
| 255 | 255 | } |
| ... | ... | @@ -305,12 +305,7 @@ p.time { |
| 305 | 305 | } |
| 306 | 306 | |
| 307 | 307 | .styled_image { |
| 308 | - -webkit-border-radius: 4px; | |
| 309 | - -moz-border-radius: 4px; | |
| 310 | - border-radius: 4px; | |
| 311 | - -moz-box-shadow: 0 0 5px #888; | |
| 312 | - -webkit-box-shadow: 0 0 5px#888; | |
| 313 | - box-shadow: 0 0 5px #888; | |
| 308 | + border:2px solid #ddd; | |
| 314 | 309 | } |
| 315 | 310 | |
| 316 | 311 | .event_feed { |
| ... | ... | @@ -729,3 +724,14 @@ li.note { |
| 729 | 724 | } |
| 730 | 725 | } |
| 731 | 726 | } |
| 727 | + | |
| 728 | +.git_error_tips { | |
| 729 | + @extend .span6; | |
| 730 | + text-align:left; | |
| 731 | + margin-top:40px; | |
| 732 | + pre { | |
| 733 | + background:white; | |
| 734 | + border:none; | |
| 735 | + font-size: 12px; | |
| 736 | + } | |
| 737 | +} | ... | ... |
app/assets/stylesheets/gitlab_bootstrap.scss
| 1 | -body { | |
| 1 | +body { | |
| 2 | 2 | margin-bottom:20px; |
| 3 | 3 | } |
| 4 | 4 | a { |
| 5 | 5 | outline: none; |
| 6 | 6 | color: $link_color; |
| 7 | - &:hover { | |
| 8 | - text-decoration:none; | |
| 7 | + &:hover { | |
| 8 | + text-decoration:none; | |
| 9 | 9 | color: $blue_link; |
| 10 | 10 | } |
| 11 | 11 | |
| 12 | - &.btn { | |
| 12 | + &.btn { | |
| 13 | 13 | color: $style_color; |
| 14 | 14 | } |
| 15 | 15 | |
| 16 | - &.dark { | |
| 16 | + &.dark { | |
| 17 | 17 | color: $style_color; |
| 18 | 18 | } |
| 19 | 19 | |
| 20 | - &.lined { | |
| 21 | - text-decoration:underline; | |
| 20 | + &.lined { | |
| 21 | + text-decoration:underline; | |
| 22 | 22 | &:hover { text-decoration:underline; } |
| 23 | 23 | } |
| 24 | 24 | |
| 25 | - &.gray { | |
| 25 | + &.gray { | |
| 26 | 26 | color:gray; |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | - &.supp_diff_link { | |
| 29 | + &.supp_diff_link { | |
| 30 | 30 | text-align:center; |
| 31 | 31 | padding:20px 0; |
| 32 | 32 | background:#f1f1f1; |
| ... | ... | @@ -39,24 +39,24 @@ a { |
| 39 | 39 | } |
| 40 | 40 | } |
| 41 | 41 | |
| 42 | -.neib { | |
| 42 | +.neib { | |
| 43 | 43 | margin-right:10px; |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | -.alert-message { | |
| 46 | +.alert-message { | |
| 47 | 47 | @extend .alert; |
| 48 | 48 | |
| 49 | - &.success { | |
| 49 | + &.success { | |
| 50 | 50 | @extend .alert-success; |
| 51 | 51 | } |
| 52 | 52 | |
| 53 | - &.error { | |
| 53 | + &.error { | |
| 54 | 54 | @extend .alert-error; |
| 55 | 55 | } |
| 56 | 56 | } |
| 57 | 57 | |
| 58 | -.alert { | |
| 59 | - &.alert-well { | |
| 58 | +.alert { | |
| 59 | + &.alert-well { | |
| 60 | 60 | background:#ddd; |
| 61 | 61 | border:1px solid #ccc; |
| 62 | 62 | background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #ddd), to(#dfdfdf)); |
| ... | ... | @@ -71,12 +71,12 @@ h3, h4, h5, h6 { |
| 71 | 71 | line-height: 36px; |
| 72 | 72 | } |
| 73 | 73 | |
| 74 | -h5 { | |
| 74 | +h5 { | |
| 75 | 75 | font-size:14px; |
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | |
| 79 | -table { | |
| 79 | +table { | |
| 80 | 80 | width:100%; |
| 81 | 81 | th { |
| 82 | 82 | padding-top: 9px; |
| ... | ... | @@ -97,12 +97,12 @@ table { |
| 97 | 97 | border-radius: 4px; |
| 98 | 98 | } |
| 99 | 99 | |
| 100 | - &.zebra-striped { | |
| 100 | + &.zebra-striped { | |
| 101 | 101 | @extend .table-striped; |
| 102 | 102 | } |
| 103 | 103 | } |
| 104 | 104 | |
| 105 | -.btn { | |
| 105 | +.btn { | |
| 106 | 106 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), color-stop(25%, #f1f1f1), to(#e6e6e6)); |
| 107 | 107 | background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); |
| 108 | 108 | background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1 25%, #e6e6e6); |
| ... | ... | @@ -110,63 +110,63 @@ table { |
| 110 | 110 | background-image: -o-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); |
| 111 | 111 | background-image: linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); |
| 112 | 112 | |
| 113 | - &:hover { | |
| 113 | + &:hover { | |
| 114 | 114 | } |
| 115 | 115 | |
| 116 | - &.btn-primary { | |
| 116 | + &.btn-primary { | |
| 117 | 117 | background:$link_color; |
| 118 | 118 | border-color: #2A79A3; |
| 119 | - &:hover { | |
| 119 | + &:hover { | |
| 120 | 120 | background:$blue_link; |
| 121 | 121 | } |
| 122 | 122 | } |
| 123 | - &.primary { | |
| 123 | + &.primary { | |
| 124 | 124 | @extend .btn-primary; |
| 125 | 125 | } |
| 126 | 126 | |
| 127 | - &.success { | |
| 127 | + &.success { | |
| 128 | 128 | color: #fff; |
| 129 | 129 | text-shadow: 0 0 1px #111; |
| 130 | 130 | background: #5bb75b;; |
| 131 | 131 | font-weight: bold; |
| 132 | 132 | |
| 133 | - &:hover { | |
| 133 | + &:hover { | |
| 134 | 134 | background-color: #51a351; |
| 135 | 135 | color: #fff; |
| 136 | 136 | } |
| 137 | 137 | } |
| 138 | 138 | |
| 139 | 139 | &.danger, |
| 140 | - &.btn-danger { | |
| 140 | + &.btn-danger { | |
| 141 | 141 | color:#fff; |
| 142 | 142 | background: #DA4E49; |
| 143 | 143 | border-color: #BD362F; |
| 144 | 144 | |
| 145 | - &:hover { | |
| 145 | + &:hover { | |
| 146 | 146 | color:#fff; |
| 147 | 147 | background: #EE4E49; |
| 148 | 148 | } |
| 149 | 149 | } |
| 150 | 150 | |
| 151 | - &.danger { | |
| 151 | + &.danger { | |
| 152 | 152 | @extend .btn-danger; |
| 153 | 153 | } |
| 154 | 154 | |
| 155 | - &.small { | |
| 155 | + &.small { | |
| 156 | 156 | @extend .btn-small; |
| 157 | 157 | } |
| 158 | 158 | |
| 159 | - &.active { | |
| 159 | + &.active { | |
| 160 | 160 | border-color:#aaa; |
| 161 | 161 | background-color:#ccc; |
| 162 | 162 | } |
| 163 | 163 | } |
| 164 | 164 | |
| 165 | -a:focus { | |
| 166 | - outline: none; | |
| 165 | +a:focus { | |
| 166 | + outline: none; | |
| 167 | 167 | } |
| 168 | 168 | |
| 169 | -.nav-pills a:hover { | |
| 169 | +.nav-pills a:hover { | |
| 170 | 170 | background-color:#888; |
| 171 | 171 | } |
| 172 | 172 | |
| ... | ... | @@ -174,20 +174,20 @@ a:focus { |
| 174 | 174 | background-color: $style_color; |
| 175 | 175 | } |
| 176 | 176 | |
| 177 | -.label { | |
| 177 | +.label { | |
| 178 | 178 | background-color: #474D57; |
| 179 | - &.label-important { | |
| 179 | + &.label-important { | |
| 180 | 180 | background-color: #B94A48; |
| 181 | 181 | } |
| 182 | 182 | |
| 183 | - &.label-issue { | |
| 183 | + &.label-issue { | |
| 184 | 184 | background-color: #eee; |
| 185 | 185 | border: 1px solid #ccc; |
| 186 | 186 | padding:4px 6px; |
| 187 | 187 | color:#444; |
| 188 | 188 | text-shadow:0 0 1px #fff; |
| 189 | 189 | |
| 190 | - &.grouped { | |
| 190 | + &.grouped { | |
| 191 | 191 | float: left; |
| 192 | 192 | margin-right: 6px; |
| 193 | 193 | padding: 6px; |
| ... | ... | @@ -199,7 +199,7 @@ a:focus { |
| 199 | 199 | color:$style_color; |
| 200 | 200 | } |
| 201 | 201 | |
| 202 | -.nav-tabs > .active > a { | |
| 202 | +.nav-tabs > .active > a { | |
| 203 | 203 | font-weight:bold; |
| 204 | 204 | } |
| 205 | 205 | |
| ... | ... | @@ -248,39 +248,39 @@ a:focus { |
| 248 | 248 | margin-top:20px; |
| 249 | 249 | } |
| 250 | 250 | |
| 251 | -.padded { | |
| 251 | +.padded { | |
| 252 | 252 | padding:20px; |
| 253 | 253 | } |
| 254 | 254 | |
| 255 | -.ipadded { | |
| 255 | +.ipadded { | |
| 256 | 256 | padding:20px !important; |
| 257 | 257 | } |
| 258 | -.lborder { | |
| 258 | +.lborder { | |
| 259 | 259 | border-left:1px solid #eee; |
| 260 | 260 | } |
| 261 | 261 | |
| 262 | -.borders { | |
| 262 | +.borders { | |
| 263 | 263 | border: 1px solid #ccc; |
| 264 | 264 | @include shade; |
| 265 | 265 | } |
| 266 | -.no-borders { | |
| 266 | +.no-borders { | |
| 267 | 267 | border:none; |
| 268 | 268 | } |
| 269 | -table.no-borders { | |
| 269 | +table.no-borders { | |
| 270 | 270 | border:none; |
| 271 | 271 | tr, td { border:none } |
| 272 | 272 | } |
| 273 | -.no-padding { | |
| 273 | +.no-padding { | |
| 274 | 274 | padding:0 !important; |
| 275 | 275 | } |
| 276 | -.underlined { | |
| 276 | +.underlined { | |
| 277 | 277 | border-bottom: 1px solid $border_color; |
| 278 | 278 | } |
| 279 | -.vlink { | |
| 279 | +.vlink { | |
| 280 | 280 | color: $link_color !important; |
| 281 | 281 | } |
| 282 | 282 | |
| 283 | -.pretty_label { | |
| 283 | +.pretty_label { | |
| 284 | 284 | @include round-borders-all(4px); |
| 285 | 285 | padding:2px 4px; |
| 286 | 286 | background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); |
| ... | ... | @@ -290,7 +290,7 @@ table.no-borders { |
| 290 | 290 | color: #777; |
| 291 | 291 | border: 1px solid #DEDFE1; |
| 292 | 292 | |
| 293 | - &.branch { | |
| 293 | + &.branch { | |
| 294 | 294 | border:none; |
| 295 | 295 | font-size:13px; |
| 296 | 296 | background: #474D57; |
| ... | ... | @@ -300,73 +300,71 @@ table.no-borders { |
| 300 | 300 | } |
| 301 | 301 | } |
| 302 | 302 | |
| 303 | -.event_label { | |
| 303 | +.event_label { | |
| 304 | 304 | @extend .label; |
| 305 | 305 | background-color: #999; |
| 306 | 306 | |
| 307 | - &.pushed { | |
| 307 | + &.pushed { | |
| 308 | 308 | background-color: #3A87AD; |
| 309 | 309 | } |
| 310 | 310 | |
| 311 | - &.opened { | |
| 311 | + &.opened { | |
| 312 | 312 | background-color: #468847; |
| 313 | 313 | } |
| 314 | 314 | |
| 315 | - &.closed { | |
| 315 | + &.closed { | |
| 316 | 316 | background-color: #B94A48; |
| 317 | 317 | } |
| 318 | 318 | |
| 319 | - &.merged { | |
| 319 | + &.merged { | |
| 320 | 320 | background-color: #2A2; |
| 321 | 321 | } |
| 322 | 322 | } |
| 323 | 323 | |
| 324 | -img.avatar { | |
| 324 | +img.avatar { | |
| 325 | 325 | float:left; |
| 326 | 326 | margin-right:15px; |
| 327 | 327 | width:40px; |
| 328 | - -webkit-border-radius: 4px; | |
| 329 | - -moz-border-radius: 4px; | |
| 330 | - border-radius: 4px; | |
| 328 | + border:2px solid #ddd; | |
| 331 | 329 | |
| 332 | - &.s16 { | |
| 330 | + &.s16 { | |
| 333 | 331 | width:16px; |
| 334 | 332 | } |
| 335 | - &.s24 { | |
| 333 | + &.s24 { | |
| 336 | 334 | width:24px; |
| 337 | 335 | } |
| 338 | - &.s32 { | |
| 336 | + &.s32 { | |
| 339 | 337 | width:32px; |
| 340 | 338 | } |
| 341 | 339 | } |
| 342 | 340 | |
| 343 | -img.lil_av { | |
| 341 | +img.lil_av { | |
| 344 | 342 | padding-left: 4px; |
| 345 | 343 | padding-right:3px; |
| 346 | 344 | } |
| 347 | 345 | |
| 348 | -form { | |
| 346 | +form { | |
| 349 | 347 | @extend .form-horizontal; |
| 350 | 348 | |
| 351 | - .actions { | |
| 349 | + .actions { | |
| 352 | 350 | @extend .form-actions; |
| 353 | 351 | } |
| 354 | 352 | |
| 355 | - .clearfix { | |
| 353 | + .clearfix { | |
| 356 | 354 | @extend .control-group; |
| 357 | 355 | } |
| 358 | 356 | |
| 359 | - .input { | |
| 357 | + .input { | |
| 360 | 358 | @extend .controls; |
| 361 | 359 | } |
| 362 | 360 | |
| 363 | - label { | |
| 361 | + label { | |
| 364 | 362 | @extend .control-label; |
| 365 | 363 | } |
| 366 | - .xlarge { | |
| 364 | + .xlarge { | |
| 367 | 365 | @extend .input-xlarge; |
| 368 | 366 | } |
| 369 | - .xxlarge { | |
| 367 | + .xxlarge { | |
| 370 | 368 | @extend .input-xxlarge; |
| 371 | 369 | } |
| 372 | 370 | } |
| ... | ... | @@ -375,25 +373,25 @@ form { |
| 375 | 373 | * List li block element #1 |
| 376 | 374 | * |
| 377 | 375 | */ |
| 378 | -.wll { | |
| 376 | +.wll { | |
| 379 | 377 | background-color: #FFF; |
| 380 | 378 | padding: 10px 5px; |
| 381 | 379 | min-height: 20px; |
| 382 | 380 | border-bottom: 1px solid #eee; |
| 383 | 381 | border-bottom: 1px solid rgba(0, 0, 0, 0.05); |
| 384 | - &.smoke { | |
| 382 | + &.smoke { | |
| 385 | 383 | background-color:#f5f5f5; |
| 386 | 384 | } |
| 387 | - &:hover { | |
| 385 | + &:hover { | |
| 388 | 386 | background:$hover; |
| 389 | 387 | } |
| 390 | 388 | &:last-child { border:none } |
| 391 | 389 | p { padding-top:5px; margin:0; color:$style_color;} |
| 392 | 390 | .author { color: #999; } |
| 393 | - p { | |
| 391 | + p { | |
| 394 | 392 | color:#222; |
| 395 | 393 | margin-bottom: 0; |
| 396 | - img { | |
| 394 | + img { | |
| 397 | 395 | position:relative; |
| 398 | 396 | top:3px; |
| 399 | 397 | } |
| ... | ... | @@ -405,7 +403,7 @@ form { |
| 405 | 403 | * Block element #2 |
| 406 | 404 | * |
| 407 | 405 | */ |
| 408 | -.entry { | |
| 406 | +.entry { | |
| 409 | 407 | position: relative; |
| 410 | 408 | padding: 7px 15px; |
| 411 | 409 | margin-bottom: 18px; |
| ... | ... | @@ -427,10 +425,10 @@ form { |
| 427 | 425 | border: 1px solid #ccc; |
| 428 | 426 | |
| 429 | 427 | |
| 430 | - p { | |
| 428 | + p { | |
| 431 | 429 | color:$style_color; |
| 432 | 430 | margin-bottom: 0; |
| 433 | - img { | |
| 431 | + img { | |
| 434 | 432 | position:relative; |
| 435 | 433 | top:3px; |
| 436 | 434 | } |
| ... | ... | @@ -442,18 +440,18 @@ form { |
| 442 | 440 | * Big UI Block for show page content |
| 443 | 441 | * |
| 444 | 442 | */ |
| 445 | -.ui-box { | |
| 443 | +.ui-box { | |
| 446 | 444 | background:#F9F9F9; |
| 447 | 445 | margin-bottom: 25px; |
| 448 | 446 | @include round-borders-all(4px); |
| 449 | 447 | border-color: #CCC; |
| 450 | 448 | @include solid_shade; |
| 451 | 449 | |
| 452 | - ul { | |
| 450 | + ul { | |
| 453 | 451 | margin:0; |
| 454 | 452 | } |
| 455 | 453 | |
| 456 | - h5, .title { | |
| 454 | + h5, .title { | |
| 457 | 455 | padding: 0 10px; |
| 458 | 456 | @include round-borders-top(4px); |
| 459 | 457 | border-bottom: 1px solid #bbb; |
| ... | ... | @@ -463,30 +461,30 @@ form { |
| 463 | 461 | background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); |
| 464 | 462 | background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf); |
| 465 | 463 | |
| 466 | - &.small { | |
| 464 | + &.small { | |
| 467 | 465 | line-height: 28px; |
| 468 | 466 | font-size: 14px; |
| 469 | 467 | line-height:28px; |
| 470 | 468 | text-shadow: 0 1px 1px white; |
| 471 | 469 | } |
| 472 | 470 | |
| 473 | - form { | |
| 471 | + form { | |
| 474 | 472 | padding:9px 0; |
| 475 | 473 | margin:0px; |
| 476 | 474 | } |
| 477 | 475 | |
| 478 | - .nav-pills { | |
| 479 | - li { | |
| 476 | + .nav-pills { | |
| 477 | + li { | |
| 480 | 478 | padding:3px 0; |
| 481 | 479 | &.active a { background-color:$style_color; } |
| 482 | - a { | |
| 480 | + a { | |
| 483 | 481 | border-radius:7px; |
| 484 | 482 | } |
| 485 | 483 | } |
| 486 | 484 | } |
| 487 | 485 | } |
| 488 | 486 | |
| 489 | - .bottom { | |
| 487 | + .bottom { | |
| 490 | 488 | background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); |
| 491 | 489 | background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf); |
| 492 | 490 | background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); |
| ... | ... | @@ -496,13 +494,13 @@ form { |
| 496 | 494 | border-top: 1px solid #bbb; |
| 497 | 495 | } |
| 498 | 496 | |
| 499 | - &.padded { | |
| 500 | - h5, .title { | |
| 497 | + &.padded { | |
| 498 | + h5, .title { | |
| 501 | 499 | margin: -20px; |
| 502 | 500 | margin-bottom: 0; |
| 503 | 501 | padding: 5px 20px; |
| 504 | 502 | } |
| 505 | - .middle_title { | |
| 503 | + .middle_title { | |
| 506 | 504 | background:#f5f5f5; |
| 507 | 505 | margin:20px -20px; |
| 508 | 506 | padding: 0 20px; |
| ... | ... | @@ -512,7 +510,7 @@ form { |
| 512 | 510 | color:#777; |
| 513 | 511 | } |
| 514 | 512 | } |
| 515 | - .row_title { | |
| 513 | + .row_title { | |
| 516 | 514 | font-weight:bold; |
| 517 | 515 | color:#444; |
| 518 | 516 | &:hover { |
| ... | ... | @@ -523,12 +521,12 @@ form { |
| 523 | 521 | |
| 524 | 522 | li, .wll { |
| 525 | 523 | padding:10px; |
| 526 | - &:first-child { | |
| 524 | + &:first-child { | |
| 527 | 525 | @include round-borders-top(4px); |
| 528 | 526 | border-top:none; |
| 529 | 527 | } |
| 530 | 528 | |
| 531 | - &:last-child { | |
| 529 | + &:last-child { | |
| 532 | 530 | @include round-borders-bottom(4px); |
| 533 | 531 | border:none; |
| 534 | 532 | } |
| ... | ... | @@ -537,10 +535,10 @@ form { |
| 537 | 535 | } |
| 538 | 536 | |
| 539 | 537 | table.admin-table { |
| 540 | - @extend .table-bordered; | |
| 538 | + @extend .table-bordered; | |
| 541 | 539 | @extend .zebra-striped; |
| 542 | 540 | @include solid_shade; |
| 543 | - th { | |
| 541 | + th { | |
| 544 | 542 | border-color: #CCC; |
| 545 | 543 | border-bottom: 1px solid #bbb; |
| 546 | 544 | background:#eee; |
| ... | ... | @@ -551,7 +549,7 @@ table.admin-table { |
| 551 | 549 | } |
| 552 | 550 | } |
| 553 | 551 | |
| 554 | -.field_with_errors { | |
| 552 | +.field_with_errors { | |
| 555 | 553 | display:inline; |
| 556 | 554 | } |
| 557 | 555 | |
| ... | ... | @@ -563,13 +561,13 @@ ul.breadcrumb { |
| 563 | 561 | text-shadow: 0 1px 0 white |
| 564 | 562 | } |
| 565 | 563 | |
| 566 | - a { | |
| 564 | + a { | |
| 567 | 565 | color:#474D57; |
| 568 | 566 | font-weight:bold; |
| 569 | 567 | font-size:14px; |
| 570 | 568 | } |
| 571 | 569 | |
| 572 | - .arrow { | |
| 570 | + .arrow { | |
| 573 | 571 | background: url("images.png") no-repeat -85px -77px; |
| 574 | 572 | width: 19px; |
| 575 | 573 | height: 16px; |
| ... | ... | @@ -581,18 +579,18 @@ ul.breadcrumb { |
| 581 | 579 | } |
| 582 | 580 | } |
| 583 | 581 | |
| 584 | -.nothing_here_message { | |
| 582 | +.nothing_here_message { | |
| 585 | 583 | text-align:center; |
| 586 | 584 | padding:20px; |
| 587 | 585 | color:#777; |
| 588 | 586 | } |
| 589 | 587 | |
| 590 | 588 | /** |
| 591 | - * UI box element | |
| 589 | + * UI box element | |
| 592 | 590 | * contains top, middle, bottom blocks |
| 593 | - * | |
| 591 | + * | |
| 594 | 592 | */ |
| 595 | -.main_box { | |
| 593 | +.main_box { | |
| 596 | 594 | @extend .borders; |
| 597 | 595 | @extend .prepend-top-20; |
| 598 | 596 | @extend .append-bottom-20; |
| ... | ... | @@ -608,9 +606,9 @@ ul.breadcrumb { |
| 608 | 606 | } |
| 609 | 607 | } |
| 610 | 608 | |
| 611 | - .top_box_content, | |
| 612 | - .middle_box_content, | |
| 613 | - .bottom_box_content { | |
| 609 | + .top_box_content, | |
| 610 | + .middle_box_content, | |
| 611 | + .bottom_box_content { | |
| 614 | 612 | padding:15px; |
| 615 | 613 | |
| 616 | 614 | pre { |
| ... | ... | @@ -621,7 +619,7 @@ ul.breadcrumb { |
| 621 | 619 | } |
| 622 | 620 | } |
| 623 | 621 | |
| 624 | - .middle_box_content { | |
| 622 | + .middle_box_content { | |
| 625 | 623 | border-radius:0; |
| 626 | 624 | border:none; |
| 627 | 625 | font-size:12px; |
| ... | ... | @@ -630,20 +628,20 @@ ul.breadcrumb { |
| 630 | 628 | border-top:1px solid #eee; |
| 631 | 629 | } |
| 632 | 630 | |
| 633 | - .bottom_box_content { | |
| 631 | + .bottom_box_content { | |
| 634 | 632 | border-top:1px solid #eee; |
| 635 | 633 | } |
| 636 | 634 | } |
| 637 | 635 | |
| 638 | -input[type=text] { | |
| 639 | - &.large_text { | |
| 636 | +input[type=text] { | |
| 637 | + &.large_text { | |
| 640 | 638 | padding:6px; |
| 641 | 639 | font-size:16px; |
| 642 | 640 | } |
| 643 | 641 | } |
| 644 | 642 | |
| 645 | -p { | |
| 646 | - &.slead { | |
| 643 | +p { | |
| 644 | + &.slead { | |
| 647 | 645 | color:#456; |
| 648 | 646 | font-size:16px; |
| 649 | 647 | margin-bottom: 12px; |
| ... | ... | @@ -652,7 +650,7 @@ p { |
| 652 | 650 | } |
| 653 | 651 | } |
| 654 | 652 | |
| 655 | -h3.page_title { | |
| 653 | +h3.page_title { | |
| 656 | 654 | color:#456; |
| 657 | 655 | font-size:20px; |
| 658 | 656 | font-weight: normal; |
| ... | ... | @@ -660,15 +658,15 @@ h3.page_title { |
| 660 | 658 | } |
| 661 | 659 | |
| 662 | 660 | /** |
| 663 | - * File content holder | |
| 661 | + * File content holder | |
| 664 | 662 | * |
| 665 | 663 | */ |
| 666 | -.file_holder { | |
| 664 | +.file_holder { | |
| 667 | 665 | border:1px solid #CCC; |
| 668 | 666 | margin-bottom:1em; |
| 669 | 667 | @include solid_shade; |
| 670 | 668 | |
| 671 | - .file_title { | |
| 669 | + .file_title { | |
| 672 | 670 | border-bottom: 1px solid #bbb; |
| 673 | 671 | background:#eee; |
| 674 | 672 | background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); |
| ... | ... | @@ -683,16 +681,16 @@ h3.page_title { |
| 683 | 681 | padding: 9px 10px; |
| 684 | 682 | height:18px; |
| 685 | 683 | |
| 686 | - .options { | |
| 684 | + .options { | |
| 687 | 685 | float:right; |
| 688 | 686 | margin-top: -5px; |
| 689 | 687 | } |
| 690 | 688 | |
| 691 | - .file_name { | |
| 689 | + .file_name { | |
| 692 | 690 | color:$style_color; |
| 693 | 691 | font-size:14px; |
| 694 | 692 | text-shadow: 0 1px 1px #fff; |
| 695 | - small { | |
| 693 | + small { | |
| 696 | 694 | color:#999; |
| 697 | 695 | font-size:13px; |
| 698 | 696 | } |
| ... | ... | @@ -702,21 +700,21 @@ h3.page_title { |
| 702 | 700 | background:#fff; |
| 703 | 701 | font-size: 11px; |
| 704 | 702 | |
| 705 | - &.wiki { | |
| 703 | + &.wiki { | |
| 706 | 704 | font-size: 13px; |
| 707 | - code { | |
| 705 | + code { | |
| 708 | 706 | padding:0 4px; |
| 709 | 707 | } |
| 710 | 708 | padding:20px; |
| 711 | - h1, h2 { | |
| 712 | - line-height: 46px; | |
| 713 | - } | |
| 714 | - h3, h4 { | |
| 715 | - line-height: 40px; | |
| 716 | - } | |
| 709 | + h1, h2 { | |
| 710 | + line-height: 46px; | |
| 711 | + } | |
| 712 | + h3, h4 { | |
| 713 | + line-height: 40px; | |
| 714 | + } | |
| 717 | 715 | } |
| 718 | 716 | |
| 719 | - &.image_file { | |
| 717 | + &.image_file { | |
| 720 | 718 | background:#eee; |
| 721 | 719 | text-align:center; |
| 722 | 720 | img { |
| ... | ... | @@ -725,27 +723,27 @@ h3.page_title { |
| 725 | 723 | } |
| 726 | 724 | } |
| 727 | 725 | |
| 728 | - &.blob_file { | |
| 726 | + &.blob_file { | |
| 729 | 727 | |
| 730 | 728 | } |
| 731 | 729 | |
| 732 | 730 | /** |
| 733 | 731 | * Blame file |
| 734 | 732 | */ |
| 735 | - &.blame { | |
| 736 | - tr { | |
| 733 | + &.blame { | |
| 734 | + tr { | |
| 737 | 735 | border-bottom: 1px solid #eee; |
| 738 | 736 | } |
| 739 | - td { | |
| 737 | + td { | |
| 740 | 738 | padding:5px; |
| 741 | 739 | } |
| 742 | - .author, | |
| 743 | - .blame_commit { | |
| 740 | + .author, | |
| 741 | + .blame_commit { | |
| 744 | 742 | background:#f5f5f5; |
| 745 | 743 | vertical-align:top; |
| 746 | 744 | } |
| 747 | - .lines { | |
| 748 | - pre { | |
| 745 | + .lines { | |
| 746 | + pre { | |
| 749 | 747 | padding:0; |
| 750 | 748 | margin:0; |
| 751 | 749 | background:none; |
| ... | ... | @@ -754,27 +752,27 @@ h3.page_title { |
| 754 | 752 | } |
| 755 | 753 | } |
| 756 | 754 | |
| 757 | - &.logs { | |
| 755 | + &.logs { | |
| 758 | 756 | background:#eee; |
| 759 | 757 | max-height: 700px; |
| 760 | 758 | overflow-y: auto; |
| 761 | 759 | |
| 762 | - ol { | |
| 760 | + ol { | |
| 763 | 761 | margin-left:40px; |
| 764 | 762 | padding: 10px 0; |
| 765 | 763 | border-left: 1px solid #CCC; |
| 766 | 764 | margin-bottom:0; |
| 767 | 765 | background: white; |
| 768 | - li { | |
| 766 | + li { | |
| 769 | 767 | color:#888; |
| 770 | - p { | |
| 768 | + p { | |
| 771 | 769 | margin:0; |
| 772 | 770 | color:#333; |
| 773 | 771 | line-height:24px; |
| 774 | 772 | padding-left: 10px; |
| 775 | 773 | } |
| 776 | 774 | |
| 777 | - &:hover { | |
| 775 | + &:hover { | |
| 778 | 776 | background:$hover; |
| 779 | 777 | } |
| 780 | 778 | } |
| ... | ... | @@ -784,7 +782,7 @@ h3.page_title { |
| 784 | 782 | /** |
| 785 | 783 | * Code file |
| 786 | 784 | */ |
| 787 | - &.code { | |
| 785 | + &.code { | |
| 788 | 786 | padding:0; |
| 789 | 787 | td.code { |
| 790 | 788 | width: 100%; | ... | ... |
app/assets/stylesheets/sections/header.scss
| ... | ... | @@ -2,14 +2,14 @@ |
| 2 | 2 | * Application Header |
| 3 | 3 | * |
| 4 | 4 | */ |
| 5 | -header { | |
| 5 | +header { | |
| 6 | 6 | width:100%; |
| 7 | 7 | padding:0; |
| 8 | 8 | margin:0; |
| 9 | 9 | top:1px; |
| 10 | 10 | left:0; |
| 11 | 11 | background: #F1F1F1; /* for non-css3 browsers */ |
| 12 | - border-bottom: 1px solid #ccc; | |
| 12 | + border-bottom: 1px solid #ccc; | |
| 13 | 13 | box-shadow: 0 -1px 0 white inset; |
| 14 | 14 | -moz-box-shadow: 0 -1px 0 white inset; |
| 15 | 15 | -webkit-box-shadow: 0 -1px 0 white inset; |
| ... | ... | @@ -17,7 +17,7 @@ header { |
| 17 | 17 | height:60px; |
| 18 | 18 | |
| 19 | 19 | /** |
| 20 | - * | |
| 20 | + * | |
| 21 | 21 | * Logo holder |
| 22 | 22 | * |
| 23 | 23 | */ |
| ... | ... | @@ -27,10 +27,10 @@ header { |
| 27 | 27 | position:relative; |
| 28 | 28 | top:-5px; |
| 29 | 29 | |
| 30 | - a { | |
| 30 | + a { | |
| 31 | 31 | float:left; |
| 32 | 32 | |
| 33 | - h1 { | |
| 33 | + h1 { | |
| 34 | 34 | text-indent:-9999px; |
| 35 | 35 | width:102px; |
| 36 | 36 | background: url('logo_text.png') no-repeat 0px -3px; |
| ... | ... | @@ -54,8 +54,8 @@ header { |
| 54 | 54 | margin-top: -10px; |
| 55 | 55 | } |
| 56 | 56 | } |
| 57 | - .container { | |
| 58 | - .top_panel_content { | |
| 57 | + .container { | |
| 58 | + .top_panel_content { | |
| 59 | 59 | margin:auto; |
| 60 | 60 | position:relative; |
| 61 | 61 | padding:15px 0; |
| ... | ... | @@ -63,7 +63,7 @@ header { |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | 65 | /** |
| 66 | - * | |
| 66 | + * | |
| 67 | 67 | * Project / Area name |
| 68 | 68 | * |
| 69 | 69 | */ |
| ... | ... | @@ -78,10 +78,10 @@ header { |
| 78 | 78 | text-shadow: 0 1px 1px #FFF; |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | - .fbtn { | |
| 81 | + .fbtn { | |
| 82 | 82 | float: right; |
| 83 | 83 | margin-right:10px; |
| 84 | - .btn { | |
| 84 | + .btn { | |
| 85 | 85 | margin-left:7px; |
| 86 | 86 | background: #F1F1F1; |
| 87 | 87 | border: 1px solid #CCC; |
| ... | ... | @@ -90,13 +90,13 @@ header { |
| 90 | 90 | |
| 91 | 91 | |
| 92 | 92 | /** |
| 93 | - * | |
| 93 | + * | |
| 94 | 94 | * Search box |
| 95 | 95 | * |
| 96 | 96 | */ |
| 97 | - .search { | |
| 97 | + .search { | |
| 98 | 98 | float: right; |
| 99 | - margin-right: 50px; | |
| 99 | + margin-right: 45px; | |
| 100 | 100 | |
| 101 | 101 | .search-input { |
| 102 | 102 | @extend .span2; |
| ... | ... | @@ -110,7 +110,7 @@ header { |
| 110 | 110 | } |
| 111 | 111 | |
| 112 | 112 | /** |
| 113 | - * | |
| 113 | + * | |
| 114 | 114 | * Account box |
| 115 | 115 | * |
| 116 | 116 | */ |
| ... | ... | @@ -125,13 +125,13 @@ header { |
| 125 | 125 | display: block; |
| 126 | 126 | cursor: pointer; |
| 127 | 127 | img { |
| 128 | - border-radius: 4px; | |
| 128 | + @include border-radius(4px); | |
| 129 | 129 | right: 5px; |
| 130 | 130 | position: absolute; |
| 131 | - width: 31px; | |
| 132 | - height: 31px; | |
| 131 | + width: 28px; | |
| 132 | + height: 28px; | |
| 133 | 133 | display: block; |
| 134 | - top: 0; | |
| 134 | + top: 2px; | |
| 135 | 135 | &:after { |
| 136 | 136 | content: " "; |
| 137 | 137 | display: block; |
| ... | ... | @@ -186,7 +186,7 @@ header { |
| 186 | 186 | width: 100px; |
| 187 | 187 | position: absolute; |
| 188 | 188 | right: 10px; |
| 189 | - top: 46px; | |
| 189 | + top: 42px; | |
| 190 | 190 | margin-top: 0; |
| 191 | 191 | float: right; |
| 192 | 192 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); | ... | ... |
app/assets/stylesheets/themes/ui_basic.scss
| 1 | 1 | /** |
| 2 | - * This file represent some UI that can be changed | |
| 3 | - * during web app restyle or theme select. | |
| 2 | + * This file represent some UI that can be changed | |
| 3 | + * during web app restyle or theme select. | |
| 4 | 4 | * |
| 5 | 5 | */ |
| 6 | -.ui_basic { | |
| 6 | +.ui_basic { | |
| 7 | 7 | /* |
| 8 | 8 | * Common styles |
| 9 | 9 | * |
| 10 | 10 | */ |
| 11 | 11 | a { |
| 12 | 12 | color: $link_color; |
| 13 | - &:hover { | |
| 14 | - text-decoration:none; | |
| 13 | + &:hover { | |
| 14 | + text-decoration:none; | |
| 15 | 15 | color: $blue_link; |
| 16 | 16 | } |
| 17 | 17 | } | ... | ... |
app/assets/stylesheets/themes/ui_mars.scss
| 1 | 1 | /** |
| 2 | - * This file represent some UI that can be changed | |
| 3 | - * during web app restyle or theme select. | |
| 4 | - * | |
| 2 | + * This file represent some UI that can be changed | |
| 3 | + * during web app restyle or theme select. | |
| 4 | + * | |
| 5 | 5 | * Next items should be placed there |
| 6 | 6 | * - link colors |
| 7 | 7 | * - header restyles |
| ... | ... | @@ -13,20 +13,20 @@ |
| 13 | 13 | * Application Header |
| 14 | 14 | * |
| 15 | 15 | */ |
| 16 | - header { | |
| 16 | + header { | |
| 17 | 17 | background: #474D57 url('bg-header.png') repeat-x bottom; |
| 18 | 18 | box-shadow:none; |
| 19 | 19 | border-bottom: 1px solid #444; |
| 20 | 20 | |
| 21 | - .fbtn { | |
| 22 | - .btn { | |
| 21 | + .fbtn { | |
| 22 | + .btn { | |
| 23 | 23 | margin-left:8px; |
| 24 | 24 | background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595D63), to(#31363E)); |
| 25 | 25 | background-image: -webkit-linear-gradient(#595D63 6.6%, #31363E); |
| 26 | 26 | background-image: -moz-linear-gradient(#595D63 6.6%, #31363E); |
| 27 | 27 | background-image: -o-linear-gradient(#595D63 6.6%, #31363E); |
| 28 | 28 | font-size: 12px; |
| 29 | - &:hover { | |
| 29 | + &:hover { | |
| 30 | 30 | background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595D63), to(#2C2F35)); |
| 31 | 31 | background-image: -webkit-linear-gradient(#595D63 6.6%, #2C2F35); |
| 32 | 32 | background-image: -moz-linear-gradient(#595D63 6.6%, #202227); |
| ... | ... | @@ -39,10 +39,10 @@ |
| 39 | 39 | text-shadow: 0 -1px 0 #000000; |
| 40 | 40 | } |
| 41 | 41 | } |
| 42 | - .search { | |
| 42 | + .search { | |
| 43 | 43 | float: right; |
| 44 | - margin-right: 55px; | |
| 45 | - .search-input { | |
| 44 | + margin-right: 45px; | |
| 45 | + .search-input { | |
| 46 | 46 | border: 1px solid rgba(0, 0, 0, 0.7); |
| 47 | 47 | box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 2px 2px rgba(0, 0, 0, 0.4) inset; |
| 48 | 48 | background-color: #D2D5DA; |
| ... | ... | @@ -57,8 +57,8 @@ |
| 57 | 57 | color: #666; |
| 58 | 58 | } |
| 59 | 59 | .app_logo { |
| 60 | - a { | |
| 61 | - h1 { | |
| 60 | + a { | |
| 61 | + h1 { | |
| 62 | 62 | background: url('images.png') no-repeat -3px -6px; |
| 63 | 63 | width: 65px; |
| 64 | 64 | height: 26px; | ... | ... |
app/assets/stylesheets/themes/ui_modern.scss
| ... | ... | @@ -91,7 +91,7 @@ |
| 91 | 91 | */ |
| 92 | 92 | .search { |
| 93 | 93 | float: right; |
| 94 | - margin-right: 55px; | |
| 94 | + margin-right: 45px; | |
| 95 | 95 | .search-input { |
| 96 | 96 | border: 1px solid rgba(0, 0, 0, 0.7); |
| 97 | 97 | box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 2px 2px rgba(0, 0, 0, 0.4) inset; |
| ... | ... | @@ -127,6 +127,7 @@ |
| 127 | 127 | .account-box { |
| 128 | 128 | top:6px; |
| 129 | 129 | img { |
| 130 | + top:1px; | |
| 130 | 131 | right: 5px; |
| 131 | 132 | width: 26px; |
| 132 | 133 | height: 26px; | ... | ... |
app/helpers/application_helper.rb
| ... | ... | @@ -110,7 +110,7 @@ module ApplicationHelper |
| 110 | 110 | when :admin_root; controller.controller_name == "dashboard" |
| 111 | 111 | when :admin_users; controller.controller_name == 'users' |
| 112 | 112 | when :admin_projects; controller.controller_name == "projects" |
| 113 | - when :admin_emails; controller.controller_name == 'mailer' | |
| 113 | + when :admin_hooks; controller.controller_name == 'hooks' | |
| 114 | 114 | when :admin_resque; controller.controller_name == 'resque' |
| 115 | 115 | when :admin_logs; controller.controller_name == 'logs' |
| 116 | 116 | ... | ... |
app/helpers/gitlab_markdown_helper.rb
| ... | ... | @@ -12,53 +12,10 @@ module GitlabMarkdownHelper |
| 12 | 12 | "{gfm-extraction-#{md5}}" |
| 13 | 13 | end |
| 14 | 14 | |
| 15 | - # match 1 2 3 4 5 6 | |
| 16 | - text.gsub!(/(\W)?(@([\w\._]+)|[#!$](\d+)|([\h]{6,40}))(\W)?/) do |match| | |
| 17 | - prefix = $1 | |
| 18 | - reference = $2 | |
| 19 | - user_name = $3 | |
| 20 | - issue_id = $4 | |
| 21 | - merge_request_id = $4 | |
| 22 | - snippet_id = $4 | |
| 23 | - commit_id = $5 | |
| 24 | - suffix = $6 | |
| 15 | + # TODO: add popups with additional information | |
| 25 | 16 | |
| 26 | - # TODO: add popups with additional information | |
| 27 | - ref_link = case reference | |
| 28 | - | |
| 29 | - # team member: @foo | |
| 30 | - when /^@/ | |
| 31 | - user = @project.users.where(name: user_name).first | |
| 32 | - member = @project.users_projects.where(user_id: user).first if user | |
| 33 | - link_to("@#{user_name}", project_team_member_path(@project, member), html_options.merge(class: "gfm gfm-team_member #{html_options[:class]}")) if member | |
| 34 | - | |
| 35 | - # issue: #123 | |
| 36 | - when /^#/ | |
| 37 | - # avoid HTML entities | |
| 38 | - unless prefix.try(:end_with?, "&") && suffix.try(:start_with?, ";") | |
| 39 | - issue = @project.issues.where(id: issue_id).first | |
| 40 | - link_to("##{issue_id}", project_issue_path(@project, issue), html_options.merge(title: "Issue: #{issue.title}", class: "gfm gfm-issue #{html_options[:class]}")) if issue | |
| 41 | - end | |
| 42 | - | |
| 43 | - # merge request: !123 | |
| 44 | - when /^!/ | |
| 45 | - merge_request = @project.merge_requests.where(id: merge_request_id).first | |
| 46 | - link_to("!#{merge_request_id}", project_merge_request_path(@project, merge_request), html_options.merge(title: "Merge Request: #{merge_request.title}", class: "gfm gfm-merge_request #{html_options[:class]}")) if merge_request | |
| 47 | - | |
| 48 | - # snippet: $123 | |
| 49 | - when /^\$/ | |
| 50 | - snippet = @project.snippets.where(id: snippet_id).first | |
| 51 | - link_to("$#{snippet_id}", project_snippet_path(@project, snippet), html_options.merge(title: "Snippet: #{snippet.title}", class: "gfm gfm-snippet #{html_options[:class]}")) if snippet | |
| 52 | - | |
| 53 | - # commit: 123456... | |
| 54 | - when /^\h/ | |
| 55 | - commit = @project.commit(commit_id) | |
| 56 | - link_to(commit_id, project_commit_path(@project, id: commit.id), html_options.merge(title: "Commit: #{commit.author_name} - #{CommitDecorator.new(commit).title}", class: "gfm gfm-commit #{html_options[:class]}")) if commit | |
| 57 | - | |
| 58 | - end # case | |
| 59 | - | |
| 60 | - ref_link.nil? ? match : "#{prefix}#{ref_link}#{suffix}" | |
| 61 | - end # gsub | |
| 17 | + parser = Gitlab::Markdown.new(@project, html_options) | |
| 18 | + text = parser.parse(text) | |
| 62 | 19 | |
| 63 | 20 | # Insert pre block extractions |
| 64 | 21 | text.gsub!(/\{gfm-extraction-(\h{32})\}/) do | ... | ... |
app/views/errors/access_denied.html.haml
| 1 | -.alert-message.block-message.error | |
| 2 | - %h3 Access Denied | |
| 3 | - %hr | |
| 4 | - %p You are not allowed to access this page. | |
| 5 | - %p Read more about project permissions #{link_to "here", help_permissions_path, class: "vlink"} | |
| 1 | +%h1 Access Denied | |
| 2 | +%hr | |
| 3 | +%h2 You are not allowed to access this page. | |
| 4 | +%p Read more about project permissions #{link_to "here", help_permissions_path, class: "vlink"} | ... | ... |
app/views/errors/git_not_found.html.haml
| 1 | -.alert-message.block-message.error | |
| 2 | - %h3 Git Resource Not found | |
| 3 | - %hr | |
| 4 | - %p | |
| 5 | - Application can't get access to some | |
| 6 | - %span.label branch | |
| 7 | - or | |
| 8 | - %span.label commit | |
| 9 | - in your repository. It may have been moved. | |
| 1 | +%h1 404 | |
| 2 | +%hr | |
| 3 | +%h2 Git Resource Not found | |
| 4 | +%p | |
| 5 | + Application can't get access to some branch or commit in your repository. It | |
| 6 | + may have been moved. | ... | ... |
app/views/errors/gitolite.html.haml
| 1 | -.alert-message.block-message.error | |
| 2 | - %h3 Gitolite Error | |
| 3 | - %h4 Application can't get access to your gitolite system. | |
| 1 | +%h1 Git Error | |
| 2 | +%hr | |
| 3 | +%h2 Gitlab was unable to access your Gitolite system. | |
| 4 | 4 | |
| 5 | -%h4 Tips for Administrator: | |
| 6 | - | |
| 7 | -%ul | |
| 8 | - %li | |
| 9 | - %p | |
| 10 | - Check git logs in admin area | |
| 11 | - %li | |
| 12 | - %p | |
| 13 | - Check config/gitlab.yml for correct settings. | |
| 14 | - %li | |
| 15 | - %p | |
| 16 | - Diagnostic tool: | |
| 5 | +.git_error_tips | |
| 6 | + %h4 Tips for Administrator: | |
| 7 | + %ol | |
| 8 | + %li | |
| 9 | + %p | |
| 10 | + Check git logs in admin area | |
| 11 | + %li | |
| 12 | + %p | |
| 13 | + Check config/gitlab.yml for correct settings. | |
| 14 | + %li | |
| 15 | + %p | |
| 16 | + Diagnostic tool: | |
| 17 | + %pre | |
| 18 | + bundle exec rake gitlab:app:status RAILS_ENV=production | |
| 19 | + %li | |
| 20 | + %p | |
| 21 | + Permissions: | |
| 17 | 22 | %pre |
| 18 | - bundle exec rake gitlab:app:status RAILS_ENV=production | |
| 19 | - %li | |
| 20 | - %p | |
| 21 | - Permissions: | |
| 22 | - %pre | |
| 23 | - = preserve do | |
| 24 | - sudo chmod -R 770 /home/git/repositories/ | |
| 25 | - sudo chown -R git:git /home/git/repositories/ | |
| 26 | - sudo chown gitlab:gitlab /home/git/repositories/**/hooks/post-receive | |
| 23 | + = preserve do | |
| 24 | + sudo chmod -R 770 /home/git/repositories/ | |
| 25 | + sudo chown -R git:git /home/git/repositories/ | |
| 26 | + sudo chown gitlab:gitlab /home/git/repositories/**/hooks/post-receive | |
| 27 | 27 | ... | ... |
app/views/errors/not_found.html.haml
| 1 | -.alert-message.block-message.error | |
| 2 | - %h3 Not found | |
| 3 | - %hr | |
| 4 | - %p The resource you were looking for doesn't exist. | |
| 5 | - %p You may have mistyped the address or it may have been removed. | |
| 1 | +%h1 404 | |
| 2 | +%hr | |
| 3 | +%h2 The resource you were looking for doesn't exist. | |
| 4 | +%p You may have mistyped the address or the page may have moved. | ... | ... |
app/views/layouts/admin.html.haml
| ... | ... | @@ -14,7 +14,7 @@ |
| 14 | 14 | = link_to "Users", admin_users_path |
| 15 | 15 | %li{class: tab_class(:admin_logs)} |
| 16 | 16 | = link_to "Logs", admin_logs_path |
| 17 | - %li{class: tab_class(:admin_emails)} | |
| 17 | + %li{class: tab_class(:admin_hooks)} | |
| 18 | 18 | = link_to "Hooks", admin_hooks_path |
| 19 | 19 | %li{class: tab_class(:admin_resque)} |
| 20 | 20 | = link_to "Resque", admin_resque_path | ... | ... |
app/views/layouts/error.html.haml
| ... | ... | @@ -0,0 +1,98 @@ |
| 1 | +module Gitlab | |
| 2 | + # Custom parsing for Gitlab-flavored Markdown | |
| 3 | + # | |
| 4 | + # Examples | |
| 5 | + # | |
| 6 | + # >> m = Markdown.new(...) | |
| 7 | + # | |
| 8 | + # >> m.parse("Hey @david, can you fix this?") | |
| 9 | + # => "Hey <a href="/gitlab/team_members/1">@david</a>, can you fix this?" | |
| 10 | + # | |
| 11 | + # >> m.parse("Commit 35d5f7c closes #1234") | |
| 12 | + # => "Commit <a href="/gitlab/commits/35d5f7c">35d5f7c</a> closes <a href="/gitlab/issues/1234">#1234</a>" | |
| 13 | + class Markdown | |
| 14 | + include Rails.application.routes.url_helpers | |
| 15 | + include ActionView::Helpers | |
| 16 | + | |
| 17 | + REFERENCE_PATTERN = %r{ | |
| 18 | + ([^\w&;])? # Prefix (1) | |
| 19 | + ( # Reference (2) | |
| 20 | + @([\w\._]+) # User name (3) | |
| 21 | + |[#!$](\d+) # Issue/MR/Snippet ID (4) | |
| 22 | + |([\h]{6,40}) # Commit ID (5) | |
| 23 | + ) | |
| 24 | + ([^\w&;])? # Suffix (6) | |
| 25 | + }x.freeze | |
| 26 | + | |
| 27 | + attr_reader :html_options | |
| 28 | + | |
| 29 | + def initialize(project, html_options = {}) | |
| 30 | + @project = project | |
| 31 | + @html_options = html_options | |
| 32 | + end | |
| 33 | + | |
| 34 | + def parse(text) | |
| 35 | + text.gsub(REFERENCE_PATTERN) do |match| | |
| 36 | + prefix = $1 || '' | |
| 37 | + reference = $2 | |
| 38 | + identifier = $3 || $4 || $5 | |
| 39 | + suffix = $6 || '' | |
| 40 | + | |
| 41 | + if ref_link = reference_link(reference, identifier) | |
| 42 | + prefix + ref_link + suffix | |
| 43 | + else | |
| 44 | + match | |
| 45 | + end | |
| 46 | + end | |
| 47 | + end | |
| 48 | + | |
| 49 | + private | |
| 50 | + | |
| 51 | + # Private: Dispatches to a dedicated processing method based on reference | |
| 52 | + # | |
| 53 | + # reference - Object reference ("@1234", "!567", etc.) | |
| 54 | + # identifier - Object identifier (Issue ID, SHA hash, etc.) | |
| 55 | + # | |
| 56 | + # Returns string rendered by the processing method | |
| 57 | + def reference_link(reference, identifier) | |
| 58 | + case reference | |
| 59 | + when /^@/ then reference_user(identifier) | |
| 60 | + when /^#/ then reference_issue(identifier) | |
| 61 | + when /^!/ then reference_merge_request(identifier) | |
| 62 | + when /^\$/ then reference_snippet(identifier) | |
| 63 | + when /^\h/ then reference_commit(identifier) | |
| 64 | + end | |
| 65 | + end | |
| 66 | + | |
| 67 | + def reference_user(identifier) | |
| 68 | + if user = @project.users.where(name: identifier).first | |
| 69 | + member = @project.users_projects.where(user_id: user).first | |
| 70 | + link_to("@#{user.name}", project_team_member_path(@project, member), html_options.merge(class: "gfm gfm-team_member #{html_options[:class]}")) if member | |
| 71 | + end | |
| 72 | + end | |
| 73 | + | |
| 74 | + def reference_issue(identifier) | |
| 75 | + if issue = @project.issues.where(id: identifier).first | |
| 76 | + link_to("##{issue.id}", project_issue_path(@project, issue), html_options.merge(title: "Issue: #{issue.title}", class: "gfm gfm-issue #{html_options[:class]}")) | |
| 77 | + end | |
| 78 | + end | |
| 79 | + | |
| 80 | + def reference_merge_request(identifier) | |
| 81 | + if merge_request = @project.merge_requests.where(id: identifier).first | |
| 82 | + link_to("!#{merge_request.id}", project_merge_request_path(@project, merge_request), html_options.merge(title: "Merge Request: #{merge_request.title}", class: "gfm gfm-merge_request #{html_options[:class]}")) | |
| 83 | + end | |
| 84 | + end | |
| 85 | + | |
| 86 | + def reference_snippet(identifier) | |
| 87 | + if snippet = @project.snippets.where(id: identifier).first | |
| 88 | + link_to("$#{snippet.id}", project_snippet_path(@project, snippet), html_options.merge(title: "Snippet: #{snippet.title}", class: "gfm gfm-snippet #{html_options[:class]}")) | |
| 89 | + end | |
| 90 | + end | |
| 91 | + | |
| 92 | + def reference_commit(identifier) | |
| 93 | + if commit = @project.commit(identifier) | |
| 94 | + link_to(identifier, project_commit_path(@project, id: commit.id), html_options.merge(title: "Commit: #{commit.author_name} - #{CommitDecorator.new(commit).title}", class: "gfm gfm-commit #{html_options[:class]}")) | |
| 95 | + end | |
| 96 | + end | |
| 97 | + end | |
| 98 | +end | ... | ... |
public/404.html
public/422.html
| ... | ... | @@ -8,7 +8,7 @@ |
| 8 | 8 | <body> |
| 9 | 9 | <!-- This file lives in public/422.html --> |
| 10 | 10 | <h1>422</h1> |
| 11 | - <div class="alert-message block-message error"> | |
| 11 | + <div> | |
| 12 | 12 | <h2>The change you wanted was rejected.</h2> |
| 13 | 13 | <p>Maybe you tried to change something you didn't have access to.</p> |
| 14 | 14 | </div> | ... | ... |
public/500.html
| ... | ... | @@ -8,7 +8,7 @@ |
| 8 | 8 | <body> |
| 9 | 9 | <!-- This file lives in public/500.html --> |
| 10 | 10 | <h1>500</h1> |
| 11 | - <div class="alert-message block-message error"> | |
| 11 | + <div> | |
| 12 | 12 | <h2>We're sorry, but something went wrong.</h2> |
| 13 | 13 | <p>We've been notified about this issue and we'll take a look at it shortly.</p> |
| 14 | 14 | </div> | ... | ... |