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