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   -/* 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 117 margin:10px 0 0 0;
118 118 font-size:13px;
119 119 font-weight:bold;
  120 + color:#444;
120 121 }
121 122 }
122 123  
... ... @@ -141,6 +142,12 @@ img.avatar {
141 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 151 .media-grid {
145 152 h3, h2 , h4 {
146 153 &.media_h {
... ... @@ -176,14 +183,6 @@ img.avatar {
176 183 @import "notes.css.scss";
177 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 186 /** CODE HIGHTLIGHT **/
188 187 @import "highlight.css.scss";
189 188 @import "highlight.black.css.scss";
... ...
app/assets/stylesheets/dashboard.scss
... ... @@ -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   -/* 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   -.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 50 border: 1px solid #AAA;
51 51 padding: 0 10px 0 30px;
52 52 background: transparent url('images.png') no-repeat 8px -42px;
53   - width: 160px;
  53 + width: 260px;
54 54 height:26px;
55 55 }
56 56 }
... ...
app/controllers/admin/projects_controller.rb
... ... @@ -52,6 +52,12 @@ class Admin::ProjectsController < ApplicationController
52 52 def update
53 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 61 if @admin_project.update_attributes(params[:project])
56 62 redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.'
57 63 else
... ...
app/controllers/keys_controller.rb
1 1 class KeysController < ApplicationController
2 2 layout "profile"
3   - respond_to :js
  3 + respond_to :js, :html
4 4  
5 5 def index
6 6 @keys = current_user.keys.all
... ...
app/views/admin/projects/_form.html.haml
... ... @@ -6,28 +6,24 @@
6 6 - @admin_project.errors.full_messages.each do |msg|
7 7 %li= msg
8 8  
9   - .form-row
  9 + .clearfix
10 10 = f.label :name
11   - %br
12   - = f.text_field :name
13   - .form-row
  11 + .input= f.text_field :name
  12 + .clearfix
14 13 = f.label :code
15   - %br
16   - = f.text_field :code
17   - .form-row
  14 + .input= f.text_field :code
  15 + .clearfix
18 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 25 = f.label :description
29   - %br
30   - = f.text_area :description
  26 + .input= f.text_area :description
31 27 .clear
32 28 %br
33 29 .actions
... ... @@ -36,4 +32,5 @@
36 32 :javascript
37 33 $(function(){
38 34 taggifyForm();
  35 + $('#project_owner_id').chosen();
39 36 })
... ...
app/views/admin/users/_form.html.haml
... ... @@ -2,48 +2,41 @@
2 2 = form_for [:admin, @admin_user] do |f|
3 3 -if @admin_user.errors.any?
4 4 #error_explanation
5   - %h2= "#{pluralize(@admin_user.errors.count, "error")} prohibited this admin_user from being saved:"
6 5 %ul
7 6 - @admin_user.errors.full_messages.each do |msg|
8 7 %li= msg
9 8  
10   - .form-row
  9 + .clearfix
11 10 = f.label :name
12   - %br
13   - = f.text_field :name
14   - .form-row
  11 + .input= f.text_field :name
  12 + .clearfix
15 13 = f.label :email
16   - %br
17   - = f.text_field :email
18   - .form-row
  14 + .input= f.text_field :email
  15 + .clearfix
19 16 = f.label :password
20   - %br
21   - = f.password_field :password
22   - .form-row
  17 + .input= f.password_field :password
  18 + .clearfix
23 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 22 = f.check_box :admin
28 23 = f.label :admin
29 24  
30   - .form-row
31   - = f.text_field :projects_limit, :class => "small_input"
  25 + .clearfix
32 26 = f.label :projects_limit
  27 + .input= f.text_field :projects_limit, :class => "small_input"
33 28  
34   - .form-row
  29 + .clearfix
35 30 = f.label :skype
36   - %br
37   - = f.text_field :skype
38   - .form-row
  31 + .input= f.text_field :skype
  32 + .clearfix
39 33 = f.label :linkedin
40   - %br
41   - = f.text_field :linkedin
42   - .form-row
  34 + .input= f.text_field :linkedin
  35 + .clearfix
43 36 = f.label :twitter
44   - %br
45   - = f.text_field :twitter
  37 + .input= f.text_field :twitter
46 38 .clear
47 39 %br
48 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 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 29 :javascript
30 30 $(function(){
31 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 5 %strong
6 6 = merge_request.project.name
7 7 &ndash;
8   - Issue #
  8 + Merge Request #
9 9 = merge_request.id
10 10 = truncate merge_request.title, :length => 50
... ...
app/views/issues/_show.html.haml
1 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 3 %span.update-author
  4 + assigned to
4 5 %strong
5 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 8 - if issue.critical
11 9 %span.label.important critical
12 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 1 .issues_content
9 2 %h3
10 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 8 - if can? current_user, :write_issue, @project
12 9 = link_to new_project_issue_path(@project), :class => "right btn small", :title => "New Issue", :remote => true do
13 10 New Issue
... ...
app/views/issues/index.js.haml
1 1 :plain
2   - $('#issues-table tbody').html("#{escape_javascript(render('issues'))}");
  2 + $('#issues-table').html("#{escape_javascript(render('issues'))}");
3 3 setSortable();
... ...
app/views/issues/show.html.haml
1 1 %h3
2 2 Issue ##{@issue.id}
  3 + %small
  4 + created at
  5 + = @issue.created_at.stamp("Aug 21, 2011")
3 6  
4 7 %span.right
5 8 - if can?(current_user, :admin_project, @project) || @issue.author == current_user
... ... @@ -20,21 +23,18 @@
20 23  
21 24 %div.well
22 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 38 %div= simple_format @issue.title
39 39  
40 40  
... ...
app/views/keys/_form.html.haml
1 1 %div
2   - = form_for @key, :remote => true do |f|
  2 + = form_for @key do |f|
3 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 10 = f.label :title
10   - = f.text_field :title, :style => "width:300px"
11   - .form-row
  11 + .input= f.text_field :title
  12 + .clearfix
12 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 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 7 %div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" }
9   - .data
  8 + %ul.unstyled
10 9 - @keys.each do |key|
11 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 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 11 = truncate @project.name, :length => 28
12 12 .git_url_wrapper
13 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 16 .account-box
... ...
app/views/layouts/_project_side.html.haml
... ... @@ -6,14 +6,14 @@
6 6  
7 7 - if @project.repo_exists?
8 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 10 = link_to "Commits", project_commits_path(@project), :class => (controller.controller_name == "commits") ? "current" : nil
11 11 = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
12 12 = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do
13 13 Issues
  14 + = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
  15 + Merge Requests
14 16 = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
15   - Wall
  17 + @Wall
16 18 - if @project.common_notes.today.count > 0
17 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 = render :partial => "layouts/head_panel"
14 14 .container-fluid
15 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 5 &rarr;
6 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 12 %span.right
9 13 - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
10 14 - if @merge_request.closed
... ... @@ -24,19 +28,17 @@
24 28  
25 29 %div.well
26 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 44 %div= simple_format @merge_request.title
... ... @@ -56,7 +58,7 @@
56 58 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"}
57 59  
58 60 .merge-request-notes
59   - .issue_notes= render "notes/notes"
  61 + .merge_request_notes= render "notes/notes"
60 62 .loading{ :style => "display:none;"}
61 63 %center= image_tag "ajax-loader.gif"
62 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 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 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 8 = form_for @user, :url => profile_update_path, :method => :put do |f|
4 9 -if @user.errors.any?
... ...
spec/requests/dashboard_merge_requests_spec.rb
... ... @@ -34,14 +34,7 @@ describe &quot;User MergeRequests&quot; do
34 34  
35 35 it { should have_content(@merge_request1.title[0..10]) }
36 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 37 it { should have_content(@merge_request2.title[0..10]) }
42 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 39 end
47 40 end
... ...
spec/requests/issues_spec.rb
... ... @@ -51,17 +51,17 @@ describe &quot;Issues&quot; do
51 51 # admin access to remove issue
52 52 @user.users_projects.destroy_all
53 53 project.add_access(@user, :read, :write, :admin)
54   - visit project_issues_path(project)
  54 + visit edit_project_issue_path(project, @issue)
55 55 end
56 56  
57 57 it "should remove entry" do
58 58 expect {
59   - click_link "destroy_issue_#{@issue.id}"
  59 + click_link "Remove"
60 60 }.to change { Issue.count }.by(-1)
61 61 end
62 62 end
63 63  
64   - describe "statuses", :js => true do
  64 + describe "statuses" do
65 65 before do
66 66 @closed_issue = Factory :issue,
67 67 :author => @user,
... ... @@ -76,13 +76,13 @@ describe &quot;Issues&quot; do
76 76 end
77 77  
78 78 it "should show only closed" do
79   - choose "closed_issues"
  79 + click_link "Closed"
80 80 should have_no_content(@issue.title)
81 81 should have_content(@closed_issue.title[0..25])
82 82 end
83 83  
84 84 it "should show all" do
85   - choose "all_issues"
  85 + click_link "All"
86 86 should have_content(@issue.title[0..25])
87 87 should have_content(@closed_issue.title[0..25])
88 88 end
... ... @@ -182,7 +182,6 @@ describe &quot;Issues&quot; do
182 182 :assignee => @user,
183 183 :project => project
184 184 visit project_issues_path(project)
185   - page.execute_script("$('.action-links').css('display', 'block');")
186 185 click_link "Edit"
187 186 end
188 187  
... ... @@ -200,7 +199,6 @@ describe &quot;Issues&quot; do
200 199 it "should update issue fields" do
201 200 click_button "Save"
202 201  
203   - page.should_not have_content("Issue ##{@issue.id}")
204 202 page.should have_content @user.name
205 203 page.should have_content "bug 345"
206 204 page.should have_content project.name
... ... @@ -226,7 +224,7 @@ describe &quot;Issues&quot; do
226 224 @issue.save
227 225  
228 226 visit project_issues_path(project)
229   - choose 'closed_issues'
  227 + click_link 'Closed'
230 228 fill_in 'issue_search', :with => 'foobar'
231 229  
232 230 page.should have_content 'foobar'
... ...
spec/requests/projects_spec.rb
... ... @@ -5,7 +5,7 @@ describe &quot;Projects&quot; do
5 5  
6 6 describe "GET /projects" do
7 7 before do
8   - @project = Factory :project
  8 + @project = Factory :project, :owner => @user
9 9 @project.add_access(@user, :read)
10 10 visit projects_path
11 11 end
... ... @@ -15,7 +15,7 @@ describe &quot;Projects&quot; do
15 15 end
16 16  
17 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 19 end
20 20  
21 21 it "should have project" do
... ... @@ -26,7 +26,7 @@ describe &quot;Projects&quot; do
26 26 describe "GET /projects/new" do
27 27 before do
28 28 visit projects_path
29   - click_link "Create new project"
  29 + click_link "New Project"
30 30 end
31 31  
32 32 it "should be correct path" do
... ... @@ -68,7 +68,7 @@ describe &quot;Projects&quot; do
68 68  
69 69 describe "GET /projects/show" do
70 70 before do
71   - @project = Factory :project
  71 + @project = Factory :project, :owner => @user
72 72 @project.add_access(@user, :read)
73 73  
74 74 visit project_path(@project)
... ... @@ -128,7 +128,7 @@ describe &quot;Projects&quot; do
128 128  
129 129 describe "PUT /projects/:id" do
130 130 before do
131   - @project = Factory :project
  131 + @project = Factory :project, :owner => @user
132 132 @project.add_access(@user, :admin, :read)
133 133  
134 134 visit edit_project_path(@project)
... ...