From 9ca7b4a3991a1de88f25e1abee4e7bd2ba8f44b4 Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Fri, 19 Aug 2022 09:42:06 +0200
Subject: [PATCH 1/2] imp: EventForm default calendar and start from url

---
 src/Form/EventForm.php | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/src/Form/EventForm.php b/src/Form/EventForm.php
index 0ec1dbe..cff3c95 100644
--- a/src/Form/EventForm.php
+++ b/src/Form/EventForm.php
@@ -2,10 +2,13 @@
 
 namespace Drupal\resource_planning\Form;
 
+use Drupal\Core\Datetime\DrupalDateTime;
 use Drupal\Core\Entity\ContentEntityForm;
 use Drupal\Core\Form\FormStateInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
+use Drupal\resource_planning\Entity\Calendar;
+
 /**
  * Form controller for Event edit forms.
  *
@@ -20,6 +23,16 @@ class EventForm extends ContentEntityForm {
    */
   protected $account;
 
+  /**
+   * The request stack.
+   *
+   * @var \Symfony\Component\HttpFoundation\RequestStack
+   */
+  protected $request;
+
+
+  protected $currentRouteMatch;
+
   /**
    * {@inheritdoc}
    */
@@ -27,15 +40,33 @@ class EventForm extends ContentEntityForm {
     // Instantiates this form class.
     $instance = parent::create($container);
     $instance->account = $container->get('current_user');
+    $instance->currentRouteMatch = $container->get('current_route_match');
+    $instance->request = $container->get('request_stack');
     return $instance;
   }
 
+  protected function getDefaultCalendar() {
+    if ($this->currentRouteMatch->getParameter('rp_calendar')) {
+      return $this->currentRouteMatch->getParameter('rp_calendar');
+    }
+    else {
+      return Calendar::load(\Drupal::config('druplan.settings')->get('default_calendar'));
+    }
+  }
+
   /**
    * {@inheritdoc}
    */
   public function buildForm(array $form, FormStateInterface $form_state) {
     $form = parent::buildForm($form, $form_state);
 
+    $form['calendar_id']['widget'][0]['target_id']['#default_value'] = $this->getDefaultCalendar();
+
+    $start = $this->request->getCurrentRequest()->query->get('start');
+    if ($start) {
+      $form['date']['widget'][0]['value']['#default_value'] = DrupalDateTime::createFromTimestamp(strtotime($start));
+    }
+
     // Disable fields for sub events.
     /** @var \Drupal\resource_planning\Entity\EventType $bundle */
     $bundle = $this->getBundleEntity();
-- 
GitLab


From 92e68df01a0c3f2b75a66dc99b4a36bd3b3f54ae Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Tue, 14 Feb 2023 16:18:01 +0000
Subject: [PATCH 2/2] fix: prefill end date

---
 src/Form/EventForm.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/Form/EventForm.php b/src/Form/EventForm.php
index cff3c95..7c85b0e 100644
--- a/src/Form/EventForm.php
+++ b/src/Form/EventForm.php
@@ -65,6 +65,7 @@ class EventForm extends ContentEntityForm {
     $start = $this->request->getCurrentRequest()->query->get('start');
     if ($start) {
       $form['date']['widget'][0]['value']['#default_value'] = DrupalDateTime::createFromTimestamp(strtotime($start));
+      $form['date']['widget'][0]['end_value']['#default_value'] = DrupalDateTime::createFromTimestamp(strtotime($start))->add(new \DateInterval("PT1H"));      
     }
 
     // Disable fields for sub events.
-- 
GitLab