Skip to content
Snippets Groups Projects
Commit 072a3b5f authored by dpi's avatar dpi
Browse files

Added RNG event object route enhancer.

parent d1f66f5e
No related branches found
No related tags found
No related merge requests found
......@@ -20,6 +20,10 @@ services:
arguments: ['@entity.manager', '@rng.event_manager']
tags:
- { name: event_subscriber }
rng.route_enhancer:
class: Drupal\rng\Routing\Enhancer\RngRouteEnhancer
tags:
- { name: route_enhancer }
access_check.rng.entity_is_event:
class: Drupal\rng\Access\EntityIsEventCheck
arguments: ['@rng.event_manager']
......
......@@ -9,44 +9,43 @@ namespace Drupal\rng\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\rng\Entity\Group;
use Drupal\Core\Entity\EntityInterface;
/**
* Controller for Registration Groups.
*/
class GroupController extends ControllerBase implements ContainerInjectionInterface {
/**
* Provides a group add form.
*
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* The matched route.
*
* @param string $event
* The parameter to find the event entity.
* @param \Drupal\Core\Entity\EntityInterface $rng_event
* The RNG event.
*
* @return array
* A registration form.
*/
public function GroupAdd(RouteMatchInterface $route_match, $event) {
$event = $route_match->getParameter($event);
public function GroupAdd(EntityInterface $rng_event) {
$group = Group::create()
->setEvent($event);
return $this->entityFormBuilder()->getForm($group, 'add', array($event));
->setEvent($rng_event);
return $this->entityFormBuilder()
->getForm($group, 'add', [$rng_event]);
}
/**
* Provides a list of registration groups for an event.
*
* @param string $event
* The parameter to find the event entity.
* @param \Drupal\Core\Entity\EntityInterface $rng_event
* The RNG event.
*
* @return array
* A render array.
*/
public function listing(RouteMatchInterface $route_match, $event) {
$event_entity = $route_match->getParameter($event);
return $this->entityManager()->getListBuilder('registration_group')->render($event_entity);
public function listing(EntityInterface $rng_event) {
return $this->entityTypeManager()
->getListBuilder('registration_group')
->render($rng_event);
}
}
......@@ -13,7 +13,7 @@ use Drupal\rng\EventManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Url;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Cache\Cache;
/**
......@@ -129,8 +129,8 @@ class EventAccessResetForm extends ConfirmFormBase {
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state, RouteMatchInterface $route_match = NULL, $event = NULL) {
$this->event = clone $route_match->getParameter($event);
public function buildForm(array $form, FormStateInterface $form_state, EntityInterface $rng_event = NULL) {
$this->event = clone $rng_event;
$this->eventMeta = $this->eventManager->getMeta($this->event);
return parent::buildForm($form, $form_state);
}
......
......@@ -55,8 +55,8 @@ class EventSettingsForm extends FormBase {
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state, RouteMatchInterface $route_match = NULL, $event = NULL) {
$entity = clone $route_match->getParameter($event);
public function buildForm(array $form, FormStateInterface $form_state, $rng_event = NULL) {
$entity = clone $rng_event;
$form_state->set('event', $entity);
$display = entity_get_form_display($entity->getEntityTypeId(), $entity->bundle(), 'rng_event');
......
......@@ -14,7 +14,7 @@ use Drupal\Core\Form\FormBase;
use Drupal\Core\Action\ActionManager;
use Drupal\Core\Entity\EntityManagerInterface;
use Drupal\rng\EventManagerInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\rng\Entity\RuleComponent;
use Drupal\rng\Entity\Rule;
......@@ -79,8 +79,8 @@ class MessageActionForm extends FormBase {
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state, RouteMatchInterface $route_match = NULL, $event = NULL) {
$event = clone $route_match->getParameter($event);
public function buildForm(array $form, FormStateInterface $form_state, EntityInterface $rng_event = NULL) {
$event = clone $rng_event;
$this->actionPlugin->setConfiguration(['active' => FALSE]);
$form_state->set('event', $event);
......
......@@ -13,7 +13,6 @@ use Drupal\rng\EventManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\rng\Plugin\Condition\CurrentTime;
use Drupal\Core\Entity\EntityInterface;
use Drupal\rng\RuleInterface;
......@@ -100,8 +99,8 @@ class MessageListForm extends FormBase {
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state, RouteMatchInterface $route_match = NULL, $event = NULL) {
$form['#rng_event'] = $route_match->getParameter($event);
public function buildForm(array $form, FormStateInterface $form_state, EntityInterface $rng_event = NULL) {
$form['#rng_event'] = $rng_event;
// @todo: move trigger definitions to a discovery service.
$rng_triggers = [
......
......@@ -30,7 +30,7 @@ class GroupListBuilder extends EntityListBuilder {
/**
* The event entity.
*
* @var EntityInterface
* @var \Drupal\Core\Entity\EntityInterface
*/
protected $event;
......@@ -61,20 +61,23 @@ class GroupListBuilder extends EntityListBuilder {
/**
* {@inheritdoc}
*
* @param EntityInterface $event
* @param \Drupal\Core\Entity\EntityInterface $rng_event
* The event entity to display registrations.
*/
public function render(EntityInterface $event = NULL) {
if (isset($event)) {
$this->event = $event;
public function render(EntityInterface $rng_event = NULL) {
if (isset($rng_event)) {
$this->event = $rng_event;
}
$render = parent::render();
$render['description'] = [
'#prefix' => '<p>',
'#markup' => $this->t('Groups allow you to organize registrations. Some pre-made groups are automatically applied to registrations.'),
'#suffix' => '</p>',
'#weight' => -50,
];
$render = parent::render();
$render['table']['#empty'] = t('No groups found for this event.');
return $render;
}
......
......@@ -36,7 +36,7 @@ class RegistrationListBuilder extends EntityListBuilder {
/**
* The event entity.
*
* @var EntityInterface
* @var \Drupal\Core\Entity\EntityInterface
*/
protected $event;
......@@ -67,12 +67,12 @@ class RegistrationListBuilder extends EntityListBuilder {
/**
* {@inheritdoc}
*
* @param EntityInterface $event
* @param \Drupal\Core\Entity\EntityInterface $rng_event
* The event entity to display registrations.
*/
public function render(EntityInterface $event = NULL) {
if (isset($event)) {
$this->event = $event;
public function render(EntityInterface $rng_event = NULL) {
if (isset($rng_event)) {
$this->event = $rng_event;
}
$render = parent::render();
$render['table']['#empty'] = t('No registrations found for this event.');
......
......@@ -72,12 +72,12 @@ class RuleListBuilder extends EntityListBuilder {
/**
* {@inheritdoc}
*
* @param EntityInterface $event
* @param \Drupal\Core\Entity\EntityInterface $rng_event
* The event entity to display registrations.
*/
public function render(EntityInterface $event = NULL) {
if (isset($event)) {
$this->event = $event;
public function render(EntityInterface $rng_event = NULL) {
if (isset($rng_event)) {
$this->event = $rng_event;
}
drupal_set_message($this->t('This rule list is for advanced users. Take care when committing any actions from this page.'), 'warning');
$render = parent::render();
......
<?php
/**
* @file
* Contains \Drupal\rng\Routing\Enhancer\RngRouteEnhancer.
*/
namespace Drupal\rng\Routing\Enhancer;
use Drupal\Core\Routing\Enhancer\RouteEnhancerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Route;
/**
* Route enhancer for RNG.
*/
class RngRouteEnhancer implements RouteEnhancerInterface {
/**
* {@inheritdoc}
*/
public function applies(Route $route) {
return $route->hasRequirement('_entity_is_event') && $route->hasDefault('event');
}
/**
* {@inheritdoc}
*/
public function enhance(array $defaults, Request $request) {
$event_entity_type = $defaults['event'];
if (isset($defaults[$event_entity_type])) {
$rng_event = $defaults[$event_entity_type];
$defaults['rng_event'] = $rng_event;
}
return $defaults;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment