mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-15 07:36:41 +10:00
Merge branch 'master' of dev.gitlab.org:gitlab/gitlabhq into ee-7-4
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Conflicts: app/helpers/merge_requests_helper.rb doc/update/README.md lib/gitlab/reference_extractor.rb
This commit is contained in:
@@ -12,6 +12,9 @@ v 7.4.0
|
||||
- API: Add support for forking a project via the API (Bernhard Kaindl)
|
||||
- API: filter project issues by milestone (Julien Bianchi)
|
||||
- Fail harder in the backup script
|
||||
- Zen mode for wiki and milestones (Robert Schilling)
|
||||
- Move Emoji parsing to html-pipeline-gitlab (Robert Schilling)
|
||||
- Font Awesome 4.2 integration (Sullivan Senechal)
|
||||
|
||||
v 7.3.2
|
||||
- Fix creating new file via web editor
|
||||
|
||||
@@ -90,7 +90,7 @@ gem "github-markup"
|
||||
gem 'redcarpet', '~> 3.1.2'
|
||||
gem 'RedCloth'
|
||||
gem 'rdoc', '~>3.6'
|
||||
gem 'org-ruby'
|
||||
gem 'org-ruby', '= 0.9.9'
|
||||
gem 'creole', '~>0.3.6'
|
||||
gem 'wikicloth', '=0.8.1'
|
||||
gem 'asciidoctor', '= 0.1.4'
|
||||
@@ -181,7 +181,7 @@ gem "jquery-ui-rails"
|
||||
gem "jquery-scrollto-rails"
|
||||
gem "raphael-rails", "~> 2.1.2"
|
||||
gem 'bootstrap-sass', '~> 3.0'
|
||||
gem "font-awesome-rails", '~> 3.2'
|
||||
gem "font-awesome-rails", '~> 4.2'
|
||||
gem "gitlab_emoji", "~> 0.0.1.1"
|
||||
gem "gon", '~> 5.0.0'
|
||||
gem 'nprogress-rails'
|
||||
|
||||
+4
-4
@@ -152,7 +152,7 @@ GEM
|
||||
net-ssh (>= 2.1.3)
|
||||
fog-json (1.0.0)
|
||||
multi_json (~> 1.0)
|
||||
font-awesome-rails (3.2.1.3)
|
||||
font-awesome-rails (4.2.0.0)
|
||||
railties (>= 3.2, < 5.0)
|
||||
foreman (0.63.0)
|
||||
dotenv (>= 0.7)
|
||||
@@ -332,7 +332,7 @@ GEM
|
||||
omniauth-twitter (1.0.1)
|
||||
multi_json (~> 1.3)
|
||||
omniauth-oauth (~> 1.0)
|
||||
org-ruby (0.9.8)
|
||||
org-ruby (0.9.9)
|
||||
rubypants (~> 0.2)
|
||||
orm_adapter (0.5.0)
|
||||
pg (0.15.1)
|
||||
@@ -614,7 +614,7 @@ DEPENDENCIES
|
||||
factory_girl_rails
|
||||
ffaker
|
||||
fog (~> 1.14)
|
||||
font-awesome-rails (~> 3.2)
|
||||
font-awesome-rails (~> 4.2)
|
||||
foreman
|
||||
gemnasium-gitlab-service (~> 0.2)
|
||||
github-markup
|
||||
@@ -656,7 +656,7 @@ DEPENDENCIES
|
||||
omniauth-google-oauth2
|
||||
omniauth-shibboleth
|
||||
omniauth-twitter
|
||||
org-ruby
|
||||
org-ruby (= 0.9.9)
|
||||
pg
|
||||
poltergeist (~> 1.5.1)
|
||||
pry
|
||||
|
||||
@@ -172,8 +172,8 @@ $ ->
|
||||
# Show/hide comments on diff
|
||||
$("body").on "click", ".js-toggle-diff-comments", (e) ->
|
||||
$(@).find('i').
|
||||
toggleClass('icon-chevron-down').
|
||||
toggleClass('icon-chevron-up')
|
||||
toggleClass('fa fa-chevron-down').
|
||||
toggleClass('fa fa-chevron-up')
|
||||
$(@).closest(".diff-file").find(".notes_holder").toggle()
|
||||
e.preventDefault()
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ $ ->
|
||||
#
|
||||
$("body").on "click", ".js-toggle-button", (e) ->
|
||||
$(@).find('i').
|
||||
toggleClass('icon-chevron-down').
|
||||
toggleClass('icon-chevron-up')
|
||||
toggleClass('fa fa-chevron-down').
|
||||
toggleClass('fa fa-chevron-up')
|
||||
$(@).closest(".js-toggle-container").find(".js-toggle-content").toggle()
|
||||
e.preventDefault()
|
||||
|
||||
@@ -27,6 +27,8 @@ class Dispatcher
|
||||
new ZenMode()
|
||||
when 'projects:milestones:show'
|
||||
new Milestone()
|
||||
when 'projects:milestones:new'
|
||||
new ZenMode()
|
||||
when 'projects:issues:new','projects:issues:edit'
|
||||
GitLab.GfmAutoComplete.setup()
|
||||
shortcut_handler = new ShortcutsNavigation()
|
||||
@@ -87,6 +89,7 @@ class Dispatcher
|
||||
when 'wikis'
|
||||
new Wikis()
|
||||
shortcut_handler = new ShortcutsNavigation()
|
||||
new ZenMode()
|
||||
when 'snippets', 'labels', 'graphs'
|
||||
shortcut_handler = new ShortcutsNavigation()
|
||||
when 'team_members', 'deploy_keys', 'hooks', 'services', 'protected_branches'
|
||||
|
||||
@@ -7,8 +7,8 @@ $(document).ready ->
|
||||
divHover = "<div class=\"div-dropzone-hover\"></div>"
|
||||
divSpinner = "<div class=\"div-dropzone-spinner\"></div>"
|
||||
divAlert = "<div class=\"" + alertClass + "\"></div>"
|
||||
iconPicture = "<i class=\"icon-picture div-dropzone-icon\"></i>"
|
||||
iconSpinner = "<i class=\"icon-spinner icon-spin div-dropzone-icon\"></i>"
|
||||
iconPicture = "<i class=\"fa fa-picture-o div-dropzone-icon\"></i>"
|
||||
iconSpinner = "<i class=\"fa fa-spinner fa-spin div-dropzone-icon\"></i>"
|
||||
btnAlert = "<button type=\"button\"" + alertAttr + ">×</button>"
|
||||
project_image_path_upload = window.project_image_path_upload or null
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class MergeRequest
|
||||
|
||||
modal = $('#modal_merge_info').modal(show: false)
|
||||
|
||||
disableButtonIfEmptyField '#merge_commit_message', '.accept_merge_request'
|
||||
disableButtonIfEmptyField '#commit_message', '.accept_merge_request'
|
||||
|
||||
|
||||
# Local jQuery finder
|
||||
@@ -40,6 +40,8 @@ class MergeRequest
|
||||
if @opts.ci_enable
|
||||
$.get @opts.url_to_ci_check, (data) =>
|
||||
this.showCiState data.status
|
||||
if data.coverage
|
||||
this.showCiCoverage data.coverage
|
||||
, 'json'
|
||||
|
||||
bindEvents: ->
|
||||
@@ -102,7 +104,11 @@ class MergeRequest
|
||||
when "running", "pending"
|
||||
$('.mr-state-widget').addClass("panel-warning")
|
||||
|
||||
|
||||
showCiCoverage: (coverage) ->
|
||||
cov_html = $('<span>')
|
||||
cov_html.addClass('ci-coverage')
|
||||
cov_html.text('Coverage ' + coverage + '%')
|
||||
$('.ci_widget:visible').append(cov_html)
|
||||
|
||||
loadDiff: (event) ->
|
||||
$.ajax
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Styles that apply to all GFM related forms.
|
||||
*/
|
||||
.issue-form, .merge-request-form, .wiki-form {
|
||||
.description {
|
||||
height: 20em;
|
||||
}
|
||||
}
|
||||
|
||||
.wiki-form {
|
||||
.description {
|
||||
height: 26em;
|
||||
}
|
||||
}
|
||||
|
||||
.milestone-form {
|
||||
.description {
|
||||
height: 14em;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
/**
|
||||
* Styles that apply to both issues and merge requests.
|
||||
*/
|
||||
|
||||
.issue-form, .merge-request-form {
|
||||
.description {
|
||||
height: 20em;
|
||||
}
|
||||
}
|
||||
@@ -124,7 +124,7 @@ $list-group-active-bg: $bg_primary;
|
||||
color: #888;
|
||||
text-shadow: 0 1px 1px #fff;
|
||||
}
|
||||
i[class^="icon-"] {
|
||||
i[class~="fa"] {
|
||||
line-height: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +113,10 @@
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.ci-coverage {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.merge-request-show-labels .label {
|
||||
|
||||
@@ -119,8 +119,7 @@ ul.notes {
|
||||
display: none;
|
||||
float: right;
|
||||
|
||||
[class^="icon-"],
|
||||
[class*="icon-"] {
|
||||
[class~="fa"] {
|
||||
font-size: 16px;
|
||||
line-height: 16px;
|
||||
vertical-align: middle;
|
||||
|
||||
@@ -62,7 +62,7 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
end
|
||||
|
||||
def after_sign_in_path_for resource
|
||||
def after_sign_in_path_for(resource)
|
||||
if resource.is_a?(User) && resource.respond_to?(:blocked?) && resource.blocked?
|
||||
sign_out resource
|
||||
flash[:alert] = "Your account is blocked. Retry when an admin has unblocked it."
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
class ConfirmationsController < Devise::ConfirmationsController
|
||||
|
||||
protected
|
||||
|
||||
def after_confirmation_path_for(resource_name, resource)
|
||||
if signed_in?(resource_name)
|
||||
signed_in_root_path(resource)
|
||||
else
|
||||
sign_in(resource)
|
||||
if signed_in?(resource_name)
|
||||
signed_in_root_path(resource)
|
||||
else
|
||||
new_session_path(resource_name)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -122,7 +122,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||
|
||||
if @merge_request.open? && @merge_request.can_be_merged?
|
||||
@merge_request.should_remove_source_branch = params[:should_remove_source_branch]
|
||||
@merge_request.automerge!(current_user, params[:merge_commit_message])
|
||||
@merge_request.automerge!(current_user, params[:commit_message])
|
||||
@status = true
|
||||
else
|
||||
@status = false
|
||||
@@ -150,8 +150,17 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def ci_status
|
||||
status = @merge_request.source_project.ci_service.commit_status(merge_request.last_commit.sha)
|
||||
response = {status: status}
|
||||
ci_service = @merge_request.source_project.ci_service
|
||||
status = ci_service.commit_status(merge_request.last_commit.sha)
|
||||
|
||||
if ci_service.respond_to?(:commit_coverage)
|
||||
coverage = ci_service.commit_coverage(merge_request.last_commit.sha)
|
||||
end
|
||||
|
||||
response = {
|
||||
status: status,
|
||||
coverage: coverage
|
||||
}
|
||||
|
||||
render json: response
|
||||
end
|
||||
|
||||
@@ -15,11 +15,11 @@ class RegistrationsController < Devise::RegistrationsController
|
||||
super
|
||||
end
|
||||
|
||||
def after_sign_up_path_for resource
|
||||
def after_sign_up_path_for(resource)
|
||||
new_user_session_path
|
||||
end
|
||||
|
||||
def after_inactive_sign_up_path_for resource
|
||||
def after_inactive_sign_up_path_for(resource)
|
||||
new_user_session_path
|
||||
end
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@ module ApplicationHelper
|
||||
css_class << " hide" unless visible
|
||||
|
||||
content_tag :div, class: css_class do
|
||||
content_tag(:i, nil, class: 'icon-spinner icon-spin') + text
|
||||
content_tag(:i, nil, class: 'fa fa-spinner fa-spin') + text
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ module EventsHelper
|
||||
[event.action_name, target].join(" ")
|
||||
end
|
||||
|
||||
def event_filter_link key, tooltip
|
||||
def event_filter_link(key, tooltip)
|
||||
key = key.to_s
|
||||
inactive = if @event_filter.active? key
|
||||
nil
|
||||
@@ -36,10 +36,10 @@ module EventsHelper
|
||||
|
||||
def icon_for_event
|
||||
{
|
||||
EventFilter.push => "icon-upload-alt",
|
||||
EventFilter.merged => "icon-check",
|
||||
EventFilter.comments => "icon-comments",
|
||||
EventFilter.team => "icon-user",
|
||||
EventFilter.push => 'fa fa-upload',
|
||||
EventFilter.merged => 'fa fa-check-square-o',
|
||||
EventFilter.comments => 'fa fa-comments',
|
||||
EventFilter.team => 'fa fa-user',
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
module IconsHelper
|
||||
def boolean_to_icon(value)
|
||||
if value.to_s == "true"
|
||||
content_tag :i, nil, class: 'icon-circle cgreen'
|
||||
content_tag :i, nil, class: 'fa fa-circle cgreen'
|
||||
else
|
||||
content_tag :i, nil, class: 'icon-off clgray'
|
||||
content_tag :i, nil, class: 'fa fa-power-off clgray'
|
||||
end
|
||||
end
|
||||
|
||||
def public_icon
|
||||
content_tag :i, nil, class: 'icon-globe'
|
||||
content_tag :i, nil, class: 'fa fa-globe'
|
||||
end
|
||||
|
||||
def internal_icon
|
||||
content_tag :i, nil, class: 'icon-shield'
|
||||
content_tag :i, nil, class: 'fa fa-shield'
|
||||
end
|
||||
|
||||
def private_icon
|
||||
content_tag :i, nil, class: 'icon-lock'
|
||||
content_tag :i, nil, class: 'fa fa-lock'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module IssuesHelper
|
||||
def issue_css_classes issue
|
||||
def issue_css_classes(issue)
|
||||
classes = "issue"
|
||||
classes << " closed" if issue.closed?
|
||||
classes << " today" if issue.today?
|
||||
@@ -84,7 +84,7 @@ module IssuesHelper
|
||||
'id', 'name', object.assignee_id)
|
||||
end
|
||||
|
||||
def milestone_options object
|
||||
def milestone_options(object)
|
||||
options_from_collection_for_select(object.project.milestones.active,
|
||||
'id', 'title', object.milestone_id)
|
||||
end
|
||||
|
||||
@@ -24,7 +24,7 @@ module MergeRequestsHelper
|
||||
}
|
||||
end
|
||||
|
||||
def mr_css_classes mr
|
||||
def mr_css_classes(mr)
|
||||
classes = "merge-request"
|
||||
classes << " closed" if mr.closed?
|
||||
classes << " merged" if mr.merged?
|
||||
|
||||
@@ -69,7 +69,7 @@ module NotesHelper
|
||||
|
||||
button_tag class: 'btn reply-btn js-discussion-reply-button',
|
||||
data: data, title: 'Add a reply' do
|
||||
link_text = content_tag(:i, nil, class: 'icon-comment')
|
||||
link_text = content_tag(:i, nil, class: 'fa fa-comment')
|
||||
link_text << ' Reply'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
module NotificationsHelper
|
||||
def notification_icon(notification)
|
||||
if notification.disabled?
|
||||
content_tag :i, nil, class: 'icon-volume-off ns-mute'
|
||||
content_tag :i, nil, class: 'fa fa-volume-off ns-mute'
|
||||
elsif notification.participating?
|
||||
content_tag :i, nil, class: 'icon-volume-down ns-part'
|
||||
content_tag :i, nil, class: 'fa fa-volume-down ns-part'
|
||||
elsif notification.watch?
|
||||
content_tag :i, nil, class: 'icon-volume-up ns-watch'
|
||||
content_tag :i, nil, class: 'fa fa-volume-up ns-watch'
|
||||
else
|
||||
content_tag :i, nil, class: 'icon-circle-blank ns-default'
|
||||
content_tag :i, nil, class: 'fa fa-circle-o ns-default'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module ProfileHelper
|
||||
def oauth_active_class provider
|
||||
def oauth_active_class(provider)
|
||||
if current_user.provider == provider.to_s
|
||||
'active'
|
||||
end
|
||||
|
||||
@@ -3,7 +3,7 @@ module ProjectsHelper
|
||||
"You are going to remove #{user.name} from #{project.name} project team. Are you sure?"
|
||||
end
|
||||
|
||||
def link_to_project project
|
||||
def link_to_project(project)
|
||||
link_to project do
|
||||
title = content_tag(:span, project.name, class: 'project-name')
|
||||
|
||||
@@ -39,7 +39,7 @@ module ProjectsHelper
|
||||
end
|
||||
end
|
||||
|
||||
def project_title project
|
||||
def project_title(project)
|
||||
if project.group
|
||||
content_tag :span do
|
||||
link_to(simple_sanitize(project.group.name), group_path(project.group)) + " / " + project.name
|
||||
@@ -133,7 +133,7 @@ module ProjectsHelper
|
||||
'Star'
|
||||
end
|
||||
|
||||
content_tag('i', ' ', class: 'icon-star') + toggle_text
|
||||
content_tag('i', ' ', class: 'fa fa-star') + toggle_text
|
||||
end
|
||||
|
||||
count_html = content_tag('span', class: 'count') do
|
||||
@@ -157,7 +157,7 @@ module ProjectsHelper
|
||||
end
|
||||
|
||||
def link_to_toggle_fork
|
||||
out = content_tag(:i, '', class: 'icon-code-fork')
|
||||
out = content_tag(:i, '', class: 'fa fa-code-fork')
|
||||
out << ' Fork'
|
||||
out << content_tag(:span, class: 'count') do
|
||||
@project.forks_count.to_s
|
||||
|
||||
@@ -89,7 +89,7 @@ module TabHelper
|
||||
end
|
||||
|
||||
# Use nav_tab for save controller/action but different params
|
||||
def nav_tab key, value, &block
|
||||
def nav_tab(key, value, &block)
|
||||
o = {}
|
||||
o[:class] = ""
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
module TagsHelper
|
||||
def tag_path tag
|
||||
def tag_path(tag)
|
||||
"/tags/#{tag}"
|
||||
end
|
||||
|
||||
def tag_list project
|
||||
def tag_list(project)
|
||||
html = ''
|
||||
project.tag_list.each do |tag|
|
||||
html += link_to tag, tag_path(tag)
|
||||
|
||||
@@ -36,9 +36,9 @@ module TreeHelper
|
||||
# type - String type of the tree item; either 'folder' or 'file'
|
||||
def tree_icon(type)
|
||||
icon_class = if type == 'folder'
|
||||
'icon-folder-close'
|
||||
'fa fa-folder'
|
||||
else
|
||||
'icon-file-alt'
|
||||
'fa fa-file-o'
|
||||
end
|
||||
|
||||
content_tag :i, nil, class: icon_class
|
||||
@@ -80,7 +80,7 @@ module TreeHelper
|
||||
end
|
||||
end
|
||||
|
||||
def up_dir_path tree
|
||||
def up_dir_path(tree)
|
||||
file = File.join(@path, "..")
|
||||
tree_join(@ref, file)
|
||||
end
|
||||
|
||||
@@ -184,7 +184,7 @@ class Ability
|
||||
]
|
||||
end
|
||||
|
||||
def group_abilities user, group
|
||||
def group_abilities(user, group)
|
||||
rules = []
|
||||
|
||||
if user.admin? || group.users.include?(user) || ProjectsFinder.new.execute(user, group: group).any?
|
||||
@@ -209,7 +209,7 @@ class Ability
|
||||
rules.flatten
|
||||
end
|
||||
|
||||
def namespace_abilities user, namespace
|
||||
def namespace_abilities(user, namespace)
|
||||
rules = []
|
||||
|
||||
# Only namespace owner and administrators can manage it
|
||||
|
||||
+16
-1
@@ -88,9 +88,24 @@ class Commit
|
||||
description.present?
|
||||
end
|
||||
|
||||
def hook_attrs(project)
|
||||
path_with_namespace = project.path_with_namespace
|
||||
|
||||
{
|
||||
id: id,
|
||||
message: safe_message,
|
||||
timestamp: committed_date.xmlschema,
|
||||
url: "#{Gitlab.config.gitlab.url}/#{path_with_namespace}/commit/#{id}",
|
||||
author: {
|
||||
name: author_name,
|
||||
email: author_email
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
# Discover issues should be closed when this commit is pushed to a project's
|
||||
# default branch.
|
||||
def closes_issues project
|
||||
def closes_issues(project)
|
||||
Gitlab::ClosingIssueExtractor.closed_by_message_in_project(safe_message, project)
|
||||
end
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ module Issuable
|
||||
def to_hook_data
|
||||
{
|
||||
object_kind: self.class.name.underscore,
|
||||
object_attributes: self.attributes
|
||||
object_attributes: hook_attrs
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ module Mentionable
|
||||
|
||||
module ClassMethods
|
||||
# Indicate which attributes of the Mentionable to search for GFM references.
|
||||
def attr_mentionable *attrs
|
||||
def attr_mentionable(*attrs)
|
||||
mentionable_attrs.concat(attrs.map(&:to_s))
|
||||
end
|
||||
|
||||
@@ -38,7 +38,7 @@ module Mentionable
|
||||
|
||||
# Determine whether or not a cross-reference Note has already been created between this Mentionable and
|
||||
# the specified target.
|
||||
def has_mentioned? target
|
||||
def has_mentioned?(target)
|
||||
Note.cross_reference_exists?(target, local_reference)
|
||||
end
|
||||
|
||||
@@ -64,7 +64,7 @@ module Mentionable
|
||||
end
|
||||
|
||||
# Extract GFM references to other Mentionables from this Mentionable. Always excludes its #local_reference.
|
||||
def references p = project, text = mentionable_text
|
||||
def references(p = project, text = mentionable_text)
|
||||
return [] if text.blank?
|
||||
ext = Gitlab::ReferenceExtractor.new
|
||||
ext.analyze(text)
|
||||
@@ -73,7 +73,7 @@ module Mentionable
|
||||
end
|
||||
|
||||
# Create a cross-reference Note for each GFM reference to another Mentionable found in +mentionable_text+.
|
||||
def create_cross_references! p = project, a = author, without = []
|
||||
def create_cross_references!(p = project, a = author, without = [])
|
||||
refs = references(p) - without
|
||||
refs.each do |ref|
|
||||
Note.create_cross_reference_note(ref, local_reference, a, p)
|
||||
@@ -82,7 +82,7 @@ module Mentionable
|
||||
|
||||
# If the mentionable_text field is about to change, locate any *added* references and create cross references for
|
||||
# them. Invoke from an observer's #before_save implementation.
|
||||
def notice_added_references p = project, a = author
|
||||
def notice_added_references(p = project, a = author)
|
||||
ch = changed_attributes
|
||||
original, mentionable_changed = "", false
|
||||
self.class.mentionable_attrs.each do |attr|
|
||||
|
||||
@@ -21,6 +21,7 @@ class WebHook < ActiveRecord::Base
|
||||
default_value_for :push_events, true
|
||||
default_value_for :issues_events, false
|
||||
default_value_for :merge_requests_events, false
|
||||
default_value_for :tag_push_events, false
|
||||
|
||||
# HTTParty timeout
|
||||
default_timeout Gitlab.config.gitlab.webhook_timeout
|
||||
|
||||
@@ -48,6 +48,10 @@ class Issue < ActiveRecord::Base
|
||||
state :closed
|
||||
end
|
||||
|
||||
def hook_attrs
|
||||
attributes
|
||||
end
|
||||
|
||||
# Mentionable overrides.
|
||||
|
||||
def gfm_reference
|
||||
|
||||
@@ -77,7 +77,7 @@ class ProjectMember < Member
|
||||
false
|
||||
end
|
||||
|
||||
def truncate_team project
|
||||
def truncate_team(project)
|
||||
truncate_teams [project.id]
|
||||
end
|
||||
|
||||
|
||||
@@ -211,6 +211,20 @@ class MergeRequest < ActiveRecord::Base
|
||||
Gitlab::Satellite::MergeAction.new(current_user, self).format_patch
|
||||
end
|
||||
|
||||
def hook_attrs
|
||||
attrs = {
|
||||
source: source_project.hook_attrs,
|
||||
target: target_project.hook_attrs,
|
||||
last_commit: nil
|
||||
}
|
||||
|
||||
unless last_commit.nil?
|
||||
attrs.merge!(last_commit: last_commit.hook_attrs(source_project))
|
||||
end
|
||||
|
||||
attributes.merge!(attrs)
|
||||
end
|
||||
|
||||
def for_fork?
|
||||
target_project != source_project
|
||||
end
|
||||
|
||||
@@ -38,7 +38,7 @@ class Namespace < ActiveRecord::Base
|
||||
|
||||
scope :root, -> { where('type IS NULL') }
|
||||
|
||||
def self.search query
|
||||
def self.search(query)
|
||||
where("name LIKE :query OR path LIKE :query", query: "%#{query}%")
|
||||
end
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ module Network
|
||||
@max_count ||= 650
|
||||
end
|
||||
|
||||
def initialize project, ref, commit, filter_ref
|
||||
def initialize(project, ref, commit, filter_ref)
|
||||
@project = project
|
||||
@ref = ref
|
||||
@commit = commit
|
||||
|
||||
+12
-2
@@ -346,7 +346,7 @@ class Project < ActiveRecord::Base
|
||||
path
|
||||
end
|
||||
|
||||
def items_for entity
|
||||
def items_for(entity)
|
||||
case entity
|
||||
when 'issue' then
|
||||
issues
|
||||
@@ -519,7 +519,7 @@ class Project < ActiveRecord::Base
|
||||
end
|
||||
|
||||
# Check if current branch name is marked as protected in the system
|
||||
def protected_branch? branch_name
|
||||
def protected_branch?(branch_name)
|
||||
protected_branches_names.include?(branch_name)
|
||||
end
|
||||
|
||||
@@ -559,6 +559,16 @@ class Project < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def hook_attrs
|
||||
{
|
||||
name: name,
|
||||
ssh_url: ssh_url_to_repo,
|
||||
http_url: http_url_to_repo,
|
||||
namespace: namespace.name,
|
||||
visibility_level: visibility_level
|
||||
}
|
||||
end
|
||||
|
||||
# Reset events cache related to this project
|
||||
#
|
||||
# Since we do cache @event we need to reset cache in special cases:
|
||||
|
||||
@@ -27,12 +27,17 @@ class GitlabCiService < CiService
|
||||
hook.save
|
||||
end
|
||||
|
||||
def commit_status_path sha
|
||||
def commit_status_path(sha)
|
||||
project_url + "/builds/#{sha}/status.json?token=#{token}"
|
||||
end
|
||||
|
||||
def commit_status sha
|
||||
response = HTTParty.get(commit_status_path(sha), verify: false)
|
||||
def get_ci_build(sha)
|
||||
@ci_builds ||= {}
|
||||
@ci_builds[sha] ||= HTTParty.get(commit_status_path(sha), verify: false)
|
||||
end
|
||||
|
||||
def commit_status(sha)
|
||||
response = get_ci_build(sha)
|
||||
|
||||
if response.code == 200 and response["status"]
|
||||
response["status"]
|
||||
@@ -41,7 +46,15 @@ class GitlabCiService < CiService
|
||||
end
|
||||
end
|
||||
|
||||
def build_page sha
|
||||
def commit_coverage(sha)
|
||||
response = get_ci_build(sha)
|
||||
|
||||
if response.code == 200 and response["coverage"]
|
||||
response["coverage"]
|
||||
end
|
||||
end
|
||||
|
||||
def build_page(sha)
|
||||
project_url + "/builds/#{sha}"
|
||||
end
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class ProjectTeam
|
||||
# @team << [@user, :master]
|
||||
# @team << [@users, :master]
|
||||
#
|
||||
def << args
|
||||
def <<(args)
|
||||
users = args.first
|
||||
|
||||
if users.respond_to?(:each)
|
||||
|
||||
+7
-7
@@ -204,7 +204,7 @@ class User < ActiveRecord::Base
|
||||
User.where(name: name).first
|
||||
end
|
||||
|
||||
def filter filter_name
|
||||
def filter(filter_name)
|
||||
case filter_name
|
||||
when "admins"; self.admins
|
||||
when "blocked"; self.blocked
|
||||
@@ -214,7 +214,7 @@ class User < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def search query
|
||||
def search(query)
|
||||
where("lower(name) LIKE :query OR lower(email) LIKE :query OR lower(username) LIKE :query", query: "%#{query.downcase}%")
|
||||
end
|
||||
|
||||
@@ -334,7 +334,7 @@ class User < ActiveRecord::Base
|
||||
several_namespaces? || admin
|
||||
end
|
||||
|
||||
def can? action, subject
|
||||
def can?(action, subject)
|
||||
abilities.allowed?(self, action, subject)
|
||||
end
|
||||
|
||||
@@ -355,7 +355,7 @@ class User < ActiveRecord::Base
|
||||
(personal_projects.count.to_f / projects_limit) * 100
|
||||
end
|
||||
|
||||
def recent_push project_id = nil
|
||||
def recent_push(project_id = nil)
|
||||
# Get push events not earlier than 2 hours ago
|
||||
events = recent_events.code_push.where("created_at > ?", Time.now - 2.hours)
|
||||
events = events.where(project_id: project_id) if project_id
|
||||
@@ -384,11 +384,11 @@ class User < ActiveRecord::Base
|
||||
project.team_member_by_id(self.id)
|
||||
end
|
||||
|
||||
def already_forked? project
|
||||
def already_forked?(project)
|
||||
!!fork_of(project)
|
||||
end
|
||||
|
||||
def fork_of project
|
||||
def fork_of(project)
|
||||
links = ForkedProjectLink.where(forked_from_project_id: project, forked_to_project_id: personal_projects)
|
||||
|
||||
if links.any?
|
||||
@@ -514,7 +514,7 @@ class User < ActiveRecord::Base
|
||||
NotificationService.new
|
||||
end
|
||||
|
||||
def log_info message
|
||||
def log_info(message)
|
||||
Gitlab::AppLogger.info message
|
||||
end
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ class BaseService
|
||||
EventCreateService.new
|
||||
end
|
||||
|
||||
def log_info message
|
||||
def log_info(message)
|
||||
Gitlab::AppLogger.info message
|
||||
end
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ class GitPushService
|
||||
|
||||
# Extract any GFM references from the pushed commit messages. If the configured issue-closing regex is matched,
|
||||
# close the referenced Issue. Create cross-reference Notes corresponding to any other referenced Mentionables.
|
||||
def process_commit_messages ref
|
||||
def process_commit_messages(ref)
|
||||
is_default_branch = is_default_branch?(ref)
|
||||
|
||||
@push_commits.each do |commit|
|
||||
@@ -154,49 +154,40 @@ class GitPushService
|
||||
# will be passed as post receive hook data.
|
||||
#
|
||||
push_commits_limited.each do |commit|
|
||||
data[:commits] << {
|
||||
id: commit.id,
|
||||
message: commit.safe_message,
|
||||
timestamp: commit.committed_date.xmlschema,
|
||||
url: "#{Gitlab.config.gitlab.url}/#{project.path_with_namespace}/commit/#{commit.id}",
|
||||
author: {
|
||||
name: commit.author_name,
|
||||
email: commit.author_email
|
||||
}
|
||||
}
|
||||
data[:commits] << commit.hook_attrs(project)
|
||||
end
|
||||
|
||||
data
|
||||
end
|
||||
|
||||
def push_to_existing_branch? ref, oldrev
|
||||
def push_to_existing_branch?(ref, oldrev)
|
||||
ref_parts = ref.split('/')
|
||||
|
||||
# Return if this is not a push to a branch (e.g. new commits)
|
||||
ref_parts[1] =~ /heads/ && oldrev != "0000000000000000000000000000000000000000"
|
||||
end
|
||||
|
||||
def push_to_new_branch? ref, oldrev
|
||||
def push_to_new_branch?(ref, oldrev)
|
||||
ref_parts = ref.split('/')
|
||||
|
||||
ref_parts[1] =~ /heads/ && oldrev == "0000000000000000000000000000000000000000"
|
||||
end
|
||||
|
||||
def push_remove_branch? ref, newrev
|
||||
def push_remove_branch?(ref, newrev)
|
||||
ref_parts = ref.split('/')
|
||||
|
||||
ref_parts[1] =~ /heads/ && newrev == "0000000000000000000000000000000000000000"
|
||||
end
|
||||
|
||||
def push_to_branch? ref
|
||||
def push_to_branch?(ref)
|
||||
ref =~ /refs\/heads/
|
||||
end
|
||||
|
||||
def is_default_branch? ref
|
||||
def is_default_branch?(ref)
|
||||
ref == "refs/heads/#{project.default_branch}"
|
||||
end
|
||||
|
||||
def commit_user commit
|
||||
def commit_user(commit)
|
||||
User.find_for_commit(commit.author_email, commit.author_name) || user
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
.panel-body
|
||||
- if @sidekiq_processes.empty?
|
||||
%h4.cred
|
||||
%i.icon-warning-sign
|
||||
%i.fa.fa-exclamation-triangle
|
||||
There are no running sidekiq processes. Please restart GitLab
|
||||
- else
|
||||
%table.table
|
||||
@@ -32,10 +32,10 @@
|
||||
|
||||
.clearfix
|
||||
%p
|
||||
%i.icon-exclamation-sign
|
||||
%i.fa.fa-exclamation-circle
|
||||
If '[25 of 25 busy]' is shown, restart GitLab with 'sudo service gitlab reload'.
|
||||
%p
|
||||
%i.icon-exclamation-sign
|
||||
%i.fa.fa-exclamation-circle
|
||||
If more than one sidekiq process is listed, stop GitLab, kill the remaining sidekiq processes (sudo pkill -u #{Settings.gitlab.user} -f sidekiq) and restart GitLab.
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
%p.light
|
||||
Broadcast messages are displayed for every user and can be used to notify users about scheduled maintenance, recent upgrades and more.
|
||||
.broadcast-message-preview
|
||||
%i.icon-bullhorn
|
||||
%i.fa.fa-bullhorn
|
||||
%span Your message here
|
||||
|
||||
= form_for [:admin, @broadcast_message], html: { class: 'broadcast-message-form form-horizontal'} do |f|
|
||||
@@ -53,7 +53,7 @@
|
||||
#{broadcast_message.ends_at.to_s(:short)}
|
||||
|
||||
= link_to [:admin, broadcast_message], method: :delete, remote: true, class: 'remove-row btn btn-tiny' do
|
||||
%i.icon-remove.cred
|
||||
%i.fa.fa-times.cred
|
||||
|
||||
.message= broadcast_message.message
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
= f.label :avatar, "Group avatar", class: 'control-label'
|
||||
.col-sm-10
|
||||
%a.choose-btn.btn.btn-small.js-choose-group-avatar-button
|
||||
%i.icon-paper-clip
|
||||
%i.fa.fa-paperclip
|
||||
%span Choose File ...
|
||||
|
||||
%span.file_name.js-avatar-filename File name...
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
%h4
|
||||
= link_to [:admin, group] do
|
||||
%i.icon-folder-close
|
||||
%i.fa.fa-folder
|
||||
= group.name
|
||||
|
||||
→
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Group: #{@group.name}
|
||||
|
||||
= link_to edit_admin_group_path(@group), class: "btn pull-right" do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
%hr
|
||||
.row
|
||||
@@ -108,6 +108,6 @@
|
||||
%span.pull-right.light
|
||||
= member.human_access
|
||||
= link_to group_group_members_path(@group, member), data: { confirm: remove_user_from_group_message(@group, user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
|
||||
%i.icon-minus.icon-white
|
||||
%i.fa.fa-minus.fa-inverse
|
||||
.panel-footer
|
||||
= paginate @members, param_name: 'members_page', theme: 'gitlab'
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
.tab-pane.active#githost
|
||||
.file-holder#README
|
||||
.file-title
|
||||
%i.icon-file
|
||||
%i.fa.fa-file
|
||||
githost.log
|
||||
.pull-right
|
||||
= link_to '#', class: 'log-bottom' do
|
||||
%i.icon-arrow-down
|
||||
%i.fa.fa-arrow-down
|
||||
Scroll down
|
||||
.file-content.logs
|
||||
%ol
|
||||
@@ -27,11 +27,11 @@
|
||||
.tab-pane#application
|
||||
.file-holder#README
|
||||
.file-title
|
||||
%i.icon-file
|
||||
%i.fa.fa-file
|
||||
application.log
|
||||
.pull-right
|
||||
= link_to '#', class: 'log-bottom' do
|
||||
%i.icon-arrow-down
|
||||
%i.fa.fa-arrow-down
|
||||
Scroll down
|
||||
.file-content.logs
|
||||
%ol
|
||||
@@ -41,11 +41,11 @@
|
||||
.tab-pane#production
|
||||
.file-holder#README
|
||||
.file-title
|
||||
%i.icon-file
|
||||
%i.fa.fa-file
|
||||
production.log
|
||||
.pull-right
|
||||
= link_to '#', class: 'log-bottom' do
|
||||
%i.icon-arrow-down
|
||||
%i.fa.fa-arrow-down
|
||||
Scroll down
|
||||
.file-content.logs
|
||||
%ol
|
||||
@@ -55,11 +55,11 @@
|
||||
.tab-pane#sidekiq
|
||||
.file-holder#README
|
||||
.file-title
|
||||
%i.icon-file
|
||||
%i.fa.fa-file
|
||||
sidekiq.log
|
||||
.pull-right
|
||||
= link_to '#', class: 'log-bottom' do
|
||||
%i.icon-arrow-down
|
||||
%i.fa.fa-arrow-down
|
||||
Scroll down
|
||||
.file-content.logs
|
||||
%ol
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
%h3.page-title
|
||||
Project: #{@project.name_with_namespace}
|
||||
= link_to edit_project_path(@project), class: "btn pull-right" do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
%hr
|
||||
.row
|
||||
@@ -98,7 +98,7 @@
|
||||
group members (#{@group.group_members.count})
|
||||
.pull-right
|
||||
= link_to admin_group_path(@group), class: 'btn btn-small' do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
%ul.well-list
|
||||
- @group_members.each do |member|
|
||||
= render 'groups/group_members/group_member', member: member, show_controls: false
|
||||
@@ -112,7 +112,7 @@
|
||||
(#{@project.users.count})
|
||||
.pull-right
|
||||
= link_to project_team_index_path(@project), class: "btn btn-tiny" do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
Manage Access
|
||||
%ul.well-list.team_members
|
||||
- @project_members.each do |project_member|
|
||||
@@ -127,6 +127,6 @@
|
||||
- else
|
||||
%span.light= project_member.human_access
|
||||
= link_to project_team_member_path(@project, user), data: { confirm: remove_from_project_team_message(@project, user)}, method: :delete, remote: true, class: "btn btn-small btn-remove" do
|
||||
%i.icon-remove
|
||||
%i.fa.fa-times
|
||||
.panel-footer
|
||||
= paginate @project_members, param_name: 'project_members_page', theme: 'gitlab'
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
.form-group
|
||||
= search_field_tag :name, params[:name], placeholder: 'Name, email or username', class: 'form-control'
|
||||
= button_tag class: 'btn btn-primary' do
|
||||
%i.icon-search
|
||||
%i.fa.fa-search
|
||||
%hr
|
||||
= link_to 'Reset', admin_users_path, class: "btn btn-cancel"
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
%li
|
||||
.list-item-name
|
||||
- if user.blocked?
|
||||
%i.icon-lock.cred
|
||||
%i.fa.fa-lock.cred
|
||||
- else
|
||||
%i.icon-user.cgreen
|
||||
%i.fa.fa-user.cgreen
|
||||
= link_to user.name, [:admin, user]
|
||||
- if user.admin?
|
||||
%strong.cred (Admin)
|
||||
@@ -49,7 +49,7 @@
|
||||
%span.cred It's you!
|
||||
.pull-right
|
||||
%span.light
|
||||
%i.icon-envelope
|
||||
%i.fa.fa-envelope
|
||||
= mail_to user.email, user.email, class: 'light'
|
||||
|
||||
= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn btn-small"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
.pull-right
|
||||
= link_to edit_admin_user_path(@user), class: "btn btn-grouped" do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
%hr
|
||||
%ul.nav.nav-tabs
|
||||
@@ -45,7 +45,7 @@
|
||||
%span.light Secondary email:
|
||||
%strong= email.email
|
||||
= link_to remove_email_admin_user_path(@user, email), data: { confirm: "Are you sure you want to remove #{email.email}?" }, method: :delete, class: "btn-tiny btn btn-remove pull-right", title: 'Remove secondary email', id: "remove_email_#{email.id}" do
|
||||
%i.icon-remove
|
||||
%i.fa.fa-times
|
||||
|
||||
%li
|
||||
%span.light Can create groups:
|
||||
@@ -86,6 +86,11 @@
|
||||
- else
|
||||
never
|
||||
|
||||
%li
|
||||
%span.light Sign-in count:
|
||||
%strong
|
||||
= @user.sign_in_count
|
||||
|
||||
- if @user.ldap_user?
|
||||
%li
|
||||
%span.light LDAP uid:
|
||||
@@ -171,8 +176,8 @@
|
||||
.pull-right
|
||||
%span.light= user_group.human_access
|
||||
- unless user_group.owner?
|
||||
= link_to group_users_group_path(group, user_group), data: { confirm: remove_user_from_group_message(group, @user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
|
||||
%i.icon-remove.icon-white
|
||||
= link_to group_group_member_path(group, user_group), data: { confirm: remove_user_from_group_message(group, @user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
|
||||
%i.fa.fa-times.fa-inverse
|
||||
- else
|
||||
.nothing-here-block This user has no groups.
|
||||
|
||||
@@ -211,4 +216,4 @@
|
||||
|
||||
- if tm.respond_to? :project
|
||||
= link_to project_team_member_path(project, @user), data: { confirm: remove_from_project_team_message(project, @user) }, remote: true, method: :delete, class: "btn-tiny btn btn-remove", title: 'Remove user from project' do
|
||||
%i.icon-remove
|
||||
%i.fa.fa-times
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
= search_field_tag :filter_group, nil, placeholder: 'Filter by name', class: 'dash-filter form-control'
|
||||
- if current_user.can_create_group?
|
||||
= link_to new_group_path, class: "btn btn-new pull-right" do
|
||||
%i.icon-plus
|
||||
%i.fa.fa-plus
|
||||
New group
|
||||
%ul.well-list.dash-list
|
||||
- groups.each do |group|
|
||||
@@ -13,7 +13,7 @@
|
||||
%span.group-name.filter-title
|
||||
= truncate(group.name, length: 35)
|
||||
%span.arrow
|
||||
%i.icon-angle-right
|
||||
%i.fa.fa-angle-right
|
||||
- if groups.blank?
|
||||
%li
|
||||
.nothing-here-block You have no groups yet.
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
%span.project-name.filter-title
|
||||
= project.name
|
||||
%span.arrow
|
||||
%i.icon-angle-right
|
||||
%i.fa.fa-angle-right
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
= search_field_tag :filter_projects, nil, placeholder: 'Filter by name', class: 'dash-filter form-control'
|
||||
- if current_user.can_create_project?
|
||||
= link_to new_project_path, class: "btn btn-new pull-right" do
|
||||
%i.icon-plus
|
||||
%i.fa.fa-plus
|
||||
New project
|
||||
|
||||
%ul.well-list.dash-list
|
||||
@@ -21,4 +21,4 @@
|
||||
.pull-right
|
||||
= link_to projects_dashboard_path do
|
||||
Show all
|
||||
%i.icon-angle-right
|
||||
%i.fa.fa-angle-right
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
- @groups.each do |group|
|
||||
%li{ class: (group.name == params[:group]) ? 'active' : 'light' }
|
||||
= link_to projects_dashboard_filter_path(group: group.name) do
|
||||
%i.icon-folder-close-alt
|
||||
%i.fa.fa-folder-o
|
||||
= group.name
|
||||
%small.pull-right
|
||||
= group.projects.count
|
||||
@@ -51,5 +51,5 @@
|
||||
- @tags.each do |tag|
|
||||
%li{ class: (tag.name == params[:tag]) ? 'active' : 'light' }
|
||||
= link_to projects_dashboard_filter_path(scope: params[:scope], tag: tag.name) do
|
||||
%i.icon-tag
|
||||
%i.fa.fa-tag
|
||||
= tag.name
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
%span.rss-icon
|
||||
= link_to dashboard_path(:atom, { private_token: current_user.private_token }) do
|
||||
%strong
|
||||
%i.icon-rss
|
||||
%i.fa.fa-rss
|
||||
News Feed
|
||||
|
||||
%hr
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
%hr
|
||||
%div
|
||||
.dashboard-intro-icon
|
||||
%i.icon-bookmark-empty
|
||||
%i.fa.fa-bookmark-o
|
||||
%div
|
||||
%p.slead
|
||||
You don't have access to any projects right now.
|
||||
@@ -23,7 +23,7 @@
|
||||
%hr
|
||||
%div
|
||||
.dashboard-intro-icon
|
||||
%i.icon-group
|
||||
%i.fa.fa-users
|
||||
%div
|
||||
%p.slead
|
||||
You can create a group for several dependent projects.
|
||||
@@ -37,7 +37,7 @@
|
||||
%hr
|
||||
%div
|
||||
.dashboard-intro-icon
|
||||
%i.icon-globe
|
||||
%i.fa.fa-globe
|
||||
%div
|
||||
%p.slead
|
||||
There are
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
.row
|
||||
.fixed.sidebar-expand-button.hidden-lg.hidden-md
|
||||
%i.icon-list.icon-2x
|
||||
%i.fa.fa-list.fa-2x
|
||||
.col-md-3.responsive-side
|
||||
= render 'shared/filter', entity: 'issue'
|
||||
.col-md-9
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
%hr
|
||||
.row
|
||||
.fixed.sidebar-expand-button.hidden-lg.hidden-md
|
||||
%i.icon-list.icon-2x
|
||||
%i.fa.fa-list.fa-2x
|
||||
.col-md-3.responsive-side
|
||||
= render 'shared/filter', entity: 'merge_request'
|
||||
.col-md-9
|
||||
|
||||
@@ -40,23 +40,23 @@
|
||||
- if current_user.can_leave_project?(project)
|
||||
.pull-right
|
||||
= link_to leave_project_team_members_path(project), data: { confirm: "Leave project?"}, method: :delete, remote: true, class: "btn-tiny btn remove-row", title: 'Leave project' do
|
||||
%i.icon-signout
|
||||
%i.fa.fa-sign-out
|
||||
Leave
|
||||
|
||||
- if project.forked_from_project
|
||||
%small.pull-right
|
||||
%i.icon-code-fork
|
||||
%i.fa.fa-code-fork
|
||||
Forked from:
|
||||
= link_to project.forked_from_project.name_with_namespace, project_path(project.forked_from_project)
|
||||
.project-info
|
||||
.pull-right
|
||||
- if project.archived?
|
||||
%span.label
|
||||
%i.icon-archive
|
||||
%i.fa.fa-archive
|
||||
Archived
|
||||
- project.tags.each do |tag|
|
||||
%span.label.label-info
|
||||
%i.icon-tag
|
||||
%i.fa.fa-tag
|
||||
= tag.name
|
||||
- if project.description.present?
|
||||
%p= truncate project.description, length: 100
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
= render 'sidebar'
|
||||
|
||||
.fixed.sidebar-expand-button.hidden-lg.hidden-md
|
||||
%i.icon-list.icon-2x
|
||||
%i.fa.fa-list.fa-2x
|
||||
|
||||
- else
|
||||
= render "zero_authorized_projects"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
.event-body
|
||||
.event-note
|
||||
.md
|
||||
%i.icon-comment-alt.event-note-icon
|
||||
%i.fa.fa-comment-o.event-note-icon
|
||||
= event_note(event.target.note)
|
||||
- note = event.target
|
||||
- if note.attachment.url
|
||||
@@ -18,5 +18,5 @@
|
||||
= image_tag note.attachment.secure_url, class: 'note-image-attach'
|
||||
- else
|
||||
= link_to note.attachment.secure_url, target: "_blank", class: 'note-file-attach' do
|
||||
%i.icon-paper-clip
|
||||
%i.fa.fa-paperclip
|
||||
= note.attachment_identifier
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
.clearfix
|
||||
%h4
|
||||
= link_to group_path(id: group.path) do
|
||||
%i.icon-group
|
||||
%i.fa.fa-users
|
||||
= group.name
|
||||
.clearfix
|
||||
%p
|
||||
|
||||
@@ -21,5 +21,5 @@
|
||||
·
|
||||
= link_to pluralize(project.repository.tag_names.count, 'tag'), project_tags_path(project)
|
||||
- else
|
||||
%i.icon-warning-sign
|
||||
%i.fa.fa-exclamation-triangle
|
||||
Empty repository
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.explore-trending-block
|
||||
%p.lead
|
||||
%i.icon-comments-alt
|
||||
%i.fa.fa-comments-o
|
||||
See most starred projects
|
||||
%hr
|
||||
.public-projects
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.explore-trending-block
|
||||
%p.lead
|
||||
%i.icon-comments-alt
|
||||
%i.fa.fa-comments-o
|
||||
See most discussed projects for last month
|
||||
%hr
|
||||
.public-projects
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
- if can? current_user, :create_projects, @group
|
||||
.panel-head-actions
|
||||
= link_to new_project_path(namespace_id: @group.id), class: "btn btn-new" do
|
||||
%i.icon-plus
|
||||
%i.fa.fa-plus
|
||||
New project
|
||||
%ul.well-list
|
||||
- if projects.blank?
|
||||
@@ -18,4 +18,4 @@
|
||||
%span.project-name
|
||||
= project.name
|
||||
%span.arrow
|
||||
%i.icon-angle-right
|
||||
%i.fa.fa-angle-right
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
%ul.nav.nav-pills.nav-stacked.nav-stacked-menu
|
||||
= nav_link(path: 'groups#edit') do
|
||||
= link_to edit_group_path(@group) do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
Group
|
||||
= nav_link(path: 'groups#projects') do
|
||||
= link_to projects_group_path(@group) do
|
||||
%i.icon-folder-close
|
||||
%i.fa.fa-folder
|
||||
Projects
|
||||
= nav_link(controller: :ldap_group_links) do
|
||||
= link_to group_ldap_group_links_path(@group) do
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
- else
|
||||
You can upload a group avatar here
|
||||
%a.choose-btn.btn.btn-small.js-choose-group-avatar-button
|
||||
%i.icon-paper-clip
|
||||
%i.fa.fa-paperclip
|
||||
%span Choose File ...
|
||||
|
||||
%span.file_name.js-avatar-filename File name...
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
- if show_controls
|
||||
- if can?(current_user, :modify, member)
|
||||
= link_to '#', class: "btn-tiny btn js-toggle-button", title: 'Edit access level' do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
- if can?(current_user, :destroy, member)
|
||||
- if current_user == member.user
|
||||
= link_to leave_profile_group_path(@group), data: { confirm: leave_group_message(@group.name)}, method: :delete, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
|
||||
%i.icon-minus.icon-white
|
||||
%i.fa.fa-minus.fa-inverse
|
||||
- else
|
||||
= link_to group_group_member_path(@group, member), data: { confirm: remove_user_from_group_message(@group, user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
|
||||
%i.icon-minus.icon-white
|
||||
%i.fa.fa-minus.fa-inverse
|
||||
|
||||
.edit-member.hide.js-toggle-content
|
||||
= form_for [@group, member], remote: true do |f|
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
.row
|
||||
.fixed.sidebar-expand-button.hidden-lg.hidden-md
|
||||
%i.icon-list.icon-2x
|
||||
%i.fa.fa-list.fa-2x
|
||||
.col-md-3.responsive-side
|
||||
= render 'shared/filter', entity: 'issue'
|
||||
.col-md-9
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
= link_to '#', class: 'btn btn-new js-toggle-button' do
|
||||
Add members
|
||||
%i.icon-chevron-down
|
||||
%i.fa.fa-chevron-down
|
||||
|
||||
.js-toggle-content.hide.new-group-member-holder
|
||||
= render "new_group_member"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
%hr
|
||||
.row
|
||||
.fixed.sidebar-expand-button.hidden-lg.hidden-md
|
||||
%i.icon-list.icon-2x
|
||||
%i.fa.fa-list.fa-2x
|
||||
.col-md-3.responsive-side
|
||||
= render 'shared/filter', entity: 'merge_request'
|
||||
.col-md-9
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
.row
|
||||
.fixed.sidebar-expand-button.hidden-lg.hidden-md
|
||||
%i.icon-list.icon-2x
|
||||
%i.fa.fa-list.fa-2x
|
||||
.col-md-3.responsive-side
|
||||
= render 'groups/filter', entity: 'milestone'
|
||||
.col-md-9
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
= f.label :avatar, "Group avatar", class: 'control-label'
|
||||
.col-sm-10
|
||||
%a.choose-btn.btn.btn-small.js-choose-group-avatar-button
|
||||
%i.icon-paper-clip
|
||||
%i.fa.fa-paperclip
|
||||
%span Choose File ...
|
||||
|
||||
%span.file_name.js-avatar-filename File name...
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
- if can? current_user, :manage_group, @group
|
||||
.panel-head-actions
|
||||
= link_to new_project_path(namespace_id: @group.id), class: "btn btn-new" do
|
||||
%i.icon-plus
|
||||
%i.fa.fa-plus
|
||||
New Project
|
||||
%ul.well-list
|
||||
- @projects.each do |project|
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
.prepend-top-20
|
||||
= link_to group_path(@group, { format: :atom, private_token: current_user.private_token }), title: "Feed" do
|
||||
%strong
|
||||
%i.icon-rss
|
||||
%i.fa.fa-rss
|
||||
News Feed
|
||||
|
||||
%hr
|
||||
|
||||
@@ -29,12 +29,12 @@
|
||||
%tr
|
||||
%td.shortcut
|
||||
.key
|
||||
%i.icon-arrow-up
|
||||
%i.fa.fa-arrow-up
|
||||
%td Move selection up
|
||||
%tr
|
||||
%td.shortcut
|
||||
.key
|
||||
%i.icon-arrow-down
|
||||
%i.fa.fa-arrow-down
|
||||
%td Move selection down
|
||||
%tr
|
||||
%td.shortcut
|
||||
@@ -132,28 +132,28 @@
|
||||
%tr
|
||||
%td.shortcut
|
||||
.key
|
||||
%i.icon-arrow-left
|
||||
%i.fa.fa-arrow-left
|
||||
\/
|
||||
.key h
|
||||
%td Scroll left
|
||||
%tr
|
||||
%td.shortcut
|
||||
.key
|
||||
%i.icon-arrow-right
|
||||
%i.fa.fa-arrow-right
|
||||
\/
|
||||
.key l
|
||||
%td Scroll right
|
||||
%tr
|
||||
%td.shortcut
|
||||
.key
|
||||
%i.icon-arrow-up
|
||||
%i.fa.fa-arrow-up
|
||||
\/
|
||||
.key k
|
||||
%td Scroll up
|
||||
%tr
|
||||
%td.shortcut
|
||||
.key
|
||||
%i.icon-arrow-down
|
||||
%i.fa.fa-arrow-down
|
||||
\/
|
||||
.key j
|
||||
%td Scroll down
|
||||
@@ -161,7 +161,7 @@
|
||||
%td.shortcut
|
||||
.key
|
||||
shift
|
||||
%i.icon-arrow-up
|
||||
%i.fa.fa-arrow-up
|
||||
\/
|
||||
.key
|
||||
shift k
|
||||
@@ -170,7 +170,7 @@
|
||||
%td.shortcut
|
||||
.key
|
||||
shift
|
||||
%i.icon-arrow-down
|
||||
%i.fa.fa-arrow-down
|
||||
\/
|
||||
.key
|
||||
shift j
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- if broadcast_message.present?
|
||||
.broadcast-message{ style: broadcast_styling(broadcast_message) }
|
||||
%i.icon-bullhorn
|
||||
%i.fa.fa-bullhorn
|
||||
= broadcast_message.message
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"}
|
||||
%span.sr-only Toggle navigation
|
||||
%i.icon-reorder
|
||||
%i.fa.fa-bars
|
||||
|
||||
.navbar-collapse.collapse
|
||||
%ul.nav.navbar-nav
|
||||
@@ -18,31 +18,31 @@
|
||||
= render "layouts/search"
|
||||
%li.visible-sm.visible-xs
|
||||
= link_to search_path, title: "Search", class: 'has_bottom_tooltip', 'data-original-title' => 'Search area' do
|
||||
%i.icon-search
|
||||
%i.fa.fa-search
|
||||
%li
|
||||
= link_to help_path, title: 'Help', class: 'has_bottom_tooltip',
|
||||
'data-original-title' => 'Help' do
|
||||
%i.icon-question-sign
|
||||
%i.fa.fa-question-circle
|
||||
%li
|
||||
= link_to explore_root_path, title: "Explore", class: 'has_bottom_tooltip', 'data-original-title' => 'Public area' do
|
||||
%i.icon-globe
|
||||
%i.fa.fa-globe
|
||||
%li
|
||||
= link_to user_snippets_path(current_user), title: "My snippets", class: 'has_bottom_tooltip', 'data-original-title' => 'My snippets' do
|
||||
%i.icon-paste
|
||||
%i.fa.fa-clipboard
|
||||
- if current_user.is_admin?
|
||||
%li
|
||||
= link_to admin_root_path, title: "Admin area", class: 'has_bottom_tooltip', 'data-original-title' => 'Admin area' do
|
||||
%i.icon-cogs
|
||||
%i.fa.fa-cogs
|
||||
- if current_user.can_create_project?
|
||||
%li
|
||||
= link_to new_project_path, title: "New project", class: 'has_bottom_tooltip', 'data-original-title' => 'New project' do
|
||||
%i.icon-plus
|
||||
%i.fa.fa-plus
|
||||
%li
|
||||
= link_to profile_path, title: "Profile settings", class: 'has_bottom_tooltip', 'data-original-title' => 'Profile settings"' do
|
||||
%i.icon-user
|
||||
%i.fa.fa-user
|
||||
%li
|
||||
= link_to destroy_user_session_path, class: "logout", method: :delete, title: "Logout", class: 'has_bottom_tooltip', 'data-original-title' => 'Logout' do
|
||||
%i.icon-signout
|
||||
%i.fa.fa-sign-out
|
||||
%li.hidden-xs
|
||||
= link_to current_user, class: "profile-pic", id: 'profile-pic' do
|
||||
= image_tag avatar_icon(current_user.email, 26), alt: 'User activity'
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"}
|
||||
%span.sr-only Toggle navigation
|
||||
%i.icon-reorder
|
||||
%i.fa.fa-bars
|
||||
|
||||
.pull-right.hidden-xs
|
||||
= link_to "Sign in", new_session_path(:user, redirect_to_referer: 'yes'), class: 'btn btn-sign-in btn-new'
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
.loading-gif.hide
|
||||
%p
|
||||
%i.icon-spinner.icon-spin
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
Saving new username
|
||||
%p.light
|
||||
= user_url(@user)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
- if current_user.can_create_group?
|
||||
%span.pull-right
|
||||
= link_to new_group_path, class: "btn btn-new" do
|
||||
%i.icon-plus
|
||||
%i.fa.fa-plus
|
||||
New Group
|
||||
%p.light
|
||||
Group members have access to all a group's projects
|
||||
@@ -19,12 +19,12 @@
|
||||
.pull-right
|
||||
- if can?(current_user, :manage_group, group)
|
||||
= link_to edit_group_path(group), class: "btn-small btn btn-grouped" do
|
||||
%i.icon-cogs
|
||||
%i.fa.fa-cogs
|
||||
Settings
|
||||
|
||||
- if can?(current_user, :destroy, user_group)
|
||||
= link_to leave_profile_group_path(group), data: { confirm: leave_group_message(group.name) }, method: :delete, class: "btn-small btn btn-grouped", title: 'Remove user from group' do
|
||||
%i.icon-signout
|
||||
%i.fa.fa-sign-out
|
||||
Leave
|
||||
|
||||
= link_to group, class: 'group-name' do
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
%li
|
||||
%span.notification-icon-holder
|
||||
%span.notification.fa.fa-holder
|
||||
- if notification.global?
|
||||
= notification_icon(@notification)
|
||||
- else
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
or change it at #{link_to "gravatar.com", "http://gravatar.com"}
|
||||
%hr
|
||||
%a.choose-btn.btn.btn-small.js-choose-user-avatar-button
|
||||
%i.icon-paper-clip
|
||||
%i.fa.fa-paperclip
|
||||
%span Choose File ...
|
||||
|
||||
%span.file_name.js-avatar-filename File name...
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- if current_user
|
||||
.dropdown.pull-right
|
||||
%a.dropdown-toggle.btn.btn-new{href: '#', "data-toggle" => "dropdown"}
|
||||
%i.icon-reorder
|
||||
%i.fa.fa-bars
|
||||
%ul.dropdown-menu
|
||||
- if @project.issues_enabled && can?(current_user, :write_issue, @project)
|
||||
%li
|
||||
@@ -23,11 +23,11 @@
|
||||
%li.divider
|
||||
%li
|
||||
= link_to new_project_branch_path(@project) do
|
||||
%i.icon-code-fork
|
||||
%i.fa.fa-code-fork
|
||||
Git branch
|
||||
%li
|
||||
= link_to new_project_tag_path(@project) do
|
||||
%i.icon-tag
|
||||
%i.fa.fa-tag
|
||||
Git tag
|
||||
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
.form-group
|
||||
.issue-assignee
|
||||
= f.label :assignee_id, class: 'control-label' do
|
||||
%i.icon-user
|
||||
%i.fa.fa-user
|
||||
Assign to
|
||||
.col-sm-10
|
||||
= project_users_select_tag("#{issuable.class.model_name.param_key}[assignee_id]",
|
||||
@@ -40,17 +40,29 @@
|
||||
.form-group
|
||||
.issue-milestone
|
||||
= f.label :milestone_id, class: 'control-label' do
|
||||
%i.icon-time
|
||||
%i.fa.fa-clock-o
|
||||
Milestone
|
||||
.col-sm-10= f.select(:milestone_id, milestone_options(issuable),
|
||||
{ include_blank: 'Select milestone' }, { class: 'select2' })
|
||||
.col-sm-10
|
||||
- if milestone_options(issuable).present?
|
||||
= f.select(:milestone_id, milestone_options(issuable),
|
||||
{ include_blank: 'Select milestone' }, { class: 'select2' })
|
||||
- else
|
||||
%span.light No open milestones available.
|
||||
|
||||
= link_to 'Create new milestone', new_project_milestone_path(issuable.project)
|
||||
.form-group
|
||||
= f.label :label_ids, class: 'control-label' do
|
||||
%i.icon-tag
|
||||
Labels
|
||||
.col-sm-10
|
||||
= f.collection_select :label_ids, issuable.project.labels.all, :id, :name,
|
||||
- if issuable.project.labels.any?
|
||||
= f.collection_select :label_ids, issuable.project.labels.all, :id, :name,
|
||||
{ selected: issuable.label_ids }, multiple: true, class: 'select2'
|
||||
- else
|
||||
%span.light No labels yet.
|
||||
|
||||
= link_to 'Create new label', new_project_label_path(issuable.project)
|
||||
|
||||
.form-actions
|
||||
- if issuable.new_record?
|
||||
= f.submit "Submit new #{issuable.class.model_name.human.downcase}", class: 'btn btn-create'
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
%ul.nav.nav-pills.nav-stacked.nav-stacked-menu.append-bottom-20.project-settings-nav
|
||||
= nav_link(path: 'projects#edit') do
|
||||
= link_to edit_project_path(@project), class: "stat-tab tab " do
|
||||
%i.icon-edit
|
||||
%i.fa.fa-pencil-square-o
|
||||
Project
|
||||
= nav_link(controller: [:team_members, :teams]) do
|
||||
= link_to project_team_index_path(@project), class: "team-tab tab" do
|
||||
%i.icon-group
|
||||
%i.fa.fa-users
|
||||
Members
|
||||
= nav_link(controller: :group_links) do
|
||||
= link_to project_group_links_path(@project) do
|
||||
@@ -13,11 +13,11 @@
|
||||
Groups
|
||||
= nav_link(controller: :deploy_keys) do
|
||||
= link_to project_deploy_keys_path(@project) do
|
||||
%i.icon-key
|
||||
%i.fa.fa-key
|
||||
Deploy Keys
|
||||
= nav_link(controller: :hooks) do
|
||||
= link_to project_hooks_path(@project) do
|
||||
%i.icon-link
|
||||
%i.fa.fa-link
|
||||
Web Hooks
|
||||
= nav_link(controller: :git_hooks) do
|
||||
= link_to project_git_hooks_path(@project) do
|
||||
@@ -25,9 +25,9 @@
|
||||
Git Hooks
|
||||
= nav_link(controller: :services) do
|
||||
= link_to project_services_path(@project) do
|
||||
%i.icon-cogs
|
||||
%i.fa.fa-cogs
|
||||
Services
|
||||
= nav_link(controller: :protected_branches) do
|
||||
= link_to project_protected_branches_path(@project) do
|
||||
%i.icon-lock
|
||||
%i.fa.fa-lock
|
||||
Protected branches
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#tree-holder.tree-holder
|
||||
.file-holder
|
||||
.file-title
|
||||
%i.icon-file
|
||||
%i.fa.fa-file
|
||||
%span.file_name
|
||||
= @path
|
||||
%small= number_to_human_size @blob.size
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%ul.breadcrumb.repo-breadcrumb
|
||||
%li
|
||||
%i.icon-angle-right
|
||||
%i.fa.fa-angle-right
|
||||
= link_to project_tree_path(@project, @ref) do
|
||||
= @project.path
|
||||
- tree_breadcrumbs(@tree, 6) do |title, path|
|
||||
@@ -22,7 +22,7 @@
|
||||
%div#tree-content-holder.tree-content-holder
|
||||
%article.file-holder
|
||||
.file-title.clearfix
|
||||
%i.icon-file
|
||||
%i.fa.fa-file
|
||||
%span.file_name
|
||||
= blob.name
|
||||
%small= number_to_human_size blob.size
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
.center
|
||||
= link_to project_raw_path(@project, @id) do
|
||||
%h1.light
|
||||
%i.icon-download-alt
|
||||
%i.fa.fa-arrow-circle-o-down-alt
|
||||
%h4
|
||||
Download (#{number_to_human_size blob.size})
|
||||
|
||||
@@ -10,12 +10,8 @@
|
||||
|
||||
.modal-body
|
||||
= form_tag project_blob_path(@project, @id), method: :delete, class: 'form-horizontal' do
|
||||
.form-group.commit_message-group
|
||||
= label_tag 'commit_message', class: "control-label" do
|
||||
Commit message
|
||||
.col-sm-10
|
||||
= render 'shared/commit_message_container', {textarea: text_area_tag('commit_message',
|
||||
params[:commit_message], placeholder: "Removed this file because...", required: true, rows: 3, class: 'form-control')}
|
||||
= render 'shared/commit_message_container', params: params,
|
||||
placeholder: 'Removed this file because...'
|
||||
.form-group
|
||||
.col-sm-2
|
||||
.col-sm-10
|
||||
|
||||
@@ -7,19 +7,19 @@
|
||||
%span.label.label-info default
|
||||
- if @project.protected_branch? branch.name
|
||||
%span.label.label-success
|
||||
%i.icon-lock
|
||||
%i.fa.fa-lock
|
||||
protected
|
||||
.pull-right
|
||||
- if can?(current_user, :download_code, @project)
|
||||
= render 'projects/repositories/download_archive', ref: branch.name, btn_class: 'btn-grouped btn-group-small'
|
||||
- if branch.name != @repository.root_ref
|
||||
= link_to project_compare_index_path(@project, from: @repository.root_ref, to: branch.name), class: 'btn btn-grouped btn-small', method: :post, title: "Compare" do
|
||||
%i.icon-copy
|
||||
%i.fa.fa-files-o
|
||||
Compare
|
||||
|
||||
- if can_remove_branch?(@project, branch.name)
|
||||
= link_to project_branch_path(@project, branch.name), class: 'btn btn-grouped btn-small btn-remove remove-row', method: :delete, data: { confirm: 'Removed branch cannot be restored. Are you sure?'}, remote: true do
|
||||
%i.icon-trash
|
||||
%i.fa.fa-trash-o
|
||||
|
||||
- if commit
|
||||
%ul.list-unstyled
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
.pull-right
|
||||
- if can? current_user, :push_code, @project
|
||||
= link_to new_project_branch_path(@project), class: 'btn btn-create' do
|
||||
%i.icon-add-sign
|
||||
%i.fa.fa-add-sign
|
||||
New branch
|
||||
|
||||
.dropdown.inline
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
%button{ type: "button", class: "close", "data-dismiss" => "alert"} ×
|
||||
= @error
|
||||
%h3.page-title
|
||||
%i.icon-code-fork
|
||||
%i.fa.fa-code-fork
|
||||
New branch
|
||||
= form_tag project_branches_path, method: :post, class: "form-horizontal" do
|
||||
.form-group
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
%div
|
||||
- if @notes_count > 0
|
||||
%span.btn.disabled.btn-grouped
|
||||
%i.icon-comment
|
||||
%i.fa.fa-comment
|
||||
= @notes_count
|
||||
.pull-left.btn-group
|
||||
%a.btn.btn-grouped.dropdown-toggle{ data: {toggle: :dropdown} }
|
||||
%i.icon-download-alt
|
||||
%i.fa.fa-arrow-circle-o-down-alt
|
||||
Download as
|
||||
%span.caret
|
||||
%ul.dropdown-menu
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
- if note_count > 0
|
||||
%span.label.label-gray
|
||||
%i.icon-comment= note_count
|
||||
%i.fa.fa-comment= note_count
|
||||
|
||||
- if commit.description?
|
||||
.commit-row-description.js-toggle-content
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user