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
Gemfile.lock
| ... | ... | @@ -67,6 +67,8 @@ GEM |
| 67 | 67 | awesome_print (0.4.0) |
| 68 | 68 | bcrypt-ruby (3.0.1) |
| 69 | 69 | blankslate (2.1.2.4) |
| 70 | + bootstrap-sass (1.4.4) | |
| 71 | + sass-rails (~> 3.1) | |
| 70 | 72 | builder (3.0.0) |
| 71 | 73 | capybara (1.1.2) |
| 72 | 74 | mime-types (>= 1.16) |
| ... | ... | @@ -226,12 +228,11 @@ GEM |
| 226 | 228 | blankslate (>= 2.1.2.3) |
| 227 | 229 | ffi (~> 1.0.7) |
| 228 | 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 | 233 | actionpack (~> 3.1.0) |
| 232 | 234 | railties (~> 3.1.0) |
| 233 | - sass (>= 3.1.4) | |
| 234 | - sprockets (~> 2.0.0) | |
| 235 | + sass (~> 3.1.10) | |
| 235 | 236 | tilt (~> 1.3.2) |
| 236 | 237 | seed-fu (2.1.0) |
| 237 | 238 | activerecord (~> 3.1.0) |
| ... | ... | @@ -299,6 +300,7 @@ DEPENDENCIES |
| 299 | 300 | autotest |
| 300 | 301 | autotest-rails |
| 301 | 302 | awesome_print |
| 303 | + bootstrap-sass | |
| 302 | 304 | capybara |
| 303 | 305 | carrierwave |
| 304 | 306 | charlock_holmes | ... | ... |
app/assets/javascripts/issues.js
| 1 | 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 | 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 | 6 | $('.top-tabs .add_new').hide(); |
| 7 | 7 | }); |
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 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 | 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 | 25 | } |
| 26 | 26 | |
| 27 | 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 | 30 | $("#edit_issue_dialog").remove(); |
| 31 | 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 | 4 | |
| 5 | 5 | init: |
| 6 | 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 | 13 | $(".merge-request-commits, .merge-request-diffs").hide(); |
| 14 | 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 | 18 | if(!MergeRequest.commits_loaded) { |
| 19 | 19 | MergeRequest.loadCommits(); |
| 20 | 20 | } |
| ... | ... | @@ -22,7 +22,7 @@ var MergeRequest = { |
| 22 | 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 | 26 | if(!MergeRequest.diffs_loaded) { |
| 27 | 27 | MergeRequest.loadDiff(); |
| 28 | 28 | } | ... | ... |
app/assets/javascripts/tree.js
| ... | ... | @@ -5,21 +5,24 @@ |
| 5 | 5 | var Tree = { |
| 6 | 6 | init: |
| 7 | 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 | 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 | 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 | 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 | 26 | "ajax:beforeSend": function() { $('.tree_progress').addClass("loading"); }, |
| 24 | 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 | 8 | .diff_file { |
| 44 | 9 | border:1px solid #CCC; |
| 45 | 10 | margin-bottom:1em; |
| ... | ... | @@ -72,6 +37,11 @@ body.project-page.commits-page .commits-date a.commit span.commit-author strong{ |
| 72 | 37 | border:none; |
| 73 | 38 | margin:0px; |
| 74 | 39 | padding:0px; |
| 40 | + tr { | |
| 41 | + td { | |
| 42 | + font-size:12px; | |
| 43 | + } | |
| 44 | + } | |
| 75 | 45 | } |
| 76 | 46 | .old_line, .new_line { |
| 77 | 47 | margin:0px; |
| ... | ... | @@ -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 | 83 | /** COMMIT BLOCK **/ |
| 122 | 84 | .commit-title{display: block;} |
| 123 | 85 | .commit-title{margin-bottom: 10px} |
| ... | ... | @@ -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 | 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 | 4 | $text_color:#222; |
| 2 | 5 | $lite_text_color: #666; |
| 3 | 6 | $link_color:#111; |
| ... | ... | @@ -6,10 +9,13 @@ $active_bg_color:#79C3E0; |
| 6 | 9 | $active_bd_color: #2FA0BB; |
| 7 | 10 | $border_color:#CCC; |
| 8 | 11 | $lite_border_color:#EEE; |
| 9 | -$app_width:980px; | |
| 12 | +$min_app_width:980px; | |
| 13 | +$max_app_width:980px; | |
| 10 | 14 | $app_padding:20px; |
| 11 | 15 | $bg_color: #FFF; |
| 12 | 16 | $styled_border_color: #2FA0BB; |
| 17 | +$color: "#4BB8D2"; | |
| 18 | +$blue_link: "#2fa0bb"; | |
| 13 | 19 | |
| 14 | 20 | /** MIXINS **/ |
| 15 | 21 | @mixin round-borders-bottom($radius) { |
| ... | ... | @@ -81,36 +87,103 @@ $styled_border_color: #2FA0BB; |
| 81 | 87 | .no-padding { |
| 82 | 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 | 178 | @import "projects.css.scss"; |
| 105 | 179 | @import "commits.css.scss"; |
| 106 | -@import "notes.css.scss"; | |
| 180 | +@import "tree.scss"; | |
| 181 | +@import "issues.css.scss"; | |
| 107 | 182 | @import "merge_requests.css.scss"; |
| 183 | +@import "notes.css.scss"; | |
| 184 | +@import "login.scss"; | |
| 185 | + | |
| 186 | +/** CODE HIGHTLIGHT **/ | |
| 108 | 187 | @import "highlight.css.scss"; |
| 109 | 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 | -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
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 | 1 | #issue_assignee_id { |
| 53 | 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 @@ |
| 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
app/assets/stylesheets/notes.css.scss
| ... | ... | @@ -32,13 +32,12 @@ |
| 32 | 32 | |
| 33 | 33 | #notes-list .note .delete-note { display:none; } |
| 34 | 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 | 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 | 4 | .file_stats { |
| 78 | 5 | span { |
| 79 | 6 | img { |
| 80 | 7 | width:14px; |
| 81 | 8 | float:left; |
| 82 | - margin-right: 6px; | |
| 9 | + margin-right:6px; | |
| 83 | 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 | 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 | 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 | 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 | 97 | .ajax-tab-loading { |
| 303 | 98 | padding:40px; |
| 304 | 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 | 105 | #tree-readme-holder { |
| 310 | 106 | float:left; |
| 311 | 107 | width:100%; |
| 312 | - | |
| 313 | 108 | .readme { |
| 314 | 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 | 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 @@ |
| 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 @@ |
| 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 @@ |
| 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 | -/* 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 | -.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 | 1 | body header { |
| 51 | 2 | position:absolute; |
| 52 | 3 | width:100%; |
| ... | ... | @@ -54,23 +5,20 @@ body header { |
| 54 | 5 | margin:0; |
| 55 | 6 | top:0; |
| 56 | 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 | 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 | 14 | height:50px; |
| 65 | 15 | |
| 66 | 16 | .wrapper { |
| 67 | 17 | margin:auto; |
| 68 | - width:$app_width; | |
| 18 | + min-width:$min_app_width; | |
| 19 | + max-width:$max_app_width; | |
| 69 | 20 | position:relative; |
| 70 | - | |
| 71 | - .top_panel_content { | |
| 72 | - padding:10px $app_padding; | |
| 73 | - } | |
| 21 | + padding:10px $app_padding; | |
| 74 | 22 | } |
| 75 | 23 | |
| 76 | 24 | .project_name { |
| ... | ... | @@ -102,45 +50,157 @@ body header { |
| 102 | 50 | border: 1px solid #AAA; |
| 103 | 51 | padding: 0 10px 0 30px; |
| 104 | 52 | background: transparent url('images.png') no-repeat 8px -42px; |
| 105 | - width: 160px; | |
| 53 | + width: 260px; | |
| 106 | 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 | 108 | .rss-icon { |
| 141 | 109 | margin:0 15px; |
| 142 | 110 | padding:3px; |
| 143 | - border:1px solid #AAA; | |
| 144 | 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 | 8 | } |
| 9 | 9 | |
| 10 | 10 | .tree_progress { |
| 11 | - float:left; | |
| 12 | - width:16px; | |
| 13 | - height:16px; | |
| 14 | - margin:2px 6px; | |
| 11 | + display:none; | |
| 12 | + margin:20px; | |
| 15 | 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 | 114 | .tree-item { |
| 118 | 115 | &:hover { |
| 119 | 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 | 52 | def update |
| 53 | 53 | @admin_project = Project.find_by_code(params[:id]) |
| 54 | 54 | |
| 55 | + owner_id = params[:project][:owner_id] | |
| 56 | + | |
| 57 | + if owner_id | |
| 58 | + @admin_project.owner = User.find(owner_id) | |
| 59 | + end | |
| 60 | + | |
| 55 | 61 | if @admin_project.update_attributes(params[:project]) |
| 56 | 62 | redirect_to [:admin, @admin_project], notice: 'Project was successfully updated.' |
| 57 | 63 | else | ... | ... |
app/controllers/application_controller.rb
app/controllers/commits_controller.rb
app/controllers/keys_controller.rb
app/controllers/merge_requests_controller.rb
| ... | ... | @@ -39,6 +39,8 @@ class MergeRequestsController < ApplicationController |
| 39 | 39 | @notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20) |
| 40 | 40 | @note = @project.notes.new(:noteable => @merge_request) |
| 41 | 41 | |
| 42 | + render_full_content | |
| 43 | + | |
| 42 | 44 | respond_to do |format| |
| 43 | 45 | format.html |
| 44 | 46 | format.js { respond_with_notes } | ... | ... |
app/controllers/projects_controller.rb
| ... | ... | @@ -68,7 +68,8 @@ class ProjectsController < ApplicationController |
| 68 | 68 | |
| 69 | 69 | def show |
| 70 | 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 | 73 | @activities = @project.activities(limit)#updates_wo_repo(limit) |
| 73 | 74 | end |
| 74 | 75 | ... | ... |
app/controllers/refs_controller.rb
| ... | ... | @@ -8,16 +8,27 @@ class RefsController < ApplicationController |
| 8 | 8 | |
| 9 | 9 | before_filter :ref |
| 10 | 10 | before_filter :define_tree_vars, :only => [:tree, :blob] |
| 11 | + before_filter :render_full_content | |
| 12 | + | |
| 11 | 13 | layout "project" |
| 12 | 14 | |
| 13 | 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 | 32 | end |
| 22 | 33 | |
| 23 | 34 | # | ... | ... |
app/controllers/team_members_controller.rb
| ... | ... | @@ -40,7 +40,7 @@ class TeamMembersController < ApplicationController |
| 40 | 40 | @team_member.destroy |
| 41 | 41 | |
| 42 | 42 | respond_to do |format| |
| 43 | - format.html { redirect_to root_path } | |
| 43 | + format.html { redirect_to team_project_path(@project) } | |
| 44 | 44 | format.js { render :nothing => true } |
| 45 | 45 | end |
| 46 | 46 | end | ... | ... |
app/helpers/dashboard_helper.rb
| ... | ... | @@ -3,6 +3,7 @@ module DashboardHelper |
| 3 | 3 | case object.class.name.to_s |
| 4 | 4 | when "Issue" then project_issue_path(project, project.issues.find(object.id)) |
| 5 | 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 | 7 | when "Note" |
| 7 | 8 | then |
| 8 | 9 | note = object |
| ... | ... | @@ -26,6 +27,7 @@ module DashboardHelper |
| 26 | 27 | when "Note" then markdown(object.note) |
| 27 | 28 | when "Issue" then object.title |
| 28 | 29 | when "Commit" then object.safe_message |
| 30 | + when "MergeRequest" then object.title | |
| 29 | 31 | else return "Project Wall" |
| 30 | 32 | end |
| 31 | 33 | ... | ... |
app/models/commit.rb
| 1 | 1 | class Commit |
| 2 | + include ActiveModel::Conversion | |
| 3 | + extend ActiveModel::Naming | |
| 2 | 4 | |
| 3 | 5 | attr_accessor :commit |
| 4 | 6 | attr_accessor :head |
| ... | ... | @@ -18,6 +20,10 @@ class Commit |
| 18 | 20 | :id, |
| 19 | 21 | :to => :commit |
| 20 | 22 | |
| 23 | + def persisted? | |
| 24 | + false | |
| 25 | + end | |
| 26 | + | |
| 21 | 27 | def initialize(raw_commit, head = nil) |
| 22 | 28 | @commit = raw_commit |
| 23 | 29 | @head = head | ... | ... |
app/views/admin/projects/_form.html.haml
| ... | ... | @@ -6,34 +6,31 @@ |
| 6 | 6 | - @admin_project.errors.full_messages.each do |msg| |
| 7 | 7 | %li= msg |
| 8 | 8 | |
| 9 | - .form-row | |
| 9 | + .clearfix | |
| 10 | 10 | = f.label :name |
| 11 | - %br | |
| 12 | - = f.text_field :name | |
| 13 | - .form-row | |
| 11 | + .input= f.text_field :name | |
| 12 | + .clearfix | |
| 14 | 13 | = f.label :code |
| 15 | - %br | |
| 16 | - = f.text_field :code | |
| 17 | - .form-row | |
| 14 | + .input= f.text_field :code | |
| 15 | + .clearfix | |
| 18 | 16 | = f.label :path |
| 19 | - %br | |
| 20 | - = f.text_field :path | |
| 17 | + .input= f.text_field :path | |
| 21 | 18 | |
| 22 | - .form-row | |
| 23 | - = f.label :tag_list | |
| 24 | - %br | |
| 25 | - = f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field | |
| 19 | + - unless @admin_project.new_record? | |
| 20 | + .clearfix | |
| 21 | + = f.label :owner_id | |
| 22 | + .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] } | |
| 26 | 23 | |
| 27 | - .form-row | |
| 24 | + .clearfix | |
| 28 | 25 | = f.label :description |
| 29 | - %br | |
| 30 | - = f.text_area :description | |
| 26 | + .input= f.text_area :description | |
| 31 | 27 | .clear |
| 32 | 28 | %br |
| 33 | 29 | .actions |
| 34 | - = f.submit 'Save', :class => "grey-button" | |
| 30 | + = f.submit 'Save', :class => "btn" | |
| 35 | 31 | |
| 36 | 32 | :javascript |
| 37 | 33 | $(function(){ |
| 38 | 34 | taggifyForm(); |
| 35 | + $('#project_owner_id').chosen(); | |
| 39 | 36 | }) | ... | ... |
app/views/admin/projects/index.html.haml
| ... | ... | @@ -19,4 +19,4 @@ |
| 19 | 19 | %td= link_to 'Destroy', [:admin, project], :confirm => 'Are you sure?', :method => :delete |
| 20 | 20 | |
| 21 | 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 | 31 | = @admin_project.description |
| 32 | 32 | %tr |
| 33 | 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 | 37 | .span-14 |
| ... | ... | @@ -53,7 +53,7 @@ |
| 53 | 53 | |
| 54 | 54 | %tr |
| 55 | 55 | %td{ :colspan => 3 } |
| 56 | - = submit_tag 'Add', :class => "positive-button" | |
| 56 | + = submit_tag 'Add', :class => "btn primary" | |
| 57 | 57 | |
| 58 | 58 | %table.round-borders |
| 59 | 59 | %thead | ... | ... |
app/views/admin/team_members/_form.html.haml
| ... | ... | @@ -27,7 +27,7 @@ |
| 27 | 27 | = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select" |
| 28 | 28 | %br |
| 29 | 29 | .actions |
| 30 | - = f.submit 'Save', :class => "grey-button" | |
| 30 | + = f.submit 'Save', :class => "btn" | |
| 31 | 31 | |
| 32 | 32 | :css |
| 33 | 33 | form select { | ... | ... |
app/views/admin/team_members/index.html.haml
app/views/admin/users/_form.html.haml
| ... | ... | @@ -2,48 +2,41 @@ |
| 2 | 2 | = form_for [:admin, @admin_user] do |f| |
| 3 | 3 | -if @admin_user.errors.any? |
| 4 | 4 | #error_explanation |
| 5 | - %h2= "#{pluralize(@admin_user.errors.count, "error")} prohibited this admin_user from being saved:" | |
| 6 | 5 | %ul |
| 7 | 6 | - @admin_user.errors.full_messages.each do |msg| |
| 8 | 7 | %li= msg |
| 9 | 8 | |
| 10 | - .form-row | |
| 9 | + .clearfix | |
| 11 | 10 | = f.label :name |
| 12 | - %br | |
| 13 | - = f.text_field :name | |
| 14 | - .form-row | |
| 11 | + .input= f.text_field :name | |
| 12 | + .clearfix | |
| 15 | 13 | = f.label :email |
| 16 | - %br | |
| 17 | - = f.text_field :email | |
| 18 | - .form-row | |
| 14 | + .input= f.text_field :email | |
| 15 | + .clearfix | |
| 19 | 16 | = f.label :password |
| 20 | - %br | |
| 21 | - = f.password_field :password | |
| 22 | - .form-row | |
| 17 | + .input= f.password_field :password | |
| 18 | + .clearfix | |
| 23 | 19 | = f.label :password_confirmation |
| 24 | - %br | |
| 25 | - = f.password_field :password_confirmation | |
| 26 | - .form-row | |
| 20 | + .input= f.password_field :password_confirmation | |
| 21 | + .clearfix | |
| 27 | 22 | = f.check_box :admin |
| 28 | 23 | = f.label :admin |
| 29 | 24 | |
| 30 | - .form-row | |
| 31 | - = f.text_field :projects_limit, :class => "small_input" | |
| 25 | + .clearfix | |
| 32 | 26 | = f.label :projects_limit |
| 27 | + .input= f.text_field :projects_limit, :class => "small_input" | |
| 33 | 28 | |
| 34 | - .form-row | |
| 29 | + .clearfix | |
| 35 | 30 | = f.label :skype |
| 36 | - %br | |
| 37 | - = f.text_field :skype | |
| 38 | - .form-row | |
| 31 | + .input= f.text_field :skype | |
| 32 | + .clearfix | |
| 39 | 33 | = f.label :linkedin |
| 40 | - %br | |
| 41 | - = f.text_field :linkedin | |
| 42 | - .form-row | |
| 34 | + .input= f.text_field :linkedin | |
| 35 | + .clearfix | |
| 43 | 36 | = f.label :twitter |
| 44 | - %br | |
| 45 | - = f.text_field :twitter | |
| 37 | + .input= f.text_field :twitter | |
| 46 | 38 | .clear |
| 47 | 39 | %br |
| 48 | 40 | .actions |
| 49 | - = f.submit 'Save', :class => "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 | 41 | = @admin_user.twitter |
| 42 | 42 | %tr |
| 43 | 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 | 46 | .span-14 |
| 47 | 47 | %h2 Projects |
| ... | ... | @@ -66,4 +66,4 @@ |
| 66 | 66 | %td= link_to 'Edit', edit_admin_team_member_path(tm) |
| 67 | 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 | 1 | - @commits.group_by { |c| c.committed_date.to_date }.each do |day, commits| |
| 2 | 2 | %div{ :class => "commits-date ui-box ui-box-small ui-box-big" } |
| 3 | 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 | 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 | 5 | = link_to project_commits_path(@project, :atom, { :private_token => current_user.private_token, :ref => @ref }) do |
| 6 | 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 | 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 | 22 | %div{:id => dom_id(@project)} |
| 16 | 23 | #commits_list= render "commits" |
| ... | ... | @@ -23,3 +30,8 @@ |
| 23 | 30 | $(function(){ |
| 24 | 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 | 1 | .commit |
| 3 | 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 | 5 | - if @commit.author_email |
| 9 | 6 | = image_tag gravatar_icon(@commit.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" |
| 10 | 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 | -%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 | 1 | %div |
| 2 | 2 | = form_for [@project, @key], :url => project_deploy_keys_path do |f| |
| 3 | 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 | 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 | 3 | <%= devise_error_messages! %> |
| 4 | 4 | <%= f.email_field :email, :placeholder => "Email", :class => "text top" %> |
| 5 | 5 | <br/> |
| 6 | - <%= f.submit "Reset password", :class => "grey-button" %> | |
| 6 | + <%= f.submit "Reset password", :class => "primary btn" %> | |
| 7 | 7 | <div class="right"> <%= render :partial => "devise/shared/links" %></div> |
| 8 | 8 | <% end %> | ... | ... |
app/views/devise/sessions/new.html.erb
| ... | ... | @@ -4,10 +4,10 @@ |
| 4 | 4 | <%= f.password_field :password, :class => "text bottom", :placeholder => "Password" %> |
| 5 | 5 | |
| 6 | 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 | 8 | <% end -%> |
| 9 | 9 | <br/> |
| 10 | - <%= f.submit "Sign in", :class => "grey-button" %> | |
| 10 | + <%= f.submit "Sign in", :class => "primary btn" %> | |
| 11 | 11 | <div class="right"> <%= render :partial => "devise/shared/links" %></div> |
| 12 | 12 | <% if ldap_enable? -%> |
| 13 | 13 | <p><%= link_to "via LDAP", user_omniauth_authorize_path(:ldap)%></p> | ... | ... |
app/views/devise/shared/_links.erb
| 1 | 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 | 3 | <% end -%> |
| 4 | 4 | |
| 5 | 5 | <%- if devise_mapping.registerable? && controller_name != 'registrations' %> |
| ... | ... | @@ -7,7 +7,7 @@ |
| 7 | 7 | <% end -%> |
| 8 | 8 | |
| 9 | 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 | 11 | <% end -%> |
| 12 | 12 | |
| 13 | 13 | <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> | ... | ... |
app/views/hooks/index.html.haml
| 1 | 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 | 1 | = render "repositories/head" |
| 2 | -%h3 | |
| 3 | - %span.commit.tag POST | |
| 4 | - = @hook.url | |
| 5 | - | |
| 2 | +%pre= @hook.url | |
| 6 | 3 | |
| 7 | 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 | 1 | %div.issue-form-holder |
| 2 | 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 | 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 | 39 | - unless @issue.new_record? |
| 50 | 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 | 5 | = link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do |
| 6 | 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 | 38 | :javascript |
| 37 | 39 | var href = $('.issue_search').parent().attr('action'); |
| 38 | 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 | 42 | $('.issue_search').keyup(function() { |
| 46 | 43 | var terms = $(this).val(); |
| 47 | 44 | var project_id = $('#project_id').val(); |
| 48 | - var status = $('.status:checked').val(); | |
| 45 | + var status = $('#status').val(); | |
| 49 | 46 | if (terms != last_terms) { |
| 50 | 47 | last_terms = terms; |
| 51 | 48 | |
| 52 | 49 | if (terms.length >= 2 || terms.length == 0) { |
| 53 | 50 | $.get(href, { 'status': status, 'terms': terms, project: project_id }, function(response) { |
| 54 | - $('#issues-table tbody').html(response); | |
| 51 | + $('#issues-table').html(response); | |
| 55 | 52 | setSortable(); |
| 56 | 53 | }); |
| 57 | 54 | } |
| ... | ... | @@ -62,7 +59,7 @@ |
| 62 | 59 | $(this).closest('tr').fadeOut(); updatePage();}); |
| 63 | 60 | |
| 64 | 61 | function setSortable(){ |
| 65 | - $('#issues-table>tbody').sortable({ | |
| 62 | + $('#issues-table').sortable({ | |
| 66 | 63 | axis: 'y', |
| 67 | 64 | dropOnEmpty: false, |
| 68 | 65 | handle: '.handle', |
| ... | ... | @@ -73,10 +70,10 @@ |
| 73 | 70 | update: function(){ |
| 74 | 71 | $.ajax({ |
| 75 | 72 | type: 'post', |
| 76 | - data: $('#issues-table>tbody').sortable('serialize'), | |
| 73 | + data: $('#issues-table').sortable('serialize'), | |
| 77 | 74 | dataType: 'script', |
| 78 | 75 | complete: function(request){ |
| 79 | - $('#issues-table>tbody').effect('highlight'); | |
| 76 | + $('#issues-table').effect('highlight'); | |
| 80 | 77 | }, |
| 81 | 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 | 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 | 1 | %div |
| 2 | - = form_for @key, :remote => true do |f| | |
| 2 | + = form_for @key do |f| | |
| 3 | 3 | -if @key.errors.any? |
| 4 | - %ul | |
| 5 | - - @key.errors.full_messages.each do |msg| | |
| 6 | - %li= msg | |
| 4 | + .alert-message.block-message.error | |
| 5 | + %ul | |
| 6 | + - @key.errors.full_messages.each do |msg| | |
| 7 | + %li= msg | |
| 7 | 8 | |
| 8 | - .form-row | |
| 9 | + .clearfix | |
| 9 | 10 | = f.label :title |
| 10 | - = f.text_field :title, :style => "width:300px" | |
| 11 | - .form-row | |
| 11 | + .input= f.text_field :title | |
| 12 | + .clearfix | |
| 12 | 13 | = f.label :key |
| 13 | - = f.text_area :key, :style => "width:300px; height:130px" | |
| 14 | - .form-row | |
| 15 | - = f.submit 'Save', :class => "grey-button" | |
| 14 | + .input= f.text_area :key, :class => "xlarge" | |
| 15 | + .actions | |
| 16 | + = f.submit 'Save', :class => "primary btn" | |
| 17 | + = link_to "Cancel", keys_path, :class => "btn" | |
| 16 | 18 | ... | ... |
app/views/keys/_show.html.haml
| 1 | -%a.update-item{:href => key_path(key)} | |
| 2 | - %span.update-title | |
| 3 | - = key.title | |
| 4 | - %span.update-author | |
| 5 | - Added | |
| 6 | - = time_ago_in_words(key.created_at) | |
| 7 | - ago | |
| 1 | +%li.entry | |
| 2 | + = link_to key_path(key) do | |
| 3 | + %strong= key.title | |
| 4 | + %span.right.cgray | |
| 5 | + Added | |
| 6 | + = time_ago_in_words(key.created_at) | |
| 7 | + ago | ... | ... |
app/views/keys/index.html.haml
| 1 | -%h2.icon | |
| 2 | - %span> | |
| 1 | +%h3 | |
| 3 | 2 | SSH Keys |
| 4 | -%div#new-key-holder.right | |
| 5 | - = link_to "Add new", new_key_path, :remote => true, :class => "grey-button" | |
| 6 | -%br | |
| 3 | + = link_to "Add new", new_key_path, :class => "btn small right" | |
| 4 | + | |
| 5 | +%hr | |
| 7 | 6 | |
| 8 | 7 | %div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" } |
| 9 | - .data | |
| 8 | + %ul.unstyled | |
| 10 | 9 | - @keys.each do |key| |
| 11 | 10 | = render(:partial => 'show', :locals => {:key => key}) |
| 12 | - | |
| 13 | -:javascript | |
| 14 | - $('.delete-key').live('ajax:success', function() { | |
| 15 | - $(this).closest('.update-item').fadeOut(); }); | |
| 16 | - | ... | ... |
app/views/keys/new.html.haml
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 @@ |
| 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
app/views/layouts/_head_panel.html.haml
| ... | ... | @@ -11,23 +11,7 @@ |
| 11 | 11 | = truncate @project.name, :length => 28 |
| 12 | 12 | .git_url_wrapper |
| 13 | 13 | %input.git-url.text{:id => "", :name => "", :readonly => "", :type => "text", :value => @project.url_to_repo, :class => "one_click_select"} |
| 14 | - - if @project.repo_exists? | |
| 15 | - .left{:style => "margin-left:5px;"} | |
| 16 | - = render :partial => "projects/refs", :locals => { :destination => controller.controller_name == "commits" ? "commits" : "tree" } | |
| 17 | - = yield :rss_icon | |
| 18 | 14 | |
| 19 | - - 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 | 16 | .account-box |
| 33 | 17 | = link_to profile_path, :class => "pic" do |
| ... | ... | @@ -36,16 +20,3 @@ |
| 36 | 20 | = link_to profile_path, :class => "username" do |
| 37 | 21 | My profile |
| 38 | 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 | 6 | |
| 7 | 7 | - if @project.repo_exists? |
| 8 | 8 | = link_to "Repository", project_repository_path(@project), :class => repository_tab_class |
| 9 | - = link_to "Tree", tree_project_ref_path(@project, @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 | 11 | = link_to "Network", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil |
| 12 | 12 | = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do |
| 13 | 13 | Issues |
| 14 | + = link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do | |
| 15 | + Merge Requests | |
| 14 | 16 | = link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do |
| 15 | - Wall | |
| 17 | + @Wall | |
| 16 | 18 | - if @project.common_notes.today.count > 0 |
| 17 | - %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 @@ |
| 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 @@ |
| 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 | 2 | %html |
| 3 | 3 | %head |
| 4 | + %meta{:charset => "utf-8"} | |
| 4 | 5 | %title |
| 5 | 6 | GitLab #{" - #{@project.name}" if @project && !@project.new_record?} |
| 6 | 7 | = favicon_link_tag 'favicon.ico' |
| ... | ... | @@ -10,19 +11,17 @@ |
| 10 | 11 | = javascript_tag do |
| 11 | 12 | REQ_URI = "#{request.env["REQUEST_URI"]}"; |
| 12 | 13 | REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; |
| 13 | - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} | |
| 14 | + %body.admin | |
| 14 | 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 | 2 | %html |
| 3 | 3 | %head |
| 4 | + %meta{:charset => "utf-8"} | |
| 4 | 5 | %title |
| 5 | 6 | GitLab |
| 6 | 7 | = favicon_link_tag 'favicon.ico' |
| 7 | 8 | = stylesheet_link_tag "application" |
| 8 | 9 | = javascript_include_tag "application" |
| 9 | 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 | 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 | 2 | %html |
| 3 | 3 | %head |
| 4 | + %meta{:charset => "utf-8"} | |
| 4 | 5 | %title |
| 5 | 6 | GitLab #{" - #{@project.name}" if @project && !@project.new_record?} |
| 6 | 7 | = favicon_link_tag 'favicon.ico' |
| ... | ... | @@ -12,4 +13,4 @@ |
| 12 | 13 | REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; |
| 13 | 14 | %body.login-page |
| 14 | 15 | = render :partial => "layouts/flash" |
| 15 | - = yield | |
| 16 | + .container-fluid= yield | ... | ... |
app/views/layouts/profile.html.haml
| 1 | 1 | !!! |
| 2 | 2 | %html |
| 3 | 3 | %head |
| 4 | + %meta{:charset => "utf-8"} | |
| 4 | 5 | %title |
| 5 | 6 | GitLab #{" - #{@project.name}" if @project && !@project.new_record?} |
| 6 | 7 | = favicon_link_tag 'favicon.ico' |
| 7 | 8 | = stylesheet_link_tag "application" |
| 8 | 9 | = javascript_include_tag "application" |
| 9 | 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 | 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 | 2 | %html |
| 3 | 3 | %head |
| 4 | + %meta{:charset => "utf-8"} | |
| 4 | 5 | %title |
| 5 | - GitLab #{" - #{@project.name}" if @project && !@project.new_record?} | |
| 6 | + GitLab | |
| 7 | + = " - #{@project.name}" if @project && !@project.new_record? | |
| 6 | 8 | = favicon_link_tag 'favicon.ico' |
| 7 | 9 | = stylesheet_link_tag "application" |
| 8 | 10 | = javascript_include_tag "application" |
| ... | ... | @@ -11,14 +13,16 @@ |
| 11 | 13 | - if request.path == project_issues_path(@project) |
| 12 | 14 | = auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, :private_token => current_user.private_token), :title => "#{@project.name} issues") |
| 13 | 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 | 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 | 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 | 1 | - if @commits.size > 0 |
| 2 | - .merge-request-commits.ui-box.width-100p | |
| 2 | + .merge-request-commits | |
| 3 | 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 | 14 | - if @commits.empty? |
| 19 | 15 | %p.cgray Nothing to merge | ... | ... |
app/views/merge_requests/_form.html.haml
| 1 | 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 | 30 | - unless @merge_request.new_record? |
| 42 | 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 | 2 | = link_to project_merge_requests_path(@project), :class => "tab #{'active' if current_page?(project_merge_requests_path(@project)) }" do |
| 3 | 3 | %span |
| 4 | 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 | 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 | 7 | authored |
| 8 | 8 | = time_ago_in_words(merge_request.created_at) |
| 9 | 9 | ago |
| 10 | 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 | 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 | 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 | 58 | %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} |
| 55 | 59 | |
| 56 | 60 | .merge-request-notes |
| 57 | - .issue_notes= render "notes/notes" | |
| 61 | + .merge_request_notes= render "notes/notes" | |
| 58 | 62 | .loading{ :style => "display:none;"} |
| 59 | 63 | %center= image_tag "ajax-loader.gif" |
| 60 | 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 | 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 | 1 | %table{:style => "display:none;"} |
| 2 | 2 | %tr.per_line_form |
| 3 | 3 | %td{:colspan => 3 } |
| 4 | - %div | |
| 4 | + %div.well | |
| 5 | 5 | = form_for [@project, @note], :remote => "true", :multipart => true do |f| |
| 6 | + %h3 Leave a note | |
| 6 | 7 | -if @note.errors.any? |
| 7 | - .errors.error | |
| 8 | + .alert-message.block-message.error | |
| 8 | 9 | - @note.errors.full_messages.each do |msg| |
| 9 | 10 | %div= msg |
| 10 | 11 | |
| 11 | 12 | = f.hidden_field :noteable_id |
| 12 | 13 | = f.hidden_field :noteable_type |
| 13 | 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 | 21 | :javascript |
| 29 | 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 | 32 | - if current_user.private_token |
| 41 | - = f.submit 'Reset', :confirm => "Are you sure?", :class => "grey-button" | |
| 33 | + = text_field_tag "token", current_user.private_token | |
| 42 | 34 | - else |
| 43 | - = f.submit 'Generate', :class => "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 | 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 | 5 | - @project.errors.full_messages.each do |msg| |
| 11 | 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 | 36 | - unless @project.new_record? |
| 53 | 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 | 19 | - if current_page?(project_snippets_path(@project)) |
| 19 | 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 | 26 | - if current_page?(team_project_path(@project)) |
| 25 | 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 | 2 | - @project.users_projects.each do |up| |
| 9 | 3 | = render(:partial => 'team_members/show', :locals => {:member => up}) |
| 10 | 4 | |
| ... | ... | @@ -15,5 +9,7 @@ |
| 15 | 9 | }); |
| 16 | 10 | }) |
| 17 | 11 | |
| 12 | + /* | |
| 18 | 13 | $('.delete-team-member').live('ajax:success', function() { |
| 19 | 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 | 5 | = link_to project_path(project) do |
| 6 | 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