diff --git a/modules/resource_planning_template/src/Form/PlanEventForm.php b/modules/resource_planning_template/src/Form/PlanEventForm.php
index 82a76c08ba64ba484e2b3c6475fae9cb16b7fb43..f0693abe6c885a5266ca92dfb0140fb5599c4c38 100644
--- a/modules/resource_planning_template/src/Form/PlanEventForm.php
+++ b/modules/resource_planning_template/src/Form/PlanEventForm.php
@@ -137,7 +137,7 @@ class PlanEventForm extends FormBase {
$name_field = $form_state->set('num_dates', 1);
$num_dates = 1;
}
-
+
$form['dates'] = [
'#tree' => TRUE,
'#type' => 'fieldset',
@@ -180,7 +180,7 @@ class PlanEventForm extends FormBase {
],
];
}
-
+
$form['name'] = [
'#type' => 'textfield',
'#title' => $this->t('Name'),
@@ -297,7 +297,7 @@ class PlanEventForm extends FormBase {
// don't do this, the form builder will not call buildForm().
$form_state->setRebuild();
}
-
+
/**
* {@inheritdoc}
*/
@@ -328,6 +328,13 @@ class PlanEventForm extends FormBase {
return $response;
}
+ /**
+ * Return extra data for planTemplateEvent.
+ */
+ public function getTemplateExtraData(array &$form, FormStateInterface $form_state) {
+ return [];
+ }
+
/**
* {@inheritdoc}
*/
@@ -336,12 +343,13 @@ class PlanEventForm extends FormBase {
$template = EventTemplate::load($form_state->getValue('template'));
$this->event = [];
- $name = $form_state->getValue('name');
+ $extra = $this->getTemplateExtraData($form, $form_state);
+ $name = $form_state->getValue('name');
for ($i = 0; $i < $form_state->get('num_dates'); $i++) {
$event_start = $form_state->getValue(['dates', 'date', $i]);
- $this->events[] = $this->planService->planTemplateEvent($calendar, $template, $event_start, $name);
+ $this->events[] = $this->planService->planTemplateEvent($calendar, $template, $event_start, $name, $extra);
}
-
+
$this->postSubmit($form, $form_state);
}
@@ -350,7 +358,7 @@ class PlanEventForm extends FormBase {
*/
protected function postSubmit(array &$form, FormStateInterface $form_state) {
- foreach ($this->events as $event) {
+ foreach ($this->events as $event) {
$subevents = [];
foreach ($form['extra_subevents'] as $bundle => $subevent_calendars) {
if (!is_array($subevent_calendars) ||
@@ -392,7 +400,7 @@ class PlanEventForm extends FormBase {
)
);
}
-
+
if ($form_state->getTriggeringElement()['#name'] == 'save_and_edit') {
// Save redirect in storage for use in ajax form.
$storage = $form_state->getStorage();
diff --git a/modules/resource_planning_template/src/PlanService.php b/modules/resource_planning_template/src/PlanService.php
index 64089a332738a6f09808d6e0be1dc285b2f2d9ab..2c7dc460cc040f946b4614daebeb6293131df9cc 100644
--- a/modules/resource_planning_template/src/PlanService.php
+++ b/modules/resource_planning_template/src/PlanService.php
@@ -155,13 +155,14 @@ class PlanService implements PlanServiceInterface {
/**
* {@inheritdoc}
*/
- public function planTemplateEvent(CalendarInterface $calendar, EventTemplateInterface $template, DrupalDateTime $event_start, string $name) {
+ public function planTemplateEvent(CalendarInterface $calendar, EventTemplateInterface $template, DrupalDateTime $event_start, string $name, array $extra_data = []) {
$event = $this->prepareEventWithDuration(
$template->bundle(),
$name,
$calendar,
$event_start,
- new \DateInterval($template->get('duration')->duration)
+ new \DateInterval($template->get('duration')->duration),
+ $extra_data
);
// Copy fields from template to toplevel event.