Skip to content
Snippets Groups Projects
Commit 08207dd2 authored by Owen Bush's avatar Owen Bush
Browse files

Added cloning

parent 3d16375e
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@
*/
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Entity\EntityInterface;
/**
* Implements hook_help().
......@@ -22,3 +23,19 @@ function recurring_events_help($route_name, RouteMatchInterface $route_match) {
default:
}
}
/**
* Implements hook_entity_operation().
*/
function recurring_events_entity_operation(EntityInterface $entity) {
$operations = [];
if ($entity->getEntityTypeId() == 'eventseries' || $entity->getEntityTypeId() == 'eventinstance') {
$operations['clone'] = [
'title' => t('Clone'),
'weight' => 50,
'url' => $entity->toUrl('clone-form'),
];
}
return $operations;
}
......@@ -19,6 +19,27 @@ administer eventseries entity:
description: 'Make changes to the event series entity type.'
restrict access: true
# Event Instance Entities.
view eventinstance entity:
title: 'View eventinstance entity'
description: 'View existing event instance entities'
view unpublished eventinstance entity:
title: 'View unpublished eventinstance entity'
description: 'View exisiting unpublished event instance entities'
edit eventinstance entity:
title: 'Edit eventinstance entity'
description: 'Modify existing event instance entities'
delete eventinstance entity:
title: 'Delete eventinstance entity'
description: 'Delete existing event instance entities'
clone eventinstance entity:
title: 'Clone eventinstance entity'
description: 'Clone existing event instance entities'
administer eventinstance entity:
title: 'Administer eventinstance entity'
description: 'Make changes to the event instance entity type.'
restrict access: true
# Event Series Administration.
administer eventseries:
title: 'Administer eventseries'
......
......@@ -54,7 +54,7 @@ entity.eventseries.clone_form:
path: '/events/series/{eventseries}/clone'
defaults:
_entity_form: eventseries.clone
_title_callback: '\Drupal\recurring_events\Controller\EventSeriesController::getCloneTitle'
_title: 'Clone Event Series'
requirements:
_entity_access: 'eventseries.clone'
eventseries: \d+
......@@ -116,6 +116,20 @@ entity.eventinstance.delete_form:
eventinstance:
type: entity:eventinstance
# Clone an EventInstance.
entity.eventinstance.clone_form:
path: '/events/{eventinstance}/clone'
defaults:
# Calls the form.clone controller, defined in the Event Instance entity.
_entity_form: eventinstance.clone
_title: Clone Event Instance
requirements:
_entity_access: 'eventinstance.clone'
options:
parameters:
eventinstance:
type: entity:eventinstance
# Event Instance table list route.
entity.eventinstance.collection:
path: '/events'
......
......@@ -81,7 +81,6 @@ use Drupal\user\UserInterface;
* "delete" = "Drupal\recurring_events\Form\EventInstanceDeleteForm",
* "default" = "Drupal\recurring_events\Form\EventInstanceForm",
* "clone" = "Drupal\recurring_events\Form\EventInstanceCloneForm",
* "contact" = "Drupal\recurring_events\Form\EventInstanceContactRegistrationsForm",
* },
* "access" = "Drupal\recurring_events\EventInstanceAccessControlHandler",
* },
......@@ -113,7 +112,6 @@ use Drupal\user\UserInterface;
* "version-history" = "/events/{eventinstance}/revisions",
* "revision" = "/events/{eventinstance}/revisions/{eventinstance_revision}/view",
* "clone-form" = "/events/{eventinstance}/clone",
* "contact-form" = "/events/{eventinstance}/registration/contact",
* },
* field_ui_base_route = "eventinstance.settings",
* )
......
......@@ -37,9 +37,6 @@ class EventInstanceAccessControlHandler extends EntityAccessControlHandler {
case 'clone':
return AccessResult::allowedIfHasPermission($account, 'clone eventinstance entity');
case 'contact':
return AccessResult::allowedIfHasPermission($account, 'contact eventinstance registration entities');
}
return AccessResult::allowed();
}
......
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