diff options
-rw-r--r-- | app/helpers/labels_helper.rb | 52 | ||||
-rw-r--r-- | app/views/groups/labels/_label.html.haml | 53 | ||||
-rw-r--r-- | app/views/groups/labels/_label_row.html.haml | 6 | ||||
-rw-r--r-- | app/views/groups/labels/index.html.haml | 2 | ||||
-rw-r--r-- | app/views/projects/issues/_issue.html.haml | 2 | ||||
-rw-r--r-- | app/views/projects/labels/index.html.haml | 6 | ||||
-rw-r--r-- | app/views/projects/merge_requests/_merge_request.html.haml | 2 | ||||
-rw-r--r-- | app/views/shared/_label.html.haml (renamed from app/views/projects/labels/_label.html.haml) | 4 | ||||
-rw-r--r-- | app/views/shared/_label_row.html.haml | 3 |
9 files changed, 33 insertions, 97 deletions
diff --git a/app/helpers/labels_helper.rb b/app/helpers/labels_helper.rb index 8e5321c05fa..65fc460c670 100644 --- a/app/helpers/labels_helper.rb +++ b/app/helpers/labels_helper.rb @@ -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 @@ -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) @@ -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 @@ -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 @@ -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 @@ -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], diff --git a/app/views/groups/labels/_label.html.haml b/app/views/groups/labels/_label.html.haml deleted file mode 100644 index 9faf90c303e..00000000000 --- a/app/views/groups/labels/_label.html.haml +++ /dev/null @@ -1,53 +0,0 @@ -- 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'); diff --git a/app/views/groups/labels/_label_row.html.haml b/app/views/groups/labels/_label_row.html.haml deleted file mode 100644 index e21fac25b01..00000000000 --- a/app/views/groups/labels/_label_row.html.haml +++ /dev/null @@ -1,6 +0,0 @@ -%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) diff --git a/app/views/groups/labels/index.html.haml b/app/views/groups/labels/index.html.haml index d9f1d350cb3..8e93ea4f625 100644 --- a/app/views/groups/labels/index.html.haml +++ b/app/views/groups/labels/index.html.haml @@ -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 diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml index 8b1a8a8a2d9..c80210d6ff4 100644 --- a/app/views/projects/issues/_issue.html.haml +++ b/app/views/projects/issues/_issue.html.haml @@ -50,7 +50,7 @@ - if issue.labels.any? - issue.labels.each do |label| - = link_to_label(label, project: issue.project) + = link_to_label(label, subject: issue.project) - if issue.tasks? %span.task-status diff --git a/app/views/projects/labels/index.html.haml b/app/views/projects/labels/index.html.haml index 05282338493..8e6f84fc430 100644 --- a/app/views/projects/labels/index.html.haml +++ b/app/views/projects/labels/index.html.haml @@ -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 @@ -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) } @@ -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 diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml index 68fb7d5a414..ad62bf50b57 100644 --- a/app/views/projects/merge_requests/_merge_request.html.haml +++ b/app/views/projects/merge_requests/_merge_request.html.haml @@ -62,7 +62,7 @@ - if merge_request.labels.any? - 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? %span.task-status diff --git a/app/views/projects/labels/_label.html.haml b/app/views/shared/_label.html.haml index 2b7b79390f7..13795807ab8 100644 --- a/app/views/projects/labels/_label.html.haml +++ b/app/views/shared/_label.html.haml @@ -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) @@ -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') diff --git a/app/views/shared/_label_row.html.haml b/app/views/shared/_label_row.html.haml index 751b2d1c158..8a1ebdd7fb6 100644 --- a/app/views/shared/_label_row.html.haml +++ b/app/views/shared/_label_row.html.haml @@ -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) |