Commit 9c2b37d7 authored by Clement Ho's avatar Clement Ho

Merge branch '57247-show-prioritized-labels-to-guests' into 'master'

Show prioritized labels to guests

Closes #57247

See merge request gitlab-org/gitlab-ce!27307
parents 1879486d 0866a47a
...@@ -14,13 +14,16 @@ export default class LabelManager { ...@@ -14,13 +14,16 @@ export default class LabelManager {
this.errorMessage = 'Unable to update label prioritization at this time'; this.errorMessage = 'Unable to update label prioritization at this time';
this.emptyState = document.querySelector('#js-priority-labels-empty-state'); this.emptyState = document.querySelector('#js-priority-labels-empty-state');
this.$badgeItemTemplate = $('#js-badge-item-template'); this.$badgeItemTemplate = $('#js-badge-item-template');
this.sortable = Sortable.create(this.prioritizedLabels.get(0), {
filter: '.empty-message', if ('sortable' in this.prioritizedLabels.data()) {
forceFallback: true, Sortable.create(this.prioritizedLabels.get(0), {
fallbackClass: 'is-dragging', filter: '.empty-message',
dataIdAttr: 'data-id', forceFallback: true,
onUpdate: this.onPrioritySortUpdate.bind(this), fallbackClass: 'is-dragging',
}); dataIdAttr: 'data-id',
onUpdate: this.onPrioritySortUpdate.bind(this),
});
}
this.bindEvents(); this.bindEvents();
} }
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
padding: 0; padding: 0;
margin-bottom: 0; margin-bottom: 0;
> li:not(.empty-message):not(.is-not-draggable) { > li:not(.empty-message):not(.no-border) {
background-color: $white-light; background-color: $white-light;
margin-bottom: 5px; margin-bottom: 5px;
display: flex; display: flex;
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
opacity: 0.3; opacity: 0.3;
} }
.prioritized-labels & { .prioritized-labels:not(.is-not-draggable) & {
box-shadow: 0 1px 2px $issue-boards-card-shadow; box-shadow: 0 1px 2px $issue-boards-card-shadow;
cursor: move; cursor: move;
cursor: grab; cursor: grab;
...@@ -353,7 +353,7 @@ ...@@ -353,7 +353,7 @@
@media (max-width: map-get($grid-breakpoints, md)-1) { @media (max-width: map-get($grid-breakpoints, md)-1) {
.manage-labels-list { .manage-labels-list {
> li:not(.empty-message):not(.is-not-draggable) { > li:not(.empty-message):not(.no-border) {
flex-wrap: wrap; flex-wrap: wrap;
} }
......
...@@ -11,29 +11,28 @@ ...@@ -11,29 +11,28 @@
= render 'shared/labels/nav', labels_or_filters: labels_or_filters, can_admin_label: can_admin_label = render 'shared/labels/nav', labels_or_filters: labels_or_filters, can_admin_label: can_admin_label
.labels-container.prepend-top-10 .labels-container.prepend-top-10
- if can_admin_label - if can_admin_label && search.blank?
- if search.blank? %p.text-muted
%p.text-muted = _('Labels can be applied to issues and merge requests.')
= _('Labels can be applied to issues and merge requests.') %br
%br = _('Star a label to make it a priority label. Order the prioritized labels to change their relative priority, by dragging.')
= _('Star a label to make it a priority label. Order the prioritized labels to change their relative priority, by dragging.')
-# Only show it in the first page -# Only show it in the first page
- hide = @available_labels.empty? || (params[:page].present? && params[:page] != '1') - hide = @available_labels.empty? || (params[:page].present? && params[:page] != '1')
.prioritized-labels{ class: ('hide' if hide) } .prioritized-labels{ class: [('hide' if hide), ('is-not-draggable' unless can_admin_label)] }
%h5.prepend-top-10= _('Prioritized Labels') %h5.prepend-top-10= _('Prioritized Labels')
.content-list.manage-labels-list.js-prioritized-labels{ "data-url" => set_priorities_project_labels_path(@project) } .content-list.manage-labels-list.js-prioritized-labels{ data: { url: set_priorities_project_labels_path(@project), sortable: can_admin_label } }
#js-priority-labels-empty-state.priority-labels-empty-state{ class: "#{'hidden' unless @prioritized_labels.empty? && search.blank?}" } #js-priority-labels-empty-state.priority-labels-empty-state{ class: "#{'hidden' unless @prioritized_labels.empty? && search.blank?}" }
= render 'shared/empty_states/priority_labels' = render 'shared/empty_states/priority_labels'
- if @prioritized_labels.present? - if @prioritized_labels.present?
= render partial: 'shared/label', subject: @project, collection: @prioritized_labels, as: :label, locals: { force_priority: true } = render partial: 'shared/label', subject: @project, collection: @prioritized_labels, as: :label, locals: { force_priority: true }
- elsif search.present? - elsif search.present?
.nothing-here-block .nothing-here-block
= _('No prioritised labels with such name or description') = _('No prioritised labels with such name or description')
- if @labels.present? - if @labels.present?
.other-labels .other-labels
- if can_admin_label %h5{ class: ('hide' if hide) }= _('Other Labels')
%h5{ class: ('hide' if hide) }= _('Other Labels')
.content-list.manage-labels-list.js-other-labels .content-list.manage-labels-list.js-other-labels
= render partial: 'shared/label', subject: @project, collection: @labels, as: :label = render partial: 'shared/label', subject: @project, collection: @labels, as: :label
= paginate @labels, theme: 'gitlab' = paginate @labels, theme: 'gitlab'
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- labels.each do |label| - labels.each do |label|
- options = { milestone_title: @milestone.title, label_name: label.title } - options = { milestone_title: @milestone.title, label_name: label.title }
%li.is-not-draggable %li.no-border
%span.label-row %span.label-row
%span.label-name %span.label-name
= render_label(label, tooltip: false, link: milestones_label_path(options)) = render_label(label, tooltip: false, link: milestones_label_path(options))
......
---
title: Show prioritized labels to guests
merge_request: 27307
author:
type: fixed
...@@ -138,29 +138,41 @@ describe 'Prioritize labels' do ...@@ -138,29 +138,41 @@ describe 'Prioritize labels' do
end end
context 'as a guest' do context 'as a guest' do
it 'does not prioritize labels' do before do
create(:label_priority, project: project, label: bug, priority: 1)
create(:label_priority, project: project, label: feature, priority: 2)
guest = create(:user) guest = create(:user)
sign_in guest sign_in guest
visit project_labels_path(project) visit project_labels_path(project)
end
it 'cannot prioritize labels' do
expect(page).to have_content 'bug' expect(page).to have_content 'bug'
expect(page).to have_content 'wontfix' expect(page).to have_content 'wontfix'
expect(page).to have_content 'feature' expect(page).to have_content 'feature'
expect(page).not_to have_css('.prioritized-labels')
expect(page).not_to have_content 'Star a label' expect(page).not_to have_content 'Star a label'
end end
it 'cannot sort prioritized labels', :js do
drag_to(selector: '.prioritized-labels .label-list-item', from_index: 1, to_index: 2)
page.within('.prioritized-labels') do
expect(first('.label-list-item')).to have_content('bug')
expect(page.all('.label-list-item').last).to have_content('feature')
end
end
end end
context 'as a non signed in user' do context 'as a non signed in user' do
it 'does not prioritize labels' do it 'cannot prioritize labels' do
visit project_labels_path(project) visit project_labels_path(project)
expect(page).to have_content 'bug' expect(page).to have_content 'bug'
expect(page).to have_content 'wontfix' expect(page).to have_content 'wontfix'
expect(page).to have_content 'feature' expect(page).to have_content 'feature'
expect(page).not_to have_css('.prioritized-labels')
expect(page).not_to have_content 'Star a label' expect(page).not_to have_content 'Star a label'
end end
end end
......
...@@ -7,6 +7,7 @@ describe "User views labels" do ...@@ -7,6 +7,7 @@ describe "User views labels" do
set(:user) { create(:user) } set(:user) { create(:user) }
let(:label_titles) { %w[bug enhancement feature] } let(:label_titles) { %w[bug enhancement feature] }
let!(:prioritized_label) { create(:label, project: project, title: 'prioritized-label-name', priority: 1) }
before do before do
label_titles.each { |title| create(:label, project: project, title: title) } label_titles.each { |title| create(:label, project: project, title: title) }
...@@ -18,6 +19,10 @@ describe "User views labels" do ...@@ -18,6 +19,10 @@ describe "User views labels" do
end end
it "shows all labels" do it "shows all labels" do
page.within('.prioritized-labels .manage-labels-list') do
expect(page).to have_content('prioritized-label-name')
end
page.within('.other-labels .manage-labels-list') do page.within('.other-labels .manage-labels-list') do
label_titles.each { |title| expect(page).to have_content(title) } label_titles.each { |title| expect(page).to have_content(title) }
end end
......
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