mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-21 02:26:12 +10:00
Merge branch 'ci-and-ce-sitting-in-a-tree-k-i-s-s-i-n-g' of gitlab.com:gitlab-org/gitlab-ce into ci-and-ce-sitting-in-a-tree-k-i-s-s-i-n-g
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 8.0.0 (unreleased)
|
||||
- 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)
|
||||
- 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)
|
||||
- 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)
|
||||
- Upgrade gitlab_git to 7.2.15 to fix `git blame` errors with ISO-encoded files (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)
|
||||
@@ -35,20 +37,29 @@ v 8.0.0 (unreleased)
|
||||
- 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)
|
||||
- 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
|
||||
- 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)
|
||||
|
||||
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
|
||||
- Add FogBugz project import (Jared Szechy)
|
||||
|
||||
v 7.14.0
|
||||
- Fix bug where non-project members of the target project could set labels on new merge requests.
|
||||
|
||||
+2
-2
@@ -294,7 +294,7 @@ GEM
|
||||
github-markup (~> 1.3.3)
|
||||
gollum-grit_adapter (~> 1.0)
|
||||
nokogiri (~> 1.6.4)
|
||||
rouge (~> 1.7.4)
|
||||
rouge (~> 1.10.1)
|
||||
sanitize (~> 2.1.0)
|
||||
stringex (~> 2.5.1)
|
||||
gon (5.0.4)
|
||||
@@ -565,7 +565,7 @@ GEM
|
||||
netrc (~> 0.7)
|
||||
rinku (1.7.3)
|
||||
rotp (1.6.1)
|
||||
rouge (1.7.7)
|
||||
rouge (1.10.1)
|
||||
rqrcode (0.7.0)
|
||||
chunky_png
|
||||
rqrcode-rails3 (0.1.7)
|
||||
|
||||
@@ -10,20 +10,10 @@
|
||||
# WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
||||
# GO AFTER THE REQUIRES BELOW.
|
||||
#
|
||||
#= require jquery
|
||||
#= require bootstrap
|
||||
#= require jquery_ujs
|
||||
#= require turbolinks
|
||||
#= require jquery.turbolinks
|
||||
#= require jquery.endless-scroll
|
||||
#= require pager
|
||||
#= require nprogress
|
||||
#= require nprogress-turbolinks
|
||||
#= require jquery_nested_form
|
||||
#= require_tree .
|
||||
#
|
||||
#
|
||||
|
||||
$(document).on 'click', '.edit-runner-link', (event) ->
|
||||
event.preventDefault()
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
complete: =>
|
||||
$(".loading").hide()
|
||||
success: (data) =>
|
||||
Pager.append(data.count, data.html)
|
||||
CiPager.append(data.count, data.html)
|
||||
dataType: "json"
|
||||
|
||||
append: (count, html) ->
|
||||
@@ -34,9 +34,9 @@
|
||||
fireDelay: 1000
|
||||
fireOnce: true
|
||||
ceaseFire: ->
|
||||
Pager.disable
|
||||
CiPager.disable
|
||||
|
||||
callback: (i) =>
|
||||
unless $(".loading").is(':visible')
|
||||
$(".loading").show()
|
||||
Pager.getItems()
|
||||
CiPager.getItems()
|
||||
|
||||
@@ -167,6 +167,7 @@ class @DropzoneInput
|
||||
dataType: "json"
|
||||
).success (data) ->
|
||||
preview.html data.body
|
||||
preview.syntaxHighlight()
|
||||
|
||||
renderReferencedUsers data.references.users
|
||||
|
||||
|
||||
@@ -122,8 +122,9 @@ class @Notes
|
||||
# or skip if rendered
|
||||
if @isNewNote(note)
|
||||
@note_ids.push(note.id)
|
||||
$('ul.main-notes-list').append(note.html)
|
||||
$('.js-syntax-highlight').syntaxHighlight()
|
||||
$('ul.main-notes-list').
|
||||
append(note.html).
|
||||
syntaxHighlight()
|
||||
@initTaskList()
|
||||
|
||||
###
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# Syntax Highlighter
|
||||
#
|
||||
# Applies a syntax highlighting color scheme CSS class to any element with the
|
||||
# `js-syntax-highlight` class
|
||||
#
|
||||
@@ -6,7 +8,13 @@
|
||||
# <div class="js-syntax-highlight"></div>
|
||||
#
|
||||
$.fn.syntaxHighlight = ->
|
||||
$(this).addClass(gon.user_color_scheme)
|
||||
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()
|
||||
|
||||
@@ -61,3 +61,9 @@
|
||||
* Styles for JS behaviors.
|
||||
*/
|
||||
@import "behaviors.scss";
|
||||
|
||||
/**
|
||||
* CI specific styles:
|
||||
*/
|
||||
@import "ci/**/*";
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -114,11 +114,12 @@ $alert-border-radius: 0;
|
||||
//
|
||||
//##
|
||||
|
||||
$panel-border-radius: 0;
|
||||
$panel-default-text: $text-color;
|
||||
$panel-default-border: #E7E9ED;
|
||||
$panel-default-heading-bg: #F8FAFC;
|
||||
|
||||
$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
|
||||
//
|
||||
|
||||
@@ -55,10 +55,10 @@
|
||||
}
|
||||
|
||||
@mixin md-typography {
|
||||
color: #444;
|
||||
color: $md-text-color;
|
||||
|
||||
a {
|
||||
color: #3084bb;
|
||||
color: $md-link-color;
|
||||
}
|
||||
|
||||
img {
|
||||
|
||||
@@ -2,6 +2,8 @@ $hover: #FFFAF1;
|
||||
$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: 15px;
|
||||
$list-font-size: 15px;
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||
* listed below.
|
||||
*
|
||||
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
||||
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
||||
*
|
||||
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
||||
* compiled file, but it's generally better to create a new file per style scope.
|
||||
*
|
||||
*= require_self
|
||||
*/
|
||||
|
||||
@import "../base/fonts";
|
||||
@import "../base/variables";
|
||||
@import "../base/mixins";
|
||||
@import "../base/layout";
|
||||
@import "../base/gl_variables";
|
||||
@import "../base/gl_bootstrap";
|
||||
|
||||
/**
|
||||
* Customized Twitter bootstrap
|
||||
*/
|
||||
@import '../base/gl_variables';
|
||||
@import '../base/gl_bootstrap';
|
||||
|
||||
|
||||
/**
|
||||
* Font icons
|
||||
*
|
||||
*/
|
||||
@import "font-awesome";
|
||||
|
||||
/**
|
||||
* Generic css (forms, nav etc):
|
||||
*/
|
||||
@import "../generic/**/*";
|
||||
|
||||
/**
|
||||
* Page specific styles (issues, projects etc):
|
||||
*/
|
||||
|
||||
@import "xterm";
|
||||
@import "sections/*";
|
||||
|
||||
/*
|
||||
* NProgress
|
||||
*/
|
||||
$nprogress-color: #9BC;
|
||||
@import 'nprogress';
|
||||
@import 'nprogress-bootstrap';
|
||||
|
||||
body {
|
||||
padding-top: 0 !important;
|
||||
|
||||
a {
|
||||
color: #3084bb;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
.ci-body {
|
||||
pre.trace {
|
||||
background: #111111;
|
||||
color: #fff;
|
||||
font-family: $monospace_font;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap; /* css-3 */
|
||||
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
||||
white-space: -pre-wrap; /* Opera 4-6 */
|
||||
white-space: -o-pre-wrap; /* Opera 7 */
|
||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||
overflow: auto;
|
||||
overflow-y: hidden;
|
||||
font-size: 12px;
|
||||
|
||||
.fa-refresh {
|
||||
font-size: 24px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.autoscroll-container {
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
right: 20px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.scroll-controls {
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
left: 250px;
|
||||
z-index: 100;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.page-sidebar-collapsed {
|
||||
.scroll-controls {
|
||||
left: 70px;
|
||||
}
|
||||
}
|
||||
|
||||
.build-widget {
|
||||
padding: 10px;
|
||||
background: $background-color;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 4px;
|
||||
|
||||
.title {
|
||||
margin-top: 0;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.attr-name {
|
||||
color: #777;
|
||||
}
|
||||
}
|
||||
|
||||
.alert-disabled {
|
||||
background: $background-color;
|
||||
|
||||
a {
|
||||
color: #3084bb !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
.ci-body {
|
||||
.incorrect-syntax{
|
||||
font-size: 19px;
|
||||
color: red;
|
||||
}
|
||||
.correct-syntax{
|
||||
font-size: 19px;
|
||||
color: #47a447;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
.ci-body {
|
||||
.project-title {
|
||||
margin: 0;
|
||||
color: #444;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.builds {
|
||||
@extend .table;
|
||||
|
||||
.build {
|
||||
&.alert{
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.projects-table {
|
||||
td {
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
}
|
||||
|
||||
.commit-info {
|
||||
font-size: 14px;
|
||||
|
||||
.attr-name {
|
||||
font-weight: 300;
|
||||
color: #666;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
pre.commit-message {
|
||||
font-size: 14px;
|
||||
background: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
margin: 20px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
padding-bottom: 20px;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.loading{
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
.ci-body {
|
||||
.runner-state {
|
||||
padding: 6px 12px;
|
||||
margin-right: 10px;
|
||||
color: #FFF;
|
||||
|
||||
&.runner-state-shared {
|
||||
background: #32b186;
|
||||
}
|
||||
&.runner-state-specific {
|
||||
background: #3498db;
|
||||
}
|
||||
}
|
||||
|
||||
.runner-status-online {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.runner-status-offline {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.runner-status-paused {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.runner {
|
||||
.btn {
|
||||
padding: 1px 6px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
pre.trace {
|
||||
background: #111111;
|
||||
color: #fff;
|
||||
font-family: $monospace_font;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap; /* css-3 */
|
||||
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
||||
white-space: -pre-wrap; /* Opera 4-6 */
|
||||
white-space: -o-pre-wrap; /* Opera 7 */
|
||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||
overflow: auto;
|
||||
overflow-y: hidden;
|
||||
font-size: 12px;
|
||||
|
||||
.fa-refresh {
|
||||
font-size: 24px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.autoscroll-container {
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
right: 20px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.scroll-controls {
|
||||
position: fixed;
|
||||
bottom: 10px;
|
||||
left: 20px;
|
||||
z-index: 100;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.build-widget {
|
||||
padding: 10px;
|
||||
background: #f4f4f4;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 4px;
|
||||
|
||||
.title {
|
||||
margin-top: 0;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.attr-name {
|
||||
color: #777;
|
||||
}
|
||||
}
|
||||
|
||||
.alert-disabled {
|
||||
background: #EEE;
|
||||
|
||||
a {
|
||||
color: #3084bb !important;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
.incorrect-syntax{
|
||||
font-size: 19px;
|
||||
color: red;
|
||||
}
|
||||
.correct-syntax{
|
||||
font-size: 19px;
|
||||
color: #47a447;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
.login-block {
|
||||
padding: 15px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
|
||||
p {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 18px 32px;
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
.navbar-static-top {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.navbar-ci {
|
||||
background: #224466;
|
||||
|
||||
.navbar-brand {
|
||||
color: #fff;
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.brand,
|
||||
.nav > li > a {
|
||||
color: #fff;
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
|
||||
.profile-holder {
|
||||
position: relative;
|
||||
|
||||
img {
|
||||
position: absolute;
|
||||
top: -8px;
|
||||
width: 32px;
|
||||
@include border-radius(32px);
|
||||
}
|
||||
|
||||
span {
|
||||
margin-left: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 7px 22px;
|
||||
margin-top: 7px;
|
||||
&:hover, &:active, &:focus {
|
||||
background: #018865 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.turbolink-spinner {
|
||||
position: absolute;
|
||||
top: 11px;
|
||||
left: 50%;
|
||||
color: #FFF;
|
||||
font-size: 20px;
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
.project-title {
|
||||
margin: 0;
|
||||
color: #444;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.builds {
|
||||
@extend .table;
|
||||
|
||||
.build {
|
||||
&.alert{
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.projects-table {
|
||||
td {
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
}
|
||||
|
||||
.commit-info {
|
||||
font-size: 14px;
|
||||
|
||||
.attr-name {
|
||||
font-weight: 300;
|
||||
color: #666;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
pre.commit-message {
|
||||
font-size: 14px;
|
||||
background: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
margin: 20px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
padding-bottom: 20px;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.search{
|
||||
width: 300px;
|
||||
|
||||
.search-input{
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
form{
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.loading{
|
||||
font-size: 20px;
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
.runner-state {
|
||||
padding: 6px 12px;
|
||||
margin-right: 10px;
|
||||
color: #FFF;
|
||||
|
||||
&.runner-state-shared {
|
||||
background: #32b186;
|
||||
}
|
||||
&.runner-state-specific {
|
||||
background: #3498db;
|
||||
}
|
||||
}
|
||||
|
||||
.runner-status-online {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.runner-status-offline {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.runner-status-paused {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.runner {
|
||||
.btn {
|
||||
padding: 1px 6px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
.welcome-block {
|
||||
margin-top: 50px;
|
||||
color: #555;
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
|
||||
h1, h2, h3 {
|
||||
font-weight: bold;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -27,6 +27,10 @@
|
||||
border-bottom: 1px solid #e7e9ed;
|
||||
color: $gl-gray;
|
||||
|
||||
&.top-block {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
&.middle-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
}
|
||||
|
||||
&.btn-save {
|
||||
@extend .btn-primary;
|
||||
@extend .btn-success;
|
||||
}
|
||||
|
||||
&.btn-remove {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -28,12 +28,18 @@
|
||||
padding: $gl-padding;
|
||||
border: 1px solid #e7e9ed;
|
||||
min-height: 90vh;
|
||||
|
||||
&.container-blank {
|
||||
background: none;
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-sidebar {
|
||||
margin-top: 14 + $header-height;
|
||||
margin-bottom: 50px;
|
||||
margin-bottom: 100px;
|
||||
transition-duration: .3s;
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.diff-file {
|
||||
margin-left: -16px;
|
||||
margin-right: -16px;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
border: none;
|
||||
border-bottom: 1px solid #E7E9EE;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
position: relative;
|
||||
background: $background-color;
|
||||
border-bottom: 1px solid $border-color;
|
||||
padding: 10px 15px;
|
||||
padding: 10px 16px;
|
||||
color: #555;
|
||||
z-index: 10;
|
||||
|
||||
|
||||
@@ -48,7 +48,6 @@
|
||||
|
||||
p {
|
||||
color: #7f8fa4;
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,36 +78,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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,17 +102,14 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ module Ci
|
||||
before_filter :authorize_manage_project!, except: [:status, :show, :retry, :cancel]
|
||||
before_filter :authorize_manage_builds!, only: [:retry, :cancel]
|
||||
before_filter :build, except: [:show]
|
||||
layout 'ci/project'
|
||||
|
||||
def show
|
||||
if params[:id] =~ /\A\d+\Z/
|
||||
|
||||
@@ -6,6 +6,7 @@ module Ci
|
||||
before_filter :authorize_access_project!, except: [:status, :show, :cancel]
|
||||
before_filter :authorize_manage_builds!, only: [:cancel]
|
||||
before_filter :commit, only: :show
|
||||
layout 'ci/project'
|
||||
|
||||
def show
|
||||
@builds = @commit.builds
|
||||
|
||||
@@ -22,7 +22,7 @@ module Ci
|
||||
@page = @offset == 0 ? 1 : (@offset / @limit + 1)
|
||||
|
||||
@gl_projects = current_user.authorized_projects
|
||||
@gl_projects = @gl_projects.where("name LIKE %?%", params[:search]) if params[:search]
|
||||
@gl_projects = @gl_projects.where("name LIKE ?", "%#{params[:search]}%") if params[:search]
|
||||
@gl_projects = @gl_projects.page(@page).per(@limit)
|
||||
|
||||
@projects = Ci::Project.where(gitlab_id: @gl_projects.map(&:id)).ordered_by_last_commit_date
|
||||
|
||||
@@ -31,4 +31,26 @@ module PageLayoutHelper
|
||||
@fluid_layout
|
||||
end
|
||||
end
|
||||
|
||||
def blank_container(enabled = false)
|
||||
if @blank_container.nil?
|
||||
@blank_container = enabled
|
||||
else
|
||||
@blank_container
|
||||
end
|
||||
end
|
||||
|
||||
def container_class
|
||||
css_class = "container-fluid"
|
||||
|
||||
unless fluid_layout
|
||||
css_class += " container-limited"
|
||||
end
|
||||
|
||||
if blank_container
|
||||
css_class += " container-blank"
|
||||
end
|
||||
|
||||
css_class
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
%h4.page-title
|
||||
= link_to ci_project_path(@project)
|
||||
= link_to @project.name, ci_project_path(@project)
|
||||
@
|
||||
= @commit.short_sha
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
%i.fa.fa-time
|
||||
#{time_interval_in_words @commit.duration}
|
||||
|
||||
%table.builds
|
||||
%table.table.builds
|
||||
%thead
|
||||
%tr
|
||||
%th Status
|
||||
@@ -81,7 +81,7 @@
|
||||
%h3
|
||||
Retried builds
|
||||
|
||||
%table.builds
|
||||
%table.table.builds
|
||||
%thead
|
||||
%tr
|
||||
%th Status
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
%li
|
||||
= link_to_unless current_page.first?, raw(t 'views.pagination.first'), url, :remote => remote
|
||||
@@ -1,2 +0,0 @@
|
||||
%li.disabled
|
||||
= link_to raw(t 'views.pagination.truncate'), '#'
|
||||
@@ -1,2 +0,0 @@
|
||||
%li
|
||||
= link_to_unless current_page.last?, raw(t 'views.pagination.last'), url, {:remote => remote}
|
||||
@@ -1,2 +0,0 @@
|
||||
%li
|
||||
= link_to_unless current_page.last?, raw(t 'views.pagination.next'), url, :rel => 'next', :remote => remote
|
||||
@@ -1,2 +0,0 @@
|
||||
%li{class: "#{'active' if page.current?}"}
|
||||
= link_to page, page.current? ? '#' : url, {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil}
|
||||
@@ -1,11 +0,0 @@
|
||||
= paginator.render do
|
||||
%ul.pagination
|
||||
= first_page_tag unless current_page.first?
|
||||
= prev_page_tag unless current_page.first?
|
||||
- each_page do |page|
|
||||
- if page.left_outer? || page.right_outer? || page.inside_window?
|
||||
= page_tag page
|
||||
- elsif !page.was_truncated?
|
||||
= gap_tag
|
||||
= next_page_tag unless current_page.last?
|
||||
= last_page_tag unless current_page.last?
|
||||
@@ -1,2 +0,0 @@
|
||||
%li
|
||||
= link_to_unless current_page.first?, raw(t 'views.pagination.previous'), url, :rel => 'prev', :remote => remote
|
||||
@@ -1,10 +1,5 @@
|
||||
- if current_user
|
||||
= content_for :title do
|
||||
%h3.project-title
|
||||
Dashboard
|
||||
.pull-right
|
||||
= render "search"
|
||||
|
||||
= render "search"
|
||||
.projects
|
||||
%p.fetch-status.light
|
||||
%i.fa.fa-refresh.fa-spin
|
||||
@@ -12,6 +7,6 @@
|
||||
$.get '#{gitlab_ci_projects_path}', (data) ->
|
||||
$(".projects").html data.html
|
||||
CiPager.init "#{gitlab_ci_projects_path}", #{Ci::ProjectsController::PROJECTS_BATCH}, false
|
||||
|
||||
|
||||
- else
|
||||
= render 'public'
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
%li{class: 'active'}
|
||||
= link_to @ref, ci_project_path(@project, ref: @ref)
|
||||
|
||||
|
||||
%li.pull-right
|
||||
= link_to 'View on GitLab', @project.gitlab_url, no_turbolink.merge( class: 'btn btn-sm' )
|
||||
|
||||
- if @ref
|
||||
%p
|
||||
@@ -37,7 +38,7 @@
|
||||
|
||||
|
||||
|
||||
%table.builds
|
||||
%table.table.builds
|
||||
%thead
|
||||
%tr
|
||||
%th Status
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
- @blank_container = true
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
%strong= @group.name
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
= current_user.username
|
||||
.content-wrapper
|
||||
= render "layouts/flash"
|
||||
%div{ class: fluid_layout ? "container-fluid" : "container-fluid container-limited" }
|
||||
%div{ class: container_class }
|
||||
.content
|
||||
.clearfix
|
||||
= yield
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
%head
|
||||
%meta{charset: "utf-8"}
|
||||
%meta{content: "GitLab Continuous Integration", name: "description"}
|
||||
%title GitLab CI
|
||||
= stylesheet_link_tag "ci/application", :media => "all"
|
||||
= javascript_include_tag "ci/application"
|
||||
= csrf_meta_tags
|
||||
= favicon_link_tag 'ci/favicon.ico'
|
||||
:erb
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
.navbar.navbar-static-top.navbar-ci
|
||||
.container
|
||||
.navbar-header
|
||||
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"}
|
||||
%span.sr-only Toggle navigation
|
||||
%i.fa.fa-reorder
|
||||
|
||||
= link_to 'GitLab CI', ci_root_path, class: "navbar-brand"
|
||||
|
||||
.collapse.navbar-collapse
|
||||
%ul.nav.navbar-nav
|
||||
- if current_user && current_user.is_admin?
|
||||
%li
|
||||
= link_to ci_admin_projects_path do
|
||||
Admin
|
||||
%li
|
||||
= link_to 'Help', ci_help_path
|
||||
|
||||
%ul.nav.navbar-nav.pull-right
|
||||
- if current_user
|
||||
%li
|
||||
= link_to "/profile", no_turbolink do
|
||||
.profile-holder
|
||||
= image_tag user_avatar_url(current_user, 64), class: 'avatar s32', alt: ''
|
||||
%span= current_user.name
|
||||
%li
|
||||
= link_to destroy_user_session_path, class: "logout", method: :delete do
|
||||
%i.fa.fa-signout
|
||||
Logout
|
||||
- else
|
||||
%li
|
||||
= link_to "Login with GitLab", auth_ci_user_sessions_path, no_turbolink.merge(class: 'btn btn-success btn-login')
|
||||
@@ -1,4 +1,11 @@
|
||||
%ul.nav.nav-pills.nav-stacked.admin-menu
|
||||
%ul.nav.nav-sidebar
|
||||
= nav_link do
|
||||
= link_to ci_root_path, title: 'Back to dashboard', data: {placement: 'right'}, class: 'back-link' do
|
||||
= icon('caret-square-o-left fw')
|
||||
%span
|
||||
Back to Dashboard
|
||||
|
||||
%li.separate-item
|
||||
= nav_link path: 'projects#index' do
|
||||
= link_to ci_admin_projects_path do
|
||||
%i.fa.fa-list-alt
|
||||
@@ -19,8 +26,6 @@
|
||||
Builds
|
||||
%small.pull-right
|
||||
= Ci::Build.count(:all)
|
||||
%li
|
||||
%hr
|
||||
= nav_link(controller: :application_settings, html_options: { class: 'separate-item'}) do
|
||||
= link_to ci_admin_application_settings_path do
|
||||
%i.fa.fa-cogs
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
%ul.nav.nav-sidebar
|
||||
= nav_link do
|
||||
= link_to root_path, title: 'Back to dashboard', data: {placement: 'right'}, class: 'back-link' do
|
||||
= icon('caret-square-o-left fw')
|
||||
%span
|
||||
Back to GitLab
|
||||
%li.separate-item
|
||||
= nav_link path: 'projects#show' do
|
||||
= link_to ci_root_path do
|
||||
%i.fa.fa-home
|
||||
%span
|
||||
Projects
|
||||
- if current_user && current_user.is_admin?
|
||||
%li
|
||||
= link_to ci_admin_projects_path do
|
||||
%i.fa.fa-cogs
|
||||
%span
|
||||
Admin
|
||||
%li
|
||||
= link_to ci_help_path do
|
||||
%i.fa.fa-info
|
||||
%span
|
||||
Help
|
||||
|
||||
@@ -1,40 +1,48 @@
|
||||
%ul.nav.nav-pills.nav-stacked.project-menu
|
||||
%ul.nav.nav-sidebar
|
||||
= nav_link path: 'projects#show' do
|
||||
= link_to ci_project_path(@project) do
|
||||
%i.fa.fa-list-alt
|
||||
Commits
|
||||
%small.pull-right= @project.commits.count
|
||||
%span
|
||||
Commits
|
||||
%small.pull-right= @project.commits.count
|
||||
= nav_link path: 'charts#show' do
|
||||
= link_to ci_project_charts_path(@project) do
|
||||
%i.fa.fa-bar-chart
|
||||
Charts
|
||||
%span
|
||||
Charts
|
||||
= nav_link path: ['runners#index', 'runners#show'] do
|
||||
= link_to ci_project_runners_path(@project) do
|
||||
%i.fa.fa-cog
|
||||
Runners
|
||||
%span
|
||||
Runners
|
||||
= nav_link path: 'variables#show' do
|
||||
= link_to ci_project_variables_path(@project) do
|
||||
%i.fa.fa-code
|
||||
Variables
|
||||
%span
|
||||
Variables
|
||||
= nav_link path: 'web_hooks#index' do
|
||||
= link_to ci_project_web_hooks_path(@project) do
|
||||
%i.fa.fa-link
|
||||
Web Hooks
|
||||
%span
|
||||
Web Hooks
|
||||
= nav_link path: 'triggers#index' do
|
||||
= link_to ci_project_triggers_path(@project) do
|
||||
%i.fa.fa-retweet
|
||||
Triggers
|
||||
%span
|
||||
Triggers
|
||||
= nav_link path: 'services#index' do
|
||||
= link_to ci_project_services_path(@project) do
|
||||
%i.fa.fa-share
|
||||
Services
|
||||
%span
|
||||
Services
|
||||
= nav_link path: 'events#index' do
|
||||
= link_to ci_project_events_path(@project) do
|
||||
%i.fa.fa-book
|
||||
Events
|
||||
%li
|
||||
%hr
|
||||
%span
|
||||
Events
|
||||
%li.separate-item
|
||||
= nav_link path: 'projects#edit' do
|
||||
= link_to edit_ci_project_path(@project) do
|
||||
%i.fa.fa-cogs
|
||||
Settings
|
||||
%span
|
||||
Settings
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
.page-with-sidebar{ class: nav_sidebar_class }
|
||||
= render "layouts/broadcast"
|
||||
.sidebar-wrapper.nicescroll
|
||||
.header-logo
|
||||
= link_to ci_root_path, class: 'home', title: 'Dashboard', id: 'js-shortcuts-home', data: {toggle: 'tooltip', placement: 'bottom'} do
|
||||
= brand_header_logo
|
||||
.gitlab-text-container
|
||||
%h3 GitLab CI
|
||||
- if defined?(sidebar) && sidebar
|
||||
= render "layouts/ci/#{sidebar}"
|
||||
- elsif current_user
|
||||
= render 'layouts/nav/dashboard'
|
||||
.collapse-nav
|
||||
= render partial: 'layouts/collapse_button'
|
||||
- if current_user
|
||||
= link_to current_user, class: 'sidebar-user' do
|
||||
= image_tag avatar_icon(current_user.email, 60), alt: 'User activity', class: 'avatar avatar s36'
|
||||
.username
|
||||
= current_user.username
|
||||
.content-wrapper
|
||||
= render "layouts/flash"
|
||||
= render 'layouts/ci/info'
|
||||
%div{ class: container_class }
|
||||
.content
|
||||
.clearfix
|
||||
= yield
|
||||
@@ -1,18 +1,11 @@
|
||||
!!! 5
|
||||
%html{ lang: "en"}
|
||||
= render 'layouts/ci/head'
|
||||
%body{ :'data-page' => body_data_page }
|
||||
= render 'layouts/ci/nav'
|
||||
= render 'layouts/ci/info'
|
||||
- if content_for?(:title)
|
||||
.container.container-title
|
||||
= yield(:title)
|
||||
%hr
|
||||
= render 'layouts/head'
|
||||
%body{class: "ci-body #{user_application_theme}", 'data-page' => body_data_page}
|
||||
- header_title = "Admin area"
|
||||
- if current_user
|
||||
= render "layouts/header/default", title: header_title
|
||||
- else
|
||||
= render "layouts/header/public", title: header_title
|
||||
|
||||
.container.container-body
|
||||
.content
|
||||
.row
|
||||
.col-md-2.append-bottom-20
|
||||
= render 'layouts/ci/nav_admin'
|
||||
.col-md-10
|
||||
= yield
|
||||
= render 'layouts/ci/page', sidebar: 'nav_admin'
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
!!! 5
|
||||
%html{ lang: "en"}
|
||||
= render 'layouts/ci/head'
|
||||
%body{ :'data-page' => body_data_page }
|
||||
= render 'layouts/ci/nav'
|
||||
= render 'layouts/ci/info'
|
||||
- if content_for?(:title)
|
||||
.container.container-title
|
||||
= yield(:title)
|
||||
%hr
|
||||
= render 'layouts/head'
|
||||
%body{class: "ci-body #{user_application_theme}", 'data-page' => body_data_page}
|
||||
- header_title = "CI Projects"
|
||||
- if current_user
|
||||
= render "layouts/header/default", title: header_title
|
||||
- else
|
||||
= render "layouts/header/public", title: header_title
|
||||
|
||||
.container.container-body
|
||||
.content
|
||||
= yield
|
||||
= render 'layouts/ci/page', sidebar: 'nav_dashboard'
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
!!! 5
|
||||
%html{ lang: "en"}
|
||||
= render 'layouts/ci/head'
|
||||
%body{ :'data-page' => body_data_page }
|
||||
= render 'layouts/ci/info'
|
||||
- if content_for?(:title)
|
||||
.container.container-title
|
||||
= yield(:title)
|
||||
%hr
|
||||
|
||||
.container.container-body
|
||||
.content
|
||||
= yield
|
||||
|
||||
@@ -1,27 +1,11 @@
|
||||
!!! 5
|
||||
%html{ lang: "en"}
|
||||
= render 'layouts/ci/head'
|
||||
%body{ :'data-page' => body_data_page }
|
||||
= render 'layouts/ci/nav'
|
||||
= render 'layouts/ci/info'
|
||||
.container
|
||||
%h3.project-title
|
||||
= @project.name
|
||||
- if @project.public
|
||||
%small
|
||||
%i.fa.fa-globe
|
||||
Public
|
||||
= render 'layouts/head'
|
||||
%body{class: "ci-body #{user_application_theme}", 'data-page' => body_data_page}
|
||||
- header_title = @project.name
|
||||
- if current_user
|
||||
= render "layouts/header/default", title: header_title
|
||||
- else
|
||||
= render "layouts/header/public", title: header_title
|
||||
|
||||
.pull-right
|
||||
= link_to 'View on GitLab', @project.gitlab_url, no_turbolink.merge( class: 'btn btn-sm' )
|
||||
%hr
|
||||
.container.container-body
|
||||
.content
|
||||
- if current_user && can?(current_user, :admin_project, gl_project)
|
||||
.row
|
||||
.col-md-2.append-bottom-20
|
||||
= render 'layouts/ci/nav_project'
|
||||
.col-md-10
|
||||
= yield
|
||||
- else
|
||||
= yield
|
||||
= render 'layouts/ci/page', sidebar: 'nav_project'
|
||||
|
||||
@@ -37,14 +37,15 @@
|
||||
= icon('clipboard fw')
|
||||
%span
|
||||
Snippets
|
||||
- if current_user
|
||||
= nav_link(controller: :profile) do
|
||||
= link_to profile_path, title: 'Profile settings', data: {toggle: 'tooltip', placement: 'bottom'} do
|
||||
= icon('user fw')
|
||||
%span
|
||||
Profile Settings
|
||||
= nav_link(controller: :help) do
|
||||
= link_to help_path, title: 'Help', data: {placement: 'right'} do
|
||||
= icon('question-circle fw')
|
||||
%span
|
||||
Help
|
||||
- if current_user
|
||||
%li.separate-item
|
||||
= nav_link(controller: :profile) do
|
||||
= link_to profile_path, title: 'Profile settings', data: {toggle: 'tooltip', placement: 'bottom'} do
|
||||
= icon('user fw')
|
||||
%span
|
||||
Profile Settings
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
= link_to profile_path, title: 'Profile', data: {placement: 'right'} do
|
||||
= icon('user fw')
|
||||
%span
|
||||
Profile
|
||||
Profile Settings
|
||||
= nav_link(controller: [:accounts, :two_factor_auths]) do
|
||||
= link_to profile_account_path, title: 'Account', data: {placement: 'right'} do
|
||||
= icon('gear fw')
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
- page_title "Profile Settings"
|
||||
- header_title "Profile Settings", profile_path
|
||||
- unless @header_title
|
||||
- header_title "Profile Settings", profile_path
|
||||
- sidebar "profile"
|
||||
|
||||
= render template: "layouts/application"
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
- page_title "Account"
|
||||
%h3.page-title
|
||||
= page_title
|
||||
%p.light
|
||||
Change your username and basic account settings.
|
||||
%hr
|
||||
- header_title page_title, profile_account_path
|
||||
- @blank_container = true
|
||||
|
||||
- if current_user.ldap_user?
|
||||
.alert.alert-info
|
||||
Some options are unavailable for LDAP accounts
|
||||
@@ -69,7 +67,7 @@
|
||||
- button_based_providers.each do |provider|
|
||||
.btn-group
|
||||
= link_to provider_image_tag(provider), user_omniauth_authorize_path(provider), method: :post, class: "btn btn-lg #{'active' if auth_active?(provider)}", "data-no-turbolink" => "true"
|
||||
|
||||
|
||||
- if auth_active?(provider)
|
||||
= link_to unlink_profile_account_path(provider: provider), method: :delete, class: 'btn btn-lg' do
|
||||
= icon('close')
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
- page_title "Applications"
|
||||
%h3.page-title
|
||||
= page_title
|
||||
%p.light
|
||||
- header_title page_title, applications_profile_path
|
||||
|
||||
.gray-content-block.top-block
|
||||
- if user_oauth_applications?
|
||||
Manage applications that can use GitLab as an OAuth provider,
|
||||
Manage applications that can use GitLab as an OAuth provider,
|
||||
and applications that you've authorized to use your account.
|
||||
- else
|
||||
Manage applications that you've authorized to use your account.
|
||||
%hr
|
||||
|
||||
- if user_oauth_applications?
|
||||
.oauth-applications
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
- page_title "Audit Log"
|
||||
%h3.page-title Audit Log
|
||||
%p.light History of authentications
|
||||
- header_title page_title, audit_log_profile_path
|
||||
|
||||
= render 'event_table', events: @events
|
||||
.gray-content-block.top-block
|
||||
History of authentications
|
||||
|
||||
.prepend-top-default
|
||||
= render 'event_table', events: @events
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
- page_title "Emails"
|
||||
%h3.page-title
|
||||
= page_title
|
||||
%p.light
|
||||
- header_title page_title, profile_emails_path
|
||||
|
||||
.gray-content-block.top-block
|
||||
Control emails linked to your account
|
||||
%hr
|
||||
|
||||
|
||||
%ul
|
||||
%ul.prepend-top-default
|
||||
%li
|
||||
Your
|
||||
%b Primary Email
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
- page_title "SSH Keys"
|
||||
%h3.page-title
|
||||
= page_title
|
||||
- header_title page_title, profile_keys_path
|
||||
|
||||
.gray-content-block.top-block
|
||||
.pull-right
|
||||
= link_to "Add SSH Key", new_profile_key_path, class: "btn btn-new"
|
||||
%p.light
|
||||
Before you can add an SSH key you need to
|
||||
= link_to "generate it.", help_page_path("ssh", "README")
|
||||
%hr
|
||||
.oneline
|
||||
Before you can add an SSH key you need to
|
||||
= link_to "generate it.", help_page_path("ssh", "README")
|
||||
|
||||
.prepend-top-default
|
||||
= render 'key_table'
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
- page_title "Notifications"
|
||||
%h3.page-title
|
||||
= page_title
|
||||
%p.light
|
||||
These are your global notification settings.
|
||||
%hr
|
||||
- header_title page_title, profile_notifications_path
|
||||
|
||||
.gray-content-block.top-block
|
||||
These are your global notification settings.
|
||||
|
||||
.prepend-top-default
|
||||
= form_for @user, url: profile_notifications_path, method: :put, html: { class: 'update-notifications form-horizontal global-notifications-form' } do |f|
|
||||
-if @user.errors.any?
|
||||
%div.alert.alert-danger
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
- page_title "Password"
|
||||
%h3.page-title
|
||||
= page_title
|
||||
%p.light
|
||||
- header_title page_title, edit_profile_password_path
|
||||
|
||||
.gray-content-block.top-block
|
||||
- if @user.password_automatically_set?
|
||||
Set your password.
|
||||
- else
|
||||
Change your password or recover your current one.
|
||||
%hr
|
||||
.update-password
|
||||
|
||||
.update-password.prepend-top-default
|
||||
= form_for @user, url: profile_password_path, method: :put, html: { class: 'form-horizontal' } do |f|
|
||||
%div
|
||||
%p.slead
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
%ul
|
||||
- @user.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
|
||||
- unless @user.password_automatically_set?
|
||||
.form-group
|
||||
= f.label :current_password, class: 'control-label'
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
- page_title 'Preferences'
|
||||
%h3.page-title
|
||||
= page_title
|
||||
%p.light
|
||||
- header_title page_title, profile_preferences_path
|
||||
- @blank_container = true
|
||||
|
||||
.alert.alert-help
|
||||
These settings allow you to customize the appearance and behavior of the site.
|
||||
They are saved with your account and will persist to any device you use to
|
||||
access the site.
|
||||
%hr
|
||||
|
||||
= form_for @user, url: profile_preferences_path, remote: true, method: :put, html: {class: 'js-preferences-form form-horizontal'} do |f|
|
||||
.panel.panel-default.application-theme
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
- page_title "Profile"
|
||||
%h3.page-title
|
||||
= page_title
|
||||
%p.light
|
||||
.gray-content-block.top-block
|
||||
This information will appear on your profile.
|
||||
- if current_user.ldap_user?
|
||||
Some options are unavailable for LDAP accounts
|
||||
%hr
|
||||
|
||||
|
||||
|
||||
.prepend-top-default
|
||||
= form_for @user, url: profile_path, method: :put, html: { multipart: true, class: "edit_user form-horizontal" }, authenticity_token: true do |f|
|
||||
-if @user.errors.any?
|
||||
%div.alert.alert-danger
|
||||
|
||||
@@ -7,6 +7,13 @@
|
||||
- if @project.description.present?
|
||||
= markdown(@project.description, pipeline: :description)
|
||||
|
||||
- if forked_from_project = @project.forked_from_project
|
||||
%p
|
||||
Forked from
|
||||
= link_to project_path(forked_from_project) do
|
||||
= forked_from_project.namespace.try(:name)
|
||||
|
||||
|
||||
|
||||
.project-repo-buttons
|
||||
= render 'projects/buttons/star'
|
||||
@@ -14,12 +21,6 @@
|
||||
- unless empty_repo
|
||||
= render 'projects/buttons/fork'
|
||||
|
||||
- if forked_from_project = @project.forked_from_project
|
||||
= link_to project_path(forked_from_project), class: 'btn' do
|
||||
= icon("code-fork fw")
|
||||
Forked from
|
||||
= forked_from_project.namespace.try(:name)
|
||||
|
||||
- if can? current_user, :download_code, @project
|
||||
= link_to archive_namespace_project_repository_path(@project.namespace, @project, ref: @ref, format: 'zip'), class: 'btn', rel: 'nofollow' do
|
||||
= icon('download fw')
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
- else
|
||||
= link_to title, '#'
|
||||
|
||||
%ul.blob-commit-info.well.hidden-xs
|
||||
%ul.blob-commit-info.hidden-xs
|
||||
- blob_commit = @repository.last_commit_for_path(@commit.id, blob.path)
|
||||
= render blob_commit, project: @project
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
- @blank_container = true
|
||||
|
||||
.project-edit-container
|
||||
.project-edit-errors
|
||||
.project-edit-content
|
||||
%div
|
||||
%h3.page-title
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
Project settings
|
||||
%hr
|
||||
.panel-body
|
||||
= form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "edit_project form-horizontal fieldset-form" }, authenticity_token: true do |f|
|
||||
|
||||
|
||||
@@ -10,21 +10,22 @@
|
||||
- group.each do |namespace|
|
||||
.col-md-2.col-sm-3
|
||||
- if fork = namespace.find_fork_of(@project)
|
||||
.thumbnail.fork-exists-thumbnail
|
||||
.fork-thumbnail
|
||||
= link_to project_path(fork), title: "Visit project fork", class: 'has_tooltip' do
|
||||
= image_tag namespace_icon(namespace, 200)
|
||||
= image_tag namespace_icon(namespace, 100)
|
||||
.caption
|
||||
%h4=namespace.human_name
|
||||
%p
|
||||
= namespace.path
|
||||
%strong
|
||||
= namespace.human_name
|
||||
%div.text-primary
|
||||
Already forked
|
||||
|
||||
- else
|
||||
.thumbnail.fork-thumbnail
|
||||
.fork-thumbnail
|
||||
= link_to namespace_project_fork_path(@project.namespace, @project, namespace_key: namespace.id), title: "Fork here", method: "POST", class: 'has_tooltip' do
|
||||
= image_tag namespace_icon(namespace, 200)
|
||||
= image_tag namespace_icon(namespace, 100)
|
||||
.caption
|
||||
%h4=namespace.human_name
|
||||
%p
|
||||
= namespace.path
|
||||
%strong
|
||||
= namespace.human_name
|
||||
|
||||
%p.light
|
||||
Fork is a copy of a project repository.
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
= f.label :title, class: 'control-label' do
|
||||
%strong= 'Title *'
|
||||
.col-sm-10
|
||||
= f.text_field :title, maxlength: 255, autofocus: true,
|
||||
= f.text_field :title, maxlength: 255, autofocus: true, autocomplete: 'off',
|
||||
class: 'form-control pad js-gfm-input', required: true
|
||||
|
||||
- if issuable.is_a?(MergeRequest)
|
||||
|
||||
@@ -2,7 +2,12 @@
|
||||
|
||||
require 'gitlab/current_settings'
|
||||
include Gitlab::CurrentSettings
|
||||
Settings.gitlab['session_expire_delay'] = current_application_settings.session_expire_delay
|
||||
|
||||
# allow it to fail: it may to do so when create_from_defaults is executed before migrations are actually done
|
||||
begin
|
||||
Settings.gitlab['session_expire_delay'] = current_application_settings.session_expire_delay
|
||||
rescue
|
||||
end
|
||||
|
||||
Gitlab::Application.config.session_store(
|
||||
:redis_store, # Using the cookie_store would enable session replay attacks.
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
class CreateProjects < ActiveRecord::Migration
|
||||
def up
|
||||
create_table :projects do |t|
|
||||
t.string :name, null: false
|
||||
t.string :path, null: false
|
||||
t.integer :timeout, null: false, default: 1800
|
||||
t.text :scripts, null: false
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
||||
@@ -1,15 +0,0 @@
|
||||
class CreateBuilds < ActiveRecord::Migration
|
||||
def up
|
||||
create_table :builds do |t|
|
||||
t.integer :project_id
|
||||
t.string :commit_ref
|
||||
t.string :status
|
||||
t.datetime :finished_at
|
||||
t.text :trace
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
||||
@@ -1,46 +0,0 @@
|
||||
class DeviseCreateUsers < ActiveRecord::Migration
|
||||
def change
|
||||
create_table(:users) do |t|
|
||||
## Database authenticatable
|
||||
t.string :email, :null => false, :default => ""
|
||||
t.string :encrypted_password, :null => false, :default => ""
|
||||
|
||||
## Recoverable
|
||||
t.string :reset_password_token
|
||||
t.datetime :reset_password_sent_at
|
||||
|
||||
## Rememberable
|
||||
t.datetime :remember_created_at
|
||||
|
||||
## Trackable
|
||||
t.integer :sign_in_count, :default => 0
|
||||
t.datetime :current_sign_in_at
|
||||
t.datetime :last_sign_in_at
|
||||
t.string :current_sign_in_ip
|
||||
t.string :last_sign_in_ip
|
||||
|
||||
## Confirmable
|
||||
# t.string :confirmation_token
|
||||
# t.datetime :confirmed_at
|
||||
# t.datetime :confirmation_sent_at
|
||||
# t.string :unconfirmed_email # Only if using reconfirmable
|
||||
|
||||
## Lockable
|
||||
# t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
|
||||
# t.string :unlock_token # Only if unlock strategy is :email or :both
|
||||
# t.datetime :locked_at
|
||||
|
||||
## Token authenticatable
|
||||
# t.string :authentication_token
|
||||
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :users, :email, :unique => true
|
||||
add_index :users, :reset_password_token, :unique => true
|
||||
# add_index :users, :confirmation_token, :unique => true
|
||||
# add_index :users, :unlock_token, :unique => true
|
||||
# add_index :users, :authentication_token, :unique => true
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddTokenToProject < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :projects, :token, :string, null: true
|
||||
end
|
||||
end
|
||||
@@ -1,10 +0,0 @@
|
||||
class AddRefFunctionality < ActiveRecord::Migration
|
||||
def change
|
||||
rename_column :builds, :commit_ref, :ref
|
||||
add_column :builds, :sha, :string
|
||||
add_column :projects, :default_ref, :string
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddGitlabUrlToProject < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :projects, :gitlab_url, :string, null: true
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddStartedAtToBuild < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :builds, :started_at, :datetime, null: true
|
||||
end
|
||||
end
|
||||
@@ -1,8 +0,0 @@
|
||||
class IncreateTraceColunmLimit < ActiveRecord::Migration
|
||||
def up
|
||||
change_column :builds, :trace, :text, :limit => 1073741823
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddTmpFileToBuild < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :builds, :tmp_file, :string
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddBeforeShaToBuild < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :builds, :before_sha, :string, null: true
|
||||
end
|
||||
end
|
||||
@@ -1,6 +0,0 @@
|
||||
class AddScheduleToProjects < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :projects, :always_build, :boolean, default: false, null: false
|
||||
add_column :projects, :polling_interval, :string, null: true
|
||||
end
|
||||
end
|
||||
@@ -1,25 +0,0 @@
|
||||
class ChangeScheduleInvertal < ActiveRecord::Migration
|
||||
def up
|
||||
if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
||||
connection.execute(%q{
|
||||
ALTER TABLE projects
|
||||
ALTER COLUMN polling_interval
|
||||
TYPE integer USING CAST(polling_interval AS integer)
|
||||
})
|
||||
else
|
||||
change_column :projects, :polling_interval, :integer, null: true
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
||||
connection.execute(%q{
|
||||
ALTER TABLE projects
|
||||
ALTER COLUMN polling_interval
|
||||
TYPE integer USING CAST(polling_interval AS varchar)
|
||||
})
|
||||
else
|
||||
change_column :projects, :polling_interval, :string, null: true
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddPublicFlagToProject < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :projects, :public, :boolean, null: false, default: false
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddDataFieldToBuild < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :builds, :push_data, :text
|
||||
end
|
||||
end
|
||||
@@ -1,8 +0,0 @@
|
||||
class RemovePathFieldFromProject < ActiveRecord::Migration
|
||||
def up
|
||||
remove_column :projects, :path
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
||||
@@ -1,10 +0,0 @@
|
||||
class CreateRunners < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :runners do |t|
|
||||
t.string :token
|
||||
t.text :public_key
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddRunnerIdToBuild < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :builds, :runner_id, :integer
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class RemoveUsersTable < ActiveRecord::Migration
|
||||
def up
|
||||
drop_table :users
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddMoreFieldsToProject < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :projects, :ssh_url_to_repo, :string
|
||||
end
|
||||
end
|
||||
@@ -1,10 +0,0 @@
|
||||
class CreateRunnerProjects < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :runner_projects do |t|
|
||||
t.integer :runner_id, null: false
|
||||
t.integer :project_id, null: false
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
class AddProjectGitlabIdToProject < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :projects, :gitlab_id, :integer
|
||||
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