diff --git a/core/modules/block/lib/Drupal/block/BlockFormController.php b/core/modules/block/lib/Drupal/block/BlockFormController.php index 5965c21cca25b3ce59ca6d2cf9378c8674eff54c..92bbe88ccc12a4c75e5cc378063a5c423be80689 100644 --- a/core/modules/block/lib/Drupal/block/BlockFormController.php +++ b/core/modules/block/lib/Drupal/block/BlockFormController.php @@ -350,6 +350,11 @@ public function delete(array $form, array &$form_state) { 'block' => $this->entity->id(), ), ); + $query = $this->getRequest()->query; + if ($query->has('destination')) { + $form_state['redirect_route']['options']['query']['destination'] = $query->get('destination'); + $query->remove('destination'); + } } /** diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php index 486efcd8d82fec7b3b1635ff44f1e222be61b88f..af49957b00b24f92cb307093b9095f21f7a78801 100644 --- a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php +++ b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php @@ -141,6 +141,16 @@ function testBlock() { $this->assertRaw(t('Are you sure you want to delete the block %name?', array('%name' => $block['settings[label]']))); $this->drupalPostForm(NULL, array(), t('Delete')); $this->assertRaw(t('The block %name has been removed.', array('%name' => $block['settings[label]']))); + + // Test deleting a block via "Configure block" link. + $block = $this->drupalPlaceBlock('system_powered_by_block'); + $this->drupalGet('admin/structure/block/manage/' . $block->id(), array('query' => array('destination' => 'admin'))); + $this->drupalPostForm(NULL, array(), t('Delete')); + $this->assertRaw(t('Are you sure you want to delete the block %name?', array('%name' => $block->label()))); + $this->drupalPostForm(NULL, array(), t('Delete')); + $this->assertRaw(t('The block %name has been removed.', array('%name' => $block->label()))); + $this->assertUrl('admin'); + $this->assertNoRaw($block->id()); } /**