diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-01-30 00:45:35 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-01-30 00:45:35 +0200 |
commit | 8ebfae9a0770ce1ba5afa121a484f70ab9ce9110 (patch) | |
tree | 007e2f528ac100b1f1c3478bb32782d8dcbeeb1e | |
parent | 6572d96bb5468b9cdf17c34aec83224ad1840369 (diff) | |
parent | b51252e6cac2e413e6e39b53964a57d1b29ac12f (diff) | |
download | gitlab-ce-8ebfae9a0770ce1ba5afa121a484f70ab9ce9110.tar.gz |
Merge branch 'bootstrap'
Conflicts:
Gemfile
app/views/commits/_commits.html.haml
app/views/projects/empty.html.haml
127 files changed, 2431 insertions, 2958 deletions
@@ -29,6 +29,7 @@ gem "httparty" gem "charlock_holmes" gem "foreman" gem "omniauth-ldap" +gem 'bootstrap-sass' group :assets do gem "sass-rails", "~> 3.1.0" diff --git a/Gemfile.lock b/Gemfile.lock index 89d92ae4324..a3397477195 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -67,6 +67,8 @@ GEM awesome_print (0.4.0) bcrypt-ruby (3.0.1) blankslate (2.1.2.4) + bootstrap-sass (1.4.4) + sass-rails (~> 3.1) builder (3.0.0) capybara (1.1.2) mime-types (>= 1.16) @@ -226,12 +228,11 @@ GEM blankslate (>= 2.1.2.3) ffi (~> 1.0.7) rubyzip (0.9.4) - sass (3.1.10) - sass-rails (3.1.4) + sass (3.1.12) + sass-rails (3.1.5) actionpack (~> 3.1.0) railties (~> 3.1.0) - sass (>= 3.1.4) - sprockets (~> 2.0.0) + sass (~> 3.1.10) tilt (~> 1.3.2) seed-fu (2.1.0) activerecord (~> 3.1.0) @@ -299,6 +300,7 @@ DEPENDENCIES autotest autotest-rails awesome_print + bootstrap-sass capybara carrierwave charlock_holmes diff --git a/app/assets/javascripts/issues.js b/app/assets/javascripts/issues.js index dc4da58213e..ded66b1c540 100644 --- a/app/assets/javascripts/issues.js +++ b/app/assets/javascripts/issues.js @@ -1,18 +1,18 @@ function switchToNewIssue(form){ - $("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){ - $(".project-content").append(form); + $(".issues_content").hide("fade", { direction: "left" }, 150, function(){ + $(".issues_content").after(form); $('select#issue_assignee_id').chosen(); - $("#new_issue_dialog").show("slide", { direction: "right" }, 150); + $("#new_issue_dialog").show("fade", { direction: "right" }, 150); $('.top-tabs .add_new').hide(); }); } function switchToEditIssue(form){ - $("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){ - $(".project-content").append(form); + $(".issues_content").hide("fade", { direction: "left" }, 150, function(){ + $(".issues_content").after(form); $('select#issue_assignee_id').chosen(); - $("#edit_issue_dialog").show("slide", { direction: "right" }, 150); - $('.top-tabs .add_new').hide(); + $("#edit_issue_dialog").show("fade", { direction: "right" }, 150); + $('.add_new').hide(); }); } @@ -25,11 +25,11 @@ function switchFromEditIssue(){ } function backToIssues(){ - $("#edit_issue_dialog, #new_issue_dialog").hide("slide", { direction: "right" }, 150, function(){ - $("#issues-table-holder").show("slide", { direction: "left" }, 150, function() { + $("#edit_issue_dialog, #new_issue_dialog").hide("fade", { direction: "right" }, 150, function(){ + $(".issues_content").show("fade", { direction: "left" }, 150, function() { $("#edit_issue_dialog").remove(); $("#new_issue_dialog").remove(); - $('.top-tabs .add_new').show(); + $('.add_new').show(); }); }); } diff --git a/app/assets/javascripts/merge_requests.js b/app/assets/javascripts/merge_requests.js index 0d2f535586e..af59634f7ba 100644 --- a/app/assets/javascripts/merge_requests.js +++ b/app/assets/javascripts/merge_requests.js @@ -4,17 +4,17 @@ var MergeRequest = { init: function() { - $(".merge-tabs a").live("click", function() { - $(".merge-tabs a").removeClass("active"); - $(this).addClass("active"); + $(".tabs a").live("click", function() { + $(".tabs a").parent().removeClass("active"); + $(this).parent().addClass("active"); }); - $(".merge-tabs a.merge-notes-tab").live("click", function() { + $(".tabs a.merge-notes-tab").live("click", function() { $(".merge-request-commits, .merge-request-diffs").hide(); $(".merge-request-notes").show(); }); - $(".merge-tabs a.merge-commits-tab").live("click", function() { + $(".tabs a.merge-commits-tab").live("click", function() { if(!MergeRequest.commits_loaded) { MergeRequest.loadCommits(); } @@ -22,7 +22,7 @@ var MergeRequest = { $(".merge-request-commits").show(); }); - $(".merge-tabs a.merge-diffs-tab").live("click", function() { + $(".tabs a.merge-diffs-tab").live("click", function() { if(!MergeRequest.diffs_loaded) { MergeRequest.loadDiff(); } diff --git a/app/assets/javascripts/tree.js b/app/assets/javascripts/tree.js index 2e9bcc82a2b..1c62751ad25 100644 --- a/app/assets/javascripts/tree.js +++ b/app/assets/javascripts/tree.js @@ -5,21 +5,24 @@ var Tree = { init: function() { - (new Image).src = "ajax-loader-facebook.gif"; - - $('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live("click", function() { - history.pushState({ path: this.path }, '', this.href) + $('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live("click", function() { $("#tree-content-holder").hide("slide", { direction: "left" }, 150) }) - $("#tree-slider tr.tree-item").live('click', function(e){ + $('.project-refs-form').live({ + "ajax:beforeSend": function() { + $("#tree-content-holder").hide("slide", { direction: "left" }, 150); + } + }) + + $("#tree-slider .tree-item").live('click', function(e){ if(e.target.nodeName != "A") { - link = $(this).find("td.tree-item-file-name a"); + link = $(this).find(".tree-item-file-name a"); link.trigger("click"); } }); - $('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live({ + $('#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form').live({ "ajax:beforeSend": function() { $('.tree_progress').addClass("loading"); }, "ajax:complete": function() { $('.tree_progress').removeClass("loading"); } }); diff --git a/app/assets/stylesheets/commits.css.scss b/app/assets/stylesheets/commits.css.scss index a66d521f942..3f325d783d6 100644 --- a/app/assets/stylesheets/commits.css.scss +++ b/app/assets/stylesheets/commits.css.scss @@ -1,45 +1,10 @@ -/* Commit Page */ -body.project-page.commits-page .commit-info{float: right;} -body.project-page.commits-page .commit-info data{ - padding: 4px 10px; - font-size: 11px; -} -body.project-page.commits-page .commit-info data.commit-button{ - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4)); - background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4); - background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4); - background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4); - box-shadow: 0 -1px 0 white inset; - display: block; - border: 1px solid #eee; - border-radius: 5px; - margin-bottom: 2px; - position: relative; - padding-right: 20px; -} +/** + * + * COMMIT SHOw + * + */ -body.project-page.commits-page .commit-button i{ - background: url('images.png') no-repeat -138px -27px; - width: 6px; - height: 9px; - float: right; - position: absolute; - top: 6px; - right: 5px; -} -body.project-page.commits-page .commits-date {display: block; width: 100%; margin-bottom: 20px} -body.project-page.commits-page .commits-date .data {padding: 0} -body.project-page.commits-page a.commit{padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} -body.project-page.commits-page .commits-date a.commit {padding: 10px; border-bottom: none; overflow: hidden; display: block;} -body.project-page.commits-page .commits-date a.commit:last-child{border-bottom: 0} -body.project-page.commits-page .commits-date a.commit img{float: left; margin-right: 10px;} -body.project-page.commits-page .commits-date a.commit span.commit-title{display: block;} -body.project-page.commits-page .commits-date a.commit span.commit-title{margin-bottom: 10px} -body.project-page.commits-page .commits-date a.commit span.commit-author{color: #999; font-weight: normal; font-style: italic;} -body.project-page.commits-page .commits-date a.commit span.commit-author strong{font-weight: bold; font-style: normal;} -/* eo Commit Page */ -/** Commit diff view **/ .diff_file { border:1px solid #CCC; margin-bottom:1em; @@ -72,6 +37,11 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{ border:none; margin:0px; padding:0px; + tr { + td { + font-size:12px; + } + } } .old_line, .new_line { margin:0px; @@ -110,14 +80,6 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{ } } -pre.commit_message { - white-space: pre-wrap; - font-family: "Helvetica", sans-serif; - color: #555; - font-weight:bold; - font-size:15px; -} - /** COMMIT BLOCK **/ .commit-title{display: block;} .commit-title{margin-bottom: 10px} @@ -147,45 +109,28 @@ ul.bordered-list li:last-child { border:none } } } -.per_line_form { - font-family: "Helvetica", sans-serif; - background: #2FA0BB; - - td { - padding:0; - } - - form { - margin:5px; - width: 756px; - border: 1px solid #CCC; - padding: 20px; - background: white; - } -} - tr.line_notes_row { - font-family: "Helvetica", sans-serif; - &:hover { - background:none; - } - td { - margin:0px; - padding:0px; - border-bottom:1px solid #DEE2E3; - - - ul { - display:block; - list-style:none; - margin:0px; - padding:0px; + border-bottom:1px solid #DDD; +} - li { - border-top:1px solid #DEE2E3; - padding:10px; - } - } +/** FLASH **/ +#flash_container { + height:45px; + position:fixed; + z-index:10001; + top:0px; + width:100%; + margin-bottom:15px; + overflow:hidden; + background:white; + cursor:pointer; + border-bottom:1px solid #777; + + h4 { + color:#444; + font-size:22px; + padding-top:5px; + margin:2px; } } diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 44538045171..61780e6869a 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -1,3 +1,6 @@ +@import "bootstrap"; + +/** GITLAB colors **/ $text_color:#222; $lite_text_color: #666; $link_color:#111; @@ -6,10 +9,13 @@ $active_bg_color:#79C3E0; $active_bd_color: #2FA0BB; $border_color:#CCC; $lite_border_color:#EEE; -$app_width:980px; +$min_app_width:980px; +$max_app_width:980px; $app_padding:20px; $bg_color: #FFF; $styled_border_color: #2FA0BB; +$color: "#4BB8D2"; +$blue_link: "#2fa0bb"; /** MIXINS **/ @mixin round-borders-bottom($radius) { @@ -81,36 +87,103 @@ $styled_border_color: #2FA0BB; .no-padding { padding:0 !important; } +.underlined { + border-bottom: 1px solid $border_color; +} + +/** LAYOUT **/ + +.container-fluid { + min-width:$min_app_width; + max-width:$max_app_width; + margin:auto; + margin-top:51px; +} + +.container-fluid > .sidebar { + width: 140px; + border-right: 1px solid $border_color; + height:100%; + min-height:450px; + + .fixed { + position:fixed; + } + + aside a { + display:block; + position:relative; + padding:15px 10px; + margin:10px 0 0 0; + font-size:13px; + font-weight:bold; + color:#444; + } +} + +.container-fluid > .content { + margin-left: 160px; + margin-top:20px; +} + +aside.projects, +aside.project-side +{ + margin-left: 0; + padding-left: 20px; +} -/* General */ +img.avatar { + float:left; + margin-right:15px; + width:40px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} -body.collapsed { - background-color: $bg_color; +img.lil_av { + padding-left: 5px; + position: relative; + top: 3px; +} - #container{ - margin: auto; - margin-top:51px; - width: $app_width; - border-top: 0; - background-color: $bg_color; +.media-grid { + h3, h2 , h4 { + &.media_h { + padding-left:10px; + float:left; + } } } -a { - color: $link_color; +.wll { + background-color: #FFF; + margin-bottom: 10px; + padding: 5px; + min-height: 20px; + border-bottom: 1px solid #eee; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + .author { color: #999; } + &:last-child { border:none } + p { padding-top:5px;} +} + +.author_link { + color: $active_link_color; } -@import "style.scss"; +@import "reset_bootstrap.scss"; +@import "top_panel.scss"; @import "projects.css.scss"; @import "commits.css.scss"; -@import "notes.css.scss"; +@import "tree.scss"; +@import "issues.css.scss"; @import "merge_requests.css.scss"; +@import "notes.css.scss"; +@import "login.scss"; + +/** CODE HIGHTLIGHT **/ @import "highlight.css.scss"; @import "highlight.black.css.scss"; -@import "issues.css.scss"; -@import "commits.css.scss"; -@import "top_panel.scss"; -@import "dashboard.scss"; -@import "tree.scss"; -@import "tags.scss"; diff --git a/app/assets/stylesheets/dashboard.scss b/app/assets/stylesheets/dashboard.scss deleted file mode 100644 index 5e38fcc6d63..00000000000 --- a/app/assets/stylesheets/dashboard.scss +++ /dev/null @@ -1,30 +0,0 @@ -body.dashboard-page h2.icon span{ background-position: 9px -69px; } -body.dashboard-page header{margin-bottom: 0} -body.dashboard-page .news-feed{margin-left: 285px; min-height: 600px; margin-top: 20px; margin-right:2px; padding:20px;} -body.dashboard-page .dashboard-content{ position: relative; float: left; width: 100%; height: 100%; } -body.dashboard-page .news-feed h2{float: left;} - -body.dashboard-page aside{ - 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; - h4{margin: 0; border-bottom: 1px solid #ccc; padding: 20px 20px 20px 0px; font-size: 11px; font-weight: bold; text-transform: uppercase;} - h4 a.button-small{float: right; text-transform: none; border-radius: 4px; margin-right: 2%; margin-top: -4px; display: block;} - .project-list {list-style: none; margin: 0; padding: 0;} - .project-list li a {background: white; color: #{$blue_link}; display: block; border-bottom: 1px solid $lite_border_color; padding: 14px 6% 14px 0px;} - .project-list li a span.project-name{font-size: 14px; display: block; margin-bottom: 8px} - .project-list li a span.time{color: #666; font-weight: normal; font-size: 11px} - .project-list li a span.arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999} -} - -body.dashboard-page .news-feed .project-updates { - margin-bottom: 20px; display: block; width: 100%; - .data{ padding: 0} - a.project-update {padding: 10px; overflow: hidden; display: block;} - a.project-update:last-child{border-bottom: 0} - a.project-update img{float: left; margin-right: 10px;} - a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} - a.project-update span.update-title{margin-bottom: 10px} - a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;} - a.project-update span.update-author strong{font-weight: bold; font-style: normal;} -} -/* eo Dashboard Page */ - diff --git a/app/assets/stylesheets/highlight.black.css.scss b/app/assets/stylesheets/highlight.black.css.scss index e094e48fad5..e63e08c8e94 100644 --- a/app/assets/stylesheets/highlight.black.css.scss +++ b/app/assets/stylesheets/highlight.black.css.scss @@ -1,5 +1,6 @@ .black .highlighttable { background: #333; + td.linenos { border:none; } pre { color: #eee } .highlight { background: #333; border-left:1px solid #555; } diff --git a/app/assets/stylesheets/highlight.css.scss b/app/assets/stylesheets/highlight.css.scss index d65865ecdb2..459ae81c248 100644 --- a/app/assets/stylesheets/highlight.css.scss +++ b/app/assets/stylesheets/highlight.css.scss @@ -25,7 +25,13 @@ td.linenos{ padding:10px 0px 0px 10px; margin-left:0px; } + +.linenodiv pre, .highlight pre{ + margin:0; + padding:0; + background:none; + border:none; } .linenodiv pre { diff --git a/app/assets/stylesheets/issues.css.scss b/app/assets/stylesheets/issues.css.scss index d2341edcf33..ecf1ca01142 100644 --- a/app/assets/stylesheets/issues.css.scss +++ b/app/assets/stylesheets/issues.css.scss @@ -1,84 +1,3 @@ -.issue-number { - float: left; - border-radius: 5px; - text-shadow: none; - background: rgba(0, 0, 0, 0.12); - text-align: center; - padding: 14px 8px; - width: 40px; - margin-right: 10px; - color: #444; -} - -.issues_filter { - margin:10px 0; - .left { - margin-right:15px; - } -} - -.top_panel_issues{ - #issue_search_form { - margin:5px 0; - input { - border:1px solid #D3D3D3; - padding: 3px; - height: 28px; - width: 250px; - -webkit-appearance:none; - box-sizing: border-box; - -moz-box-sizing: border-box; - - &:focus { - border-color:#c2e1ef; - } - } - } -} - -/** ISSUES LIST **/ -.issue .action-links { - display:none; - a { - margin-left:10px; - } -} -.issue:hover .action-links { display:block; } -.issue-show-holder { - width:100%; - .data p { font-size:16px } -} - #issue_assignee_id { width:300px; } - -.issue-form-holder .ui-box .data { - margin: 0; - padding: 0; -} - -body.project-page .merge-request-form-holder table.no-borders tr, -body.project-page .merge-request-form-holder table.no-borders td, -body.project-page .issue-form-holder table.no-borders tr, -body.project-page .issue-form-holder table.no-borders td, -body.project-page .new_snippet table tr, -body.project-page .new_snippet table td, -body.project-page .edit_snippet table tr, -body.project-page .edit_snippet table td -{ - &:hover { - background:none; - } -} - - -#issues-table { - tr { - border-top: 1px solid $lite_border_color; - &:first-child { - border:none; - } - } - -} diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss new file mode 100644 index 00000000000..73ba27ee2d1 --- /dev/null +++ b/app/assets/stylesheets/login.scss @@ -0,0 +1,41 @@ +/* Login Page */ +body.login-page{ padding-top: 10%} + +.login-box{ + width: 304px; + position: relative; + border-radius: 5px; + margin: auto; + padding: 20px; + background: white; +} + +.login-box .login-logo{ + margin: 10px 0 30px 0; + display: block; +} + +.login-box input.text{background-color: #f1f1f1; font-size: 16px; border-radius: 0; padding: 14px 10px; width: 280px} + +.login-box input.text.top{ + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} + +.login-box input.text.bottom{ + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomright: 5px; + -moz-border-radius-bottomleft: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + border-top: 0; + margin-bottom: 20px; +} + +.login-box a.forgot{float: right; padding-top: 6px} + diff --git a/app/assets/stylesheets/merge_requests.css.scss b/app/assets/stylesheets/merge_requests.css.scss index 2b60605b255..9f608c6bfcd 100644 --- a/app/assets/stylesheets/merge_requests.css.scss +++ b/app/assets/stylesheets/merge_requests.css.scss @@ -1,8 +1,3 @@ -// Place all the styles related to the MergeRequests controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ - - .merge-request-form-holder { select { width:300px; diff --git a/app/assets/stylesheets/notes.css.scss b/app/assets/stylesheets/notes.css.scss index 4aba53cfd5c..276fce180b0 100644 --- a/app/assets/stylesheets/notes.css.scss +++ b/app/assets/stylesheets/notes.css.scss @@ -32,13 +32,12 @@ #notes-list .note .delete-note { display:none; } #notes-list .note:hover .delete-note { display:block; } - -body.project-page #notes-list .note {padding: 10px 0; border-bottom: 1px solid #eee; overflow: hidden; display: block;} -body.project-page #notes-list .note img{float: left; margin-right: 10px;} -body.project-page #notes-list .note span.note-title{display: block;} -body.project-page #notes-list .note span.note-title{margin-bottom: 10px} -body.project-page #notes-list .note span.note-author{color: #999; font-weight: normal; font-style: italic;} -body.project-page #notes-list .note span.note-author strong{font-weight: bold; font-style: normal;} +#notes-list .note {padding: 10px 0; border-bottom: 1px solid #eee; overflow: hidden; display: block;} +#notes-list .note img{float: left; margin-right: 10px;} +#notes-list .note span.note-title{display: block;} +#notes-list .note span.note-title{margin-bottom: 10px} +#notes-list .note span.note-author{color: #999; font-weight: normal; font-style: italic;} +#notes-list .note span.note-author strong{font-weight: bold; font-style: normal;} .note .note-title { margin-left:55px; } diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index 4e749ef9d52..ddc21bb9512 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -1,518 +1,193 @@ -body.project-page h2.icon .project-name, body.project-page h2.icon d{border: 1px solid #eee; padding: 5px 30px 5px 10px; border-radius: 5px; position: relative;} -body.project-page h2.icon .project-name i.arrow{float: right; - position: absolute; - right: 10px; - top: 13px; - display: block; - background: url('images.png') no-repeat -97px -29px; - width: 4px; - height: 5px; +.git_url_wrapper { + margin-right:50px } - -body.project-page h2.icon span{ background-position: -78px -68px; } -body.project-page .project-container{ position: relative; float: left; width: 100%; height: 100%; padding-bottom: 10px;} -body.project-page .page-title{margin-bottom: 0} - -body.project-page .project-sidebar { - width: 110px; - left: 0; - top: 0; - height: 100%; - bottom: 0; - position: absolute; - float: left; - display: inline-block; - background: #FFF; - padding: $app_padding; - padding-right:0px; - margin: 0; - border-right: 1px solid $border_color; -} - -body.projects-page input.text.git-url { font-size: 12px; border-radius: 5px; color: #666; box-shadow: 0 1px 2px rgba(0,0,0,.2) inset; padding: 8px 0 8px 30px; margin-bottom: 20px; background: white url('images.png') no-repeat 8px -40px; width: 136px} -body.projects-page input.text.git-url {margin:10px 0 0 } -.git_url_wrapper { margin-right:50px } - -.projects_selector:hover > .project-box{ -moz-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); -webkit-box-shadow:0px 0px 10px rgba(0, 0, 0, .1); box-shadow:0px 0px 10px rgba(0, 0, 0, .1); } - - -/* New project Page */ -.new-project-page .container table{background: white} -body.project-page .project-sidebar aside{width: 109px} -body.project-page .project-sidebar aside a{ - display: block; - position: relative; - padding: 15px 10px; - margin: 10px 0 0 0; - - -} -body.project-page .project-sidebar aside a span.number{float: right; border-radius: 5px; text-shadow: none; background: rgba(0,0,0,.12); text-align: center; padding: 5px 8px; position: absolute; top: 10px; right: 10px} -body.project-page .project-sidebar aside a.current { - color: white; - background: $active_bg_color; - border: 1px solid $active_bd_color; - border-radius:5px; - - - -webkit-border-top-right-radius: 0; - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - margin-right: -1px; -} -body.project-page .project-content{ padding: $app_padding; display: block; margin-left: 130px; min-height: 600px} -body.project-page .project-content h2{ margin-top: 6px} -body.project-page .project-content .button.right{margin-left: 20px} -body.project-page table .commit a{color: #{$blue_link}} -body.project-page table th, body.project-page table td{ border-bottom: 1px solid #DEE2E3;} -body.project-page .fixed{position: fixed; } - - - - -/** File stat **/ .file_stats { span { img { width:14px; float:left; - margin-right: 6px; + margin-right:6px; padding:2px 0; } } } -.round-borders { - @include round-borders-all(4px); - padding: 4px 0px; +.handle:hover { + cursor:move; } -table.round-borders { +/* Project Dashboard Page */ +.news-feed h2 { float:left; - text-align: left; } - - - -/** PROJECTS **/ -input.ssh_project_url { - padding:5px; - margin:0px; - float:right; - width:400px; - text-align:center; +.news-feed .project-updates { + margin-bottom:20px; + display:block; + width:100%; } - -#projects-list .project { - height:50px; +.news-feed .project-updates .data { + padding:0 } - -#tree-slider .tree-item, -#projects-list .project, -#snippets-table .snippet, -#issues-table .issue{ - cursor:pointer; +.news-feed .project-updates a.project-update { + padding:10px; + border-bottom:1px solid #eee; + overflow:hidden; + display:block; } - -.clear { - clear: both; +.news-feed .project-updates a.project-update:last-child { + border-bottom:0 } - - -/** Buttons **/ -.lbutton, -.lite_button { - display:block; +.news-feed .project-updates a.project-update img { float:left; - margin: 0px 5px 0px 0px; - padding:5px 10px; - - font-family:"Helvetica Neue", Arial, Helvetica, sans-serif; - border:1px solid #D3D3D3; - background:white; - font-size:12px !important; - line-height:130%; - text-decoration:none; - font-weight:bold; - color:#565656; - cursor:pointer; - - &:hover { - border:1px solid #C2E1EF; - color: #0099FF; - } - - &.hm { - margin: 0px 0px; - } - - &.vm { - margin: 5px 0px; - } + margin-right:10px; } - -#user_projects_limit{ - width: 60px; +span.update-title, +span.update-author { + display:block; } - -.handle:hover{ - cursor: move; +span.update-title { + margin-bottom:10px } - -.project-refs-form { - span { - background: none !important; - position:static !important; - width:auto !important; - height: auto !important; - } +span.update-author { + color:#999; + font-weight:normal; + font-style:italic; } - -.project-refs-select { - width:200px; +span.update-author strong { + font-weight:bold; + font-style: normal; } - -.filter .left { margin-right:15px; } - -body.project-page table .commit { - a.tree-commit-link { - color:#444; - &:hover { - text-decoration:underline; - } - } +/** UPDATE ITEM **/ +.update-data { + padding:0 } - -/** NEW PROJECT **/ -.new-project-hodler { - .icon span { background-position: -31px -70px; } - td { border-bottom: 1px solid #DEE2E3; } +.update-data { + width:100%; } - -/** Feed entry **/ -.commit, -.snippet, -.message { - .title { - color:#666; - a { color:#666 !important; } - p { margin-top:0px; } - } - .author { color: #999 } +a.update-item { + padding:10px; + border-bottom:1px solid #eee; + overflow:hidden; + display:block; } - -/** JQuery UI **/ -.ui-autocomplete { @include round-borders-all(5px); } -.ui-menu-item { cursor: pointer } -.ui-selectmenu{ - @include round-borders-all(4px); +a.update-item:last-child { + border-bottom:0 +} +a.update-item img { + float:left; margin-right:10px; - font-size:1.5em; - height:auto; - font-weight:bold; - .ui-selectmenu-status { - padding:3px 10px; - } } - -/** Snippets **/ -.new_snippet textarea, -.edit_snippet textarea { - height:300px; - padding: 8px; - width: 95%; -} -.snippet .action-links { - display:none; - a { - margin-left:10px; - } +span.update-title, +span.update-author { + display:block; } -.snippet:hover .action-links { display:block; } - - -#holder { - background:#FAFAFA; - border: 1px solid #EEE; - cursor: move; - height: 70%; - overflow: hidden; +a.update-item span.update-title { + margin-bottom:10px } - -/* Project Dashboard Page */ -html, body { height: 100%; } - -body.dashboard.project-page .news-feed h2{float: left;} -body.dashboard.project-page .news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;} -body.dashboard.project-page .news-feed .project-updates .data{ padding: 0} -body.dashboard.project-page .news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} -body.dashboard.project-page .news-feed .project-updates a.project-update:last-child{border-bottom: 0} -body.dashboard.project-page .news-feed .project-updates a.project-update img{float: left; margin-right: 10px;} -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px} -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;} -body.dashboard.project-page .news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;} -/* eo Dashboard Page */ - - -/** Merge requests */ -body.project-page .merge-request-commits {margin-bottom: 20px; display: block; width: 100%;} -body.project-page .merge-request-commits .data{ padding: 0} -body.project-page .merge-request-commits a.commit {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} -body.project-page .merge-request-commits a.commit:last-child{border-bottom: 0} -body.project-page .merge-request-commits a.commit img{float: left; margin-right: 10px;} -body.project-page .merge-request-commits a.commit span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} -body.project-page .merge-request-commits a.commit span.update-title{margin-bottom: 10px} -body.project-page .merge-request-commits a.commit span.update-author{color: #999; font-weight: normal; font-style: italic;} -body.project-page .merge-request-commits a.commit span.update-author strong{font-weight: bold; font-style: normal;} - - -/** Update entry **/ -.update-data { padding: 0 } -.update-data { width:100%; } -.update-data.ui-box .data { padding:0; } -a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} -a.update-item:last-child{border-bottom: 0} -a.update-item img{float: left; margin-right: 10px;} -a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} -a.update-item span.update-title{margin-bottom: 10px} -a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;} -a.update-item span.update-author strong{font-weight: bold; font-style: normal;} - - -body.project-page .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; } - -body.projects-page input.text.git-url.project_list_url { width:165px; } - - -body.project-page table.no-borders th { - background:none; - border-bottom:1px solid #CCC; - color:#333; +a.update-item span.update-author { + color:#999; + font-weight:normal; + font-style:italic; } - -body.project-page table.no-borders tr, -body.project-page table.no-borders td{ - border:none; +a.update-item span.update-author strong { + font-weight:bold; + font-style:normal; } - +/** END UPDATE ITEM **/ .ajax-tab-loading { padding:40px; display:none; } - -#tree-content-holder { float:left; width:100%; } - +#tree-content-holder { + float:left; + width:100%; +} #tree-readme-holder { float:left; width:100%; - .readme { @include round-borders-all(4px); - padding: 4px 15px; - background:#F7F7F7; + padding:4px 15px; + background: #F7F7F7; } } - - - -/* Commit Page */ -.entity-info {float: right;} -.entity-button{ - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4)); - background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4); - background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4); - background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4); - box-shadow: 0 -1px 0 white inset; - display: block; - border: 1px solid #eee; - border-radius: 5px; - margin-bottom: 2px; - position: relative; - padding: 4px 10px; - font-size: 11px; - padding-right: 20px; +.dashboard-loader { + float:left; + margin:10px; + display:none; } - -.entity-button i{ - background: url('images.png') no-repeat -138px -27px; - width: 6px; - height: 9px; - float: right; - position: absolute; - top: 6px; - right: 5px; -} -.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;} - -h4.dash-tabs { - margin: 0; - border-bottom: 1px solid #ccc; - padding: 10px 10px; - font-size: 11px; - padding-left:20px; - font-weight: bold; text-transform: uppercase; - background: #F7F7F7; - margin-bottom:20px; - height:13px; - +.user-mention { + color:#2FA0BB; + font-weight:bold; } -.dash-button { - border-right: 1px solid #ddd; - background:none; - padding: 10px 15px; - float:left; +a.project-update.titled { position:relative; - top:-10px; - left:0px; - height:13px; - - &:first-child { - border-left: 1px solid #ddd; - } - &.active { - background: #eaeaea; + padding-left:35% !important; + .title-block { + padding:10px; + width:35%; + position:absolute; + left:0; + top:0; } } - - -.dashboard-loader { - float:right; - margin-right:30px; - display:none; +/** + * Project graph + */ +#holder { + cursor: move; + height: 70%; + overflow: hidden; } -.merge-tabs { - margin: 0; - border: 1px solid #ccc; - padding: 5px; - font-size: 12px; - background: #F7F7F7; - margin-bottom:20px; - height:26px; - - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - - .tab { - font-weight: bold; - border-right: 1px solid #ddd; - background:none; - padding: 10px; - min-width:60px; - float:left; - position:relative; - top:-5px; - left:-5px; - height:16px; - padding-left:34px; - - span { - width: 20px; - height: 20px; - display: inline-block; - position: absolute; - left: 8px; - top: 8px; - } - - &.active { - background: #eaeaea; - } +/** Branch/tag selector **/ +.project-refs-form { + margin:0; + span { + background:none !important; + position:static !important; + width:auto !important; + height:auto !important; } } -.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; } -.activities-tab span { background: url("images.png") no-repeat -161px -1px; } -.stat-tab span, -.team-tab span, -.snippets-tab span { background: url("images.png") no-repeat -38px -77px; } -.files-tab span { background: url("images.png") no-repeat -112px -23px; } - -.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; } -.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; } -.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; } -.merge-tabs .dashboard-loader { padding:8px; } - -.user-mention { - color: #2FA0BB; - font-weight: bold; -} - -.author { - color: #999; -} - - -.red-button{ - border-radius: 5px; - font-size: 12px; - font-weight: bold; - padding: 5px 17px; - border: 1px solid #999; - color: #666; - display: inline-block; - box-shadow: 0 1px 2px rgba(0,0,0,.3); - background: #D12F19; - color: white; -} - -.positive-button{ - border-radius: 5px; - font-size: 12px; - font-weight: bold; - padding: 5px 17px; - border: 1px solid #999; - color: #666; - display: inline-block; - box-shadow: 0 1px 2px rgba(0,0,0,.3); - background: #4A2; - color: white; +.project-refs-select { + width:120px; } +.project-refs-form .chzn-container { + position:relative; + top: -5px; + left: -11px; -.dark_scheme_box { - padding:20px 0; + .chzn-drop { + margin:7px 0; + border: 1px solid #CCC; + min-width: 300px; - label { - float:left; - box-shadow: 0 0px 5px rgba(0,0,0,.3); + .chzn-results { + max-height:300px; + } - img { + .chzn-search input { + min-width:200px; } } -} -a.project-update.titled { - position: relative; - padding-left: 235px !important; + .chzn-single { + background:#ddd; + //border:none; + //box-shadow:none; - .title-block { - padding: 10px; - width: 205px; - position: absolute; - left: 0; - top: 0; - } -} + div { + background:transparent; + border-left:none; + } -.add_new { - float: right; - background: #A6B807; - color: white; - padding: 4px 10px; - @include round-borders-all(4px); - font-size:11px; - margin: 10px 0; + span { + font-weight: normal; + } + } } - - -.new-project-hodler { - padding:20px; -} diff --git a/app/assets/stylesheets/projects.css.scss.bak b/app/assets/stylesheets/projects.css.scss.bak new file mode 100644 index 00000000000..ba69bf85570 --- /dev/null +++ b/app/assets/stylesheets/projects.css.scss.bak @@ -0,0 +1,384 @@ +.git_url_wrapper { margin-right:50px } + +.sidebar aside a{ + display: block; + position: relative; + padding: 15px 10px; + margin: 10px 0 0 0; + + span.number{ + float: right; border-radius: 5px; text-shadow: none; background: rgba(0,0,0,.12); text-align: center; padding: 5px 8px; position: absolute; top: 10px; right: 10px; + } + &.current { + color: white; + background: $active_bg_color; + border: 1px solid $active_bd_color; + border-radius:5px; + + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: -1px; + } +} + +body table .commit a{color: #{$blue_link}} +body table th, body table td{ border-bottom: 1px solid #DEE2E3;} +body .fixed{position: fixed; } + +/** File stat **/ +.file_stats { + span { + img { + width:14px; + float:left; + margin-right: 6px; + padding:2px 0; + } + } +} + +.round-borders { + @include round-borders-all(4px); + padding: 4px 0px; +} + +table.round-borders { + float:left; + text-align: left; +} + + + +/** PROJECTS **/ +input.ssh_project_url { + padding:5px; + margin:0px; + float:right; + width:400px; + text-align:center; +} + +#projects-list .project { + height:50px; +} + +#tree-slider .tree-item, +#projects-list .project, +#snippets-table .snippet, +#issues-table .issue{ + cursor:pointer; +} + +.clear { + clear: both; +} + + + +#user_projects_limit{ + width: 60px; +} + +.handle:hover{ + cursor: move; +} + +.project-refs-form { + span { + background: none !important; + position:static !important; + width:auto !important; + height: auto !important; + } +} + +.project-refs-select { + width:200px; +} + +.filter .left { margin-right:15px; } + +body table .commit { + a.tree-commit-link { + color:#444; + &:hover { + text-decoration:underline; + } + } +} + +/** NEW PROJECT **/ +.new-project-hodler { + .icon span { background-position: -31px -70px; } + td { border-bottom: 1px solid #DEE2E3; } +} + +/** Feed entry **/ +.commit, +.snippet, +.message { + .title { + color:#666; + a { color:#666 !important; } + p { margin-top:0px; } + } + .author { color: #999 } +} + +/** JQuery UI **/ +.ui-autocomplete { @include round-borders-all(5px); } +.ui-menu-item { cursor: pointer } +.ui-selectmenu{ + @include round-borders-all(4px); + margin-right:10px; + font-size:1.5em; + height:auto; + font-weight:bold; + .ui-selectmenu-status { + padding:3px 10px; + } +} + +#holder { + background:#FAFAFA; + border: 1px solid #EEE; + cursor: move; + height: 70%; + overflow: hidden; +} + +/* Project Dashboard Page */ +html, body { height: 100%; } + +.news-feed h2{float: left;} +.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;} +.news-feed .project-updates .data{ padding: 0} +.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} +.news-feed .project-updates a.project-update:last-child{border-bottom: 0} +.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;} +.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} +.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px} +.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;} +.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;} +/* eo Dashboard Page */ + + +/** Update entry **/ +.update-data { padding: 0 } +.update-data { width:100%; } +.update-data.ui-box .data { padding:0; } +a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} +a.update-item:last-child{border-bottom: 0} +a.update-item img{float: left; margin-right: 10px;} +a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} +a.update-item span.update-title{margin-bottom: 10px} +a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;} +a.update-item span.update-author strong{font-weight: bold; font-style: normal;} + + +body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; } + +body.projects-page input.text.git-url.project_list_url { width:165px; } + + +body table.no-borders th { + background:none; + border-bottom:1px solid #CCC; + color:#333; +} + +body table.no-borders tr, +body table.no-borders td{ + border:none; +} + +.ajax-tab-loading { + padding:40px; + display:none; +} + +#tree-content-holder { float:left; width:100%; } + +#tree-readme-holder { + float:left; + width:100%; + + .readme { + @include round-borders-all(4px); + padding: 4px 15px; + background:#F7F7F7; + } +} + + + +/* Commit Page */ +.entity-info {float: right;} +.entity-button{ + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4)); + background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4); + background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4); + background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4); + box-shadow: 0 -1px 0 white inset; + display: block; + border: 1px solid #eee; + border-radius: 5px; + margin-bottom: 2px; + position: relative; + padding: 4px 10px; + font-size: 11px; + padding-right: 20px; +} + +.entity-button i{ + background: url('images.png') no-repeat -138px -27px; + width: 6px; + height: 9px; + float: right; + position: absolute; + top: 6px; + right: 5px; +} +.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;} + +h4.dash-tabs { + margin: 0; + border-bottom: 1px solid #ccc; + padding: 10px 10px; + font-size: 11px; + padding-left:20px; + font-weight: bold; text-transform: uppercase; + background: #F7F7F7; + margin-bottom:20px; + height:13px; + +} + +.dash-button { + border-right: 1px solid #ddd; + background:none; + padding: 10px 15px; + float:left; + position:relative; + top:-10px; + left:0px; + height:13px; + + &:first-child { + border-left: 1px solid #ddd; + } + &.active { + background: #eaeaea; + } +} + + +.dashboard-loader { + float:right; + margin-right:30px; + display:none; +} + + +.merge-tabs { + margin: 0; + border: 1px solid #ccc; + padding: 5px; + font-size: 12px; + background: #F7F7F7; + margin-bottom:20px; + height:26px; + + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + + .tab { + font-weight: bold; + border-right: 1px solid #ddd; + background:none; + padding: 10px; + min-width:60px; + float:left; + position:relative; + top:-5px; + left:-5px; + height:16px; + padding-left:34px; + + span { + width: 20px; + height: 20px; + display: inline-block; + position: absolute; + left: 8px; + top: 8px; + } + + &.active { + background: #eaeaea; + } + } +} +.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; } +.activities-tab span { background: url("images.png") no-repeat -161px -1px; } +.stat-tab span, +.team-tab span, +.snippets-tab span { background: url("images.png") no-repeat -38px -77px; } +.files-tab span { background: url("images.png") no-repeat -112px -23px; } + +.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; } +.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; } +.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; } +.merge-tabs .dashboard-loader { padding:8px; } + +.user-mention { + color: #2FA0BB; + font-weight: bold; +} + +.author { + color: #999; +} + + + + +.dark_scheme_box { + padding:20px 0; + + label { + float:left; + box-shadow: 0 0px 5px rgba(0,0,0,.3); + + img { + } + } +} + +a.project-update.titled { + position: relative; + padding-left: 235px !important; + + .title-block { + padding: 10px; + width: 205px; + position: absolute; + left: 0; + top: 0; + } +} + +.add_new { + float: right; + background: #A6B807; + color: white; + padding: 4px 10px; + @include round-borders-all(4px); + font-size:11px; + margin: 10px 0; +} diff --git a/app/assets/stylesheets/projects.css.scss~ b/app/assets/stylesheets/projects.css.scss~ new file mode 100644 index 00000000000..4bdf5dee2f5 --- /dev/null +++ b/app/assets/stylesheets/projects.css.scss~ @@ -0,0 +1,385 @@ +.git_url_wrapper { margin-right:50px } + +.sidebar aside a{ + display: block; + position: relative; + padding: 15px 10px; + margin: 10px 0 0 0; + + font-size:13px; + font-weight:bold; + color:#333; + + &.current { + color: white; + background: $active_bg_color; + border: 1px solid $active_bd_color; + border-radius:5px; + + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: -1px; + } +} + +body table .commit a{color: #{$blue_link}} +body table th, body table td{ border-bottom: 1px solid #DEE2E3;} +body .fixed{position: fixed; } + +/** File stat **/ +.file_stats { + span { + img { + width:14px; + float:left; + margin-right: 6px; + padding:2px 0; + } + } +} + +.round-borders { + @include round-borders-all(4px); + padding: 4px 0px; +} + +table.round-borders { + float:left; + text-align: left; +} + + + +/** PROJECTS **/ +input.ssh_project_url { + padding:5px; + margin:0px; + float:right; + width:400px; + text-align:center; +} + +#projects-list .project { + height:50px; +} + +#tree-slider .tree-item, +#projects-list .project, +#snippets-table .snippet, +#issues-table .issue{ + cursor:pointer; +} + +.clear { + clear: both; +} + + + +#user_projects_limit{ + width: 60px; +} + +.handle:hover{ + cursor: move; +} + +.project-refs-form { + span { + background: none !important; + position:static !important; + width:auto !important; + height: auto !important; + } +} + +.project-refs-select { + width:200px; +} + +.filter .left { margin-right:15px; } + +body table .commit { + a.tree-commit-link { + color:#444; + &:hover { + text-decoration:underline; + } + } +} + +/** NEW PROJECT **/ +.new-project-hodler { + .icon span { background-position: -31px -70px; } + td { border-bottom: 1px solid #DEE2E3; } +} + +/** Feed entry **/ +.commit, +.snippet, +.message { + .title { + color:#666; + a { color:#666 !important; } + p { margin-top:0px; } + } + .author { color: #999 } +} + +/** JQuery UI **/ +.ui-autocomplete { @include round-borders-all(5px); } +.ui-menu-item { cursor: pointer } +.ui-selectmenu{ + @include round-borders-all(4px); + margin-right:10px; + font-size:1.5em; + height:auto; + font-weight:bold; + .ui-selectmenu-status { + padding:3px 10px; + } +} + +#holder { + background:#FAFAFA; + border: 1px solid #EEE; + cursor: move; + height: 70%; + overflow: hidden; +} + +/* Project Dashboard Page */ +html, body { height: 100%; } + +.news-feed h2{float: left;} +.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;} +.news-feed .project-updates .data{ padding: 0} +.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} +.news-feed .project-updates a.project-update:last-child{border-bottom: 0} +.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;} +.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} +.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px} +.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;} +.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;} +/* eo Dashboard Page */ + + +/** Update entry **/ +.update-data { padding: 0 } +.update-data { width:100%; } +.update-data.ui-box .data { padding:0; } +a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} +a.update-item:last-child{border-bottom: 0} +a.update-item img{float: left; margin-right: 10px;} +a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;} +a.update-item span.update-title{margin-bottom: 10px} +a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;} +a.update-item span.update-author strong{font-weight: bold; font-style: normal;} + + +body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; } + +body.projects-page input.text.git-url.project_list_url { width:165px; } + + +body table.no-borders th { + background:none; + border-bottom:1px solid #CCC; + color:#333; +} + +body table.no-borders tr, +body table.no-borders td{ + border:none; +} + +.ajax-tab-loading { + padding:40px; + display:none; +} + +#tree-content-holder { float:left; width:100%; } + +#tree-readme-holder { + float:left; + width:100%; + + .readme { + @include round-borders-all(4px); + padding: 4px 15px; + background:#F7F7F7; + } +} + + + +/* Commit Page */ +.entity-info {float: right;} +.entity-button{ + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4)); + background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4); + background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4); + background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4); + box-shadow: 0 -1px 0 white inset; + display: block; + border: 1px solid #eee; + border-radius: 5px; + margin-bottom: 2px; + position: relative; + padding: 4px 10px; + font-size: 11px; + padding-right: 20px; +} + +.entity-button i{ + background: url('images.png') no-repeat -138px -27px; + width: 6px; + height: 9px; + float: right; + position: absolute; + top: 6px; + right: 5px; +} +.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;} + +h4.dash-tabs { + margin: 0; + border-bottom: 1px solid #ccc; + padding: 10px 10px; + font-size: 11px; + padding-left:20px; + font-weight: bold; text-transform: uppercase; + background: #F7F7F7; + margin-bottom:20px; + height:13px; + +} + +.dash-button { + border-right: 1px solid #ddd; + background:none; + padding: 10px 15px; + float:left; + position:relative; + top:-10px; + left:0px; + height:13px; + + &:first-child { + border-left: 1px solid #ddd; + } + &.active { + background: #eaeaea; + } +} + + +.dashboard-loader { + float:right; + margin-right:30px; + display:none; +} + + +.merge-tabs { + margin: 0; + border: 1px solid #ccc; + padding: 5px; + font-size: 12px; + background: #F7F7F7; + margin-bottom:20px; + height:26px; + + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + + .tab { + font-weight: bold; + border-right: 1px solid #ddd; + background:none; + padding: 10px; + min-width:60px; + float:left; + position:relative; + top:-5px; + left:-5px; + height:16px; + padding-left:34px; + + span { + width: 20px; + height: 20px; + display: inline-block; + position: absolute; + left: 8px; + top: 8px; + } + + &.active { + background: #eaeaea; + } + } +} +.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; } +.activities-tab span { background: url("images.png") no-repeat -161px -1px; } +.stat-tab span, +.team-tab span, +.snippets-tab span { background: url("images.png") no-repeat -38px -77px; } +.files-tab span { background: url("images.png") no-repeat -112px -23px; } + +.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; } +.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; } +.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; } +.merge-tabs .dashboard-loader { padding:8px; } + +.user-mention { + color: #2FA0BB; + font-weight: bold; +} + +.author { + color: #999; +} + + + + +.dark_scheme_box { + padding:20px 0; + + label { + float:left; + box-shadow: 0 0px 5px rgba(0,0,0,.3); + + img { + } + } +} + +a.project-update.titled { + position: relative; + padding-left: 235px !important; + + .title-block { + padding: 10px; + width: 205px; + position: absolute; + left: 0; + top: 0; + } +} + +.add_new { + float: right; + background: #A6B807; + color: white; + padding: 4px 10px; + @include round-borders-all(4px); + font-size:11px; + margin: 10px 0; +} diff --git a/app/assets/stylesheets/reset_bootstrap.scss b/app/assets/stylesheets/reset_bootstrap.scss new file mode 100644 index 00000000000..a744040fb45 --- /dev/null +++ b/app/assets/stylesheets/reset_bootstrap.scss @@ -0,0 +1,38 @@ +a { + color: $link_color; + &:hover { + text-decoration:none; + color: $active_link_color; + } +} + +.entry { + position: relative; + padding: 7px 15px; + margin-bottom: 18px; + color: #404040; + background-color: #eedc94; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); + background-image: -moz-linear-gradient(top, #fceec1, #eedc94); + background-image: -ms-linear-gradient(top, #fceec1, #eedc94); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); + background-image: -o-linear-gradient(top, #fceec1, #eedc94); + background-image: linear-gradient(top, #fceec1, #eedc94); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCEEC1', endColorstr='#FFEEDC94', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #eedc94 #eedc94 #e4c652; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) fadein(rgba(0, 0, 0, 0.1), 15%); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + background:#F1F1F1; + border-color:#ccc; +} diff --git a/app/assets/stylesheets/style.scss b/app/assets/stylesheets/style.scss deleted file mode 100644 index 4bb5fef9269..00000000000 --- a/app/assets/stylesheets/style.scss +++ /dev/null @@ -1,802 +0,0 @@ -/* HTML5 โฐ Boilerplate - * ==|== normalize ========================================================== - */ - -article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } -audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } -audio:not([controls]) { display: none; } -[hidden] { display: none; } - -html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } -body { margin: 0; font-size: 13px; line-height: 1.231; } -body, button, input, select, textarea { - font-family: "helvetica", "arial", "freesans", "clean", sans-serif; -color: #222; } - -::-moz-selection { background: #79c3e0; color: #fff; text-shadow: none; } -::selection { background: #79c3e0; color: #fff; text-shadow: none; } - -a { color: #00e; } -a:hover { color: #06e; } -a:focus { outline: thin dotted; } -a:hover, a:active { outline: 0; } - -abbr[title] { border-bottom: 1px dotted; } -b, strong { font-weight: bold; } -blockquote { margin: 1em 40px; } -dfn { font-style: italic; } -hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } -ins { background: #ff9; color: #000; text-decoration: none; } -mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; } -pre, code, kbd, samp { font-family: monospace, monospace; _font-family: 'courier new', monospace; font-size: 1em; } -pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } -q { quotes: none; } -q:before, q:after { content: ""; content: none; } -small { font-size: 85%; } -sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } -sup { top: -0.5em; } -sub { bottom: -0.25em; } -ul, ol { margin: 1em 0; padding: 0 0 0 40px; } -dd { margin: 0 0 0 40px; } -nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; } -img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; } -svg:not(:root) { overflow: hidden; } -figure { margin: 0; } - -form { margin: 0; } -fieldset { border: 0; margin: 0; padding: 0; } -label { cursor: pointer; } -legend { border: 0; *margin-left: -7px; padding: 0; } -button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; } -button, input { line-height: normal; *overflow: visible; } -table button, table input { *overflow: auto; } -button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } -input[type="checkbox"], input[type="radio"] { box-sizing: border-box; } -input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; } -input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } -button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } -textarea { overflow: auto; vertical-align: top; resize: vertical; } -input:valid, textarea:valid { } -input:invalid, textarea:invalid { background-color: #f0dddd; } - -table { border-collapse: collapse; border-spacing: 0; } -td { vertical-align: top; } - -/* ==|== primary styles ===================================================== - Author: Ricardo Rauch - ========================================================================== */ - -/* 960gs */ -.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} -/* eo 960gs*/ - -/* Vars */ -$color: "#4BB8D2"; -$blue_link: "#2fa0bb"; -/* eo Vars */ - -html{ -webkit-font-smoothing:antialiased; } -body { - font-size: 12px; - background-color: #FFFFFF; -} -a{text-decoration: none; font-weight: bold; color: #444} -a:hover{color: #555} -/* Typography */ -h1,h2,h3,h4,h5{font-weight: normal; color: #666} -h2{margin: 1.5em 0} -/* eo Typography */ - -/* Forms */ -input[type="text"]:focus, input[type="password"]:focus { outline: none; } -input.text{border: 1px solid #ccc; border-radius: 4px; display: block; padding: 10px} - -.form-row{ - padding: 0px 0px 10px 0px; -} - -.form-row label{ - font-weight:bold; - display: inline-block; - padding: 0px 0px 5px 0px; -} - -/* eo Forms */ - -/* Tables */ -table {width:100%; border: 1px solid #DEE2E3; margin-bottom: 20px} -table thead{ - -webkit-border-top-left-radius: 5px; - -webkit-border-top-right-radius: 5px; - -moz-border-radius-topleft: 5px; - -moz-border-radius-topright: 5px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -table thead th{ - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); - margin: 0; - font-weight: normal; - font-weight: bold; - text-align: left; - color: #97A0A5; -} -td, th{ padding: .9em 1em; vertical-align: middle; } - -table thead .image{width:100px} -.listed_items tr.odd:hover{background-color:#FFFFCF} -/* eo Tables */ - -/* Buttons */ -.grey-button{ - border-radius: 5px; - font-size: 12px; - font-weight: bold; - padding: 5px 17px; - border: 1px solid #999; - color: #666; - display: inline-block; - box-shadow: 0 1px 2px rgba(0,0,0,.3); - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5)); - background-image: -webkit-linear-gradient(#f7f7f7 7.6%, #d5d5d5); - background-image: -moz-linear-gradient(#f7f7f7 7.6%, #d5d5d5); - background-image: -o-linear-gradient(#f7f7f7 7.6%, #d5d5d5); -} - -a.button, input.button { - font-weight: bold; - padding: 10px 20px; - text-align: center; - display: inline-block; - border-radius: 5px; - color: #578E91; - font-size: 12px; - text-transform: uppercase; - border: 1px solid #8CE2E6; - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbf5f6), to(#c5eef0)); - background-image: -webkit-linear-gradient(#dbf5f6 79.4%, #c5eef0); - background-image: -moz-linear-gradient(#dbf5f6 79.4%, #c5eef0); - background-image: -o-linear-gradient(#dbf5f6 79.4%, #c5eef0); -} - -input.button{margin-bottom: 1.5em} - -.button:hover {color: rgba(0,0,0,.8)} - -.button.green {margin-right: 0; } - -.button.yellow{ - color: #908054; - border-color: #DDCDA1; - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #FFEFC3), to(#F3E3B7)); - background-image: -webkit-linear-gradient(#FFEFC3 79.4%, #F3E3B7); - background-image: -moz-linear-gradient(#FFEFC3 79.4%, #F3E3B7); - background-image: -o-linear-gradient(#FFEFC3 79.4%, #F3E3B7); -} - -.button.blue{ - color: #417E97; - border-color: #b2cdec; - background-image: -webkit-gradient(linear, 0 0, 0 34, color-stop(0.794, #dbe8f6), to(#c7daf1)); - background-image: -webkit-linear-gradient(#dbe8f6 79.4%, #c7daf1); - background-image: -moz-linear-gradient(#dbe8f6 79.4%, #c7daf1); - background-image: -o-linear-gradient(#dbe8f6 79.4%, #c7daf1); -} - -.button-small{ text-shadow: none; padding: 4px 10px; } -.button-green{background: #A6B807; color: white} - -/* eo Buttons */ - -/* UI Box */ -//.ui-box{border: 1px solid #DEDFE1; float: left; border-radius: 5px} -.ui-box{float: left;} -.ui-box h3{ - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); - background:none; - margin: 0; - padding: 1em; - font-size: 12px; - font-weight: normal; - font-weight: bold; - font-size: 16px; - border-bottom: 1px solid #DEDFE1; - -webkit-border-top-left-radius: 5px; - -webkit-border-top-right-radius: 5px; - -moz-border-radius-topleft: 5px; - -moz-border-radius-topright: 5px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -.ui-box.ui-box-small h3{ - padding: 8px 10px; - font-size: 12px; -} - -.ui-box .data{padding: .5em 1em} - -.ui-box .buttons{ - padding: 1em; - border-top:1px solid $lite_border_color; -} - -.ui-box .buttons .button{padding: 8px 9px; font-size: 11px} - -.ui-box.hover:hover{box-shadow: 0 0 10px rgba(0,0,0,.1); border: 1px solid #ccc; - - -webkit-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715); - -moz-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715); - -o-transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715); - transition: all 200ms cubic-bezier(0.470, 0.000, 0.745, 0.715); -} - -/* eo UI Box */ - -/* Login Page */ -body.login-page{background-color: #f1f1f1; padding-top: 10%} - -.login-box{ - width: 304px; - position: relative; - border-radius: 5px; - margin: auto; - padding: 20px; - background: white; - box-shadow: rgba(0, 0, 0, 0.07) 0 1px 0,white 0 2px 0,rgba(0, 0, 0, 0.07) 0 3px 0,white 0 4px 0, rgba(0, 0, 0, 0.07) 0 5px 0; -} - -.login-box .login-logo{ - margin: 10px 0 30px 0; - display: block; -} - -.login-box input.text{background-color: #f1f1f1; font-size: 16px; border-radius: 0; padding: 14px 10px; width: 280px} - -.login-box input.text.top{ - -webkit-border-top-left-radius: 5px; - -webkit-border-top-right-radius: 5px; - -moz-border-radius-topleft: 5px; - -moz-border-radius-topright: 5px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -.login-box input.text.bottom{ - -webkit-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - -moz-border-radius-bottomright: 5px; - -moz-border-radius-bottomleft: 5px; - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - border-top: 0; - margin-bottom: 20px; -} - -.login-box a.forgot{float: right; padding-top: 6px} - -/* Icons */ -.directory, .file{ - display: inline-block; - margin-right: 10px; - width: 14px; -} - -.directory{ - background: url('images.png') no-repeat -73px -26px; - height: 11px; - margin-bottom: -1px; -} - -.file{ - background: url('images.png') no-repeat -114px -24px; - height: 16px; - margin-bottom: -3px; -} - -/* eo Icons*/ - -/* Errors */ -#error_explanation{background: #ffe5eb; padding: 20px; margin-bottom: 20px; border-radius: 5px} -#error_explanation h2{margin: 0; margin-bottom: 20px; color: red} -#error_explanation ul li{margin-bottom: 10px} -#error_explanation ul li:last-child{margin-bottom: 0} -.field_with_errors { - input[type="text"], - input[type="password"], - textarea - { - border: 1px solid #D30 !important; - } -} -/* eo Errors */ - -/* Notices */ -#notice{background: #dfffe1; padding: 20px; margin-bottom: 20px; border-radius: 5px; color: green; font-size: 1.3em;} -/* eo Notices */ - -/* InfoBlock */ -#infoblock{ - background: #eeeeee; - padding: 20px; - margin-bottom: 20px; - border-radius: 5px; -} -/* eo InfoBlock */ - -/* Header */ -header{ - background: #474D57 url('bg-header.png') repeat-x bottom; - z-index: 10000; - height: 44px; - padding: 10px 2% 6px 2%; -} -header a:hover{color: #f1f1f1} -header h1{ - width: 65px; -} -header h1.logo{margin: 0; padding: 0} -header h1.logo a{ - background: url('images.png') no-repeat -3px -7px; - width: 65px; - height: 26px; - margin: 5px 0; - padding: 0; - display: block; - float: left; - text-indent: -1000em; -} - -header nav{border-radius: 4px; box-shadow: 0 1px 2px black; width: 294px; margin: auto; - background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#31363e)); - background-image: -webkit-linear-gradient(#595d63 6.6%, #31363e); - background-image: -moz-linear-gradient(#595d63 6.6%, #31363e); - background-image: -o-linear-gradient(#595d63 6.6%, #31363e); - margin-top: 2px; - height:30px -} -header nav.shorter_nav{ - width: 207px; -} -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} -header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;} -header nav a:last-child {border: 0; box-shadow: none} -header nav a:hover, header nav a.current{ - background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #595d63), to(#2c2f35)); - background-image: -webkit-linear-gradient(#595d63 6.6%, #2c2f35); - background-image: -moz-linear-gradient(#595d63 6.6%, #202227); - background-image: -o-linear-gradient(#595d63 6.6%, #202227); -} - -header nav a:active{ - box-shadow: 0 1px 4px rgba(0,0,0,.8) inset; -} - -header nav a.dashboard { - -webkit-border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -moz-border-radius-topleft: 4px; - -moz-border-radius-bottomleft: 4px; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -header nav a.last_elem{ - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -header .search{ display: inline-block; float: right; margin-right: 90px} - -header nav a span{width: 20px; height: 20px; display: inline-block; background: red; position: absolute; left: 8px; top: 6px;} - -header nav a.dashboard span{background: url('images.png') no-repeat -161px 0;} -header nav a.admin span{background: url('images.png') no-repeat -184px 0;} -header nav a.project span{background: url('images.png') no-repeat -209px -1px; top: 7px} -header nav a.issues span{background: url('images.png') no-repeat -209px -1px; top: 7px} - -header .login-top{float: right; width: 180px; - background-image: -webkit-gradient(linear, 0 0, 0 62, color-stop(0.032, #464c56), to(#363c45)); - background-image: -webkit-linear-gradient(#464c56 3.2%, #363c45); - background-image: -moz-linear-gradient(#464c56 3.2%, #363c45); - background-image: -o-linear-gradient(#464c56 3.2%, #363c45); - padding: 0 10px; - height: 44px; -} -header .login-top a{display: block;} -header .login-top a.pic{float: left; margin-right: 10px; - img{ height: 36px; width: 36px; border: 1px solid black} -} -header .login-top a.username{margin-bottom: 5px} -header .login-top a.logout{color: #ccc} -header{margin-bottom: 0; clear: both; position:relative;} - -.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} -.page-title h1{font-size: 20px; width: 400px; margin: 0; padding-top: 8px } -.page-title a.grey-button{float: right;} -.right{float: right;} - -/* Account box */ -header .account-box{ - position: absolute; - right: 0; - top: 8px; - z-index: 10000; - width: 128px; - font-size: 11px; - float: right; - display: block; - cursor: pointer;} -header .account-box img{ - border-radius: 4px; - right: 20px; - position: absolute; - width: 33px; height: 33px; - display: block; top:0;} -header .account-box img:after{ - content: " "; - display: block; - position: absolute; - top: 0; - right: 0; -left: 0; - bottom: 0; -float: right; - border-radius: 5px; - border: 1px solid rgba(255, 255, 255, .1); - border-bottom: 0; - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, .15)), to(rgba(0, 0, 0, .25))), -webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, .1)), color-stop(0.501, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0))); - background: -moz-linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), -moz-linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0)); - background: linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0)); - -webkit-background-origin: border-box; - -moz-background-origin: border; - background-origin: border-box; -} - -.account-box.hover{height: 138px;} - -.account-box:hover > .account-links{display: block;} -header .account-links{ - background: #79C3E0; display: none; border-radius: 5px; width: 100px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); position:relative;} -header .account-links:before { - content: "."; - width:0; - height:0; - position:absolute; - border:5px solid transparent; - border-color:rgba(255,255,255,0); - border-bottom-color:#fafafa; - text-indent:-9999px; - top:-10px; - line-height:0; - right:10px; - z-index:10; -} - -/* Inspired by http://maxvoltar.com/temp/nowplaying/ */ -header .account-links{background: white; display: none; z-index: 100000; border-radius: 5px; width: 100px; position: absolute; right: 20px; top: 46px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); } -header .account-links a{color: #666; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #eee} -header .account-links a:hover{ - background: #3aacec; - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#39acec), to(#279ada), color-stop(.05, #4cbefe)); - background: -moz-linear-gradient(top, #39acec, #4cbefe 5%, #279ada); - background: linear-gradient(top, #39acec, #4cbefe 5%, #279ada); - color: #fff; - text-shadow: #1488c8 0 -1px 0; -} -.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute} -header .account-links a:first-child{ - -webkit-border-top-left-radius: 5px; - -webkit-border-top-right-radius: 5px; - -moz-border-radius-topleft: 5px; - -moz-border-radius-topright: 5px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -header .account-links a:last-child{ - -webkit-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - -moz-border-radius-bottomright: 5px; - -moz-border-radius-bottomleft: 5px; - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - border-bottom: 0; -} - -.big-message{ - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.041, #eccb40), to(#ffee4d)); - background-image: -webkit-linear-gradient(90deg, #eccb40 4.1%, #ffee4d); - background-image: -moz-linear-gradient(90deg, #eccb40 4.1%, #ffee4d); - background-image: -o-linear-gradient(90deg, #eccb40 4.1%, #ffee4d); - text-align: center; - font-weight: bold; - padding: 10px 20px; - text-shadow: 0 1px 0 rgba(255,255,255,.3); - color: #333; - color: rgba(0,0,0,.7); - font-size: 14px; - box-shadow: 0 1px 2px rgba(0,0,0,.7); - z-index: 100000; - margin-bottom: 2px; -} - -.big-message a{color: #000; text-decoration: underline;} - -.big-message.error{ - background-color: #722523; - background-image: -webkit-gradient(linear, 0 49, 0 0, color-stop(0.04, #722523), to(#ad4846)); - background-image: -webkit-linear-gradient(90deg, #9b403f 4%, #c16765); - background-image: -moz-linear-gradient(90deg, #722523 4%, #ad4846); - background-image: -o-linear-gradient(90deg, #722523 4%, #ad4846); - color: #2E0D0C; -} - -.big-message.success{ - background-color: #7a9339; - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.062, #7a9339), to(#93ae46)); - background-image: -webkit-linear-gradient(90deg, #7a9339 6.2%, #93ae46); - background-image: -moz-linear-gradient(90deg, #7a9339 6.2%, #93ae46); - background-image: -o-linear-gradient(90deg, #7a9339 6.2%, #93ae46) -} - -.big-message.success{ - background-color: #7a9339; - background-image: -webkit-gradient(linear, 0 48, 0 0, color-stop(0.062, #7a9339), to(#93ae46)); - background-image: -webkit-linear-gradient(90deg, #7a9339 6.2%, #93ae46); - background-image: -moz-linear-gradient(90deg, #7a9339 6.2%, #93ae46); - background-image: -o-linear-gradient(90deg, #7a9339 6.2%, #93ae46) -} - -.big-message.notice{ - background-image: -webkit-gradient(linear, 0 49, 0 0, color-stop(0.061, #447790), color-stop(0.897, #5da2bf)); - background-image: -webkit-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%); - background-image: -moz-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%); - background-image: -o-linear-gradient(90deg, #447790 6.1%, #5da2bf 89.7%) -} - -/* eo Account Box */ -input.search-input{ - float: left; - text-shadow: none; - width: 116px; - background-image: url('icon-search.png') ; - background-repeat: no-repeat; - background-position: 10px; - border-radius: 4px; - border: 1px solid #AAA; - background-color: #FFF; - padding: 5px; - padding-left: 26px; - margin-top: 2px; - margin-right: 10px; -} -/*input.search-input:focus{ background-color: white; width: 216px;}*/ -input.search-input::-webkit-input-placeholder {color: #666} -/* eo Header */ - -h2.icon{position: relative; padding-left: 40px; float: left; } -/*h2 a{font-weight: normal;}*/ -h2.icon span{background: #E3E5EA url('images.png'); height: 32px; width: 32px; left: 0; top: -5px; border-radius: 4px; display: inline-block; position: absolute} - -/* Dashboard Page */ -html, body { height: 100%; } - - - - -.grey-button.right{margin-top: 20px} - -/* Project Page */ -/* eo New Project Page */ - - -/* eo Project Page */ - -/* Projects Page */ -body.projects-page h2.icon span{background-position: -31px -70px;} -body.projects-page .project-box.ui-box .data .repository {margin-bottom: 20px} -body.projects-page .project-box.ui-box .data .title span{ font-weight: bold;} -body.projects-page .project-box{width: 100%; margin-bottom: 3em} -body.projects-page .browse-code{margin-right: 10px} -/* eo Projects Page */ - -/* ==|== non-semantic helper classes ======================================== */ -.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; } -.ir br { display: none; } -.hidden { display: none !important; visibility: hidden; } -.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } -.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } -.invisible { visibility: hidden; } -.clearfix:before, .clearfix:after { content: ""; display: table; } -.clearfix:after { clear: both; } -.clearfix { zoom: 1; } - -/* ==|== media queries ====================================================== */ - -@media only screen and (min-width: 480px) { - -} - -@media only screen and (min-width: 768px) { - -} - -/* ==|== print styles ======================================================= */ - -@media print { - * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } - a, a:visited { text-decoration: underline; } - a[href]:after { content: " (" attr(href) ")"; } - abbr[title]:after { content: " (" attr(title) ")"; } - .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } - pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } - thead { display: table-header-group; } - tr, img { page-break-inside: avoid; } - img { max-width: 100% !important; } - @page { margin: 0.5cm; } - p, h2, h3 { orphans: 3; widows: 3; } - h2, h3 { page-break-after: avoid; } -} - -body, button, input, select, textarea { - font-family: "helvetica", "arial", "freesans", "clean", sans-serif; -} - -/** FORM INPUTS **/ -.new_merge_request, -.edit_merge_request, -.user_new, -.new_key, -.new_issue, -.new_note, -.edit_user, -.edit_issue, -.new_project, -.new_snippet, -.edit_snippet, -.edit_project { - input[type='text'], - input[type='email'], - input[type='password'], - textarea { - width:400px; - padding:8px; - font-size:14px; - @include round-borders-all(4px); - } -} - -.text_field { - width:400px; - padding:8px; - font-size:14px; - @include round-borders-all(4px); -} - -.input_button { - padding:8px; - font-size:14px; - cursor:pointer; - background-color: #F5F5F5; - border-color: #EEEEEE #DEDEDE #DEDEDE #EEEEEE; - border-right: 1px solid #DEDEDE; - border-style: solid; - border-width: 1px; -} - -/** FLASH **/ -#flash_container { - height:45px; - position:fixed; - z-index:10001; - top:0px; - width:100%; - margin-bottom:15px; - overflow:hidden; - background:white; - cursor:pointer; - border-bottom:1px solid #777; - - h4 { - color:#444; - font-size:22px; - padding-top:5px; - margin:2px; - } -} - - -.errors_holder { - background:#D30; - color:#fff; - @include round-borders-all(4px); - border:1px solid #a30; - padding:5px; - list-style:none; - font-weight: bold; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - - li { - padding:10px; - } -} - -.notice_holder { - background:#DDF4FB; - color:#444; - border:1px solid #C6EDF9; - @include round-borders-all(4px); - padding:5px; - list-style:none; - font-weight: bold; - text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25); - - li { - padding:10px; - } -} - -.alert_holder { - background:#FDF5D9; - color:#444; - border:1px solid #FCEEC1; - @include round-borders-all(4px); - padding:5px; - list-style:none; - font-weight: bold; - text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25); - - li { - padding:10px; - } -} - -.help_content { - margin:20px; - margin-top:71px; - - h2 { - margin:0; - padding:0; - } - - .menu { - float:left; - width:20%; - - .active { - color: $active_bd_color; - } - } - - .content { - float:right; - width:78%; - } - - .bash { - @include round-borders-all(4px); - background:#eee; - padding:5px; - //overflow-x:scroll; - pre{ - padding:0; - line-height:2.0; - margin:0; - font-family: 'Courier New', 'andale mono','lucida console',monospace; - color: #333; - text-align:left; - } - } -} diff --git a/app/assets/stylesheets/tags.scss b/app/assets/stylesheets/tags.scss deleted file mode 100644 index 7d40d396b9a..00000000000 --- a/app/assets/stylesheets/tags.scss +++ /dev/null @@ -1,55 +0,0 @@ -.tag { - @include round-borders-all(4px); - padding:2px 4px; - border:none; - text-shadow:none; - - &.inline { - display:inline; - } - - &.high, &.closed { - background: #D12F19; - color:white; - } - - &.today, &.open { - background: #44aa22; - color:white; - } - - &.yours { - background: #4466cc; - color:white; - } - &.normal { - background: #2c5ca6; - color:white; - } - &.notes { - background: #2c5c66; - color:white; - } - - &.note { - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); - color: #777; - border: 1px solid #DEDFE1; - } - &.issue { - background: #D12F19; - color:white; - } - &.commit { - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); - color: #777; - border: 1px solid #DEDFE1; - } -} - diff --git a/app/assets/stylesheets/top_panel.scss b/app/assets/stylesheets/top_panel.scss index 57c1e07725e..61db2c311cf 100644 --- a/app/assets/stylesheets/top_panel.scss +++ b/app/assets/stylesheets/top_panel.scss @@ -1,52 +1,3 @@ -.main_links { - width:130px; - float:left; - - a { - float:left; - } -} - -.dashboard_links { - padding:7px; - float:left; - a { - margin: 0 14px; - float: left; - font-size: 14px; - - &.active { - color:$active_link_color; - } - &:hover { - color:$active_link_color; - } - } -} - -.top-tabs { - margin: 0; - padding: 5px; - font-size: 14px; - padding-bottom:10px; - margin-bottom:20px; - height:26px; - border-bottom:1px solid #ccc; - - .tab { - font-weight: bold; - background:none; - padding: 10px; - float:left; - padding-left:0px; - padding-right:40px; - - &.active { - color: $active_link_color; - } - } -} - body header { position:absolute; width:100%; @@ -54,23 +5,20 @@ body header { margin:0; top:0; left:0; - background: #999; /* for non-css3 browsers */ - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#EAEAEA'); /* for IE */ - background: -webkit-gradient(linear, left top, left bottom, from(#FFFFFF), to(#EAEAEA)); /* for webkit browsers */ - background: -moz-linear-gradient(top, #FFFFFF, #EAEAEA); /* for firefox 3.6+ */ - background: -o-linear-gradient(top, #FFFFFF, #EAEAEA); /* for firefox 3.6+ */ + background: #F1F1F1; /* for non-css3 browsers */ border-bottom: 1px solid #ccc; + box-shadow: 0 -1px 0 white inset; + -moz-box-shadow: 0 -1px 0 white inset; + -webkit-box-shadow: 0 -1px 0 white inset; height:50px; .wrapper { margin:auto; - width:$app_width; + min-width:$min_app_width; + max-width:$max_app_width; position:relative; - - .top_panel_content { - padding:10px $app_padding; - } + padding:10px $app_padding; } .project_name { @@ -102,45 +50,157 @@ body header { border: 1px solid #AAA; padding: 0 10px 0 30px; background: transparent url('images.png') no-repeat 8px -42px; - width: 160px; + width: 260px; height:26px; } } } +.main_links { + width:155px; + float:left; -.top_panel_holder .chzn-container { - position:relative; + a { + float:left; + } +} - .chzn-drop { - margin:7px 0; - border: 1px solid #CCC; - min-width: 300px; +.dashboard_links { + padding:7px; + float:left; + a { + margin: 0 14px; + float: left; + font-size: 14px; - .chzn-results { - max-height:300px; + &.active { + color:$active_link_color; + } + &:hover { + color:$active_link_color; } } +} - .chzn-single { - background:transparent; - -moz-border-radius: 4px; - border-radius: 4px; +.top-tabs { + margin: 0; + padding: 5px; + font-size: 14px; + padding-bottom:10px; + margin-bottom:20px; + height:26px; + border-bottom:1px solid #ccc; - div { - background:transparent; - border-left:none; - } + .tab { + font-weight: bold; + background:none; + padding: 10px; + float:left; + padding-left:0px; + padding-right:40px; - span { - font-weight: normal; + &.active { + color: $active_link_color; } } } + .rss-icon { margin:0 15px; padding:3px; - border:1px solid #AAA; border-radius:3px; - float:left; +} + + + +/* Account box */ +header .account-box{ + position: absolute; + right: 0; + top: 8px; + z-index: 10000; + width: 128px; + font-size: 11px; + float: right; + display: block; + cursor: pointer;} +header .account-box img{ + border-radius: 4px; + right: 20px; + position: absolute; + width: 33px; height: 33px; + display: block; top:0;} +header .account-box img:after{ + content: " "; + display: block; + position: absolute; + top: 0; + right: 0; +left: 0; + bottom: 0; +float: right; + border-radius: 5px; + border: 1px solid rgba(255, 255, 255, .1); + border-bottom: 0; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, .15)), to(rgba(0, 0, 0, .25))), -webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, .1)), color-stop(0.501, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0))); + background: -moz-linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), -moz-linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0)); + background: linear-gradient(top, rgba(255, 255, 255, .15), rgba(0, 0, 0, .25)), linear-gradient(left top, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1) 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0)); + -webkit-background-origin: border-box; + -moz-background-origin: border; + background-origin: border-box; +} + +.account-box.hover{height: 138px;} +.account-box:hover > .account-links{display: block;} +header .account-links{ background: #79C3E0; display: none; border-radius: 5px; width: 100px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); position:relative;} + +header .account-links:before { + content: "."; + width:0; + height:0; + position:absolute; + border:5px solid transparent; + border-color:rgba(255,255,255,0); + border-bottom-color:#333; + text-indent:-9999px; + top:-10px; + line-height:0; + right:10px; + z-index:10; +} + +header .account-links{ + background: #333; + display: none; + z-index: 100000; + border-radius: 5px; + width: 100px; + position: absolute; + right: 20px; + top: 46px; + margin-top: 0; + float: right; + box-shadow: 0 1px 1px rgba(0,0,0,.2); +} + +header .account-links a{color: #EEE; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #555} +header .account-links a:hover{ background: #444;} +.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute} +header .account-links a:first-child{ + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} + +header .account-links a:last-child{ + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomright: 5px; + -moz-border-radius-bottomleft: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + border-bottom: 0; } diff --git a/app/assets/stylesheets/tree.scss b/app/assets/stylesheets/tree.scss index 57070871680..322b3d7fba8 100644 --- a/app/assets/stylesheets/tree.scss +++ b/app/assets/stylesheets/tree.scss @@ -8,13 +8,10 @@ } .tree_progress { - float:left; - width:16px; - height:16px; - margin:2px 6px; + display:none; + margin:20px; &.loading { - background-position: 0px 0px; - background: url("ajax-loader-facebook.gif") no-repeat; + display:block; } } @@ -117,5 +114,15 @@ table.highlighttable .linenodiv pre { .tree-item { &:hover { background: #FFFFCF; + cursor:pointer; + } + + .tree-item-file-name { + font-weight:bold; + + img { + position: relative; + top: 2px; + } } } diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index 813e135b77f..2c6363c6f3e 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -52,6 +52,12 @@ class Admin::ProjectsController < ApplicationController def update @admin_project = Project.find_by_code(params[:id]) + owner_id = params[:project][:owner_id] + + if owner_id + @admin_project.owner = User.find(owner_id) + end + if @admin_project.update_attributes(params[:project]) redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' else diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 00ab93a153d..5a5b4aeb8d4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -95,4 +95,8 @@ class ApplicationController < ActionController::Base response.headers["Pragma"] = "no-cache" response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT" end + + def render_full_content + @full_content = true + end end diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb index a938461fed1..e2853dd6cf6 100644 --- a/app/controllers/commits_controller.rb +++ b/app/controllers/commits_controller.rb @@ -29,6 +29,8 @@ class CommitsController < ApplicationController @line_notes = project.commit_line_notes(@commit) + render_full_content + respond_to do |format| format.html format.js { respond_with_notes } diff --git a/app/controllers/keys_controller.rb b/app/controllers/keys_controller.rb index 33c6958d6ab..ce49e3e72c6 100644 --- a/app/controllers/keys_controller.rb +++ b/app/controllers/keys_controller.rb @@ -1,6 +1,6 @@ class KeysController < ApplicationController layout "profile" - respond_to :js + respond_to :js, :html def index @keys = current_user.keys.all diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 3456a0a7fcb..9ab62f5e72c 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -39,6 +39,8 @@ class MergeRequestsController < ApplicationController @notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20) @note = @project.notes.new(:noteable => @merge_request) + render_full_content + respond_to do |format| format.html format.js { respond_with_notes } diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 6bd72a860b3..7f9e6866d89 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -68,7 +68,8 @@ class ProjectsController < ApplicationController def show return render "projects/empty" unless @project.repo_exists? && @project.has_commits? - limit = (params[:limit] || 20).to_i + limit = (params[:limit] || 10).to_i + @activities = @project.activities(limit)#updates_wo_repo(limit) end diff --git a/app/controllers/refs_controller.rb b/app/controllers/refs_controller.rb index 2f887a4ebe1..0e062fc6697 100644 --- a/app/controllers/refs_controller.rb +++ b/app/controllers/refs_controller.rb @@ -8,16 +8,27 @@ class RefsController < ApplicationController before_filter :ref before_filter :define_tree_vars, :only => [:tree, :blob] + before_filter :render_full_content + layout "project" def switch - new_path = if params[:destination] == "tree" - tree_project_ref_path(@project, params[:ref]) - else - project_commits_path(@project, :ref => params[:ref]) - end + respond_to do |format| + format.html do + new_path = if params[:destination] == "tree" + tree_project_ref_path(@project, params[:ref]) + else + project_commits_path(@project, :ref => params[:ref]) + end - redirect_to new_path + redirect_to new_path + end + format.js do + @ref = params[:ref] + define_tree_vars + render "tree" + end + end end # diff --git a/app/controllers/team_members_controller.rb b/app/controllers/team_members_controller.rb index c05602f9a80..ab51c19e0c8 100644 --- a/app/controllers/team_members_controller.rb +++ b/app/controllers/team_members_controller.rb @@ -40,7 +40,7 @@ class TeamMembersController < ApplicationController @team_member.destroy respond_to do |format| - format.html { redirect_to root_path } + format.html { redirect_to team_project_path(@project) } format.js { render :nothing => true } end end diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb index 5cf1027854d..55ed901c210 100644 --- a/app/helpers/dashboard_helper.rb +++ b/app/helpers/dashboard_helper.rb @@ -3,6 +3,7 @@ module DashboardHelper case object.class.name.to_s when "Issue" then project_issue_path(project, project.issues.find(object.id)) when "Commit" then project_commit_path(project, project.repo.commits(object.id).first) + when "MergeRequest" then project_merge_request_path(project, object.id) when "Note" then note = object @@ -26,6 +27,7 @@ module DashboardHelper when "Note" then markdown(object.note) when "Issue" then object.title when "Commit" then object.safe_message + when "MergeRequest" then object.title else return "Project Wall" end diff --git a/app/models/commit.rb b/app/models/commit.rb index 7f06f4e68fa..0d45c645014 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -1,4 +1,6 @@ class Commit + include ActiveModel::Conversion + extend ActiveModel::Naming attr_accessor :commit attr_accessor :head @@ -18,6 +20,10 @@ class Commit :id, :to => :commit + def persisted? + false + end + def initialize(raw_commit, head = nil) @commit = raw_commit @head = head diff --git a/app/views/admin/projects/_form.html.haml b/app/views/admin/projects/_form.html.haml index ea42ed22311..d10fbf95767 100644 --- a/app/views/admin/projects/_form.html.haml +++ b/app/views/admin/projects/_form.html.haml @@ -6,34 +6,31 @@ - @admin_project.errors.full_messages.each do |msg| %li= msg - .form-row + .clearfix = f.label :name - %br - = f.text_field :name - .form-row + .input= f.text_field :name + .clearfix = f.label :code - %br - = f.text_field :code - .form-row + .input= f.text_field :code + .clearfix = f.label :path - %br - = f.text_field :path + .input= f.text_field :path - .form-row - = f.label :tag_list - %br - = f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field + - unless @admin_project.new_record? + .clearfix + = f.label :owner_id + .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] } - .form-row + .clearfix = f.label :description - %br - = f.text_area :description + .input= f.text_area :description .clear %br .actions - = f.submit 'Save', :class => "grey-button" + = f.submit 'Save', :class => "btn" :javascript $(function(){ taggifyForm(); + $('#project_owner_id').chosen(); }) diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml index f57b98d0f34..576dbf046f7 100644 --- a/app/views/admin/projects/index.html.haml +++ b/app/views/admin/projects/index.html.haml @@ -19,4 +19,4 @@ %td= link_to 'Destroy', [:admin, project], :confirm => 'Are you sure?', :method => :delete = paginate @admin_projects -= link_to 'New Project', new_admin_project_path, :class => "grey-button" += link_to 'New Project', new_admin_project_path, :class => "btn" diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml index cc83add6db4..3e589a0cecb 100644 --- a/app/views/admin/projects/show.html.haml +++ b/app/views/admin/projects/show.html.haml @@ -31,7 +31,7 @@ = @admin_project.description %tr %td{:colspan => 2} - = link_to 'Edit', edit_admin_project_path(@admin_project), :class => "grey-button" + = link_to 'Edit', edit_admin_project_path(@admin_project), :class => "btn" .span-14 @@ -53,7 +53,7 @@ %tr %td{ :colspan => 3 } - = submit_tag 'Add', :class => "positive-button" + = submit_tag 'Add', :class => "btn primary" %table.round-borders %thead diff --git a/app/views/admin/team_members/_form.html.haml b/app/views/admin/team_members/_form.html.haml index f8e7f1043d0..e6dd6a43f72 100644 --- a/app/views/admin/team_members/_form.html.haml +++ b/app/views/admin/team_members/_form.html.haml @@ -27,7 +27,7 @@ = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select" %br .actions - = f.submit 'Save', :class => "grey-button" + = f.submit 'Save', :class => "btn" :css form select { diff --git a/app/views/admin/team_members/index.html.haml b/app/views/admin/team_members/index.html.haml index 8033e690642..8426c8638c6 100644 --- a/app/views/admin/team_members/index.html.haml +++ b/app/views/admin/team_members/index.html.haml @@ -25,4 +25,4 @@ %br = paginate @admin_team_members -= link_to 'New Team Member', new_admin_team_member_path, :class => "grey-button" += link_to 'New Team Member', new_admin_team_member_path, :class => "btn" diff --git a/app/views/admin/users/_form.html.haml b/app/views/admin/users/_form.html.haml index e695332239f..b137ae3dbdc 100644 --- a/app/views/admin/users/_form.html.haml +++ b/app/views/admin/users/_form.html.haml @@ -2,48 +2,41 @@ = form_for [:admin, @admin_user] do |f| -if @admin_user.errors.any? #error_explanation - %h2= "#{pluralize(@admin_user.errors.count, "error")} prohibited this admin_user from being saved:" %ul - @admin_user.errors.full_messages.each do |msg| %li= msg - .form-row + .clearfix = f.label :name - %br - = f.text_field :name - .form-row + .input= f.text_field :name + .clearfix = f.label :email - %br - = f.text_field :email - .form-row + .input= f.text_field :email + .clearfix = f.label :password - %br - = f.password_field :password - .form-row + .input= f.password_field :password + .clearfix = f.label :password_confirmation - %br - = f.password_field :password_confirmation - .form-row + .input= f.password_field :password_confirmation + .clearfix = f.check_box :admin = f.label :admin - .form-row - = f.text_field :projects_limit, :class => "small_input" + .clearfix = f.label :projects_limit + .input= f.text_field :projects_limit, :class => "small_input" - .form-row + .clearfix = f.label :skype - %br - = f.text_field :skype - .form-row + .input= f.text_field :skype + .clearfix = f.label :linkedin - %br - = f.text_field :linkedin - .form-row + .input= f.text_field :linkedin + .clearfix = f.label :twitter - %br - = f.text_field :twitter + .input= f.text_field :twitter .clear %br .actions - = f.submit 'Save', :class => "grey-button" + = f.submit 'Save', :class => "btn primary" + = link_to 'Cancel', admin_users_path, :class => "btn" diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml index db58a6b47a2..b562a83183b 100644 --- a/app/views/admin/users/index.html.haml +++ b/app/views/admin/users/index.html.haml @@ -18,4 +18,4 @@ = paginate @admin_users %br -= link_to 'New User', new_admin_user_path, :class => "grey-button" += link_to 'New User', new_admin_user_path, :class => "btn" diff --git a/app/views/admin/users/new.html.haml b/app/views/admin/users/new.html.haml index 87ea570b790..87d6b0f2757 100644 --- a/app/views/admin/users/new.html.haml +++ b/app/views/admin/users/new.html.haml @@ -1,6 +1,3 @@ -%h1 New user - +%h2 New user +%hr = render 'form' - -%br -= link_to 'Back', admin_users_path, :class => "" diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml index da8f4370cab..755ee353c08 100644 --- a/app/views/admin/users/show.html.haml +++ b/app/views/admin/users/show.html.haml @@ -41,7 +41,7 @@ = @admin_user.twitter %tr %td{:colspan => 2} - = link_to 'Edit', edit_admin_user_path(@admin_user), :class => "grey-button" + = link_to 'Edit', edit_admin_user_path(@admin_user), :class => "btn" .span-14 %h2 Projects @@ -66,4 +66,4 @@ %td= link_to 'Edit', edit_admin_team_member_path(tm) %td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete - = link_to 'Add To Another Project', new_admin_team_member_path(:team_member => {:user_id => @admin_user.id}), :class => "grey-button" + = link_to 'Add To Another Project', new_admin_team_member_path(:team_member => {:user_id => @admin_user.id}), :class => "btn" diff --git a/app/views/commits/_commits.html.haml b/app/views/commits/_commits.html.haml index f1537d1ced0..cdea9acb9d6 100644 --- a/app/views/commits/_commits.html.haml +++ b/app/views/commits/_commits.html.haml @@ -1,33 +1,19 @@ - @commits.group_by { |c| c.committed_date.to_date }.each do |day, commits| %div{ :class => "commits-date ui-box ui-box-small ui-box-big" } .day-commits-table - %h3= day.stamp("28 Aug, 2010") - .data + %h5.underlined= day.stamp("28 Aug, 2010") + %br + %ul.unstyled - commits.each do |commit| - %a{ :class => "commit", :href => project_commit_path(@project, :id => commit.id) } - %span.commit-info - %data.commit-button - = truncate(commit.id.to_s, :length => 16) - %i - %data.commit-browse{ :onclick => "location.href='#{tree_project_ref_path(@project, commit.id)}';return false;"} - Browse Code - - if commit.author_email - = image_tag gravatar_icon(commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" - - else - = image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;" - %span.commit-title - %strong - = truncate(commit.safe_message, :length => 70) - %span.commit-author - Authored by - - %strong= commit.author_name - = time_ago_in_words(commit.authored_date) - ago - - if commit.author_name != commit.committer_name or commit.author_email != commit.committer_email or commit.authored_date != commit.committed_date - %span.commit-committer - Committed by - - %strong= commit.committer_name - = time_ago_in_words(commit.committed_date) - ago + %li.entry + = link_to project_commit_path(@project, :id => commit.id) do + %div + %strong + = truncate commit.id.to_s, :length => 10 + – + = image_tag gravatar_icon(commit.author_email), :class => "", :width => 16 + = truncate(commit.safe_message, :length => 50) + + %span.right.cgray + = time_ago_in_words(commit.committed_date) + ago diff --git a/app/views/commits/index.html.haml b/app/views/commits/index.html.haml index 5a760b3a2dc..6b6c52d7cc1 100644 --- a/app/views/commits/index.html.haml +++ b/app/views/commits/index.html.haml @@ -1,16 +1,23 @@ -- content_for(:body_class, "project-page commits-page") -- if current_user.private_token - = content_for :rss_icon do - .rss-icon +%h3 + Commits + - if current_user.private_token + %span.rss-icon = link_to project_commits_path(@project, :atom, { :private_token => current_user.private_token, :ref => @ref }) do = image_tag "Rss-UI.PNG", :width => 22, :title => "feed" + = form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form right" do + = select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select" + = hidden_field_tag :destination, "commits" +%hr - if params[:path] - %h2 - = link_to project_commits_path(@project) do - = @project.code - \/ - %a{:href => "#"}= params[:path].split("/").join(" / ") + %ul.breadcrumb + %li + = link_to project_commits_path(@project) do + = @project.code + %span.divider + \/ + %li + %a{:href => "#"}= params[:path].split("/").join(" / ") %div{:id => dom_id(@project)} #commits_list= render "commits" @@ -23,3 +30,8 @@ $(function(){ CommitsList.init("#{@ref}", 20); }); + +:javascript + $(function(){ + $('.project-refs-select').chosen(); + }); diff --git a/app/views/commits/show.html.haml b/app/views/commits/show.html.haml index 6010f01f6cb..05a4c38de5a 100644 --- a/app/views/commits/show.html.haml +++ b/app/views/commits/show.html.haml @@ -1,10 +1,7 @@ -- content_for(:body_class, "project-page commits-page") .commit %span.commit-info - = link_to tree_project_ref_path(@project, @commit.id) do - %data.commit-button - Browse Code - %i + = link_to tree_project_ref_path(@project, @commit.id), :class => "btn right" do + Browse Code ยป - if @commit.author_email = image_tag gravatar_icon(@commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" - else diff --git a/app/views/dashboard/_issues_feed.html.haml b/app/views/dashboard/_issues_feed.html.haml index 45892664df7..782cb5e0954 100644 --- a/app/views/dashboard/_issues_feed.html.haml +++ b/app/views/dashboard/_issues_feed.html.haml @@ -1,26 +1,10 @@ -#feeds_content_holder - - unless @issues.empty? - .project-box.project-updates.ui-box.ui-box-small.ui-box-big - .data - - @issues.each do |update| - %a.project-update{:href => dashboard_feed_path(update.project, update)} - %strong.issue-number= "##{update.id}" - %span.update-title - = truncate update.title, :length => 35 - .right= truncate update.project.name - %span.update-author - %strong= update.author_name - authored - = time_ago_in_words(update.created_at) - ago - .right - - if update.critical - %span.tag.high critical - - if update.today? - %span.tag.today today - - - else - %h2 - No assigned - %span.tag.open open - issues +- @issues.each do |issue| + .alert-message.entry + = link_to [issue.project, issue] do + %p + %strong + = issue.project.name + – + Issue # + = issue.id + = truncate issue.title, :length => 50 diff --git a/app/views/dashboard/_merge_requests_feed.html.haml b/app/views/dashboard/_merge_requests_feed.html.haml index 1f8553e4a70..4f40f547714 100644 --- a/app/views/dashboard/_merge_requests_feed.html.haml +++ b/app/views/dashboard/_merge_requests_feed.html.haml @@ -1,24 +1,10 @@ -#feeds_content_holder - - unless @merge_requests.empty? - .project-box.project-updates.ui-box.ui-box-small.ui-box-big - .data - - @merge_requests.each do |update| - %a.project-update{:href => project_merge_request_path(update.project, update)} - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 - %span.update-title - = truncate update.title, :length => 35 - .right= truncate update.project.name - %span.update-author - %strong= update.author_name - authored - = time_ago_in_words(update.created_at) - ago - .right - %span.tag.commit= update.source_branch - → - %span.tag.commit= update.target_branch - - else - %h2 - No authored or assigned - %span.tag.open open - merge requests +- @merge_requests.each do |merge_request| + .alert-message.entry + = link_to [merge_request.project, merge_request] do + %p + %strong + = merge_request.project.name + – + Merge Request # + = merge_request.id + = truncate merge_request.title, :length => 50 diff --git a/app/views/dashboard/_projects_feed.html.haml b/app/views/dashboard/_projects_feed.html.haml index 0d347246355..8171f59a609 100644 --- a/app/views/dashboard/_projects_feed.html.haml +++ b/app/views/dashboard/_projects_feed.html.haml @@ -1,20 +1,17 @@ -#feeds_content_holder - - @active_projects.first(3).each do |project| - .project-box.project-updates.ui-box.ui-box-small.ui-box-big - = link_to project do - %h3= project.name - .data - - project.updates(3).each do |update| - %a.project-update{:href => dashboard_feed_path(project, update)} - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 - %span.update-title - = dashboard_feed_title(update) - %span.update-author - %strong= update.author_name - authored - = time_ago_in_words(update.created_at) - ago - .right - - klass = update.class.to_s.split("::").last.downcase - %span.tag{ :class => klass }= klass +- @active_projects.first(3).each do |project| + = link_to project do + %h4= project.name + - project.updates(3).each do |update| + %a.project-update{:href => dashboard_feed_path(project, update)} + = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32 + %div + = dashboard_feed_title(update) + %span.update-author + %strong= update.author_name + authored + = time_ago_in_words(update.created_at) + ago + .right + - klass = update.class.to_s.split("::").last.downcase + %span.tag{ :class => klass }= klass diff --git a/app/views/dashboard/_sidebar.html.haml b/app/views/dashboard/_sidebar.html.haml deleted file mode 100644 index dec71186f73..00000000000 --- a/app/views/dashboard/_sidebar.html.haml +++ /dev/null @@ -1,15 +0,0 @@ -%aside - %h4 - - if current_user.can_create_project? - %a.button-small.button-green{:href => new_project_path} New Project - Your Projects - %ol.project-list - - @projects.each do |project| - %li - %a{:href => project_path(project)} - -#%span.arrow โ - %span.project-name= project.name - %span.time - %strong Last activity: - = project.last_activity_date_cached ? time_ago_in_words(project.last_activity_date_cached) + " ago" : "Never" - diff --git a/app/views/dashboard/index.html.haml b/app/views/dashboard/index.html.haml index b3de30f2ecd..3eba2f47bfb 100644 --- a/app/views/dashboard/index.html.haml +++ b/app/views/dashboard/index.html.haml @@ -1,5 +1,3 @@ -- content_for(:body_class, "dashboard-page") - -#dashboard-content.dashboard-content.content - = render "dashboard/sidebar" - #news-feed.news-feed= render "dashboard/projects_feed" +%h3 Activities +%hr +.news-feed= render "dashboard/projects_feed" diff --git a/app/views/dashboard/issues.html.haml b/app/views/dashboard/issues.html.haml index 063183ed0d1..6db447fbee8 100644 --- a/app/views/dashboard/issues.html.haml +++ b/app/views/dashboard/issues.html.haml @@ -1,5 +1,6 @@ -- content_for(:body_class, "dashboard-page") +%h3 + Issues + %small ( assigned to you ) -#dashboard-content.dashboard-content.content - = render "dashboard/sidebar" - #news-feed.news-feed= render "dashboard/issues_feed" +%hr += render "dashboard/issues_feed" diff --git a/app/views/dashboard/merge_requests.html.haml b/app/views/dashboard/merge_requests.html.haml index 088577eaf50..91dd6909915 100644 --- a/app/views/dashboard/merge_requests.html.haml +++ b/app/views/dashboard/merge_requests.html.haml @@ -1,5 +1,6 @@ -- content_for(:body_class, "dashboard-page") +%h3 + Merge Requests + %small ( authored or assigned to you ) -#dashboard-content.dashboard-content.content - = render "dashboard/sidebar" - #news-feed.news-feed= render "dashboard/merge_requests_feed" +%hr += render "dashboard/merge_requests_feed" diff --git a/app/views/deploy_keys/_form.html.haml b/app/views/deploy_keys/_form.html.haml index f0a300bb60e..2aa57cdc59b 100644 --- a/app/views/deploy_keys/_form.html.haml +++ b/app/views/deploy_keys/_form.html.haml @@ -1,18 +1,18 @@ %div = form_for [@project, @key], :url => project_deploy_keys_path do |f| -if @key.errors.any? - %ul.errors_holder - - @key.errors.full_messages.each do |msg| - %li= msg - - %table.no-borders - %tr - %td= f.label :title - %td= f.text_field :title, :style => "width:300px" - %tr - %td= f.label :key - %td= f.text_area :key, :style => "width:300px; height:130px" - %br - .merge-tabs - = f.submit 'Save', :class => "positive-button" + .alert-message.block-message.error + %ul + - @key.errors.full_messages.each do |msg| + %li= msg + + .clearfix + = f.label :title + .input= f.text_field :title + .clearfix + = f.label :key + .input= f.text_area :key, :class => "xlarge" + .actions + = f.submit 'Save', :class => "primary btn" + = link_to "Cancel", project_deploy_keys_path(@project), :class => "btn" diff --git a/app/views/deploy_keys/index.html.haml b/app/views/deploy_keys/index.html.haml index 02c8c135998..3e8ff515ac2 100644 --- a/app/views/deploy_keys/index.html.haml +++ b/app/views/deploy_keys/index.html.haml @@ -1,17 +1,10 @@ = render "repositories/head" - -%div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" } - .data - - @keys.each do |key| - = render(:partial => 'show', :locals => {:key => key}) - -- if @keys.blank? - .notice_holder - %li Deploy Keys do not exist yet. - - if can? current_user, :admin_project, @project - %li You can add a new one by clicking on "Add New" button - -:javascript - $('.delete-key').live('ajax:success', function() { - $(this).closest('.update-item').fadeOut(); }); - +- if can? current_user, :admin_project, @project + .alert-message.block-message.info + Deploy keys allow read-only access to repository. + = link_to new_project_deploy_key_path(@project), :class => "btn small", :title => "New Deploy Key" do + Add Deploy Key + +%ul.unstyled + - @keys.each do |key| + %li= render(:partial => 'show', :locals => {:key => key}) diff --git a/app/views/deploy_keys/show.html.haml b/app/views/deploy_keys/show.html.haml index 2c5c6149313..16c441bea73 100644 --- a/app/views/deploy_keys/show.html.haml +++ b/app/views/deploy_keys/show.html.haml @@ -1,10 +1,7 @@ -.ui-box.width-100p - %h3= @key.title - .data - %pre= @key.key - .clear - .buttons - = link_to 'Remove', project_deploy_key_path(@key.project, @key), :confirm => 'Are you sure?', :method => :delete, :class => "red-button delete-key right" - .clear - - += render "repositories/head" +%h3= @key.title +%hr +%pre= @key.key +.actions + = link_to 'Remove', project_deploy_key_path(@key.project, @key), :confirm => 'Are you sure?', :method => :delete, :class => "danger btn delete-key" + .clear diff --git a/app/views/devise/passwords/new.html.erb b/app/views/devise/passwords/new.html.erb index 01cb3375d1d..76fc34968ff 100644 --- a/app/views/devise/passwords/new.html.erb +++ b/app/views/devise/passwords/new.html.erb @@ -3,6 +3,6 @@ <%= devise_error_messages! %> <%= f.email_field :email, :placeholder => "Email", :class => "text top" %> <br/> - <%= f.submit "Reset password", :class => "grey-button" %> + <%= f.submit "Reset password", :class => "primary btn" %> <div class="right"> <%= render :partial => "devise/shared/links" %></div> <% end %> diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index f5bd9575705..c110eee315d 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -4,10 +4,10 @@ <%= f.password_field :password, :class => "text bottom", :placeholder => "Password" %> <% if devise_mapping.rememberable? -%> - <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> + <div class="clearfix"> <%= f.label :remember_me %><%= f.check_box :remember_me %></div> <% end -%> <br/> - <%= f.submit "Sign in", :class => "grey-button" %> + <%= f.submit "Sign in", :class => "primary btn" %> <div class="right"> <%= render :partial => "devise/shared/links" %></div> <% if ldap_enable? -%> <p><%= link_to "via LDAP", user_omniauth_authorize_path(:ldap)%></p> diff --git a/app/views/devise/shared/_links.erb b/app/views/devise/shared/_links.erb index 33b1120f992..c624c2d54bf 100644 --- a/app/views/devise/shared/_links.erb +++ b/app/views/devise/shared/_links.erb @@ -1,5 +1,5 @@ <%- if controller_name != 'sessions' %> - <%= link_to "Sign in", new_session_path(resource_name) %><br /> + <%= link_to "Sign in", new_session_path(resource_name), :class => "btn" %><br /> <% end -%> <%- if devise_mapping.registerable? && controller_name != 'registrations' %> @@ -7,7 +7,7 @@ <% end -%> <%- if devise_mapping.recoverable? && controller_name != 'passwords' %> - <%= link_to "Forgot your password?", new_password_path(resource_name) %><br /> +<%= link_to "Forgot your password?", new_password_path(resource_name), :class => "btn" %><br /> <% end -%> <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> diff --git a/app/views/hooks/index.html.haml b/app/views/hooks/index.html.haml index 3bff76f47c0..d00b0677621 100644 --- a/app/views/hooks/index.html.haml +++ b/app/views/hooks/index.html.haml @@ -1,25 +1,18 @@ = render "repositories/head" -- unless @hooks.empty? - %div.update-data.ui-box.ui-box-small - .data - - @hooks.each do |hook| - %a.update-item{:href => project_hook_path(@project, hook)} - %span.update-title{:style => "margin-bottom:0px;"} - = hook.url - %span.update-author.right - Added - = time_ago_in_words(hook.created_at) - ago -- else - %h3 No hooks -.clear -%hr -%p - Post receive hooks. For now only POST request allowed. We send some data with request. Example below +- if can? current_user, :admin_project, @project + .alert-message.block-message.info + Post receive hooks for binding events when someone push to repository. + = link_to new_project_hook_path(@project), :class => "btn small", :title => "New Web Hook" do + Add Post Receive Hook -.view_file - .view_file_header - %strong POST data passed - .data.no-padding - = render "data_ex" +%ul.unstyled + - @hooks.each do |hook| + %li + %a.update-item{:href => project_hook_path(@project, hook)} + = hook.url + +.alert-message.block-message.info + We send some data with POST request when someone makes git push + +.well= render "data_ex" diff --git a/app/views/hooks/show.html.haml b/app/views/hooks/show.html.haml index 47c1ddeac40..5ec4d5d8758 100644 --- a/app/views/hooks/show.html.haml +++ b/app/views/hooks/show.html.haml @@ -1,11 +1,7 @@ = render "repositories/head" -%h3 - %span.commit.tag POST - = @hook.url - +%pre= @hook.url - if can? current_user, :admin_project, @project - .merge-tabs - = link_to 'Test Hook', test_project_hook_path(@project, @hook), :class => "grey-button" - .right - = link_to 'Remove', project_hook_path(@project, @hook), :confirm => 'Are you sure?', :method => :delete, :class => "red-button" + .actions + = link_to 'Test Hook', test_project_hook_path(@project, @hook), :class => "btn" + = link_to 'Remove', project_hook_path(@project, @hook), :confirm => 'Are you sure?', :method => :delete, :class => "danger btn" diff --git a/app/views/issues/_form.html.haml b/app/views/issues/_form.html.haml index d13827e76ac..555a51a5f5b 100644 --- a/app/views/issues/_form.html.haml +++ b/app/views/issues/_form.html.haml @@ -1,51 +1,41 @@ %div.issue-form-holder = form_for [@project, @issue], :remote => request.xhr? do |f| - %div - %span.entity-info - - if request.xhr? - = link_to "#back", :onclick => "backToIssues();" do - .entity-button - Issues - %i - - else - - if @issue.new_record? - = link_to project_issues_path(@project) do - .entity-button - Issues - %i - - else - = link_to project_issue_path(@project, @issue) do - .entity-button - Show Issue - %i - - %h2= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}" - %hr + %h3= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}" + %hr -if @issue.errors.any? - %ul.errors_holder - - @issue.errors.full_messages.each do |msg| - %li= msg + .alert-message.block-message.error + %ul + - @issue.errors.full_messages.each do |msg| + %li= msg - %table.no-borders - %tr - %td= f.label :assignee_id - %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) + .clearfix + = f.label :assignee_id + .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) - %tr - %td= f.label :critical, "Critical" - %td= f.check_box :critical - - - unless @issue.new_record? - %tr - %td= f.label :closed - %td= f.check_box :closed + .clearfix + = f.label :critical, "Critical" + .input= f.check_box :critical - = f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255 - %br - %br - .merge-tabs - = f.submit 'Save', :class => "positive-button" - + - unless @issue.new_record? + .clearfix + = f.label :closed + .input= f.check_box :closed + + .clearfix + = f.label :title + .input= f.text_area :title, :maxlength => 255, :class => "xlarge" + .actions + = f.submit 'Save', :class => "primary btn" + + - if request.xhr? + = link_to "Cancel", "#back", :onclick => "backToIssues();", :class => "btn" + - else + - if @issue.new_record? + = link_to "Cancel", project_issues_path(@project), :class => "btn" + - else + = link_to "Cancel", project_issue_path(@project, @issue), :class => "btn" + + - unless @issue.new_record? .right - = link_to 'Remove', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" + = link_to 'Remove', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "danger btn" diff --git a/app/views/issues/_head.html.haml b/app/views/issues/_head.html.haml index 7d44b87564f..d539025296a 100644 --- a/app/views/issues/_head.html.haml +++ b/app/views/issues/_head.html.haml @@ -1,14 +1,4 @@ -.top-tabs - = link_to project_issues_path(@project), :class => "tab #{'active' if current_page?(project_issues_path(@project)) }" do - %span - Issues - - -#= link_to project_issues_path(@project), :class => "tab" do - %span - Milestones - - - if current_page?(project_issues_path(@project)) - - if can? current_user, :write_issue, @project - = link_to new_project_issue_path(@project), :class => "add_new", :title => "New Issue", :remote => true do - Add new - +.tabs + %li{:class => "#{'active' if current_page?(project_issues_path(@project))}"} + = link_to project_issues_path(@project), :class => "tab" do + Issues diff --git a/app/views/issues/_show.html.haml b/app/views/issues/_show.html.haml index 8c095268493..cc154d8c0c9 100644 --- a/app/views/issues/_show.html.haml +++ b/app/views/issues/_show.html.haml @@ -1,26 +1,32 @@ -%tr{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(issue.project, issue) } - %td - %strong.issue-number{:class => sort_class}= "##{issue.id}" - %span - = truncate(html_escape(issue.title), :length => 100) - %br - %br - %div.note-author - %strong= issue.assignee.name - %cite.cgray - = time_ago_in_words(issue.created_at) - ago - - if issue.critical - %span.tag.high critical - - if issue.today? - %span.tag.today today - .right.action-links - - if can? current_user, :write_issue, issue - - if issue.closed - = link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "cgray", :remote => true - - else - = link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "cgray", :remote => true - - if can? current_user, :write_issue, issue - = link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "cgray edit-issue-link", :remote => true - - if can?(current_user, :admin_issue, @project) || issue.author == current_user - = link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-issue negative", :id => "destroy_issue_#{issue.id}" +%li.wll{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(issue.project, issue) } + = image_tag gravatar_icon(issue.assignee_email), :class => "avatar" + %span.update-author + assigned to + %strong + = link_to project_team_member_path(@project, @project.team_member_by_id(issue.author_id)), :class => "author_link" do + = issue.assignee_name + - if issue.critical + %span.label.important critical + - if issue.today? + %span.label.success today + + .right + - if can? current_user, :write_issue, issue + - if issue.closed + = link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "btn small", :remote => true + - else + = link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "success btn small", :remote => true + - if can? current_user, :write_issue, issue + = link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "btn small edit-issue-link", :remote => true + -#- if can?(current_user, :admin_issue, @project) || issue.author == current_user + = link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "danger btn small delete-issue", :id => "destroy_issue_#{issue.id}" + + + = link_to project_issue_path(issue.project, issue) do + %p + Issue ##{issue.id}: + = truncate(issue.title, :length => 50) + + + + diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 37654c83e1c..b83c4f472ae 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -1,57 +1,54 @@ -= render "issues/head" -- if current_user.private_token - = content_for :rss_icon do - .rss-icon +.issues_content + %h3 + Issues + %span.rss-icon = link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do = image_tag "Rss-UI.PNG", :width => 22, :title => "feed" -%div#issues-table-holder - .top_panel_issues - = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :class => :right, :id => "issue_search_form" do - = hidden_field_tag :project_id, @project.id, { :id => 'project_id' } - = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } + - if can? current_user, :write_issue, @project + = link_to new_project_issue_path(@project), :class => "right btn small", :title => "New Issue", :remote => true do + New Issue + %hr + %div#issues-table-holder + .row + .span8 + %ul.pills.left + %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} + = link_to project_issues_path(@project, :f => 0) do + Open + %li{:class => ("active" if params[:f] == "2")} + = link_to project_issues_path(@project, :f => 2) do + Closed + %li{:class => ("active" if params[:f] == "3")} + = link_to project_issues_path(@project, :f => 3) do + To Me + %li{:class => ("active" if params[:f] == "1")} + = link_to project_issues_path(@project, :f => 1) do + All - .left.issues_filter - = form_tag project_issues_path(@project), :method => :get do - .left - = radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "setIssueFilter(this.form, 0)", :id => "open_issues", :class => "status" - = label_tag "open_issues" do - %span.tag.open Open - .left - = radio_button_tag :f, 2, params[:f] == "2", :onclick => "setIssueFilter(this.form, 2)", :id => "closed_issues", :class => "status" - = label_tag "closed_issues" do - %span.tag.closed Closed - .left - = radio_button_tag :f, 3, params[:f] == "3", :onclick => "setIssueFilter(this.form, 3)", :id => "my_issues", :class => "status" - = label_tag "my_issues","To Me" - .left - = radio_button_tag :f, 1, params[:f] == "1", :onclick => "setIssueFilter(this.form, 1)", :id => "all_issues", :class => "status" - = label_tag "all_issues","All" + .span2.right + = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :id => "issue_search_form", :class => :right do + = hidden_field_tag :project_id, @project.id, { :id => 'project_id' } + = hidden_field_tag :status, params[:f] + = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } + + %hr + %ul#issues-table.unstyled= render "issues" - .clear - %hr - %table.no-borders#issues-table - = render "issues" - %br :javascript var href = $('.issue_search').parent().attr('action'); var last_terms = ''; - var setIssueFilter = function(form, value){ - $.cookie('issue_filter', value, { expires: 140 }); - form.submit(); - } - $('.issue_search').keyup(function() { var terms = $(this).val(); var project_id = $('#project_id').val(); - var status = $('.status:checked').val(); + var status = $('#status').val(); if (terms != last_terms) { last_terms = terms; if (terms.length >= 2 || terms.length == 0) { $.get(href, { 'status': status, 'terms': terms, project: project_id }, function(response) { - $('#issues-table tbody').html(response); + $('#issues-table').html(response); setSortable(); }); } @@ -62,7 +59,7 @@ $(this).closest('tr').fadeOut(); updatePage();}); function setSortable(){ - $('#issues-table>tbody').sortable({ + $('#issues-table').sortable({ axis: 'y', dropOnEmpty: false, handle: '.handle', @@ -73,10 +70,10 @@ update: function(){ $.ajax({ type: 'post', - data: $('#issues-table>tbody').sortable('serialize'), + data: $('#issues-table').sortable('serialize'), dataType: 'script', complete: function(request){ - $('#issues-table>tbody').effect('highlight'); + $('#issues-table').effect('highlight'); }, url: "#{sort_project_issues_path(@project)}"}) } diff --git a/app/views/issues/index.js.haml b/app/views/issues/index.js.haml index a08ffe5adbb..a534cfbf234 100644 --- a/app/views/issues/index.js.haml +++ b/app/views/issues/index.js.haml @@ -1,3 +1,3 @@ :plain - $('#issues-table tbody').html("#{escape_javascript(render('issues'))}"); + $('#issues-table').html("#{escape_javascript(render('issues'))}"); setSortable(); diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index 48fca97d230..2ef59a2f1e8 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -1,49 +1,42 @@ -%div - %span.entity-info +%h3 + Issue ##{@issue.id} + %small + created at + = @issue.created_at.stamp("Aug 21, 2011") + + %span.right + - if can?(current_user, :admin_project, @project) || @issue.author == current_user + - if @issue.closed + = link_to 'Reopen', project_issue_path(@project, @issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "btn" + - else + = link_to 'Close', project_issue_path(@project, @issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close merge request" - if can?(current_user, :admin_project, @project) || @issue.author == current_user - = link_to edit_project_issue_path(@project, @issue) do - .entity-button - Edit Issue - %i - = image_tag gravatar_icon(@issue.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" - %span.commit-title - %strong - = "Issue ##{@issue.id}:" - %span.commit-author - %strong - = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.author.id)) do - %span.author= @issue.author_name - - if @issue.author != @issue.assignee - → - = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.assignee.id)) do - %span.author= @issue.assignee_name - - - - = @issue.created_at.stamp("Aug 21, 2011 9:23pm") - - %hr - %br - %h3 - = simple_format @issue.title - -.clear -%br -%br - -.merge-tabs - = link_to "#notes", :class => "merge-notes-tab active tab" do - %span - Notes - .right - - if @issue.closed - = link_to 'Reopen', project_issue_path(@project, @issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "red-button" - - else - = link_to 'Close', project_issue_path(@project, @issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button" - -.merge-request-notes - .issue_notes= render "notes/notes" - .loading{ :style => "display:none;"} - %center= image_tag "ajax-loader.gif" - .clear + = link_to edit_project_issue_path(@project, @issue), :class => "btn small" do + Edit + +%hr +- if @issue.closed + .alert-message.error Closed +- else + .alert-message.success Open + + +%div.well + %div + %cite.cgray Created by + = image_tag gravatar_icon(@issue.author_email), :width => 16, :class => "lil_av" + = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.author.id)) do + %strong.author= @issue.author_name + + %cite.cgray and currently assigned to + = image_tag gravatar_icon(@issue.assignee_email), :width => 16, :class => "lil_av" + = link_to project_team_member_path(@project, @project.team_member_by_id(@issue.assignee.id)) do + %strong.author= @issue.assignee_name + + %hr + + %div= simple_format @issue.title + + +.issue_notes= render "notes/notes" diff --git a/app/views/keys/_form.html.haml b/app/views/keys/_form.html.haml index 1cc7e336b5f..cdabdc739d6 100644 --- a/app/views/keys/_form.html.haml +++ b/app/views/keys/_form.html.haml @@ -1,16 +1,18 @@ %div - = form_for @key, :remote => true do |f| + = form_for @key do |f| -if @key.errors.any? - %ul - - @key.errors.full_messages.each do |msg| - %li= msg + .alert-message.block-message.error + %ul + - @key.errors.full_messages.each do |msg| + %li= msg - .form-row + .clearfix = f.label :title - = f.text_field :title, :style => "width:300px" - .form-row + .input= f.text_field :title + .clearfix = f.label :key - = f.text_area :key, :style => "width:300px; height:130px" - .form-row - = f.submit 'Save', :class => "grey-button" + .input= f.text_area :key, :class => "xlarge" + .actions + = f.submit 'Save', :class => "primary btn" + = link_to "Cancel", keys_path, :class => "btn" diff --git a/app/views/keys/_show.html.haml b/app/views/keys/_show.html.haml index 3d506e425c9..81ecbfe6ba6 100644 --- a/app/views/keys/_show.html.haml +++ b/app/views/keys/_show.html.haml @@ -1,7 +1,7 @@ -%a.update-item{:href => key_path(key)} - %span.update-title - = key.title - %span.update-author - Added - = time_ago_in_words(key.created_at) - ago +%li.entry + = link_to key_path(key) do + %strong= key.title + %span.right.cgray + Added + = time_ago_in_words(key.created_at) + ago diff --git a/app/views/keys/index.html.haml b/app/views/keys/index.html.haml index 933eef63529..e6979f5e212 100644 --- a/app/views/keys/index.html.haml +++ b/app/views/keys/index.html.haml @@ -1,16 +1,10 @@ -%h2.icon - %span> +%h3 SSH Keys -%div#new-key-holder.right - = link_to "Add new", new_key_path, :remote => true, :class => "grey-button" -%br + = link_to "Add new", new_key_path, :class => "btn small right" + +%hr %div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" } - .data + %ul.unstyled - @keys.each do |key| = render(:partial => 'show', :locals => {:key => key}) - -:javascript - $('.delete-key').live('ajax:success', function() { - $(this).closest('.update-item').fadeOut(); }); - diff --git a/app/views/keys/new.html.haml b/app/views/keys/new.html.haml index fed448b4e09..743a3173706 100644 --- a/app/views/keys/new.html.haml +++ b/app/views/keys/new.html.haml @@ -1,5 +1,3 @@ -%h1 New key - +%h3 New key +%hr = render 'form' - -= link_to 'Back', keys_path diff --git a/app/views/keys/show.html.haml b/app/views/keys/show.html.haml index 9dcaa093ce5..fe7f80d591f 100644 --- a/app/views/keys/show.html.haml +++ b/app/views/keys/show.html.haml @@ -1,10 +1,7 @@ -.ui-box.width-100p - %h3= @key.title - .data - %pre= @key.key - .clear - .buttons - = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => "red-button delete-key right" - .clear +%h3= @key.title +%hr +%pre= @key.key +.actions + = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => "btn danger delete-key" diff --git a/app/views/layouts/_app_side.html.haml b/app/views/layouts/_app_side.html.haml new file mode 100644 index 00000000000..b4a97c5ad69 --- /dev/null +++ b/app/views/layouts/_app_side.html.haml @@ -0,0 +1,10 @@ +.fixed + %aside + -#= link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }" + = link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}" + = link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide" + = link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide" + - if current_user.is_admin? + = link_to admin_root_path, :class => "admin", :title => "Admin" do + Admin + = link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}" diff --git a/app/views/layouts/_flash.html.haml b/app/views/layouts/_flash.html.haml index 4011485c55d..5139aed498c 100644 --- a/app/views/layouts/_flash.html.haml +++ b/app/views/layouts/_flash.html.haml @@ -10,7 +10,7 @@ $("#flash_container").click(function(){ $(this).slideUp("slow"); }); - setTimeout("hideFlash()",2000); + setTimeout("hideFlash()",3000); }); function hideFlash(){ diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml index 5f7752283a1..7d8ceecf5b6 100644 --- a/app/views/layouts/_head_panel.html.haml +++ b/app/views/layouts/_head_panel.html.haml @@ -11,23 +11,7 @@ = truncate @project.name, :length => 28 .git_url_wrapper %input.git-url.text{:id => "", :name => "", :readonly => "", :type => "text", :value => @project.url_to_repo, :class => "one_click_select"} - - if @project.repo_exists? - .left{:style => "margin-left:5px;"} - = render :partial => "projects/refs", :locals => { :destination => controller.controller_name == "commits" ? "commits" : "tree" } - = yield :rss_icon - - else - .dashboard_links - = link_to "Activities", dashboard_path, :class => "#{"active" if current_page?(dashboard_path) || current_page?(root_path) }" - = link_to "Projects", projects_path, :class => "#{"active" if current_page?(projects_path)}" - = link_to "Issues", dashboard_issues_path, :class => "#{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide" - = link_to "Requests", dashboard_merge_requests_path, :class => "#{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide" - - if current_user.is_admin? - = link_to admin_root_path, :class => "admin", :title => "Admin" do - Admin - = link_to "Help", help_path, :class => "#{"active" if controller.controller_name == "help"}" - .search - = text_field_tag "search", nil, :placeholder => "Search", :class => "search-input" .account-box = link_to profile_path, :class => "pic" do @@ -36,16 +20,3 @@ = link_to profile_path, :class => "username" do My profile = link_to 'Logout', destroy_user_session_path, :class => "logout", :method => :delete - - if current_user - = javascript_tag do - $(function(){ - $("#search").autocomplete({ - source: #{raw search_autocomplete_source}, - select: function(event, ui) { location.href = ui.item.url } - }); - }); - - -#- if current_user.require_ssh_key? - #no_ssh_key_defined.big-message.error - %p - No SSH Key is defined. You won't be able to use any Git command!. Click #{link_to( 'here', keys_path )} to add one! diff --git a/app/views/layouts/_project_side.html.haml b/app/views/layouts/_project_side.html.haml index 00038cc373e..1e553788f85 100644 --- a/app/views/layouts/_project_side.html.haml +++ b/app/views/layouts/_project_side.html.haml @@ -6,14 +6,14 @@ - if @project.repo_exists? = link_to "Repository", project_repository_path(@project), :class => repository_tab_class - = link_to "Tree", tree_project_ref_path(@project, @ref || @project.root_ref), :class => tree_tab_class - = link_to "Commits", project_commits_path(@project, :ref => (@ref || @project.root_ref)), :class => (controller.controller_name == "commits") ? "current" : nil + = link_to "Code", tree_project_ref_path(@project, @project.root_ref), :class => tree_tab_class + = link_to "Commits", project_commits_path(@project), :class => (controller.controller_name == "commits") ? "current" : nil = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do Issues + = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do + Merge Requests = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do - Wall + @Wall - if @project.common_notes.today.count > 0 - %span{ :class => "number" }= @project.common_notes.today.count - = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do - Requests + %span.label= @project.common_notes.today.count diff --git a/app/views/layouts/_project_side_right.html.haml b/app/views/layouts/_project_side_right.html.haml new file mode 100644 index 00000000000..841f549844e --- /dev/null +++ b/app/views/layouts/_project_side_right.html.haml @@ -0,0 +1,46 @@ +%aside.project-right + - if content_for? :sidebar_all + = render :sidebar_all + - else + - if content_for? :sidebar_top_block + = yield :sidebar_top_block + - else + - if can? current_user, :write_project, @project + .alert-message.block-message.info + You have access to create new issue or merge request. + %div + = link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do + New Issue ยป + %div + = link_to new_project_merge_request_path(@project), :title => "New Merge Request", :class => "btn small" do + New Merge Request ยป + + - if current_user.projects.count > 0 + %div.entry + %h5 + Recent Projects: + %ul + - current_user.projects.order("id DESC").limit(5).each do |project| + %li + = link_to project_path(project) do + = project.name + = link_to "More ยป ", projects_path + + -#%h4 + -#Recent Issues: + -#%ul + -#- current_user.assigned_issues.order("id DESC").limit(5).each do |issue| + -#%li + -#= link_to project_issue_path(issue.project, issue) do + -#= truncate issue.title + + + -#%h4 + -#Recent Requests: + -#%ul + -#- current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue| + -#%li + -#= link_to project_merge_request_path(issue.project, issue) do + -#= truncate issue.title + + diff --git a/app/views/layouts/_projects_side.html.haml b/app/views/layouts/_projects_side.html.haml new file mode 100644 index 00000000000..a55d00045eb --- /dev/null +++ b/app/views/layouts/_projects_side.html.haml @@ -0,0 +1,38 @@ +%aside.projects + - if current_user.can_create_project? + .alert-message.block-message.info + You can create at least + = current_user.projects_limit + projects. Click on button to add a new one + = link_to new_project_path, :class => "btn small" do + New Project + + - if current_user.projects.count > 0 + %div.entry + %h5 + Recent Projects: + %ul + - current_user.projects.order("id DESC").limit(5).each do |project| + %li + = link_to project_path(project) do + = project.name + = link_to "More ยป ", projects_path + + -#%h5 + -#Your Issues: + -#%ul + -#- current_user.assigned_issues.order("id DESC").limit(5).each do |issue| + -#%li + -#= link_to project_issue_path(issue.project, issue) do + -#= truncate issue.title + + + -#%h5 + -#Your Merge Requests: + -#%ul + -#- current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue| + -#%li + -#= link_to project_merge_request_path(issue.project, issue) do + -#= truncate issue.title + + diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 2b3188056f9..0679b4050d5 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -1,6 +1,7 @@ !!! %html %head + %meta{:charset => "utf-8"} %title GitLab #{" - #{@project.name}" if @project && !@project.new_record?} = favicon_link_tag 'favicon.ico' @@ -10,19 +11,17 @@ = javascript_tag do REQ_URI = "#{request.env["REQUEST_URI"]}"; REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} + %body.admin = render :partial => "layouts/flash" - #container - = render :partial => "layouts/head_panel" - .project-container - .project-sidebar - .fixed - %aside - = link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil - = link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil - = link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil - = link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil - = link_to "Resque", "/info/resque" + = render :partial => "layouts/head_panel" + .container-fluid + .sidebar + .fixed + %aside + = link_to "Users", admin_users_path, :class => controller.controller_name == "users" ? "current" : nil + = link_to "Projects", admin_projects_path, :class => controller.controller_name == "projects" ? "current" : nil + = link_to "Teams", admin_team_members_path, :class => controller.controller_name == "team_members" ? "current" : nil + = link_to "Emails", admin_emails_path, :class => controller.controller_name == "mailer" ? "current" : nil + = link_to "Resque", "/info/resque" - .project-content - = yield + .content= yield diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index e86e5c74fa4..729d0e7fccf 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,18 +1,20 @@ !!! %html %head + %meta{:charset => "utf-8"} %title GitLab = favicon_link_tag 'favicon.ico' = stylesheet_link_tag "application" = javascript_include_tag "application" = csrf_meta_tags - = javascript_tag do - REQ_URI = "#{request.env["REQUEST_URI"]}"; - REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; - %body{ :class => body_class, :id => yield(:boyd_id)} + %body.application = render :partial => "layouts/flash" - #container - = render :partial => "layouts/head_panel" - = render :partial => "layouts/page_title" - = yield + = render :partial => "layouts/head_panel" + .container-fluid + .sidebar + = render :partial => "layouts/app_side" + .content + .row + .span10= yield + .span4= render "layouts/projects_side" diff --git a/app/views/layouts/devise.html.haml b/app/views/layouts/devise.html.haml index 882195ae58d..8e048f813ba 100644 --- a/app/views/layouts/devise.html.haml +++ b/app/views/layouts/devise.html.haml @@ -1,6 +1,7 @@ !!! %html %head + %meta{:charset => "utf-8"} %title GitLab #{" - #{@project.name}" if @project && !@project.new_record?} = favicon_link_tag 'favicon.ico' @@ -12,4 +13,4 @@ REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; %body.login-page = render :partial => "layouts/flash" - = yield + .container-fluid= yield diff --git a/app/views/layouts/profile.html.haml b/app/views/layouts/profile.html.haml index 6eeecb294be..ce41627eefe 100644 --- a/app/views/layouts/profile.html.haml +++ b/app/views/layouts/profile.html.haml @@ -1,30 +1,27 @@ !!! %html %head + %meta{:charset => "utf-8"} %title GitLab #{" - #{@project.name}" if @project && !@project.new_record?} = favicon_link_tag 'favicon.ico' = stylesheet_link_tag "application" = javascript_include_tag "application" = csrf_meta_tags - = javascript_tag do - REQ_URI = "#{request.env["REQUEST_URI"]}"; - REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} + %body.profile = render :partial => "layouts/flash" - #container - = render :partial => "layouts/head_panel" - .project-container - .project-sidebar - .fixed - %aside - = link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil - = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil - = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil - = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do - Keys - - unless current_user.keys.empty? - %span{ :class => "number" }= current_user.keys.count - - .project-content - = yield + = render :partial => "layouts/head_panel" + .container-fluid + .sidebar + %aside + = link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil + = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil + = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil + = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do + Keys + - unless current_user.keys.empty? + %span.label= current_user.keys.count + .content + .row + .span10= yield + .span4= render "layouts/projects_side" diff --git a/app/views/layouts/project.html.haml b/app/views/layouts/project.html.haml index a87b3400812..97467e4caa6 100644 --- a/app/views/layouts/project.html.haml +++ b/app/views/layouts/project.html.haml @@ -1,8 +1,10 @@ !!! %html %head + %meta{:charset => "utf-8"} %title - GitLab #{" - #{@project.name}" if @project && !@project.new_record?} + GitLab + = " - #{@project.name}" if @project && !@project.new_record? = favicon_link_tag 'favicon.ico' = stylesheet_link_tag "application" = javascript_include_tag "application" @@ -11,14 +13,16 @@ - if request.path == project_issues_path(@project) = auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, :private_token => current_user.private_token), :title => "#{@project.name} issues") = csrf_meta_tags - = javascript_tag do - REQ_URI = "#{request.env["REQUEST_URI"]}"; - REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} + %body.project = render :partial => "layouts/flash" - #container - = render :partial => "layouts/head_panel" - .project-container - = render :partial => "layouts/project_side" - .project-content + = render :partial => "layouts/head_panel" + .container-fluid + .sidebar= render :partial => "layouts/project_side" + .content + - if @full_content = yield + - else + .row + .span10= yield + .span4= render "layouts/project_side_right" + diff --git a/app/views/merge_requests/_commits.html.haml b/app/views/merge_requests/_commits.html.haml index c0d7486b704..ddc0ce19189 100644 --- a/app/views/merge_requests/_commits.html.haml +++ b/app/views/merge_requests/_commits.html.haml @@ -1,19 +1,15 @@ - if @commits.size > 0 - .merge-request-commits.ui-box.width-100p + .merge-request-commits - @commits.each do |commit| - %a{ :class => "commit", :href => project_commit_path(@project, :id => commit.id) } - - if commit.author_email - = image_tag gravatar_icon(commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" - - else - = image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;" - %span.update-title - = truncate commit.safe_message, :length => 60 - %span.update-author - %strong= commit.author_name - authored - = time_ago_in_words(commit.created_at) - ago - .clear + .entry + = link_to project_commit_path(@project, :id => commit.id) do + %strong + = truncate(commit.id.to_s, :length => 10) + = image_tag gravatar_icon(commit.author_email), :class => "", :width => 16 + %span= truncate(commit.safe_message, :length => 40) + %span.right + = time_ago_in_words(commit.committed_date) + ago - if @commits.empty? %p.cgray Nothing to merge diff --git a/app/views/merge_requests/_form.html.haml b/app/views/merge_requests/_form.html.haml index d771661b03b..cab517dc3d5 100644 --- a/app/views/merge_requests/_form.html.haml +++ b/app/views/merge_requests/_form.html.haml @@ -1,46 +1,35 @@ = form_for [@project, @merge_request] do |f| - %div - %span.entity-info - - if @merge_request.new_record? - = link_to project_merge_requests_path(@project) do - .entity-button - Merge Requests - %i - - else - = link_to project_merge_request_path(@project, @merge_request) do - .entity-button - Show Merge Request - %i + -if @merge_request.errors.any? + .alert-message.block-message.error + %ul + - @merge_request.errors.full_messages.each do |msg| + %li= msg - %h2= @merge_request.new_record? ? "New Merge Request" : "Edit Merge Request ##{@merge_request.id}" + .clearfix + = f.label :source_branch, "From" + .input= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") + .clearfix + = f.label :target_branch, "To" + .input= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") + .clearfix + = f.label :assignee_id, "Assign to" + .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px") - %hr - %table.no-borders - -if @merge_request.errors.any? - %tr - %td{:colspan => 2} - #error_explanation - - @merge_request.errors.full_messages.each do |msg| - %span= msg - %br - %tr - %td= f.label :source_branch, "From" - %td= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") - %tr - %td= f.label :target_branch, "To" - %td= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") - %tr - %td= f.label :assignee_id, "Assign to" - %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px") - = f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255 - %br - %br - .merge-tabs - = f.submit 'Save', :class => "positive-button" + .clearfix + = f.label :title + .input= f.text_area :title, :class => "xlarge", :maxlength => 255, :rows => 5 + .actions + = f.submit 'Save', :class => "primary btn" + - if @merge_request.new_record? + = link_to project_merge_requests_path(@project), :class => "btn" do + Cancel + - else + = link_to project_merge_request_path(@project, @merge_request), :class => "btn" do + Cancel - unless @merge_request.new_record? .right - = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" + = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "btn danger" diff --git a/app/views/merge_requests/_head.html.haml b/app/views/merge_requests/_head.html.haml index ccebd8ef047..3d847b302ae 100644 --- a/app/views/merge_requests/_head.html.haml +++ b/app/views/merge_requests/_head.html.haml @@ -2,11 +2,4 @@ = link_to project_merge_requests_path(@project), :class => "tab #{'active' if current_page?(project_merge_requests_path(@project)) }" do %span Merge Requests - - - - if current_page?(project_merge_requests_path(@project)) - - if can? current_user, :write_merge_request, @project - = link_to new_project_merge_request_path(@project), :class => "add_new", :title => "New Merge request" do - Add new - diff --git a/app/views/merge_requests/_merge_request.html.haml b/app/views/merge_requests/_merge_request.html.haml index 262aa661c94..33dd7e5d701 100644 --- a/app/views/merge_requests/_merge_request.html.haml +++ b/app/views/merge_requests/_merge_request.html.haml @@ -1,14 +1,17 @@ -%a.update-item{:href => project_merge_request_path(merge_request.project, merge_request)} - = image_tag gravatar_icon(merge_request.author_email), :class => "left", :width => 40 - %span.update-title - = truncate(merge_request.title, :length => 60) +%li.wll + = image_tag gravatar_icon(merge_request.author_email), :class => "avatar" %span.update-author - %strong= merge_request.author_name + %strong + = link_to project_team_member_path(@project, @project.team_member_by_id(merge_request.author_id)), :class => "author_link" do + = merge_request.author_name authored = time_ago_in_words(merge_request.created_at) ago .right - %span.tag.commit= merge_request.source_branch + %span.label= merge_request.source_branch → - %span.tag.commit= merge_request.target_branch - + %span.label= merge_request.target_branch + = link_to project_merge_request_path(merge_request.project, merge_request) do + %p + Merge Request ##{merge_request.id}: + = truncate(merge_request.title, :length => 50) diff --git a/app/views/merge_requests/edit.html.haml b/app/views/merge_requests/edit.html.haml index bcc5832792f..9e4f9327cdc 100644 --- a/app/views/merge_requests/edit.html.haml +++ b/app/views/merge_requests/edit.html.haml @@ -1 +1,4 @@ +%h3 + = "Edit merge request #{@merge_request.id}" +%hr = render 'form' diff --git a/app/views/merge_requests/index.html.haml b/app/views/merge_requests/index.html.haml index fa02be9e92c..ea2f2433aa2 100644 --- a/app/views/merge_requests/index.html.haml +++ b/app/views/merge_requests/index.html.haml @@ -1,30 +1,19 @@ -= render "merge_requests/head" +%h3 + Merge Requests + - if can? current_user, :write_issue, @project + = link_to new_project_merge_request_path(@project), :class => "right btn small", :title => "New Merge Request" do + New Merge Request -.left.issues_filter - = form_tag project_merge_requests_path(@project), :method => :get do - .left - = radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "this.form.submit()", :id => "open_merge_requests", :class => "status" - = label_tag "open_merge_requests" do - %span.tag.open Open - .left - = radio_button_tag :f, 2, params[:f] == "2", :onclick => "this.form.submit()", :id => "closed_merge_requests", :class => "status" - = label_tag "closed_merge_requests" do - %span.tag.closed Closed - -.clear %hr -- if @merge_requests.count > 0 - %div{ :class => "update-data ui-box ui-box-small ui-box-big" } - .data - = render @merge_requests - - .clear - %br +%ul.pills + %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} + = link_to project_merge_requests_path(@project, :f => 0) do + Open + %li{:class => ("active" if params[:f] == "2")} + = link_to project_merge_requests_path(@project, :f => 2) do + Closed -- unless @merge_requests.count > 0 || params[:f] == "2" - .notice_holder - %li Merge Requests do not exist yet. - - if can? current_user, :write_merge_request, @project - %li You can add a new one by clicking on "Add New" button +%hr +%ul.unstyled= render @merge_requests diff --git a/app/views/merge_requests/new.html.haml b/app/views/merge_requests/new.html.haml index bcc5832792f..efafa45d758 100644 --- a/app/views/merge_requests/new.html.haml +++ b/app/views/merge_requests/new.html.haml @@ -1 +1,3 @@ +%h3 New Merge Request +%hr = render 'form' diff --git a/app/views/merge_requests/show.html.haml b/app/views/merge_requests/show.html.haml index 6fc6d5c1bf9..6293d2d8c29 100644 --- a/app/views/merge_requests/show.html.haml +++ b/app/views/merge_requests/show.html.haml @@ -1,60 +1,64 @@ -%div - %span.entity-info +%h3 + = "Merge Request ##{@merge_request.id}:" + + %span.label= @merge_request.source_branch + → + %span.label= @merge_request.target_branch + + %small + created at + = @merge_request.created_at.stamp("Aug 21, 2011") + + %span.right + - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user + - if @merge_request.closed + = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "btn" + - else + = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close merge request" - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user - = link_to edit_project_merge_request_path(@project, @merge_request) do - .entity-button - Edit Merge Request - %i - = image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" - %span.commit-title - %strong - = "Merge Request ##{@merge_request.id}:" - - .tag.commit.inline= @merge_request.source_branch - → - .tag.commit.inline= @merge_request.target_branch - %span.commit-author - %strong - = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do - %span.author= @merge_request.author_name - → - = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do - %span.author= @merge_request.assignee_name + = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small" do + Edit - - - = @merge_request.created_at.stamp("Aug 21, 2011 9:23pm") +%hr +- if @merge_request.closed + .alert-message.error Closed +- else + .alert-message.success Open - %hr - %br - %h3 - = simple_format @merge_request.title -.clear -%br -%br +%div.well + %div + %cite.cgray Created by + = image_tag gravatar_icon(@merge_request.author_email), :width => 16, :class => "lil_av" + = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do + %strong.author= @merge_request.author_name -.merge-tabs - = link_to "#notes", :class => "merge-notes-tab active tab" do - %span - Notes - = link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do - %span - Commits - = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do - %span - Diff + %cite.cgray and currently assigned to + = image_tag gravatar_icon(@merge_request.assignee_email), :width => 16, :class => "lil_av" + = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do + %strong.author= @merge_request.assignee_name + + %hr + + + %div= simple_format @merge_request.title + + +.tabs + %li.active + = link_to "#notes", :class => "merge-notes-tab tab" do + Notes + %li + = link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do + Commits + %li + = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do + Diff - - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user - .right - - if @merge_request.closed - = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "red-button" - - else - = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button", :title => "Close merge request" %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} .merge-request-notes - .issue_notes= render "notes/notes" + .merge_request_notes= render "notes/notes" .loading{ :style => "display:none;"} %center= image_tag "ajax-loader.gif" .clear diff --git a/app/views/notes/_form.html.haml b/app/views/notes/_form.html.haml index d67ab45e8f4..7adfba8e813 100644 --- a/app/views/notes/_form.html.haml +++ b/app/views/notes/_form.html.haml @@ -1,36 +1,31 @@ -%div - = form_for [@project, @note], :remote => "true", :multipart => true do |f| - -if @note.errors.any? - .errors.error - - @note.errors.full_messages.each do |msg| - %div= msg += form_for [@project, @note], :remote => "true", :multipart => true do |f| + %h3 Leave a note + -if @note.errors.any? + .alert-message.block-message.error + - @note.errors.full_messages.each do |msg| + %div= msg - = f.hidden_field :noteable_id - = f.hidden_field :noteable_type + = f.hidden_field :noteable_id + = f.hidden_field :noteable_type + = f.text_area :note, :size => 255 - %div - = f.label :note - %cite.cgray markdown supported - %br - %br - = f.text_area :note, :size => 255 - - %div.attach_holder - %br - = f.label :attachment - %cite.cgray (less than 10 MB) - - = f.file_field :attachment - - %p.notify_controls - %span Notify: - = check_box_tag :notify, 1, @note.noteable_type != "Commit" - = label_tag :notify, "Project team" + .row + .span4 + %h5 Notify via email: + .clearfix + = label_tag :notify do + = check_box_tag :notify, 1, @note.noteable_type != "Commit" + %span Project team -if @note.noteable_type == "Commit" - = check_box_tag :notify_author, 1 , @note.noteable_type == "Commit" - = label_tag :notify_author, "Commit author" + = label_tag :notify_author do + = check_box_tag :notify_author, 1 , @note.noteable_type == "Commit" + %span Commit author + .span4.right + %h5 Attachment: + .clearfix + = f.label :attachment, "Any file, < 10 MB" + .input= f.file_field :attachment, :class => "input-file" + - .clear - %br - = f.submit 'Add note', :class => "positive-button", :id => "submit_note" + = f.submit 'Add note', :class => "btn primary", :id => "submit_note" diff --git a/app/views/notes/_per_line_form.html.haml b/app/views/notes/_per_line_form.html.haml index 72989320226..00fa3db82cd 100644 --- a/app/views/notes/_per_line_form.html.haml +++ b/app/views/notes/_per_line_form.html.haml @@ -1,29 +1,22 @@ %table{:style => "display:none;"} %tr.per_line_form %td{:colspan => 3 } - %div + %div.well = form_for [@project, @note], :remote => "true", :multipart => true do |f| + %h3 Leave a note -if @note.errors.any? - .errors.error + .alert-message.block-message.error - @note.errors.full_messages.each do |msg| %div= msg = f.hidden_field :noteable_id = f.hidden_field :noteable_type = f.hidden_field :line_code - - %div - = f.label :note - %cite.cgray markdown supported - %br - %br - = f.text_area :note, :size => 255 - - .clear - %br - = f.submit 'Add note', :class => "positive-button", :id => "submit_note" - .right - = link_to "Close", "#", :class => "grey-button hide-button" + = f.text_area :note, :size => 255 + .prepend-top-10 + = f.submit 'Add note', :class => "btn primary", :id => "submit_note" + .right + = link_to "Close", "#", :class => "btn hide-button" :javascript $(function(){ diff --git a/app/views/profile/design.html.haml b/app/views/profile/design.html.haml index 4a0f758d31f..68746fdc214 100644 --- a/app/views/profile/design.html.haml +++ b/app/views/profile/design.html.haml @@ -1,22 +1,20 @@ -.ui-box.width-100p - %h3 Design - = form_for @user, :url => profile_update_path, :method => :put do |f| - .data - .left.dark_scheme_box - %label{:for => "user_dark_scheme_false"} - = image_tag "white.png", :width => 310, :height => 212 - %center - %h4 - = f.radio_button :dark_scheme, false - White code preview - .right.dark_scheme_box - %label{:for => "user_dark_scheme_true"} - = image_tag "dark.png", :width => 310, :height => 212 - %center - %h4 - = f.radio_button :dark_scheme, true - Dark code preview - .clear - .buttons - = f.submit 'Save', :class => "grey-button" +%h3 Design +%hr += form_for @user, :url => profile_update_path, :method => :put do |f| + .row + %label.span4{:for => "user_dark_scheme_false"} + = image_tag "white.png", :width => 210 + %center + %h4 + = f.radio_button :dark_scheme, false + White code preview + %label.span4{:for => "user_dark_scheme_true"} + = image_tag "dark.png", :width => 210 + %center + %h4 + = f.radio_button :dark_scheme, true + Dark code preview + .clearfix + .actions + = f.submit 'Save', :class => "btn" diff --git a/app/views/profile/password.html.haml b/app/views/profile/password.html.haml index 893263f7d8d..3a88b1ce439 100644 --- a/app/views/profile/password.html.haml +++ b/app/views/profile/password.html.haml @@ -1,44 +1,41 @@ -.ui-box.width-100p.append-bottom-20 - %h3 Password - = form_for @user, :url => profile_password_path, :method => :put do |f| - .data - %p After successfull password update you will be redirected to login page where you should login with new password - -if @user.errors.any? - #error_explanation - %ul - - @user.errors.full_messages.each do |msg| - %li= msg +%h3 Password +%hr += form_for @user, :url => profile_password_path, :method => :put do |f| + .data + %p After successfull password update you will be redirected to login page where you should login with new password + -if @user.errors.any? + #error_explanation + %ul + - @user.errors.full_messages.each do |msg| + %li= msg - .form-row - = f.label :password - %br - = f.password_field :password - .form-row - = f.label :password_confirmation - %br - = f.password_field :password_confirmation - .buttons - = f.submit 'Save', :class => "grey-button" -.clear - -.ui-box.width-100p - %h3 - Private token - %em.cred.right - keep it in secret! - = form_for @user, :url => profile_reset_private_token_path, :method => :put do |f| - .data - %p Private token used to access application resources without authentication. - %p For example its required to access commits feed. - %hr - %p.cgray - - if current_user.private_token - = text_field_tag "token", current_user.private_token - - else - You don`t have one yet. Click generate to fix it. - .buttons + .clearfix + = f.label :password + .input= f.password_field :password + .clearfix + = f.label :password_confirmation + .input= f.password_field :password_confirmation + .actions + = f.submit 'Save', :class => "btn" + +%h3 + Private token + %span.cred.right + keep it in secret! +%hr += form_for @user, :url => profile_reset_private_token_path, :method => :put do |f| + .data + %p Private token used to access application resources without authentication. + %p For example its required to access commits feed. + %hr + %p.cgray - if current_user.private_token - = f.submit 'Reset', :confirm => "Are you sure?", :class => "grey-button" + = text_field_tag "token", current_user.private_token - else - = f.submit 'Generate', :class => "positive-button" + You don`t have one yet. Click generate to fix it. + .actions + - if current_user.private_token + = f.submit 'Reset', :confirm => "Are you sure?", :class => "btn" + - else + = f.submit 'Generate', :class => "btn" diff --git a/app/views/profile/show.html.haml b/app/views/profile/show.html.haml index 8ebb4dcb713..723b6413d55 100644 --- a/app/views/profile/show.html.haml +++ b/app/views/profile/show.html.haml @@ -1,38 +1,32 @@ -.ui-box.width-100p - %h3= @user.name - = form_for @user, :url => profile_update_path, :method => :put do |f| - .data - .left - -if @user.errors.any? - #error_explanation - %ul - - @user.errors.full_messages.each do |msg| - %li= msg +.media-grid + = link_to "#" do + = image_tag gravatar_icon(@user.email, 90), :class => "thumbnail" + %h3.media_h= @user.name - .form-row - = f.label :name - %br - = f.text_field :name - .form-row - = f.label :email - %br - = f.text_field :email - .form-row - = f.label :skype - %br - = f.text_field :skype - .form-row - = f.label :linkedin - %br - = f.text_field :linkedin - .form-row - = f.label :twitter - %br - = f.text_field :twitter +%hr - .right - = image_tag gravatar_icon(current_user.email,64), :width => 64, :style => "margin:5px; border:5px solid #eee;" - .clear - .buttons - = f.submit 'Save', :class => "grey-button" += form_for @user, :url => profile_update_path, :method => :put do |f| + -if @user.errors.any? + %div.alert-message.block-message.error + %ul + - @user.errors.full_messages.each do |msg| + %li= msg + + .clearfix + = f.label :name + .input= f.text_field :name + .clearfix + = f.label :email + .input= f.text_field :email + .clearfix + = f.label :skype + .input= f.text_field :skype + .clearfix + = f.label :linkedin + .input= f.text_field :linkedin + .clearfix + = f.label :twitter + .input= f.text_field :twitter + + = f.submit 'Save', :class => "primary btn" diff --git a/app/views/projects/_feed.html.haml b/app/views/projects/_feed.html.haml index 4f8e59f8c51..e399f5cab9a 100644 --- a/app/views/projects/_feed.html.haml +++ b/app/views/projects/_feed.html.haml @@ -1,79 +1,29 @@ -- if update.kind_of?(Note) - %a.project-update.titled{:href => dashboard_feed_path(project, update)} - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 - %span.update-title - = dashboard_feed_title(update) - %span.update-author - %strong= update.author_name - = time_ago_in_words(update.created_at) - ago - - noteable = update.target - - if noteable.kind_of?(MergeRequest) - .title-block - %span.update-title - %span.commit.tag - Merge Request # - = noteable.id - %span.update-author - %span= noteable.source_branch +%li.wll + .row + .span9 + = image_tag gravatar_icon(update.author_email), :class => "avatar thumb" + %p + %strong.author= update.author_name + %span + – + authored + = time_ago_in_words(update.created_at) + ago + - if update.kind_of? MergeRequest + = link_to project_merge_request_path(@project, update) do + = "Opened merge request ##{update.id}." + %span.label= update.source_branch → - %span= noteable.target_branch - - - elsif noteable.kind_of?(Issue) - .title-block - %span.update-title - %span.commit.tag - Issue # - = noteable.id - %span.update-author - .left= truncate noteable.title - - - elsif noteable.kind_of?(Commit) - .title-block - %span.update-title - %span.commit.tag - commit - %span.update-author - .left= truncate noteable.id - - else - .title-block - %span.update-title - %span.commit.tag - Project Wall - - -- elsif update.kind_of?(MergeRequest) - %a.project-update.titled{:href => project_merge_request_path(project, update)} - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 - %span.update-title - Opened merge request - %span.update-author - %strong= update.author_name - = time_ago_in_words(update.created_at) - ago - .title-block - %span.update-title - %span.commit.tag - Merge Request # - = update.id - %span.update-author - %span= update.source_branch - → - %span= update.target_branch - -- elsif update.kind_of?(Issue) - %a.project-update.titled{:href => dashboard_feed_path(project, update)} - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 - %span.update-title - Created new Issue - %span.update-author - %strong= update.author_name - = time_ago_in_words(update.created_at) - ago - .title-block - %span.update-title - %span.commit.tag - Issue # - = update.id - %span.update-author - .left= truncate update.title + %span.label= update.target_branch + - elsif update.kind_of? Issue + = link_to project_issue_path(@project, update) do + Opened new + %span.label.important= "issue ##{update.id}" + = truncate update.title + - else + = link_to [@project, update.target] do + %p + = update.target.class.name.titleize + = truncate(update.target.id.to_s, :length => 10) + + = dashboard_feed_title(update) diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml index 421e8409824..44b72336051 100644 --- a/app/views/projects/_form.html.haml +++ b/app/views/projects/_form.html.haml @@ -1,67 +1,38 @@ = form_for(@project, :remote => true) do |f| - %div.form_content - - unless @project.new_record? - %h2.icon - %span - = @project.name - .clear - - if @project.errors.any? - %ul.errors_holder + - if @project.errors.any? + .alert-message.block-message.error + %ul - @project.errors.full_messages.each do |msg| %li= msg - %table - %tr - %td= f.label :name - %td= f.text_field :name, :placeholder => "Example Project" - %tr - %td - .left= f.label :path - %cite.right= "git@#{GIT_HOST["host"]}:" - %td - = f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record? - %tr - %td - .left= f.label :code - %cite.right= "http://#{GIT_HOST["host"]}/" - %td= f.text_field :code, :placeholder => "example" + .clearfix + = f.label :name + .input= f.text_field :name, :placeholder => "Example Project" + .clearfix + = f.label :path do + Path + %cite= "git@#{GIT_HOST["host"]}:" + .input= f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record? + .clearfix + = f.label :code do + Code + %cite= "http://#{GIT_HOST["host"]}/" + .input= f.text_field :code, :placeholder => "example" - - unless @project.new_record? || @project.heads.empty? - %tr - %td= f.label :default_branch, "Default Branch" - %td= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;") + - unless @project.new_record? || @project.heads.empty? + .clearfix + = f.label :default_branch, "Default Branch" + .input= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:210px;") - -#%tr - %td= f.label :tag_list - %td= f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field - %tr - %td= f.label :description - %td= f.text_area :description, :placeholder => "project description", :style => "height:50px" + + .clearfix + = f.label :description + .input= f.text_area :description, :placeholder => "project description", :style => "height:50px" - %br - %div{ :class => "ajax_loader", :style => "display:none;height:200px;"} - %center - = image_tag "ajax-loader.gif", :class => "append-bottom" - - if @project.new_record? - %h3.prepend-top Creating project & repository. Please wait for few minutes - - else - %h3.prepend-top Updating project & repository. Please wait for few minutes + %br - .merge-tabs - = f.submit 'Save', :class => "grey-button" - + .actions + = f.submit 'Save', :class => "btn primary" + = link_to 'Cancel', @project, :class => "btn" - unless @project.new_record? .right - = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "red-button" - - -:javascript - $(function(){ - $('.new_project, .edit_project').bind('ajax:before', function() { - $(this).find(".form_content").hide(); - $('.ajax_loader').show(); - }); - - taggifyForm(); - - $('form #project_default_branch').chosen(); - }) + = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "btn danger" diff --git a/app/views/projects/_project_head.html.haml b/app/views/projects/_project_head.html.haml index cbcd0660e10..0d56b43970e 100644 --- a/app/views/projects/_project_head.html.haml +++ b/app/views/projects/_project_head.html.haml @@ -1,27 +1,30 @@ -.top-tabs - = link_to project_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_path(@project)) }" do - %span - Activities - = link_to info_project_path(@project), :class => "stat-tab tab #{'active' if current_page?(info_project_path(@project)) || current_page?(edit_project_path(@project)) }" do - %span - Info - = link_to team_project_path(@project), :class => "team-tab tab #{'active' if current_page?(team_project_path(@project)) }" do - %span - Team - = link_to files_project_path(@project), :class => "files-tab tab #{'active' if current_page?(files_project_path(@project)) }" do - %span - Files - = link_to project_snippets_path(@project), :class => "snippets-tab tab #{'active' if current_page?(project_snippets_path(@project)) }" do - %span - Snippets +%ul.tabs + %li{ :class => "#{'active' if current_page?(project_path(@project)) }" } + = link_to project_path(@project), :class => "activities-tab tab" do + Activities + %li{ :class => "#{'active' if current_page?(info_project_path(@project)) || current_page?(edit_project_path(@project)) }" } + = link_to info_project_path(@project), :class => "stat-tab tab " do + Info + + %li{ :class => " #{'active' if current_page?(team_project_path(@project)) }" } + = link_to team_project_path(@project), :class => "team-tab tab" do + Team + %li{ :class => "#{'active' if current_page?(files_project_path(@project)) }" } + = link_to files_project_path(@project), :class => "files-tab tab " do + Files + %li{ :class => " #{'active' if current_page?(project_snippets_path(@project)) }" } + = link_to project_snippets_path(@project), :class => "snippets-tab tab" do + Snippets - if current_page?(project_snippets_path(@project)) - if can? current_user, :write_snippet, @project - = link_to new_project_snippet_path(@project), :class => "add_new", :title => "New Snippet" do - Add new + %li + = link_to new_project_snippet_path(@project), :class => "add_new", :title => "New Snippet" do + Add new - if current_page?(team_project_path(@project)) - if can? current_user, :admin_team_member, @project - = link_to new_project_team_member_path(@project), :class => "add_new", :title => "New Team Member" do - Add New + %li + = link_to new_project_team_member_path(@project), :class => "add_new", :title => "New Team Member" do + Add New diff --git a/app/views/projects/_team.html.haml b/app/views/projects/_team.html.haml index 3d033a85913..7271479e1d8 100644 --- a/app/views/projects/_team.html.haml +++ b/app/views/projects/_team.html.haml @@ -1,10 +1,4 @@ -%table.no-borders#team-table - %thead - %th Name - %th Project - %th Repository - - if can? current_user, :admin_team_member, @project - %th Actions +%ul.media-grid - @project.users_projects.each do |up| = render(:partial => 'team_members/show', :locals => {:member => up}) @@ -15,5 +9,7 @@ }); }) + /* $('.delete-team-member').live('ajax:success', function() { $(this).closest('tr').fadeOut(); }); + */ diff --git a/app/views/projects/_tile.html.haml b/app/views/projects/_tile.html.haml index d9549045058..360cf340170 100644 --- a/app/views/projects/_tile.html.haml +++ b/app/views/projects/_tile.html.haml @@ -1,20 +1,11 @@ -- @projects.in_groups_of(3, false) do |projects| - - projects.each_with_index do |project, i| - %div.grid_1.projects_selector - %div{ :class => "project-box ui-box ui-box-big" } +- @projects.in_groups_of(2, false) do |projects| + .row + - projects.each_with_index do |project, i| + .span4.well = link_to project_path(project) do %h3= truncate(project.name, :length => 20) - .data - %p.title.repository.git_url_wrapper - %span Repository: - %input{ :value => project.url_to_repo, :class => ['git-url', 'one_click_select', 'text', 'project_list_url'], :readonly => 'readonly' } - %p.title.activity - %span Last Activity: - - if project.last_activity_date_cached - = project.last_activity_date_cached.stamp("Aug 24, 2011") - - else - Never + %p.title.repository.git_url_wrapper + %input{ :value => project.url_to_repo, :class => ['git-url', 'one_click_select', 'text', 'project_list_url'], :readonly => 'readonly' } - .buttons - %a.browse-code.button.yellow{:href => tree_project_ref_path(project, project.root_ref)} Browse code - %a.commits.button.green{:href => project_commits_path(project)} Commits + %a.btn{:href => tree_project_ref_path(project, project.root_ref)} Browse code + %a.btn{:href => project_commits_path(project)} Commits diff --git a/app/views/projects/create.js.haml b/app/views/projects/create.js.haml index c457527aed4..2b3106c8222 100644 --- a/app/views/projects/create.js.haml +++ b/app/views/projects/create.js.haml @@ -4,3 +4,4 @@ - else :plain $("#new_project").replaceWith("#{escape_javascript(render('form'))}"); + $('.ajax_loader').hide(); diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index 69e0f218ecd..be8aae7d712 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -1,69 +1,29 @@ = render "project_head" - -= form_for(@project, :remote => true) do |f| - %div - %span.entity-info - = link_to info_project_path(@project) do - .entity-button - Info - %i - %h2= @project.name - %hr - %table.no-borders - -if @project.errors.any? - %tr - %td{:colspan => 2} - #error_explanation - - @project.errors.full_messages.each do |msg| - %span= msg - %br - - %tr - %td= f.label :name - %td= f.text_field :name, :placeholder => "Example Project" - %tr - %td - .left= f.label :path - %cite.right= "git@#{GIT_HOST["host"]}:" - %td - = f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record? - %tr - %td - .left= f.label :code - %cite.right= "http://#{GIT_HOST["host"]}/" - %td= f.text_field :code, :placeholder => "example" - - - unless @project.new_record? || @project.heads.empty? - %tr - %td= f.label :default_branch, "Default Branch" - %td= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;") - - %tr - %td= f.label :description - %td= f.text_area :description, :placeholder => "project description", :style => "height:50px" - - %br - - .merge-tabs - = f.submit 'Save', :class => "grey-button" - - - unless @project.new_record? - .right - = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "red-button" - +%h3 Edit Project +%hr += render "projects/form" %div{ :class => "ajax_loader", :style => "display:none;height:200px;"} %center = image_tag "ajax-loader.gif", :class => "append-bottom" - %h3.prepend-top Updating project & repository. Please wait for few minutes + %h3.prepend-top Saving project & repository. Please wait... :javascript - $('.edit_project').bind('ajax:before', function() { - $(".edit_project").hide(); - $('.ajax_loader').show(); + $(function(){ + $("#project_name").live("change", function(){ + var slug = slugify($(this).val()); + $("#project_code").val(slug); + $("#project_path").val(slug); + }); }); -:javascript + function slugify(text) { + return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); + } + $(function(){ - $('#project_default_branch').chosen(); + $('.edit_project').live('ajax:before', function() { + $(this).hide(); + $('.ajax_loader').show(); + }); + $('form #project_default_branch').chosen(); }) - diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index dda64ea77da..0811f82e152 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -1,13 +1,14 @@ - if current_user.require_ssh_key? - %ul.errors_holder - %li You have no ssh keys added to your profile. - %li You wont be able to pull/push repository. - %li Visit profile → keys and add public key of every machine you want to use for work with gitlabhq. + .alert-message.block-message.error + %ul + %li You have no ssh keys added yo tour profile. + %li You wont be able to pull/push repository. + %li Visit profile → keys and add public key of every machine you want to use for work with gitlabhq. - -%ul.alert_holder - %li You should push repository to proceed. - %li After push you will be able to browse code, commits etc. +.alert-message.block-message.error + %ul.alert_holder + %li You should push repository to proceed. + %li After push you will be able to browse code, commits etc. - bash_lexer = Pygments::Lexer[:bash] %div.git-empty diff --git a/app/views/projects/graph.html.haml b/app/views/projects/graph.html.haml index 9dc973d7a46..7f001c6333e 100644 --- a/app/views/projects/graph.html.haml +++ b/app/views/projects/graph.html.haml @@ -1,8 +1,6 @@ -.top-tabs - = link_to graph_project_path(@project), :class => "tab #{'active' if current_page?(graph_project_path(@project)) }" do - %span - Network Graph -#holder.graph +%h3 Network Graph +%hr +#holder.graph.well :javascript var chunk1={commits:#{@commits_json}}; diff --git a/app/views/projects/index.html.haml b/app/views/projects/index.html.haml index 8a4343b05ef..c52a7f85819 100644 --- a/app/views/projects/index.html.haml +++ b/app/views/projects/index.html.haml @@ -1,29 +1,19 @@ -- content_for(:body_class, "projects-page") -.container_4 - .grid_4 - - if current_user.can_create_project? - %a.grey-button.right{:href => new_project_path} Create new project - %h2.icon - %span - Projects +%h3 + Projects + %small= "( #{current_user.projects.count} )" +%hr +- unless @projects.empty? + %div.tile= render "tile" - %div.clear - - unless @projects.empty? - %div{:class => "tile"} - = render "tile" + -# If projects requris paging + -# We add ajax loader & init script + - if @projects.count == @limit + .loading{ :style => "display:none;"} + %center= image_tag "ajax-loader.gif" - -# If projects requris paging - -# We add ajax loader & init script - - if @projects.count == @limit - .clear - .loading{ :style => "display:none;"} - %center= image_tag "ajax-loader.gif" - - :javascript - $(function(){ - ProjectsList.init(16); - }); - - else - %center.prepend-top - %h2 - %cite Nothing here + :javascript + $(function(){ + ProjectsList.init(16); + }); +- else + %h2 Nothing here diff --git a/app/views/projects/info.html.haml b/app/views/projects/info.html.haml index 787ad06d30e..513b2ab2cd4 100644 --- a/app/views/projects/info.html.haml +++ b/app/views/projects/info.html.haml @@ -1,15 +1,14 @@ = render "project_head" +%h3= @project.name +%br -%div - %span.entity-info - = link_to edit_project_path(@project) do - .entity-button - Edit - %i - %h2= @project.name - %hr + + +%pre + = "git clone #{@project.url_to_repo}" -%table.no-borders + +%table %tr %td Name %td= @project.name @@ -17,6 +16,36 @@ %tr %td Slug %td= @project.code + + %tr + %td Path + %td= @project.path + + %tr + %td Owner + %td= link_to @project.owner.name, project_team_member_path(@project, @project.team_member_by_id(@project.owner)) + + %tr + %td Last commit + %td + = time_ago_in_words(@project.commit.committed_date) + ago + + %tr + %td Team + %td + = @project.users_projects.count + users + + %tr + %td Open Issues + %td + = @project.issues.opened.count + + %tr + %td Merge Requests + %td + = @project.merge_requests.opened.count %tr %td Created @@ -25,4 +54,6 @@ %tr %td{:colspan => 2}= simple_format @project.description +.actions + = link_to "Edit", edit_project_path(@project), :class => "btn" diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml index 02ddc683851..5883e7b8890 100644 --- a/app/views/projects/new.html.haml +++ b/app/views/projects/new.html.haml @@ -1,17 +1,14 @@ -- content_for(:body_class, "new-project-page") -- content_for(:page_title) do - .new-project-hodler - .container - %h2.icon - %span - New Project - - %div.clear - = render 'form' +%h3 New Project +%hr += render 'form' +%div{ :class => "ajax_loader", :style => "display:none;height:200px;"} + %center + = image_tag "ajax-loader.gif", :class => "append-bottom" + %h3.prepend-top Creating project & repository. Please wait for few minutes :javascript $(function(){ - $("#project_name").change(function(){ + $("#project_name").live("change", function(){ var slug = slugify($(this).val()); $("#project_code").val(slug); $("#project_path").val(slug); @@ -21,3 +18,11 @@ function slugify(text) { return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); } + + $(function(){ + $('.new_project').live('ajax:before', function() { + $(this).hide(); + $('.ajax_loader').show(); + }); + $('form #project_default_branch').chosen(); + }) diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 2eb220b589a..d388f5bd52d 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -1,13 +1,21 @@ -- content_for(:body_class, "project-page dashboard") - = render "project_head" -#news-feed.news-feed - .project-box.project-updates - - @activities.each do |update| - = render "projects/feed", :update => update, :project => @project - -:javascript - function updateDashboard(){ - $('.project-content').load("#{escape_javascript(project_path(@project))} .project-content>*"); - } - setInterval("updateDashboard()", 300000); +- @activities.each do |update| + .alert-message.entry + = link_to dashboard_feed_path(@project, update) do + - if update.kind_of? Note + %p + %strong + = update.target.class.name.titleize + = truncate update.target.id.to_s, :length => 10 + commented + – + = image_tag gravatar_icon(update.author_email), :class => "", :width => 16 + = truncate dashboard_feed_title(update), :length => 50 + - else + %p + %strong + = update.class.name.titleize + = truncate update.id.to_s + – + = image_tag gravatar_icon(update.author_email), :class => "", :width => 16 + = truncate dashboard_feed_title(update), :length => 50 diff --git a/app/views/projects/update.js.haml b/app/views/projects/update.js.haml index 70d8490ebe2..4c69128b297 100644 --- a/app/views/projects/update.js.haml +++ b/app/views/projects/update.js.haml @@ -4,3 +4,4 @@ - else :plain $(".edit_project").replaceWith("#{escape_javascript(render('form'))}"); + $('.ajax_loader').hide(); diff --git a/app/views/refs/_tree.html.haml b/app/views/refs/_tree.html.haml index 0ab69574cee..9a17bb80a5e 100644 --- a/app/views/refs/_tree.html.haml +++ b/app/views/refs/_tree.html.haml @@ -1,19 +1,25 @@ -#tree-breadcrumbs - %div +%ul.breadcrumb + %li + = form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form left", :remote => true do + = select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select" + = hidden_field_tag :destination, "tree" + = hidden_field_tag :path, params[:path] + + %li = link_to tree_project_ref_path(@project, @ref, :path => nil), :remote => true do = @project.code - - tree.breadcrumbs(6) do |link| - \/ - = link - - %span.tree_progress + - tree.breadcrumbs(6) do |link| + \/ + %li= link .clear +%div.tree_progress + = image_tag "ajax-loader.gif" #tree-content-holder - if tree.is_blob? = render :partial => "refs/tree_file", :locals => { :name => tree.name, :content => tree.data, :file => tree } - else - contents = tree.contents - %table#tree-slider.no-borders + %table#tree-slider %thead %th Name %th Last Update @@ -43,12 +49,20 @@ - else = simple_format(content.data) +- if params[:path] + - history_path = tree_file_project_ref_path(@project, @ref, params[:path]) +- else + - history_path = tree_project_ref_path(@project, @ref) :javascript $(function(){ $('select#branch').selectmenu({style:'popup', width:200}); $('select#tag').selectmenu({style:'popup', width:200}); + $('.project-refs-select').chosen(); + + history.pushState({ path: this.path }, '', "#{history_path}") }); + - if params[:path] && request.xhr? :javascript $(window).unbind('popstate'); diff --git a/app/views/repositories/_feed.html.haml b/app/views/repositories/_feed.html.haml index f163b477d2c..3d99b8eae42 100644 --- a/app/views/repositories/_feed.html.haml +++ b/app/views/repositories/_feed.html.haml @@ -1,15 +1,13 @@ -%a.project-update.titled{:href => project_commits_path(project, :ref => update.head.name)} - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 - %span.update-title - = dashboard_feed_title(update) - %span.update-author - %strong= update.author_name - authored - = time_ago_in_words(update.created_at) - ago - .title-block - %span.update-title - %span.commit.tag= update.head.name - %span.update-author - .left= truncate update.commit.id - +- commit = update +.alert-message.entry + = link_to project_commits_path(@project, :ref => commit.head.name) do + %p + %strong + = commit.head.name + – + = truncate(commit.id.to_s, :length => 10) + = image_tag gravatar_icon(commit.author_email), :class => "", :width => 16 + = truncate(commit.safe_message, :length => 40) + %span.right + = time_ago_in_words(commit.committed_date) + ago diff --git a/app/views/repositories/_head.html.haml b/app/views/repositories/_head.html.haml index 0095098e894..37360d48a62 100644 --- a/app/views/repositories/_head.html.haml +++ b/app/views/repositories/_head.html.haml @@ -1,28 +1,23 @@ -.top-tabs.repository - = link_to project_repository_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_repository_path(@project)) }" do - %span - Activities - = link_to branches_project_repository_path(@project), :class => "tab #{'active' if current_page?(branches_project_repository_path(@project)) }" do - %span - Branches - = link_to tags_project_repository_path(@project), :class => "tab #{'active' if current_page?(tags_project_repository_path(@project)) }" do - %span - Tags - = link_to project_hooks_path, :class => "tab #{'active' if controller.controller_name == "hooks" }" do - %span - Hooks - - if can? current_user, :admin_project, @project - = link_to project_deploy_keys_path(@project), :class => "tab #{'active' if controller.controller_name == "deploy_keys"}" do +%ul.tabs + %li{:class => "#{'active' if current_page?(project_repository_path(@project)) }"} + = link_to project_repository_path(@project) do %span - Deploy Keys - - - if current_page?(project_hooks_path(@project)) - - if can? current_user, :admin_project, @project - = link_to new_project_hook_path(@project), :class => "add_new", :title => "New Web Hook" do - Add new - - - if current_page?(project_deploy_keys_path(@project)) + Activities + %li{:class => "#{'active' if current_page?(branches_project_repository_path(@project)) }"} + = link_to branches_project_repository_path(@project) do + %span + Branches + %li{:class => "#{'active' if current_page?(tags_project_repository_path(@project)) }"} + = link_to tags_project_repository_path(@project) do + %span + Tags + %li{:class => "#{'active' if controller.controller_name == "hooks" }"} + = link_to project_hooks_path do + %span + Hooks + %li{:class => "#{'active' if controller.controller_name == "deploy_keys"}"} - if can? current_user, :admin_project, @project - = link_to new_project_deploy_key_path(@project), :class => "add_new", :title => "New Deploy Key" do - Add new + = link_to project_deploy_keys_path(@project) do + %span + Deploy Keys diff --git a/app/views/repositories/branches.html.haml b/app/views/repositories/branches.html.haml index befa88cc8d0..d817ab5147f 100644 --- a/app/views/repositories/branches.html.haml +++ b/app/views/repositories/branches.html.haml @@ -1,13 +1,20 @@ = render "head" - unless @branches.empty? - %div.update-data.ui-box.ui-box-small - .data + %table + %thead + %tr + %th Name + %th Last commit + %tbody - @branches.each do |branch| - %a.update-item{:href => project_commits_path(@project, :ref => branch.name)} - %span.update-title{:style => "margin-bottom:0px;"} - = branch.name - %span.update-author.right - = time_ago_in_words(branch.commit.committed_date) - ago -- else - %h3 No brances + %tr + %td + = link_to project_commits_path(@project, :ref => branch.name) do + %strong= branch.name + - if branch.name == @project.root_ref + %span.label default + %td + = link_to project_commits_path(@project, branch.commit.id) do + = truncate branch.commit.id.to_s, :length => 10 + = time_ago_in_words(branch.commit.committed_date) + ago diff --git a/app/views/repositories/show.html.haml b/app/views/repositories/show.html.haml index 3c9208cbd4b..91dd8ee663d 100644 --- a/app/views/repositories/show.html.haml +++ b/app/views/repositories/show.html.haml @@ -1,8 +1,5 @@ -- content_for(:body_class, "project-page dashboard") = render "head" - -#news-feed.news-feed - .project-box.project-updates - - @activities.each do |update| - = render "repositories/feed", :update => update, :project => @project +%ul.unstyled + - @activities.each do |update| + = render "repositories/feed", :update => update, :project => @project diff --git a/app/views/team_members/_show.html.haml b/app/views/team_members/_show.html.haml index b0e8f17204f..65c8aa0630c 100644 --- a/app/views/team_members/_show.html.haml +++ b/app/views/team_members/_show.html.haml @@ -1,19 +1,19 @@ - user = member.user - allow_admin = can? current_user, :admin_project, @project -%tr{:id => dom_id(member)} - %td - = link_to image_tag(gravatar_icon(user.email), :class => "left", :width => 40, :style => "padding:0 5px;"), project_team_member_path(@project, member) +%li{:id => dom_id(member)} + = link_to project_team_member_path(@project, member), :title => user.name do + = image_tag gravatar_icon(user.email, 90), :class => "thumbnail" + .row + .span6 + %h4 + = truncate(user.name, :lenght => 24) + %small= truncate user.email, :lenght => 24 - = link_to truncate(user.name, :lenght => 24), project_team_member_path(@project, member) - %br - .cgray{:style => "padding-top:10px;"}= truncate user.email, :lenght => 24 - %td + .span3 = form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f| - = f.select :project_access, options_for_select(Project.access_options, member.project_access), {}, :class => "project-access-select", :disabled => !allow_admin - %td + = f.select :project_access, options_for_select(Project.access_options, member.project_access), {}, :class => "medium project-access-select", :disabled => !allow_admin + .span3 = form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f| - = f.select :repo_access, options_for_select(Repository.access_options, member.repo_access), {}, :class => "repo-access-select", :disabled => !allow_admin - - if allow_admin - %td - = link_to 'Cancel', project_team_member_path(:project_id => @project, :id => member.id), :confirm => 'Are you sure?', :method => :delete, :class => "grey-button negative delete-team-member", :remote => true - + = f.select :repo_access, options_for_select(Repository.access_options, member.repo_access), {}, :class => "medium repo-access-select", :disabled => !allow_admin + - if @project.owner == user + %span.label Project Owner diff --git a/app/views/team_members/show.html.haml b/app/views/team_members/show.html.haml index 6293eee9789..3712819aace 100644 --- a/app/views/team_members/show.html.haml +++ b/app/views/team_members/show.html.haml @@ -1,21 +1,13 @@ - allow_admin = can? current_user, :admin_project, @project - user = @team_member.user %div - %span.entity-info - = link_to team_project_path(@project) do - .entity-button - Team - %i + = link_to team_project_path(@project), :class => "btn right" do + Team ยป - = image_tag gravatar_icon(user.email), :class => "left", :width => 40, :style => "padding-right:5px;" - %span.commit-title - %strong - = user.name - %span.commit-author - %strong - = user.email - %hr - %br + .media-grid + = link_to "#" do + = image_tag gravatar_icon(user.email, 90), :class => "thumbnail" + %h3.media_h= user.name %table.no-borders %tr @@ -59,9 +51,8 @@ %td= user.twitter - if can? current_user, :admin_project, @project - .merge-tabs - .right - = link_to 'Remove from team', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" + .actions + = link_to 'Remove from team', project_team_member_path(:project_id => @project, :id => @team_member.id), :confirm => 'Are you sure?', :method => :delete, :class => "btn danger" :javascript $(function(){ diff --git a/config/routes.rb b/config/routes.rb index df079238767..05d96e91d9c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -106,5 +106,5 @@ Gitlab::Application.routes.draw do end resources :notes, :only => [:create, :destroy] end - root :to => "dashboard#index" + root :to => "projects#index" end diff --git a/spec/requests/commits_spec.rb b/spec/requests/commits_spec.rb index f79e9753c48..e4195ed8c4a 100644 --- a/spec/requests/commits_spec.rb +++ b/spec/requests/commits_spec.rb @@ -22,8 +22,8 @@ describe "Commits" do end it "should list commits" do - page.should have_content(commit.author) page.should have_content(commit.message) + page.should have_content(commit.id.to_s[0..5]) end it "should render atom feed" do diff --git a/spec/requests/dashboard_issues_spec.rb b/spec/requests/dashboard_issues_spec.rb index 46c5553e155..29c79313f7e 100644 --- a/spec/requests/dashboard_issues_spec.rb +++ b/spec/requests/dashboard_issues_spec.rb @@ -34,11 +34,9 @@ describe "User Issues Dashboard" do it { should have_content(@issue1.title[0..10]) } it { should have_content(@issue1.project.name) } - it { should have_content(@issue1.assignee.name) } it { should have_content(@issue2.title[0..10]) } it { should have_content(@issue2.project.name) } - it { should have_content(@issue2.assignee.name) } describe "atom feed", :js => false do it "should render atom feed via private token" do diff --git a/spec/requests/dashboard_merge_requests_spec.rb b/spec/requests/dashboard_merge_requests_spec.rb index e591609547e..f345a858ac8 100644 --- a/spec/requests/dashboard_merge_requests_spec.rb +++ b/spec/requests/dashboard_merge_requests_spec.rb @@ -34,14 +34,7 @@ describe "User MergeRequests" do it { should have_content(@merge_request1.title[0..10]) } it { should have_content(@merge_request1.project.name) } - it { should have_content(@merge_request1.target_branch) } - it { should have_content(@merge_request1.source_branch) } - it { should have_content(@merge_request1.assignee.name) } - it { should have_content(@merge_request2.title[0..10]) } it { should have_content(@merge_request2.project.name) } - it { should have_content(@merge_request2.target_branch) } - it { should have_content(@merge_request2.source_branch) } - it { should have_content(@merge_request2.assignee.name) } end end diff --git a/spec/requests/dashboard_spec.rb b/spec/requests/dashboard_spec.rb index 69ddd1758ba..98de046fee1 100644 --- a/spec/requests/dashboard_spec.rb +++ b/spec/requests/dashboard_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' - +__END__ +# Disabled for now describe "Dashboard" do before do @project = Factory :project diff --git a/spec/requests/issues_spec.rb b/spec/requests/issues_spec.rb index 62daf168b78..bff99531ee7 100644 --- a/spec/requests/issues_spec.rb +++ b/spec/requests/issues_spec.rb @@ -51,17 +51,17 @@ describe "Issues" do # admin access to remove issue @user.users_projects.destroy_all project.add_access(@user, :read, :write, :admin) - visit project_issues_path(project) + visit edit_project_issue_path(project, @issue) end it "should remove entry" do expect { - click_link "destroy_issue_#{@issue.id}" + click_link "Remove" }.to change { Issue.count }.by(-1) end end - describe "statuses", :js => true do + describe "statuses" do before do @closed_issue = Factory :issue, :author => @user, @@ -76,13 +76,13 @@ describe "Issues" do end it "should show only closed" do - choose "closed_issues" + click_link "Closed" should have_no_content(@issue.title) should have_content(@closed_issue.title[0..25]) end it "should show all" do - choose "all_issues" + click_link "All" should have_content(@issue.title[0..25]) should have_content(@closed_issue.title[0..25]) end @@ -182,7 +182,6 @@ describe "Issues" do :assignee => @user, :project => project visit project_issues_path(project) - page.execute_script("$('.action-links').css('display', 'block');") click_link "Edit" end @@ -200,7 +199,6 @@ describe "Issues" do it "should update issue fields" do click_button "Save" - page.should_not have_content("Issue ##{@issue.id}") page.should have_content @user.name page.should have_content "bug 345" page.should have_content project.name @@ -226,7 +224,7 @@ describe "Issues" do @issue.save visit project_issues_path(project) - choose 'closed_issues' + click_link 'Closed' fill_in 'issue_search', :with => 'foobar' page.should have_content 'foobar' diff --git a/spec/requests/keys_spec.rb b/spec/requests/keys_spec.rb index be1f42a497c..2bc7c75ba0d 100644 --- a/spec/requests/keys_spec.rb +++ b/spec/requests/keys_spec.rb @@ -26,14 +26,14 @@ describe "Issues" do end end - describe "New key", :js => true do + describe "New key" do before do visit keys_path click_link "Add new" end it "should open new key popup" do - page.should have_content("Add new public key") + page.should have_content("New key") end describe "fill in" do @@ -47,7 +47,7 @@ describe "Issues" do it "should add new key to table" do click_button "Save" - page.should_not have_content("Add new public key") + page.should_not have_content("New key") page.should have_content "laptop" end end diff --git a/spec/requests/merge_requests_spec.rb b/spec/requests/merge_requests_spec.rb index 7d9fd67b926..f7b7e919ca8 100644 --- a/spec/requests/merge_requests_spec.rb +++ b/spec/requests/merge_requests_spec.rb @@ -42,9 +42,7 @@ describe "MergeRequests" do it { should have_content(@merge_request.title[0..10]) } it "Show page should inform user that merge request closed" do - within ".merge-tabs" do - page.should have_content "Reopen" - end + page.should have_content "Reopen" end end end diff --git a/spec/requests/projects_spec.rb b/spec/requests/projects_spec.rb index 6db900c0d52..f3dd707b98a 100644 --- a/spec/requests/projects_spec.rb +++ b/spec/requests/projects_spec.rb @@ -5,7 +5,7 @@ describe "Projects" do describe "GET /projects" do before do - @project = Factory :project + @project = Factory :project, :owner => @user @project.add_access(@user, :read) visit projects_path end @@ -15,7 +15,7 @@ describe "Projects" do end it "should have link to new project" do - page.should have_content("Create new project") + page.should have_content("New Project") end it "should have project" do @@ -26,7 +26,7 @@ describe "Projects" do describe "GET /projects/new" do before do visit projects_path - click_link "Create new project" + click_link "New Project" end it "should be correct path" do @@ -68,7 +68,7 @@ describe "Projects" do describe "GET /projects/show" do before do - @project = Factory :project + @project = Factory :project, :owner => @user @project.add_access(@user, :read) visit project_path(@project) @@ -128,7 +128,7 @@ describe "Projects" do describe "PUT /projects/:id" do before do - @project = Factory :project + @project = Factory :project, :owner => @user @project.add_access(@user, :admin, :read) visit edit_project_path(@project) diff --git a/spec/requests/repositories_spec.rb b/spec/requests/repositories_spec.rb index 0b5d378daed..38c9edf568f 100644 --- a/spec/requests/repositories_spec.rb +++ b/spec/requests/repositories_spec.rb @@ -24,11 +24,6 @@ describe "Repository" do it "should have link to last commit for activities tab" do page.should have_content(@project.commit.safe_message[0..20]) - page.should have_content(@project.commit.author_name) - end - - it "should show commits list" do - page.all(:css, ".project-update").size.should == @project.repo.branches.size end end diff --git a/spec/requests/team_members_spec.rb b/spec/requests/team_members_spec.rb index 997de8b8356..f00f4d09223 100644 --- a/spec/requests/team_members_spec.rb +++ b/spec/requests/team_members_spec.rb @@ -10,9 +10,7 @@ describe "TeamMembers" do describe "View profile" do it "should be available" do visit(team_project_path(@project)) - within "#team-table" do - click_link(@user.name) - end + click_link(@user.name) page.should have_content @user.skype page.should_not have_content 'Twitter' end @@ -55,8 +53,8 @@ describe "TeamMembers" do describe "Cancel membership" do it "should cancel membership" do - visit team_project_path(@project) - expect { click_link "Cancel" }.to change { UsersProject.count }.by(-1) + visit project_team_member_path(@project, @project.users_projects.last) + expect { click_link "Remove from team" }.to change { UsersProject.count }.by(-1) end end end diff --git a/spec/support/shared_examples.rb b/spec/support/shared_examples.rb index 22699b0cfde..e567706ef8c 100644 --- a/spec/support/shared_examples.rb +++ b/spec/support/shared_examples.rb @@ -2,8 +2,7 @@ shared_examples_for :project_side_pane do subject { page } it { should have_content((@project || project).name) } it { should have_content("Commits") } - it { should have_content("Team") } - it { should have_content("Tree") } + it { should have_content("Code") } end shared_examples_for :tree_view do |