Commit bd1e0c7e authored by Dimitrie Hoekstra's avatar Dimitrie Hoekstra

Merge branch 'master' into '26207-add-hover-animations'

# Conflicts:
#   app/assets/stylesheets/framework/variables.scss
parents c1daa7d1 4a1a06f4
...@@ -16,6 +16,8 @@ gem 'default_value_for', '~> 3.0.0' ...@@ -16,6 +16,8 @@ gem 'default_value_for', '~> 3.0.0'
gem 'mysql2', '~> 0.3.16', group: :mysql gem 'mysql2', '~> 0.3.16', group: :mysql
gem 'pg', '~> 0.18.2', group: :postgres gem 'pg', '~> 0.18.2', group: :postgres
gem 'rugged', '~> 0.24.0'
# Authentication libraries # Authentication libraries
gem 'devise', '~> 4.2' gem 'devise', '~> 4.2'
gem 'doorkeeper', '~> 4.2.0' gem 'doorkeeper', '~> 4.2.0'
...@@ -49,10 +51,6 @@ gem 'u2f', '~> 0.2.1' ...@@ -49,10 +51,6 @@ gem 'u2f', '~> 0.2.1'
# Browser detection # Browser detection
gem 'browser', '~> 2.2' gem 'browser', '~> 2.2'
# Extracting information from a git repository
# Provide access to Gitlab::Git library
gem 'gitlab_git', '~> 10.7.0'
# LDAP Auth # LDAP Auth
# GitLab fork with several improvements to original library. For full list of changes # GitLab fork with several improvements to original library. For full list of changes
# see https://github.com/intridea/omniauth-ldap/compare/master...gitlabhq:master # see https://github.com/intridea/omniauth-ldap/compare/master...gitlabhq:master
...@@ -328,7 +326,7 @@ end ...@@ -328,7 +326,7 @@ end
gem 'newrelic_rpm', '~> 3.16' gem 'newrelic_rpm', '~> 3.16'
gem 'octokit', '~> 4.3.0' gem 'octokit', '~> 4.6.2'
gem 'mail_room', '~> 0.9.0' gem 'mail_room', '~> 0.9.0'
......
...@@ -255,11 +255,6 @@ GEM ...@@ -255,11 +255,6 @@ GEM
mime-types (>= 1.16, < 3) mime-types (>= 1.16, < 3)
posix-spawn (~> 0.3) posix-spawn (~> 0.3)
gitlab-markup (1.5.0) gitlab-markup (1.5.0)
gitlab_git (10.7.0)
activesupport (~> 4.0)
charlock_holmes (~> 0.7.3)
github-linguist (~> 4.7.0)
rugged (~> 0.24.0)
gitlab_omniauth-ldap (1.2.1) gitlab_omniauth-ldap (1.2.1)
net-ldap (~> 0.9) net-ldap (~> 0.9)
omniauth (~> 1.0) omniauth (~> 1.0)
...@@ -420,8 +415,8 @@ GEM ...@@ -420,8 +415,8 @@ GEM
multi_json (~> 1.3) multi_json (~> 1.3)
multi_xml (~> 0.5) multi_xml (~> 0.5)
rack (>= 1.2, < 3) rack (>= 1.2, < 3)
octokit (4.3.0) octokit (4.6.2)
sawyer (~> 0.7.0, >= 0.5.3) sawyer (~> 0.8.0, >= 0.5.3)
oj (2.17.4) oj (2.17.4)
omniauth (1.3.1) omniauth (1.3.1)
hashie (>= 1.2, < 4) hashie (>= 1.2, < 4)
...@@ -650,9 +645,9 @@ GEM ...@@ -650,9 +645,9 @@ GEM
sprockets (>= 2.8, < 4.0) sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0) sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3) tilt (>= 1.1, < 3)
sawyer (0.7.0) sawyer (0.8.1)
addressable (>= 2.3.5, < 2.5) addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 0.10) faraday (~> 0.8, < 1.0)
scss_lint (0.47.1) scss_lint (0.47.1)
rake (>= 0.9, < 11) rake (>= 0.9, < 11)
sass (~> 3.4.15) sass (~> 3.4.15)
...@@ -857,7 +852,6 @@ DEPENDENCIES ...@@ -857,7 +852,6 @@ DEPENDENCIES
github-linguist (~> 4.7.0) github-linguist (~> 4.7.0)
gitlab-flowdock-git-hook (~> 1.0.1) gitlab-flowdock-git-hook (~> 1.0.1)
gitlab-markup (~> 1.5.0) gitlab-markup (~> 1.5.0)
gitlab_git (~> 10.7.0)
gitlab_omniauth-ldap (~> 1.2.1) gitlab_omniauth-ldap (~> 1.2.1)
gollum-lib (~> 4.2) gollum-lib (~> 4.2)
gollum-rugged_adapter (~> 0.4.2) gollum-rugged_adapter (~> 0.4.2)
...@@ -895,7 +889,7 @@ DEPENDENCIES ...@@ -895,7 +889,7 @@ DEPENDENCIES
newrelic_rpm (~> 3.16) newrelic_rpm (~> 3.16)
nokogiri (~> 1.6.7, >= 1.6.7.2) nokogiri (~> 1.6.7, >= 1.6.7.2)
oauth2 (~> 1.2.0) oauth2 (~> 1.2.0)
octokit (~> 4.3.0) octokit (~> 4.6.2)
oj (~> 2.17.4) oj (~> 2.17.4)
omniauth (~> 1.3.1) omniauth (~> 1.3.1)
omniauth-auth0 (~> 1.4.1) omniauth-auth0 (~> 1.4.1)
...@@ -942,6 +936,7 @@ DEPENDENCIES ...@@ -942,6 +936,7 @@ DEPENDENCIES
rubocop-rspec (~> 1.5.0) rubocop-rspec (~> 1.5.0)
ruby-fogbugz (~> 0.2.1) ruby-fogbugz (~> 0.2.1)
ruby-prof (~> 0.16.2) ruby-prof (~> 0.16.2)
rugged (~> 0.24.0)
sanitize (~> 2.0) sanitize (~> 2.0)
sass-rails (~> 5.0.6) sass-rails (~> 5.0.6)
scss_lint (~> 0.47.0) scss_lint (~> 0.47.0)
...@@ -988,4 +983,4 @@ DEPENDENCIES ...@@ -988,4 +983,4 @@ DEPENDENCIES
wikicloth (= 0.8.1) wikicloth (= 0.8.1)
BUNDLED WITH BUNDLED WITH
1.13.6 1.13.7
...@@ -55,6 +55,13 @@ ...@@ -55,6 +55,13 @@
$('.dropdown-toggle-text', $dropdown).text(text); $('.dropdown-toggle-text', $dropdown).text(text);
$dropdownContainer.removeClass('open'); $dropdownContainer.removeClass('open');
}); });
$dropdownContainer.on('click', '.dropdown-content a', (e) => {
$dropdown.prop('title', e.target.text.replace(/_+?/g, '-'));
if ($dropdown.hasClass('has-tooltip')) {
$dropdown.tooltip('fixTitle');
}
});
}); });
}; };
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
return fn(item); return fn(item);
}).filter(Boolean); }).filter(Boolean);
window.gl.environmentsList.EnvironmentsComponent = Vue.component('environment-component', { gl.environmentsList.EnvironmentsComponent = Vue.component('environment-component', {
props: { props: {
store: { store: {
type: Object, type: Object,
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
}, },
components: { components: {
'environment-item': window.gl.environmentsList.EnvironmentItem, 'environment-item': gl.environmentsList.EnvironmentItem,
}, },
data() { data() {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
window.gl = window.gl || {}; window.gl = window.gl || {};
window.gl.environmentsList = window.gl.environmentsList || {}; window.gl.environmentsList = window.gl.environmentsList || {};
window.gl.environmentsList.ActionsComponent = Vue.component('actions-component', { gl.environmentsList.ActionsComponent = Vue.component('actions-component', {
props: { props: {
actions: { actions: {
type: Array, type: Array,
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
window.gl = window.gl || {}; window.gl = window.gl || {};
window.gl.environmentsList = window.gl.environmentsList || {}; window.gl.environmentsList = window.gl.environmentsList || {};
window.gl.environmentsList.ExternalUrlComponent = Vue.component('external-url-component', { gl.environmentsList.ExternalUrlComponent = Vue.component('external-url-component', {
props: { props: {
externalUrl: { externalUrl: {
type: String, type: String,
......
...@@ -29,12 +29,12 @@ ...@@ -29,12 +29,12 @@
gl.environmentsList.EnvironmentItem = Vue.component('environment-item', { gl.environmentsList.EnvironmentItem = Vue.component('environment-item', {
components: { components: {
'commit-component': window.gl.CommitComponent, 'commit-component': gl.CommitComponent,
'actions-component': window.gl.environmentsList.ActionsComponent, 'actions-component': gl.environmentsList.ActionsComponent,
'external-url-component': window.gl.environmentsList.ExternalUrlComponent, 'external-url-component': gl.environmentsList.ExternalUrlComponent,
'stop-component': window.gl.environmentsList.StopComponent, 'stop-component': gl.environmentsList.StopComponent,
'rollback-component': window.gl.environmentsList.RollbackComponent, 'rollback-component': gl.environmentsList.RollbackComponent,
'terminal-button-component': window.gl.environmentsList.TerminalButtonComponent, 'terminal-button-component': gl.environmentsList.TerminalButtonComponent,
}, },
props: { props: {
...@@ -183,7 +183,7 @@ ...@@ -183,7 +183,7 @@
* @returns {String} * @returns {String}
*/ */
createdDate() { createdDate() {
return window.gl.environmentsList.timeagoInstance.format( return gl.environmentsList.timeagoInstance.format(
this.model.last_deployment.deployable.created_at, this.model.last_deployment.deployable.created_at,
); );
}, },
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
window.gl = window.gl || {}; window.gl = window.gl || {};
window.gl.environmentsList = window.gl.environmentsList || {}; window.gl.environmentsList = window.gl.environmentsList || {};
window.gl.environmentsList.RollbackComponent = Vue.component('rollback-component', { gl.environmentsList.RollbackComponent = Vue.component('rollback-component', {
props: { props: {
retryUrl: { retryUrl: {
type: String, type: String,
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
window.gl = window.gl || {}; window.gl = window.gl || {};
window.gl.environmentsList = window.gl.environmentsList || {}; window.gl.environmentsList = window.gl.environmentsList || {};
window.gl.environmentsList.StopComponent = Vue.component('stop-component', { gl.environmentsList.StopComponent = Vue.component('stop-component', {
props: { props: {
stopUrl: { stopUrl: {
type: String, type: String,
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
window.gl = window.gl || {}; window.gl = window.gl || {};
window.gl.environmentsList = window.gl.environmentsList || {}; window.gl.environmentsList = window.gl.environmentsList || {};
window.gl.environmentsList.TerminalButtonComponent = Vue.component('terminal-button-component', { gl.environmentsList.TerminalButtonComponent = Vue.component('terminal-button-component', {
props: { props: {
terminalPath: { terminalPath: {
type: String, type: String,
......
...@@ -7,15 +7,17 @@ ...@@ -7,15 +7,17 @@
$(() => { $(() => {
window.gl = window.gl || {}; window.gl = window.gl || {};
if (window.gl.EnvironmentsListApp) { if (gl.EnvironmentsListApp) {
window.gl.EnvironmentsListApp.$destroy(true); gl.EnvironmentsListApp.$destroy(true);
} }
const Store = window.gl.environmentsList.EnvironmentsStore; const Store = gl.environmentsList.EnvironmentsStore;
window.gl.EnvironmentsListApp = new window.gl.environmentsList.EnvironmentsComponent({ gl.EnvironmentsListApp = new gl.environmentsList.EnvironmentsComponent({
el: document.querySelector('#environments-list-view'), el: document.querySelector('#environments-list-view'),
propsData: { propsData: {
store: Store.create(), store: Store.create(),
}, },
}); });
}); });
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
}, },
DefaultOptions: { DefaultOptions: {
sorter: function(query, items, searchKey) { sorter: function(query, items, searchKey) {
this.setting.highlightFirst = query.length > 0;
if (gl.GfmAutoComplete.isLoading(items)) { if (gl.GfmAutoComplete.isLoading(items)) {
return items; return items;
} }
...@@ -55,11 +56,9 @@ ...@@ -55,11 +56,9 @@
}, },
filter: function(query, data, searchKey) { filter: function(query, data, searchKey) {
if (gl.GfmAutoComplete.isLoading(data)) { if (gl.GfmAutoComplete.isLoading(data)) {
gl.GfmAutoComplete.togglePreventSelection.call(this, true);
gl.GfmAutoComplete.fetchData(this.$inputor, this.at); gl.GfmAutoComplete.fetchData(this.$inputor, this.at);
return data; return data;
} else { } else {
gl.GfmAutoComplete.togglePreventSelection.call(this, false);
return $.fn.atwho["default"].callbacks.filter(query, data, searchKey); return $.fn.atwho["default"].callbacks.filter(query, data, searchKey);
} }
}, },
...@@ -257,9 +256,9 @@ ...@@ -257,9 +256,9 @@
insertTpl: '${atwho-at}${title}', insertTpl: '${atwho-at}${title}',
callbacks: { callbacks: {
matcher: this.DefaultOptions.matcher, matcher: this.DefaultOptions.matcher,
sorter: this.DefaultOptions.sorter,
beforeInsert: this.DefaultOptions.beforeInsert, beforeInsert: this.DefaultOptions.beforeInsert,
filter: this.DefaultOptions.filter, filter: this.DefaultOptions.filter,
sorter: this.DefaultOptions.sorter,
beforeSave: function(merges) { beforeSave: function(merges) {
if (gl.GfmAutoComplete.isLoading(merges)) return merges; if (gl.GfmAutoComplete.isLoading(merges)) return merges;
var sanitizeLabelTitle; var sanitizeLabelTitle;
...@@ -370,11 +369,7 @@ ...@@ -370,11 +369,7 @@
if (!data || !data.length) return false; if (!data || !data.length) return false;
if (Array.isArray(data)) data = data[0]; if (Array.isArray(data)) data = data[0];
return data === this.defaultLoadingData[0] || data.name === this.defaultLoadingData[0]; return data === this.defaultLoadingData[0] || data.name === this.defaultLoadingData[0];
}, }
togglePreventSelection(isPrevented = !!this.setting.tabSelectsMatch) {
this.setting.tabSelectsMatch = !isPrevented;
this.setting.spaceSelectsMatch = !isPrevented;
},
}; };
}).call(this); }).call(this);
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
autosize(this.textarea); autosize(this.textarea);
// form and textarea event listeners // form and textarea event listeners
this.addEventListeners(); this.addEventListeners();
gl.text.init(this.form);
} }
gl.text.init(this.form);
// hide discard button // hide discard button
this.form.find('.js-note-discard').hide(); this.form.find('.js-note-discard').hide();
return this.form.show(); return this.form.show();
......
...@@ -106,8 +106,9 @@ ...@@ -106,8 +106,9 @@
); );
}; };
gl.utils.getPagePath = function() { gl.utils.getPagePath = function(index) {
return $('body').data('page').split(':')[0]; index = index || 0;
return $('body').data('page').split(':')[index];
}; };
gl.utils.parseUrl = function (url) { gl.utils.parseUrl = function (url) {
...@@ -127,6 +128,17 @@ ...@@ -127,6 +128,17 @@
return e.metaKey || e.ctrlKey || e.altKey || e.shiftKey; return e.metaKey || e.ctrlKey || e.altKey || e.shiftKey;
}; };
gl.utils.scrollToElement = function($el) {
var top = $el.offset().top;
gl.navBarHeight = gl.navBarHeight || $('.navbar-gitlab').height();
gl.navLinksHeight = gl.navLinksHeight || $('.nav-links').height();
gl.mrTabsHeight = gl.mrTabsHeight || $('.merge-request-tabs').height();
return $('body, html').animate({
scrollTop: top - (gl.navBarHeight + gl.navLinksHeight + gl.mrTabsHeight)
}, 200);
};
})(window); })(window);
}).call(this); }).call(this);
/**
* CustomEvent support for IE
*/
if (typeof window.CustomEvent !== 'function') {
window.CustomEvent = function CustomEvent(e, params) {
const options = params || { bubbles: false, cancelable: false, detail: undefined };
const evt = document.createEvent('CustomEvent');
evt.initCustomEvent(e, options.bubbles, options.cancelable, options.detail);
return evt;
};
window.CustomEvent.prototype = window.Event.prototype;
}
...@@ -52,6 +52,12 @@ ...@@ -52,6 +52,12 @@
this.setupMainTargetNoteForm(); this.setupMainTargetNoteForm();
this.initTaskList(); this.initTaskList();
this.collapseLongCommitList(); this.collapseLongCommitList();
// We are in the Merge Requests page so we need another edit form for Changes tab
if (gl.utils.getPagePath(1) === 'merge_requests') {
$('.note-edit-form').clone()
.addClass('mr-note-edit-form').insertAfter('.note-edit-form');
}
} }
Notes.prototype.addBinding = function() { Notes.prototype.addBinding = function() {
...@@ -63,7 +69,7 @@ ...@@ -63,7 +69,7 @@
// change note in UI after update // change note in UI after update
$(document).on("ajax:success", "form.edit-note", this.updateNote); $(document).on("ajax:success", "form.edit-note", this.updateNote);
// Edit note link // Edit note link
$(document).on("click", ".js-note-edit", this.showEditForm); $(document).on("click", ".js-note-edit", this.showEditForm.bind(this));
$(document).on("click", ".note-edit-cancel", this.cancelEdit); $(document).on("click", ".note-edit-cancel", this.cancelEdit);
// Reopen and close actions for Issue/MR combined with note form submit // Reopen and close actions for Issue/MR combined with note form submit
$(document).on("click", ".js-comment-button", this.updateCloseButton); $(document).on("click", ".js-comment-button", this.updateCloseButton);
...@@ -466,6 +472,7 @@ ...@@ -466,6 +472,7 @@
var $html, $note_li; var $html, $note_li;
// Convert returned HTML to a jQuery object so we can modify it further // Convert returned HTML to a jQuery object so we can modify it further
$html = $(note.html); $html = $(note.html);
this.revertNoteEditForm();
gl.utils.localTimeAgo($('.js-timeago', $html)); gl.utils.localTimeAgo($('.js-timeago', $html));
$html.renderGFM(); $html.renderGFM();
$html.find('.js-task-list-container').taskList('enable'); $html.find('.js-task-list-container').taskList('enable');
...@@ -480,48 +487,56 @@ ...@@ -480,48 +487,56 @@
}; };
Notes.prototype.checkContentToAllowEditing = function($el) {
var initialContent = $el.find('.original-note-content').text().trim();
var currentContent = $el.find('.note-textarea').val();
var isAllowed = true;
if (currentContent === initialContent) {
this.removeNoteEditForm($el);
}
else {
var $buttons = $el.find('.note-form-actions');
var isWidgetVisible = gl.utils.isInViewport($el.get(0));
if (!isWidgetVisible) {
gl.utils.scrollToElement($el);
}
$el.find('.js-edit-warning').show();
isAllowed = false;
}
return isAllowed;
}
/* /*
Called in response to clicking the edit note link Called in response to clicking the edit note link
Replaces the note text with the note edit form Replaces the note text with the note edit form
Adds a data attribute to the form with the original content of the note for cancellations Adds a data attribute to the form with the original content of the note for cancellations
*/ */
Notes.prototype.showEditForm = function(e, scrollTo, myLastNote) { Notes.prototype.showEditForm = function(e, scrollTo, myLastNote) {
var $noteText, done, form, note;
e.preventDefault(); e.preventDefault();
note = $(this).closest(".note");
note.addClass("is-editting"); var $target = $(e.target);
form = note.find(".note-edit-form"); var $editForm = $(this.getEditFormSelector($target));
form.addClass('current-note-edit-form'); var $note = $target.closest('.note');
// Show the attachment delete link var $currentlyEditing = $('.note.is-editting:visible');
note.find(".js-note-attachment-delete").show();
done = function($noteText) { if ($currentlyEditing.length) {
var noteTextVal; var isEditAllowed = this.checkContentToAllowEditing($currentlyEditing);
// Neat little trick to put the cursor at the end
noteTextVal = $noteText.val(); if (!isEditAllowed) {
// Store the original note text in a data attribute to retrieve if a user cancels edit. return;
form.find('form.edit-note').data('original-note', noteTextVal); }
return $noteText.val('').val(noteTextVal);
};
new GLForm(form);
if ((scrollTo != null) && (myLastNote != null)) {
// scroll to the bottom
// so the open of the last element doesn't make a jump
$('html, body').scrollTop($(document).height());
return $('html, body').animate({
scrollTop: myLastNote.offset().top - 150
}, 500, function() {
var $noteText;
$noteText = form.find(".js-note-text");
$noteText.focus();
return done($noteText);
});
} else {
$noteText = form.find('.js-note-text');
$noteText.focus();
return done($noteText);
} }
$note.find('.js-note-attachment-delete').show();
$editForm.addClass('current-note-edit-form');
$note.addClass('is-editting');
this.putEditFormInPlace($target);
}; };
...@@ -532,19 +547,41 @@ ...@@ -532,19 +547,41 @@
*/ */
Notes.prototype.cancelEdit = function(e) { Notes.prototype.cancelEdit = function(e) {
var note;
e.preventDefault(); e.preventDefault();
note = $(e.target).closest('.note'); var $target = $(e.target);
var note = $target.closest('.note');
note.find('.js-edit-warning').hide();
this.revertNoteEditForm($target);
return this.removeNoteEditForm(note); return this.removeNoteEditForm(note);
}; };
Notes.prototype.revertNoteEditForm = function($target) {
$target = $target || $('.note.is-editting:visible');
var selector = this.getEditFormSelector($target);
var $editForm = $(selector);
$editForm.insertBefore('.notes-form');
$editForm.find('.js-comment-button').enable();
$editForm.find('.js-edit-warning').hide();
};
Notes.prototype.getEditFormSelector = function($el) {
var selector = '.note-edit-form:not(.mr-note-edit-form)';
if ($el.parents('#diffs').length) {
selector = '.note-edit-form.mr-note-edit-form';
}
return selector;
};
Notes.prototype.removeNoteEditForm = function(note) { Notes.prototype.removeNoteEditForm = function(note) {
var form; var form = note.find('.current-note-edit-form');
form = note.find(".current-note-edit-form"); note.removeClass('is-editting');
note.removeClass("is-editting"); form.removeClass('current-note-edit-form');
form.removeClass("current-note-edit-form"); form.find('.js-edit-warning').hide();
// Replace markdown textarea text with original note text. // Replace markdown textarea text with original note text.
return form.find(".js-note-text").val(form.find('form.edit-note').data('original-note')); return form.find('.js-note-text').val(form.find('form.edit-note').data('original-note'));
}; };
...@@ -837,15 +874,44 @@ ...@@ -837,15 +874,44 @@
Notes.prototype.initTaskList = function() { Notes.prototype.initTaskList = function() {
this.enableTaskList(); this.enableTaskList();
return $(document).on('tasklist:changed', '.note .js-task-list-container', this.updateTaskList); return $(document).on('tasklist:changed', '.note .js-task-list-container', this.updateTaskList.bind(this));
}; };
Notes.prototype.enableTaskList = function() { Notes.prototype.enableTaskList = function() {
return $('.note .js-task-list-container').taskList('enable'); return $('.note .js-task-list-container').taskList('enable');
}; };
Notes.prototype.updateTaskList = function() { Notes.prototype.putEditFormInPlace = function($el) {
return $('form', this).submit(); var $editForm = $(this.getEditFormSelector($el));
var $note = $el.closest('.note');
$editForm.insertAfter($note.find('.note-text'));
var $originalContentEl = $note.find('.original-note-content');
var originalContent = $originalContentEl.text().trim();
var postUrl = $originalContentEl.data('post-url');
var targetId = $originalContentEl.data('target-id');
var targetType = $originalContentEl.data('target-type');
new GLForm($editForm.find('form'));
$editForm.find('form').attr('action', postUrl);
$editForm.find('.js-form-target-id').val(targetId);
$editForm.find('.js-form-target-type').val(targetType);
$editForm.find('.js-note-text').focus().val(originalContent);
$editForm.find('.js-md-write-button').trigger('click');
$editForm.find('.referenced-users').hide();
}
Notes.prototype.updateTaskList = function(e) {
var $target = $(e.target);
var $list = $target.closest('.js-task-list-container');
var $editForm = $(this.getEditFormSelector($target));
var $note = $list.closest('.note');
this.putEditFormInPlace($list);
$editForm.find('#note_note').val($note.find('.original-task-list').val());
$('form', $list).submit();
}; };
Notes.prototype.updateNotesCount = function(updateCount) { Notes.prototype.updateNotesCount = function(updateCount) {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
}); });
$('.no-template', this.dropdown.parent()).on('click', () => { $('.no-template', this.dropdown.parent()).on('click', () => {
this.currentTemplate = ''; this.currentTemplate.content = '';
this.setInputValueToTemplateContent(); this.setInputValueToTemplateContent();
$('.dropdown-toggle-text', this.dropdown).text('Choose a template'); $('.dropdown-toggle-text', this.dropdown).text('Choose a template');
}); });
......
//= require xterm/encoding-indexes
//= require xterm/encoding
//= require xterm/xterm.js //= require xterm/xterm.js
//= require xterm/fit.js //= require xterm/fit.js
//= require ./terminal.js //= require ./terminal.js
......
...@@ -97,8 +97,20 @@ ...@@ -97,8 +97,20 @@
padding: 5px 6px; padding: 5px 6px;
outline: 0; outline: 0;
&:hover, &.disabled {
cursor: default;
&:hover,
&:focus,
&:active {
background-color: $white-light;
border-color: $border-color;
box-shadow: none;
}
}
&.active, &.active,
&:hover,
&:active { &:active {
background-color: $row-hover; background-color: $row-hover;
border-color: $row-hover-border; border-color: $row-hover-border;
......
...@@ -4,8 +4,3 @@ ...@@ -4,8 +4,3 @@
color: $badge-color; color: $badge-color;
vertical-align: baseline; vertical-align: baseline;
} }
.badge-dark {
background-color: $badge-bg-dark;
color: $badge-color-dark;
}
.centered-light-block { .centered-light-block {
text-align: center; text-align: center;
color: $gl-gray; color: $gl-text-color;
margin: 20px; margin: 20px;
} }
.nothing-here-block { .nothing-here-block {
text-align: center; text-align: center;
padding: 20px; padding: 20px;
color: $gl-gray; color: $gl-text-color;
font-weight: normal; font-weight: normal;
font-size: 14px; font-size: 14px;
line-height: 36px; line-height: 36px;
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
margin-bottom: 0; margin-bottom: 0;
border-top: 1px solid $white-dark; border-top: 1px solid $white-dark;
border-bottom: 1px solid $white-dark; border-bottom: 1px solid $white-dark;
color: $gl-gray; color: $gl-text-color;
&.oneline-block { &.oneline-block {
line-height: 42px; line-height: 42px;
...@@ -135,11 +135,11 @@ ...@@ -135,11 +135,11 @@
} }
.cover-title { .cover-title {
color: $gl-header-color; color: $gl-text-color;
font-size: 23px; font-size: 23px;
h1 { h1 {
color: $gl-gray-dark; color: $gl-text-color;
margin-bottom: 6px; margin-bottom: 6px;
font-size: 23px; font-size: 23px;
} }
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
p { p {
padding: 0 $gl-padding; padding: 0 $gl-padding;
color: $gl-text-color-dark; color: $gl-text-color;
} }
} }
...@@ -211,7 +211,7 @@ ...@@ -211,7 +211,7 @@
display: inline; display: inline;
font-weight: normal; font-weight: normal;
font-size: 24px; font-size: 24px;
color: $gl-title-color; color: $gl-text-color;
} }
} }
} }
......
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
} }
@mixin btn-gray { @mixin btn-gray {
@include btn-color($gray-light, $border-gray-normal, $gray-normal, $border-gray-normal, $gray-dark, $border-gray-dark, $gl-gray-dark); @include btn-color($gray-light, $border-gray-normal, $gray-normal, $border-gray-normal, $gray-dark, $border-gray-dark, $gl-text-color);
} }
@mixin btn-white { @mixin btn-white {
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
} }
.btn-transparent { .btn-transparent {
color: $gl-gray-light; color: $gl-text-color-secondary;
background-color: transparent; background-color: transparent;
border: 0; border: 0;
...@@ -338,7 +338,7 @@ ...@@ -338,7 +338,7 @@
margin-left: 10px; margin-left: 10px;
i { i {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
......
...@@ -412,7 +412,7 @@ table { ...@@ -412,7 +412,7 @@ table {
padding: 0 10px; padding: 0 10px;
clip: auto; clip: auto;
text-decoration: none; text-decoration: none;
color: $gl-title-color; color: $gl-text-color;
background: $gray-light; background: $gray-light;
z-index: 1; z-index: 1;
} }
......
...@@ -201,7 +201,7 @@ ...@@ -201,7 +201,7 @@
} }
.icon-play { .icon-play {
fill: $gl-gray-light; fill: $gl-text-color-secondary;
margin-right: 6px; margin-right: 6px;
height: 12px; height: 12px;
width: 11px; width: 11px;
...@@ -209,7 +209,7 @@ ...@@ -209,7 +209,7 @@
} }
.dropdown-header { .dropdown-header {
color: $gl-gray-light; color: $gl-text-color-secondary;
font-size: 13px; font-size: 13px;
line-height: 22px; line-height: 22px;
padding: 0 10px; padding: 0 10px;
...@@ -222,7 +222,7 @@ ...@@ -222,7 +222,7 @@
.unclickable { .unclickable {
cursor: not-allowed; cursor: not-allowed;
padding: 5px 8px; padding: 5px 8px;
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
...@@ -592,7 +592,7 @@ ...@@ -592,7 +592,7 @@
} }
.ui-datepicker-title { .ui-datepicker-title {
color: $gl-gray; color: $gl-text-color;
font-size: 14px; font-size: 14px;
line-height: 1; line-height: 1;
font-weight: normal; font-weight: normal;
...@@ -614,17 +614,17 @@ ...@@ -614,17 +614,17 @@
.dropdown-menu-inner-title { .dropdown-menu-inner-title {
display: block; display: block;
color: $gl-title-color; color: $gl-text-color;
font-weight: 600; font-weight: 600;
} }
.dropdown-menu-inner-content { .dropdown-menu-inner-content {
display: block; display: block;
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.dropdown-toggle-text { .dropdown-toggle-text {
&.is-default { &.is-default {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
...@@ -182,3 +182,52 @@ span.idiff { ...@@ -182,3 +182,52 @@ span.idiff {
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
} }
} }
.file-stats {
ul {
list-style: none;
margin: 0;
padding: 10px 0;
li {
padding: 3px 0;
line-height: 20px;
}
}
.new-file {
a {
color: $gl-text-green;
}
}
.renamed-file {
a {
color: $gl-text-orange;
}
}
.deleted-file {
a {
color: $gl-text-red;
}
}
.edit-file {
a {
color: $gl-text-color;
}
}
a {
text-decoration: none;
.new-file {
color: $notify-new-file;
}
.deleted-file {
color: $notify-deleted-file;
}
}
}
...@@ -153,7 +153,7 @@ label { ...@@ -153,7 +153,7 @@ label {
} }
.form-control::-webkit-input-placeholder { .form-control::-webkit-input-placeholder {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.input-group { .input-group {
......
...@@ -45,7 +45,7 @@ header { ...@@ -45,7 +45,7 @@ header {
padding: 0; padding: 0;
.nav > li > a { .nav > li > a {
color: $gl-gray-light; color: $gl-text-color-secondary;
font-size: 18px; font-size: 18px;
padding: 0; padding: 0;
margin: ($header-height - 28) / 2 0; margin: ($header-height - 28) / 2 0;
...@@ -71,7 +71,7 @@ header { ...@@ -71,7 +71,7 @@ header {
&:focus, &:focus,
&:active { &:active {
background-color: $gray-light; background-color: $gray-light;
color: darken($gl-gray-light, 30%); color: darken($gl-text-color-secondary, 30%);
.todos-pending-count { .todos-pending-count {
background: darken($todo-alert-blue, 10%); background: darken($todo-alert-blue, 10%);
...@@ -96,7 +96,7 @@ header { ...@@ -96,7 +96,7 @@ header {
} }
&.active { &.active {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
} }
......
...@@ -34,10 +34,10 @@ ...@@ -34,10 +34,10 @@
.ci-status-icon-canceled, .ci-status-icon-canceled,
.ci-status-icon-disabled, .ci-status-icon-disabled,
.ci-status-icon-not-found { .ci-status-icon-not-found {
color: $gl-gray; color: $gl-text-color;
svg { svg {
fill: $gl-gray; fill: $gl-text-color;
} }
} }
......
...@@ -41,6 +41,6 @@ ...@@ -41,6 +41,6 @@
} }
&.status-box-upcoming { &.status-box-upcoming {
background: $gl-gray-light; background: $gl-text-color-secondary;
} }
} }
...@@ -128,7 +128,7 @@ ul.content-list { ...@@ -128,7 +128,7 @@ ul.content-list {
} }
a { a {
color: $gl-dark-link-color; color: $gl-text-color;
} }
.member-group-link { .member-group-link {
...@@ -230,18 +230,50 @@ ul.content-list { ...@@ -230,18 +230,50 @@ ul.content-list {
} }
.label-default { .label-default {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
.panel > .content-list > li { // Table list
padding: $gl-padding-top $gl-padding; .table-list {
display: table;
width: 100%;
.table-list-row {
display: table-row;
}
.table-list-cell {
display: table-cell;
vertical-align: top;
padding: 10px 16px;
border-bottom: 1px solid $gray-darker;
&.commit { &.avatar-cell {
@media (min-width: $screen-sm-min) { width: 36px;
padding-left: 46px + $gl-padding; padding-right: 0;
img {
margin-right: 0;
}
} }
} }
&.table-wide {
.table-list-cell {
&:last-of-type {
padding-right: 0;
}
&:first-of-type {
padding-left: 0;
}
}
}
}
.panel > .content-list > li {
padding: $gl-padding-top $gl-padding;
} }
ul.controls { ul.controls {
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
} }
.referenced-users { .referenced-users {
color: $gl-header-color; color: $gl-text-color;
padding-top: 10px; padding-top: 10px;
} }
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
.toolbar-btn { .toolbar-btn {
float: left; float: left;
padding: 0 5px; padding: 0 5px;
color: $gl-gray-light; color: $gl-text-color-secondary;
background: transparent; background: transparent;
border: 0; border: 0;
outline: 0; outline: 0;
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
&.light { &.light {
a { a {
color: $gl-gray; color: $gl-text-color;
} }
} }
} }
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
margin-bottom: -1px; margin-bottom: -1px;
font-size: 14px; font-size: 14px;
line-height: 28px; line-height: 28px;
color: $gl-gray-light; color: $gl-text-color-secondary;
border-bottom: 2px solid transparent; border-bottom: 2px solid transparent;
&:hover, &:hover,
...@@ -315,7 +315,7 @@ ...@@ -315,7 +315,7 @@
.fa-caret-down { .fa-caret-down {
margin-left: 5px; margin-left: 5px;
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.dropdown { .dropdown {
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
.header-action-buttons { .header-action-buttons {
i { i {
color: $gl-gray-light; color: $gl-text-color-secondary;
font-size: 13px; font-size: 13px;
margin-right: 3px; margin-right: 3px;
} }
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
.commit-committer-link, .commit-committer-link,
.commit-author-link { .commit-author-link {
color: $gl-gray; color: $gl-text-color;
font-weight: bold; font-weight: bold;
} }
......
...@@ -48,3 +48,11 @@ ...@@ -48,3 +48,11 @@
line-height: inherit; line-height: inherit;
} }
} }
.panel-default {
.table-list-row:last-child {
.table-list-cell {
border-bottom: 0;
}
}
}
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
.timeline-entry { .timeline-entry {
padding: $gl-padding $gl-btn-padding 11px; padding: $gl-padding $gl-btn-padding 11px;
border-color: $white-normal; border-color: $white-normal;
color: $gl-gray; color: $gl-text-color;
border-bottom: 1px solid $border-white-light; border-bottom: 1px solid $border-white-light;
&:target { &:target {
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
.system-note { .system-note {
.note-text { .note-text {
color: $gl-gray !important; color: $gl-text-color !important;
} }
} }
......
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
&.label-gray { &.label-gray {
background-color: $label-gray-bg; background-color: $label-gray-bg;
color: $gl-gray; color: $gl-text-color;
text-shadow: none; text-shadow: none;
} }
......
...@@ -65,11 +65,11 @@ $legend-color: $text-color; ...@@ -65,11 +65,11 @@ $legend-color: $text-color;
// //
//## //##
$pagination-color: $gl-gray; $pagination-color: $gl-text-color;
$pagination-bg: $white-light; $pagination-bg: $white-light;
$pagination-border: $border-color; $pagination-border: $border-color;
$pagination-hover-color: $gl-gray; $pagination-hover-color: $gl-text-color;
$pagination-hover-bg: $row-hover; $pagination-hover-bg: $row-hover;
$pagination-hover-border: $border-color; $pagination-hover-border: $border-color;
...@@ -121,6 +121,9 @@ $panel-default-heading-bg: $gray-light; ...@@ -121,6 +121,9 @@ $panel-default-heading-bg: $gray-light;
$panel-footer-bg: $gray-light; $panel-footer-bg: $gray-light;
$panel-inner-border: $border-color; $panel-inner-border: $border-color;
$badge-bg: $badge-bg;
$badge-color: $badge-color;
//== Wells //== Wells
// //
//## //##
...@@ -154,7 +157,7 @@ $nav-link-padding: 13px $gl-padding; ...@@ -154,7 +157,7 @@ $nav-link-padding: 13px $gl-padding;
// //
//## //##
$pre-bg: $gray-light !default; $pre-bg: $gray-light !default;
$pre-color: $gl-gray !default; $pre-color: $gl-text-color !default;
$pre-border-color: $border-color; $pre-border-color: $border-color;
$table-bg-accent: $gray-light; $table-bg-accent: $gray-light;
@mixin md-typography { @mixin md-typography {
color: $md-text-color; color: $gl-text-color;
word-wrap: break-word; word-wrap: break-word;
a { a {
...@@ -50,14 +50,14 @@ ...@@ -50,14 +50,14 @@
margin: 16px 0 10px; margin: 16px 0 10px;
padding: 0 0 0.3em; padding: 0 0 0.3em;
border-bottom: 1px solid $white-dark; border-bottom: 1px solid $white-dark;
color: $gl-gray-dark; color: $gl-text-color;
} }
h2 { h2 {
font-size: 1.5em; font-size: 1.5em;
font-weight: 600; font-weight: 600;
margin: 16px 0 10px; margin: 16px 0 10px;
color: $gl-gray-dark; color: $gl-text-color;
} }
h3 { h3 {
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
} }
p { p {
color: $gl-text-color-dark; color: $gl-text-color;
margin: 6px 0 0; margin: 6px 0 0;
} }
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
@extend .table; @extend .table;
@extend .table-bordered; @extend .table-bordered;
margin: 12px 0; margin: 12px 0;
color: $gl-text-color-dark; color: $gl-text-color;
th { th {
background: $label-gray-bg; background: $label-gray-bg;
...@@ -230,7 +230,7 @@ h3, ...@@ -230,7 +230,7 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
color: $gl-title-color; color: $gl-text-color;
font-weight: 600; font-weight: 600;
} }
...@@ -292,7 +292,7 @@ h2, ...@@ -292,7 +292,7 @@ h2,
h3, h3,
h4 { h4 {
small { small {
color: $gl-gray; color: $gl-text-color;
} }
} }
......
...@@ -94,17 +94,13 @@ $well-light-text-color: #5b6169; ...@@ -94,17 +94,13 @@ $well-light-text-color: #5b6169;
* Text * Text
*/ */
$gl-font-size: 14px; $gl-font-size: 14px;
$gl-title-color: #333; $gl-text-color: rgba(0, 0, 0, .85);
$gl-text-color: #5c5c5c; $gl-text-color-secondary: rgba(0, 0, 0, .55);
$gl-text-color-dark: #5c5d5e; $gl-text-color-disabled: rgba(0, 0, 0, .35);
$gl-text-color-light: #8c8c8c;
$gl-text-green: #4a2; $gl-text-green: #4a2;
$gl-text-red: #d12f19; $gl-text-red: #d12f19;
$gl-text-orange: #d90; $gl-text-orange: #d90;
$gl-link-color: #3777b0; $gl-link-color: #3777b0;
$gl-diff-text-color: #555;
$gl-dark-link-color: #333;
$gl-gray-light: #8f8f8f;
$gl-grayish-blue: #7f8fa4; $gl-grayish-blue: #7f8fa4;
$gl-gray: $gl-text-color; $gl-gray: $gl-text-color;
$gl-gray-dark: #313236; $gl-gray-dark: #313236;
...@@ -115,9 +111,9 @@ $gl-header-nav-hover-color: #434343; ...@@ -115,9 +111,9 @@ $gl-header-nav-hover-color: #434343;
* Lists * Lists
*/ */
$list-font-size: $gl-font-size; $list-font-size: $gl-font-size;
$list-title-color: $gl-title-color; $list-title-color: $gl-text-color;
$list-text-color: $gl-text-color; $list-text-color: $gl-text-color;
$list-text-disabled-color: #888; $list-text-disabled-color: $gl-text-color-disabled;
$list-border-light: #eee; $list-border-light: #eee;
$list-border: rgba(0, 0, 0, 0.05); $list-border: rgba(0, 0, 0, 0.05);
$list-text-height: 42px; $list-text-height: 42px;
...@@ -128,7 +124,6 @@ $list-warning-row-color: #8a6d3b; ...@@ -128,7 +124,6 @@ $list-warning-row-color: #8a6d3b;
/* /*
* Markdown * Markdown
*/ */
$md-text-color: $gl-text-color;
$md-link-color: $gl-link-color; $md-link-color: $gl-link-color;
$md-area-border: #ddd; $md-area-border: #ddd;
...@@ -169,9 +164,7 @@ $btn-side-margin: 10px; ...@@ -169,9 +164,7 @@ $btn-side-margin: 10px;
$btn-sm-side-margin: 7px; $btn-sm-side-margin: 7px;
$btn-xs-side-margin: 5px; $btn-xs-side-margin: 5px;
$issue-status-expired: #cea61b; $issue-status-expired: #cea61b;
$issuable-sidebar-color: #999; $issuable-sidebar-color: $gl-text-color-secondary;
$issuable-avatar-hover-border: #999;
$issuable-clipboard-color: #999;
$show-aside-bg: #eee; $show-aside-bg: #eee;
$show-aside-color: #777; $show-aside-color: #777;
$show-aside-shadow: #ddd; $show-aside-shadow: #ddd;
...@@ -286,10 +279,8 @@ $btn-active-gray-light: e4e7ed; ...@@ -286,10 +279,8 @@ $btn-active-gray-light: e4e7ed;
/* /*
* Badges * Badges
*/ */
$badge-bg: #f3f3f3; $badge-bg: #eee;
$badge-bg-dark: #eee; $badge-color: $gl-text-color-secondary;
$badge-color: #929292;
$badge-color-dark: #8f8f8f;
/* /*
* Award emoji * Award emoji
...@@ -308,8 +299,8 @@ $location-icon-color: #e7e9ed; ...@@ -308,8 +299,8 @@ $location-icon-color: #e7e9ed;
/* /*
* Notes * Notes
*/ */
$notes-light-color: #8e8e8e; $notes-light-color: $gl-text-color-secondary;
$notes-role-color: #8e8e8e; $notes-role-color: $gl-text-color-secondary;
$note-disabled-comment-color: #b2b2b2; $note-disabled-comment-color: #b2b2b2;
$note-targe3-outside: #fffff0; $note-targe3-outside: #fffff0;
$note-targe3-inside: #ffffd3; $note-targe3-inside: #ffffd3;
...@@ -334,7 +325,7 @@ $calendar-user-contrib-text: #959494; ...@@ -334,7 +325,7 @@ $calendar-user-contrib-text: #959494;
$cycle-analytics-box-padding: 30px; $cycle-analytics-box-padding: 30px;
$cycle-analytics-box-text-color: #8c8c8c; $cycle-analytics-box-text-color: #8c8c8c;
$cycle-analytics-big-font: 19px; $cycle-analytics-big-font: 19px;
$cycle-analytics-dark-text: $gl-title-color; $cycle-analytics-dark-text: $gl-text-color;
$cycle-analytics-light-gray: #bfbfbf; $cycle-analytics-light-gray: #bfbfbf;
$cycle-analytics-dismiss-icon-color: #b2b2b2; $cycle-analytics-dismiss-icon-color: #b2b2b2;
...@@ -380,14 +371,13 @@ $callout-success-color: #3c763d; ...@@ -380,14 +371,13 @@ $callout-success-color: #3c763d;
/* /*
* Commit Page * Commit Page
*/ */
$commit-committer-color: #999;
$commit-max-width-marker-color: rgba(0, 0, 0, 0.0); $commit-max-width-marker-color: rgba(0, 0, 0, 0.0);
$commit-message-text-area-bg: rgba(0, 0, 0, 0.0); $commit-message-text-area-bg: rgba(0, 0, 0, 0.0);
/* /*
* Common * Common
*/ */
$common-gray: $gl-gray; $common-gray: $gl-text-color;
$common-gray-light: #bbb; $common-gray-light: #bbb;
$common-gray-dark: #444; $common-gray-dark: #444;
$common-red: $gl-text-red; $common-red: $gl-text-red;
...@@ -542,3 +532,4 @@ Pipeline Graph ...@@ -542,3 +532,4 @@ Pipeline Graph
*/ */
$stage-hover-bg: #eaf3fc; $stage-hover-bg: #eaf3fc;
$stage-hover-border: #d1e7fc; $stage-hover-border: #d1e7fc;
$action-icon-color: #d6d6d6;
\ No newline at end of file
.info-well { .info-well {
background: $gray-light; background: $gray-light;
color: $gl-gray; color: $gl-text-color;
border: 1px solid $border-color; border: 1px solid $border-color;
border-radius: $border-radius-default; border-radius: $border-radius-default;
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
} }
.zen-control-full { .zen-control-full {
color: $gl-gray-light; color: $gl-text-color-secondary;
&:hover { &:hover {
color: $gl-link-color; color: $gl-link-color;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* /*
* White Syntax Colors * White Syntax Colors
*/ */
$white-code-color: #333; $white-code-color: $gl-text-color;
$white-highlight: #fafe3d; $white-highlight: #fafe3d;
$white-pre-hll-bg: #f8eec7; $white-pre-hll-bg: #f8eec7;
$white-hll-bg: #f8f8f8; $white-hll-bg: #f8f8f8;
......
...@@ -18,15 +18,3 @@ p.details { ...@@ -18,15 +18,3 @@ p.details {
pre.commit-message { pre.commit-message {
white-space: pre-wrap; white-space: pre-wrap;
} }
.file-stats > a {
text-decoration: none;
> .new-file {
color: $notify-new-file;
}
> .deleted-file {
color: $notify-deleted-file;
}
}
...@@ -259,7 +259,7 @@ ...@@ -259,7 +259,7 @@
.board-list-count { .board-list-count {
padding: 10px 0; padding: 10px 0;
color: $gl-gray-light; color: $gl-text-color-secondary;
font-size: 13px; font-size: 13px;
> .fa { > .fa {
......
.divergence-graph {
padding: 12px 12px 0 0;
float: right;
.graph-side {
position: relative;
width: 80px;
height: 22px;
padding: 5px 0 13px;
float: left;
.bar {
position: absolute;
height: 4px;
background-color: $divergence-graph-bar-bg;
}
.bar-behind {
right: 0;
border-radius: 3px 0 0 3px;
}
.bar-ahead {
left: 0;
border-radius: 0 3px 3px 0;
}
.count {
padding-top: 6px;
padding-bottom: 0;
font-size: 12px;
color: $gl-text-color;
display: block;
}
.count-behind {
padding-right: 4px;
text-align: right;
}
.count-ahead {
padding-left: 4px;
text-align: left;
}
}
.graph-separator {
position: relative;
width: 1px;
height: 18px;
margin: 5px 0 0;
float: left;
background-color: $divergence-graph-separator-bg;
}
}
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
flex: 1; flex: 1;
a { a {
color: $gl-gray; color: $gl-text-color;
&:hover { &:hover {
color: $gl-link-color; color: $gl-link-color;
...@@ -357,7 +357,7 @@ ...@@ -357,7 +357,7 @@
} }
.build-light-text { .build-light-text {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.build-gutter-toggle { .build-gutter-toggle {
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
} }
td { td {
color: $gl-gray; color: $gl-text-color;
vertical-align: middle !important; vertical-align: middle !important;
a { a {
......
.commit-title {
display: block;
}
.commit-author,
.commit-committer {
display: block;
color: $commit-committer-color;
font-weight: normal;
font-style: italic;
}
.commit-author strong,
.commit-committer strong {
font-weight: bold;
font-style: normal;
}
.commit-description {
background: none;
border: none;
margin: 0;
padding: 0;
margin-top: 10px;
word-break: normal;
white-space: pre-wrap;
}
.js-details-expand {
&:hover {
text-decoration: none;
}
}
.ci-status-link {
svg {
overflow: visible;
}
}
.commit-box {
border-top: 1px solid $border-color;
padding: $gl-padding 0;
.commit-title {
margin: 0;
font-size: 23px;
color: $gl-gray-dark;
}
.commit-description {
margin-top: 15px;
}
}
.commit-hash-full {
@media (max-width: $screen-sm-max) {
width: 80px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
vertical-align: bottom;
}
}
.file-stats {
ul {
list-style: none;
margin: 0;
padding: 10px 0;
li {
padding: 3px 0;
line-height: 20px;
}
}
.new-file {
a {
color: $gl-text-green;
}
}
.renamed-file {
a {
color: $gl-text-orange;
}
}
.deleted-file {
a {
color: $gl-text-red;
}
}
.edit-file {
a {
color: $gl-text-color;
}
}
}
/*
* Commit message textarea for web editor and
* custom merge request message
*/
.commit-message-container {
background-color: $body-bg;
position: relative;
font-family: $monospace_font;
$left: 12px;
overflow: hidden; // See https://gitlab.com/gitlab-org/gitlab-ce/issues/13987
.max-width-marker {
width: 72ch;
color: $commit-max-width-marker-color;
font-family: inherit;
left: $left;
height: 100%;
border-right: 1px solid mix($input-border, $white-light);
position: absolute;
z-index: 1;
}
> textarea {
background-color: $commit-message-text-area-bg;
font-family: inherit;
padding-left: $left;
position: relative;
z-index: 2;
}
}
.commit-description {
background: none;
border: none;
padding: 0;
margin-top: 10px;
word-break: normal;
white-space: pre-wrap;
}
.js-details-expand {
&:hover {
text-decoration: none;
}
}
.commit-box {
border-top: 1px solid $border-color;
padding: $gl-padding 0;
.commit-title {
margin: 0;
color: $gl-text-color;
}
.commit-description {
margin-top: 15px;
}
}
.commit-hash-full {
@media (max-width: $screen-sm-max) {
width: 80px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
vertical-align: bottom;
}
}
/*
* Commit message textarea for web editor and
* custom merge request message
*/
.commit-message-container {
background-color: $body-bg;
position: relative;
font-family: $monospace_font;
$left: 12px;
overflow: hidden; // See https://gitlab.com/gitlab-org/gitlab-ce/issues/13987
.max-width-marker {
width: 72ch;
color: $commit-max-width-marker-color;
font-family: inherit;
left: $left;
height: 100%;
border-right: 1px solid mix($input-border, $white-light);
position: absolute;
z-index: 1;
}
textarea {
background-color: $commit-message-text-area-bg;
font-family: inherit;
padding-left: $left;
position: relative;
z-index: 2;
}
}
.commits-compare-switch { .commits-compare-switch {
@include btn-default;
@include btn-white;
float: left; float: left;
margin-right: 9px; margin-right: 9px;
} }
...@@ -8,7 +77,6 @@ ...@@ -8,7 +77,6 @@
.commit-header { .commit-header {
padding: 5px 10px; padding: 5px 10px;
background-color: $gray-light; background-color: $gray-light;
border-top: 1px solid $gray-darker;
border-bottom: 1px solid $gray-darker; border-bottom: 1px solid $gray-darker;
font-size: 14px; font-size: 14px;
...@@ -18,8 +86,6 @@ ...@@ -18,8 +86,6 @@
} }
.commit-row-title { .commit-row-title {
line-height: 1.35;
.notes_count { .notes_count {
float: right; float: right;
margin-right: 10px; margin-right: 10px;
...@@ -30,15 +96,14 @@ ...@@ -30,15 +96,14 @@
} }
.commit-row-message { .commit-row-message {
color: $gl-dark-link-color; color: $gl-text-color;
} }
} }
.text-expander { .text-expander {
display: inline-block; display: inline-block;
background: $gray-light; background: $gray-light;
color: $gl-gray-light; color: $gl-text-color-secondary;
padding: 0 5px; padding: 0 5px;
cursor: pointer; cursor: pointer;
border: 1px solid $border-gray-dark; border: 1px solid $border-gray-dark;
...@@ -54,9 +119,8 @@ ...@@ -54,9 +119,8 @@
.commit-actions { .commit-actions {
@media (min-width: $screen-sm-min) { @media (min-width: $screen-sm-min) {
float: right; width: 300px;
margin-left: $gl-padding; text-align: right;
margin-top: 2px;
font-size: 0; font-size: 0;
} }
...@@ -86,35 +150,13 @@ ...@@ -86,35 +150,13 @@
.commit, .commit,
.generic_commit_status { .generic_commit_status {
padding: 10px 0;
position: relative;
@media (min-width: $screen-sm-min) {
padding-left: 46px;
}
&:not(:last-child) {
border-bottom: 1px solid $gray-darker;
}
a, a,
button { button {
color: $gl-dark-link-color; color: $gl-text-color;
vertical-align: baseline; vertical-align: baseline;
} }
.avatar {
margin-left: -46px;
}
.item-title {
display: inline-block;
@media (min-width: $screen-sm-min) {
max-width: 70%;
}
}
.commit-row-description { .commit-row-description {
font-size: 14px; font-size: 14px;
border-left: 1px solid $white-normal; border-left: 1px solid $white-normal;
...@@ -134,20 +176,7 @@ ...@@ -134,20 +176,7 @@
} }
a { a {
color: $gl-dark-link-color; color: $gl-text-color;
}
}
.commit-row-info {
color: $gl-gray;
line-height: 1.35;
a {
color: $gl-gray;
}
.avatar {
margin-right: 8px;
} }
} }
...@@ -164,7 +193,7 @@ ...@@ -164,7 +193,7 @@
} }
.branch-commit { .branch-commit {
color: $gl-gray; color: $gl-text-color;
.commit-icon { .commit-icon {
text-align: center; text-align: center;
...@@ -174,7 +203,7 @@ ...@@ -174,7 +203,7 @@
height: 14px; height: 14px;
width: 14px; width: 14px;
vertical-align: middle; vertical-align: middle;
fill: $gl-gray-light; fill: $gl-text-color-secondary;
} }
} }
...@@ -183,62 +212,6 @@ ...@@ -183,62 +212,6 @@
} }
.commit-row-message { .commit-row-message {
color: $gl-gray; color: $gl-text-color;
}
}
.divergence-graph {
padding: 12px 12px 0 0;
float: right;
.graph-side {
position: relative;
width: 80px;
height: 22px;
padding: 5px 0 13px;
float: left;
.bar {
position: absolute;
height: 4px;
background-color: $divergence-graph-bar-bg;
}
.bar-behind {
right: 0;
border-radius: 3px 0 0 3px;
}
.bar-ahead {
left: 0;
border-radius: 0 3px 3px 0;
}
.count {
padding-top: 6px;
padding-bottom: 0;
font-size: 12px;
color: $gl-title-color;
display: block;
}
.count-behind {
padding-right: 4px;
text-align: right;
}
.count-ahead {
padding-left: 4px;
text-align: left;
}
}
.graph-separator {
position: relative;
width: 1px;
height: 18px;
margin: 5px 0 0;
float: left;
background-color: $divergence-graph-separator-bg;
} }
} }
...@@ -115,14 +115,14 @@ ...@@ -115,14 +115,14 @@
line-height: 19px; line-height: 19px;
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: $gl-title-color; color: $gl-text-color;
} }
&.text { &.text {
color: $layout-link-gray; color: $layout-link-gray;
&.value-col { &.value-col {
color: $gl-title-color; color: $gl-text-color;
} }
} }
} }
...@@ -264,7 +264,7 @@ ...@@ -264,7 +264,7 @@
.stage-empty, .stage-empty,
.not-available { .not-available {
color: $gl-text-color-light; color: $gl-text-color-secondary;
} }
} }
} }
...@@ -331,7 +331,7 @@ ...@@ -331,7 +331,7 @@
@include text-overflow(); @include text-overflow();
a { a {
color: $gl-dark-link-color; color: $gl-text-color;
} }
} }
} }
...@@ -359,7 +359,7 @@ ...@@ -359,7 +359,7 @@
.issue-link, .issue-link,
.commit-author-link, .commit-author-link,
.issue-author-link { .issue-author-link {
color: $gl-dark-link-color; color: $gl-text-color;
} }
// Custom CSS for components // Custom CSS for components
...@@ -400,11 +400,11 @@ ...@@ -400,11 +400,11 @@
} }
.item-build-name { .item-build-name {
color: $gl-title-color; color: $gl-text-color;
} }
.pipeline-id { .pipeline-id {
color: $gl-title-color; color: $gl-text-color;
padding: 0 3px 0 0; padding: 0 3px 0 0;
} }
...@@ -427,7 +427,7 @@ ...@@ -427,7 +427,7 @@
} }
.fa { .fa {
color: $gl-text-color-light; color: $gl-text-color-secondary;
font-size: $code_font_size; font-size: $code_font_size;
} }
} }
...@@ -439,7 +439,7 @@ ...@@ -439,7 +439,7 @@
width: 75%; width: 75%;
margin: 0 auto; margin: 0 auto;
padding-top: 130px; padding-top: 130px;
color: $gl-text-color-light; color: $gl-text-color-secondary;
h4 { h4 {
color: $gl-text-color; color: $gl-text-color;
......
.detail-page-header { .detail-page-header {
padding: $gl-padding-top 0; padding: $gl-padding-top 0;
border-bottom: 1px solid $border-color; border-bottom: 1px solid $border-color;
color: $gl-text-color-dark; color: $gl-text-color;
line-height: 34px; line-height: 34px;
.author { .author {
color: $gl-text-color-dark; color: $gl-text-color;
} }
.identifier { .identifier {
color: $gl-text-color-dark; color: $gl-text-color;
} }
.issue_created_ago, .issue_created_ago,
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
.title { .title {
margin: 0 0 16px; margin: 0 0 16px;
font-size: 2em; font-size: 2em;
color: $gl-gray-dark; color: $gl-text-color;
padding: 0 0 0.3em; padding: 0 0 0.3em;
border-bottom: 1px solid $white-dark; border-bottom: 1px solid $white-dark;
} }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
background: $gray-light; background: $gray-light;
border-bottom: 1px solid $border-color; border-bottom: 1px solid $border-color;
padding: 10px 16px; padding: 10px 16px;
color: $gl-diff-text-color; color: $gl-text-color;
z-index: 10; z-index: 10;
border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0;
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
overflow: auto; overflow: auto;
overflow-y: hidden; overflow-y: hidden;
background: $white-light; background: $white-light;
color: $gl-title-color; color: $gl-text-color;
border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px;
.unfold { .unfold {
...@@ -380,7 +380,7 @@ ...@@ -380,7 +380,7 @@
} }
cursor: default; cursor: default;
color: $gl-title-color; color: $gl-text-color;
} }
&.disabled { &.disabled {
......
...@@ -72,25 +72,25 @@ ...@@ -72,25 +72,25 @@
.external-url, .external-url,
.dropdown-new { .dropdown-new {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.dropdown-menu { .dropdown-menu {
.fa { .fa {
margin-right: 6px; margin-right: 6px;
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
.build-link, .build-link,
.branch-name { .branch-name {
color: $gl-dark-link-color; color: $gl-text-color;
} }
.stop-env-link, .stop-env-link,
.external-url { .external-url {
color: $gl-gray-light; color: $gl-text-color-secondary;
.stop-env-icon { .stop-env-icon {
font-size: 14px; font-size: 14px;
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
.build-column { .build-column {
.build-link { .build-link {
color: $gl-dark-link-color; color: $gl-text-color;
} }
.avatar { .avatar {
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
} }
a { a {
color: $gl-dark-link-color; color: $gl-text-color;
} }
.avatar { .avatar {
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
.stats { .stats {
float: right; float: right;
line-height: $list-text-height; line-height: $list-text-height;
color: $gl-gray; color: $gl-text-color;
span { span {
margin-right: 15px; margin-right: 15px;
......
...@@ -5,6 +5,12 @@ ...@@ -5,6 +5,12 @@
} }
} }
.title {
padding: 0;
margin: 0;
border-bottom: none;
}
// Border around images in issue and MR descriptions. // Border around images in issue and MR descriptions.
.description img:not(.emoji) { .description img:not(.emoji) {
border: 1px solid $white-normal; border: 1px solid $white-normal;
...@@ -97,7 +103,7 @@ ...@@ -97,7 +103,7 @@
} }
.edit-link { .edit-link {
color: $gl-gray; color: $gl-text-color;
&:not([href]):hover { &:not([href]):hover {
color: rgba($avatar-border, .2); color: rgba($avatar-border, .2);
...@@ -133,7 +139,7 @@ ...@@ -133,7 +139,7 @@
} }
.btn-clipboard:hover { .btn-clipboard:hover {
color: $gl-gray; color: $gl-text-color;
} }
} }
...@@ -168,7 +174,7 @@ ...@@ -168,7 +174,7 @@
} }
.no-value { .no-value {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.sidebar-collapsed-icon { .sidebar-collapsed-icon {
...@@ -236,7 +242,7 @@ ...@@ -236,7 +242,7 @@
color: $issuable-sidebar-color; color: $issuable-sidebar-color;
&:hover { &:hover {
color: $gl-gray; color: $gl-text-color;
} }
span { span {
...@@ -249,16 +255,16 @@ ...@@ -249,16 +255,16 @@
} }
.avatar:hover { .avatar:hover {
border-color: $issuable-avatar-hover-border; border-color: $issuable-sidebar-color;
} }
.btn-clipboard { .btn-clipboard {
border: none; border: none;
color: $issuable-clipboard-color; color: $issuable-sidebar-color;
&:hover { &:hover {
background: transparent; background: transparent;
color: $gl-gray; color: $gl-text-color;
} }
} }
} }
...@@ -336,7 +342,7 @@ ...@@ -336,7 +342,7 @@
margin-left: 5px; margin-left: 5px;
a { a {
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
......
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
.manage-labels-list { .manage-labels-list {
.btn-action { .btn-action {
color: $gl-dark-link-color; color: $gl-text-color;
.fa { .fa {
font-size: 18px; font-size: 18px;
......
...@@ -17,14 +17,19 @@ ...@@ -17,14 +17,19 @@
line-height: 1.5; line-height: 1.5;
p { p {
font-size: 18px; font-size: 16px;
color: $login-brand-holder-color; color: $login-brand-holder-color;
} }
h1:first-child { h1:first-child {
font-weight: normal; font-weight: normal;
margin-bottom: 30px; margin-bottom: 0.68em;
margin-top: 0; margin-top: 0;
font-size: 34px;
}
h3 {
font-size: 22px;
} }
img { img {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
*/ */
.mr-state-widget { .mr-state-widget {
background: $gray-light; background: $gray-light;
color: $gl-gray; color: $gl-text-color;
border: 1px solid $border-color; border: 1px solid $border-color;
border-radius: 2px; border-radius: 2px;
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
padding-right: 0; padding-right: 0;
a { a {
color: $gl-gray; color: $gl-text-color;
} }
} }
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
.ci_widget { .ci_widget {
border-bottom: 1px solid $well-inner-border; border-bottom: 1px solid $well-inner-border;
color: $gl-gray; color: $gl-text-color;
svg { svg {
margin-right: 4px; margin-right: 4px;
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
} }
.normal { .normal {
color: $gl-text-color-dark; color: $gl-text-color;
} }
.js-deployment-link { .js-deployment-link {
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
font-weight: 600; font-weight: 600;
font-size: 16px; font-size: 16px;
margin: 5px 0; margin: 5px 0;
color: $gl-gray-dark; color: $gl-text-color;
&.has-conflicts .fa-exclamation-triangle { &.has-conflicts .fa-exclamation-triangle {
color: $gl-warning; color: $gl-warning;
...@@ -190,7 +190,7 @@ ...@@ -190,7 +190,7 @@
} }
.label-branch { .label-branch {
color: $gl-gray-dark; color: $gl-text-color;
font-family: $monospace_font; font-family: $monospace_font;
font-weight: bold; font-weight: bold;
overflow: hidden; overflow: hidden;
...@@ -310,10 +310,6 @@ ...@@ -310,10 +310,6 @@
left: 0; left: 0;
top: 2px; top: 2px;
} }
.commit-row-info {
line-height: 20px;
}
} }
.btn-clipboard { .btn-clipboard {
...@@ -367,7 +363,7 @@ ...@@ -367,7 +363,7 @@
th { th {
background-color: $white-light; background-color: $white-light;
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
} }
} }
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
margin-top: 7px; margin-top: 7px;
.issuable-number { .issuable-number {
color: $gl-gray-light; color: $gl-text-color-secondary;
margin-right: 5px; margin-right: 5px;
} }
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
.new-note, .new-note,
.note-edit-form { .note-edit-form {
.note-form-actions { .note-form-actions {
position: relative;
margin-top: $gl-padding; margin-top: $gl-padding;
} }
...@@ -44,7 +45,7 @@ ...@@ -44,7 +45,7 @@
.note-textarea { .note-textarea {
display: block; display: block;
padding: 10px 0; padding: 10px 0;
color: $gl-gray; color: $gl-text-color;
font-family: $regular_font; font-family: $regular_font;
border: 0; border: 0;
...@@ -204,7 +205,7 @@ ...@@ -204,7 +205,7 @@
.comment-toolbar { .comment-toolbar {
padding-top: $gl-padding-top; padding-top: $gl-padding-top;
color: $gl-gray-light; color: $gl-text-color-secondary;
border-top: 1px solid $border-color; border-top: 1px solid $border-color;
} }
...@@ -265,3 +266,18 @@ ...@@ -265,3 +266,18 @@
} }
} }
} }
.note-edit-warning.settings-message {
display: none;
padding: 5px 10px;
position: absolute;
left: 127px;
top: 2px;
@media (max-width: $screen-xs-max) {
position: relative;
top: 0;
left: 0;
margin-bottom: 10px;
}
}
...@@ -43,7 +43,7 @@ ul.notes { ...@@ -43,7 +43,7 @@ ul.notes {
} }
.system-note-message { .system-note-message {
display: inline-block; display: inline;
&::first-letter { &::first-letter {
text-transform: lowercase; text-transform: lowercase;
...@@ -55,7 +55,7 @@ ul.notes { ...@@ -55,7 +55,7 @@ ul.notes {
} }
p { p {
display: inline-block; display: inline;
margin: 0; margin: 0;
&::first-letter { &::first-letter {
...@@ -345,7 +345,7 @@ ul.notes { ...@@ -345,7 +345,7 @@ ul.notes {
} }
.author_link { .author_link {
color: $gl-gray; color: $gl-text-color;
} }
} }
...@@ -353,6 +353,14 @@ ul.notes { ...@@ -353,6 +353,14 @@ ul.notes {
font-size: 14px; font-size: 14px;
} }
.note-headline-light {
display: inline;
@media (max-width: $screen-xs-min) {
display: block;
}
}
.note-headline-light, .note-headline-light,
.discussion-headline-light { .discussion-headline-light {
color: $notes-light-color; color: $notes-light-color;
...@@ -580,13 +588,11 @@ ul.notes { ...@@ -580,13 +588,11 @@ ul.notes {
// Merge request notes in diffs // Merge request notes in diffs
.diff-file { .diff-file {
// Diff is side by side // Diff is side by side
.notes_content.parallel .note-header .note-headline-light { .notes_content.parallel .note-header .note-headline-light {
display: block; display: block;
position: relative; position: relative;
} }
// Diff is inline // Diff is inline
.notes_content .note-header .note-headline-light { .notes_content .note-header .note-headline-light {
display: inline-block; display: inline-block;
......
This diff is collapsed.
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
margin-bottom: 5px; margin-bottom: 5px;
} }
&> .form-group { & > .form-group {
padding-left: 0; padding-left: 0;
} }
} }
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
border: 1px solid $border-color; border: 1px solid $border-color;
} }
&+ .select2 a { & + .select2 a {
border-top-left-radius: 0; border-top-left-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
} }
...@@ -292,7 +292,7 @@ ...@@ -292,7 +292,7 @@
.option-title { .option-title {
font-weight: normal; font-weight: normal;
display: inline-block; display: inline-block;
color: $gl-gray-dark; color: $gl-text-color;
} }
.option-descr { .option-descr {
...@@ -331,7 +331,7 @@ ...@@ -331,7 +331,7 @@
a.deploy-project-label { a.deploy-project-label {
padding: 5px; padding: 5px;
margin-right: 5px; margin-right: 5px;
color: $gl-gray; color: $gl-text-color;
background-color: $row-hover; background-color: $row-hover;
&:hover { &:hover {
...@@ -372,7 +372,7 @@ a.deploy-project-label { ...@@ -372,7 +372,7 @@ a.deploy-project-label {
} }
a { a {
color: $gl-dark-link-color; color: $gl-text-color;
} }
.dropdown-menu { .dropdown-menu {
...@@ -426,7 +426,7 @@ a.deploy-project-label { ...@@ -426,7 +426,7 @@ a.deploy-project-label {
width: 100%; width: 100%;
height: 100%; height: 100%;
padding-top: $gl-padding; padding-top: $gl-padding;
color: $gl-gray; color: $gl-text-color;
.caption { .caption {
min-height: 30px; min-height: 30px;
...@@ -552,7 +552,7 @@ pre.light-well { ...@@ -552,7 +552,7 @@ pre.light-well {
margin: 0 7px 7px; margin: 0 7px 7px;
h5 { h5 {
color: $gl-text-color-dark; color: $gl-text-color;
} }
.light-well { .light-well {
...@@ -618,7 +618,6 @@ pre.light-well { ...@@ -618,7 +618,6 @@ pre.light-well {
margin: 0; margin: 0;
} }
.activity-filter-block { .activity-filter-block {
.controls { .controls {
padding-bottom: 7px; padding-bottom: 7px;
...@@ -663,7 +662,7 @@ pre.light-well { ...@@ -663,7 +662,7 @@ pre.light-well {
} }
.commit-row-message { .commit-row-message {
color: $gl-gray; color: $gl-text-color;
} }
.commit_short_id { .commit_short_id {
...@@ -751,7 +750,7 @@ pre.light-well { ...@@ -751,7 +750,7 @@ pre.light-well {
.protected-branches-list { .protected-branches-list {
a { a {
color: $gl-gray; color: $gl-text-color;
&:hover { &:hover {
color: $gl-link-color; color: $gl-link-color;
...@@ -811,7 +810,31 @@ pre.light-well { ...@@ -811,7 +810,31 @@ pre.light-well {
.compare-form-group { .compare-form-group {
.dropdown-menu { .dropdown-menu {
width: 300px; width: 100%;
@media (min-width: $screen-sm-min) {
width: 300px;
}
}
+ .compare-ellipsis {
width: 100%;
vertical-align: middle;
text-align: center;
margin-top: -20px;
@media (min-width: $screen-sm-min) {
margin-top: 0;
width: auto;
}
}
.inline-input-group {
width: 100%;
@media (min-width: $screen-sm-min) {
width: 250px;
}
} }
} }
......
.settings-list-icon { .settings-list-icon {
color: $gl-gray-light; color: $gl-text-color-secondary;
font-size: $settings-icon-size; font-size: $settings-icon-size;
line-height: 42px; line-height: 42px;
} }
......
...@@ -61,15 +61,15 @@ ...@@ -61,15 +61,15 @@
&.ci-canceled, &.ci-canceled,
&.ci-disabled { &.ci-disabled {
color: $gl-gray; color: $gl-text-color;
border-color: $gl-gray; border-color: $gl-text-color;
&:not(span):hover { &:not(span):hover {
background-color: rgba($gl-gray, .07); background-color: rgba($gl-text-color, .07);
} }
svg { svg {
fill: $gl-gray; fill: $gl-text-color;
} }
} }
...@@ -101,15 +101,15 @@ ...@@ -101,15 +101,15 @@
&.ci-created, &.ci-created,
&.ci-skipped { &.ci-skipped {
color: $gl-gray-light; color: $gl-text-color-secondary;
border-color: $gl-gray-light; border-color: $gl-text-color-secondary;
&:not(span):hover { &:not(span):hover {
background-color: rgba($gl-gray-light, .07); background-color: rgba($gl-text-color-secondary, .07);
} }
svg { svg {
fill: $gl-gray-light; fill: $gl-text-color-secondary;
} }
} }
...@@ -135,3 +135,9 @@ ...@@ -135,3 +135,9 @@
left: 5px; left: 5px;
} }
} }
.ci-status-link {
svg {
overflow: visible;
}
}
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
} }
p { p {
color: $gl-text-color-dark; color: $gl-text-color;
} }
} }
......
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
i, i,
a { a {
color: $gl-dark-link-color; color: $gl-text-color;
} }
img { img {
...@@ -104,21 +104,21 @@ ...@@ -104,21 +104,21 @@
padding-right: 8px; padding-right: 8px;
.commit-author-name { .commit-author-name {
color: $gl-gray; color: $gl-text-color;
} }
} }
.tree-time-ago { .tree-time-ago {
min-width: 135px; min-width: 135px;
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.tree-commit { .tree-commit {
max-width: 320px; max-width: 320px;
color: $gl-gray-light; color: $gl-text-color-secondary;
.tree-commit-link { .tree-commit-link {
color: $gl-gray-light; color: $gl-text-color-secondary;
&:hover { &:hover {
text-decoration: underline; text-decoration: underline;
...@@ -134,21 +134,18 @@ ...@@ -134,21 +134,18 @@
.blob-commit-info { .blob-commit-info {
list-style: none; list-style: none;
padding: $gl-padding;
background: $gray-light; background: $gray-light;
padding: 6px 0;
border: 1px solid $border-color; border: 1px solid $border-color;
border-bottom: none; border-bottom: none;
margin: 0; margin: 0;
.commit { .table-list-cell {
padding-top: 0; border-bottom: none;
padding-bottom: 0; }
.commit-row-title { .commit-actions {
.commit-row-message { width: 200px;
font-weight: normal;
}
}
} }
} }
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
} }
.wiki-last-edit-by { .wiki-last-edit-by {
color: $gl-gray-light; color: $gl-text-color-secondary;
strong { strong {
color: $gl-text-color; color: $gl-text-color;
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
.light { .light {
font-weight: normal; font-weight: normal;
color: $gl-gray-light; color: $gl-text-color-secondary;
} }
.git-access-header { .git-access-header {
......
...@@ -30,7 +30,7 @@ class Projects::MattermostsController < Projects::ApplicationController ...@@ -30,7 +30,7 @@ class Projects::MattermostsController < Projects::ApplicationController
def configure_params def configure_params
params.require(:mattermost).permit(:trigger, :team_id).merge( params.require(:mattermost).permit(:trigger, :team_id).merge(
url: service_trigger_url(@service), url: service_trigger_url(@service),
icon_url: asset_url('gitlab_logo.png')) icon_url: asset_url('slash-command-logo.png'))
end end
def teams def teams
......
...@@ -98,7 +98,8 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -98,7 +98,8 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@start_version = @comparable_diffs.find { |diff| diff.head_commit_sha == @start_sha } @start_version = @comparable_diffs.find { |diff| diff.head_commit_sha == @start_sha }
unless @start_version unless @start_version
render_404 @start_sha = @merge_request_diff.head_commit_sha
@start_version = @merge_request_diff
end end
end end
......
...@@ -7,17 +7,17 @@ class RegistrationsController < Devise::RegistrationsController ...@@ -7,17 +7,17 @@ class RegistrationsController < Devise::RegistrationsController
end end
def create def create
if !Gitlab::Recaptcha.load_configurations! || verify_recaptcha # To avoid duplicate form fields on the login page, the registration form
# To avoid duplicate form fields on the login page, the registration form # names fields using `new_user`, but Devise still wants the params in
# names fields using `new_user`, but Devise still wants the params in # `user`.
# `user`. if params["new_#{resource_name}"].present? && params[resource_name].blank?
if params["new_#{resource_name}"].present? && params[resource_name].blank? params[resource_name] = params.delete(:"new_#{resource_name}")
params[resource_name] = params.delete(:"new_#{resource_name}") end
end
if !Gitlab::Recaptcha.load_configurations! || verify_recaptcha
super super
else else
flash[:alert] = "There was an error with the reCAPTCHA code below. Please re-enter the code." flash[:alert] = 'There was an error with the reCAPTCHA. Please re-solve the reCAPTCHA.'
flash.delete :recaptcha_error flash.delete :recaptcha_error
render action: 'new' render action: 'new'
end end
...@@ -57,7 +57,7 @@ class RegistrationsController < Devise::RegistrationsController ...@@ -57,7 +57,7 @@ class RegistrationsController < Devise::RegistrationsController
end end
def sign_up_params def sign_up_params
params.require(:user).permit(:username, :email, :name, :password, :password_confirmation) params.require(:user).permit(:username, :email, :email_confirmation, :name, :password)
end end
def resource_name def resource_name
......
...@@ -110,6 +110,28 @@ module GitlabMarkdownHelper ...@@ -110,6 +110,28 @@ module GitlabMarkdownHelper
end end
end end
# Returns the text necessary to reference `entity` across projects
#
# project - Project to reference
# entity - Object that responds to `to_reference`
#
# Examples:
#
# cross_project_reference(project, project.issues.first)
# # => 'namespace1/project1#123'
#
# cross_project_reference(project, project.merge_requests.first)
# # => 'namespace1/project1!345'
#
# Returns a String
def cross_project_reference(project, entity)
if entity.respond_to?(:to_reference)
entity.to_reference(project, full: true)
else
''
end
end
private private
# Return +text+, truncated to +max_chars+ characters, excluding any HTML # Return +text+, truncated to +max_chars+ characters, excluding any HTML
...@@ -158,28 +180,6 @@ module GitlabMarkdownHelper ...@@ -158,28 +180,6 @@ module GitlabMarkdownHelper
end end
end end
# Returns the text necessary to reference `entity` across projects
#
# project - Project to reference
# entity - Object that responds to `to_reference`
#
# Examples:
#
# cross_project_reference(project, project.issues.first)
# # => 'namespace1/project1#123'
#
# cross_project_reference(project, project.merge_requests.first)
# # => 'namespace1/project1!345'
#
# Returns a String
def cross_project_reference(project, entity)
if entity.respond_to?(:to_reference)
entity.to_reference(project)
else
''
end
end
def markdown_toolbar_button(options = {}) def markdown_toolbar_button(options = {})
data = options[:data].merge({ container: "body" }) data = options[:data].merge({ container: "body" })
content_tag :button, content_tag :button,
......
...@@ -58,13 +58,13 @@ module IssuesHelper ...@@ -58,13 +58,13 @@ module IssuesHelper
end end
def status_box_class(item) def status_box_class(item)
if item.respond_to?(:expired?) && item.expired? if item.try(:expired?)
'status-box-expired' 'status-box-expired'
elsif item.respond_to?(:merged?) && item.merged? elsif item.try(:merged?)
'status-box-merged' 'status-box-merged'
elsif item.closed? elsif item.closed?
'status-box-closed' 'status-box-closed'
elsif item.respond_to?(:upcoming?) && item.upcoming? elsif item.try(:upcoming?)
'status-box-upcoming' 'status-box-upcoming'
else else
'status-box-open' 'status-box-open'
...@@ -128,8 +128,10 @@ module IssuesHelper ...@@ -128,8 +128,10 @@ module IssuesHelper
names.to_sentence names.to_sentence
end end
def award_active_class(awards, current_user) def award_state_class(awards, current_user)
if current_user && awards.find { |a| a.user_id == current_user.id } if !current_user
"disabled"
elsif current_user && awards.find { |a| a.user_id == current_user.id }
"active" "active"
else else
"" ""
......
...@@ -91,8 +91,8 @@ class Commit ...@@ -91,8 +91,8 @@ class Commit
@link_reference_pattern ||= super("commit", /(?<commit>\h{7,40})/) @link_reference_pattern ||= super("commit", /(?<commit>\h{7,40})/)
end end
def to_reference(from_project = nil) def to_reference(from_project = nil, full: false)
commit_reference(from_project, id) commit_reference(from_project, id, full: full)
end end
def reference_link_text(from_project = nil) def reference_link_text(from_project = nil)
...@@ -320,8 +320,8 @@ class Commit ...@@ -320,8 +320,8 @@ class Commit
private private
def commit_reference(from_project, referable_commit_id) def commit_reference(from_project, referable_commit_id, full: false)
reference = project.to_reference(from_project) reference = project.to_reference(from_project, full: full)
if reference.present? if reference.present?
"#{reference}#{self.class.reference_prefix}#{referable_commit_id}" "#{reference}#{self.class.reference_prefix}#{referable_commit_id}"
......
...@@ -89,8 +89,8 @@ class CommitRange ...@@ -89,8 +89,8 @@ class CommitRange
alias_method :id, :to_s alias_method :id, :to_s
def to_reference(from_project = nil) def to_reference(from_project = nil, full: false)
project_reference = project.to_reference(from_project) project_reference = project.to_reference(from_project, full: full)
if project_reference.present? if project_reference.present?
project_reference + self.class.reference_prefix + self.id project_reference + self.class.reference_prefix + self.id
......
...@@ -17,7 +17,7 @@ module Referable ...@@ -17,7 +17,7 @@ module Referable
# Issue.last.to_reference(other_project) # => "cross-project#1" # Issue.last.to_reference(other_project) # => "cross-project#1"
# #
# Returns a String # Returns a String
def to_reference(_from_project = nil) def to_reference(_from_project = nil, full:)
'' ''
end end
......
...@@ -38,7 +38,7 @@ class ExternalIssue ...@@ -38,7 +38,7 @@ class ExternalIssue
@reference_pattern ||= %r{(?<issue>\b([A-Z][A-Z0-9_]+-)\d+)} @reference_pattern ||= %r{(?<issue>\b([A-Z][A-Z0-9_]+-)\d+)}
end end
def to_reference(_from_project = nil) def to_reference(_from_project = nil, full: nil)
id id
end end
......
...@@ -80,7 +80,7 @@ class Group < Namespace ...@@ -80,7 +80,7 @@ class Group < Namespace
end end
end end
def to_reference(_from_project = nil) def to_reference(_from_project = nil, full: nil)
"#{self.class.reference_prefix}#{name}" "#{self.class.reference_prefix}#{name}"
end end
......
...@@ -8,8 +8,4 @@ class GroupLabel < Label ...@@ -8,8 +8,4 @@ class GroupLabel < Label
def subject_foreign_key def subject_foreign_key
'group_id' 'group_id'
end end
def to_reference(source_project = nil, target_project = nil, format: :id)
super(source_project, target_project, format: format)
end
end end
...@@ -97,10 +97,10 @@ class Issue < ActiveRecord::Base ...@@ -97,10 +97,10 @@ class Issue < ActiveRecord::Base
end end
end end
def to_reference(from_project = nil) def to_reference(from_project = nil, full: false)
reference = "#{self.class.reference_prefix}#{iid}" reference = "#{self.class.reference_prefix}#{iid}"
"#{project.to_reference(from_project)}#{reference}" "#{project.to_reference(from_project, full: full)}#{reference}"
end end
def referenced_merge_requests(current_user = nil) def referenced_merge_requests(current_user = nil)
......
...@@ -146,17 +146,17 @@ class Label < ActiveRecord::Base ...@@ -146,17 +146,17 @@ class Label < ActiveRecord::Base
# #
# Label.first.to_reference # => "~1" # Label.first.to_reference # => "~1"
# Label.first.to_reference(format: :name) # => "~\"bug\"" # Label.first.to_reference(format: :name) # => "~\"bug\""
# Label.first.to_reference(project, same_namespace_project) # => "gitlab-ce~1" # Label.first.to_reference(project, target_project: same_namespace_project) # => "gitlab-ce~1"
# Label.first.to_reference(project, another_namespace_project) # => "gitlab-org/gitlab-ce~1" # Label.first.to_reference(project, target_project: another_namespace_project) # => "gitlab-org/gitlab-ce~1"
# #
# Returns a String # Returns a String
# #
def to_reference(source_project = nil, target_project = nil, format: :id) def to_reference(from_project = nil, target_project: nil, format: :id, full: false)
format_reference = label_format_reference(format) format_reference = label_format_reference(format)
reference = "#{self.class.reference_prefix}#{format_reference}" reference = "#{self.class.reference_prefix}#{format_reference}"
if source_project if from_project
"#{source_project.to_reference(target_project)}#{reference}" "#{from_project.to_reference(target_project, full: full)}#{reference}"
else else
reference reference
end end
......
...@@ -175,10 +175,10 @@ class MergeRequest < ActiveRecord::Base ...@@ -175,10 +175,10 @@ class MergeRequest < ActiveRecord::Base
work_in_progress?(title) ? title : "WIP: #{title}" work_in_progress?(title) ? title : "WIP: #{title}"
end end
def to_reference(from_project = nil) def to_reference(from_project = nil, full: false)
reference = "#{self.class.reference_prefix}#{iid}" reference = "#{self.class.reference_prefix}#{iid}"
"#{project.to_reference(from_project)}#{reference}" "#{project.to_reference(from_project, full: full)}#{reference}"
end end
def first_commit def first_commit
......
class MergeRequestDiff < ActiveRecord::Base class MergeRequestDiff < ActiveRecord::Base
include Sortable include Sortable
include Importable include Importable
include EncodingHelper include Gitlab::Git::EncodingHelper
# Prevent store of diff if commits amount more then 500 # Prevent store of diff if commits amount more then 500
COMMITS_SAFE_SIZE = 100 COMMITS_SAFE_SIZE = 100
......
...@@ -118,11 +118,11 @@ class Milestone < ActiveRecord::Base ...@@ -118,11 +118,11 @@ class Milestone < ActiveRecord::Base
# Milestone.first.to_reference(cross_namespace_project) # => "gitlab-org/gitlab-ce%1" # Milestone.first.to_reference(cross_namespace_project) # => "gitlab-org/gitlab-ce%1"
# Milestone.first.to_reference(same_namespace_project) # => "gitlab-ce%1" # Milestone.first.to_reference(same_namespace_project) # => "gitlab-ce%1"
# #
def to_reference(from_project = nil, format: :iid) def to_reference(from_project = nil, format: :iid, full: false)
format_reference = milestone_format_reference(format) format_reference = milestone_format_reference(format)
reference = "#{self.class.reference_prefix}#{format_reference}" reference = "#{self.class.reference_prefix}#{format_reference}"
"#{project.to_reference(from_project)}#{reference}" "#{project.to_reference(from_project, full: full)}#{reference}"
end end
def reference_link_text(from_project = nil) def reference_link_text(from_project = nil)
......
...@@ -589,8 +589,8 @@ class Project < ActiveRecord::Base ...@@ -589,8 +589,8 @@ class Project < ActiveRecord::Base
end end
end end
def to_reference(from_project = nil) def to_reference(from_project = nil, full: false)
if cross_namespace_reference?(from_project) if full || cross_namespace_reference?(from_project)
path_with_namespace path_with_namespace
elsif cross_project_reference?(from_project) elsif cross_project_reference?(from_project)
path path
...@@ -609,10 +609,6 @@ class Project < ActiveRecord::Base ...@@ -609,10 +609,6 @@ class Project < ActiveRecord::Base
Gitlab::Routing.url_helpers.namespace_project_url(self.namespace, self) Gitlab::Routing.url_helpers.namespace_project_url(self.namespace, self)
end end
def web_url_without_protocol
web_url.split('://')[1]
end
def new_issue_address(author) def new_issue_address(author)
return unless Gitlab::IncomingEmail.supports_issue_creation? && author return unless Gitlab::IncomingEmail.supports_issue_creation? && author
......
...@@ -16,8 +16,8 @@ class ProjectLabel < Label ...@@ -16,8 +16,8 @@ class ProjectLabel < Label
'project_id' 'project_id'
end end
def to_reference(target_project = nil, format: :id) def to_reference(target_project = nil, format: :id, full: false)
super(project, target_project, format: format) super(project, target_project: target_project, format: format, full: full)
end end
private private
......
...@@ -64,11 +64,11 @@ class Snippet < ActiveRecord::Base ...@@ -64,11 +64,11 @@ class Snippet < ActiveRecord::Base
@link_reference_pattern ||= super("snippets", /(?<snippet>\d+)/) @link_reference_pattern ||= super("snippets", /(?<snippet>\d+)/)
end end
def to_reference(from_project = nil) def to_reference(from_project = nil, full: false)
reference = "#{self.class.reference_prefix}#{id}" reference = "#{self.class.reference_prefix}#{id}"
if project.present? if project.present?
"#{project.to_reference(from_project)}#{reference}" "#{project.to_reference(from_project, full: full)}#{reference}"
else else
reference reference
end end
......
...@@ -99,6 +99,7 @@ class User < ActiveRecord::Base ...@@ -99,6 +99,7 @@ class User < ActiveRecord::Base
# #
# Note: devise :validatable above adds validations for :email and :password # Note: devise :validatable above adds validations for :email and :password
validates :name, presence: true validates :name, presence: true
validates_confirmation_of :email
validates :notification_email, presence: true validates :notification_email, presence: true
validates :notification_email, email: true, if: ->(user) { user.notification_email != user.email } validates :notification_email, email: true, if: ->(user) { user.notification_email != user.email }
validates :public_email, presence: true, uniqueness: true, email: true, allow_blank: true validates :public_email, presence: true, uniqueness: true, email: true, allow_blank: true
...@@ -332,7 +333,7 @@ class User < ActiveRecord::Base ...@@ -332,7 +333,7 @@ class User < ActiveRecord::Base
username username
end end
def to_reference(_from_project = nil, _target_project = nil) def to_reference(_from_project = nil, target_project: nil, full: nil)
"#{self.class.reference_prefix}#{username}" "#{self.class.reference_prefix}#{username}"
end end
......
...@@ -10,4 +10,15 @@ class AvatarUploader < GitlabUploader ...@@ -10,4 +10,15 @@ class AvatarUploader < GitlabUploader
def exists? def exists?
model.avatar.file && model.avatar.file.exists? model.avatar.file && model.avatar.file.exists?
end end
# We set move_to_store and move_to_cache to 'false' to prevent stealing
# the avatar file from a project when forking it.
# https://gitlab.com/gitlab-org/gitlab-ce/issues/26158
def move_to_store
false
end
def move_to_cache
false
end
end end
...@@ -2,8 +2,7 @@ ...@@ -2,8 +2,7 @@
.awards.js-awards-block{ class: ("hidden" if !inline && grouped_emojis.empty?), data: { award_url: toggle_award_url(awardable) } } .awards.js-awards-block{ class: ("hidden" if !inline && grouped_emojis.empty?), data: { award_url: toggle_award_url(awardable) } }
- awards_sort(grouped_emojis).each do |emoji, awards| - awards_sort(grouped_emojis).each do |emoji, awards|
%button.btn.award-control.js-emoji-btn.has-tooltip{ type: "button", %button.btn.award-control.js-emoji-btn.has-tooltip{ type: "button",
disabled: !current_user, class: (award_state_class(awards, current_user)),
class: (award_active_class(awards, current_user)),
data: { placement: "bottom", title: award_user_list(awards, current_user) } } data: { placement: "bottom", title: award_user_list(awards, current_user) } }
= emoji_icon(emoji, sprite: false) = emoji_icon(emoji, sprite: false)
%span.award-control-text.js-counter %span.award-control-text.js-counter
......
-# Renders the content of each li in the dropdown
- subject = local_assigns.fetch(:subject)
- status = subject.detailed_status(current_user)
- klass = "ci-status-icon ci-status-icon-#{status.group}"
- tooltip = "#{subject.name} - #{status.label}"
- if status.has_details?
= link_to status.details_path, class: 'mini-pipeline-graph-dropdown-item', data: { toggle: 'tooltip', title: tooltip } do
%span{ class: klass }= custom_icon(status.icon)
%span.ci-build-text= subject.name
- else
.mini-pipeline-graph-dropdown-item{ data: { toggle: 'tooltip', title: tooltip } }
%span{ class: klass }= custom_icon(status.icon)
%span.ci-build-text= subject.name
- if status.has_action?
= link_to status.action_path, class: 'ci-action-icon-wrapper js-ci-action-icon', method: status.action_method, data: { toggle: 'tooltip', title: status.action_title } do
= icon(status.action_icon, class: status.action_class)
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
.form-group .form-group
= f.label :email = f.label :email
= f.email_field :email, class: "form-control middle", required: true, title: "Please provide a valid email address." = f.email_field :email, class: "form-control middle", required: true, title: "Please provide a valid email address."
.form-group
= f.label :email_confirmation
= f.email_field :email_confirmation, class: "form-control middle", required: true, title: "Please retype the email address."
.form-group.append-bottom-20#password-strength .form-group.append-bottom-20#password-strength
= f.label :password = f.label :password
= f.password_field :password, class: "form-control bottom", required: true, pattern: ".{#{@minimum_password_length},}", title: "Minimum length is #{@minimum_password_length} characters." = f.password_field :password, class: "form-control bottom", required: true, pattern: ".{#{@minimum_password_length},}", title: "Minimum length is #{@minimum_password_length} characters."
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
= link_to admin_abuse_reports_path, title: "Abuse Reports" do = link_to admin_abuse_reports_path, title: "Abuse Reports" do
%span %span
Abuse Reports Abuse Reports
%span.badge.badge-dark.count= number_with_delimiter(AbuseReport.count(:all)) %span.badge.count= number_with_delimiter(AbuseReport.count(:all))
- if askimet_enabled? - if askimet_enabled?
= nav_link(controller: :spam_logs) do = nav_link(controller: :spam_logs) do
......
...@@ -26,13 +26,13 @@ ...@@ -26,13 +26,13 @@
%span %span
Issues Issues
- issues = IssuesFinder.new(current_user, group_id: @group.id, state: 'opened').execute - issues = IssuesFinder.new(current_user, group_id: @group.id, state: 'opened').execute
%span.badge.badge-dark.count= number_with_delimiter(issues.count) %span.badge.count= number_with_delimiter(issues.count)
= nav_link(path: 'groups#merge_requests') do = nav_link(path: 'groups#merge_requests') do
= link_to merge_requests_group_path(@group), title: 'Merge Requests' do = link_to merge_requests_group_path(@group), title: 'Merge Requests' do
%span %span
Merge Requests Merge Requests
- merge_requests = MergeRequestsFinder.new(current_user, group_id: @group.id, state: 'opened', non_archived: true).execute - merge_requests = MergeRequestsFinder.new(current_user, group_id: @group.id, state: 'opened', non_archived: true).execute
%span.badge.badge-dark.count= number_with_delimiter(merge_requests.count) %span.badge.count= number_with_delimiter(merge_requests.count)
= nav_link(controller: [:group_members]) do = nav_link(controller: [:group_members]) do
= link_to group_group_members_path(@group), title: 'Members' do = link_to group_group_members_path(@group), title: 'Members' do
%span %span
......
...@@ -61,14 +61,14 @@ ...@@ -61,14 +61,14 @@
%span %span
Issues Issues
- if @project.default_issues_tracker? - if @project.default_issues_tracker?
%span.badge.badge-dark.count.issue_counter= number_with_delimiter(IssuesFinder.new(current_user, project_id: @project.id).execute.opened.count) %span.badge.count.issue_counter= number_with_delimiter(IssuesFinder.new(current_user, project_id: @project.id).execute.opened.count)
- if project_nav_tab? :merge_requests - if project_nav_tab? :merge_requests
= nav_link(controller: :merge_requests) do = nav_link(controller: :merge_requests) do
= link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do = link_to namespace_project_merge_requests_path(@project.namespace, @project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do
%span %span
Merge Requests Merge Requests
%span.badge.badge-dark.count.merge_counter= number_with_delimiter(MergeRequestsFinder.new(current_user, project_id: @project.id).execute.opened.count) %span.badge.count.merge_counter= number_with_delimiter(MergeRequestsFinder.new(current_user, project_id: @project.id).execute.opened.count)
- if project_nav_tab? :wiki - if project_nav_tab? :wiki
= nav_link(controller: :wikis) do = nav_link(controller: :wikis) do
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
- else - else
= link_to title, '#' = link_to title, '#'
%ul.blob-commit-info.hidden-xs %ul.blob-commit-info.table-list.hidden-xs
- blob_commit = @repository.last_commit_for_path(@commit.id, blob.path) - blob_commit = @repository.last_commit_for_path(@commit.id, blob.path)
= render blob_commit, project: @project, ref: @ref = render blob_commit, project: @project, ref: @ref
......
...@@ -47,21 +47,18 @@ ...@@ -47,21 +47,18 @@
- icon_status = "#{detailed_status.icon}_borderless" - icon_status = "#{detailed_status.icon}_borderless"
- status_klass = "ci-status-icon ci-status-icon-#{detailed_status.group}" - status_klass = "ci-status-icon ci-status-icon-#{detailed_status.group}"
.stage-container.mini-pipeline-graph .stage-container.dropdown.js-mini-pipeline-graph
.dropdown.inline.build-content %button.mini-pipeline-graph-dropdown-toggle.has-tooltip.js-builds-dropdown-button{ class: "ci-status-icon-#{detailed_status.group}", type: 'button', data: { toggle: 'dropdown', title: "#{stage.name}: #{detailed_status.label}", placement: 'top', "stage-endpoint" => stage_namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline, stage: stage.name) } }
%button.has-tooltip.builds-dropdown.js-builds-dropdown-button{ type: 'button', data: { toggle: 'dropdown', title: "#{stage.name}: #{detailed_status.label}", placement: 'top', "stage-endpoint" => stage_namespace_project_pipeline_path(pipeline.project.namespace, pipeline.project, pipeline, stage: stage.name) } } = custom_icon(icon_status)
%span.has-tooltip{ class: status_klass } = icon('caret-down')
%span.mini-pipeline-graph-icon-container
%span{ class: status_klass }= custom_icon(icon_status)
= icon('caret-down', class: 'dropdown-caret')
.js-builds-dropdown-container %ul.dropdown-menu.mini-pipeline-graph-dropdown-menu.js-builds-dropdown-container
.dropdown-menu.grouped-pipeline-dropdown .arrow-up
.arrow-up .js-builds-dropdown-list.scrollable-menu
.js-builds-dropdown-list
.js-builds-dropdown-loading.builds-dropdown-loading.hidden
%span.fa.fa-spinner.fa-spin
.js-builds-dropdown-loading.builds-dropdown-loading.hidden
%span.fa.fa-spinner.fa-spin
%td %td
- if pipeline.duration - if pipeline.duration
......
%ul.content-list.pipelines %div
- if pipelines.blank? - if pipelines.blank?
%li %div
.nothing-here-block No pipelines to show .nothing-here-block No pipelines to show
- else - else
.table-holder .table-holder.pipelines
%table.table.ci-table.js-pipeline-table %table.table.ci-table.js-pipeline-table
%thead %thead
%th.pipeline-status Status %th.pipeline-status Status
......
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