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