/** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { $this->derivatives = []; /** @var \Drupal\rng\Entity\EventType[] $event_types */ foreach ($this->eventManager->getEventTypes() as $entity_type => $event_types) { $cache_tags = $this->entityManager->getDefinition($entity_type)->getListCacheTags(); foreach ($event_types as $event_type) { $cache_tags = Cache::mergeTags($cache_tags, $event_type->getCacheTags()); } // Only need one set of tasks task per entity type. if ($this->routeProvider->getRouteByName("entity.{$entity_type}.canonical")) { $event_default = "rng.event.{$entity_type}.event.default"; $this->derivatives[$event_default] = array('title' => t('Event'), 'base_route' => "entity.{$entity_type}.canonical", 'route_name' => "rng.event.{$entity_type}.event", 'weight' => 30, 'cache_tags' => $cache_tags); $this->derivatives["rng.event.{$entity_type}.event.settings"] = array('title' => t('Settings'), 'route_name' => $this->derivatives[$event_default]['route_name'], 'parent_id' => 'rng.local_tasks:' . $event_default, 'weight' => 10, 'cache_tags' => $cache_tags); $this->derivatives["rng.event.{$entity_type}.event.access"] = array('title' => t('Access'), 'route_name' => "rng.event.{$entity_type}.access", 'parent_id' => 'rng.local_tasks:' . $event_default, 'weight' => 20, 'cache_tags' => $cache_tags); $this->derivatives["rng.event.{$entity_type}.event.messages"] = array('title' => t('Messages'), 'route_name' => "rng.event.{$entity_type}.messages", 'parent_id' => 'rng.local_tasks:' . $event_default, 'weight' => 30, 'cache_tags' => $cache_tags); $this->derivatives["rng.event.{$entity_type}.event.group.list"] = array('title' => t('Groups'), 'route_name' => "rng.event.{$entity_type}.group.list", 'parent_id' => 'rng.local_tasks:' . $event_default, 'weight' => 40, 'cache_tags' => $cache_tags); $this->derivatives["rng.event.{$entity_type}.register.type_list"] = array('route_name' => "rng.event.{$entity_type}.register.type_list", 'base_route' => "entity.{$entity_type}.canonical", 'title' => t('Register'), 'weight' => 40, 'cache_tags' => $cache_tags); } } foreach ($this->derivatives as &$entry) { $entry += $base_plugin_definition; } return parent::getDerivativeDefinitions($base_plugin_definition); }
/** * {@inheritdoc} */ protected function alterRoutes(RouteCollection $collection) { $event_types = $this->eventManager->getEventTypes(); foreach (array_keys($event_types) as $entity_type) { $definition = $this->entityManager->getDefinition($entity_type); if ($canonical_path = $definition->getLinkTemplate('canonical')) { $manage_requirements = ['_entity_access' => $entity_type . '.manage event', '_entity_is_event' => 'TRUE', '_permission' => 'debug rng']; $options = []; $options['parameters'][$entity_type]['type'] = 'entity:' . $entity_type; // Rules. $route = new Route($canonical_path . '/event/rules', array('_controller' => '\\Drupal\\rng_debug\\Controller\\DebugController::listing', '_title' => 'Rules', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.rules", $route); } } }
/** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { $this->derivatives = []; $event_types = $this->eventManager->getEventTypes(); foreach (array_keys($event_types) as $entity_type) { // Only need one set of tasks task per entity type. if ($this->routeProvider->getRouteByName("entity.{$entity_type}.canonical")) { $event_default = "rng.event.{$entity_type}.event.default"; $this->derivatives["rng.event.{$entity_type}.event.rules"] = array('title' => t('Rules'), 'route_name' => "rng.event.{$entity_type}.rules", 'parent_id' => 'rng.local_tasks:' . $event_default, 'weight' => 20); } } foreach ($this->derivatives as &$entry) { $entry += $base_plugin_definition; } return parent::getDerivativeDefinitions($base_plugin_definition); }
/** * {@inheritdoc} */ protected function alterRoutes(RouteCollection $collection) { $event_types = $this->eventManager->getEventTypes(); foreach (array_keys($event_types) as $entity_type) { $definition = $this->entityManager->getDefinition($entity_type); if ($canonical_path = $definition->getLinkTemplate('canonical')) { $manage_requirements = ['_entity_access' => $entity_type . '.manage event', '_entity_is_event' => 'TRUE']; $options = []; // Option will invoke EntityConverter ParamConverter to upcast the // entity in $canonical_path. $options['parameters'][$entity_type]['type'] = 'entity:' . $entity_type; // Manage Event. $route = new Route($canonical_path . '/event', array('_form' => '\\Drupal\\rng\\Form\\EventSettingsForm', '_title' => 'Manage event', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.event", $route); // Access. $route = new Route($canonical_path . '/event/access', array('_controller' => '\\Drupal\\rng\\Controller\\EventController::listing_access', '_title' => 'Access', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.access", $route); // Reset access to default. $route = new Route($canonical_path . '/event/access/reset', array('_form' => '\\Drupal\\rng\\Form\\EventAccessResetForm', '_title' => 'Reset access to default', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.access.reset", $route); // Messages. $route = new Route($canonical_path . '/event/messages', array('_form' => '\\Drupal\\rng\\Form\\MessageListForm', '_title' => 'Messages', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.messages", $route); // Message add. $route = new Route($canonical_path . '/event/messages/add', array('_form' => '\\Drupal\\rng\\Form\\MessageActionForm', '_title' => 'Add message', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.messages.add", $route); // Group list. $route = new Route($canonical_path . '/event/groups', array('_controller' => '\\Drupal\\rng\\Controller\\GroupController::listing', '_title' => 'Groups', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.group.list", $route); // Group add. $route = new Route($canonical_path . '/event/groups/add', array('_controller' => '\\Drupal\\rng\\Controller\\GroupController::GroupAdd', '_title' => 'Add group', 'event' => $entity_type), $manage_requirements, $options); $collection->add("rng.event.{$entity_type}.group.add", $route); // Register. $route = new Route($canonical_path . '/register', array('_controller' => '\\Drupal\\rng\\Controller\\RegistrationController::RegistrationAddPage', '_title' => 'Register', 'event' => $entity_type), array('_registration_add_access' => 'TRUE'), $options); $collection->add("rng.event.{$entity_type}.register.type_list", $route); // Register w/ Registration Type. $options_register = $options; $options_register['parameters']['registration_type']['type'] = 'entity:registration_type'; $route = new Route($canonical_path . '/register/{registration_type}', array('_controller' => '\\Drupal\\rng\\Controller\\RegistrationController::RegistrationAdd', '_title_callback' => '\\Drupal\\rng\\Controller\\RegistrationController::addPageTitle', 'event' => $entity_type), array('_registration_add_access' => 'TRUE'), $options_register); $collection->add("rng.event.{$entity_type}.register", $route); } } }
/** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { $this->derivatives = []; /** @var \Drupal\rng\Entity\EventType[] $event_types */ foreach ($this->eventManager->getEventTypes() as $entity_type => $event_types) { $cache_tags = $this->entityManager->getDefinition($entity_type)->getListCacheTags(); foreach ($event_types as $event_type) { $cache_tags = Cache::mergeTags($cache_tags, $event_type->getCacheTags()); } // Only need one set of actions per entity type. $this->derivatives["rng.event.{$entity_type}.event.access.reset"] = array('title' => $this->t('Reset/customize access rules'), 'route_name' => "rng.event.{$entity_type}.access.reset", 'class' => '\\Drupal\\rng\\Plugin\\Menu\\LocalAction\\ResetAccessRules', 'appears_on' => array("rng.event.{$entity_type}.access"), 'cache_tags' => $cache_tags); $this->derivatives["rng.event.{$entity_type}.event.message.add"] = array('title' => $this->t('Add message'), 'route_name' => "rng.event.{$entity_type}.messages.add", 'appears_on' => array("rng.event.{$entity_type}.messages"), 'cache_tags' => $cache_tags); $this->derivatives["rng.event.{$entity_type}.event.group.add"] = array('title' => $this->t('Add group'), 'route_name' => "rng.event.{$entity_type}.group.add", 'appears_on' => array("rng.event.{$entity_type}.group.list"), 'cache_tags' => $cache_tags); } foreach ($this->derivatives as &$entry) { $entry += $base_plugin_definition; } return $this->derivatives; }