From 355e4717b08ee4807f00cfea6ffa1b36a3e8d391 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 14 Sep 2021 14:51:14 +0200 Subject: [PATCH] Support PublicHolidays for opening hours (#51) DayOfWeek is an enum as defined at https://schema.org/DayOfWeek We missed the PublicHolidays enum value when building `getDaysOfWeekWithMondayFirstWeekDay()` which is used in templates to get ordered result. Opening hours for public holidays were not rendered, which is now fixed. --- Classes/Domain/Model/Frontend/OpeningHour.php | 1 + Resources/Private/Language/de.locallang.xlf | 32 +++++++++++++++++++ Resources/Private/Language/locallang.xlf | 24 ++++++++++++++ .../ContentElement/TouristAttraction.html | 2 +- .../Fixtures/Frontend/TouristAttractions.xml | 2 +- Tests/Functional/FrontendTest.php | 9 +++++- 6 files changed, 67 insertions(+), 3 deletions(-) diff --git a/Classes/Domain/Model/Frontend/OpeningHour.php b/Classes/Domain/Model/Frontend/OpeningHour.php index 864648a..e1b168c 100644 --- a/Classes/Domain/Model/Frontend/OpeningHour.php +++ b/Classes/Domain/Model/Frontend/OpeningHour.php @@ -114,6 +114,7 @@ class OpeningHour 'Friday', 'Saturday', 'Sunday', + 'PublicHolidays', ]); } diff --git a/Resources/Private/Language/de.locallang.xlf b/Resources/Private/Language/de.locallang.xlf index 0700ec5..d7b87cd 100644 --- a/Resources/Private/Language/de.locallang.xlf +++ b/Resources/Private/Language/de.locallang.xlf @@ -3,6 +3,38 @@
+ + Monday: + Montag: + + + Tuesday: + Dienstag: + + + Wednesday: + Mittwoch: + + + Thursday: + Donnerstag: + + + Friday: + Freitag: + + + Saturday: + Samstag: + + + Sunday: + Sonntag: + + + Public Holidays: + Feiertags: + Accommodation Offer Unterkunft diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 6b5fc21..ae46e4d 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -3,6 +3,30 @@
+ + Monday: + + + Tuesday: + + + Wednesday: + + + Thursday: + + + Friday: + + + Saturday: + + + Sunday: + + + Public Holidays: + Actions diff --git a/Resources/Private/Templates/Frontend/ContentElement/TouristAttraction.html b/Resources/Private/Templates/Frontend/ContentElement/TouristAttraction.html index b8065a6..2508eb2 100644 --- a/Resources/Private/Templates/Frontend/ContentElement/TouristAttraction.html +++ b/Resources/Private/Templates/Frontend/ContentElement/TouristAttraction.html @@ -12,7 +12,7 @@

- {weekday}: {openingHour.opens} - {openingHour.closes}
+ {f:translate(id: 'content.openingHour.weekday.{weekday}', default: weekday, extensionName: 'Thuecat')} {openingHour.opens} - {openingHour.closes}
{openingHour.from -> f:format.date(format: 'd.m.Y')} - {openingHour.through -> f:format.date(format: 'd.m.Y')} diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractions.xml b/Tests/Functional/Fixtures/Frontend/TouristAttractions.xml index 72d9f85..56bc812 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractions.xml +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractions.xml @@ -7,7 +7,7 @@ Die Beschreibung der Attraktion 1 [{"mainImage":true,"type":"image","title":"Erfurt-Dom und Severikirche-beleuchtet.jpg","description":"","url":"https:\/\/cms.thuecat.org\/o\/adaptive-media\/image\/5159216\/Preview-1280x0\/image","copyrightYear":2016,"license":{"type":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/","author":""}},{"mainImage":false,"type":"image","title":"Erfurt-Dom-und-Severikirche.jpg","description":"Sicht auf Dom St. Marien, St. Severikirche sowie die davor liegenden Klostergeb\u00e4ude und einem Ausschnitt des Biergartens umgeben von einem d\u00e4mmerungsverf\u00e4rten Himmel","url":"https:\/\/cms.thuecat.org\/o\/adaptive-media\/image\/5159186\/Preview-1280x0\/image","copyrightYear":2020,"license":{"type":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/","author":""}},{"mainImage":false,"type":"image","title":"Erfurt-Dom und Severikirche-beleuchtet.jpg","description":"","url":"https:\/\/cms.thuecat.org\/o\/adaptive-media\/image\/5159216\/Preview-1280x0\/image","copyrightYear":2016,"license":{"type":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/","author":""}}] - [{"opens":"09:30:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday"]},{"opens":"09:30:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday"]}] + [{"opens":"09:30:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"18:00:00","from":{"date":"2021-05-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2021-10-31 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday"]},{"opens":"09:30:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Saturday","Friday","Thursday","Tuesday","Monday","Wednesday"]},{"opens":"13:00:00","closes":"17:00:00","from":{"date":"2021-11-01 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"through":{"date":"2022-04-30 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"daysOfWeek":["Sunday","PublicHolidays"]}]

{"street":"Beispielstraße 1a","zip":"99084","city":"Beispielstadt","email":"example@example.com","phone":"(0)30 23125 000","fax":"","geo":{"latitude":50.975955358589545,"longitude":11.023667024961856}}
[{"type":"GuidedTourOffer","title":"F\u00fchrungen","description":"Immer samstags, um 11:15 Uhr findet eine \u00f6ffentliche F\u00fchrung durch das Museum statt. Dauer etwa 90 Minuten","prices":[{"title":"Erwachsene","description":"","price":8,"currency":"EUR","rule":"PerPerson"},{"title":"Erm\u00e4\u00dfigt","description":"als erm\u00e4\u00dfigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner\/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt","price":5,"currency":"EUR","rule":"PerPerson"}]},{"type":"EntryOffer","title":"Eintritt","description":"Schulklassen und Kitagruppen im Rahmen des Unterrichts: Eintritt frei\nAn jedem ersten Dienstag im Monat: Eintritt frei","prices":[{"title":"Erm\u00e4\u00dfigt","description":"als erm\u00e4\u00dfigt gelten schulpflichtige Kinder, Auszubildende, Studierende, Rentner\/-innen, Menschen mit Behinderungen, Inhaber Sozialausweis der Landeshauptstadt Erfurt","price":5,"currency":"EUR","rule":"PerPerson"},{"title":"Familienkarte","description":"","price":17,"currency":"EUR","rule":"PerGroup"},{"title":"ErfurtCard","description":"","price":14.9,"currency":"EUR","rule":"PerPackage"},{"title":"Erwachsene","description":"","price":8,"currency":"EUR","rule":"PerPerson"}]}] Highlight diff --git a/Tests/Functional/FrontendTest.php b/Tests/Functional/FrontendTest.php index fe6b084..061e302 100644 --- a/Tests/Functional/FrontendTest.php +++ b/Tests/Functional/FrontendTest.php @@ -82,7 +82,14 @@ class FrontendTest extends FunctionalTestCase self::assertStringContainsString('example@example.com', (string)$result->getBody()); self::assertStringContainsString('(0)30 23125 000', (string)$result->getBody()); - self::assertStringContainsString('Monday: 09:30:00 - 18:00:00', (string)$result->getBody()); + self::assertStringContainsString('Montag: 09:30:00 - 17:00:00', (string)$result->getBody()); + self::assertStringContainsString('Dienstag: 09:30:00 - 17:00:00', (string)$result->getBody()); + self::assertStringContainsString('Mittwoch: 09:30:00 - 17:00:00', (string)$result->getBody()); + self::assertStringContainsString('Donnerstag: 09:30:00 - 17:00:00', (string)$result->getBody()); + self::assertStringContainsString('Freitag: 09:30:00 - 17:00:00', (string)$result->getBody()); + self::assertStringContainsString('Samstag: 09:30:00 - 17:00:00', (string)$result->getBody()); + self::assertStringContainsString('Sonntag: 13:00:00 - 17:00:00', (string)$result->getBody()); + self::assertStringContainsString('Feiertags: 13:00:00 - 17:00:00', (string)$result->getBody()); self::assertStringContainsString('Führungen', (string)$result->getBody()); self::assertStringContainsString('(Führung)', (string)$result->getBody());