diff --git a/core/modules/aggregator/aggregator.admin.inc b/core/modules/aggregator/aggregator.admin.inc index 6706f2989b2..3eee1f096e1 100644 --- a/core/modules/aggregator/aggregator.admin.inc +++ b/core/modules/aggregator/aggregator.admin.inc @@ -46,6 +46,10 @@ function aggregator_view() { 'title' => t('Edit'), 'href' => "admin/config/services/aggregator/edit/feed/$feed->fid", ); + $links['delete'] = array( + 'title' => t('Delete'), + 'href' => "admin/config/services/aggregator/delete/feed/$feed->fid", + ); $links['remove'] = array( 'title' => t('Remove items'), 'href' => "admin/config/services/aggregator/remove/$feed->fid", diff --git a/core/modules/aggregator/aggregator.module b/core/modules/aggregator/aggregator.module index 525cdc187e6..a2ba05928f9 100644 --- a/core/modules/aggregator/aggregator.module +++ b/core/modules/aggregator/aggregator.module @@ -240,6 +240,10 @@ function aggregator_menu() { 'access arguments' => array('administer news feeds'), 'file' => 'aggregator.admin.inc', ); + $items['admin/config/services/aggregator/delete/feed/%aggregator_feed'] = array( + 'title' => 'Delete feed', + 'route_name' => 'aggregator_feed_delete', + ); $items['admin/config/services/aggregator/edit/category/%aggregator_category'] = array( 'title' => 'Edit category', 'page callback' => 'drupal_get_form', diff --git a/core/modules/aggregator/aggregator.routing.yml b/core/modules/aggregator/aggregator.routing.yml index fbb0cafaa69..9b12cd196fe 100644 --- a/core/modules/aggregator/aggregator.routing.yml +++ b/core/modules/aggregator/aggregator.routing.yml @@ -4,9 +4,17 @@ aggregator_admin_settings: _form: '\Drupal\aggregator\Form\SettingsForm' requirements: _permission: 'administer news feeds' + aggregator_feed_items_delete: pattern: '/admin/config/services/aggregator/remove/{aggregator_feed}' defaults: _form: '\Drupal\aggregator\Form\FeedItemsDelete' requirements: _permission: 'administer news feeds' + +aggregator_feed_delete: + pattern: '/admin/config/services/aggregator/delete/feed/{aggregator_feed}' + defaults: + _form: '\Drupal\aggregator\Form\FeedDelete' + requirements: + _permission: 'administer news feeds' diff --git a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php index 97fb698ac6d..8efd326ffa1 100644 --- a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php +++ b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php @@ -139,15 +139,7 @@ class FeedFormController extends EntityFormControllerNG { */ public function delete(array $form, array &$form_state) { $feed = $this->getEntity($form_state); - $feed->delete(); - watchdog('aggregator', 'Feed %feed deleted.', array('%feed' => $feed->label())); - drupal_set_message(t('The feed %feed has been deleted.', array('%feed' => $feed->label()))); - if (arg(0) == 'admin') { - $form_state['redirect'] = 'admin/config/services/aggregator'; - } - else { - $form_state['redirect'] = 'aggregator/sources'; - } + $form_state['redirect'] = 'admin/config/services/aggregator/delete/feed/' . $feed->id(); } } diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedDelete.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedDelete.php new file mode 100644 index 00000000000..d613c398aeb --- /dev/null +++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedDelete.php @@ -0,0 +1,75 @@ + $this->feed->label())); + } + + /** + * {@inheritdoc} + */ + protected function getCancelPath() { + return 'admin/config/services/aggregator'; + } + + /** + * {@inheritdoc} + */ + protected function getConfirmText() { + return t('Delete'); + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, array &$form_state, Feed $aggregator_feed = NULL) { + $this->feed = $aggregator_feed; + return parent::buildForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, array &$form_state) { + $this->feed->delete(); + watchdog('aggregator', 'Feed %feed deleted.', array('%feed' => $this->feed->label())); + drupal_set_message(t('The feed %feed has been deleted.', array('%feed' => $this->feed->label()))); + if (arg(0) == 'admin') { + $form_state['redirect'] = 'admin/config/services/aggregator'; + } + else { + $form_state['redirect'] = 'aggregator/sources'; + } + } +} diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php index 71e36fcf830..ca56e209c72 100644 --- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php +++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php @@ -68,7 +68,7 @@ abstract class AggregatorTestBase extends WebTestBase { * Feed object representing the feed. */ function deleteFeed(Feed $feed) { - $this->drupalPost('admin/config/services/aggregator/edit/feed/' . $feed->id(), array(), t('Delete')); + $this->drupalPost('admin/config/services/aggregator/delete/feed/' . $feed->id(), array(), t('Delete')); $this->assertRaw(t('The feed %title has been deleted.', array('%title' => $feed->label())), 'Feed deleted successfully.'); }