Commit ed4f5b97 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Merge remote-tracking branch 'upstream/master' into 35642-add-owner-to-triggers-factory

* upstream/master: (49 commits)
  Fire system hooks when a user is created via LDAP or OAuth
  Common Docker Documentation Location in `gitlab-ce`
  fix deprecation warning present during webpack compiles
  Enable 5 lines of Sidekiq backtrace lines to aid in debugging
  Add support for copying permalink to notes via more actions dropdown
  Docs: update - fix headers
  Handle creating a nested group on MySQL correctly
  Decrease statuses batch size even more in a migration
  Fix failure when issue author is nil
  Fix searching for files by path
  Fix invite by email address duplication
  Revert "Merge branch 'mk-reenable-mysql-tests-on-all-branches' into 'master'"
  Fix repo editor scrollbar
  Revert "Merge branch 'sh-sidekiq-backtrace' into 'master'"
  Replace 'source/search_code.feature' spinach test with an rspec analog
  Add missing third argument to `Git::Repository#initialize` in spec
  New doc: how to install GitLab on Azure
  Authorizations regarding OAuth - style confirmation
  Enable 5 lines of Sidekiq backtrace lines to aid in debugging
  Reenable MySQL tests on all branches
  ...
parents 45aa23a6 ef8eb3f6
......@@ -207,9 +207,6 @@ gem 'kubeclient', '~> 2.2.0'
# d3
gem 'd3_rails', '~> 3.5.0'
# underscore-rails
gem 'underscore-rails', '~> 1.8.0'
# Sanitize user input
gem 'sanitize', '~> 2.0'
gem 'babosa', '~> 1.0.2'
......@@ -401,7 +398,7 @@ group :ed25519 do
end
# Gitaly GRPC client
gem 'gitaly', '~> 0.30.0'
gem 'gitaly-proto', '~> 0.31.0', require: 'gitaly'
gem 'toml-rb', '~> 0.3.15', require: false
......
......@@ -275,7 +275,7 @@ GEM
po_to_json (>= 1.0.0)
rails (>= 3.2.0)
gherkin-ruby (0.3.2)
gitaly (0.30.0)
gitaly-proto (0.31.0)
google-protobuf (~> 3.1)
grpc (~> 1.0)
github-linguist (4.7.6)
......@@ -899,7 +899,6 @@ GEM
uglifier (2.7.2)
execjs (>= 0.3.0)
json (>= 1.8.0)
underscore-rails (1.8.3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
......@@ -1019,7 +1018,7 @@ DEPENDENCIES
gettext (~> 3.2.2)
gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.2.0)
gitaly (~> 0.30.0)
gitaly-proto (~> 0.31.0)
github-linguist (~> 4.7.0)
gitlab-flowdock-git-hook (~> 1.0.1)
gitlab-markup (~> 1.5.1)
......@@ -1163,7 +1162,6 @@ DEPENDENCIES
truncato (~> 0.7.8)
u2f (~> 0.2.1)
uglifier (~> 2.7.2)
underscore-rails (~> 1.8.0)
unf (~> 0.1.4)
unicorn (~> 5.1.0)
unicorn-worker-killer (~> 0.4.4)
......
......@@ -55,13 +55,18 @@ const Api = {
// Return projects list. Filtered by query
projects(query, options, callback) {
const url = Api.buildUrl(Api.projectsPath);
return $.ajax({
url,
data: Object.assign({
const defaults = {
search: query,
per_page: 20,
membership: true,
}, options),
};
if (gon.current_user_id) {
defaults.membership = true;
}
return $.ajax({
url,
data: Object.assign(defaults, options),
dataType: 'json',
})
.done(projects => callback(projects));
......
......@@ -29,12 +29,14 @@ showTooltip = function(target, title) {
var $target = $(target);
var originalTitle = $target.data('original-title');
if (!$target.data('hideTooltip')) {
$target
.attr('title', 'Copied')
.tooltip('fixTitle')
.tooltip('show')
.attr('title', originalTitle)
.tooltip('fixTitle');
}
};
$(function() {
......
......@@ -588,9 +588,10 @@ function UsersSelect(currentUser, els) {
if (showEmailUser && data.results.length === 0 && query.term.match(/^[^@]+@[^@]+$/)) {
var trimmed = query.term.trim();
emailUser = {
name: "Invite \"" + query.term + "\"",
name: "Invite \"" + query.term + "\" by email",
username: trimmed,
id: trimmed
id: trimmed,
invite: true
};
data.results.unshift(emailUser);
}
......@@ -642,7 +643,7 @@ UsersSelect.prototype.formatResult = function(user) {
} else {
avatar = gon.default_avatar_url;
}
return "<div class='user-result " + (!user.username ? 'no-username' : void 0) + "'> <div class='user-image'><img class='avatar avatar-inline s32' src='" + avatar + "'></div> <div class='user-name dropdown-menu-user-full-name'>" + user.name + "</div> <div class='user-username dropdown-menu-user-username'>" + ("@" + user.username || "") + "</div> </div>";
return "<div class='user-result " + (!user.username ? 'no-username' : void 0) + "'> <div class='user-image'><img class='avatar avatar-inline s32' src='" + avatar + "'></div> <div class='user-name dropdown-menu-user-full-name'>" + user.name + "</div> <div class='user-username dropdown-menu-user-username'>" + (!user.invite ? "@" + _.escape(user.username) : "") + "</div> </div>";
};
UsersSelect.prototype.formatSelection = function(user) {
......
......@@ -78,7 +78,7 @@
&.s60 { font-size: 32px; line-height: 58px; }
&.s70 { font-size: 34px; line-height: 70px; }
&.s90 { font-size: 36px; line-height: 88px; }
&.s110 { font-size: 40px; line-height: 108px; font-weight: 300; }
&.s110 { font-size: 40px; line-height: 108px; font-weight: $gl-font-weight-normal; }
&.s140 { font-size: 72px; line-height: 138px; }
&.s160 { font-size: 96px; line-height: 158px; }
}
......
.badge {
font-weight: normal;
font-weight: $gl-font-weight-normal;
background-color: $badge-bg;
color: $badge-color;
vertical-align: baseline;
......
......@@ -8,7 +8,7 @@
text-align: center;
padding: 20px;
color: $gl-text-color;
font-weight: normal;
font-weight: $gl-font-weight-normal;
font-size: 14px;
line-height: 36px;
......@@ -213,7 +213,7 @@
h1 {
display: inline;
font-weight: normal;
font-weight: $gl-font-weight-normal;
font-size: 24px;
color: $gl-text-color;
}
......
@mixin btn-default {
border-radius: 3px;
font-size: $gl-font-size;
font-weight: 400;
font-weight: $gl-font-weight-normal;
padding: $gl-vert-padding $gl-btn-padding;
&:focus,
......
......@@ -52,13 +52,13 @@
.pika-label {
color: $gl-text-color-secondary;
font-size: 14px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
th {
padding: 2px 0;
color: $note-disabled-comment-color;
font-weight: normal;
font-weight: $gl-font-weight-normal;
text-transform: lowercase;
border-top: 1px solid $calendar-border-color;
}
......@@ -88,7 +88,7 @@
.is-today {
.pika-day {
color: inherit;
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
}
......
......@@ -36,12 +36,12 @@
color: $common-gray;
font-size: 14px;
margin-bottom: 12px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
line-height: 24px;
}
.bold {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.tab-content {
......@@ -89,7 +89,7 @@ hr {
}
}
.item-title { font-weight: 600; }
.item-title { font-weight: $gl-font-weight-bold; }
/** FLASH message **/
.author_link,
......@@ -118,18 +118,18 @@ table a code {
span.update-author {
display: block;
color: $update-author-color;
font-weight: normal;
font-weight: $gl-font-weight-normal;
font-style: italic;
strong {
font-weight: bold;
font-weight: $gl-font-weight-bold;
font-style: normal;
}
}
.user-mention {
color: $user-mention-color;
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
.field_with_errors {
......@@ -222,7 +222,7 @@ li.note {
text-align: center;
background: $error-bg;
color: $white-light;
font-weight: bold;
font-weight: $gl-font-weight-bold;
a {
color: $white-light;
......@@ -339,7 +339,7 @@ table {
.header-with-avatar {
h3 {
margin: 0;
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
.username {
......
......@@ -195,7 +195,7 @@
margin-top: 2px;
margin-bottom: 0;
font-size: 14px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
padding: 8px 0;
background-color: $white-light;
border: 1px solid $dropdown-border-color;
......@@ -268,7 +268,7 @@
}
.dropdown-bold-header {
font-weight: 600;
font-weight: $gl-font-weight-bold;
line-height: 22px;
padding: 0 16px;
}
......@@ -432,7 +432,7 @@
.dropdown-menu-user-full-name {
display: block;
font-weight: 500;
font-weight: $gl-font-weight-normal;
line-height: 16px;
text-overflow: ellipsis;
overflow: hidden;
......@@ -468,7 +468,7 @@
&.is-indeterminate,
&.is-active {
font-weight: 600;
font-weight: $gl-font-weight-bold;
color: $gl-text-color;
&::before {
......@@ -502,7 +502,7 @@
position: relative;
padding: 2px 25px 10px;
margin: 0 10px 10px;
font-weight: 600;
font-weight: $gl-font-weight-bold;
line-height: 1;
text-align: center;
text-overflow: ellipsis;
......@@ -685,7 +685,7 @@
.dropdown-menu-inner-title {
display: block;
color: $gl-text-color;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.dropdown-menu-inner-content {
......
......@@ -371,7 +371,7 @@
}
> .value {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -452,7 +452,7 @@
.dropdown-light-content {
font-size: 14px;
font-weight: 400;
font-weight: $gl-font-weight-normal;
}
.dropdown-user {
......
......@@ -25,7 +25,7 @@
a.flash-action {
margin-left: 5px;
text-decoration: none;
font-weight: normal;
font-weight: $gl-font-weight-normal;
border-bottom: 1px solid;
&:hover {
......
......@@ -32,7 +32,7 @@ label {
}
&.label-light {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -73,7 +73,7 @@ label {
margin-right: 0;
.control-label {
font-weight: bold;
font-weight: $gl-font-weight-bold;
padding-top: 4px;
}
......@@ -157,7 +157,7 @@ label {
.form-group .control-label,
.form-group .control-label-full-width {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.form-control::-webkit-input-placeholder {
......
......@@ -160,7 +160,7 @@ header {
li {
&.active a {
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
}
}
......@@ -250,7 +250,7 @@ header {
font-size: 18px;
line-height: 22px;
display: inline-block;
font-weight: normal;
font-weight: $gl-font-weight-normal;
color: $gl-text-color;
vertical-align: top;
white-space: nowrap;
......@@ -326,7 +326,7 @@ header {
.badge {
position: inherit;
top: -8px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
margin-left: -11px;
font-size: 11px;
color: $white-light;
......
......@@ -113,7 +113,7 @@ ul.content-list {
}
.title {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
a {
......@@ -212,7 +212,7 @@ ul.content-list {
}
.row-title {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.row-second-line {
......
......@@ -43,7 +43,7 @@
background: $gray-light;
a {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......
......@@ -8,7 +8,7 @@
}
.text-danger {
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
}
......@@ -16,6 +16,14 @@ body.modal-open {
overflow: hidden;
}
.modal-no-backdrop {
@extend .modal-dialog;
.modal-content {
box-shadow: none;
}
}
@media (min-width: $screen-md-min) {
.modal-dialog {
width: 860px;
......
......@@ -70,7 +70,7 @@
&.active a {
border-bottom: 2px solid $link-underline-blue;
color: $black;
font-weight: 600;
font-weight: $gl-font-weight-bold;
.badge {
color: $black;
......@@ -352,7 +352,7 @@
z-index: 300;
li.active {
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
}
}
......
......@@ -43,7 +43,7 @@
.commit-committer-link,
.commit-author-link {
color: $gl-text-color;
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
.commit-info {
......
......@@ -76,7 +76,7 @@
}
.select2-results li.select2-result-with-children > .select2-result-label {
font-weight: 600;
font-weight: $gl-font-weight-bold;
color: $gl-text-color;
}
......@@ -227,7 +227,7 @@
}
.group-name {
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
.group-path {
......@@ -252,12 +252,12 @@
.namespace-result {
.namespace-kind {
color: $namespace-kind-color;
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.namespace-path {
margin-left: 10px;
font-weight: bolder;
font-weight: $gl-font-weight-bold;
}
}
......@@ -283,7 +283,7 @@
padding: 0 1px;
.select2-match {
font-weight: bold;
font-weight: $gl-font-weight-bold;
text-decoration: none;
}
......
......@@ -30,7 +30,7 @@
.snippet-title {
font-size: 24px;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.snippet-edited-ago {
......
......@@ -32,7 +32,7 @@ table {
th {
background-color: $gray-light;
font-weight: normal;
font-weight: $gl-font-weight-normal;
border-bottom: none;
&.wide {
......
......@@ -103,7 +103,7 @@ summary {
padding: 4px 5px;
font-size: 12px;
font-style: normal;
font-weight: normal;
font-weight: $gl-font-weight-normal;
display: inline-block;
&.label-gray {
......@@ -165,7 +165,7 @@ summary {
.panel-heading {
padding: 6px 15px;
font-size: 13px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
a {
color: $panel-heading-link-color;
......
......@@ -74,7 +74,7 @@
h1 {
font-size: 1.75em;
font-weight: 600;
font-weight: $gl-font-weight-bold;
margin: 24px 0 16px;
padding-bottom: 0.3em;
border-bottom: 1px solid $white-dark;
......@@ -87,7 +87,7 @@
h2 {
font-size: 1.5em;
font-weight: 600;
font-weight: $gl-font-weight-bold;
margin: 24px 0 16px;
padding-bottom: 0.3em;
border-bottom: 1px solid $white-dark;
......@@ -280,7 +280,7 @@ body {
margin-top: $gl-padding;
line-height: 1.3;
font-size: 1.25em;
font-weight: 600;
font-weight: $gl-font-weight-bold;
&:last-child {
margin-bottom: 0;
......@@ -291,7 +291,7 @@ body {
margin-top: 0;
line-height: 1.3;
font-size: 1.25em;
font-weight: 600;
font-weight: $gl-font-weight-bold;
margin: 12px 7px;
}
......@@ -302,11 +302,11 @@ h4,
h5,
h6 {
color: $gl-text-color;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.light-header {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
/** CODE **/
......
......@@ -111,6 +111,8 @@ $well-light-text-color: #5b6169;
* Text
*/
$gl-font-size: 14px;
$gl-font-weight-normal: 400;
$gl-font-weight-bold: 600;
$gl-text-color: #2e2e2e;
$gl-text-color-secondary: #707070;
$gl-text-color-tertiary: #949494;
......
......@@ -69,7 +69,7 @@
.well-centered {
h1 {
font-weight: normal;
font-weight: $gl-font-weight-normal;
text-align: center;
font-size: 48px;
}
......
......@@ -204,11 +204,11 @@ $dark-il: #de935f;
.cs { color: $dark-cs; } /* Comment.Special */
.gd { color: $dark-gd; } /* Generic.Deleted */
.ge { font-style: italic; } /* Generic.Emph */
.gh { color: $dark-gh; font-weight: bold; } /* Generic.Heading */
.gh { color: $dark-gh; font-weight: $gl-font-weight-bold; } /* Generic.Heading */
.gi { color: $dark-gi; } /* Generic.Inserted */
.gp { color: $dark-gp; font-weight: bold; } /* Generic.Prompt */
.gs { font-weight: bold; } /* Generic.Strong */
.gu { color: $dark-gu; font-weight: bold; } /* Generic.Subheading */
.gp { color: $dark-gp; font-weight: $gl-font-weight-bold; } /* Generic.Prompt */
.gs { font-weight: $gl-font-weight-bold; } /* Generic.Strong */
.gu { color: $dark-gu; font-weight: $gl-font-weight-bold; } /* Generic.Subheading */
.kc { color: $dark-kc; } /* Keyword.Constant */
.kd { color: $dark-kd; } /* Keyword.Declaration */
.kn { color: $dark-kn; } /* Keyword.Namespace */
......
......@@ -203,7 +203,7 @@ $monokai-gi: #a6e22e;
.c1 { color: $monokai-c1; } /* Comment.Single */
.cs { color: $monokai-cs; } /* Comment.Special */
.ge { font-style: italic; } /* Generic.Emph */
.gs { font-weight: bold; } /* Generic.Strong */
.gs { font-weight: $gl-font-weight-bold; } /* Generic.Strong */
.kc { color: $monokai-kc; } /* Keyword.Constant */
.kd { color: $monokai-kd; } /* Keyword.Declaration */
.kn { color: $monokai-kn; } /* Keyword.Namespace */
......
......@@ -231,7 +231,7 @@ $solarized-dark-il: #2aa198;
.gi { color: $solarized-dark-gi; } /* Generic.Inserted */
.go { color: $solarized-dark-go; } /* Generic.Output */
.gp { color: $solarized-dark-gp; } /* Generic.Prompt */
.gs { color: $solarized-dark-gs; font-weight: bold; } /* Generic.Strong */
.gs { color: $solarized-dark-gs; font-weight: $gl-font-weight-bold; } /* Generic.Strong */
.gu { color: $solarized-dark-gu; } /* Generic.Subheading */
.gt { color: $solarized-dark-gt; } /* Generic.Traceback */
.kc { color: $solarized-dark-kc; } /* Keyword.Constant */
......
......@@ -239,7 +239,7 @@ $solarized-light-il: #2aa198;
.gi { color: $solarized-light-gi; } /* Generic.Inserted */
.go { color: $solarized-light-go; } /* Generic.Output */
.gp { color: $solarized-light-gp; } /* Generic.Prompt */
.gs { color: $solarized-light-gs; font-weight: bold; } /* Generic.Strong */
.gs { color: $solarized-light-gs; font-weight: $gl-font-weight-bold; } /* Generic.Strong */
.gu { color: $solarized-light-gu; } /* Generic.Subheading */
.gt { color: $solarized-light-gt; } /* Generic.Traceback */
.kc { color: $solarized-light-kc; } /* Keyword.Constant */
......
......@@ -211,12 +211,12 @@ $white-gc-bg: #eaf2f5;
.hll { background-color: $white-hll-bg; }
.c { color: $white-c; font-style: italic; }
.err { color: $white-err; background-color: $white-err-bg; }
.k { font-weight: bold; }
.o { font-weight: bold; }
.k { font-weight: $gl-font-weight-bold; }
.o { font-weight: $gl-font-weight-bold; }
.cm { color: $white-cm; font-style: italic; }
.cp { color: $white-cp; font-weight: bold; }
.cp { color: $white-cp; font-weight: $gl-font-weight-bold; }
.c1 { color: $white-c1; font-style: italic; }
.cs { color: $white-cs; font-weight: bold; font-style: italic; }
.cs { color: $white-cs; font-weight: $gl-font-weight-bold; font-style: italic; }
.gd { color: $white-gd; background-color: $white-gd-bg; }
.gd .x { color: $white-gd-x; background-color: $white-gd-x-bg; }
.ge { font-style: italic; }
......@@ -226,29 +226,29 @@ $white-gc-bg: #eaf2f5;
.gi .x { color: $white-gi-x; background-color: $white-gi-x-bg; }
.go { color: $white-go; }
.gp { color: $white-gp; }
.gs { font-weight: bold; }
.gu { color: $white-gu; font-weight: bold; }
.gs { font-weight: $gl-font-weight-bold; }
.gu { color: $white-gu; font-weight: $gl-font-weight-bold; }
.gt { color: $white-gt; }
.kc { font-weight: bold; }
.kd { font-weight: bold; }
.kn { font-weight: bold; }
.kp { font-weight: bold; }
.kr { font-weight: bold; }
.kt { color: $white-kt; font-weight: bold; }
.kc { font-weight: $gl-font-weight-bold; }
.kd { font-weight: $gl-font-weight-bold; }
.kn { font-weight: $gl-font-weight-bold; }
.kp { font-weight: $gl-font-weight-bold; }
.kr { font-weight: $gl-font-weight-bold; }
.kt { color: $white-kt; font-weight: $gl-font-weight-bold; }
.m { color: $white-m; }
.s { color: $white-s; }
.n { color: $white-n; }
.na { color: $white-na; }
.nb { color: $white-nb; }
.nc { color: $white-nc; font-weight: bold; }
.nc { color: $white-nc; font-weight: $gl-font-weight-bold; }
.no { color: $white-no; }
.ni { color: $white-ni; }
.ne { color: $white-ne; font-weight: bold; }
.nf { color: $white-nf; font-weight: bold; }
.ne { color: $white-ne; font-weight: $gl-font-weight-bold; }
.nf { color: $white-nf; font-weight: $gl-font-weight-bold; }
.nn { color: $white-nn; }
.nt { color: $white-nt; }
.nv { color: $white-nv; }
.ow { font-weight: bold; }
.ow { font-weight: $gl-font-weight-bold; }
.w { color: $white-w; }
.mf { color: $white-mf; }
.mh { color: $white-mh; }
......
......@@ -152,12 +152,12 @@ span.highlight_word {
.hll { background-color: $highlighted-hll-bg; }
.c { color: $highlighted-c; font-style: italic; }
.err { color: $highlighted-err; background-color: $highlighted-err-bg; }
.k { font-weight: bold; }
.o { font-weight: bold; }
.k { font-weight: $gl-font-weight-bold; }
.o { font-weight: $gl-font-weight-bold; }
.cm { color: $highlighted-cm; font-style: italic; }
.cp { color: $highlighted-cp; font-weight: bold; }
.cp { color: $highlighted-cp; font-weight: $gl-font-weight-bold; }
.c1 { color: $highlighted-c1; font-style: italic; }
.cs { color: $highlighted-cs; font-weight: bold; font-style: italic; }
.cs { color: $highlighted-cs; font-weight: $gl-font-weight-bold; font-style: italic; }
.gd { color: $highlighted-gd; background-color: $highlighted-gd-bg; }
.gd .x { color: $highlighted-gd; background-color: $highlighted-gd-x-bg; }
.ge { font-style: italic; }
......@@ -167,29 +167,29 @@ span.highlight_word {
.gi .x { color: $highlighted-gi; background-color: $highlighted-gi-x-bg; }
.go { color: $highlighted-go; }
.gp { color: $highlighted-gp; }
.gs { font-weight: bold; }
.gu { color: $highlighted-gu; font-weight: bold; }
.gs { font-weight: $gl-font-weight-bold; }
.gu { color: $highlighted-gu; font-weight: $gl-font-weight-bold; }
.gt { color: $highlighted-gt; }
.kc { font-weight: bold; }
.kd { font-weight: bold; }
.kn { font-weight: bold; }
.kp { font-weight: bold; }
.kr { font-weight: bold; }
.kt { color: $highlighted-kt; font-weight: bold; }
.kc { font-weight: $gl-font-weight-bold; }
.kd { font-weight: $gl-font-weight-bold; }
.kn { font-weight: $gl-font-weight-bold; }
.kp { font-weight: $gl-font-weight-bold; }
.kr { font-weight: $gl-font-weight-bold; }
.kt { color: $highlighted-kt; font-weight: $gl-font-weight-bold; }
.m { color: $highlighted-m; }
.s { color: $highlighted-s; }
.n { color: $highlighted-n; }
.na { color: $highlighted-na; }
.nb { color: $highlighted-nb; }
.nc { color: $highlighted-nc; font-weight: bold; }
.nc { color: $highlighted-nc; font-weight: $gl-font-weight-bold; }
.no { color: $highlighted-no; }
.ni { color: $highlighted-ni; }
.ne { color: $highlighted-ne; font-weight: bold; }
.nf { color: $highlighted-nf; font-weight: bold; }
.ne { color: $highlighted-ne; font-weight: $gl-font-weight-bold; }
.nf { color: $highlighted-nf; font-weight: $gl-font-weight-bold; }
.nn { color: $highlighted-nn; }
.nt { color: $highlighted-nt; }
.nv { color: $highlighted-nv; }
.ow { font-weight: bold; }
.ow { font-weight: $gl-font-weight-bold; }
.w { color: $highlighted-w; }
.mf { color: $highlighted-mf; }
.mh { color: $highlighted-mh; }
......
......@@ -134,7 +134,7 @@ header.navbar-gitlab-new {
li {
.badge {
box-shadow: none;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
}
......@@ -193,7 +193,7 @@ header.navbar-gitlab-new {
&.active > a {
box-shadow: inset 0 -3px 0 $indigo-500;
color: $white-light;
font-weight: 700;
font-weight: $gl-font-weight-bold;
}
> a {
......@@ -371,7 +371,7 @@ header.navbar-gitlab-new {
> a {
&:last-of-type:not(:first-child) {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
}
......@@ -411,7 +411,7 @@ header.navbar-gitlab-new {
.breadcrumbs-sub-title {
margin: 2px 0;
font-size: 16px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
line-height: 1;
ul {
......@@ -430,7 +430,7 @@ header.navbar-gitlab-new {
}
&:last-child a {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......
......@@ -46,7 +46,7 @@ $new-sidebar-collapsed-width: 50px;
a {
border-bottom: 1px solid $border-color;
font-weight: 600;
font-weight: $gl-font-weight-bold;
display: flex;
align-items: center;
padding: 10px 16px 10px 10px;
......@@ -70,8 +70,7 @@ $new-sidebar-collapsed-width: 50px;
background-color: $white-light;
}
.project-title,
.group-title {
.sidebar-context-title {
overflow: hidden;
text-overflow: ellipsis;
}
......@@ -109,7 +108,7 @@ $new-sidebar-collapsed-width: 50px;
}
.badge,
.project-title {
.sidebar-context-title {
display: none;
}
......@@ -160,7 +159,7 @@ $new-sidebar-collapsed-width: 50px;
> a {
color: $active-color;
font-weight: 700;
font-weight: $gl-font-weight-bold;
}
svg {
......@@ -308,7 +307,7 @@ $new-sidebar-collapsed-width: 50px;
.badge {
color: $active-color;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.sidebar-sub-level-items {
......@@ -474,6 +473,6 @@ $new-sidebar-collapsed-width: 50px;
border-bottom-color: $active-border;
.badge {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -471,7 +471,7 @@
padding-right: 35px;
> strong {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
}
......
......@@ -277,7 +277,7 @@
}
.trigger-build-variable {
font-weight: normal;
font-weight: $gl-font-weight-normal;
color: $code-color;
}
......@@ -378,7 +378,7 @@
}
&.active {
font-weight: bold;
font-weight: $gl-font-weight-bold;
.fa-arrow-right {
display: block;
......
......@@ -22,7 +22,7 @@
vertical-align: middle !important;
a {
font-weight: normal;
font-weight: $gl-font-weight-normal;
text-decoration: none;
}
}
......
......@@ -213,7 +213,7 @@
.commit-sha {
font-size: 14px;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -306,7 +306,7 @@
.gpg-popover-status {
display: flex;
align-items: center;
font-weight: normal;
font-weight: $gl-font-weight-normal;
line-height: 1.5;
}
......
......@@ -23,7 +23,7 @@ $space-between-cards: 8px;
line-height: 1;
color: $gl-text-color-secondary;
margin-left: 8px;
font-weight: 500;
font-weight: $gl-font-weight-normal;
a {
font-size: 18px;
......@@ -139,7 +139,7 @@ $space-between-cards: 8px;
.card-score-value {
font-size: 16px;
color: $gl-text-color;
font-weight: 500;
font-weight: $gl-font-weight-normal;
}
.card-score-big {
......@@ -147,7 +147,7 @@ $space-between-cards: 8px;
border-bottom: 1px solid $border-color;
font-size: 22px;
padding: 10px 0;
font-weight: 500;
font-weight: $gl-font-weight-normal;
}
.card-buttons {
......
......@@ -68,7 +68,7 @@
}
.stage-name {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -93,7 +93,7 @@
.header {
font-size: 30px;
line-height: 38px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
margin: 0;
}
......@@ -130,7 +130,7 @@
&.title {
line-height: 19px;
font-size: 14px;
font-weight: 600;
font-weight: $gl-font-weight-bold;
color: $gl-text-color;
}
......@@ -211,7 +211,7 @@
box-shadow: inset 2px 0 0 0 $active-item-blue;
.stage-name {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -404,7 +404,7 @@
color: $gl-link-color;
line-height: 1.3;
vertical-align: top;
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.fa {
......
......@@ -40,7 +40,7 @@
// "Changes suppressed. Click to show." link
.show-suppressed-diff {
font-size: 110%;
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
}
......@@ -104,7 +104,7 @@
a {
float: left;
width: 35px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
&[disabled] {
cursor: default;
......@@ -395,7 +395,7 @@
background-color: transparent;
border: 0;
color: $gl-link-color;
font-weight: 600;
font-weight: $gl-font-weight-bold;
&:hover,
&:focus {
......
......@@ -6,7 +6,7 @@
}
.environments-folder-name {
font-weight: normal;
font-weight: $gl-font-weight-normal;
padding-top: 20px;
}
......@@ -246,13 +246,13 @@
}
.text-metric-bold {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.label-axis-text,
.text-metric-usage {
fill: $black;
font-weight: 500;
font-weight: $gl-font-weight-normal;
font-size: 12px;
}
......
......@@ -57,7 +57,7 @@
.event-title {
@include str-truncated(calc(100% - 174px));
font-weight: 600;
font-weight: $gl-font-weight-bold;
color: $list-text-color;
}
......
......@@ -271,7 +271,7 @@
}
.light {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.no-value {
......@@ -306,7 +306,7 @@
display: block;
margin-top: 4px;
font-size: 13px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.hide-expanded {
......@@ -689,7 +689,7 @@
.issuable-info,
.task-status,
.issuable-updated-at {
font-weight: normal;
font-weight: $gl-font-weight-normal;
color: $gl-text-color-secondary;
a {
......
......@@ -75,7 +75,7 @@ ul.related-merge-requests > li {
.merge-requests-title,
.related-branches-title {
font-size: 16px;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.merge-request-id {
......@@ -244,7 +244,7 @@ ul.related-merge-requests > li {
strong {
display: block;
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
}
......
......@@ -22,7 +22,7 @@
}
h1:first-child {
font-weight: normal;
font-weight: $gl-font-weight-normal;
margin-bottom: 0.68em;
margin-top: 0;
font-size: 34px;
......@@ -38,7 +38,7 @@
}
a {
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
}
......@@ -54,7 +54,7 @@
padding: 15px;
.login-heading h3 {
font-weight: 300;
font-weight: $gl-font-weight-normal;
line-height: 1.5;
margin: 0 0 10px;
}
......@@ -186,7 +186,7 @@
}
label {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.submit-container {
......
......@@ -46,7 +46,7 @@
}
strong {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -221,7 +221,7 @@
}
.member {
font-weight: bold;
font-weight: $gl-font-weight-bold;
overflow-wrap: break-word;
word-break: break-all;
}
......
......@@ -197,7 +197,7 @@
@extend .ref-name;
color: $gl-text-color;
font-weight: 600;
font-weight: $gl-font-weight-bold;
overflow: hidden;
word-break: break-all;
......@@ -228,7 +228,7 @@
.mr-widget-body {
h4 {
float: left;
font-weight: 600;
font-weight: $gl-font-weight-bold;
font-size: 14px;
line-height: inherit;
margin-top: 0;
......@@ -239,7 +239,7 @@
}
time {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
}
......@@ -249,7 +249,7 @@
}
label {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.spacing {
......@@ -257,12 +257,12 @@
}
.bold {
font-weight: 600;
font-weight: $gl-font-weight-bold;
color: $gl-gray-light;
}
.state-label {
font-weight: 600;
font-weight: $gl-font-weight-bold;
padding-right: 10px;
}
......@@ -336,7 +336,7 @@
.text {
span {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
p {
......@@ -505,7 +505,7 @@
.panel-new-merge-request {
.panel-heading {
padding: 5px 10px;
font-weight: 600;
font-weight: $gl-font-weight-bold;
line-height: 25px;
}
......
......@@ -7,7 +7,7 @@
padding: 10px 16px;
h4 {
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
.progress {
......@@ -81,7 +81,7 @@
}
.remaining-days strong {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.milestone-stat {
......
......@@ -188,7 +188,7 @@
.close {
color: $white-light;
opacity: 0.85;
font-weight: normal;
font-weight: $gl-font-weight-normal;
&:hover {
opacity: 1;
......
......@@ -12,7 +12,7 @@
.interval-pattern-form-group {
label {
margin-right: 10px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
&[for='custom'] {
margin-right: 0;
......
......@@ -128,7 +128,7 @@
.branch-commit {
.ref-name {
font-weight: bold;
font-weight: $gl-font-weight-bold;
max-width: 120px;
overflow: hidden;
display: inline-block;
......@@ -272,7 +272,7 @@
.build-name {
float: right;
font-weight: 500;
font-weight: $gl-font-weight-normal;
}
.ci-status-icon-failed svg {
......@@ -281,7 +281,7 @@
.stage {
color: $gl-text-color-secondary;
font-weight: 500;
font-weight: $gl-font-weight-normal;
vertical-align: middle;
}
}
......@@ -420,7 +420,7 @@
.stage-name {
margin: 0 0 15px 10px;
font-weight: bold;
font-weight: $gl-font-weight-bold;
width: 176px;
white-space: nowrap;
overflow: hidden;
......@@ -580,7 +580,7 @@
vertical-align: bottom;
display: inline-block;
position: relative;
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
@mixin mini-pipeline-graph-color($color-light, $color-main, $color-dark) {
......@@ -724,7 +724,7 @@ button.mini-pipeline-graph-dropdown-toggle {
.mini-pipeline-graph-dropdown-item {
padding: 3px 7px 4px;
clear: both;
font-weight: normal;
font-weight: $gl-font-weight-normal;
line-height: 1.428571429;
white-space: nowrap;
margin: 0 5px;
......
......@@ -83,7 +83,7 @@
&::after {
content: "\00B7"; // Middle Dot
padding: 0 6px;
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
&:last-child {
......@@ -277,7 +277,7 @@ table.u2f-registrations {
.oauth-application-show {
.scope-name {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
.scopes-list {
......
......@@ -2,7 +2,7 @@
margin: -16px;
.alert-link {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
}
......@@ -114,7 +114,7 @@
margin-top: 10px;
margin-bottom: 10px;
font-size: 24px;
font-weight: 400;
font-weight: $gl-font-weight-normal;
line-height: 1;
word-wrap: break-word;
......@@ -259,7 +259,7 @@
border-width: 1px;
border-style: solid;
font-size: 13px;
font-weight: 600;
font-weight: $gl-font-weight-bold;
line-height: 13px;
letter-spacing: .4px;
padding: 6px 14px;
......@@ -309,7 +309,7 @@
}
.option-title {
font-weight: normal;
font-weight: $gl-font-weight-normal;
display: inline-block;
color: $gl-text-color;
}
......@@ -575,7 +575,7 @@ a.deploy-project-label {
color: $gl-text-color-tertiary;
transform: translateY(-50%);
font-size: 12px;
font-weight: bold;
font-weight: $gl-font-weight-bold;
line-height: 20px;
// Mobile
......@@ -826,7 +826,7 @@ pre.light-well {
.new-protected-tag {
label {
margin-top: 6px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
}
......@@ -853,7 +853,7 @@ pre.light-well {
}
&.is-active {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -952,7 +952,7 @@ pre.light-well {
&::before {
font-family: FontAwesome;
font-weight: normal;
font-weight: $gl-font-weight-normal;
font-style: normal;
}
}
......
......@@ -182,7 +182,6 @@
padding: 5px 10px;
position: relative;
border-top: 1px solid $white-normal;
margin-top: -5px;
}
#binary-viewer {
......@@ -267,7 +266,7 @@
display: inline-block;
font-size: 10px;
text-transform: uppercase;
font-weight: bold;
font-weight: $gl-font-weight-bold;
color: $gray-darkest;
white-space: nowrap;
overflow: hidden;
......
......@@ -30,7 +30,7 @@
}
h4 {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
}
......
......@@ -94,7 +94,7 @@ input[type="checkbox"]:hover {
&::before {
font-family: FontAwesome;
font-weight: normal;
font-weight: $gl-font-weight-normal;
font-style: normal;
}
}
......
......@@ -29,5 +29,5 @@ table .sherlock-code {
.sherlock-line-samples-table .slow {
color: $red-500;
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
......@@ -108,14 +108,14 @@
margin: 0;
float: none;
display: inline-block;
font-weight: normal;
font-weight: $gl-font-weight-normal;
padding: 0 5px;
line-height: inherit;
font-size: 14px;
}
.action-name {
font-weight: normal;
font-weight: $gl-font-weight-normal;
}
.todo-body {
......@@ -262,6 +262,6 @@
}
a {
font-weight: 600;
font-weight: $gl-font-weight-bold;
}
}
......@@ -231,7 +231,7 @@
}
.upload-link {
font-weight: normal;
font-weight: $gl-font-weight-normal;
color: $md-link-color;
}
......
.gitlab-ui-dev-kit {
> h2 {
margin: 35px 0 20px;
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
.example {
......
......@@ -37,7 +37,7 @@
}
.light {
font-weight: normal;
font-weight: $gl-font-weight-normal;
color: $gl-text-color-secondary;
}
......@@ -89,7 +89,7 @@
h3 {
font-size: 19px;
font-weight: normal;
font-weight: $gl-font-weight-normal;
margin: $gl-padding 0;
}
}
......
......@@ -281,7 +281,7 @@
$xterm-fg-255: #eee;
.term-bold {
font-weight: bold;
font-weight: $gl-font-weight-bold;
}
.term-italic {
......
......@@ -17,7 +17,7 @@
.wiki h3 {
font-size: 18px;
font-weight: bold;
font-weight: 600;
}
header,
......
......@@ -10,6 +10,14 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
end
end
if Gitlab::LDAP::Config.enabled?
Gitlab::LDAP::Config.available_servers.each do |server|
define_method server['provider_name'] do
ldap
end
end
end
# Extend the standard message generation to accept our custom exception
def failure_message
exception = env["omniauth.error"]
......
......@@ -5,14 +5,6 @@ class SessionsController < Devise::SessionsController
skip_before_action :check_two_factor_requirement, only: [:destroy]
# Explicitly call protect from forgery before anything else. Otherwise the
# CSFR-token might be cleared before authentication is done. This was the case
# when LDAP was enabled and the `OmniauthCallbacksController` is loaded
#
# *Note:* `prepend: true` is the default for rails4, but this will be changed
# to `prepend: false` in rails5.
protect_from_forgery prepend: true, with: :exception
prepend_before_action :check_initial_setup, only: [:new]
prepend_before_action :authenticate_with_two_factor,
if: :two_factor_enabled?, only: [:create]
......
# GroupsFinder
#
# Used to filter Groups by a set of params
#
# Arguments:
# current_user - which user is requesting groups
# params:
# owned: boolean
# parent: Group
# all_available: boolean (defaults to true)
#
# Users with full private access can see all groups. The `owned` and `parent`
# params can be used to restrict the groups that are returned.
#
# Anonymous users will never return any `owned` groups. They will return all
# public groups instead, even if `all_available` is set to false.
class GroupsFinder < UnionFinder
def initialize(current_user = nil, params = {})
@current_user = current_user
......@@ -16,13 +32,13 @@ class GroupsFinder < UnionFinder
attr_reader :current_user, :params
def all_groups
groups = []
if current_user
groups << Gitlab::GroupHierarchy.new(groups_for_ancestors, groups_for_descendants).all_groups
end
groups << Group.unscoped.public_to_user(current_user)
return [owned_groups] if params[:owned]
return [Group.all] if current_user&.full_private_access?
groups = []
groups << Gitlab::GroupHierarchy.new(groups_for_ancestors, groups_for_descendants).all_groups if current_user
groups << Group.unscoped.public_to_user(current_user) if include_public_groups?
groups << Group.none if groups.empty?
groups
end
......@@ -39,4 +55,12 @@ class GroupsFinder < UnionFinder
groups.where(parent: params[:parent])
end
def owned_groups
current_user&.groups || Group.none
end
def include_public_groups?
current_user.nil? || params.fetch(:all_available, true)
end
end
......@@ -20,6 +20,9 @@ module ButtonHelper
def clipboard_button(data = {})
css_class = data[:class] || 'btn-clipboard btn-transparent'
title = data[:title] || 'Copy to clipboard'
button_text = data[:button_text] || ''
hide_tooltip = data[:hide_tooltip] || false
hide_button_icon = data[:hide_button_icon] || false
# This supports code in app/assets/javascripts/copy_to_clipboard.js that
# works around ClipboardJS limitations to allow the context-specific copy/pasting of plain text or GFM.
......@@ -35,17 +38,22 @@ module ButtonHelper
target = data.delete(:target)
data[:clipboard_target] = target if target
unless hide_tooltip
data = { toggle: 'tooltip', placement: 'bottom', container: 'body' }.merge(data)
end
content_tag :button,
icon('clipboard', 'aria-hidden': 'true'),
button_attributes = {
class: "btn #{css_class}",
data: data,
type: :button,
title: title,
aria: {
label: title
aria: { label: title }
}
content_tag :button, button_attributes do
concat(icon('clipboard', 'aria-hidden': 'true')) unless hide_button_icon
concat(button_text)
end
end
def http_clone_button(project, placement = 'right', append_link: true)
......
......@@ -17,6 +17,10 @@ module Ci
validates :pipeline, presence: true, unless: :importing?
validates :name, presence: true, unless: :importing?
after_initialize do |stage|
self.status = DEFAULT_STATUS if self.status.nil?
end
state_machine :status, initial: :created do
event :enqueue do
transition created: :pending
......
......@@ -1192,7 +1192,7 @@ class Repository
end
def initialize_raw_repository
Gitlab::Git::Repository.new(project.repository_storage, disk_path + '.git')
Gitlab::Git::Repository.new(project.repository_storage, disk_path + '.git', Gitlab::GlRepository.gl_repository(project, false))
end
def circuit_breaker
......
......@@ -17,7 +17,7 @@ module Commits
new_commit = create_commit!
success(result: new_commit)
rescue ValidationError, ChangeError, Gitlab::Git::Index::IndexError, Repository::CommitError, GitHooksService::PreReceiveError => ex
rescue ValidationError, ChangeError, Gitlab::Git::Index::IndexError, Repository::CommitError, Gitlab::Git::HooksService::PreReceiveError => ex
error(ex.message)
end
......
module Users
module NewUserNotifier
def notify_new_user(user, reset_token)
log_info("User \"#{user.name}\" (#{user.email}) was created")
notification_service.new_user(user, reset_token) if reset_token
system_hook_service.execute_hooks_for(user, :create)
end
end
end
......@@ -14,7 +14,7 @@ class CreateBranchService < BaseService
else
error('Invalid reference name')
end
rescue GitHooksService::PreReceiveError => ex
rescue Gitlab::Git::HooksService::PreReceiveError => ex
error(ex.message)
end
......
......@@ -16,7 +16,7 @@ class DeleteBranchService < BaseService
else
error('Failed to remove branch')
end
rescue GitHooksService::PreReceiveError => ex
rescue Gitlab::Git::HooksService::PreReceiveError => ex
error(ex.message)
end
......
class GitHooksService
PreReceiveError = Class.new(StandardError)
attr_accessor :oldrev, :newrev, :ref
def execute(user, project, oldrev, newrev, ref)
@project = project
@user = Gitlab::GlId.gl_id(user)
@oldrev = oldrev
@newrev = newrev
@ref = ref
%w(pre-receive update).each do |hook_name|
status, message = run_hook(hook_name)
unless status
raise PreReceiveError, message
end
end
yield(self).tap do
run_hook('post-receive')
end
end
private
def run_hook(name)
hook = Gitlab::Git::Hook.new(name, @project)
hook.trigger(@user, oldrev, newrev, ref)
end
end
class GitOperationService
attr_reader :user, :repository
attr_reader :committer, :repository
def initialize(committer, new_repository)
committer = Gitlab::Git::Committer.from_user(committer) if committer.is_a?(User)
@committer = committer
def initialize(new_user, new_repository)
@user = new_user
@repository = new_repository
end
......@@ -118,9 +120,9 @@ class GitOperationService
end
def with_hooks(ref, newrev, oldrev)
GitHooksService.new.execute(
user,
repository.project,
Gitlab::Git::HooksService.new.execute(
committer,
repository,
oldrev,
newrev,
ref) do |service|
......
......@@ -15,6 +15,10 @@ module Groups
return group
end
if group_path.include?('/') && !Group.supports_nested_groups?
raise 'Nested groups are not supported on MySQL'
end
create_group_path
end
......
......@@ -49,7 +49,7 @@ module MergeRequests
raise MergeError, 'Conflicts detected during merge' unless commit_id
merge_request.update(merge_commit_sha: commit_id)
rescue GitHooksService::PreReceiveError => e
rescue Gitlab::Git::HooksService::PreReceiveError => e
raise MergeError, e.message
rescue StandardError => e
raise MergeError, "Something went wrong during merge: #{e.message}"
......
......@@ -13,7 +13,7 @@ module Tags
new_tag = repository.add_tag(current_user, tag_name, target, message)
rescue Rugged::TagError
return error("Tag #{tag_name} already exists")
rescue GitHooksService::PreReceiveError => ex
rescue Gitlab::Git::HooksService::PreReceiveError => ex
return error(ex.message)
end
......
......@@ -21,7 +21,7 @@ module Tags
else
error('Failed to remove tag')
end
rescue GitHooksService::PreReceiveError => ex
rescue Gitlab::Git::HooksService::PreReceiveError => ex
error(ex.message)
end
......
module Users
class CreateService < BaseService
include NewUserNotifier
def initialize(current_user, params = {})
@current_user = current_user
@params = params.dup
......@@ -10,11 +12,7 @@ module Users
@reset_token = user.generate_reset_token if user.recently_sent_password_reset?
if user.save
log_info("User \"#{user.name}\" (#{user.email}) was created")
notification_service.new_user(user, @reset_token) if @reset_token
system_hook_service.execute_hooks_for(user, :create)
end
notify_new_user(user, @reset_token) if user.save
user
end
......
module Users
class UpdateService < BaseService
include NewUserNotifier
def initialize(user, params = {})
@user = user
@params = params.dup
......@@ -10,7 +12,11 @@ module Users
assign_attributes(&block)
user_exists = @user.persisted?
if @user.save(validate: validate)
notify_new_user(@user, nil) unless user_exists
success
else
error(@user.errors.full_messages.uniq.join('. '))
......
......@@ -13,7 +13,7 @@ class ValidateNewBranchService < BaseService
end
success
rescue GitHooksService::PreReceiveError => ex
rescue Gitlab::Git::HooksService::PreReceiveError => ex
error(ex.message)
end
end
%h3.page-title Authorization required
%main{ :role => "main" }
%p.h4
.modal-no-backdrop
.modal-content
.modal-header
%h3.page-title
Authorize
%strong.text-info= @pre_auth.client.name
= link_to @pre_auth.client.name, @pre_auth.redirect_uri, target: '_blank', rel: 'noopener noreferrer'
to use your account?
.modal-body
- if current_user.admin?
.text-warning.prepend-top-20
.text-warning
%p
= icon("exclamation-triangle fw")
You are an admin, which means granting access to
%strong= @pre_auth.client.name
will allow them to interact with GitLab as an admin as well. Proceed with caution.
%p
You are about to authorize
= link_to @pre_auth.client.name, @pre_auth.redirect_uri, target: '_blank', rel: 'noopener noreferrer'
to use your account.
- if @pre_auth.scopes
#oauth-permissions
%p This application will be able to:
%ul.text-info
This application will be able to:
%ul
- @pre_auth.scopes.each do |scope|
%li= t scope, scope: [:doorkeeper, :scopes]
%hr/
.actions
= form_tag oauth_authorization_path, method: :post do
.form-actions.text-right
= form_tag oauth_authorization_path, method: :delete, class: 'inline' do
= hidden_field_tag :client_id, @pre_auth.client.uid
= hidden_field_tag :redirect_uri, @pre_auth.redirect_uri
= hidden_field_tag :state, @pre_auth.state
= hidden_field_tag :response_type, @pre_auth.response_type
= hidden_field_tag :scope, @pre_auth.scope
= hidden_field_tag :nonce, @pre_auth.nonce
= submit_tag "Authorize", class: "btn btn-success wide pull-left"
= form_tag oauth_authorization_path, method: :delete do
= submit_tag "Deny", class: "btn btn-danger"
= form_tag oauth_authorization_path, method: :post, class: 'inline' do
= hidden_field_tag :client_id, @pre_auth.client.uid
= hidden_field_tag :redirect_uri, @pre_auth.redirect_uri
= hidden_field_tag :state, @pre_auth.state
= hidden_field_tag :response_type, @pre_auth.response_type
= hidden_field_tag :scope, @pre_auth.scope
= hidden_field_tag :nonce, @pre_auth.nonce
= submit_tag "Deny", class: "btn btn-danger prepend-left-10"
= submit_tag "Authorize", class: "btn btn-success prepend-left-10"
......@@ -15,7 +15,7 @@
h1 {
font-size: 56px;
line-height: 100px;
font-weight: normal;
font-weight: 400;
color: #456;
}
......@@ -28,7 +28,7 @@
h3 {
color: #456;
font-size: 20px;
font-weight: normal;
font-weight: 400;
line-height: 28px;
}
......
......@@ -4,7 +4,7 @@
= link_to admin_root_path, title: 'Admin Overview' do
.avatar-container.s40.settings-avatar
= icon('wrench')
.project-title Admin Area
.sidebar-context-title Admin Area
%ul.sidebar-top-level-items
= nav_link(controller: %w(dashboard admin projects users groups jobs runners cohorts), html_options: {class: 'home'}) do
= link_to admin_root_path, title: 'Overview', class: 'shortcuts-tree' do
......
......@@ -4,7 +4,7 @@
= link_to group_path(@group), title: @group.name do
.avatar-container.s40.group-avatar
= image_tag group_icon(@group), class: "avatar s40 avatar-tile"
.group-title
.sidebar-context-title
= @group.name
%ul.sidebar-top-level-items
= nav_link(path: ['groups#show', 'groups#activity', 'groups#subgroups'], html_options: { class: 'home' }) do
......
......@@ -4,7 +4,7 @@
= link_to profile_path, title: 'Profile Settings' do
.avatar-container.s40.settings-avatar
= icon('user')
.project-title User Settings
.sidebar-context-title User Settings
%ul.sidebar-top-level-items
= nav_link(path: 'profiles#show', html_options: {class: 'home'}) do
= link_to profile_path, title: 'Profile Settings' do
......
......@@ -5,7 +5,7 @@
= link_to project_path(@project), title: @project.name do
.avatar-container.s40.project-avatar
= project_icon(@project, alt: @project.name, class: 'avatar s40 avatar-tile')
.project-title
.sidebar-context-title
= @project.name
%ul.sidebar-top-level-items
= nav_link(path: ['projects#show', 'projects#activity', 'cycle_analytics#show'], html_options: { class: 'home' }) do
......
......@@ -19,7 +19,7 @@
h3 {
color: #456;
font-size: 22px;
font-weight: bold;
font-weight: 600;
margin-bottom: 6px;
}
......
......@@ -32,7 +32,8 @@
%ul
- if can_update_issue
%li= link_to 'Edit', edit_project_issue_path(@project, @issue)
- unless current_user == @issue.author
/ TODO: simplify condition back #36860
- if @issue.author && current_user != @issue.author
%li= link_to 'Report abuse', new_abuse_report_path(user_id: @issue.author.id, ref_url: issue_url(@issue))
- if can_update_issue
%li= link_to 'Close issue', issue_path(@issue, issue: { state_event: :close }, format: 'json'), class: "btn-close #{issue_button_visibility(@issue, true)}", title: 'Close issue'
......
......@@ -6,6 +6,8 @@
%span.icon
= custom_icon('ellipsis_v')
%ul.dropdown-menu.more-actions-dropdown.dropdown-open-left
%li
= clipboard_button(text: noteable_note_url(note), title: "Copy reference to clipboard", button_text: 'Copy link', hide_tooltip: true, hide_button_icon: true)
- unless is_current_user
%li
= link_to new_abuse_report_path(user_id: note.author.id, ref_url: noteable_note_url(note)) do
......
......@@ -14,19 +14,19 @@
.prepend-top-default
%p.light
= _("Jobs for last week")
= _("Pipelines for last week")
(#{date_from_to(Date.today - 7.days, Date.today)})
%canvas#weekChart{ height: 200 }
.prepend-top-default
%p.light
= _("Jobs for last month")
= _("Pipelines for last month")
(#{date_from_to(Date.today - 30.days, Date.today)})
%canvas#monthChart{ height: 200 }
.prepend-top-default
%p.light
= _("Jobs for last year")
= _("Pipelines for last year")
%canvas#yearChart.padded{ height: 250 }
%script#pipelinesChartsData{ type: "application/json" }
......
......@@ -11,5 +11,5 @@
%span.sr-only
Clear search
- unless params[:snippets].eql? 'true'
= render 'filter' if current_user
= render 'filter'
= button_tag "Search", class: "btn btn-success btn-search"
......@@ -9,6 +9,7 @@
class: "hidden-xs hidden-sm btn btn-grouped btn-reopen #{issuable_button_visibility(issuable, false)}", title: "Reopen #{display_issuable_type}"
- elsif can_update && !is_current_user
= render 'shared/issuable/close_reopen_report_toggle', issuable: issuable
- else
- elsif issuable.author
/ TODO: change back to else #36860
= link_to 'Report abuse', new_abuse_report_path(user_id: issuable.author.id, ref_url: issuable_url(issuable)),
class: 'hidden-xs hidden-sm btn btn-grouped btn-close-color', title: 'Report abuse'
......@@ -37,6 +37,8 @@
%li.divider.droplab-item-ignore
/ TODO: remove condition #36860
- if issuable.author
%li.report-item{ data: { text: 'Report abuse', url: new_abuse_report_path(user_id: issuable.author.id, ref_url: issuable_url(issuable)),
button_class: "#{button_class} btn-close-color", toggle_class: "#{toggle_class} btn-close-color", method: '' } }
%button.btn.btn-transparent
......
# Concern for enabling a few lines of exception backtraces in Sidekiq
module ExceptionBacktrace
extend ActiveSupport::Concern
included do
sidekiq_options backtrace: 5
end
end
class GroupDestroyWorker
include Sidekiq::Worker
include DedicatedSidekiqQueue
include ExceptionBacktrace
def perform(group_id, user_id)
begin
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment