Commit 8ebfae9a0770ce1ba5afa121a484f70ab9ce9110

Authored by Dmitriy Zaporozhets
2 parents 6572d96b b51252e6

Merge branch 'bootstrap'

Conflicts:
	Gemfile
	app/views/commits/_commits.html.haml
	app/views/projects/empty.html.haml
Showing 127 changed files with 2431 additions and 2958 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 127 files displayed.

@@ -29,6 +29,7 @@ gem "httparty" @@ -29,6 +29,7 @@ gem "httparty"
29 gem "charlock_holmes" 29 gem "charlock_holmes"
30 gem "foreman" 30 gem "foreman"
31 gem "omniauth-ldap" 31 gem "omniauth-ldap"
  32 +gem 'bootstrap-sass'
32 33
33 group :assets do 34 group :assets do
34 gem "sass-rails", "~> 3.1.0" 35 gem "sass-rails", "~> 3.1.0"
@@ -67,6 +67,8 @@ GEM @@ -67,6 +67,8 @@ GEM
67 awesome_print (0.4.0) 67 awesome_print (0.4.0)
68 bcrypt-ruby (3.0.1) 68 bcrypt-ruby (3.0.1)
69 blankslate (2.1.2.4) 69 blankslate (2.1.2.4)
  70 + bootstrap-sass (1.4.4)
  71 + sass-rails (~> 3.1)
70 builder (3.0.0) 72 builder (3.0.0)
71 capybara (1.1.2) 73 capybara (1.1.2)
72 mime-types (>= 1.16) 74 mime-types (>= 1.16)
@@ -226,12 +228,11 @@ GEM @@ -226,12 +228,11 @@ GEM
226 blankslate (>= 2.1.2.3) 228 blankslate (>= 2.1.2.3)
227 ffi (~> 1.0.7) 229 ffi (~> 1.0.7)
228 rubyzip (0.9.4) 230 rubyzip (0.9.4)
229 - sass (3.1.10)  
230 - sass-rails (3.1.4) 231 + sass (3.1.12)
  232 + sass-rails (3.1.5)
231 actionpack (~> 3.1.0) 233 actionpack (~> 3.1.0)
232 railties (~> 3.1.0) 234 railties (~> 3.1.0)
233 - sass (>= 3.1.4)  
234 - sprockets (~> 2.0.0) 235 + sass (~> 3.1.10)
235 tilt (~> 1.3.2) 236 tilt (~> 1.3.2)
236 seed-fu (2.1.0) 237 seed-fu (2.1.0)
237 activerecord (~> 3.1.0) 238 activerecord (~> 3.1.0)
@@ -299,6 +300,7 @@ DEPENDENCIES @@ -299,6 +300,7 @@ DEPENDENCIES
299 autotest 300 autotest
300 autotest-rails 301 autotest-rails
301 awesome_print 302 awesome_print
  303 + bootstrap-sass
302 capybara 304 capybara
303 carrierwave 305 carrierwave
304 charlock_holmes 306 charlock_holmes
app/assets/javascripts/issues.js
1 function switchToNewIssue(form){ 1 function switchToNewIssue(form){
2 - $("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){  
3 - $(".project-content").append(form); 2 + $(".issues_content").hide("fade", { direction: "left" }, 150, function(){
  3 + $(".issues_content").after(form);
4 $('select#issue_assignee_id').chosen(); 4 $('select#issue_assignee_id').chosen();
5 - $("#new_issue_dialog").show("slide", { direction: "right" }, 150); 5 + $("#new_issue_dialog").show("fade", { direction: "right" }, 150);
6 $('.top-tabs .add_new').hide(); 6 $('.top-tabs .add_new').hide();
7 }); 7 });
8 } 8 }
9 9
10 function switchToEditIssue(form){ 10 function switchToEditIssue(form){
11 - $("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){  
12 - $(".project-content").append(form); 11 + $(".issues_content").hide("fade", { direction: "left" }, 150, function(){
  12 + $(".issues_content").after(form);
13 $('select#issue_assignee_id').chosen(); 13 $('select#issue_assignee_id').chosen();
14 - $("#edit_issue_dialog").show("slide", { direction: "right" }, 150);  
15 - $('.top-tabs .add_new').hide(); 14 + $("#edit_issue_dialog").show("fade", { direction: "right" }, 150);
  15 + $('.add_new').hide();
16 }); 16 });
17 } 17 }
18 18
@@ -25,11 +25,11 @@ function switchFromEditIssue(){ @@ -25,11 +25,11 @@ function switchFromEditIssue(){
25 } 25 }
26 26
27 function backToIssues(){ 27 function backToIssues(){
28 - $("#edit_issue_dialog, #new_issue_dialog").hide("slide", { direction: "right" }, 150, function(){  
29 - $("#issues-table-holder").show("slide", { direction: "left" }, 150, function() { 28 + $("#edit_issue_dialog, #new_issue_dialog").hide("fade", { direction: "right" }, 150, function(){
  29 + $(".issues_content").show("fade", { direction: "left" }, 150, function() {
30 $("#edit_issue_dialog").remove(); 30 $("#edit_issue_dialog").remove();
31 $("#new_issue_dialog").remove(); 31 $("#new_issue_dialog").remove();
32 - $('.top-tabs .add_new').show(); 32 + $('.add_new').show();
33 }); 33 });
34 }); 34 });
35 } 35 }
app/assets/javascripts/merge_requests.js
@@ -4,17 +4,17 @@ var MergeRequest = { @@ -4,17 +4,17 @@ var MergeRequest = {
4 4
5 init: 5 init:
6 function() { 6 function() {
7 - $(".merge-tabs a").live("click", function() {  
8 - $(".merge-tabs a").removeClass("active");  
9 - $(this).addClass("active"); 7 + $(".tabs a").live("click", function() {
  8 + $(".tabs a").parent().removeClass("active");
  9 + $(this).parent().addClass("active");
10 }); 10 });
11 11
12 - $(".merge-tabs a.merge-notes-tab").live("click", function() { 12 + $(".tabs a.merge-notes-tab").live("click", function() {
13 $(".merge-request-commits, .merge-request-diffs").hide(); 13 $(".merge-request-commits, .merge-request-diffs").hide();
14 $(".merge-request-notes").show(); 14 $(".merge-request-notes").show();
15 }); 15 });
16 16
17 - $(".merge-tabs a.merge-commits-tab").live("click", function() { 17 + $(".tabs a.merge-commits-tab").live("click", function() {
18 if(!MergeRequest.commits_loaded) { 18 if(!MergeRequest.commits_loaded) {
19 MergeRequest.loadCommits(); 19 MergeRequest.loadCommits();
20 } 20 }
@@ -22,7 +22,7 @@ var MergeRequest = { @@ -22,7 +22,7 @@ var MergeRequest = {
22 $(".merge-request-commits").show(); 22 $(".merge-request-commits").show();
23 }); 23 });
24 24
25 - $(".merge-tabs a.merge-diffs-tab").live("click", function() { 25 + $(".tabs a.merge-diffs-tab").live("click", function() {
26 if(!MergeRequest.diffs_loaded) { 26 if(!MergeRequest.diffs_loaded) {
27 MergeRequest.loadDiff(); 27 MergeRequest.loadDiff();
28 } 28 }
app/assets/javascripts/tree.js
@@ -5,21 +5,24 @@ @@ -5,21 +5,24 @@
5 var Tree = { 5 var Tree = {
6 init: 6 init:
7 function() { 7 function() {
8 - (new Image).src = "ajax-loader-facebook.gif";  
9 -  
10 - $('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live("click", function() {  
11 - history.pushState({ path: this.path }, '', this.href) 8 + $('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live("click", function() {
12 $("#tree-content-holder").hide("slide", { direction: "left" }, 150) 9 $("#tree-content-holder").hide("slide", { direction: "left" }, 150)
13 }) 10 })
14 11
15 - $("#tree-slider tr.tree-item").live('click', function(e){ 12 + $('.project-refs-form').live({
  13 + "ajax:beforeSend": function() {
  14 + $("#tree-content-holder").hide("slide", { direction: "left" }, 150);
  15 + }
  16 + })
  17 +
  18 + $("#tree-slider .tree-item").live('click', function(e){
16 if(e.target.nodeName != "A") { 19 if(e.target.nodeName != "A") {
17 - link = $(this).find("td.tree-item-file-name a"); 20 + link = $(this).find(".tree-item-file-name a");
18 link.trigger("click"); 21 link.trigger("click");
19 } 22 }
20 }); 23 });
21 24
22 - $('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live({ 25 + $('#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form').live({
23 "ajax:beforeSend": function() { $('.tree_progress').addClass("loading"); }, 26 "ajax:beforeSend": function() { $('.tree_progress').addClass("loading"); },
24 "ajax:complete": function() { $('.tree_progress').removeClass("loading"); } 27 "ajax:complete": function() { $('.tree_progress').removeClass("loading"); }
25 }); 28 });
app/assets/stylesheets/commits.css.scss
1 -/* Commit Page */  
2 -body.project-page.commits-page .commit-info{float: right;}  
3 -body.project-page.commits-page .commit-info data{  
4 - padding: 4px 10px;  
5 - font-size: 11px;  
6 -}  
7 -body.project-page.commits-page .commit-info data.commit-button{  
8 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));  
9 - background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);  
10 - background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);  
11 - background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);  
12 - box-shadow: 0 -1px 0 white inset;  
13 - display: block;  
14 - border: 1px solid #eee;  
15 - border-radius: 5px;  
16 - margin-bottom: 2px;  
17 - position: relative;  
18 - padding-right: 20px;  
19 -} 1 +/**
  2 + *
  3 + * COMMIT SHOw
  4 + *
  5 + */
20 6
21 -body.project-page.commits-page .commit-button i{  
22 - background: url('images.png') no-repeat -138px -27px;  
23 - width: 6px;  
24 - height: 9px;  
25 - float: right;  
26 - position: absolute;  
27 - top: 6px;  
28 - right: 5px;  
29 -}  
30 -body.project-page.commits-page .commits-date {display: block; width: 100%; margin-bottom: 20px}  
31 -body.project-page.commits-page .commits-date .data {padding: 0}  
32 -body.project-page.commits-page a.commit{padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}  
33 -body.project-page.commits-page .commits-date a.commit {padding: 10px; border-bottom: none; overflow: hidden; display: block;}  
34 -body.project-page.commits-page .commits-date a.commit:last-child{border-bottom: 0}  
35 -body.project-page.commits-page .commits-date a.commit img{float: left; margin-right: 10px;}  
36 -body.project-page.commits-page .commits-date a.commit span.commit-title{display: block;}  
37 -body.project-page.commits-page .commits-date a.commit span.commit-title{margin-bottom: 10px}  
38 -body.project-page.commits-page .commits-date a.commit span.commit-author{color: #999; font-weight: normal; font-style: italic;}  
39 -body.project-page.commits-page .commits-date a.commit span.commit-author strong{font-weight: bold; font-style: normal;}  
40 7
41 -/* eo Commit Page */  
42 -/** Commit diff view **/  
43 .diff_file { 8 .diff_file {
44 border:1px solid #CCC; 9 border:1px solid #CCC;
45 margin-bottom:1em; 10 margin-bottom:1em;
@@ -72,6 +37,11 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{ @@ -72,6 +37,11 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{
72 border:none; 37 border:none;
73 margin:0px; 38 margin:0px;
74 padding:0px; 39 padding:0px;
  40 + tr {
  41 + td {
  42 + font-size:12px;
  43 + }
  44 + }
75 } 45 }
76 .old_line, .new_line { 46 .old_line, .new_line {
77 margin:0px; 47 margin:0px;
@@ -110,14 +80,6 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{ @@ -110,14 +80,6 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{
110 } 80 }
111 } 81 }
112 82
113 -pre.commit_message {  
114 - white-space: pre-wrap;  
115 - font-family: "Helvetica", sans-serif;  
116 - color: #555;  
117 - font-weight:bold;  
118 - font-size:15px;  
119 -}  
120 -  
121 /** COMMIT BLOCK **/ 83 /** COMMIT BLOCK **/
122 .commit-title{display: block;} 84 .commit-title{display: block;}
123 .commit-title{margin-bottom: 10px} 85 .commit-title{margin-bottom: 10px}
@@ -147,45 +109,28 @@ ul.bordered-list li:last-child { border:none } @@ -147,45 +109,28 @@ ul.bordered-list li:last-child { border:none }
147 } 109 }
148 } 110 }
149 111
150 -.per_line_form {  
151 - font-family: "Helvetica", sans-serif;  
152 - background: #2FA0BB;  
153 -  
154 - td {  
155 - padding:0;  
156 - }  
157 -  
158 - form {  
159 - margin:5px;  
160 - width: 756px;  
161 - border: 1px solid #CCC;  
162 - padding: 20px;  
163 - background: white;  
164 - }  
165 -}  
166 -  
167 112
168 tr.line_notes_row { 113 tr.line_notes_row {
169 - font-family: "Helvetica", sans-serif;  
170 - &:hover {  
171 - background:none;  
172 - }  
173 - td {  
174 - margin:0px;  
175 - padding:0px;  
176 - border-bottom:1px solid #DEE2E3;  
177 -  
178 -  
179 - ul {  
180 - display:block;  
181 - list-style:none;  
182 - margin:0px;  
183 - padding:0px; 114 + border-bottom:1px solid #DDD;
  115 +}
184 116
185 - li {  
186 - border-top:1px solid #DEE2E3;  
187 - padding:10px;  
188 - }  
189 - } 117 +/** FLASH **/
  118 +#flash_container {
  119 + height:45px;
  120 + position:fixed;
  121 + z-index:10001;
  122 + top:0px;
  123 + width:100%;
  124 + margin-bottom:15px;
  125 + overflow:hidden;
  126 + background:white;
  127 + cursor:pointer;
  128 + border-bottom:1px solid #777;
  129 +
  130 + h4 {
  131 + color:#444;
  132 + font-size:22px;
  133 + padding-top:5px;
  134 + margin:2px;
190 } 135 }
191 } 136 }
app/assets/stylesheets/common.scss
  1 +@import "bootstrap";
  2 +
  3 +/** GITLAB colors **/
1 $text_color:#222; 4 $text_color:#222;
2 $lite_text_color: #666; 5 $lite_text_color: #666;
3 $link_color:#111; 6 $link_color:#111;
@@ -6,10 +9,13 @@ $active_bg_color:#79C3E0; @@ -6,10 +9,13 @@ $active_bg_color:#79C3E0;
6 $active_bd_color: #2FA0BB; 9 $active_bd_color: #2FA0BB;
7 $border_color:#CCC; 10 $border_color:#CCC;
8 $lite_border_color:#EEE; 11 $lite_border_color:#EEE;
9 -$app_width:980px; 12 +$min_app_width:980px;
  13 +$max_app_width:980px;
10 $app_padding:20px; 14 $app_padding:20px;
11 $bg_color: #FFF; 15 $bg_color: #FFF;
12 $styled_border_color: #2FA0BB; 16 $styled_border_color: #2FA0BB;
  17 +$color: "#4BB8D2";
  18 +$blue_link: "#2fa0bb";
13 19
14 /** MIXINS **/ 20 /** MIXINS **/
15 @mixin round-borders-bottom($radius) { 21 @mixin round-borders-bottom($radius) {
@@ -81,36 +87,103 @@ $styled_border_color: #2FA0BB; @@ -81,36 +87,103 @@ $styled_border_color: #2FA0BB;
81 .no-padding { 87 .no-padding {
82 padding:0 !important; 88 padding:0 !important;
83 } 89 }
  90 +.underlined {
  91 + border-bottom: 1px solid $border_color;
  92 +}
  93 +
  94 +/** LAYOUT **/
  95 +
  96 +.container-fluid {
  97 + min-width:$min_app_width;
  98 + max-width:$max_app_width;
  99 + margin:auto;
  100 + margin-top:51px;
  101 +}
  102 +
  103 +.container-fluid > .sidebar {
  104 + width: 140px;
  105 + border-right: 1px solid $border_color;
  106 + height:100%;
  107 + min-height:450px;
  108 +
  109 + .fixed {
  110 + position:fixed;
  111 + }
  112 +
  113 + aside a {
  114 + display:block;
  115 + position:relative;
  116 + padding:15px 10px;
  117 + margin:10px 0 0 0;
  118 + font-size:13px;
  119 + font-weight:bold;
  120 + color:#444;
  121 + }
  122 +}
  123 +
  124 +.container-fluid > .content {
  125 + margin-left: 160px;
  126 + margin-top:20px;
  127 +}
  128 +
  129 +aside.projects,
  130 +aside.project-side
  131 +{
  132 + margin-left: 0;
  133 + padding-left: 20px;
  134 +}
84 135
85 -/* General */ 136 +img.avatar {
  137 + float:left;
  138 + margin-right:15px;
  139 + width:40px;
  140 + -webkit-border-radius: 4px;
  141 + -moz-border-radius: 4px;
  142 + border-radius: 4px;
  143 +}
86 144
87 -body.collapsed {  
88 - background-color: $bg_color; 145 +img.lil_av {
  146 + padding-left: 5px;
  147 + position: relative;
  148 + top: 3px;
  149 +}
89 150
90 - #container{  
91 - margin: auto;  
92 - margin-top:51px;  
93 - width: $app_width;  
94 - border-top: 0;  
95 - background-color: $bg_color; 151 +.media-grid {
  152 + h3, h2 , h4 {
  153 + &.media_h {
  154 + padding-left:10px;
  155 + float:left;
  156 + }
96 } 157 }
97 } 158 }
98 159
99 -a {  
100 - color: $link_color; 160 +.wll {
  161 + background-color: #FFF;
  162 + margin-bottom: 10px;
  163 + padding: 5px;
  164 + min-height: 20px;
  165 + border-bottom: 1px solid #eee;
  166 + border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  167 + .author { color: #999; }
  168 + &:last-child { border:none }
  169 + p { padding-top:5px;}
  170 +}
  171 +
  172 +.author_link {
  173 + color: $active_link_color;
101 } 174 }
102 175
103 -@import "style.scss"; 176 +@import "reset_bootstrap.scss";
  177 +@import "top_panel.scss";
104 @import "projects.css.scss"; 178 @import "projects.css.scss";
105 @import "commits.css.scss"; 179 @import "commits.css.scss";
106 -@import "notes.css.scss"; 180 +@import "tree.scss";
  181 +@import "issues.css.scss";
107 @import "merge_requests.css.scss"; 182 @import "merge_requests.css.scss";
  183 +@import "notes.css.scss";
  184 +@import "login.scss";
  185 +
  186 +/** CODE HIGHTLIGHT **/
108 @import "highlight.css.scss"; 187 @import "highlight.css.scss";
109 @import "highlight.black.css.scss"; 188 @import "highlight.black.css.scss";
110 -@import "issues.css.scss";  
111 -@import "commits.css.scss";  
112 189
113 -@import "top_panel.scss";  
114 -@import "dashboard.scss";  
115 -@import "tree.scss";  
116 -@import "tags.scss";  
app/assets/stylesheets/dashboard.scss
@@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
1 -body.dashboard-page h2.icon span{ background-position: 9px -69px; }  
2 -body.dashboard-page header{margin-bottom: 0}  
3 -body.dashboard-page .news-feed{margin-left: 285px; min-height: 600px; margin-top: 20px; margin-right:2px; padding:20px;}  
4 -body.dashboard-page .dashboard-content{ position: relative; float: left; width: 100%; height: 100%; }  
5 -body.dashboard-page .news-feed h2{float: left;}  
6 -  
7 -body.dashboard-page aside{  
8 - min-height: 820px; position: relative; top: 0; bottom: 0; right: 0; width: 260px; float: left; border-right: 1px solid $border_color; padding:20px; padding-right:0;  
9 - h4{margin: 0; border-bottom: 1px solid #ccc; padding: 20px 20px 20px 0px; font-size: 11px; font-weight: bold; text-transform: uppercase;}  
10 - h4 a.button-small{float: right; text-transform: none; border-radius: 4px; margin-right: 2%; margin-top: -4px; display: block;}  
11 - .project-list {list-style: none; margin: 0; padding: 0;}  
12 - .project-list li a {background: white; color: #{$blue_link}; display: block; border-bottom: 1px solid $lite_border_color; padding: 14px 6% 14px 0px;}  
13 - .project-list li a span.project-name{font-size: 14px; display: block; margin-bottom: 8px}  
14 - .project-list li a span.time{color: #666; font-weight: normal; font-size: 11px}  
15 - .project-list li a span.arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999}  
16 -}  
17 -  
18 -body.dashboard-page .news-feed .project-updates {  
19 - margin-bottom: 20px; display: block; width: 100%;  
20 - .data{ padding: 0}  
21 - a.project-update {padding: 10px; overflow: hidden; display: block;}  
22 - a.project-update:last-child{border-bottom: 0}  
23 - a.project-update img{float: left; margin-right: 10px;}  
24 - a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}  
25 - a.project-update span.update-title{margin-bottom: 10px}  
26 - a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}  
27 - a.project-update span.update-author strong{font-weight: bold; font-style: normal;}  
28 -}  
29 -/* eo Dashboard Page */  
30 -  
app/assets/stylesheets/highlight.black.css.scss
1 .black .highlighttable { 1 .black .highlighttable {
2 background: #333; 2 background: #333;
  3 + td.linenos { border:none; }
3 pre { color: #eee } 4 pre { color: #eee }
4 .highlight { background: #333; border-left:1px solid #555; } 5 .highlight { background: #333; border-left:1px solid #555; }
5 6
app/assets/stylesheets/highlight.css.scss
@@ -25,7 +25,13 @@ td.linenos{ @@ -25,7 +25,13 @@ td.linenos{
25 padding:10px 0px 0px 10px; 25 padding:10px 0px 0px 10px;
26 margin-left:0px; 26 margin-left:0px;
27 } 27 }
  28 +
  29 +.linenodiv pre,
28 .highlight pre{ 30 .highlight pre{
  31 + margin:0;
  32 + padding:0;
  33 + background:none;
  34 + border:none;
29 } 35 }
30 36
31 .linenodiv pre { 37 .linenodiv pre {
app/assets/stylesheets/issues.css.scss
1 -.issue-number {  
2 - float: left;  
3 - border-radius: 5px;  
4 - text-shadow: none;  
5 - background: rgba(0, 0, 0, 0.12);  
6 - text-align: center;  
7 - padding: 14px 8px;  
8 - width: 40px;  
9 - margin-right: 10px;  
10 - color: #444;  
11 -}  
12 -  
13 -.issues_filter {  
14 - margin:10px 0;  
15 - .left {  
16 - margin-right:15px;  
17 - }  
18 -}  
19 -  
20 -.top_panel_issues{  
21 - #issue_search_form {  
22 - margin:5px 0;  
23 - input {  
24 - border:1px solid #D3D3D3;  
25 - padding: 3px;  
26 - height: 28px;  
27 - width: 250px;  
28 - -webkit-appearance:none;  
29 - box-sizing: border-box;  
30 - -moz-box-sizing: border-box;  
31 -  
32 - &:focus {  
33 - border-color:#c2e1ef;  
34 - }  
35 - }  
36 - }  
37 -}  
38 -  
39 -/** ISSUES LIST **/  
40 -.issue .action-links {  
41 - display:none;  
42 - a {  
43 - margin-left:10px;  
44 - }  
45 -}  
46 -.issue:hover .action-links { display:block; }  
47 -.issue-show-holder {  
48 - width:100%;  
49 - .data p { font-size:16px }  
50 -}  
51 -  
52 #issue_assignee_id { 1 #issue_assignee_id {
53 width:300px; 2 width:300px;
54 } 3 }
55 -  
56 -.issue-form-holder .ui-box .data {  
57 - margin: 0;  
58 - padding: 0;  
59 -}  
60 -  
61 -body.project-page .merge-request-form-holder table.no-borders tr,  
62 -body.project-page .merge-request-form-holder table.no-borders td,  
63 -body.project-page .issue-form-holder table.no-borders tr,  
64 -body.project-page .issue-form-holder table.no-borders td,  
65 -body.project-page .new_snippet table tr,  
66 -body.project-page .new_snippet table td,  
67 -body.project-page .edit_snippet table tr,  
68 -body.project-page .edit_snippet table td  
69 -{  
70 - &:hover {  
71 - background:none;  
72 - }  
73 -}  
74 -  
75 -  
76 -#issues-table {  
77 - tr {  
78 - border-top: 1px solid $lite_border_color;  
79 - &:first-child {  
80 - border:none;  
81 - }  
82 - }  
83 -  
84 -}  
app/assets/stylesheets/login.scss 0 → 100644
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
  1 +/* Login Page */
  2 +body.login-page{ padding-top: 10%}
  3 +
  4 +.login-box{
  5 + width: 304px;
  6 + position: relative;
  7 + border-radius: 5px;
  8 + margin: auto;
  9 + padding: 20px;
  10 + background: white;
  11 +}
  12 +
  13 +.login-box .login-logo{
  14 + margin: 10px 0 30px 0;
  15 + display: block;
  16 +}
  17 +
  18 +.login-box input.text{background-color: #f1f1f1; font-size: 16px; border-radius: 0; padding: 14px 10px; width: 280px}
  19 +
  20 +.login-box input.text.top{
  21 + -webkit-border-top-left-radius: 5px;
  22 + -webkit-border-top-right-radius: 5px;
  23 + -moz-border-radius-topleft: 5px;
  24 + -moz-border-radius-topright: 5px;
  25 + border-top-left-radius: 5px;
  26 + border-top-right-radius: 5px;
  27 +}
  28 +
  29 +.login-box input.text.bottom{
  30 + -webkit-border-bottom-right-radius: 5px;
  31 + -webkit-border-bottom-left-radius: 5px;
  32 + -moz-border-radius-bottomright: 5px;
  33 + -moz-border-radius-bottomleft: 5px;
  34 + border-bottom-right-radius: 5px;
  35 + border-bottom-left-radius: 5px;
  36 + border-top: 0;
  37 + margin-bottom: 20px;
  38 +}
  39 +
  40 +.login-box a.forgot{float: right; padding-top: 6px}
  41 +
app/assets/stylesheets/merge_requests.css.scss
1 -// Place all the styles related to the MergeRequests controller here.  
2 -// They will automatically be included in application.css.  
3 -// You can use Sass (SCSS) here: http://sass-lang.com/  
4 -  
5 -  
6 .merge-request-form-holder { 1 .merge-request-form-holder {
7 select { 2 select {
8 width:300px; 3 width:300px;
app/assets/stylesheets/notes.css.scss
@@ -32,13 +32,12 @@ @@ -32,13 +32,12 @@
32 32
33 #notes-list .note .delete-note { display:none; } 33 #notes-list .note .delete-note { display:none; }
34 #notes-list .note:hover .delete-note { display:block; } 34 #notes-list .note:hover .delete-note { display:block; }
35 -  
36 -body.project-page #notes-list .note {padding: 10px 0; border-bottom: 1px solid #eee; overflow: hidden; display: block;}  
37 -body.project-page #notes-list .note img{float: left; margin-right: 10px;}  
38 -body.project-page #notes-list .note span.note-title{display: block;}  
39 -body.project-page #notes-list .note span.note-title{margin-bottom: 10px}  
40 -body.project-page #notes-list .note span.note-author{color: #999; font-weight: normal; font-style: italic;}  
41 -body.project-page #notes-list .note span.note-author strong{font-weight: bold; font-style: normal;} 35 +#notes-list .note {padding: 10px 0; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
  36 +#notes-list .note img{float: left; margin-right: 10px;}
  37 +#notes-list .note span.note-title{display: block;}
  38 +#notes-list .note span.note-title{margin-bottom: 10px}
  39 +#notes-list .note span.note-author{color: #999; font-weight: normal; font-style: italic;}
  40 +#notes-list .note span.note-author strong{font-weight: bold; font-style: normal;}
42 41
43 42
44 .note .note-title { margin-left:55px; } 43 .note .note-title { margin-left:55px; }
app/assets/stylesheets/projects.css.scss
1 -body.project-page h2.icon .project-name, body.project-page h2.icon d{border: 1px solid #eee; padding: 5px 30px 5px 10px; border-radius: 5px; position: relative;}  
2 -body.project-page h2.icon .project-name i.arrow{float: right;  
3 - position: absolute;  
4 - right: 10px;  
5 - top: 13px;  
6 - display: block;  
7 - background: url('images.png') no-repeat -97px -29px;  
8 - width: 4px;  
9 - height: 5px; 1 +.git_url_wrapper {
  2 + margin-right:50px
10 } 3 }
11 -  
12 -body.project-page h2.icon span{ background-position: -78px -68px; }  
13 -body.project-page .project-container{ position: relative; float: left; width: 100%; height: 100%; padding-bottom: 10px;}  
14 -body.project-page .page-title{margin-bottom: 0}  
15 -  
16 -body.project-page .project-sidebar {  
17 - width: 110px;  
18 - left: 0;  
19 - top: 0;  
20 - height: 100%;  
21 - bottom: 0;  
22 - position: absolute;  
23 - float: left;  
24 - display: inline-block;  
25 - background: #FFF;  
26 - padding: $app_padding;  
27 - padding-right:0px;  
28 - margin: 0;  
29 - border-right: 1px solid $border_color;  
30 -}  
31 -  
32 -body.projects-page input.text.git-url { font-size: 12px; border-radius: 5px; color: #666; box-shadow: 0 1px 2px rgba(0,0,0,.2) inset; padding: 8px 0 8px 30px; margin-bottom: 20px; background: white url('images.png') no-repeat 8px -40px; width: 136px}  
33 -body.projects-page input.text.git-url {margin:10px 0 0 }  
34 -.git_url_wrapper { margin-right:50px }  
35 -  
36 -.projects_selector:hover > .project-box{ -moz-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); -webkit-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); box-shadow:0px 0px 10px rgba(0, 0, 0, .1); }  
37 -  
38 -  
39 -/* New project Page */  
40 -.new-project-page .container table{background: white}  
41 -body.project-page .project-sidebar aside{width: 109px}  
42 -body.project-page .project-sidebar aside a{  
43 - display: block;  
44 - position: relative;  
45 - padding: 15px 10px;  
46 - margin: 10px 0 0 0;  
47 -  
48 -  
49 -}  
50 -body.project-page .project-sidebar aside a span.number{float: right; border-radius: 5px; text-shadow: none; background: rgba(0,0,0,.12); text-align: center; padding: 5px 8px; position: absolute; top: 10px; right: 10px}  
51 -body.project-page .project-sidebar aside a.current {  
52 - color: white;  
53 - background: $active_bg_color;  
54 - border: 1px solid $active_bd_color;  
55 - border-radius:5px;  
56 -  
57 -  
58 - -webkit-border-top-right-radius: 0;  
59 - -webkit-border-bottom-right-radius: 0;  
60 - -moz-border-radius-topright: 0px;  
61 - -moz-border-radius-bottomright: 0px;  
62 - border-top-right-radius: 0;  
63 - border-bottom-right-radius: 0;  
64 - margin-right: -1px;  
65 -}  
66 -body.project-page .project-content{ padding: $app_padding; display: block; margin-left: 130px; min-height: 600px}  
67 -body.project-page .project-content h2{ margin-top: 6px}  
68 -body.project-page .project-content .button.right{margin-left: 20px}  
69 -body.project-page table .commit a{color: #{$blue_link}}  
70 -body.project-page table th, body.project-page table td{ border-bottom: 1px solid #DEE2E3;}  
71 -body.project-page .fixed{position: fixed; }  
72 -  
73 -  
74 -  
75 -  
76 -/** File stat **/  
77 .file_stats { 4 .file_stats {
78 span { 5 span {
79 img { 6 img {
80 width:14px; 7 width:14px;
81 float:left; 8 float:left;
82 - margin-right: 6px; 9 + margin-right:6px;
83 padding:2px 0; 10 padding:2px 0;
84 } 11 }
85 } 12 }
86 } 13 }
87 14
88 -.round-borders {  
89 - @include round-borders-all(4px);  
90 - padding: 4px 0px; 15 +.handle:hover {
  16 + cursor:move;
91 } 17 }
92 18
93 -table.round-borders { 19 +/* Project Dashboard Page */
  20 +.news-feed h2 {
94 float:left; 21 float:left;
95 - text-align: left;  
96 } 22 }
97 -  
98 -  
99 -  
100 -/** PROJECTS **/  
101 -input.ssh_project_url {  
102 - padding:5px;  
103 - margin:0px;  
104 - float:right;  
105 - width:400px;  
106 - text-align:center; 23 +.news-feed .project-updates {
  24 + margin-bottom:20px;
  25 + display:block;
  26 + width:100%;
107 } 27 }
108 -  
109 -#projects-list .project {  
110 - height:50px; 28 +.news-feed .project-updates .data {
  29 + padding:0
111 } 30 }
112 -  
113 -#tree-slider .tree-item,  
114 -#projects-list .project,  
115 -#snippets-table .snippet,  
116 -#issues-table .issue{  
117 - cursor:pointer; 31 +.news-feed .project-updates a.project-update {
  32 + padding:10px;
  33 + border-bottom:1px solid #eee;
  34 + overflow:hidden;
  35 + display:block;
118 } 36 }
119 -  
120 -.clear {  
121 - clear: both; 37 +.news-feed .project-updates a.project-update:last-child {
  38 + border-bottom:0
122 } 39 }
123 -  
124 -  
125 -/** Buttons **/  
126 -.lbutton,  
127 -.lite_button {  
128 - display:block; 40 +.news-feed .project-updates a.project-update img {
129 float:left; 41 float:left;
130 - margin: 0px 5px 0px 0px;  
131 - padding:5px 10px;  
132 -  
133 - font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;  
134 - border:1px solid #D3D3D3;  
135 - background:white;  
136 - font-size:12px !important;  
137 - line-height:130%;  
138 - text-decoration:none;  
139 - font-weight:bold;  
140 - color:#565656;  
141 - cursor:pointer;  
142 -  
143 - &:hover {  
144 - border:1px solid #C2E1EF;  
145 - color: #0099FF;  
146 - }  
147 -  
148 - &.hm {  
149 - margin: 0px 0px;  
150 - }  
151 -  
152 - &.vm {  
153 - margin: 5px 0px;  
154 - } 42 + margin-right:10px;
155 } 43 }
156 -  
157 -#user_projects_limit{  
158 - width: 60px; 44 +span.update-title,
  45 +span.update-author {
  46 + display:block;
159 } 47 }
160 -  
161 -.handle:hover{  
162 - cursor: move; 48 +span.update-title {
  49 + margin-bottom:10px
163 } 50 }
164 -  
165 -.project-refs-form {  
166 - span {  
167 - background: none !important;  
168 - position:static !important;  
169 - width:auto !important;  
170 - height: auto !important;  
171 - } 51 +span.update-author {
  52 + color:#999;
  53 + font-weight:normal;
  54 + font-style:italic;
172 } 55 }
173 -  
174 -.project-refs-select {  
175 - width:200px; 56 +span.update-author strong {
  57 + font-weight:bold;
  58 + font-style: normal;
176 } 59 }
177 -  
178 -.filter .left { margin-right:15px; }  
179 -  
180 -body.project-page table .commit {  
181 - a.tree-commit-link {  
182 - color:#444;  
183 - &:hover {  
184 - text-decoration:underline;  
185 - }  
186 - } 60 +/** UPDATE ITEM **/
  61 +.update-data {
  62 + padding:0
187 } 63 }
188 -  
189 -/** NEW PROJECT **/  
190 -.new-project-hodler {  
191 - .icon span { background-position: -31px -70px; }  
192 - td { border-bottom: 1px solid #DEE2E3; } 64 +.update-data {
  65 + width:100%;
193 } 66 }
194 -  
195 -/** Feed entry **/  
196 -.commit,  
197 -.snippet,  
198 -.message {  
199 - .title {  
200 - color:#666;  
201 - a { color:#666 !important; }  
202 - p { margin-top:0px; }  
203 - }  
204 - .author { color: #999 } 67 +a.update-item {
  68 + padding:10px;
  69 + border-bottom:1px solid #eee;
  70 + overflow:hidden;
  71 + display:block;
205 } 72 }
206 -  
207 -/** JQuery UI **/  
208 -.ui-autocomplete { @include round-borders-all(5px); }  
209 -.ui-menu-item { cursor: pointer }  
210 -.ui-selectmenu{  
211 - @include round-borders-all(4px); 73 +a.update-item:last-child {
  74 + border-bottom:0
  75 +}
  76 +a.update-item img {
  77 + float:left;
212 margin-right:10px; 78 margin-right:10px;
213 - font-size:1.5em;  
214 - height:auto;  
215 - font-weight:bold;  
216 - .ui-selectmenu-status {  
217 - padding:3px 10px;  
218 - }  
219 } 79 }
220 -  
221 -/** Snippets **/  
222 -.new_snippet textarea,  
223 -.edit_snippet textarea {  
224 - height:300px;  
225 - padding: 8px;  
226 - width: 95%;  
227 -}  
228 -.snippet .action-links {  
229 - display:none;  
230 - a {  
231 - margin-left:10px;  
232 - } 80 +span.update-title,
  81 +span.update-author {
  82 + display:block;
233 } 83 }
234 -.snippet:hover .action-links { display:block; }  
235 -  
236 -  
237 -#holder {  
238 - background:#FAFAFA;  
239 - border: 1px solid #EEE;  
240 - cursor: move;  
241 - height: 70%;  
242 - overflow: hidden; 84 +a.update-item span.update-title {
  85 + margin-bottom:10px
243 } 86 }
244 -  
245 -/* Project Dashboard Page */  
246 -html, body { height: 100%; }  
247 -  
248 -body.dashboard.project-page .news-feed h2{float: left;}  
249 -body.dashboard.project-page .news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;}  
250 -body.dashboard.project-page .news-feed .project-updates .data{ padding: 0}  
251 -body.dashboard.project-page .news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}  
252 -body.dashboard.project-page .news-feed .project-updates a.project-update:last-child{border-bottom: 0}  
253 -body.dashboard.project-page .news-feed .project-updates a.project-update img{float: left; margin-right: 10px;}  
254 -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}  
255 -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px}  
256 -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}  
257 -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}  
258 -/* eo Dashboard Page */  
259 -  
260 -  
261 -/** Merge requests */  
262 -body.project-page .merge-request-commits {margin-bottom: 20px; display: block; width: 100%;}  
263 -body.project-page .merge-request-commits .data{ padding: 0}  
264 -body.project-page .merge-request-commits a.commit {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}  
265 -body.project-page .merge-request-commits a.commit:last-child{border-bottom: 0}  
266 -body.project-page .merge-request-commits a.commit img{float: left; margin-right: 10px;}  
267 -body.project-page .merge-request-commits a.commit span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}  
268 -body.project-page .merge-request-commits a.commit span.update-title{margin-bottom: 10px}  
269 -body.project-page .merge-request-commits a.commit span.update-author{color: #999; font-weight: normal; font-style: italic;}  
270 -body.project-page .merge-request-commits a.commit span.update-author strong{font-weight: bold; font-style: normal;}  
271 -  
272 -  
273 -/** Update entry **/  
274 -.update-data { padding: 0 }  
275 -.update-data { width:100%; }  
276 -.update-data.ui-box .data { padding:0; }  
277 -a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}  
278 -a.update-item:last-child{border-bottom: 0}  
279 -a.update-item img{float: left; margin-right: 10px;}  
280 -a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}  
281 -a.update-item span.update-title{margin-bottom: 10px}  
282 -a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;}  
283 -a.update-item span.update-author strong{font-weight: bold; font-style: normal;}  
284 -  
285 -  
286 -body.project-page .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; }  
287 -  
288 -body.projects-page input.text.git-url.project_list_url { width:165px; }  
289 -  
290 -  
291 -body.project-page table.no-borders th {  
292 - background:none;  
293 - border-bottom:1px solid #CCC;  
294 - color:#333; 87 +a.update-item span.update-author {
  88 + color:#999;
  89 + font-weight:normal;
  90 + font-style:italic;
295 } 91 }
296 -  
297 -body.project-page table.no-borders tr,  
298 -body.project-page table.no-borders td{  
299 - border:none; 92 +a.update-item span.update-author strong {
  93 + font-weight:bold;
  94 + font-style:normal;
300 } 95 }
301 - 96 +/** END UPDATE ITEM **/
302 .ajax-tab-loading { 97 .ajax-tab-loading {
303 padding:40px; 98 padding:40px;
304 display:none; 99 display:none;
305 } 100 }
306 -  
307 -#tree-content-holder { float:left; width:100%; }  
308 - 101 +#tree-content-holder {
  102 + float:left;
  103 + width:100%;
  104 +}
309 #tree-readme-holder { 105 #tree-readme-holder {
310 float:left; 106 float:left;
311 width:100%; 107 width:100%;
312 -  
313 .readme { 108 .readme {
314 @include round-borders-all(4px); 109 @include round-borders-all(4px);
315 - padding: 4px 15px;  
316 - background:#F7F7F7; 110 + padding:4px 15px;
  111 + background: #F7F7F7;
317 } 112 }
318 } 113 }
319 -  
320 -  
321 -  
322 -/* Commit Page */  
323 -.entity-info {float: right;}  
324 -.entity-button{  
325 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));  
326 - background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);  
327 - background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);  
328 - background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);  
329 - box-shadow: 0 -1px 0 white inset;  
330 - display: block;  
331 - border: 1px solid #eee;  
332 - border-radius: 5px;  
333 - margin-bottom: 2px;  
334 - position: relative;  
335 - padding: 4px 10px;  
336 - font-size: 11px;  
337 - padding-right: 20px; 114 +.dashboard-loader {
  115 + float:left;
  116 + margin:10px;
  117 + display:none;
338 } 118 }
339 -  
340 -.entity-button i{  
341 - background: url('images.png') no-repeat -138px -27px;  
342 - width: 6px;  
343 - height: 9px;  
344 - float: right;  
345 - position: absolute;  
346 - top: 6px;  
347 - right: 5px;  
348 -}  
349 -.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;}  
350 -  
351 -h4.dash-tabs {  
352 - margin: 0;  
353 - border-bottom: 1px solid #ccc;  
354 - padding: 10px 10px;  
355 - font-size: 11px;  
356 - padding-left:20px;  
357 - font-weight: bold; text-transform: uppercase;  
358 - background: #F7F7F7;  
359 - margin-bottom:20px;  
360 - height:13px;  
361 - 119 +.user-mention {
  120 + color:#2FA0BB;
  121 + font-weight:bold;
362 } 122 }
363 123
364 -.dash-button {  
365 - border-right: 1px solid #ddd;  
366 - background:none;  
367 - padding: 10px 15px;  
368 - float:left; 124 +a.project-update.titled {
369 position:relative; 125 position:relative;
370 - top:-10px;  
371 - left:0px;  
372 - height:13px;  
373 -  
374 - &:first-child {  
375 - border-left: 1px solid #ddd;  
376 - }  
377 - &.active {  
378 - background: #eaeaea; 126 + padding-left:35% !important;
  127 + .title-block {
  128 + padding:10px;
  129 + width:35%;
  130 + position:absolute;
  131 + left:0;
  132 + top:0;
379 } 133 }
380 } 134 }
381 -  
382 -  
383 -.dashboard-loader {  
384 - float:right;  
385 - margin-right:30px;  
386 - display:none; 135 +/**
  136 + * Project graph
  137 + */
  138 +#holder {
  139 + cursor: move;
  140 + height: 70%;
  141 + overflow: hidden;
387 } 142 }
388 143
389 144
390 -.merge-tabs {  
391 - margin: 0;  
392 - border: 1px solid #ccc;  
393 - padding: 5px;  
394 - font-size: 12px;  
395 - background: #F7F7F7;  
396 - margin-bottom:20px;  
397 - height:26px;  
398 -  
399 - -moz-border-radius: 4px;  
400 - -webkit-border-radius: 4px;  
401 - border-radius: 4px;  
402 -  
403 - .tab {  
404 - font-weight: bold;  
405 - border-right: 1px solid #ddd;  
406 - background:none;  
407 - padding: 10px;  
408 - min-width:60px;  
409 - float:left;  
410 - position:relative;  
411 - top:-5px;  
412 - left:-5px;  
413 - height:16px;  
414 - padding-left:34px;  
415 -  
416 - span {  
417 - width: 20px;  
418 - height: 20px;  
419 - display: inline-block;  
420 - position: absolute;  
421 - left: 8px;  
422 - top: 8px;  
423 - }  
424 -  
425 - &.active {  
426 - background: #eaeaea;  
427 - } 145 +/** Branch/tag selector **/
  146 +.project-refs-form {
  147 + margin:0;
  148 + span {
  149 + background:none !important;
  150 + position:static !important;
  151 + width:auto !important;
  152 + height:auto !important;
428 } 153 }
429 } 154 }
430 -.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; }  
431 -.activities-tab span { background: url("images.png") no-repeat -161px -1px; }  
432 -.stat-tab span,  
433 -.team-tab span,  
434 -.snippets-tab span { background: url("images.png") no-repeat -38px -77px; }  
435 -.files-tab span { background: url("images.png") no-repeat -112px -23px; }  
436 -  
437 -.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; }  
438 -.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; }  
439 -.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; }  
440 -.merge-tabs .dashboard-loader { padding:8px; }  
441 -  
442 -.user-mention {  
443 - color: #2FA0BB;  
444 - font-weight: bold;  
445 -}  
446 -  
447 -.author {  
448 - color: #999;  
449 -}  
450 -  
451 -  
452 -.red-button{  
453 - border-radius: 5px;  
454 - font-size: 12px;  
455 - font-weight: bold;  
456 - padding: 5px 17px;  
457 - border: 1px solid #999;  
458 - color: #666;  
459 - display: inline-block;  
460 - box-shadow: 0 1px 2px rgba(0,0,0,.3);  
461 - background: #D12F19;  
462 - color: white;  
463 -}  
464 -  
465 -.positive-button{  
466 - border-radius: 5px;  
467 - font-size: 12px;  
468 - font-weight: bold;  
469 - padding: 5px 17px;  
470 - border: 1px solid #999;  
471 - color: #666;  
472 - display: inline-block;  
473 - box-shadow: 0 1px 2px rgba(0,0,0,.3);  
474 - background: #4A2;  
475 - color: white; 155 +.project-refs-select {
  156 + width:120px;
476 } 157 }
477 158
  159 +.project-refs-form .chzn-container {
  160 + position:relative;
  161 + top: -5px;
  162 + left: -11px;
478 163
479 -.dark_scheme_box {  
480 - padding:20px 0; 164 + .chzn-drop {
  165 + margin:7px 0;
  166 + border: 1px solid #CCC;
  167 + min-width: 300px;
481 168
482 - label {  
483 - float:left;  
484 - box-shadow: 0 0px 5px rgba(0,0,0,.3); 169 + .chzn-results {
  170 + max-height:300px;
  171 + }
485 172
486 - img { 173 + .chzn-search input {
  174 + min-width:200px;
487 } 175 }
488 } 176 }
489 -}  
490 177
491 -a.project-update.titled {  
492 - position: relative;  
493 - padding-left: 235px !important; 178 + .chzn-single {
  179 + background:#ddd;
  180 + //border:none;
  181 + //box-shadow:none;
494 182
495 - .title-block {  
496 - padding: 10px;  
497 - width: 205px;  
498 - position: absolute;  
499 - left: 0;  
500 - top: 0;  
501 - }  
502 -} 183 + div {
  184 + background:transparent;
  185 + border-left:none;
  186 + }
503 187
504 -.add_new {  
505 - float: right;  
506 - background: #A6B807;  
507 - color: white;  
508 - padding: 4px 10px;  
509 - @include round-borders-all(4px);  
510 - font-size:11px;  
511 - margin: 10px 0; 188 + span {
  189 + font-weight: normal;
  190 + }
  191 + }
512 } 192 }
513 193
514 -  
515 -  
516 -.new-project-hodler {  
517 - padding:20px;  
518 -}  
app/assets/stylesheets/projects.css.scss.bak 0 → 100644
@@ -0,0 +1,384 @@ @@ -0,0 +1,384 @@
  1 +.git_url_wrapper { margin-right:50px }
  2 +
  3 +.sidebar aside a{
  4 + display: block;
  5 + position: relative;
  6 + padding: 15px 10px;
  7 + margin: 10px 0 0 0;
  8 +
  9 + span.number{
  10 + float: right; border-radius: 5px; text-shadow: none; background: rgba(0,0,0,.12); text-align: center; padding: 5px 8px; position: absolute; top: 10px; right: 10px;
  11 + }
  12 + &.current {
  13 + color: white;
  14 + background: $active_bg_color;
  15 + border: 1px solid $active_bd_color;
  16 + border-radius:5px;
  17 +
  18 + -webkit-border-top-right-radius: 0;
  19 + -webkit-border-bottom-right-radius: 0;
  20 + -moz-border-radius-topright: 0px;
  21 + -moz-border-radius-bottomright: 0px;
  22 + border-top-right-radius: 0;
  23 + border-bottom-right-radius: 0;
  24 + margin-right: -1px;
  25 + }
  26 +}
  27 +
  28 +body table .commit a{color: #{$blue_link}}
  29 +body table th, body table td{ border-bottom: 1px solid #DEE2E3;}
  30 +body .fixed{position: fixed; }
  31 +
  32 +/** File stat **/
  33 +.file_stats {
  34 + span {
  35 + img {
  36 + width:14px;
  37 + float:left;
  38 + margin-right: 6px;
  39 + padding:2px 0;
  40 + }
  41 + }
  42 +}
  43 +
  44 +.round-borders {
  45 + @include round-borders-all(4px);
  46 + padding: 4px 0px;
  47 +}
  48 +
  49 +table.round-borders {
  50 + float:left;
  51 + text-align: left;
  52 +}
  53 +
  54 +
  55 +
  56 +/** PROJECTS **/
  57 +input.ssh_project_url {
  58 + padding:5px;
  59 + margin:0px;
  60 + float:right;
  61 + width:400px;
  62 + text-align:center;
  63 +}
  64 +
  65 +#projects-list .project {
  66 + height:50px;
  67 +}
  68 +
  69 +#tree-slider .tree-item,
  70 +#projects-list .project,
  71 +#snippets-table .snippet,
  72 +#issues-table .issue{
  73 + cursor:pointer;
  74 +}
  75 +
  76 +.clear {
  77 + clear: both;
  78 +}
  79 +
  80 +
  81 +
  82 +#user_projects_limit{
  83 + width: 60px;
  84 +}
  85 +
  86 +.handle:hover{
  87 + cursor: move;
  88 +}
  89 +
  90 +.project-refs-form {
  91 + span {
  92 + background: none !important;
  93 + position:static !important;
  94 + width:auto !important;
  95 + height: auto !important;
  96 + }
  97 +}
  98 +
  99 +.project-refs-select {
  100 + width:200px;
  101 +}
  102 +
  103 +.filter .left { margin-right:15px; }
  104 +
  105 +body table .commit {
  106 + a.tree-commit-link {
  107 + color:#444;
  108 + &:hover {
  109 + text-decoration:underline;
  110 + }
  111 + }
  112 +}
  113 +
  114 +/** NEW PROJECT **/
  115 +.new-project-hodler {
  116 + .icon span { background-position: -31px -70px; }
  117 + td { border-bottom: 1px solid #DEE2E3; }
  118 +}
  119 +
  120 +/** Feed entry **/
  121 +.commit,
  122 +.snippet,
  123 +.message {
  124 + .title {
  125 + color:#666;
  126 + a { color:#666 !important; }
  127 + p { margin-top:0px; }
  128 + }
  129 + .author { color: #999 }
  130 +}
  131 +
  132 +/** JQuery UI **/
  133 +.ui-autocomplete { @include round-borders-all(5px); }
  134 +.ui-menu-item { cursor: pointer }
  135 +.ui-selectmenu{
  136 + @include round-borders-all(4px);
  137 + margin-right:10px;
  138 + font-size:1.5em;
  139 + height:auto;
  140 + font-weight:bold;
  141 + .ui-selectmenu-status {
  142 + padding:3px 10px;
  143 + }
  144 +}
  145 +
  146 +#holder {
  147 + background:#FAFAFA;
  148 + border: 1px solid #EEE;
  149 + cursor: move;
  150 + height: 70%;
  151 + overflow: hidden;
  152 +}
  153 +
  154 +/* Project Dashboard Page */
  155 +html, body { height: 100%; }
  156 +
  157 +.news-feed h2{float: left;}
  158 +.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;}
  159 +.news-feed .project-updates .data{ padding: 0}
  160 +.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
  161 +.news-feed .project-updates a.project-update:last-child{border-bottom: 0}
  162 +.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;}
  163 +.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
  164 +.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px}
  165 +.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}
  166 +.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
  167 +/* eo Dashboard Page */
  168 +
  169 +
  170 +/** Update entry **/
  171 +.update-data { padding: 0 }
  172 +.update-data { width:100%; }
  173 +.update-data.ui-box .data { padding:0; }
  174 +a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
  175 +a.update-item:last-child{border-bottom: 0}
  176 +a.update-item img{float: left; margin-right: 10px;}
  177 +a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
  178 +a.update-item span.update-title{margin-bottom: 10px}
  179 +a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;}
  180 +a.update-item span.update-author strong{font-weight: bold; font-style: normal;}
  181 +
  182 +
  183 +body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; }
  184 +
  185 +body.projects-page input.text.git-url.project_list_url { width:165px; }
  186 +
  187 +
  188 +body table.no-borders th {
  189 + background:none;
  190 + border-bottom:1px solid #CCC;
  191 + color:#333;
  192 +}
  193 +
  194 +body table.no-borders tr,
  195 +body table.no-borders td{
  196 + border:none;
  197 +}
  198 +
  199 +.ajax-tab-loading {
  200 + padding:40px;
  201 + display:none;
  202 +}
  203 +
  204 +#tree-content-holder { float:left; width:100%; }
  205 +
  206 +#tree-readme-holder {
  207 + float:left;
  208 + width:100%;
  209 +
  210 + .readme {
  211 + @include round-borders-all(4px);
  212 + padding: 4px 15px;
  213 + background:#F7F7F7;
  214 + }
  215 +}
  216 +
  217 +
  218 +
  219 +/* Commit Page */
  220 +.entity-info {float: right;}
  221 +.entity-button{
  222 + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
  223 + background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
  224 + background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
  225 + background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
  226 + box-shadow: 0 -1px 0 white inset;
  227 + display: block;
  228 + border: 1px solid #eee;
  229 + border-radius: 5px;
  230 + margin-bottom: 2px;
  231 + position: relative;
  232 + padding: 4px 10px;
  233 + font-size: 11px;
  234 + padding-right: 20px;
  235 +}
  236 +
  237 +.entity-button i{
  238 + background: url('images.png') no-repeat -138px -27px;
  239 + width: 6px;
  240 + height: 9px;
  241 + float: right;
  242 + position: absolute;
  243 + top: 6px;
  244 + right: 5px;
  245 +}
  246 +.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;}
  247 +
  248 +h4.dash-tabs {
  249 + margin: 0;
  250 + border-bottom: 1px solid #ccc;
  251 + padding: 10px 10px;
  252 + font-size: 11px;
  253 + padding-left:20px;
  254 + font-weight: bold; text-transform: uppercase;
  255 + background: #F7F7F7;
  256 + margin-bottom:20px;
  257 + height:13px;
  258 +
  259 +}
  260 +
  261 +.dash-button {
  262 + border-right: 1px solid #ddd;
  263 + background:none;
  264 + padding: 10px 15px;
  265 + float:left;
  266 + position:relative;
  267 + top:-10px;
  268 + left:0px;
  269 + height:13px;
  270 +
  271 + &:first-child {
  272 + border-left: 1px solid #ddd;
  273 + }
  274 + &.active {
  275 + background: #eaeaea;
  276 + }
  277 +}
  278 +
  279 +
  280 +.dashboard-loader {
  281 + float:right;
  282 + margin-right:30px;
  283 + display:none;
  284 +}
  285 +
  286 +
  287 +.merge-tabs {
  288 + margin: 0;
  289 + border: 1px solid #ccc;
  290 + padding: 5px;
  291 + font-size: 12px;
  292 + background: #F7F7F7;
  293 + margin-bottom:20px;
  294 + height:26px;
  295 +
  296 + -moz-border-radius: 4px;
  297 + -webkit-border-radius: 4px;
  298 + border-radius: 4px;
  299 +
  300 + .tab {
  301 + font-weight: bold;
  302 + border-right: 1px solid #ddd;
  303 + background:none;
  304 + padding: 10px;
  305 + min-width:60px;
  306 + float:left;
  307 + position:relative;
  308 + top:-5px;
  309 + left:-5px;
  310 + height:16px;
  311 + padding-left:34px;
  312 +
  313 + span {
  314 + width: 20px;
  315 + height: 20px;
  316 + display: inline-block;
  317 + position: absolute;
  318 + left: 8px;
  319 + top: 8px;
  320 + }
  321 +
  322 + &.active {
  323 + background: #eaeaea;
  324 + }
  325 + }
  326 +}
  327 +.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; }
  328 +.activities-tab span { background: url("images.png") no-repeat -161px -1px; }
  329 +.stat-tab span,
  330 +.team-tab span,
  331 +.snippets-tab span { background: url("images.png") no-repeat -38px -77px; }
  332 +.files-tab span { background: url("images.png") no-repeat -112px -23px; }
  333 +
  334 +.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; }
  335 +.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; }
  336 +.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; }
  337 +.merge-tabs .dashboard-loader { padding:8px; }
  338 +
  339 +.user-mention {
  340 + color: #2FA0BB;
  341 + font-weight: bold;
  342 +}
  343 +
  344 +.author {
  345 + color: #999;
  346 +}
  347 +
  348 +
  349 +
  350 +
  351 +.dark_scheme_box {
  352 + padding:20px 0;
  353 +
  354 + label {
  355 + float:left;
  356 + box-shadow: 0 0px 5px rgba(0,0,0,.3);
  357 +
  358 + img {
  359 + }
  360 + }
  361 +}
  362 +
  363 +a.project-update.titled {
  364 + position: relative;
  365 + padding-left: 235px !important;
  366 +
  367 + .title-block {
  368 + padding: 10px;
  369 + width: 205px;
  370 + position: absolute;
  371 + left: 0;
  372 + top: 0;
  373 + }
  374 +}
  375 +
  376 +.add_new {
  377 + float: right;
  378 + background: #A6B807;
  379 + color: white;
  380 + padding: 4px 10px;
  381 + @include round-borders-all(4px);
  382 + font-size:11px;
  383 + margin: 10px 0;
  384 +}
app/assets/stylesheets/projects.css.scss~ 0 → 100644
@@ -0,0 +1,385 @@ @@ -0,0 +1,385 @@
  1 +.git_url_wrapper { margin-right:50px }
  2 +
  3 +.sidebar aside a{
  4 + display: block;
  5 + position: relative;
  6 + padding: 15px 10px;
  7 + margin: 10px 0 0 0;
  8 +
  9 + font-size:13px;
  10 + font-weight:bold;
  11 + color:#333;
  12 +
  13 + &.current {
  14 + color: white;
  15 + background: $active_bg_color;
  16 + border: 1px solid $active_bd_color;
  17 + border-radius:5px;
  18 +
  19 + -webkit-border-top-right-radius: 0;
  20 + -webkit-border-bottom-right-radius: 0;
  21 + -moz-border-radius-topright: 0px;
  22 + -moz-border-radius-bottomright: 0px;
  23 + border-top-right-radius: 0;
  24 + border-bottom-right-radius: 0;
  25 + margin-right: -1px;
  26 + }
  27 +}
  28 +
  29 +body table .commit a{color: #{$blue_link}}
  30 +body table th, body table td{ border-bottom: 1px solid #DEE2E3;}
  31 +body .fixed{position: fixed; }
  32 +
  33 +/** File stat **/
  34 +.file_stats {
  35 + span {
  36 + img {
  37 + width:14px;
  38 + float:left;
  39 + margin-right: 6px;
  40 + padding:2px 0;
  41 + }
  42 + }
  43 +}
  44 +
  45 +.round-borders {
  46 + @include round-borders-all(4px);
  47 + padding: 4px 0px;
  48 +}
  49 +
  50 +table.round-borders {
  51 + float:left;
  52 + text-align: left;
  53 +}
  54 +
  55 +
  56 +
  57 +/** PROJECTS **/
  58 +input.ssh_project_url {
  59 + padding:5px;
  60 + margin:0px;
  61 + float:right;
  62 + width:400px;
  63 + text-align:center;
  64 +}
  65 +
  66 +#projects-list .project {
  67 + height:50px;
  68 +}
  69 +
  70 +#tree-slider .tree-item,
  71 +#projects-list .project,
  72 +#snippets-table .snippet,
  73 +#issues-table .issue{
  74 + cursor:pointer;
  75 +}
  76 +
  77 +.clear {
  78 + clear: both;
  79 +}
  80 +
  81 +
  82 +
  83 +#user_projects_limit{
  84 + width: 60px;
  85 +}
  86 +
  87 +.handle:hover{
  88 + cursor: move;
  89 +}
  90 +
  91 +.project-refs-form {
  92 + span {
  93 + background: none !important;
  94 + position:static !important;
  95 + width:auto !important;
  96 + height: auto !important;
  97 + }
  98 +}
  99 +
  100 +.project-refs-select {
  101 + width:200px;
  102 +}
  103 +
  104 +.filter .left { margin-right:15px; }
  105 +
  106 +body table .commit {
  107 + a.tree-commit-link {
  108 + color:#444;
  109 + &:hover {
  110 + text-decoration:underline;
  111 + }
  112 + }
  113 +}
  114 +
  115 +/** NEW PROJECT **/
  116 +.new-project-hodler {
  117 + .icon span { background-position: -31px -70px; }
  118 + td { border-bottom: 1px solid #DEE2E3; }
  119 +}
  120 +
  121 +/** Feed entry **/
  122 +.commit,
  123 +.snippet,
  124 +.message {
  125 + .title {
  126 + color:#666;
  127 + a { color:#666 !important; }
  128 + p { margin-top:0px; }
  129 + }
  130 + .author { color: #999 }
  131 +}
  132 +
  133 +/** JQuery UI **/
  134 +.ui-autocomplete { @include round-borders-all(5px); }
  135 +.ui-menu-item { cursor: pointer }
  136 +.ui-selectmenu{
  137 + @include round-borders-all(4px);
  138 + margin-right:10px;
  139 + font-size:1.5em;
  140 + height:auto;
  141 + font-weight:bold;
  142 + .ui-selectmenu-status {
  143 + padding:3px 10px;
  144 + }
  145 +}
  146 +
  147 +#holder {
  148 + background:#FAFAFA;
  149 + border: 1px solid #EEE;
  150 + cursor: move;
  151 + height: 70%;
  152 + overflow: hidden;
  153 +}
  154 +
  155 +/* Project Dashboard Page */
  156 +html, body { height: 100%; }
  157 +
  158 +.news-feed h2{float: left;}
  159 +.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;}
  160 +.news-feed .project-updates .data{ padding: 0}
  161 +.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
  162 +.news-feed .project-updates a.project-update:last-child{border-bottom: 0}
  163 +.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;}
  164 +.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
  165 +.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px}
  166 +.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}
  167 +.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
  168 +/* eo Dashboard Page */
  169 +
  170 +
  171 +/** Update entry **/
  172 +.update-data { padding: 0 }
  173 +.update-data { width:100%; }
  174 +.update-data.ui-box .data { padding:0; }
  175 +a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
  176 +a.update-item:last-child{border-bottom: 0}
  177 +a.update-item img{float: left; margin-right: 10px;}
  178 +a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
  179 +a.update-item span.update-title{margin-bottom: 10px}
  180 +a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;}
  181 +a.update-item span.update-author strong{font-weight: bold; font-style: normal;}
  182 +
  183 +
  184 +body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; }
  185 +
  186 +body.projects-page input.text.git-url.project_list_url { width:165px; }
  187 +
  188 +
  189 +body table.no-borders th {
  190 + background:none;
  191 + border-bottom:1px solid #CCC;
  192 + color:#333;
  193 +}
  194 +
  195 +body table.no-borders tr,
  196 +body table.no-borders td{
  197 + border:none;
  198 +}
  199 +
  200 +.ajax-tab-loading {
  201 + padding:40px;
  202 + display:none;
  203 +}
  204 +
  205 +#tree-content-holder { float:left; width:100%; }
  206 +
  207 +#tree-readme-holder {
  208 + float:left;
  209 + width:100%;
  210 +
  211 + .readme {
  212 + @include round-borders-all(4px);
  213 + padding: 4px 15px;
  214 + background:#F7F7F7;
  215 + }
  216 +}
  217 +
  218 +
  219 +
  220 +/* Commit Page */
  221 +.entity-info {float: right;}
  222 +.entity-button{
  223 + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
  224 + background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
  225 + background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
  226 + background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
  227 + box-shadow: 0 -1px 0 white inset;
  228 + display: block;
  229 + border: 1px solid #eee;
  230 + border-radius: 5px;
  231 + margin-bottom: 2px;
  232 + position: relative;
  233 + padding: 4px 10px;
  234 + font-size: 11px;
  235 + padding-right: 20px;
  236 +}
  237 +
  238 +.entity-button i{
  239 + background: url('images.png') no-repeat -138px -27px;
  240 + width: 6px;
  241 + height: 9px;
  242 + float: right;
  243 + position: absolute;
  244 + top: 6px;
  245 + right: 5px;
  246 +}
  247 +.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;}
  248 +
  249 +h4.dash-tabs {
  250 + margin: 0;
  251 + border-bottom: 1px solid #ccc;
  252 + padding: 10px 10px;
  253 + font-size: 11px;
  254 + padding-left:20px;
  255 + font-weight: bold; text-transform: uppercase;
  256 + background: #F7F7F7;
  257 + margin-bottom:20px;
  258 + height:13px;
  259 +
  260 +}
  261 +
  262 +.dash-button {
  263 + border-right: 1px solid #ddd;
  264 + background:none;
  265 + padding: 10px 15px;
  266 + float:left;
  267 + position:relative;
  268 + top:-10px;
  269 + left:0px;
  270 + height:13px;
  271 +
  272 + &:first-child {
  273 + border-left: 1px solid #ddd;
  274 + }
  275 + &.active {
  276 + background: #eaeaea;
  277 + }
  278 +}
  279 +
  280 +
  281 +.dashboard-loader {
  282 + float:right;
  283 + margin-right:30px;
  284 + display:none;
  285 +}
  286 +
  287 +
  288 +.merge-tabs {
  289 + margin: 0;
  290 + border: 1px solid #ccc;
  291 + padding: 5px;
  292 + font-size: 12px;
  293 + background: #F7F7F7;
  294 + margin-bottom:20px;
  295 + height:26px;
  296 +
  297 + -moz-border-radius: 4px;
  298 + -webkit-border-radius: 4px;
  299 + border-radius: 4px;
  300 +
  301 + .tab {
  302 + font-weight: bold;
  303 + border-right: 1px solid #ddd;
  304 + background:none;
  305 + padding: 10px;
  306 + min-width:60px;
  307 + float:left;
  308 + position:relative;
  309 + top:-5px;
  310 + left:-5px;
  311 + height:16px;
  312 + padding-left:34px;
  313 +
  314 + span {
  315 + width: 20px;
  316 + height: 20px;
  317 + display: inline-block;
  318 + position: absolute;
  319 + left: 8px;
  320 + top: 8px;
  321 + }
  322 +
  323 + &.active {
  324 + background: #eaeaea;
  325 + }
  326 + }
  327 +}
  328 +.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; }
  329 +.activities-tab span { background: url("images.png") no-repeat -161px -1px; }
  330 +.stat-tab span,
  331 +.team-tab span,
  332 +.snippets-tab span { background: url("images.png") no-repeat -38px -77px; }
  333 +.files-tab span { background: url("images.png") no-repeat -112px -23px; }
  334 +
  335 +.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; }
  336 +.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; }
  337 +.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; }
  338 +.merge-tabs .dashboard-loader { padding:8px; }
  339 +
  340 +.user-mention {
  341 + color: #2FA0BB;
  342 + font-weight: bold;
  343 +}
  344 +
  345 +.author {
  346 + color: #999;
  347 +}
  348 +
  349 +
  350 +
  351 +
  352 +.dark_scheme_box {
  353 + padding:20px 0;
  354 +
  355 + label {
  356 + float:left;
  357 + box-shadow: 0 0px 5px rgba(0,0,0,.3);
  358 +
  359 + img {
  360 + }
  361 + }
  362 +}
  363 +
  364 +a.project-update.titled {
  365 + position: relative;
  366 + padding-left: 235px !important;
  367 +
  368 + .title-block {
  369 + padding: 10px;
  370 + width: 205px;
  371 + position: absolute;
  372 + left: 0;
  373 + top: 0;
  374 + }
  375 +}
  376 +
  377 +.add_new {
  378 + float: right;
  379 + background: #A6B807;
  380 + color: white;
  381 + padding: 4px 10px;
  382 + @include round-borders-all(4px);
  383 + font-size:11px;
  384 + margin: 10px 0;
  385 +}
app/assets/stylesheets/reset_bootstrap.scss 0 → 100644
@@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
  1 +a {
  2 + color: $link_color;
  3 + &:hover {
  4 + text-decoration:none;
  5 + color: $active_link_color;
  6 + }
  7 +}
  8 +
  9 +.entry {
  10 + position: relative;
  11 + padding: 7px 15px;
  12 + margin-bottom: 18px;
  13 + color: #404040;
  14 + background-color: #eedc94;
  15 + background-repeat: repeat-x;
  16 + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
  17 + background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
  18 + background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
  19 + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
  20 + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
  21 + background-image: -o-linear-gradient(top, #fceec1, #eedc94);
  22 + background-image: linear-gradient(top, #fceec1, #eedc94);
  23 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCEEC1', endColorstr='#FFEEDC94', GradientType=0);
  24 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  25 + border-color: #eedc94 #eedc94 #e4c652;
  26 + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) fadein(rgba(0, 0, 0, 0.1), 15%);
  27 + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
  28 + border-width: 1px;
  29 + border-style: solid;
  30 + -webkit-border-radius: 4px;
  31 + -moz-border-radius: 4px;
  32 + border-radius: 4px;
  33 + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
  34 + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
  35 + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
  36 + background:#F1F1F1;
  37 + border-color:#ccc;
  38 +}
app/assets/stylesheets/style.scss
@@ -1,802 +0,0 @@ @@ -1,802 +0,0 @@
1 -/* HTML5 ✰ Boilerplate  
2 - * ==|== normalize ==========================================================  
3 - */  
4 -  
5 -article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }  
6 -audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; }  
7 -audio:not([controls]) { display: none; }  
8 -[hidden] { display: none; }  
9 -  
10 -html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }  
11 -body { margin: 0; font-size: 13px; line-height: 1.231; }  
12 -body, button, input, select, textarea {  
13 - font-family: "helvetica", "arial", "freesans", "clean", sans-serif;  
14 -color: #222; }  
15 -  
16 -::-moz-selection { background: #79c3e0; color: #fff; text-shadow: none; }  
17 -::selection { background: #79c3e0; color: #fff; text-shadow: none; }  
18 -  
19 -a { color: #00e; }  
20 -a:hover { color: #06e; }  
21 -a:focus { outline: thin dotted; }  
22 -a:hover, a:active { outline: 0; }  
23 -  
24 -abbr[title] { border-bottom: 1px dotted; }  
25 -b, strong { font-weight: bold; }  
26 -blockquote { margin: 1em 40px; }  
27 -dfn { font-style: italic; }  
28 -hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }  
29 -ins { background: #ff9; color: #000; text-decoration: none; }  
30 -mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }  
31 -pre, code, kbd, samp { font-family: monospace, monospace; _font-family: 'courier new', monospace; font-size: 1em; }  
32 -pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }  
33 -q { quotes: none; }  
34 -q:before, q:after { content: ""; content: none; }  
35 -small { font-size: 85%; }  
36 -sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }  
37 -sup { top: -0.5em; }  
38 -sub { bottom: -0.25em; }  
39 -ul, ol { margin: 1em 0; padding: 0 0 0 40px; }  
40 -dd { margin: 0 0 0 40px; }  
41 -nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; }  
42 -img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }  
43 -svg:not(:root) { overflow: hidden; }  
44 -figure { margin: 0; }  
45 -  
46 -form { margin: 0; }  
47 -fieldset { border: 0; margin: 0; padding: 0; }  
48 -label { cursor: pointer; }  
49 -legend { border: 0; *margin-left: -7px; padding: 0; }  
50 -button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; }  
51 -button, input { line-height: normal; *overflow: visible; }  
52 -table button, table input { *overflow: auto; }  
53 -button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; }  
54 -input[type="checkbox"], input[type="radio"] { box-sizing: border-box; }  
55 -input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; }  
56 -input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }  
57 -button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }  
58 -textarea { overflow: auto; vertical-align: top; resize: vertical; }  
59 -input:valid, textarea:valid { }  
60 -input:invalid, textarea:invalid { background-color: #f0dddd; }  
61 -  
62 -table { border-collapse: collapse; border-spacing: 0; }  
63 -td { vertical-align: top; }  
64 -  
65 -/* ==|== primary styles =====================================================  
66 - Author: Ricardo Rauch  
67 - ========================================================================== */  
68 -  
69 -/* 960gs */  
70 -.container_4{width:98%;margin-left:1%;margin-right:1%}.grid_1,.grid_2,.grid_3,.grid_4{display:inline;float:left;position:relative;margin-left:1%;margin-right:1%}.alpha{margin-left:0}.omega{margin-right:0}.container_4 .grid_1{width:23.0%}.container_4 .grid_2{width:48.0%}.container_4 .grid_3{width:73.0%}.container_4 .grid_4{width:98.0%}.container_4 .prefix_1{padding-left:25.0%}.container_4 .prefix_2{padding-left:50.0%}.container_4 .prefix_3{padding-left:75.0%}.container_4 .suffix_1{padding-right:25.0%}.container_4 .suffix_2{padding-right:50.0%}.container_4 .suffix_3{padding-right:75.0%}.container_4 .push_1{left:25.0%}.container_4 .push_2{left:50.0%}.container_4 .push_3{left:75.0%}.container_4 .pull_1{left:-25.0%}.container_4 .pull_2{left:-50.0%}.container_4 .pull_3{left:-75.0%}.clear{clear:both;display:block;overflow:hidden;visibility:hidden;width:0;height:0}.clearfix:after{clear:both;content:' ';display:block;font-size:0;line-height:0;visibility:hidden;width:0;height:0}.clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block}  
71 -/* eo 960gs*/  
72 -  
73 -/* Vars */  
74 -$color: "#4BB8D2";  
75 -$blue_link: "#2fa0bb";  
76 -/* eo Vars */  
77 -  
78 -html{ -webkit-font-smoothing:antialiased; }  
79 -body {  
80 - font-size: 12px;  
81 - background-color: #FFFFFF;  
82 -}  
83 -a{text-decoration: none; font-weight: bold; color: #444}  
84 -a:hover{color: #555}  
85 -/* Typography */  
86 -h1,h2,h3,h4,h5{font-weight: normal; color: #666}  
87 -h2{margin: 1.5em 0}  
88 -/* eo Typography */  
89 -  
90 -/* Forms */  
91 -input[type="text"]:focus, input[type="password"]:focus { outline: none; }  
92 -input.text{border: 1px solid #ccc; border-radius: 4px; display: block; padding: 10px}  
93 -  
94 -.form-row{  
95 - padding: 0px 0px 10px 0px;  
96 -}  
97 -  
98 -.form-row label{  
99 - font-weight:bold;  
100 - display: inline-block;  
101 - padding: 0px 0px 5px 0px;  
102 -}  
103 -  
104 -/* eo Forms */  
105 -  
106 -/* Tables */  
107 -table {width:100%; border: 1px solid #DEE2E3; margin-bottom: 20px}  
108 -table thead{  
109 - -webkit-border-top-left-radius: 5px;  
110 - -webkit-border-top-right-radius: 5px;  
111 - -moz-border-radius-topleft: 5px;  
112 - -moz-border-radius-topright: 5px;  
113 - border-top-left-radius: 5px;  
114 - border-top-right-radius: 5px;  
115 -}  
116 -table thead th{  
117 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));  
118 - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);  
119 - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);  
120 - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);  
121 - margin: 0;  
122 - font-weight: normal;  
123 - font-weight: bold;  
124 - text-align: left;  
125 - color: #97A0A5;  
126 -}  
127 -td, th{ padding: .9em 1em; vertical-align: middle; }  
128 -  
129 -table thead .image{width:100px}  
130 -.listed_items tr.odd:hover{background-color:#FFFFCF}  
131 -/* eo Tables */  
132 -  
133 -/* Buttons */  
134 -.grey-button{  
135 - border-radius: 5px;  
136 - font-size: 12px;  
137 - font-weight: bold;  
138 - padding: 5px 17px;  
139 - border: 1px solid #999;  
140 - color: #666;  
141 - display: inline-block;  
142 - box-shadow: 0 1px 2px rgba(0,0,0,.3);  
143 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5));  
144 - background-image: -webkit-linear-gradient(#f7f7f7 7.6%, #d5d5d5);  
145 - background-image: -moz-linear-gradient(#f7f7f7 7.6%, #d5d5d5);  
146 - background-image: -o-linear-gradient(#f7f7f7 7.6%, #d5d5d5);  
147 -}  
148 -  
149 -a.button, input.button {  
150 - font-weight: bold;  
151 - padding: 10px 20px;  
152 - text-align: center;  
153 - display: inline-block;  
154 - border-radius: 5px;  
155 - color: #578E91;  
156 - font-size: 12px;  
157 - text-transform: uppercase;  
158 - border: 1px solid #8CE2E6;  
159 - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbf5f6), to(#c5eef0));  
160 - background-image: -webkit-linear-gradient(#dbf5f6 79.4%, #c5eef0);  
161 - background-image: -moz-linear-gradient(#dbf5f6 79.4%, #c5eef0);  
162 - background-image: -o-linear-gradient(#dbf5f6 79.4%, #c5eef0);  
163 -}  
164 -  
165 -input.button{margin-bottom: 1.5em}  
166 -  
167 -.button:hover {color: rgba(0,0,0,.8)}  
168 -  
169 -.button.green {margin-right: 0; }  
170 -  
171 -.button.yellow{  
172 - color: #908054;  
173 - border-color: #DDCDA1;  
174 - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #FFEFC3), to(#F3E3B7));  
175 - background-image: -webkit-linear-gradient(#FFEFC3 79.4%, #F3E3B7);  
176 - background-image: -moz-linear-gradient(#FFEFC3 79.4%, #F3E3B7);  
177 - background-image: -o-linear-gradient(#FFEFC3 79.4%, #F3E3B7);  
178 -}  
179 -  
180 -.button.blue{  
181 - color: #417E97;  
182 - border-color: #b2cdec;  
183 - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbe8f6), to(#c7daf1));  
184 - background-image: -webkit-linear-gradient(#dbe8f6 79.4%, #c7daf1);  
185 - background-image: -moz-linear-gradient(#dbe8f6 79.4%, #c7daf1);  
186 - background-image: -o-linear-gradient(#dbe8f6 79.4%, #c7daf1);  
187 -}  
188 -  
189 -.button-small{ text-shadow: none; padding: 4px 10px; }  
190 -.button-green{background: #A6B807; color: white}  
191 -  
192 -/* eo Buttons */  
193 -  
194 -/* UI Box */  
195 -//.ui-box{border: 1px solid #DEDFE1; float: left; border-radius: 5px}  
196 -.ui-box{float: left;}  
197 -.ui-box h3{  
198 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));  
199 - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);  
200 - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);  
201 - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);  
202 - background:none;  
203 - margin: 0;  
204 - padding: 1em;  
205 - font-size: 12px;  
206 - font-weight: normal;  
207 - font-weight: bold;  
208 - font-size: 16px;  
209 - border-bottom: 1px solid #DEDFE1;  
210 - -webkit-border-top-left-radius: 5px;  
211 - -webkit-border-top-right-radius: 5px;  
212 - -moz-border-radius-topleft: 5px;  
213 - -moz-border-radius-topright: 5px;  
214 - border-top-left-radius: 5px;  
215 - border-top-right-radius: 5px;  
216 -}  
217 -  
218 -.ui-box.ui-box-small h3{  
219 - padding: 8px 10px;  
220 - font-size: 12px;  
221 -}  
222 -  
223 -.ui-box .data{padding: .5em 1em}  
224 -  
225 -.ui-box .buttons{  
226 - padding: 1em;  
227 - border-top:1px solid $lite_border_color;  
228 -}  
229 -  
230 -.ui-box .buttons .button{padding: 8px 9px; font-size: 11px}  
231 -  
232 -.ui-box.hover:hover{box-shadow: 0 0 10px rgba(0,0,0,.1); border: 1px solid #ccc;  
233 -  
234 - -webkit-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
235 - -moz-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
236 - -o-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
237 - transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
238 -}  
239 -  
240 -/* eo UI Box */  
241 -  
242 -/* Login Page */  
243 -body.login-page{background-color: #f1f1f1; padding-top: 10%}  
244 -  
245 -.login-box{  
246 - width: 304px;  
247 - position: relative;  
248 - border-radius: 5px;  
249 - margin: auto;  
250 - padding: 20px;  
251 - background: white;  
252 - box-shadow: rgba(0, 0, 0, 0.07) 0 1px 0,white 0 2px 0,rgba(0, 0, 0, 0.07) 0 3px 0,white 0 4px 0, rgba(0, 0, 0, 0.07) 0 5px 0;  
253 -}  
254 -  
255 -.login-box .login-logo{  
256 - margin: 10px 0 30px 0;  
257 - display: block;  
258 -}  
259 -  
260 -.login-box input.text{background-color: #f1f1f1; font-size: 16px; border-radius: 0; padding: 14px 10px; width: 280px}  
261 -  
262 -.login-box input.text.top{  
263 - -webkit-border-top-left-radius: 5px;  
264 - -webkit-border-top-right-radius: 5px;  
265 - -moz-border-radius-topleft: 5px;  
266 - -moz-border-radius-topright: 5px;  
267 - border-top-left-radius: 5px;  
268 - border-top-right-radius: 5px;  
269 -}  
270 -  
271 -.login-box input.text.bottom{  
272 - -webkit-border-bottom-right-radius: 5px;  
273 - -webkit-border-bottom-left-radius: 5px;  
274 - -moz-border-radius-bottomright: 5px;  
275 - -moz-border-radius-bottomleft: 5px;  
276 - border-bottom-right-radius: 5px;  
277 - border-bottom-left-radius: 5px;  
278 - border-top: 0;  
279 - margin-bottom: 20px;  
280 -}  
281 -  
282 -.login-box a.forgot{float: right; padding-top: 6px}  
283 -  
284 -/* Icons */  
285 -.directory, .file{  
286 - display: inline-block;  
287 - margin-right: 10px;  
288 - width: 14px;  
289 -}  
290 -  
291 -.directory{  
292 - background: url('images.png') no-repeat -73px -26px;  
293 - height: 11px;  
294 - margin-bottom: -1px;  
295 -}  
296 -  
297 -.file{  
298 - background: url('images.png') no-repeat -114px -24px;  
299 - height: 16px;  
300 - margin-bottom: -3px;  
301 -}  
302 -  
303 -/* eo Icons*/  
304 -  
305 -/* Errors */  
306 -#error_explanation{background: #ffe5eb; padding: 20px; margin-bottom: 20px; border-radius: 5px}  
307 -#error_explanation h2{margin: 0; margin-bottom: 20px; color: red}  
308 -#error_explanation ul li{margin-bottom: 10px}  
309 -#error_explanation ul li:last-child{margin-bottom: 0}  
310 -.field_with_errors {  
311 - input[type="text"],  
312 - input[type="password"],  
313 - textarea  
314 - {  
315 - border: 1px solid #D30 !important;  
316 - }  
317 -}  
318 -/* eo Errors */  
319 -  
320 -/* Notices */  
321 -#notice{background: #dfffe1; padding: 20px; margin-bottom: 20px; border-radius: 5px; color: green; font-size: 1.3em;}  
322 -/* eo Notices */  
323 -  
324 -/* InfoBlock */  
325 -#infoblock{  
326 - background: #eeeeee;  
327 - padding: 20px;  
328 - margin-bottom: 20px;  
329 - border-radius: 5px;  
330 -}  
331 -/* eo InfoBlock */  
332 -  
333 -/* Header */  
334 -header{  
335 - background: #474D57 url('bg-header.png') repeat-x bottom;  
336 - z-index: 10000;  
337 - height: 44px;  
338 - padding: 10px 2% 6px 2%;  
339 -}  
340 -header a:hover{color: #f1f1f1}  
341 -header h1{  
342 - width: 65px;  
343 -}  
344 -header h1.logo{margin: 0; padding: 0}  
345 -header h1.logo a{  
346 - background: url('images.png') no-repeat -3px -7px;  
347 - width: 65px;  
348 - height: 26px;  
349 - margin: 5px 0;  
350 - padding: 0;  
351 - display: block;  
352 - float: left;  
353 - text-indent: -1000em;  
354 -}  
355 -  
356 -header nav{border-radius: 4px; box-shadow: 0 1px 2px black; width: 294px; margin: auto;  
357 - background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#31363e));  
358 - background-image: -webkit-linear-gradient(#595d63 6.6%, #31363e);  
359 - background-image: -moz-linear-gradient(#595d63 6.6%, #31363e);  
360 - background-image: -o-linear-gradient(#595d63 6.6%, #31363e);  
361 - margin-top: 2px;  
362 - height:30px  
363 -}  
364 -header nav.shorter_nav{  
365 - width: 207px;  
366 -}  
367 -header nav a{padding: 8px 12px 8px 34px; display: inline-block; color: #D6DADF; border-right: 1px solid #31363E; position: relative; box-shadow: 1px 0 0 rgba(255,255,255,.1); margin: 0}  
368 -header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}  
369 -header nav a:last-child {border: 0; box-shadow: none}  
370 -header nav a:hover, header nav a.current{  
371 - background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#2c2f35));  
372 - background-image: -webkit-linear-gradient(#595d63 6.6%, #2c2f35);  
373 - background-image: -moz-linear-gradient(#595d63 6.6%, #202227);  
374 - background-image: -o-linear-gradient(#595d63 6.6%, #202227);  
375 -}  
376 -  
377 -header nav a:active{  
378 - box-shadow: 0 1px 4px rgba(0,0,0,.8) inset;  
379 -}  
380 -  
381 -header nav a.dashboard {  
382 - -webkit-border-top-left-radius: 4px;  
383 - -webkit-border-bottom-left-radius: 4px;  
384 - -moz-border-radius-topleft: 4px;  
385 - -moz-border-radius-bottomleft: 4px;  
386 - border-top-left-radius: 4px;  
387 - border-bottom-left-radius: 4px;  
388 -}  
389 -  
390 -header nav a.last_elem{  
391 - -webkit-border-top-right-radius: 4px;  
392 - -webkit-border-bottom-right-radius: 4px;  
393 - -moz-border-radius-topright: 4px;  
394 - -moz-border-radius-bottomright: 4px;  
395 - border-top-right-radius: 4px;  
396 - border-bottom-right-radius: 4px;  
397 -}  
398 -  
399 -header .search{ display: inline-block; float: right; margin-right: 90px}  
400 -  
401 -header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}  
402 -  
403 -header nav a.dashboard span{background: url('images.png') no-repeat -161px 0;}  
404 -header nav a.admin span{background: url('images.png') no-repeat -184px 0;}  
405 -header nav a.project span{background: url('images.png') no-repeat -209px -1px; top: 7px}  
406 -header nav a.issues span{background: url('images.png') no-repeat -209px -1px; top: 7px}  
407 -  
408 -header .login-top{float: right; width: 180px;  
409 - background-image: -webkit-gradient(linear, 0 0, 0 62, color-stop(0.032, #464c56), to(#363c45));  
410 - background-image: -webkit-linear-gradient(#464c56 3.2%, #363c45);  
411 - background-image: -moz-linear-gradient(#464c56 3.2%, #363c45);  
412 - background-image: -o-linear-gradient(#464c56 3.2%, #363c45);  
413 - padding: 0 10px;  
414 - height: 44px;  
415 -}  
416 -header .login-top a{display: block;}  
417 -header .login-top a.pic{float: left; margin-right: 10px;  
418 - img{ height: 36px; width: 36px; border: 1px solid black}  
419 -}  
420 -header .login-top a.username{margin-bottom: 5px}  
421 -header .login-top a.logout{color: #ccc}  
422 -header{margin-bottom: 0; clear: both; position:relative;}  
423 -  
424 -.page-title{background-color: #f1f1f1;display: block; float: left; clear: both; width: 98%; padding: 1% 1%; border-bottom: 1px solid #ccc; box-shadow: 0 -1px 0 white inset; margin-bottom: 1.5em}  
425 -.page-title h1{font-size: 20px; width: 400px; margin: 0; padding-top: 8px }  
426 -.page-title a.grey-button{float: right;}  
427 -.right{float: right;}  
428 -  
429 -/* Account box */  
430 -header .account-box{  
431 - position: absolute;  
432 - right: 0;  
433 - top: 8px;  
434 - z-index: 10000;  
435 - width: 128px;  
436 - font-size: 11px;  
437 - float: right;  
438 - display: block;  
439 - cursor: pointer;}  
440 -header .account-box img{  
441 - border-radius: 4px;  
442 - right: 20px;  
443 - position: absolute;  
444 - width: 33px; height: 33px;  
445 - display: block; top:0;}  
446 -header .account-box img:after{  
447 - content: " ";  
448 - display: block;  
449 - position: absolute;  
450 - top: 0;  
451 - right: 0;  
452 -left: 0;  
453 - bottom: 0;  
454 -float: right;  
455 - border-radius: 5px;  
456 - border: 1px solid rgba(255, 255, 255, .1);  
457 - border-bottom: 0;  
458 - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, .15)), to(rgba(0, 0, 0, .25))), -webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, .1)), color-stop(0.501, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0)));  
459 - background: -moz-linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), -moz-linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));  
460 - background: linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));  
461 - -webkit-background-origin: border-box;  
462 - -moz-background-origin: border;  
463 - background-origin: border-box;  
464 -}  
465 -  
466 -.account-box.hover{height: 138px;}  
467 -  
468 -.account-box:hover > .account-links{display: block;}  
469 -header .account-links{  
470 - background: #79C3E0; display: none; border-radius: 5px; width: 100px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); position:relative;}  
471 -header .account-links:before {  
472 - content: ".";  
473 - width:0;  
474 - height:0;  
475 - position:absolute;  
476 - border:5px solid transparent;  
477 - border-color:rgba(255,255,255,0);  
478 - border-bottom-color:#fafafa;  
479 - text-indent:-9999px;  
480 - top:-10px;  
481 - line-height:0;  
482 - right:10px;  
483 - z-index:10;  
484 -}  
485 -  
486 -/* Inspired by http://maxvoltar.com/temp/nowplaying/ */  
487 -header .account-links{background: white; display: none; z-index: 100000; border-radius: 5px; width: 100px; position: absolute; right: 20px; top: 46px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); }  
488 -header .account-links a{color: #666; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #eee}  
489 -header .account-links a:hover{  
490 - background: #3aacec;  
491 - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#39acec), to(#279ada), color-stop(.05, #4cbefe));  
492 - background: -moz-linear-gradient(top, #39acec, #4cbefe 5%, #279ada);  
493 - background: linear-gradient(top, #39acec, #4cbefe 5%, #279ada);  
494 - color: #fff;  
495 - text-shadow: #1488c8 0 -1px 0;  
496 -}  
497 -.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute}  
498 -header .account-links a:first-child{  
499 - -webkit-border-top-left-radius: 5px;  
500 - -webkit-border-top-right-radius: 5px;  
501 - -moz-border-radius-topleft: 5px;  
502 - -moz-border-radius-topright: 5px;  
503 - border-top-left-radius: 5px;  
504 - border-top-right-radius: 5px;  
505 -}  
506 -  
507 -header .account-links a:last-child{  
508 - -webkit-border-bottom-right-radius: 5px;  
509 - -webkit-border-bottom-left-radius: 5px;  
510 - -moz-border-radius-bottomright: 5px;  
511 - -moz-border-radius-bottomleft: 5px;  
512 - border-bottom-right-radius: 5px;  
513 - border-bottom-left-radius: 5px;  
514 - border-bottom: 0;  
515 -}  
516 -  
517 -.big-message{  
518 - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.041, #eccb40), to(#ffee4d));  
519 - background-image: -webkit-linear-gradient(90deg, #eccb40 4.1%, #ffee4d);  
520 - background-image: -moz-linear-gradient(90deg, #eccb40 4.1%, #ffee4d);  
521 - background-image: -o-linear-gradient(90deg, #eccb40 4.1%, #ffee4d);  
522 - text-align: center;  
523 - font-weight: bold;  
524 - padding: 10px 20px;  
525 - text-shadow: 0 1px 0 rgba(255,255,255,.3);  
526 - color: #333;  
527 - color: rgba(0,0,0,.7);  
528 - font-size: 14px;  
529 - box-shadow: 0 1px 2px rgba(0,0,0,.7);  
530 - z-index: 100000;  
531 - margin-bottom: 2px;  
532 -}  
533 -  
534 -.big-message a{color: #000; text-decoration: underline;}  
535 -  
536 -.big-message.error{  
537 - background-color: #722523;  
538 - background-image: -webkit-gradient(linear, 0 49, 0 0, color-stop(0.04, #722523), to(#ad4846));  
539 - background-image: -webkit-linear-gradient(90deg, #9b403f 4%, #c16765);  
540 - background-image: -moz-linear-gradient(90deg, #722523 4%, #ad4846);  
541 - background-image: -o-linear-gradient(90deg, #722523 4%, #ad4846);  
542 - color: #2E0D0C;  
543 -}  
544 -  
545 -.big-message.success{  
546 - background-color: #7a9339;  
547 - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.062, #7a9339), to(#93ae46));  
548 - background-image: -webkit-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
549 - background-image: -moz-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
550 - background-image: -o-linear-gradient(90deg, #7a9339 6.2%, #93ae46)  
551 -}  
552 -  
553 -.big-message.success{  
554 - background-color: #7a9339;  
555 - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.062, #7a9339), to(#93ae46));  
556 - background-image: -webkit-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
557 - background-image: -moz-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
558 - background-image: -o-linear-gradient(90deg, #7a9339 6.2%, #93ae46)  
559 -}  
560 -  
561 -.big-message.notice{  
562 - background-image: -webkit-gradient(linear, 0 49, 0 0, color-stop(0.061, #447790), color-stop(0.897, #5da2bf));  
563 - background-image: -webkit-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%);  
564 - background-image: -moz-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%);  
565 - background-image: -o-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%)  
566 -}  
567 -  
568 -/* eo Account Box */  
569 -input.search-input{  
570 - float: left;  
571 - text-shadow: none;  
572 - width: 116px;  
573 - background-image: url('icon-search.png') ;  
574 - background-repeat: no-repeat;  
575 - background-position: 10px;  
576 - border-radius: 4px;  
577 - border: 1px solid #AAA;  
578 - background-color: #FFF;  
579 - padding: 5px;  
580 - padding-left: 26px;  
581 - margin-top: 2px;  
582 - margin-right: 10px;  
583 -}  
584 -/*input.search-input:focus{ background-color: white; width: 216px;}*/  
585 -input.search-input::-webkit-input-placeholder {color: #666}  
586 -/* eo Header */  
587 -  
588 -h2.icon{position: relative; padding-left: 40px; float: left; }  
589 -/*h2 a{font-weight: normal;}*/  
590 -h2.icon span{background: #E3E5EA url('images.png'); height: 32px; width: 32px; left: 0; top: -5px; border-radius: 4px; display: inline-block; position: absolute}  
591 -  
592 -/* Dashboard Page */  
593 -html, body { height: 100%; }  
594 -  
595 -  
596 -  
597 -  
598 -.grey-button.right{margin-top: 20px}  
599 -  
600 -/* Project Page */  
601 -/* eo New Project Page */  
602 -  
603 -  
604 -/* eo Project Page */  
605 -  
606 -/* Projects Page */  
607 -body.projects-page h2.icon span{background-position: -31px -70px;}  
608 -body.projects-page .project-box.ui-box .data .repository {margin-bottom: 20px}  
609 -body.projects-page .project-box.ui-box .data .title span{ font-weight: bold;}  
610 -body.projects-page .project-box{width: 100%; margin-bottom: 3em}  
611 -body.projects-page .browse-code{margin-right: 10px}  
612 -/* eo Projects Page */  
613 -  
614 -/* ==|== non-semantic helper classes ======================================== */  
615 -.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; }  
616 -.ir br { display: none; }  
617 -.hidden { display: none !important; visibility: hidden; }  
618 -.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }  
619 -.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }  
620 -.invisible { visibility: hidden; }  
621 -.clearfix:before, .clearfix:after { content: ""; display: table; }  
622 -.clearfix:after { clear: both; }  
623 -.clearfix { zoom: 1; }  
624 -  
625 -/* ==|== media queries ====================================================== */  
626 -  
627 -@media only screen and (min-width: 480px) {  
628 -  
629 -}  
630 -  
631 -@media only screen and (min-width: 768px) {  
632 -  
633 -}  
634 -  
635 -/* ==|== print styles ======================================================= */  
636 -  
637 -@media print {  
638 - * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; }  
639 - a, a:visited { text-decoration: underline; }  
640 - a[href]:after { content: " (" attr(href) ")"; }  
641 - abbr[title]:after { content: " (" attr(title) ")"; }  
642 - .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }  
643 - pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }  
644 - thead { display: table-header-group; }  
645 - tr, img { page-break-inside: avoid; }  
646 - img { max-width: 100% !important; }  
647 - @page { margin: 0.5cm; }  
648 - p, h2, h3 { orphans: 3; widows: 3; }  
649 - h2, h3 { page-break-after: avoid; }  
650 -}  
651 -  
652 -body, button, input, select, textarea {  
653 - font-family: "helvetica", "arial", "freesans", "clean", sans-serif;  
654 -}  
655 -  
656 -/** FORM INPUTS **/  
657 -.new_merge_request,  
658 -.edit_merge_request,  
659 -.user_new,  
660 -.new_key,  
661 -.new_issue,  
662 -.new_note,  
663 -.edit_user,  
664 -.edit_issue,  
665 -.new_project,  
666 -.new_snippet,  
667 -.edit_snippet,  
668 -.edit_project {  
669 - input[type='text'],  
670 - input[type='email'],  
671 - input[type='password'],  
672 - textarea {  
673 - width:400px;  
674 - padding:8px;  
675 - font-size:14px;  
676 - @include round-borders-all(4px);  
677 - }  
678 -}  
679 -  
680 -.text_field {  
681 - width:400px;  
682 - padding:8px;  
683 - font-size:14px;  
684 - @include round-borders-all(4px);  
685 -}  
686 -  
687 -.input_button {  
688 - padding:8px;  
689 - font-size:14px;  
690 - cursor:pointer;  
691 - background-color: #F5F5F5;  
692 - border-color: #EEEEEE #DEDEDE #DEDEDE #EEEEEE;  
693 - border-right: 1px solid #DEDEDE;  
694 - border-style: solid;  
695 - border-width: 1px;  
696 -}  
697 -  
698 -/** FLASH **/  
699 -#flash_container {  
700 - height:45px;  
701 - position:fixed;  
702 - z-index:10001;  
703 - top:0px;  
704 - width:100%;  
705 - margin-bottom:15px;  
706 - overflow:hidden;  
707 - background:white;  
708 - cursor:pointer;  
709 - border-bottom:1px solid #777;  
710 -  
711 - h4 {  
712 - color:#444;  
713 - font-size:22px;  
714 - padding-top:5px;  
715 - margin:2px;  
716 - }  
717 -}  
718 -  
719 -  
720 -.errors_holder {  
721 - background:#D30;  
722 - color:#fff;  
723 - @include round-borders-all(4px);  
724 - border:1px solid #a30;  
725 - padding:5px;  
726 - list-style:none;  
727 - font-weight: bold;  
728 - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);  
729 -  
730 - li {  
731 - padding:10px;  
732 - }  
733 -}  
734 -  
735 -.notice_holder {  
736 - background:#DDF4FB;  
737 - color:#444;  
738 - border:1px solid #C6EDF9;  
739 - @include round-borders-all(4px);  
740 - padding:5px;  
741 - list-style:none;  
742 - font-weight: bold;  
743 - text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25);  
744 -  
745 - li {  
746 - padding:10px;  
747 - }  
748 -}  
749 -  
750 -.alert_holder {  
751 - background:#FDF5D9;  
752 - color:#444;  
753 - border:1px solid #FCEEC1;  
754 - @include round-borders-all(4px);  
755 - padding:5px;  
756 - list-style:none;  
757 - font-weight: bold;  
758 - text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25);  
759 -  
760 - li {  
761 - padding:10px;  
762 - }  
763 -}  
764 -  
765 -.help_content {  
766 - margin:20px;  
767 - margin-top:71px;  
768 -  
769 - h2 {  
770 - margin:0;  
771 - padding:0;  
772 - }  
773 -  
774 - .menu {  
775 - float:left;  
776 - width:20%;  
777 -  
778 - .active {  
779 - color: $active_bd_color;  
780 - }  
781 - }  
782 -  
783 - .content {  
784 - float:right;  
785 - width:78%;  
786 - }  
787 -  
788 - .bash {  
789 - @include round-borders-all(4px);  
790 - background:#eee;  
791 - padding:5px;  
792 - //overflow-x:scroll;  
793 - pre{  
794 - padding:0;  
795 - line-height:2.0;  
796 - margin:0;  
797 - font-family: 'Courier New', 'andale mono','lucida console',monospace;  
798 - color: #333;  
799 - text-align:left;  
800 - }  
801 - }  
802 -}  
app/assets/stylesheets/tags.scss
@@ -1,55 +0,0 @@ @@ -1,55 +0,0 @@
1 -.tag {  
2 - @include round-borders-all(4px);  
3 - padding:2px 4px;  
4 - border:none;  
5 - text-shadow:none;  
6 -  
7 - &.inline {  
8 - display:inline;  
9 - }  
10 -  
11 - &.high, &.closed {  
12 - background: #D12F19;  
13 - color:white;  
14 - }  
15 -  
16 - &.today, &.open {  
17 - background: #44aa22;  
18 - color:white;  
19 - }  
20 -  
21 - &.yours {  
22 - background: #4466cc;  
23 - color:white;  
24 - }  
25 - &.normal {  
26 - background: #2c5ca6;  
27 - color:white;  
28 - }  
29 - &.notes {  
30 - background: #2c5c66;  
31 - color:white;  
32 - }  
33 -  
34 - &.note {  
35 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));  
36 - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);  
37 - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);  
38 - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);  
39 - color: #777;  
40 - border: 1px solid #DEDFE1;  
41 - }  
42 - &.issue {  
43 - background: #D12F19;  
44 - color:white;  
45 - }  
46 - &.commit {  
47 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));  
48 - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);  
49 - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);  
50 - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);  
51 - color: #777;  
52 - border: 1px solid #DEDFE1;  
53 - }  
54 -}  
55 -  
app/assets/stylesheets/top_panel.scss
1 -.main_links {  
2 - width:130px;  
3 - float:left;  
4 -  
5 - a {  
6 - float:left;  
7 - }  
8 -}  
9 -  
10 -.dashboard_links {  
11 - padding:7px;  
12 - float:left;  
13 - a {  
14 - margin: 0 14px;  
15 - float: left;  
16 - font-size: 14px;  
17 -  
18 - &.active {  
19 - color:$active_link_color;  
20 - }  
21 - &:hover {  
22 - color:$active_link_color;  
23 - }  
24 - }  
25 -}  
26 -  
27 -.top-tabs {  
28 - margin: 0;  
29 - padding: 5px;  
30 - font-size: 14px;  
31 - padding-bottom:10px;  
32 - margin-bottom:20px;  
33 - height:26px;  
34 - border-bottom:1px solid #ccc;  
35 -  
36 - .tab {  
37 - font-weight: bold;  
38 - background:none;  
39 - padding: 10px;  
40 - float:left;  
41 - padding-left:0px;  
42 - padding-right:40px;  
43 -  
44 - &.active {  
45 - color: $active_link_color;  
46 - }  
47 - }  
48 -}  
49 -  
50 body header { 1 body header {
51 position:absolute; 2 position:absolute;
52 width:100%; 3 width:100%;
@@ -54,23 +5,20 @@ body header { @@ -54,23 +5,20 @@ body header {
54 margin:0; 5 margin:0;
55 top:0; 6 top:0;
56 left:0; 7 left:0;
57 - background: #999; /* for non-css3 browsers */  
58 - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#EAEAEA'); /* for IE */  
59 - background: -webkit-gradient(linear, left top, left bottom, from(#FFFFFF), to(#EAEAEA)); /* for webkit browsers */  
60 - background: -moz-linear-gradient(top, #FFFFFF, #EAEAEA); /* for firefox 3.6+ */  
61 - background: -o-linear-gradient(top, #FFFFFF, #EAEAEA); /* for firefox 3.6+ */ 8 + background: #F1F1F1; /* for non-css3 browsers */
62 border-bottom: 1px solid #ccc; 9 border-bottom: 1px solid #ccc;
  10 + box-shadow: 0 -1px 0 white inset;
  11 + -moz-box-shadow: 0 -1px 0 white inset;
  12 + -webkit-box-shadow: 0 -1px 0 white inset;
63 13
64 height:50px; 14 height:50px;
65 15
66 .wrapper { 16 .wrapper {
67 margin:auto; 17 margin:auto;
68 - width:$app_width; 18 + min-width:$min_app_width;
  19 + max-width:$max_app_width;
69 position:relative; 20 position:relative;
70 -  
71 - .top_panel_content {  
72 - padding:10px $app_padding;  
73 - } 21 + padding:10px $app_padding;
74 } 22 }
75 23
76 .project_name { 24 .project_name {
@@ -102,45 +50,157 @@ body header { @@ -102,45 +50,157 @@ body header {
102 border: 1px solid #AAA; 50 border: 1px solid #AAA;
103 padding: 0 10px 0 30px; 51 padding: 0 10px 0 30px;
104 background: transparent url('images.png') no-repeat 8px -42px; 52 background: transparent url('images.png') no-repeat 8px -42px;
105 - width: 160px; 53 + width: 260px;
106 height:26px; 54 height:26px;
107 } 55 }
108 } 56 }
109 } 57 }
  58 +.main_links {
  59 + width:155px;
  60 + float:left;
110 61
111 -.top_panel_holder .chzn-container {  
112 - position:relative; 62 + a {
  63 + float:left;
  64 + }
  65 +}
113 66
114 - .chzn-drop {  
115 - margin:7px 0;  
116 - border: 1px solid #CCC;  
117 - min-width: 300px; 67 +.dashboard_links {
  68 + padding:7px;
  69 + float:left;
  70 + a {
  71 + margin: 0 14px;
  72 + float: left;
  73 + font-size: 14px;
118 74
119 - .chzn-results {  
120 - max-height:300px; 75 + &.active {
  76 + color:$active_link_color;
  77 + }
  78 + &:hover {
  79 + color:$active_link_color;
121 } 80 }
122 } 81 }
  82 +}
123 83
124 - .chzn-single {  
125 - background:transparent;  
126 - -moz-border-radius: 4px;  
127 - border-radius: 4px; 84 +.top-tabs {
  85 + margin: 0;
  86 + padding: 5px;
  87 + font-size: 14px;
  88 + padding-bottom:10px;
  89 + margin-bottom:20px;
  90 + height:26px;
  91 + border-bottom:1px solid #ccc;
128 92
129 - div {  
130 - background:transparent;  
131 - border-left:none;  
132 - } 93 + .tab {
  94 + font-weight: bold;
  95 + background:none;
  96 + padding: 10px;
  97 + float:left;
  98 + padding-left:0px;
  99 + padding-right:40px;
133 100
134 - span {  
135 - font-weight: normal; 101 + &.active {
  102 + color: $active_link_color;
136 } 103 }
137 } 104 }
138 } 105 }
139 106
  107 +
140 .rss-icon { 108 .rss-icon {
141 margin:0 15px; 109 margin:0 15px;
142 padding:3px; 110 padding:3px;
143 - border:1px solid #AAA;  
144 border-radius:3px; 111 border-radius:3px;
145 - float:left; 112 +}
  113 +
  114 +
  115 +
  116 +/* Account box */
  117 +header .account-box{
  118 + position: absolute;
  119 + right: 0;
  120 + top: 8px;
  121 + z-index: 10000;
  122 + width: 128px;
  123 + font-size: 11px;
  124 + float: right;
  125 + display: block;
  126 + cursor: pointer;}
  127 +header .account-box img{
  128 + border-radius: 4px;
  129 + right: 20px;
  130 + position: absolute;
  131 + width: 33px; height: 33px;
  132 + display: block; top:0;}
  133 +header .account-box img:after{
  134 + content: " ";
  135 + display: block;
  136 + position: absolute;
  137 + top: 0;
  138 + right: 0;
  139 +left: 0;
  140 + bottom: 0;
  141 +float: right;
  142 + border-radius: 5px;
  143 + border: 1px solid rgba(255, 255, 255, .1);
  144 + border-bottom: 0;
  145 + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, .15)), to(rgba(0, 0, 0, .25))), -webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, .1)), color-stop(0.501, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0)));
  146 + background: -moz-linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), -moz-linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
  147 + background: linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0));
  148 + -webkit-background-origin: border-box;
  149 + -moz-background-origin: border;
  150 + background-origin: border-box;
  151 +}
  152 +
  153 +.account-box.hover{height: 138px;}
  154 +.account-box:hover > .account-links{display: block;}
  155 +header .account-links{ background: #79C3E0; display: none; border-radius: 5px; width: 100px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); position:relative;}
  156 +
  157 +header .account-links:before {
  158 + content: ".";
  159 + width:0;
  160 + height:0;
  161 + position:absolute;
  162 + border:5px solid transparent;
  163 + border-color:rgba(255,255,255,0);
  164 + border-bottom-color:#333;
  165 + text-indent:-9999px;
  166 + top:-10px;
  167 + line-height:0;
  168 + right:10px;
  169 + z-index:10;
  170 +}
  171 +
  172 +header .account-links{
  173 + background: #333;
  174 + display: none;
  175 + z-index: 100000;
  176 + border-radius: 5px;
  177 + width: 100px;
  178 + position: absolute;
  179 + right: 20px;
  180 + top: 46px;
  181 + margin-top: 0;
  182 + float: right;
  183 + box-shadow: 0 1px 1px rgba(0,0,0,.2);
  184 +}
  185 +
  186 +header .account-links a{color: #EEE; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #555}
  187 +header .account-links a:hover{ background: #444;}
  188 +.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute}
  189 +header .account-links a:first-child{
  190 + -webkit-border-top-left-radius: 5px;
  191 + -webkit-border-top-right-radius: 5px;
  192 + -moz-border-radius-topleft: 5px;
  193 + -moz-border-radius-topright: 5px;
  194 + border-top-left-radius: 5px;
  195 + border-top-right-radius: 5px;
  196 +}
  197 +
  198 +header .account-links a:last-child{
  199 + -webkit-border-bottom-right-radius: 5px;
  200 + -webkit-border-bottom-left-radius: 5px;
  201 + -moz-border-radius-bottomright: 5px;
  202 + -moz-border-radius-bottomleft: 5px;
  203 + border-bottom-right-radius: 5px;
  204 + border-bottom-left-radius: 5px;
  205 + border-bottom: 0;
146 } 206 }
app/assets/stylesheets/tree.scss
@@ -8,13 +8,10 @@ @@ -8,13 +8,10 @@
8 } 8 }
9 9
10 .tree_progress { 10 .tree_progress {
11 - float:left;  
12 - width:16px;  
13 - height:16px;  
14 - margin:2px 6px; 11 + display:none;
  12 + margin:20px;
15 &.loading { 13 &.loading {
16 - background-position: 0px 0px;  
17 - background: url("ajax-loader-facebook.gif") no-repeat; 14 + display:block;
18 } 15 }
19 } 16 }
20 17
@@ -117,5 +114,15 @@ table.highlighttable .linenodiv pre { @@ -117,5 +114,15 @@ table.highlighttable .linenodiv pre {
117 .tree-item { 114 .tree-item {
118 &:hover { 115 &:hover {
119 background: #FFFFCF; 116 background: #FFFFCF;
  117 + cursor:pointer;
  118 + }
  119 +
  120 + .tree-item-file-name {
  121 + font-weight:bold;
  122 +
  123 + img {
  124 + position: relative;
  125 + top: 2px;
  126 + }
120 } 127 }
121 } 128 }
app/controllers/admin/projects_controller.rb
@@ -52,6 +52,12 @@ class Admin::ProjectsController < ApplicationController @@ -52,6 +52,12 @@ class Admin::ProjectsController < ApplicationController
52 def update 52 def update
53 @admin_project = Project.find_by_code(params[:id]) 53 @admin_project = Project.find_by_code(params[:id])
54 54
  55 + owner_id = params[:project][:owner_id]
  56 +
  57 + if owner_id
  58 + @admin_project.owner = User.find(owner_id)
  59 + end
  60 +
55 if @admin_project.update_attributes(params[:project]) 61 if @admin_project.update_attributes(params[:project])
56 redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' 62 redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.'
57 else 63 else
app/controllers/application_controller.rb
@@ -95,4 +95,8 @@ class ApplicationController < ActionController::Base @@ -95,4 +95,8 @@ class ApplicationController < ActionController::Base
95 response.headers["Pragma"] = "no-cache" 95 response.headers["Pragma"] = "no-cache"
96 response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT" 96 response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
97 end 97 end
  98 +
  99 + def render_full_content
  100 + @full_content = true
  101 + end
98 end 102 end
app/controllers/commits_controller.rb
@@ -29,6 +29,8 @@ class CommitsController < ApplicationController @@ -29,6 +29,8 @@ class CommitsController < ApplicationController
29 29
30 @line_notes = project.commit_line_notes(@commit) 30 @line_notes = project.commit_line_notes(@commit)
31 31
  32 + render_full_content
  33 +
32 respond_to do |format| 34 respond_to do |format|
33 format.html 35 format.html
34 format.js { respond_with_notes } 36 format.js { respond_with_notes }
app/controllers/keys_controller.rb
1 class KeysController < ApplicationController 1 class KeysController < ApplicationController
2 layout "profile" 2 layout "profile"
3 - respond_to :js 3 + respond_to :js, :html
4 4
5 def index 5 def index
6 @keys = current_user.keys.all 6 @keys = current_user.keys.all
app/controllers/merge_requests_controller.rb
@@ -39,6 +39,8 @@ class MergeRequestsController &lt; ApplicationController @@ -39,6 +39,8 @@ class MergeRequestsController &lt; ApplicationController
39 @notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20) 39 @notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20)
40 @note = @project.notes.new(:noteable => @merge_request) 40 @note = @project.notes.new(:noteable => @merge_request)
41 41
  42 + render_full_content
  43 +
42 respond_to do |format| 44 respond_to do |format|
43 format.html 45 format.html
44 format.js { respond_with_notes } 46 format.js { respond_with_notes }
app/controllers/projects_controller.rb
@@ -68,7 +68,8 @@ class ProjectsController &lt; ApplicationController @@ -68,7 +68,8 @@ class ProjectsController &lt; ApplicationController
68 68
69 def show 69 def show
70 return render "projects/empty" unless @project.repo_exists? && @project.has_commits? 70 return render "projects/empty" unless @project.repo_exists? && @project.has_commits?
71 - limit = (params[:limit] || 20).to_i 71 + limit = (params[:limit] || 10).to_i
  72 +
72 @activities = @project.activities(limit)#updates_wo_repo(limit) 73 @activities = @project.activities(limit)#updates_wo_repo(limit)
73 end 74 end
74 75
app/controllers/refs_controller.rb
@@ -8,16 +8,27 @@ class RefsController &lt; ApplicationController @@ -8,16 +8,27 @@ class RefsController &lt; ApplicationController
8 8
9 before_filter :ref 9 before_filter :ref
10 before_filter :define_tree_vars, :only => [:tree, :blob] 10 before_filter :define_tree_vars, :only => [:tree, :blob]
  11 + before_filter :render_full_content
  12 +
11 layout "project" 13 layout "project"
12 14
13 def switch 15 def switch
14 - new_path = if params[:destination] == "tree"  
15 - tree_project_ref_path(@project, params[:ref])  
16 - else  
17 - project_commits_path(@project, :ref => params[:ref])  
18 - end 16 + respond_to do |format|
  17 + format.html do
  18 + new_path = if params[:destination] == "tree"
  19 + tree_project_ref_path(@project, params[:ref])
  20 + else
  21 + project_commits_path(@project, :ref => params[:ref])
  22 + end
19 23
20 - redirect_to new_path 24 + redirect_to new_path
  25 + end
  26 + format.js do
  27 + @ref = params[:ref]
  28 + define_tree_vars
  29 + render "tree"
  30 + end
  31 + end
21 end 32 end
22 33
23 # 34 #
app/controllers/team_members_controller.rb
@@ -40,7 +40,7 @@ class TeamMembersController &lt; ApplicationController @@ -40,7 +40,7 @@ class TeamMembersController &lt; ApplicationController
40 @team_member.destroy 40 @team_member.destroy
41 41
42 respond_to do |format| 42 respond_to do |format|
43 - format.html { redirect_to root_path } 43 + format.html { redirect_to team_project_path(@project) }
44 format.js { render :nothing => true } 44 format.js { render :nothing => true }
45 end 45 end
46 end 46 end
app/helpers/dashboard_helper.rb
@@ -3,6 +3,7 @@ module DashboardHelper @@ -3,6 +3,7 @@ module DashboardHelper
3 case object.class.name.to_s 3 case object.class.name.to_s
4 when "Issue" then project_issue_path(project, project.issues.find(object.id)) 4 when "Issue" then project_issue_path(project, project.issues.find(object.id))
5 when "Commit" then project_commit_path(project, project.repo.commits(object.id).first) 5 when "Commit" then project_commit_path(project, project.repo.commits(object.id).first)
  6 + when "MergeRequest" then project_merge_request_path(project, object.id)
6 when "Note" 7 when "Note"
7 then 8 then
8 note = object 9 note = object
@@ -26,6 +27,7 @@ module DashboardHelper @@ -26,6 +27,7 @@ module DashboardHelper
26 when "Note" then markdown(object.note) 27 when "Note" then markdown(object.note)
27 when "Issue" then object.title 28 when "Issue" then object.title
28 when "Commit" then object.safe_message 29 when "Commit" then object.safe_message
  30 + when "MergeRequest" then object.title
29 else return "Project Wall" 31 else return "Project Wall"
30 end 32 end
31 33
app/models/commit.rb
1 class Commit 1 class Commit
  2 + include ActiveModel::Conversion
  3 + extend ActiveModel::Naming
2 4
3 attr_accessor :commit 5 attr_accessor :commit
4 attr_accessor :head 6 attr_accessor :head
@@ -18,6 +20,10 @@ class Commit @@ -18,6 +20,10 @@ class Commit
18 :id, 20 :id,
19 :to => :commit 21 :to => :commit
20 22
  23 + def persisted?
  24 + false
  25 + end
  26 +
21 def initialize(raw_commit, head = nil) 27 def initialize(raw_commit, head = nil)
22 @commit = raw_commit 28 @commit = raw_commit
23 @head = head 29 @head = head
app/views/admin/projects/_form.html.haml
@@ -6,34 +6,31 @@ @@ -6,34 +6,31 @@
6 - @admin_project.errors.full_messages.each do |msg| 6 - @admin_project.errors.full_messages.each do |msg|
7 %li= msg 7 %li= msg
8 8
9 - .form-row 9 + .clearfix
10 = f.label :name 10 = f.label :name
11 - %br  
12 - = f.text_field :name  
13 - .form-row 11 + .input= f.text_field :name
  12 + .clearfix
14 = f.label :code 13 = f.label :code
15 - %br  
16 - = f.text_field :code  
17 - .form-row 14 + .input= f.text_field :code
  15 + .clearfix
18 = f.label :path 16 = f.label :path
19 - %br  
20 - = f.text_field :path 17 + .input= f.text_field :path
21 18
22 - .form-row  
23 - = f.label :tag_list  
24 - %br  
25 - = f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field 19 + - unless @admin_project.new_record?
  20 + .clearfix
  21 + = f.label :owner_id
  22 + .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] }
26 23
27 - .form-row 24 + .clearfix
28 = f.label :description 25 = f.label :description
29 - %br  
30 - = f.text_area :description 26 + .input= f.text_area :description
31 .clear 27 .clear
32 %br 28 %br
33 .actions 29 .actions
34 - = f.submit 'Save', :class => "grey-button" 30 + = f.submit 'Save', :class => "btn"
35 31
36 :javascript 32 :javascript
37 $(function(){ 33 $(function(){
38 taggifyForm(); 34 taggifyForm();
  35 + $('#project_owner_id').chosen();
39 }) 36 })
app/views/admin/projects/index.html.haml
@@ -19,4 +19,4 @@ @@ -19,4 +19,4 @@
19 %td= link_to 'Destroy', [:admin, project], :confirm => 'Are you sure?', :method => :delete 19 %td= link_to 'Destroy', [:admin, project], :confirm => 'Are you sure?', :method => :delete
20 20
21 = paginate @admin_projects 21 = paginate @admin_projects
22 -= link_to 'New Project', new_admin_project_path, :class => "grey-button" 22 += link_to 'New Project', new_admin_project_path, :class => "btn"
app/views/admin/projects/show.html.haml
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 = @admin_project.description 31 = @admin_project.description
32 %tr 32 %tr
33 %td{:colspan => 2} 33 %td{:colspan => 2}
34 - = link_to 'Edit', edit_admin_project_path(@admin_project), :class => "grey-button" 34 + = link_to 'Edit', edit_admin_project_path(@admin_project), :class => "btn"
35 35
36 36
37 .span-14 37 .span-14
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
53 53
54 %tr 54 %tr
55 %td{ :colspan => 3 } 55 %td{ :colspan => 3 }
56 - = submit_tag 'Add', :class => "positive-button" 56 + = submit_tag 'Add', :class => "btn primary"
57 57
58 %table.round-borders 58 %table.round-borders
59 %thead 59 %thead
app/views/admin/team_members/_form.html.haml
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select" 27 = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select"
28 %br 28 %br
29 .actions 29 .actions
30 - = f.submit 'Save', :class => "grey-button" 30 + = f.submit 'Save', :class => "btn"
31 31
32 :css 32 :css
33 form select { 33 form select {
app/views/admin/team_members/index.html.haml
@@ -25,4 +25,4 @@ @@ -25,4 +25,4 @@
25 %br 25 %br
26 26
27 = paginate @admin_team_members 27 = paginate @admin_team_members
28 -= link_to 'New Team Member', new_admin_team_member_path, :class => "grey-button" 28 += link_to 'New Team Member', new_admin_team_member_path, :class => "btn"
app/views/admin/users/_form.html.haml
@@ -2,48 +2,41 @@ @@ -2,48 +2,41 @@
2 = form_for [:admin, @admin_user] do |f| 2 = form_for [:admin, @admin_user] do |f|
3 -if @admin_user.errors.any? 3 -if @admin_user.errors.any?
4 #error_explanation 4 #error_explanation
5 - %h2= "#{pluralize(@admin_user.errors.count, "error")} prohibited this admin_user from being saved:"  
6 %ul 5 %ul
7 - @admin_user.errors.full_messages.each do |msg| 6 - @admin_user.errors.full_messages.each do |msg|
8 %li= msg 7 %li= msg
9 8
10 - .form-row 9 + .clearfix
11 = f.label :name 10 = f.label :name
12 - %br  
13 - = f.text_field :name  
14 - .form-row 11 + .input= f.text_field :name
  12 + .clearfix
15 = f.label :email 13 = f.label :email
16 - %br  
17 - = f.text_field :email  
18 - .form-row 14 + .input= f.text_field :email
  15 + .clearfix
19 = f.label :password 16 = f.label :password
20 - %br  
21 - = f.password_field :password  
22 - .form-row 17 + .input= f.password_field :password
  18 + .clearfix
23 = f.label :password_confirmation 19 = f.label :password_confirmation
24 - %br  
25 - = f.password_field :password_confirmation  
26 - .form-row 20 + .input= f.password_field :password_confirmation
  21 + .clearfix
27 = f.check_box :admin 22 = f.check_box :admin
28 = f.label :admin 23 = f.label :admin
29 24
30 - .form-row  
31 - = f.text_field :projects_limit, :class => "small_input" 25 + .clearfix
32 = f.label :projects_limit 26 = f.label :projects_limit
  27 + .input= f.text_field :projects_limit, :class => "small_input"
33 28
34 - .form-row 29 + .clearfix
35 = f.label :skype 30 = f.label :skype
36 - %br  
37 - = f.text_field :skype  
38 - .form-row 31 + .input= f.text_field :skype
  32 + .clearfix
39 = f.label :linkedin 33 = f.label :linkedin
40 - %br  
41 - = f.text_field :linkedin  
42 - .form-row 34 + .input= f.text_field :linkedin
  35 + .clearfix
43 = f.label :twitter 36 = f.label :twitter
44 - %br  
45 - = f.text_field :twitter 37 + .input= f.text_field :twitter
46 .clear 38 .clear
47 %br 39 %br
48 .actions 40 .actions
49 - = f.submit 'Save', :class => "grey-button" 41 + = f.submit 'Save', :class => "btn primary"
  42 + = link_to 'Cancel', admin_users_path, :class => "btn"
app/views/admin/users/index.html.haml
@@ -18,4 +18,4 @@ @@ -18,4 +18,4 @@
18 18
19 = paginate @admin_users 19 = paginate @admin_users
20 %br 20 %br
21 -= link_to 'New User', new_admin_user_path, :class => "grey-button" 21 += link_to 'New User', new_admin_user_path, :class => "btn"
app/views/admin/users/new.html.haml
1 -%h1 New user  
2 - 1 +%h2 New user
  2 +%hr
3 = render 'form' 3 = render 'form'
4 -  
5 -%br  
6 -= link_to 'Back', admin_users_path, :class => ""  
app/views/admin/users/show.html.haml
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 = @admin_user.twitter 41 = @admin_user.twitter
42 %tr 42 %tr
43 %td{:colspan => 2} 43 %td{:colspan => 2}
44 - = link_to 'Edit', edit_admin_user_path(@admin_user), :class => "grey-button" 44 + = link_to 'Edit', edit_admin_user_path(@admin_user), :class => "btn"
45 45
46 .span-14 46 .span-14
47 %h2 Projects 47 %h2 Projects
@@ -66,4 +66,4 @@ @@ -66,4 +66,4 @@
66 %td= link_to 'Edit', edit_admin_team_member_path(tm) 66 %td= link_to 'Edit', edit_admin_team_member_path(tm)
67 %td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete 67 %td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete
68 68
69 - = link_to 'Add To Another Project', new_admin_team_member_path(:team_member => {:user_id => @admin_user.id}), :class => "grey-button" 69 + = link_to 'Add To Another Project', new_admin_team_member_path(:team_member => {:user_id => @admin_user.id}), :class => "btn"
app/views/commits/_commits.html.haml
1 - @commits.group_by { |c| c.committed_date.to_date }.each do |day, commits| 1 - @commits.group_by { |c| c.committed_date.to_date }.each do |day, commits|
2 %div{ :class => "commits-date ui-box ui-box-small ui-box-big" } 2 %div{ :class => "commits-date ui-box ui-box-small ui-box-big" }
3 .day-commits-table 3 .day-commits-table
4 - %h3= day.stamp("28 Aug, 2010")  
5 - .data 4 + %h5.underlined= day.stamp("28 Aug, 2010")
  5 + %br
  6 + %ul.unstyled
6 - commits.each do |commit| 7 - commits.each do |commit|
7 - %a{ :class => "commit", :href => project_commit_path(@project, :id => commit.id) }  
8 - %span.commit-info  
9 - %data.commit-button  
10 - = truncate(commit.id.to_s, :length => 16)  
11 - %i  
12 - %data.commit-browse{ :onclick => "location.href='#{tree_project_ref_path(@project, commit.id)}';return false;"}  
13 - Browse Code  
14 - - if commit.author_email  
15 - = image_tag gravatar_icon(commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"  
16 - - else  
17 - = image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;"  
18 - %span.commit-title  
19 - %strong  
20 - = truncate(commit.safe_message, :length => 70)  
21 - %span.commit-author  
22 - Authored by  
23 - &nbsp;  
24 - %strong= commit.author_name  
25 - = time_ago_in_words(commit.authored_date)  
26 - ago  
27 - - if commit.author_name != commit.committer_name or commit.author_email != commit.committer_email or commit.authored_date != commit.committed_date  
28 - %span.commit-committer  
29 - Committed by  
30 - &nbsp;  
31 - %strong= commit.committer_name  
32 - = time_ago_in_words(commit.committed_date)  
33 - ago 8 + %li.entry
  9 + = link_to project_commit_path(@project, :id => commit.id) do
  10 + %div
  11 + %strong
  12 + = truncate commit.id.to_s, :length => 10
  13 + &ndash;
  14 + = image_tag gravatar_icon(commit.author_email), :class => "", :width => 16
  15 + = truncate(commit.safe_message, :length => 50)
  16 +
  17 + %span.right.cgray
  18 + = time_ago_in_words(commit.committed_date)
  19 + ago
app/views/commits/index.html.haml
1 -- content_for(:body_class, "project-page commits-page")  
2 -- if current_user.private_token  
3 - = content_for :rss_icon do  
4 - .rss-icon 1 +%h3
  2 + Commits
  3 + - if current_user.private_token
  4 + %span.rss-icon
5 = link_to project_commits_path(@project, :atom, { :private_token => current_user.private_token, :ref => @ref }) do 5 = link_to project_commits_path(@project, :atom, { :private_token => current_user.private_token, :ref => @ref }) do
6 = image_tag "Rss-UI.PNG", :width => 22, :title => "feed" 6 = image_tag "Rss-UI.PNG", :width => 22, :title => "feed"
  7 + = form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form right" do
  8 + = select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select"
  9 + = hidden_field_tag :destination, "commits"
  10 +%hr
7 11
8 - if params[:path] 12 - if params[:path]
9 - %h2  
10 - = link_to project_commits_path(@project) do  
11 - = @project.code  
12 - \/  
13 - %a{:href => "#"}= params[:path].split("/").join(" / ") 13 + %ul.breadcrumb
  14 + %li
  15 + = link_to project_commits_path(@project) do
  16 + = @project.code
  17 + %span.divider
  18 + \/
  19 + %li
  20 + %a{:href => "#"}= params[:path].split("/").join(" / ")
14 21
15 %div{:id => dom_id(@project)} 22 %div{:id => dom_id(@project)}
16 #commits_list= render "commits" 23 #commits_list= render "commits"
@@ -23,3 +30,8 @@ @@ -23,3 +30,8 @@
23 $(function(){ 30 $(function(){
24 CommitsList.init("#{@ref}", 20); 31 CommitsList.init("#{@ref}", 20);
25 }); 32 });
  33 +
  34 +:javascript
  35 + $(function(){
  36 + $('.project-refs-select').chosen();
  37 + });
app/views/commits/show.html.haml
1 -- content_for(:body_class, "project-page commits-page")  
2 .commit 1 .commit
3 %span.commit-info 2 %span.commit-info
4 - = link_to tree_project_ref_path(@project, @commit.id) do  
5 - %data.commit-button  
6 - Browse Code  
7 - %i 3 + = link_to tree_project_ref_path(@project, @commit.id), :class => "btn right" do
  4 + Browse Code »
8 - if @commit.author_email 5 - if @commit.author_email
9 = image_tag gravatar_icon(@commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" 6 = image_tag gravatar_icon(@commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
10 - else 7 - else
app/views/dashboard/_issues_feed.html.haml
1 -#feeds_content_holder  
2 - - unless @issues.empty?  
3 - .project-box.project-updates.ui-box.ui-box-small.ui-box-big  
4 - .data  
5 - - @issues.each do |update|  
6 - %a.project-update{:href => dashboard_feed_path(update.project, update)}  
7 - %strong.issue-number= "##{update.id}"  
8 - %span.update-title  
9 - = truncate update.title, :length => 35  
10 - .right= truncate update.project.name  
11 - %span.update-author  
12 - %strong= update.author_name  
13 - authored  
14 - = time_ago_in_words(update.created_at)  
15 - ago  
16 - .right  
17 - - if update.critical  
18 - %span.tag.high critical  
19 - - if update.today?  
20 - %span.tag.today today  
21 -  
22 - - else  
23 - %h2  
24 - No assigned  
25 - %span.tag.open open  
26 - issues 1 +- @issues.each do |issue|
  2 + .alert-message.entry
  3 + = link_to [issue.project, issue] do
  4 + %p
  5 + %strong
  6 + = issue.project.name
  7 + &ndash;
  8 + Issue #
  9 + = issue.id
  10 + = truncate issue.title, :length => 50
app/views/dashboard/_merge_requests_feed.html.haml
1 -#feeds_content_holder  
2 - - unless @merge_requests.empty?  
3 - .project-box.project-updates.ui-box.ui-box-small.ui-box-big  
4 - .data  
5 - - @merge_requests.each do |update|  
6 - %a.project-update{:href => project_merge_request_path(update.project, update)}  
7 - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40  
8 - %span.update-title  
9 - = truncate update.title, :length => 35  
10 - .right= truncate update.project.name  
11 - %span.update-author  
12 - %strong= update.author_name  
13 - authored  
14 - = time_ago_in_words(update.created_at)  
15 - ago  
16 - .right  
17 - %span.tag.commit= update.source_branch  
18 - &rarr;  
19 - %span.tag.commit= update.target_branch  
20 - - else  
21 - %h2  
22 - No authored or assigned  
23 - %span.tag.open open  
24 - merge requests 1 +- @merge_requests.each do |merge_request|
  2 + .alert-message.entry
  3 + = link_to [merge_request.project, merge_request] do
  4 + %p
  5 + %strong
  6 + = merge_request.project.name
  7 + &ndash;
  8 + Merge Request #
  9 + = merge_request.id
  10 + = truncate merge_request.title, :length => 50
app/views/dashboard/_projects_feed.html.haml
1 -#feeds_content_holder  
2 - - @active_projects.first(3).each do |project|  
3 - .project-box.project-updates.ui-box.ui-box-small.ui-box-big  
4 - = link_to project do  
5 - %h3= project.name  
6 - .data  
7 - - project.updates(3).each do |update|  
8 - %a.project-update{:href => dashboard_feed_path(project, update)}  
9 - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40  
10 - %span.update-title  
11 - = dashboard_feed_title(update)  
12 - %span.update-author  
13 - %strong= update.author_name  
14 - authored  
15 - = time_ago_in_words(update.created_at)  
16 - ago  
17 - .right  
18 - - klass = update.class.to_s.split("::").last.downcase  
19 - %span.tag{ :class => klass }= klass 1 +- @active_projects.first(3).each do |project|
  2 + = link_to project do
  3 + %h4= project.name
  4 + - project.updates(3).each do |update|
  5 + %a.project-update{:href => dashboard_feed_path(project, update)}
  6 + = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32
  7 + %div
  8 + = dashboard_feed_title(update)
  9 + %span.update-author
  10 + %strong= update.author_name
  11 + authored
  12 + = time_ago_in_words(update.created_at)
  13 + ago
  14 + .right
  15 + - klass = update.class.to_s.split("::").last.downcase
  16 + %span.tag{ :class => klass }= klass
20 17
app/views/dashboard/_sidebar.html.haml
@@ -1,15 +0,0 @@ @@ -1,15 +0,0 @@
1 -%aside  
2 - %h4  
3 - - if current_user.can_create_project?  
4 - %a.button-small.button-green{:href => new_project_path} New Project  
5 - Your Projects  
6 - %ol.project-list  
7 - - @projects.each do |project|  
8 - %li  
9 - %a{:href => project_path(project)}  
10 - -#%span.arrow →  
11 - %span.project-name= project.name  
12 - %span.time  
13 - %strong Last activity:  
14 - = project.last_activity_date_cached ? time_ago_in_words(project.last_activity_date_cached) + " ago" : "Never"  
15 -  
app/views/dashboard/index.html.haml
1 -- content_for(:body_class, "dashboard-page")  
2 -  
3 -#dashboard-content.dashboard-content.content  
4 - = render "dashboard/sidebar"  
5 - #news-feed.news-feed= render "dashboard/projects_feed" 1 +%h3 Activities
  2 +%hr
  3 +.news-feed= render "dashboard/projects_feed"
app/views/dashboard/issues.html.haml
1 -- content_for(:body_class, "dashboard-page") 1 +%h3
  2 + Issues
  3 + %small ( assigned to you )
2 4
3 -#dashboard-content.dashboard-content.content  
4 - = render "dashboard/sidebar"  
5 - #news-feed.news-feed= render "dashboard/issues_feed" 5 +%hr
  6 += render "dashboard/issues_feed"
app/views/dashboard/merge_requests.html.haml
1 -- content_for(:body_class, "dashboard-page") 1 +%h3
  2 + Merge Requests
  3 + %small ( authored or assigned to you )
2 4
3 -#dashboard-content.dashboard-content.content  
4 - = render "dashboard/sidebar"  
5 - #news-feed.news-feed= render "dashboard/merge_requests_feed" 5 +%hr
  6 += render "dashboard/merge_requests_feed"
app/views/deploy_keys/_form.html.haml
1 %div 1 %div
2 = form_for [@project, @key], :url => project_deploy_keys_path do |f| 2 = form_for [@project, @key], :url => project_deploy_keys_path do |f|
3 -if @key.errors.any? 3 -if @key.errors.any?
4 - %ul.errors_holder  
5 - - @key.errors.full_messages.each do |msg|  
6 - %li= msg  
7 -  
8 - %table.no-borders  
9 - %tr  
10 - %td= f.label :title  
11 - %td= f.text_field :title, :style => "width:300px"  
12 - %tr  
13 - %td= f.label :key  
14 - %td= f.text_area :key, :style => "width:300px; height:130px"  
15 - %br  
16 - .merge-tabs  
17 - = f.submit 'Save', :class => "positive-button" 4 + .alert-message.block-message.error
  5 + %ul
  6 + - @key.errors.full_messages.each do |msg|
  7 + %li= msg
  8 +
  9 + .clearfix
  10 + = f.label :title
  11 + .input= f.text_field :title
  12 + .clearfix
  13 + = f.label :key
  14 + .input= f.text_area :key, :class => "xlarge"
  15 + .actions
  16 + = f.submit 'Save', :class => "primary btn"
  17 + = link_to "Cancel", project_deploy_keys_path(@project), :class => "btn"
18 18
app/views/deploy_keys/index.html.haml
1 = render "repositories/head" 1 = render "repositories/head"
2 -  
3 -%div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" }  
4 - .data  
5 - - @keys.each do |key|  
6 - = render(:partial => 'show', :locals => {:key => key})  
7 -  
8 -- if @keys.blank?  
9 - .notice_holder  
10 - %li Deploy Keys do not exist yet.  
11 - - if can? current_user, :admin_project, @project  
12 - %li You can add a new one by clicking on "Add New" button  
13 -  
14 -:javascript  
15 - $('.delete-key').live('ajax:success', function() {  
16 - $(this).closest('.update-item').fadeOut(); });  
17 - 2 +- if can? current_user, :admin_project, @project
  3 + .alert-message.block-message.info
  4 + Deploy keys allow read-only access to repository.
  5 + = link_to new_project_deploy_key_path(@project), :class => "btn small", :title => "New Deploy Key" do
  6 + Add Deploy Key
  7 +
  8 +%ul.unstyled
  9 + - @keys.each do |key|
  10 + %li= render(:partial => 'show', :locals => {:key => key})
app/views/deploy_keys/show.html.haml
1 -.ui-box.width-100p  
2 - %h3= @key.title  
3 - .data  
4 - %pre= @key.key  
5 - .clear  
6 - .buttons  
7 - = link_to 'Remove', project_deploy_key_path(@key.project, @key), :confirm => 'Are you sure?', :method => :delete, :class => "red-button delete-key right"  
8 - .clear  
9 -  
10 - 1 += render "repositories/head"
  2 +%h3= @key.title
  3 +%hr
  4 +%pre= @key.key
  5 +.actions
  6 + = link_to 'Remove', project_deploy_key_path(@key.project, @key), :confirm => 'Are you sure?', :method => :delete, :class => "danger btn delete-key"
  7 + .clear
app/views/devise/passwords/new.html.erb
@@ -3,6 +3,6 @@ @@ -3,6 +3,6 @@
3 <%= devise_error_messages! %> 3 <%= devise_error_messages! %>
4 <%= f.email_field :email, :placeholder => "Email", :class => "text top" %> 4 <%= f.email_field :email, :placeholder => "Email", :class => "text top" %>
5 <br/> 5 <br/>
6 - <%= f.submit "Reset password", :class => "grey-button" %> 6 + <%= f.submit "Reset password", :class => "primary btn" %>
7 <div class="right"> <%= render :partial => "devise/shared/links" %></div> 7 <div class="right"> <%= render :partial => "devise/shared/links" %></div>
8 <% end %> 8 <% end %>
app/views/devise/sessions/new.html.erb
@@ -4,10 +4,10 @@ @@ -4,10 +4,10 @@
4 <%= f.password_field :password, :class => "text bottom", :placeholder => "Password" %> 4 <%= f.password_field :password, :class => "text bottom", :placeholder => "Password" %>
5 5
6 <% if devise_mapping.rememberable? -%> 6 <% if devise_mapping.rememberable? -%>
7 - <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> 7 + <div class="clearfix"> <%= f.label :remember_me %><%= f.check_box :remember_me %></div>
8 <% end -%> 8 <% end -%>
9 <br/> 9 <br/>
10 - <%= f.submit "Sign in", :class => "grey-button" %> 10 + <%= f.submit "Sign in", :class => "primary btn" %>
11 <div class="right"> <%= render :partial => "devise/shared/links" %></div> 11 <div class="right"> <%= render :partial => "devise/shared/links" %></div>
12 <% if ldap_enable? -%> 12 <% if ldap_enable? -%>
13 <p><%= link_to "via LDAP", user_omniauth_authorize_path(:ldap)%></p> 13 <p><%= link_to "via LDAP", user_omniauth_authorize_path(:ldap)%></p>
app/views/devise/shared/_links.erb
1 <%- if controller_name != 'sessions' %> 1 <%- if controller_name != 'sessions' %>
2 - <%= link_to "Sign in", new_session_path(resource_name) %><br /> 2 + <%= link_to "Sign in", new_session_path(resource_name), :class => "btn" %><br />
3 <% end -%> 3 <% end -%>
4 4
5 <%- if devise_mapping.registerable? && controller_name != 'registrations' %> 5 <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 <% end -%> 7 <% end -%>
8 8
9 <%- if devise_mapping.recoverable? && controller_name != 'passwords' %> 9 <%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
10 - <%= link_to "Forgot your password?", new_password_path(resource_name) %><br /> 10 +<%= link_to "Forgot your password?", new_password_path(resource_name), :class => "btn" %><br />
11 <% end -%> 11 <% end -%>
12 12
13 <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> 13 <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
app/views/hooks/index.html.haml
1 = render "repositories/head" 1 = render "repositories/head"
2 -- unless @hooks.empty?  
3 - %div.update-data.ui-box.ui-box-small  
4 - .data  
5 - - @hooks.each do |hook|  
6 - %a.update-item{:href => project_hook_path(@project, hook)}  
7 - %span.update-title{:style => "margin-bottom:0px;"}  
8 - = hook.url  
9 - %span.update-author.right  
10 - Added  
11 - = time_ago_in_words(hook.created_at)  
12 - ago  
13 -- else  
14 - %h3 No hooks  
15 2
16 -.clear  
17 -%hr  
18 -%p  
19 - Post receive hooks. For now only POST request allowed. We send some data with request. Example below 3 +- if can? current_user, :admin_project, @project
  4 + .alert-message.block-message.info
  5 + Post receive hooks for binding events when someone push to repository.
  6 + = link_to new_project_hook_path(@project), :class => "btn small", :title => "New Web Hook" do
  7 + Add Post Receive Hook
20 8
21 -.view_file  
22 - .view_file_header  
23 - %strong POST data passed  
24 - .data.no-padding  
25 - = render "data_ex" 9 +%ul.unstyled
  10 + - @hooks.each do |hook|
  11 + %li
  12 + %a.update-item{:href => project_hook_path(@project, hook)}
  13 + = hook.url
  14 +
  15 +.alert-message.block-message.info
  16 + We send some data with POST request when someone makes git push
  17 +
  18 +.well= render "data_ex"
app/views/hooks/show.html.haml
1 = render "repositories/head" 1 = render "repositories/head"
2 -%h3  
3 - %span.commit.tag POST  
4 - = @hook.url  
5 - 2 +%pre= @hook.url
6 3
7 - if can? current_user, :admin_project, @project 4 - if can? current_user, :admin_project, @project
8 - .merge-tabs  
9 - = link_to 'Test Hook', test_project_hook_path(@project, @hook), :class => "grey-button"  
10 - .right  
11 - = link_to 'Remove', project_hook_path(@project, @hook), :confirm => 'Are you sure?', :method => :delete, :class => "red-button" 5 + .actions
  6 + = link_to 'Test Hook', test_project_hook_path(@project, @hook), :class => "btn"
  7 + = link_to 'Remove', project_hook_path(@project, @hook), :confirm => 'Are you sure?', :method => :delete, :class => "danger btn"
app/views/issues/_form.html.haml
1 %div.issue-form-holder 1 %div.issue-form-holder
2 = form_for [@project, @issue], :remote => request.xhr? do |f| 2 = form_for [@project, @issue], :remote => request.xhr? do |f|
3 - %div  
4 - %span.entity-info  
5 - - if request.xhr?  
6 - = link_to "#back", :onclick => "backToIssues();" do  
7 - .entity-button  
8 - Issues  
9 - %i  
10 - - else  
11 - - if @issue.new_record?  
12 - = link_to project_issues_path(@project) do  
13 - .entity-button  
14 - Issues  
15 - %i  
16 - - else  
17 - = link_to project_issue_path(@project, @issue) do  
18 - .entity-button  
19 - Show Issue  
20 - %i  
21 -  
22 - %h2= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}"  
23 - %hr 3 + %h3= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}"
  4 + %hr
24 -if @issue.errors.any? 5 -if @issue.errors.any?
25 - %ul.errors_holder  
26 - - @issue.errors.full_messages.each do |msg|  
27 - %li= msg 6 + .alert-message.block-message.error
  7 + %ul
  8 + - @issue.errors.full_messages.each do |msg|
  9 + %li= msg
28 10
29 - %table.no-borders  
30 - %tr  
31 - %td= f.label :assignee_id  
32 - %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) 11 + .clearfix
  12 + = f.label :assignee_id
  13 + .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
33 14
34 - %tr  
35 - %td= f.label :critical, "Critical"  
36 - %td= f.check_box :critical  
37 -  
38 - - unless @issue.new_record?  
39 - %tr  
40 - %td= f.label :closed  
41 - %td= f.check_box :closed 15 + .clearfix
  16 + = f.label :critical, "Critical"
  17 + .input= f.check_box :critical
42 18
43 - = f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255  
44 - %br  
45 - %br  
46 - .merge-tabs  
47 - = f.submit 'Save', :class => "positive-button"  
48 - &nbsp; 19 + - unless @issue.new_record?
  20 + .clearfix
  21 + = f.label :closed
  22 + .input= f.check_box :closed
  23 +
  24 + .clearfix
  25 + = f.label :title
  26 + .input= f.text_area :title, :maxlength => 255, :class => "xlarge"
  27 + .actions
  28 + = f.submit 'Save', :class => "primary btn"
  29 +
  30 + - if request.xhr?
  31 + = link_to "Cancel", "#back", :onclick => "backToIssues();", :class => "btn"
  32 + - else
  33 + - if @issue.new_record?
  34 + = link_to "Cancel", project_issues_path(@project), :class => "btn"
  35 + - else
  36 + = link_to "Cancel", project_issue_path(@project, @issue), :class => "btn"
  37 +
  38 +
49 - unless @issue.new_record? 39 - unless @issue.new_record?
50 .right 40 .right
51 - = link_to 'Remove', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" 41 + = link_to 'Remove', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "danger btn"
app/views/issues/_head.html.haml
1 -.top-tabs  
2 - = link_to project_issues_path(@project), :class => "tab #{'active' if current_page?(project_issues_path(@project)) }" do  
3 - %span  
4 - Issues  
5 -  
6 - -#= link_to project_issues_path(@project), :class => "tab" do  
7 - %span  
8 - Milestones  
9 -  
10 - - if current_page?(project_issues_path(@project))  
11 - - if can? current_user, :write_issue, @project  
12 - = link_to new_project_issue_path(@project), :class => "add_new", :title => "New Issue", :remote => true do  
13 - Add new  
14 - 1 +.tabs
  2 + %li{:class => "#{'active' if current_page?(project_issues_path(@project))}"}
  3 + = link_to project_issues_path(@project), :class => "tab" do
  4 + Issues
app/views/issues/_show.html.haml
1 -%tr{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(issue.project, issue) }  
2 - %td  
3 - %strong.issue-number{:class => sort_class}= "##{issue.id}"  
4 - %span  
5 - = truncate(html_escape(issue.title), :length => 100)  
6 - %br  
7 - %br  
8 - %div.note-author  
9 - %strong= issue.assignee.name  
10 - %cite.cgray  
11 - = time_ago_in_words(issue.created_at)  
12 - ago  
13 - - if issue.critical  
14 - %span.tag.high critical  
15 - - if issue.today?  
16 - %span.tag.today today  
17 - .right.action-links  
18 - - if can? current_user, :write_issue, issue  
19 - - if issue.closed  
20 - = link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "cgray", :remote => true  
21 - - else  
22 - = link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "cgray", :remote => true  
23 - - if can? current_user, :write_issue, issue  
24 - = link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "cgray edit-issue-link", :remote => true  
25 - - if can?(current_user, :admin_issue, @project) || issue.author == current_user  
26 - = link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-issue negative", :id => "destroy_issue_#{issue.id}" 1 +%li.wll{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(issue.project, issue) }
  2 + = image_tag gravatar_icon(issue.assignee_email), :class => "avatar"
  3 + %span.update-author
  4 + assigned to
  5 + %strong
  6 + = link_to project_team_member_path(@project, @project.team_member_by_id(issue.author_id)), :class => "author_link" do
  7 + = issue.assignee_name
  8 + - if issue.critical
  9 + %span.label.important critical
  10 + - if issue.today?
  11 + %span.label.success today
  12 +
  13 + .right
  14 + - if can? current_user, :write_issue, issue
  15 + - if issue.closed
  16 + = link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "btn small", :remote => true
  17 + - else
  18 + = link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "success btn small", :remote => true
  19 + - if can? current_user, :write_issue, issue
  20 + = link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "btn small edit-issue-link", :remote => true
  21 + -#- if can?(current_user, :admin_issue, @project) || issue.author == current_user
  22 + = link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "danger btn small delete-issue", :id => "destroy_issue_#{issue.id}"
  23 +
  24 +
  25 + = link_to project_issue_path(issue.project, issue) do
  26 + %p
  27 + Issue ##{issue.id}:
  28 + = truncate(issue.title, :length => 50)
  29 +
  30 +
  31 +
  32 +
app/views/issues/index.html.haml
1 -= render "issues/head"  
2 -- if current_user.private_token  
3 - = content_for :rss_icon do  
4 - .rss-icon 1 +.issues_content
  2 + %h3
  3 + Issues
  4 + %span.rss-icon
5 = link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do 5 = link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do
6 = image_tag "Rss-UI.PNG", :width => 22, :title => "feed" 6 = image_tag "Rss-UI.PNG", :width => 22, :title => "feed"
7 7
8 -%div#issues-table-holder  
9 - .top_panel_issues  
10 - = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :class => :right, :id => "issue_search_form" do  
11 - = hidden_field_tag :project_id, @project.id, { :id => 'project_id' }  
12 - = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } 8 + - if can? current_user, :write_issue, @project
  9 + = link_to new_project_issue_path(@project), :class => "right btn small", :title => "New Issue", :remote => true do
  10 + New Issue
  11 + %hr
  12 + %div#issues-table-holder
  13 + .row
  14 + .span8
  15 + %ul.pills.left
  16 + %li{:class => ("active" if (params[:f] == "0" || !params[:f]))}
  17 + = link_to project_issues_path(@project, :f => 0) do
  18 + Open
  19 + %li{:class => ("active" if params[:f] == "2")}
  20 + = link_to project_issues_path(@project, :f => 2) do
  21 + Closed
  22 + %li{:class => ("active" if params[:f] == "3")}
  23 + = link_to project_issues_path(@project, :f => 3) do
  24 + To Me
  25 + %li{:class => ("active" if params[:f] == "1")}
  26 + = link_to project_issues_path(@project, :f => 1) do
  27 + All
13 28
14 - .left.issues_filter  
15 - = form_tag project_issues_path(@project), :method => :get do  
16 - .left  
17 - = radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "setIssueFilter(this.form, 0)", :id => "open_issues", :class => "status"  
18 - = label_tag "open_issues" do  
19 - %span.tag.open Open  
20 - .left  
21 - = radio_button_tag :f, 2, params[:f] == "2", :onclick => "setIssueFilter(this.form, 2)", :id => "closed_issues", :class => "status"  
22 - = label_tag "closed_issues" do  
23 - %span.tag.closed Closed  
24 - .left  
25 - = radio_button_tag :f, 3, params[:f] == "3", :onclick => "setIssueFilter(this.form, 3)", :id => "my_issues", :class => "status"  
26 - = label_tag "my_issues","To Me"  
27 - .left  
28 - = radio_button_tag :f, 1, params[:f] == "1", :onclick => "setIssueFilter(this.form, 1)", :id => "all_issues", :class => "status"  
29 - = label_tag "all_issues","All" 29 + .span2.right
  30 + = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :id => "issue_search_form", :class => :right do
  31 + = hidden_field_tag :project_id, @project.id, { :id => 'project_id' }
  32 + = hidden_field_tag :status, params[:f]
  33 + = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' }
  34 +
  35 + %hr
  36 + %ul#issues-table.unstyled= render "issues"
30 37
31 - .clear  
32 - %hr  
33 - %table.no-borders#issues-table  
34 - = render "issues"  
35 - %br  
36 :javascript 38 :javascript
37 var href = $('.issue_search').parent().attr('action'); 39 var href = $('.issue_search').parent().attr('action');
38 var last_terms = ''; 40 var last_terms = '';
39 41
40 - var setIssueFilter = function(form, value){  
41 - $.cookie('issue_filter', value, { expires: 140 });  
42 - form.submit();  
43 - }  
44 -  
45 $('.issue_search').keyup(function() { 42 $('.issue_search').keyup(function() {
46 var terms = $(this).val(); 43 var terms = $(this).val();
47 var project_id = $('#project_id').val(); 44 var project_id = $('#project_id').val();
48 - var status = $('.status:checked').val(); 45 + var status = $('#status').val();
49 if (terms != last_terms) { 46 if (terms != last_terms) {
50 last_terms = terms; 47 last_terms = terms;
51 48
52 if (terms.length >= 2 || terms.length == 0) { 49 if (terms.length >= 2 || terms.length == 0) {
53 $.get(href, { 'status': status, 'terms': terms, project: project_id }, function(response) { 50 $.get(href, { 'status': status, 'terms': terms, project: project_id }, function(response) {
54 - $('#issues-table tbody').html(response); 51 + $('#issues-table').html(response);
55 setSortable(); 52 setSortable();
56 }); 53 });
57 } 54 }
@@ -62,7 +59,7 @@ @@ -62,7 +59,7 @@
62 $(this).closest('tr').fadeOut(); updatePage();}); 59 $(this).closest('tr').fadeOut(); updatePage();});
63 60
64 function setSortable(){ 61 function setSortable(){
65 - $('#issues-table>tbody').sortable({ 62 + $('#issues-table').sortable({
66 axis: 'y', 63 axis: 'y',
67 dropOnEmpty: false, 64 dropOnEmpty: false,
68 handle: '.handle', 65 handle: '.handle',
@@ -73,10 +70,10 @@ @@ -73,10 +70,10 @@
73 update: function(){ 70 update: function(){
74 $.ajax({ 71 $.ajax({
75 type: 'post', 72 type: 'post',
76 - data: $('#issues-table>tbody').sortable('serialize'), 73 + data: $('#issues-table').sortable('serialize'),
77 dataType: 'script', 74 dataType: 'script',
78 complete: function(request){ 75 complete: function(request){
79 - $('#issues-table>tbody').effect('highlight'); 76 + $('#issues-table').effect('highlight');
80 }, 77 },
81 url: "#{sort_project_issues_path(@project)}"}) 78 url: "#{sort_project_issues_path(@project)}"})
82 } 79 }
app/views/issues/index.js.haml
1 :plain 1 :plain
2 - $('#issues-table tbody').html("#{escape_javascript(render('issues'))}"); 2 + $('#issues-table').html("#{escape_javascript(render('issues'))}");
3 setSortable(); 3 setSortable();
app/views/issues/show.html.haml
1 -%div  
2 - %span.entity-info 1 +%h3
  2 + Issue ##{@issue.id}
  3 + %small
  4 + created at
  5 + = @issue.created_at.stamp("Aug 21, 2011")
  6 +
  7 + %span.right
  8 + - if can?(current_user, :admin_project, @project) || @issue.author == current_user
  9 + - if @issue.closed
  10 + = link_to 'Reopen', project_issue_path(@project, @issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "btn"
  11 + - else
  12 + = link_to 'Close', project_issue_path(@project, @issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close merge request"
3 - if can?(current_user, :admin_project, @project) || @issue.author == current_user 13 - if can?(current_user, :admin_project, @project) || @issue.author == current_user
4 - = link_to edit_project_issue_path(@project, @issue) do  
5 - .entity-button  
6 - Edit Issue  
7 - %i  
8 - = image_tag gravatar_icon(@issue.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"  
9 - %span.commit-title  
10 - %strong  
11 - = "Issue ##{@issue.id}:"  
12 - %span.commit-author  
13 - %strong  
14 - = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.author.id)) do  
15 - %span.author= @issue.author_name  
16 - - if @issue.author != @issue.assignee  
17 - &rarr;  
18 - = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.assignee.id)) do  
19 - %span.author= @issue.assignee_name  
20 - &nbsp;  
21 -  
22 - &nbsp;  
23 - = @issue.created_at.stamp("Aug 21, 2011 9:23pm")  
24 -  
25 - %hr  
26 - %br  
27 - %h3  
28 - = simple_format @issue.title  
29 -  
30 -.clear  
31 -%br  
32 -%br  
33 -  
34 -.merge-tabs  
35 - = link_to "#notes", :class => "merge-notes-tab active tab" do  
36 - %span  
37 - Notes  
38 - .right  
39 - - if @issue.closed  
40 - = link_to 'Reopen', project_issue_path(@project, @issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "red-button"  
41 - - else  
42 - = link_to 'Close', project_issue_path(@project, @issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button"  
43 -  
44 -.merge-request-notes  
45 - .issue_notes= render "notes/notes"  
46 - .loading{ :style => "display:none;"}  
47 - %center= image_tag "ajax-loader.gif"  
48 - .clear 14 + = link_to edit_project_issue_path(@project, @issue), :class => "btn small" do
  15 + Edit
  16 +
  17 +%hr
  18 +- if @issue.closed
  19 + .alert-message.error Closed
  20 +- else
  21 + .alert-message.success Open
  22 +
  23 +
  24 +%div.well
  25 + %div
  26 + %cite.cgray Created by
  27 + = image_tag gravatar_icon(@issue.author_email), :width => 16, :class => "lil_av"
  28 + = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.author.id)) do
  29 + %strong.author= @issue.author_name
  30 +
  31 + %cite.cgray and currently assigned to
  32 + = image_tag gravatar_icon(@issue.assignee_email), :width => 16, :class => "lil_av"
  33 + = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.assignee.id)) do
  34 + %strong.author= @issue.assignee_name
  35 +
  36 + %hr
  37 +
  38 + %div= simple_format @issue.title
  39 +
  40 +
  41 +.issue_notes= render "notes/notes"
49 42
app/views/keys/_form.html.haml
1 %div 1 %div
2 - = form_for @key, :remote => true do |f| 2 + = form_for @key do |f|
3 -if @key.errors.any? 3 -if @key.errors.any?
4 - %ul  
5 - - @key.errors.full_messages.each do |msg|  
6 - %li= msg 4 + .alert-message.block-message.error
  5 + %ul
  6 + - @key.errors.full_messages.each do |msg|
  7 + %li= msg
7 8
8 - .form-row 9 + .clearfix
9 = f.label :title 10 = f.label :title
10 - = f.text_field :title, :style => "width:300px"  
11 - .form-row 11 + .input= f.text_field :title
  12 + .clearfix
12 = f.label :key 13 = f.label :key
13 - = f.text_area :key, :style => "width:300px; height:130px"  
14 - .form-row  
15 - = f.submit 'Save', :class => "grey-button" 14 + .input= f.text_area :key, :class => "xlarge"
  15 + .actions
  16 + = f.submit 'Save', :class => "primary btn"
  17 + = link_to "Cancel", keys_path, :class => "btn"
16 18
app/views/keys/_show.html.haml
1 -%a.update-item{:href => key_path(key)}  
2 - %span.update-title  
3 - = key.title  
4 - %span.update-author  
5 - Added  
6 - = time_ago_in_words(key.created_at)  
7 - ago 1 +%li.entry
  2 + = link_to key_path(key) do
  3 + %strong= key.title
  4 + %span.right.cgray
  5 + Added
  6 + = time_ago_in_words(key.created_at)
  7 + ago
app/views/keys/index.html.haml
1 -%h2.icon  
2 - %span> 1 +%h3
3 SSH Keys 2 SSH Keys
4 -%div#new-key-holder.right  
5 - = link_to "Add new", new_key_path, :remote => true, :class => "grey-button"  
6 -%br 3 + = link_to "Add new", new_key_path, :class => "btn small right"
  4 +
  5 +%hr
7 6
8 %div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" } 7 %div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" }
9 - .data 8 + %ul.unstyled
10 - @keys.each do |key| 9 - @keys.each do |key|
11 = render(:partial => 'show', :locals => {:key => key}) 10 = render(:partial => 'show', :locals => {:key => key})
12 -  
13 -:javascript  
14 - $('.delete-key').live('ajax:success', function() {  
15 - $(this).closest('.update-item').fadeOut(); });  
16 -  
app/views/keys/new.html.haml
1 -%h1 New key  
2 - 1 +%h3 New key
  2 +%hr
3 = render 'form' 3 = render 'form'
4 -  
5 -= link_to 'Back', keys_path  
app/views/keys/show.html.haml
1 -.ui-box.width-100p  
2 - %h3= @key.title  
3 - .data  
4 - %pre= @key.key  
5 - .clear  
6 - .buttons  
7 - = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => "red-button delete-key right"  
8 - .clear 1 +%h3= @key.title
  2 +%hr
  3 +%pre= @key.key
  4 +.actions
  5 + = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => "btn danger delete-key"
9 6
10 7
app/views/layouts/_app_side.html.haml 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +.fixed
  2 + %aside
  3 + -#= link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }"
  4 + = link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}"
  5 + = link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide"
  6 + = link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide"
  7 + - if current_user.is_admin?
  8 + = link_to admin_root_path, :class => "admin", :title => "Admin" do
  9 + Admin
  10 + = link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}"
app/views/layouts/_flash.html.haml
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 $("#flash_container").click(function(){ 10 $("#flash_container").click(function(){
11 $(this).slideUp("slow"); 11 $(this).slideUp("slow");
12 }); 12 });
13 - setTimeout("hideFlash()",2000); 13 + setTimeout("hideFlash()",3000);
14 }); 14 });
15 15
16 function hideFlash(){ 16 function hideFlash(){
app/views/layouts/_head_panel.html.haml
@@ -11,23 +11,7 @@ @@ -11,23 +11,7 @@
11 = truncate @project.name, :length => 28 11 = truncate @project.name, :length => 28
12 .git_url_wrapper 12 .git_url_wrapper
13 %input.git-url.text{:id => "", :name => "", :readonly => "", :type => "text", :value => @project.url_to_repo, :class => "one_click_select"} 13 %input.git-url.text{:id => "", :name => "", :readonly => "", :type => "text", :value => @project.url_to_repo, :class => "one_click_select"}
14 - - if @project.repo_exists?  
15 - .left{:style => "margin-left:5px;"}  
16 - = render :partial => "projects/refs", :locals => { :destination => controller.controller_name == "commits" ? "commits" : "tree" }  
17 - = yield :rss_icon  
18 14
19 - - else  
20 - .dashboard_links  
21 - = link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }"  
22 - = link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}"  
23 - = link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide"  
24 - = link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide"  
25 - - if current_user.is_admin?  
26 - = link_to admin_root_path, :class => "admin", :title => "Admin" do  
27 - Admin  
28 - = link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}"  
29 - .search  
30 - = text_field_tag "search", nil, :placeholder => "Search", :class => "search-input"  
31 15
32 .account-box 16 .account-box
33 = link_to profile_path, :class => "pic" do 17 = link_to profile_path, :class => "pic" do
@@ -36,16 +20,3 @@ @@ -36,16 +20,3 @@
36 = link_to profile_path, :class => "username" do 20 = link_to profile_path, :class => "username" do
37 My profile 21 My profile
38 = link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete 22 = link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete
39 - - if current_user  
40 - = javascript_tag do  
41 - $(function(){  
42 - $("#search").autocomplete({  
43 - source: #{raw search_autocomplete_source},  
44 - select: function(event, ui) { location.href = ui.item.url }  
45 - });  
46 - });  
47 -  
48 - -#- if current_user.require_ssh_key?  
49 - #no_ssh_key_defined.big-message.error  
50 - %p  
51 - No SSH Key is defined. You won't be able to use any Git command!. Click #{link_to( 'here', keys_path )} to add one!  
app/views/layouts/_project_side.html.haml
@@ -6,14 +6,14 @@ @@ -6,14 +6,14 @@
6 6
7 - if @project.repo_exists? 7 - if @project.repo_exists?
8 = link_to "Repository", project_repository_path(@project), :class => repository_tab_class 8 = link_to "Repository", project_repository_path(@project), :class => repository_tab_class
9 - = link_to "Tree", tree_project_ref_path(@project, @ref || @project.root_ref), :class => tree_tab_class  
10 - = link_to "Commits", project_commits_path(@project, :ref => (@ref || @project.root_ref)), :class => (controller.controller_name == "commits") ? "current" : nil 9 + = link_to "Code", tree_project_ref_path(@project, @project.root_ref), :class => tree_tab_class
  10 + = link_to "Commits", project_commits_path(@project), :class => (controller.controller_name == "commits") ? "current" : nil
11 = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil 11 = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
12 = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do 12 = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do
13 Issues 13 Issues
  14 + = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
  15 + Merge Requests
14 = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do 16 = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
15 - Wall 17 + @Wall
16 - if @project.common_notes.today.count > 0 18 - if @project.common_notes.today.count > 0
17 - %span{ :class => "number" }= @project.common_notes.today.count  
18 - = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do  
19 - Requests 19 + %span.label= @project.common_notes.today.count
app/views/layouts/_project_side_right.html.haml 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +%aside.project-right
  2 + - if content_for? :sidebar_all
  3 + = render :sidebar_all
  4 + - else
  5 + - if content_for? :sidebar_top_block
  6 + = yield :sidebar_top_block
  7 + - else
  8 + - if can? current_user, :write_project, @project
  9 + .alert-message.block-message.info
  10 + You have access to create new issue or merge request.
  11 + %div
  12 + = link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do
  13 + New Issue »
  14 + %div
  15 + = link_to new_project_merge_request_path(@project), :title => "New Merge Request", :class => "btn small" do
  16 + New Merge Request »
  17 +
  18 + - if current_user.projects.count > 0
  19 + %div.entry
  20 + %h5
  21 + Recent Projects:
  22 + %ul
  23 + - current_user.projects.order("id DESC").limit(5).each do |project|
  24 + %li
  25 + = link_to project_path(project) do
  26 + = project.name
  27 + = link_to "More » ", projects_path
  28 +
  29 + -#%h4
  30 + -#Recent Issues:
  31 + -#%ul
  32 + -#- current_user.assigned_issues.order("id DESC").limit(5).each do |issue|
  33 + -#%li
  34 + -#= link_to project_issue_path(issue.project, issue) do
  35 + -#= truncate issue.title
  36 +
  37 +
  38 + -#%h4
  39 + -#Recent Requests:
  40 + -#%ul
  41 + -#- current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue|
  42 + -#%li
  43 + -#= link_to project_merge_request_path(issue.project, issue) do
  44 + -#= truncate issue.title
  45 +
  46 +
app/views/layouts/_projects_side.html.haml 0 → 100644
@@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
  1 +%aside.projects
  2 + - if current_user.can_create_project?
  3 + .alert-message.block-message.info
  4 + You can create at least
  5 + = current_user.projects_limit
  6 + projects. Click on button to add a new one
  7 + = link_to new_project_path, :class => "btn small" do
  8 + New Project
  9 +
  10 + - if current_user.projects.count > 0
  11 + %div.entry
  12 + %h5
  13 + Recent Projects:
  14 + %ul
  15 + - current_user.projects.order("id DESC").limit(5).each do |project|
  16 + %li
  17 + = link_to project_path(project) do
  18 + = project.name
  19 + = link_to "More » ", projects_path
  20 +
  21 + -#%h5
  22 + -#Your Issues:
  23 + -#%ul
  24 + -#- current_user.assigned_issues.order("id DESC").limit(5).each do |issue|
  25 + -#%li
  26 + -#= link_to project_issue_path(issue.project, issue) do
  27 + -#= truncate issue.title
  28 +
  29 +
  30 + -#%h5
  31 + -#Your Merge Requests:
  32 + -#%ul
  33 + -#- current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue|
  34 + -#%li
  35 + -#= link_to project_merge_request_path(issue.project, issue) do
  36 + -#= truncate issue.title
  37 +
  38 +
app/views/layouts/admin.html.haml
1 !!! 1 !!!
2 %html 2 %html
3 %head 3 %head
  4 + %meta{:charset => "utf-8"}
4 %title 5 %title
5 GitLab #{" - #{@project.name}" if @project && !@project.new_record?} 6 GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
6 = favicon_link_tag 'favicon.ico' 7 = favicon_link_tag 'favicon.ico'
@@ -10,19 +11,17 @@ @@ -10,19 +11,17 @@
10 = javascript_tag do 11 = javascript_tag do
11 REQ_URI = "#{request.env["REQUEST_URI"]}"; 12 REQ_URI = "#{request.env["REQUEST_URI"]}";
12 REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; 13 REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
13 - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} 14 + %body.admin
14 = render :partial => "layouts/flash" 15 = render :partial => "layouts/flash"
15 - #container  
16 - = render :partial => "layouts/head_panel"  
17 - .project-container  
18 - .project-sidebar  
19 - .fixed  
20 - %aside  
21 - = link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil  
22 - = link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil  
23 - = link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil  
24 - = link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil  
25 - = link_to "Resque", "/info/resque" 16 + = render :partial => "layouts/head_panel"
  17 + .container-fluid
  18 + .sidebar
  19 + .fixed
  20 + %aside
  21 + = link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil
  22 + = link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil
  23 + = link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil
  24 + = link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil
  25 + = link_to "Resque", "/info/resque"
26 26
27 - .project-content  
28 - = yield 27 + .content= yield
app/views/layouts/application.html.haml
1 !!! 1 !!!
2 %html 2 %html
3 %head 3 %head
  4 + %meta{:charset => "utf-8"}
4 %title 5 %title
5 GitLab 6 GitLab
6 = favicon_link_tag 'favicon.ico' 7 = favicon_link_tag 'favicon.ico'
7 = stylesheet_link_tag "application" 8 = stylesheet_link_tag "application"
8 = javascript_include_tag "application" 9 = javascript_include_tag "application"
9 = csrf_meta_tags 10 = csrf_meta_tags
10 - = javascript_tag do  
11 - REQ_URI = "#{request.env["REQUEST_URI"]}";  
12 - REQ_REFFER = "#{request.env["HTTP_REFERER"]}";  
13 - %body{ :class => body_class, :id => yield(:boyd_id)} 11 + %body.application
14 = render :partial => "layouts/flash" 12 = render :partial => "layouts/flash"
15 - #container  
16 - = render :partial => "layouts/head_panel"  
17 - = render :partial => "layouts/page_title"  
18 - = yield 13 + = render :partial => "layouts/head_panel"
  14 + .container-fluid
  15 + .sidebar
  16 + = render :partial => "layouts/app_side"
  17 + .content
  18 + .row
  19 + .span10= yield
  20 + .span4= render "layouts/projects_side"
app/views/layouts/devise.html.haml
1 !!! 1 !!!
2 %html 2 %html
3 %head 3 %head
  4 + %meta{:charset => "utf-8"}
4 %title 5 %title
5 GitLab #{" - #{@project.name}" if @project && !@project.new_record?} 6 GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
6 = favicon_link_tag 'favicon.ico' 7 = favicon_link_tag 'favicon.ico'
@@ -12,4 +13,4 @@ @@ -12,4 +13,4 @@
12 REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; 13 REQ_REFFER = "#{request.env["HTTP_REFERER"]}";
13 %body.login-page 14 %body.login-page
14 = render :partial => "layouts/flash" 15 = render :partial => "layouts/flash"
15 - = yield 16 + .container-fluid= yield
app/views/layouts/profile.html.haml
1 !!! 1 !!!
2 %html 2 %html
3 %head 3 %head
  4 + %meta{:charset => "utf-8"}
4 %title 5 %title
5 GitLab #{" - #{@project.name}" if @project && !@project.new_record?} 6 GitLab #{" - #{@project.name}" if @project && !@project.new_record?}
6 = favicon_link_tag 'favicon.ico' 7 = favicon_link_tag 'favicon.ico'
7 = stylesheet_link_tag "application" 8 = stylesheet_link_tag "application"
8 = javascript_include_tag "application" 9 = javascript_include_tag "application"
9 = csrf_meta_tags 10 = csrf_meta_tags
10 - = javascript_tag do  
11 - REQ_URI = "#{request.env["REQUEST_URI"]}";  
12 - REQ_REFFER = "#{request.env["HTTP_REFERER"]}";  
13 - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} 11 + %body.profile
14 = render :partial => "layouts/flash" 12 = render :partial => "layouts/flash"
15 - #container  
16 - = render :partial => "layouts/head_panel"  
17 - .project-container  
18 - .project-sidebar  
19 - .fixed  
20 - %aside  
21 - = link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil  
22 - = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil  
23 - = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil  
24 - = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do  
25 - Keys  
26 - - unless current_user.keys.empty?  
27 - %span{ :class => "number" }= current_user.keys.count  
28 -  
29 - .project-content  
30 - = yield 13 + = render :partial => "layouts/head_panel"
  14 + .container-fluid
  15 + .sidebar
  16 + %aside
  17 + = link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil
  18 + = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil
  19 + = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil
  20 + = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do
  21 + Keys
  22 + - unless current_user.keys.empty?
  23 + %span.label= current_user.keys.count
  24 + .content
  25 + .row
  26 + .span10= yield
  27 + .span4= render "layouts/projects_side"
app/views/layouts/project.html.haml
1 !!! 1 !!!
2 %html 2 %html
3 %head 3 %head
  4 + %meta{:charset => "utf-8"}
4 %title 5 %title
5 - GitLab #{" - #{@project.name}" if @project && !@project.new_record?} 6 + GitLab
  7 + = " - #{@project.name}" if @project && !@project.new_record?
6 = favicon_link_tag 'favicon.ico' 8 = favicon_link_tag 'favicon.ico'
7 = stylesheet_link_tag "application" 9 = stylesheet_link_tag "application"
8 = javascript_include_tag "application" 10 = javascript_include_tag "application"
@@ -11,14 +13,16 @@ @@ -11,14 +13,16 @@
11 - if request.path == project_issues_path(@project) 13 - if request.path == project_issues_path(@project)
12 = auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, :private_token => current_user.private_token), :title => "#{@project.name} issues") 14 = auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, :private_token => current_user.private_token), :title => "#{@project.name} issues")
13 = csrf_meta_tags 15 = csrf_meta_tags
14 - = javascript_tag do  
15 - REQ_URI = "#{request.env["REQUEST_URI"]}";  
16 - REQ_REFFER = "#{request.env["HTTP_REFERER"]}";  
17 - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} 16 + %body.project
18 = render :partial => "layouts/flash" 17 = render :partial => "layouts/flash"
19 - #container  
20 - = render :partial => "layouts/head_panel"  
21 - .project-container  
22 - = render :partial => "layouts/project_side"  
23 - .project-content 18 + = render :partial => "layouts/head_panel"
  19 + .container-fluid
  20 + .sidebar= render :partial => "layouts/project_side"
  21 + .content
  22 + - if @full_content
24 = yield 23 = yield
  24 + - else
  25 + .row
  26 + .span10= yield
  27 + .span4= render "layouts/project_side_right"
  28 +
app/views/merge_requests/_commits.html.haml
1 - if @commits.size > 0 1 - if @commits.size > 0
2 - .merge-request-commits.ui-box.width-100p 2 + .merge-request-commits
3 - @commits.each do |commit| 3 - @commits.each do |commit|
4 - %a{ :class => "commit", :href => project_commit_path(@project, :id => commit.id) }  
5 - - if commit.author_email  
6 - = image_tag gravatar_icon(commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"  
7 - - else  
8 - = image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;"  
9 - %span.update-title  
10 - = truncate commit.safe_message, :length => 60  
11 - %span.update-author  
12 - %strong= commit.author_name  
13 - authored  
14 - = time_ago_in_words(commit.created_at)  
15 - ago  
16 - .clear 4 + .entry
  5 + = link_to project_commit_path(@project, :id => commit.id) do
  6 + %strong
  7 + = truncate(commit.id.to_s, :length => 10)
  8 + = image_tag gravatar_icon(commit.author_email), :class => "", :width => 16
  9 + %span= truncate(commit.safe_message, :length => 40)
  10 + %span.right
  11 + = time_ago_in_words(commit.committed_date)
  12 + ago
17 13
18 - if @commits.empty? 14 - if @commits.empty?
19 %p.cgray Nothing to merge 15 %p.cgray Nothing to merge
app/views/merge_requests/_form.html.haml
1 = form_for [@project, @merge_request] do |f| 1 = form_for [@project, @merge_request] do |f|
2 - %div  
3 - %span.entity-info  
4 - - if @merge_request.new_record?  
5 - = link_to project_merge_requests_path(@project) do  
6 - .entity-button  
7 - Merge Requests  
8 - %i  
9 - - else  
10 - = link_to project_merge_request_path(@project, @merge_request) do  
11 - .entity-button  
12 - Show Merge Request  
13 - %i 2 + -if @merge_request.errors.any?
  3 + .alert-message.block-message.error
  4 + %ul
  5 + - @merge_request.errors.full_messages.each do |msg|
  6 + %li= msg
14 7
15 - %h2= @merge_request.new_record? ? "New Merge Request" : "Edit Merge Request ##{@merge_request.id}" 8 + .clearfix
  9 + = f.label :source_branch, "From"
  10 + .input= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
  11 + .clearfix
  12 + = f.label :target_branch, "To"
  13 + .input= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
  14 + .clearfix
  15 + = f.label :assignee_id, "Assign to"
  16 + .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px")
16 17
17 - %hr  
18 - %table.no-borders  
19 - -if @merge_request.errors.any?  
20 - %tr  
21 - %td{:colspan => 2}  
22 - #error_explanation  
23 - - @merge_request.errors.full_messages.each do |msg|  
24 - %span= msg  
25 - %br  
26 - %tr  
27 - %td= f.label :source_branch, "From"  
28 - %td= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")  
29 - %tr  
30 - %td= f.label :target_branch, "To"  
31 - %td= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")  
32 - %tr  
33 - %td= f.label :assignee_id, "Assign to"  
34 - %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px")  
35 - = f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255  
36 - %br  
37 - %br  
38 - .merge-tabs  
39 - = f.submit 'Save', :class => "positive-button" 18 + .clearfix
  19 + = f.label :title
  20 + .input= f.text_area :title, :class => "xlarge", :maxlength => 255, :rows => 5
  21 + .actions
  22 + = f.submit 'Save', :class => "primary btn"
  23 + - if @merge_request.new_record?
  24 + = link_to project_merge_requests_path(@project), :class => "btn" do
  25 + Cancel
  26 + - else
  27 + = link_to project_merge_request_path(@project, @merge_request), :class => "btn" do
  28 + Cancel
40 &nbsp; 29 &nbsp;
41 - unless @merge_request.new_record? 30 - unless @merge_request.new_record?
42 .right 31 .right
43 - = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" 32 + = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "btn danger"
44 33
45 34
46 35
app/views/merge_requests/_head.html.haml
@@ -2,11 +2,4 @@ @@ -2,11 +2,4 @@
2 = link_to project_merge_requests_path(@project), :class => "tab #{'active' if current_page?(project_merge_requests_path(@project)) }" do 2 = link_to project_merge_requests_path(@project), :class => "tab #{'active' if current_page?(project_merge_requests_path(@project)) }" do
3 %span 3 %span
4 Merge Requests 4 Merge Requests
5 -  
6 -  
7 - - if current_page?(project_merge_requests_path(@project))  
8 - - if can? current_user, :write_merge_request, @project  
9 - = link_to new_project_merge_request_path(@project), :class => "add_new", :title => "New Merge request" do  
10 - Add new  
11 -  
12 5
app/views/merge_requests/_merge_request.html.haml
1 -%a.update-item{:href => project_merge_request_path(merge_request.project, merge_request)}  
2 - = image_tag gravatar_icon(merge_request.author_email), :class => "left", :width => 40  
3 - %span.update-title  
4 - = truncate(merge_request.title, :length => 60) 1 +%li.wll
  2 + = image_tag gravatar_icon(merge_request.author_email), :class => "avatar"
5 %span.update-author 3 %span.update-author
6 - %strong= merge_request.author_name 4 + %strong
  5 + = link_to project_team_member_path(@project, @project.team_member_by_id(merge_request.author_id)), :class => "author_link" do
  6 + = merge_request.author_name
7 authored 7 authored
8 = time_ago_in_words(merge_request.created_at) 8 = time_ago_in_words(merge_request.created_at)
9 ago 9 ago
10 .right 10 .right
11 - %span.tag.commit= merge_request.source_branch 11 + %span.label= merge_request.source_branch
12 &rarr; 12 &rarr;
13 - %span.tag.commit= merge_request.target_branch  
14 - 13 + %span.label= merge_request.target_branch
  14 + = link_to project_merge_request_path(merge_request.project, merge_request) do
  15 + %p
  16 + Merge Request ##{merge_request.id}:
  17 + = truncate(merge_request.title, :length => 50)
app/views/merge_requests/edit.html.haml
  1 +%h3
  2 + = "Edit merge request #{@merge_request.id}"
  3 +%hr
1 = render 'form' 4 = render 'form'
app/views/merge_requests/index.html.haml
1 -= render "merge_requests/head" 1 +%h3
  2 + Merge Requests
  3 + - if can? current_user, :write_issue, @project
  4 + = link_to new_project_merge_request_path(@project), :class => "right btn small", :title => "New Merge Request" do
  5 + New Merge Request
2 6
3 -.left.issues_filter  
4 - = form_tag project_merge_requests_path(@project), :method => :get do  
5 - .left  
6 - = radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "this.form.submit()", :id => "open_merge_requests", :class => "status"  
7 - = label_tag "open_merge_requests" do  
8 - %span.tag.open Open  
9 - .left  
10 - = radio_button_tag :f, 2, params[:f] == "2", :onclick => "this.form.submit()", :id => "closed_merge_requests", :class => "status"  
11 - = label_tag "closed_merge_requests" do  
12 - %span.tag.closed Closed  
13 -  
14 -.clear  
15 %hr 7 %hr
16 8
17 -- if @merge_requests.count > 0  
18 - %div{ :class => "update-data ui-box ui-box-small ui-box-big" }  
19 - .data  
20 - = render @merge_requests  
21 -  
22 - .clear  
23 - %br 9 +%ul.pills
  10 + %li{:class => ("active" if (params[:f] == "0" || !params[:f]))}
  11 + = link_to project_merge_requests_path(@project, :f => 0) do
  12 + Open
  13 + %li{:class => ("active" if params[:f] == "2")}
  14 + = link_to project_merge_requests_path(@project, :f => 2) do
  15 + Closed
24 16
25 -- unless @merge_requests.count > 0 || params[:f] == "2"  
26 - .notice_holder  
27 - %li Merge Requests do not exist yet.  
28 - - if can? current_user, :write_merge_request, @project  
29 - %li You can add a new one by clicking on "Add New" button 17 +%hr
  18 +%ul.unstyled= render @merge_requests
30 19
app/views/merge_requests/new.html.haml
  1 +%h3 New Merge Request
  2 +%hr
1 = render 'form' 3 = render 'form'
app/views/merge_requests/show.html.haml
1 -%div  
2 - %span.entity-info 1 +%h3
  2 + = "Merge Request ##{@merge_request.id}:"
  3 + &nbsp;
  4 + %span.label= @merge_request.source_branch
  5 + &rarr;
  6 + %span.label= @merge_request.target_branch
  7 +
  8 + %small
  9 + created at
  10 + = @merge_request.created_at.stamp("Aug 21, 2011")
  11 +
  12 + %span.right
  13 + - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
  14 + - if @merge_request.closed
  15 + = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "btn"
  16 + - else
  17 + = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close merge request"
3 - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user 18 - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
4 - = link_to edit_project_merge_request_path(@project, @merge_request) do  
5 - .entity-button  
6 - Edit Merge Request  
7 - %i  
8 - = image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"  
9 - %span.commit-title  
10 - %strong  
11 - = "Merge Request ##{@merge_request.id}:"  
12 - &nbsp;  
13 - .tag.commit.inline= @merge_request.source_branch  
14 - &rarr;  
15 - .tag.commit.inline= @merge_request.target_branch  
16 - %span.commit-author  
17 - %strong  
18 - = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do  
19 - %span.author= @merge_request.author_name  
20 - &rarr;  
21 - = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do  
22 - %span.author= @merge_request.assignee_name 19 + = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small" do
  20 + Edit
23 21
24 - &nbsp;  
25 - &nbsp;  
26 - = @merge_request.created_at.stamp("Aug 21, 2011 9:23pm") 22 +%hr
  23 +- if @merge_request.closed
  24 + .alert-message.error Closed
  25 +- else
  26 + .alert-message.success Open
27 27
28 - %hr  
29 - %br  
30 - %h3  
31 - = simple_format @merge_request.title  
32 28
33 -.clear  
34 -%br  
35 -%br 29 +%div.well
  30 + %div
  31 + %cite.cgray Created by
  32 + = image_tag gravatar_icon(@merge_request.author_email), :width => 16, :class => "lil_av"
  33 + = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do
  34 + %strong.author= @merge_request.author_name
36 35
37 -.merge-tabs  
38 - = link_to "#notes", :class => "merge-notes-tab active tab" do  
39 - %span  
40 - Notes  
41 - = link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do  
42 - %span  
43 - Commits  
44 - = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do  
45 - %span  
46 - Diff 36 + %cite.cgray and currently assigned to
  37 + = image_tag gravatar_icon(@merge_request.assignee_email), :width => 16, :class => "lil_av"
  38 + = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do
  39 + %strong.author= @merge_request.assignee_name
  40 +
  41 + %hr
  42 +
  43 +
  44 + %div= simple_format @merge_request.title
  45 +
  46 +
  47 +.tabs
  48 + %li.active
  49 + = link_to "#notes", :class => "merge-notes-tab tab" do
  50 + Notes
  51 + %li
  52 + = link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do
  53 + Commits
  54 + %li
  55 + = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
  56 + Diff
47 57
48 - - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user  
49 - .right  
50 - - if @merge_request.closed  
51 - = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "red-button"  
52 - - else  
53 - = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button", :title => "Close merge request"  
54 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} 58 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"}
55 59
56 .merge-request-notes 60 .merge-request-notes
57 - .issue_notes= render "notes/notes" 61 + .merge_request_notes= render "notes/notes"
58 .loading{ :style => "display:none;"} 62 .loading{ :style => "display:none;"}
59 %center= image_tag "ajax-loader.gif" 63 %center= image_tag "ajax-loader.gif"
60 .clear 64 .clear
app/views/notes/_form.html.haml
1 -%div  
2 - = form_for [@project, @note], :remote => "true", :multipart => true do |f|  
3 - -if @note.errors.any?  
4 - .errors.error  
5 - - @note.errors.full_messages.each do |msg|  
6 - %div= msg 1 += form_for [@project, @note], :remote => "true", :multipart => true do |f|
  2 + %h3 Leave a note
  3 + -if @note.errors.any?
  4 + .alert-message.block-message.error
  5 + - @note.errors.full_messages.each do |msg|
  6 + %div= msg
7 7
8 - = f.hidden_field :noteable_id  
9 - = f.hidden_field :noteable_type 8 + = f.hidden_field :noteable_id
  9 + = f.hidden_field :noteable_type
  10 + = f.text_area :note, :size => 255
10 11
11 - %div  
12 - = f.label :note  
13 - %cite.cgray markdown supported  
14 - %br  
15 - %br  
16 - = f.text_area :note, :size => 255  
17 -  
18 - %div.attach_holder  
19 - %br  
20 - = f.label :attachment  
21 - %cite.cgray (less than 10 MB)  
22 - &nbsp;  
23 - = f.file_field :attachment  
24 -  
25 - %p.notify_controls  
26 - %span Notify:  
27 - = check_box_tag :notify, 1, @note.noteable_type != "Commit"  
28 - = label_tag :notify, "Project team" 12 + .row
  13 + .span4
  14 + %h5 Notify via email:
  15 + .clearfix
  16 + = label_tag :notify do
  17 + = check_box_tag :notify, 1, @note.noteable_type != "Commit"
  18 + %span Project team
29 19
30 -if @note.noteable_type == "Commit" 20 -if @note.noteable_type == "Commit"
31 - = check_box_tag :notify_author, 1 , @note.noteable_type == "Commit"  
32 - = label_tag :notify_author, "Commit author" 21 + = label_tag :notify_author do
  22 + = check_box_tag :notify_author, 1 , @note.noteable_type == "Commit"
  23 + %span Commit author
  24 + .span4.right
  25 + %h5 Attachment:
  26 + .clearfix
  27 + = f.label :attachment, "Any file, < 10 MB"
  28 + .input= f.file_field :attachment, :class => "input-file"
  29 +
33 30
34 - .clear  
35 - %br  
36 - = f.submit 'Add note', :class => "positive-button", :id => "submit_note" 31 + = f.submit 'Add note', :class => "btn primary", :id => "submit_note"
app/views/notes/_per_line_form.html.haml
1 %table{:style => "display:none;"} 1 %table{:style => "display:none;"}
2 %tr.per_line_form 2 %tr.per_line_form
3 %td{:colspan => 3 } 3 %td{:colspan => 3 }
4 - %div 4 + %div.well
5 = form_for [@project, @note], :remote => "true", :multipart => true do |f| 5 = form_for [@project, @note], :remote => "true", :multipart => true do |f|
  6 + %h3 Leave a note
6 -if @note.errors.any? 7 -if @note.errors.any?
7 - .errors.error 8 + .alert-message.block-message.error
8 - @note.errors.full_messages.each do |msg| 9 - @note.errors.full_messages.each do |msg|
9 %div= msg 10 %div= msg
10 11
11 = f.hidden_field :noteable_id 12 = f.hidden_field :noteable_id
12 = f.hidden_field :noteable_type 13 = f.hidden_field :noteable_type
13 = f.hidden_field :line_code 14 = f.hidden_field :line_code
14 -  
15 - %div  
16 - = f.label :note  
17 - %cite.cgray markdown supported  
18 - %br  
19 - %br  
20 - = f.text_area :note, :size => 255  
21 -  
22 - .clear  
23 - %br  
24 - = f.submit 'Add note', :class => "positive-button", :id => "submit_note"  
25 - .right  
26 - = link_to "Close", "#", :class => "grey-button hide-button" 15 + = f.text_area :note, :size => 255
  16 + .prepend-top-10
  17 + = f.submit 'Add note', :class => "btn primary", :id => "submit_note"
  18 + .right
  19 + = link_to "Close", "#", :class => "btn hide-button"
27 20
28 :javascript 21 :javascript
29 $(function(){ 22 $(function(){
app/views/profile/design.html.haml
1 -.ui-box.width-100p  
2 - %h3 Design  
3 - = form_for @user, :url => profile_update_path, :method => :put do |f|  
4 - .data  
5 - .left.dark_scheme_box  
6 - %label{:for => "user_dark_scheme_false"}  
7 - = image_tag "white.png", :width => 310, :height => 212  
8 - %center  
9 - %h4  
10 - = f.radio_button :dark_scheme, false  
11 - White code preview  
12 - .right.dark_scheme_box  
13 - %label{:for => "user_dark_scheme_true"}  
14 - = image_tag "dark.png", :width => 310, :height => 212  
15 - %center  
16 - %h4  
17 - = f.radio_button :dark_scheme, true  
18 - Dark code preview  
19 - .clear  
20 - .buttons  
21 - = f.submit 'Save', :class => "grey-button" 1 +%h3 Design
  2 +%hr
  3 += form_for @user, :url => profile_update_path, :method => :put do |f|
  4 + .row
  5 + %label.span4{:for => "user_dark_scheme_false"}
  6 + = image_tag "white.png", :width => 210
  7 + %center
  8 + %h4
  9 + = f.radio_button :dark_scheme, false
  10 + White code preview
  11 + %label.span4{:for => "user_dark_scheme_true"}
  12 + = image_tag "dark.png", :width => 210
  13 + %center
  14 + %h4
  15 + = f.radio_button :dark_scheme, true
  16 + Dark code preview
  17 + .clearfix
  18 + .actions
  19 + = f.submit 'Save', :class => "btn"
22 20
app/views/profile/password.html.haml
1 -.ui-box.width-100p.append-bottom-20  
2 - %h3 Password  
3 - = form_for @user, :url => profile_password_path, :method => :put do |f|  
4 - .data  
5 - %p After successfull password update you will be redirected to login page where you should login with new password  
6 - -if @user.errors.any?  
7 - #error_explanation  
8 - %ul  
9 - - @user.errors.full_messages.each do |msg|  
10 - %li= msg 1 +%h3 Password
  2 +%hr
  3 += form_for @user, :url => profile_password_path, :method => :put do |f|
  4 + .data
  5 + %p After successfull password update you will be redirected to login page where you should login with new password
  6 + -if @user.errors.any?
  7 + #error_explanation
  8 + %ul
  9 + - @user.errors.full_messages.each do |msg|
  10 + %li= msg
11 11
12 - .form-row  
13 - = f.label :password  
14 - %br  
15 - = f.password_field :password  
16 - .form-row  
17 - = f.label :password_confirmation  
18 - %br  
19 - = f.password_field :password_confirmation  
20 - .buttons  
21 - = f.submit 'Save', :class => "grey-button"  
22 -.clear  
23 -  
24 -.ui-box.width-100p  
25 - %h3  
26 - Private token  
27 - %em.cred.right  
28 - keep it in secret!  
29 - = form_for @user, :url => profile_reset_private_token_path, :method => :put do |f|  
30 - .data  
31 - %p Private token used to access application resources without authentication.  
32 - %p For example its required to access commits feed.  
33 - %hr  
34 - %p.cgray  
35 - - if current_user.private_token  
36 - = text_field_tag "token", current_user.private_token  
37 - - else  
38 - You don`t have one yet. Click generate to fix it.  
39 - .buttons 12 + .clearfix
  13 + = f.label :password
  14 + .input= f.password_field :password
  15 + .clearfix
  16 + = f.label :password_confirmation
  17 + .input= f.password_field :password_confirmation
  18 + .actions
  19 + = f.submit 'Save', :class => "btn"
  20 +
  21 +%h3
  22 + Private token
  23 + %span.cred.right
  24 + keep it in secret!
  25 +%hr
  26 += form_for @user, :url => profile_reset_private_token_path, :method => :put do |f|
  27 + .data
  28 + %p Private token used to access application resources without authentication.
  29 + %p For example its required to access commits feed.
  30 + %hr
  31 + %p.cgray
40 - if current_user.private_token 32 - if current_user.private_token
41 - = f.submit 'Reset', :confirm => "Are you sure?", :class => "grey-button" 33 + = text_field_tag "token", current_user.private_token
42 - else 34 - else
43 - = f.submit 'Generate', :class => "positive-button" 35 + You don`t have one yet. Click generate to fix it.
  36 + .actions
  37 + - if current_user.private_token
  38 + = f.submit 'Reset', :confirm => "Are you sure?", :class => "btn"
  39 + - else
  40 + = f.submit 'Generate', :class => "btn"
44 41
app/views/profile/show.html.haml
1 -.ui-box.width-100p  
2 - %h3= @user.name  
3 - = form_for @user, :url => profile_update_path, :method => :put do |f|  
4 - .data  
5 - .left  
6 - -if @user.errors.any?  
7 - #error_explanation  
8 - %ul  
9 - - @user.errors.full_messages.each do |msg|  
10 - %li= msg 1 +.media-grid
  2 + = link_to "#" do
  3 + = image_tag gravatar_icon(@user.email, 90), :class => "thumbnail"
  4 + %h3.media_h= @user.name
11 5
12 - .form-row  
13 - = f.label :name  
14 - %br  
15 - = f.text_field :name  
16 - .form-row  
17 - = f.label :email  
18 - %br  
19 - = f.text_field :email  
20 - .form-row  
21 - = f.label :skype  
22 - %br  
23 - = f.text_field :skype  
24 - .form-row  
25 - = f.label :linkedin  
26 - %br  
27 - = f.text_field :linkedin  
28 - .form-row  
29 - = f.label :twitter  
30 - %br  
31 - = f.text_field :twitter 6 +%hr
32 7
33 - .right  
34 - = image_tag gravatar_icon(current_user.email,64), :width => 64, :style => "margin:5px; border:5px solid #eee;"  
35 - .clear  
36 - .buttons  
37 - = f.submit 'Save', :class => "grey-button" 8 += form_for @user, :url => profile_update_path, :method => :put do |f|
  9 + -if @user.errors.any?
  10 + %div.alert-message.block-message.error
  11 + %ul
  12 + - @user.errors.full_messages.each do |msg|
  13 + %li= msg
  14 +
  15 + .clearfix
  16 + = f.label :name
  17 + .input= f.text_field :name
  18 + .clearfix
  19 + = f.label :email
  20 + .input= f.text_field :email
  21 + .clearfix
  22 + = f.label :skype
  23 + .input= f.text_field :skype
  24 + .clearfix
  25 + = f.label :linkedin
  26 + .input= f.text_field :linkedin
  27 + .clearfix
  28 + = f.label :twitter
  29 + .input= f.text_field :twitter
  30 +
  31 + = f.submit 'Save', :class => "primary btn"
38 32
app/views/projects/_feed.html.haml
1 -- if update.kind_of?(Note)  
2 - %a.project-update.titled{:href => dashboard_feed_path(project, update)}  
3 - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40  
4 - %span.update-title  
5 - = dashboard_feed_title(update)  
6 - %span.update-author  
7 - %strong= update.author_name  
8 - = time_ago_in_words(update.created_at)  
9 - ago  
10 - - noteable = update.target  
11 - - if noteable.kind_of?(MergeRequest)  
12 - .title-block  
13 - %span.update-title  
14 - %span.commit.tag  
15 - Merge Request #  
16 - = noteable.id  
17 - %span.update-author  
18 - %span= noteable.source_branch 1 +%li.wll
  2 + .row
  3 + .span9
  4 + = image_tag gravatar_icon(update.author_email), :class => "avatar thumb"
  5 + %p
  6 + %strong.author= update.author_name
  7 + %span
  8 + &ndash;
  9 + authored
  10 + = time_ago_in_words(update.created_at)
  11 + ago
  12 + - if update.kind_of? MergeRequest
  13 + = link_to project_merge_request_path(@project, update) do
  14 + = "Opened merge request ##{update.id}."
  15 + %span.label= update.source_branch
19 &rarr; 16 &rarr;
20 - %span= noteable.target_branch  
21 -  
22 - - elsif noteable.kind_of?(Issue)  
23 - .title-block  
24 - %span.update-title  
25 - %span.commit.tag  
26 - Issue #  
27 - = noteable.id  
28 - %span.update-author  
29 - .left= truncate noteable.title  
30 -  
31 - - elsif noteable.kind_of?(Commit)  
32 - .title-block  
33 - %span.update-title  
34 - %span.commit.tag  
35 - commit  
36 - %span.update-author  
37 - .left= truncate noteable.id  
38 - - else  
39 - .title-block  
40 - %span.update-title  
41 - %span.commit.tag  
42 - Project Wall  
43 -  
44 -  
45 -- elsif update.kind_of?(MergeRequest)  
46 - %a.project-update.titled{:href => project_merge_request_path(project, update)}  
47 - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40  
48 - %span.update-title  
49 - Opened merge request  
50 - %span.update-author  
51 - %strong= update.author_name  
52 - = time_ago_in_words(update.created_at)  
53 - ago  
54 - .title-block  
55 - %span.update-title  
56 - %span.commit.tag  
57 - Merge Request #  
58 - = update.id  
59 - %span.update-author  
60 - %span= update.source_branch  
61 - &rarr;  
62 - %span= update.target_branch  
63 -  
64 -- elsif update.kind_of?(Issue)  
65 - %a.project-update.titled{:href => dashboard_feed_path(project, update)}  
66 - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40  
67 - %span.update-title  
68 - Created new Issue  
69 - %span.update-author  
70 - %strong= update.author_name  
71 - = time_ago_in_words(update.created_at)  
72 - ago  
73 - .title-block  
74 - %span.update-title  
75 - %span.commit.tag  
76 - Issue #  
77 - = update.id  
78 - %span.update-author  
79 - .left= truncate update.title 17 + %span.label= update.target_branch
  18 + - elsif update.kind_of? Issue
  19 + = link_to project_issue_path(@project, update) do
  20 + Opened new
  21 + %span.label.important= "issue ##{update.id}"
  22 + = truncate update.title
  23 + - else
  24 + = link_to [@project, update.target] do
  25 + %p
  26 + = update.target.class.name.titleize
  27 + = truncate(update.target.id.to_s, :length => 10)
  28 + &nbsp;
  29 + = dashboard_feed_title(update)
app/views/projects/_form.html.haml
1 = form_for(@project, :remote => true) do |f| 1 = form_for(@project, :remote => true) do |f|
2 - %div.form_content  
3 - - unless @project.new_record?  
4 - %h2.icon  
5 - %span  
6 - = @project.name  
7 - .clear  
8 - - if @project.errors.any?  
9 - %ul.errors_holder 2 + - if @project.errors.any?
  3 + .alert-message.block-message.error
  4 + %ul
10 - @project.errors.full_messages.each do |msg| 5 - @project.errors.full_messages.each do |msg|
11 %li= msg 6 %li= msg
12 - %table  
13 - %tr  
14 - %td= f.label :name  
15 - %td= f.text_field :name, :placeholder => "Example Project"  
16 - %tr  
17 - %td  
18 - .left= f.label :path  
19 - %cite.right= "git@#{GIT_HOST["host"]}:"  
20 - %td  
21 - = f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record?  
22 - %tr  
23 - %td  
24 - .left= f.label :code  
25 - %cite.right= "http://#{GIT_HOST["host"]}/"  
26 - %td= f.text_field :code, :placeholder => "example" 7 + .clearfix
  8 + = f.label :name
  9 + .input= f.text_field :name, :placeholder => "Example Project"
  10 + .clearfix
  11 + = f.label :path do
  12 + Path
  13 + %cite= "git@#{GIT_HOST["host"]}:"
  14 + .input= f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record?
  15 + .clearfix
  16 + = f.label :code do
  17 + Code
  18 + %cite= "http://#{GIT_HOST["host"]}/"
  19 + .input= f.text_field :code, :placeholder => "example"
27 20
28 - - unless @project.new_record? || @project.heads.empty?  
29 - %tr  
30 - %td= f.label :default_branch, "Default Branch"  
31 - %td= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;") 21 + - unless @project.new_record? || @project.heads.empty?
  22 + .clearfix
  23 + = f.label :default_branch, "Default Branch"
  24 + .input= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:210px;")
32 25
33 - -#%tr  
34 - %td= f.label :tag_list  
35 - %td= f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field  
36 - %tr  
37 - %td= f.label :description  
38 - %td= f.text_area :description, :placeholder => "project description", :style => "height:50px" 26 +
  27 + .clearfix
  28 + = f.label :description
  29 + .input= f.text_area :description, :placeholder => "project description", :style => "height:50px"
39 30
40 - %br  
41 - %div{ :class => "ajax_loader", :style => "display:none;height:200px;"}  
42 - %center  
43 - = image_tag "ajax-loader.gif", :class => "append-bottom"  
44 - - if @project.new_record?  
45 - %h3.prepend-top Creating project &amp; repository. Please wait for few minutes  
46 - - else  
47 - %h3.prepend-top Updating project &amp; repository. Please wait for few minutes 31 + %br
48 32
49 - .merge-tabs  
50 - = f.submit 'Save', :class => "grey-button"  
51 - &nbsp; 33 + .actions
  34 + = f.submit 'Save', :class => "btn primary"
  35 + = link_to 'Cancel', @project, :class => "btn"
52 - unless @project.new_record? 36 - unless @project.new_record?
53 .right 37 .right
54 - = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "red-button"  
55 -  
56 -  
57 -:javascript  
58 - $(function(){  
59 - $('.new_project, .edit_project').bind('ajax:before', function() {  
60 - $(this).find(".form_content").hide();  
61 - $('.ajax_loader').show();  
62 - });  
63 -  
64 - taggifyForm();  
65 -  
66 - $('form #project_default_branch').chosen();  
67 - }) 38 + = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "btn danger"
app/views/projects/_project_head.html.haml
1 -.top-tabs  
2 - = link_to project_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_path(@project)) }" do  
3 - %span  
4 - Activities  
5 - = link_to info_project_path(@project), :class => "stat-tab tab #{'active' if current_page?(info_project_path(@project)) || current_page?(edit_project_path(@project)) }" do  
6 - %span  
7 - Info  
8 - = link_to team_project_path(@project), :class => "team-tab tab #{'active' if current_page?(team_project_path(@project)) }" do  
9 - %span  
10 - Team  
11 - = link_to files_project_path(@project), :class => "files-tab tab #{'active' if current_page?(files_project_path(@project)) }" do  
12 - %span  
13 - Files  
14 - = link_to project_snippets_path(@project), :class => "snippets-tab tab #{'active' if current_page?(project_snippets_path(@project)) }" do  
15 - %span  
16 - Snippets 1 +%ul.tabs
  2 + %li{ :class => "#{'active' if current_page?(project_path(@project)) }" }
  3 + = link_to project_path(@project), :class => "activities-tab tab" do
  4 + Activities
  5 + %li{ :class => "#{'active' if current_page?(info_project_path(@project)) || current_page?(edit_project_path(@project)) }" }
  6 + = link_to info_project_path(@project), :class => "stat-tab tab " do
  7 + Info
  8 +
  9 + %li{ :class => " #{'active' if current_page?(team_project_path(@project)) }" }
  10 + = link_to team_project_path(@project), :class => "team-tab tab" do
  11 + Team
  12 + %li{ :class => "#{'active' if current_page?(files_project_path(@project)) }" }
  13 + = link_to files_project_path(@project), :class => "files-tab tab " do
  14 + Files
  15 + %li{ :class => " #{'active' if current_page?(project_snippets_path(@project)) }" }
  16 + = link_to project_snippets_path(@project), :class => "snippets-tab tab" do
  17 + Snippets
17 18
18 - if current_page?(project_snippets_path(@project)) 19 - if current_page?(project_snippets_path(@project))
19 - if can? current_user, :write_snippet, @project 20 - if can? current_user, :write_snippet, @project
20 - = link_to new_project_snippet_path(@project), :class => "add_new", :title => "New Snippet" do  
21 - Add new 21 + %li
  22 + = link_to new_project_snippet_path(@project), :class => "add_new", :title => "New Snippet" do
  23 + Add new
22 24
23 25
24 - if current_page?(team_project_path(@project)) 26 - if current_page?(team_project_path(@project))
25 - if can? current_user, :admin_team_member, @project 27 - if can? current_user, :admin_team_member, @project
26 - = link_to new_project_team_member_path(@project), :class => "add_new", :title => "New Team Member" do  
27 - Add New 28 + %li
  29 + = link_to new_project_team_member_path(@project), :class => "add_new", :title => "New Team Member" do
  30 + Add New
app/views/projects/_team.html.haml
1 -%table.no-borders#team-table  
2 - %thead  
3 - %th Name  
4 - %th Project  
5 - %th Repository  
6 - - if can? current_user, :admin_team_member, @project  
7 - %th Actions 1 +%ul.media-grid
8 - @project.users_projects.each do |up| 2 - @project.users_projects.each do |up|
9 = render(:partial => 'team_members/show', :locals => {:member => up}) 3 = render(:partial => 'team_members/show', :locals => {:member => up})
10 4
@@ -15,5 +9,7 @@ @@ -15,5 +9,7 @@
15 }); 9 });
16 }) 10 })
17 11
  12 + /*
18 $('.delete-team-member').live('ajax:success', function() { 13 $('.delete-team-member').live('ajax:success', function() {
19 $(this).closest('tr').fadeOut(); }); 14 $(this).closest('tr').fadeOut(); });
  15 + */
app/views/projects/_tile.html.haml
1 -- @projects.in_groups_of(3, false) do |projects|  
2 - - projects.each_with_index do |project, i|  
3 - %div.grid_1.projects_selector  
4 - %div{ :class => "project-box ui-box ui-box-big" } 1 +- @projects.in_groups_of(2, false) do |projects|
  2 + .row
  3 + - projects.each_with_index do |project, i|
  4 + .span4.well
5 = link_to project_path(project) do 5 = link_to project_path(project) do
6 %h3= truncate(project.name, :length => 20) 6 %h3= truncate(project.name, :length => 20)
7 - .data  
8 - %p.title.repository.git_url_wrapper  
9 - %span Repository:  
10 - %input{ :value => project.url_to_repo, :class => ['git-url', 'one_click_select', 'text', 'project_list_url'], :readonly => 'readonly' }  
11 - %p.title.activity  
12 - %span Last Activity:  
13 - - if project.last_activity_date_cached  
14 - = project.last_activity_date_cached.stamp("Aug 24, 2011")  
15 - - else  
16 - Never 7 + %p.title.repository.git_url_wrapper
  8 + %input{ :value => project.url_to_repo, :class => ['git-url', 'one_click_select', 'text', 'project_list_url'], :readonly => 'readonly' }
17 9
18 - .buttons  
19 - %a.browse-code.button.yellow{:href => tree_project_ref_path(project, project.root_ref)} Browse code  
20 - %a.commits.button.green{:href => project_commits_path(project)} Commits 10 + %a.btn{:href => tree_project_ref_path(project, project.root_ref)} Browse code
  11 + %a.btn{:href => project_commits_path(project)} Commits
app/views/projects/create.js.haml
@@ -4,3 +4,4 @@ @@ -4,3 +4,4 @@
4 - else 4 - else
5 :plain 5 :plain
6 $("#new_project").replaceWith("#{escape_javascript(render('form'))}"); 6 $("#new_project").replaceWith("#{escape_javascript(render('form'))}");
  7 + $('.ajax_loader').hide();