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