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.