Remove duplication between global and the regular label partials

parent 1c73d302
...@@ -4,9 +4,8 @@ module LabelsHelper ...@@ -4,9 +4,8 @@ module LabelsHelper
# Link to a Label # Link to a Label
# #
# label - Label object to link to # label - Label object to link to
# project - Project object which will be used as the context for the label's # subject - Project/Group object which will be used as the context for the
# link. If omitted, defaults to `@project`, or the label's own # label's link. If omitted, defaults to the label's own group/project.
# project.
# type - The type of item the link will point to (:issue or # type - The type of item the link will point to (:issue or
# :merge_request). If omitted, defaults to :issue. # :merge_request). If omitted, defaults to :issue.
# block - An optional block that will be passed to `link_to`, forming the # block - An optional block that will be passed to `link_to`, forming the
...@@ -18,12 +17,11 @@ module LabelsHelper ...@@ -18,12 +17,11 @@ module LabelsHelper
# # Allow the generated link to use the label's own project # # Allow the generated link to use the label's own project
# link_to_label(label) # link_to_label(label)
# #
# # Force the generated link to use @project # # Force the generated link to use a provided group
# @project = Project.first # link_to_label(label, subject: Group.last)
# link_to_label(label)
# #
# # Force the generated link to use a provided project # # 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 # # Force the generated link to point to merge requests instead of issues
# link_to_label(label, type: :merge_request) # link_to_label(label, type: :merge_request)
...@@ -32,9 +30,8 @@ module LabelsHelper ...@@ -32,9 +30,8 @@ module LabelsHelper
# link_to_label(label) { "My Custom Label Text" } # link_to_label(label) { "My Custom Label Text" }
# #
# Returns a String # Returns a String
def link_to_label(label, project: nil, type: :issue, tooltip: true, css_class: nil, &block) def link_to_label(label, subject: nil, type: :issue, tooltip: true, css_class: nil, &block)
project ||= @project || label.project link = label_filter_path(label, type: type)
link = label_filter_path(project, label, type: type)
if block_given? if block_given?
link_to link, class: css_class, &block link_to link, class: css_class, &block
...@@ -43,27 +40,16 @@ module LabelsHelper ...@@ -43,27 +40,16 @@ module LabelsHelper
end end
end end
def link_to_group_label(label, group: nil, type: :issue, tooltip: true, css_class: nil, &block) def label_filter_path(label, type: issue)
group ||= @group || label.group case label
link = label_filter_path(group, label, type: type) when GroupLabel
send("#{type.to_s.pluralize}_group_path",
if block_given? label.group,
link_to link, class: css_class, &block label_name: [label.name])
else 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", send("namespace_project_#{type.to_s.pluralize}_path",
subject.namespace, label.project.namespace,
subject, label.project,
label_name: [label.name])
when Group
send("#{type.to_s.pluralize}_group_path",
subject,
label_name: [label.name]) label_name: [label.name])
end end
end end
...@@ -92,6 +78,13 @@ module LabelsHelper ...@@ -92,6 +78,13 @@ module LabelsHelper
end end
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 = {}) def label_type_icon(label, options = {})
title, icon = title, icon =
case label case label
...@@ -101,6 +94,7 @@ module LabelsHelper ...@@ -101,6 +94,7 @@ module LabelsHelper
options[:class] ||= '' options[:class] ||= ''
options[:class] << ' has-tooltip js-label-type' options[:class] << ' has-tooltip js-label-type'
options[:class] << ' hidden' if options.fetch(:hidden, false)
content_tag :span, content_tag :span,
class: options[:class], class: options[:class],
......
- 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)
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
Group Labels Group Labels
- if @labels.present? - if @labels.present?
%ul.content-list.manage-labels-list.js-group-labels %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' = paginate @labels, theme: 'gitlab'
- else - else
.nothing-here-block .nothing-here-block
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
- if issue.labels.any? - if issue.labels.any?
&nbsp; &nbsp;
- issue.labels.each do |label| - issue.labels.each do |label|
= link_to_label(label, project: issue.project) = link_to_label(label, subject: issue.project)
- if issue.tasks? - if issue.tasks?
&nbsp; &nbsp;
%span.task-status %span.task-status
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
%ul.content-list.manage-labels-list.js-prioritized-labels{ "data-url" => set_priorities_namespace_project_labels_path(@project.namespace, @project) } %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 %p.empty-message{ class: ('hidden' unless @prioritized_labels.empty?) } No prioritized labels yet
- if @prioritized_labels.present? - 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?) } .group-labels{ class: ('hide' if hide || @project.group.blank?) }
%h5 %h5
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
%ul.content-list.manage-labels-list.js-group-labels %ul.content-list.manage-labels-list.js-group-labels
%p.empty-message{ class: ('hidden' unless @group_labels.empty?) } No group labels %p.empty-message{ class: ('hidden' unless @group_labels.empty?) } No group labels
- if @group_labels.present? - if @group_labels.present?
= render partial: 'label', collection: @group_labels, as: :label = render partial: 'shared/label', collection: @group_labels, as: :label
.project-labels .project-labels
%h5{ class: ('hide' if hide) } %h5{ class: ('hide' if hide) }
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
%ul.content-list.manage-labels-list.js-project-labels %ul.content-list.manage-labels-list.js-project-labels
%p.empty-message{ class: ('hidden' unless @project_labels.empty?) } No project labels %p.empty-message{ class: ('hidden' unless @project_labels.empty?) } No project labels
- if @project_labels.present? - if @project_labels.present?
= render @project_labels = render partial: 'shared/label', collection: @project_labels, as: :label
= paginate @project_labels, theme: 'gitlab' = paginate @project_labels, theme: 'gitlab'
- else - else
.nothing-here-block .nothing-here-block
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
- if merge_request.labels.any? - if merge_request.labels.any?
&nbsp; &nbsp;
- merge_request.labels.each do |label| - 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? - if merge_request.tasks?
&nbsp; &nbsp;
%span.task-status %span.task-status
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
= link_to_label(label) do = link_to_label(label) do
= pluralize open_issues_count, 'open issue' = pluralize open_issues_count, 'open issue'
- if current_user - 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) } } %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) %span= label_subscription_toggle_button_text(label)
- if can_admin_label(label) - if can_admin_label(label)
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
= pluralize open_issues_count, 'open issue' = pluralize open_issues_count, 'open issue'
- if current_user - 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) } } %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) %span.sr-only= label_subscription_toggle_button_text(label)
= icon('eye', class: 'label-subscribe-button-icon') = icon('eye', class: 'label-subscribe-button-icon')
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
= icon('star') = icon('star')
%span.label-name %span.label-name
= link_to_label(label, tooltip: false) = 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 - if label.description
%span.label-description %span.label-description
= markdown_field(label, :description) = markdown_field(label, :description)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment