Commit b8ea26f7a6904eae83732d473f55fc959773417f
Exists in
spb-stable
and in
3 other branches
Merge branch 'master' into readable-doc-readme
Conflicts: doc/README.md
Showing
15 changed files
with
94 additions
and
268 deletions
Show diff stats
CHANGELOG
| @@ -6,6 +6,7 @@ v 6.8.0 | @@ -6,6 +6,7 @@ v 6.8.0 | ||
| 6 | - Drop all tables before restoring a Postgres backup | 6 | - Drop all tables before restoring a Postgres backup |
| 7 | - Make the repository downloads path configurable | 7 | - Make the repository downloads path configurable |
| 8 | - Create branches via API (sponsored by O'Reilly Media) | 8 | - Create branches via API (sponsored by O'Reilly Media) |
| 9 | + - Changed permission of gitlab-satellites directory not to be world accessible | ||
| 9 | 10 | ||
| 10 | v 6.7.2 | 11 | v 6.7.2 |
| 11 | - Fix upgrader script | 12 | - Fix upgrader script |
Gemfile
| @@ -12,8 +12,6 @@ gem "rails", "~> 4.0.0" | @@ -12,8 +12,6 @@ gem "rails", "~> 4.0.0" | ||
| 12 | 12 | ||
| 13 | gem "protected_attributes" | 13 | gem "protected_attributes" |
| 14 | gem 'rails-observers' | 14 | gem 'rails-observers' |
| 15 | -gem 'actionpack-page_caching' | ||
| 16 | -gem 'actionpack-action_caching' | ||
| 17 | 15 | ||
| 18 | # Default values for AR models | 16 | # Default values for AR models |
| 19 | gem "default_value_for", "~> 3.0.0" | 17 | gem "default_value_for", "~> 3.0.0" |
Gemfile.lock
| @@ -27,10 +27,6 @@ GEM | @@ -27,10 +27,6 @@ GEM | ||
| 27 | erubis (~> 2.7.0) | 27 | erubis (~> 2.7.0) |
| 28 | rack (~> 1.5.2) | 28 | rack (~> 1.5.2) |
| 29 | rack-test (~> 0.6.2) | 29 | rack-test (~> 0.6.2) |
| 30 | - actionpack-action_caching (1.1.0) | ||
| 31 | - actionpack (>= 4.0.0, < 5.0) | ||
| 32 | - actionpack-page_caching (1.0.2) | ||
| 33 | - actionpack (>= 4.0.0, < 5) | ||
| 34 | activemodel (4.0.3) | 30 | activemodel (4.0.3) |
| 35 | activesupport (= 4.0.3) | 31 | activesupport (= 4.0.3) |
| 36 | builder (~> 3.1.0) | 32 | builder (~> 3.1.0) |
| @@ -567,8 +563,6 @@ PLATFORMS | @@ -567,8 +563,6 @@ PLATFORMS | ||
| 567 | 563 | ||
| 568 | DEPENDENCIES | 564 | DEPENDENCIES |
| 569 | ace-rails-ap | 565 | ace-rails-ap |
| 570 | - actionpack-action_caching | ||
| 571 | - actionpack-page_caching | ||
| 572 | acts-as-taggable-on | 566 | acts-as-taggable-on |
| 573 | annotate (~> 2.6.0.beta2) | 567 | annotate (~> 2.6.0.beta2) |
| 574 | asciidoctor | 568 | asciidoctor |
app/assets/stylesheets/application.scss
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | * This is a manifest file that'll automatically include all the stylesheets available in this directory | 2 | * This is a manifest file that'll automatically include all the stylesheets available in this directory |
| 3 | * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at | 3 | * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at |
| 4 | * the top of the compiled file, but it's generally better to create a new file per style scope. | 4 | * the top of the compiled file, but it's generally better to create a new file per style scope. |
| 5 | - *= require jquery.ui.gitlab | 5 | + *= require jquery.ui.datepicker |
| 6 | *= require jquery.atwho | 6 | *= require jquery.atwho |
| 7 | *= require select2 | 7 | *= require select2 |
| 8 | *= require highlightjs.min | 8 | *= require highlightjs.min |
| @@ -43,6 +43,7 @@ | @@ -43,6 +43,7 @@ | ||
| 43 | @import "generic/forms.scss"; | 43 | @import "generic/forms.scss"; |
| 44 | @import "generic/selects.scss"; | 44 | @import "generic/selects.scss"; |
| 45 | @import "generic/highlight.scss"; | 45 | @import "generic/highlight.scss"; |
| 46 | +@import "generic/jquery.scss"; | ||
| 46 | 47 | ||
| 47 | /** | 48 | /** |
| 48 | * Page specific styles (issues, projects etc): | 49 | * Page specific styles (issues, projects etc): |
| @@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
| 1 | +.ui-widget { | ||
| 2 | + font-family: $regular_font; | ||
| 3 | + font-size: $font-size-base; | ||
| 4 | + | ||
| 5 | + &.ui-datepicker-inline { | ||
| 6 | + border: 1px solid #DDD; | ||
| 7 | + padding: 10px; | ||
| 8 | + width: 270px; | ||
| 9 | + | ||
| 10 | + .ui-datepicker-header { | ||
| 11 | + background: #EEE; | ||
| 12 | + border-color: #DDD; | ||
| 13 | + } | ||
| 14 | + | ||
| 15 | + .ui-datepicker-calendar td a { | ||
| 16 | + padding: 5px; | ||
| 17 | + text-align: center; | ||
| 18 | + } | ||
| 19 | + } | ||
| 20 | +} |
app/assets/stylesheets/jquery.ui.gitlab.css
| @@ -1,257 +0,0 @@ | @@ -1,257 +0,0 @@ | ||
| 1 | -/* Interaction Cues | ||
| 2 | -----------------------------------*/ | ||
| 3 | -.ui-state-disabled { cursor: default !important; } | ||
| 4 | - | ||
| 5 | - | ||
| 6 | -/* Icons | ||
| 7 | -----------------------------------*/ | ||
| 8 | - | ||
| 9 | -/* states and images */ | ||
| 10 | -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } | ||
| 11 | - | ||
| 12 | - | ||
| 13 | -/* Misc visuals | ||
| 14 | -----------------------------------*/ | ||
| 15 | - | ||
| 16 | -/* Overlays */ | ||
| 17 | -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } | ||
| 18 | - | ||
| 19 | - | ||
| 20 | -/* | ||
| 21 | - * jQuery UI CSS Framework 1.8.7 | ||
| 22 | - * | ||
| 23 | - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) | ||
| 24 | - * Dual licensed under the MIT or GPL Version 2 licenses. | ||
| 25 | - * http://jquery.org/license | ||
| 26 | - * | ||
| 27 | - * http://docs.jquery.com/UI/Theming/API | ||
| 28 | - * | ||
| 29 | - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller | ||
| 30 | - */ | ||
| 31 | - | ||
| 32 | - | ||
| 33 | -/* Component containers | ||
| 34 | -----------------------------------*/ | ||
| 35 | -.ui-widget { font-family: Arial,sans-serif; font-size: 1.1em; } | ||
| 36 | -.ui-widget .ui-widget { font-size: 1em; } | ||
| 37 | -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,sans-serif; font-size: 1em; } | ||
| 38 | -.ui-widget-content { border: 1px solid #CCC; background: #ffffff; color: #4F4F4F; } | ||
| 39 | -.ui-widget-content a { color: #4F4F4F; } | ||
| 40 | -.ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; } | ||
| 41 | -.ui-widget-header { | ||
| 42 | - background: #ededed url(bg_fallback.png) 0 0 repeat-x; /* Old browsers */ | ||
| 43 | - background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */ | ||
| 44 | - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */ | ||
| 45 | - background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */ | ||
| 46 | - background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */ | ||
| 47 | - background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */ | ||
| 48 | - background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */ | ||
| 49 | -} | ||
| 50 | -.ui-widget-header a { color: #4F4F4F; } | ||
| 51 | - | ||
| 52 | -/* Interaction states | ||
| 53 | -----------------------------------*/ | ||
| 54 | -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; } | ||
| 55 | -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { | ||
| 56 | - background: #ededed url(bg_fallback.png) 0 0 repeat-x; /* Old browsers */ | ||
| 57 | - background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */ | ||
| 58 | - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */ | ||
| 59 | - background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */ | ||
| 60 | - background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */ | ||
| 61 | - background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */ | ||
| 62 | - background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */ | ||
| 63 | - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; | ||
| 64 | - -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; | ||
| 65 | - box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; | ||
| 66 | -} | ||
| 67 | -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; } | ||
| 68 | -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; } | ||
| 69 | -.ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; } | ||
| 70 | -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { | ||
| 71 | - outline: none; | ||
| 72 | - color: #1c4257; border: 1px solid #7096ab; | ||
| 73 | - background: #ededed url(bg_fallback.png) 0 -50px repeat-x; /* Old browsers */ | ||
| 74 | - background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */ | ||
| 75 | - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */ | ||
| 76 | - background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */ | ||
| 77 | - background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */ | ||
| 78 | - background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */ | ||
| 79 | - background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */ | ||
| 80 | - -webkit-box-shadow: none; | ||
| 81 | - -moz-box-shadow: none; | ||
| 82 | - box-shadow: none; | ||
| 83 | -} | ||
| 84 | -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; } | ||
| 85 | -.ui-widget :active { outline: none; } | ||
| 86 | - | ||
| 87 | -/* Interaction Cues | ||
| 88 | -----------------------------------*/ | ||
| 89 | -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } | ||
| 90 | -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } | ||
| 91 | -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } | ||
| 92 | -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } | ||
| 93 | -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } | ||
| 94 | -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } | ||
| 95 | -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } | ||
| 96 | -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } | ||
| 97 | - | ||
| 98 | -/* Icons | ||
| 99 | -----------------------------------*/ | ||
| 100 | - | ||
| 101 | -/* states and images */ | ||
| 102 | -.ui-icon { width: 16px; height: 16px; background-image: url(ui-icons_222222_256x240.png); } | ||
| 103 | -.ui-widget-content .ui-icon {background-image: url(ui-icons_222222_256x240.png); } | ||
| 104 | -.ui-widget-header .ui-icon {background-image: url(ui-icons_222222_256x240.png); } | ||
| 105 | -.ui-state-default .ui-icon { background-image: url(ui-icons_454545_256x240.png); } | ||
| 106 | -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(ui-icons_454545_256x240.png); } | ||
| 107 | -.ui-state-active .ui-icon {background-image: url(ui-icons_454545_256x240.png); } | ||
| 108 | -.ui-state-highlight .ui-icon {background-image: url(ui-icons_454545_256x240.png); } | ||
| 109 | -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(icon_sprite.png) -16px 0 no-repeat !important; } | ||
| 110 | -.ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; } | ||
| 111 | - | ||
| 112 | - | ||
| 113 | -/* Misc visuals | ||
| 114 | -----------------------------------*/ | ||
| 115 | - | ||
| 116 | -/* Overlays */ | ||
| 117 | -.ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); } | ||
| 118 | -.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } | ||
| 119 | -/* | ||
| 120 | - * jQuery UI Selectable 1.8.7 | ||
| 121 | - * | ||
| 122 | - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) | ||
| 123 | - * Dual licensed under the MIT or GPL Version 2 licenses. | ||
| 124 | - * http://jquery.org/license | ||
| 125 | - * | ||
| 126 | - * http://docs.jquery.com/UI/Selectable#theming | ||
| 127 | - */ | ||
| 128 | -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } | ||
| 129 | -/* | ||
| 130 | - * jQuery UI Autocomplete 1.8.7 | ||
| 131 | - * | ||
| 132 | - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) | ||
| 133 | - * Dual licensed under the MIT or GPL Version 2 licenses. | ||
| 134 | - * http://jquery.org/license | ||
| 135 | - * | ||
| 136 | - * http://docs.jquery.com/UI/Autocomplete#theming | ||
| 137 | - */ | ||
| 138 | -.ui-autocomplete { | ||
| 139 | - position: absolute; cursor: default; z-index: 3; | ||
| 140 | - -moz-border-radius: 0; | ||
| 141 | - -webkit-border-radius: 0; | ||
| 142 | - border-radius: 0; | ||
| 143 | - -moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3); | ||
| 144 | - -webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3); | ||
| 145 | - box-shadow: 0 1px 5px rgba(0,0,0,0.3); | ||
| 146 | -} | ||
| 147 | - | ||
| 148 | -/* workarounds */ | ||
| 149 | -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ | ||
| 150 | - | ||
| 151 | -/* | ||
| 152 | - * jQuery UI Menu 1.8.7 | ||
| 153 | - * | ||
| 154 | - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) | ||
| 155 | - * Dual licensed under the MIT or GPL Version 2 licenses. | ||
| 156 | - * http://jquery.org/license | ||
| 157 | - * | ||
| 158 | - * http://docs.jquery.com/UI/Menu#theming | ||
| 159 | - */ | ||
| 160 | -.ui-menu { | ||
| 161 | - list-style:none; | ||
| 162 | - padding: 1px; | ||
| 163 | - margin: 0; | ||
| 164 | - display:block; | ||
| 165 | - float: left; | ||
| 166 | -} | ||
| 167 | -.ui-menu .ui-menu { | ||
| 168 | - margin-top: -3px; | ||
| 169 | -} | ||
| 170 | -.ui-menu .ui-menu-item { | ||
| 171 | - margin:0; | ||
| 172 | - padding: 0; | ||
| 173 | - zoom: 1; | ||
| 174 | - float: left; | ||
| 175 | - clear: left; | ||
| 176 | - width: 100%; | ||
| 177 | -} | ||
| 178 | -.ui-menu .ui-menu-item a { | ||
| 179 | - text-decoration:none; | ||
| 180 | - display:block; | ||
| 181 | - padding:.2em .4em; | ||
| 182 | - line-height:1.5; | ||
| 183 | - zoom:1; | ||
| 184 | - color: #666; | ||
| 185 | - font-size: 13px; | ||
| 186 | -} | ||
| 187 | -.ui-menu .ui-menu-item a.ui-state-hover, | ||
| 188 | -.ui-menu .ui-menu-item a.ui-state-active { | ||
| 189 | - font-weight: normal; | ||
| 190 | - margin: -1px; | ||
| 191 | - background: #D9EDF7; | ||
| 192 | - color: #3A89A3; | ||
| 193 | - text-shadow: 0px 1px 1px #fff; | ||
| 194 | - border: none; | ||
| 195 | - border: 1px solid #ADE; | ||
| 196 | - cursor: pointer; | ||
| 197 | - font-weight: bold; | ||
| 198 | -} | ||
| 199 | - | ||
| 200 | -/* | ||
| 201 | - * jQuery UI Datepicker 1.8.7 | ||
| 202 | - * | ||
| 203 | - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) | ||
| 204 | - * Dual licensed under the MIT or GPL Version 2 licenses. | ||
| 205 | - * http://jquery.org/license | ||
| 206 | - * | ||
| 207 | - * http://docs.jquery.com/UI/Datepicker#theming | ||
| 208 | - */ | ||
| 209 | -.ui-datepicker { | ||
| 210 | - width: 17em; | ||
| 211 | - padding: 0; | ||
| 212 | - display: none; | ||
| 213 | - border-color: #DDDDDD; | ||
| 214 | - border: none; | ||
| 215 | - box-shadow: none; | ||
| 216 | -} | ||
| 217 | -.ui-datepicker .ui-datepicker-header { | ||
| 218 | - position:relative; | ||
| 219 | - padding:.35em 0; | ||
| 220 | - border: none; | ||
| 221 | - border-bottom: 1px solid #B6B6B6; | ||
| 222 | - -moz-border-radius: 0; | ||
| 223 | - -webkit-border-radius: 0; | ||
| 224 | - border-radius: 0; | ||
| 225 | - margin-bottom: 10px; | ||
| 226 | - border: 1px solid #bbb; | ||
| 227 | - -webkit-box-shadow: 0 0 0 3px #F1F1F1; | ||
| 228 | - -moz-box-shadow: 0 0 0 3px #f1f1f1; | ||
| 229 | - -ms-box-shadow: 0 0 0 3px #f1f1f1; | ||
| 230 | - -o-box-shadow: 0 0 0 3px #f1f1f1; | ||
| 231 | - box-shadow: 0 0 0 3px #F1F1F1; | ||
| 232 | -} | ||
| 233 | - | ||
| 234 | -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; } | ||
| 235 | -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; } | ||
| 236 | -.ui-datepicker .ui-datepicker-prev { left:2px; } | ||
| 237 | -.ui-datepicker .ui-datepicker-next { right:2px; } | ||
| 238 | -.ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; } | ||
| 239 | -.ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; } | ||
| 240 | -.ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; } | ||
| 241 | -.ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; } | ||
| 242 | -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(icon_sprite.png) no-repeat; } | ||
| 243 | -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); } | ||
| 244 | -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } | ||
| 245 | -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} | ||
| 246 | -.ui-datepicker select.ui-datepicker-month, | ||
| 247 | -.ui-datepicker select.ui-datepicker-year { width: 49%;} | ||
| 248 | -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } | ||
| 249 | -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } | ||
| 250 | -.ui-datepicker td { border: 0; padding: 1px; line-height: 24px; background-color: #FFF!important; } | ||
| 251 | -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } | ||
| 252 | -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } | ||
| 253 | -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } | ||
| 254 | -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } | ||
| 255 | -.ui-datepicker table .ui-state-highlight { border-color: #ADE; } | ||
| 256 | -.ui-datepicker-calendar .ui-state-default { background: transparent; border-color: #FFF; } | ||
| 257 | -.ui-datepicker-calendar .ui-state-active { background: #D9EDF7; border-color: #ADE; color: #3A89A3; font-weight: bold; text-shadow: 0 1px 1px #fff; } |
app/assets/stylesheets/main/fonts.scss
| 1 | /** Typo **/ | 1 | /** Typo **/ |
| 2 | $monospace_font: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono', 'lucida console', monospace; | 2 | $monospace_font: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono', 'lucida console', monospace; |
| 3 | +$regular_font: "Helvetica Neue", Helvetica, Arial, sans-serif; |
app/helpers/merge_requests_helper.rb
| @@ -20,7 +20,7 @@ module MergeRequestsHelper | @@ -20,7 +20,7 @@ module MergeRequestsHelper | ||
| 20 | target_project_id: target_project.id, | 20 | target_project_id: target_project.id, |
| 21 | source_branch: event.branch_name, | 21 | source_branch: event.branch_name, |
| 22 | target_branch: target_project.repository.root_ref, | 22 | target_branch: target_project.repository.root_ref, |
| 23 | - title: event.branch_name.humanize | 23 | + title: event.branch_name.titleize.humanize |
| 24 | } | 24 | } |
| 25 | end | 25 | end |
| 26 | 26 |
app/views/projects/issues/_head.html.haml
| @@ -20,6 +20,11 @@ | @@ -20,6 +20,11 @@ | ||
| 20 | = form_tag project_issues_path(@project), method: :get, id: "issue_search_form", class: 'pull-left issue-search-form' do | 20 | = form_tag project_issues_path(@project), method: :get, id: "issue_search_form", class: 'pull-left issue-search-form' do |
| 21 | .append-right-10.hidden-xs.hidden-sm | 21 | .append-right-10.hidden-xs.hidden-sm |
| 22 | = search_field_tag :issue_search, nil, { placeholder: 'Filter by title or description', class: 'form-control issue_search search-text-input input-mn-300' } | 22 | = search_field_tag :issue_search, nil, { placeholder: 'Filter by title or description', class: 'form-control issue_search search-text-input input-mn-300' } |
| 23 | + = hidden_field_tag :state, params['state'] | ||
| 24 | + = hidden_field_tag :scope, params['scope'] | ||
| 25 | + = hidden_field_tag :assignee_id, params['assignee_id'] | ||
| 26 | + = hidden_field_tag :milestone_id, params['milestone_id'] | ||
| 27 | + = hidden_field_tag :label_id, params['label_id'] | ||
| 23 | - if can? current_user, :write_issue, @project | 28 | - if can? current_user, :write_issue, @project |
| 24 | = link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "btn btn-new pull-left", title: "New Issue", id: "new_issue_link" do | 29 | = link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "btn btn-new pull-left", title: "New Issue", id: "new_issue_link" do |
| 25 | %i.icon-plus | 30 | %i.icon-plus |
app/views/projects/merge_requests/branch_from.js.haml
config/application.rb
| @@ -64,6 +64,7 @@ module Gitlab | @@ -64,6 +64,7 @@ module Gitlab | ||
| 64 | config.assets.enabled = true | 64 | config.assets.enabled = true |
| 65 | config.assets.paths << Emoji.images_path | 65 | config.assets.paths << Emoji.images_path |
| 66 | config.assets.precompile << "emoji/*.png" | 66 | config.assets.precompile << "emoji/*.png" |
| 67 | + config.assets.precompile << "print.css" | ||
| 67 | 68 | ||
| 68 | # Version of your assets, change this if you want to expire all your assets | 69 | # Version of your assets, change this if you want to expire all your assets |
| 69 | config.assets.version = '1.0' | 70 | config.assets.version = '1.0' |
doc/install/installation.md
| @@ -202,6 +202,7 @@ You can change `6-6-stable` to `master` if you want the *bleeding edge* version, | @@ -202,6 +202,7 @@ You can change `6-6-stable` to `master` if you want the *bleeding edge* version, | ||
| 202 | 202 | ||
| 203 | # Create directory for satellites | 203 | # Create directory for satellites |
| 204 | sudo -u git -H mkdir /home/git/gitlab-satellites | 204 | sudo -u git -H mkdir /home/git/gitlab-satellites |
| 205 | + sudo chmod o-rwx /home/git/gitlab-satellites | ||
| 205 | 206 | ||
| 206 | # Create directories for sockets/pids and make sure GitLab can write to them | 207 | # Create directories for sockets/pids and make sure GitLab can write to them |
| 207 | sudo -u git -H mkdir tmp/pids/ | 208 | sudo -u git -H mkdir tmp/pids/ |
| @@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
| 1 | +When in a Project -> Settings, you will find Features on the bottom of the page that you can toggle. | ||
| 2 | +Below you will find a more elaborate explanation of each of these. | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +## Issues | ||
| 6 | + | ||
| 7 | +Issues is a really powerful, but lightweight issue tracking system. | ||
| 8 | +You can make tickets, assign them to people, file them under milestones, order them with labels and have discussion in them. | ||
| 9 | +They integrate deeply into GitLab and are easily referenced from anywhere by using # and the issuenumber. | ||
| 10 | +At GitLab.com, we use this for all our project management needs. | ||
| 11 | + | ||
| 12 | +## Merge Requests | ||
| 13 | + | ||
| 14 | +Using a merge request, you can review and discuss code before it is merged in the branch of your code. | ||
| 15 | +As with issues, it can be assigned; people, issues, etc. can be refereced; milestones attached. | ||
| 16 | +We see it as an integral part of working together on code and couldn't work without it. | ||
| 17 | + | ||
| 18 | + | ||
| 19 | +## Wiki | ||
| 20 | + | ||
| 21 | +This is a separate system for documentation, built right into GitLab. | ||
| 22 | +It is source controlled and is very convenient if you don't want to keep you documentation in your source code, but you do want to keep it in your GitLab project. | ||
| 23 | + | ||
| 24 | + | ||
| 25 | +## Wall | ||
| 26 | + | ||
| 27 | +For simple, project specific conversations, the wall can be used. | ||
| 28 | +It's very lightweight and simple and works well if you're not interested in using issues, but still want to occasionally communicate within a project. | ||
| 29 | + | ||
| 30 | + | ||
| 31 | +## Snippets | ||
| 32 | + | ||
| 33 | +Snippets are little bits of code or text. | ||
| 34 | +This is a nice place to put code or text that is used semi-regularly within the project, but does not belong in source control. | ||
| 35 | +For example, a specific config file that is used by > the team that is only valid for the people that work on the code. |
lib/tasks/gitlab/check.rake
| @@ -342,6 +342,7 @@ namespace :gitlab do | @@ -342,6 +342,7 @@ namespace :gitlab do | ||
| 342 | check_repo_base_is_not_symlink | 342 | check_repo_base_is_not_symlink |
| 343 | check_repo_base_user_and_group | 343 | check_repo_base_user_and_group |
| 344 | check_repo_base_permissions | 344 | check_repo_base_permissions |
| 345 | + check_satellites_permissions | ||
| 345 | check_update_hook_is_up_to_date | 346 | check_update_hook_is_up_to_date |
| 346 | check_repos_update_hooks_is_link | 347 | check_repos_update_hooks_is_link |
| 347 | check_gitlab_shell_self_test | 348 | check_gitlab_shell_self_test |
| @@ -443,6 +444,29 @@ namespace :gitlab do | @@ -443,6 +444,29 @@ namespace :gitlab do | ||
| 443 | end | 444 | end |
| 444 | end | 445 | end |
| 445 | 446 | ||
| 447 | + def check_satellites_permissions | ||
| 448 | + print "Satellites access is drwxr-x---? ... " | ||
| 449 | + | ||
| 450 | + satellites_path = Gitlab.config.satellites.path | ||
| 451 | + unless File.exists?(satellites_path) | ||
| 452 | + puts "can't check because of previous errors".magenta | ||
| 453 | + return | ||
| 454 | + end | ||
| 455 | + | ||
| 456 | + if File.stat(satellites_path).mode.to_s(8).ends_with?("0750") | ||
| 457 | + puts "yes".green | ||
| 458 | + else | ||
| 459 | + puts "no".red | ||
| 460 | + try_fixing_it( | ||
| 461 | + "sudo chmod u+rwx,g+rx,o-rwx #{satellites_path}", | ||
| 462 | + ) | ||
| 463 | + for_more_information( | ||
| 464 | + see_installation_guide_section "GitLab" | ||
| 465 | + ) | ||
| 466 | + fix_and_rerun | ||
| 467 | + end | ||
| 468 | + end | ||
| 469 | + | ||
| 446 | def check_repo_base_user_and_group | 470 | def check_repo_base_user_and_group |
| 447 | gitlab_shell_ssh_user = Gitlab.config.gitlab_shell.ssh_user | 471 | gitlab_shell_ssh_user = Gitlab.config.gitlab_shell.ssh_user |
| 448 | gitlab_shell_owner_group = Gitlab.config.gitlab_shell.owner_group | 472 | gitlab_shell_owner_group = Gitlab.config.gitlab_shell.owner_group |