From be87b2eff28b9e1b1b4848311730c9755e736679 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Tue, 14 Jun 2022 14:51:25 +0200 Subject: [PATCH 01/18] OEL-1653: RangeDate Formatter with the time for the event dates. --- .../EventDateRangeFormatter.php | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php diff --git a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php new file mode 100644 index 00000000..2e9e7e4f --- /dev/null +++ b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php @@ -0,0 +1,94 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\oe_whitelabel_starter_event\Plugin\Field\FieldFormatter; + +use Drupal\Core\Datetime\DrupalDateTime; +use Drupal\Core\Field\FieldItemListInterface; +use Drupal\datetime\Plugin\Field\FieldFormatter\DateTimeFormatterBase; +use Drupal\datetime_range\DateTimeRangeTrait; + +/** + * Plugin implementation of the 'Event dates' formatter for 'daterange' fields. + * + * This formatter renders the data range as plain text, with a fully + * configurable date format using the PHP date syntax and separator. + * + * @FieldFormatter( + * id = "event_date_range_format", + * label = @Translation("Event date range format"), + * field_types = { + * "daterange" + * } + * ) + */ +class EventDateRangeFormatter extends DateTimeFormatterBase { + + use DateTimeRangeTrait; + + /** + * {@inheritdoc} + */ + public function viewElements(FieldItemListInterface $items, $langcode) { + $elements = []; + + foreach ($items as $delta => $item) { + if (empty($item->start_date) && empty($item->end_date)) { + continue; + } + + /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ + $start_date = $item->start_date; + /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */ + $end_date = $item->end_date; + + // Event on a single day. + if ($start_date->format('Y-m-d') === $end_date->format('Y-m-d')) { + $elements[$delta] = [ + 'start_date' => $this->buildCustomDate($start_date, 'l d F Y, H.i'), + 'separator' => ['#plain_text' => '-'], + 'end_date' => $this->buildCustomDate($end_date, 'H.i (T)'), + ]; + } + // Event on multiple days. + else { + $elements[$delta] = [ + 'start_date' => $this->buildCustomDate($start_date, 'l d F Y, H.i'), + 'separator' => ['#plain_text' => '-'], + 'end_date' => $this->buildCustomDate($end_date, 'l d F Y, H.i (T)'), + ]; + } + } + + return $elements; + } + + /** + * Prepare render for a date with custom format. + */ + protected function buildCustomDate(DrupalDateTime $date, $format) { + $this->setTimeZone($date); + + $build = [ + '#markup' => $this->dateFormatter->format($date->getTimestamp(), 'custom', $format), + '#cache' => [ + 'contexts' => [ + 'timezone', + ], + ], + ]; + + return $build; + } + + /** + * {@inheritdoc} + */ + protected function formatDate($date) { + $format_type = $this->getSetting('format_type'); + $timezone = $this->getSetting('timezone_override') ?: $date->getTimezone()->getName(); + return $this->dateFormatter->format($date->getTimestamp(), $format_type, '', $timezone != '' ? $timezone : NULL); + } + +} -- GitLab From 9ef3ecdd786d52388ac056e7de3e39fed0262a49 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Tue, 14 Jun 2022 14:52:10 +0200 Subject: [PATCH 02/18] OEL-1653: Update event full view adding the time at events dates. --- ...ity_view_display.node.oe_sc_event.full.yml | 7 +- ...y_view_display.node.oe_sc_event.teaser.yml | 3 +- ...ity_view_display.node.oe_sc_event.full.yml | 68 +++++++++++++++++++ ...y_view_display.node.oe_sc_event.teaser.yml | 57 ++++++++++++++++ ...e_whitelabel_starter_event.post_update.php | 16 +++++ 5 files changed, 146 insertions(+), 5 deletions(-) create mode 100755 modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml create mode 100755 modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml index 6ad2e19b..b9798e46 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml @@ -11,8 +11,8 @@ dependencies: - field.field.node.oe_sc_event.oe_summary - node.type.oe_sc_event module: - - datetime_range - oe_whitelabel_helper + - oe_whitelabel_starter_event - text - user id: node.oe_sc_event.full @@ -42,12 +42,10 @@ content: weight: 3 region: content oe_sc_event_dates: - type: daterange_default + type: event_date_range_format label: inline settings: timezone_override: '' - format_type: oe_whitelabel_starter_event_date - separator: to third_party_settings: { } weight: 1 region: content @@ -67,3 +65,4 @@ hidden: oe_content_short_title: true oe_featured_media: true oe_summary: true + search_api_excerpt: true diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml index 62339844..1a2f3a8f 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml @@ -26,7 +26,7 @@ content: settings: timezone_override: '' format_type: oe_whitelabel_starter_event_date - separator: to + separator: '-' third_party_settings: { } weight: 4 region: content @@ -54,3 +54,4 @@ hidden: oe_content_short_title: true oe_documents: true oe_featured_media: true + search_api_excerpt: true diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml new file mode 100755 index 00000000..b9798e46 --- /dev/null +++ b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml @@ -0,0 +1,68 @@ +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.full + - field.field.node.oe_sc_event.body + - field.field.node.oe_sc_event.oe_documents + - field.field.node.oe_sc_event.oe_featured_media + - field.field.node.oe_sc_event.oe_sc_event_dates + - field.field.node.oe_sc_event.oe_sc_event_location + - field.field.node.oe_sc_event.oe_summary + - node.type.oe_sc_event + module: + - oe_whitelabel_helper + - oe_whitelabel_starter_event + - text + - user +id: node.oe_sc_event.full +targetEntityType: node +bundle: oe_sc_event +mode: full +content: + body: + type: text_default + label: above + settings: { } + third_party_settings: { } + weight: 0 + region: content + links: + settings: { } + third_party_settings: { } + weight: 4 + region: content + oe_documents: + type: entity_reference_entity_view + label: above + settings: + view_mode: default + link: true + third_party_settings: { } + weight: 3 + region: content + oe_sc_event_dates: + type: event_date_range_format + label: inline + settings: + timezone_override: '' + third_party_settings: { } + weight: 1 + region: content + oe_sc_event_location: + type: oe_whitelabel_helper_address_inline + label: inline + settings: + delimiter: ', ' + third_party_settings: { } + weight: 2 + region: content +hidden: + langcode: true + oe_content_content_owner: true + oe_content_legacy_link: true + oe_content_navigation_title: true + oe_content_short_title: true + oe_featured_media: true + oe_summary: true + search_api_excerpt: true diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml new file mode 100755 index 00000000..1a2f3a8f --- /dev/null +++ b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml @@ -0,0 +1,57 @@ +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - field.field.node.oe_sc_event.body + - field.field.node.oe_sc_event.oe_documents + - field.field.node.oe_sc_event.oe_featured_media + - field.field.node.oe_sc_event.oe_sc_event_dates + - field.field.node.oe_sc_event.oe_sc_event_location + - field.field.node.oe_sc_event.oe_summary + - node.type.oe_sc_event + module: + - address + - datetime_range + - text + - user +id: node.oe_sc_event.teaser +targetEntityType: node +bundle: oe_sc_event +mode: teaser +content: + oe_sc_event_dates: + type: daterange_default + label: hidden + settings: + timezone_override: '' + format_type: oe_whitelabel_starter_event_date + separator: '-' + third_party_settings: { } + weight: 4 + region: content + oe_sc_event_location: + type: address_default + label: hidden + settings: { } + third_party_settings: { } + weight: 5 + region: content + oe_summary: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 2 + region: content +hidden: + body: true + langcode: true + links: true + oe_content_content_owner: true + oe_content_legacy_link: true + oe_content_navigation_title: true + oe_content_short_title: true + oe_documents: true + oe_featured_media: true + search_api_excerpt: true diff --git a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php index fe1ab7d3..d2b5eea0 100644 --- a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php +++ b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php @@ -20,3 +20,19 @@ function oe_whitelabel_starter_event_post_update_00001(): void { ]; ConfigImporter::importMultiple('module', 'oe_whitelabel_starter_event', '/config/post_updates/00001_content_banner', $configs, TRUE); } + +/** + * Add time to event dates. + */ +function oe_whitelabel_starter_event_post_update_00002(): void { + $configs = [ + 'core.entity_view_display.node.oe_sc_event.full', + 'core.entity_view_display.node.oe_sc_event.teaser', + ]; + ConfigImporter::importMultiple( + 'module', + 'oe_whitelabel_starter_event', + '/config/post_updates/00002_event_date_show_time', + $configs, + ); +} -- GitLab From a3a77822aa7a1e931301edf2962e6307f05b24e2 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Tue, 14 Jun 2022 17:10:09 +0200 Subject: [PATCH 03/18] OEL-1653: Remove timezone_override settings. --- ...ity_view_display.node.oe_sc_event.full.yml | 3 +-- ...ity_view_display.node.oe_sc_event.full.yml | 3 +-- .../EventDateRangeFormatter.php | 26 ++++++++++++++++--- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml index b9798e46..5828f849 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml @@ -44,8 +44,7 @@ content: oe_sc_event_dates: type: event_date_range_format label: inline - settings: - timezone_override: '' + settings: { } third_party_settings: { } weight: 1 region: content diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml index b9798e46..5828f849 100755 --- a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml +++ b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml @@ -44,8 +44,7 @@ content: oe_sc_event_dates: type: event_date_range_format label: inline - settings: - timezone_override: '' + settings: { } third_party_settings: { } weight: 1 region: content diff --git a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php index 2e9e7e4f..705d4e2b 100644 --- a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php +++ b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php @@ -6,6 +6,7 @@ namespace Drupal\oe_whitelabel_starter_event\Plugin\Field\FieldFormatter; use Drupal\Core\Datetime\DrupalDateTime; use Drupal\Core\Field\FieldItemListInterface; +use Drupal\Core\Form\FormStateInterface; use Drupal\datetime\Plugin\Field\FieldFormatter\DateTimeFormatterBase; use Drupal\datetime_range\DateTimeRangeTrait; @@ -27,6 +28,27 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { use DateTimeRangeTrait; + /** + * {@inheritdoc} + */ + public static function defaultSettings() { + return []; + } + + /** + * {@inheritdoc} + */ + public function settingsForm(array $form, FormStateInterface $form_state) { + return []; + } + + /** + * {@inheritdoc} + */ + public function settingsSummary() { + return []; + } + /** * {@inheritdoc} */ @@ -86,9 +108,7 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { * {@inheritdoc} */ protected function formatDate($date) { - $format_type = $this->getSetting('format_type'); - $timezone = $this->getSetting('timezone_override') ?: $date->getTimezone()->getName(); - return $this->dateFormatter->format($date->getTimestamp(), $format_type, '', $timezone != '' ? $timezone : NULL); + return $this->dateFormatter->format($date->getTimestamp(), 'custom', 'Y-m-d'); } } -- GitLab From bedc88433ad01d3a1e11a45583600e0f5d1bcf42 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Tue, 14 Jun 2022 19:17:39 +0200 Subject: [PATCH 04/18] OEL-1653: Event dates testing starting and end at same day and at diferent days. --- .../src/Functional/ContentEventRenderTest.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 4160c734..0b530176 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -130,6 +130,24 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { trim($content_banner->filter('.oe-sc-event__oe-summary')->text()) ); + // Assert event dates starting and ending same day. + $this->assertSession()->pageTextMatches( + '/[a-zA-Z]+\\s[0-9]+\\s[a-zA-Z]+\\s2022,\\s[0-9]*\\.[0-9]+-[0-9]*\\.[0-9]+\\s\\([a-zA-Z]+\\)/i' + ); + + // Assert event dates starting and ending at different days. + $node->set('oe_sc_event_dates', [ + 'value' => '2022-02-15T08:00:00', + 'end_value' => '2022-02-22T18:00:00', + ]); + $node->save(); + + $this->drupalGet('node/' . $node->id()); + + $this->assertSession()->pageTextMatches( + '/[a-zA-Z]+\\s[0-9]+\\s[a-zA-Z]+\\s2022,\\s[0-9]*\\.[0-9]+-[a-zA-Z]+\\s[0-9]+\\s[a-zA-Z]+\\s2022,\\s[0-9]*\\.[0-9]+\\s\\([a-zA-Z]+\\)/i' + ); + // Assert in-page navigation title. $this->assertEquals( 'Page content', -- GitLab From ba39754ab37d6534e84f5282a9dc21c5a4b2dcfc Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Thu, 16 Jun 2022 13:18:54 +0200 Subject: [PATCH 05/18] OEL-1653: Add a settings form to the date format to not hardcode them. --- .../EventDateRangeFormatter.php | 56 +++++++++++++++---- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php index 705d4e2b..a0b6f69a 100644 --- a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php +++ b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php @@ -32,21 +32,52 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { * {@inheritdoc} */ public static function defaultSettings() { - return []; + return [ + 'date_format' => 'l d F Y', + 'time_format' => 'H.i', + 'datetime_format' => 'l d F Y, H.i', + ]; } /** * {@inheritdoc} */ public function settingsForm(array $form, FormStateInterface $form_state) { - return []; + $form['date_format'] = [ + '#type' => 'textfield', + '#title' => $this->t('Date format'), + '#description' => $this->t('See <a href="https://www.php.net/manual/datetime.format.php#refsect1-datetime.format-parameters" target="_blank">the documentation for PHP date formats</a>.'), + '#default_value' => $this->getSetting('date_format'), + ]; + + $form['time_format'] = [ + '#type' => 'textfield', + '#title' => $this->t('Time format'), + '#description' => $this->t('See <a href="https://www.php.net/manual/datetime.format.php#refsect1-datetime.format-parameters" target="_blank">the documentation for PHP date formats</a>.'), + '#default_value' => $this->getSetting('time_format'), + ]; + + $form['datetime_format'] = [ + '#type' => 'textfield', + '#title' => $this->t('Date/time format'), + '#description' => $this->t('See <a href="https://www.php.net/manual/datetime.format.php#refsect1-datetime.format-parameters" target="_blank">the documentation for PHP date formats</a>.'), + '#default_value' => $this->getSetting('datetime_format'), + ]; + + return $form; } /** * {@inheritdoc} */ public function settingsSummary() { - return []; + $date = new DrupalDateTime(); + $this->setTimeZone($date); + $summary[] = 'Date format: ' . $date->format($this->getSetting('date_format'), $this->getFormatSettings()); + $summary[] = 'Time format: ' . $date->format($this->getSetting('time_format'), $this->getFormatSettings()); + $summary[] = 'Datetime format: ' . $date->format($this->getSetting('datetime_format'), $this->getFormatSettings()); + + return $summary; } /** @@ -56,7 +87,7 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { $elements = []; foreach ($items as $delta => $item) { - if (empty($item->start_date) && empty($item->end_date)) { + if (empty($item->start_date) || empty($item->end_date)) { continue; } @@ -65,20 +96,23 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */ $end_date = $item->end_date; - // Event on a single day. + $this->setTimeZone($start_date); + $this->setTimeZone($end_date); + if ($start_date->format('Y-m-d') === $end_date->format('Y-m-d')) { + // The event is on a single day. $elements[$delta] = [ - 'start_date' => $this->buildCustomDate($start_date, 'l d F Y, H.i'), + 'start_date' => $this->buildCustomDate($start_date, $this->getSetting('datetime_format')), 'separator' => ['#plain_text' => '-'], - 'end_date' => $this->buildCustomDate($end_date, 'H.i (T)'), + 'end_date' => $this->buildCustomDate($end_date, $this->getSetting('time_format') . ' (T)'), ]; } - // Event on multiple days. else { + // Start day and end day are different in the displayed time zone. $elements[$delta] = [ - 'start_date' => $this->buildCustomDate($start_date, 'l d F Y, H.i'), - 'separator' => ['#plain_text' => '-'], - 'end_date' => $this->buildCustomDate($end_date, 'l d F Y, H.i (T)'), + 'start_date' => $this->buildCustomDate($start_date, $this->getSetting('datetime_format')), + 'separator' => ['#plain_text' => ' - '], + 'end_date' => $this->buildCustomDate($end_date, $this->getSetting('datetime_format') . ' (T)'), ]; } } -- GitLab From 24808d56ed2d6fa66791b19f04c7fdd937359688 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Thu, 16 Jun 2022 13:21:58 +0200 Subject: [PATCH 06/18] OEL-1653: Testing dates after set the timezone. --- .../src/Functional/ContentEventRenderTest.php | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 0b530176..df53dcb9 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -94,6 +94,12 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { * Tests the event page. */ public function testEventPage(): void { + // Set an explicit site timezone, and disallow per-user timezones. + $this->config('system.date') + ->set('timezone.user.configurable', 0) + ->set('timezone.default', 'CET') + ->save(); + $node = $this->createExampleEvent(); $this->drupalGet('node/' . $node->id()); @@ -130,10 +136,10 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { trim($content_banner->filter('.oe-sc-event__oe-summary')->text()) ); + $date = $crawler->filter('dd'); + // Assert event dates starting and ending same day. - $this->assertSession()->pageTextMatches( - '/[a-zA-Z]+\\s[0-9]+\\s[a-zA-Z]+\\s2022,\\s[0-9]*\\.[0-9]+-[0-9]*\\.[0-9]+\\s\\([a-zA-Z]+\\)/i' - ); + $this->assertEquals('Wednesday 09 February 2022, 21.00-23.00 (CET)', trim($date->text())); // Assert event dates starting and ending at different days. $node->set('oe_sc_event_dates', [ @@ -142,11 +148,11 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { ]); $node->save(); - $this->drupalGet('node/' . $node->id()); + $this->drupalGet($node->toUrl()); + $crawler = $client->getCrawler(); - $this->assertSession()->pageTextMatches( - '/[a-zA-Z]+\\s[0-9]+\\s[a-zA-Z]+\\s2022,\\s[0-9]*\\.[0-9]+-[a-zA-Z]+\\s[0-9]+\\s[a-zA-Z]+\\s2022,\\s[0-9]*\\.[0-9]+\\s\\([a-zA-Z]+\\)/i' - ); + $date = $crawler->filter('dd'); + $this->assertEquals('Tuesday 15 February 2022, 09.00 - Tuesday 22 February 2022, 19.00 (CET)', trim($date->text())); // Assert in-page navigation title. $this->assertEquals( -- GitLab From 0198fb832edb07d0e5d373b0cef0dc46158429c2 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Mon, 20 Jun 2022 00:09:16 +0200 Subject: [PATCH 07/18] OEL-1653: Testing dates after set the timezone. --- .../oe_whitelabel_starter_event.schema.yml | 10 +++++++++ .../EventDateRangeFormatter.php | 21 +++++++------------ 2 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml diff --git a/modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml b/modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml new file mode 100644 index 00000000..181bf70e --- /dev/null +++ b/modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml @@ -0,0 +1,10 @@ +field.formatter.settings.event_date_range_format: + type: mapping + label: 'Date Time range format' + mapping: + time_format: + type: string + label: 'Time format' + datetime_format: + type: string + label: 'DateTime format' diff --git a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php index a0b6f69a..cf5d8126 100644 --- a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php +++ b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php @@ -33,7 +33,6 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { */ public static function defaultSettings() { return [ - 'date_format' => 'l d F Y', 'time_format' => 'H.i', 'datetime_format' => 'l d F Y, H.i', ]; @@ -43,13 +42,6 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { * {@inheritdoc} */ public function settingsForm(array $form, FormStateInterface $form_state) { - $form['date_format'] = [ - '#type' => 'textfield', - '#title' => $this->t('Date format'), - '#description' => $this->t('See <a href="https://www.php.net/manual/datetime.format.php#refsect1-datetime.format-parameters" target="_blank">the documentation for PHP date formats</a>.'), - '#default_value' => $this->getSetting('date_format'), - ]; - $form['time_format'] = [ '#type' => 'textfield', '#title' => $this->t('Time format'), @@ -73,7 +65,6 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { public function settingsSummary() { $date = new DrupalDateTime(); $this->setTimeZone($date); - $summary[] = 'Date format: ' . $date->format($this->getSetting('date_format'), $this->getFormatSettings()); $summary[] = 'Time format: ' . $date->format($this->getSetting('time_format'), $this->getFormatSettings()); $summary[] = 'Datetime format: ' . $date->format($this->getSetting('datetime_format'), $this->getFormatSettings()); @@ -100,19 +91,25 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { $this->setTimeZone($end_date); if ($start_date->format('Y-m-d') === $end_date->format('Y-m-d')) { - // The event is on a single day. + // The event is on a single day with time. $elements[$delta] = [ 'start_date' => $this->buildCustomDate($start_date, $this->getSetting('datetime_format')), 'separator' => ['#plain_text' => '-'], 'end_date' => $this->buildCustomDate($end_date, $this->getSetting('time_format') . ' (T)'), ]; + // The event is on a single day with no time. + if (empty($this->getSetting('time_format'))) { + $elements[$delta] = $this->buildCustomDate($start_date, $this->getSetting('datetime_format')); + } } else { // Start day and end day are different in the displayed time zone. $elements[$delta] = [ 'start_date' => $this->buildCustomDate($start_date, $this->getSetting('datetime_format')), 'separator' => ['#plain_text' => ' - '], - 'end_date' => $this->buildCustomDate($end_date, $this->getSetting('datetime_format') . ' (T)'), + 'end_date' => !empty($this->getSetting('time_format')) + ? $this->buildCustomDate($end_date, $this->getSetting('datetime_format') . ' (T)') + : $this->buildCustomDate($end_date, $this->getSetting('datetime_format')), ]; } } @@ -124,8 +121,6 @@ class EventDateRangeFormatter extends DateTimeFormatterBase { * Prepare render for a date with custom format. */ protected function buildCustomDate(DrupalDateTime $date, $format) { - $this->setTimeZone($date); - $build = [ '#markup' => $this->dateFormatter->format($date->getTimestamp(), 'custom', $format), '#cache' => [ -- GitLab From 13157c00fa231b5c6730910d5479b0d3c5d8eba7 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Mon, 20 Jun 2022 00:09:51 +0200 Subject: [PATCH 08/18] OEL-1653: Event teaser testing date ranges. --- .../src/Functional/ContentEventRenderTest.php | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index df53dcb9..1bf7c979 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -94,7 +94,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { * Tests the event page. */ public function testEventPage(): void { - // Set an explicit site timezone, and disallow per-user timezones. + // Set an explicit site timezone. $this->config('system.date') ->set('timezone.user.configurable', 0) ->set('timezone.default', 'CET') @@ -136,7 +136,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { trim($content_banner->filter('.oe-sc-event__oe-summary')->text()) ); - $date = $crawler->filter('dd'); + $date = $crawler->filter('dl > dd'); // Assert event dates starting and ending same day. $this->assertEquals('Wednesday 09 February 2022, 21.00-23.00 (CET)', trim($date->text())); @@ -151,7 +151,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $this->drupalGet($node->toUrl()); $crawler = $client->getCrawler(); - $date = $crawler->filter('dd'); + $date = $crawler->filter('dl > dd'); $this->assertEquals('Tuesday 15 February 2022, 09.00 - Tuesday 22 February 2022, 19.00 (CET)', trim($date->text())); // Assert in-page navigation title. @@ -192,6 +192,11 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { * Tests the event rendered in 'Teaser' view mode. */ public function testEventRenderingTeaser(): void { + // Set an explicit site timezone. + $this->config('system.date') + ->set('timezone.user.configurable', 0) + ->set('timezone.default', 'CET') + ->save(); $node = $this->createExampleEvent(); // Build node teaser view. $builder = \Drupal::entityTypeManager()->getViewBuilder('node'); @@ -213,6 +218,25 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { 'image-test.png', trim($image->attr('src')) ); + + $time = $crawler->filter('div > span.text-muted'); + $this->assertEquals('09 Feb 2022', trim($time->text())); + + // Assert event dates starting and ending at different days. + $node->set('oe_sc_event_dates', [ + 'value' => '2022-02-15T08:00:00', + 'end_value' => '2022-02-22T18:00:00', + ]); + $node->save(); + + $builder = \Drupal::entityTypeManager()->getViewBuilder('node'); + $build = $builder->view($node, 'teaser'); + $render = $this->container->get('renderer')->renderRoot($build); + $crawler = new Crawler((string) $render); + $this->drupalGet($node->toUrl()); + + $time = $crawler->filter('div > span.text-muted'); + $this->assertEquals('15 Feb 2022 - 22 Feb 2022', trim($time->text())); } } -- GitLab From d662e7f3afd932861c96a736562c3ae8305f7c63 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Mon, 20 Jun 2022 00:10:17 +0200 Subject: [PATCH 09/18] OEL-1653: Post update with all date changes. --- .../core.date_format.oe_whitelabel_project_date.yml | 2 +- .../core.entity_view_display.node.oe_sc_event.teaser.yml | 9 ++++----- .../core.date_format.oe_whitelabel_project_date.yml | 7 +++++++ .../core.entity_view_display.node.oe_sc_event.teaser.yml | 9 ++++----- .../oe_whitelabel_starter_event.post_update.php | 1 + 5 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml diff --git a/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml b/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml index 42fc99ee..cd2d1aee 100644 --- a/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml +++ b/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml @@ -4,4 +4,4 @@ dependencies: { } id: oe_whitelabel_project_date label: 'OE Whitelabel Project date' locked: false -pattern: 'd F Y' +pattern: 'd M Y' diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml index 1a2f3a8f..b540c64a 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml @@ -12,7 +12,7 @@ dependencies: - node.type.oe_sc_event module: - address - - datetime_range + - oe_whitelabel_starter_event - text - user id: node.oe_sc_event.teaser @@ -21,12 +21,11 @@ bundle: oe_sc_event mode: teaser content: oe_sc_event_dates: - type: daterange_default + type: event_date_range_format label: hidden settings: - timezone_override: '' - format_type: oe_whitelabel_starter_event_date - separator: '-' + time_format: '' + datetime_format: 'd M Y' third_party_settings: { } weight: 4 region: content diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml new file mode 100644 index 00000000..cd2d1aee --- /dev/null +++ b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml @@ -0,0 +1,7 @@ +langcode: en +status: true +dependencies: { } +id: oe_whitelabel_project_date +label: 'OE Whitelabel Project date' +locked: false +pattern: 'd M Y' diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml index 1a2f3a8f..b540c64a 100755 --- a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml +++ b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml @@ -12,7 +12,7 @@ dependencies: - node.type.oe_sc_event module: - address - - datetime_range + - oe_whitelabel_starter_event - text - user id: node.oe_sc_event.teaser @@ -21,12 +21,11 @@ bundle: oe_sc_event mode: teaser content: oe_sc_event_dates: - type: daterange_default + type: event_date_range_format label: hidden settings: - timezone_override: '' - format_type: oe_whitelabel_starter_event_date - separator: '-' + time_format: '' + datetime_format: 'd M Y' third_party_settings: { } weight: 4 region: content diff --git a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php index d2b5eea0..104cbf39 100644 --- a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php +++ b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php @@ -28,6 +28,7 @@ function oe_whitelabel_starter_event_post_update_00002(): void { $configs = [ 'core.entity_view_display.node.oe_sc_event.full', 'core.entity_view_display.node.oe_sc_event.teaser', + 'core.date_format.oe_whitelabel_project_date', ]; ConfigImporter::importMultiple( 'module', -- GitLab From e2d45072d7f5e6fae80619b6240110c3c5de7938 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Fri, 24 Jun 2022 21:44:21 +0200 Subject: [PATCH 10/18] OEL-1653: Introduce daterange_compact instead of custom code. --- composer.json | 1 + ...ormat.oe_whitelabel_date_only_short_month.yml | 16 ++++++++++++++++ ...mpact.format.oe_whitelabel_date_time_long.yml | 16 ++++++++++++++++ .../oe_whitelabel_helper.info.yml | 3 +++ ...entity_view_display.node.oe_sc_event.full.yml | 7 ++++--- ...tity_view_display.node.oe_sc_event.teaser.yml | 7 +++---- ...re.date_format.oe_whitelabel_project_date.yml | 7 ------- ...entity_view_display.node.oe_sc_event.full.yml | 7 ++++--- ...tity_view_display.node.oe_sc_event.teaser.yml | 7 +++---- .../oe_whitelabel_starter_event.post_update.php | 8 +------- tests/src/Functional/ContentEventRenderTest.php | 2 +- 11 files changed, 52 insertions(+), 29 deletions(-) create mode 100644 modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml create mode 100644 modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml delete mode 100644 modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml diff --git a/composer.json b/composer.json index 1ce48248..95db8558 100644 --- a/composer.json +++ b/composer.json @@ -9,6 +9,7 @@ "php": ">=7.4", "cweagans/composer-patches": "^1.7", "drupal/core": "^9.2", + "drupal/daterange_compact": "^2.0", "drupal/twig_field_value": "^2.0", "openeuropa/composer-artifacts": "^1.0.0-alpha1", "openeuropa/oe_bootstrap_theme": "0.1.202206231430" diff --git a/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml new file mode 100644 index 00000000..73b6820a --- /dev/null +++ b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml @@ -0,0 +1,16 @@ +langcode: en +status: true +dependencies: { } +id: oe_whitelabel_date_only_short_month +label: 'Date only, short month' +default_pattern: 'd M Y' +default_separator: ' - ' +same_day_start_pattern: 'd M Y' +same_day_end_pattern: '' +same_day_separator: '' +same_month_start_pattern: '' +same_month_end_pattern: '' +same_month_separator: '' +same_year_start_pattern: '' +same_year_end_pattern: '' +same_year_separator: '' diff --git a/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml new file mode 100644 index 00000000..9756862e --- /dev/null +++ b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml @@ -0,0 +1,16 @@ +langcode: en +status: true +dependencies: { } +id: oe_whitelabel_date_time_long +label: 'Date and time, long names' +default_pattern: 'l d F Y, H.i (T)' +default_separator: ' - ' +same_day_start_pattern: 'l d F Y, H.i' +same_day_end_pattern: 'H.i (T)' +same_day_separator: '-' +same_month_start_pattern: '' +same_month_end_pattern: '' +same_month_separator: '' +same_year_start_pattern: '' +same_year_end_pattern: '' +same_year_separator: '' diff --git a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml index 210d21be..28581dbd 100644 --- a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml +++ b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml @@ -7,6 +7,7 @@ core_version_requirement: ^9.2 dependencies: - drupal:node - drupal:twig_field_value + - drupal:daterange_compact - oe_bootstrap_theme:oe_bootstrap_theme_helper - openeuropa:oe_corporate_blocks @@ -15,3 +16,5 @@ dependencies: config_devel: install: - core.entity_view_mode.node.oe_w_content_banner + - daterange_compact.format.oe_whitelabel_date_only_short_month + - daterange_compact.format.oe_whitelabel_date_time_long diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml index 5828f849..ebe638c0 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml @@ -11,8 +11,8 @@ dependencies: - field.field.node.oe_sc_event.oe_summary - node.type.oe_sc_event module: + - daterange_compact - oe_whitelabel_helper - - oe_whitelabel_starter_event - text - user id: node.oe_sc_event.full @@ -42,9 +42,10 @@ content: weight: 3 region: content oe_sc_event_dates: - type: event_date_range_format + type: daterange_compact label: inline - settings: { } + settings: + daterange_compact_format: oe_whitelabel_date_time_long third_party_settings: { } weight: 1 region: content diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml index b540c64a..22910d1f 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml @@ -12,7 +12,7 @@ dependencies: - node.type.oe_sc_event module: - address - - oe_whitelabel_starter_event + - daterange_compact - text - user id: node.oe_sc_event.teaser @@ -21,11 +21,10 @@ bundle: oe_sc_event mode: teaser content: oe_sc_event_dates: - type: event_date_range_format + type: daterange_compact label: hidden settings: - time_format: '' - datetime_format: 'd M Y' + daterange_compact_format: oe_whitelabel_date_only_short_month third_party_settings: { } weight: 4 region: content diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml deleted file mode 100644 index cd2d1aee..00000000 --- a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.date_format.oe_whitelabel_project_date.yml +++ /dev/null @@ -1,7 +0,0 @@ -langcode: en -status: true -dependencies: { } -id: oe_whitelabel_project_date -label: 'OE Whitelabel Project date' -locked: false -pattern: 'd M Y' diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml index 5828f849..ebe638c0 100755 --- a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml +++ b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.full.yml @@ -11,8 +11,8 @@ dependencies: - field.field.node.oe_sc_event.oe_summary - node.type.oe_sc_event module: + - daterange_compact - oe_whitelabel_helper - - oe_whitelabel_starter_event - text - user id: node.oe_sc_event.full @@ -42,9 +42,10 @@ content: weight: 3 region: content oe_sc_event_dates: - type: event_date_range_format + type: daterange_compact label: inline - settings: { } + settings: + daterange_compact_format: oe_whitelabel_date_time_long third_party_settings: { } weight: 1 region: content diff --git a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml index b540c64a..22910d1f 100755 --- a/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml +++ b/modules/oe_whitelabel_starter_event/config/post_updates/00002_event_date_show_time/core.entity_view_display.node.oe_sc_event.teaser.yml @@ -12,7 +12,7 @@ dependencies: - node.type.oe_sc_event module: - address - - oe_whitelabel_starter_event + - daterange_compact - text - user id: node.oe_sc_event.teaser @@ -21,11 +21,10 @@ bundle: oe_sc_event mode: teaser content: oe_sc_event_dates: - type: event_date_range_format + type: daterange_compact label: hidden settings: - time_format: '' - datetime_format: 'd M Y' + daterange_compact_format: oe_whitelabel_date_only_short_month third_party_settings: { } weight: 4 region: content diff --git a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php index 104cbf39..817165f1 100644 --- a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php +++ b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.post_update.php @@ -28,12 +28,6 @@ function oe_whitelabel_starter_event_post_update_00002(): void { $configs = [ 'core.entity_view_display.node.oe_sc_event.full', 'core.entity_view_display.node.oe_sc_event.teaser', - 'core.date_format.oe_whitelabel_project_date', ]; - ConfigImporter::importMultiple( - 'module', - 'oe_whitelabel_starter_event', - '/config/post_updates/00002_event_date_show_time', - $configs, - ); + ConfigImporter::importMultiple('module', 'oe_whitelabel_starter_event', '/config/post_updates/00002_event_date_show_time', $configs); } diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 1bf7c979..68ca2505 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -152,7 +152,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $crawler = $client->getCrawler(); $date = $crawler->filter('dl > dd'); - $this->assertEquals('Tuesday 15 February 2022, 09.00 - Tuesday 22 February 2022, 19.00 (CET)', trim($date->text())); + $this->assertEquals('Tuesday 15 February 2022, 09.00 (CET) - Tuesday 22 February 2022, 19.00 (CET)', trim($date->text())); // Assert in-page navigation title. $this->assertEquals( -- GitLab From a400425645acaad9111b741fffb995f7570a9ab0 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Fri, 24 Jun 2022 21:44:45 +0200 Subject: [PATCH 11/18] OEL-1653: Install new date formats in update path. --- ...ormat.oe_whitelabel_date_only_short_month.yml | 16 ++++++++++++++++ ...mpact.format.oe_whitelabel_date_time_long.yml | 16 ++++++++++++++++ .../oe_whitelabel_helper.post_update.php | 13 +++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml create mode 100644 modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml diff --git a/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml new file mode 100644 index 00000000..73b6820a --- /dev/null +++ b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml @@ -0,0 +1,16 @@ +langcode: en +status: true +dependencies: { } +id: oe_whitelabel_date_only_short_month +label: 'Date only, short month' +default_pattern: 'd M Y' +default_separator: ' - ' +same_day_start_pattern: 'd M Y' +same_day_end_pattern: '' +same_day_separator: '' +same_month_start_pattern: '' +same_month_end_pattern: '' +same_month_separator: '' +same_year_start_pattern: '' +same_year_end_pattern: '' +same_year_separator: '' diff --git a/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml new file mode 100644 index 00000000..269b59ce --- /dev/null +++ b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml @@ -0,0 +1,16 @@ +langcode: en +status: true +dependencies: { } +id: oe_whitelabel_date_time_long +label: 'Date and time, long names' +default_pattern: 'l d F Y, H.i (T)' +default_separator: ' - ' +same_day_start_pattern: 'l d F Y, H.i' +same_day_end_pattern: 'H.i (T)' +same_day_separator: ' - ' +same_month_start_pattern: '' +same_month_end_pattern: '' +same_month_separator: '' +same_year_start_pattern: '' +same_year_end_pattern: '' +same_year_separator: '' diff --git a/modules/oe_whitelabel_helper/oe_whitelabel_helper.post_update.php b/modules/oe_whitelabel_helper/oe_whitelabel_helper.post_update.php index d82ac165..798912a9 100644 --- a/modules/oe_whitelabel_helper/oe_whitelabel_helper.post_update.php +++ b/modules/oe_whitelabel_helper/oe_whitelabel_helper.post_update.php @@ -19,3 +19,16 @@ function oe_whitelabel_helper_post_update_00001(): void { ]; ConfigImporter::importMultiple('module', 'oe_whitelabel_helper', '/config/post_updates/00001_content_banner', $configs, TRUE); } + +/** + * Create date range formats. + */ +function oe_whitelabel_helper_post_update_00002(): void { + \Drupal::service('module_installer')->install(['daterange_compact']); + + $configs = [ + 'daterange_compact.format.oe_whitelabel_date_only_short_month', + 'daterange_compact.format.oe_whitelabel_date_time_long', + ]; + ConfigImporter::importMultiple('module', 'oe_whitelabel_helper', '/config/post_updates/00002_date_range_formats', $configs, TRUE); +} -- GitLab From 227a72cefe78b0f15cd3af6d457aa7541d40b437 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Fri, 24 Jun 2022 21:45:48 +0200 Subject: [PATCH 12/18] OEL-1653: Use proper method for test setup. --- .../src/Functional/ContentEventRenderTest.php | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 68ca2505..3a8026bf 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -22,11 +22,24 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { /** * {@inheritdoc} */ - public static $modules = [ + protected static $modules = [ 'block', 'oe_whitelabel_starter_event', ]; + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + // Set an explicit site timezone. + $this->config('system.date') + ->set('timezone.user.configurable', 0) + ->set('timezone.default', 'CET') + ->save(); + } + /** * Creates an example event node. * @@ -94,12 +107,6 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { * Tests the event page. */ public function testEventPage(): void { - // Set an explicit site timezone. - $this->config('system.date') - ->set('timezone.user.configurable', 0) - ->set('timezone.default', 'CET') - ->save(); - $node = $this->createExampleEvent(); $this->drupalGet('node/' . $node->id()); @@ -192,11 +199,6 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { * Tests the event rendered in 'Teaser' view mode. */ public function testEventRenderingTeaser(): void { - // Set an explicit site timezone. - $this->config('system.date') - ->set('timezone.user.configurable', 0) - ->set('timezone.default', 'CET') - ->save(); $node = $this->createExampleEvent(); // Build node teaser view. $builder = \Drupal::entityTypeManager()->getViewBuilder('node'); -- GitLab From 7712a3db554e69509b2ee2f960af4548a8897135 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Fri, 24 Jun 2022 21:46:29 +0200 Subject: [PATCH 13/18] OEL-1653: Move non-test methods last in the class. --- .../src/Functional/ContentEventRenderTest.php | 126 +++++++++--------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 3a8026bf..7f063b89 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -40,69 +40,6 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { ->save(); } - /** - * Creates an example event node. - * - * @return \Drupal\node\NodeInterface - * Event node. - */ - protected function createExampleEvent(): NodeInterface { - // Create a sample media entity to be embedded. - File::create([ - 'uri' => $this->getTestFiles('image')[0]->uri, - ])->save(); - $media_image = Media::create([ - 'bundle' => 'image', - 'name' => 'Starter Image test', - 'oe_media_image' => [ - [ - 'target_id' => 1, - 'alt' => 'Starter Image test alt', - 'title' => 'Starter Image test title', - ], - ], - ]); - $media_image->save(); - - // Create a sample document media entity to be embedded. - File::create([ - 'uri' => $this->getTestFiles('text')[0]->uri, - ])->save(); - $media_document = Media::create([ - 'bundle' => 'document', - 'name' => 'Event document test', - 'oe_media_file_type' => 'local', - 'oe_media_file' => [ - [ - 'target_id' => 2, - 'alt' => 'Event document alt', - 'title' => 'Event document title', - ], - ], - ]); - $media_document->save(); - - /** @var \Drupal\node\Entity\Node $node */ - $node = \Drupal::entityTypeManager() - ->getStorage('node') - ->create([ - 'type' => 'oe_sc_event', - 'title' => 'Test event node', - 'oe_summary' => 'https://www.example.org is a web page', - 'body' => 'Event body', - 'oe_sc_event_dates' => [ - 'value' => '2022-02-09T20:00:00', - 'end_value' => '2022-02-09T22:00:00', - ], - 'uid' => 1, - 'status' => 1, - ]); - $node->set('oe_documents', [$media_document]); - $node->set('oe_featured_media', [$media_image]); - $node->save(); - return $node; - } - /** * Tests the event page. */ @@ -241,4 +178,67 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $this->assertEquals('15 Feb 2022 - 22 Feb 2022', trim($time->text())); } + /** + * Creates an example event node. + * + * @return \Drupal\node\NodeInterface + * Event node. + */ + protected function createExampleEvent(): NodeInterface { + // Create a sample media entity to be embedded. + File::create([ + 'uri' => $this->getTestFiles('image')[0]->uri, + ])->save(); + $media_image = Media::create([ + 'bundle' => 'image', + 'name' => 'Starter Image test', + 'oe_media_image' => [ + [ + 'target_id' => 1, + 'alt' => 'Starter Image test alt', + 'title' => 'Starter Image test title', + ], + ], + ]); + $media_image->save(); + + // Create a sample document media entity to be embedded. + File::create([ + 'uri' => $this->getTestFiles('text')[0]->uri, + ])->save(); + $media_document = Media::create([ + 'bundle' => 'document', + 'name' => 'Event document test', + 'oe_media_file_type' => 'local', + 'oe_media_file' => [ + [ + 'target_id' => 2, + 'alt' => 'Event document alt', + 'title' => 'Event document title', + ], + ], + ]); + $media_document->save(); + + /** @var \Drupal\node\Entity\Node $node */ + $node = \Drupal::entityTypeManager() + ->getStorage('node') + ->create([ + 'type' => 'oe_sc_event', + 'title' => 'Test event node', + 'oe_summary' => 'https://www.example.org is a web page', + 'body' => 'Event body', + 'oe_sc_event_dates' => [ + 'value' => '2022-02-09T20:00:00', + 'end_value' => '2022-02-09T22:00:00', + ], + 'uid' => 1, + 'status' => 1, + ]); + $node->set('oe_documents', [$media_document]); + $node->set('oe_featured_media', [$media_image]); + $node->save(); + return $node; + } + } -- GitLab From 7213d9e5e9c856afe0a66d55a590eb6155228539 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Fri, 24 Jun 2022 22:51:42 +0200 Subject: [PATCH 14/18] OEL-1653: Enable module in kernel tests. --- .../tests/src/Kernel/AbstractKernelTestBase.php | 1 + tests/src/Kernel/AbstractKernelTestBase.php | 4 +--- tests/src/Kernel/ContentLanguageSwitcherTest.php | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/oe_whitelabel_paragraphs/tests/src/Kernel/AbstractKernelTestBase.php b/modules/oe_whitelabel_paragraphs/tests/src/Kernel/AbstractKernelTestBase.php index 437d1e64..cfdbd376 100644 --- a/modules/oe_whitelabel_paragraphs/tests/src/Kernel/AbstractKernelTestBase.php +++ b/modules/oe_whitelabel_paragraphs/tests/src/Kernel/AbstractKernelTestBase.php @@ -21,6 +21,7 @@ abstract class AbstractKernelTestBase extends KernelTestBase { */ protected static $modules = [ 'breakpoint', + 'daterange_compact', 'image', 'oe_bootstrap_theme_helper', 'oe_whitelabel_helper', diff --git a/tests/src/Kernel/AbstractKernelTestBase.php b/tests/src/Kernel/AbstractKernelTestBase.php index 25b39ba8..c994765e 100644 --- a/tests/src/Kernel/AbstractKernelTestBase.php +++ b/tests/src/Kernel/AbstractKernelTestBase.php @@ -5,19 +5,17 @@ declare(strict_types = 1); namespace Drupal\Tests\oe_whitelabel\Kernel; use Drupal\Tests\oe_bootstrap_theme\Kernel\AbstractKernelTestBase as BootstrapKernelTestBase; -use Drupal\Tests\oe_bootstrap_theme\Kernel\Traits\RenderTrait; /** * Base class for theme's kernel tests. */ abstract class AbstractKernelTestBase extends BootstrapKernelTestBase { - use RenderTrait; - /** * {@inheritdoc} */ protected static $modules = [ + 'daterange_compact', 'oe_whitelabel_helper', ]; diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php index 49c72b79..797bdaac 100644 --- a/tests/src/Kernel/ContentLanguageSwitcherTest.php +++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php @@ -17,9 +17,10 @@ class ContentLanguageSwitcherTest extends KernelTestBase { /** * {@inheritdoc} */ - public static $modules = [ + protected static $modules = [ 'block', 'content_translation', + 'daterange_compact', 'language', 'locale', 'node', -- GitLab From b335ad457f406a2187f917d0108fa4bd546f02d5 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Sat, 25 Jun 2022 00:06:41 +0200 Subject: [PATCH 15/18] OEL-1653: Remove project changes as out of scope. --- .../install/core.date_format.oe_whitelabel_project_date.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml b/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml index cd2d1aee..42fc99ee 100644 --- a/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml +++ b/modules/oe_whitelabel_extra_project/config/install/core.date_format.oe_whitelabel_project_date.yml @@ -4,4 +4,4 @@ dependencies: { } id: oe_whitelabel_project_date label: 'OE Whitelabel Project date' locked: false -pattern: 'd M Y' +pattern: 'd F Y' -- GitLab From 56edcbfe366f9e3aaca6c138e0c8cc112e529edd Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Sat, 25 Jun 2022 01:24:50 +0200 Subject: [PATCH 16/18] OEL-1653: Prevent regressions on project rendered dates. --- .../ContentProjectRenderTest.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/src/FunctionalJavascript/ContentProjectRenderTest.php b/tests/src/FunctionalJavascript/ContentProjectRenderTest.php index 7e429f8d..402bc469 100644 --- a/tests/src/FunctionalJavascript/ContentProjectRenderTest.php +++ b/tests/src/FunctionalJavascript/ContentProjectRenderTest.php @@ -174,6 +174,7 @@ class ContentProjectRenderTest extends WebDriverTestBase { // Select the content column next to the in-page navigation. $project_content = $assert_session->elementExists('css', '.col-md-9'); + $this->assertProjectDates('10 May 2020', '15 May 2025'); $this->assertProjectStatusTimestampsAsDateStrings('2020-05-10 00:00:00', '2025-05-16 00:00:00'); $this->assertProjectStatusVisible(); @@ -253,6 +254,7 @@ class ContentProjectRenderTest extends WebDriverTestBase { $node->save(); $this->drupalGet($node->toUrl()); + $this->assertProjectDates('07 March 2019', '21 March 2019'); $this->assertProjectStatusTimestampsAsDateStrings('2019-03-07 00:00:00', '2019-03-22 00:00:00'); $this->assertProjectStatusVisible(); $this->assertProjectStatus('bg-dark', 'Closed'); @@ -415,4 +417,20 @@ class ContentProjectRenderTest extends WebDriverTestBase { } } + /** + * Assert the rendered dates in the project status area. + * + * @param string $expected_start_date + * The expected start date string. + * @param string $expected_end_date + * The expected end date string. + */ + protected function assertProjectDates(string $expected_start_date, string $expected_end_date): void { + $wrapper = $this->assertSession()->elementExists('css', '.bcl-project-status'); + $start_element = $this->assertSession()->elementExists('xpath', '//p[contains(text(), "Start")]//time', $wrapper); + $this->assertEquals($expected_start_date, trim($start_element->getText())); + $end_element = $this->assertSession()->elementExists('xpath', '//p[contains(text(), "End")]//time', $wrapper); + $this->assertEquals($expected_end_date, trim($end_element->getText())); + } + } -- GitLab From 3ff004211e1728c7e0b6cdfc6af66661b5c29216 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Mon, 27 Jun 2022 22:10:45 +0200 Subject: [PATCH 17/18] OEL-1653: Remove unused code. --- .../oe_whitelabel_starter_event.schema.yml | 10 -- .../EventDateRangeFormatter.php | 143 ------------------ 2 files changed, 153 deletions(-) delete mode 100644 modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml delete mode 100644 modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php diff --git a/modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml b/modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml deleted file mode 100644 index 181bf70e..00000000 --- a/modules/oe_whitelabel_starter_event/config/schema/oe_whitelabel_starter_event.schema.yml +++ /dev/null @@ -1,10 +0,0 @@ -field.formatter.settings.event_date_range_format: - type: mapping - label: 'Date Time range format' - mapping: - time_format: - type: string - label: 'Time format' - datetime_format: - type: string - label: 'DateTime format' diff --git a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php b/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php deleted file mode 100644 index cf5d8126..00000000 --- a/modules/oe_whitelabel_starter_event/src/Plugin/Field/FieldFormatter/EventDateRangeFormatter.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -declare(strict_types = 1); - -namespace Drupal\oe_whitelabel_starter_event\Plugin\Field\FieldFormatter; - -use Drupal\Core\Datetime\DrupalDateTime; -use Drupal\Core\Field\FieldItemListInterface; -use Drupal\Core\Form\FormStateInterface; -use Drupal\datetime\Plugin\Field\FieldFormatter\DateTimeFormatterBase; -use Drupal\datetime_range\DateTimeRangeTrait; - -/** - * Plugin implementation of the 'Event dates' formatter for 'daterange' fields. - * - * This formatter renders the data range as plain text, with a fully - * configurable date format using the PHP date syntax and separator. - * - * @FieldFormatter( - * id = "event_date_range_format", - * label = @Translation("Event date range format"), - * field_types = { - * "daterange" - * } - * ) - */ -class EventDateRangeFormatter extends DateTimeFormatterBase { - - use DateTimeRangeTrait; - - /** - * {@inheritdoc} - */ - public static function defaultSettings() { - return [ - 'time_format' => 'H.i', - 'datetime_format' => 'l d F Y, H.i', - ]; - } - - /** - * {@inheritdoc} - */ - public function settingsForm(array $form, FormStateInterface $form_state) { - $form['time_format'] = [ - '#type' => 'textfield', - '#title' => $this->t('Time format'), - '#description' => $this->t('See <a href="https://www.php.net/manual/datetime.format.php#refsect1-datetime.format-parameters" target="_blank">the documentation for PHP date formats</a>.'), - '#default_value' => $this->getSetting('time_format'), - ]; - - $form['datetime_format'] = [ - '#type' => 'textfield', - '#title' => $this->t('Date/time format'), - '#description' => $this->t('See <a href="https://www.php.net/manual/datetime.format.php#refsect1-datetime.format-parameters" target="_blank">the documentation for PHP date formats</a>.'), - '#default_value' => $this->getSetting('datetime_format'), - ]; - - return $form; - } - - /** - * {@inheritdoc} - */ - public function settingsSummary() { - $date = new DrupalDateTime(); - $this->setTimeZone($date); - $summary[] = 'Time format: ' . $date->format($this->getSetting('time_format'), $this->getFormatSettings()); - $summary[] = 'Datetime format: ' . $date->format($this->getSetting('datetime_format'), $this->getFormatSettings()); - - return $summary; - } - - /** - * {@inheritdoc} - */ - public function viewElements(FieldItemListInterface $items, $langcode) { - $elements = []; - - foreach ($items as $delta => $item) { - if (empty($item->start_date) || empty($item->end_date)) { - continue; - } - - /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ - $start_date = $item->start_date; - /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */ - $end_date = $item->end_date; - - $this->setTimeZone($start_date); - $this->setTimeZone($end_date); - - if ($start_date->format('Y-m-d') === $end_date->format('Y-m-d')) { - // The event is on a single day with time. - $elements[$delta] = [ - 'start_date' => $this->buildCustomDate($start_date, $this->getSetting('datetime_format')), - 'separator' => ['#plain_text' => '-'], - 'end_date' => $this->buildCustomDate($end_date, $this->getSetting('time_format') . ' (T)'), - ]; - // The event is on a single day with no time. - if (empty($this->getSetting('time_format'))) { - $elements[$delta] = $this->buildCustomDate($start_date, $this->getSetting('datetime_format')); - } - } - else { - // Start day and end day are different in the displayed time zone. - $elements[$delta] = [ - 'start_date' => $this->buildCustomDate($start_date, $this->getSetting('datetime_format')), - 'separator' => ['#plain_text' => ' - '], - 'end_date' => !empty($this->getSetting('time_format')) - ? $this->buildCustomDate($end_date, $this->getSetting('datetime_format') . ' (T)') - : $this->buildCustomDate($end_date, $this->getSetting('datetime_format')), - ]; - } - } - - return $elements; - } - - /** - * Prepare render for a date with custom format. - */ - protected function buildCustomDate(DrupalDateTime $date, $format) { - $build = [ - '#markup' => $this->dateFormatter->format($date->getTimestamp(), 'custom', $format), - '#cache' => [ - 'contexts' => [ - 'timezone', - ], - ], - ]; - - return $build; - } - - /** - * {@inheritdoc} - */ - protected function formatDate($date) { - return $this->dateFormatter->format($date->getTimestamp(), 'custom', 'Y-m-d'); - } - -} -- GitLab From c721c32710ee917d5fd4cc865b4153027e075af2 Mon Sep 17 00:00:00 2001 From: Francesco Sardara <francesco@tdgwebservices.com> Date: Mon, 27 Jun 2022 22:11:19 +0200 Subject: [PATCH 18/18] OEL-1653: Days shouldn't have leading zeroes. --- ...ct.format.oe_whitelabel_date_only_short_month.yml | 4 ++-- ...e_compact.format.oe_whitelabel_date_time_long.yml | 4 ++-- ...ct.format.oe_whitelabel_date_only_short_month.yml | 4 ++-- ...e_compact.format.oe_whitelabel_date_time_long.yml | 6 +++--- tests/src/Functional/ContentEventRenderTest.php | 12 ++++++------ 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml index 73b6820a..a3d7eb07 100644 --- a/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml +++ b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_only_short_month.yml @@ -3,9 +3,9 @@ status: true dependencies: { } id: oe_whitelabel_date_only_short_month label: 'Date only, short month' -default_pattern: 'd M Y' +default_pattern: 'j M Y' default_separator: ' - ' -same_day_start_pattern: 'd M Y' +same_day_start_pattern: 'j M Y' same_day_end_pattern: '' same_day_separator: '' same_month_start_pattern: '' diff --git a/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml index 9756862e..4a1bc05f 100644 --- a/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml +++ b/modules/oe_whitelabel_helper/config/install/daterange_compact.format.oe_whitelabel_date_time_long.yml @@ -3,9 +3,9 @@ status: true dependencies: { } id: oe_whitelabel_date_time_long label: 'Date and time, long names' -default_pattern: 'l d F Y, H.i (T)' +default_pattern: 'l j F Y, H.i (T)' default_separator: ' - ' -same_day_start_pattern: 'l d F Y, H.i' +same_day_start_pattern: 'l j F Y, H.i' same_day_end_pattern: 'H.i (T)' same_day_separator: '-' same_month_start_pattern: '' diff --git a/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml index 73b6820a..a3d7eb07 100644 --- a/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml +++ b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_only_short_month.yml @@ -3,9 +3,9 @@ status: true dependencies: { } id: oe_whitelabel_date_only_short_month label: 'Date only, short month' -default_pattern: 'd M Y' +default_pattern: 'j M Y' default_separator: ' - ' -same_day_start_pattern: 'd M Y' +same_day_start_pattern: 'j M Y' same_day_end_pattern: '' same_day_separator: '' same_month_start_pattern: '' diff --git a/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml index 269b59ce..4a1bc05f 100644 --- a/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml +++ b/modules/oe_whitelabel_helper/config/post_updates/00002_date_range_formats/daterange_compact.format.oe_whitelabel_date_time_long.yml @@ -3,11 +3,11 @@ status: true dependencies: { } id: oe_whitelabel_date_time_long label: 'Date and time, long names' -default_pattern: 'l d F Y, H.i (T)' +default_pattern: 'l j F Y, H.i (T)' default_separator: ' - ' -same_day_start_pattern: 'l d F Y, H.i' +same_day_start_pattern: 'l j F Y, H.i' same_day_end_pattern: 'H.i (T)' -same_day_separator: ' - ' +same_day_separator: '-' same_month_start_pattern: '' same_month_end_pattern: '' same_month_separator: '' diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 7f063b89..68c3cf55 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -83,11 +83,11 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $date = $crawler->filter('dl > dd'); // Assert event dates starting and ending same day. - $this->assertEquals('Wednesday 09 February 2022, 21.00-23.00 (CET)', trim($date->text())); + $this->assertEquals('Wednesday 9 February 2022, 21.00-23.00 (CET)', trim($date->text())); // Assert event dates starting and ending at different days. $node->set('oe_sc_event_dates', [ - 'value' => '2022-02-15T08:00:00', + 'value' => '2022-02-07T08:00:00', 'end_value' => '2022-02-22T18:00:00', ]); $node->save(); @@ -96,7 +96,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $crawler = $client->getCrawler(); $date = $crawler->filter('dl > dd'); - $this->assertEquals('Tuesday 15 February 2022, 09.00 (CET) - Tuesday 22 February 2022, 19.00 (CET)', trim($date->text())); + $this->assertEquals('Monday 7 February 2022, 09.00 (CET) - Tuesday 22 February 2022, 19.00 (CET)', trim($date->text())); // Assert in-page navigation title. $this->assertEquals( @@ -159,11 +159,11 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { ); $time = $crawler->filter('div > span.text-muted'); - $this->assertEquals('09 Feb 2022', trim($time->text())); + $this->assertEquals('9 Feb 2022', trim($time->text())); // Assert event dates starting and ending at different days. $node->set('oe_sc_event_dates', [ - 'value' => '2022-02-15T08:00:00', + 'value' => '2022-02-07T08:00:00', 'end_value' => '2022-02-22T18:00:00', ]); $node->save(); @@ -175,7 +175,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $this->drupalGet($node->toUrl()); $time = $crawler->filter('div > span.text-muted'); - $this->assertEquals('15 Feb 2022 - 22 Feb 2022', trim($time->text())); + $this->assertEquals('7 Feb 2022 - 22 Feb 2022', trim($time->text())); } /** -- GitLab