diff --git a/Classes/Domain/Import/Entity/TouristAttraction.php b/Classes/Domain/Import/Entity/TouristAttraction.php
index 7e48082..6d39bab 100644
--- a/Classes/Domain/Import/Entity/TouristAttraction.php
+++ b/Classes/Domain/Import/Entity/TouristAttraction.php
@@ -40,6 +40,11 @@ class TouristAttraction extends Place implements MapsToType
*/
protected $sanitations = [];
+ /**
+ * @var string[]
+ */
+ protected $otherServices = [];
+
public function getSlogan(): string
{
return $this->slogan;
@@ -58,6 +63,14 @@ class TouristAttraction extends Place implements MapsToType
return $this->sanitations;
}
+ /**
+ * @return string[]
+ */
+ public function getOtherServices(): array
+ {
+ return $this->otherServices;
+ }
+
/**
* @internal for mapping via Symfony component.
*/
@@ -89,6 +102,21 @@ class TouristAttraction extends Place implements MapsToType
}, $sanitation);
}
+ /**
+ * @internal for mapping via Symfony component.
+ * @param string|array $otherService
+ */
+ public function setOtherService($otherService): void
+ {
+ if (is_string($otherService)) {
+ $otherService = [$otherService];
+ }
+
+ $this->otherServices = array_map(function (string $otherService) {
+ return str_replace('thuecat:', '', $otherService);
+ }, $otherService);
+ }
+
public static function getSupportedTypes(): array
{
return [
diff --git a/Classes/Domain/Import/Typo3Converter/TouristAttraction.php b/Classes/Domain/Import/Typo3Converter/TouristAttraction.php
index c0cbed3..1e37570 100644
--- a/Classes/Domain/Import/Typo3Converter/TouristAttraction.php
+++ b/Classes/Domain/Import/Typo3Converter/TouristAttraction.php
@@ -116,6 +116,7 @@ class TouristAttraction implements Converter
'opening_hours' => $this->getOpeningHours($entity),
'address' => $this->getAddress($entity),
'offers' => $this->getOffers($entity),
+ 'other_service' => implode(',', $entity->getOtherServices()),
]
);
}
diff --git a/Classes/Domain/Model/Frontend/TouristAttraction.php b/Classes/Domain/Model/Frontend/TouristAttraction.php
index f18049c..9e28dbb 100644
--- a/Classes/Domain/Model/Frontend/TouristAttraction.php
+++ b/Classes/Domain/Model/Frontend/TouristAttraction.php
@@ -78,6 +78,11 @@ class TouristAttraction extends AbstractEntity
*/
protected $sanitation = '';
+ /**
+ * @var string
+ */
+ protected $otherService = '';
+
public function getTitle(): string
{
return $this->title;
@@ -127,4 +132,9 @@ class TouristAttraction extends AbstractEntity
{
return GeneralUtility::trimExplode(',', $this->sanitation, true);
}
+
+ public function getOtherServices(): array
+ {
+ return GeneralUtility::trimExplode(',', $this->otherService, true);
+ }
}
diff --git a/Configuration/TCA/tx_thuecat_tourist_attraction.php b/Configuration/TCA/tx_thuecat_tourist_attraction.php
index 8ec83ce..1439ed9 100644
--- a/Configuration/TCA/tx_thuecat_tourist_attraction.php
+++ b/Configuration/TCA/tx_thuecat_tourist_attraction.php
@@ -101,6 +101,14 @@ return (static function (string $extensionKey, string $tableName) {
'readOnly' => true,
],
],
+ 'other_service' => [
+ 'label' => $languagePath . '.other_service',
+ 'l10n_mode' => 'prefixLangTitle',
+ 'config' => [
+ 'type' => 'input',
+ 'readOnly' => true,
+ ],
+ ],
'opening_hours' => [
'label' => $languagePath . '.opening_hours',
'l10n_mode' => 'exclude',
@@ -184,7 +192,7 @@ return (static function (string $extensionKey, string $tableName) {
],
'types' => [
'0' => [
- 'showitem' => '--palette--;;language, title, description, slogan, start_of_construction, sanitation, opening_hours, offers, address, media, remote_id, --div--;' . $languagePath . '.tab.relations, town, managed_by',
+ 'showitem' => '--palette--;;language, title, description, slogan, start_of_construction, sanitation, other_service, opening_hours, offers, address, media, remote_id, --div--;' . $languagePath . '.tab.relations, town, managed_by',
],
],
];
diff --git a/Resources/Private/Language/de.locallang.xlf b/Resources/Private/Language/de.locallang.xlf
index 80b9333..cdeaf65 100644
--- a/Resources/Private/Language/de.locallang.xlf
+++ b/Resources/Private/Language/de.locallang.xlf
@@ -35,6 +35,50 @@
keine sanitäre Einrichtung
+
+
+ Gepäckaufbewahrung
+
+
+
+ Lademöglichkeit für mobile Geräte
+
+
+
+ Kinderbetreuung
+
+
+
+ kostenfreies WLAN
+
+
+
+ Schließfächer
+
+
+
+ Spielecke / Spielbereich
+
+
+
+ Spielplatz
+
+
+
+ Ruhezone mit Sitzmöglichkeit oder separate Sitzmöglichkeit
+
+
+
+ Souvenirshop
+
+
+
+ Garderobe
+
+
+
+ kein sonstiger Service
+