Drupal 8.0.0 beta 12. More info: https://www.drupal.org/node/2514176
This commit is contained in:
commit
9921556621
13277 changed files with 1459781 additions and 0 deletions
58
core/modules/field_ui/src/Routing/FieldUiRouteEnhancer.php
Normal file
58
core/modules/field_ui/src/Routing/FieldUiRouteEnhancer.php
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\field_ui\Routing\FieldUiRouteEnhancer.
|
||||
*/
|
||||
|
||||
namespace Drupal\field_ui\Routing;
|
||||
|
||||
use Drupal\Core\Entity\EntityManagerInterface;
|
||||
use Drupal\Core\Routing\Enhancer\RouteEnhancerInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Route;
|
||||
|
||||
/**
|
||||
* Enhances Field UI routes by adding proper information about the bundle name.
|
||||
*/
|
||||
class FieldUiRouteEnhancer implements RouteEnhancerInterface {
|
||||
|
||||
/**
|
||||
* The entity manager.
|
||||
*
|
||||
* @var \Drupal\Core\Entity\EntityManagerInterface
|
||||
*/
|
||||
protected $entityManager;
|
||||
|
||||
/**
|
||||
* Constructs a FieldUiRouteEnhancer object.
|
||||
*
|
||||
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
|
||||
* The entity manager.
|
||||
*/
|
||||
public function __construct(EntityManagerInterface $entity_manager) {
|
||||
$this->entityManager = $entity_manager;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function enhance(array $defaults, Request $request) {
|
||||
if (($bundle = $this->entityManager->getDefinition($defaults['entity_type_id'])->getBundleEntityType()) && isset($defaults[$bundle])) {
|
||||
// Field UI forms only need the actual name of the bundle they're dealing
|
||||
// with, not an upcasted entity object, so provide a simple way for them
|
||||
// to get it.
|
||||
$defaults['bundle'] = $defaults['_raw_variables']->get($bundle);
|
||||
}
|
||||
|
||||
return $defaults;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function applies(Route $route) {
|
||||
return ($route->hasOption('_field_ui'));
|
||||
}
|
||||
|
||||
}
|
176
core/modules/field_ui/src/Routing/RouteSubscriber.php
Normal file
176
core/modules/field_ui/src/Routing/RouteSubscriber.php
Normal file
|
@ -0,0 +1,176 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\field_ui\Routing\RouteSubscriber.
|
||||
*/
|
||||
|
||||
namespace Drupal\field_ui\Routing;
|
||||
|
||||
use Drupal\Core\Entity\EntityManagerInterface;
|
||||
use Drupal\Core\Routing\RouteSubscriberBase;
|
||||
use Drupal\Core\Routing\RoutingEvents;
|
||||
use Symfony\Component\Routing\Route;
|
||||
use Symfony\Component\Routing\RouteCollection;
|
||||
|
||||
/**
|
||||
* Subscriber for Field UI routes.
|
||||
*/
|
||||
class RouteSubscriber extends RouteSubscriberBase {
|
||||
|
||||
/**
|
||||
* The entity type manager
|
||||
*
|
||||
* @var \Drupal\Core\Entity\EntityManagerInterface
|
||||
*/
|
||||
protected $manager;
|
||||
|
||||
/**
|
||||
* Constructs a RouteSubscriber object.
|
||||
*
|
||||
* @param \Drupal\Core\Entity\EntityManagerInterface $manager
|
||||
* The entity type manager.
|
||||
*/
|
||||
public function __construct(EntityManagerInterface $manager) {
|
||||
$this->manager = $manager;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function alterRoutes(RouteCollection $collection) {
|
||||
foreach ($this->manager->getDefinitions() as $entity_type_id => $entity_type) {
|
||||
if ($route_name = $entity_type->get('field_ui_base_route')) {
|
||||
// Try to get the route from the current collection.
|
||||
if (!$entity_route = $collection->get($route_name)) {
|
||||
continue;
|
||||
}
|
||||
$path = $entity_route->getPath();
|
||||
|
||||
$options = array();
|
||||
if (($bundle_entity_type = $entity_type->getBundleEntityType()) && $bundle_entity_type !== 'bundle') {
|
||||
$options['parameters'][$bundle_entity_type] = array(
|
||||
'type' => 'entity:' . $bundle_entity_type,
|
||||
);
|
||||
|
||||
// Special parameter used to easily recognize all Field UI routes.
|
||||
$options['_field_ui'] = TRUE;
|
||||
}
|
||||
|
||||
$defaults = array(
|
||||
'entity_type_id' => $entity_type_id,
|
||||
);
|
||||
// If the entity type has no bundles and it doesn't use {bundle} in its
|
||||
// admin path, use the entity type.
|
||||
if (strpos($path, '{bundle}') === FALSE) {
|
||||
$defaults['bundle'] = !$entity_type->hasKey('bundle') ? $entity_type_id : '';
|
||||
}
|
||||
|
||||
$route = new Route(
|
||||
"$path/fields/{field_config}",
|
||||
array(
|
||||
'_entity_form' => 'field_config.edit',
|
||||
'_title_callback' => '\Drupal\field_ui\Form\FieldConfigEditForm::getTitle',
|
||||
) + $defaults,
|
||||
array('_entity_access' => 'field_config.update'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.field_config.{$entity_type_id}_field_edit_form", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/fields/{field_config}/storage",
|
||||
array('_entity_form' => 'field_storage_config.edit') + $defaults,
|
||||
array('_permission' => 'administer ' . $entity_type_id . ' fields'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.field_config.{$entity_type_id}_storage_edit_form", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/fields/{field_config}/delete",
|
||||
array('_entity_form' => 'field_config.delete') + $defaults,
|
||||
array('_entity_access' => 'field_config.delete'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.field_config.{$entity_type_id}_field_delete_form", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/fields",
|
||||
array(
|
||||
'_controller' => '\Drupal\field_ui\Controller\FieldConfigListController::listing',
|
||||
'_title' => 'Manage fields',
|
||||
) + $defaults,
|
||||
array('_permission' => 'administer ' . $entity_type_id . ' fields'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.{$entity_type_id}.field_ui_fields", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/fields/add-field",
|
||||
array(
|
||||
'_form' => '\Drupal\field_ui\Form\FieldStorageAddForm',
|
||||
'_title' => 'Add field',
|
||||
) + $defaults,
|
||||
array('_permission' => 'administer ' . $entity_type_id . ' fields'),
|
||||
$options
|
||||
);
|
||||
$collection->add("field_ui.field_storage_config_add_$entity_type_id", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/form-display",
|
||||
array(
|
||||
'_entity_form' => 'entity_form_display.edit',
|
||||
'_title' => 'Manage form display',
|
||||
'form_mode_name' => 'default',
|
||||
) + $defaults,
|
||||
array('_field_ui_form_mode_access' => 'administer ' . $entity_type_id . ' form display'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.entity_form_display.{$entity_type_id}.default", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/form-display/{form_mode_name}",
|
||||
array(
|
||||
'_entity_form' => 'entity_form_display.edit',
|
||||
'_title' => 'Manage form display',
|
||||
) + $defaults,
|
||||
array('_field_ui_form_mode_access' => 'administer ' . $entity_type_id . ' form display'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.entity_form_display.{$entity_type_id}.form_mode", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/display",
|
||||
array(
|
||||
'_entity_form' => 'entity_view_display.edit',
|
||||
'_title' => 'Manage display',
|
||||
'view_mode_name' => 'default',
|
||||
) + $defaults,
|
||||
array('_field_ui_view_mode_access' => 'administer ' . $entity_type_id . ' display'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.entity_view_display.{$entity_type_id}.default", $route);
|
||||
|
||||
$route = new Route(
|
||||
"$path/display/{view_mode_name}",
|
||||
array(
|
||||
'_entity_form' => 'entity_view_display.edit',
|
||||
'_title' => 'Manage display',
|
||||
) + $defaults,
|
||||
array('_field_ui_view_mode_access' => 'administer ' . $entity_type_id . ' display'),
|
||||
$options
|
||||
);
|
||||
$collection->add("entity.entity_view_display.{$entity_type_id}.view_mode", $route);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getSubscribedEvents() {
|
||||
$events = parent::getSubscribedEvents();
|
||||
$events[RoutingEvents::ALTER] = array('onAlterRoutes', -100);
|
||||
return $events;
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue