mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-29 06:26:07 +10:00
Merge branch 'ce-to-ee' into 'master'
CE to EE 8.0.rc1 See merge request !488
This commit is contained in:
@@ -1,9 +1,21 @@
|
||||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 8.0.0 (unreleased)
|
||||
- Fix broken sort in merge request API (Stan Hu)
|
||||
- Bump rouge to 1.10.1 to remove warning noise and fix other syntax highlighting bugs (Stan Hu)
|
||||
- Gracefully handle errors in syntax highlighting by leaving the block unformatted (Stan Hu)
|
||||
- Add "replace" and "upload" functionalities to allow user replace existing file and upload new file into current repository
|
||||
- Fix URL construction for merge requests, issues, notes, and commits for relative URL config (Stan Hu)
|
||||
- Fix emoji URLs in Markdown when relative_url_root is used (Stan Hu)
|
||||
- Omit filename in Content-Disposition header in raw file download to avoid RFC 6266 encoding issues (Stan HU)
|
||||
- Fix broken Wiki Page History (Stan Hu)
|
||||
- Import forked repositories asynchronously to prevent large repositories from timing out (Stan Hu)
|
||||
- Prevent anchors from being hidden by header (Stan Hu)
|
||||
- Fix bug where only the first 15 Bitbucket issues would be imported (Stan Hu)
|
||||
- Sort issues by creation date in Bitbucket importer (Stan Hu)
|
||||
- Prevent too many redirects upon login when home page URL is set to external_url (Stan Hu)
|
||||
- Improve dropdown positioning on the project home page (Hannes Rosenögger)
|
||||
- Upgrade browser gem to 1.0.0 to avoid warning in IE11 compatibilty mode (Stan Hu)
|
||||
- Fix "Reload with full diff" URL button in compare branch view (Stan Hu)
|
||||
- Remove user OAuth tokens from the database and request new tokens each session (Stan Hu)
|
||||
- Only show recent push event if the branch still exists or a recent merge request has not been created (Stan Hu)
|
||||
- Remove satellites
|
||||
@@ -18,14 +30,42 @@ v 7.14.0
|
||||
- Create cross-reference for closing references on commits pushed to non-default branches (Maël Valais)
|
||||
- Ability to search milestones
|
||||
- Gracefully handle SMTP user input errors (e.g. incorrect email addresses) to prevent Sidekiq retries (Stan Hu)
|
||||
- Improve abuse reports management from admin area
|
||||
- Move dashboard activity to separate page
|
||||
- Move dashboard activity to separate page (for your projects and starred projects)
|
||||
- Improve performance of git blame
|
||||
- Limit content width to 1200px for most of pages to improve readability on big screens
|
||||
- Fix 500 error when submit project snippet without body
|
||||
- Improve search page usability
|
||||
- Bring more UI consistency in way how projects, snippets and groups lists are rendered
|
||||
- Make all profiles and group public
|
||||
- Fixed login failure when extern_uid changes (Joel Koglin)
|
||||
- Don't notify users without access to the project when they are (accidentally) mentioned in a note.
|
||||
- Retrieving oauth token with LDAP credentials
|
||||
- Load Application settings from running database unless env var USE_DB=false
|
||||
- Added Drone CI integration (Kirill Zaitsev)
|
||||
- Refactored service API and added automatically service docs generator (Kirill Zaitsev)
|
||||
- Added web_url key project hook_attrs (Kirill Zaitsev)
|
||||
- Add ability to get user information by ID of an SSH key via the API
|
||||
- Fix bug which IE cannot show image at markdown when the image is raw file of gitlab
|
||||
- Add support for Crowd
|
||||
- Global Labels that are available to all projects
|
||||
- Fix highlighting of deleted lines in diffs.
|
||||
- Added service API endpoint to retrieve service parameters (Petheő Bence)
|
||||
- Add FogBugz project import (Jared Szechy)
|
||||
- Sort users autocomplete lists by user (Allister Antosik)
|
||||
|
||||
v 7.14.1 (unreleased)
|
||||
v 7.14.3
|
||||
- No changes
|
||||
|
||||
v 7.14.2
|
||||
- Upgrade gitlab_git to 7.2.15 to fix `git blame` errors with ISO-encoded files (Stan Hu)
|
||||
|
||||
v 7.14.1
|
||||
- Improve abuse reports management from admin area
|
||||
- Fix "Reload with full diff" URL button in compare branch view (Stan Hu)
|
||||
- Disabled DNS lookups for SSH in docker image (Rowan Wookey)
|
||||
- Only include base URL in OmniAuth full_host parameter (Stan Hu)
|
||||
- Fix Error 500 in API when accessing a group that has an avatar (Stan Hu)
|
||||
- Ability to enable SSL verification for Webhooks
|
||||
|
||||
v 7.14.0
|
||||
- Fix bug where non-project members of the target project could set labels on new merge requests.
|
||||
@@ -109,7 +149,7 @@ v 7.13.4
|
||||
v 7.13.3
|
||||
- Fix bug causing Bitbucket importer to crash when OAuth application had been removed.
|
||||
- Allow users to send abuse reports
|
||||
- Remove satellites
|
||||
- Remove satellites
|
||||
- Link username to profile on Group Members page (Tom Webster)
|
||||
|
||||
v 7.13.2
|
||||
|
||||
@@ -1 +1 @@
|
||||
2.6.4
|
||||
2.6.5
|
||||
|
||||
@@ -25,6 +25,7 @@ gem 'omniauth-kerberos', group: :kerberos
|
||||
gem 'omniauth-gitlab'
|
||||
gem 'omniauth-bitbucket'
|
||||
gem 'omniauth-saml', '~> 1.4.0'
|
||||
gem 'omniauth_crowd'
|
||||
gem 'doorkeeper', '2.1.3'
|
||||
gem "rack-oauth2", "~> 1.0.5"
|
||||
gem 'gssapi', group: :kerberos
|
||||
@@ -39,12 +40,7 @@ gem "browser", '~> 1.0.0'
|
||||
|
||||
# Extracting information from a git repository
|
||||
# Provide access to Gitlab::Git library
|
||||
gem "gitlab_git", '~> 7.2.14'
|
||||
|
||||
# Ruby/Rack Git Smart-HTTP Server Handler
|
||||
# GitLab fork with a lot of changes (improved thread-safety, better memory usage etc)
|
||||
# For full list of changes see https://github.com/SaitoWu/grack/compare/master...gitlabhq:master
|
||||
gem 'gitlab-grack', '~> 2.0.2', require: 'grack'
|
||||
gem "gitlab_git", '~> 7.2.15'
|
||||
|
||||
# LDAP Auth
|
||||
# GitLab fork with several improvements to original library. For full list of changes
|
||||
@@ -163,6 +159,9 @@ gem "slack-notifier", "~> 1.0.0"
|
||||
# Asana integration
|
||||
gem 'asana', '~> 0.0.6'
|
||||
|
||||
# FogBugz integration
|
||||
gem 'ruby-fogbugz', '~> 0.2.1'
|
||||
|
||||
# d3
|
||||
gem 'd3_rails', '~> 3.5.5'
|
||||
|
||||
@@ -267,6 +266,7 @@ group :test do
|
||||
gem 'email_spec', '~> 1.6.0'
|
||||
gem 'webmock', '~> 1.21.0'
|
||||
gem 'test_after_commit'
|
||||
gem 'sham_rack'
|
||||
end
|
||||
|
||||
group :production do
|
||||
@@ -277,6 +277,6 @@ gem "newrelic_rpm"
|
||||
|
||||
gem 'octokit', '3.7.0'
|
||||
|
||||
gem "mail_room", "~> 0.4.0"
|
||||
gem "mail_room", "~> 0.4.2"
|
||||
|
||||
gem 'email_reply_parser'
|
||||
|
||||
+20
-15
@@ -253,7 +253,7 @@ GEM
|
||||
ruby-progressbar (~> 1.4)
|
||||
gemnasium-gitlab-service (0.2.6)
|
||||
rugged (~> 0.21)
|
||||
gemojione (2.0.0)
|
||||
gemojione (2.0.1)
|
||||
json
|
||||
gherkin-ruby (0.3.1)
|
||||
racc
|
||||
@@ -263,8 +263,6 @@ GEM
|
||||
flowdock (~> 0.7)
|
||||
gitlab-grit (>= 2.4.1)
|
||||
multi_json
|
||||
gitlab-grack (2.0.2)
|
||||
rack (~> 1.5.1)
|
||||
gitlab-grit (2.7.2)
|
||||
charlock_holmes (~> 0.6)
|
||||
diff-lcs (~> 1.1)
|
||||
@@ -275,9 +273,9 @@ GEM
|
||||
charlock_holmes (~> 0.6.6)
|
||||
escape_utils (~> 0.2.4)
|
||||
mime-types (~> 1.19)
|
||||
gitlab_emoji (0.1.0)
|
||||
gitlab_emoji (0.1.1)
|
||||
gemojione (~> 2.0)
|
||||
gitlab_git (7.2.14)
|
||||
gitlab_git (7.2.15)
|
||||
activesupport (~> 4.0)
|
||||
charlock_holmes (~> 0.6)
|
||||
gitlab-linguist (~> 3.0)
|
||||
@@ -294,7 +292,7 @@ GEM
|
||||
github-markup (~> 1.3.1)
|
||||
gollum-grit_adapter (~> 0.1, >= 0.1.1)
|
||||
nokogiri (~> 1.6.4)
|
||||
rouge (~> 1.9)
|
||||
rouge (~> 1.10.1)
|
||||
sanitize (~> 2.1.0)
|
||||
stringex (~> 2.5.1)
|
||||
gon (5.0.1)
|
||||
@@ -375,7 +373,7 @@ GEM
|
||||
systemu (~> 2.6.2)
|
||||
mail (2.6.3)
|
||||
mime-types (>= 1.16, < 3)
|
||||
mail_room (0.4.0)
|
||||
mail_room (0.4.2)
|
||||
method_source (0.8.2)
|
||||
mime-types (1.25.1)
|
||||
mimemagic (0.3.0)
|
||||
@@ -439,6 +437,10 @@ GEM
|
||||
omniauth-twitter (1.0.1)
|
||||
multi_json (~> 1.3)
|
||||
omniauth-oauth (~> 1.0)
|
||||
omniauth_crowd (2.2.3)
|
||||
activesupport
|
||||
nokogiri (>= 1.4.4)
|
||||
omniauth (~> 1.0)
|
||||
opennebula (4.12.1)
|
||||
json
|
||||
nokogiri
|
||||
@@ -465,7 +467,7 @@ GEM
|
||||
pyu-ruby-sasl (0.0.3.3)
|
||||
quiet_assets (1.0.2)
|
||||
railties (>= 3.1, < 5.0)
|
||||
racc (1.4.10)
|
||||
racc (1.4.12)
|
||||
rack (1.5.5)
|
||||
rack-accept (0.4.5)
|
||||
rack (>= 0.4)
|
||||
@@ -545,7 +547,7 @@ GEM
|
||||
netrc (~> 0.7)
|
||||
rinku (1.7.3)
|
||||
rotp (1.6.1)
|
||||
rouge (1.9.1)
|
||||
rouge (1.10.1)
|
||||
rqrcode (0.4.2)
|
||||
rqrcode-rails3 (0.1.7)
|
||||
rqrcode (>= 0.4.2)
|
||||
@@ -576,6 +578,8 @@ GEM
|
||||
powerpack (~> 0.0.6)
|
||||
rainbow (>= 1.99.1, < 3.0)
|
||||
ruby-progressbar (~> 1.4)
|
||||
ruby-fogbugz (0.2.1)
|
||||
crack (~> 0.4)
|
||||
ruby-progressbar (1.7.1)
|
||||
ruby-saml (1.0.0)
|
||||
nokogiri (>= 1.5.10)
|
||||
@@ -610,6 +614,8 @@ GEM
|
||||
thor (~> 0.14)
|
||||
settingslogic (2.0.9)
|
||||
sexp_processor (4.4.5)
|
||||
sham_rack (1.3.6)
|
||||
rack
|
||||
shoulda-matchers (2.8.0)
|
||||
activesupport (>= 3.0.0)
|
||||
sidekiq (3.3.0)
|
||||
@@ -790,11 +796,10 @@ DEPENDENCIES
|
||||
gemnasium-gitlab-service (~> 0.2)
|
||||
github-markup
|
||||
gitlab-flowdock-git-hook (~> 1.0.1)
|
||||
gitlab-grack (~> 2.0.2)
|
||||
gitlab-license (~> 0.0.2)
|
||||
gitlab-linguist (~> 3.0.1)
|
||||
gitlab_emoji (~> 0.1)
|
||||
gitlab_git (~> 7.2.14)
|
||||
gitlab_git (~> 7.2.15)
|
||||
gitlab_meta (= 7.0)
|
||||
gitlab_omniauth-ldap (= 1.2.1)
|
||||
gollum-lib (~> 4.0.2)
|
||||
@@ -813,7 +818,7 @@ DEPENDENCIES
|
||||
jquery-ui-rails
|
||||
kaminari (~> 0.15.1)
|
||||
letter_opener
|
||||
mail_room (~> 0.4.0)
|
||||
mail_room (~> 0.4.2)
|
||||
minitest (~> 5.3.0)
|
||||
mousetrap-rails
|
||||
mysql2
|
||||
@@ -830,6 +835,7 @@ DEPENDENCIES
|
||||
omniauth-saml (~> 1.4.0)
|
||||
omniauth-shibboleth
|
||||
omniauth-twitter
|
||||
omniauth_crowd
|
||||
org-ruby (= 0.9.12)
|
||||
pg
|
||||
poltergeist (~> 1.6.0)
|
||||
@@ -849,12 +855,14 @@ DEPENDENCIES
|
||||
rqrcode-rails3
|
||||
rspec-rails (~> 3.3.0)
|
||||
rubocop (= 0.28.0)
|
||||
ruby-fogbugz (~> 0.2.1)
|
||||
sanitize (~> 2.0)
|
||||
sass-rails (~> 4.0.5)
|
||||
sdoc
|
||||
seed-fu
|
||||
select2-rails (~> 3.5.9)
|
||||
settingslogic
|
||||
sham_rack
|
||||
shoulda-matchers (~> 2.8.0)
|
||||
sidekiq (~> 3.3)
|
||||
sidetiq (= 0.6.3)
|
||||
@@ -887,6 +895,3 @@ DEPENDENCIES
|
||||
virtus
|
||||
webmock (~> 1.21.0)
|
||||
wikicloth (= 0.8.1)
|
||||
|
||||
BUNDLED WITH
|
||||
1.10.6
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
[](https://ci.gitlab.com/projects/1?ref=master)
|
||||
[](https://semaphoreci.com/gitlabhq/gitlabhq)
|
||||
[](https://codeclimate.com/github/gitlabhq/gitlabhq)
|
||||
[](https://coveralls.io/r/gitlabhq/gitlabhq?branch=master)
|
||||
[](https://coveralls.io/r/gitlabhq/gitlabhq?branch=master)
|
||||
|
||||
## Canonical source
|
||||
|
||||
|
||||
Executable
+92
@@ -0,0 +1,92 @@
|
||||
Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
class @Activities
|
||||
constructor: ->
|
||||
Pager.init 20, true
|
||||
$(".event_filter_link").bind "click", (event) =>
|
||||
$(".event-filter .btn").bind "click", (event) =>
|
||||
event.preventDefault()
|
||||
@toggleFilter($(event.currentTarget))
|
||||
@reloadActivities()
|
||||
@@ -12,7 +12,7 @@ class @Activities
|
||||
|
||||
|
||||
toggleFilter: (sender) ->
|
||||
sender.parent().toggleClass "active"
|
||||
sender.toggleClass "active"
|
||||
event_filters = $.cookie("event_filter")
|
||||
filter = sender.attr("id").split("_")[0]
|
||||
if event_filters
|
||||
|
||||
@@ -94,18 +94,20 @@ window.unbindEvents = ->
|
||||
$(document).off('scroll')
|
||||
|
||||
window.shiftWindow = ->
|
||||
scrollBy 0, -50
|
||||
scrollBy 0, -100
|
||||
|
||||
document.addEventListener("page:fetch", unbindEvents)
|
||||
|
||||
# Scroll the window to avoid the topnav bar
|
||||
# https://github.com/twitter/bootstrap/issues/1768
|
||||
if location.hash
|
||||
setTimeout shiftWindow, 1
|
||||
window.addEventListener "hashchange", shiftWindow
|
||||
|
||||
$.timeago.settings.allowFuture = true
|
||||
|
||||
window.onload = ->
|
||||
# Scroll the window to avoid the topnav bar
|
||||
# https://github.com/twitter/bootstrap/issues/1768
|
||||
if location.hash
|
||||
setTimeout shiftWindow, 100
|
||||
|
||||
$ ->
|
||||
$(".nicescroll").niceScroll(cursoropacitymax: '0.4', cursorcolor: '#FFF', cursorborder: "1px solid #FFF")
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
class @BlobFileDropzone
|
||||
constructor: (form, method) ->
|
||||
form_dropzone = form.find('.dropzone')
|
||||
Dropzone.autoDiscover = false
|
||||
dropzone = form_dropzone.dropzone(
|
||||
autoDiscover: false
|
||||
autoProcessQueue: false
|
||||
url: form.attr('action')
|
||||
# Rails uses a hidden input field for PUT
|
||||
# http://stackoverflow.com/questions/21056482/how-to-set-method-put-in-form-tag-in-rails
|
||||
method: method
|
||||
clickable: true
|
||||
uploadMultiple: false
|
||||
paramName: "file"
|
||||
maxFilesize: gon.max_file_size or 10
|
||||
parallelUploads: 1
|
||||
maxFiles: 1
|
||||
addRemoveLinks: true
|
||||
previewsContainer: '.dropzone-previews'
|
||||
headers:
|
||||
"X-CSRF-Token": $("meta[name=\"csrf-token\"]").attr("content")
|
||||
|
||||
init: ->
|
||||
this.on 'addedfile', (file) ->
|
||||
$('.dropzone-alerts').html('').hide()
|
||||
commit_message = form.find('#commit_message')[0]
|
||||
|
||||
if /^Upload/.test(commit_message.placeholder)
|
||||
commit_message.placeholder = 'Upload ' + file.name
|
||||
|
||||
return
|
||||
|
||||
this.on 'removedfile', (file) ->
|
||||
commit_message = form.find('#commit_message')[0]
|
||||
|
||||
if /^Upload/.test(commit_message.placeholder)
|
||||
commit_message.placeholder = 'Upload new file'
|
||||
|
||||
return
|
||||
|
||||
this.on 'success', (header, response) ->
|
||||
window.location.href = response.filePath
|
||||
return
|
||||
|
||||
this.on 'maxfilesexceeded', (file) ->
|
||||
@removeFile file
|
||||
return
|
||||
|
||||
this.on 'sending', (file, xhr, formData) ->
|
||||
formData.append('commit_message', form.find('#commit_message').val())
|
||||
return
|
||||
|
||||
# Override behavior of adding error underneath preview
|
||||
error: (file, errorMessage) ->
|
||||
stripped = $("<div/>").html(errorMessage).text();
|
||||
$('.dropzone-alerts').html('Error uploading file: \"' + stripped + '\"').show()
|
||||
@removeFile file
|
||||
return
|
||||
)
|
||||
|
||||
submitButton = form.find('#submit-all')[0]
|
||||
submitButton.addEventListener 'click', (e) ->
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
alert "Please select a file" if dropzone[0].dropzone.getQueuedFiles().length == 0
|
||||
dropzone[0].dropzone.processQueue()
|
||||
return false
|
||||
@@ -55,7 +55,6 @@ class Dispatcher
|
||||
new Activities()
|
||||
when 'dashboard:projects:starred'
|
||||
new Activities()
|
||||
new ProjectsList()
|
||||
when 'projects:commit:show'
|
||||
new Commit()
|
||||
new Diff()
|
||||
@@ -70,7 +69,6 @@ class Dispatcher
|
||||
when 'groups:show'
|
||||
new Activities()
|
||||
shortcut_handler = new ShortcutsNavigation()
|
||||
new ProjectsList()
|
||||
when 'groups:group_members:index'
|
||||
new GroupMembers()
|
||||
new UsersSelect()
|
||||
@@ -100,8 +98,6 @@ class Dispatcher
|
||||
new GroupsSelect()
|
||||
when 'admin:emails:show'
|
||||
new AdminEmailSelect()
|
||||
when 'admin:users:show'
|
||||
new ProjectsList()
|
||||
|
||||
switch path.first()
|
||||
when 'admin'
|
||||
|
||||
@@ -167,6 +167,7 @@ class @DropzoneInput
|
||||
dataType: "json"
|
||||
).success (data) ->
|
||||
preview.html data.body
|
||||
preview.syntaxHighlight()
|
||||
|
||||
renderReferencedUsers data.references.users
|
||||
|
||||
|
||||
@@ -122,7 +122,9 @@ class @Notes
|
||||
# or skip if rendered
|
||||
if @isNewNote(note)
|
||||
@note_ids.push(note.id)
|
||||
$('ul.main-notes-list').append(note.html)
|
||||
$('ul.main-notes-list').
|
||||
append(note.html).
|
||||
syntaxHighlight()
|
||||
@initTaskList()
|
||||
|
||||
###
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# Syntax Highlighter
|
||||
#
|
||||
# Applies a syntax highlighting color scheme CSS class to any element with the
|
||||
# `js-syntax-highlight` class
|
||||
#
|
||||
# ### Example Markup
|
||||
#
|
||||
# <div class="js-syntax-highlight"></div>
|
||||
#
|
||||
$.fn.syntaxHighlight = ->
|
||||
if $(this).hasClass('js-syntax-highlight')
|
||||
# Given the element itself, apply highlighting
|
||||
$(this).addClass(gon.user_color_scheme)
|
||||
else
|
||||
# Given a parent element, recurse to any of its applicable children
|
||||
$children = $(this).find('.js-syntax-highlight')
|
||||
$children.syntaxHighlight() if $children.length
|
||||
|
||||
$(document).on 'ready page:load', ->
|
||||
$('.js-syntax-highlight').syntaxHighlight()
|
||||
@@ -38,6 +38,8 @@ class @ZenMode
|
||||
@active_checkbox = $(checkbox)
|
||||
@active_checkbox.prop('checked', true)
|
||||
@active_zen_area = @active_checkbox.parent().find('textarea')
|
||||
# Prevent a user-resized textarea from persisting to fullscreen
|
||||
@active_zen_area.removeAttr('style')
|
||||
@active_zen_area.focus()
|
||||
|
||||
exitZenMode: =>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
*/
|
||||
|
||||
|
||||
@import "base/fonts";
|
||||
@import "base/variables";
|
||||
@import "base/mixins";
|
||||
@import "base/layout";
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), font-url('SourceSansPro-Light.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), font-url('SourceSansPro-Regular.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: local('Source Sans Pro Semibold'), local('SourceSansPro-Semibold'), font-url('SourceSansPro-Semibold.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), font-url('SourceSansPro-Bold.ttf');
|
||||
}
|
||||
@@ -85,14 +85,14 @@
|
||||
// Labels
|
||||
.label {
|
||||
padding: 2px 4px;
|
||||
font-size: 12px;
|
||||
font-size: 13px;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
|
||||
&.label-gray {
|
||||
background-color: #eee;
|
||||
color: #999;
|
||||
background-color: #f8fafc;
|
||||
color: $gl-gray;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
@@ -156,10 +156,16 @@
|
||||
* Add some extra stuff to panels
|
||||
*
|
||||
*/
|
||||
.panel {
|
||||
.panel-heading {
|
||||
font-weight: bold;
|
||||
|
||||
.container-blank .panel .panel-heading {
|
||||
font-size: 17px;
|
||||
line-height: 38px;
|
||||
}
|
||||
|
||||
.panel {
|
||||
box-shadow: none;
|
||||
|
||||
.panel-heading {
|
||||
.panel-head-actions {
|
||||
position: relative;
|
||||
top: -5px;
|
||||
@@ -182,6 +188,10 @@
|
||||
.pagination {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.btn {
|
||||
min-width: 124px;
|
||||
}
|
||||
}
|
||||
|
||||
&.panel-small {
|
||||
@@ -209,6 +219,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
.alert-help {
|
||||
background-color: $background-color;
|
||||
border: 1px solid $border-color;
|
||||
color: $gl-gray;
|
||||
}
|
||||
|
||||
// Typography =================================================================
|
||||
|
||||
.text-primary,
|
||||
|
||||
@@ -22,6 +22,10 @@ $brand-info: $gl-info;
|
||||
$brand-warning: $gl-warning;
|
||||
$brand-danger: $gl-danger;
|
||||
|
||||
$border-radius-base: 3px !default;
|
||||
$border-radius-large: 5px !default;
|
||||
$border-radius-small: 2px !default;
|
||||
|
||||
|
||||
//== Scaffolding
|
||||
//
|
||||
@@ -42,17 +46,18 @@ $font-size-base: $gl-font-size;
|
||||
//
|
||||
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
|
||||
|
||||
$padding-base-vertical: 6px;
|
||||
$padding-base-horizontal: 14px;
|
||||
|
||||
$padding-base-vertical: 9px;
|
||||
$padding-base-horizontal: $gl-padding;
|
||||
$component-active-color: #fff;
|
||||
$component-active-bg: $brand-info;
|
||||
|
||||
//== Forms
|
||||
//
|
||||
//##
|
||||
|
||||
$input-color: $text-color;
|
||||
$input-border: #DDD;
|
||||
$input-border-focus: $brand-info;
|
||||
$input-border: #e7e9ed;
|
||||
$input-border-focus: #7F8FA4;
|
||||
$legend-color: $text-color;
|
||||
|
||||
|
||||
@@ -109,11 +114,12 @@ $alert-border-radius: 0;
|
||||
//
|
||||
//##
|
||||
|
||||
$panel-border-radius: 0;
|
||||
$panel-default-text: $text-color;
|
||||
$panel-default-border: $border-color;
|
||||
$panel-default-heading-bg: $background-color;
|
||||
|
||||
$panel-border-radius: 2px;
|
||||
$panel-default-text: $text-color;
|
||||
$panel-default-border: $border-color;
|
||||
$panel-default-heading-bg: $background-color;
|
||||
$panel-footer-bg: $background-color;
|
||||
$panel-inner-border: $border-color;
|
||||
|
||||
//== Wells
|
||||
//
|
||||
@@ -131,3 +137,22 @@ $code-bg: #f9f2f4;
|
||||
|
||||
$kbd-color: #fff;
|
||||
$kbd-bg: #333;
|
||||
|
||||
//== Buttons
|
||||
//
|
||||
//##
|
||||
$btn-default-color: $gl-text-color;
|
||||
$btn-default-bg: #fff;
|
||||
$btn-default-border: #e7e9ed;
|
||||
|
||||
//== Nav
|
||||
//
|
||||
//##
|
||||
$nav-link-padding: 13px $gl-padding;
|
||||
|
||||
//== Code
|
||||
//
|
||||
//##
|
||||
$pre-bg: #f8fafc !default;
|
||||
$pre-color: $gl-gray !default;
|
||||
$pre-border-color: #e7e9ed;
|
||||
|
||||
@@ -21,7 +21,6 @@ html {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
|
||||
.container-limited {
|
||||
max-width: $fixed-layout-width;
|
||||
}
|
||||
|
||||
@@ -55,8 +55,11 @@
|
||||
}
|
||||
|
||||
@mixin md-typography {
|
||||
font-size: 15px;
|
||||
line-height: 1.5;
|
||||
color: $md-text-color;
|
||||
|
||||
a {
|
||||
color: $md-link-color;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
@@ -157,3 +160,94 @@
|
||||
white-space: nowrap;
|
||||
max-width: $max_width;
|
||||
}
|
||||
|
||||
/*
|
||||
* Base mixin for lists in GitLab
|
||||
*/
|
||||
@mixin basic-list {
|
||||
margin: 5px 0px;
|
||||
padding: 0px;
|
||||
list-style: none;
|
||||
|
||||
> li {
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
margin: 0px;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: #f9f9f9;
|
||||
a {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
&.hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.light {
|
||||
a {
|
||||
color: $gl-gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin input-big {
|
||||
height: 36px;
|
||||
padding: 5px 10px;
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
color: #7f8fa4;
|
||||
background-color: #fff;
|
||||
border-color: #e7e9ed;
|
||||
}
|
||||
|
||||
@mixin btn-big {
|
||||
height: 36px;
|
||||
padding: 5px 10px;
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
@mixin nav-menu {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
margin-top: 5px;
|
||||
height: 56px;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
|
||||
a {
|
||||
padding: 14px;
|
||||
font-size: 17px;
|
||||
line-height: 28px;
|
||||
color: #7f8fa4;
|
||||
border-bottom: 2px solid transparent;
|
||||
|
||||
&:hover, &:active, &:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.active a {
|
||||
color: #4c4e54;
|
||||
border-bottom: 2px solid #1cacfc;
|
||||
}
|
||||
|
||||
.badge {
|
||||
font-weight: normal;
|
||||
background-color: #fff;
|
||||
background-color: #eee;
|
||||
color: #78a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
$style_color: #474D57;
|
||||
$hover: #FFFAF1;
|
||||
$gl-text-color: #222222;
|
||||
$gl-link-color: #446e9b;
|
||||
$gl-text-color: #54565b;
|
||||
$gl-header-color: #4c4e54;
|
||||
$gl-link-color: #333c48;
|
||||
$md-text-color: #444;
|
||||
$md-link-color: #3084bb;
|
||||
$nprogress-color: #c0392b;
|
||||
$gl-font-size: 14px;
|
||||
$gl-font-size: 15px;
|
||||
$list-font-size: 15px;
|
||||
$sidebar_collapsed_width: 52px;
|
||||
$sidebar_collapsed_width: 62px;
|
||||
$sidebar_width: 230px;
|
||||
$avatar_radius: 50%;
|
||||
$code_font_size: 13px;
|
||||
$code_line_height: 1.5;
|
||||
$border-color: #E5E5E5;
|
||||
$background-color: #f5f5f5;
|
||||
$header-height: 50px;
|
||||
$border-color: #E7E9ED;
|
||||
$background-color: #F8FAFC;
|
||||
$header-height: 58px;
|
||||
$fixed-layout-width: 1200px;
|
||||
$gl-gray: #7f8fa4;
|
||||
$gl-padding: 16px;
|
||||
$gl-avatar-size: 46px;
|
||||
|
||||
|
||||
/*
|
||||
* State colors:
|
||||
*/
|
||||
$gl-primary: #446e9b;
|
||||
$gl-success: #019875;
|
||||
$gl-info: #029ACF;
|
||||
$gl-success: #44c679;
|
||||
$gl-info: #00aaff;
|
||||
$gl-warning: #EB9532;
|
||||
$gl-danger: #d9534f;
|
||||
|
||||
@@ -35,4 +40,4 @@ $deleted: #f77;
|
||||
* Fonts
|
||||
*/
|
||||
$monospace_font: 'Menlo', 'Liberation Mono', 'Consolas', 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;
|
||||
$regular_font: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
$regular_font: 'Source Sans Pro', "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
|
||||
@@ -23,8 +23,12 @@
|
||||
&.s24 { width: 24px; height: 24px; margin-right: 8px; }
|
||||
&.s26 { width: 26px; height: 26px; margin-right: 8px; }
|
||||
&.s32 { width: 32px; height: 32px; margin-right: 10px; }
|
||||
&.s36 { width: 36px; height: 36px; margin-right: 10px; }
|
||||
&.s46 { width: 46px; height: 46px; margin-right: 15px; }
|
||||
&.s48 { width: 48px; height: 48px; margin-right: 10px; }
|
||||
&.s60 { width: 60px; height: 60px; margin-right: 12px; }
|
||||
&.s90 { width: 90px; height: 90px; margin-right: 15px; }
|
||||
&.s140 { width: 140px; height: 140px; margin-right: 20px; }
|
||||
&.s160 { width: 160px; height: 160px; margin-right: 20px; }
|
||||
}
|
||||
|
||||
@@ -38,5 +42,6 @@
|
||||
&.s32 { font-size: 22px; line-height: 32px; }
|
||||
&.s60 { font-size: 32px; line-height: 60px; }
|
||||
&.s90 { font-size: 36px; line-height: 90px; }
|
||||
&.s160 { font-size: 96px; line-height: 1.33; }
|
||||
&.s140 { font-size: 72px; line-height: 140px; }
|
||||
&.s160 { font-size: 96px; line-height: 160px; }
|
||||
}
|
||||
|
||||
@@ -1,19 +1,61 @@
|
||||
.light-well {
|
||||
background: #f9f9f9;
|
||||
background-color: #f8fafc;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.centered-light-block {
|
||||
text-align: center;
|
||||
color: #888;
|
||||
color: $gl-gray;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
.nothing-here-block {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
color: #666;
|
||||
color: $gl-gray;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.gray-content-block {
|
||||
margin: -$gl-padding;
|
||||
background-color: #f8fafc;
|
||||
padding: $gl-padding;
|
||||
margin-bottom: 0px;
|
||||
border-top: 1px solid #e7e9ed;
|
||||
border-bottom: 1px solid #e7e9ed;
|
||||
color: $gl-gray;
|
||||
|
||||
&.top-block {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
&.middle-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
&.clear-block {
|
||||
margin-bottom: $gl-padding - 1px;
|
||||
padding-bottom: $gl-padding;
|
||||
}
|
||||
|
||||
&.second-block {
|
||||
margin-top: -1px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
&.footer-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: -$gl-padding;
|
||||
}
|
||||
|
||||
.title {
|
||||
color: $gl-text-color;
|
||||
}
|
||||
|
||||
.oneline {
|
||||
line-height: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
}
|
||||
|
||||
&.btn-save {
|
||||
@extend .btn-primary;
|
||||
@extend .btn-success;
|
||||
}
|
||||
|
||||
&.btn-remove {
|
||||
@@ -72,3 +72,19 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group-next {
|
||||
.btn {
|
||||
padding: 9px 0px;
|
||||
font-size: 15px;
|
||||
color: #7f8fa4;
|
||||
border-color: #e7e9ed;
|
||||
width: 140px;
|
||||
|
||||
&.active {
|
||||
border-color: $gl-info;
|
||||
background: $gl-info;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/** COLORS **/
|
||||
.cgray { color: gray }
|
||||
.cgray { color: $gl-gray; }
|
||||
.clgray { color: #BBB }
|
||||
.cred { color: #D12F19 }
|
||||
.cgreen { color: #4a2 }
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
/** COMMON CLASSES **/
|
||||
.prepend-top-10 { margin-top:10px }
|
||||
.prepend-top-default { margin-top: $gl-padding; }
|
||||
.prepend-top-20 { margin-top:20px }
|
||||
.prepend-left-10 { margin-left:10px }
|
||||
.prepend-left-20 { margin-left:20px }
|
||||
@@ -20,10 +21,10 @@
|
||||
|
||||
.underlined-link { text-decoration: underline; }
|
||||
.hint { font-style: italic; color: #999; }
|
||||
.light { color: #888 }
|
||||
.light { color: $gl-gray; }
|
||||
|
||||
.slead {
|
||||
color: #666;
|
||||
color: $gl-gray;
|
||||
font-size: 15px;
|
||||
margin-bottom: 12px;
|
||||
font-weight: normal;
|
||||
@@ -74,8 +75,6 @@ pre {
|
||||
color: $gl-link-color;
|
||||
}
|
||||
|
||||
.help li { color:$style_color; }
|
||||
|
||||
.back-link {
|
||||
font-size: 14px;
|
||||
}
|
||||
@@ -132,10 +131,6 @@ p.time {
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.highlight_word {
|
||||
background: #fafe3d;
|
||||
}
|
||||
|
||||
.thin_area{
|
||||
height: 150px;
|
||||
}
|
||||
@@ -316,7 +311,7 @@ table {
|
||||
}
|
||||
|
||||
.btn-sign-in {
|
||||
margin-top: 7px;
|
||||
margin-top: 15px;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
@@ -368,14 +363,14 @@ table {
|
||||
}
|
||||
|
||||
.description {
|
||||
font-size: 16px;
|
||||
font-size: $gl-font-size;
|
||||
color: #666;
|
||||
margin-top: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.profiler-results {
|
||||
top: 50px !important;
|
||||
top: 73px !important;
|
||||
|
||||
.profiler-button,
|
||||
.profiler-controls {
|
||||
@@ -384,21 +379,23 @@ table {
|
||||
}
|
||||
|
||||
.center-top-menu {
|
||||
border-bottom: 1px solid #EEE;
|
||||
list-style: none;
|
||||
@include nav-menu;
|
||||
text-align: center;
|
||||
padding-bottom: 15px;
|
||||
margin-bottom: 15px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: $gl-padding;
|
||||
height: 56px;
|
||||
margin-top: -$gl-padding;
|
||||
padding-top: $gl-padding;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
|
||||
a {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
&.active a {
|
||||
color: #666;
|
||||
}
|
||||
&.no-bottom {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-progress {
|
||||
border-color: $border-color !important;
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-progress .dz-upload {
|
||||
background: $gl-success !important;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,11 @@
|
||||
*
|
||||
*/
|
||||
.file-holder {
|
||||
border: 1px solid $border-color;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
border: none;
|
||||
border-top: 1px solid #E7E9EE;
|
||||
border-bottom: 1px solid #E7E9EE;
|
||||
margin-bottom: 1em;
|
||||
|
||||
table {
|
||||
@@ -49,7 +53,7 @@
|
||||
}
|
||||
|
||||
&.wiki {
|
||||
padding: 25px;
|
||||
padding: $gl-padding;
|
||||
|
||||
.highlight {
|
||||
margin-bottom: 9px;
|
||||
@@ -90,7 +94,7 @@
|
||||
border-right: none;
|
||||
}
|
||||
background: #fff;
|
||||
padding: 8px;
|
||||
padding: 10px $gl-padding;
|
||||
}
|
||||
.lines {
|
||||
pre {
|
||||
@@ -100,6 +104,33 @@
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
img.avatar {
|
||||
border: 0 none;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
td.blame-commit {
|
||||
background: #f9f9f9;
|
||||
min-width: 350px;
|
||||
|
||||
.commit-author-link {
|
||||
color: #888;
|
||||
}
|
||||
}
|
||||
td.blame-numbers {
|
||||
pre {
|
||||
color: #AAA;
|
||||
white-space: pre;
|
||||
}
|
||||
background: #f1f1f1;
|
||||
border-left: 1px solid #DDD;
|
||||
}
|
||||
td.lines {
|
||||
code {
|
||||
font-family: $monospace_font;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.logs {
|
||||
|
||||
@@ -2,31 +2,6 @@
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.issues-state-filters {
|
||||
li.active a {
|
||||
border-color: #DDD !important;
|
||||
|
||||
&, &:hover, &:active, &.active {
|
||||
background: #f5f5f5 !important;
|
||||
border-bottom: 1px solid #f5f5f5 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.issues-details-filters {
|
||||
font-size: 13px;
|
||||
background: #f5f5f5;
|
||||
margin: -10px 0;
|
||||
padding: 10px 15px;
|
||||
margin-top: -15px;
|
||||
border-left: 1px solid #DDD;
|
||||
border-right: 1px solid #DDD;
|
||||
|
||||
.btn {
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 800px) {
|
||||
.issues-filters,
|
||||
.issues_bulk_update {
|
||||
|
||||
@@ -24,29 +24,28 @@ header {
|
||||
z-index: 100;
|
||||
margin-bottom: 0;
|
||||
min-height: $header-height;
|
||||
background-color: #fff;
|
||||
border: none;
|
||||
border-bottom: 1px solid #EEE;
|
||||
|
||||
.container-fluid {
|
||||
background: #FFF;
|
||||
width: 100% !important;
|
||||
filter: none;
|
||||
padding: 0;
|
||||
|
||||
.nav > li > a {
|
||||
color: #888;
|
||||
font-size: 14px;
|
||||
color: #7f8fa4;
|
||||
font-size: 18px;
|
||||
padding: 0;
|
||||
background-color: #f5f5f5;
|
||||
margin: ($header-height - 28) / 2 0;
|
||||
margin-left: 10px;
|
||||
border-radius: 40px;
|
||||
height: 28px;
|
||||
width: 28px;
|
||||
line-height: 28px;
|
||||
text-align: center;
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
background-color: #EEE;
|
||||
background-color: #FFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +55,7 @@ header {
|
||||
border-radius: 0;
|
||||
position: absolute;
|
||||
right: 2px;
|
||||
top: 15px;
|
||||
|
||||
&:hover {
|
||||
background-color: #EEE;
|
||||
@@ -70,16 +70,16 @@ header {
|
||||
.title {
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
font-size: 18px;
|
||||
font-size: 19px;
|
||||
line-height: $header-height;
|
||||
font-weight: bold;
|
||||
color: #444;
|
||||
font-weight: normal;
|
||||
color: #4c4e54;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: top;
|
||||
white-space: nowrap;
|
||||
|
||||
a {
|
||||
color: #444;
|
||||
color: #4c4e54;
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
@@ -94,7 +94,7 @@ header {
|
||||
.search {
|
||||
margin-right: 10px;
|
||||
margin-left: 10px;
|
||||
margin-top: ($header-height - 28) / 2;
|
||||
margin-top: ($header-height - 36) / 2;
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
@@ -105,13 +105,8 @@ header {
|
||||
width: 220px;
|
||||
background-image: image-url("icon-search.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px;
|
||||
height: inherit;
|
||||
padding: 4px 6px;
|
||||
padding-left: 25px;
|
||||
font-size: 13px;
|
||||
background-color: #f5f5f5;
|
||||
border-color: #f5f5f5;
|
||||
background-position: 195px;
|
||||
@include input-big;
|
||||
|
||||
&:focus {
|
||||
@include box-shadow(none);
|
||||
|
||||
@@ -5,10 +5,13 @@
|
||||
*/
|
||||
|
||||
.issue-box {
|
||||
@include border-radius(3px);
|
||||
|
||||
display: inline-block;
|
||||
padding: 4px 13px;
|
||||
padding: 10px $gl-padding;
|
||||
font-weight: normal;
|
||||
margin-right: 5px;
|
||||
margin-right: 10px;
|
||||
font-size: $gl-font-size;
|
||||
|
||||
&.issue-box-closed {
|
||||
background-color: $gl-danger;
|
||||
@@ -21,7 +24,7 @@
|
||||
}
|
||||
|
||||
&.issue-box-open {
|
||||
background-color: $gl-success;
|
||||
background-color: #019875;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,8 +49,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.author { color: #999; }
|
||||
|
||||
.list-item-name {
|
||||
float: left;
|
||||
position: relative;
|
||||
@@ -71,15 +69,6 @@
|
||||
font-size: $list-font-size;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.row_title {
|
||||
color: $gray-dark;
|
||||
|
||||
&:hover {
|
||||
color: $text-color;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,28 +82,12 @@ ol, ul {
|
||||
|
||||
/** light list with border-bottom between li **/
|
||||
ul.bordered-list {
|
||||
margin: 5px 0px;
|
||||
padding: 0px;
|
||||
li {
|
||||
padding: 5px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
margin: 0px;
|
||||
&:last-child { border:none }
|
||||
&.active {
|
||||
background: #f9f9f9;
|
||||
a { font-weight: bold; }
|
||||
}
|
||||
|
||||
&.light {
|
||||
a { color: #777; }
|
||||
}
|
||||
}
|
||||
@include basic-list;
|
||||
|
||||
&.top-list {
|
||||
li:first-child {
|
||||
padding-top: 0;
|
||||
|
||||
h4, h5 {
|
||||
margin-top: 0;
|
||||
}
|
||||
@@ -125,3 +98,28 @@ ul.bordered-list {
|
||||
li.task-list-item {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
ul.content-list {
|
||||
@include basic-list;
|
||||
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
> li {
|
||||
padding: $gl-padding;
|
||||
border-color: #f1f2f4;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
color: $gl-gray;
|
||||
|
||||
.avatar {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.controls {
|
||||
padding-top: 10px;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,8 +65,11 @@
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.md-header ul {
|
||||
float: left;
|
||||
.md-header {
|
||||
ul {
|
||||
float: left;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
.referenced-users {
|
||||
@@ -80,7 +83,7 @@
|
||||
.md-preview-holder {
|
||||
background: #FFF;
|
||||
border: 1px solid #ddd;
|
||||
min-height: 100px;
|
||||
min-height: 169px;
|
||||
padding: 5px;
|
||||
box-shadow: none;
|
||||
}
|
||||
@@ -105,7 +108,7 @@
|
||||
.markdown-area {
|
||||
background: #FFF;
|
||||
border: 1px solid #ddd;
|
||||
min-height: 100px;
|
||||
min-height: 140px;
|
||||
padding: 5px;
|
||||
box-shadow: none;
|
||||
width: 100%;
|
||||
|
||||
@@ -80,6 +80,23 @@
|
||||
%ul.notes .note-role, .note-actions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.center-top-menu {
|
||||
height: 45px;
|
||||
|
||||
li a {
|
||||
font-size: 14px;
|
||||
padding: 19px 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.projects-search-form {
|
||||
margin: 0 -5px !important;
|
||||
|
||||
.btn {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-sm-max) {
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
.select2-choice {
|
||||
background: #FFF;
|
||||
border-color: #DDD;
|
||||
height: 34px;
|
||||
padding: 6px 14px;
|
||||
font-size: 14px;
|
||||
height: 42px;
|
||||
padding: 8px $gl-padding;
|
||||
font-size: $gl-font-size;
|
||||
line-height: 1.42857143;
|
||||
|
||||
@include border-radius(4px);
|
||||
@@ -13,7 +13,7 @@
|
||||
.select2-arrow {
|
||||
background: #FFF;
|
||||
border-left: none;
|
||||
padding-top: 3px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,14 +18,28 @@
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
min-height: 100vh;
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
background: #FFF;
|
||||
background: #f1f4f8;
|
||||
|
||||
.container-fluid {
|
||||
background: #FFF;
|
||||
padding: $gl-padding;
|
||||
border: 1px solid #e7e9ed;
|
||||
min-height: 90vh;
|
||||
|
||||
&.container-blank {
|
||||
background: none;
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-sidebar {
|
||||
margin-top: 29 + $header-height;
|
||||
margin-bottom: 50px;
|
||||
margin-top: 14 + $header-height;
|
||||
margin-bottom: 100px;
|
||||
transition-duration: .3s;
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
@@ -43,13 +57,14 @@
|
||||
}
|
||||
|
||||
a {
|
||||
padding: 8px 15px;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
padding: 7px 15px;
|
||||
font-size: $gl-font-size;
|
||||
line-height: 24px;
|
||||
color: $gray;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
padding-left: 16px;
|
||||
padding-left: 22px;
|
||||
font-weight: normal;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
@@ -60,9 +75,9 @@
|
||||
}
|
||||
|
||||
i {
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
color: $gray-light;
|
||||
margin-right: 23px;
|
||||
margin-right: 13px;
|
||||
}
|
||||
|
||||
.count {
|
||||
@@ -108,41 +123,59 @@
|
||||
}
|
||||
|
||||
@mixin folded-sidebar {
|
||||
padding-left: 50px;
|
||||
padding-left: 60px;
|
||||
transition-duration: .3s;
|
||||
|
||||
.sidebar-wrapper {
|
||||
width: $sidebar_collapsed_width;
|
||||
|
||||
.header-logo {
|
||||
width: $sidebar_collapsed_width;
|
||||
|
||||
a {
|
||||
padding-left: 12px;
|
||||
|
||||
.gitlab-text-container {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-sidebar {
|
||||
width: $sidebar_collapsed_width;
|
||||
|
||||
li a {
|
||||
padding-left: 16px;
|
||||
span {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.collapse-nav a {
|
||||
left: 0px;
|
||||
width: $sidebar_collapsed_width;
|
||||
}
|
||||
|
||||
.sidebar-user {
|
||||
padding-left: 12px;
|
||||
width: $sidebar_collapsed_width;
|
||||
|
||||
.username {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.collapse-nav a {
|
||||
width: $sidebar_width;
|
||||
position: fixed;
|
||||
top: $header-height;
|
||||
left: 198px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
font-size: 13px;
|
||||
background: transparent;
|
||||
width: 32px;
|
||||
height: 28px;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
line-height: 28px;
|
||||
line-height: 40px;
|
||||
transition-duration: .3s;
|
||||
}
|
||||
|
||||
@@ -176,16 +209,18 @@
|
||||
}
|
||||
|
||||
.sidebar-user {
|
||||
padding: 9px 22px;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
bottom: 40px;
|
||||
width: $sidebar_width;
|
||||
padding: 10px;
|
||||
overflow: hidden;
|
||||
transition-duration: .3s;
|
||||
|
||||
.username {
|
||||
margin-top: 5px;
|
||||
margin-left: 10px;
|
||||
width: $sidebar_width - 2 * 10px;
|
||||
font-size: 16px;
|
||||
line-height: 34px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,7 +237,7 @@
|
||||
float: left;
|
||||
height: $header-height;
|
||||
width: 100%;
|
||||
padding: ($header-height - 36 ) / 2 8px;
|
||||
padding: 10px 22px;
|
||||
overflow: hidden;
|
||||
|
||||
img {
|
||||
@@ -219,8 +254,8 @@
|
||||
float: left;
|
||||
margin: 0;
|
||||
margin-left: 14px;
|
||||
font-size: 18px;
|
||||
line-height: $header-height - 14;
|
||||
font-size: 19px;
|
||||
line-height: 41px;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,119 +1,50 @@
|
||||
.timeline {
|
||||
list-style: none;
|
||||
padding: 20px 0 20px;
|
||||
position: relative;
|
||||
@include basic-list;
|
||||
|
||||
&:before {
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
content: " ";
|
||||
width: 3px;
|
||||
background-color: #eeeeee;
|
||||
margin-left: 29px;
|
||||
}
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
.timeline-entry {
|
||||
position: relative;
|
||||
margin-top: 5px;
|
||||
margin-left: 30px;
|
||||
margin-bottom: 10px;
|
||||
clear: both;
|
||||
padding: $gl-padding;
|
||||
border-color: #f1f2f4;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
color: $gl-gray;
|
||||
border-bottom: 1px solid #f1f2f4;
|
||||
border-right: 1px solid #f1f2f4;
|
||||
|
||||
|
||||
&:target {
|
||||
.timeline-entry-inner .timeline-content {
|
||||
-webkit-animation:target-note 2s linear;
|
||||
background: $hover;
|
||||
}
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.timeline-entry-inner {
|
||||
position: relative;
|
||||
margin-left: -20px;
|
||||
.avatar {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
&:before, &:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
|
||||
.timeline-icon {
|
||||
margin-top: 2px;
|
||||
background: #fff;
|
||||
color: #737881;
|
||||
float: left;
|
||||
@include border-radius($avatar_radius);
|
||||
@include box-shadow(0 0 0 3px #EEE);
|
||||
overflow: hidden;
|
||||
|
||||
.avatar {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.timeline-content {
|
||||
position: relative;
|
||||
background: $background-color;
|
||||
padding: 10px 15px;
|
||||
margin-left: 60px;
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid;
|
||||
border-width: 9px 9px 9px 0;
|
||||
border-color: transparent $background-color transparent transparent;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
margin-left: -9px;
|
||||
}
|
||||
}
|
||||
.controls {
|
||||
padding-top: 10px;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.system-note .timeline-entry-inner {
|
||||
.timeline-icon {
|
||||
background: none;
|
||||
margin-left: 12px;
|
||||
margin-top: 0;
|
||||
@include box-shadow(none);
|
||||
|
||||
span {
|
||||
margin: 0 2px;
|
||||
font-size: 16px;
|
||||
color: #eeeeee;
|
||||
}
|
||||
.note-text {
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.timeline-content {
|
||||
background: none;
|
||||
margin-left: 45px;
|
||||
padding: 0px 15px;
|
||||
|
||||
&:after { border: 0; }
|
||||
|
||||
.note-header {
|
||||
span { font-size: 12px; }
|
||||
|
||||
.avatar {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.note-text {
|
||||
font-size: 12px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.system-note {
|
||||
.note-text {
|
||||
color: $gl-gray !important;
|
||||
}
|
||||
}
|
||||
|
||||
.diff-file {
|
||||
border: 1px solid $border-color;
|
||||
border-bottom: none;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-xs-max) {
|
||||
@@ -132,3 +63,8 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.discussion .timeline-entry {
|
||||
margin: 0;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: $gl-header-color;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/** CODE **/
|
||||
pre {
|
||||
font-family: $monospace_font;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
}
|
||||
|
||||
.zen-enter-link {
|
||||
color: #888;
|
||||
color: $gl-gray;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 4px;
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
.zen-leave-link {
|
||||
display: none;
|
||||
color: #888;
|
||||
color: $gl-text-color;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
|
||||
@@ -21,6 +21,12 @@ pre.code.highlight.dark,
|
||||
background-color: #557 !important;
|
||||
}
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #ffe792;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.hll { background-color: #373b41 }
|
||||
.c { color: #969896 } /* Comment */
|
||||
.err { color: #cc6666 } /* Error */
|
||||
|
||||
@@ -21,6 +21,12 @@ pre.code.monokai,
|
||||
background-color: #49483e !important;
|
||||
}
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #ffe792;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.hll { background-color: #49483e }
|
||||
.c { color: #75715e } /* Comment */
|
||||
.err { color: #960050; background-color: #1e0010 } /* Error */
|
||||
|
||||
@@ -21,6 +21,11 @@ pre.code.highlight.solarized-dark,
|
||||
background-color: #174652 !important;
|
||||
}
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #094554;
|
||||
}
|
||||
|
||||
/* Solarized Dark
|
||||
|
||||
For use with Jekyll and Pygments
|
||||
|
||||
@@ -21,6 +21,11 @@ pre.code.highlight.solarized-light,
|
||||
background-color: #ddd8c5 !important;
|
||||
}
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #eee8d5;
|
||||
}
|
||||
|
||||
/* Solarized Light
|
||||
|
||||
For use with Jekyll and Pygments
|
||||
|
||||
@@ -5,15 +5,19 @@ pre.code.highlight.white,
|
||||
background-color: #fff;
|
||||
color: #333;
|
||||
|
||||
pre.highlight,
|
||||
.line-numbers,
|
||||
.line-numbers a {
|
||||
background-color: $background-color !important;
|
||||
color: $gl-gray !important;
|
||||
}
|
||||
|
||||
pre.highlight {
|
||||
background-color: #fff !important;
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
pre.code {
|
||||
border-left: 1px solid #bbb;
|
||||
border-left: 1px solid $border-color;
|
||||
}
|
||||
|
||||
// highlight line via anchor
|
||||
@@ -21,6 +25,11 @@ pre.code.highlight.white,
|
||||
background-color: #f8eec7 !important;
|
||||
}
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #fafe3d;
|
||||
}
|
||||
|
||||
.hll { background-color: #f8f8f8 }
|
||||
.c { color: #999988; font-style: italic; }
|
||||
.err { color: #a61717; background-color: #e3d2d2; }
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
}
|
||||
|
||||
.appearance-light-logo-preview {
|
||||
background-color: $style_color;
|
||||
background-color: $background-color;
|
||||
max-width: 72px;
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
@@ -26,14 +26,6 @@
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.commit-stat-summary {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
padding: 3px 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.commit-info-row {
|
||||
margin-bottom: 10px;
|
||||
.avatar {
|
||||
@@ -47,11 +39,6 @@
|
||||
}
|
||||
|
||||
.commit-box {
|
||||
margin: 10px 0;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 20px 0;
|
||||
|
||||
.commit-title {
|
||||
margin: 0;
|
||||
}
|
||||
@@ -61,10 +48,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.file-stats a {
|
||||
color: $style_color;
|
||||
}
|
||||
|
||||
.file-stats {
|
||||
.new-file {
|
||||
a {
|
||||
|
||||
@@ -52,7 +52,7 @@ li.commit {
|
||||
}
|
||||
|
||||
.commit-row-message {
|
||||
color: #444;
|
||||
color: $gl-link-color;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
@@ -88,12 +88,12 @@ li.commit {
|
||||
}
|
||||
|
||||
.commit-row-info {
|
||||
color: #777;
|
||||
color: $gl-gray;
|
||||
line-height: 24px;
|
||||
font-size: 13px;
|
||||
|
||||
a {
|
||||
color: #777;
|
||||
color: $gl-gray;
|
||||
}
|
||||
|
||||
.committed_ago {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
.side {
|
||||
.panel {
|
||||
.panel-heading {
|
||||
background: #EEE;
|
||||
background: $background-color;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
border-top-left-radius: 0;
|
||||
@@ -38,11 +38,11 @@
|
||||
float: left;
|
||||
|
||||
.avatar {
|
||||
@include border-radius(0px);
|
||||
@include border-radius(50%);
|
||||
}
|
||||
|
||||
.identicon {
|
||||
line-height: 40px;
|
||||
line-height: 46px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
.diff-file {
|
||||
border: 1px solid $border-color;
|
||||
margin-bottom: 1em;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
border: none;
|
||||
border-bottom: 1px solid #E7E9EE;
|
||||
|
||||
.diff-header {
|
||||
position: relative;
|
||||
background: $background-color;
|
||||
border-bottom: 1px solid $border-color;
|
||||
padding: 10px 15px;
|
||||
padding: 10px 16px;
|
||||
color: #555;
|
||||
z-index: 10;
|
||||
|
||||
@@ -45,7 +47,7 @@
|
||||
overflow-y: hidden;
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
font-size: $code_font_size;
|
||||
|
||||
.old {
|
||||
span.idiff {
|
||||
background-color: #f8cbcb;
|
||||
@@ -82,7 +84,7 @@
|
||||
border: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
td {
|
||||
.line_holder td {
|
||||
line-height: $code_line_height;
|
||||
font-size: $code_font_size;
|
||||
}
|
||||
@@ -367,3 +369,7 @@
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.inline-parallel-buttons {
|
||||
float: right;
|
||||
margin-top: -5px;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ace_gutter-cell {
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
.cancel-btn {
|
||||
color: #B94A48;
|
||||
&:hover {
|
||||
@@ -32,14 +36,12 @@
|
||||
|
||||
.file-title {
|
||||
@extend .monospace;
|
||||
font-size: 14px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.editor-ref {
|
||||
background: $background-color;
|
||||
padding: 11px 15px;
|
||||
border-right: 1px solid #CCC;
|
||||
border-right: 1px solid $border-color;
|
||||
display: inline-block;
|
||||
margin: -5px -5px;
|
||||
margin-right: 10px;
|
||||
@@ -50,5 +52,15 @@
|
||||
display: inline-block;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
margin-top: -3px;
|
||||
}
|
||||
}
|
||||
|
||||
.form-actions {
|
||||
margin: -$gl-padding;
|
||||
margin-top: 0;
|
||||
padding: $gl-padding
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,70 +1,58 @@
|
||||
/**
|
||||
* Events labels
|
||||
*
|
||||
*/
|
||||
.event_label {
|
||||
&.pushed {
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
&.opened {
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
&.closed {
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
&.merged {
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
&.left,
|
||||
&.joined {
|
||||
padding: 0 2px;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Dashboard events feed
|
||||
*
|
||||
*/
|
||||
.event-item {
|
||||
&:first-child {
|
||||
padding-top: 0;
|
||||
}
|
||||
font-size: $gl-font-size;
|
||||
padding: $gl-padding;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
border-bottom: 1px solid #f1f2f4;
|
||||
color: #7f8fa4;
|
||||
|
||||
&.event-inline {
|
||||
.avatar {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.event-title {
|
||||
line-height: 44px;
|
||||
}
|
||||
|
||||
.event-item-timestamp {
|
||||
line-height: 44px;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: #4c4e54;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
padding: 12px 0px;
|
||||
border-bottom: 1px solid #eee;
|
||||
.event-title {
|
||||
max-width: 70%;
|
||||
@include str-truncated(calc(100% - 174px));
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
|
||||
.author_name {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
.event-body {
|
||||
font-size: 13px;
|
||||
margin-left: 35px;
|
||||
margin-left: 63px;
|
||||
margin-right: 80px;
|
||||
color: #777;
|
||||
|
||||
.event-note {
|
||||
margin-top: 5px;
|
||||
word-wrap: break-word;
|
||||
|
||||
.md {
|
||||
font-size: 13px;
|
||||
color: #7f8fa4;
|
||||
font-size: $gl-font-size;
|
||||
|
||||
iframe.twitter-share-button {
|
||||
vertical-align: bottom;
|
||||
@@ -94,7 +82,7 @@
|
||||
.event-note-icon {
|
||||
color: #777;
|
||||
float: left;
|
||||
font-size: 16px;
|
||||
font-size: $gl-font-size;
|
||||
line-height: 16px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
@@ -116,7 +104,7 @@
|
||||
&:last-child { border:none }
|
||||
|
||||
.event_commits {
|
||||
margin-top: 5px;
|
||||
margin-top: 9px;
|
||||
|
||||
li {
|
||||
&.commit {
|
||||
@@ -125,10 +113,12 @@
|
||||
padding-left: 0;
|
||||
border: none;
|
||||
.commit-row-title {
|
||||
font-size: 12px;
|
||||
font-size: $gl-font-size;
|
||||
}
|
||||
}
|
||||
|
||||
&.commits-stat {
|
||||
margin-top: 3px;
|
||||
display: block;
|
||||
padding: 3px;
|
||||
padding-left: 0;
|
||||
@@ -142,7 +132,6 @@
|
||||
|
||||
.event-item-timestamp {
|
||||
float: right;
|
||||
color: #999;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
@@ -186,12 +175,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.event_filter {
|
||||
li a {
|
||||
font-size: 13px;
|
||||
padding: 5px 10px;
|
||||
background: $background-color;
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
}
|
||||
|
||||
.issuable-context-title {
|
||||
font-size: 14px;
|
||||
line-height: 1.4;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.avatar {
|
||||
@@ -34,14 +32,50 @@
|
||||
}
|
||||
|
||||
label {
|
||||
color: #666;
|
||||
color: $gl-gray;
|
||||
font-weight: normal;
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.issuable-affix .context {
|
||||
font-size: 13px;
|
||||
.project-issuable-filter {
|
||||
.controls {
|
||||
float: right;
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
.btn { font-size: 13px; }
|
||||
.center-top-menu {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
.issuable-details {
|
||||
.page-title {
|
||||
margin-top: -15px;
|
||||
padding: 10px 0;
|
||||
margin-bottom: 0;
|
||||
color: $gl-gray;
|
||||
font-size: 16px;
|
||||
|
||||
.author {
|
||||
color: $gl-gray;
|
||||
}
|
||||
|
||||
.issue-id {
|
||||
font-size: 19px;
|
||||
color: $gl-text-color;
|
||||
}
|
||||
}
|
||||
|
||||
.issue-title {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin-top: 6px;
|
||||
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.issues-list {
|
||||
.issue {
|
||||
padding: 10px 15px;
|
||||
padding: 10px $gl-padding;
|
||||
position: relative;
|
||||
|
||||
.issue-title {
|
||||
@@ -10,8 +10,7 @@
|
||||
}
|
||||
|
||||
.issue-info {
|
||||
color: #999;
|
||||
font-size: 13px;
|
||||
color: $gl-gray;
|
||||
}
|
||||
|
||||
.issue-check {
|
||||
@@ -47,10 +46,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.participants {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.issue-search-form {
|
||||
margin: 0;
|
||||
height: 24px;
|
||||
@@ -137,11 +132,6 @@ form.edit-issue {
|
||||
}
|
||||
}
|
||||
|
||||
h2.issue-title {
|
||||
margin-top: 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.issue-form .select2-container {
|
||||
width: 250px !important;
|
||||
}
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
*
|
||||
*/
|
||||
.mr-state-widget {
|
||||
background: #FAFAFA;
|
||||
background: #f8fafc;
|
||||
margin-bottom: 20px;
|
||||
color: #666;
|
||||
border: 1px solid #e5e5e5;
|
||||
color: $gl-gray;
|
||||
border: 1px solid #eef0f2;
|
||||
@include box-shadow(0 1px 1px rgba(0, 0, 0, 0.05));
|
||||
@include border-radius(3px);
|
||||
|
||||
@@ -29,6 +29,14 @@
|
||||
padding: 5px;
|
||||
line-height: 20px;
|
||||
|
||||
&.right {
|
||||
float: right;
|
||||
padding-top: 12px;
|
||||
a {
|
||||
color: $gl-gray;
|
||||
}
|
||||
}
|
||||
|
||||
.remove_source_checkbox {
|
||||
margin: 0;
|
||||
}
|
||||
@@ -36,7 +44,7 @@
|
||||
}
|
||||
|
||||
.ci_widget {
|
||||
border-bottom: 1px solid #EEE;
|
||||
border-bottom: 1px solid #eef0f2;
|
||||
|
||||
i {
|
||||
margin-right: 4px;
|
||||
@@ -89,20 +97,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media(min-width: $screen-sm-max) {
|
||||
.merge-request .merge-request-tabs{
|
||||
li {
|
||||
a {
|
||||
padding: 15px 40px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.merge-request .merge-request-tabs{
|
||||
margin-top: 30px;
|
||||
margin-bottom: 20px;
|
||||
@include nav-menu;
|
||||
margin: -$gl-padding;
|
||||
padding: $gl-padding;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e7e9ed;
|
||||
margin-top: 18px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.mr_source_commit,
|
||||
@@ -136,8 +138,7 @@
|
||||
}
|
||||
|
||||
.merge-request-info {
|
||||
color: #999;
|
||||
font-size: 13px;
|
||||
color: $gl-gray;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,4 +6,8 @@ li.milestone {
|
||||
h4 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.progress {
|
||||
height: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,9 +72,13 @@
|
||||
|
||||
.common-note-form {
|
||||
margin: 0;
|
||||
background: #F9F9F9;
|
||||
padding: 5px;
|
||||
border: 1px solid #DDD;
|
||||
background: #f8fafc;
|
||||
padding: $gl-padding;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
border-right: 1px solid #f1f2f4;
|
||||
border-top: 1px solid #f1f2f4;
|
||||
margin-bottom: -$gl-padding;
|
||||
}
|
||||
|
||||
.note-form-actions {
|
||||
@@ -142,9 +146,9 @@
|
||||
}
|
||||
|
||||
.discussion-reply-holder {
|
||||
background: #f9f9f9;
|
||||
background: $background-color;
|
||||
padding: 10px 15px;
|
||||
border-top: 1px solid #DDD;
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,6 +170,6 @@
|
||||
background: #FFF;
|
||||
padding: 5px;
|
||||
margin-top: -11px;
|
||||
border: 1px solid #DDD;
|
||||
border: 1px solid $border-color;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,19 @@ ul.notes {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
|
||||
.system-note {
|
||||
font-size: 14px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
background: #f8fafc;
|
||||
|
||||
.timeline-icon {
|
||||
.avatar {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.discussion-header,
|
||||
.note-header {
|
||||
@extend .cgray;
|
||||
@@ -34,10 +47,8 @@ ul.notes {
|
||||
content: "\00b7";
|
||||
}
|
||||
|
||||
font-size: 13px;
|
||||
|
||||
a {
|
||||
@extend .cgray;
|
||||
color: $gl-gray;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
@@ -45,8 +56,9 @@ ul.notes {
|
||||
}
|
||||
}
|
||||
.author {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
color: #4c4e54;
|
||||
margin-right: 3px;
|
||||
|
||||
&:hover {
|
||||
color: $gl-link-color;
|
||||
}
|
||||
@@ -59,7 +71,7 @@ ul.notes {
|
||||
margin-top: 1px;
|
||||
border: 1px solid #bbb;
|
||||
background-color: transparent;
|
||||
color: #999;
|
||||
color: $gl-gray;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,8 +145,6 @@ ul.notes {
|
||||
}
|
||||
|
||||
.diff-file .notes_holder {
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
font-family: $regular_font;
|
||||
|
||||
td {
|
||||
@@ -176,8 +186,7 @@ ul.notes {
|
||||
|
||||
a {
|
||||
margin-left: 5px;
|
||||
|
||||
color: #999;
|
||||
color: $gl-gray;
|
||||
|
||||
i.fa {
|
||||
font-size: 16px;
|
||||
@@ -226,8 +235,6 @@ ul.notes {
|
||||
filter: alpha(opacity=0);
|
||||
|
||||
&:hover {
|
||||
width: 38px;
|
||||
font-size: 20px;
|
||||
background: $gl-info;
|
||||
color: #FFF;
|
||||
@include show-add-diff-note;
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
|
||||
.project-home-panel {
|
||||
text-align: center;
|
||||
background: #f7f8fa;
|
||||
margin: -$gl-padding;
|
||||
padding: $gl-padding;
|
||||
padding-top: 40px;
|
||||
|
||||
.project-identicon-holder {
|
||||
margin-bottom: 15px;
|
||||
@@ -38,20 +42,22 @@
|
||||
h1 {
|
||||
margin: 0;
|
||||
margin-bottom: 10px;
|
||||
font-size: 26px;
|
||||
font-weight: bold;
|
||||
font-size: 23px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 18px;
|
||||
color: #666;
|
||||
display: inline;
|
||||
color: #7f8fa4;
|
||||
}
|
||||
}
|
||||
|
||||
.git-clone-holder {
|
||||
max-width: 600px;
|
||||
margin: 20px auto;
|
||||
|
||||
.form-control {
|
||||
background: #FFF;
|
||||
}
|
||||
}
|
||||
|
||||
.visibility-level-label {
|
||||
@@ -62,17 +68,18 @@
|
||||
}
|
||||
|
||||
.project-repo-buttons {
|
||||
margin-top: 25px;
|
||||
margin-top: $gl-padding;
|
||||
margin-bottom: 25px;
|
||||
|
||||
.btn {
|
||||
@extend .btn-info;
|
||||
|
||||
text-transform: uppercase;
|
||||
font-size: 15px;
|
||||
line-height: 20px;
|
||||
padding: 8px 14px;
|
||||
border-radius: 3px;
|
||||
margin-left: 10px;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
padding: 8px 12px;
|
||||
|
||||
.count {
|
||||
padding-left: 7px;
|
||||
@@ -162,78 +169,6 @@ ul.nav.nav-projects-tabs {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.my-projects,
|
||||
.public-projects {
|
||||
li {
|
||||
.project-info {
|
||||
margin-bottom: 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.access-icon {
|
||||
color: #AAA;
|
||||
margin-left: 10px;
|
||||
i {
|
||||
color: #AAA;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.public-clone {
|
||||
background: #EEE;
|
||||
color: #777;
|
||||
padding: 6px 10px;
|
||||
margin: 1px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.public-projects .repo-info {
|
||||
color: #777;
|
||||
|
||||
a {
|
||||
color: #777;
|
||||
}
|
||||
}
|
||||
|
||||
.project-side {
|
||||
.project-fork-icon {
|
||||
float: left;
|
||||
font-size: 26px;
|
||||
margin-right: 10px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.panel {
|
||||
@include border-radius(3px);
|
||||
|
||||
.panel-heading, .panel-footer {
|
||||
font-weight: normal;
|
||||
background-color: transparent;
|
||||
color: #666;
|
||||
border-color: #EEE;
|
||||
}
|
||||
|
||||
.actions {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.nav-pills a {
|
||||
padding: 10px;
|
||||
font-weight: bold;
|
||||
color: $gl-link-color;
|
||||
}
|
||||
|
||||
.nav {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.ci-status-image {
|
||||
max-height: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
.transfer-project .select2-container {
|
||||
min-width: 200px;
|
||||
}
|
||||
@@ -256,10 +191,10 @@ ul.nav.nav-projects-tabs {
|
||||
|
||||
.breadcrumb.repo-breadcrumb {
|
||||
padding: 0;
|
||||
line-height: 34px;
|
||||
background: white;
|
||||
line-height: 42px;
|
||||
background: transparent;
|
||||
border: none;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
|
||||
> li + li:before {
|
||||
padding: 0 3px;
|
||||
@@ -268,26 +203,18 @@ ul.nav.nav-projects-tabs {
|
||||
}
|
||||
|
||||
.fork-namespaces {
|
||||
.thumbnail {
|
||||
.fork-thumbnail {
|
||||
text-align: center;
|
||||
margin-bottom: $gl-padding;
|
||||
|
||||
&.fork-exists-thumbnail {
|
||||
border-color: #EEE;
|
||||
|
||||
.caption {
|
||||
color: #999;
|
||||
}
|
||||
.caption {
|
||||
padding: $gl-padding 0;
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
&.fork-thumbnail {
|
||||
border-color: #AAA;
|
||||
|
||||
&:hover {
|
||||
background-color: $hover;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
img {
|
||||
@include border-radius(50%);
|
||||
max-width: 100px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -305,10 +232,23 @@ table.table.protected-branches-list tr.no-border {
|
||||
|
||||
.project-stats {
|
||||
text-align: center;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 0;
|
||||
|
||||
ul.nav-pills { display:inline-block; }
|
||||
li { display:inline; }
|
||||
a { float:left; }
|
||||
ul.nav-pills {
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
li {
|
||||
display:inline;
|
||||
}
|
||||
|
||||
a {
|
||||
float:left;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
li.missing a {
|
||||
color: #bbb;
|
||||
@@ -325,32 +265,67 @@ pre.light-well {
|
||||
}
|
||||
|
||||
.projects-search-form {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 20px;
|
||||
|
||||
input {
|
||||
border-color: #BBB;
|
||||
}
|
||||
margin: -$gl-padding;
|
||||
background-color: #f8fafc;
|
||||
padding: $gl-padding;
|
||||
margin-bottom: 0px;
|
||||
border-top: 1px solid #e7e9ed;
|
||||
border-bottom: 1px solid #e7e9ed;
|
||||
}
|
||||
|
||||
.project-row {
|
||||
.project-full-name {
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
}
|
||||
/*
|
||||
* Projects list rendered on dashboard and user page
|
||||
*/
|
||||
.projects-list {
|
||||
@include basic-list;
|
||||
|
||||
.project-description {
|
||||
color: #888;
|
||||
font-size: 13px;
|
||||
.project-row {
|
||||
padding: $gl-padding;
|
||||
border-color: #f1f2f4;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
color: #888;
|
||||
&.no-description {
|
||||
.project {
|
||||
line-height: 44px;
|
||||
}
|
||||
}
|
||||
|
||||
.project-full-name {
|
||||
@include str-truncated;
|
||||
font-weight: 600;
|
||||
color: #4c4e54;
|
||||
}
|
||||
|
||||
.pull-right.light {
|
||||
line-height: 45px;
|
||||
color: #7f8fa4;
|
||||
}
|
||||
|
||||
.project-description {
|
||||
color: #7f8fa4;
|
||||
|
||||
p {
|
||||
@include str-truncated;
|
||||
margin-bottom: 0;
|
||||
color: #7f8fa4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
padding-top: $gl-padding;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.my-projects .project-row {
|
||||
padding: 10px 0;
|
||||
.panel .projects-list li {
|
||||
padding: 10px 15px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.project-show-activity {
|
||||
.activity-filter-block {
|
||||
margin-top: -1px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
.search-results {
|
||||
.search-result-row {
|
||||
border-bottom: 1px solid #EEE;
|
||||
padding-bottom: 10px;
|
||||
margin-bottom: 10px;
|
||||
border-bottom: 1px solid #DDD;
|
||||
padding-bottom: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.search-holder {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 20px;
|
||||
|
||||
input {
|
||||
border-color: #BBB;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,3 +6,27 @@
|
||||
.snippet-form-holder .file-holder .file-title {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
|
||||
.snippet-row {
|
||||
.snippet-title {
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
line-height: 20px;
|
||||
margin-bottom: 2px;
|
||||
|
||||
.monospace {
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.snippet-info {
|
||||
color: #888;
|
||||
font-size: 13px;
|
||||
line-height: 24px;
|
||||
|
||||
a {
|
||||
color: #888;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,51 +63,21 @@
|
||||
padding-right: 8px;
|
||||
|
||||
.commit-author-name {
|
||||
color: gray;
|
||||
color: $gl-gray;
|
||||
}
|
||||
}
|
||||
|
||||
.tree_commit {
|
||||
color: gray;
|
||||
color: $gl-gray;
|
||||
|
||||
.tree-commit-link {
|
||||
color: gray;
|
||||
color: $gl-gray;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.blame {
|
||||
img.avatar {
|
||||
border: 0 none;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
td.blame-commit {
|
||||
background: #f9f9f9;
|
||||
min-width: 350px;
|
||||
|
||||
.commit-author-link {
|
||||
color: #888;
|
||||
}
|
||||
}
|
||||
td.blame-numbers {
|
||||
pre {
|
||||
color: #AAA;
|
||||
white-space: pre;
|
||||
}
|
||||
background: #f1f1f1;
|
||||
border-left: 1px solid #DDD;
|
||||
}
|
||||
td.lines {
|
||||
code {
|
||||
font-family: $monospace_font;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tree-ref-holder {
|
||||
@@ -132,20 +102,30 @@
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.commit {
|
||||
padding: 10px 15px;
|
||||
padding: $gl-padding 0;
|
||||
|
||||
.commit-row-title {
|
||||
font-size: 13px;
|
||||
|
||||
.commit-row-message {
|
||||
font-weight: normal;
|
||||
color: #555;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#modal-remove-blob > .modal-dialog { width: 850px; }
|
||||
|
||||
.blob-upload-dropzone-previews {
|
||||
text-align: center;
|
||||
border: 2px;
|
||||
border-style: dashed;
|
||||
border-color: $border-color;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
.upload-link {
|
||||
font-weight: normal;
|
||||
color: $md-link-color;
|
||||
}
|
||||
|
||||
@@ -9,15 +9,19 @@
|
||||
@mixin gitlab-theme($color-light, $color, $color-darker, $color-dark) {
|
||||
.page-with-sidebar {
|
||||
.header-logo {
|
||||
background-color: $color-darker;
|
||||
border-color: $color-darker;
|
||||
background-color: $color;
|
||||
border-color: $color;
|
||||
|
||||
a {
|
||||
color: $color-light;
|
||||
|
||||
h3 {
|
||||
color: $color-light;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: $color-dark;
|
||||
background-color: $color-darker;
|
||||
a {
|
||||
color: #FFF;
|
||||
}
|
||||
@@ -83,7 +87,7 @@
|
||||
}
|
||||
|
||||
$theme-blue: #2980B9;
|
||||
$theme-charcoal: #474D57;
|
||||
$theme-charcoal: #333c47;
|
||||
$theme-graphite: #888888;
|
||||
$theme-gray: #373737;
|
||||
$theme-green: #019875;
|
||||
@@ -95,7 +99,7 @@ body {
|
||||
}
|
||||
|
||||
&.ui_charcoal {
|
||||
@include gitlab-theme(#979DA7, $theme-charcoal, #373D47, #24272D);
|
||||
@include gitlab-theme(#c5d0de, $theme-charcoal, #2b333d, #24272D);
|
||||
}
|
||||
|
||||
&.ui_graphite {
|
||||
|
||||
@@ -39,6 +39,6 @@ class Admin::HooksController < Admin::ApplicationController
|
||||
end
|
||||
|
||||
def hook_params
|
||||
params.require(:hook).permit(:url)
|
||||
params.require(:hook).permit(:url, :enable_ssl_verification)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
class Admin::LabelsController < Admin::ApplicationController
|
||||
before_action :set_label, only: [:show, :edit, :update, :destroy]
|
||||
|
||||
def index
|
||||
@labels = Label.templates.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def new
|
||||
@label = Label.new
|
||||
end
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
def create
|
||||
@label = Label.new(label_params)
|
||||
@label.template = true
|
||||
|
||||
if @label.save
|
||||
redirect_to admin_labels_url, notice: "Label was created"
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
if @label.update(label_params)
|
||||
redirect_to admin_labels_path, notice: 'label was successfully updated.'
|
||||
else
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@label.destroy
|
||||
@labels = Label.templates
|
||||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
redirect_to(admin_labels_path, notice: 'Label was removed')
|
||||
end
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_label
|
||||
@label = Label.find(params[:id])
|
||||
end
|
||||
|
||||
def label_params
|
||||
params[:label].permit(:title, :color)
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,5 @@
|
||||
require 'gon'
|
||||
require 'fogbugz'
|
||||
|
||||
class ApplicationController < ActionController::Base
|
||||
include Gitlab::CurrentSettings
|
||||
@@ -20,7 +21,7 @@ class ApplicationController < ActionController::Base
|
||||
protect_from_forgery with: :exception
|
||||
|
||||
helper_method :abilities, :can?, :current_application_settings
|
||||
helper_method :import_sources_enabled?, :github_import_enabled?, :github_import_configured?, :gitlab_import_enabled?, :gitlab_import_configured?, :bitbucket_import_enabled?, :bitbucket_import_configured?, :gitorious_import_enabled?, :google_code_import_enabled?, :git_import_enabled?
|
||||
helper_method :import_sources_enabled?, :github_import_enabled?, :github_import_configured?, :gitlab_import_enabled?, :gitlab_import_configured?, :bitbucket_import_enabled?, :bitbucket_import_configured?, :gitorious_import_enabled?, :google_code_import_enabled?, :fogbugz_import_enabled?, :git_import_enabled?
|
||||
|
||||
rescue_from Encoding::CompatibilityError do |exception|
|
||||
log_exception(exception)
|
||||
@@ -55,7 +56,9 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
def authenticate_user!(*args)
|
||||
# If user is not signed-in and tries to access root_path - redirect him to landing page
|
||||
if current_application_settings.home_page_url.present?
|
||||
# Don't redirect to the default URL to prevent endless redirections
|
||||
if current_application_settings.home_page_url.present? &&
|
||||
current_application_settings.home_page_url.chomp('/') != Gitlab.config.gitlab['url'].chomp('/')
|
||||
if current_user.nil? && root_path == request.path
|
||||
redirect_to current_application_settings.home_page_url and return
|
||||
end
|
||||
@@ -190,11 +193,12 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def add_gon_variables
|
||||
gon.api_version = API::API.version
|
||||
gon.default_avatar_url = URI::join(Gitlab.config.gitlab.url, ActionController::Base.helpers.image_path('no_avatar.png')).to_s
|
||||
gon.default_issues_tracker = Project.new.default_issue_tracker.to_param
|
||||
gon.api_version = API::API.version
|
||||
gon.relative_url_root = Gitlab.config.gitlab.relative_url_root
|
||||
gon.default_avatar_url = URI::join(Gitlab.config.gitlab.url, ActionController::Base.helpers.image_path('no_avatar.png')).to_s
|
||||
gon.max_file_size = current_application_settings.max_attachment_size;
|
||||
gon.max_file_size = current_application_settings.max_attachment_size
|
||||
gon.relative_url_root = Gitlab.config.gitlab.relative_url_root
|
||||
gon.user_color_scheme = Gitlab::ColorSchemes.for_user(current_user).css_class
|
||||
|
||||
if current_user
|
||||
gon.current_user_id = current_user.id
|
||||
@@ -340,6 +344,10 @@ class ApplicationController < ActionController::Base
|
||||
current_application_settings.import_sources.include?('google_code')
|
||||
end
|
||||
|
||||
def fogbugz_import_enabled?
|
||||
current_application_settings.import_sources.include?('fogbugz')
|
||||
end
|
||||
|
||||
def git_import_enabled?
|
||||
current_application_settings.import_sources.include?('git')
|
||||
end
|
||||
|
||||
@@ -33,6 +33,7 @@ class AutocompleteController < ApplicationController
|
||||
@users = @users.non_ldap if params[:skip_ldap] == 'true'
|
||||
@users = @users.search(params[:search]) if params[:search].present?
|
||||
@users = @users.active
|
||||
@users = @users.reorder(:name)
|
||||
@users = @users.page(params[:page]).per(PER_PAGE)
|
||||
|
||||
unless params[:search].present?
|
||||
|
||||
@@ -1,6 +1,21 @@
|
||||
class Dashboard::ProjectsController < Dashboard::ApplicationController
|
||||
before_action :event_filter
|
||||
|
||||
def index
|
||||
@projects = current_user.authorized_projects.sorted_by_activity.non_archived
|
||||
@projects = @projects.includes(:namespace)
|
||||
@last_push = current_user.recent_push
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.atom do
|
||||
event_filter
|
||||
load_events
|
||||
render layout: false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def starred
|
||||
@projects = current_user.starred_projects
|
||||
@projects = @projects.includes(:namespace, :forked_from_project, :tags)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
class Dashboard::SnippetsController < Dashboard::ApplicationController
|
||||
def index
|
||||
@snippets = SnippetsFinder.new.execute(current_user,
|
||||
filter: :by_user,
|
||||
user: current_user,
|
||||
scope: params[:scope]
|
||||
)
|
||||
@snippets = @snippets.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
end
|
||||
@@ -1,23 +1,8 @@
|
||||
class DashboardController < Dashboard::ApplicationController
|
||||
before_action :load_projects
|
||||
before_action :event_filter, only: :activity
|
||||
|
||||
respond_to :html
|
||||
|
||||
def show
|
||||
@projects = @projects.includes(:namespace)
|
||||
@last_push = current_user.recent_push
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.atom do
|
||||
event_filter
|
||||
load_events
|
||||
render layout: false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def merge_requests
|
||||
@merge_requests = get_merge_requests_collection
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
|
||||
@@ -50,12 +35,15 @@ class DashboardController < Dashboard::ApplicationController
|
||||
|
||||
protected
|
||||
|
||||
def load_projects
|
||||
@projects = current_user.authorized_projects.sorted_by_activity.non_archived
|
||||
end
|
||||
|
||||
def load_events
|
||||
@events = Event.in_projects(current_user.authorized_projects.pluck(:id))
|
||||
project_ids =
|
||||
if params[:filter] == "starred"
|
||||
current_user.starred_projects
|
||||
else
|
||||
current_user.authorized_projects
|
||||
end.pluck(:id)
|
||||
|
||||
@events = Event.in_projects(project_ids)
|
||||
@events = @event_filter.apply_filter(@events).with_associations
|
||||
@events = @events.limit(20).offset(params[:offset] || 0)
|
||||
end
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
class Explore::ApplicationController < ApplicationController
|
||||
skip_before_action :authenticate_user!, :reject_blocked
|
||||
|
||||
layout 'explore'
|
||||
end
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
class Explore::GroupsController < Explore::ApplicationController
|
||||
skip_before_action :authenticate_user!,
|
||||
:reject_blocked, :set_current_user_for_observers
|
||||
|
||||
def index
|
||||
@groups = GroupsFinder.new.execute(current_user)
|
||||
@groups = @groups.search(params[:search]) if params[:search].present?
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
class Explore::ProjectsController < Explore::ApplicationController
|
||||
skip_before_action :authenticate_user!,
|
||||
:reject_blocked
|
||||
|
||||
def index
|
||||
@projects = ProjectsFinder.new.execute(current_user)
|
||||
@tags = @projects.tags_on(:tags)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class Explore::SnippetsController < Explore::ApplicationController
|
||||
def index
|
||||
@snippets = SnippetsFinder.new.execute(current_user, filter: :all)
|
||||
@snippets = @snippets.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
end
|
||||
@@ -4,7 +4,7 @@ class GroupsController < Groups::ApplicationController
|
||||
before_action :group, except: [:new, :create]
|
||||
|
||||
# Authorize
|
||||
before_action :authorize_read_group!, except: [:new, :create]
|
||||
before_action :authorize_read_group!, except: [:show, :new, :create]
|
||||
before_action :authorize_admin_group!, only: [:edit, :update, :destroy, :projects]
|
||||
before_action :authorize_create_group!, only: [:new, :create]
|
||||
|
||||
@@ -14,6 +14,10 @@ class GroupsController < Groups::ApplicationController
|
||||
|
||||
layout :determine_layout
|
||||
|
||||
def index
|
||||
redirect_to(current_user ? dashboard_groups_path : explore_groups_path)
|
||||
end
|
||||
|
||||
def new
|
||||
@group = Group.new
|
||||
end
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
class HelpController < ApplicationController
|
||||
skip_before_action :authenticate_user!, :reject_blocked
|
||||
|
||||
layout 'help'
|
||||
|
||||
def index
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
class Import::FogbugzController < Import::BaseController
|
||||
before_action :verify_fogbugz_import_enabled
|
||||
before_action :user_map, only: [:new_user_map, :create_user_map]
|
||||
|
||||
rescue_from Fogbugz::AuthenticationException, with: :fogbugz_unauthorized
|
||||
|
||||
def new
|
||||
|
||||
end
|
||||
|
||||
def callback
|
||||
begin
|
||||
res = Gitlab::FogbugzImport::Client.new(import_params.symbolize_keys)
|
||||
rescue
|
||||
# If the URI is invalid various errors can occur
|
||||
return redirect_to new_import_fogbugz_path, alert: 'Could not connect to FogBugz, check your URL'
|
||||
end
|
||||
session[:fogbugz_token] = res.get_token
|
||||
session[:fogbugz_uri] = params[:uri]
|
||||
|
||||
redirect_to new_user_map_import_fogbugz_path
|
||||
end
|
||||
|
||||
def new_user_map
|
||||
|
||||
end
|
||||
|
||||
def create_user_map
|
||||
user_map = params[:users]
|
||||
|
||||
unless user_map.is_a?(Hash) && user_map.all? { |k, v| !v[:name].blank? }
|
||||
flash.now[:alert] = 'All users must have a name.'
|
||||
|
||||
render 'new_user_map' and return
|
||||
end
|
||||
|
||||
session[:fogbugz_user_map] = user_map
|
||||
|
||||
flash[:notice] = 'The user map has been saved. Continue by selecting the projects you want to import.'
|
||||
|
||||
redirect_to status_import_fogbugz_path
|
||||
end
|
||||
|
||||
def status
|
||||
unless client.valid?
|
||||
return redirect_to new_import_fogbugz_path
|
||||
end
|
||||
|
||||
@repos = client.repos
|
||||
|
||||
@already_added_projects = current_user.created_projects.where(import_type: 'fogbugz')
|
||||
already_added_projects_names = @already_added_projects.pluck(:import_source)
|
||||
|
||||
@repos.reject! { |repo| already_added_projects_names.include? repo.name }
|
||||
end
|
||||
|
||||
def jobs
|
||||
jobs = current_user.created_projects.where(import_type: 'fogbugz').to_json(only: [:id, :import_status])
|
||||
render json: jobs
|
||||
end
|
||||
|
||||
def create
|
||||
@repo_id = params[:repo_id]
|
||||
repo = client.repo(@repo_id)
|
||||
fb_session = { uri: session[:fogbugz_uri], token: session[:fogbugz_token] }
|
||||
@target_namespace = current_user.namespace
|
||||
@project_name = repo.name
|
||||
|
||||
namespace = @target_namespace
|
||||
|
||||
umap = session[:fogbugz_user_map] || client.user_map
|
||||
|
||||
@project = Gitlab::FogbugzImport::ProjectCreator.new(repo, fb_session, namespace, current_user, umap).execute
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def client
|
||||
@client ||= Gitlab::FogbugzImport::Client.new(token: session[:fogbugz_token], uri: session[:fogbugz_uri])
|
||||
end
|
||||
|
||||
def user_map
|
||||
@user_map ||= begin
|
||||
user_map = client.user_map
|
||||
|
||||
stored_user_map = session[:fogbugz_user_map]
|
||||
user_map.update(stored_user_map) if stored_user_map
|
||||
|
||||
user_map
|
||||
end
|
||||
end
|
||||
|
||||
def fogbugz_unauthorized(exception)
|
||||
redirect_to new_import_fogbugz_path, alert: exception.message
|
||||
end
|
||||
|
||||
def import_params
|
||||
params.permit(:uri, :email, :password)
|
||||
end
|
||||
|
||||
def verify_fogbugz_import_enabled
|
||||
not_found! unless fogbugz_import_enabled?
|
||||
end
|
||||
end
|
||||
@@ -24,7 +24,7 @@ class InvitesController < ApplicationController
|
||||
|
||||
path =
|
||||
if current_user
|
||||
dashboard_path
|
||||
dashboard_projects_path
|
||||
else
|
||||
new_user_session_path
|
||||
end
|
||||
@@ -73,7 +73,7 @@ class InvitesController < ApplicationController
|
||||
path = group_path(group)
|
||||
else
|
||||
label = "who knows what"
|
||||
path = dashboard_path
|
||||
path = dashboard_projects_path
|
||||
end
|
||||
|
||||
[label, path]
|
||||
|
||||
@@ -14,7 +14,7 @@ class NamespacesController < ApplicationController
|
||||
|
||||
if user
|
||||
redirect_to user_path(user)
|
||||
elsif group && can?(current_user, :read_group, group)
|
||||
elsif group
|
||||
redirect_to group_path(group)
|
||||
elsif current_user.nil?
|
||||
authenticate_user!
|
||||
|
||||
@@ -18,6 +18,12 @@ class Projects::BlobController < Projects::ApplicationController
|
||||
before_action :after_edit_path, only: [:edit, :update]
|
||||
|
||||
def new
|
||||
@title = 'Upload'
|
||||
@placeholder = 'Upload new file'
|
||||
@button_title = 'Upload file'
|
||||
@form_path = namespace_project_create_blob_path(@project.namespace, @project, @id)
|
||||
@method = :post
|
||||
|
||||
commit unless @repository.empty?
|
||||
end
|
||||
|
||||
@@ -26,14 +32,25 @@ class Projects::BlobController < Projects::ApplicationController
|
||||
|
||||
if result[:status] == :success
|
||||
flash[:notice] = "Your changes have been successfully committed"
|
||||
redirect_to namespace_project_blob_path(@project.namespace, @project, File.join(@target_branch, @file_path))
|
||||
respond_to do |format|
|
||||
format.html { redirect_to namespace_project_blob_path(@project.namespace, @project, File.join(@target_branch, @file_path)) }
|
||||
format.json { render json: { message: "success", filePath: namespace_project_blob_path(@project.namespace, @project, File.join(@target_branch, @file_path)) } }
|
||||
end
|
||||
else
|
||||
flash[:alert] = result[:message]
|
||||
render :new
|
||||
respond_to do |format|
|
||||
format.html { render :new }
|
||||
format.json { render json: { message: "failed", filePath: namespace_project_new_blob_path(@project.namespace, @project, @id) } }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
@title = "Replace #{@blob.name}"
|
||||
@placeholder = @title
|
||||
@button_title = 'Replace file'
|
||||
@form_path = namespace_project_update_blob_path(@project.namespace, @project, @id)
|
||||
@method = :put
|
||||
end
|
||||
|
||||
def edit
|
||||
@@ -45,10 +62,16 @@ class Projects::BlobController < Projects::ApplicationController
|
||||
|
||||
if result[:status] == :success
|
||||
flash[:notice] = "Your changes have been successfully committed"
|
||||
redirect_to after_edit_path
|
||||
respond_to do |format|
|
||||
format.html { redirect_to after_edit_path }
|
||||
format.json { render json: { message: "success", filePath: after_edit_path } }
|
||||
end
|
||||
else
|
||||
flash[:alert] = result[:message]
|
||||
render :edit
|
||||
respond_to do |format|
|
||||
format.html { render :edit }
|
||||
format.json { render json: { message: "failed", filePath: namespace_project_new_blob_path(@project.namespace, @project, @id) } }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -146,11 +169,19 @@ class Projects::BlobController < Projects::ApplicationController
|
||||
|
||||
@file_path =
|
||||
if action_name.to_s == 'create'
|
||||
if params[:file].present?
|
||||
params[:file_name] = params[:file].original_filename
|
||||
end
|
||||
File.join(@path, File.basename(params[:file_name]))
|
||||
else
|
||||
@path
|
||||
end
|
||||
|
||||
if params[:file].present?
|
||||
params[:content] = Base64.encode64(params[:file].read)
|
||||
params[:encoding] = 'base64'
|
||||
end
|
||||
|
||||
@commit_params = {
|
||||
file_path: @file_path,
|
||||
current_branch: @current_branch,
|
||||
|
||||
@@ -13,10 +13,14 @@ class Projects::ForksController < Projects::ApplicationController
|
||||
@forked_project = ::Projects::ForkService.new(project, current_user, namespace: namespace).execute
|
||||
|
||||
if @forked_project.saved? && @forked_project.forked?
|
||||
redirect_to(
|
||||
namespace_project_path(@forked_project.namespace, @forked_project),
|
||||
notice: 'Project was successfully forked.'
|
||||
)
|
||||
if @forked_project.import_in_progress?
|
||||
redirect_to namespace_project_import_path(@forked_project.namespace, @forked_project)
|
||||
else
|
||||
redirect_to(
|
||||
namespace_project_path(@forked_project.namespace, @forked_project),
|
||||
notice: 'Project was successfully forked.'
|
||||
)
|
||||
end
|
||||
else
|
||||
render :error
|
||||
end
|
||||
|
||||
@@ -53,6 +53,7 @@ class Projects::HooksController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def hook_params
|
||||
params.require(:hook).permit(:url, :push_events, :issues_events, :merge_requests_events, :tag_push_events, :note_events)
|
||||
params.require(:hook).permit(:url, :push_events, :issues_events,
|
||||
:merge_requests_events, :tag_push_events, :note_events, :enable_ssl_verification)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -91,7 +91,7 @@ class Projects::ProjectMembersController < Projects::ApplicationController
|
||||
log_audit_event(@project_member, action: :destroy)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to dashboard_path }
|
||||
format.html { redirect_to dashboard_projects_path }
|
||||
format.js { render nothing: true }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,8 +17,7 @@ class Projects::RawController < Projects::ApplicationController
|
||||
send_data(
|
||||
@blob.data,
|
||||
type: type,
|
||||
disposition: 'inline',
|
||||
filename: @blob.name
|
||||
disposition: 'inline'
|
||||
)
|
||||
else
|
||||
not_found!
|
||||
@@ -30,6 +29,8 @@ class Projects::RawController < Projects::ApplicationController
|
||||
def get_blob_type
|
||||
if @blob.text?
|
||||
'text/plain; charset=utf-8'
|
||||
elsif @blob.image?
|
||||
@blob.content_type
|
||||
else
|
||||
'application/octet-stream'
|
||||
end
|
||||
|
||||
@@ -2,15 +2,14 @@ class Projects::ServicesController < Projects::ApplicationController
|
||||
ALLOWED_PARAMS = [:title, :token, :type, :active, :api_key, :api_version, :subdomain,
|
||||
:room, :recipients, :project_url, :webhook,
|
||||
:user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
|
||||
:build_key, :server, :teamcity_url, :build_type,
|
||||
:build_key, :server, :teamcity_url, :drone_url, :build_type,
|
||||
:description, :issues_url, :new_issue_url, :restrict_to_branch, :channel,
|
||||
:colorize_messages, :channels,
|
||||
:push_events, :issues_events, :merge_requests_events, :tag_push_events,
|
||||
:note_events, :send_from_committer_email, :disable_diffs, :external_wiki_url,
|
||||
:jira_issue_transition_id,
|
||||
:notify, :color,
|
||||
:server_host, :server_port, :default_irc_uri]
|
||||
|
||||
:server_host, :server_port, :default_irc_uri, :enable_ssl_verification]
|
||||
# Authorize
|
||||
before_action :authorize_admin_project!
|
||||
before_action :service, only: [:edit, :update, :test]
|
||||
|
||||
@@ -30,9 +30,14 @@ class Projects::SnippetsController < Projects::ApplicationController
|
||||
def create
|
||||
@snippet = CreateSnippetService.new(@project, current_user,
|
||||
snippet_params).execute
|
||||
respond_with(@snippet,
|
||||
location: namespace_project_snippet_path(@project.namespace,
|
||||
@project, @snippet))
|
||||
|
||||
if @snippet.valid?
|
||||
respond_with(@snippet,
|
||||
location: namespace_project_snippet_path(@project.namespace,
|
||||
@project, @snippet))
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
|
||||
@@ -5,7 +5,6 @@ class Projects::WikisController < Projects::ApplicationController
|
||||
before_action :authorize_create_wiki!, only: [:edit, :create, :history]
|
||||
before_action :authorize_admin_wiki!, only: :destroy
|
||||
before_action :load_project_wiki
|
||||
include WikiHelper
|
||||
|
||||
def pages
|
||||
@wiki_pages = Kaminari.paginate_array(@project_wiki.pages).page(params[:page]).per(PER_PAGE)
|
||||
|
||||
@@ -10,6 +10,10 @@ class ProjectsController < ApplicationController
|
||||
|
||||
layout :determine_layout
|
||||
|
||||
def index
|
||||
redirect_to(current_user ? root_path : explore_root_path)
|
||||
end
|
||||
|
||||
def new
|
||||
@project = Project.new
|
||||
end
|
||||
@@ -105,7 +109,7 @@ class ProjectsController < ApplicationController
|
||||
if request.referer.include?('/admin')
|
||||
redirect_to admin_namespaces_projects_path
|
||||
else
|
||||
redirect_to dashboard_path
|
||||
redirect_to dashboard_projects_path
|
||||
end
|
||||
rescue Projects::DestroyService::DestroyError => ex
|
||||
redirect_to edit_project_path(@project), alert: ex.message
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
#
|
||||
# For users who haven't customized the setting, we simply delegate to
|
||||
# `DashboardController#show`, which is the default.
|
||||
class RootController < DashboardController
|
||||
before_action :redirect_to_custom_dashboard, only: [:show]
|
||||
class RootController < Dashboard::ProjectsController
|
||||
before_action :redirect_to_custom_dashboard, only: [:index]
|
||||
|
||||
def show
|
||||
def index
|
||||
super
|
||||
end
|
||||
|
||||
@@ -20,6 +20,7 @@ class RootController < DashboardController
|
||||
|
||||
case current_user.dashboard
|
||||
when 'stars'
|
||||
flash.keep
|
||||
redirect_to starred_dashboard_projects_path
|
||||
else
|
||||
return
|
||||
|
||||
@@ -8,6 +8,8 @@ class SessionsController < Devise::SessionsController
|
||||
def new
|
||||
if Gitlab.config.ldap.enabled
|
||||
@ldap_servers = Gitlab::LDAP::Config.servers
|
||||
else
|
||||
@ldap_servers = []
|
||||
end
|
||||
|
||||
super
|
||||
|
||||
@@ -24,13 +24,9 @@ class SnippetsController < ApplicationController
|
||||
scope: params[:scope] }).
|
||||
page(params[:page]).per(PER_PAGE)
|
||||
|
||||
if @user == current_user
|
||||
render 'current_user_index'
|
||||
else
|
||||
render 'user_index'
|
||||
end
|
||||
render 'index'
|
||||
else
|
||||
@snippets = SnippetsFinder.new.execute(current_user, filter: :all).page(params[:page]).per(PER_PAGE)
|
||||
redirect_to(current_user ? dashboard_snippets_path : explore_snippets_path)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user