mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-17 00:26:07 +10:00
Merge branch 'issue_3400_port' of https://gitlab.com/gitlab-org/gitlab-ce into issue_3400_port
This commit is contained in:
@@ -1,19 +1,25 @@
|
||||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 8.6.0 (unreleased)
|
||||
- Add confidential issues
|
||||
- Bump gitlab_git to 9.0.3 (Stan Hu)
|
||||
- Support Golang subpackage fetching (Stan Hu)
|
||||
- Bump Capybara gem to 2.6.2 (Stan Hu)
|
||||
- New branch button appears on issues where applicable
|
||||
- Contributions to forked projects are included in calendar
|
||||
- Improve the formatting for the user page bio (Connor Shea)
|
||||
- Removed the default password from the initial admin account created during
|
||||
setup. A password can be provided during setup (see installation docs), or
|
||||
GitLab will ask the user to create a new one upon first visit.
|
||||
- Fix issue when pushing to projects ending in .wiki
|
||||
- Add support for wiki with UTF-8 page names (Hiroyuki Sato)
|
||||
- Fix wiki search results point to raw source (Hiroyuki Sato)
|
||||
- Don't load all of GitLab in mail_room
|
||||
- HTTP error pages work independently from location and config (Artem Sidorenko)
|
||||
- Update `omniauth-saml` to 1.5.0 to allow for custom response attributes to be set
|
||||
- Memoize @group in Admin::GroupsController (Yatish Mehta)
|
||||
- Indicate how much an MR diverged from the target branch (Pierre de La Morinerie)
|
||||
- Added omniauth-auth0 Gem (Daniel Carraro)
|
||||
- Strip leading and trailing spaces in URL validator (evuez)
|
||||
- Add "last_sign_in_at" and "confirmed_at" to GET /users/* API endpoints for admins (evuez)
|
||||
- Return empty array instead of 404 when commit has no statuses in commit status API
|
||||
@@ -21,6 +27,7 @@ v 8.6.0 (unreleased)
|
||||
- Rewrite logo to simplify SVG code (Sean Lang)
|
||||
- Allow to use YAML anchors when parsing the `.gitlab-ci.yml` (Pascal Bach)
|
||||
- Ignore jobs that start with `.` (hidden jobs)
|
||||
- Hide builds from project's settings when the feature is disabled
|
||||
- Allow to pass name of created artifacts archive in `.gitlab-ci.yml`
|
||||
- Refactor and greatly improve search performance
|
||||
- Add support for cross-project label references
|
||||
@@ -32,13 +39,25 @@ v 8.6.0 (unreleased)
|
||||
- Fix bug where Bitbucket `closed` issues were imported as `opened` (Iuri de Silvio)
|
||||
- Don't show Issues/MRs from archived projects in Groups view
|
||||
- Fix wrong "iid of max iid" in Issuable sidebar for some merged MRs
|
||||
- Fix empty source_sha on Merge Request when there is no diff (Pierre de La Morinerie)
|
||||
- Increase the notes polling timeout over time (Roberto Dip)
|
||||
- Add shortcut to toggle markdown preview (Florent Baldino)
|
||||
- Show labels in dashboard and group milestone views
|
||||
- Add main language of a project in the list of projects (Tiago Botelho)
|
||||
- Add #upcoming filter to Milestone filter (Tiago Botelho)
|
||||
- Add ability to show archived projects on dashboard, explore and group pages
|
||||
- Move group activity to separate page
|
||||
- Create external users which are excluded of internal and private projects unless access was explicitly granted
|
||||
- Continue parameters are checked to ensure redirection goes to the same instance
|
||||
- User deletion is now done in the background so the request can not time out
|
||||
- Canceled builds are now ignored in compound build status if marked as `allowed to fail`
|
||||
- Trigger a todo for mentions on commits page
|
||||
|
||||
v 8.5.8
|
||||
- Bump Git version requirement to 2.7.4
|
||||
|
||||
v 8.5.7
|
||||
- Bump Git version requirement to 2.7.3
|
||||
|
||||
v 8.5.6
|
||||
- Obtain a lease before querying LDAP
|
||||
@@ -48,7 +67,6 @@ v 8.5.5
|
||||
- Prevent a 500 error in Todos when author was removed
|
||||
- Fix pagination for filtered dashboard and explore pages
|
||||
- Fix "Show all" link behavior
|
||||
- Add #upcoming filter to Milestone filter (Tiago Botelho)
|
||||
|
||||
v 8.5.4
|
||||
- Do not cache requests for badges (including builds badge)
|
||||
|
||||
@@ -22,6 +22,7 @@ gem 'devise', '~> 3.5.4'
|
||||
gem 'devise-async', '~> 0.9.0'
|
||||
gem 'doorkeeper', '~> 2.2.0'
|
||||
gem 'omniauth', '~> 1.3.1'
|
||||
gem 'omniauth-auth0', '~> 1.4.1'
|
||||
gem 'omniauth-azure-oauth2', '~> 0.0.6'
|
||||
gem 'omniauth-bitbucket', '~> 0.0.2'
|
||||
gem 'omniauth-cas3', '~> 1.1.2'
|
||||
@@ -50,7 +51,7 @@ gem "browser", '~> 1.0.0'
|
||||
|
||||
# Extracting information from a git repository
|
||||
# Provide access to Gitlab::Git library
|
||||
gem "gitlab_git", '~> 9.0'
|
||||
gem "gitlab_git", '~> 10.0'
|
||||
|
||||
# LDAP Auth
|
||||
# GitLab fork with several improvements to original library. For full list of changes
|
||||
@@ -58,7 +59,9 @@ gem "gitlab_git", '~> 9.0'
|
||||
gem 'gitlab_omniauth-ldap', '~> 1.2.1', require: "omniauth-ldap"
|
||||
|
||||
# Git Wiki
|
||||
gem 'gollum-lib', '~> 4.1.0'
|
||||
# Required manually in config/initializers/gollum.rb to control load order
|
||||
gem 'gollum-lib', '~> 4.1.0', require: false
|
||||
gem 'gollum-rugged_adapter', '~> 0.4.2', require: false
|
||||
|
||||
# Language detection
|
||||
gem "github-linguist", "~> 4.7.0", require: "linguist"
|
||||
|
||||
+11
-4
@@ -359,11 +359,11 @@ GEM
|
||||
posix-spawn (~> 0.3)
|
||||
gitlab_emoji (0.3.1)
|
||||
gemojione (~> 2.2, >= 2.2.1)
|
||||
gitlab_git (9.0.3)
|
||||
gitlab_git (10.0.0)
|
||||
activesupport (~> 4.0)
|
||||
charlock_holmes (~> 0.7.3)
|
||||
github-linguist (~> 4.7.0)
|
||||
rugged (~> 0.24.0b13)
|
||||
rugged (~> 0.24.0)
|
||||
gitlab_meta (7.0)
|
||||
gitlab_omniauth-ldap (1.2.1)
|
||||
net-ldap (~> 0.9)
|
||||
@@ -381,6 +381,9 @@ GEM
|
||||
rouge (~> 1.9)
|
||||
sanitize (~> 2.1.0)
|
||||
stringex (~> 2.5.1)
|
||||
gollum-rugged_adapter (0.4.2)
|
||||
mime-types (>= 1.15)
|
||||
rugged (~> 0.24.0, >= 0.21.3)
|
||||
gon (6.0.1)
|
||||
actionpack (>= 3.0)
|
||||
json
|
||||
@@ -495,6 +498,8 @@ GEM
|
||||
omniauth (1.3.1)
|
||||
hashie (>= 1.2, < 4)
|
||||
rack (>= 1.0, < 3)
|
||||
omniauth-auth0 (1.4.1)
|
||||
omniauth-oauth2 (~> 1.1)
|
||||
omniauth-azure-oauth2 (0.0.6)
|
||||
jwt (~> 1.0)
|
||||
omniauth (~> 1.0)
|
||||
@@ -703,7 +708,7 @@ GEM
|
||||
rubyntlm (0.5.2)
|
||||
rubypants (0.2.0)
|
||||
rufus-scheduler (3.1.10)
|
||||
rugged (0.24.0b13)
|
||||
rugged (0.24.0)
|
||||
safe_yaml (1.0.4)
|
||||
sanitize (2.1.0)
|
||||
nokogiri (>= 1.4.4)
|
||||
@@ -937,10 +942,11 @@ DEPENDENCIES
|
||||
github-markup (~> 1.3.1)
|
||||
gitlab-flowdock-git-hook (~> 1.0.1)
|
||||
gitlab_emoji (~> 0.3.0)
|
||||
gitlab_git (~> 9.0)
|
||||
gitlab_git (~> 10.0)
|
||||
gitlab_meta (= 7.0)
|
||||
gitlab_omniauth-ldap (~> 1.2.1)
|
||||
gollum-lib (~> 4.1.0)
|
||||
gollum-rugged_adapter (~> 0.4.2)
|
||||
gon (~> 6.0.1)
|
||||
grape (~> 0.13.0)
|
||||
grape-entity (~> 0.4.2)
|
||||
@@ -969,6 +975,7 @@ DEPENDENCIES
|
||||
oauth2 (~> 1.0.0)
|
||||
octokit (~> 3.8.0)
|
||||
omniauth (~> 1.3.1)
|
||||
omniauth-auth0 (~> 1.4.1)
|
||||
omniauth-azure-oauth2 (~> 0.0.6)
|
||||
omniauth-bitbucket (~> 0.0.2)
|
||||
omniauth-cas3 (~> 1.1.2)
|
||||
|
||||
@@ -68,7 +68,7 @@ GitLab is a Ruby on Rails application that runs on the following software:
|
||||
|
||||
- Ubuntu/Debian/CentOS/RHEL
|
||||
- Ruby (MRI) 2.1
|
||||
- Git 1.7.10+
|
||||
- Git 2.7.4+
|
||||
- Redis 2.8+
|
||||
- MySQL or PostgreSQL
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@ class Dispatcher
|
||||
|
||||
path = page.split(':')
|
||||
shortcut_handler = null
|
||||
|
||||
switch page
|
||||
when 'projects:issues:index'
|
||||
Issues.init()
|
||||
@@ -25,6 +24,8 @@ class Dispatcher
|
||||
new ZenMode()
|
||||
when 'projects:milestones:show', 'groups:milestones:show', 'dashboard:milestones:show'
|
||||
new Milestone()
|
||||
when 'dashboard:todos:index'
|
||||
new Todos()
|
||||
when 'projects:milestones:new', 'projects:milestones:edit'
|
||||
new ZenMode()
|
||||
new DropzoneInput($('.milestone-form'))
|
||||
|
||||
@@ -303,11 +303,15 @@ class GitLabDropdown
|
||||
if oldValue
|
||||
value = "#{oldValue},#{value}"
|
||||
else
|
||||
@dropdown.find(ACTIVE_CLASS).removeClass ACTIVE_CLASS
|
||||
@dropdown.find(".#{ACTIVE_CLASS}").removeClass ACTIVE_CLASS
|
||||
|
||||
# Toggle active class for the tick mark
|
||||
el.toggleClass "is-active"
|
||||
|
||||
# Toggle the dropdown label
|
||||
if @options.toggleLabel
|
||||
$(@el).find(".dropdown-toggle-text").text @options.toggleLabel(selectedObject)
|
||||
|
||||
if value?
|
||||
if !field.length
|
||||
# Create hidden input for form
|
||||
|
||||
@@ -7,6 +7,7 @@ class @Issue
|
||||
# Prevent duplicate event bindings
|
||||
@disableTaskList()
|
||||
@fixAffixScroll()
|
||||
@initParticipants()
|
||||
if $('a.btn-close').length
|
||||
@initTaskList()
|
||||
@initIssueBtnEventListeners()
|
||||
@@ -84,3 +85,27 @@ class @Issue
|
||||
type: 'PATCH'
|
||||
url: $('form.js-issuable-update').attr('action')
|
||||
data: patchData
|
||||
|
||||
initParticipants: ->
|
||||
_this = @
|
||||
$(document).on "click", ".js-participants-more", @toggleHiddenParticipants
|
||||
|
||||
$(".js-participants-author").each (i) ->
|
||||
if i >= _this.PARTICIPANTS_ROW_COUNT
|
||||
$(@)
|
||||
.addClass "js-participants-hidden"
|
||||
.hide()
|
||||
|
||||
toggleHiddenParticipants: (e) ->
|
||||
e.preventDefault()
|
||||
|
||||
currentText = $(this).text().trim()
|
||||
lessText = $(this).data("less-text")
|
||||
originalText = $(this).data("original-text")
|
||||
|
||||
if currentText is originalText
|
||||
$(this).text(lessText)
|
||||
else
|
||||
$(this).text(originalText)
|
||||
|
||||
$(".js-participants-hidden").toggle()
|
||||
|
||||
@@ -41,24 +41,28 @@
|
||||
@timer = null
|
||||
$("#issue_search").keyup ->
|
||||
clearTimeout(@timer)
|
||||
@timer = setTimeout(Issues.filterResults, 500)
|
||||
@timer = setTimeout( ->
|
||||
Issues.filterResults $("#issue_search_form")
|
||||
, 500)
|
||||
|
||||
filterResults: =>
|
||||
form = $("#issue_search_form")
|
||||
search = $("#issue_search").val()
|
||||
$('.issues-holder').css("opacity", '0.5')
|
||||
issues_url = form.attr('action') + '?' + form.serialize()
|
||||
filterResults: (form) =>
|
||||
$('.issues-holder, .merge-requests-holder').css("opacity", '0.5')
|
||||
formAction = form.attr('action')
|
||||
formData = form.serialize()
|
||||
issuesUrl = formAction
|
||||
issuesUrl += ("#{if formAction.indexOf("?") < 0 then '?' else '&'}")
|
||||
issuesUrl += formData
|
||||
|
||||
$.ajax
|
||||
type: "GET"
|
||||
url: form.attr('action')
|
||||
data: form.serialize()
|
||||
url: formAction
|
||||
data: formData
|
||||
complete: ->
|
||||
$('.issues-holder').css("opacity", '1.0')
|
||||
$('.issues-holder, .merge-requests-holder').css("opacity", '1.0')
|
||||
success: (data) ->
|
||||
$('.issues-holder').html(data.html)
|
||||
$('.issues-holder, .merge-requests-holder').html(data.html)
|
||||
# Change url so if user reload a page - search results are saved
|
||||
history.replaceState {page: issues_url}, document.title, issues_url
|
||||
history.replaceState {page: issuesUrl}, document.title, issuesUrl
|
||||
Issues.reload()
|
||||
dataType: "json"
|
||||
|
||||
|
||||
@@ -1,30 +1,32 @@
|
||||
class @LabelsSelect
|
||||
constructor: ->
|
||||
$('.js-label-select').each (i, dropdown) ->
|
||||
projectId = $(dropdown).data('project-id')
|
||||
labelUrl = $(dropdown).data("labels")
|
||||
selectedLabel = $(dropdown).data('selected')
|
||||
$dropdown = $(dropdown)
|
||||
projectId = $dropdown.data('project-id')
|
||||
labelUrl = $dropdown.data('labels')
|
||||
selectedLabel = $dropdown.data('selected')
|
||||
if selectedLabel
|
||||
selectedLabel = selectedLabel.split(",")
|
||||
selectedLabel = selectedLabel.split(',')
|
||||
newLabelField = $('#new_label_name')
|
||||
newColorField = $('#new_label_color')
|
||||
showNo = $(dropdown).data('show-no')
|
||||
showAny = $(dropdown).data('show-any')
|
||||
showNo = $dropdown.data('show-no')
|
||||
showAny = $dropdown.data('show-any')
|
||||
defaultLabel = $dropdown.data('default-label')
|
||||
|
||||
if newLabelField.length
|
||||
$('.suggest-colors-dropdown a').on "click", (e) ->
|
||||
$('.suggest-colors-dropdown a').on 'click', (e) ->
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
newColorField.val $(this).data("color")
|
||||
newColorField.val $(this).data('color')
|
||||
$('.js-dropdown-label-color-preview')
|
||||
.css 'background-color', $(this).data("color")
|
||||
.css 'background-color', $(this).data('color')
|
||||
.addClass 'is-active'
|
||||
|
||||
$('.js-new-label-btn').on "click", (e) ->
|
||||
$('.js-new-label-btn').on 'click', (e) ->
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
|
||||
if newLabelField.val() isnt "" && newColorField.val() isnt ""
|
||||
if newLabelField.val() isnt '' and newColorField.val() isnt ''
|
||||
$('.js-new-label-btn').disable()
|
||||
|
||||
# Create new label with API
|
||||
@@ -33,46 +35,38 @@ class @LabelsSelect
|
||||
color: newColorField.val()
|
||||
}, (label) ->
|
||||
$('.js-new-label-btn').enable()
|
||||
$('.dropdown-menu-back', $(dropdown).parent()).trigger "click"
|
||||
$('.dropdown-menu-back', $dropdown.parent()).trigger 'click'
|
||||
|
||||
$(dropdown).glDropdown(
|
||||
$dropdown.glDropdown(
|
||||
data: (term, callback) ->
|
||||
# We have to fetch the JS version of the labels list because there is no
|
||||
# public facing JSON url for labels
|
||||
$.ajax(
|
||||
url: labelUrl
|
||||
).done (data) ->
|
||||
html = $(data)
|
||||
data = []
|
||||
html.find('.label-row a').each ->
|
||||
data.push(
|
||||
title: $(@).text().trim()
|
||||
)
|
||||
|
||||
if showNo
|
||||
data.unshift(
|
||||
id: "0"
|
||||
title: 'No label'
|
||||
id: 0
|
||||
title: 'No Label'
|
||||
)
|
||||
|
||||
if showAny
|
||||
data.unshift(
|
||||
title: 'Any label'
|
||||
isAny: true
|
||||
title: 'Any Label'
|
||||
)
|
||||
|
||||
if data.length > 2
|
||||
data.splice 2, 0, "divider"
|
||||
data.splice 2, 0, 'divider'
|
||||
|
||||
callback data
|
||||
renderRow: (label) ->
|
||||
if $.isArray(selectedLabel)
|
||||
selected = ""
|
||||
selected = ''
|
||||
$.each selectedLabel, (i, selectedLbl) ->
|
||||
selectedLbl = selectedLbl.trim()
|
||||
if selected is "" && label.title is selectedLbl
|
||||
selected = "is-active"
|
||||
if selected is '' and label.title is selectedLbl
|
||||
selected = 'is-active'
|
||||
else
|
||||
selected = if label.title is selectedLabel then "is-active" else ""
|
||||
selected = if label.title is selectedLabel then 'is-active' else ''
|
||||
|
||||
"<li>
|
||||
<a href='#' class='#{selected}'>
|
||||
@@ -83,10 +77,24 @@ class @LabelsSelect
|
||||
search:
|
||||
fields: ['title']
|
||||
selectable: true
|
||||
fieldName: $(dropdown).data('field-name')
|
||||
toggleLabel: (selected) ->
|
||||
if selected and selected.title isnt 'Any Label'
|
||||
selected.title
|
||||
else
|
||||
defaultLabel
|
||||
fieldName: $dropdown.data('field-name')
|
||||
id: (label) ->
|
||||
label.title
|
||||
if label.isAny?
|
||||
''
|
||||
else
|
||||
label.title
|
||||
clicked: ->
|
||||
if $(dropdown).hasClass "js-filter-submit"
|
||||
$(dropdown).parents('form').submit()
|
||||
page = $('body').data 'page'
|
||||
isIssueIndex = page is 'projects:issues:index'
|
||||
isMRIndex = page is page is 'projects:merge_requests:index'
|
||||
|
||||
if $dropdown.hasClass('js-filter-submit') and (isIssueIndex or isMRIndex)
|
||||
Issues.filterResults $dropdown.closest('form')
|
||||
else if $dropdown.hasClass 'js-filter-submit'
|
||||
$dropdown.closest('form').submit()
|
||||
)
|
||||
|
||||
@@ -1,60 +1,65 @@
|
||||
class @MilestoneSelect
|
||||
constructor: ->
|
||||
$('.js-milestone-select').each (i, dropdown) ->
|
||||
projectId = $(dropdown).data('project-id')
|
||||
milestonesUrl = $(dropdown).data('milestones')
|
||||
selectedMilestone = $(dropdown).data('selected')
|
||||
showNo = $(dropdown).data('show-no')
|
||||
showAny = $(dropdown).data('show-any')
|
||||
useId = $(dropdown).data('use-id')
|
||||
$dropdown = $(dropdown)
|
||||
projectId = $dropdown.data('project-id')
|
||||
milestonesUrl = $dropdown.data('milestones')
|
||||
selectedMilestone = $dropdown.data('selected')
|
||||
showNo = $dropdown.data('show-no')
|
||||
showAny = $dropdown.data('show-any')
|
||||
useId = $dropdown.data('use-id')
|
||||
defaultLabel = $dropdown.data('default-label')
|
||||
|
||||
$(dropdown).glDropdown(
|
||||
$dropdown.glDropdown(
|
||||
data: (term, callback) ->
|
||||
$.ajax(
|
||||
url: milestonesUrl
|
||||
).done (data) ->
|
||||
html = $(data)
|
||||
data = []
|
||||
html.find('.milestone strong a').each ->
|
||||
link = $(@).attr("href").split("/")
|
||||
data.push(
|
||||
id: link[link.length - 1]
|
||||
title: $(@).text().trim()
|
||||
)
|
||||
|
||||
if showNo
|
||||
data.unshift(
|
||||
id: "0"
|
||||
id: '0'
|
||||
title: 'No Milestone'
|
||||
)
|
||||
|
||||
if showAny
|
||||
data.unshift(
|
||||
isAny: true
|
||||
title: 'Any Milestone'
|
||||
)
|
||||
|
||||
if data.length > 2
|
||||
data.splice 2, 0, "divider"
|
||||
data.splice 2, 0, 'divider'
|
||||
|
||||
callback(data)
|
||||
filterable: true
|
||||
search:
|
||||
fields: ['title']
|
||||
selectable: true
|
||||
fieldName: $(dropdown).data('field-name')
|
||||
toggleLabel: (selected) ->
|
||||
if selected && 'id' of selected
|
||||
selected.title
|
||||
else
|
||||
defaultLabel
|
||||
fieldName: $dropdown.data('field-name')
|
||||
text: (milestone) ->
|
||||
milestone.title
|
||||
id: (milestone) ->
|
||||
if !useId
|
||||
if milestone.title isnt "Any milestone"
|
||||
if !milestone.isAny?
|
||||
milestone.title
|
||||
else
|
||||
""
|
||||
''
|
||||
else
|
||||
milestone.id
|
||||
isSelected: (milestone) ->
|
||||
milestone.title is selectedMilestone
|
||||
clicked: ->
|
||||
if $(dropdown).hasClass "js-filter-submit"
|
||||
$(dropdown).parents('form').submit()
|
||||
page = $('body').data 'page'
|
||||
isIssueIndex = page is 'projects:issues:index'
|
||||
isMRIndex = page is page is 'projects:merge_requests:index'
|
||||
|
||||
if $dropdown.hasClass('js-filter-submit') and (isIssueIndex or isMRIndex)
|
||||
Issues.filterResults $dropdown.closest('form')
|
||||
else if $dropdown.hasClass 'js-filter-submit'
|
||||
$dropdown.closest('form').submit()
|
||||
)
|
||||
|
||||
@@ -343,6 +343,7 @@ class @Notes
|
||||
updateNote: (_xhr, note, _status) =>
|
||||
# Convert returned HTML to a jQuery object so we can modify it further
|
||||
$html = $(note.html)
|
||||
$('.js-timeago', $html).timeago()
|
||||
$html.syntaxHighlight()
|
||||
$html.find('.js-task-list-container').taskList('enable')
|
||||
|
||||
@@ -626,10 +627,10 @@ class @Notes
|
||||
if closebtn.text() isnt closetext
|
||||
closebtn.text(closetext)
|
||||
|
||||
if reopenbtn.is(':not(.btn-comment-and-reopen)')
|
||||
if reopenbtn.is('.btn-comment-and-reopen')
|
||||
reopenbtn.removeClass('btn-comment-and-reopen')
|
||||
|
||||
if closebtn.is(':not(.btn-comment-and-close)')
|
||||
if closebtn.is('.btn-comment-and-close')
|
||||
closebtn.removeClass('btn-comment-and-close')
|
||||
|
||||
if discardbtn.is(':visible')
|
||||
|
||||
@@ -3,3 +3,16 @@ class @ProjectNew
|
||||
$('.project-edit-container').on 'ajax:before', =>
|
||||
$('.project-edit-container').hide()
|
||||
$('.save-project-loader').show()
|
||||
@toggleSettings()
|
||||
@toggleSettingsOnclick()
|
||||
|
||||
|
||||
toggleSettings: ->
|
||||
checked = $("#project_builds_enabled").prop("checked")
|
||||
if checked
|
||||
$('.builds-feature').show()
|
||||
else
|
||||
$('.builds-feature').hide()
|
||||
|
||||
toggleSettingsOnclick: ->
|
||||
$("#project_builds_enabled").on 'click', @toggleSettings
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
class @Todos
|
||||
constructor: (@name) ->
|
||||
@clearListeners()
|
||||
@initBtnListeners()
|
||||
|
||||
clearListeners: ->
|
||||
$('.done-todo').off('click')
|
||||
$('.js-todos-mark-all').off('click')
|
||||
|
||||
initBtnListeners: ->
|
||||
$('.done-todo').on('click', @doneClicked)
|
||||
$('.js-todos-mark-all').on('click', @allDoneClicked)
|
||||
|
||||
doneClicked: (e) =>
|
||||
e.preventDefault()
|
||||
e.stopImmediatePropagation()
|
||||
|
||||
$this = $(e.currentTarget)
|
||||
$this.disable()
|
||||
|
||||
$.ajax
|
||||
type: 'POST'
|
||||
url: $this.attr('href')
|
||||
dataType: 'json'
|
||||
data: '_method': 'delete'
|
||||
success: (data) =>
|
||||
@clearDone $this.closest('li')
|
||||
@updateBadges data
|
||||
|
||||
allDoneClicked: (e) =>
|
||||
e.preventDefault()
|
||||
e.stopImmediatePropagation()
|
||||
|
||||
$this = $(e.currentTarget)
|
||||
$this.disable()
|
||||
|
||||
$.ajax
|
||||
type: 'POST'
|
||||
url: $this.attr('href')
|
||||
dataType: 'json'
|
||||
data: '_method': 'delete'
|
||||
success: (data) =>
|
||||
$this.remove()
|
||||
$('.js-todos-list').remove()
|
||||
@updateBadges data
|
||||
|
||||
clearDone: ($row) ->
|
||||
$ul = $row.closest('ul')
|
||||
$row.remove()
|
||||
|
||||
if not $ul.find('li').length
|
||||
$ul.parents('.panel').remove()
|
||||
|
||||
updateBadges: (data) ->
|
||||
$('.todos-pending .badge, .todos-pending-count').text data.count
|
||||
$('.todos-done .badge').text data.done_count
|
||||
@@ -4,14 +4,16 @@ class @UsersSelect
|
||||
@userPath = "/autocomplete/users/:id.json"
|
||||
|
||||
$('.js-user-search').each (i, dropdown) =>
|
||||
@projectId = $(dropdown).data('project-id')
|
||||
@showCurrentUser = $(dropdown).data('current-user')
|
||||
showNullUser = $(dropdown).data('null-user')
|
||||
showAnyUser = $(dropdown).data('any-user')
|
||||
firstUser = $(dropdown).data('first-user')
|
||||
selectedId = $(dropdown).data('selected')
|
||||
$dropdown = $(dropdown)
|
||||
@projectId = $dropdown.data('project-id')
|
||||
@showCurrentUser = $dropdown.data('current-user')
|
||||
showNullUser = $dropdown.data('null-user')
|
||||
showAnyUser = $dropdown.data('any-user')
|
||||
firstUser = $dropdown.data('first-user')
|
||||
selectedId = $dropdown.data('selected')
|
||||
defaultLabel = $dropdown.data('default-label')
|
||||
|
||||
$(dropdown).glDropdown(
|
||||
$dropdown.glDropdown(
|
||||
data: (term, callback) =>
|
||||
@users term, (users) =>
|
||||
if term.length is 0
|
||||
@@ -52,10 +54,21 @@ class @UsersSelect
|
||||
search:
|
||||
fields: ['name', 'username']
|
||||
selectable: true
|
||||
fieldName: $(dropdown).data('field-name')
|
||||
fieldName: $dropdown.data('field-name')
|
||||
toggleLabel: (selected) ->
|
||||
if selected && 'id' of selected
|
||||
selected.name
|
||||
else
|
||||
defaultLabel
|
||||
clicked: ->
|
||||
if $(dropdown).hasClass "js-filter-submit"
|
||||
$(dropdown).parents('form').submit()
|
||||
page = $('body').data 'page'
|
||||
isIssueIndex = page is 'projects:issues:index'
|
||||
isMRIndex = page is page is 'projects:merge_requests:index'
|
||||
|
||||
if $dropdown.hasClass('js-filter-submit') and (isIssueIndex or isMRIndex)
|
||||
Issues.filterResults $dropdown.closest('form')
|
||||
else if $dropdown.hasClass 'js-filter-submit'
|
||||
$dropdown.closest('form').submit()
|
||||
renderRow: (user) ->
|
||||
username = if user.username then "@#{user.username}" else ""
|
||||
avatar = if user.avatar_url then user.avatar_url else false
|
||||
|
||||
@@ -23,15 +23,11 @@
|
||||
margin-bottom: -$gl-padding;
|
||||
background-color: $background-color;
|
||||
padding: $gl-padding;
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: 0;
|
||||
border-top: 1px solid $border-color;
|
||||
border-bottom: 1px solid $border-color;
|
||||
color: $gl-gray;
|
||||
|
||||
a {
|
||||
color: $md-link-color;
|
||||
}
|
||||
|
||||
&.oneline-block {
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
@@ -37,23 +37,23 @@
|
||||
}
|
||||
|
||||
@mixin btn-green {
|
||||
@include btn-color($green-light, $border-green-light, $green-normal, $border-green-normal, $green-dark, $border-green-dark, #FFFFFF);
|
||||
@include btn-color($green-light, $border-green-light, $green-normal, $border-green-normal, $green-dark, $border-green-dark, #fff);
|
||||
}
|
||||
|
||||
@mixin btn-blue {
|
||||
@include btn-color($blue-light, $border-blue-light, $blue-normal, $border-blue-normal, $blue-dark, $border-blue-dark, #FFFFFF);
|
||||
@include btn-color($blue-light, $border-blue-light, $blue-normal, $border-blue-normal, $blue-dark, $border-blue-dark, #fff);
|
||||
}
|
||||
|
||||
@mixin btn-blue-medium {
|
||||
@include btn-color($blue-medium-light, $border-blue-light, $blue-medium, $border-blue-normal, $blue-medium-dark, $border-blue-dark, #FFFFFF);
|
||||
@include btn-color($blue-medium-light, $border-blue-light, $blue-medium, $border-blue-normal, $blue-medium-dark, $border-blue-dark, #fff);
|
||||
}
|
||||
|
||||
@mixin btn-orange {
|
||||
@include btn-color($orange-light, $border-orange-light, $orange-normal, $border-orange-normal, $orange-dark, $border-orange-dark, #FFFFFF);
|
||||
@include btn-color($orange-light, $border-orange-light, $orange-normal, $border-orange-normal, $orange-dark, $border-orange-dark, #fff);
|
||||
}
|
||||
|
||||
@mixin btn-red {
|
||||
@include btn-color($red-light, $border-red-light, $red-normal, $border-red-normal, $red-dark, $border-red-dark, #FFFFFF);
|
||||
@include btn-color($red-light, $border-red-light, $red-normal, $border-red-normal, $red-dark, $border-red-dark, #fff);
|
||||
}
|
||||
|
||||
@mixin btn-gray {
|
||||
@@ -127,7 +127,7 @@
|
||||
margin-right: 7px;
|
||||
float: left;
|
||||
&:last-child {
|
||||
margin-right: 0px;
|
||||
margin-right: 0;
|
||||
}
|
||||
&.btn-xs {
|
||||
margin-right: 3px;
|
||||
@@ -139,7 +139,6 @@
|
||||
|
||||
.caret {
|
||||
margin-left: 5px;
|
||||
color: $gray-darkest;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +169,7 @@
|
||||
margin-right: 7px;
|
||||
float: left;
|
||||
&:last-child {
|
||||
margin-right: 0px;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,3 +208,13 @@
|
||||
background-color: #e4e7ed !important;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-loading {
|
||||
&:not(.disabled) .fa {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fa {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,19 +33,19 @@
|
||||
}
|
||||
|
||||
.q2 {
|
||||
fill: #ACD5F2 !important;
|
||||
fill: #acd5f2 !important;
|
||||
}
|
||||
|
||||
.q3 {
|
||||
fill: #7FA8D1 !important;
|
||||
fill: #7fa8d1 !important;
|
||||
}
|
||||
|
||||
.q4 {
|
||||
fill: #49729B !important;
|
||||
fill: #49729b !important;
|
||||
}
|
||||
|
||||
.q5 {
|
||||
fill: #254E77 !important;
|
||||
fill: #254e77 !important;
|
||||
}
|
||||
|
||||
.domain-background {
|
||||
|
||||
@@ -39,6 +39,6 @@
|
||||
}
|
||||
.bs-callout-success {
|
||||
background-color: #dff0d8;
|
||||
border-color: #5cA64d;
|
||||
border-color: #5ca64d;
|
||||
color: #3c763d;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/** COLORS **/
|
||||
.cgray { color: $gl-gray; }
|
||||
.clgray { color: #BBB }
|
||||
.clgray { color: #bbb }
|
||||
.cred { color: $gl-text-red; }
|
||||
.cgreen { color: $gl-text-green; }
|
||||
.cdark { color: #444 }
|
||||
@@ -8,20 +8,20 @@
|
||||
/** COMMON CLASSES **/
|
||||
.prepend-top-0 { margin-top: 0; }
|
||||
.prepend-top-5 { margin-top: 5px; }
|
||||
.prepend-top-10 { margin-top:10px }
|
||||
.prepend-top-10 { margin-top: 10px }
|
||||
.prepend-top-default { margin-top: $gl-padding !important; }
|
||||
.prepend-top-20 { margin-top:20px }
|
||||
.prepend-left-10 { margin-left:10px }
|
||||
.prepend-top-20 { margin-top: 20px }
|
||||
.prepend-left-10 { margin-left: 10px }
|
||||
.prepend-left-default { margin-left: $gl-padding; }
|
||||
.prepend-left-20 { margin-left:20px }
|
||||
.prepend-left-20 { margin-left: 20px }
|
||||
.append-right-5 { margin-right: 5px }
|
||||
.append-right-10 { margin-right:10px }
|
||||
.append-right-10 { margin-right: 10px }
|
||||
.append-right-default { margin-right: $gl-padding; }
|
||||
.append-right-20 { margin-right:20px }
|
||||
.append-bottom-0 { margin-bottom:0 }
|
||||
.append-bottom-10 { margin-bottom:10px }
|
||||
.append-bottom-15 { margin-bottom:15px }
|
||||
.append-bottom-20 { margin-bottom:20px }
|
||||
.append-right-20 { margin-right: 20px }
|
||||
.append-bottom-0 { margin-bottom: 0 }
|
||||
.append-bottom-10 { margin-bottom: 10px }
|
||||
.append-bottom-15 { margin-bottom: 15px }
|
||||
.append-bottom-20 { margin-bottom: 20px }
|
||||
.append-bottom-default { margin-bottom: $gl-padding; }
|
||||
.inline { display: inline-block }
|
||||
.center { text-align: center }
|
||||
@@ -51,7 +51,7 @@ pre {
|
||||
}
|
||||
|
||||
&.well-pre {
|
||||
border: 1px solid #EEE;
|
||||
border: 1px solid #eee;
|
||||
background: #f9f9f9;
|
||||
border-radius: 0;
|
||||
color: #555;
|
||||
@@ -103,7 +103,7 @@ span.update-author {
|
||||
}
|
||||
|
||||
.user-mention {
|
||||
color: #2FA0BB;
|
||||
color: #2fa0bb;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@@ -134,10 +134,10 @@ p.time {
|
||||
|
||||
// Fix issue with notes & lists creating a bunch of bottom borders.
|
||||
li.note {
|
||||
img { max-width:100% }
|
||||
img { max-width: 100% }
|
||||
.note-title {
|
||||
li {
|
||||
border-bottom:none !important;
|
||||
border-bottom: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -187,9 +187,9 @@ li.note {
|
||||
|
||||
.error-message {
|
||||
padding: 10px;
|
||||
background: #C67;
|
||||
background: #c67;
|
||||
margin: 0;
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
@@ -200,7 +200,7 @@ li.note {
|
||||
.browser-alert {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
background: #C67;
|
||||
background: #c67;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
a {
|
||||
@@ -271,7 +271,7 @@ img.emoji {
|
||||
|
||||
table {
|
||||
td.permission-x {
|
||||
background: #D9EDF7 !important;
|
||||
background: #d9edf7 !important;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
@@ -280,7 +280,7 @@ table {
|
||||
float: left;
|
||||
text-align: center;
|
||||
font-size: 32px;
|
||||
color: #AAA;
|
||||
color: #aaa;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
@@ -347,7 +347,7 @@ table {
|
||||
|
||||
.profiler-button,
|
||||
.profiler-controls {
|
||||
border-color: #EEE !important;
|
||||
border-color: #eee !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,11 +4,17 @@
|
||||
height: 0;
|
||||
margin-left: 2px;
|
||||
vertical-align: middle;
|
||||
border-top: $caret-width-base dashed $dropdown-caret-color;
|
||||
border-top: $caret-width-base dashed;
|
||||
border-right: $caret-width-base solid transparent;
|
||||
border-left: $caret-width-base solid transparent;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
.caret {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
}
|
||||
@@ -161,9 +167,8 @@
|
||||
|
||||
.dropdown-menu-user-full-name {
|
||||
display: block;
|
||||
margin-bottom: 2px;
|
||||
font-weight: 600;
|
||||
line-height: 1;
|
||||
line-height: 16px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
@@ -171,7 +176,7 @@
|
||||
|
||||
.dropdown-menu-user-username {
|
||||
display: block;
|
||||
line-height: 1;
|
||||
line-height: 16px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
@@ -261,7 +266,7 @@
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
color: #C7C7C7;
|
||||
color: #c7c7c7;
|
||||
font-size: 12px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
right: 15px;
|
||||
|
||||
.btn {
|
||||
padding: 0px 10px;
|
||||
padding: 0 10px;
|
||||
font-size: 13px;
|
||||
line-height: 28px;
|
||||
}
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
&.blob-no-preview {
|
||||
background: #eee;
|
||||
text-shadow: 0 1px 2px #FFF;
|
||||
text-shadow: 0 1px 2px #fff;
|
||||
padding: 100px 0;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
}
|
||||
td.line-numbers {
|
||||
float: none;
|
||||
border-left: 1px solid #DDD;
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
td.lines {
|
||||
padding: 0;
|
||||
|
||||
@@ -3,22 +3,11 @@
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
@media (min-width: 800px) {
|
||||
@media (min-width: $screen-sm-min) {
|
||||
.issues-filters,
|
||||
.issues_bulk_update {
|
||||
select, .select2-container {
|
||||
width: 120px !important;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.issues-filters,
|
||||
.issues_bulk_update {
|
||||
select, .select2-container {
|
||||
width: 150px !important;
|
||||
display: inline-block;
|
||||
.dropdown-menu-toggle {
|
||||
width: 132px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@ input {
|
||||
}
|
||||
|
||||
input[type='text'].danger {
|
||||
background: #F2DEDE!important;
|
||||
border-color: #D66;
|
||||
background: #f2dede!important;
|
||||
border-color: #d66;
|
||||
text-shadow: 0 1px 1px #fff
|
||||
}
|
||||
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
&:hover {
|
||||
background-color: $color-darker;
|
||||
a {
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.collapse-nav a {
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
background: $color;
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
&:hover {
|
||||
background-color: $color-dark;
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
@@ -71,7 +71,7 @@
|
||||
}
|
||||
|
||||
&.active a {
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
background: $color-dark;
|
||||
|
||||
&.no-highlight {
|
||||
@@ -79,42 +79,42 @@
|
||||
}
|
||||
|
||||
i {
|
||||
color: #FFF
|
||||
color: #fff
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$theme-blue: #2980B9;
|
||||
$theme-blue: #2980b9;
|
||||
$theme-charcoal: #333c47;
|
||||
$theme-graphite: #888888;
|
||||
$theme-graphite: #888;
|
||||
$theme-gray: #373737;
|
||||
$theme-green: #019875;
|
||||
$theme-violet: #554488;
|
||||
$theme-violet: #548;
|
||||
|
||||
body {
|
||||
&.ui_blue {
|
||||
@include gitlab-theme(#BECDE9, $theme-blue, #1970A9, #096099);
|
||||
@include gitlab-theme(#becde9, $theme-blue, #1970a9, #096099);
|
||||
}
|
||||
|
||||
&.ui_charcoal {
|
||||
@include gitlab-theme(#c5d0de, $theme-charcoal, #2b333d, #24272D);
|
||||
@include gitlab-theme(#c5d0de, $theme-charcoal, #2b333d, #24272d);
|
||||
}
|
||||
|
||||
&.ui_graphite {
|
||||
@include gitlab-theme(#CCCCCC, $theme-graphite, #777777, #666666);
|
||||
@include gitlab-theme(#ccc, $theme-graphite, #777, #666);
|
||||
}
|
||||
|
||||
&.ui_gray {
|
||||
@include gitlab-theme(#979797, $theme-gray, #272727, #222222);
|
||||
@include gitlab-theme(#979797, $theme-gray, #272727, #222);
|
||||
}
|
||||
|
||||
&.ui_green {
|
||||
@include gitlab-theme(#AADDCC, $theme-green, #018865, #017855);
|
||||
@include gitlab-theme(#adc, $theme-green, #018865, #017855);
|
||||
}
|
||||
|
||||
&.ui_violet {
|
||||
@include gitlab-theme(#9988CC, $theme-violet, #443366, #332255);
|
||||
@include gitlab-theme(#98c, $theme-violet, #436, #325);
|
||||
}
|
||||
}
|
||||
@@ -7,8 +7,8 @@ header {
|
||||
|
||||
&.navbar-empty {
|
||||
height: 58px;
|
||||
background: #FFF;
|
||||
border-bottom: 1px solid #EEE;
|
||||
background: #fff;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
||||
.center-logo {
|
||||
margin: 11px 0;
|
||||
@@ -28,7 +28,7 @@ header {
|
||||
min-height: $header-height;
|
||||
background-color: #fff;
|
||||
border: none;
|
||||
border-bottom: 1px solid #EEE;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
||||
.container-fluid {
|
||||
width: 100% !important;
|
||||
@@ -47,7 +47,7 @@ header {
|
||||
text-align: center;
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
background-color: #FFF;
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ header {
|
||||
right: 2px;
|
||||
|
||||
&:hover {
|
||||
background-color: #EEE;
|
||||
background-color: #eee;
|
||||
}
|
||||
&.active {
|
||||
color: #7f8fa4;
|
||||
@@ -142,7 +142,7 @@ header {
|
||||
font-size: 18px;
|
||||
|
||||
.navbar-nav {
|
||||
margin: 0px;
|
||||
margin: 0;
|
||||
float: none !important;
|
||||
|
||||
.visible-xs, .visable-sm {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
.file-content.code {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
table-layout: fixed;
|
||||
|
||||
pre {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
display: block;
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
font-size: $gl-font-size;
|
||||
line-height: 25px;
|
||||
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
font-size: $font-size-base;
|
||||
|
||||
&.ui-datepicker-inline {
|
||||
border: 1px solid #DDD;
|
||||
border: 1px solid #ddd;
|
||||
padding: 10px;
|
||||
width: 270px;
|
||||
|
||||
.ui-datepicker-header {
|
||||
background: #FFF;
|
||||
border-color: #DDD;
|
||||
background: #fff;
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
.ui-datepicker-calendar td a {
|
||||
@@ -52,20 +52,20 @@
|
||||
}
|
||||
|
||||
.ui-state-default {
|
||||
border: 1px solid #FFF;
|
||||
background: #FFF;
|
||||
border: 1px solid #fff;
|
||||
background: #fff;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.ui-state-highlight {
|
||||
border: 1px solid #EEE;
|
||||
background: #EEE;
|
||||
border: 1px solid #eee;
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.ui-state-active {
|
||||
border: 1px solid $gl-primary;
|
||||
background: $gl-primary;
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ui-state-hover,
|
||||
|
||||
@@ -141,6 +141,10 @@ ul.content-list {
|
||||
}
|
||||
}
|
||||
|
||||
.panel > .content-list > li {
|
||||
padding: $gl-padding-top $gl-padding;
|
||||
}
|
||||
|
||||
ul.controls {
|
||||
padding-top: 1px;
|
||||
float: right;
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
}
|
||||
|
||||
.md-preview-holder {
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
min-height: 169px;
|
||||
padding: 5px;
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
.markdown-area {
|
||||
@include border-radius(0);
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
min-height: 140px;
|
||||
max-height: 500px;
|
||||
|
||||
@@ -67,17 +67,17 @@
|
||||
* Base mixin for lists in GitLab
|
||||
*/
|
||||
@mixin basic-list {
|
||||
margin: 5px 0px;
|
||||
padding: 0px;
|
||||
margin: 5px 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
|
||||
> li {
|
||||
@include clearfix;
|
||||
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
border-bottom: 1px solid #eee;
|
||||
display: block;
|
||||
margin: 0px;
|
||||
margin: 0;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
|
||||
@@ -128,12 +128,12 @@
|
||||
.show-aside {
|
||||
display: none;
|
||||
position: fixed;
|
||||
right: 0px;
|
||||
right: 0;
|
||||
top: 30%;
|
||||
padding: 5px 15px;
|
||||
background: #EEE;
|
||||
background: #eee;
|
||||
font-size: 20px;
|
||||
color: #777;
|
||||
z-index: 100;
|
||||
@include box-shadow(0 1px 2px #DDD);
|
||||
@include box-shadow(0 1px 2px #ddd);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
}
|
||||
|
||||
&.active a {
|
||||
color: #000000;
|
||||
color: #000;
|
||||
border-bottom: 2px solid #4688f1;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
.top-area {
|
||||
@include clearfix;
|
||||
|
||||
border-bottom: 1px solid #EEE;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
||||
.nav-text {
|
||||
padding-top: 16px;
|
||||
@@ -59,7 +59,7 @@
|
||||
.nav-links {
|
||||
display: inline-block;
|
||||
width: 50%;
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: 0;
|
||||
border-bottom: none;
|
||||
|
||||
/* Small devices (phones, tablets, 768px and lower) */
|
||||
@@ -74,7 +74,7 @@
|
||||
float: right;
|
||||
text-align: right;
|
||||
padding: 11px 0;
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: 0;
|
||||
|
||||
> .dropdown {
|
||||
margin-right: $gl-padding-top;
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
padding: 2px 25px 2px 5px;
|
||||
background: #fff image-url('select2.png');
|
||||
background-repeat: no-repeat;
|
||||
background-position: right 0px bottom 6px;
|
||||
background-position: right 0 bottom 6px;
|
||||
border: 1px solid $input-border;
|
||||
@include border-radius($border-radius-default);
|
||||
@include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
.namespace-result {
|
||||
.namespace-kind {
|
||||
color: #AAA;
|
||||
color: #aaa;
|
||||
font-weight: normal;
|
||||
}
|
||||
.namespace-path {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
.gitlab-text-container-link {
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
#logo {
|
||||
@@ -47,7 +47,7 @@
|
||||
width: 100%;
|
||||
|
||||
.container-fluid {
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
padding: 0 $gl-padding;
|
||||
|
||||
&.container-blank {
|
||||
@@ -103,7 +103,7 @@
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: #EEE;
|
||||
background-color: #eee;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
overflow: hidden;
|
||||
|
||||
&.navbar-collapse {
|
||||
padding: 0px !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
li {
|
||||
@@ -182,7 +182,7 @@
|
||||
.count {
|
||||
float: right;
|
||||
background: #eee;
|
||||
padding: 0px 8px;
|
||||
padding: 0 8px;
|
||||
@include border-radius(6px);
|
||||
}
|
||||
|
||||
@@ -194,8 +194,8 @@
|
||||
}
|
||||
|
||||
.sidebar-subnav {
|
||||
margin-left: 0px;
|
||||
padding-left: 0px;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
|
||||
li {
|
||||
list-style: none;
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
}
|
||||
|
||||
&.label-inverse {
|
||||
background-color: #333333;
|
||||
background-color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
}
|
||||
|
||||
.btn-clipboard {
|
||||
min-width: 0px;
|
||||
min-width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ $component-active-bg: $brand-info;
|
||||
|
||||
$input-color: $text-color;
|
||||
$input-border: #e7e9ed;
|
||||
$input-border-focus: #7F8FA4;
|
||||
$input-border-focus: #7f8fa4;
|
||||
$legend-color: $text-color;
|
||||
|
||||
|
||||
@@ -125,8 +125,8 @@ $panel-inner-border: $border-color;
|
||||
//
|
||||
//##
|
||||
|
||||
$well-bg: #F9F9F9;
|
||||
$well-border: #EEE;
|
||||
$well-bg: #f9f9f9;
|
||||
$well-border: #eee;
|
||||
|
||||
//== Code
|
||||
//
|
||||
|
||||
@@ -27,13 +27,13 @@
|
||||
line-height: 10px;
|
||||
color: #555;
|
||||
vertical-align: middle;
|
||||
background-color: #FCFCFC;
|
||||
background-color: #fcfcfc;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #CCC #CCC #BBB;
|
||||
border-color: #ccc #ccc #bbb;
|
||||
border-image: none;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0px -1px 0px #BBB inset;
|
||||
box-shadow: 0 -1px 0 #bbb inset;
|
||||
}
|
||||
|
||||
h1 {
|
||||
@@ -187,7 +187,7 @@ body {
|
||||
}
|
||||
|
||||
.page-title-empty {
|
||||
margin-top: 0px;
|
||||
margin-top: 0;
|
||||
line-height: 1.3;
|
||||
font-size: 1.25em;
|
||||
font-weight: 600;
|
||||
|
||||
@@ -1,53 +1,82 @@
|
||||
$row-hover: #f4f8fe;
|
||||
$gl-text-color: #54565B;
|
||||
$gl-text-green: #4A2;
|
||||
$gl-text-red: #D12F19;
|
||||
$gl-text-orange: #D90;
|
||||
$gl-header-color: #323232;
|
||||
$gl-link-color: #333c48;
|
||||
$md-text-color: #444;
|
||||
$md-link-color: #3084bb;
|
||||
$progress-color: #c0392b;
|
||||
$gl-font-size: 15px;
|
||||
$list-font-size: 15px;
|
||||
/*
|
||||
* Layout
|
||||
*/
|
||||
$sidebar_collapsed_width: 62px;
|
||||
$sidebar_width: 230px;
|
||||
$gutter_collapsed_width: 62px;
|
||||
$gutter_width: 290px;
|
||||
$gutter_inner_width: 258px;
|
||||
$avatar_radius: 50%;
|
||||
$code_font_size: 13px;
|
||||
$code_line_height: 1.5;
|
||||
|
||||
/*
|
||||
* UI elements
|
||||
*/
|
||||
$border-color: #efeff1;
|
||||
$table-border-color: #eef0f2;
|
||||
$background-color: #faf9f9;
|
||||
$header-height: 58px;
|
||||
$fixed-layout-width: 1280px;
|
||||
$gl-gray: #5a5a5a;
|
||||
|
||||
/*
|
||||
* Text
|
||||
*/
|
||||
$gl-font-size: 15px;
|
||||
$gl-title-color: #333;
|
||||
$gl-text-color: #555;
|
||||
$gl-placeholder-color: #8f8f8f;
|
||||
$gl-text-green: #4a2;
|
||||
$gl-text-red: #d12f19;
|
||||
$gl-text-orange: #d90;
|
||||
$gl-header-color: $gl-title-color;
|
||||
$gl-link-color: #333c48;
|
||||
$gl-gray: $gl-text-color;
|
||||
|
||||
/*
|
||||
* Lists
|
||||
*/
|
||||
$list-font-size: $gl-font-size;
|
||||
$list-title-color: $gl-title-color;
|
||||
$list-text-color: $gl-text-color;
|
||||
|
||||
/*
|
||||
* Markdown
|
||||
*/
|
||||
$md-text-color: #444;
|
||||
$md-link-color: #3084bb;
|
||||
|
||||
/*
|
||||
* Code
|
||||
*/
|
||||
$code_font_size: 13px;
|
||||
$code_line_height: 1.5;
|
||||
|
||||
/*
|
||||
* Padding
|
||||
*/
|
||||
$gl-padding: 16px;
|
||||
$gl-btn-padding: 10px;
|
||||
$gl-vert-padding: 6px;
|
||||
$gl-padding-top:10px;
|
||||
$gl-padding-top: 10px;
|
||||
|
||||
/*
|
||||
* Misc
|
||||
*/
|
||||
$row-hover: #f4f8fe;
|
||||
$progress-color: #c0392b;
|
||||
$avatar_radius: 50%;
|
||||
$header-height: 58px;
|
||||
$fixed-layout-width: 1280px;
|
||||
$gl-avatar-size: 40px;
|
||||
$secondary-text: #7f8fa4;
|
||||
$error-exclamation-point: #E62958;
|
||||
$error-exclamation-point: #e62958;
|
||||
$border-radius-default: 3px;
|
||||
$list-title-color: #333333;
|
||||
$list-text-color: #555555;
|
||||
|
||||
$btn-transparent-color: #8F8F8F;
|
||||
|
||||
$ssh-key-icon-color: #8F8F8F;
|
||||
$btn-transparent-color: #8f8f8f;
|
||||
$ssh-key-icon-color: #8f8f8f;
|
||||
$ssh-key-icon-size: 18px;
|
||||
|
||||
$provider-btn-group-border: #E5E5E5;
|
||||
$provider-btn-not-active-color: #4688F1;
|
||||
$provider-btn-group-border: #e5e5e5;
|
||||
$provider-btn-not-active-color: #4688f1;
|
||||
|
||||
/*
|
||||
* Color schema
|
||||
*/
|
||||
|
||||
$white-light: #FFFFFF;
|
||||
$white-light: #fff;
|
||||
$white-normal: #ededed;
|
||||
$white-dark: #ededed;
|
||||
|
||||
@@ -57,55 +86,55 @@ $gray-dark: #ededed;
|
||||
$gray-darkest: #c9c9c9;
|
||||
|
||||
$green-light: #38ae67;
|
||||
$green-normal: #2FAA60;
|
||||
$green-dark: #2CA05B;
|
||||
$green-normal: #2faa60;
|
||||
$green-dark: #2ca05b;
|
||||
|
||||
$blue-light: #2EA8E5;
|
||||
$blue-normal: #2D9FD8;
|
||||
$blue-dark: #2897CE;
|
||||
$blue-light: #2ea8e5;
|
||||
$blue-normal: #2d9fd8;
|
||||
$blue-dark: #2897ce;
|
||||
|
||||
$blue-medium-light: #3498CB;
|
||||
$blue-medium: #2F8EBF;
|
||||
$blue-medium-dark: #2D86B4;
|
||||
$blue-medium-light: #3498cb;
|
||||
$blue-medium: #2f8ebf;
|
||||
$blue-medium-dark: #2d86b4;
|
||||
|
||||
$orange-light: rgba(252, 109, 38, 0.80);
|
||||
$orange-normal: #E75E40;
|
||||
$orange-dark: #CE5237;
|
||||
$orange-normal: #e75e40;
|
||||
$orange-dark: #ce5237;
|
||||
|
||||
$red-light: #F06559;
|
||||
$red-normal: #E52C5A;
|
||||
$red-dark: #D22852;
|
||||
$red-light: #f06559;
|
||||
$red-normal: #e52c5a;
|
||||
$red-dark: #d22852;
|
||||
|
||||
$border-white-light: #F1F2F4;
|
||||
$border-white-normal: #D6DAE2;
|
||||
$border-white-dark: #C6CACF;
|
||||
$border-white-light: #f1f2f4;
|
||||
$border-white-normal: #d6dae2;
|
||||
$border-white-dark: #c6cacf;
|
||||
|
||||
$border-gray-light: rgba(0, 0, 0, 0.06);
|
||||
$border-gray-normal: rgba(0, 0, 0, 0.10);;
|
||||
$border-gray-dark: #C6CACF;
|
||||
$border-gray-dark: #c6cacf;
|
||||
|
||||
$border-green-light: #2FAA60;
|
||||
$border-green-normal: #2CA05B;
|
||||
$border-green-light: #2faa60;
|
||||
$border-green-normal: #2ca05b;
|
||||
$border-green-dark: #279654;
|
||||
|
||||
$border-blue-light: #2D9FD8;
|
||||
$border-blue-normal: #2897CE;
|
||||
$border-blue-dark: #258DC1;
|
||||
$border-blue-light: #2d9fd8;
|
||||
$border-blue-normal: #2897ce;
|
||||
$border-blue-dark: #258dc1;
|
||||
|
||||
$border-orange-light: #fc6d26;
|
||||
$border-orange-normal: #CE5237;
|
||||
$border-orange-dark: #C14E35;
|
||||
$border-orange-normal: #ce5237;
|
||||
$border-orange-dark: #c14e35;
|
||||
|
||||
$border-red-light: #F24F41;
|
||||
$border-red-normal: #D22852;
|
||||
$border-red-dark: #CA264F;
|
||||
$border-red-light: #f24f41;
|
||||
$border-red-normal: #d22852;
|
||||
$border-red-dark: #ca264f;
|
||||
|
||||
$help-well-bg: #FAFAFA;
|
||||
$help-well-border: #E5E5E5;
|
||||
$help-well-bg: #fafafa;
|
||||
$help-well-border: #e5e5e5;
|
||||
|
||||
$warning-message-bg: #FBF2D9;
|
||||
$warning-message-color: #9E8E60;
|
||||
$warning-message-border: #F0E2BB;
|
||||
$warning-message-bg: #fbf2d9;
|
||||
$warning-message-color: #9e8e60;
|
||||
$warning-message-border: #f0e2bb;
|
||||
|
||||
/* header */
|
||||
$light-grey-header: #faf9f9;
|
||||
@@ -143,23 +172,22 @@ $dropdown-border-color: rgba(#000, .1);
|
||||
$dropdown-shadow-color: rgba(#000, .1);
|
||||
$dropdown-divider-color: rgba(#000, .1);
|
||||
$dropdown-header-color: #959494;
|
||||
$dropdown-caret-color: #54565B;
|
||||
$dropdown-title-btn-color: #BFBFBF;
|
||||
$dropdown-input-color: #C7C7C7;
|
||||
$dropdown-title-btn-color: #bfbfbf;
|
||||
$dropdown-input-color: #c7c7c7;
|
||||
$dropdown-input-focus-border: rgb(58, 171, 240);
|
||||
$dropdown-input-focus-shadow: rgba(#000, .2);
|
||||
$dropdown-loading-bg: rgba(#fff, .6);
|
||||
|
||||
$dropdown-toggle-bg: #fff;
|
||||
$dropdown-toggle-color: #626262;
|
||||
$dropdown-toggle-border-color: #EAEAEA;
|
||||
$dropdown-toggle-border-color: #eaeaea;
|
||||
$dropdown-toggle-hover-border-color: darken($dropdown-toggle-border-color, 15%);
|
||||
$dropdown-toggle-icon-color: #C4C4C4;
|
||||
$dropdown-toggle-icon-color: #c4c4c4;
|
||||
$dropdown-toggle-hover-icon-color: $dropdown-toggle-hover-border-color;
|
||||
|
||||
/*
|
||||
* Award emoji
|
||||
*/
|
||||
$award-emoji-menu-bg: #FFF;
|
||||
$award-emoji-menu-border: #F1F2F4;
|
||||
$award-emoji-new-btn-icon-color: #DCDCDC;
|
||||
$award-emoji-menu-bg: #fff;
|
||||
$award-emoji-menu-border: #f1f2f4;
|
||||
$award-emoji-new-btn-icon-color: #dcdcdc;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
a.js-zen-enter {
|
||||
color: $gl-gray;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
top: 0;
|
||||
right: 4px;
|
||||
line-height: 56px;
|
||||
}
|
||||
|
||||
@@ -43,12 +43,12 @@
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background-color: #ffe792 !important;
|
||||
color: #000000 !important;
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
.hll { background-color: #373b41 }
|
||||
.c { color: #969896 } /* Comment */
|
||||
.err { color: #cc6666 } /* Error */
|
||||
.err { color: #c66 } /* Error */
|
||||
.k { color: #b294bb } /* Keyword */
|
||||
.l { color: #de935f } /* Literal */
|
||||
.n { color: #c5c8c6 } /* Name */
|
||||
@@ -58,7 +58,7 @@
|
||||
.cp { color: #969896 } /* Comment.Preproc */
|
||||
.c1 { color: #969896 } /* Comment.Single */
|
||||
.cs { color: #969896 } /* Comment.Special */
|
||||
.gd { color: #cc6666 } /* Generic.Deleted */
|
||||
.gd { color: #c66 } /* Generic.Deleted */
|
||||
.ge { font-style: italic } /* Generic.Emph */
|
||||
.gh { color: #c5c8c6; font-weight: bold } /* Generic.Heading */
|
||||
.gi { color: #b5bd68 } /* Generic.Inserted */
|
||||
@@ -77,17 +77,17 @@
|
||||
.na { color: #81a2be } /* Name.Attribute */
|
||||
.nb { color: #c5c8c6 } /* Name.Builtin */
|
||||
.nc { color: #f0c674 } /* Name.Class */
|
||||
.no { color: #cc6666 } /* Name.Constant */
|
||||
.no { color: #c66 } /* Name.Constant */
|
||||
.nd { color: #8abeb7 } /* Name.Decorator */
|
||||
.ni { color: #c5c8c6 } /* Name.Entity */
|
||||
.ne { color: #cc6666 } /* Name.Exception */
|
||||
.ne { color: #c66 } /* Name.Exception */
|
||||
.nf { color: #81a2be } /* Name.Function */
|
||||
.nl { color: #c5c8c6 } /* Name.Label */
|
||||
.nn { color: #f0c674 } /* Name.Namespace */
|
||||
.nx { color: #81a2be } /* Name.Other */
|
||||
.py { color: #c5c8c6 } /* Name.Property */
|
||||
.nt { color: #8abeb7 } /* Name.Tag */
|
||||
.nv { color: #cc6666 } /* Name.Variable */
|
||||
.nv { color: #c66 } /* Name.Variable */
|
||||
.ow { color: #8abeb7 } /* Operator.Word */
|
||||
.w { color: #c5c8c6 } /* Text.Whitespace */
|
||||
.mf { color: #de935f } /* Literal.Number.Float */
|
||||
@@ -106,8 +106,8 @@
|
||||
.s1 { color: #b5bd68 } /* Literal.String.Single */
|
||||
.ss { color: #b5bd68 } /* Literal.String.Symbol */
|
||||
.bp { color: #c5c8c6 } /* Name.Builtin.Pseudo */
|
||||
.vc { color: #cc6666 } /* Name.Variable.Class */
|
||||
.vg { color: #cc6666 } /* Name.Variable.Global */
|
||||
.vi { color: #cc6666 } /* Name.Variable.Instance */
|
||||
.vc { color: #c66 } /* Name.Variable.Class */
|
||||
.vg { color: #c66 } /* Name.Variable.Global */
|
||||
.vi { color: #c66 } /* Name.Variable.Instance */
|
||||
.il { color: #de935f } /* Literal.Number.Integer.Long */
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background-color: #ffe792 !important;
|
||||
color: #000000 !important;
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
.hll { background-color: #49483e }
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
.m { color: #2aa198 } /* Literal.Number */
|
||||
.s { color: #2aa198 } /* Literal.String */
|
||||
.na { color: #93a1a1 } /* Name.Attribute */
|
||||
.nb { color: #B58900 } /* Name.Builtin */
|
||||
.nb { color: #b58900 } /* Name.Builtin */
|
||||
.nc { color: #268bd2 } /* Name.Class */
|
||||
.no { color: #cb4b16 } /* Name.Constant */
|
||||
.nd { color: #268bd2 } /* Name.Decorator */
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
.m { color: #2aa198 } /* Literal.Number */
|
||||
.s { color: #2aa198 } /* Literal.String */
|
||||
.na { color: #586e75 } /* Name.Attribute */
|
||||
.nb { color: #B58900 } /* Name.Builtin */
|
||||
.nb { color: #b58900 } /* Name.Builtin */
|
||||
.nc { color: #268bd2 } /* Name.Class */
|
||||
.no { color: #cb4b16 } /* Name.Constant */
|
||||
.nd { color: #268bd2 } /* Name.Decorator */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
.line_holder {
|
||||
.diff-line-num {
|
||||
&.old {
|
||||
background: #ffdddd;
|
||||
background: #fdd;
|
||||
border-color: #f1c0c0;
|
||||
}
|
||||
|
||||
@@ -68,66 +68,66 @@
|
||||
}
|
||||
|
||||
.hll { background-color: #f8f8f8 }
|
||||
.c { color: #999988; font-style: italic; }
|
||||
.c { color: #998; font-style: italic; }
|
||||
.err { color: #a61717; background-color: #e3d2d2; }
|
||||
.k { font-weight: bold; }
|
||||
.o { font-weight: bold; }
|
||||
.cm { color: #999988; font-style: italic; }
|
||||
.cp { color: #999999; font-weight: bold; }
|
||||
.c1 { color: #999988; font-style: italic; }
|
||||
.cs { color: #999999; font-weight: bold; font-style: italic; }
|
||||
.gd { color: #000000; background-color: #ffdddd; }
|
||||
.gd .x { color: #000000; background-color: #ffaaaa; }
|
||||
.cm { color: #998; font-style: italic; }
|
||||
.cp { color: #999; font-weight: bold; }
|
||||
.c1 { color: #998; font-style: italic; }
|
||||
.cs { color: #999; font-weight: bold; font-style: italic; }
|
||||
.gd { color: #000; background-color: #fdd; }
|
||||
.gd .x { color: #000; background-color: #faa; }
|
||||
.ge { font-style: italic; }
|
||||
.gr { color: #aa0000; }
|
||||
.gh { color: #999999; }
|
||||
.gi { color: #000000; background-color: #ddffdd; }
|
||||
.gi .x { color: #000000; background-color: #aaffaa; }
|
||||
.go { color: #888888; }
|
||||
.gp { color: #555555; }
|
||||
.gr { color: #a00; }
|
||||
.gh { color: #999; }
|
||||
.gi { color: #000; background-color: #dfd; }
|
||||
.gi .x { color: #000; background-color: #afa; }
|
||||
.go { color: #888; }
|
||||
.gp { color: #555; }
|
||||
.gs { font-weight: bold; }
|
||||
.gu { color: #800080; font-weight: bold; }
|
||||
.gt { color: #aa0000; }
|
||||
.gt { color: #a00; }
|
||||
.kc { font-weight: bold; }
|
||||
.kd { font-weight: bold; }
|
||||
.kn { font-weight: bold; }
|
||||
.kp { font-weight: bold; }
|
||||
.kr { font-weight: bold; }
|
||||
.kt { color: #445588; font-weight: bold; }
|
||||
.m { color: #009999; }
|
||||
.s { color: #dd1144; }
|
||||
.n { color: #333333; }
|
||||
.kt { color: #458; font-weight: bold; }
|
||||
.m { color: #099; }
|
||||
.s { color: #d14; }
|
||||
.n { color: #333; }
|
||||
.na { color: teal; }
|
||||
.nb { color: #0086b3; }
|
||||
.nc { color: #445588; font-weight: bold; }
|
||||
.nc { color: #458; font-weight: bold; }
|
||||
.no { color: teal; }
|
||||
.ni { color: purple; }
|
||||
.ne { color: #990000; font-weight: bold; }
|
||||
.nf { color: #990000; font-weight: bold; }
|
||||
.nn { color: #555555; }
|
||||
.ne { color: #900; font-weight: bold; }
|
||||
.nf { color: #900; font-weight: bold; }
|
||||
.nn { color: #555; }
|
||||
.nt { color: navy; }
|
||||
.nv { color: teal; }
|
||||
.ow { font-weight: bold; }
|
||||
.w { color: #bbbbbb; }
|
||||
.mf { color: #009999; }
|
||||
.mh { color: #009999; }
|
||||
.mi { color: #009999; }
|
||||
.mo { color: #009999; }
|
||||
.sb { color: #dd1144; }
|
||||
.sc { color: #dd1144; }
|
||||
.sd { color: #dd1144; }
|
||||
.s2 { color: #dd1144; }
|
||||
.se { color: #dd1144; }
|
||||
.sh { color: #dd1144; }
|
||||
.si { color: #dd1144; }
|
||||
.sx { color: #dd1144; }
|
||||
.w { color: #bbb; }
|
||||
.mf { color: #099; }
|
||||
.mh { color: #099; }
|
||||
.mi { color: #099; }
|
||||
.mo { color: #099; }
|
||||
.sb { color: #d14; }
|
||||
.sc { color: #d14; }
|
||||
.sd { color: #d14; }
|
||||
.s2 { color: #d14; }
|
||||
.se { color: #d14; }
|
||||
.sh { color: #d14; }
|
||||
.si { color: #d14; }
|
||||
.sx { color: #d14; }
|
||||
.sr { color: #009926; }
|
||||
.s1 { color: #dd1144; }
|
||||
.s1 { color: #d14; }
|
||||
.ss { color: #990073; }
|
||||
.bp { color: #999999; }
|
||||
.bp { color: #999; }
|
||||
.vc { color: teal; }
|
||||
.vg { color: teal; }
|
||||
.vi { color: teal; }
|
||||
.il { color: #009999; }
|
||||
.gc { color: #999; background-color: #EAF2F5; }
|
||||
.il { color: #099; }
|
||||
.gc { color: #999; background-color: #eaf2f5; }
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
}
|
||||
|
||||
.appearance-light-logo-preview {
|
||||
background-color: $background-color;
|
||||
background-color: $background-color;
|
||||
max-width: 72px;
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.build-page {
|
||||
pre.trace {
|
||||
background: #111111;
|
||||
background: #111;
|
||||
color: #fff;
|
||||
font-family: $monospace_font;
|
||||
white-space: pre;
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
padding: 10px 0;
|
||||
|
||||
li {
|
||||
padding: 3px 0px;
|
||||
padding: 3px 0;
|
||||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
.lists-separator {
|
||||
margin: 10px 0;
|
||||
border-color: #DDD;
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
.commits-row {
|
||||
@@ -76,7 +76,7 @@ li.commit {
|
||||
|
||||
.commit-row-description {
|
||||
font-size: 14px;
|
||||
border-left: 1px solid #EEE;
|
||||
border-left: 1px solid #eee;
|
||||
padding: 10px 15px;
|
||||
margin: 5px 0 10px 5px;
|
||||
background: #f9f9f9;
|
||||
@@ -152,7 +152,7 @@ li.commit {
|
||||
|
||||
.count {
|
||||
padding-top: 6px;
|
||||
padding-bottom: 0px;
|
||||
padding-bottom: 0;
|
||||
font-size: 12px;
|
||||
color: #333;
|
||||
display: block;
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
}
|
||||
|
||||
.dashboard-search-filter {
|
||||
padding:5px;
|
||||
padding: 5px;
|
||||
|
||||
.search-text-input {
|
||||
float:left;
|
||||
float: left;
|
||||
@extend .col-md-2;
|
||||
}
|
||||
.btn {
|
||||
margin-left: 5px;
|
||||
float:left;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Common
|
||||
.diff-file {
|
||||
border: 1px solid $border-color;
|
||||
border-top: none;
|
||||
margin-bottom: $gl-padding;
|
||||
|
||||
.diff-header {
|
||||
position: relative;
|
||||
@@ -29,7 +29,7 @@
|
||||
.diff-content {
|
||||
overflow: auto;
|
||||
overflow-y: hidden;
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
color: #333;
|
||||
|
||||
.unfold {
|
||||
@@ -57,8 +57,8 @@
|
||||
font-family: $monospace_font;
|
||||
border: none;
|
||||
border-collapse: separate;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
.line_holder td {
|
||||
line-height: $code_line_height;
|
||||
font-size: $code_font_size;
|
||||
@@ -76,10 +76,10 @@
|
||||
}
|
||||
|
||||
.old_line, .new_line {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
padding: 0px 5px;
|
||||
padding: 0 5px;
|
||||
border-right: 1px solid;
|
||||
text-align: right;
|
||||
min-width: 35px;
|
||||
@@ -97,8 +97,8 @@
|
||||
}
|
||||
.line_content {
|
||||
display: block;
|
||||
margin: 0px;
|
||||
padding: 0px 0.5em;
|
||||
margin: 0;
|
||||
padding: 0 0.5em;
|
||||
border: none;
|
||||
&.parallel {
|
||||
display: table-cell;
|
||||
@@ -118,7 +118,7 @@
|
||||
background-color: #fff;
|
||||
line-height: 0;
|
||||
img {
|
||||
border: 1px solid #FFF;
|
||||
border: 1px solid #fff;
|
||||
background: image-url('trans_bg.gif');
|
||||
max-width: 100%;
|
||||
}
|
||||
@@ -183,7 +183,7 @@
|
||||
height: 14px;
|
||||
width: 15px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
top: 0;
|
||||
background: image-url('swipemode_sprites.gif') 0 3px no-repeat;
|
||||
}
|
||||
.bottom-handle {
|
||||
@@ -191,7 +191,7 @@
|
||||
height: 14px;
|
||||
width: 15px;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
bottom: 0;
|
||||
background: image-url('swipemode_sprites.gif') 0 -11px no-repeat;
|
||||
}
|
||||
}
|
||||
@@ -206,8 +206,8 @@
|
||||
.frame.added, .frame.deleted {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.controls {
|
||||
display: block;
|
||||
@@ -215,7 +215,7 @@
|
||||
width: 300px;
|
||||
z-index: 100;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
margin-left: -150px;
|
||||
|
||||
@@ -231,11 +231,11 @@
|
||||
.dragger {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
background: image-url('onion_skin_sprites.gif') 0px -34px repeat-x;
|
||||
background: image-url('onion_skin_sprites.gif') 0 -34px repeat-x;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@@ -243,17 +243,17 @@
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 0px;
|
||||
right: 0;
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
background: image-url('onion_skin_sprites.gif') -2px 0px no-repeat;
|
||||
background: image-url('onion_skin_sprites.gif') -2px 0 no-repeat;
|
||||
}
|
||||
|
||||
.opaque {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 0px;
|
||||
left: 0;
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
background: image-url('onion_skin_sprites.gif') -2px -10px no-repeat;
|
||||
@@ -265,7 +265,7 @@
|
||||
.view-modes {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
background: #EEE;
|
||||
background: #eee;
|
||||
|
||||
ul, li {
|
||||
list-style: none;
|
||||
@@ -361,3 +361,11 @@
|
||||
border-color: $border;
|
||||
}
|
||||
}
|
||||
|
||||
.files {
|
||||
margin-top: -1px;
|
||||
|
||||
.diff-file:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
}
|
||||
|
||||
.cancel-btn {
|
||||
color: #B94A48;
|
||||
color: #b94a48;
|
||||
&:hover {
|
||||
color: #B94A48;
|
||||
color: #b94a48;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,60 +1,60 @@
|
||||
.emoji-0023-20E3 { background-position: 0px 0px; }
|
||||
.emoji-002A-20E3 { background-position: -20px 0px; }
|
||||
.emoji-0030-20E3 { background-position: 0px -20px; }
|
||||
.emoji-0023-20E3 { background-position: 0 0; }
|
||||
.emoji-002A-20E3 { background-position: -20px 0; }
|
||||
.emoji-0030-20E3 { background-position: 0 -20px; }
|
||||
.emoji-0031-20E3 { background-position: -20px -20px; }
|
||||
.emoji-0032-20E3 { background-position: -40px 0px; }
|
||||
.emoji-0032-20E3 { background-position: -40px 0; }
|
||||
.emoji-0033-20E3 { background-position: -40px -20px; }
|
||||
.emoji-0034-20E3 { background-position: 0px -40px; }
|
||||
.emoji-0034-20E3 { background-position: 0 -40px; }
|
||||
.emoji-0035-20E3 { background-position: -20px -40px; }
|
||||
.emoji-0036-20E3 { background-position: -40px -40px; }
|
||||
.emoji-0037-20E3 { background-position: -60px 0px; }
|
||||
.emoji-0037-20E3 { background-position: -60px 0; }
|
||||
.emoji-0038-20E3 { background-position: -60px -20px; }
|
||||
.emoji-0039-20E3 { background-position: -60px -40px; }
|
||||
.emoji-00A9 { background-position: 0px -60px; }
|
||||
.emoji-00A9 { background-position: 0 -60px; }
|
||||
.emoji-00AE { background-position: -20px -60px; }
|
||||
.emoji-1F004 { background-position: -40px -60px; }
|
||||
.emoji-1F0CF { background-position: -60px -60px; }
|
||||
.emoji-1F170 { background-position: -80px 0px; }
|
||||
.emoji-1F170 { background-position: -80px 0; }
|
||||
.emoji-1F171 { background-position: -80px -20px; }
|
||||
.emoji-1F17E { background-position: -80px -40px; }
|
||||
.emoji-1F17F { background-position: -80px -60px; }
|
||||
.emoji-1F18E { background-position: 0px -80px; }
|
||||
.emoji-1F18E { background-position: 0 -80px; }
|
||||
.emoji-1F191 { background-position: -20px -80px; }
|
||||
.emoji-1F192 { background-position: -40px -80px; }
|
||||
.emoji-1F193 { background-position: -60px -80px; }
|
||||
.emoji-1F194 { background-position: -80px -80px; }
|
||||
.emoji-1F195 { background-position: -100px 0px; }
|
||||
.emoji-1F195 { background-position: -100px 0; }
|
||||
.emoji-1F196 { background-position: -100px -20px; }
|
||||
.emoji-1F197 { background-position: -100px -40px; }
|
||||
.emoji-1F198 { background-position: -100px -60px; }
|
||||
.emoji-1F199 { background-position: -100px -80px; }
|
||||
.emoji-1F19A { background-position: 0px -100px; }
|
||||
.emoji-1F19A { background-position: 0 -100px; }
|
||||
.emoji-1F1E6-1F1E8 { background-position: -20px -100px; }
|
||||
.emoji-1F1E6-1F1E9 { background-position: -40px -100px; }
|
||||
.emoji-1F1E6-1F1EA { background-position: -60px -100px; }
|
||||
.emoji-1F1E6-1F1EB { background-position: -80px -100px; }
|
||||
.emoji-1F1E6-1F1EC { background-position: -100px -100px; }
|
||||
.emoji-1F1E6-1F1EE { background-position: -120px 0px; }
|
||||
.emoji-1F1E6-1F1EE { background-position: -120px 0; }
|
||||
.emoji-1F1E6-1F1F1 { background-position: -120px -20px; }
|
||||
.emoji-1F1E6-1F1F2 { background-position: -120px -40px; }
|
||||
.emoji-1F1E6-1F1F4 { background-position: -120px -60px; }
|
||||
.emoji-1F1E6-1F1F6 { background-position: -120px -80px; }
|
||||
.emoji-1F1E6-1F1F7 { background-position: -120px -100px; }
|
||||
.emoji-1F1E6-1F1F8 { background-position: 0px -120px; }
|
||||
.emoji-1F1E6-1F1F8 { background-position: 0 -120px; }
|
||||
.emoji-1F1E6-1F1F9 { background-position: -20px -120px; }
|
||||
.emoji-1F1E6-1F1FA { background-position: -40px -120px; }
|
||||
.emoji-1F1E6-1F1FC { background-position: -60px -120px; }
|
||||
.emoji-1F1E6-1F1FD { background-position: -80px -120px; }
|
||||
.emoji-1F1E6-1F1FF { background-position: -100px -120px; }
|
||||
.emoji-1F1E7-1F1E6 { background-position: -120px -120px; }
|
||||
.emoji-1F1E7-1F1E7 { background-position: -140px 0px; }
|
||||
.emoji-1F1E7-1F1E7 { background-position: -140px 0; }
|
||||
.emoji-1F1E7-1F1E9 { background-position: -140px -20px; }
|
||||
.emoji-1F1E7-1F1EA { background-position: -140px -40px; }
|
||||
.emoji-1F1E7-1F1EB { background-position: -140px -60px; }
|
||||
.emoji-1F1E7-1F1EC { background-position: -140px -80px; }
|
||||
.emoji-1F1E7-1F1ED { background-position: -140px -100px; }
|
||||
.emoji-1F1E7-1F1EE { background-position: -140px -120px; }
|
||||
.emoji-1F1E7-1F1EF { background-position: 0px -140px; }
|
||||
.emoji-1F1E7-1F1EF { background-position: 0 -140px; }
|
||||
.emoji-1F1E7-1F1F1 { background-position: -20px -140px; }
|
||||
.emoji-1F1E7-1F1F2 { background-position: -40px -140px; }
|
||||
.emoji-1F1E7-1F1F3 { background-position: -60px -140px; }
|
||||
@@ -62,7 +62,7 @@
|
||||
.emoji-1F1E7-1F1F6 { background-position: -100px -140px; }
|
||||
.emoji-1F1E7-1F1F7 { background-position: -120px -140px; }
|
||||
.emoji-1F1E7-1F1F8 { background-position: -140px -140px; }
|
||||
.emoji-1F1E7-1F1F9 { background-position: -160px 0px; }
|
||||
.emoji-1F1E7-1F1F9 { background-position: -160px 0; }
|
||||
.emoji-1F1E7-1F1FB { background-position: -160px -20px; }
|
||||
.emoji-1F1E7-1F1FC { background-position: -160px -40px; }
|
||||
.emoji-1F1E7-1F1FE { background-position: -160px -60px; }
|
||||
@@ -70,7 +70,7 @@
|
||||
.emoji-1F1E8-1F1E6 { background-position: -160px -100px; }
|
||||
.emoji-1F1E8-1F1E8 { background-position: -160px -120px; }
|
||||
.emoji-1F1E8-1F1E9 { background-position: -160px -140px; }
|
||||
.emoji-1F1E8-1F1EB { background-position: 0px -160px; }
|
||||
.emoji-1F1E8-1F1EB { background-position: 0 -160px; }
|
||||
.emoji-1F1E8-1F1EC { background-position: -20px -160px; }
|
||||
.emoji-1F1E8-1F1ED { background-position: -40px -160px; }
|
||||
.emoji-1F1E8-1F1EE { background-position: -60px -160px; }
|
||||
@@ -79,7 +79,7 @@
|
||||
.emoji-1F1E8-1F1F2 { background-position: -120px -160px; }
|
||||
.emoji-1F1E8-1F1F3 { background-position: -140px -160px; }
|
||||
.emoji-1F1E8-1F1F4 { background-position: -160px -160px; }
|
||||
.emoji-1F1E8-1F1F5 { background-position: -180px 0px; }
|
||||
.emoji-1F1E8-1F1F5 { background-position: -180px 0; }
|
||||
.emoji-1F1E8-1F1F7 { background-position: -180px -20px; }
|
||||
.emoji-1F1E8-1F1FA { background-position: -180px -40px; }
|
||||
.emoji-1F1E8-1F1FB { background-position: -180px -60px; }
|
||||
@@ -88,7 +88,7 @@
|
||||
.emoji-1F1E8-1F1FE { background-position: -180px -120px; }
|
||||
.emoji-1F1E8-1F1FF { background-position: -180px -140px; }
|
||||
.emoji-1F1E9-1F1EA { background-position: -180px -160px; }
|
||||
.emoji-1F1E9-1F1EC { background-position: 0px -180px; }
|
||||
.emoji-1F1E9-1F1EC { background-position: 0 -180px; }
|
||||
.emoji-1F1E9-1F1EF { background-position: -20px -180px; }
|
||||
.emoji-1F1E9-1F1F0 { background-position: -40px -180px; }
|
||||
.emoji-1F1E9-1F1F2 { background-position: -60px -180px; }
|
||||
@@ -98,7 +98,7 @@
|
||||
.emoji-1F1EA-1F1E8 { background-position: -140px -180px; }
|
||||
.emoji-1F1EA-1F1EA { background-position: -160px -180px; }
|
||||
.emoji-1F1EA-1F1EC { background-position: -180px -180px; }
|
||||
.emoji-1F1EA-1F1ED { background-position: -200px 0px; }
|
||||
.emoji-1F1EA-1F1ED { background-position: -200px 0; }
|
||||
.emoji-1F1EA-1F1F7 { background-position: -200px -20px; }
|
||||
.emoji-1F1EA-1F1F8 { background-position: -200px -40px; }
|
||||
.emoji-1F1EA-1F1F9 { background-position: -200px -60px; }
|
||||
@@ -108,7 +108,7 @@
|
||||
.emoji-1F1EB-1F1F0 { background-position: -200px -140px; }
|
||||
.emoji-1F1EB-1F1F2 { background-position: -200px -160px; }
|
||||
.emoji-1F1EB-1F1F4 { background-position: -200px -180px; }
|
||||
.emoji-1F1EB-1F1F7 { background-position: 0px -200px; }
|
||||
.emoji-1F1EB-1F1F7 { background-position: 0 -200px; }
|
||||
.emoji-1F1EC-1F1E6 { background-position: -20px -200px; }
|
||||
.emoji-1F1EC-1F1E7 { background-position: -40px -200px; }
|
||||
.emoji-1F1EC-1F1E9 { background-position: -60px -200px; }
|
||||
@@ -119,7 +119,7 @@
|
||||
.emoji-1F1EC-1F1EE { background-position: -160px -200px; }
|
||||
.emoji-1F1EC-1F1F1 { background-position: -180px -200px; }
|
||||
.emoji-1F1EC-1F1F2 { background-position: -200px -200px; }
|
||||
.emoji-1F1EC-1F1F3 { background-position: -220px 0px; }
|
||||
.emoji-1F1EC-1F1F3 { background-position: -220px 0; }
|
||||
.emoji-1F1EC-1F1F5 { background-position: -220px -20px; }
|
||||
.emoji-1F1EC-1F1F6 { background-position: -220px -40px; }
|
||||
.emoji-1F1EC-1F1F7 { background-position: -220px -60px; }
|
||||
@@ -130,7 +130,7 @@
|
||||
.emoji-1F1EC-1F1FE { background-position: -220px -160px; }
|
||||
.emoji-1F1ED-1F1F0 { background-position: -220px -180px; }
|
||||
.emoji-1F1ED-1F1F2 { background-position: -220px -200px; }
|
||||
.emoji-1F1ED-1F1F3 { background-position: 0px -220px; }
|
||||
.emoji-1F1ED-1F1F3 { background-position: 0 -220px; }
|
||||
.emoji-1F1ED-1F1F7 { background-position: -20px -220px; }
|
||||
.emoji-1F1ED-1F1F9 { background-position: -40px -220px; }
|
||||
.emoji-1F1ED-1F1FA { background-position: -60px -220px; }
|
||||
@@ -142,7 +142,7 @@
|
||||
.emoji-1F1EE-1F1F3 { background-position: -180px -220px; }
|
||||
.emoji-1F1EE-1F1F4 { background-position: -200px -220px; }
|
||||
.emoji-1F1EE-1F1F6 { background-position: -220px -220px; }
|
||||
.emoji-1F1EE-1F1F7 { background-position: -240px 0px; }
|
||||
.emoji-1F1EE-1F1F7 { background-position: -240px 0; }
|
||||
.emoji-1F1EE-1F1F8 { background-position: -240px -20px; }
|
||||
.emoji-1F1EE-1F1F9 { background-position: -240px -40px; }
|
||||
.emoji-1F1EF-1F1EA { background-position: -240px -60px; }
|
||||
@@ -154,7 +154,7 @@
|
||||
.emoji-1F1F0-1F1ED { background-position: -240px -180px; }
|
||||
.emoji-1F1F0-1F1EE { background-position: -240px -200px; }
|
||||
.emoji-1F1F0-1F1F2 { background-position: -240px -220px; }
|
||||
.emoji-1F1F0-1F1F3 { background-position: 0px -240px; }
|
||||
.emoji-1F1F0-1F1F3 { background-position: 0 -240px; }
|
||||
.emoji-1F1F0-1F1F5 { background-position: -20px -240px; }
|
||||
.emoji-1F1F0-1F1F7 { background-position: -40px -240px; }
|
||||
.emoji-1F1F0-1F1FC { background-position: -60px -240px; }
|
||||
@@ -167,7 +167,7 @@
|
||||
.emoji-1F1F1-1F1F0 { background-position: -200px -240px; }
|
||||
.emoji-1F1F1-1F1F7 { background-position: -220px -240px; }
|
||||
.emoji-1F1F1-1F1F8 { background-position: -240px -240px; }
|
||||
.emoji-1F1F1-1F1F9 { background-position: -260px 0px; }
|
||||
.emoji-1F1F1-1F1F9 { background-position: -260px 0; }
|
||||
.emoji-1F1F1-1F1FA { background-position: -260px -20px; }
|
||||
.emoji-1F1F1-1F1FB { background-position: -260px -40px; }
|
||||
.emoji-1F1F1-1F1FE { background-position: -260px -60px; }
|
||||
@@ -180,7 +180,7 @@
|
||||
.emoji-1F1F2-1F1ED { background-position: -260px -200px; }
|
||||
.emoji-1F1F2-1F1F0 { background-position: -260px -220px; }
|
||||
.emoji-1F1F2-1F1F1 { background-position: -260px -240px; }
|
||||
.emoji-1F1F2-1F1F2 { background-position: 0px -260px; }
|
||||
.emoji-1F1F2-1F1F2 { background-position: 0 -260px; }
|
||||
.emoji-1F1F2-1F1F3 { background-position: -20px -260px; }
|
||||
.emoji-1F1F2-1F1F4 { background-position: -40px -260px; }
|
||||
.emoji-1F1F2-1F1F5 { background-position: -60px -260px; }
|
||||
@@ -194,7 +194,7 @@
|
||||
.emoji-1F1F2-1F1FD { background-position: -220px -260px; }
|
||||
.emoji-1F1F2-1F1FE { background-position: -240px -260px; }
|
||||
.emoji-1F1F2-1F1FF { background-position: -260px -260px; }
|
||||
.emoji-1F1F3-1F1E6 { background-position: -280px 0px; }
|
||||
.emoji-1F1F3-1F1E6 { background-position: -280px 0; }
|
||||
.emoji-1F1F3-1F1E8 { background-position: -280px -20px; }
|
||||
.emoji-1F1F3-1F1EA { background-position: -280px -40px; }
|
||||
.emoji-1F1F3-1F1EB { background-position: -280px -60px; }
|
||||
@@ -208,7 +208,7 @@
|
||||
.emoji-1F1F3-1F1FF { background-position: -280px -220px; }
|
||||
.emoji-1F1F4-1F1F2 { background-position: -280px -240px; }
|
||||
.emoji-1F1F5-1F1E6 { background-position: -280px -260px; }
|
||||
.emoji-1F1F5-1F1EA { background-position: 0px -280px; }
|
||||
.emoji-1F1F5-1F1EA { background-position: 0 -280px; }
|
||||
.emoji-1F1F5-1F1EB { background-position: -20px -280px; }
|
||||
.emoji-1F1F5-1F1EC { background-position: -40px -280px; }
|
||||
.emoji-1F1F5-1F1ED { background-position: -60px -280px; }
|
||||
@@ -223,7 +223,7 @@
|
||||
.emoji-1F1F5-1F1FE { background-position: -240px -280px; }
|
||||
.emoji-1F1F6-1F1E6 { background-position: -260px -280px; }
|
||||
.emoji-1F1F7-1F1EA { background-position: -280px -280px; }
|
||||
.emoji-1F1F7-1F1F4 { background-position: -300px 0px; }
|
||||
.emoji-1F1F7-1F1F4 { background-position: -300px 0; }
|
||||
.emoji-1F1F7-1F1F8 { background-position: -300px -20px; }
|
||||
.emoji-1F1F7-1F1FA { background-position: -300px -40px; }
|
||||
.emoji-1F1F7-1F1FC { background-position: -300px -60px; }
|
||||
@@ -238,7 +238,7 @@
|
||||
.emoji-1F1F8-1F1EF { background-position: -300px -240px; }
|
||||
.emoji-1F1F8-1F1F0 { background-position: -300px -260px; }
|
||||
.emoji-1F1F8-1F1F1 { background-position: -300px -280px; }
|
||||
.emoji-1F1F8-1F1F2 { background-position: 0px -300px; }
|
||||
.emoji-1F1F8-1F1F2 { background-position: 0 -300px; }
|
||||
.emoji-1F1F8-1F1F3 { background-position: -20px -300px; }
|
||||
.emoji-1F1F8-1F1F4 { background-position: -40px -300px; }
|
||||
.emoji-1F1F8-1F1F7 { background-position: -60px -300px; }
|
||||
@@ -254,7 +254,7 @@
|
||||
.emoji-1F1F9-1F1EB { background-position: -260px -300px; }
|
||||
.emoji-1F1F9-1F1EC { background-position: -280px -300px; }
|
||||
.emoji-1F1F9-1F1ED { background-position: -300px -300px; }
|
||||
.emoji-1F1F9-1F1EF { background-position: -320px 0px; }
|
||||
.emoji-1F1F9-1F1EF { background-position: -320px 0; }
|
||||
.emoji-1F1F9-1F1F0 { background-position: -320px -20px; }
|
||||
.emoji-1F1F9-1F1F1 { background-position: -320px -40px; }
|
||||
.emoji-1F1F9-1F1F2 { background-position: -320px -60px; }
|
||||
@@ -270,7 +270,7 @@
|
||||
.emoji-1F1FA-1F1F2 { background-position: -320px -260px; }
|
||||
.emoji-1F1FA-1F1F8 { background-position: -320px -280px; }
|
||||
.emoji-1F1FA-1F1FE { background-position: -320px -300px; }
|
||||
.emoji-1F1FA-1F1FF { background-position: 0px -320px; }
|
||||
.emoji-1F1FA-1F1FF { background-position: 0 -320px; }
|
||||
.emoji-1F1FB-1F1E6 { background-position: -20px -320px; }
|
||||
.emoji-1F1FB-1F1E8 { background-position: -40px -320px; }
|
||||
.emoji-1F1FB-1F1EA { background-position: -60px -320px; }
|
||||
@@ -287,7 +287,7 @@
|
||||
.emoji-1F1FF-1F1F2 { background-position: -280px -320px; }
|
||||
.emoji-1F1FF-1F1FC { background-position: -300px -320px; }
|
||||
.emoji-1F201 { background-position: -320px -320px; }
|
||||
.emoji-1F202 { background-position: -340px 0px; }
|
||||
.emoji-1F202 { background-position: -340px 0; }
|
||||
.emoji-1F21A { background-position: -340px -20px; }
|
||||
.emoji-1F22F { background-position: -340px -40px; }
|
||||
.emoji-1F232 { background-position: -340px -60px; }
|
||||
@@ -304,7 +304,7 @@
|
||||
.emoji-1F300 { background-position: -340px -280px; }
|
||||
.emoji-1F301 { background-position: -340px -300px; }
|
||||
.emoji-1F302 { background-position: -340px -320px; }
|
||||
.emoji-1F303 { background-position: 0px -340px; }
|
||||
.emoji-1F303 { background-position: 0 -340px; }
|
||||
.emoji-1F304 { background-position: -20px -340px; }
|
||||
.emoji-1F305 { background-position: -40px -340px; }
|
||||
.emoji-1F306 { background-position: -60px -340px; }
|
||||
@@ -322,7 +322,7 @@
|
||||
.emoji-1F312 { background-position: -300px -340px; }
|
||||
.emoji-1F313 { background-position: -320px -340px; }
|
||||
.emoji-1F314 { background-position: -340px -340px; }
|
||||
.emoji-1F315 { background-position: -360px 0px; }
|
||||
.emoji-1F315 { background-position: -360px 0; }
|
||||
.emoji-1F316 { background-position: -360px -20px; }
|
||||
.emoji-1F317 { background-position: -360px -40px; }
|
||||
.emoji-1F318 { background-position: -360px -60px; }
|
||||
@@ -340,7 +340,7 @@
|
||||
.emoji-1F326 { background-position: -360px -300px; }
|
||||
.emoji-1F327 { background-position: -360px -320px; }
|
||||
.emoji-1F328 { background-position: -360px -340px; }
|
||||
.emoji-1F329 { background-position: 0px -360px; }
|
||||
.emoji-1F329 { background-position: 0 -360px; }
|
||||
.emoji-1F32A { background-position: -20px -360px; }
|
||||
.emoji-1F32B { background-position: -40px -360px; }
|
||||
.emoji-1F32C { background-position: -60px -360px; }
|
||||
@@ -359,7 +359,7 @@
|
||||
.emoji-1F339 { background-position: -320px -360px; }
|
||||
.emoji-1F33A { background-position: -340px -360px; }
|
||||
.emoji-1F33B { background-position: -360px -360px; }
|
||||
.emoji-1F33C { background-position: -380px 0px; }
|
||||
.emoji-1F33C { background-position: -380px 0; }
|
||||
.emoji-1F33D { background-position: -380px -20px; }
|
||||
.emoji-1F33E { background-position: -380px -40px; }
|
||||
.emoji-1F33F { background-position: -380px -60px; }
|
||||
@@ -378,7 +378,7 @@
|
||||
.emoji-1F34C { background-position: -380px -320px; }
|
||||
.emoji-1F34D { background-position: -380px -340px; }
|
||||
.emoji-1F34E { background-position: -380px -360px; }
|
||||
.emoji-1F34F { background-position: 0px -380px; }
|
||||
.emoji-1F34F { background-position: 0 -380px; }
|
||||
.emoji-1F350 { background-position: -20px -380px; }
|
||||
.emoji-1F351 { background-position: -40px -380px; }
|
||||
.emoji-1F352 { background-position: -60px -380px; }
|
||||
@@ -398,7 +398,7 @@
|
||||
.emoji-1F360 { background-position: -340px -380px; }
|
||||
.emoji-1F361 { background-position: -360px -380px; }
|
||||
.emoji-1F362 { background-position: -380px -380px; }
|
||||
.emoji-1F363 { background-position: -400px 0px; }
|
||||
.emoji-1F363 { background-position: -400px 0; }
|
||||
.emoji-1F364 { background-position: -400px -20px; }
|
||||
.emoji-1F365 { background-position: -400px -40px; }
|
||||
.emoji-1F366 { background-position: -400px -60px; }
|
||||
@@ -418,7 +418,7 @@
|
||||
.emoji-1F374 { background-position: -400px -340px; }
|
||||
.emoji-1F375 { background-position: -400px -360px; }
|
||||
.emoji-1F376 { background-position: -400px -380px; }
|
||||
.emoji-1F377 { background-position: 0px -400px; }
|
||||
.emoji-1F377 { background-position: 0 -400px; }
|
||||
.emoji-1F378 { background-position: -20px -400px; }
|
||||
.emoji-1F379 { background-position: -40px -400px; }
|
||||
.emoji-1F37A { background-position: -60px -400px; }
|
||||
@@ -439,7 +439,7 @@
|
||||
.emoji-1F385-1F3FE { background-position: -360px -400px; }
|
||||
.emoji-1F385-1F3FF { background-position: -380px -400px; }
|
||||
.emoji-1F386 { background-position: -400px -400px; }
|
||||
.emoji-1F387 { background-position: -420px 0px; }
|
||||
.emoji-1F387 { background-position: -420px 0; }
|
||||
.emoji-1F388 { background-position: -420px -20px; }
|
||||
.emoji-1F389 { background-position: -420px -40px; }
|
||||
.emoji-1F38A { background-position: -420px -60px; }
|
||||
@@ -460,7 +460,7 @@
|
||||
.emoji-1F399 { background-position: -420px -360px; }
|
||||
.emoji-1F39A { background-position: -420px -380px; }
|
||||
.emoji-1F39B { background-position: -420px -400px; }
|
||||
.emoji-1F39C { background-position: 0px -420px; }
|
||||
.emoji-1F39C { background-position: 0 -420px; }
|
||||
.emoji-1F39D { background-position: -20px -420px; }
|
||||
.emoji-1F39E { background-position: -40px -420px; }
|
||||
.emoji-1F39F { background-position: -60px -420px; }
|
||||
@@ -482,7 +482,7 @@
|
||||
.emoji-1F3AF { background-position: -380px -420px; }
|
||||
.emoji-1F3B0 { background-position: -400px -420px; }
|
||||
.emoji-1F3B1 { background-position: -420px -420px; }
|
||||
.emoji-1F3B2 { background-position: -440px 0px; }
|
||||
.emoji-1F3B2 { background-position: -440px 0; }
|
||||
.emoji-1F3B3 { background-position: -440px -20px; }
|
||||
.emoji-1F3B4 { background-position: -440px -40px; }
|
||||
.emoji-1F3B5 { background-position: -440px -60px; }
|
||||
@@ -504,7 +504,7 @@
|
||||
.emoji-1F3C3-1F3FC { background-position: -440px -380px; }
|
||||
.emoji-1F3C3-1F3FD { background-position: -440px -400px; }
|
||||
.emoji-1F3C3-1F3FE { background-position: -440px -420px; }
|
||||
.emoji-1F3C3-1F3FF { background-position: 0px -440px; }
|
||||
.emoji-1F3C3-1F3FF { background-position: 0 -440px; }
|
||||
.emoji-1F3C4 { background-position: -20px -440px; }
|
||||
.emoji-1F3C4-1F3FB { background-position: -40px -440px; }
|
||||
.emoji-1F3C4-1F3FC { background-position: -60px -440px; }
|
||||
@@ -527,7 +527,7 @@
|
||||
.emoji-1F3CA-1F3FD { background-position: -400px -440px; }
|
||||
.emoji-1F3CA-1F3FE { background-position: -420px -440px; }
|
||||
.emoji-1F3CA-1F3FF { background-position: -440px -440px; }
|
||||
.emoji-1F3CB { background-position: -460px 0px; }
|
||||
.emoji-1F3CB { background-position: -460px 0; }
|
||||
.emoji-1F3CB-1F3FB { background-position: -460px -20px; }
|
||||
.emoji-1F3CB-1F3FC { background-position: -460px -40px; }
|
||||
.emoji-1F3CB-1F3FD { background-position: -460px -60px; }
|
||||
@@ -550,7 +550,7 @@
|
||||
.emoji-1F3DA { background-position: -460px -400px; }
|
||||
.emoji-1F3DB { background-position: -460px -420px; }
|
||||
.emoji-1F3DC { background-position: -460px -440px; }
|
||||
.emoji-1F3DD { background-position: 0px -460px; }
|
||||
.emoji-1F3DD { background-position: 0 -460px; }
|
||||
.emoji-1F3DE { background-position: -20px -460px; }
|
||||
.emoji-1F3DF { background-position: -40px -460px; }
|
||||
.emoji-1F3E0 { background-position: -60px -460px; }
|
||||
@@ -574,7 +574,7 @@
|
||||
.emoji-1F3F2 { background-position: -420px -460px; }
|
||||
.emoji-1F3F3 { background-position: -440px -460px; }
|
||||
.emoji-1F3F4 { background-position: -460px -460px; }
|
||||
.emoji-1F3F5 { background-position: -480px 0px; }
|
||||
.emoji-1F3F5 { background-position: -480px 0; }
|
||||
.emoji-1F3F6 { background-position: -480px -20px; }
|
||||
.emoji-1F3F7 { background-position: -480px -40px; }
|
||||
.emoji-1F3F8 { background-position: -480px -60px; }
|
||||
@@ -598,7 +598,7 @@
|
||||
.emoji-1F40A { background-position: -480px -420px; }
|
||||
.emoji-1F40B { background-position: -480px -440px; }
|
||||
.emoji-1F40C { background-position: -480px -460px; }
|
||||
.emoji-1F40D { background-position: 0px -480px; }
|
||||
.emoji-1F40D { background-position: 0 -480px; }
|
||||
.emoji-1F40E { background-position: -20px -480px; }
|
||||
.emoji-1F40F { background-position: -40px -480px; }
|
||||
.emoji-1F410 { background-position: -60px -480px; }
|
||||
@@ -623,7 +623,7 @@
|
||||
.emoji-1F423 { background-position: -440px -480px; }
|
||||
.emoji-1F424 { background-position: -460px -480px; }
|
||||
.emoji-1F425 { background-position: -480px -480px; }
|
||||
.emoji-1F426 { background-position: -500px 0px; }
|
||||
.emoji-1F426 { background-position: -500px 0; }
|
||||
.emoji-1F427 { background-position: -500px -20px; }
|
||||
.emoji-1F428 { background-position: -500px -40px; }
|
||||
.emoji-1F429 { background-position: -500px -60px; }
|
||||
@@ -648,7 +648,7 @@
|
||||
.emoji-1F43C { background-position: -500px -440px; }
|
||||
.emoji-1F43D { background-position: -500px -460px; }
|
||||
.emoji-1F43E { background-position: -500px -480px; }
|
||||
.emoji-1F43F { background-position: 0px -500px; }
|
||||
.emoji-1F43F { background-position: 0 -500px; }
|
||||
.emoji-1F440 { background-position: -20px -500px; }
|
||||
.emoji-1F441 { background-position: -40px -500px; }
|
||||
.emoji-1F441-1F5E8 { background-position: -60px -500px; }
|
||||
@@ -674,7 +674,7 @@
|
||||
.emoji-1F446-1F3FF { background-position: -460px -500px; }
|
||||
.emoji-1F447 { background-position: -480px -500px; }
|
||||
.emoji-1F447-1F3FB { background-position: -500px -500px; }
|
||||
.emoji-1F447-1F3FC { background-position: -520px 0px; }
|
||||
.emoji-1F447-1F3FC { background-position: -520px 0; }
|
||||
.emoji-1F447-1F3FD { background-position: -520px -20px; }
|
||||
.emoji-1F447-1F3FE { background-position: -520px -40px; }
|
||||
.emoji-1F447-1F3FF { background-position: -520px -60px; }
|
||||
@@ -700,7 +700,7 @@
|
||||
.emoji-1F44B-1F3FB { background-position: -520px -460px; }
|
||||
.emoji-1F44B-1F3FC { background-position: -520px -480px; }
|
||||
.emoji-1F44B-1F3FD { background-position: -520px -500px; }
|
||||
.emoji-1F44B-1F3FE { background-position: 0px -520px; }
|
||||
.emoji-1F44B-1F3FE { background-position: 0 -520px; }
|
||||
.emoji-1F44B-1F3FF { background-position: -20px -520px; }
|
||||
.emoji-1F44C { background-position: -40px -520px; }
|
||||
.emoji-1F44C-1F3FB { background-position: -60px -520px; }
|
||||
@@ -727,7 +727,7 @@
|
||||
.emoji-1F44F-1F3FE { background-position: -480px -520px; }
|
||||
.emoji-1F44F-1F3FF { background-position: -500px -520px; }
|
||||
.emoji-1F450 { background-position: -520px -520px; }
|
||||
.emoji-1F450-1F3FB { background-position: -540px 0px; }
|
||||
.emoji-1F450-1F3FB { background-position: -540px 0; }
|
||||
.emoji-1F450-1F3FC { background-position: -540px -20px; }
|
||||
.emoji-1F450-1F3FD { background-position: -540px -40px; }
|
||||
.emoji-1F450-1F3FE { background-position: -540px -60px; }
|
||||
@@ -754,7 +754,7 @@
|
||||
.emoji-1F464 { background-position: -540px -480px; }
|
||||
.emoji-1F465 { background-position: -540px -500px; }
|
||||
.emoji-1F466 { background-position: -540px -520px; }
|
||||
.emoji-1F466-1F3FB { background-position: 0px -540px; }
|
||||
.emoji-1F466-1F3FB { background-position: 0 -540px; }
|
||||
.emoji-1F466-1F3FC { background-position: -20px -540px; }
|
||||
.emoji-1F466-1F3FD { background-position: -40px -540px; }
|
||||
.emoji-1F466-1F3FE { background-position: -60px -540px; }
|
||||
@@ -782,7 +782,7 @@
|
||||
.emoji-1F468-1F469-1F467-1F467 { background-position: -500px -540px; }
|
||||
.emoji-1F468-2764-1F468 { background-position: -520px -540px; }
|
||||
.emoji-1F468-2764-1F48B-1F468 { background-position: -540px -540px; }
|
||||
.emoji-1F469 { background-position: -560px 0px; }
|
||||
.emoji-1F469 { background-position: -560px 0; }
|
||||
.emoji-1F469-1F3FB { background-position: -560px -20px; }
|
||||
.emoji-1F469-1F3FC { background-position: -560px -40px; }
|
||||
.emoji-1F469-1F3FD { background-position: -560px -60px; }
|
||||
@@ -810,7 +810,7 @@
|
||||
.emoji-1F470-1F3FB { background-position: -560px -500px; }
|
||||
.emoji-1F470-1F3FC { background-position: -560px -520px; }
|
||||
.emoji-1F470-1F3FD { background-position: -560px -540px; }
|
||||
.emoji-1F470-1F3FE { background-position: 0px -560px; }
|
||||
.emoji-1F470-1F3FE { background-position: 0 -560px; }
|
||||
.emoji-1F470-1F3FF { background-position: -20px -560px; }
|
||||
.emoji-1F471 { background-position: -40px -560px; }
|
||||
.emoji-1F471-1F3FB { background-position: -60px -560px; }
|
||||
@@ -839,7 +839,7 @@
|
||||
.emoji-1F475 { background-position: -520px -560px; }
|
||||
.emoji-1F475-1F3FB { background-position: -540px -560px; }
|
||||
.emoji-1F475-1F3FC { background-position: -560px -560px; }
|
||||
.emoji-1F475-1F3FD { background-position: -580px 0px; }
|
||||
.emoji-1F475-1F3FD { background-position: -580px 0; }
|
||||
.emoji-1F475-1F3FE { background-position: -580px -20px; }
|
||||
.emoji-1F475-1F3FF { background-position: -580px -40px; }
|
||||
.emoji-1F476 { background-position: -580px -60px; }
|
||||
@@ -868,7 +868,7 @@
|
||||
.emoji-1F47C-1F3FC { background-position: -580px -520px; }
|
||||
.emoji-1F47C-1F3FD { background-position: -580px -540px; }
|
||||
.emoji-1F47C-1F3FE { background-position: -580px -560px; }
|
||||
.emoji-1F47C-1F3FF { background-position: 0px -580px; }
|
||||
.emoji-1F47C-1F3FF { background-position: 0 -580px; }
|
||||
.emoji-1F47D { background-position: -20px -580px; }
|
||||
.emoji-1F47E { background-position: -40px -580px; }
|
||||
.emoji-1F47F { background-position: -60px -580px; }
|
||||
@@ -898,7 +898,7 @@
|
||||
.emoji-1F485-1F3FD { background-position: -540px -580px; }
|
||||
.emoji-1F485-1F3FE { background-position: -560px -580px; }
|
||||
.emoji-1F485-1F3FF { background-position: -580px -580px; }
|
||||
.emoji-1F486 { background-position: -600px 0px; }
|
||||
.emoji-1F486 { background-position: -600px 0; }
|
||||
.emoji-1F486-1F3FB { background-position: -600px -20px; }
|
||||
.emoji-1F486-1F3FC { background-position: -600px -40px; }
|
||||
.emoji-1F486-1F3FD { background-position: -600px -60px; }
|
||||
@@ -928,7 +928,7 @@
|
||||
.emoji-1F497 { background-position: -600px -540px; }
|
||||
.emoji-1F498 { background-position: -600px -560px; }
|
||||
.emoji-1F499 { background-position: -600px -580px; }
|
||||
.emoji-1F49A { background-position: 0px -600px; }
|
||||
.emoji-1F49A { background-position: 0 -600px; }
|
||||
.emoji-1F49B { background-position: -20px -600px; }
|
||||
.emoji-1F49C { background-position: -40px -600px; }
|
||||
.emoji-1F49D { background-position: -60px -600px; }
|
||||
@@ -959,7 +959,7 @@
|
||||
.emoji-1F4B1 { background-position: -560px -600px; }
|
||||
.emoji-1F4B2 { background-position: -580px -600px; }
|
||||
.emoji-1F4B3 { background-position: -600px -600px; }
|
||||
.emoji-1F4B4 { background-position: -620px 0px; }
|
||||
.emoji-1F4B4 { background-position: -620px 0; }
|
||||
.emoji-1F4B5 { background-position: -620px -20px; }
|
||||
.emoji-1F4B6 { background-position: -620px -40px; }
|
||||
.emoji-1F4B7 { background-position: -620px -60px; }
|
||||
@@ -990,7 +990,7 @@
|
||||
.emoji-1F4D0 { background-position: -620px -560px; }
|
||||
.emoji-1F4D1 { background-position: -620px -580px; }
|
||||
.emoji-1F4D2 { background-position: -620px -600px; }
|
||||
.emoji-1F4D3 { background-position: 0px -620px; }
|
||||
.emoji-1F4D3 { background-position: 0 -620px; }
|
||||
.emoji-1F4D4 { background-position: -20px -620px; }
|
||||
.emoji-1F4D5 { background-position: -40px -620px; }
|
||||
.emoji-1F4D6 { background-position: -60px -620px; }
|
||||
@@ -1022,7 +1022,7 @@
|
||||
.emoji-1F4F0 { background-position: -580px -620px; }
|
||||
.emoji-1F4F1 { background-position: -600px -620px; }
|
||||
.emoji-1F4F2 { background-position: -620px -620px; }
|
||||
.emoji-1F4F3 { background-position: -640px 0px; }
|
||||
.emoji-1F4F3 { background-position: -640px 0; }
|
||||
.emoji-1F4F4 { background-position: -640px -20px; }
|
||||
.emoji-1F4F5 { background-position: -640px -40px; }
|
||||
.emoji-1F4F6 { background-position: -640px -60px; }
|
||||
@@ -1054,7 +1054,7 @@
|
||||
.emoji-1F510 { background-position: -640px -580px; }
|
||||
.emoji-1F511 { background-position: -640px -600px; }
|
||||
.emoji-1F512 { background-position: -640px -620px; }
|
||||
.emoji-1F513 { background-position: 0px -640px; }
|
||||
.emoji-1F513 { background-position: 0 -640px; }
|
||||
.emoji-1F514 { background-position: -20px -640px; }
|
||||
.emoji-1F515 { background-position: -40px -640px; }
|
||||
.emoji-1F516 { background-position: -60px -640px; }
|
||||
@@ -1087,7 +1087,7 @@
|
||||
.emoji-1F531 { background-position: -600px -640px; }
|
||||
.emoji-1F532 { background-position: -620px -640px; }
|
||||
.emoji-1F533 { background-position: -640px -640px; }
|
||||
.emoji-1F534 { background-position: -660px 0px; }
|
||||
.emoji-1F534 { background-position: -660px 0; }
|
||||
.emoji-1F535 { background-position: -660px -20px; }
|
||||
.emoji-1F536 { background-position: -660px -40px; }
|
||||
.emoji-1F537 { background-position: -660px -60px; }
|
||||
@@ -1120,7 +1120,7 @@
|
||||
.emoji-1F55B { background-position: -660px -600px; }
|
||||
.emoji-1F55C { background-position: -660px -620px; }
|
||||
.emoji-1F55D { background-position: -660px -640px; }
|
||||
.emoji-1F55E { background-position: 0px -660px; }
|
||||
.emoji-1F55E { background-position: 0 -660px; }
|
||||
.emoji-1F55F { background-position: -20px -660px; }
|
||||
.emoji-1F560 { background-position: -40px -660px; }
|
||||
.emoji-1F561 { background-position: -60px -660px; }
|
||||
@@ -1154,7 +1154,7 @@
|
||||
.emoji-1F578 { background-position: -620px -660px; }
|
||||
.emoji-1F579 { background-position: -640px -660px; }
|
||||
.emoji-1F57B { background-position: -660px -660px; }
|
||||
.emoji-1F57E { background-position: -680px 0px; }
|
||||
.emoji-1F57E { background-position: -680px 0; }
|
||||
.emoji-1F57F { background-position: -680px -20px; }
|
||||
.emoji-1F581 { background-position: -680px -40px; }
|
||||
.emoji-1F582 { background-position: -680px -60px; }
|
||||
@@ -1188,7 +1188,7 @@
|
||||
.emoji-1F595-1F3FF { background-position: -680px -620px; }
|
||||
.emoji-1F596 { background-position: -680px -640px; }
|
||||
.emoji-1F596-1F3FB { background-position: -680px -660px; }
|
||||
.emoji-1F596-1F3FC { background-position: 0px -680px; }
|
||||
.emoji-1F596-1F3FC { background-position: 0 -680px; }
|
||||
.emoji-1F596-1F3FD { background-position: -20px -680px; }
|
||||
.emoji-1F596-1F3FE { background-position: -40px -680px; }
|
||||
.emoji-1F596-1F3FF { background-position: -60px -680px; }
|
||||
@@ -1223,7 +1223,7 @@
|
||||
.emoji-1F5C4 { background-position: -640px -680px; }
|
||||
.emoji-1F5C6 { background-position: -660px -680px; }
|
||||
.emoji-1F5C7 { background-position: -680px -680px; }
|
||||
.emoji-1F5C9 { background-position: -700px 0px; }
|
||||
.emoji-1F5C9 { background-position: -700px 0; }
|
||||
.emoji-1F5CA { background-position: -700px -20px; }
|
||||
.emoji-1F5CE { background-position: -700px -40px; }
|
||||
.emoji-1F5CF { background-position: -700px -60px; }
|
||||
@@ -1258,7 +1258,7 @@
|
||||
.emoji-1F5F8 { background-position: -700px -640px; }
|
||||
.emoji-1F5F9 { background-position: -700px -660px; }
|
||||
.emoji-1F5FA { background-position: -700px -680px; }
|
||||
.emoji-1F5FB { background-position: 0px -700px; }
|
||||
.emoji-1F5FB { background-position: 0 -700px; }
|
||||
.emoji-1F5FC { background-position: -20px -700px; }
|
||||
.emoji-1F5FD { background-position: -40px -700px; }
|
||||
.emoji-1F5FE { background-position: -60px -700px; }
|
||||
@@ -1294,7 +1294,7 @@
|
||||
.emoji-1F61C { background-position: -660px -700px; }
|
||||
.emoji-1F61D { background-position: -680px -700px; }
|
||||
.emoji-1F61E { background-position: -700px -700px; }
|
||||
.emoji-1F61F { background-position: -720px 0px; }
|
||||
.emoji-1F61F { background-position: -720px 0; }
|
||||
.emoji-1F620 { background-position: -720px -20px; }
|
||||
.emoji-1F621 { background-position: -720px -40px; }
|
||||
.emoji-1F622 { background-position: -720px -60px; }
|
||||
@@ -1330,7 +1330,7 @@
|
||||
.emoji-1F640 { background-position: -720px -660px; }
|
||||
.emoji-1F641 { background-position: -720px -680px; }
|
||||
.emoji-1F642 { background-position: -720px -700px; }
|
||||
.emoji-1F643 { background-position: 0px -720px; }
|
||||
.emoji-1F643 { background-position: 0 -720px; }
|
||||
.emoji-1F644 { background-position: -20px -720px; }
|
||||
.emoji-1F645 { background-position: -40px -720px; }
|
||||
.emoji-1F645-1F3FB { background-position: -60px -720px; }
|
||||
@@ -1367,7 +1367,7 @@
|
||||
.emoji-1F64C-1F3FF { background-position: -680px -720px; }
|
||||
.emoji-1F64D { background-position: -700px -720px; }
|
||||
.emoji-1F64D-1F3FB { background-position: -720px -720px; }
|
||||
.emoji-1F64D-1F3FC { background-position: -740px 0px; }
|
||||
.emoji-1F64D-1F3FC { background-position: -740px 0; }
|
||||
.emoji-1F64D-1F3FD { background-position: -740px -20px; }
|
||||
.emoji-1F64D-1F3FE { background-position: -740px -40px; }
|
||||
.emoji-1F64D-1F3FF { background-position: -740px -60px; }
|
||||
@@ -1404,7 +1404,7 @@
|
||||
.emoji-1F692 { background-position: -740px -680px; }
|
||||
.emoji-1F693 { background-position: -740px -700px; }
|
||||
.emoji-1F694 { background-position: -740px -720px; }
|
||||
.emoji-1F695 { background-position: 0px -740px; }
|
||||
.emoji-1F695 { background-position: 0 -740px; }
|
||||
.emoji-1F696 { background-position: -20px -740px; }
|
||||
.emoji-1F697 { background-position: -40px -740px; }
|
||||
.emoji-1F698 { background-position: -60px -740px; }
|
||||
@@ -1442,7 +1442,7 @@
|
||||
.emoji-1F6B3 { background-position: -700px -740px; }
|
||||
.emoji-1F6B4 { background-position: -720px -740px; }
|
||||
.emoji-1F6B4-1F3FB { background-position: -740px -740px; }
|
||||
.emoji-1F6B4-1F3FC { background-position: -760px 0px; }
|
||||
.emoji-1F6B4-1F3FC { background-position: -760px 0; }
|
||||
.emoji-1F6B4-1F3FD { background-position: -760px -20px; }
|
||||
.emoji-1F6B4-1F3FE { background-position: -760px -40px; }
|
||||
.emoji-1F6B4-1F3FF { background-position: -760px -60px; }
|
||||
@@ -1480,7 +1480,7 @@
|
||||
.emoji-1F6C5 { background-position: -760px -700px; }
|
||||
.emoji-1F6C6 { background-position: -760px -720px; }
|
||||
.emoji-1F6C7 { background-position: -760px -740px; }
|
||||
.emoji-1F6C8 { background-position: 0px -760px; }
|
||||
.emoji-1F6C8 { background-position: 0 -760px; }
|
||||
.emoji-1F6C9 { background-position: -20px -760px; }
|
||||
.emoji-1F6CA { background-position: -40px -760px; }
|
||||
.emoji-1F6CB { background-position: -60px -760px; }
|
||||
@@ -1519,7 +1519,7 @@
|
||||
.emoji-1F918-1F3FC { background-position: -720px -760px; }
|
||||
.emoji-1F918-1F3FD { background-position: -740px -760px; }
|
||||
.emoji-1F918-1F3FE { background-position: -760px -760px; }
|
||||
.emoji-1F918-1F3FF { background-position: -780px 0px; }
|
||||
.emoji-1F918-1F3FF { background-position: -780px 0; }
|
||||
.emoji-1F980 { background-position: -780px -20px; }
|
||||
.emoji-1F981 { background-position: -780px -40px; }
|
||||
.emoji-1F982 { background-position: -780px -60px; }
|
||||
@@ -1558,7 +1558,7 @@
|
||||
.emoji-24C2 { background-position: -780px -720px; }
|
||||
.emoji-25AA { background-position: -780px -740px; }
|
||||
.emoji-25AB { background-position: -780px -760px; }
|
||||
.emoji-25B6 { background-position: 0px -780px; }
|
||||
.emoji-25B6 { background-position: 0 -780px; }
|
||||
.emoji-25C0 { background-position: -20px -780px; }
|
||||
.emoji-25FB { background-position: -40px -780px; }
|
||||
.emoji-25FC { background-position: -60px -780px; }
|
||||
@@ -1598,7 +1598,7 @@
|
||||
.emoji-264D { background-position: -740px -780px; }
|
||||
.emoji-264E { background-position: -760px -780px; }
|
||||
.emoji-264F { background-position: -780px -780px; }
|
||||
.emoji-2650 { background-position: -800px 0px; }
|
||||
.emoji-2650 { background-position: -800px 0; }
|
||||
.emoji-2651 { background-position: -800px -20px; }
|
||||
.emoji-2652 { background-position: -800px -40px; }
|
||||
.emoji-2653 { background-position: -800px -60px; }
|
||||
@@ -1638,7 +1638,7 @@
|
||||
.emoji-26F0 { background-position: -800px -740px; }
|
||||
.emoji-26F1 { background-position: -800px -760px; }
|
||||
.emoji-26F2 { background-position: -800px -780px; }
|
||||
.emoji-26F3 { background-position: 0px -800px; }
|
||||
.emoji-26F3 { background-position: 0 -800px; }
|
||||
.emoji-26F4 { background-position: -20px -800px; }
|
||||
.emoji-26F5 { background-position: -40px -800px; }
|
||||
.emoji-26F7 { background-position: -60px -800px; }
|
||||
@@ -1679,7 +1679,7 @@
|
||||
.emoji-270D-1F3FD { background-position: -760px -800px; }
|
||||
.emoji-270D-1F3FE { background-position: -780px -800px; }
|
||||
.emoji-270D-1F3FF { background-position: -800px -800px; }
|
||||
.emoji-270F { background-position: -820px 0px; }
|
||||
.emoji-270F { background-position: -820px 0; }
|
||||
.emoji-2712 { background-position: -820px -20px; }
|
||||
.emoji-2714 { background-position: -820px -40px; }
|
||||
.emoji-2716 { background-position: -820px -60px; }
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
font-size: $gl-font-size;
|
||||
padding: $gl-padding-top 0 $gl-padding-top ($gl-avatar-size + $gl-padding-top);
|
||||
border-bottom: 1px solid $table-border-color;
|
||||
color: #7f8fa4;
|
||||
color: $list-text-color;
|
||||
|
||||
&.event-inline {
|
||||
.avatar {
|
||||
@@ -31,9 +31,10 @@
|
||||
.event-title {
|
||||
@include str-truncated(calc(100% - 174px));
|
||||
font-weight: 600;
|
||||
color: $list-title-color;
|
||||
|
||||
.author_name {
|
||||
color: #333;
|
||||
a {
|
||||
color: $list-title-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +64,7 @@
|
||||
|
||||
.note-image-attach {
|
||||
margin-top: 4px;
|
||||
margin-left: 0px;
|
||||
margin-left: 0;
|
||||
max-width: 200px;
|
||||
float: none;
|
||||
}
|
||||
@@ -83,10 +84,10 @@
|
||||
.event_icon {
|
||||
position: relative;
|
||||
float: right;
|
||||
border: 1px solid #EEE;
|
||||
border: 1px solid #eee;
|
||||
padding: 5px;
|
||||
@include border-radius(5px);
|
||||
background: #F9F9F9;
|
||||
background: #f9f9f9;
|
||||
margin-left: 10px;
|
||||
top: -6px;
|
||||
img {
|
||||
@@ -94,7 +95,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child { border:none }
|
||||
&:last-child { border: none }
|
||||
|
||||
.event_commits {
|
||||
li {
|
||||
@@ -138,7 +139,7 @@
|
||||
@include str-truncated(100%);
|
||||
padding: 5px 0;
|
||||
font-size: 13px;
|
||||
float:left;
|
||||
float: left;
|
||||
margin-right: -150px;
|
||||
padding-right: 150px;
|
||||
line-height: 20px;
|
||||
@@ -160,7 +161,7 @@
|
||||
|
||||
.event-body {
|
||||
margin: 0;
|
||||
border-left: 2px solid #DDD;
|
||||
border-left: 2px solid #ddd;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
font-size: 14px;
|
||||
padding: 5px;
|
||||
border-bottom: 1px solid $border-color;
|
||||
background: #EEE;
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.network-graph {
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
height: 500px;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
i.icon-gitorious {
|
||||
display: inline-block;
|
||||
background-position: 0px 0px;
|
||||
background-position: 0 0;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
@@ -1,34 +1,3 @@
|
||||
@media (max-width: $screen-sm-max) {
|
||||
.issuable-affix {
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-md-max) {
|
||||
.issuable-affix {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $screen-md-max) {
|
||||
.issuable-affix {
|
||||
&.affix-top {
|
||||
position: static;
|
||||
}
|
||||
|
||||
&.affix {
|
||||
position: fixed;
|
||||
top: 70px;
|
||||
margin-right: 35px;
|
||||
|
||||
&.no-affix {
|
||||
position: relative;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.issuable-details {
|
||||
section {
|
||||
.issuable-discussion {
|
||||
@@ -54,20 +23,25 @@
|
||||
padding: 6px 10px;
|
||||
}
|
||||
}
|
||||
|
||||
&.has-labels {
|
||||
margin-bottom: -5px;
|
||||
}
|
||||
}
|
||||
|
||||
.issuable-sidebar {
|
||||
.block {
|
||||
@include clearfix;
|
||||
padding: $gl-padding 0;
|
||||
padding: $gl-padding 0;
|
||||
border-bottom: 1px solid $border-gray-light;
|
||||
// This prevents the mess when resizing the sidebar
|
||||
// of elements repositioning themselves..
|
||||
width: $gutter_inner_width;
|
||||
// --
|
||||
|
||||
&:first-child {
|
||||
padding-top: 5px;
|
||||
&.issuable-sidebar-header {
|
||||
padding-top: 0;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
@@ -75,7 +49,6 @@
|
||||
}
|
||||
|
||||
span {
|
||||
margin-top: 7px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@@ -84,7 +57,7 @@
|
||||
}
|
||||
|
||||
.issuable-count {
|
||||
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
.gutter-toggle {
|
||||
@@ -99,19 +72,19 @@
|
||||
|
||||
.title {
|
||||
color: $gl-text-color;
|
||||
margin-bottom: 8px;
|
||||
margin-bottom: 10px;
|
||||
line-height: 1;
|
||||
|
||||
.avatar {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: normal;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.edit-link {
|
||||
color: $gl-gray;
|
||||
|
||||
&:hover {
|
||||
color: $md-link-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,11 +117,6 @@
|
||||
.btn-clipboard {
|
||||
color: $gl-gray;
|
||||
}
|
||||
|
||||
.participants .avatar {
|
||||
margin-top: 6px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.right-sidebar {
|
||||
@@ -163,8 +131,12 @@
|
||||
&.right-sidebar-expanded {
|
||||
width: $gutter_width;
|
||||
|
||||
hr {
|
||||
display: none;
|
||||
.value {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sidebar-collapsed-icon {
|
||||
@@ -172,8 +144,23 @@
|
||||
}
|
||||
|
||||
.gutter-toggle {
|
||||
margin-top: 7px;
|
||||
border-left: 1px solid $border-gray-light;
|
||||
}
|
||||
|
||||
.assignee .avatar {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.username {
|
||||
display: block;
|
||||
margin-top: 4px;
|
||||
font-size: 13px;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.subscribe-button {
|
||||
@@ -193,14 +180,6 @@
|
||||
width: $sidebar_collapsed_width;
|
||||
padding-top: 0;
|
||||
|
||||
hr {
|
||||
margin: 0;
|
||||
color: $gray-normal;
|
||||
border-color: $gray-normal;
|
||||
width: 62px;
|
||||
margin-left: -20px
|
||||
}
|
||||
|
||||
.block {
|
||||
width: $sidebar_collapsed_width - 1px;
|
||||
margin-left: -19px;
|
||||
@@ -209,12 +188,18 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.participants {
|
||||
border-bottom: 1px solid $border-gray-light;
|
||||
}
|
||||
|
||||
.hide-collapsed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.gutter-toggle {
|
||||
margin-left: -36px;
|
||||
width: 100%;
|
||||
margin-left: 0;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
.sidebar-collapsed-icon {
|
||||
@@ -222,13 +207,17 @@
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
color: #999999;
|
||||
color: #999;
|
||||
|
||||
span {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.btn-clipboard {
|
||||
border: none;
|
||||
|
||||
@@ -237,10 +226,15 @@
|
||||
}
|
||||
|
||||
i {
|
||||
color: #999999;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-collapsed-user {
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
@@ -251,6 +245,13 @@
|
||||
border: 1px solid $border-gray-dark;
|
||||
}
|
||||
}
|
||||
|
||||
a:not(.btn) {
|
||||
&:hover {
|
||||
color: $md-link-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-default.gutter-toggle {
|
||||
@@ -262,3 +263,37 @@
|
||||
color: $gray-darkest;
|
||||
}
|
||||
}
|
||||
|
||||
.edited-text {
|
||||
color: $gray-darkest;
|
||||
|
||||
.author_link {
|
||||
color: $gray-darkest;
|
||||
}
|
||||
}
|
||||
|
||||
.participants-list {
|
||||
margin: -5px -5px;
|
||||
}
|
||||
|
||||
.participants-author {
|
||||
display: inline-block;
|
||||
padding: 5px 5px;
|
||||
|
||||
.author_link {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.avatar.avatar-inline {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.participants-more {
|
||||
margin-top: 5px;
|
||||
margin-left: 5px;
|
||||
|
||||
a {
|
||||
color: #8c8c8c;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ form.edit-issue {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.merge-requests-title {
|
||||
.merge-requests-title, .related-branches-title {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
@@ -68,18 +68,18 @@ form.edit-issue {
|
||||
.merge-request,
|
||||
.issue {
|
||||
&.today {
|
||||
background: #EFE;
|
||||
border-color: #CEC;
|
||||
background: #efe;
|
||||
border-color: #cec;
|
||||
}
|
||||
|
||||
&.closed {
|
||||
background: #F9F9F9;
|
||||
border-color: #E5E5E5;
|
||||
background: #f9f9f9;
|
||||
border-color: #e5e5e5;
|
||||
}
|
||||
|
||||
&.merged {
|
||||
background: #F9F9F9;
|
||||
border-color: #E5E5E5;
|
||||
background: #f9f9f9;
|
||||
border-color: #e5e5e5;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,14 +130,14 @@ form.edit-issue {
|
||||
}
|
||||
|
||||
.issue-closed-by-widget {
|
||||
color: $secondary-text;
|
||||
color: $gl-text-color;
|
||||
margin-left: 52px;
|
||||
}
|
||||
|
||||
.editor-details {
|
||||
display: block;
|
||||
|
||||
|
||||
@media (min-width: $screen-sm-min) {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
margin-bottom: 30px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
a {
|
||||
@@ -39,7 +39,7 @@
|
||||
.login-box{
|
||||
background: #fafafa;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 0px 2px #CCC;
|
||||
box-shadow: 0 0 2px #ccc;
|
||||
padding: 15px;
|
||||
|
||||
.login-heading h3 {
|
||||
@@ -74,7 +74,7 @@
|
||||
|
||||
&.top {
|
||||
@include border-radius(5px 5px 0 0);
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
&.bottom {
|
||||
@@ -85,12 +85,12 @@
|
||||
|
||||
&.middle {
|
||||
border-top: 0;
|
||||
margin-bottom:0px;
|
||||
margin-bottom: 0;
|
||||
@include border-radius(0);
|
||||
}
|
||||
|
||||
&:active, &:focus {
|
||||
background-color: #FFF;
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
}
|
||||
|
||||
.mr-widget-footer {
|
||||
border-top: 1px solid #EEE;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
.ci-coverage {
|
||||
@@ -222,7 +222,7 @@
|
||||
margin-bottom: 20px;
|
||||
|
||||
span {
|
||||
color: #B2B2B2;
|
||||
color: #b2b2b2;
|
||||
|
||||
a {
|
||||
color: $md-link-color;
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
.comment-hints {
|
||||
color: #999;
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
padding: 7px;
|
||||
margin-top: -7px;
|
||||
border: 1px solid $border-color;
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
*/
|
||||
|
||||
@-webkit-keyframes targe3-note {
|
||||
from { background:#fffff0; }
|
||||
50% { background:#ffffd3; }
|
||||
to { background:#fffff0; }
|
||||
from { background: #fffff0; }
|
||||
50% { background: #ffffd3; }
|
||||
to { background: #fffff0; }
|
||||
}
|
||||
|
||||
ul.notes {
|
||||
display: block;
|
||||
list-style: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
.timeline-icon {
|
||||
float: left;
|
||||
@@ -30,7 +30,7 @@ ul.notes {
|
||||
font-size: 14px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
background: #FDFDFD;
|
||||
background: #fdfdfd;
|
||||
|
||||
.timeline-icon {
|
||||
.avatar {
|
||||
@@ -93,12 +93,12 @@ ul.notes {
|
||||
.discussion {
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
position:relative;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.note {
|
||||
display: block;
|
||||
position:relative;
|
||||
position: relative;
|
||||
|
||||
.note-body {
|
||||
overflow: auto;
|
||||
@@ -108,6 +108,13 @@ ul.notes {
|
||||
word-wrap: break-word;
|
||||
@include md-typography;
|
||||
|
||||
// On diffs code should wrap nicely and not overflow
|
||||
pre {
|
||||
code {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
|
||||
// Reset ul style types since we're nested inside a ul already
|
||||
& > ul {
|
||||
list-style-type: disc;
|
||||
@@ -129,7 +136,7 @@ ul.notes {
|
||||
|
||||
hr {
|
||||
// Darken 'whitesmoke' a bit to make it more visible in note bodies
|
||||
border-color: darken(#F5F5F5, 8%);
|
||||
border-color: darken(#f5f5f5, 8%);
|
||||
margin: 10px 0;
|
||||
}
|
||||
}
|
||||
@@ -166,7 +173,7 @@ ul.notes {
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
color: $text-color;
|
||||
}
|
||||
&.notes_line2 {
|
||||
@@ -232,7 +239,7 @@ ul.notes {
|
||||
.add-diff-note {
|
||||
margin-top: -4px;
|
||||
@include border-radius(40px);
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
padding: 4px;
|
||||
font-size: 16px;
|
||||
color: $gl-link-color;
|
||||
@@ -249,7 +256,7 @@ ul.notes {
|
||||
|
||||
&:hover {
|
||||
background: $gl-info;
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
@include show-add-diff-note;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
.btn {
|
||||
line-height: 40px;
|
||||
height: 42px;
|
||||
padding: 0px 12px;
|
||||
padding: 0 12px;
|
||||
|
||||
img {
|
||||
width: 32px;
|
||||
|
||||
@@ -33,6 +33,13 @@
|
||||
.project-settings-dropdown {
|
||||
margin-left: 10px;
|
||||
display: inline-block;
|
||||
|
||||
.dropdown-menu {
|
||||
left: auto;
|
||||
width: auto;
|
||||
right: 0px;
|
||||
max-width: 240px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +92,7 @@
|
||||
|
||||
.project-repo-buttons {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: 0;
|
||||
|
||||
.count-buttons {
|
||||
display: block;
|
||||
@@ -140,7 +147,7 @@
|
||||
left: 1px;
|
||||
margin-top: -9px;
|
||||
border-width: 10px 7px 10px 0;
|
||||
border-right-color: #FFF;
|
||||
border-right-color: #fff;
|
||||
}
|
||||
}
|
||||
.count {
|
||||
@@ -162,10 +169,10 @@
|
||||
cursor: pointer;
|
||||
background-image: none;
|
||||
white-space: nowrap;
|
||||
margin: 0 11px 0px 4px;
|
||||
margin: 0 11px 0 4px;
|
||||
|
||||
&:hover {
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -210,7 +217,7 @@
|
||||
}
|
||||
|
||||
.project_member_row form {
|
||||
margin: 0px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.transfer-project .select2-container {
|
||||
@@ -286,11 +293,11 @@ table.table.protected-branches-list tr.no-border {
|
||||
padding-bottom: 4px;
|
||||
|
||||
ul.nav {
|
||||
display:inline-block;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.nav li {
|
||||
display:inline;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.nav > li > a {
|
||||
@@ -303,11 +310,11 @@ table.table.protected-branches-list tr.no-border {
|
||||
}
|
||||
|
||||
li {
|
||||
display:inline;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a {
|
||||
float:left;
|
||||
float: left;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
@@ -462,7 +469,7 @@ pre.light-well {
|
||||
|
||||
.form-control {
|
||||
@extend .monospace;
|
||||
background: #FFF;
|
||||
background: #fff;
|
||||
font-size: 14px;
|
||||
margin-left: -1px;
|
||||
cursor: auto;
|
||||
@@ -472,16 +479,16 @@ pre.light-well {
|
||||
|
||||
.cannot-be-merged,
|
||||
.cannot-be-merged:hover {
|
||||
color: #E62958;
|
||||
color: #e62958;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.private-forks-notice .private-fork-icon {
|
||||
i:nth-child(1) {
|
||||
color: #2AA056;
|
||||
color: #2aa056;
|
||||
}
|
||||
|
||||
i:nth-child(2) {
|
||||
color: #FFFFFF;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.runner-state {
|
||||
padding: 6px 12px;
|
||||
margin-right: 10px;
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
|
||||
&.runner-state-shared {
|
||||
background: #32b186;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
margin-bottom: 20px;
|
||||
|
||||
input {
|
||||
border-color: #BBB;
|
||||
border-color: #bbb;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@ table .sherlock-code {
|
||||
}
|
||||
|
||||
.sherlock-line-samples-table {
|
||||
margin-bottom: 0px !important;
|
||||
margin-bottom: 0 !important;
|
||||
|
||||
thead tr th,
|
||||
tbody tr td {
|
||||
font-size: 13px !important;
|
||||
text-align: right;
|
||||
padding: 0px 10px !important;
|
||||
padding: 0 10px !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.ci-status {
|
||||
padding: 2px 7px;
|
||||
margin-right: 5px;
|
||||
border: 1px solid #EEE;
|
||||
border: 1px solid #eee;
|
||||
white-space: nowrap;
|
||||
@include border-radius(4px);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
.todo-item {
|
||||
font-size: $gl-font-size;
|
||||
padding-left: $gl-avatar-size + $gl-padding-top;
|
||||
color: $secondary-text;
|
||||
color: $gl-text-color;
|
||||
|
||||
a {
|
||||
color: #4c4e54;
|
||||
@@ -29,9 +29,10 @@
|
||||
.todo-title {
|
||||
@include str-truncated(calc(100% - 174px));
|
||||
font-weight: 600;
|
||||
color: $list-title-color;
|
||||
|
||||
.author-name {
|
||||
color: #333;
|
||||
a {
|
||||
color: $list-title-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +62,7 @@
|
||||
|
||||
.note-image-attach {
|
||||
margin-top: 4px;
|
||||
margin-left: 0px;
|
||||
margin-left: 0;
|
||||
max-width: 200px;
|
||||
float: none;
|
||||
}
|
||||
@@ -89,7 +90,7 @@
|
||||
|
||||
.todo-body {
|
||||
margin: 0;
|
||||
border-left: 2px solid #DDD;
|
||||
border-left: 2px solid #ddd;
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
img {
|
||||
position: relative;
|
||||
top:-1px;
|
||||
top: -1px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
.example {
|
||||
&:before {
|
||||
content: "Example";
|
||||
color: #BBB;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
padding: 15px;
|
||||
|
||||
@@ -2,23 +2,23 @@
|
||||
// color codes are based on http://en.wikipedia.org/wiki/File:Xterm_256color_chart.svg
|
||||
// see also: https://gist.github.com/jasonm23/2868981
|
||||
|
||||
$black: #000000;
|
||||
$black: #000;
|
||||
$red: #cd0000;
|
||||
$green: #00cd00;
|
||||
$yellow: #cdcd00;
|
||||
$blue: #0000ee; // according to wikipedia, this is the xterm standard
|
||||
$blue: #00e; // according to wikipedia, this is the xterm standard
|
||||
//$blue: #1e90ff; // this is used by all the terminals I tried (when configured with the xterm color profile)
|
||||
$magenta: #cd00cd;
|
||||
$cyan: #00cdcd;
|
||||
$white: #e5e5e5;
|
||||
$l-black: #7f7f7f;
|
||||
$l-red: #ff0000;
|
||||
$l-green: #00ff00;
|
||||
$l-yellow: #ffff00;
|
||||
$l-red: #f00;
|
||||
$l-green: #0f0;
|
||||
$l-yellow: #ff0;
|
||||
$l-blue: #5c5cff;
|
||||
$l-magenta: #ff00ff;
|
||||
$l-cyan: #00ffff;
|
||||
$l-white: #ffffff;
|
||||
$l-magenta: #f0f;
|
||||
$l-cyan: #0ff;
|
||||
$l-white: #fff;
|
||||
|
||||
.term-bold {
|
||||
font-weight: bold;
|
||||
@@ -136,7 +136,7 @@
|
||||
|
||||
|
||||
.xterm-fg-0 {
|
||||
color: #000000;
|
||||
color: #000;
|
||||
}
|
||||
.xterm-fg-1 {
|
||||
color: #800000;
|
||||
@@ -163,28 +163,28 @@
|
||||
color: #808080;
|
||||
}
|
||||
.xterm-fg-9 {
|
||||
color: #ff0000;
|
||||
color: #f00;
|
||||
}
|
||||
.xterm-fg-10 {
|
||||
color: #00ff00;
|
||||
color: #0f0;
|
||||
}
|
||||
.xterm-fg-11 {
|
||||
color: #ffff00;
|
||||
color: #ff0;
|
||||
}
|
||||
.xterm-fg-12 {
|
||||
color: #0000ff;
|
||||
color: #00f;
|
||||
}
|
||||
.xterm-fg-13 {
|
||||
color: #ff00ff;
|
||||
color: #f0f;
|
||||
}
|
||||
.xterm-fg-14 {
|
||||
color: #00ffff;
|
||||
color: #0ff;
|
||||
}
|
||||
.xterm-fg-15 {
|
||||
color: #ffffff;
|
||||
color: #fff;
|
||||
}
|
||||
.xterm-fg-16 {
|
||||
color: #000000;
|
||||
color: #000;
|
||||
}
|
||||
.xterm-fg-17 {
|
||||
color: #00005f;
|
||||
@@ -199,7 +199,7 @@
|
||||
color: #0000d7;
|
||||
}
|
||||
.xterm-fg-21 {
|
||||
color: #0000ff;
|
||||
color: #00f;
|
||||
}
|
||||
.xterm-fg-22 {
|
||||
color: #005f00;
|
||||
@@ -274,7 +274,7 @@
|
||||
color: #00d7ff;
|
||||
}
|
||||
.xterm-fg-46 {
|
||||
color: #00ff00;
|
||||
color: #0f0;
|
||||
}
|
||||
.xterm-fg-47 {
|
||||
color: #00ff5f;
|
||||
@@ -289,7 +289,7 @@
|
||||
color: #00ffd7;
|
||||
}
|
||||
.xterm-fg-51 {
|
||||
color: #00ffff;
|
||||
color: #0ff;
|
||||
}
|
||||
.xterm-fg-52 {
|
||||
color: #5f0000;
|
||||
@@ -724,7 +724,7 @@
|
||||
color: #d7ffff;
|
||||
}
|
||||
.xterm-fg-196 {
|
||||
color: #ff0000;
|
||||
color: #f00;
|
||||
}
|
||||
.xterm-fg-197 {
|
||||
color: #ff005f;
|
||||
@@ -739,7 +739,7 @@
|
||||
color: #ff00d7;
|
||||
}
|
||||
.xterm-fg-201 {
|
||||
color: #ff00ff;
|
||||
color: #f0f;
|
||||
}
|
||||
.xterm-fg-202 {
|
||||
color: #ff5f00;
|
||||
@@ -814,7 +814,7 @@
|
||||
color: #ffd7ff;
|
||||
}
|
||||
.xterm-fg-226 {
|
||||
color: #ffff00;
|
||||
color: #ff0;
|
||||
}
|
||||
.xterm-fg-227 {
|
||||
color: #ffff5f;
|
||||
@@ -829,7 +829,7 @@
|
||||
color: #ffffd7;
|
||||
}
|
||||
.xterm-fg-231 {
|
||||
color: #ffffff;
|
||||
color: #fff;
|
||||
}
|
||||
.xterm-fg-232 {
|
||||
color: #080808;
|
||||
@@ -850,7 +850,7 @@
|
||||
color: #3a3a3a;
|
||||
}
|
||||
.xterm-fg-238 {
|
||||
color: #444444;
|
||||
color: #444;
|
||||
}
|
||||
.xterm-fg-239 {
|
||||
color: #4e4e4e;
|
||||
@@ -901,6 +901,6 @@
|
||||
color: #e4e4e4;
|
||||
}
|
||||
.xterm-fg-255 {
|
||||
color: #eeeeee;
|
||||
color: #eee;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ class Admin::AbuseReportsController < Admin::ApplicationController
|
||||
def destroy
|
||||
abuse_report = AbuseReport.find(params[:id])
|
||||
|
||||
abuse_report.remove_user if params[:remove_user]
|
||||
abuse_report.remove_user(deleted_by: current_user) if params[:remove_user]
|
||||
abuse_report.destroy
|
||||
|
||||
render nothing: true
|
||||
|
||||
@@ -119,10 +119,10 @@ class Admin::UsersController < Admin::ApplicationController
|
||||
end
|
||||
|
||||
def destroy
|
||||
DeleteUserService.new(current_user).execute(user)
|
||||
DeleteUserWorker.perform_async(current_user.id, user.id)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to admin_users_path }
|
||||
format.html { redirect_to admin_users_path, notice: "The user is being deleted." }
|
||||
format.json { head :ok }
|
||||
end
|
||||
end
|
||||
@@ -150,7 +150,7 @@ class Admin::UsersController < Admin::ApplicationController
|
||||
:email, :remember_me, :bio, :name, :username,
|
||||
:skype, :linkedin, :twitter, :website_url, :color_scheme_id, :theme_id, :force_random_password,
|
||||
:extern_uid, :provider, :password_expires_at, :avatar, :hide_no_ssh_key, :hide_no_password,
|
||||
:projects_limit, :can_create_group, :admin, :key_id
|
||||
:projects_limit, :can_create_group, :admin, :key_id, :external
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,25 +1,34 @@
|
||||
class Dashboard::TodosController < Dashboard::ApplicationController
|
||||
before_action :find_todos, only: [:index, :destroy_all]
|
||||
before_action :find_todos, only: [:index, :destroy, :destroy_all]
|
||||
|
||||
def index
|
||||
@todos = @todos.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def destroy
|
||||
todo.done!
|
||||
todo.done
|
||||
|
||||
todo_notice = 'Todo was successfully marked as done.'
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to dashboard_todos_path, notice: 'Todo was successfully marked as done.' }
|
||||
format.html { redirect_to dashboard_todos_path, notice: todo_notice }
|
||||
format.js { render nothing: true }
|
||||
format.json do
|
||||
render json: { count: @todos.size, done_count: current_user.todos.done.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def destroy_all
|
||||
@todos.each(&:done!)
|
||||
@todos.each(&:done)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to dashboard_todos_path, notice: 'All todos were marked as done.' }
|
||||
format.js { render nothing: true }
|
||||
format.json do
|
||||
find_todos
|
||||
render json: { count: @todos.size, done_count: current_user.todos.done.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ class DashboardController < Dashboard::ApplicationController
|
||||
include MergeRequestsAction
|
||||
|
||||
before_action :event_filter, only: :activity
|
||||
before_action :projects, only: [:issues, :merge_requests]
|
||||
before_action :projects, only: [:issues, :merge_requests, :labels, :milestones]
|
||||
|
||||
respond_to :html
|
||||
|
||||
@@ -20,6 +20,22 @@ class DashboardController < Dashboard::ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
def labels
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
render json: view_context.projects_labels_options
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def milestones
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
render json: view_context.projects_milestones_options
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def load_events
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Projects::BadgesController < Projects::ApplicationController
|
||||
before_action :set_no_cache
|
||||
before_action :no_cache_headers
|
||||
|
||||
def build
|
||||
respond_to do |format|
|
||||
@@ -10,15 +10,4 @@ class Projects::BadgesController < Projects::ApplicationController
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_no_cache
|
||||
expires_now
|
||||
|
||||
# Add some deprecated headers for older agents
|
||||
#
|
||||
response.headers['Pragma'] = 'no-cache'
|
||||
response.headers['Expires'] = 'Fri, 01 Jan 1990 00:00:00 GMT'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,7 +9,7 @@ class Projects::BranchesController < Projects::ApplicationController
|
||||
@sort = params[:sort] || 'name'
|
||||
@branches = @repository.branches_sorted_by(@sort)
|
||||
@branches = Kaminari.paginate_array(@branches).page(params[:page]).per(PER_PAGE)
|
||||
|
||||
|
||||
@max_commits = @branches.reduce(0) do |memo, branch|
|
||||
diverging_commit_counts = repository.diverging_commit_counts(branch)
|
||||
[memo, diverging_commit_counts[:behind], diverging_commit_counts[:ahead]].max
|
||||
@@ -23,11 +23,15 @@ class Projects::BranchesController < Projects::ApplicationController
|
||||
def create
|
||||
branch_name = sanitize(strip_tags(params[:branch_name]))
|
||||
branch_name = Addressable::URI.unescape(branch_name)
|
||||
ref = sanitize(strip_tags(params[:ref]))
|
||||
ref = Addressable::URI.unescape(ref)
|
||||
|
||||
result = CreateBranchService.new(project, current_user).
|
||||
execute(branch_name, ref)
|
||||
|
||||
if params[:issue_iid]
|
||||
issue = @project.issues.find_by(iid: params[:issue_iid])
|
||||
SystemNoteService.new_issue_branch(issue, @project, current_user, branch_name) if issue
|
||||
end
|
||||
|
||||
if result[:status] == :success
|
||||
@branch = result[:branch]
|
||||
redirect_to namespace_project_tree_path(@project.namespace, @project,
|
||||
@@ -49,4 +53,15 @@ class Projects::BranchesController < Projects::ApplicationController
|
||||
format.js { render status: status[:return_code] }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def ref
|
||||
if params[:ref]
|
||||
ref_escaped = sanitize(strip_tags(params[:ref]))
|
||||
Addressable::URI.unescape(ref_escaped)
|
||||
else
|
||||
@project.default_branch
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,7 +5,7 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
before_action :issue, only: [:edit, :update, :show]
|
||||
|
||||
# Allow read any issue
|
||||
before_action :authorize_read_issue!
|
||||
before_action :authorize_read_issue!, only: [:show]
|
||||
|
||||
# Allow write(create) issue
|
||||
before_action :authorize_create_issue!, only: [:new, :create]
|
||||
@@ -65,6 +65,7 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
@notes = @issue.notes.nonawards.with_associations.fresh
|
||||
@noteable = @issue
|
||||
@merge_requests = @issue.referenced_merge_requests(current_user)
|
||||
@related_branches = @issue.related_branches - @merge_requests.map(&:source_branch)
|
||||
|
||||
respond_with(@issue)
|
||||
end
|
||||
@@ -127,6 +128,10 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
end
|
||||
alias_method :subscribable_resource, :issue
|
||||
|
||||
def authorize_read_issue!
|
||||
return render_404 unless can?(current_user, :read_issue, @issue)
|
||||
end
|
||||
|
||||
def authorize_update_issue!
|
||||
return render_404 unless can?(current_user, :update_issue, @issue)
|
||||
end
|
||||
@@ -157,7 +162,7 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
|
||||
def issue_params
|
||||
params.require(:issue).permit(
|
||||
:title, :assignee_id, :position, :description,
|
||||
:title, :assignee_id, :position, :description, :confidential,
|
||||
:milestone_id, :state_event, :task_num, label_ids: []
|
||||
)
|
||||
end
|
||||
|
||||
@@ -12,6 +12,13 @@ class Projects::LabelsController < Projects::ApplicationController
|
||||
|
||||
def index
|
||||
@labels = @project.labels.page(params[:page]).per(PER_PAGE)
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.json do
|
||||
render json: @project.labels
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def new
|
||||
|
||||
@@ -19,7 +19,15 @@ class Projects::MilestonesController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
@milestones = @milestones.includes(:project)
|
||||
@milestones = @milestones.page(params[:page]).per(PER_PAGE)
|
||||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
@milestones = @milestones.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
format.json do
|
||||
render json: @milestones
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def new
|
||||
|
||||
@@ -134,7 +134,7 @@ class ProjectsController < ApplicationController
|
||||
def autocomplete_sources
|
||||
note_type = params['type']
|
||||
note_id = params['type_id']
|
||||
autocomplete = ::Projects::AutocompleteService.new(@project)
|
||||
autocomplete = ::Projects::AutocompleteService.new(@project, current_user)
|
||||
participants = ::Projects::ParticipantsService.new(@project, current_user).execute(note_type, note_id)
|
||||
|
||||
@suggestions = {
|
||||
|
||||
@@ -19,4 +19,10 @@ class IssuesFinder < IssuableFinder
|
||||
def klass
|
||||
Issue
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def init_collection
|
||||
Issue.visible_to_user(current_user)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -40,25 +40,26 @@ class ProjectsFinder
|
||||
private
|
||||
|
||||
def group_projects(current_user, group)
|
||||
if current_user
|
||||
[
|
||||
group_projects_for_user(current_user, group),
|
||||
group.projects.public_and_internal_only,
|
||||
group.shared_projects.visible_to_user(current_user)
|
||||
]
|
||||
return [group.projects.public_only] unless current_user
|
||||
|
||||
user_group_projects = [
|
||||
group_projects_for_user(current_user, group),
|
||||
group.shared_projects.visible_to_user(current_user)
|
||||
]
|
||||
if current_user.external?
|
||||
user_group_projects << group.projects.public_only
|
||||
else
|
||||
[group.projects.public_only]
|
||||
user_group_projects << group.projects.public_and_internal_only
|
||||
end
|
||||
end
|
||||
|
||||
def all_projects(current_user)
|
||||
if current_user
|
||||
[
|
||||
current_user.authorized_projects,
|
||||
public_and_internal_projects
|
||||
]
|
||||
return [public_projects] unless current_user
|
||||
|
||||
if current_user.external?
|
||||
[current_user.authorized_projects, public_projects]
|
||||
else
|
||||
[Project.public_only]
|
||||
[current_user.authorized_projects, public_and_internal_projects]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ module ApplicationHelper
|
||||
# Returns an HTML-safe String
|
||||
def time_ago_with_tooltip(time, placement: 'top', html_class: 'time_ago', skip_js: false)
|
||||
element = content_tag :time, time.to_s,
|
||||
class: "#{html_class} js-timeago js-timeago-pending",
|
||||
class: "#{html_class} js-timeago #{"js-timeago-pending" unless skip_js}",
|
||||
datetime: time.to_time.getutc.iso8601,
|
||||
title: time.in_time_zone.to_s(:medium),
|
||||
data: { toggle: 'tooltip', placement: placement, container: 'body' }
|
||||
@@ -196,6 +196,22 @@ module ApplicationHelper
|
||||
element
|
||||
end
|
||||
|
||||
def edited_time_ago_with_tooltip(object, placement: 'top', html_class: 'time_ago', include_author: false)
|
||||
return if object.updated_at == object.created_at
|
||||
|
||||
content_tag :small, class: "edited-text" do
|
||||
output = content_tag(:span, "Edited ")
|
||||
output << time_ago_with_tooltip(object.updated_at, placement: placement, html_class: html_class)
|
||||
|
||||
if include_author && object.updated_by && object.updated_by != object.author
|
||||
output << content_tag(:span, " by ")
|
||||
output << link_to_member(object.project, object.updated_by, avatar: false, author_class: nil)
|
||||
end
|
||||
|
||||
output
|
||||
end
|
||||
end
|
||||
|
||||
def render_markup(file_name, file_content)
|
||||
if gitlab_markdown?(file_name)
|
||||
Haml::Helpers.preserve(markdown(file_content))
|
||||
@@ -285,7 +301,7 @@ module ApplicationHelper
|
||||
if project.nil?
|
||||
nil
|
||||
elsif current_controller?(:issues)
|
||||
project.issues.send(entity).count
|
||||
project.issues.visible_to_user(current_user).send(entity).count
|
||||
elsif current_controller?(:merge_requests)
|
||||
project.merge_requests.send(entity).count
|
||||
end
|
||||
|
||||
@@ -24,7 +24,7 @@ module DropdownsHelper
|
||||
capture(&block) if block && !options.has_key?(:footer_content)
|
||||
end
|
||||
|
||||
if block && options.has_key?(:footer_content)
|
||||
if block && options[:footer_content]
|
||||
output << content_tag(:div, class: "dropdown-footer") do
|
||||
capture(&block)
|
||||
end
|
||||
|
||||
@@ -194,7 +194,7 @@ module EventsHelper
|
||||
end
|
||||
|
||||
def event_to_atom(xml, event)
|
||||
if event.proper?
|
||||
if event.proper?(current_user)
|
||||
xml.entry do
|
||||
event_link = event_feed_url(event)
|
||||
event_title = event_feed_title(event)
|
||||
|
||||
@@ -20,6 +20,23 @@ module IssuablesHelper
|
||||
base_issuable_scope(issuable).where('iid < ?', issuable.iid).first
|
||||
end
|
||||
|
||||
def user_dropdown_label(user_id, default_label)
|
||||
return "Unassigned" if user_id == "0"
|
||||
|
||||
if @project
|
||||
member = @project.team.find_member(user_id)
|
||||
user = member.user if member
|
||||
else
|
||||
user = User.find_by(id: user_id)
|
||||
end
|
||||
|
||||
if user
|
||||
user.name
|
||||
else
|
||||
default_label
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def sidebar_gutter_collapsed?
|
||||
|
||||
@@ -98,6 +98,10 @@ module IssuesHelper
|
||||
end.sort.to_sentence(last_word_connector: ', or ')
|
||||
end
|
||||
|
||||
def confidential_icon(issue)
|
||||
icon('eye-slash') if issue.confidential?
|
||||
end
|
||||
|
||||
def emoji_icon(name, unicode = nil, aliases = [])
|
||||
unicode ||= Emoji.emoji_filename(name) rescue ""
|
||||
|
||||
|
||||
@@ -110,18 +110,19 @@ module LabelsHelper
|
||||
end
|
||||
|
||||
def projects_labels_options
|
||||
labels =
|
||||
if @project
|
||||
@project.labels
|
||||
else
|
||||
Label.where(project_id: @projects)
|
||||
end
|
||||
if @project
|
||||
@project.labels
|
||||
else
|
||||
Label.where(project_id: @projects)
|
||||
end
|
||||
end
|
||||
|
||||
grouped_labels = GlobalLabel.build_collection(labels)
|
||||
grouped_labels.unshift(Label::None)
|
||||
grouped_labels.unshift(Label::Any)
|
||||
|
||||
options_from_collection_for_select(grouped_labels, 'name', 'title', params[:label_name])
|
||||
def labels_filter_path
|
||||
if @project
|
||||
namespace_project_labels_path(@project.namespace, @project, :json)
|
||||
else
|
||||
labels_dashboard_path(:json)
|
||||
end
|
||||
end
|
||||
|
||||
def label_subscription_status(label)
|
||||
|
||||
@@ -38,7 +38,7 @@ module MilestonesHelper
|
||||
def milestone_progress_bar(milestone)
|
||||
options = {
|
||||
class: 'progress-bar progress-bar-success',
|
||||
style: "width: #{milestone.percent_complete}%;"
|
||||
style: "width: #{milestone.percent_complete(current_user)}%;"
|
||||
}
|
||||
|
||||
content_tag :div, class: 'progress' do
|
||||
@@ -56,12 +56,15 @@ module MilestonesHelper
|
||||
|
||||
epoch = DateTime.parse('1970-01-01')
|
||||
grouped_milestones = GlobalMilestone.build_collection(milestones)
|
||||
grouped_milestones = grouped_milestones.sort_by { |x| x.due_date.nil? ? epoch : x.due_date }
|
||||
grouped_milestones.unshift(Milestone::None)
|
||||
grouped_milestones.unshift(Milestone::Any)
|
||||
grouped_milestones.unshift(Milestone::Upcoming)
|
||||
grouped_milestones.sort_by { |x| x.due_date.nil? ? epoch : x.due_date }
|
||||
end
|
||||
|
||||
options_from_collection_for_select(grouped_milestones, 'name', 'title', params[:milestone_title])
|
||||
def milestones_filter_dropdown_path
|
||||
if @project
|
||||
namespace_project_milestones_path(@project.namespace, @project, :json)
|
||||
else
|
||||
milestones_dashboard_path(:json)
|
||||
end
|
||||
end
|
||||
|
||||
def milestone_remaining_days(milestone)
|
||||
|
||||
@@ -26,7 +26,7 @@ module ProjectsHelper
|
||||
image_tag(avatar_icon(author, opts[:size]), width: opts[:size], class: "avatar avatar-inline #{"s#{opts[:size]}" if opts[:size]}", alt:'') if opts[:avatar]
|
||||
end
|
||||
|
||||
def link_to_member(project, author, opts = {})
|
||||
def link_to_member(project, author, opts = {}, &block)
|
||||
default_opts = { avatar: true, name: true, size: 16, author_class: 'author', title: ":name" }
|
||||
opts = default_opts.merge(opts)
|
||||
|
||||
@@ -44,6 +44,8 @@ module ProjectsHelper
|
||||
author_html << content_tag(:span, sanitize(author.name), class: opts[:author_class]) if opts[:name]
|
||||
end
|
||||
|
||||
author_html << capture(&block) if block
|
||||
|
||||
author_html = author_html.html_safe
|
||||
|
||||
if opts[:name]
|
||||
|
||||
@@ -16,14 +16,19 @@ module TodosHelper
|
||||
|
||||
def todo_target_link(todo)
|
||||
target = todo.target_type.titleize.downcase
|
||||
link_to "#{target} #{todo.target.to_reference}", todo_target_path(todo), { title: h(todo.target.title) }
|
||||
link_to "#{target} #{todo.target_reference}", todo_target_path(todo), { title: todo.target.title }
|
||||
end
|
||||
|
||||
def todo_target_path(todo)
|
||||
anchor = dom_id(todo.note) if todo.note.present?
|
||||
|
||||
polymorphic_path([todo.project.namespace.becomes(Namespace),
|
||||
todo.project, todo.target], anchor: anchor)
|
||||
if todo.for_commit?
|
||||
namespace_project_commit_path(todo.project.namespace.becomes(Namespace), todo.project,
|
||||
todo.target, anchor: anchor)
|
||||
else
|
||||
polymorphic_path([todo.project.namespace.becomes(Namespace),
|
||||
todo.project, todo.target], anchor: anchor)
|
||||
end
|
||||
end
|
||||
|
||||
def todos_filter_params
|
||||
|
||||
+33
-18
@@ -49,7 +49,6 @@ class Ability
|
||||
rules = [
|
||||
:read_project,
|
||||
:read_wiki,
|
||||
:read_issue,
|
||||
:read_label,
|
||||
:read_milestone,
|
||||
:read_project_snippet,
|
||||
@@ -63,6 +62,9 @@ class Ability
|
||||
# Allow to read builds by anonymous user if guests are allowed
|
||||
rules << :read_build if project.public_builds?
|
||||
|
||||
# Allow to read issues by anonymous user if issue is not confidential
|
||||
rules << :read_issue unless subject.is_a?(Issue) && subject.confidential?
|
||||
|
||||
rules - project_disabled_features_rules(project)
|
||||
else
|
||||
[]
|
||||
@@ -109,23 +111,10 @@ class Ability
|
||||
key = "/user/#{user.id}/project/#{project.id}"
|
||||
|
||||
RequestStore.store[key] ||= begin
|
||||
team = project.team
|
||||
# Push abilities on the users team role
|
||||
rules.push(*project_team_rules(project.team, user))
|
||||
|
||||
# Rules based on role in project
|
||||
if team.master?(user)
|
||||
rules.push(*project_master_rules)
|
||||
|
||||
elsif team.developer?(user)
|
||||
rules.push(*project_dev_rules)
|
||||
|
||||
elsif team.reporter?(user)
|
||||
rules.push(*project_report_rules)
|
||||
|
||||
elsif team.guest?(user)
|
||||
rules.push(*project_guest_rules)
|
||||
end
|
||||
|
||||
if project.public? || project.internal?
|
||||
if project.public? || (project.internal? && !user.external?)
|
||||
rules.push(*public_project_rules)
|
||||
|
||||
# Allow to read builds for internal projects
|
||||
@@ -148,6 +137,19 @@ class Ability
|
||||
end
|
||||
end
|
||||
|
||||
def project_team_rules(team, user)
|
||||
# Rules based on role in project
|
||||
if team.master?(user)
|
||||
project_master_rules
|
||||
elsif team.developer?(user)
|
||||
project_dev_rules
|
||||
elsif team.reporter?(user)
|
||||
project_report_rules
|
||||
elsif team.guest?(user)
|
||||
project_guest_rules
|
||||
end
|
||||
end
|
||||
|
||||
def public_project_rules
|
||||
@public_project_rules ||= project_guest_rules + [
|
||||
:download_code,
|
||||
@@ -321,6 +323,7 @@ class Ability
|
||||
end
|
||||
|
||||
rules += project_abilities(user, subject.project)
|
||||
rules = filter_confidential_issues_abilities(user, subject, rules) if subject.is_a?(Issue)
|
||||
rules
|
||||
end
|
||||
end
|
||||
@@ -356,7 +359,7 @@ class Ability
|
||||
]
|
||||
end
|
||||
|
||||
if snippet.public? || snippet.internal?
|
||||
if snippet.public? || (snippet.internal? && !user.external?)
|
||||
rules << :read_personal_snippet
|
||||
end
|
||||
|
||||
@@ -439,5 +442,17 @@ class Ability
|
||||
:"admin_#{name}"
|
||||
]
|
||||
end
|
||||
|
||||
def filter_confidential_issues_abilities(user, issue, rules)
|
||||
return rules if user.admin? || !issue.confidential?
|
||||
|
||||
unless issue.author == user || issue.assignee == user || issue.project.team.member?(user.id)
|
||||
rules.delete(:admin_issue)
|
||||
rules.delete(:read_issue)
|
||||
rules.delete(:update_issue)
|
||||
end
|
||||
|
||||
rules
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -19,9 +19,9 @@ class AbuseReport < ActiveRecord::Base
|
||||
validates :message, presence: true
|
||||
validates :user_id, uniqueness: { message: 'has already been reported' }
|
||||
|
||||
def remove_user
|
||||
def remove_user(deleted_by:)
|
||||
user.block
|
||||
user.destroy
|
||||
DeleteUserWorker.perform_async(deleted_by.id, user.id, delete_solo_owned_groups: true)
|
||||
end
|
||||
|
||||
def notify
|
||||
|
||||
@@ -114,7 +114,7 @@ class CommitStatus < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def ignored?
|
||||
failed? && allow_failure?
|
||||
allow_failure? && (failed? || canceled?)
|
||||
end
|
||||
|
||||
def duration
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
module Milestoneish
|
||||
def closed_items_count
|
||||
issues.closed.size + merge_requests.closed_and_merged.size
|
||||
def closed_items_count(user = nil)
|
||||
issues_visible_to_user(user).closed.size + merge_requests.closed_and_merged.size
|
||||
end
|
||||
|
||||
def total_items_count
|
||||
issues.size + merge_requests.size
|
||||
def total_items_count(user = nil)
|
||||
issues_visible_to_user(user).size + merge_requests.size
|
||||
end
|
||||
|
||||
def complete?
|
||||
total_items_count == closed_items_count
|
||||
def complete?(user = nil)
|
||||
total_items_count(user) == closed_items_count(user)
|
||||
end
|
||||
|
||||
def percent_complete
|
||||
((closed_items_count * 100) / total_items_count).abs
|
||||
def percent_complete(user = nil)
|
||||
((closed_items_count(user) * 100) / total_items_count(user)).abs
|
||||
rescue ZeroDivisionError
|
||||
0
|
||||
end
|
||||
@@ -22,4 +22,8 @@ module Milestoneish
|
||||
|
||||
(due_date - Date.today).to_i
|
||||
end
|
||||
|
||||
def issues_visible_to_user(user = nil)
|
||||
issues.visible_to_user(user)
|
||||
end
|
||||
end
|
||||
|
||||
+4
-2
@@ -73,15 +73,17 @@ class Event < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def proper?
|
||||
def proper?(user = nil)
|
||||
if push?
|
||||
true
|
||||
elsif membership_changed?
|
||||
true
|
||||
elsif created_project?
|
||||
true
|
||||
elsif issue?
|
||||
Ability.abilities.allowed?(user, :read_issue, issue)
|
||||
else
|
||||
((issue? || merge_request? || note?) && target) || milestone?
|
||||
((merge_request? || note?) && target) || milestone?
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+33
-5
@@ -58,6 +58,13 @@ class Issue < ActiveRecord::Base
|
||||
attributes
|
||||
end
|
||||
|
||||
def self.visible_to_user(user)
|
||||
return where(confidential: false) if user.blank?
|
||||
return all if user.admin?
|
||||
|
||||
where('issues.confidential = false OR (issues.confidential = true AND (issues.author_id = :user_id OR issues.assignee_id = :user_id OR issues.project_id IN(:project_ids)))', user_id: user.id, project_ids: user.authorized_projects.select(:id))
|
||||
end
|
||||
|
||||
def self.reference_prefix
|
||||
'#'
|
||||
end
|
||||
@@ -87,11 +94,21 @@ class Issue < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def referenced_merge_requests(current_user = nil)
|
||||
Gitlab::ReferenceExtractor.lazily do
|
||||
[self, *notes].flat_map do |note|
|
||||
note.all_references(current_user).merge_requests
|
||||
end
|
||||
end.sort_by(&:iid)
|
||||
@referenced_merge_requests ||= {}
|
||||
@referenced_merge_requests[current_user] ||= begin
|
||||
Gitlab::ReferenceExtractor.lazily do
|
||||
[self, *notes].flat_map do |note|
|
||||
note.all_references(current_user).merge_requests
|
||||
end
|
||||
end.sort_by(&:iid).uniq
|
||||
end
|
||||
end
|
||||
|
||||
def related_branches
|
||||
return [] if self.project.empty_repo?
|
||||
self.project.repository.branch_names.select do |branch|
|
||||
branch =~ /\A#{iid}-(?!\d+-stable)/i
|
||||
end
|
||||
end
|
||||
|
||||
# Reset issue events cache
|
||||
@@ -120,4 +137,15 @@ class Issue < ActiveRecord::Base
|
||||
note.all_references(current_user).merge_requests
|
||||
end.uniq.select { |mr| mr.open? && mr.closes_issue?(self) }
|
||||
end
|
||||
|
||||
def to_branch_name
|
||||
"#{iid}-#{title.parameterize}"
|
||||
end
|
||||
|
||||
def can_be_worked_on?(current_user)
|
||||
!self.closed? &&
|
||||
!self.project.forked? &&
|
||||
self.related_branches.empty? &&
|
||||
self.closed_by_merge_requests(current_user).empty?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -520,7 +520,11 @@ class MergeRequest < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def source_sha
|
||||
last_commit.try(:sha)
|
||||
last_commit.try(:sha) || source_tip.try(:sha)
|
||||
end
|
||||
|
||||
def source_tip
|
||||
source_branch && source_project.repository.commit(source_branch)
|
||||
end
|
||||
|
||||
def fetch_ref
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user