Issue #767894 by kim.pepper, sivaji, paranojik: Fixed Add a confirm form for feed delete.

8.0.x
webchick 2013-04-13 16:11:31 -07:00
parent b5c0d297ab
commit 316b5edf9a
6 changed files with 93 additions and 10 deletions

View File

@ -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",

View File

@ -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',

View File

@ -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'

View File

@ -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();
}
}

View File

@ -0,0 +1,75 @@
<?php
/**
* @file
* Contains \Drupal\aggregator\Form\FeedDelete.
*/
namespace Drupal\aggregator\Form;
use Drupal\Core\Form\ConfirmFormBase;
use Drupal\aggregator\Plugin\Core\Entity\Feed;
/**
* Provides a form for deleting a feed.
*/
class FeedDelete extends ConfirmFormBase {
/**
* The feed the being deleted.
*
* @var \Drupal\aggregator\Plugin\Core\Entity\Feed
*/
protected $feed;
/**
* {@inheritdoc}
*/
public function getFormID() {
return 'aggregator_feed_delete_form';
}
/**
* {@inheritdoc}
*/
protected function getQuestion() {
return t('Are you sure you want to delete the feed %feed?', array('%feed' => $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';
}
}
}

View File

@ -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.');
}