Merge branch 'master' into hooray_apostrophes

This commit is contained in:
Robert Speicher 2012-08-16 14:03:06 -04:00
commit 66399d558d
18 changed files with 335 additions and 280 deletions

View file

@ -249,7 +249,7 @@ ul.bordered-list li:last-child { border:none }
li.commit { li.commit {
.avatar { .avatar {
width:24px; width:24px;
top:-3px; top:-5px;
margin-right:10px; margin-right:10px;
margin-left:10px; margin-left:10px;
} }
@ -305,12 +305,7 @@ p.time {
} }
.styled_image { .styled_image {
-webkit-border-radius: 4px; border:2px solid #ddd;
-moz-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 0 0 5px #888;
-webkit-box-shadow: 0 0 5px#888;
box-shadow: 0 0 5px #888;
} }
.event_feed { .event_feed {
@ -729,3 +724,14 @@ li.note {
} }
} }
} }
.git_error_tips {
@extend .span6;
text-align:left;
margin-top:40px;
pre {
background:white;
border:none;
font-size: 12px;
}
}

View file

@ -1,32 +1,32 @@
body { body {
margin-bottom:20px; margin-bottom:20px;
} }
a { a {
outline: none; outline: none;
color: $link_color; color: $link_color;
&:hover { &:hover {
text-decoration:none; text-decoration:none;
color: $blue_link; color: $blue_link;
} }
&.btn { &.btn {
color: $style_color; color: $style_color;
} }
&.dark { &.dark {
color: $style_color; color: $style_color;
} }
&.lined { &.lined {
text-decoration:underline; text-decoration:underline;
&:hover { text-decoration:underline; } &:hover { text-decoration:underline; }
} }
&.gray { &.gray {
color:gray; color:gray;
} }
&.supp_diff_link { &.supp_diff_link {
text-align:center; text-align:center;
padding:20px 0; padding:20px 0;
background:#f1f1f1; background:#f1f1f1;
@ -39,24 +39,24 @@ a {
} }
} }
.neib { .neib {
margin-right:10px; margin-right:10px;
} }
.alert-message { .alert-message {
@extend .alert; @extend .alert;
&.success { &.success {
@extend .alert-success; @extend .alert-success;
} }
&.error { &.error {
@extend .alert-error; @extend .alert-error;
} }
} }
.alert { .alert {
&.alert-well { &.alert-well {
background:#ddd; background:#ddd;
border:1px solid #ccc; border:1px solid #ccc;
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #ddd), to(#dfdfdf)); background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #ddd), to(#dfdfdf));
@ -71,12 +71,12 @@ h3, h4, h5, h6 {
line-height: 36px; line-height: 36px;
} }
h5 { h5 {
font-size:14px; font-size:14px;
} }
table { table {
width:100%; width:100%;
th { th {
padding-top: 9px; padding-top: 9px;
@ -97,12 +97,12 @@ table {
border-radius: 4px; border-radius: 4px;
} }
&.zebra-striped { &.zebra-striped {
@extend .table-striped; @extend .table-striped;
} }
} }
.btn { .btn {
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), color-stop(25%, #f1f1f1), to(#e6e6e6)); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), color-stop(25%, #f1f1f1), to(#e6e6e6));
background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6);
background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1 25%, #e6e6e6); background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1 25%, #e6e6e6);
@ -110,63 +110,63 @@ table {
background-image: -o-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); background-image: -o-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6);
background-image: linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); background-image: linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6);
&:hover { &:hover {
} }
&.btn-primary { &.btn-primary {
background:$link_color; background:$link_color;
border-color: #2A79A3; border-color: #2A79A3;
&:hover { &:hover {
background:$blue_link; background:$blue_link;
} }
} }
&.primary { &.primary {
@extend .btn-primary; @extend .btn-primary;
} }
&.success { &.success {
color: #fff; color: #fff;
text-shadow: 0 0 1px #111; text-shadow: 0 0 1px #111;
background: #5bb75b;; background: #5bb75b;;
font-weight: bold; font-weight: bold;
&:hover { &:hover {
background-color: #51a351; background-color: #51a351;
color: #fff; color: #fff;
} }
} }
&.danger, &.danger,
&.btn-danger { &.btn-danger {
color:#fff; color:#fff;
background: #DA4E49; background: #DA4E49;
border-color: #BD362F; border-color: #BD362F;
&:hover { &:hover {
color:#fff; color:#fff;
background: #EE4E49; background: #EE4E49;
} }
} }
&.danger { &.danger {
@extend .btn-danger; @extend .btn-danger;
} }
&.small { &.small {
@extend .btn-small; @extend .btn-small;
} }
&.active { &.active {
border-color:#aaa; border-color:#aaa;
background-color:#ccc; background-color:#ccc;
} }
} }
a:focus { a:focus {
outline: none; outline: none;
} }
.nav-pills a:hover { .nav-pills a:hover {
background-color:#888; background-color:#888;
} }
@ -174,20 +174,20 @@ a:focus {
background-color: $style_color; background-color: $style_color;
} }
.label { .label {
background-color: #474D57; background-color: #474D57;
&.label-important { &.label-important {
background-color: #B94A48; background-color: #B94A48;
} }
&.label-issue { &.label-issue {
background-color: #eee; background-color: #eee;
border: 1px solid #ccc; border: 1px solid #ccc;
padding:4px 6px; padding:4px 6px;
color:#444; color:#444;
text-shadow:0 0 1px #fff; text-shadow:0 0 1px #fff;
&.grouped { &.grouped {
float: left; float: left;
margin-right: 6px; margin-right: 6px;
padding: 6px; padding: 6px;
@ -199,7 +199,7 @@ a:focus {
color:$style_color; color:$style_color;
} }
.nav-tabs > .active > a { .nav-tabs > .active > a {
font-weight:bold; font-weight:bold;
} }
@ -248,39 +248,39 @@ a:focus {
margin-top:20px; margin-top:20px;
} }
.padded { .padded {
padding:20px; padding:20px;
} }
.ipadded { .ipadded {
padding:20px !important; padding:20px !important;
} }
.lborder { .lborder {
border-left:1px solid #eee; border-left:1px solid #eee;
} }
.borders { .borders {
border: 1px solid #ccc; border: 1px solid #ccc;
@include shade; @include shade;
} }
.no-borders { .no-borders {
border:none; border:none;
} }
table.no-borders { table.no-borders {
border:none; border:none;
tr, td { border:none } tr, td { border:none }
} }
.no-padding { .no-padding {
padding:0 !important; padding:0 !important;
} }
.underlined { .underlined {
border-bottom: 1px solid $border_color; border-bottom: 1px solid $border_color;
} }
.vlink { .vlink {
color: $link_color !important; color: $link_color !important;
} }
.pretty_label { .pretty_label {
@include round-borders-all(4px); @include round-borders-all(4px);
padding:2px 4px; padding:2px 4px;
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));
@ -290,7 +290,7 @@ table.no-borders {
color: #777; color: #777;
border: 1px solid #DEDFE1; border: 1px solid #DEDFE1;
&.branch { &.branch {
border:none; border:none;
font-size:13px; font-size:13px;
background: #474D57; background: #474D57;
@ -300,73 +300,71 @@ table.no-borders {
} }
} }
.event_label { .event_label {
@extend .label; @extend .label;
background-color: #999; background-color: #999;
&.pushed { &.pushed {
background-color: #3A87AD; background-color: #3A87AD;
} }
&.opened { &.opened {
background-color: #468847; background-color: #468847;
} }
&.closed { &.closed {
background-color: #B94A48; background-color: #B94A48;
} }
&.merged { &.merged {
background-color: #2A2; background-color: #2A2;
} }
} }
img.avatar { img.avatar {
float:left; float:left;
margin-right:15px; margin-right:15px;
width:40px; width:40px;
-webkit-border-radius: 4px; border:2px solid #ddd;
-moz-border-radius: 4px;
border-radius: 4px;
&.s16 { &.s16 {
width:16px; width:16px;
} }
&.s24 { &.s24 {
width:24px; width:24px;
} }
&.s32 { &.s32 {
width:32px; width:32px;
} }
} }
img.lil_av { img.lil_av {
padding-left: 4px; padding-left: 4px;
padding-right:3px; padding-right:3px;
} }
form { form {
@extend .form-horizontal; @extend .form-horizontal;
.actions { .actions {
@extend .form-actions; @extend .form-actions;
} }
.clearfix { .clearfix {
@extend .control-group; @extend .control-group;
} }
.input { .input {
@extend .controls; @extend .controls;
} }
label { label {
@extend .control-label; @extend .control-label;
} }
.xlarge { .xlarge {
@extend .input-xlarge; @extend .input-xlarge;
} }
.xxlarge { .xxlarge {
@extend .input-xxlarge; @extend .input-xxlarge;
} }
} }
@ -375,25 +373,25 @@ form {
* List li block element #1 * List li block element #1
* *
*/ */
.wll { .wll {
background-color: #FFF; background-color: #FFF;
padding: 10px 5px; padding: 10px 5px;
min-height: 20px; min-height: 20px;
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
border-bottom: 1px solid rgba(0, 0, 0, 0.05); border-bottom: 1px solid rgba(0, 0, 0, 0.05);
&.smoke { &.smoke {
background-color:#f5f5f5; background-color:#f5f5f5;
} }
&:hover { &:hover {
background:$hover; background:$hover;
} }
&:last-child { border:none } &:last-child { border:none }
p { padding-top:5px; margin:0; color:$style_color;} p { padding-top:5px; margin:0; color:$style_color;}
.author { color: #999; } .author { color: #999; }
p { p {
color:#222; color:#222;
margin-bottom: 0; margin-bottom: 0;
img { img {
position:relative; position:relative;
top:3px; top:3px;
} }
@ -405,7 +403,7 @@ form {
* Block element #2 * Block element #2
* *
*/ */
.entry { .entry {
position: relative; position: relative;
padding: 7px 15px; padding: 7px 15px;
margin-bottom: 18px; margin-bottom: 18px;
@ -427,10 +425,10 @@ form {
border: 1px solid #ccc; border: 1px solid #ccc;
p { p {
color:$style_color; color:$style_color;
margin-bottom: 0; margin-bottom: 0;
img { img {
position:relative; position:relative;
top:3px; top:3px;
} }
@ -442,18 +440,18 @@ form {
* Big UI Block for show page content * Big UI Block for show page content
* *
*/ */
.ui-box { .ui-box {
background:#F9F9F9; background:#F9F9F9;
margin-bottom: 25px; margin-bottom: 25px;
@include round-borders-all(4px); @include round-borders-all(4px);
border-color: #CCC; border-color: #CCC;
@include solid_shade; @include solid_shade;
ul { ul {
margin:0; margin:0;
} }
h5, .title { h5, .title {
padding: 0 10px; padding: 0 10px;
@include round-borders-top(4px); @include round-borders-top(4px);
border-bottom: 1px solid #bbb; border-bottom: 1px solid #bbb;
@ -463,30 +461,30 @@ form {
background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf);
background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf); background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf);
&.small { &.small {
line-height: 28px; line-height: 28px;
font-size: 14px; font-size: 14px;
line-height:28px; line-height:28px;
text-shadow: 0 1px 1px white; text-shadow: 0 1px 1px white;
} }
form { form {
padding:9px 0; padding:9px 0;
margin:0px; margin:0px;
} }
.nav-pills { .nav-pills {
li { li {
padding:3px 0; padding:3px 0;
&.active a { background-color:$style_color; } &.active a { background-color:$style_color; }
a { a {
border-radius:7px; border-radius:7px;
} }
} }
} }
} }
.bottom { .bottom {
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf); background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf);
background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf);
@ -496,13 +494,13 @@ form {
border-top: 1px solid #bbb; border-top: 1px solid #bbb;
} }
&.padded { &.padded {
h5, .title { h5, .title {
margin: -20px; margin: -20px;
margin-bottom: 0; margin-bottom: 0;
padding: 5px 20px; padding: 5px 20px;
} }
.middle_title { .middle_title {
background:#f5f5f5; background:#f5f5f5;
margin:20px -20px; margin:20px -20px;
padding: 0 20px; padding: 0 20px;
@ -512,7 +510,7 @@ form {
color:#777; color:#777;
} }
} }
.row_title { .row_title {
font-weight:bold; font-weight:bold;
color:#444; color:#444;
&:hover { &:hover {
@ -523,12 +521,12 @@ form {
li, .wll { li, .wll {
padding:10px; padding:10px;
&:first-child { &:first-child {
@include round-borders-top(4px); @include round-borders-top(4px);
border-top:none; border-top:none;
} }
&:last-child { &:last-child {
@include round-borders-bottom(4px); @include round-borders-bottom(4px);
border:none; border:none;
} }
@ -537,10 +535,10 @@ form {
} }
table.admin-table { table.admin-table {
@extend .table-bordered; @extend .table-bordered;
@extend .zebra-striped; @extend .zebra-striped;
@include solid_shade; @include solid_shade;
th { th {
border-color: #CCC; border-color: #CCC;
border-bottom: 1px solid #bbb; border-bottom: 1px solid #bbb;
background:#eee; background:#eee;
@ -551,7 +549,7 @@ table.admin-table {
} }
} }
.field_with_errors { .field_with_errors {
display:inline; display:inline;
} }
@ -563,13 +561,13 @@ ul.breadcrumb {
text-shadow: 0 1px 0 white text-shadow: 0 1px 0 white
} }
a { a {
color:#474D57; color:#474D57;
font-weight:bold; font-weight:bold;
font-size:14px; font-size:14px;
} }
.arrow { .arrow {
background: url("images.png") no-repeat -85px -77px; background: url("images.png") no-repeat -85px -77px;
width: 19px; width: 19px;
height: 16px; height: 16px;
@ -581,18 +579,18 @@ ul.breadcrumb {
} }
} }
.nothing_here_message { .nothing_here_message {
text-align:center; text-align:center;
padding:20px; padding:20px;
color:#777; color:#777;
} }
/** /**
* UI box element * UI box element
* contains top, middle, bottom blocks * contains top, middle, bottom blocks
* *
*/ */
.main_box { .main_box {
@extend .borders; @extend .borders;
@extend .prepend-top-20; @extend .prepend-top-20;
@extend .append-bottom-20; @extend .append-bottom-20;
@ -608,9 +606,9 @@ ul.breadcrumb {
} }
} }
.top_box_content, .top_box_content,
.middle_box_content, .middle_box_content,
.bottom_box_content { .bottom_box_content {
padding:15px; padding:15px;
pre { pre {
@ -621,7 +619,7 @@ ul.breadcrumb {
} }
} }
.middle_box_content { .middle_box_content {
border-radius:0; border-radius:0;
border:none; border:none;
font-size:12px; font-size:12px;
@ -630,20 +628,20 @@ ul.breadcrumb {
border-top:1px solid #eee; border-top:1px solid #eee;
} }
.bottom_box_content { .bottom_box_content {
border-top:1px solid #eee; border-top:1px solid #eee;
} }
} }
input[type=text] { input[type=text] {
&.large_text { &.large_text {
padding:6px; padding:6px;
font-size:16px; font-size:16px;
} }
} }
p { p {
&.slead { &.slead {
color:#456; color:#456;
font-size:16px; font-size:16px;
margin-bottom: 12px; margin-bottom: 12px;
@ -652,7 +650,7 @@ p {
} }
} }
h3.page_title { h3.page_title {
color:#456; color:#456;
font-size:20px; font-size:20px;
font-weight: normal; font-weight: normal;
@ -660,15 +658,15 @@ h3.page_title {
} }
/** /**
* File content holder * File content holder
* *
*/ */
.file_holder { .file_holder {
border:1px solid #CCC; border:1px solid #CCC;
margin-bottom:1em; margin-bottom:1em;
@include solid_shade; @include solid_shade;
.file_title { .file_title {
border-bottom: 1px solid #bbb; border-bottom: 1px solid #bbb;
background:#eee; background:#eee;
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
@ -683,16 +681,16 @@ h3.page_title {
padding: 9px 10px; padding: 9px 10px;
height:18px; height:18px;
.options { .options {
float:right; float:right;
margin-top: -5px; margin-top: -5px;
} }
.file_name { .file_name {
color:$style_color; color:$style_color;
font-size:14px; font-size:14px;
text-shadow: 0 1px 1px #fff; text-shadow: 0 1px 1px #fff;
small { small {
color:#999; color:#999;
font-size:13px; font-size:13px;
} }
@ -702,21 +700,21 @@ h3.page_title {
background:#fff; background:#fff;
font-size: 11px; font-size: 11px;
&.wiki { &.wiki {
font-size: 13px; font-size: 13px;
code { code {
padding:0 4px; padding:0 4px;
} }
padding:20px; padding:20px;
h1, h2 { h1, h2 {
line-height: 46px; line-height: 46px;
} }
h3, h4 { h3, h4 {
line-height: 40px; line-height: 40px;
} }
} }
&.image_file { &.image_file {
background:#eee; background:#eee;
text-align:center; text-align:center;
img { img {
@ -725,27 +723,27 @@ h3.page_title {
} }
} }
&.blob_file { &.blob_file {
} }
/** /**
* Blame file * Blame file
*/ */
&.blame { &.blame {
tr { tr {
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
} }
td { td {
padding:5px; padding:5px;
} }
.author, .author,
.blame_commit { .blame_commit {
background:#f5f5f5; background:#f5f5f5;
vertical-align:top; vertical-align:top;
} }
.lines { .lines {
pre { pre {
padding:0; padding:0;
margin:0; margin:0;
background:none; background:none;
@ -754,27 +752,27 @@ h3.page_title {
} }
} }
&.logs { &.logs {
background:#eee; background:#eee;
max-height: 700px; max-height: 700px;
overflow-y: auto; overflow-y: auto;
ol { ol {
margin-left:40px; margin-left:40px;
padding: 10px 0; padding: 10px 0;
border-left: 1px solid #CCC; border-left: 1px solid #CCC;
margin-bottom:0; margin-bottom:0;
background: white; background: white;
li { li {
color:#888; color:#888;
p { p {
margin:0; margin:0;
color:#333; color:#333;
line-height:24px; line-height:24px;
padding-left: 10px; padding-left: 10px;
} }
&:hover { &:hover {
background:$hover; background:$hover;
} }
} }
@ -784,7 +782,7 @@ h3.page_title {
/** /**
* Code file * Code file
*/ */
&.code { &.code {
padding:0; padding:0;
td.code { td.code {
width: 100%; width: 100%;

View file

@ -2,14 +2,14 @@
* Application Header * Application Header
* *
*/ */
header { header {
width:100%; width:100%;
padding:0; padding:0;
margin:0; margin:0;
top:1px; top:1px;
left:0; left:0;
background: #F1F1F1; /* for non-css3 browsers */ background: #F1F1F1; /* for non-css3 browsers */
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
box-shadow: 0 -1px 0 white inset; box-shadow: 0 -1px 0 white inset;
-moz-box-shadow: 0 -1px 0 white inset; -moz-box-shadow: 0 -1px 0 white inset;
-webkit-box-shadow: 0 -1px 0 white inset; -webkit-box-shadow: 0 -1px 0 white inset;
@ -17,7 +17,7 @@ header {
height:60px; height:60px;
/** /**
* *
* Logo holder * Logo holder
* *
*/ */
@ -27,10 +27,10 @@ header {
position:relative; position:relative;
top:-5px; top:-5px;
a { a {
float:left; float:left;
h1 { h1 {
text-indent:-9999px; text-indent:-9999px;
width:102px; width:102px;
background: url('logo_text.png') no-repeat 0px -3px; background: url('logo_text.png') no-repeat 0px -3px;
@ -54,8 +54,8 @@ header {
margin-top: -10px; margin-top: -10px;
} }
} }
.container { .container {
.top_panel_content { .top_panel_content {
margin:auto; margin:auto;
position:relative; position:relative;
padding:15px 0; padding:15px 0;
@ -63,7 +63,7 @@ header {
} }
/** /**
* *
* Project / Area name * Project / Area name
* *
*/ */
@ -78,10 +78,10 @@ header {
text-shadow: 0 1px 1px #FFF; text-shadow: 0 1px 1px #FFF;
} }
.fbtn { .fbtn {
float: right; float: right;
margin-right:10px; margin-right:10px;
.btn { .btn {
margin-left:7px; margin-left:7px;
background: #F1F1F1; background: #F1F1F1;
border: 1px solid #CCC; border: 1px solid #CCC;
@ -90,13 +90,13 @@ header {
/** /**
* *
* Search box * Search box
* *
*/ */
.search { .search {
float: right; float: right;
margin-right: 50px; margin-right: 45px;
.search-input { .search-input {
@extend .span2; @extend .span2;
@ -110,7 +110,7 @@ header {
} }
/** /**
* *
* Account box * Account box
* *
*/ */
@ -125,13 +125,13 @@ header {
display: block; display: block;
cursor: pointer; cursor: pointer;
img { img {
border-radius: 4px; @include border-radius(4px);
right: 5px; right: 5px;
position: absolute; position: absolute;
width: 31px; width: 28px;
height: 31px; height: 28px;
display: block; display: block;
top: 0; top: 2px;
&:after { &:after {
content: " "; content: " ";
display: block; display: block;
@ -186,7 +186,7 @@ header {
width: 100px; width: 100px;
position: absolute; position: absolute;
right: 10px; right: 10px;
top: 46px; top: 42px;
margin-top: 0; margin-top: 0;
float: right; float: right;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);

View file

@ -1,17 +1,17 @@
/** /**
* This file represent some UI that can be changed * This file represent some UI that can be changed
* during web app restyle or theme select. * during web app restyle or theme select.
* *
*/ */
.ui_basic { .ui_basic {
/* /*
* Common styles * Common styles
* *
*/ */
a { a {
color: $link_color; color: $link_color;
&:hover { &:hover {
text-decoration:none; text-decoration:none;
color: $blue_link; color: $blue_link;
} }
} }

View file

@ -1,7 +1,7 @@
/** /**
* This file represent some UI that can be changed * This file represent some UI that can be changed
* during web app restyle or theme select. * during web app restyle or theme select.
* *
* Next items should be placed there * Next items should be placed there
* - link colors * - link colors
* - header restyles * - header restyles
@ -13,20 +13,20 @@
* Application Header * Application Header
* *
*/ */
header { header {
background: #474D57 url('bg-header.png') repeat-x bottom; background: #474D57 url('bg-header.png') repeat-x bottom;
box-shadow:none; box-shadow:none;
border-bottom: 1px solid #444; border-bottom: 1px solid #444;
.fbtn { .fbtn {
.btn { .btn {
margin-left:8px; margin-left:8px;
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595D63), to(#31363E)); background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595D63), to(#31363E));
background-image: -webkit-linear-gradient(#595D63 6.6%, #31363E); background-image: -webkit-linear-gradient(#595D63 6.6%, #31363E);
background-image: -moz-linear-gradient(#595D63 6.6%, #31363E); background-image: -moz-linear-gradient(#595D63 6.6%, #31363E);
background-image: -o-linear-gradient(#595D63 6.6%, #31363E); background-image: -o-linear-gradient(#595D63 6.6%, #31363E);
font-size: 12px; font-size: 12px;
&:hover { &:hover {
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595D63), to(#2C2F35)); background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595D63), to(#2C2F35));
background-image: -webkit-linear-gradient(#595D63 6.6%, #2C2F35); background-image: -webkit-linear-gradient(#595D63 6.6%, #2C2F35);
background-image: -moz-linear-gradient(#595D63 6.6%, #202227); background-image: -moz-linear-gradient(#595D63 6.6%, #202227);
@ -39,10 +39,10 @@
text-shadow: 0 -1px 0 #000000; text-shadow: 0 -1px 0 #000000;
} }
} }
.search { .search {
float: right; float: right;
margin-right: 55px; margin-right: 45px;
.search-input { .search-input {
border: 1px solid rgba(0, 0, 0, 0.7); border: 1px solid rgba(0, 0, 0, 0.7);
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 2px 2px rgba(0, 0, 0, 0.4) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 2px 2px rgba(0, 0, 0, 0.4) inset;
background-color: #D2D5DA; background-color: #D2D5DA;
@ -57,8 +57,8 @@
color: #666; color: #666;
} }
.app_logo { .app_logo {
a { a {
h1 { h1 {
background: url('images.png') no-repeat -3px -6px; background: url('images.png') no-repeat -3px -6px;
width: 65px; width: 65px;
height: 26px; height: 26px;

View file

@ -91,7 +91,7 @@
*/ */
.search { .search {
float: right; float: right;
margin-right: 55px; margin-right: 45px;
.search-input { .search-input {
border: 1px solid rgba(0, 0, 0, 0.7); border: 1px solid rgba(0, 0, 0, 0.7);
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 2px 2px rgba(0, 0, 0, 0.4) inset; 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 @@
.account-box { .account-box {
top:6px; top:6px;
img { img {
top:1px;
right: 5px; right: 5px;
width: 26px; width: 26px;
height: 26px; height: 26px;

View file

@ -110,7 +110,7 @@ module ApplicationHelper
when :admin_root; controller.controller_name == "dashboard" when :admin_root; controller.controller_name == "dashboard"
when :admin_users; controller.controller_name == 'users' when :admin_users; controller.controller_name == 'users'
when :admin_projects; controller.controller_name == "projects" when :admin_projects; controller.controller_name == "projects"
when :admin_emails; controller.controller_name == 'mailer' when :admin_hooks; controller.controller_name == 'hooks'
when :admin_resque; controller.controller_name == 'resque' when :admin_resque; controller.controller_name == 'resque'
when :admin_logs; controller.controller_name == 'logs' when :admin_logs; controller.controller_name == 'logs'

View file

@ -12,53 +12,10 @@ module GitlabMarkdownHelper
"{gfm-extraction-#{md5}}" "{gfm-extraction-#{md5}}"
end end
# match 1 2 3 4 5 6 # TODO: add popups with additional information
text.gsub!(/(\W)?(@([\w\._]+)|[#!$](\d+)|([\h]{6,40}))(\W)?/) do |match|
prefix = $1
reference = $2
user_name = $3
issue_id = $4
merge_request_id = $4
snippet_id = $4
commit_id = $5
suffix = $6
# TODO: add popups with additional information parser = Gitlab::Markdown.new(@project, html_options)
ref_link = case reference text = parser.parse(text)
# team member: @foo
when /^@/
user = @project.users.where(name: user_name).first
member = @project.users_projects.where(user_id: user).first if user
link_to("@#{user_name}", project_team_member_path(@project, member), html_options.merge(class: "gfm gfm-team_member #{html_options[:class]}")) if member
# issue: #123
when /^#/
# avoid HTML entities
unless prefix.try(:end_with?, "&") && suffix.try(:start_with?, ";")
issue = @project.issues.where(id: issue_id).first
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
end
# merge request: !123
when /^!/
merge_request = @project.merge_requests.where(id: merge_request_id).first
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
# snippet: $123
when /^\$/
snippet = @project.snippets.where(id: snippet_id).first
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
# commit: 123456...
when /^\h/
commit = @project.commit(commit_id)
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
end # case
ref_link.nil? ? match : "#{prefix}#{ref_link}#{suffix}"
end # gsub
# Insert pre block extractions # Insert pre block extractions
text.gsub!(/\{gfm-extraction-(\h{32})\}/) do text.gsub!(/\{gfm-extraction-(\h{32})\}/) do

View file

@ -1,5 +1,4 @@
.alert-message.block-message.error %h1 Access Denied
%h3 Access Denied %hr
%hr %h2 You are not allowed to access this page.
%p You are not allowed to access this page. %p Read more about project permissions #{link_to "here", help_permissions_path, class: "vlink"}
%p Read more about project permissions #{link_to "here", help_permissions_path, class: "vlink"}

View file

@ -1,9 +1,6 @@
.alert-message.block-message.error %h1 404
%h3 Git Resource Not found %hr
%hr %h2 Git Resource Not found
%p %p
Application can't get access to some Application can't get access to some branch or commit in your repository. It
%span.label branch may have been moved.
or
%span.label commit
in your repository. It may have been moved.

View file

@ -1,27 +1,27 @@
.alert-message.block-message.error %h1 Git Error
%h3 Gitolite Error %hr
%h4 Application can't get access to your gitolite system. %h2 Gitlab was unable to access your Gitolite system.
%h4 Tips for Administrator: .git_error_tips
%h4 Tips for Administrator:
%ul %ol
%li %li
%p %p
Check git logs in admin area Check git logs in admin area
%li %li
%p %p
Check config/gitlab.yml for correct settings. Check config/gitlab.yml for correct settings.
%li %li
%p %p
Diagnostic tool: Diagnostic tool:
%pre
bundle exec rake gitlab:app:status RAILS_ENV=production
%li
%p
Permissions:
%pre %pre
bundle exec rake gitlab:app:status RAILS_ENV=production = preserve do
%li sudo chmod -R 770 /home/git/repositories/
%p sudo chown -R git:git /home/git/repositories/
Permissions: sudo chown gitlab:gitlab /home/git/repositories/**/hooks/post-receive
%pre
= preserve do
sudo chmod -R 770 /home/git/repositories/
sudo chown -R git:git /home/git/repositories/
sudo chown gitlab:gitlab /home/git/repositories/**/hooks/post-receive

View file

@ -1,5 +1,4 @@
.alert-message.block-message.error %h1 404
%h3 Not found %hr
%hr %h2 The resource you were looking for doesn't exist.
%p The resource you were looking for doesn't exist. %p You may have mistyped the address or the page may have moved.
%p You may have mistyped the address or it may have been removed.

View file

@ -14,7 +14,7 @@
= link_to "Users", admin_users_path = link_to "Users", admin_users_path
%li{class: tab_class(:admin_logs)} %li{class: tab_class(:admin_logs)}
= link_to "Logs", admin_logs_path = link_to "Logs", admin_logs_path
%li{class: tab_class(:admin_emails)} %li{class: tab_class(:admin_hooks)}
= link_to "Hooks", admin_hooks_path = link_to "Hooks", admin_hooks_path
%li{class: tab_class(:admin_resque)} %li{class: tab_class(:admin_resque)}
= link_to "Resque", admin_resque_path = link_to "Resque", admin_resque_path

View file

@ -6,5 +6,5 @@
= render "layouts/head_panel", title: "" = render "layouts/head_panel", title: ""
.container .container
.content .content
%br %center.padded.prepend-top-20
%h3= yield = yield

98
lib/gitlab/markdown.rb Normal file
View file

@ -0,0 +1,98 @@
module Gitlab
# Custom parsing for Gitlab-flavored Markdown
#
# Examples
#
# >> m = Markdown.new(...)
#
# >> m.parse("Hey @david, can you fix this?")
# => "Hey <a href="/gitlab/team_members/1">@david</a>, can you fix this?"
#
# >> m.parse("Commit 35d5f7c closes #1234")
# => "Commit <a href="/gitlab/commits/35d5f7c">35d5f7c</a> closes <a href="/gitlab/issues/1234">#1234</a>"
class Markdown
include Rails.application.routes.url_helpers
include ActionView::Helpers
REFERENCE_PATTERN = %r{
([^\w&;])? # Prefix (1)
( # Reference (2)
@([\w\._]+) # User name (3)
|[#!$](\d+) # Issue/MR/Snippet ID (4)
|([\h]{6,40}) # Commit ID (5)
)
([^\w&;])? # Suffix (6)
}x.freeze
attr_reader :html_options
def initialize(project, html_options = {})
@project = project
@html_options = html_options
end
def parse(text)
text.gsub(REFERENCE_PATTERN) do |match|
prefix = $1 || ''
reference = $2
identifier = $3 || $4 || $5
suffix = $6 || ''
if ref_link = reference_link(reference, identifier)
prefix + ref_link + suffix
else
match
end
end
end
private
# Private: Dispatches to a dedicated processing method based on reference
#
# reference - Object reference ("@1234", "!567", etc.)
# identifier - Object identifier (Issue ID, SHA hash, etc.)
#
# Returns string rendered by the processing method
def reference_link(reference, identifier)
case reference
when /^@/ then reference_user(identifier)
when /^#/ then reference_issue(identifier)
when /^!/ then reference_merge_request(identifier)
when /^\$/ then reference_snippet(identifier)
when /^\h/ then reference_commit(identifier)
end
end
def reference_user(identifier)
if user = @project.users.where(name: identifier).first
member = @project.users_projects.where(user_id: user).first
link_to("@#{user.name}", project_team_member_path(@project, member), html_options.merge(class: "gfm gfm-team_member #{html_options[:class]}")) if member
end
end
def reference_issue(identifier)
if issue = @project.issues.where(id: identifier).first
link_to("##{issue.id}", project_issue_path(@project, issue), html_options.merge(title: "Issue: #{issue.title}", class: "gfm gfm-issue #{html_options[:class]}"))
end
end
def reference_merge_request(identifier)
if merge_request = @project.merge_requests.where(id: identifier).first
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]}"))
end
end
def reference_snippet(identifier)
if snippet = @project.snippets.where(id: identifier).first
link_to("$#{snippet.id}", project_snippet_path(@project, snippet), html_options.merge(title: "Snippet: #{snippet.title}", class: "gfm gfm-snippet #{html_options[:class]}"))
end
end
def reference_commit(identifier)
if commit = @project.commit(identifier)
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]}"))
end
end
end
end

View file

@ -7,7 +7,7 @@
<body> <body>
<h1>404</h1> <h1>404</h1>
<div class="alert-message block-message error"> <div>
<h2>The page you were looking for doesn't exist.</h2> <h2>The page you were looking for doesn't exist.</h2>
<p>You may have mistyped the address or the page may have moved.</p> <p>You may have mistyped the address or the page may have moved.</p>
</div> </div>

View file

@ -8,7 +8,7 @@
<body> <body>
<!-- This file lives in public/422.html --> <!-- This file lives in public/422.html -->
<h1>422</h1> <h1>422</h1>
<div class="alert-message block-message error"> <div>
<h2>The change you wanted was rejected.</h2> <h2>The change you wanted was rejected.</h2>
<p>Maybe you tried to change something you didn't have access to.</p> <p>Maybe you tried to change something you didn't have access to.</p>
</div> </div>

View file

@ -8,7 +8,7 @@
<body> <body>
<!-- This file lives in public/500.html --> <!-- This file lives in public/500.html -->
<h1>500</h1> <h1>500</h1>
<div class="alert-message block-message error"> <div>
<h2>We're sorry, but something went wrong.</h2> <h2>We're sorry, but something went wrong.</h2>
<p>We've been notified about this issue and we'll take a look at it shortly.</p> <p>We've been notified about this issue and we'll take a look at it shortly.</p>
</div> </div>