Commit ad0ca049 authored by Vinnie Okada's avatar Vinnie Okada

Merge branch 'master' into fix-restricted-visibility

Conflicts:
	db/schema.rb
parents 13e9f4f3 19e0dafb
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 7.9.0 (unreleased) v 7.9.0 (unreleased)
- Update documentation for object_kind field in Webhook push and tag push Webhooks (Stan Hu)
- Fix broken email images (Hannes Rosenögger)
- Fix mass SQL statements on initial push (Hannes Rosenögger)
- Add tag push notifications and normalize HipChat and Slack messages to be consistent (Stan Hu) - Add tag push notifications and normalize HipChat and Slack messages to be consistent (Stan Hu)
- Add comment notification events to HipChat and Slack services (Stan Hu) - Add comment notification events to HipChat and Slack services (Stan Hu)
- Add issue and merge request events to HipChat and Slack services (Stan Hu) - Add issue and merge request events to HipChat and Slack services (Stan Hu)
- Fix merge request URL passed to Webhooks. (Stan Hu) - Fix merge request URL passed to Webhooks. (Stan Hu)
- Fix bug that caused a server error when editing a comment to "+1" or "-1" (Stan Hu) - Fix bug that caused a server error when editing a comment to "+1" or "-1" (Stan Hu)
- Fix code preview theme setting for comments, issues, merge requests, and snippets (Stan Hu)
- Move labels/milestones tabs to sidebar - Move labels/milestones tabs to sidebar
- Upgrade Rails gem to version 4.1.9. - Upgrade Rails gem to version 4.1.9.
- Improve error messages for file edit failures - Improve error messages for file edit failures
...@@ -32,6 +36,46 @@ v 7.9.0 (unreleased) ...@@ -32,6 +36,46 @@ v 7.9.0 (unreleased)
- Support referencing issues to a project whose name starts with a digit - Support referencing issues to a project whose name starts with a digit
- Condense commits already in target branch when updating merge request source branch. - Condense commits already in target branch when updating merge request source branch.
- Send notifications and leave system comments when bulk updating issues. - Send notifications and leave system comments when bulk updating issues.
- Automatically link commit ranges to compare page: sha1...sha4 or sha1..sha4 (includes sha1 in comparison)
- Move groups page from profile to dashboard
- Starred projects page at dashboard
- Blocking user does not remove him/her from project/groups but show blocked label
- Change subject of EmailsOnPush emails to include namespace, project and branch.
- Change subject of EmailsOnPush emails to include first commit message when multiple were pushed.
- Remove confusing footer from EmailsOnPush mail body.
- Add list of changed files to EmailsOnPush emails.
- Add option to send EmailsOnPush emails from committer email if domain matches.
- Add option to disable code diffs in EmailOnPush emails.
- Wrap commit message in EmailsOnPush email.
- Send EmailsOnPush emails when deleting commits using force push.
- Fix EmailsOnPush email comparison link to include first commit.
- Fix highliht of selected lines in file
- Reject access to group/project avatar if the user doesn't have access.
- Add database migration to clean group duplicates with same path and name (Make sure you have a backup before update)
- Add GitLab active users count to rake gitlab:check
- Starred projects page at dashboard
- Make email display name configurable
- Improve json validation in hook data
- Use Emoji One
- Updated emoji help documentation to properly reference EmojiOne.
- Fix missing GitHub organisation repositories on import page.
- Added blue theme
- Remove annoying notice messages when create/update merge request
- Allow smb:// links in Markdown text.
- Filter merge request by title or description at Merge Requests page
- Block user if he/she was blocked in Active Directory
- Fix import pages not working after first load.
- Use custom LDAP label in LDAP signin form.
- Execute hooks and services when branch or tag is created or deleted through web interface.
- Block and unblock user if he/she was blocked/unblocked in Active Directory
- Raise recommended number of unicorn workers from 2 to 3
v 7.8.4
- Fix issue_tracker_id substitution in custom issue trackers
- Fix path and name duplication in namespaces
v 7.8.3
- Bump version of gitlab_git fixing annotated tags without message
v 7.8.2 v 7.8.2
- Fix service migration issue when upgrading from versions prior to 7.3 - Fix service migration issue when upgrading from versions prior to 7.3
...@@ -41,6 +85,8 @@ v 7.8.2 ...@@ -41,6 +85,8 @@ v 7.8.2
- Fix check if user is allowed to view the file attachment - Fix check if user is allowed to view the file attachment
- Fix import check for case sensetive namespaces - Fix import check for case sensetive namespaces
- Increase timeout for Git-over-HTTP requests to 1 hour since large pulls/pushes can take a long time. - Increase timeout for Git-over-HTTP requests to 1 hour since large pulls/pushes can take a long time.
- Properly handle autosave local storage exceptions.
- Escape wildcards when searching LDAP by username.
v 7.8.1 v 7.8.1
- Fix run of custom post receive hooks - Fix run of custom post receive hooks
......
...@@ -63,6 +63,8 @@ Merge requests can be filed either at [gitlab.com](https://gitlab.com/gitlab-org ...@@ -63,6 +63,8 @@ Merge requests can be filed either at [gitlab.com](https://gitlab.com/gitlab-org
If you are new to GitLab development (or web development in general), search for the label `easyfix` ([gitlab.com](https://gitlab.com/gitlab-org/gitlab-ce/issues?label_name=easyfix), [github](https://github.com/gitlabhq/gitlabhq/labels/easyfix)). Those are issues easy to fix, marked by the GitLab core-team. If you are unsure how to proceed but want to help, mention one of the core-team members to give you a hint. If you are new to GitLab development (or web development in general), search for the label `easyfix` ([gitlab.com](https://gitlab.com/gitlab-org/gitlab-ce/issues?label_name=easyfix), [github](https://github.com/gitlabhq/gitlabhq/labels/easyfix)). Those are issues easy to fix, marked by the GitLab core-team. If you are unsure how to proceed but want to help, mention one of the core-team members to give you a hint.
To start with GitLab download the [GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit) and see [Development section](doc/development/README.md) in the help file.
### Merge request guidelines ### Merge request guidelines
If you can, please submit a merge request with the fix or improvements including tests. If you don't know how to fix the issue but can write a test that exposes the issue we will accept that as well. In general bug fixes that include a regression test are merged quickly while new features without proper tests are least likely to receive timely feedback. The workflow to make a merge request is as follows: If you can, please submit a merge request with the fix or improvements including tests. If you don't know how to fix the issue but can write a test that exposes the issue we will accept that as well. In general bug fixes that include a regression test are merged quickly while new features without proper tests are least likely to receive timely feedback. The workflow to make a merge request is as follows:
......
...@@ -39,7 +39,7 @@ gem "browser" ...@@ -39,7 +39,7 @@ gem "browser"
# Extracting information from a git repository # Extracting information from a git repository
# Provide access to Gitlab::Git library # Provide access to Gitlab::Git library
gem "gitlab_git", '7.0.1' gem "gitlab_git", '~> 7.1.0'
# Ruby/Rack Git Smart-HTTP Server Handler # Ruby/Rack Git Smart-HTTP Server Handler
gem 'gitlab-grack', '~> 2.0.0.rc2', require: 'grack' gem 'gitlab-grack', '~> 2.0.0.rc2', require: 'grack'
...@@ -88,7 +88,7 @@ gem "six" ...@@ -88,7 +88,7 @@ gem "six"
gem "seed-fu" gem "seed-fu"
# Markup pipeline for GitLab # Markup pipeline for GitLab
gem 'html-pipeline-gitlab', '~> 0.1.0' gem 'html-pipeline-gitlab', '~> 0.1'
# Markdown to HTML # Markdown to HTML
gem "github-markup" gem "github-markup"
...@@ -194,7 +194,7 @@ gem "jquery-scrollto-rails" ...@@ -194,7 +194,7 @@ gem "jquery-scrollto-rails"
gem "raphael-rails", "~> 2.1.2" gem "raphael-rails", "~> 2.1.2"
gem 'bootstrap-sass', '~> 3.0' gem 'bootstrap-sass', '~> 3.0'
gem "font-awesome-rails", '~> 4.2' gem "font-awesome-rails", '~> 4.2'
gem "gitlab_emoji", "~> 0.0.1.1" gem "gitlab_emoji", "~> 0.1"
gem "gon", '~> 5.0.0' gem "gon", '~> 5.0.0'
gem 'nprogress-rails' gem 'nprogress-rails'
gem 'request_store' gem 'request_store'
......
...@@ -144,8 +144,6 @@ GEM ...@@ -144,8 +144,6 @@ GEM
email_spec (1.5.0) email_spec (1.5.0)
launchy (~> 2.1) launchy (~> 2.1)
mail (~> 2.2) mail (~> 2.2)
emoji (1.0.1)
json
enumerize (0.7.0) enumerize (0.7.0)
activesupport (>= 3.2) activesupport (>= 3.2)
equalizer (0.0.8) equalizer (0.0.8)
...@@ -193,6 +191,8 @@ GEM ...@@ -193,6 +191,8 @@ GEM
formatador (0.2.4) formatador (0.2.4)
gemnasium-gitlab-service (0.2.5) gemnasium-gitlab-service (0.2.5)
rugged (~> 0.21) rugged (~> 0.21)
gemojione (2.0.0)
json
gherkin-ruby (0.3.1) gherkin-ruby (0.3.1)
racc racc
github-markup (1.3.1) github-markup (1.3.1)
...@@ -211,9 +211,9 @@ GEM ...@@ -211,9 +211,9 @@ GEM
charlock_holmes (~> 0.6.6) charlock_holmes (~> 0.6.6)
escape_utils (~> 0.2.4) escape_utils (~> 0.2.4)
mime-types (~> 1.19) mime-types (~> 1.19)
gitlab_emoji (0.0.1.1) gitlab_emoji (0.1.0)
emoji (~> 1.0.1) gemojione (~> 2.0)
gitlab_git (7.0.1) gitlab_git (7.1.1)
activesupport (~> 4.0) activesupport (~> 4.0)
charlock_holmes (~> 0.6) charlock_holmes (~> 0.6)
gitlab-linguist (~> 3.0) gitlab-linguist (~> 3.0)
...@@ -278,10 +278,11 @@ GEM ...@@ -278,10 +278,11 @@ GEM
html-pipeline (1.11.0) html-pipeline (1.11.0)
activesupport (>= 2) activesupport (>= 2)
nokogiri (~> 1.4) nokogiri (~> 1.4)
html-pipeline-gitlab (0.1.5) html-pipeline-gitlab (0.2.0)
actionpack (~> 4) actionpack (~> 4)
gitlab_emoji (~> 0.0.1) gitlab_emoji (~> 0.1)
html-pipeline (~> 1.11.0) html-pipeline (~> 1.11.0)
mime-types
sanitize (~> 2.1) sanitize (~> 2.1)
http_parser.rb (0.5.3) http_parser.rb (0.5.3)
httparty (0.13.0) httparty (0.13.0)
...@@ -607,7 +608,7 @@ GEM ...@@ -607,7 +608,7 @@ GEM
eventmachine (>= 1.0.0) eventmachine (>= 1.0.0)
rack (>= 1.0.0) rack (>= 1.0.0)
thor (0.19.1) thor (0.19.1)
thread_safe (0.3.4) thread_safe (0.3.5)
tilt (1.4.1) tilt (1.4.1)
timers (4.0.1) timers (4.0.1)
hitimes hitimes
...@@ -707,8 +708,8 @@ DEPENDENCIES ...@@ -707,8 +708,8 @@ DEPENDENCIES
gitlab-flowdock-git-hook (~> 0.4.2) gitlab-flowdock-git-hook (~> 0.4.2)
gitlab-grack (~> 2.0.0.rc2) gitlab-grack (~> 2.0.0.rc2)
gitlab-linguist (~> 3.0.1) gitlab-linguist (~> 3.0.1)
gitlab_emoji (~> 0.0.1.1) gitlab_emoji (~> 0.1)
gitlab_git (= 7.0.1) gitlab_git (~> 7.1.0)
gitlab_meta (= 7.0) gitlab_meta (= 7.0)
gitlab_omniauth-ldap (= 1.2.0) gitlab_omniauth-ldap (= 1.2.0)
gollum-lib (~> 4.0.0) gollum-lib (~> 4.0.0)
...@@ -720,7 +721,7 @@ DEPENDENCIES ...@@ -720,7 +721,7 @@ DEPENDENCIES
guard-spinach guard-spinach
haml-rails haml-rails
hipchat (~> 1.4.0) hipchat (~> 1.4.0)
html-pipeline-gitlab (~> 0.1.0) html-pipeline-gitlab (~> 0.1)
httparty httparty
jasmine (= 2.0.2) jasmine (= 2.0.2)
jquery-atwho-rails (~> 0.3.3) jquery-atwho-rails (~> 0.3.3)
......
...@@ -14,7 +14,11 @@ class @Autosave ...@@ -14,7 +14,11 @@ class @Autosave
restore: -> restore: ->
return unless window.localStorage? return unless window.localStorage?
try
text = window.localStorage.getItem @key text = window.localStorage.getItem @key
catch
return
@field.val text if text?.length > 0 @field.val text if text?.length > 0
@field.trigger "input" @field.trigger "input"
...@@ -23,6 +27,7 @@ class @Autosave ...@@ -23,6 +27,7 @@ class @Autosave
text = @field.val() text = @field.val()
if text?.length > 0 if text?.length > 0
try
window.localStorage.setItem @key, text window.localStorage.setItem @key, text
else else
@reset() @reset()
...@@ -30,4 +35,5 @@ class @Autosave ...@@ -30,4 +35,5 @@ class @Autosave
reset: -> reset: ->
return unless window.localStorage? return unless window.localStorage?
try
window.localStorage.removeItem @key window.localStorage.removeItem @key
...@@ -26,7 +26,7 @@ class @BlobView ...@@ -26,7 +26,7 @@ class @BlobView
unless isNaN first_line unless isNaN first_line
$("#tree-content-holder .highlight .line").removeClass("hll") $("#tree-content-holder .highlight .line").removeClass("hll")
$("#LC#{line}").addClass("hll") for line in [first_line..last_line] $("#LC#{line}").addClass("hll") for line in [first_line..last_line]
$.scrollTo("#L#{first_line}") unless e? $.scrollTo("#L#{first_line}", offset: -50) unless e?
# parse selected lines from hash # parse selected lines from hash
# always return first and last line (initialized to NaN) # always return first and last line (initialized to NaN)
......
...@@ -15,7 +15,7 @@ class @EditBlob ...@@ -15,7 +15,7 @@ class @EditBlob
$(".js-commit-button").click -> $(".js-commit-button").click ->
$("#file-content").val editor.getValue() $("#file-content").val editor.getValue()
$(".file-editor form").submit() $(".file-editor form").submit()
return return false
editModePanes = $(".js-edit-mode-pane") editModePanes = $(".js-edit-mode-pane")
editModeLinks = $(".js-edit-mode a") editModeLinks = $(".js-edit-mode a")
......
...@@ -15,7 +15,7 @@ class @NewBlob ...@@ -15,7 +15,7 @@ class @NewBlob
$(".js-commit-button").click -> $(".js-commit-button").click ->
$("#file-content").val editor.getValue() $("#file-content").val editor.getValue()
$(".file-editor form").submit() $(".file-editor form").submit()
return return false
editor: -> editor: ->
return @editor return @editor
class @Dashboard class @Dashboard
constructor: -> constructor: ->
@initSidebarTab()
new ProjectsList() new ProjectsList()
initSidebarTab: ->
key = "dashboard_sidebar_filter"
# store selection in cookie
$('.dash-sidebar-tabs a').on 'click', (e) ->
$.cookie(key, $(e.target).attr('id'))
# show tab from cookie
sidebar_filter = $.cookie(key)
$("#" + sidebar_filter).tab('show') if sidebar_filter
...@@ -52,9 +52,13 @@ class Dispatcher ...@@ -52,9 +52,13 @@ class Dispatcher
new ZenMode() new ZenMode()
when 'projects:merge_requests:index' when 'projects:merge_requests:index'
shortcut_handler = new ShortcutsNavigation() shortcut_handler = new ShortcutsNavigation()
MergeRequests.init()
when 'dashboard:show' when 'dashboard:show'
new Dashboard() new Dashboard()
new Activities() new Activities()
when 'dashboard:projects:starred'
new Activities()
new ProjectsList()
when 'projects:commit:show' when 'projects:commit:show'
new Commit() new Commit()
new Diff() new Diff()
......
...@@ -26,7 +26,7 @@ class @ImporterStatus ...@@ -26,7 +26,7 @@ class @ImporterStatus
if job.import_status == 'finished' if job.import_status == 'finished'
job_item.removeClass("active").addClass("success") job_item.removeClass("active").addClass("success")
status_field.html('<span class="cgreen"><i class="fa fa-check"></i> done</span>') status_field.html('<span><i class="fa fa-check"></i> done</span>')
else if job.import_status == 'started' else if job.import_status == 'started'
status_field.html("<i class='fa fa-spinner fa-spin'></i> started") status_field.html("<i class='fa fa-spinner fa-spin'></i> started")
else else
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
initSearch: -> initSearch: ->
@timer = null @timer = null
$("#issue_search").keyup -> $("#issue_search").keyup ->
clearTimeout(@timer); clearTimeout(@timer)
@timer = setTimeout(Issues.filterResults, 500) @timer = setTimeout(Issues.filterResults, 500)
filterResults: => filterResults: =>
......
# #
# * Filter merge requests # * Filter merge requests
# #
@merge_requestsPage = -> @MergeRequests =
$('#assignee_id').select2() init: ->
$('#milestone_id').select2() MergeRequests.initSearch()
$('#milestone_id, #assignee_id').on 'change', ->
$(this).closest('form').submit() # Make sure we trigger ajax request only after user stop typing
initSearch: ->
@timer = null
$("#issue_search").keyup ->
clearTimeout(@timer)
@timer = setTimeout(MergeRequests.filterResults, 500)
filterResults: =>
form = $("#issue_search_form")
search = $("#issue_search").val()
$('.merge-requests-holder').css("opacity", '0.5')
issues_url = form.attr('action') + '? '+ form.serialize()
$.ajax
type: "GET"
url: form.attr('action')
data: form.serialize()
complete: ->
$('.merge-requests-holder').css("opacity", '1.0')
success: (data) ->
$('.merge-requests-holder').html(data.html)
# Change url so if user reload a page - search results are saved
History.replaceState {page: issues_url}, document.title, issues_url
MergeRequests.reload()
dataType: "json"
reload: ->
$('#filter_issue_search').val($('#issue_search').val())
...@@ -49,6 +49,13 @@ class @Milestone ...@@ -49,6 +49,13 @@ class @Milestone
data: data data: data
success: (data) -> success: (data) ->
if data.saved == true if data.saved == true
if data.assignee_avatar_url
img_tag = $('<img/>')
img_tag.attr('src', data.assignee_avatar_url)
img_tag.addClass('avatar s16')
$(li).find('.assignee-icon').html(img_tag)
else
$(li).find('.assignee-icon').html('')
$(li).effect 'highlight' $(li).effect 'highlight'
else else
new Flash("Issue update failed", 'alert') new Flash("Issue update failed", 'alert')
......
...@@ -11,12 +11,17 @@ ...@@ -11,12 +11,17 @@
*= require cal-heatmap *= require cal-heatmap
*/ */
@import "main/*";
@import "base/variables";
@import "base/mixins";
@import "base/layout";
/** /**
* Customized Twitter bootstrap * Customized Twitter bootstrap
*/ */
@import 'gl_bootstrap'; @import 'base/gl_variables';
@import 'base/gl_bootstrap';
/** /**
* NProgress load bar css * NProgress load bar css
...@@ -39,7 +44,7 @@ ...@@ -39,7 +44,7 @@
* Page specific styles (issues, projects etc): * Page specific styles (issues, projects etc):
*/ */
@import "sections/*"; @import "pages/*";
/** /**
* Code highlight * Code highlight
......
...@@ -3,17 +3,6 @@ ...@@ -3,17 +3,6 @@
* *
*/ */
$font-size-base: 13px !default;
$nav-pills-active-link-hover-bg: $bg_primary;
$pagination-active-bg: $bg_primary;
$list-group-active-bg: $bg_primary;
$brand-primary: $bg_primary;
$brand-success: $bg_success;
$brand-info: #029ACF;
$brand-warning: $bg_warning;
$brand-danger: $bg_danger;
// Core variables and mixins // Core variables and mixins
@import "bootstrap/variables"; @import "bootstrap/variables";
@import "bootstrap/mixins"; @import "bootstrap/mixins";
...@@ -141,10 +130,6 @@ $brand-danger: $bg_danger; ...@@ -141,10 +130,6 @@ $brand-danger: $bg_danger;
} }
} }
} }
&.nav-small-tabs > li > a {
padding: 6px 9px;
}
} }
.nav-tabs > li > a, .nav-tabs > li > a,
...@@ -152,61 +137,6 @@ $brand-danger: $bg_danger; ...@@ -152,61 +137,6 @@ $brand-danger: $bg_danger;
color: #666; color: #666;
} }
.nav-compact > li > a {
padding: 6px 12px;
}
.nav-small > li > a {
padding: 3px 5px;
font-size: 12px;
}
/*
* Callouts from Bootstrap3 docs
*
* Not quite alerts, but custom and helpful notes for folks reading the docs.
* Requires a base and modifier class.
*/
/* Common styles for all types */
.bs-callout {
margin: 20px 0;
padding: 20px;
border-left: 3px solid #eee;
color: #666;
background: #f9f9f9;
}
.bs-callout h4 {
margin-top: 0;
margin-bottom: 5px;
}
.bs-callout p:last-child {
margin-bottom: 0;
}
/* Variations */
.bs-callout-danger {
background-color: #fdf7f7;
border-color: #eed3d7;
color: #b94a48;
}
.bs-callout-warning {
background-color: #faf8f0;
border-color: #faebcc;
color: #8a6d3b;
}
.bs-callout-info {
background-color: #f4f8fa;
border-color: #bce8f1;
color: #34789a;
}
.bs-callout-success {
background-color: #dff0d8;
border-color: #5cA64d;
color: #3c763d;
}
/** /**
* fix to keep tooltips position in top navigation bar * fix to keep tooltips position in top navigation bar
* *
...@@ -221,16 +151,10 @@ $brand-danger: $bg_danger; ...@@ -221,16 +151,10 @@ $brand-danger: $bg_danger;
* *
*/ */
.panel { .panel {
@include border-radius(0px);
.panel-heading { .panel-heading {
@include border-radius(0px);
font-size: 14px;
line-height: 18px;
.panel-head-actions { .panel-head-actions {
position: relative; position: relative;
top: -7px; top: -5px;
float: right; float: right;
} }
} }
...@@ -263,40 +187,62 @@ $brand-danger: $bg_danger; ...@@ -263,40 +187,62 @@ $brand-danger: $bg_danger;
} }
} }
.panel-default { .panel-succes .panel-heading,
.panel-heading { .panel-info .panel-heading,
background-color: #EEE; .panel-danger .panel-heading,
.panel-warning .panel-heading,
.panel-primary .panel-heading,
.alert {
a {
@extend .alert-link;
color: #fff;
text-decoration: underline;
} }
} }
.panel-danger { // Typography =================================================================
@include panel-colored;
.panel-heading { .text-primary,
color: $border_danger; .text-primary:hover {
border-color: $border_danger; color: $brand-primary;
}
} }
.panel-success { .text-success,
@include panel-colored; .text-success:hover {
.panel-heading { color: $brand-success;
color: $border_success;
border-color: $border_success;
}
} }
.panel-primary { .text-danger,
@include panel-colored; .text-danger:hover {
.panel-heading { color: $brand-danger;
color: $border_primary;
border-color: $border_primary;
}
} }
.panel-warning { .text-warning,
@include panel-colored; .text-warning:hover {
.panel-heading { color: $brand-warning;
color: $border_warning; }
border-color: $border_warning;
.text-info,
.text-info:hover {
color: $brand-info;
}
// Tables =====================================================================
table.table {
.dropdown-menu a {
text-decoration: none;
}
.success,
.warning,
.danger,
.info {
color: #fff;
a:not(.btn) {
text-decoration: underline;
color: #fff;
}
} }
} }
This diff is collapsed.
...@@ -4,7 +4,7 @@ html { ...@@ -4,7 +4,7 @@ html {
&.touch .tooltip { display: none !important; } &.touch .tooltip { display: none !important; }
body { body {
padding-top: 47px; padding-top: 46px;
} }
} }
......
...@@ -121,14 +121,6 @@ ...@@ -121,14 +121,6 @@
} }
} }
@mixin page-title {
color: #333;
line-height: 1.5;
font-weight: normal;
margin-top: 0px;
margin-bottom: 10px;
}
@mixin str-truncated($max_width: 82%) { @mixin str-truncated($max_width: 82%) {
display: inline-block; display: inline-block;
overflow: hidden; overflow: hidden;
...@@ -137,14 +129,3 @@ ...@@ -137,14 +129,3 @@
white-space: nowrap; white-space: nowrap;
max-width: $max_width; max-width: $max_width;
} }
@mixin panel-colored {
border: 1px solid #EEE;
background: $box_bg;
@include box-shadow(0 1px 1px rgba(0, 0, 0, 0.09));
.panel-heading {
font-weight: bold;
background-color: $box_bg;
}
}
/*
* General Colors
*/
$style_color: #474D57; $style_color: #474D57;
$hover: #FFF3EB; $hover: #FFF3EB;
$box_bg: #F9F9F9; $gl-link-color: #446e9b;
$nprogress-color: #c0392b;
/* $gl-font-size: 14px;
* Link colors $list-font-size: 15px;
*/ $sidebar_width: 230px;
$link_color: #446e9b; $avatar_radius: 50%;
$link_hover_color: darken($link-color, 10%); $code_font_size: 13px;
$code_line_height: 1.5;
$btn-border: 1px solid #ccc; $border-color: #dce4ec;
$background-color: #ECF0F1;
/*
* Success colors (green)
*/
$border_success: #019875;
$bg_success: #019875;
/*
* Danger colors (red)
*/
$border_danger: #d43f3a;
$bg_danger: #d9534f;
/* /*
* Primary colors (blue) * State colors:
*/ */
$border_primary: #446e9b; $gl-success: #019875;
$bg_primary: #446e9b; $gl-danger: #d9534f;
$gl-primary: #446e9b;
$gl-info: #029ACF;
$gl-warning: #EB9532;
$gl-primary: #2C3E50;
$gl-success: #18BC9C;
$gl-info: #3498DB;
$gl-warning: #F39C12;
$gl-danger: #E74C3C;
/* /*
* Warning colors (yellow)
*/
$bg_warning: #EB9532;
$border_warning: #EB9532;
/**
* Commit Diff Colors * Commit Diff Colors
*/ */
$added: #63c363; $added: #63c363;
$deleted: #f77; $deleted: #f77;
/** /*
* NProgress customize * Fonts
*/
$nprogress-color: #c0392b;
/**
* Font sizes
*/
$list-font-size: 15px;
/**
* Sidebar navigation width
*/ */
$sidebar_width: 230px; $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;
$avatar_radius: 50%;
$code_font_size: 13px;
$code_line_height: 1.5;
...@@ -6,12 +6,10 @@ ...@@ -6,12 +6,10 @@
} }
&.btn-create { &.btn-create {
@extend .wide;
@extend .btn-success; @extend .btn-success;
} }
&.btn-save { &.btn-save {
@extend .wide;
@extend .btn-primary; @extend .btn-primary;
} }
...@@ -23,34 +21,17 @@ ...@@ -23,34 +21,17 @@
float: right; float: right;
} }
&.wide {
padding-left: 20px;
padding-right: 20px;
}
&.btn-small {
padding: 2px 10px;
font-size: 12px;
}
&.btn-tiny {
font-size: 11px;
padding: 2px 6px;
line-height: 16px;
margin: 2px;
}
&.btn-close { &.btn-close {
color: $bg_danger; color: $gl-danger;
border-color: $border_danger; border-color: $gl-danger;
&:hover { &:hover {
color: #B94A48; color: #B94A48;
} }
} }
&.btn-reopen { &.btn-reopen {
color: $bg_success; color: $gl-success;
border-color: $border_success; border-color: $gl-success;
&:hover { &:hover {
color: #468847; color: #468847;
} }
...@@ -91,6 +72,3 @@ ...@@ -91,6 +72,3 @@
} }
} }
} }
.btn-group-small > .btn { @extend .btn.btn-small; }
.btn-group-tiny > .btn { @extend .btn.btn-tiny; }
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
.slead { .slead {
color: #666; color: #666;
font-size: 14px; font-size: 15px;
margin-bottom: 12px; margin-bottom: 12px;
font-weight: normal; font-weight: normal;
line-height: 24px; line-height: 24px;
...@@ -61,7 +61,7 @@ pre { ...@@ -61,7 +61,7 @@ pre {
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus { .dropdown-menu > li > a:focus {
background: $bg_primary; background: $gl-primary;
color: #FFF color: #FFF
} }
...@@ -71,7 +71,7 @@ pre { ...@@ -71,7 +71,7 @@ pre {
/** FLASH message **/ /** FLASH message **/
.author_link { .author_link {
color: $link_color; color: $gl-link-color;
} }
.help li { color:$style_color; } .help li { color:$style_color; }
...@@ -306,20 +306,8 @@ table { ...@@ -306,20 +306,8 @@ table {
width: 100%; width: 100%;
} }
.broadcast-message {
padding: 10px;
text-align: center;
background: #555;
color: #BBB;
}
.broadcast-message-preview {
@extend .broadcast-message;
margin-bottom: 20px;
}
.btn-sign-in { .btn-sign-in {
margin-top: 7px; margin-top: 5px;
text-shadow: none; text-shadow: none;
} }
...@@ -337,8 +325,11 @@ table { ...@@ -337,8 +325,11 @@ table {
overflow-x: auto; overflow-x: auto;
} }
.footer-links a { .footer-links {
margin-bottom: 20px;
a {
margin-right: 15px; margin-right: 15px;
}
} }
.search_box { .search_box {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
*/ */
.file-holder { .file-holder {
border: 1px solid #CCC; border: 1px solid $border-color;
margin-bottom: 1em; margin-bottom: 1em;
table { table {
...@@ -11,34 +11,30 @@ ...@@ -11,34 +11,30 @@
} }
.file-title { .file-title {
background: #EEE; position: relative;
border-bottom: 1px solid #CCC; background: $background-color;
border-bottom: 1px solid $border-color;
text-shadow: 0 1px 1px #fff; text-shadow: 0 1px 1px #fff;
margin: 0; margin: 0;
text-align: left; text-align: left;
padding: 10px 15px; padding: 10px 15px;
.options { .file-actions {
float: right; float: right;
margin-top: -3px; position: absolute;
top: 5px;
right: 15px;
.btn {
padding: 0px 10px;
font-size: 13px;
line-height: 28px;
}
} }
.left-options { .left-options {
margin-top: -3px; margin-top: -3px;
} }
.file_name {
font-weight: bold;
padding-left: 3px;
font-size: 14px;
small {
color: #888;
font-size: 13px;
font-weight: normal;
padding-left: 10px;
}
}
} }
.file-content { .file-content {
background: #fff; background: #fff;
...@@ -119,7 +115,7 @@ ...@@ -119,7 +115,7 @@
ol { ol {
margin-left: 40px; margin-left: 40px;
padding: 10px 0; padding: 10px 0;
border-left: 1px solid #CCC; border-left: 1px solid $border-color;
margin-bottom: 0; margin-bottom: 0;
background: white; background: white;
li { li {
......
...@@ -29,7 +29,7 @@ fieldset legend { ...@@ -29,7 +29,7 @@ fieldset legend {
padding: 17px 20px 18px; padding: 17px 20px 18px;
margin-top: 18px; margin-top: 18px;
margin-bottom: 18px; margin-bottom: 18px;
background-color: whitesmoke; background-color: #ecf0f1;
border-top: 1px solid #e5e5e5; border-top: 1px solid #e5e5e5;
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
*/ */
.issue-form, .merge-request-form, .wiki-form { .issue-form, .merge-request-form, .wiki-form {
.description { .description {
height: 20em; height: 16em;
border-top-left-radius: 0; border-top-left-radius: 0;
} }
} }
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
.note-text .code { .note-text .code {
border: none; border: none;
box-shadow: none; box-shadow: none;
background: $box_bg; background: $background-color;
padding: 1em; padding: 1em;
overflow-x: auto; overflow-x: auto;
......
...@@ -11,17 +11,17 @@ ...@@ -11,17 +11,17 @@
margin-right: 5px; margin-right: 5px;
&.issue-box-closed { &.issue-box-closed {
background-color: $bg_danger; background-color: $gl-danger;
color: #FFF; color: #FFF;
} }
&.issue-box-merged { &.issue-box-merged {
background-color: $bg_primary; background-color: $gl-primary;
color: #FFF; color: #FFF;
} }
&.issue-box-open { &.issue-box-open {
background-color: $bg_success; background-color: $gl-success;
color: #FFF; color: #FFF;
} }
......
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
} }
.ui-state-active { .ui-state-active {
border: 1px solid $bg_primary; border: 1px solid $gl-primary;
background: $bg_primary; background: $gl-primary;
color: #FFF; color: #FFF;
} }
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
border: 1px solid #ddd; border: 1px solid #ddd;
min-height: 100px; min-height: 100px;
padding: 5px; padding: 5px;
font-size: 14px;
box-shadow: none; box-shadow: none;
} }
...@@ -77,3 +76,12 @@ ...@@ -77,3 +76,12 @@
} }
} }
} }
.markdown-area {
background: #FFF;
border: 1px solid #ddd;
min-height: 100px;
padding: 5px;
box-shadow: none;
width: 100%;
}
...@@ -43,9 +43,11 @@ ...@@ -43,9 +43,11 @@
} }
} }
.page-title .new-issue-link { .page-title {
.note_created_ago, .new-issue-link {
display: none; display: none;
} }
}
.issue_edited_ago, .note_edited_ago { .issue_edited_ago, .note_edited_ago {
display: none; display: none;
......
...@@ -147,19 +147,27 @@ ...@@ -147,19 +147,27 @@
.collapse-nav a { .collapse-nav a {
left: 0px; left: 0px;
padding: 5px 23px 3px 22px; padding: 7px 23px 3px 22px;
} }
} }
} }
.collapse-nav a { .collapse-nav a {
position: fixed; position: fixed;
top: 47px; top: 46px;
padding: 5px 13px 3px 13px; padding: 5px 13px 5px 13px;
left: 197px; left: 197px;
font-size: 13px;
background: #EEE; background: #EEE;
color: black; color: black;
border: 1px solid rgba(0,0,0,0.035); border-left: 1px solid rgba(0,0,0,0.035);
border-right: 1px solid rgba(0,0,0,0.035);
}
.collapse-nav a:hover {
text-decoration: none;
color: #333;
background: #eaeaea;
} }
@media (max-width: $screen-md-max) { @media (max-width: $screen-md-max) {
......
...@@ -2,10 +2,9 @@ ...@@ -2,10 +2,9 @@
.select2-container, .select2-container.select2-drop-above { .select2-container, .select2-container.select2-drop-above {
.select2-choice { .select2-choice {
background: #FFF; background: #FFF;
border-color: #BBB; border-color: #CCC;
padding: 6px 12px; padding: 6px 14px;
font-size: 13px; line-height: 1.42857143;
line-height: 18px;
height: auto; height: auto;
.select2-arrow { .select2-arrow {
...@@ -20,7 +19,7 @@ ...@@ -20,7 +19,7 @@
} }
.select2-container-multi .select2-choices .select2-search-field input { .select2-container-multi .select2-choices .select2-search-field input {
padding: 6px 12px; padding: 8px 14px;
font-size: 13px; font-size: 13px;
line-height: 18px; line-height: 18px;
height: auto; height: auto;
...@@ -42,7 +41,7 @@ ...@@ -42,7 +41,7 @@
.select2-results { .select2-results {
max-height: 350px; max-height: 350px;
.select2-highlighted { .select2-highlighted {
background: $bg_primary; background: $gl-primary;
} }
} }
} }
......
...@@ -9,7 +9,7 @@ table { ...@@ -9,7 +9,7 @@ table {
th { th {
font-weight: normal; font-weight: normal;
font-size: 15px; font-size: 15px;
border-bottom: 1px solid #CCC !important; border-bottom: 1px solid $border-color !important;
} }
td { td {
border-color: #F1F1F1 !important; border-color: #F1F1F1 !important;
......
...@@ -2,28 +2,12 @@ ...@@ -2,28 +2,12 @@
* Headers * Headers
* *
*/ */
h1.page-title { .page-title {
@include page-title;
font-size: 28px;
}
h2.page-title {
@include page-title;
font-size: 24px;
}
h3.page-title {
@include page-title;
font-size: 22px;
}
h4.page-title {
margin-top: 0px; margin-top: 0px;
} color: #333;
line-height: 1.5;
h6 { font-weight: normal;
color: #888; margin-bottom: 5px;
text-transform: uppercase;
} }
/** CODE **/ /** CODE **/
...@@ -36,52 +20,6 @@ pre { ...@@ -36,52 +20,6 @@ pre {
} }
} }
/**
* Links
*
*/
a {
outline: none;
color: $link_color;
&:hover {
text-decoration: underline;
color: $link_hover_color;
}
&:focus {
text-decoration: underline;
}
&.darken {
color: $style_color;
}
&.lined {
text-decoration: underline;
&:hover { text-decoration: underline; }
}
&.gray {
color: gray;
}
&.supp_diff_link {
text-align: center;
padding: 20px 0;
background: #f1f1f1;
width: 100%;
float: left;
}
&.neib {
margin-right: 15px;
}
}
a:focus {
outline: none;
}
.monospace { .monospace {
font-family: $monospace_font; font-family: $monospace_font;
} }
......
/* https://github.com/MozMorris/tomorrow-pygments */ /* https://github.com/MozMorris/tomorrow-pygments */
pre.code.highlight.dark,
.code.dark { .code.dark {
background-color: #1d1f21;
color: #c5c8c6;
pre.code, pre.code,
.line-numbers, .line-numbers,
.line-numbers a { .line-numbers a {
...@@ -13,8 +17,8 @@ ...@@ -13,8 +17,8 @@
} }
// highlight line via anchor // highlight line via anchor
pre.hll { pre .hll {
background-color: #fff !important; background-color: #557 !important;
} }
.hll { background-color: #373b41 } .hll { background-color: #373b41 }
......
/* https://github.com/richleland/pygments-css/blob/master/monokai.css */ /* https://github.com/richleland/pygments-css/blob/master/monokai.css */
pre.code.monokai,
.code.monokai { .code.monokai {
background: #272822;
color: #f8f8f2;
pre.highlight, pre.highlight,
.line-numbers, .line-numbers,
.line-numbers a { .line-numbers a {
...@@ -13,7 +17,7 @@ ...@@ -13,7 +17,7 @@
} }
// highlight line via anchor // highlight line via anchor
pre.hll { pre .hll {
background-color: #49483e !important; background-color: #49483e !important;
} }
......
/* https://gist.github.com/qguv/7936275 */ /* https://gist.github.com/qguv/7936275 */
pre.code.highlight.solarized-dark,
.code.solarized-dark { .code.solarized-dark {
background-color: #002b36;
color: #93a1a1;
pre.code, pre.code,
.line-numbers, .line-numbers,
.line-numbers a { .line-numbers a {
...@@ -13,8 +17,8 @@ ...@@ -13,8 +17,8 @@
} }
// highlight line via anchor // highlight line via anchor
pre.hll { pre .hll {
background-color: #073642 !important; background-color: #174652 !important;
} }
/* Solarized Dark /* Solarized Dark
......
/* https://gist.github.com/qguv/7936275 */ /* https://gist.github.com/qguv/7936275 */
pre.code.highlight.solarized-light,
.code.solarized-light { .code.solarized-light {
background-color: #fdf6e3;
color: #586e75;
pre.code, pre.code,
.line-numbers, .line-numbers,
.line-numbers a { .line-numbers a {
...@@ -13,8 +17,8 @@ ...@@ -13,8 +17,8 @@
} }
// highlight line via anchor // highlight line via anchor
pre.hll { pre .hll {
background-color: #eee8d5 !important; background-color: #ddd8c5 !important;
} }
/* Solarized Light /* Solarized Light
......
/* https://github.com/aahan/pygments-github-style */ /* https://github.com/aahan/pygments-github-style */
pre.code.highlight.white,
.code.white { .code.white {
background-color: #fff;
color: #333;
pre.highlight, pre.highlight,
.line-numbers, .line-numbers,
.line-numbers a { .line-numbers a {
...@@ -13,7 +17,7 @@ ...@@ -13,7 +17,7 @@
} }
// highlight line via anchor // highlight line via anchor
pre.hll { pre .hll {
background-color: #f8eec7 !important; background-color: #f8eec7 !important;
} }
......
/** Typo **/
$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;
...@@ -50,3 +50,14 @@ ...@@ -50,3 +50,14 @@
line-height: 2; line-height: 2;
} }
} }
.broadcast-message {
@extend .alert-warning;
padding: 10px;
text-align: center;
}
.broadcast-message-preview {
@extend .broadcast-message;
margin-bottom: 20px;
}
...@@ -30,7 +30,8 @@ ...@@ -30,7 +30,8 @@
color: #666; color: #666;
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
padding: 10px 0; padding: 3px 0;
margin-bottom: 10px;
} }
.commit-info-row { .commit-info-row {
...@@ -45,15 +46,6 @@ ...@@ -45,15 +46,6 @@
} }
} }
.commit-committer-link,
.commit-author-link {
font-size: 13px;
color: #555;
&:hover {
color: #999;
}
}
.commit-box { .commit-box {
margin: 10px 0; margin: 10px 0;
border-top: 1px solid #ddd; border-top: 1px solid #ddd;
......
.commits-compare-switch{ .commits-compare-switch{
@extend .btn;
background: image-url("switch_icon.png") no-repeat center center; background: image-url("switch_icon.png") no-repeat center center;
width: 32px;
height: 32px;
text-indent: -9999px; text-indent: -9999px;
float: left; float: left;
margin-right: 9px; margin-right: 9px;
border: 1px solid #DDD;
@include border-radius(4px);
padding: 4px;
background-color: #EEE;
} }
.lists-separator { .lists-separator {
margin: 10px 0; margin: 10px 0;
border-color: #DDD; border-color: #DDD;
...@@ -100,6 +94,7 @@ li.commit { ...@@ -100,6 +94,7 @@ li.commit {
.commit-row-info { .commit-row-info {
color: #777; color: #777;
line-height: 24px; line-height: 24px;
font-size: 13px;
a { a {
color: #777; color: #777;
......
...@@ -23,28 +23,6 @@ ...@@ -23,28 +23,6 @@
} }
} }
.dash-sidebar-tabs {
margin-bottom: 2px;
border: none;
margin: 0 !important;
li {
&.active {
a {
background-color: #EEE;
border-bottom: 1px solid #EEE !important;
&:hover {
background: #eee;
}
}
}
a {
border-color: #DDD !important;
}
}
}
.project-row, .group-row { .project-row, .group-row {
padding: 0 !important; padding: 0 !important;
font-size: 14px; font-size: 14px;
...@@ -111,17 +89,8 @@ ...@@ -111,17 +89,8 @@
} }
.dash-new-project { .dash-new-project {
background: $bg_success; background: $gl-success;
border: 1px solid $border_success; border: 1px solid $gl-success;
a {
color: #FFF;
}
}
.dash-new-group {
background: $bg_success;
border: 1px solid $border_success;
a { a {
color: #FFF; color: #FFF;
......
.diff-file { .diff-file {
border: 1px solid #CCC; border: 1px solid $border-color;
margin-bottom: 1em; margin-bottom: 1em;
.diff-header { .diff-header {
@extend .clearfix; position: relative;
background: #EEE; background: $background-color;
border-bottom: 1px solid #CCC; border-bottom: 1px solid $border-color;
padding: 5px 5px 5px 10px; padding: 10px 15px;
color: #555; color: #555;
z-index: 10; z-index: 10;
> span { > span {
@include str-truncated(65%);
font-family: $monospace_font; font-family: $monospace_font;
line-height: 2;
} }
.diff-btn-group { .diff-btn-group {
float: right; float: right;
position: absolute;
top: 5px;
right: 15px;
.btn { .btn {
background-color: #FFF; padding: 0px 10px;
font-size: 13px;
line-height: 28px;
} }
} }
...@@ -87,7 +92,7 @@ ...@@ -87,7 +92,7 @@
background: #F5F5F5; background: #F5F5F5;
color: rgba(0,0,0,0.3); color: rgba(0,0,0,0.3);
padding: 0px 5px; padding: 0px 5px;
border-right: 1px solid #ccc; border-right: 1px solid $border-color;
text-align: right; text-align: right;
min-width: 35px; min-width: 35px;
max-width: 50px; max-width: 50px;
...@@ -136,7 +141,7 @@ ...@@ -136,7 +141,7 @@
background: #ffecec; background: #ffecec;
} }
&.matched { &.matched {
color: #ccc; color: $border-color;
background: #fafafa; background: #fafafa;
} }
&.parallel { &.parallel {
......
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
.event-title { .event-title {
@include str-truncated(72%); @include str-truncated(72%);
color: #333;
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
.author_name { .author_name {
...@@ -54,6 +53,7 @@ ...@@ -54,6 +53,7 @@
} }
} }
.event-body { .event-body {
font-size: 13px;
margin-left: 35px; margin-left: 35px;
margin-right: 80px; margin-right: 80px;
color: #777; color: #777;
...@@ -185,11 +185,10 @@ ...@@ -185,11 +185,10 @@
} }
.event_filter { .event_filter {
li a { li a {
font-size: 13px;
padding: 5px 10px; padding: 5px 10px;
background: rgba(0,0,0,0.045); background: rgba(0,0,0,0.045);
margin-left: 4px; margin-left: 4px;
} }
} }
.project-network { .project-network {
border: 1px solid #CCC; border: 1px solid $border-color;
.controls { .controls {
color: #888; color: #888;
font-size: 14px; font-size: 14px;
padding: 5px; padding: 5px;
border-bottom: 1px solid #bbb; border-bottom: 1px solid $border-color;
background: #EEE; background: #EEE;
} }
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
color: #888; color: #888;
a { a {
font-size: 14px;
margin-right: 3px; margin-right: 3px;
} }
} }
...@@ -29,7 +28,6 @@ ...@@ -29,7 +28,6 @@
th { th {
padding-top: 15px; padding-top: 15px;
font-size: 14px;
line-height: 1.5; line-height: 1.5;
color: #333; color: #333;
text-align: left text-align: left
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
.issue-info { .issue-info {
color: #999; color: #999;
font-size: 13px;
} }
.issue-check { .issue-check {
...@@ -40,7 +41,7 @@ ...@@ -40,7 +41,7 @@
} }
.check-all-holder { .check-all-holder {
height: 32px; height: 36px;
float: left; float: left;
margin-right: 12px; margin-right: 12px;
padding: 6px 15px; padding: 6px 15px;
......
...@@ -12,14 +12,8 @@ ...@@ -12,14 +12,8 @@
} }
.accept-merge-holder { .accept-merge-holder {
margin-top: 5px;
.accept-action { .accept-action {
display: inline-block; display: inline-block;
.accept_merge_request {
padding: 10px 20px;
}
} }
.accept-control { .accept-control {
...@@ -96,6 +90,7 @@ ...@@ -96,6 +90,7 @@
.merge-request-info { .merge-request-info {
color: #999; color: #999;
font-size: 13px;
.merge-request-labels { .merge-request-labels {
display: inline-block; display: inline-block;
...@@ -122,7 +117,8 @@ ...@@ -122,7 +117,8 @@
} }
.mr-state-widget { .mr-state-widget {
background: $box_bg; font-size: 13px;
background: #F9F9F9;
margin-bottom: 20px; margin-bottom: 20px;
color: #666; color: #666;
border: 1px solid #EEE; border: 1px solid #EEE;
...@@ -136,8 +132,8 @@ ...@@ -136,8 +132,8 @@
background-color: #F5F5F5; background-color: #F5F5F5;
&.ci-success { &.ci-success {
color: $bg_success; color: $gl-success;
border-color: $border_success; border-color: $gl-success;
background-color: #F1FAF1; background-color: #F1FAF1;
} }
...@@ -148,20 +144,20 @@ ...@@ -148,20 +144,20 @@
} }
&.ci-running { &.ci-running {
color: $bg_warning; color: $gl-warning;
border-color: $border_warning; border-color: $gl-warning;
background-color: #FAF5F1; background-color: #FAF5F1;
} }
&.ci-failed { &.ci-failed {
color: $bg_danger; color: $gl-danger;
border-color: $border_danger; border-color: $gl-danger;
background-color: #FAF1F1; background-color: #FAF1F1;
} }
&.ci-error { &.ci-error {
color: $bg_danger; color: $gl-danger;
border-color: $border_danger; border-color: $gl-danger;
background-color: #FAF1F1; background-color: #FAF1F1;
} }
} }
......
.issues-sortable-list .str-truncated { .issues-sortable-list .str-truncated {
max-width: 70%; max-width: 90%;
}
li.milestone {
h4 {
font-weight: bold;
}
} }
...@@ -38,13 +38,11 @@ ul.notes { ...@@ -38,13 +38,11 @@ ul.notes {
.author { .author {
color: #333; color: #333;
font-weight: bold; font-weight: bold;
font-size: 14px;
&:hover { &:hover {
color: $link_color; color: $gl-link-color;
} }
} }
.author-username { .author-username {
font-size: 14px;
} }
} }
...@@ -57,9 +55,6 @@ ul.notes { ...@@ -57,9 +55,6 @@ ul.notes {
.note { .note {
display: block; display: block;
position:relative; position:relative;
.attachment {
font-size: 14px;
}
.note-body { .note-body {
overflow: auto; overflow: auto;
.note-text { .note-text {
...@@ -153,7 +148,6 @@ ul.notes { ...@@ -153,7 +148,6 @@ ul.notes {
@extend .cgray; @extend .cgray;
&:hover { &:hover {
color: $link_hover_color;
&.danger { @extend .cred; } &.danger { @extend .cred; }
} }
} }
...@@ -181,10 +175,11 @@ ul.notes { ...@@ -181,10 +175,11 @@ ul.notes {
background: #FFF; background: #FFF;
padding: 4px; padding: 4px;
font-size: 16px; font-size: 16px;
color: $link_color; color: $gl-link-color;
margin-left: -60px; margin-left: -60px;
position: absolute; position: absolute;
z-index: 10; z-index: 10;
width: 32px;
transition: all 0.2s ease; transition: all 0.2s ease;
...@@ -193,8 +188,9 @@ ul.notes { ...@@ -193,8 +188,9 @@ ul.notes {
filter: alpha(opacity=0); filter: alpha(opacity=0);
&:hover { &:hover {
font-size: 24px; width: 38px;
background: $bg_primary; font-size: 20px;
background: $gl-info;
color: #FFF; color: #FFF;
@include show-add-diff-note; @include show-add-diff-note;
} }
......
...@@ -10,13 +10,13 @@ ...@@ -10,13 +10,13 @@
} }
.ns-part { .ns-part {
color: $bg_primary; color: $gl-primary;
} }
.ns-watch { .ns-watch {
color: $bg_success; color: $gl-success;
} }
.ns-mute { .ns-mute {
color: $bg_danger; color: $gl-danger;
} }
...@@ -80,6 +80,10 @@ ...@@ -80,6 +80,10 @@
&.violet { &.violet {
background: #548; background: #548;
} }
&.blue {
background: #2980b9;
}
} }
} }
} }
......
...@@ -99,25 +99,6 @@ ...@@ -99,25 +99,6 @@
margin-right: 45px; margin-right: 45px;
} }
.btn,
.form-control {
border: 1px solid #E1E1E1;
box-shadow: none;
padding: 6px 9px;
}
.btn {
background: none;
color: $link_color;
&.active {
background-color: #f5f5f5;
border: 1px solid rgba(0,0,0,0.195);
color: #333;
font-weight: bold;
}
}
.form-control { .form-control {
cursor: auto; cursor: auto;
@extend .monospace; @extend .monospace;
...@@ -267,15 +248,15 @@ ul.nav.nav-projects-tabs { ...@@ -267,15 +248,15 @@ ul.nav.nav-projects-tabs {
} }
.vs-public { .vs-public {
color: $bg_primary; color: $gl-primary;
} }
.vs-internal { .vs-internal {
color: $bg_warning; color: $gl-warning;
} }
.vs-private { .vs-private {
color: $bg_success; color: $gl-success;
} }
.breadcrumb.repo-breadcrumb { .breadcrumb.repo-breadcrumb {
...@@ -320,3 +301,8 @@ table.table.protected-branches-list tr.no-border { ...@@ -320,3 +301,8 @@ table.table.protected-branches-list tr.no-border {
border: 0; border: 0;
} }
} }
.project-import .btn {
float: left;
margin-right: 10px;
}
...@@ -39,14 +39,9 @@ ...@@ -39,14 +39,9 @@
.tree-item-file-name { .tree-item-file-name {
max-width: 320px; max-width: 320px;
vertical-align: middle; vertical-align: middle;
a {
&:hover {
color: $link_hover_color;
}
}
i { i, a {
color: $bg_primary; color: $gl-link-color;
} }
img { img {
...@@ -66,13 +61,18 @@ ...@@ -66,13 +61,18 @@
.tree_author { .tree_author {
padding-right: 8px; padding-right: 8px;
.commit-author-name {
color: gray;
}
} }
.tree_commit { .tree_commit {
color: gray; color: gray;
.tree-commit-link { .tree-commit-link {
color: #444; color: gray;
&:hover { &:hover {
text-decoration: underline; text-decoration: underline;
} }
......
.gitlab-ui-dev-kit {
> h2 {
font-size: 27px;
border-bottom: 1px solid #CCC;
color: #666;
margin: 30px 0;
font-weight: bold;
}
}
.markdown-area {
background: #FFF;
border: 1px solid #ddd;
min-height: 100px;
padding: 5px;
font-size: 14px;
box-shadow: none;
width: 100%;
}
/**
* Modern GitLab UI theme
*/
.ui_blue {
@include dark-theme(#BECDE9, #2980b9, #1970a9, #096099);
}
...@@ -5,12 +5,12 @@ class Admin::GroupsController < Admin::ApplicationController ...@@ -5,12 +5,12 @@ class Admin::GroupsController < Admin::ApplicationController
@groups = Group.all @groups = Group.all
@groups = @groups.sort(@sort = params[:sort]) @groups = @groups.sort(@sort = params[:sort])
@groups = @groups.search(params[:name]) if params[:name].present? @groups = @groups.search(params[:name]) if params[:name].present?
@groups = @groups.page(params[:page]).per(20) @groups = @groups.page(params[:page]).per(PER_PAGE)
end end
def show def show
@members = @group.members.order("access_level DESC").page(params[:members_page]).per(30) @members = @group.members.order("access_level DESC").page(params[:members_page]).per(PER_PAGE)
@projects = @group.projects.page(params[:projects_page]).per(30) @projects = @group.projects.page(params[:projects_page]).per(PER_PAGE)
end end
def new def new
......
...@@ -11,15 +11,15 @@ class Admin::ProjectsController < Admin::ApplicationController ...@@ -11,15 +11,15 @@ class Admin::ProjectsController < Admin::ApplicationController
@projects = @projects.abandoned if params[:abandoned].present? @projects = @projects.abandoned if params[:abandoned].present?
@projects = @projects.search(params[:name]) if params[:name].present? @projects = @projects.search(params[:name]) if params[:name].present?
@projects = @projects.sort(@sort = params[:sort]) @projects = @projects.sort(@sort = params[:sort])
@projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(PER_PAGE)
end end
def show def show
if @group if @group
@group_members = @group.members.order("access_level DESC").page(params[:group_members_page]).per(30) @group_members = @group.members.order("access_level DESC").page(params[:group_members_page]).per(PER_PAGE)
end end
@project_members = @project.project_members.page(params[:project_members_page]).per(30) @project_members = @project.project_members.page(params[:project_members_page]).per(PER_PAGE)
end end
def transfer def transfer
......
...@@ -45,7 +45,8 @@ class Admin::ServicesController < Admin::ApplicationController ...@@ -45,7 +45,8 @@ class Admin::ServicesController < Admin::ApplicationController
:room, :recipients, :project_url, :webhook, :room, :recipients, :project_url, :webhook,
:user_key, :device, :priority, :sound, :bamboo_url, :username, :password, :user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
:build_key, :server, :teamcity_url, :build_type, :build_key, :server, :teamcity_url, :build_type,
:description, :issues_url, :new_issue_url, :restrict_to_branch :description, :issues_url, :new_issue_url, :restrict_to_branch,
:send_from_committer_email, :disable_diffs
]) ])
end end
end end
...@@ -24,7 +24,7 @@ class Admin::UsersController < Admin::ApplicationController ...@@ -24,7 +24,7 @@ class Admin::UsersController < Admin::ApplicationController
def block def block
if user.block if user.block
redirect_to :back, alert: "Successfully blocked" redirect_to :back, notice: "Successfully blocked"
else else
redirect_to :back, alert: "Error occurred. User was not blocked" redirect_to :back, alert: "Error occurred. User was not blocked"
end end
...@@ -32,7 +32,7 @@ class Admin::UsersController < Admin::ApplicationController ...@@ -32,7 +32,7 @@ class Admin::UsersController < Admin::ApplicationController
def unblock def unblock
if user.activate if user.activate
redirect_to :back, alert: "Successfully unblocked" redirect_to :back, notice: "Successfully unblocked"
else else
redirect_to :back, alert: "Error occurred. User was not unblocked" redirect_to :back, alert: "Error occurred. User was not unblocked"
end end
......
...@@ -4,6 +4,8 @@ class ApplicationController < ActionController::Base ...@@ -4,6 +4,8 @@ class ApplicationController < ActionController::Base
include Gitlab::CurrentSettings include Gitlab::CurrentSettings
include GitlabRoutingHelper include GitlabRoutingHelper
PER_PAGE = 20
before_filter :authenticate_user_from_token! before_filter :authenticate_user_from_token!
before_filter :authenticate_user! before_filter :authenticate_user!
before_filter :reject_blocked! before_filter :reject_blocked!
......
class Profiles::GroupsController < ApplicationController class Dashboard::GroupsController < ApplicationController
layout "profile"
def index def index
@user_groups = current_user.group_members.page(params[:page]).per(20) @user_groups = current_user.group_members.page(params[:page]).per(PER_PAGE)
end end
def leave def leave
@users_group = group.group_members.where(user_id: current_user.id).first @users_group = group.group_members.where(user_id: current_user.id).first
if can?(current_user, :destroy, @users_group) if can?(current_user, :destroy, @users_group)
@users_group.destroy @users_group.destroy
redirect_to(profile_groups_path, info: "You left #{group.name} group.") redirect_to(dashboard_groups_path, info: "You left #{group.name} group.")
else else
return render_403 return render_403
end end
......
...@@ -8,7 +8,7 @@ class Dashboard::MilestonesController < ApplicationController ...@@ -8,7 +8,7 @@ class Dashboard::MilestonesController < ApplicationController
else state('active') else state('active')
end end
@dashboard_milestones = Milestones::GroupService.new(project_milestones).execute @dashboard_milestones = Milestones::GroupService.new(project_milestones).execute
@dashboard_milestones = Kaminari.paginate_array(@dashboard_milestones).page(params[:page]).per(30) @dashboard_milestones = Kaminari.paginate_array(@dashboard_milestones).page(params[:page]).per(PER_PAGE)
end end
def show def show
......
class Dashboard::ProjectsController < ApplicationController
before_filter :event_filter
def starred
@projects = current_user.starred_projects
@projects = @projects.includes(:namespace, :forked_from_project, :tags)
@projects = @projects.sort(@sort = params[:sort])
@groups = []
respond_to do |format|
format.html
format.json do
load_events
pager_json("events/_events", @events.count)
end
end
end
private
def load_events
@events = Event.in_projects(@projects.pluck(:id))
@events = @event_filter.apply_filter(@events).with_associations
@events = @events.limit(20).offset(params[:offset] || 0)
end
end
...@@ -5,15 +5,9 @@ class DashboardController < ApplicationController ...@@ -5,15 +5,9 @@ class DashboardController < ApplicationController
before_filter :event_filter, only: :show before_filter :event_filter, only: :show
def show def show
@projects_limit = 20
@groups = current_user.authorized_groups.order_name_asc
@has_authorized_projects = @projects.count > 0
@projects_count = @projects.count
@projects = @projects.includes(:namespace) @projects = @projects.includes(:namespace)
@last_push = current_user.recent_push @last_push = current_user.recent_push
@publicish_project_count = Project.publicish(current_user).count
respond_to do |format| respond_to do |format|
format.html format.html
...@@ -29,38 +23,15 @@ class DashboardController < ApplicationController ...@@ -29,38 +23,15 @@ class DashboardController < ApplicationController
end end
end end
def projects
@projects = case params[:scope]
when 'personal' then
current_user.namespace.projects
when 'joined' then
current_user.authorized_projects.joined(current_user)
when 'owned' then
current_user.owned_projects
else
current_user.authorized_projects
end
@projects = @projects.where(namespace_id: Group.find_by(name: params[:group])) if params[:group].present?
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
@projects = @projects.includes(:namespace, :forked_from_project, :tags)
@projects = @projects.tagged_with(params[:tag]) if params[:tag].present?
@projects = @projects.sort(@sort = params[:sort])
@projects = @projects.page(params[:page]).per(30)
@tags = current_user.authorized_projects.tags_on(:tags)
@groups = current_user.authorized_groups
end
def merge_requests def merge_requests
@merge_requests = get_merge_requests_collection @merge_requests = get_merge_requests_collection
@merge_requests = @merge_requests.page(params[:page]).per(20) @merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
@merge_requests = @merge_requests.preload(:author, :target_project) @merge_requests = @merge_requests.preload(:author, :target_project)
end end
def issues def issues
@issues = get_issues_collection @issues = get_issues_collection
@issues = @issues.page(params[:page]).per(20) @issues = @issues.page(params[:page]).per(PER_PAGE)
@issues = @issues.preload(:author, :project) @issues = @issues.preload(:author, :project)
respond_to do |format| respond_to do |format|
......
...@@ -8,6 +8,6 @@ class Explore::GroupsController < ApplicationController ...@@ -8,6 +8,6 @@ class Explore::GroupsController < ApplicationController
@groups = GroupsFinder.new.execute(current_user) @groups = GroupsFinder.new.execute(current_user)
@groups = @groups.search(params[:search]) if params[:search].present? @groups = @groups.search(params[:search]) if params[:search].present?
@groups = @groups.sort(@sort = params[:sort]) @groups = @groups.sort(@sort = params[:sort])
@groups = @groups.page(params[:page]).per(20) @groups = @groups.page(params[:page]).per(PER_PAGE)
end end
end end
...@@ -6,19 +6,22 @@ class Explore::ProjectsController < ApplicationController ...@@ -6,19 +6,22 @@ class Explore::ProjectsController < ApplicationController
def index def index
@projects = ProjectsFinder.new.execute(current_user) @projects = ProjectsFinder.new.execute(current_user)
@tags = @projects.tags_on(:tags)
@projects = @projects.tagged_with(params[:tag]) if params[:tag].present?
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
@projects = @projects.search(params[:search]) if params[:search].present? @projects = @projects.search(params[:search]) if params[:search].present?
@projects = @projects.sort(@sort = params[:sort]) @projects = @projects.sort(@sort = params[:sort])
@projects = @projects.includes(:namespace).page(params[:page]).per(20) @projects = @projects.includes(:namespace).page(params[:page]).per(PER_PAGE)
end end
def trending def trending
@trending_projects = TrendingProjectsFinder.new.execute(current_user) @trending_projects = TrendingProjectsFinder.new.execute(current_user)
@trending_projects = @trending_projects.page(params[:page]).per(10) @trending_projects = @trending_projects.page(params[:page]).per(PER_PAGE)
end end
def starred def starred
@starred_projects = ProjectsFinder.new.execute(current_user) @starred_projects = ProjectsFinder.new.execute(current_user)
@starred_projects = @starred_projects.reorder('star_count DESC') @starred_projects = @starred_projects.reorder('star_count DESC')
@starred_projects = @starred_projects.page(params[:page]).per(10) @starred_projects = @starred_projects.page(params[:page]).per(PER_PAGE)
end end
end end
class Groups::ApplicationController < ApplicationController
private
def authorize_admin_group!
unless can?(current_user, :manage_group, group)
return render_404
end
end
end
class Groups::GroupMembersController < ApplicationController class Groups::GroupMembersController < Groups::ApplicationController
before_filter :group before_filter :group
# Authorize # Authorize
...@@ -37,12 +37,6 @@ class Groups::GroupMembersController < ApplicationController ...@@ -37,12 +37,6 @@ class Groups::GroupMembersController < ApplicationController
@group ||= Group.find_by(path: params[:group_id]) @group ||= Group.find_by(path: params[:group_id])
end end
def authorize_admin_group!
unless can?(current_user, :manage_group, group)
return render_404
end
end
def member_params def member_params
params.require(:group_member).permit(:access_level, :user_id) params.require(:group_member).permit(:access_level, :user_id)
end end
......
...@@ -10,7 +10,7 @@ class Groups::MilestonesController < ApplicationController ...@@ -10,7 +10,7 @@ class Groups::MilestonesController < ApplicationController
else state('active') else state('active')
end end
@group_milestones = Milestones::GroupService.new(project_milestones).execute @group_milestones = Milestones::GroupService.new(project_milestones).execute
@group_milestones = Kaminari.paginate_array(@group_milestones).page(params[:page]).per(30) @group_milestones = Kaminari.paginate_array(@group_milestones).page(params[:page]).per(PER_PAGE)
end end
def show def show
......
class GroupsController < ApplicationController class GroupsController < Groups::ApplicationController
skip_before_filter :authenticate_user!, only: [:show, :issues, :members, :merge_requests] skip_before_filter :authenticate_user!, only: [:show, :issues, :members, :merge_requests]
respond_to :html respond_to :html
before_filter :group, except: [:new, :create] before_filter :group, except: [:new, :create]
...@@ -52,13 +52,13 @@ class GroupsController < ApplicationController ...@@ -52,13 +52,13 @@ class GroupsController < ApplicationController
def merge_requests def merge_requests
@merge_requests = get_merge_requests_collection @merge_requests = get_merge_requests_collection
@merge_requests = @merge_requests.page(params[:page]).per(20) @merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
@merge_requests = @merge_requests.preload(:author, :target_project) @merge_requests = @merge_requests.preload(:author, :target_project)
end end
def issues def issues
@issues = get_issues_collection @issues = get_issues_collection
@issues = @issues.page(params[:page]).per(20) @issues = @issues.page(params[:page]).per(PER_PAGE)
@issues = @issues.preload(:author, :project) @issues = @issues.preload(:author, :project)
respond_to do |format| respond_to do |format|
...@@ -132,12 +132,6 @@ class GroupsController < ApplicationController ...@@ -132,12 +132,6 @@ class GroupsController < ApplicationController
end end
end end
def authorize_admin_group!
unless can?(current_user, :manage_group, group)
return render_404
end
end
def set_title def set_title
@title = 'New Group' @title = 'New Group'
end end
......
...@@ -15,4 +15,7 @@ class HelpController < ApplicationController ...@@ -15,4 +15,7 @@ class HelpController < ApplicationController
def shortcuts def shortcuts
end end
def ui
end
end end
...@@ -3,19 +3,17 @@ class Import::BaseController < ApplicationController ...@@ -3,19 +3,17 @@ class Import::BaseController < ApplicationController
private private
def get_or_create_namespace def get_or_create_namespace
existing_namespace = Namespace.find_by_path_or_name(@target_namespace) begin
namespace = Group.create!(name: @target_namespace, path: @target_namespace, owner: current_user)
if existing_namespace namespace.add_owner(current_user)
if existing_namespace.owner == current_user rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid
namespace = existing_namespace namespace = Namespace.find_by_path_or_name(@target_namespace)
else unless namespace.owner == current_user
@already_been_taken = true @already_been_taken = true
return false return false
end end
else
namespace = Group.create(name: @target_namespace, path: @target_namespace, owner: current_user)
namespace.add_owner(current_user)
namespace
end end
namespace
end end
end end
...@@ -14,7 +14,7 @@ class Import::GithubController < Import::BaseController ...@@ -14,7 +14,7 @@ class Import::GithubController < Import::BaseController
def status def status
@repos = client.repos @repos = client.repos
client.orgs.each do |org| client.orgs.each do |org|
@repos += client.repos(org.login) @repos += client.org_repos(org.login)
end end
@already_added_projects = current_user.created_projects.where(import_type: "github") @already_added_projects = current_user.created_projects.where(import_type: "github")
......
...@@ -43,7 +43,7 @@ class ProfilesController < ApplicationController ...@@ -43,7 +43,7 @@ class ProfilesController < ApplicationController
end end
def history def history
@events = current_user.recent_events.page(params[:page]).per(20) @events = current_user.recent_events.page(params[:page]).per(PER_PAGE)
end end
def update_username def update_username
......
...@@ -7,7 +7,7 @@ class Projects::BlameController < Projects::ApplicationController ...@@ -7,7 +7,7 @@ class Projects::BlameController < Projects::ApplicationController
before_filter :authorize_download_code! before_filter :authorize_download_code!
def show def show
@blob = @repository.blob_at(@commit.id, @path) @blame = Gitlab::Git::Blame.new(@repository, @commit.id, @path)
@blame = Gitlab::Git::Blame.new(project.repository, @commit.id, @path) @blob = @blame.blob
end end
end end
...@@ -8,7 +8,7 @@ class Projects::BranchesController < Projects::ApplicationController ...@@ -8,7 +8,7 @@ class Projects::BranchesController < Projects::ApplicationController
def index def index
@sort = params[:sort] || 'name' @sort = params[:sort] || 'name'
@branches = @repository.branches_sorted_by(@sort) @branches = @repository.branches_sorted_by(@sort)
@branches = Kaminari.paginate_array(@branches).page(params[:page]).per(30) @branches = Kaminari.paginate_array(@branches).page(params[:page]).per(PER_PAGE)
end end
def recent def recent
......
...@@ -28,8 +28,8 @@ class Projects::GraphsController < Projects::ApplicationController ...@@ -28,8 +28,8 @@ class Projects::GraphsController < Projects::ApplicationController
@commits.each do |commit| @commits.each do |commit|
@log << { @log << {
author_name: commit.author_name.force_encoding('UTF-8'), author_name: commit.author_name,
author_email: commit.author_email.force_encoding('UTF-8'), author_email: commit.author_email,
date: commit.committed_date.strftime("%Y-%m-%d") date: commit.committed_date.strftime("%Y-%m-%d")
} }
end end
......
...@@ -37,7 +37,7 @@ class Projects::ImportsController < Projects::ApplicationController ...@@ -37,7 +37,7 @@ class Projects::ImportsController < Projects::ApplicationController
private private
def require_no_repo def require_no_repo
if @project.repository_exists? if @project.repository_exists? && !@project.import_in_progress?
redirect_to(namespace_project_path(@project.namespace, @project)) and return redirect_to(namespace_project_path(@project.namespace, @project)) and return
end end
end end
......
...@@ -20,7 +20,7 @@ class Projects::IssuesController < Projects::ApplicationController ...@@ -20,7 +20,7 @@ class Projects::IssuesController < Projects::ApplicationController
terms = params['issue_search'] terms = params['issue_search']
@issues = get_issues_collection @issues = get_issues_collection
@issues = @issues.full_search(terms) if terms.present? @issues = @issues.full_search(terms) if terms.present?
@issues = @issues.page(params[:page]).per(20) @issues = @issues.page(params[:page]).per(PER_PAGE)
respond_to do |format| respond_to do |format|
format.html format.html
......
...@@ -7,7 +7,7 @@ class Projects::LabelsController < Projects::ApplicationController ...@@ -7,7 +7,7 @@ class Projects::LabelsController < Projects::ApplicationController
respond_to :js, :html respond_to :js, :html
def index def index
@labels = @project.labels.page(params[:page]).per(20) @labels = @project.labels.page(params[:page]).per(PER_PAGE)
end end
def new def new
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment