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