From eb4636bbd16bb5dca07abca2514f18fda922f8cb Mon Sep 17 00:00:00 2001 From: Owen Bush <ojb@ukhhf.co.uk> Date: Wed, 15 May 2019 16:00:31 -0600 Subject: [PATCH] Fixing issue with timezones and non-translatable fields --- .../src/Entity/Registrant.php | 2 ++ .../src/Form/RegistrantDeleteForm.php | 30 ++++++++++++++++++- src/Form/EventSeriesForm.php | 19 ++++++++---- .../FieldWidget/WeeklyRecurringDateWidget.php | 8 ++--- 4 files changed, 49 insertions(+), 10 deletions(-) diff --git a/modules/recurring_events_registration/src/Entity/Registrant.php b/modules/recurring_events_registration/src/Entity/Registrant.php index 6c32e59..a7bbe86 100644 --- a/modules/recurring_events_registration/src/Entity/Registrant.php +++ b/modules/recurring_events_registration/src/Entity/Registrant.php @@ -35,6 +35,8 @@ use Drupal\recurring_events\Entity\EventSeries; * "access" = "Drupal\recurring_events_registration\RegistrantAccessControlHandler", * }, * base_table = "registrant", + * translatable = FALSE, + * fieldable = TRUE, * admin_permission = "administer registrant entities", * entity_keys = { * "id" = "id", diff --git a/modules/recurring_events_registration/src/Form/RegistrantDeleteForm.php b/modules/recurring_events_registration/src/Form/RegistrantDeleteForm.php index f8c48e0..311fbc0 100644 --- a/modules/recurring_events_registration/src/Form/RegistrantDeleteForm.php +++ b/modules/recurring_events_registration/src/Form/RegistrantDeleteForm.php @@ -5,6 +5,8 @@ namespace Drupal\recurring_events_registration\Form; use Drupal\Core\Entity\ContentEntityDeleteForm; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Drupal\Core\Messenger\Messenger; /** * Provides a form for deleting Registrant entities. @@ -13,6 +15,32 @@ use Drupal\Core\Url; */ class RegistrantDeleteForm extends ContentEntityDeleteForm { + /** + * The messenger service. + * + * @var \Drupal\Core\Messenger\Messenger + */ + protected $messenger; + + /** + * Constructs a RegistrantDeleteForm object. + * + * @param \Drupal\Core\Messenger\Messenger $messenger + * The messenger service. + */ + public function __construct(Messenger $messenger) { + $this->messenger = $messenger; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('messenger') + ); + } + /** * {@inheritdoc} */ @@ -90,7 +118,7 @@ class RegistrantDeleteForm extends ContentEntityDeleteForm { $service->promoteFromWaitlist(); } - drupal_set_message($this->getDeletionMessage()); + $this->messenger->addMessage($this->getDeletionMessage()); $this->logDeletionMessage(); } diff --git a/src/Form/EventSeriesForm.php b/src/Form/EventSeriesForm.php index d266d4b..8d854cd 100644 --- a/src/Form/EventSeriesForm.php +++ b/src/Form/EventSeriesForm.php @@ -230,14 +230,23 @@ class EventSeriesForm extends ContentEntityForm { $original = $this->storage->loadUnchanged($entity->id()); } - $this->messenger->addStatus($this->t('Successfully saved the %name event series', [ - '%name' => $entity->title->value, - ])); + if ($entity->isDefaultTranslation()) { + $this->creationService->saveEvent($entity, $form_state, $original); + $this->messenger->addStatus($this->t('Successfully saved the %name event series', [ + '%name' => $entity->title->value, + ])); + } + else { - $form_state->setRedirect('entity.eventseries.canonical', ['eventseries' => $entity->id()]); + $this->messenger->addStatus($this->t('@language translation of the @type %label has been saved.', [ + '@language' => $entity->language()->getName(), + '@type' => 'Event ', + '%label' => $entity->getUntranslated()->title->value, + ])); + } - $this->creationService->saveEvent($entity, $form_state, $original); parent::save($form, $form_state); + $form_state->setRedirect('entity.eventseries.canonical', ['eventseries' => $entity->id()]); } } diff --git a/src/Plugin/Field/FieldWidget/WeeklyRecurringDateWidget.php b/src/Plugin/Field/FieldWidget/WeeklyRecurringDateWidget.php index aa41f53..4bc34e3 100644 --- a/src/Plugin/Field/FieldWidget/WeeklyRecurringDateWidget.php +++ b/src/Plugin/Field/FieldWidget/WeeklyRecurringDateWidget.php @@ -87,19 +87,19 @@ class WeeklyRecurringDateWidget extends DateRangeDefaultWidget { $item['value'] = ''; } elseif (!$item['value'] instanceof DrupalDateTime) { - $item['value'] = substr($item['value'], 0, 10) . 'T12:00:00'; + $item['value'] = substr($item['value'], 0, 10); } else { - $item['value']->setTime(12, 0, 0); + $item['value']; } if (empty($item['end_value'])) { $item['end_value'] = ''; } elseif (!$item['end_value'] instanceof DrupalDateTime) { - $item['end_value'] = substr($item['end_value'], 0, 10) . 'T12:00:00'; + $item['end_value'] = substr($item['end_value'], 0, 10); } else { - $item['end_value']->setTime(12, 0, 0); + $item['end_value']; } $item['days'] = array_filter($item['days']); -- GitLab