From 46e4c966168f212eb647aa0d2622a025bcd2bd75 Mon Sep 17 00:00:00 2001 From: Douglas Barbosa Alexandre Date: Fri, 23 Jun 2017 15:30:13 -0300 Subject: [PATCH] Add can_subscribe_to_label_in_different_levels helper method --- app/helpers/labels_helper.rb | 4 ++++ app/views/shared/_label.html.haml | 26 +++++++++++++------------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/helpers/labels_helper.rb b/app/helpers/labels_helper.rb index 6c99d993a5f..8a2987dca42 100644 --- a/app/helpers/labels_helper.rb +++ b/app/helpers/labels_helper.rb @@ -133,6 +133,10 @@ module LabelsHelper end end + def can_subscribe_to_label_in_different_levels?(label) + defined?(@project) || label.is_a?(GroupLabel) + end + def label_subscription_status(label, project) return 'group-level' if label.subscribed?(current_user) return 'project-level' if label.subscribed?(current_user, project) diff --git a/app/views/shared/_label.html.haml b/app/views/shared/_label.html.haml index 8b5bd3d49ed..4794541c89e 100644 --- a/app/views/shared/_label.html.haml +++ b/app/views/shared/_label.html.haml @@ -20,16 +20,16 @@ view open issues - if current_user %li.label-subscription - - if defined?(@group) || label.is_a?(ProjectLabel) - %a.js-subscribe-button.label-subscribe-button{ role: 'button', href: '#', data: { status: status, url: toggle_subscription_path } } - %span= label_subscription_toggle_button_text(label, @project) - - else + - if can_subscribe_to_label_in_different_levels?(label) %a.js-unsubscribe-button.label-subscribe-button{ role: 'button', href: '#', class: ('hidden' if status.unsubscribed?), data: { url: toggle_subscription_path } } %span Unsubscribe %a.js-subscribe-button.label-subscribe-button{ role: 'button', href: '#', class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_namespace_project_label_path(@project.namespace, @project, label) } } %span Subscribe at project level %a.js-subscribe-button.label-subscribe-button{ role: 'button', href: '#', class: ('hidden' unless status.unsubscribed?), data: { url: toggle_subscription_group_label_path(label.group, label) } } %span Subscribe at group level + - else + %a.js-subscribe-button.label-subscribe-button{ role: 'button', href: '#', data: { status: status, url: toggle_subscription_path } } + %span= label_subscription_toggle_button_text(label, @project) - if can?(current_user, :admin_label, label) %li @@ -45,11 +45,7 @@ - if current_user .label-subscription.inline - - if defined?(@group) || label.is_a?(ProjectLabel) - %button.js-subscribe-button.label-subscribe-button.btn.btn-default{ type: 'button', data: { status: status, url: toggle_subscription_path } } - %span= label_subscription_toggle_button_text(label, @project) - = icon('spinner spin', class: 'label-subscribe-button-loading') - - else + - if can_subscribe_to_label_in_different_levels?(label) %button.js-unsubscribe-button.label-subscribe-button.btn.btn-default{ type: 'button', class: ('hidden' if status.unsubscribed?), data: { url: toggle_subscription_path } } %span Unsubscribe = icon('spinner spin', class: 'label-subscribe-button-loading') @@ -64,6 +60,10 @@ Project level %a.js-subscribe-button{ data: { url: toggle_subscription_group_label_path(label.group, label) } } Group level + - else + %button.js-subscribe-button.label-subscribe-button.btn.btn-default{ type: 'button', data: { status: status, url: toggle_subscription_path } } + %span= label_subscription_toggle_button_text(label, @project) + = icon('spinner spin', class: 'label-subscribe-button-loading') - if label.is_a?(ProjectLabel) && label.project.group && can?(current_user, :admin_label, label.project.group) = link_to promote_namespace_project_label_path(label.project.namespace, label.project, label), title: "Promote to Group Label", class: 'btn btn-transparent btn-action', data: {confirm: "Promoting this label will make this label available to all projects inside this group. Existing project labels with the same name will be merged. Are you sure?", toggle: "tooltip"}, method: :post do @@ -78,9 +78,9 @@ = icon('trash-o') - if current_user - - if defined?(@group) || label.is_a?(ProjectLabel) - :javascript - new gl.ProjectLabelSubscription('##{dom_id(label)} .label-subscription'); - - else + - if can_subscribe_to_label_in_different_levels?(label) :javascript new gl.GroupLabelSubscription('##{dom_id(label)} .label-subscription'); + - else + :javascript + new gl.ProjectLabelSubscription('##{dom_id(label)} .label-subscription');