Commit 7f6e41fa028e4293e50edbf9fe2ea6cc19957533
1 parent
05d76fc4
Exists in
master
and in
4 other branches
Bootstrap: application layout
Showing
22 changed files
with
951 additions
and
204 deletions
Show diff stats
app/assets/stylesheets/common.scss
| @@ -105,6 +105,19 @@ $blue_link: "#2fa0bb"; | @@ -105,6 +105,19 @@ $blue_link: "#2fa0bb"; | ||
| 105 | border-right: 1px solid $border_color; | 105 | border-right: 1px solid $border_color; |
| 106 | height:100%; | 106 | height:100%; |
| 107 | min-height:450px; | 107 | min-height:450px; |
| 108 | + | ||
| 109 | + .fixed { | ||
| 110 | + position:fixed; | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + aside a { | ||
| 114 | + display:block; | ||
| 115 | + position:relative; | ||
| 116 | + padding:15px 10px; | ||
| 117 | + margin:10px 0 0 0; | ||
| 118 | + font-size:13px; | ||
| 119 | + font-weight:bold; | ||
| 120 | + } | ||
| 108 | } | 121 | } |
| 109 | 122 | ||
| 110 | .container-fluid > .content { | 123 | .container-fluid > .content { |
| @@ -112,6 +125,17 @@ $blue_link: "#2fa0bb"; | @@ -112,6 +125,17 @@ $blue_link: "#2fa0bb"; | ||
| 112 | margin-top:20px; | 125 | margin-top:20px; |
| 113 | } | 126 | } |
| 114 | 127 | ||
| 128 | +aside.projects { | ||
| 129 | + margin-left: 0; | ||
| 130 | + padding-left: 20px; | ||
| 131 | +} | ||
| 132 | + | ||
| 133 | +img.avatar { | ||
| 134 | + width:32px; | ||
| 135 | + float:left; | ||
| 136 | + padding-right:5px; | ||
| 137 | +} | ||
| 138 | + | ||
| 115 | @import "reset_bootstrap.scss"; | 139 | @import "reset_bootstrap.scss"; |
| 116 | @import "top_panel.scss"; | 140 | @import "top_panel.scss"; |
| 117 | @import "projects.css.scss"; | 141 | @import "projects.css.scss"; |
app/assets/stylesheets/projects.css.scss
| 1 | .git_url_wrapper { | 1 | .git_url_wrapper { |
| 2 | margin-right:50px | 2 | margin-right:50px |
| 3 | } | 3 | } |
| 4 | - | ||
| 5 | -.project { | ||
| 6 | - .sidebar { | ||
| 7 | - .fixed { | ||
| 8 | - position:fixed; | ||
| 9 | - } | ||
| 10 | - | ||
| 11 | - aside a { | ||
| 12 | - display:block; | ||
| 13 | - position:relative; | ||
| 14 | - padding:15px 10px; | ||
| 15 | - margin:10px 0 0 0; | ||
| 16 | - font-size:13px; | ||
| 17 | - font-weight:bold; | ||
| 18 | - } | ||
| 19 | - } | ||
| 20 | -} | ||
| 21 | .file_stats { | 4 | .file_stats { |
| 22 | span { | 5 | span { |
| 23 | img { | 6 | img { |
| @@ -0,0 +1,384 @@ | @@ -0,0 +1,384 @@ | ||
| 1 | +.git_url_wrapper { margin-right:50px } | ||
| 2 | + | ||
| 3 | +.sidebar aside a{ | ||
| 4 | + display: block; | ||
| 5 | + position: relative; | ||
| 6 | + padding: 15px 10px; | ||
| 7 | + margin: 10px 0 0 0; | ||
| 8 | + | ||
| 9 | + span.number{ | ||
| 10 | + float: right; border-radius: 5px; text-shadow: none; background: rgba(0,0,0,.12); text-align: center; padding: 5px 8px; position: absolute; top: 10px; right: 10px; | ||
| 11 | + } | ||
| 12 | + &.current { | ||
| 13 | + color: white; | ||
| 14 | + background: $active_bg_color; | ||
| 15 | + border: 1px solid $active_bd_color; | ||
| 16 | + border-radius:5px; | ||
| 17 | + | ||
| 18 | + -webkit-border-top-right-radius: 0; | ||
| 19 | + -webkit-border-bottom-right-radius: 0; | ||
| 20 | + -moz-border-radius-topright: 0px; | ||
| 21 | + -moz-border-radius-bottomright: 0px; | ||
| 22 | + border-top-right-radius: 0; | ||
| 23 | + border-bottom-right-radius: 0; | ||
| 24 | + margin-right: -1px; | ||
| 25 | + } | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +body table .commit a{color: #{$blue_link}} | ||
| 29 | +body table th, body table td{ border-bottom: 1px solid #DEE2E3;} | ||
| 30 | +body .fixed{position: fixed; } | ||
| 31 | + | ||
| 32 | +/** File stat **/ | ||
| 33 | +.file_stats { | ||
| 34 | + span { | ||
| 35 | + img { | ||
| 36 | + width:14px; | ||
| 37 | + float:left; | ||
| 38 | + margin-right: 6px; | ||
| 39 | + padding:2px 0; | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | +} | ||
| 43 | + | ||
| 44 | +.round-borders { | ||
| 45 | + @include round-borders-all(4px); | ||
| 46 | + padding: 4px 0px; | ||
| 47 | +} | ||
| 48 | + | ||
| 49 | +table.round-borders { | ||
| 50 | + float:left; | ||
| 51 | + text-align: left; | ||
| 52 | +} | ||
| 53 | + | ||
| 54 | + | ||
| 55 | + | ||
| 56 | +/** PROJECTS **/ | ||
| 57 | +input.ssh_project_url { | ||
| 58 | + padding:5px; | ||
| 59 | + margin:0px; | ||
| 60 | + float:right; | ||
| 61 | + width:400px; | ||
| 62 | + text-align:center; | ||
| 63 | +} | ||
| 64 | + | ||
| 65 | +#projects-list .project { | ||
| 66 | + height:50px; | ||
| 67 | +} | ||
| 68 | + | ||
| 69 | +#tree-slider .tree-item, | ||
| 70 | +#projects-list .project, | ||
| 71 | +#snippets-table .snippet, | ||
| 72 | +#issues-table .issue{ | ||
| 73 | + cursor:pointer; | ||
| 74 | +} | ||
| 75 | + | ||
| 76 | +.clear { | ||
| 77 | + clear: both; | ||
| 78 | +} | ||
| 79 | + | ||
| 80 | + | ||
| 81 | + | ||
| 82 | +#user_projects_limit{ | ||
| 83 | + width: 60px; | ||
| 84 | +} | ||
| 85 | + | ||
| 86 | +.handle:hover{ | ||
| 87 | + cursor: move; | ||
| 88 | +} | ||
| 89 | + | ||
| 90 | +.project-refs-form { | ||
| 91 | + span { | ||
| 92 | + background: none !important; | ||
| 93 | + position:static !important; | ||
| 94 | + width:auto !important; | ||
| 95 | + height: auto !important; | ||
| 96 | + } | ||
| 97 | +} | ||
| 98 | + | ||
| 99 | +.project-refs-select { | ||
| 100 | + width:200px; | ||
| 101 | +} | ||
| 102 | + | ||
| 103 | +.filter .left { margin-right:15px; } | ||
| 104 | + | ||
| 105 | +body table .commit { | ||
| 106 | + a.tree-commit-link { | ||
| 107 | + color:#444; | ||
| 108 | + &:hover { | ||
| 109 | + text-decoration:underline; | ||
| 110 | + } | ||
| 111 | + } | ||
| 112 | +} | ||
| 113 | + | ||
| 114 | +/** NEW PROJECT **/ | ||
| 115 | +.new-project-hodler { | ||
| 116 | + .icon span { background-position: -31px -70px; } | ||
| 117 | + td { border-bottom: 1px solid #DEE2E3; } | ||
| 118 | +} | ||
| 119 | + | ||
| 120 | +/** Feed entry **/ | ||
| 121 | +.commit, | ||
| 122 | +.snippet, | ||
| 123 | +.message { | ||
| 124 | + .title { | ||
| 125 | + color:#666; | ||
| 126 | + a { color:#666 !important; } | ||
| 127 | + p { margin-top:0px; } | ||
| 128 | + } | ||
| 129 | + .author { color: #999 } | ||
| 130 | +} | ||
| 131 | + | ||
| 132 | +/** JQuery UI **/ | ||
| 133 | +.ui-autocomplete { @include round-borders-all(5px); } | ||
| 134 | +.ui-menu-item { cursor: pointer } | ||
| 135 | +.ui-selectmenu{ | ||
| 136 | + @include round-borders-all(4px); | ||
| 137 | + margin-right:10px; | ||
| 138 | + font-size:1.5em; | ||
| 139 | + height:auto; | ||
| 140 | + font-weight:bold; | ||
| 141 | + .ui-selectmenu-status { | ||
| 142 | + padding:3px 10px; | ||
| 143 | + } | ||
| 144 | +} | ||
| 145 | + | ||
| 146 | +#holder { | ||
| 147 | + background:#FAFAFA; | ||
| 148 | + border: 1px solid #EEE; | ||
| 149 | + cursor: move; | ||
| 150 | + height: 70%; | ||
| 151 | + overflow: hidden; | ||
| 152 | +} | ||
| 153 | + | ||
| 154 | +/* Project Dashboard Page */ | ||
| 155 | +html, body { height: 100%; } | ||
| 156 | + | ||
| 157 | +.news-feed h2{float: left;} | ||
| 158 | +.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;} | ||
| 159 | +.news-feed .project-updates .data{ padding: 0} | ||
| 160 | +.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} | ||
| 161 | +.news-feed .project-updates a.project-update:last-child{border-bottom: 0} | ||
| 162 | +.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;} | ||
| 163 | +.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} | ||
| 164 | +.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px} | ||
| 165 | +.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;} | ||
| 166 | +.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;} | ||
| 167 | +/* eo Dashboard Page */ | ||
| 168 | + | ||
| 169 | + | ||
| 170 | +/** Update entry **/ | ||
| 171 | +.update-data { padding: 0 } | ||
| 172 | +.update-data { width:100%; } | ||
| 173 | +.update-data.ui-box .data { padding:0; } | ||
| 174 | +a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} | ||
| 175 | +a.update-item:last-child{border-bottom: 0} | ||
| 176 | +a.update-item img{float: left; margin-right: 10px;} | ||
| 177 | +a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} | ||
| 178 | +a.update-item span.update-title{margin-bottom: 10px} | ||
| 179 | +a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;} | ||
| 180 | +a.update-item span.update-author strong{font-weight: bold; font-style: normal;} | ||
| 181 | + | ||
| 182 | + | ||
| 183 | +body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; } | ||
| 184 | + | ||
| 185 | +body.projects-page input.text.git-url.project_list_url { width:165px; } | ||
| 186 | + | ||
| 187 | + | ||
| 188 | +body table.no-borders th { | ||
| 189 | + background:none; | ||
| 190 | + border-bottom:1px solid #CCC; | ||
| 191 | + color:#333; | ||
| 192 | +} | ||
| 193 | + | ||
| 194 | +body table.no-borders tr, | ||
| 195 | +body table.no-borders td{ | ||
| 196 | + border:none; | ||
| 197 | +} | ||
| 198 | + | ||
| 199 | +.ajax-tab-loading { | ||
| 200 | + padding:40px; | ||
| 201 | + display:none; | ||
| 202 | +} | ||
| 203 | + | ||
| 204 | +#tree-content-holder { float:left; width:100%; } | ||
| 205 | + | ||
| 206 | +#tree-readme-holder { | ||
| 207 | + float:left; | ||
| 208 | + width:100%; | ||
| 209 | + | ||
| 210 | + .readme { | ||
| 211 | + @include round-borders-all(4px); | ||
| 212 | + padding: 4px 15px; | ||
| 213 | + background:#F7F7F7; | ||
| 214 | + } | ||
| 215 | +} | ||
| 216 | + | ||
| 217 | + | ||
| 218 | + | ||
| 219 | +/* Commit Page */ | ||
| 220 | +.entity-info {float: right;} | ||
| 221 | +.entity-button{ | ||
| 222 | + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4)); | ||
| 223 | + background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4); | ||
| 224 | + background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4); | ||
| 225 | + background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4); | ||
| 226 | + box-shadow: 0 -1px 0 white inset; | ||
| 227 | + display: block; | ||
| 228 | + border: 1px solid #eee; | ||
| 229 | + border-radius: 5px; | ||
| 230 | + margin-bottom: 2px; | ||
| 231 | + position: relative; | ||
| 232 | + padding: 4px 10px; | ||
| 233 | + font-size: 11px; | ||
| 234 | + padding-right: 20px; | ||
| 235 | +} | ||
| 236 | + | ||
| 237 | +.entity-button i{ | ||
| 238 | + background: url('images.png') no-repeat -138px -27px; | ||
| 239 | + width: 6px; | ||
| 240 | + height: 9px; | ||
| 241 | + float: right; | ||
| 242 | + position: absolute; | ||
| 243 | + top: 6px; | ||
| 244 | + right: 5px; | ||
| 245 | +} | ||
| 246 | +.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;} | ||
| 247 | + | ||
| 248 | +h4.dash-tabs { | ||
| 249 | + margin: 0; | ||
| 250 | + border-bottom: 1px solid #ccc; | ||
| 251 | + padding: 10px 10px; | ||
| 252 | + font-size: 11px; | ||
| 253 | + padding-left:20px; | ||
| 254 | + font-weight: bold; text-transform: uppercase; | ||
| 255 | + background: #F7F7F7; | ||
| 256 | + margin-bottom:20px; | ||
| 257 | + height:13px; | ||
| 258 | + | ||
| 259 | +} | ||
| 260 | + | ||
| 261 | +.dash-button { | ||
| 262 | + border-right: 1px solid #ddd; | ||
| 263 | + background:none; | ||
| 264 | + padding: 10px 15px; | ||
| 265 | + float:left; | ||
| 266 | + position:relative; | ||
| 267 | + top:-10px; | ||
| 268 | + left:0px; | ||
| 269 | + height:13px; | ||
| 270 | + | ||
| 271 | + &:first-child { | ||
| 272 | + border-left: 1px solid #ddd; | ||
| 273 | + } | ||
| 274 | + &.active { | ||
| 275 | + background: #eaeaea; | ||
| 276 | + } | ||
| 277 | +} | ||
| 278 | + | ||
| 279 | + | ||
| 280 | +.dashboard-loader { | ||
| 281 | + float:right; | ||
| 282 | + margin-right:30px; | ||
| 283 | + display:none; | ||
| 284 | +} | ||
| 285 | + | ||
| 286 | + | ||
| 287 | +.merge-tabs { | ||
| 288 | + margin: 0; | ||
| 289 | + border: 1px solid #ccc; | ||
| 290 | + padding: 5px; | ||
| 291 | + font-size: 12px; | ||
| 292 | + background: #F7F7F7; | ||
| 293 | + margin-bottom:20px; | ||
| 294 | + height:26px; | ||
| 295 | + | ||
| 296 | + -moz-border-radius: 4px; | ||
| 297 | + -webkit-border-radius: 4px; | ||
| 298 | + border-radius: 4px; | ||
| 299 | + | ||
| 300 | + .tab { | ||
| 301 | + font-weight: bold; | ||
| 302 | + border-right: 1px solid #ddd; | ||
| 303 | + background:none; | ||
| 304 | + padding: 10px; | ||
| 305 | + min-width:60px; | ||
| 306 | + float:left; | ||
| 307 | + position:relative; | ||
| 308 | + top:-5px; | ||
| 309 | + left:-5px; | ||
| 310 | + height:16px; | ||
| 311 | + padding-left:34px; | ||
| 312 | + | ||
| 313 | + span { | ||
| 314 | + width: 20px; | ||
| 315 | + height: 20px; | ||
| 316 | + display: inline-block; | ||
| 317 | + position: absolute; | ||
| 318 | + left: 8px; | ||
| 319 | + top: 8px; | ||
| 320 | + } | ||
| 321 | + | ||
| 322 | + &.active { | ||
| 323 | + background: #eaeaea; | ||
| 324 | + } | ||
| 325 | + } | ||
| 326 | +} | ||
| 327 | +.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; } | ||
| 328 | +.activities-tab span { background: url("images.png") no-repeat -161px -1px; } | ||
| 329 | +.stat-tab span, | ||
| 330 | +.team-tab span, | ||
| 331 | +.snippets-tab span { background: url("images.png") no-repeat -38px -77px; } | ||
| 332 | +.files-tab span { background: url("images.png") no-repeat -112px -23px; } | ||
| 333 | + | ||
| 334 | +.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; } | ||
| 335 | +.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; } | ||
| 336 | +.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; } | ||
| 337 | +.merge-tabs .dashboard-loader { padding:8px; } | ||
| 338 | + | ||
| 339 | +.user-mention { | ||
| 340 | + color: #2FA0BB; | ||
| 341 | + font-weight: bold; | ||
| 342 | +} | ||
| 343 | + | ||
| 344 | +.author { | ||
| 345 | + color: #999; | ||
| 346 | +} | ||
| 347 | + | ||
| 348 | + | ||
| 349 | + | ||
| 350 | + | ||
| 351 | +.dark_scheme_box { | ||
| 352 | + padding:20px 0; | ||
| 353 | + | ||
| 354 | + label { | ||
| 355 | + float:left; | ||
| 356 | + box-shadow: 0 0px 5px rgba(0,0,0,.3); | ||
| 357 | + | ||
| 358 | + img { | ||
| 359 | + } | ||
| 360 | + } | ||
| 361 | +} | ||
| 362 | + | ||
| 363 | +a.project-update.titled { | ||
| 364 | + position: relative; | ||
| 365 | + padding-left: 235px !important; | ||
| 366 | + | ||
| 367 | + .title-block { | ||
| 368 | + padding: 10px; | ||
| 369 | + width: 205px; | ||
| 370 | + position: absolute; | ||
| 371 | + left: 0; | ||
| 372 | + top: 0; | ||
| 373 | + } | ||
| 374 | +} | ||
| 375 | + | ||
| 376 | +.add_new { | ||
| 377 | + float: right; | ||
| 378 | + background: #A6B807; | ||
| 379 | + color: white; | ||
| 380 | + padding: 4px 10px; | ||
| 381 | + @include round-borders-all(4px); | ||
| 382 | + font-size:11px; | ||
| 383 | + margin: 10px 0; | ||
| 384 | +} |
| @@ -0,0 +1,385 @@ | @@ -0,0 +1,385 @@ | ||
| 1 | +.git_url_wrapper { margin-right:50px } | ||
| 2 | + | ||
| 3 | +.sidebar aside a{ | ||
| 4 | + display: block; | ||
| 5 | + position: relative; | ||
| 6 | + padding: 15px 10px; | ||
| 7 | + margin: 10px 0 0 0; | ||
| 8 | + | ||
| 9 | + font-size:13px; | ||
| 10 | + font-weight:bold; | ||
| 11 | + color:#333; | ||
| 12 | + | ||
| 13 | + &.current { | ||
| 14 | + color: white; | ||
| 15 | + background: $active_bg_color; | ||
| 16 | + border: 1px solid $active_bd_color; | ||
| 17 | + border-radius:5px; | ||
| 18 | + | ||
| 19 | + -webkit-border-top-right-radius: 0; | ||
| 20 | + -webkit-border-bottom-right-radius: 0; | ||
| 21 | + -moz-border-radius-topright: 0px; | ||
| 22 | + -moz-border-radius-bottomright: 0px; | ||
| 23 | + border-top-right-radius: 0; | ||
| 24 | + border-bottom-right-radius: 0; | ||
| 25 | + margin-right: -1px; | ||
| 26 | + } | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +body table .commit a{color: #{$blue_link}} | ||
| 30 | +body table th, body table td{ border-bottom: 1px solid #DEE2E3;} | ||
| 31 | +body .fixed{position: fixed; } | ||
| 32 | + | ||
| 33 | +/** File stat **/ | ||
| 34 | +.file_stats { | ||
| 35 | + span { | ||
| 36 | + img { | ||
| 37 | + width:14px; | ||
| 38 | + float:left; | ||
| 39 | + margin-right: 6px; | ||
| 40 | + padding:2px 0; | ||
| 41 | + } | ||
| 42 | + } | ||
| 43 | +} | ||
| 44 | + | ||
| 45 | +.round-borders { | ||
| 46 | + @include round-borders-all(4px); | ||
| 47 | + padding: 4px 0px; | ||
| 48 | +} | ||
| 49 | + | ||
| 50 | +table.round-borders { | ||
| 51 | + float:left; | ||
| 52 | + text-align: left; | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | + | ||
| 56 | + | ||
| 57 | +/** PROJECTS **/ | ||
| 58 | +input.ssh_project_url { | ||
| 59 | + padding:5px; | ||
| 60 | + margin:0px; | ||
| 61 | + float:right; | ||
| 62 | + width:400px; | ||
| 63 | + text-align:center; | ||
| 64 | +} | ||
| 65 | + | ||
| 66 | +#projects-list .project { | ||
| 67 | + height:50px; | ||
| 68 | +} | ||
| 69 | + | ||
| 70 | +#tree-slider .tree-item, | ||
| 71 | +#projects-list .project, | ||
| 72 | +#snippets-table .snippet, | ||
| 73 | +#issues-table .issue{ | ||
| 74 | + cursor:pointer; | ||
| 75 | +} | ||
| 76 | + | ||
| 77 | +.clear { | ||
| 78 | + clear: both; | ||
| 79 | +} | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + | ||
| 83 | +#user_projects_limit{ | ||
| 84 | + width: 60px; | ||
| 85 | +} | ||
| 86 | + | ||
| 87 | +.handle:hover{ | ||
| 88 | + cursor: move; | ||
| 89 | +} | ||
| 90 | + | ||
| 91 | +.project-refs-form { | ||
| 92 | + span { | ||
| 93 | + background: none !important; | ||
| 94 | + position:static !important; | ||
| 95 | + width:auto !important; | ||
| 96 | + height: auto !important; | ||
| 97 | + } | ||
| 98 | +} | ||
| 99 | + | ||
| 100 | +.project-refs-select { | ||
| 101 | + width:200px; | ||
| 102 | +} | ||
| 103 | + | ||
| 104 | +.filter .left { margin-right:15px; } | ||
| 105 | + | ||
| 106 | +body table .commit { | ||
| 107 | + a.tree-commit-link { | ||
| 108 | + color:#444; | ||
| 109 | + &:hover { | ||
| 110 | + text-decoration:underline; | ||
| 111 | + } | ||
| 112 | + } | ||
| 113 | +} | ||
| 114 | + | ||
| 115 | +/** NEW PROJECT **/ | ||
| 116 | +.new-project-hodler { | ||
| 117 | + .icon span { background-position: -31px -70px; } | ||
| 118 | + td { border-bottom: 1px solid #DEE2E3; } | ||
| 119 | +} | ||
| 120 | + | ||
| 121 | +/** Feed entry **/ | ||
| 122 | +.commit, | ||
| 123 | +.snippet, | ||
| 124 | +.message { | ||
| 125 | + .title { | ||
| 126 | + color:#666; | ||
| 127 | + a { color:#666 !important; } | ||
| 128 | + p { margin-top:0px; } | ||
| 129 | + } | ||
| 130 | + .author { color: #999 } | ||
| 131 | +} | ||
| 132 | + | ||
| 133 | +/** JQuery UI **/ | ||
| 134 | +.ui-autocomplete { @include round-borders-all(5px); } | ||
| 135 | +.ui-menu-item { cursor: pointer } | ||
| 136 | +.ui-selectmenu{ | ||
| 137 | + @include round-borders-all(4px); | ||
| 138 | + margin-right:10px; | ||
| 139 | + font-size:1.5em; | ||
| 140 | + height:auto; | ||
| 141 | + font-weight:bold; | ||
| 142 | + .ui-selectmenu-status { | ||
| 143 | + padding:3px 10px; | ||
| 144 | + } | ||
| 145 | +} | ||
| 146 | + | ||
| 147 | +#holder { | ||
| 148 | + background:#FAFAFA; | ||
| 149 | + border: 1px solid #EEE; | ||
| 150 | + cursor: move; | ||
| 151 | + height: 70%; | ||
| 152 | + overflow: hidden; | ||
| 153 | +} | ||
| 154 | + | ||
| 155 | +/* Project Dashboard Page */ | ||
| 156 | +html, body { height: 100%; } | ||
| 157 | + | ||
| 158 | +.news-feed h2{float: left;} | ||
| 159 | +.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;} | ||
| 160 | +.news-feed .project-updates .data{ padding: 0} | ||
| 161 | +.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} | ||
| 162 | +.news-feed .project-updates a.project-update:last-child{border-bottom: 0} | ||
| 163 | +.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;} | ||
| 164 | +.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} | ||
| 165 | +.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px} | ||
| 166 | +.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;} | ||
| 167 | +.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;} | ||
| 168 | +/* eo Dashboard Page */ | ||
| 169 | + | ||
| 170 | + | ||
| 171 | +/** Update entry **/ | ||
| 172 | +.update-data { padding: 0 } | ||
| 173 | +.update-data { width:100%; } | ||
| 174 | +.update-data.ui-box .data { padding:0; } | ||
| 175 | +a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} | ||
| 176 | +a.update-item:last-child{border-bottom: 0} | ||
| 177 | +a.update-item img{float: left; margin-right: 10px;} | ||
| 178 | +a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} | ||
| 179 | +a.update-item span.update-title{margin-bottom: 10px} | ||
| 180 | +a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;} | ||
| 181 | +a.update-item span.update-author strong{font-weight: bold; font-style: normal;} | ||
| 182 | + | ||
| 183 | + | ||
| 184 | +body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; } | ||
| 185 | + | ||
| 186 | +body.projects-page input.text.git-url.project_list_url { width:165px; } | ||
| 187 | + | ||
| 188 | + | ||
| 189 | +body table.no-borders th { | ||
| 190 | + background:none; | ||
| 191 | + border-bottom:1px solid #CCC; | ||
| 192 | + color:#333; | ||
| 193 | +} | ||
| 194 | + | ||
| 195 | +body table.no-borders tr, | ||
| 196 | +body table.no-borders td{ | ||
| 197 | + border:none; | ||
| 198 | +} | ||
| 199 | + | ||
| 200 | +.ajax-tab-loading { | ||
| 201 | + padding:40px; | ||
| 202 | + display:none; | ||
| 203 | +} | ||
| 204 | + | ||
| 205 | +#tree-content-holder { float:left; width:100%; } | ||
| 206 | + | ||
| 207 | +#tree-readme-holder { | ||
| 208 | + float:left; | ||
| 209 | + width:100%; | ||
| 210 | + | ||
| 211 | + .readme { | ||
| 212 | + @include round-borders-all(4px); | ||
| 213 | + padding: 4px 15px; | ||
| 214 | + background:#F7F7F7; | ||
| 215 | + } | ||
| 216 | +} | ||
| 217 | + | ||
| 218 | + | ||
| 219 | + | ||
| 220 | +/* Commit Page */ | ||
| 221 | +.entity-info {float: right;} | ||
| 222 | +.entity-button{ | ||
| 223 | + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4)); | ||
| 224 | + background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4); | ||
| 225 | + background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4); | ||
| 226 | + background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4); | ||
| 227 | + box-shadow: 0 -1px 0 white inset; | ||
| 228 | + display: block; | ||
| 229 | + border: 1px solid #eee; | ||
| 230 | + border-radius: 5px; | ||
| 231 | + margin-bottom: 2px; | ||
| 232 | + position: relative; | ||
| 233 | + padding: 4px 10px; | ||
| 234 | + font-size: 11px; | ||
| 235 | + padding-right: 20px; | ||
| 236 | +} | ||
| 237 | + | ||
| 238 | +.entity-button i{ | ||
| 239 | + background: url('images.png') no-repeat -138px -27px; | ||
| 240 | + width: 6px; | ||
| 241 | + height: 9px; | ||
| 242 | + float: right; | ||
| 243 | + position: absolute; | ||
| 244 | + top: 6px; | ||
| 245 | + right: 5px; | ||
| 246 | +} | ||
| 247 | +.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;} | ||
| 248 | + | ||
| 249 | +h4.dash-tabs { | ||
| 250 | + margin: 0; | ||
| 251 | + border-bottom: 1px solid #ccc; | ||
| 252 | + padding: 10px 10px; | ||
| 253 | + font-size: 11px; | ||
| 254 | + padding-left:20px; | ||
| 255 | + font-weight: bold; text-transform: uppercase; | ||
| 256 | + background: #F7F7F7; | ||
| 257 | + margin-bottom:20px; | ||
| 258 | + height:13px; | ||
| 259 | + | ||
| 260 | +} | ||
| 261 | + | ||
| 262 | +.dash-button { | ||
| 263 | + border-right: 1px solid #ddd; | ||
| 264 | + background:none; | ||
| 265 | + padding: 10px 15px; | ||
| 266 | + float:left; | ||
| 267 | + position:relative; | ||
| 268 | + top:-10px; | ||
| 269 | + left:0px; | ||
| 270 | + height:13px; | ||
| 271 | + | ||
| 272 | + &:first-child { | ||
| 273 | + border-left: 1px solid #ddd; | ||
| 274 | + } | ||
| 275 | + &.active { | ||
| 276 | + background: #eaeaea; | ||
| 277 | + } | ||
| 278 | +} | ||
| 279 | + | ||
| 280 | + | ||
| 281 | +.dashboard-loader { | ||
| 282 | + float:right; | ||
| 283 | + margin-right:30px; | ||
| 284 | + display:none; | ||
| 285 | +} | ||
| 286 | + | ||
| 287 | + | ||
| 288 | +.merge-tabs { | ||
| 289 | + margin: 0; | ||
| 290 | + border: 1px solid #ccc; | ||
| 291 | + padding: 5px; | ||
| 292 | + font-size: 12px; | ||
| 293 | + background: #F7F7F7; | ||
| 294 | + margin-bottom:20px; | ||
| 295 | + height:26px; | ||
| 296 | + | ||
| 297 | + -moz-border-radius: 4px; | ||
| 298 | + -webkit-border-radius: 4px; | ||
| 299 | + border-radius: 4px; | ||
| 300 | + | ||
| 301 | + .tab { | ||
| 302 | + font-weight: bold; | ||
| 303 | + border-right: 1px solid #ddd; | ||
| 304 | + background:none; | ||
| 305 | + padding: 10px; | ||
| 306 | + min-width:60px; | ||
| 307 | + float:left; | ||
| 308 | + position:relative; | ||
| 309 | + top:-5px; | ||
| 310 | + left:-5px; | ||
| 311 | + height:16px; | ||
| 312 | + padding-left:34px; | ||
| 313 | + | ||
| 314 | + span { | ||
| 315 | + width: 20px; | ||
| 316 | + height: 20px; | ||
| 317 | + display: inline-block; | ||
| 318 | + position: absolute; | ||
| 319 | + left: 8px; | ||
| 320 | + top: 8px; | ||
| 321 | + } | ||
| 322 | + | ||
| 323 | + &.active { | ||
| 324 | + background: #eaeaea; | ||
| 325 | + } | ||
| 326 | + } | ||
| 327 | +} | ||
| 328 | +.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; } | ||
| 329 | +.activities-tab span { background: url("images.png") no-repeat -161px -1px; } | ||
| 330 | +.stat-tab span, | ||
| 331 | +.team-tab span, | ||
| 332 | +.snippets-tab span { background: url("images.png") no-repeat -38px -77px; } | ||
| 333 | +.files-tab span { background: url("images.png") no-repeat -112px -23px; } | ||
| 334 | + | ||
| 335 | +.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; } | ||
| 336 | +.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; } | ||
| 337 | +.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; } | ||
| 338 | +.merge-tabs .dashboard-loader { padding:8px; } | ||
| 339 | + | ||
| 340 | +.user-mention { | ||
| 341 | + color: #2FA0BB; | ||
| 342 | + font-weight: bold; | ||
| 343 | +} | ||
| 344 | + | ||
| 345 | +.author { | ||
| 346 | + color: #999; | ||
| 347 | +} | ||
| 348 | + | ||
| 349 | + | ||
| 350 | + | ||
| 351 | + | ||
| 352 | +.dark_scheme_box { | ||
| 353 | + padding:20px 0; | ||
| 354 | + | ||
| 355 | + label { | ||
| 356 | + float:left; | ||
| 357 | + box-shadow: 0 0px 5px rgba(0,0,0,.3); | ||
| 358 | + | ||
| 359 | + img { | ||
| 360 | + } | ||
| 361 | + } | ||
| 362 | +} | ||
| 363 | + | ||
| 364 | +a.project-update.titled { | ||
| 365 | + position: relative; | ||
| 366 | + padding-left: 235px !important; | ||
| 367 | + | ||
| 368 | + .title-block { | ||
| 369 | + padding: 10px; | ||
| 370 | + width: 205px; | ||
| 371 | + position: absolute; | ||
| 372 | + left: 0; | ||
| 373 | + top: 0; | ||
| 374 | + } | ||
| 375 | +} | ||
| 376 | + | ||
| 377 | +.add_new { | ||
| 378 | + float: right; | ||
| 379 | + background: #A6B807; | ||
| 380 | + color: white; | ||
| 381 | + padding: 4px 10px; | ||
| 382 | + @include round-borders-all(4px); | ||
| 383 | + font-size:11px; | ||
| 384 | + margin: 10px 0; | ||
| 385 | +} |
app/views/dashboard/_issues_feed.html.haml
| @@ -4,8 +4,8 @@ | @@ -4,8 +4,8 @@ | ||
| 4 | .data | 4 | .data |
| 5 | - @issues.each do |update| | 5 | - @issues.each do |update| |
| 6 | %a.project-update{:href => dashboard_feed_path(update.project, update)} | 6 | %a.project-update{:href => dashboard_feed_path(update.project, update)} |
| 7 | - %strong.issue-number= "##{update.id}" | ||
| 8 | - %span.update-title | 7 | + .avatar= image_tag gravatar_icon(update.assignee_email), :class => "avatar", :width => 32 |
| 8 | + %div | ||
| 9 | = truncate update.title, :length => 35 | 9 | = truncate update.title, :length => 35 |
| 10 | .right= truncate update.project.name | 10 | .right= truncate update.project.name |
| 11 | %span.update-author | 11 | %span.update-author |
| @@ -15,9 +15,9 @@ | @@ -15,9 +15,9 @@ | ||
| 15 | ago | 15 | ago |
| 16 | .right | 16 | .right |
| 17 | - if update.critical | 17 | - if update.critical |
| 18 | - %span.tag.high critical | 18 | + %span.label.important critical |
| 19 | - if update.today? | 19 | - if update.today? |
| 20 | - %span.tag.today today | 20 | + %span.label.new today |
| 21 | 21 | ||
| 22 | - else | 22 | - else |
| 23 | %h2 | 23 | %h2 |
app/views/dashboard/_projects_feed.html.haml
| @@ -2,19 +2,18 @@ | @@ -2,19 +2,18 @@ | ||
| 2 | - @active_projects.first(3).each do |project| | 2 | - @active_projects.first(3).each do |project| |
| 3 | .project-box.project-updates.ui-box.ui-box-small.ui-box-big | 3 | .project-box.project-updates.ui-box.ui-box-small.ui-box-big |
| 4 | = link_to project do | 4 | = link_to project do |
| 5 | - %h3= project.name | ||
| 6 | - .data | ||
| 7 | - - project.updates(3).each do |update| | ||
| 8 | - %a.project-update{:href => dashboard_feed_path(project, update)} | ||
| 9 | - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 | ||
| 10 | - %span.update-title | ||
| 11 | - = dashboard_feed_title(update) | ||
| 12 | - %span.update-author | ||
| 13 | - %strong= update.author_name | ||
| 14 | - authored | ||
| 15 | - = time_ago_in_words(update.created_at) | ||
| 16 | - ago | ||
| 17 | - .right | ||
| 18 | - - klass = update.class.to_s.split("::").last.downcase | ||
| 19 | - %span.tag{ :class => klass }= klass | 5 | + %h4= project.name |
| 6 | + - project.updates(3).each do |update| | ||
| 7 | + %a.project-update{:href => dashboard_feed_path(project, update)} | ||
| 8 | + = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32 | ||
| 9 | + %div | ||
| 10 | + = dashboard_feed_title(update) | ||
| 11 | + %span.update-author | ||
| 12 | + %strong= update.author_name | ||
| 13 | + authored | ||
| 14 | + = time_ago_in_words(update.created_at) | ||
| 15 | + ago | ||
| 16 | + .right | ||
| 17 | + - klass = update.class.to_s.split("::").last.downcase | ||
| 18 | + %span.tag{ :class => klass }= klass | ||
| 20 | 19 |
app/views/dashboard/_sidebar.html.haml
| @@ -1,16 +0,0 @@ | @@ -1,16 +0,0 @@ | ||
| 1 | -%aside | ||
| 2 | - %h4 | ||
| 3 | - Your Projects | ||
| 4 | - - if current_user.can_create_project? | ||
| 5 | - = link_to new_project_path, :class => "btn small" do | ||
| 6 | - New Project | ||
| 7 | - %ol.project-list | ||
| 8 | - - @projects.each do |project| | ||
| 9 | - %li | ||
| 10 | - %a{:href => project_path(project)} | ||
| 11 | - -#%span.arrow → | ||
| 12 | - %span.project-name= project.name | ||
| 13 | - %span.time | ||
| 14 | - %strong Last activity: | ||
| 15 | - = project.last_activity_date_cached ? time_ago_in_words(project.last_activity_date_cached) + " ago" : "Never" | ||
| 16 | - |
app/views/dashboard/index.html.haml
app/views/dashboard/issues.html.haml
app/views/dashboard/merge_requests.html.haml
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +.fixed | ||
| 2 | + %aside | ||
| 3 | + = link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }" | ||
| 4 | + = link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}" | ||
| 5 | + = link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide" | ||
| 6 | + = link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide" | ||
| 7 | + - if current_user.is_admin? | ||
| 8 | + = link_to admin_root_path, :class => "admin", :title => "Admin" do | ||
| 9 | + Admin | ||
| 10 | + = link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}" |
app/views/layouts/_head_panel.html.haml
| @@ -16,18 +16,6 @@ | @@ -16,18 +16,6 @@ | ||
| 16 | = render :partial => "projects/refs", :locals => { :destination => controller.controller_name == "commits" ? "commits" : "tree" } | 16 | = render :partial => "projects/refs", :locals => { :destination => controller.controller_name == "commits" ? "commits" : "tree" } |
| 17 | = yield :rss_icon | 17 | = yield :rss_icon |
| 18 | 18 | ||
| 19 | - - else | ||
| 20 | - .dashboard_links | ||
| 21 | - = link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }" | ||
| 22 | - = link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}" | ||
| 23 | - = link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide" | ||
| 24 | - = link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide" | ||
| 25 | - - if current_user.is_admin? | ||
| 26 | - = link_to admin_root_path, :class => "admin", :title => "Admin" do | ||
| 27 | - Admin | ||
| 28 | - = link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}" | ||
| 29 | - .search | ||
| 30 | - = text_field_tag "search", nil, :placeholder => "Search", :class => "search-input" | ||
| 31 | 19 | ||
| 32 | .account-box | 20 | .account-box |
| 33 | = link_to profile_path, :class => "pic" do | 21 | = link_to profile_path, :class => "pic" do |
| @@ -36,16 +24,3 @@ | @@ -36,16 +24,3 @@ | ||
| 36 | = link_to profile_path, :class => "username" do | 24 | = link_to profile_path, :class => "username" do |
| 37 | My profile | 25 | My profile |
| 38 | = link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete | 26 | = link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete |
| 39 | - - if current_user | ||
| 40 | - = javascript_tag do | ||
| 41 | - $(function(){ | ||
| 42 | - $("#search").autocomplete({ | ||
| 43 | - source: #{raw search_autocomplete_source}, | ||
| 44 | - select: function(event, ui) { location.href = ui.item.url } | ||
| 45 | - }); | ||
| 46 | - }); | ||
| 47 | - | ||
| 48 | - -#- if current_user.require_ssh_key? | ||
| 49 | - #no_ssh_key_defined.big-message.error | ||
| 50 | - %p | ||
| 51 | - No SSH Key is defined. You won't be able to use any Git command!. Click #{link_to( 'here', keys_path )} to add one! |
| @@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
| 1 | +%aside.projects | ||
| 2 | + - if current_user.can_create_project? | ||
| 3 | + .alert-message.block-message.info | ||
| 4 | + You can create at least | ||
| 5 | + = current_user.projects_limit | ||
| 6 | + projects. Click on button to add a new one | ||
| 7 | + = link_to new_project_path, :class => "btn small" do | ||
| 8 | + New Project | ||
| 9 | + | ||
| 10 | + %h4 | ||
| 11 | + Recent Projects: | ||
| 12 | + %ul | ||
| 13 | + - current_user.projects.order("id DESC").limit(5).each do |project| | ||
| 14 | + %li | ||
| 15 | + = link_to project_path(project) do | ||
| 16 | + = project.name | ||
| 17 | + | ||
| 18 | + %h4 | ||
| 19 | + Recent Issues: | ||
| 20 | + %ul | ||
| 21 | + - current_user.assigned_issues.order("id DESC").limit(5).each do |issue| | ||
| 22 | + %li | ||
| 23 | + = link_to project_issue_path(issue.project, issue) do | ||
| 24 | + = truncate issue.title | ||
| 25 | + | ||
| 26 | + | ||
| 27 | + %h4 | ||
| 28 | + Recent Requests: | ||
| 29 | + %ul | ||
| 30 | + - current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue| | ||
| 31 | + %li | ||
| 32 | + = link_to project_merge_request_path(issue.project, issue) do | ||
| 33 | + = truncate issue.title | ||
| 34 | + | ||
| 35 | + |
app/views/layouts/admin.html.haml
| @@ -11,19 +11,17 @@ | @@ -11,19 +11,17 @@ | ||
| 11 | = javascript_tag do | 11 | = javascript_tag do |
| 12 | REQ_URI = "#{request.env["REQUEST_URI"]}"; | 12 | REQ_URI = "#{request.env["REQUEST_URI"]}"; |
| 13 | REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; | 13 | REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; |
| 14 | - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} | 14 | + %body.admin |
| 15 | = render :partial => "layouts/flash" | 15 | = render :partial => "layouts/flash" |
| 16 | - #container | ||
| 17 | - = render :partial => "layouts/head_panel" | ||
| 18 | - .project-container | ||
| 19 | - .project-sidebar | ||
| 20 | - .fixed | ||
| 21 | - %aside | ||
| 22 | - = link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil | ||
| 23 | - = link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil | ||
| 24 | - = link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil | ||
| 25 | - = link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil | ||
| 26 | - = link_to "Resque", "/info/resque" | 16 | + = render :partial => "layouts/head_panel" |
| 17 | + .container-fluid | ||
| 18 | + .sidebar | ||
| 19 | + .fixed | ||
| 20 | + %aside | ||
| 21 | + = link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil | ||
| 22 | + = link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil | ||
| 23 | + = link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil | ||
| 24 | + = link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil | ||
| 25 | + = link_to "Resque", "/info/resque" | ||
| 27 | 26 | ||
| 28 | - .project-content | ||
| 29 | - = yield | 27 | + .content= yield |
app/views/layouts/application.html.haml
| @@ -12,5 +12,9 @@ | @@ -12,5 +12,9 @@ | ||
| 12 | = render :partial => "layouts/flash" | 12 | = render :partial => "layouts/flash" |
| 13 | = render :partial => "layouts/head_panel" | 13 | = render :partial => "layouts/head_panel" |
| 14 | .container-fluid | 14 | .container-fluid |
| 15 | - .sidebar= render :partial => "dashboard/sidebar" | ||
| 16 | - .content= yield | 15 | + .sidebar |
| 16 | + = render :partial => "layouts/app_side" | ||
| 17 | + .content | ||
| 18 | + .row | ||
| 19 | + .span10= yield | ||
| 20 | + .span4= render "layouts/projects_side" |
app/views/projects/_form.html.haml
| 1 | = form_for(@project, :remote => true) do |f| | 1 | = form_for(@project, :remote => true) do |f| |
| 2 | - %div.form_content | ||
| 3 | - - unless @project.new_record? | ||
| 4 | - %h2.icon | ||
| 5 | - %span | ||
| 6 | - = @project.name | ||
| 7 | - .clear | ||
| 8 | - - if @project.errors.any? | ||
| 9 | - %ul.errors_holder | 2 | + - if @project.errors.any? |
| 3 | + .alert-message.block-message.error | ||
| 4 | + %ul | ||
| 10 | - @project.errors.full_messages.each do |msg| | 5 | - @project.errors.full_messages.each do |msg| |
| 11 | %li= msg | 6 | %li= msg |
| 12 | - %table | ||
| 13 | - %tr | ||
| 14 | - %td= f.label :name | ||
| 15 | - %td= f.text_field :name, :placeholder => "Example Project" | ||
| 16 | - %tr | ||
| 17 | - %td | ||
| 18 | - .left= f.label :path | ||
| 19 | - %cite.right= "git@#{GIT_HOST["host"]}:" | ||
| 20 | - %td | ||
| 21 | - = f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record? | ||
| 22 | - %tr | ||
| 23 | - %td | ||
| 24 | - .left= f.label :code | ||
| 25 | - %cite.right= "http://#{GIT_HOST["host"]}/" | ||
| 26 | - %td= f.text_field :code, :placeholder => "example" | 7 | + .clearfix |
| 8 | + = f.label :name | ||
| 9 | + .input= f.text_field :name, :placeholder => "Example Project" | ||
| 10 | + .clearfix | ||
| 11 | + = f.label :path do | ||
| 12 | + Path | ||
| 13 | + %cite= "git@#{GIT_HOST["host"]}:" | ||
| 14 | + .input= f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record? | ||
| 15 | + .clearfix | ||
| 16 | + = f.label :code do | ||
| 17 | + Code | ||
| 18 | + %cite= "http://#{GIT_HOST["host"]}/" | ||
| 19 | + .input= f.text_field :code, :placeholder => "example" | ||
| 27 | 20 | ||
| 28 | - - unless @project.new_record? || @project.heads.empty? | ||
| 29 | - %tr | ||
| 30 | - %td= f.label :default_branch, "Default Branch" | ||
| 31 | - %td= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;") | 21 | + - unless @project.new_record? || @project.heads.empty? |
| 22 | + .clearfix | ||
| 23 | + = f.label :default_branch, "Default Branch" | ||
| 24 | + .input= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;") | ||
| 32 | 25 | ||
| 33 | - -#%tr | ||
| 34 | - %td= f.label :tag_list | ||
| 35 | - %td= f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field | ||
| 36 | - %tr | ||
| 37 | - %td= f.label :description | ||
| 38 | - %td= f.text_area :description, :placeholder => "project description", :style => "height:50px" | 26 | + |
| 27 | + .clearfix | ||
| 28 | + = f.label :description | ||
| 29 | + .input= f.text_area :description, :placeholder => "project description", :style => "height:50px" | ||
| 39 | 30 | ||
| 40 | - %br | ||
| 41 | - %div{ :class => "ajax_loader", :style => "display:none;height:200px;"} | ||
| 42 | - %center | ||
| 43 | - = image_tag "ajax-loader.gif", :class => "append-bottom" | ||
| 44 | - - if @project.new_record? | ||
| 45 | - %h3.prepend-top Creating project & repository. Please wait for few minutes | ||
| 46 | - - else | ||
| 47 | - %h3.prepend-top Updating project & repository. Please wait for few minutes | 31 | + %br |
| 48 | 32 | ||
| 49 | .merge-tabs | 33 | .merge-tabs |
| 50 | = f.submit 'Save', :class => "btn primary" | 34 | = f.submit 'Save', :class => "btn primary" |
| 51 | | 35 | |
| 52 | - unless @project.new_record? | 36 | - unless @project.new_record? |
| 53 | .right | 37 | .right |
| 54 | - = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "red-button" | ||
| 55 | - | ||
| 56 | - | ||
| 57 | -:javascript | ||
| 58 | - $(function(){ | ||
| 59 | - $('.new_project, .edit_project').bind('ajax:before', function() { | ||
| 60 | - $(this).find(".form_content").hide(); | ||
| 61 | - $('.ajax_loader').show(); | ||
| 62 | - }); | ||
| 63 | - | ||
| 64 | - taggifyForm(); | ||
| 65 | - | ||
| 66 | - $('form #project_default_branch').chosen(); | ||
| 67 | - }) | 38 | + = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "btn" |
app/views/projects/_tile.html.haml
| 1 | -- @projects.in_groups_of(3, false) do |projects| | ||
| 2 | - - projects.each_with_index do |project, i| | ||
| 3 | - %div.grid_1.projects_selector | ||
| 4 | - %div{ :class => "project-box ui-box ui-box-big" } | 1 | +- @projects.in_groups_of(2, false) do |projects| |
| 2 | + .row | ||
| 3 | + - projects.each_with_index do |project, i| | ||
| 4 | + .span4.well | ||
| 5 | = link_to project_path(project) do | 5 | = link_to project_path(project) do |
| 6 | %h3= truncate(project.name, :length => 20) | 6 | %h3= truncate(project.name, :length => 20) |
| 7 | - .data | ||
| 8 | - %p.title.repository.git_url_wrapper | ||
| 9 | - %span Repository: | ||
| 10 | - %input{ :value => project.url_to_repo, :class => ['git-url', 'one_click_select', 'text', 'project_list_url'], :readonly => 'readonly' } | ||
| 11 | - %p.title.activity | ||
| 12 | - %span Last Activity: | ||
| 13 | - - if project.last_activity_date_cached | ||
| 14 | - = project.last_activity_date_cached.stamp("Aug 24, 2011") | ||
| 15 | - - else | ||
| 16 | - Never | 7 | + %p.title.repository.git_url_wrapper |
| 8 | + %input{ :value => project.url_to_repo, :class => ['git-url', 'one_click_select', 'text', 'project_list_url'], :readonly => 'readonly' } | ||
| 17 | 9 | ||
| 18 | - .buttons | ||
| 19 | - %a.browse-code.button.yellow{:href => tree_project_ref_path(project, project.root_ref)} Browse code | ||
| 20 | - %a.commits.button.green{:href => project_commits_path(project)} Commits | 10 | + %a.btn{:href => tree_project_ref_path(project, project.root_ref)} Browse code |
| 11 | + %a.btn{:href => project_commits_path(project)} Commits |
app/views/projects/create.js.haml
app/views/projects/index.html.haml
| 1 | -- content_for(:body_class, "projects-page") | ||
| 2 | -.container_4 | ||
| 3 | - .grid_4 | ||
| 4 | - - if current_user.can_create_project? | ||
| 5 | - %a.grey-button.right{:href => new_project_path} Create new project | ||
| 6 | - %h2.icon | ||
| 7 | - %span | ||
| 8 | - Projects | 1 | +%h3 Projects |
| 2 | +%hr | ||
| 3 | +- unless @projects.empty? | ||
| 4 | + %div.tile= render "tile" | ||
| 9 | 5 | ||
| 10 | - %div.clear | ||
| 11 | - - unless @projects.empty? | ||
| 12 | - %div{:class => "tile"} | ||
| 13 | - = render "tile" | 6 | + -# If projects requris paging |
| 7 | + -# We add ajax loader & init script | ||
| 8 | + - if @projects.count == @limit | ||
| 9 | + .loading{ :style => "display:none;"} | ||
| 10 | + %center= image_tag "ajax-loader.gif" | ||
| 14 | 11 | ||
| 15 | - -# If projects requris paging | ||
| 16 | - -# We add ajax loader & init script | ||
| 17 | - - if @projects.count == @limit | ||
| 18 | - .clear | ||
| 19 | - .loading{ :style => "display:none;"} | ||
| 20 | - %center= image_tag "ajax-loader.gif" | ||
| 21 | - | ||
| 22 | - :javascript | ||
| 23 | - $(function(){ | ||
| 24 | - ProjectsList.init(16); | ||
| 25 | - }); | ||
| 26 | - - else | ||
| 27 | - %center.prepend-top | ||
| 28 | - %h2 | ||
| 29 | - %cite Nothing here | 12 | + :javascript |
| 13 | + $(function(){ | ||
| 14 | + ProjectsList.init(16); | ||
| 15 | + }); | ||
| 16 | +- else | ||
| 17 | + %h2 Nothing here |
app/views/projects/new.html.haml
| 1 | -- content_for(:body_class, "new-project-page") | ||
| 2 | -- content_for(:page_title) do | ||
| 3 | - .new-project-hodler | ||
| 4 | - .container | ||
| 5 | - %h2.icon | ||
| 6 | - %span | ||
| 7 | - New Project | ||
| 8 | - | ||
| 9 | - %div.clear | ||
| 10 | - = render 'form' | 1 | +%h3 New Project |
| 2 | +%hr | ||
| 3 | += render 'form' | ||
| 4 | +%div{ :class => "ajax_loader", :style => "display:none;height:200px;"} | ||
| 5 | + %center | ||
| 6 | + = image_tag "ajax-loader.gif", :class => "append-bottom" | ||
| 7 | + %h3.prepend-top Creating project & repository. Please wait for few minutes | ||
| 11 | 8 | ||
| 12 | :javascript | 9 | :javascript |
| 13 | $(function(){ | 10 | $(function(){ |
| 14 | - $("#project_name").change(function(){ | 11 | + $("#project_name").live("change", function(){ |
| 15 | var slug = slugify($(this).val()); | 12 | var slug = slugify($(this).val()); |
| 16 | $("#project_code").val(slug); | 13 | $("#project_code").val(slug); |
| 17 | $("#project_path").val(slug); | 14 | $("#project_path").val(slug); |
| @@ -21,3 +18,11 @@ | @@ -21,3 +18,11 @@ | ||
| 21 | function slugify(text) { | 18 | function slugify(text) { |
| 22 | return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); | 19 | return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); |
| 23 | } | 20 | } |
| 21 | + | ||
| 22 | + $(function(){ | ||
| 23 | + $('.new_project').live('ajax:before', function() { | ||
| 24 | + $(this).hide(); | ||
| 25 | + $('.ajax_loader').show(); | ||
| 26 | + }); | ||
| 27 | + $('form #project_default_branch').chosen(); | ||
| 28 | + }) |
app/views/projects/update.js.haml
spec/requests/merge_requests_spec.rb
| @@ -42,7 +42,7 @@ describe "MergeRequests" do | @@ -42,7 +42,7 @@ describe "MergeRequests" do | ||
| 42 | 42 | ||
| 43 | it { should have_content(@merge_request.title[0..10]) } | 43 | it { should have_content(@merge_request.title[0..10]) } |
| 44 | it "Show page should inform user that merge request closed" do | 44 | it "Show page should inform user that merge request closed" do |
| 45 | - within ".merge-tabs" do | 45 | + within ".tabs" do |
| 46 | page.should have_content "Reopen" | 46 | page.should have_content "Reopen" |
| 47 | end | 47 | end |
| 48 | end | 48 | end |