Skip to content
Snippets Groups Projects
Commit 2910896b authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre
Browse files

Remove duplication between global and the regular label partials

parent 1c73d302
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -4,9 +4,8 @@ module LabelsHelper
# Link to a Label
#
# label - Label object to link to
# project - Project object which will be used as the context for the label's
# link. If omitted, defaults to `@project`, or the label's own
# project.
# subject - Project/Group object which will be used as the context for the
# label's link. If omitted, defaults to the label's own group/project.
# type - The type of item the link will point to (:issue or
# :merge_request). If omitted, defaults to :issue.
# block - An optional block that will be passed to `link_to`, forming the
Loading
Loading
@@ -18,12 +17,11 @@ module LabelsHelper
# # Allow the generated link to use the label's own project
# link_to_label(label)
#
# # Force the generated link to use @project
# @project = Project.first
# link_to_label(label)
# # Force the generated link to use a provided group
# link_to_label(label, subject: Group.last)
#
# # Force the generated link to use a provided project
# link_to_label(label, project: Project.last)
# link_to_label(label, subject: Project.last)
#
# # Force the generated link to point to merge requests instead of issues
# link_to_label(label, type: :merge_request)
Loading
Loading
@@ -32,9 +30,8 @@ module LabelsHelper
# link_to_label(label) { "My Custom Label Text" }
#
# Returns a String
def link_to_label(label, project: nil, type: :issue, tooltip: true, css_class: nil, &block)
project ||= @project || label.project
link = label_filter_path(project, label, type: type)
def link_to_label(label, subject: nil, type: :issue, tooltip: true, css_class: nil, &block)
link = label_filter_path(label, type: type)
 
if block_given?
link_to link, class: css_class, &block
Loading
Loading
@@ -43,27 +40,16 @@ module LabelsHelper
end
end
 
def link_to_group_label(label, group: nil, type: :issue, tooltip: true, css_class: nil, &block)
group ||= @group || label.group
link = label_filter_path(group, label, type: type)
if block_given?
link_to link, class: css_class, &block
def label_filter_path(label, type: issue)
case label
when GroupLabel
send("#{type.to_s.pluralize}_group_path",
label.group,
label_name: [label.name])
else
link_to render_colored_label(label, tooltip: tooltip), link, class: css_class
end
end
def label_filter_path(subject, label, type: issue)
case subject
when Project
send("namespace_project_#{type.to_s.pluralize}_path",
subject.namespace,
subject,
label_name: [label.name])
when Group
send("#{type.to_s.pluralize}_group_path",
subject,
label.project.namespace,
label.project,
label_name: [label.name])
end
end
Loading
Loading
@@ -92,6 +78,13 @@ module LabelsHelper
end
end
 
def toggle_subscription_label_path(label)
case label
when GroupLabel then toggle_subscription_group_label_path(label.group, label)
else toggle_subscription_namespace_project_label_path(label.project.namespace, label.project, label)
end
end
def label_type_icon(label, options = {})
title, icon =
case label
Loading
Loading
@@ -101,6 +94,7 @@ module LabelsHelper
 
options[:class] ||= ''
options[:class] << ' has-tooltip js-label-type'
options[:class] << ' hidden' if options.fetch(:hidden, false)
 
content_tag :span,
class: options[:class],
Loading
Loading
- label_css_id = dom_id(label)
- open_issues_count = label.open_issues_count(current_user)
- open_merge_requests_count = label.open_merge_requests_count(current_user)
%li{id: label_css_id, data: { id: label.id } }
= render 'label_row', label: label
.visible-xs.visible-sm-inline-block.visible-md-inline-block.dropdown
%button.btn.btn-default.label-options-toggle{ data: { toggle: 'dropdown' } }
Options
%span.caret
.dropdown-menu.dropdown-menu-align-right
%ul
%li
= link_to_group_label(label, type: :merge_request) do
= pluralize open_merge_requests_count, 'merge request'
%li
= link_to_group_label(label) do
= pluralize open_issues_count, 'open issue'
- if current_user
%li.label-subscription{ data: { url: toggle_subscription_group_label_path(@group, label) } }
%a.js-subscribe-button.label-subscribe-button.subscription-status{ role: "button", href: "#", data: { toggle: "tooltip", status: label_subscription_status(label) } }
%span= label_subscription_toggle_button_text(label)
- if can? current_user, :admin_label, @group
%li
= link_to 'Edit', edit_group_label_path(@group, label)
%li
= link_to 'Delete', group_label_path(@group, label), title: 'Delete', method: :delete, remote: true, data: {confirm: "Remove this label? Are you sure?"}
.pull-right.hidden-xs.hidden-sm.hidden-md
= link_to_group_label(label, type: :merge_request, css_class: 'btn btn-transparent btn-action') do
= pluralize open_merge_requests_count, 'merge request'
= link_to_group_label(label, css_class: 'btn btn-transparent btn-action') do
= pluralize open_issues_count, 'open issue'
- if current_user
.label-subscription.inline{ data: { url: toggle_subscription_group_label_path(@group, label) } }
%button.js-subscribe-button.label-subscribe-button.btn.btn-transparent.btn-action.subscription-status{ type: "button", title: label_subscription_toggle_button_text(label), data: { toggle: "tooltip", status: label_subscription_status(label) } }
%span.sr-only= label_subscription_toggle_button_text(label)
= icon('eye', class: 'label-subscribe-button-icon')
= icon('spinner spin', class: 'label-subscribe-button-loading')
- if can? current_user, :admin_label, @group
= link_to edit_group_label_path(@group, label), title: 'Edit', class: 'btn btn-transparent btn-action', data: {toggle: 'tooltip'} do
%span.sr-only Edit
= icon('pencil-square-o')
= link_to group_label_path(@group, label), title: 'Delete', class: 'btn btn-transparent btn-action remove-row', method: :delete, remote: true, data: {confirm: 'Remove this label? Are you sure?', toggle: 'tooltip'} do
%span.sr-only Delete
= icon('trash-o')
- if current_user
:javascript
new Subscription('##{dom_id(label)} .label-subscription');
%span.label-row
%span.label-name
= link_to_group_label(label, tooltip: false)
- if label.description
%span.label-description
= markdown(label.description, pipeline: :single_line)
Loading
Loading
@@ -17,7 +17,7 @@
Group Labels
- if @labels.present?
%ul.content-list.manage-labels-list.js-group-labels
= render partial: 'label', collection: @labels, as: :label
= render partial: 'shared/label', collection: @labels, as: :label
= paginate @labels, theme: 'gitlab'
- else
.nothing-here-block
Loading
Loading
Loading
Loading
@@ -50,7 +50,7 @@
- if issue.labels.any?
&nbsp;
- issue.labels.each do |label|
= link_to_label(label, project: issue.project)
= link_to_label(label, subject: issue.project)
- if issue.tasks?
&nbsp;
%span.task-status
Loading
Loading
Loading
Loading
@@ -23,7 +23,7 @@
%ul.content-list.manage-labels-list.js-prioritized-labels{ "data-url" => set_priorities_namespace_project_labels_path(@project.namespace, @project) }
%p.empty-message{ class: ('hidden' unless @prioritized_labels.empty?) } No prioritized labels yet
- if @prioritized_labels.present?
= render partial: 'label', collection: @prioritized_labels, as: :label
= render partial: 'shared/label', collection: @prioritized_labels, as: :label
 
.group-labels{ class: ('hide' if hide || @project.group.blank?) }
%h5
Loading
Loading
@@ -32,7 +32,7 @@
%ul.content-list.manage-labels-list.js-group-labels
%p.empty-message{ class: ('hidden' unless @group_labels.empty?) } No group labels
- if @group_labels.present?
= render partial: 'label', collection: @group_labels, as: :label
= render partial: 'shared/label', collection: @group_labels, as: :label
 
.project-labels
%h5{ class: ('hide' if hide) }
Loading
Loading
@@ -41,7 +41,7 @@
%ul.content-list.manage-labels-list.js-project-labels
%p.empty-message{ class: ('hidden' unless @project_labels.empty?) } No project labels
- if @project_labels.present?
= render @project_labels
= render partial: 'shared/label', collection: @project_labels, as: :label
= paginate @project_labels, theme: 'gitlab'
- else
.nothing-here-block
Loading
Loading
Loading
Loading
@@ -62,7 +62,7 @@
- if merge_request.labels.any?
&nbsp;
- merge_request.labels.each do |label|
= link_to_label(label, project: merge_request.project, type: 'merge_request')
= link_to_label(label, subject: merge_request.project, type: 'merge_request')
- if merge_request.tasks?
&nbsp;
%span.task-status
Loading
Loading
Loading
Loading
@@ -18,7 +18,7 @@
= link_to_label(label) do
= pluralize open_issues_count, 'open issue'
- if current_user
%li.label-subscription{ data: { url: toggle_subscription_namespace_project_label_path(@project.namespace, @project, label) } }
%li.label-subscription{ data: { url: toggle_subscription_label_path(label) } }
%a.js-subscribe-button.label-subscribe-button.subscription-status{ role: "button", href: "#", data: { toggle: "tooltip", status: label_subscription_status(label) } }
%span= label_subscription_toggle_button_text(label)
- if can_admin_label(label)
Loading
Loading
@@ -34,7 +34,7 @@
= pluralize open_issues_count, 'open issue'
 
- if current_user
.label-subscription.inline{ data: { url: toggle_subscription_namespace_project_label_path(@project.namespace, @project, label) } }
.label-subscription.inline{ data: { url: toggle_subscription_label_path(label) } }
%button.js-subscribe-button.label-subscribe-button.btn.btn-transparent.btn-action.subscription-status{ type: "button", title: label_subscription_toggle_button_text(label), data: { toggle: "tooltip", status: label_subscription_status(label) } }
%span.sr-only= label_subscription_toggle_button_text(label)
= icon('eye', class: 'label-subscribe-button-icon')
Loading
Loading
Loading
Loading
@@ -10,7 +10,8 @@
= icon('star')
%span.label-name
= link_to_label(label, tooltip: false)
= label_type_icon(label, class: "#{'hidden' if label.priority.blank?}" )
- if can?(current_user, :admin_label, @project)
= label_type_icon(label, hidden: label.priority.blank?)
- if label.description
%span.label-description
= markdown_field(label, :description)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment