diff --git a/core/modules/aggregator/aggregator.admin.inc b/core/modules/aggregator/aggregator.admin.inc index 3eee1f0..546b2a8 100644 --- a/core/modules/aggregator/aggregator.admin.inc +++ b/core/modules/aggregator/aggregator.admin.inc @@ -98,22 +98,6 @@ function aggregator_view() { } /** - * Page callback: Presents the aggregator feed creation form. - * - * @return array - * A form array as expected by drupal_render(). - * - * @see aggregator_menu() - */ -function aggregator_feed_add() { - $feed = entity_create('aggregator_feed', array( - 'refresh' => 3600, - 'block' => 5, - )); - return entity_get_form($feed); -} - -/** * Form constructor for importing feeds from OPML. * * @ingroup forms diff --git a/core/modules/aggregator/aggregator.module b/core/modules/aggregator/aggregator.module index a2ba059..b544908 100644 --- a/core/modules/aggregator/aggregator.module +++ b/core/modules/aggregator/aggregator.module @@ -99,10 +99,8 @@ function aggregator_menu() { ); $items['admin/config/services/aggregator/add/feed'] = array( 'title' => 'Add feed', - 'page callback' => 'aggregator_feed_add', - 'access arguments' => array('administer news feeds'), + 'route_name' => 'aggregator_feed_add', 'type' => MENU_LOCAL_ACTION, - 'file' => 'aggregator.admin.inc', ); $items['admin/config/services/aggregator/add/category'] = array( 'title' => 'Add category', diff --git a/core/modules/aggregator/aggregator.routing.yml b/core/modules/aggregator/aggregator.routing.yml index 9b12cd1..bf02d5c 100644 --- a/core/modules/aggregator/aggregator.routing.yml +++ b/core/modules/aggregator/aggregator.routing.yml @@ -18,3 +18,10 @@ aggregator_feed_delete: _form: '\Drupal\aggregator\Form\FeedDelete' requirements: _permission: 'administer news feeds' + +aggregator_feed_add: + pattern: '/admin/config/services/aggregator/add/feed' + defaults: + _controller: '\Drupal\aggregator\Routing\AggregatorController::feedAdd' + requirements: + _permission: 'administer news feeds' diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Routing/AggregatorController.php b/core/modules/aggregator/lib/Drupal/aggregator/Routing/AggregatorController.php new file mode 100644 index 0000000..66f1fbd --- /dev/null +++ b/core/modules/aggregator/lib/Drupal/aggregator/Routing/AggregatorController.php @@ -0,0 +1,59 @@ +entityManager = $entity_manager; + } + + /** + * {inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static($container->get('plugin.manager.entity')); + } + + /** + * Presents the aggregator feed creation form. + * + * @return array + * A form array as expected by drupal_render(). + */ + public function feedAdd() { + $feed = $this->entityManager + ->getStorageController('aggregator_feed') + ->create(array( + 'refresh' => 3600, + 'block' => 5, + )); + return entity_get_form($feed); + } + +}