Issue #3018148 by Lendude, tstoeckler: Views bulk forms perform redirects to the confirmation page even if it is not allowed for the user
parent
3cc125752b
commit
78f8ee05bb
|
@ -128,6 +128,22 @@ class BulkFormAccessTest extends NodeTestBase {
|
|||
// Re-load the node and check the status.
|
||||
$node = Node::load($node->id());
|
||||
$this->assertTrue($node->isPublished(), 'The node is still published.');
|
||||
|
||||
// Try to delete the node and check that we are not redirected to the
|
||||
// conformation form but stay on the content view.
|
||||
$this->assertNotEmpty($this->cssSelect('#views-form-test-node-bulk-form-page-1'));
|
||||
$edit = [
|
||||
'node_bulk_form[0]' => TRUE,
|
||||
'action' => 'node_delete_action',
|
||||
];
|
||||
$this->drupalPostForm('test-node-bulk-form', $edit, t('Apply to selected items'));
|
||||
// Test that the action message isn't shown.
|
||||
$this->assertRaw(new FormattableMarkup('No access to execute %action on the @entity_type_label %entity_label.', [
|
||||
'%action' => 'Delete content',
|
||||
'@entity_type_label' => 'Content',
|
||||
'%entity_label' => $node->label(),
|
||||
]));
|
||||
$this->assertNotEmpty($this->cssSelect('#views-form-test-node-bulk-form-page-1'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -402,6 +402,12 @@ class BulkForm extends FieldPluginBase implements CacheableDependencyInterface {
|
|||
$entities[$bulk_form_key] = $entity;
|
||||
}
|
||||
|
||||
// If there were entities selected but the action isn't allowed on any of
|
||||
// them, we don't need to do anything further.
|
||||
if (!$count) {
|
||||
return;
|
||||
}
|
||||
|
||||
$action->execute($entities);
|
||||
|
||||
$operation_definition = $action->getPluginDefinition();
|
||||
|
@ -414,11 +420,9 @@ class BulkForm extends FieldPluginBase implements CacheableDependencyInterface {
|
|||
else {
|
||||
// Don't display the message unless there are some elements affected and
|
||||
// there is no confirmation form.
|
||||
if ($count) {
|
||||
$this->messenger->addStatus($this->formatPlural($count, '%action was applied to @count item.', '%action was applied to @count items.', [
|
||||
'%action' => $action->label(),
|
||||
]));
|
||||
}
|
||||
$this->messenger->addStatus($this->formatPlural($count, '%action was applied to @count item.', '%action was applied to @count items.', [
|
||||
'%action' => $action->label(),
|
||||
]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue