Commit fca1ffb888e506f7ab0551d01321e462c09d5112

Authored by Dmitriy Zaporozhets
1 parent 20721eff

Bootstrap: Issues, Merge Requests, SSH Key completed

app/assets/stylesheets/buttons.scss
@@ -1,118 +0,0 @@ @@ -1,118 +0,0 @@
1 -/* Buttons */  
2 -.grey-button{  
3 - border-radius: 5px;  
4 - font-size: 12px;  
5 - font-weight: bold;  
6 - padding: 5px 17px;  
7 - border: 1px solid #999;  
8 - color: #666;  
9 - display: inline-block;  
10 - box-shadow: 0 1px 2px rgba(0,0,0,.3);  
11 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));  
12 - background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);  
13 - background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);  
14 - background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);  
15 -}  
16 -  
17 -.red-button{  
18 - border-radius: 5px;  
19 - font-size: 12px;  
20 - font-weight: bold;  
21 - padding: 5px 17px;  
22 - border: 1px solid #999;  
23 - color: #666;  
24 - display: inline-block;  
25 - box-shadow: 0 1px 2px rgba(0,0,0,.3);  
26 - background: #D12F19;  
27 - color: white;  
28 -}  
29 -  
30 -.positive-button{  
31 - border-radius: 5px;  
32 - font-size: 12px;  
33 - font-weight: bold;  
34 - padding: 5px 17px;  
35 - border: 1px solid #999;  
36 - color: #666;  
37 - display: inline-block;  
38 - box-shadow: 0 1px 2px rgba(0,0,0,.3);  
39 - background: #4A2;  
40 - color: white;  
41 -}  
42 -  
43 -  
44 -.lbutton,  
45 -.lite_button {  
46 - display:block;  
47 - float:left;  
48 - margin: 0px 5px 0px 0px;  
49 - padding:5px 10px;  
50 -  
51 - font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;  
52 - border:1px solid #D3D3D3;  
53 - background:white;  
54 - font-size:12px !important;  
55 - line-height:130%;  
56 - text-decoration:none;  
57 - font-weight:bold;  
58 - color:#565656;  
59 - cursor:pointer;  
60 -  
61 - &:hover {  
62 - border:1px solid #C2E1EF;  
63 - color: #0099FF;  
64 - }  
65 -  
66 - &.hm {  
67 - margin: 0px 0px;  
68 - }  
69 -  
70 - &.vm {  
71 - margin: 5px 0px;  
72 - }  
73 -}  
74 -  
75 -a.button, input.button {  
76 - font-weight: bold;  
77 - padding: 10px 20px;  
78 - text-align: center;  
79 - display: inline-block;  
80 - border-radius: 5px;  
81 - color: #578E91;  
82 - font-size: 12px;  
83 - text-transform: uppercase;  
84 - border: 1px solid #8CE2E6;  
85 - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbf5f6), to(#c5eef0));  
86 - background-image: -webkit-linear-gradient(#dbf5f6 79.4%, #c5eef0);  
87 - background-image: -moz-linear-gradient(#dbf5f6 79.4%, #c5eef0);  
88 - background-image: -o-linear-gradient(#dbf5f6 79.4%, #c5eef0);  
89 -}  
90 -  
91 -input.button{margin-bottom: 1.5em}  
92 -  
93 -.button:hover {color: rgba(0,0,0,.8)}  
94 -  
95 -.button.green {margin-right: 0; }  
96 -  
97 -.button.yellow{  
98 - color: #908054;  
99 - border-color: #DDCDA1;  
100 - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #FFEFC3), to(#F3E3B7));  
101 - background-image: -webkit-linear-gradient(#FFEFC3 79.4%, #F3E3B7);  
102 - background-image: -moz-linear-gradient(#FFEFC3 79.4%, #F3E3B7);  
103 - background-image: -o-linear-gradient(#FFEFC3 79.4%, #F3E3B7);  
104 -}  
105 -  
106 -.button.blue{  
107 - color: #417E97;  
108 - border-color: #b2cdec;  
109 - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbe8f6), to(#c7daf1));  
110 - background-image: -webkit-linear-gradient(#dbe8f6 79.4%, #c7daf1);  
111 - background-image: -moz-linear-gradient(#dbe8f6 79.4%, #c7daf1);  
112 - background-image: -o-linear-gradient(#dbe8f6 79.4%, #c7daf1);  
113 -}  
114 -  
115 -.button-small{ text-shadow: none; padding: 4px 10px; }  
116 -.button-green{background: #A6B807; color: white}  
117 -  
118 -  
app/assets/stylesheets/common.scss
@@ -117,6 +117,7 @@ $blue_link: "#2fa0bb"; @@ -117,6 +117,7 @@ $blue_link: "#2fa0bb";
117 margin:10px 0 0 0; 117 margin:10px 0 0 0;
118 font-size:13px; 118 font-size:13px;
119 font-weight:bold; 119 font-weight:bold;
  120 + color:#444;
120 } 121 }
121 } 122 }
122 123
@@ -141,6 +142,12 @@ img.avatar { @@ -141,6 +142,12 @@ img.avatar {
141 border-radius: 4px; 142 border-radius: 4px;
142 } 143 }
143 144
  145 +img.lil_av {
  146 + padding-left: 5px;
  147 + position: relative;
  148 + top: 3px;
  149 +}
  150 +
144 .media-grid { 151 .media-grid {
145 h3, h2 , h4 { 152 h3, h2 , h4 {
146 &.media_h { 153 &.media_h {
@@ -176,14 +183,6 @@ img.avatar { @@ -176,14 +183,6 @@ img.avatar {
176 @import "notes.css.scss"; 183 @import "notes.css.scss";
177 @import "login.scss"; 184 @import "login.scss";
178 185
179 -//@import "style.scss";  
180 -  
181 -//@import "commits.css.scss";  
182 -  
183 -//@import "dashboard.scss";  
184 -//@import "tags.scss";  
185 -//@import "buttons.scss";  
186 -  
187 /** CODE HIGHTLIGHT **/ 186 /** CODE HIGHTLIGHT **/
188 @import "highlight.css.scss"; 187 @import "highlight.css.scss";
189 @import "highlight.black.css.scss"; 188 @import "highlight.black.css.scss";
app/assets/stylesheets/dashboard.scss
@@ -1,27 +0,0 @@ @@ -1,27 +0,0 @@
1 -.application .news-feed{margin-left: 285px; min-height: 600px; margin-top: 20px; margin-right:2px; padding:20px;}  
2 -.application .application-content{ position: relative; float: left; width: 100%; height: 100%; }  
3 -.application .news-feed h2{float: left;}  
4 -  
5 -body.application aside{  
6 - 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;  
7 - h4{margin: 0; border-bottom: 1px solid #ccc; padding: 20px 20px 20px 0px; font-size: 11px; font-weight: bold; text-transform: uppercase;}  
8 - .project-list {list-style: none; margin: 0; padding: 0;}  
9 - .project-list li a {background: white; color: #{$blue_link}; display: block; border-bottom: 1px solid $lite_border_color; padding: 14px 6% 14px 0px;}  
10 - .project-list li a span.project-name{font-size: 14px; display: block; margin-bottom: 8px}  
11 - .project-list li a span.time{color: #666; font-weight: normal; font-size: 11px}  
12 - .project-list li a span.arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999}  
13 -}  
14 -  
15 -body.application .news-feed .project-updates {  
16 - margin-bottom: 20px; display: block; width: 100%;  
17 - .data{ padding: 0}  
18 - a.project-update {padding: 10px; overflow: hidden; display: block;}  
19 - a.project-update:last-child{border-bottom: 0}  
20 - a.project-update img{float: left; margin-right: 10px;}  
21 - a.project-update span.update-title, .application .news-feed .project-updates li a span.update-author{display: block;}  
22 - a.project-update span.update-title{margin-bottom: 10px}  
23 - a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}  
24 - a.project-update span.update-author strong{font-weight: bold; font-style: normal;}  
25 -}  
26 -/* eo Dashboard Page */  
27 -  
app/assets/stylesheets/style.scss
@@ -1,570 +0,0 @@ @@ -1,570 +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 -  
74 -html{ -webkit-font-smoothing:antialiased; }  
75 -body {  
76 - font-size: 12px;  
77 - background-color: #FFFFFF;  
78 -}  
79 -a{text-decoration: none; font-weight: bold; color: #444}  
80 -a:hover{color: #555}  
81 -/* Typography */  
82 -h1,h2,h3,h4,h5{font-weight: normal; color: #666}  
83 -h2{margin: 1.5em 0}  
84 -/* eo Typography */  
85 -  
86 -/* Forms */  
87 -input[type="text"]:focus, input[type="password"]:focus { outline: none; }  
88 -input.text{border: 1px solid #ccc; border-radius: 4px; display: block; padding: 10px}  
89 -  
90 -.form-row{  
91 - padding: 0px 0px 10px 0px;  
92 -}  
93 -  
94 -.form-row label{  
95 - font-weight:bold;  
96 - display: inline-block;  
97 - padding: 0px 0px 5px 0px;  
98 -}  
99 -  
100 -/* eo Forms */  
101 -  
102 -/* Tables */  
103 -table {width:100%; border: 1px solid #DEE2E3; margin-bottom: 20px}  
104 -table thead{  
105 - -webkit-border-top-left-radius: 5px;  
106 - -webkit-border-top-right-radius: 5px;  
107 - -moz-border-radius-topleft: 5px;  
108 - -moz-border-radius-topright: 5px;  
109 - border-top-left-radius: 5px;  
110 - border-top-right-radius: 5px;  
111 -}  
112 -table thead th{  
113 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));  
114 - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);  
115 - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);  
116 - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);  
117 - margin: 0;  
118 - font-weight: normal;  
119 - font-weight: bold;  
120 - text-align: left;  
121 - color: #97A0A5;  
122 -}  
123 -td, th{ padding: .9em 1em; vertical-align: middle; }  
124 -  
125 -table thead .image{width:100px}  
126 -.listed_items tr.odd:hover{background-color:#FFFFCF}  
127 -/* eo Tables */  
128 -  
129 -  
130 -  
131 -/* eo Buttons */  
132 -  
133 -/* UI Box */  
134 -//.ui-box{border: 1px solid #DEDFE1; float: left; border-radius: 5px}  
135 -.ui-box{float: left;}  
136 -.ui-box h3{  
137 - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));  
138 - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);  
139 - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);  
140 - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8);  
141 - background:none;  
142 - margin: 0;  
143 - padding: 1em;  
144 - font-size: 12px;  
145 - font-weight: normal;  
146 - font-weight: bold;  
147 - font-size: 16px;  
148 - border-bottom: 1px solid #DEDFE1;  
149 - -webkit-border-top-left-radius: 5px;  
150 - -webkit-border-top-right-radius: 5px;  
151 - -moz-border-radius-topleft: 5px;  
152 - -moz-border-radius-topright: 5px;  
153 - border-top-left-radius: 5px;  
154 - border-top-right-radius: 5px;  
155 -}  
156 -  
157 -.ui-box.ui-box-small h3{  
158 - padding: 8px 10px;  
159 - font-size: 12px;  
160 -}  
161 -  
162 -.ui-box .data{padding: .5em 1em}  
163 -  
164 -.ui-box .buttons{  
165 - padding: 1em;  
166 - border-top:1px solid $lite_border_color;  
167 -}  
168 -  
169 -.ui-box .buttons .button{padding: 8px 9px; font-size: 11px}  
170 -  
171 -.ui-box.hover:hover{box-shadow: 0 0 10px rgba(0,0,0,.1); border: 1px solid #ccc;  
172 -  
173 - -webkit-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
174 - -moz-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
175 - -o-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
176 - transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715);  
177 -}  
178 -  
179 -/* eo UI Box */  
180 -  
181 -  
182 -/* Icons */  
183 -.directory, .file{  
184 - display: inline-block;  
185 - margin-right: 10px;  
186 - width: 14px;  
187 -}  
188 -  
189 -.directory{  
190 - background: url('images.png') no-repeat -73px -26px;  
191 - height: 11px;  
192 - margin-bottom: -1px;  
193 -}  
194 -  
195 -.file{  
196 - background: url('images.png') no-repeat -114px -24px;  
197 - height: 16px;  
198 - margin-bottom: -3px;  
199 -}  
200 -  
201 -/* eo Icons*/  
202 -  
203 -/* Errors */  
204 -#error_explanation{background: #ffe5eb; padding: 20px; margin-bottom: 20px; border-radius: 5px}  
205 -#error_explanation h2{margin: 0; margin-bottom: 20px; color: red}  
206 -#error_explanation ul li{margin-bottom: 10px}  
207 -#error_explanation ul li:last-child{margin-bottom: 0}  
208 -.field_with_errors {  
209 - input[type="text"],  
210 - input[type="password"],  
211 - textarea  
212 - {  
213 - border: 1px solid #D30 !important;  
214 - }  
215 -}  
216 -/* eo Errors */  
217 -  
218 -/* Notices */  
219 -#notice{background: #dfffe1; padding: 20px; margin-bottom: 20px; border-radius: 5px; color: green; font-size: 1.3em;}  
220 -/* eo Notices */  
221 -  
222 -/* InfoBlock */  
223 -#infoblock{  
224 - background: #eeeeee;  
225 - padding: 20px;  
226 - margin-bottom: 20px;  
227 - border-radius: 5px;  
228 -}  
229 -/* eo InfoBlock */  
230 -  
231 -/* Header */  
232 -header{  
233 - background: #474D57 url('bg-header.png') repeat-x bottom;  
234 - z-index: 10000;  
235 - height: 44px;  
236 - padding: 10px 2% 6px 2%;  
237 -}  
238 -header a:hover{color: #f1f1f1}  
239 -header h1{  
240 - width: 65px;  
241 -}  
242 -header h1.logo{margin: 0; padding: 0}  
243 -header h1.logo a{  
244 - background: url('images.png') no-repeat -3px -7px;  
245 - width: 65px;  
246 - height: 26px;  
247 - margin: 5px 0;  
248 - padding: 0;  
249 - display: block;  
250 - float: left;  
251 - text-indent: -1000em;  
252 -}  
253 -  
254 -header nav{border-radius: 4px; box-shadow: 0 1px 2px black; width: 294px; margin: auto;  
255 - background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#31363e));  
256 - background-image: -webkit-linear-gradient(#595d63 6.6%, #31363e);  
257 - background-image: -moz-linear-gradient(#595d63 6.6%, #31363e);  
258 - background-image: -o-linear-gradient(#595d63 6.6%, #31363e);  
259 - margin-top: 2px;  
260 - height:30px  
261 -}  
262 -header nav.shorter_nav{  
263 - width: 207px;  
264 -}  
265 -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}  
266 -header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}  
267 -header nav a:last-child {border: 0; box-shadow: none}  
268 -header nav a:hover, header nav a.current{  
269 - background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#2c2f35));  
270 - background-image: -webkit-linear-gradient(#595d63 6.6%, #2c2f35);  
271 - background-image: -moz-linear-gradient(#595d63 6.6%, #202227);  
272 - background-image: -o-linear-gradient(#595d63 6.6%, #202227);  
273 -}  
274 -  
275 -header nav a:active{  
276 - box-shadow: 0 1px 4px rgba(0,0,0,.8) inset;  
277 -}  
278 -  
279 -header nav a.dashboard {  
280 - -webkit-border-top-left-radius: 4px;  
281 - -webkit-border-bottom-left-radius: 4px;  
282 - -moz-border-radius-topleft: 4px;  
283 - -moz-border-radius-bottomleft: 4px;  
284 - border-top-left-radius: 4px;  
285 - border-bottom-left-radius: 4px;  
286 -}  
287 -  
288 -header nav a.last_elem{  
289 - -webkit-border-top-right-radius: 4px;  
290 - -webkit-border-bottom-right-radius: 4px;  
291 - -moz-border-radius-topright: 4px;  
292 - -moz-border-radius-bottomright: 4px;  
293 - border-top-right-radius: 4px;  
294 - border-bottom-right-radius: 4px;  
295 -}  
296 -  
297 -header .search{ display: inline-block; float: right; margin-right: 90px}  
298 -  
299 -header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;}  
300 -  
301 -header nav a.dashboard span{background: url('images.png') no-repeat -161px 0;}  
302 -header nav a.admin span{background: url('images.png') no-repeat -184px 0;}  
303 -header nav a.project span{background: url('images.png') no-repeat -209px -1px; top: 7px}  
304 -header nav a.issues span{background: url('images.png') no-repeat -209px -1px; top: 7px}  
305 -  
306 -header .login-top{float: right; width: 180px;  
307 - background-image: -webkit-gradient(linear, 0 0, 0 62, color-stop(0.032, #464c56), to(#363c45));  
308 - background-image: -webkit-linear-gradient(#464c56 3.2%, #363c45);  
309 - background-image: -moz-linear-gradient(#464c56 3.2%, #363c45);  
310 - background-image: -o-linear-gradient(#464c56 3.2%, #363c45);  
311 - padding: 0 10px;  
312 - height: 44px;  
313 -}  
314 -header .login-top a{display: block;}  
315 -header .login-top a.pic{float: left; margin-right: 10px;  
316 - img{ height: 36px; width: 36px; border: 1px solid black}  
317 -}  
318 -header .login-top a.username{margin-bottom: 5px}  
319 -header .login-top a.logout{color: #ccc}  
320 -header{margin-bottom: 0; clear: both; position:relative;}  
321 -  
322 -.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}  
323 -.page-title h1{font-size: 20px; width: 400px; margin: 0; padding-top: 8px }  
324 -.page-title a.grey-button{float: right;}  
325 -.right{float: right;}  
326 -  
327 -  
328 -.big-message{  
329 - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.041, #eccb40), to(#ffee4d));  
330 - background-image: -webkit-linear-gradient(90deg, #eccb40 4.1%, #ffee4d);  
331 - background-image: -moz-linear-gradient(90deg, #eccb40 4.1%, #ffee4d);  
332 - background-image: -o-linear-gradient(90deg, #eccb40 4.1%, #ffee4d);  
333 - text-align: center;  
334 - font-weight: bold;  
335 - padding: 10px 20px;  
336 - text-shadow: 0 1px 0 rgba(255,255,255,.3);  
337 - color: #333;  
338 - color: rgba(0,0,0,.7);  
339 - font-size: 14px;  
340 - box-shadow: 0 1px 2px rgba(0,0,0,.7);  
341 - z-index: 100000;  
342 - margin-bottom: 2px;  
343 -}  
344 -  
345 -.big-message a{color: #000; text-decoration: underline;}  
346 -  
347 -.big-message.error{  
348 - background-color: #722523;  
349 - background-image: -webkit-gradient(linear, 0 49, 0 0, color-stop(0.04, #722523), to(#ad4846));  
350 - background-image: -webkit-linear-gradient(90deg, #9b403f 4%, #c16765);  
351 - background-image: -moz-linear-gradient(90deg, #722523 4%, #ad4846);  
352 - background-image: -o-linear-gradient(90deg, #722523 4%, #ad4846);  
353 - color: #2E0D0C;  
354 -}  
355 -  
356 -.big-message.success{  
357 - background-color: #7a9339;  
358 - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.062, #7a9339), to(#93ae46));  
359 - background-image: -webkit-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
360 - background-image: -moz-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
361 - background-image: -o-linear-gradient(90deg, #7a9339 6.2%, #93ae46)  
362 -}  
363 -  
364 -.big-message.success{  
365 - background-color: #7a9339;  
366 - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.062, #7a9339), to(#93ae46));  
367 - background-image: -webkit-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
368 - background-image: -moz-linear-gradient(90deg, #7a9339 6.2%, #93ae46);  
369 - background-image: -o-linear-gradient(90deg, #7a9339 6.2%, #93ae46)  
370 -}  
371 -  
372 -.big-message.notice{  
373 - background-image: -webkit-gradient(linear, 0 49, 0 0, color-stop(0.061, #447790), color-stop(0.897, #5da2bf));  
374 - background-image: -webkit-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%);  
375 - background-image: -moz-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%);  
376 - background-image: -o-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%)  
377 -}  
378 -  
379 -/* eo Account Box */  
380 -input.search-input{  
381 - float: left;  
382 - text-shadow: none;  
383 - width: 116px;  
384 - background-image: url('icon-search.png') ;  
385 - background-repeat: no-repeat;  
386 - background-position: 10px;  
387 - border-radius: 4px;  
388 - border: 1px solid #AAA;  
389 - background-color: #FFF;  
390 - padding: 5px;  
391 - padding-left: 26px;  
392 - margin-top: 2px;  
393 - margin-right: 10px;  
394 -}  
395 -/*input.search-input:focus{ background-color: white; width: 216px;}*/  
396 -input.search-input::-webkit-input-placeholder {color: #666}  
397 -/* eo Header */  
398 -  
399 -h2.icon{position: relative; padding-left: 40px; float: left; }  
400 -/*h2 a{font-weight: normal;}*/  
401 -h2.icon span{background: #E3E5EA url('images.png'); height: 32px; width: 32px; left: 0; top: -5px; border-radius: 4px; display: inline-block; position: absolute}  
402 -  
403 -/* Dashboard Page */  
404 -html, body { height: 100%; }  
405 -  
406 -  
407 -  
408 -  
409 -.grey-button.right{margin-top: 20px}  
410 -  
411 -/* Project Page */  
412 -/* eo New Project Page */  
413 -  
414 -  
415 -/* eo Project Page */  
416 -  
417 -/* Projects Page */  
418 -body.projects-page h2.icon span{background-position: -31px -70px;}  
419 -body.projects-page .project-box.ui-box .data .repository {margin-bottom: 20px}  
420 -body.projects-page .project-box.ui-box .data .title span{ font-weight: bold;}  
421 -body.projects-page .project-box{width: 100%; margin-bottom: 3em}  
422 -body.projects-page .browse-code{margin-right: 10px}  
423 -/* eo Projects Page */  
424 -  
425 -/* ==|== non-semantic helper classes ======================================== */  
426 -.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; }  
427 -.ir br { display: none; }  
428 -.hidden { display: none !important; visibility: hidden; }  
429 -.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }  
430 -.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }  
431 -.invisible { visibility: hidden; }  
432 -.clearfix:before, .clearfix:after { content: ""; display: table; }  
433 -.clearfix:after { clear: both; }  
434 -.clearfix { zoom: 1; }  
435 -  
436 -/* ==|== media queries ====================================================== */  
437 -  
438 -@media only screen and (min-width: 480px) {  
439 -  
440 -}  
441 -  
442 -@media only screen and (min-width: 768px) {  
443 -  
444 -}  
445 -  
446 -/* ==|== print styles ======================================================= */  
447 -  
448 -@media print {  
449 - * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; }  
450 - a, a:visited { text-decoration: underline; }  
451 - a[href]:after { content: " (" attr(href) ")"; }  
452 - abbr[title]:after { content: " (" attr(title) ")"; }  
453 - .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }  
454 - pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }  
455 - thead { display: table-header-group; }  
456 - tr, img { page-break-inside: avoid; }  
457 - img { max-width: 100% !important; }  
458 - @page { margin: 0.5cm; }  
459 - p, h2, h3 { orphans: 3; widows: 3; }  
460 - h2, h3 { page-break-after: avoid; }  
461 -}  
462 -  
463 -body, button, input, select, textarea {  
464 - font-family: "helvetica", "arial", "freesans", "clean", sans-serif;  
465 -}  
466 -  
467 -  
468 -.text_field {  
469 - width:400px;  
470 - padding:8px;  
471 - font-size:14px;  
472 - @include round-borders-all(4px);  
473 -}  
474 -  
475 -.input_button {  
476 - padding:8px;  
477 - font-size:14px;  
478 - cursor:pointer;  
479 - background-color: #F5F5F5;  
480 - border-color: #EEEEEE #DEDEDE #DEDEDE #EEEEEE;  
481 - border-right: 1px solid #DEDEDE;  
482 - border-style: solid;  
483 - border-width: 1px;  
484 -}  
485 -  
486 -  
487 -  
488 -.errors_holder {  
489 - background:#D30;  
490 - color:#fff;  
491 - @include round-borders-all(4px);  
492 - border:1px solid #a30;  
493 - padding:5px;  
494 - list-style:none;  
495 - font-weight: bold;  
496 - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);  
497 -  
498 - li {  
499 - padding:10px;  
500 - }  
501 -}  
502 -  
503 -.notice_holder {  
504 - background:#DDF4FB;  
505 - color:#444;  
506 - border:1px solid #C6EDF9;  
507 - @include round-borders-all(4px);  
508 - padding:5px;  
509 - list-style:none;  
510 - font-weight: bold;  
511 - text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25);  
512 -  
513 - li {  
514 - padding:10px;  
515 - }  
516 -}  
517 -  
518 -.alert_holder {  
519 - background:#FDF5D9;  
520 - color:#444;  
521 - border:1px solid #FCEEC1;  
522 - @include round-borders-all(4px);  
523 - padding:5px;  
524 - list-style:none;  
525 - font-weight: bold;  
526 - text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25);  
527 -  
528 - li {  
529 - padding:10px;  
530 - }  
531 -}  
532 -  
533 -.help_content {  
534 - margin:20px;  
535 - margin-top:71px;  
536 -  
537 - h2 {  
538 - margin:0;  
539 - padding:0;  
540 - }  
541 -  
542 - .menu {  
543 - float:left;  
544 - width:20%;  
545 -  
546 - .active {  
547 - color: $active_bd_color;  
548 - }  
549 - }  
550 -  
551 - .content {  
552 - float:right;  
553 - width:78%;  
554 - }  
555 -  
556 - .bash {  
557 - @include round-borders-all(4px);  
558 - background:#eee;  
559 - padding:5px;  
560 - //overflow-x:scroll;  
561 - pre{  
562 - padding:0;  
563 - line-height:2.0;  
564 - margin:0;  
565 - font-family: 'Courier New', 'andale mono','lucida console',monospace;  
566 - color: #333;  
567 - text-align:left;  
568 - }  
569 - }  
570 -}  
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
@@ -50,7 +50,7 @@ body header { @@ -50,7 +50,7 @@ body header {
50 border: 1px solid #AAA; 50 border: 1px solid #AAA;
51 padding: 0 10px 0 30px; 51 padding: 0 10px 0 30px;
52 background: transparent url('images.png') no-repeat 8px -42px; 52 background: transparent url('images.png') no-repeat 8px -42px;
53 - width: 160px; 53 + width: 260px;
54 height:26px; 54 height:26px;
55 } 55 }
56 } 56 }
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/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/views/admin/projects/_form.html.haml
@@ -6,28 +6,24 @@ @@ -6,28 +6,24 @@
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
@@ -36,4 +32,5 @@ @@ -36,4 +32,5 @@
36 :javascript 32 :javascript
37 $(function(){ 33 $(function(){
38 taggifyForm(); 34 taggifyForm();
  35 + $('#project_owner_id').chosen();
39 }) 36 })
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 => "btn" 41 + = f.submit 'Save', :class => "btn primary"
  42 + = link_to 'Cancel', admin_users_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/commits/index.html.haml
@@ -29,5 +29,9 @@ @@ -29,5 +29,9 @@
29 :javascript 29 :javascript
30 $(function(){ 30 $(function(){
31 CommitsList.init("#{@ref}", 20); 31 CommitsList.init("#{@ref}", 20);
32 - $('.project-refs-select').chosen();  
33 }); 32 });
  33 +
  34 +:javascript
  35 + $(function(){
  36 + $('.project-refs-select').chosen();
  37 + });
app/views/dashboard/_merge_requests_feed.html.haml
@@ -5,6 +5,6 @@ @@ -5,6 +5,6 @@
5 %strong 5 %strong
6 = merge_request.project.name 6 = merge_request.project.name
7 &ndash; 7 &ndash;
8 - Issue # 8 + Merge Request #
9 = merge_request.id 9 = merge_request.id
10 = truncate merge_request.title, :length => 50 10 = truncate merge_request.title, :length => 50
app/views/issues/_show.html.haml
1 %li.wll{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(issue.project, issue) } 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.author_email), :class => "avatar" 2 + = image_tag gravatar_icon(issue.assignee_email), :class => "avatar"
3 %span.update-author 3 %span.update-author
  4 + assigned to
4 %strong 5 %strong
5 = link_to project_team_member_path(@project, @project.team_member_by_id(issue.author_id)), :class => "author_link" do 6 = link_to project_team_member_path(@project, @project.team_member_by_id(issue.author_id)), :class => "author_link" do
6 - = issue.author_name  
7 - authored  
8 - = time_ago_in_words(issue.created_at)  
9 - ago 7 + = issue.assignee_name
10 - if issue.critical 8 - if issue.critical
11 %span.label.important critical 9 %span.label.important critical
12 - if issue.today? 10 - if issue.today?
app/views/issues/index.html.haml
1 -- if current_user.private_token  
2 - = content_for :rss_icon do  
3 - .rss-icon  
4 - = link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do  
5 - = image_tag "Rss-UI.PNG", :width => 22, :title => "feed"  
6 -  
7 -  
8 .issues_content 1 .issues_content
9 %h3 2 %h3
10 Issues 3 Issues
  4 + %span.rss-icon
  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"
  7 +
11 - if can? current_user, :write_issue, @project 8 - if can? current_user, :write_issue, @project
12 = link_to new_project_issue_path(@project), :class => "right btn small", :title => "New Issue", :remote => true do 9 = link_to new_project_issue_path(@project), :class => "right btn small", :title => "New Issue", :remote => true do
13 New Issue 10 New Issue
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 %h3 1 %h3
2 Issue ##{@issue.id} 2 Issue ##{@issue.id}
  3 + %small
  4 + created at
  5 + = @issue.created_at.stamp("Aug 21, 2011")
3 6
4 %span.right 7 %span.right
5 - if can?(current_user, :admin_project, @project) || @issue.author == current_user 8 - if can?(current_user, :admin_project, @project) || @issue.author == current_user
@@ -20,21 +23,18 @@ @@ -20,21 +23,18 @@
20 23
21 %div.well 24 %div.well
22 %div 25 %div
23 - %span.entity-info  
24 - = image_tag gravatar_icon(@issue.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"  
25 - %span.commit-title  
26 - %strong  
27 - %span.commit-author  
28 - %strong  
29 - = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.author.id)) do  
30 - %span.author= @issue.author_name  
31 - &rarr;  
32 - = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.assignee.id)) do  
33 - %span.author= @issue.assignee_name  
34 - %br  
35 - .cgray= @issue.created_at.stamp("Aug 21, 2011 9:23pm") 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
36 37
37 -  
38 %div= simple_format @issue.title 38 %div= simple_format @issue.title
39 39
40 40
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/_head_panel.html.haml
@@ -11,10 +11,6 @@ @@ -11,10 +11,6 @@
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 15
20 .account-box 16 .account-box
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, @project.root_ref), :class => tree_tab_class 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 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.label= @project.common_notes.today.count 19 %span.label= @project.common_notes.today.count
18 - = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do  
19 - Requests  
app/views/layouts/profile.html.haml
@@ -13,13 +13,15 @@ @@ -13,13 +13,15 @@
13 = render :partial => "layouts/head_panel" 13 = render :partial => "layouts/head_panel"
14 .container-fluid 14 .container-fluid
15 .sidebar 15 .sidebar
16 - .fixed  
17 - %aside  
18 - = link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil  
19 - = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil  
20 - = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil  
21 - = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do  
22 - Keys  
23 - - unless current_user.keys.empty?  
24 - %span{ :class => "number" }= current_user.keys.count  
25 - .content= yield 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/merge_requests/show.html.haml
@@ -5,6 +5,10 @@ @@ -5,6 +5,10 @@
5 &rarr; 5 &rarr;
6 %span.label= @merge_request.target_branch 6 %span.label= @merge_request.target_branch
7 7
  8 + %small
  9 + created at
  10 + = @merge_request.created_at.stamp("Aug 21, 2011")
  11 +
8 %span.right 12 %span.right
9 - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user 13 - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
10 - if @merge_request.closed 14 - if @merge_request.closed
@@ -24,19 +28,17 @@ @@ -24,19 +28,17 @@
24 28
25 %div.well 29 %div.well
26 %div 30 %div
27 - %span.entity-info  
28 - = image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"  
29 - %span.commit-title  
30 - %strong  
31 - %span.commit-author  
32 - %strong  
33 - = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do  
34 - %span.author= @merge_request.author_name  
35 - &rarr;  
36 - = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do  
37 - %span.author= @merge_request.assignee_name  
38 - %br  
39 - .cgray= @merge_request.created_at.stamp("Aug 21, 2011 9:23pm") 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
  35 +
  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
40 42
41 43
42 %div= simple_format @merge_request.title 44 %div= simple_format @merge_request.title
@@ -56,7 +58,7 @@ @@ -56,7 +58,7 @@
56 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} 58 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"}
57 59
58 .merge-request-notes 60 .merge-request-notes
59 - .issue_notes= render "notes/notes" 61 + .merge_request_notes= render "notes/notes"
60 .loading{ :style => "display:none;"} 62 .loading{ :style => "display:none;"}
61 %center= image_tag "ajax-loader.gif" 63 %center= image_tag "ajax-loader.gif"
62 .clear 64 .clear
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 => "btn" 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 => "btn"  
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 => "btn" 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 -%h3= @user.name 1 +.media-grid
  2 + = link_to "#" do
  3 + = image_tag gravatar_icon(@user.email, 90), :class => "thumbnail"
  4 + %h3.media_h= @user.name
  5 +
  6 +%hr
2 7
3 = form_for @user, :url => profile_update_path, :method => :put do |f| 8 = form_for @user, :url => profile_update_path, :method => :put do |f|
4 -if @user.errors.any? 9 -if @user.errors.any?
spec/requests/dashboard_merge_requests_spec.rb
@@ -34,14 +34,7 @@ describe &quot;User MergeRequests&quot; do @@ -34,14 +34,7 @@ describe &quot;User MergeRequests&quot; do
34 34
35 it { should have_content(@merge_request1.title[0..10]) } 35 it { should have_content(@merge_request1.title[0..10]) }
36 it { should have_content(@merge_request1.project.name) } 36 it { should have_content(@merge_request1.project.name) }
37 - it { should have_content(@merge_request1.target_branch) }  
38 - it { should have_content(@merge_request1.source_branch) }  
39 - it { should have_content(@merge_request1.assignee.name) }  
40 -  
41 it { should have_content(@merge_request2.title[0..10]) } 37 it { should have_content(@merge_request2.title[0..10]) }
42 it { should have_content(@merge_request2.project.name) } 38 it { should have_content(@merge_request2.project.name) }
43 - it { should have_content(@merge_request2.target_branch) }  
44 - it { should have_content(@merge_request2.source_branch) }  
45 - it { should have_content(@merge_request2.assignee.name) }  
46 end 39 end
47 end 40 end
spec/requests/issues_spec.rb
@@ -51,17 +51,17 @@ describe &quot;Issues&quot; do @@ -51,17 +51,17 @@ describe &quot;Issues&quot; do
51 # admin access to remove issue 51 # admin access to remove issue
52 @user.users_projects.destroy_all 52 @user.users_projects.destroy_all
53 project.add_access(@user, :read, :write, :admin) 53 project.add_access(@user, :read, :write, :admin)
54 - visit project_issues_path(project) 54 + visit edit_project_issue_path(project, @issue)
55 end 55 end
56 56
57 it "should remove entry" do 57 it "should remove entry" do
58 expect { 58 expect {
59 - click_link "destroy_issue_#{@issue.id}" 59 + click_link "Remove"
60 }.to change { Issue.count }.by(-1) 60 }.to change { Issue.count }.by(-1)
61 end 61 end
62 end 62 end
63 63
64 - describe "statuses", :js => true do 64 + describe "statuses" do
65 before do 65 before do
66 @closed_issue = Factory :issue, 66 @closed_issue = Factory :issue,
67 :author => @user, 67 :author => @user,
@@ -76,13 +76,13 @@ describe &quot;Issues&quot; do @@ -76,13 +76,13 @@ describe &quot;Issues&quot; do
76 end 76 end
77 77
78 it "should show only closed" do 78 it "should show only closed" do
79 - choose "closed_issues" 79 + click_link "Closed"
80 should have_no_content(@issue.title) 80 should have_no_content(@issue.title)
81 should have_content(@closed_issue.title[0..25]) 81 should have_content(@closed_issue.title[0..25])
82 end 82 end
83 83
84 it "should show all" do 84 it "should show all" do
85 - choose "all_issues" 85 + click_link "All"
86 should have_content(@issue.title[0..25]) 86 should have_content(@issue.title[0..25])
87 should have_content(@closed_issue.title[0..25]) 87 should have_content(@closed_issue.title[0..25])
88 end 88 end
@@ -182,7 +182,6 @@ describe &quot;Issues&quot; do @@ -182,7 +182,6 @@ describe &quot;Issues&quot; do
182 :assignee => @user, 182 :assignee => @user,
183 :project => project 183 :project => project
184 visit project_issues_path(project) 184 visit project_issues_path(project)
185 - page.execute_script("$('.action-links').css('display', 'block');")  
186 click_link "Edit" 185 click_link "Edit"
187 end 186 end
188 187
@@ -200,7 +199,6 @@ describe &quot;Issues&quot; do @@ -200,7 +199,6 @@ describe &quot;Issues&quot; do
200 it "should update issue fields" do 199 it "should update issue fields" do
201 click_button "Save" 200 click_button "Save"
202 201
203 - page.should_not have_content("Issue ##{@issue.id}")  
204 page.should have_content @user.name 202 page.should have_content @user.name
205 page.should have_content "bug 345" 203 page.should have_content "bug 345"
206 page.should have_content project.name 204 page.should have_content project.name
@@ -226,7 +224,7 @@ describe &quot;Issues&quot; do @@ -226,7 +224,7 @@ describe &quot;Issues&quot; do
226 @issue.save 224 @issue.save
227 225
228 visit project_issues_path(project) 226 visit project_issues_path(project)
229 - choose 'closed_issues' 227 + click_link 'Closed'
230 fill_in 'issue_search', :with => 'foobar' 228 fill_in 'issue_search', :with => 'foobar'
231 229
232 page.should have_content 'foobar' 230 page.should have_content 'foobar'
spec/requests/projects_spec.rb
@@ -5,7 +5,7 @@ describe &quot;Projects&quot; do @@ -5,7 +5,7 @@ describe &quot;Projects&quot; do
5 5
6 describe "GET /projects" do 6 describe "GET /projects" do
7 before do 7 before do
8 - @project = Factory :project 8 + @project = Factory :project, :owner => @user
9 @project.add_access(@user, :read) 9 @project.add_access(@user, :read)
10 visit projects_path 10 visit projects_path
11 end 11 end
@@ -15,7 +15,7 @@ describe &quot;Projects&quot; do @@ -15,7 +15,7 @@ describe &quot;Projects&quot; do
15 end 15 end
16 16
17 it "should have link to new project" do 17 it "should have link to new project" do
18 - page.should have_content("Create new project") 18 + page.should have_content("New Project")
19 end 19 end
20 20
21 it "should have project" do 21 it "should have project" do
@@ -26,7 +26,7 @@ describe &quot;Projects&quot; do @@ -26,7 +26,7 @@ describe &quot;Projects&quot; do
26 describe "GET /projects/new" do 26 describe "GET /projects/new" do
27 before do 27 before do
28 visit projects_path 28 visit projects_path
29 - click_link "Create new project" 29 + click_link "New Project"
30 end 30 end
31 31
32 it "should be correct path" do 32 it "should be correct path" do
@@ -68,7 +68,7 @@ describe &quot;Projects&quot; do @@ -68,7 +68,7 @@ describe &quot;Projects&quot; do
68 68
69 describe "GET /projects/show" do 69 describe "GET /projects/show" do
70 before do 70 before do
71 - @project = Factory :project 71 + @project = Factory :project, :owner => @user
72 @project.add_access(@user, :read) 72 @project.add_access(@user, :read)
73 73
74 visit project_path(@project) 74 visit project_path(@project)
@@ -128,7 +128,7 @@ describe &quot;Projects&quot; do @@ -128,7 +128,7 @@ describe &quot;Projects&quot; do
128 128
129 describe "PUT /projects/:id" do 129 describe "PUT /projects/:id" do
130 before do 130 before do
131 - @project = Factory :project 131 + @project = Factory :project, :owner => @user
132 @project.add_access(@user, :admin, :read) 132 @project.add_access(@user, :admin, :read)
133 133
134 visit edit_project_path(@project) 134 visit edit_project_path(@project)