diff --git a/Classes/Domain/Import/Entity/TouristAttraction.php b/Classes/Domain/Import/Entity/TouristAttraction.php
index dfd174e..cb4e729 100644
--- a/Classes/Domain/Import/Entity/TouristAttraction.php
+++ b/Classes/Domain/Import/Entity/TouristAttraction.php
@@ -95,6 +95,11 @@ class TouristAttraction extends Place implements MapsToType
*/
protected $availableLanguages = [];
+ /**
+ * @var string
+ */
+ protected $distanceToPublicTransport = '';
+
public function getSlogan(): string
{
return $this->slogan;
@@ -192,6 +197,11 @@ class TouristAttraction extends Place implements MapsToType
return $this->availableLanguages;
}
+ public function getDistanceToPublicTransport(): string
+ {
+ return $this->distanceToPublicTransport;
+ }
+
/**
* @internal for mapping via Symfony component.
*/
@@ -367,6 +377,18 @@ class TouristAttraction extends Place implements MapsToType
}, $availableLanguage);
}
+ /**
+ * @internal for mapping via Symfony component.
+ */
+ public function setDistanceToPublicTransport(array $distanceToPublicTransport): void
+ {
+ $unit = $distanceToPublicTransport['unitCode'] ?? '';
+ $value = $distanceToPublicTransport['value'] ?? '';
+ if ($unit && $value) {
+ $this->distanceToPublicTransport = $value . ':' . str_replace('thuecat:', '', $unit);
+ }
+ }
+
public static function getSupportedTypes(): array
{
return [
diff --git a/Classes/Domain/Import/Typo3Converter/TouristAttraction.php b/Classes/Domain/Import/Typo3Converter/TouristAttraction.php
index 8a81181..2b484b0 100644
--- a/Classes/Domain/Import/Typo3Converter/TouristAttraction.php
+++ b/Classes/Domain/Import/Typo3Converter/TouristAttraction.php
@@ -127,6 +127,7 @@ class TouristAttraction implements Converter
'is_accessible_for_free' => $entity->getIsAccessibleForFree(),
'public_access' => $entity->getPublicAccess(),
'available_languages' => implode(',', $entity->getAvailableLanguages()),
+ 'distance_to_public_transport' => $entity->getDistanceToPublicTransport(),
]
);
}
diff --git a/Classes/Domain/Model/Frontend/TouristAttraction.php b/Classes/Domain/Model/Frontend/TouristAttraction.php
index 6b960b1..510c8b8 100644
--- a/Classes/Domain/Model/Frontend/TouristAttraction.php
+++ b/Classes/Domain/Model/Frontend/TouristAttraction.php
@@ -128,6 +128,11 @@ class TouristAttraction extends AbstractEntity
*/
protected $publicAccess = '';
+ /**
+ * @var string
+ */
+ protected $distanceToPublicTransport = '';
+
public function getTitle(): string
{
return $this->title;
@@ -227,4 +232,16 @@ class TouristAttraction extends AbstractEntity
{
return $this->publicAccess;
}
+
+ public function getDistanceToPublicTransport(): array
+ {
+ $values = GeneralUtility::trimExplode(':', $this->distanceToPublicTransport, true, 2);
+ if ($values === []) {
+ return [];
+ }
+ return [
+ 'value' => $values[0] ?? '',
+ 'unit' => $values[1] ?? '',
+ ];
+ }
}
diff --git a/Configuration/TCA/tx_thuecat_tourist_attraction.php b/Configuration/TCA/tx_thuecat_tourist_attraction.php
index 906671b..53c9c21 100644
--- a/Configuration/TCA/tx_thuecat_tourist_attraction.php
+++ b/Configuration/TCA/tx_thuecat_tourist_attraction.php
@@ -189,6 +189,14 @@ return (static function (string $extensionKey, string $tableName) {
'readOnly' => true,
],
],
+ 'distance_to_public_transport' => [
+ 'label' => $languagePath . '.distance_to_public_transport',
+ 'l10n_mode' => 'prefixLangTitle',
+ 'config' => [
+ 'type' => 'input',
+ 'readOnly' => true,
+ ],
+ ],
'opening_hours' => [
'label' => $languagePath . '.opening_hours',
'l10n_mode' => 'exclude',
@@ -272,7 +280,7 @@ return (static function (string $extensionKey, string $tableName) {
],
'types' => [
'0' => [
- 'showitem' => '--palette--;;language, title, description, slogan, start_of_construction, sanitation, other_service, museum_service, architectural_style, traffic_infrastructure, payment_accepted, digital_offer, photography, pets_allowed, is_accessible_for_free, public_access, available_languages, 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, museum_service, architectural_style, traffic_infrastructure, payment_accepted, digital_offer, photography, pets_allowed, is_accessible_for_free, public_access, available_languages, distance_to_public_transport, 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 eede20c..8bc4bec 100644
--- a/Resources/Private/Language/de.locallang.xlf
+++ b/Resources/Private/Language/de.locallang.xlf
@@ -365,6 +365,16 @@
French
Französisch
+
+
+ Distance to Public Transport
+ Entfernung zum ÖPNV:
+
+
+
+ Meters
+ Meter
+