Commit 627efddf6343735ed95e49ac9b71d7929c879ea3

Authored by randx
1 parent 2bad798e

migrated to bootstrap 2

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 {
... ...
app/assets/stylesheets/gitlab_bootstrap.scss 0 → 100644
... ... @@ -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
... ... @@ -123,7 +123,7 @@ module ApplicationHelper
123 123 end
124 124  
125 125 def app_theme
126   - if current_user && current_user.theme_id == 1
  126 + if true#current_user && current_user.theme_id == 1
127 127 "ui_basic"
128 128 else
129 129 "ui_mars"
... ...
app/views/admin/projects/show.html.haml
... ... @@ -31,7 +31,7 @@
31 31 = @admin_project.description
32 32  
33 33  
34   -.span-14
  34 +.span12
35 35  
36 36 %h3
37 37 Team
... ...
app/views/commits/_head.html.haml
1   -%ul.tabs
  1 +%ul.nav.nav-tabs
2 2 %li
3 3 = form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form" do
4 4 = select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select"
... ...
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
1   -.tabs
  1 +%ul.nav.nav-tabs
2 2 %li{:class => "#{'active' if current_page?(project_issues_path(@project))}"}
3 3 = link_to project_issues_path(@project), :class => "tab" do
4 4 Browse Issues
... ...
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
1 1 / Page Header
2 2 %header.top_panel_holder
3   - .wrapper
  3 + .container
4 4 .top_panel_content
5 5 %div.app_logo
6 6 = link_to root_path, :class => "home", :title => "Home" do
... ...
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
... ... @@ -8,7 +8,7 @@
8 8  
9 9 .ui-box
10 10 .title
11   - %ul.pills
  11 + %ul.nav.nav-pills
12 12 %li{:class => ("active" if (params[:f] == "0" || !params[:f]))}
13 13 = link_to project_merge_requests_path(@project, :f => 0) do
14 14 Open
... ...
app/views/merge_requests/show.html.haml
... ... @@ -56,7 +56,7 @@
56 56 = render "merge_requests/commits"
57 57  
58 58 - unless @commits.empty?
59   - .tabs
  59 + .nav.nav-tabs
60 60 %li.active
61 61 = link_to "#notes", :class => "merge-notes-tab tab" do
62 62 Notes
... ...
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
... ... @@ -7,7 +7,7 @@
7 7 %br
8 8 %div.ui-box
9 9 .title
10   - %ul.pills
  10 + %ul.nav.nav-pills
11 11 %li{:class => ("active" if (params[:f] == "0" || !params[:f]))}
12 12 = link_to project_milestones_path(@project, :f => 0) do
13 13 Active
... ...
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
1   -%ul.tabs
  1 +%ul.nav.nav-tabs
2 2 %li{ :class => "#{'active' if current_page?(project_path(@project)) }" }
3 3 = link_to project_path(@project), :class => "activities-tab tab" do
4 4 Show
... ...
app/views/projects/index.html.haml
1 1 - if @projects.any?
2 2 .row
3   - .span11
  3 + .span8
4 4 = render @events
5   - .span5.right
  5 + .span4.right
6 6 %div.leftbar.ui-box
7 7 %h5
8 8 Projects
... ...
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
1   -%ul.tabs
  1 +%ul.nav.nav-tabs
2 2 %li
3 3 = form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form", :remote => true do
4 4 = select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select"
... ...
app/views/repositories/_branches_head.html.haml
1 1 = render "commits/head"
2   -%ul.pills
  2 +%ul.nav.nav-pills
3 3 %li{:class => ("active" if current_page?(project_repository_path(@project)))}
4 4 = link_to project_repository_path(@project) do
5 5 Recent
... ...
app/views/repositories/branches.html.haml
1 1 = render "repositories/branches_head"
2 2 - unless @branches.empty?
3   - %table.zebra-striped.borders
  3 + %table.table-striped.borders
4 4 %tbody
5 5 - @branches.each do |branch|
6 6 = render "repositories/branch", :branch => branch
... ...
app/views/repositories/tags.html.haml
1 1 = render "commits/head"
2 2 - unless @tags.empty?
3   - %table.zebra-striped.borders
  3 + %table.table-striped.borders
4 4 - @tags.each do |tag|
5 5 %tr
6 6 %td
... ...
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 &larr; 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 =&gt; 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 =&gt; 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 =&gt; 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 =&gt; 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 =&gt; 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 =&gt; 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 =&gt; 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 =&gt; 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|
... ...