mirror of
https://github.com/werkraum-media/events.git
synced 2024-12-03 18:36:09 +01:00
Support import of HTML variant for detail text (#65)
Provide a new option within configurations to turn on import of HTML from destination.one for detail text of each event. Resolves: #10629
This commit is contained in:
parent
39dfc0b42a
commit
2d6c13e199
17 changed files with 648 additions and 9 deletions
|
@ -6,6 +6,7 @@ namespace WerkraumMedia\Events\Domain\Model;
|
|||
|
||||
use TYPO3\CMS\Core\Resource\Folder;
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject;
|
||||
use WerkraumMedia\Events\Domain\Model\Import\Features;
|
||||
|
||||
/**
|
||||
* Actual request to import.
|
||||
|
@ -26,7 +27,8 @@ class Import extends AbstractDomainObject
|
|||
protected ?Category $categoryParent = null,
|
||||
int $featuresPid = 0,
|
||||
protected ?Category $featuresParent = null,
|
||||
protected ?Region $region = null
|
||||
protected ?Region $region = null,
|
||||
protected int $importFeatures = 0,
|
||||
) {
|
||||
// Do not allow categories on pid 0
|
||||
if ($categoriesPid === 0) {
|
||||
|
@ -85,4 +87,9 @@ class Import extends AbstractDomainObject
|
|||
{
|
||||
return $this->restSearchQuery;
|
||||
}
|
||||
|
||||
public function getFeatures(): Features
|
||||
{
|
||||
return new Features($this->importFeatures);
|
||||
}
|
||||
}
|
||||
|
|
36
Classes/Domain/Model/Import/Features.php
Normal file
36
Classes/Domain/Model/Import/Features.php
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2024 Daniel Siepmann <coding@daniel-siepmann.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
namespace WerkraumMedia\Events\Domain\Model\Import;
|
||||
|
||||
use TYPO3\CMS\Core\Type\BitSet;
|
||||
|
||||
final class Features extends BitSet
|
||||
{
|
||||
public const HTML_FOR_DETAIL = 0b1;
|
||||
|
||||
public function hasHtmlForDetailEnabled(): bool
|
||||
{
|
||||
return $this->get(self::HTML_FOR_DETAIL);
|
||||
}
|
||||
}
|
|
@ -356,25 +356,58 @@ final class DestinationDataImportService
|
|||
private function setTexts(array $texts): void
|
||||
{
|
||||
$shouldSetPrice = true;
|
||||
$detailText = '';
|
||||
|
||||
foreach ($texts as $text) {
|
||||
if (isset($text['value']) === false) {
|
||||
if (
|
||||
isset($text['value']) === false
|
||||
|| is_string($text['value']) === false
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($text['rel'] == 'details' && $text['type'] == 'text/plain') {
|
||||
$this->tmpCurrentEvent->setDetails(str_replace("\n\n", "\n", (string)$text['value']));
|
||||
$value = str_replace("\n\n", "\n", $text['value']);
|
||||
|
||||
if (
|
||||
$text['rel'] == 'details'
|
||||
&& $text['type'] == 'text/html'
|
||||
&& $this->import->getFeatures()->hasHtmlForDetailEnabled()
|
||||
&& $value
|
||||
) {
|
||||
$detailText = $value;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (
|
||||
$text['rel'] == 'details'
|
||||
&& $text['type'] == 'text/plain'
|
||||
&& (
|
||||
$this->import->getFeatures()->hasHtmlForDetailEnabled() === false
|
||||
|| $detailText === ''
|
||||
)
|
||||
) {
|
||||
$detailText = $value;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($text['rel'] == 'teaser' && $text['type'] == 'text/plain') {
|
||||
$this->tmpCurrentEvent->setTeaser(str_replace("\n\n", "\n", (string)$text['value']));
|
||||
$this->tmpCurrentEvent->setTeaser($value);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($shouldSetPrice && $text['rel'] == 'PRICE_INFO_EXTRA' && $text['type'] == 'text/plain') {
|
||||
$shouldSetPrice = false;
|
||||
$this->tmpCurrentEvent->setPriceInfo(str_replace("\n\n", "\n", (string)$text['value']));
|
||||
$this->tmpCurrentEvent->setPriceInfo($value);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($shouldSetPrice && $text['rel'] == 'PRICE_INFO' && $text['type'] == 'text/plain') {
|
||||
$this->tmpCurrentEvent->setPriceInfo(str_replace("\n\n", "\n", (string)$text['value']));
|
||||
$this->tmpCurrentEvent->setPriceInfo($value);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$this->tmpCurrentEvent->setDetails($detailText);
|
||||
}
|
||||
|
||||
private function getOrCreateEvent(string $globalId, string $title): Event
|
||||
|
|
|
@ -19,7 +19,20 @@ return [
|
|||
],
|
||||
'types' => [
|
||||
'1' => [
|
||||
'showitem' => 'title, hidden, --div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.typo3, --palette--;;typo3_storage, --palette--;;categories, --palette--;;features,--palette--;;relations, --div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.rest, rest_experience, rest_search_query',
|
||||
'showitem' => implode(',', [
|
||||
'title',
|
||||
'hidden',
|
||||
'--div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.typo3',
|
||||
'--palette--;;typo3_storage',
|
||||
'--palette--;;categories',
|
||||
'--palette--;;features',
|
||||
'-palette--;;relations',
|
||||
'--div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.rest',
|
||||
'rest_experience',
|
||||
'rest_search_query',
|
||||
'--div--;LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.div.import',
|
||||
'import_features',
|
||||
]),
|
||||
],
|
||||
],
|
||||
'palettes' => [
|
||||
|
@ -169,5 +182,20 @@ return [
|
|||
'max' => 255,
|
||||
],
|
||||
],
|
||||
'import_features' => [
|
||||
'exclude' => true,
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.import_features',
|
||||
'description' => 'LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.import_features.description',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
'cols' => 'inline',
|
||||
'default' => '0',
|
||||
'items' => [
|
||||
[
|
||||
'label' => 'LLL:EXT:events/Resources/Private/Language/locallang_csh_import.xlf:tx_events_domain_model_import.import_features.html_for_detail',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
33
Documentation/Changelog/4.2.0.rst
Normal file
33
Documentation/Changelog/4.2.0.rst
Normal file
|
@ -0,0 +1,33 @@
|
|||
4.2.0
|
||||
=====
|
||||
|
||||
Breaking
|
||||
--------
|
||||
|
||||
Nothing
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
* Support HTML for detail text of events when importing data from destination.one.
|
||||
|
||||
This can be enabled within the import configuration. That way one can restrict the
|
||||
HTML import to certain import configurations.
|
||||
|
||||
Ensure to adjust the templates when turning on the feature.
|
||||
Either use `f:format.html` or `f:sanitize.html` as content might be unsafe.
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
Nothing
|
||||
|
||||
Tasks
|
||||
-----
|
||||
|
||||
Nothing
|
||||
|
||||
Deprecation
|
||||
-----------
|
||||
|
||||
Nothing
|
|
@ -12,6 +12,9 @@
|
|||
<trans-unit id="tx_events_domain_model_import.div.rest">
|
||||
<source>REST</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_import.div.import">
|
||||
<source>Import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_import.palette.relations">
|
||||
<source>Relations</source>
|
||||
</trans-unit>
|
||||
|
@ -81,6 +84,15 @@
|
|||
<trans-unit id="tx_events_domain_model_import.rest_search_query.description">
|
||||
<source>See: https://developer.et4.de/reference/current/#eT4META-search-param-q.html (todo check, was not loadable)</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_import.import_features">
|
||||
<source>Import Features</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_import.import_features.description">
|
||||
<source>Enable certain features related to the import.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_events_domain_model_import.import_features.html_for_detail">
|
||||
<source>HTML for Event Details</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'tx_events_domain_model_event' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'global_id' => 'e_100354481',
|
||||
'details' => 'Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder <a data-cke-saved-href="mailto:schillerhaus@rudolstadt.de" href="mailto:schillerhaus@rudolstadt.de">schillerhaus@rudolstadt.de</a> wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong> <br>',
|
||||
],
|
||||
],
|
||||
];
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'tx_events_domain_model_event' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'global_id' => 'e_100354481',
|
||||
'details' => implode("\n", [
|
||||
'Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.',
|
||||
'Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)',
|
||||
'Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.',
|
||||
'Es gilt die 2G-PLUS-Regel.',
|
||||
]),
|
||||
],
|
||||
],
|
||||
];
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'tx_events_domain_model_event' => [
|
||||
0 => [
|
||||
'uid' => '1',
|
||||
'global_id' => 'e_100354481',
|
||||
'details' => implode("\n", [
|
||||
'Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.',
|
||||
'Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)',
|
||||
'Um Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.',
|
||||
'Es gilt die 2G-PLUS-Regel.',
|
||||
]),
|
||||
],
|
||||
],
|
||||
];
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'tx_events_domain_model_import' => [
|
||||
[
|
||||
'uid' => '1',
|
||||
'pid' => '2',
|
||||
'title' => 'Example import configuration',
|
||||
'storage_pid' => '2',
|
||||
'files_folder' => '1:/staedte/beispielstadt/events/',
|
||||
'region' => '1',
|
||||
'rest_experience' => 'beispielstadt',
|
||||
'import_features' => '1',
|
||||
],
|
||||
],
|
||||
];
|
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"status": "OK",
|
||||
"count": 1,
|
||||
"overallcount": 50,
|
||||
"channels": [],
|
||||
"facetGroups": [],
|
||||
"items": [
|
||||
{
|
||||
"global_id": "e_100354481",
|
||||
"id": "100354481",
|
||||
"type": "Event",
|
||||
"country": "Deutschland",
|
||||
"areas": [
|
||||
"Rudolstadt und Umgebung"
|
||||
],
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schulplatz 13",
|
||||
"phone": "0 36 72 - 48 64 20",
|
||||
"fax": "0 36 72 - 48 64 30",
|
||||
"web": "http://www.stadtbibliothek-rudolstadt.de/",
|
||||
"email": "stadtbibliothek@rudolstadt.de",
|
||||
"author": "support@hubermedia.de",
|
||||
"cuisine_types": [],
|
||||
"payment": [],
|
||||
"keywords": [],
|
||||
"timeIntervals": [
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2022-07-13T15:00:00+02:00",
|
||||
"end": "2022-07-13T16:30:00+02:00",
|
||||
"tz": "Europe/Berlin",
|
||||
"interval": 1
|
||||
}
|
||||
],
|
||||
"numbers": [],
|
||||
"name": "Stadtbibliothek Rudolstadt",
|
||||
"attributes": [
|
||||
],
|
||||
"features": [
|
||||
],
|
||||
"addresses": [
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen e.V.",
|
||||
"city": "Weimar",
|
||||
"zip": "99423",
|
||||
"street": "UNESCO-Platz 1",
|
||||
"phone": "+49 (3643) 745 314",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "author"
|
||||
}
|
||||
],
|
||||
"created": "2099-11-10T23:02:00+00:00",
|
||||
"changed": "2099-12-14T08:28:00+00:00",
|
||||
"source": {
|
||||
"url": "http://destination.one/",
|
||||
"value": "destination.one"
|
||||
},
|
||||
"company": "",
|
||||
"district": "",
|
||||
"postoffice": "",
|
||||
"phone2": "",
|
||||
"seasons": [],
|
||||
"subitems": [],
|
||||
"texts": [
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/html",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder <a data-cke-saved-href=\"mailto:schillerhaus@rudolstadt.de\" href=\"mailto:schillerhaus@rudolstadt.de\">schillerhaus@rudolstadt.de</a> wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong> <br>"
|
||||
},
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/plain",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.\nEintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)\nUm Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.\nEs gilt die 2G-PLUS-Regel."
|
||||
}
|
||||
],
|
||||
"title": "Kurzf\u00fchrung - Historische Altstadt",
|
||||
"type": "Event",
|
||||
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
|
||||
"zip": "99084"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"status": "OK",
|
||||
"count": 1,
|
||||
"overallcount": 50,
|
||||
"channels": [],
|
||||
"facetGroups": [],
|
||||
"items": [
|
||||
{
|
||||
"global_id": "e_100354481",
|
||||
"id": "100354481",
|
||||
"type": "Event",
|
||||
"country": "Deutschland",
|
||||
"areas": [
|
||||
"Rudolstadt und Umgebung"
|
||||
],
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schulplatz 13",
|
||||
"phone": "0 36 72 - 48 64 20",
|
||||
"fax": "0 36 72 - 48 64 30",
|
||||
"web": "http://www.stadtbibliothek-rudolstadt.de/",
|
||||
"email": "stadtbibliothek@rudolstadt.de",
|
||||
"author": "support@hubermedia.de",
|
||||
"cuisine_types": [],
|
||||
"payment": [],
|
||||
"keywords": [],
|
||||
"timeIntervals": [
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2022-07-13T15:00:00+02:00",
|
||||
"end": "2022-07-13T16:30:00+02:00",
|
||||
"tz": "Europe/Berlin",
|
||||
"interval": 1
|
||||
}
|
||||
],
|
||||
"numbers": [],
|
||||
"name": "Stadtbibliothek Rudolstadt",
|
||||
"attributes": [
|
||||
],
|
||||
"features": [
|
||||
],
|
||||
"addresses": [
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen e.V.",
|
||||
"city": "Weimar",
|
||||
"zip": "99423",
|
||||
"street": "UNESCO-Platz 1",
|
||||
"phone": "+49 (3643) 745 314",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "author"
|
||||
}
|
||||
],
|
||||
"created": "2099-11-10T23:02:00+00:00",
|
||||
"changed": "2099-12-14T08:28:00+00:00",
|
||||
"source": {
|
||||
"url": "http://destination.one/",
|
||||
"value": "destination.one"
|
||||
},
|
||||
"company": "",
|
||||
"district": "",
|
||||
"postoffice": "",
|
||||
"phone2": "",
|
||||
"seasons": [],
|
||||
"subitems": [],
|
||||
"texts": [
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/html",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.<br>Eintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)<br>Um Voranmeldung unter 03672-486470 oder <a data-cke-saved-href=\"mailto:schillerhaus@rudolstadt.de\" href=\"mailto:schillerhaus@rudolstadt.de\">schillerhaus@rudolstadt.de</a> wird gebeten. <br><strong>Es gilt die 2G-PLUS-Regel.</strong> <br>"
|
||||
},
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/plain",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.\nEintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)\nUm Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.\nEs gilt die 2G-PLUS-Regel."
|
||||
}
|
||||
],
|
||||
"title": "Kurzf\u00fchrung - Historische Altstadt",
|
||||
"type": "Event",
|
||||
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
|
||||
"zip": "99084"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"status": "OK",
|
||||
"count": 1,
|
||||
"overallcount": 50,
|
||||
"channels": [],
|
||||
"facetGroups": [],
|
||||
"items": [
|
||||
{
|
||||
"global_id": "e_100354481",
|
||||
"id": "100354481",
|
||||
"type": "Event",
|
||||
"country": "Deutschland",
|
||||
"areas": [
|
||||
"Rudolstadt und Umgebung"
|
||||
],
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schulplatz 13",
|
||||
"phone": "0 36 72 - 48 64 20",
|
||||
"fax": "0 36 72 - 48 64 30",
|
||||
"web": "http://www.stadtbibliothek-rudolstadt.de/",
|
||||
"email": "stadtbibliothek@rudolstadt.de",
|
||||
"author": "support@hubermedia.de",
|
||||
"cuisine_types": [],
|
||||
"payment": [],
|
||||
"keywords": [],
|
||||
"timeIntervals": [
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2022-07-13T15:00:00+02:00",
|
||||
"end": "2022-07-13T16:30:00+02:00",
|
||||
"tz": "Europe/Berlin",
|
||||
"interval": 1
|
||||
}
|
||||
],
|
||||
"numbers": [],
|
||||
"name": "Stadtbibliothek Rudolstadt",
|
||||
"attributes": [
|
||||
],
|
||||
"features": [
|
||||
],
|
||||
"addresses": [
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen e.V.",
|
||||
"city": "Weimar",
|
||||
"zip": "99423",
|
||||
"street": "UNESCO-Platz 1",
|
||||
"phone": "+49 (3643) 745 314",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "author"
|
||||
}
|
||||
],
|
||||
"created": "2099-11-10T23:02:00+00:00",
|
||||
"changed": "2099-12-14T08:28:00+00:00",
|
||||
"source": {
|
||||
"url": "http://destination.one/",
|
||||
"value": "destination.one"
|
||||
},
|
||||
"company": "",
|
||||
"district": "",
|
||||
"postoffice": "",
|
||||
"phone2": "",
|
||||
"seasons": [],
|
||||
"subitems": [],
|
||||
"texts": [
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/html",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/plain",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.\nEintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)\nUm Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.\nEs gilt die 2G-PLUS-Regel."
|
||||
}
|
||||
],
|
||||
"title": "Kurzf\u00fchrung - Historische Altstadt",
|
||||
"type": "Event",
|
||||
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
|
||||
"zip": "99084"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"status": "OK",
|
||||
"count": 1,
|
||||
"overallcount": 50,
|
||||
"channels": [],
|
||||
"facetGroups": [],
|
||||
"items": [
|
||||
{
|
||||
"global_id": "e_100354481",
|
||||
"id": "100354481",
|
||||
"type": "Event",
|
||||
"country": "Deutschland",
|
||||
"areas": [
|
||||
"Rudolstadt und Umgebung"
|
||||
],
|
||||
"city": "Rudolstadt",
|
||||
"zip": "07407",
|
||||
"street": "Schulplatz 13",
|
||||
"phone": "0 36 72 - 48 64 20",
|
||||
"fax": "0 36 72 - 48 64 30",
|
||||
"web": "http://www.stadtbibliothek-rudolstadt.de/",
|
||||
"email": "stadtbibliothek@rudolstadt.de",
|
||||
"author": "support@hubermedia.de",
|
||||
"cuisine_types": [],
|
||||
"payment": [],
|
||||
"keywords": [],
|
||||
"timeIntervals": [
|
||||
{
|
||||
"weekdays": [],
|
||||
"start": "2022-07-13T15:00:00+02:00",
|
||||
"end": "2022-07-13T16:30:00+02:00",
|
||||
"tz": "Europe/Berlin",
|
||||
"interval": 1
|
||||
}
|
||||
],
|
||||
"numbers": [],
|
||||
"name": "Stadtbibliothek Rudolstadt",
|
||||
"attributes": [
|
||||
],
|
||||
"features": [
|
||||
],
|
||||
"addresses": [
|
||||
{
|
||||
"name": "Städtetourismus in Thüringen e.V.",
|
||||
"city": "Weimar",
|
||||
"zip": "99423",
|
||||
"street": "UNESCO-Platz 1",
|
||||
"phone": "+49 (3643) 745 314",
|
||||
"web": "http://www.thueringer-staedte.de",
|
||||
"email": "verein@thueringer-staedte.de",
|
||||
"rel": "author"
|
||||
}
|
||||
],
|
||||
"created": "2099-11-10T23:02:00+00:00",
|
||||
"changed": "2099-12-14T08:28:00+00:00",
|
||||
"source": {
|
||||
"url": "http://destination.one/",
|
||||
"value": "destination.one"
|
||||
},
|
||||
"company": "",
|
||||
"district": "",
|
||||
"postoffice": "",
|
||||
"phone2": "",
|
||||
"seasons": [],
|
||||
"subitems": [],
|
||||
"texts": [
|
||||
{
|
||||
"rel": "details",
|
||||
"type": "text/plain",
|
||||
"value": "Die Lichter sind entzündet, die Plätzchen duften, man rückt endlich wieder näher zusammen und lauscht den Geschichten. Vier Schauspieler*innen unseres Theaters überraschen mit ihren weihnachtlichen Texten, die sie für uns ausgewählt haben. Dazu plaudern sie über persönliche Anekdoten und erinnern sich an ihre schönsten und verrücktesten Weihnachtsfeste. Und da der Genuss in der Vorweihnachtszeit nicht fehlen darf, wird an jedem Adventssonntag eine andere weihnachtliche Spezialität serviert.\nEintritt: 10 € (inkl. Gedeck mit weihnachtlicher Schillerlocke)\nUm Voranmeldung unter 03672-486470 oder schillerhaus@rudolstadt.de wird gebeten.\nEs gilt die 2G-PLUS-Regel."
|
||||
}
|
||||
],
|
||||
"title": "Kurzf\u00fchrung - Historische Altstadt",
|
||||
"type": "Event",
|
||||
"web": "http://www.erfurt-tourismus.de/stadtfuehrung/individuell/kurzfuehrung-historische-altstadt/",
|
||||
"zip": "99084"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace WerkraumMedia\Events\Tests\Functional\Import\DestinationDataTest;
|
||||
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
use PHPUnit\Framework\Attributes\Test;
|
||||
use PHPUnit\Framework\Attributes\TestDox;
|
||||
|
||||
#[TestDox('DestinationData import')]
|
||||
class ImportsTextsTest extends AbstractTestCase
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->setUpConfiguration([
|
||||
'restUrl = https://example.com/some-path/',
|
||||
'license = example-license',
|
||||
'restType = Event',
|
||||
'restLimit = 3',
|
||||
'restMode = next_months,12',
|
||||
'restTemplate = ET2014A.json',
|
||||
]);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->assertEmptyLog();
|
||||
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function importsPlainTextIfConfigured(): void
|
||||
{
|
||||
$this->importPHPDataSet(__DIR__ . '/Fixtures/Database/DefaultImportConfiguration.php');
|
||||
|
||||
$requests = &$this->setUpResponses([
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithPlainTextTexts.json') ?: ''),
|
||||
]);
|
||||
|
||||
$tester = $this->executeCommand();
|
||||
|
||||
self::assertSame(0, $tester->getStatusCode());
|
||||
$this->assertPHPDataSet(__DIR__ . '/Assertions/ImportsPlainTextIfConfigured.php');
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function importsHtmlTextIfConfiguredAndAvailable(): void
|
||||
{
|
||||
$this->importPHPDataSet(__DIR__ . '/Fixtures/Database/ImportConfigurationWithHtml.php');
|
||||
$requests = &$this->setUpResponses([
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithHtmlTextTexts.json') ?: ''),
|
||||
]);
|
||||
|
||||
$tester = $this->executeCommand();
|
||||
|
||||
self::assertSame(0, $tester->getStatusCode());
|
||||
$this->assertPHPDataSet(__DIR__ . '/Assertions/ImportsHtmlTextIfConfigured.php');
|
||||
}
|
||||
|
||||
#[Test]
|
||||
#[DataProvider('responseWithoutHtml')]
|
||||
public function importsPlainTextIfHtmlIsConfiguredButUnavailable(
|
||||
string $responseName
|
||||
): void {
|
||||
$this->importPHPDataSet(__DIR__ . '/Fixtures/Database/ImportConfigurationWithHtml.php');
|
||||
$requests = &$this->setUpResponses([
|
||||
new Response(200, [], file_get_contents(__DIR__ . '/Fixtures/ResponseWithoutHtmlTextTextsDueTo' . $responseName . '.json') ?: ''),
|
||||
]);
|
||||
|
||||
$tester = $this->executeCommand();
|
||||
|
||||
self::assertSame(0, $tester->getStatusCode());
|
||||
$this->assertPHPDataSet(__DIR__ . '/Assertions/ImportsPlainTextIfHtmlIsConfiguredButUnavailable.php');
|
||||
}
|
||||
|
||||
public static function responseWithoutHtml(): iterable
|
||||
{
|
||||
yield 'Missing type text/html' => [
|
||||
'responseName' => 'MissingType',
|
||||
];
|
||||
yield 'Empty type text/html' => [
|
||||
'responseName' => 'EmptyType',
|
||||
];
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@ $EM_CONF['events'] = [
|
|||
'author' => 'Dirk Koritnik, Daniel Siepmann',
|
||||
'author_email' => 'koritnik@werkraum-media.de, coding@daniel-siepmann.de',
|
||||
'state' => 'stable',
|
||||
'version' => '4.1.0',
|
||||
'version' => '4.2.0',
|
||||
'constraints' => [
|
||||
'depends' => [
|
||||
'typo3' => '',
|
||||
|
|
|
@ -85,6 +85,8 @@ CREATE TABLE tx_events_domain_model_import (
|
|||
|
||||
rest_experience varchar(1024) DEFAULT '' NOT NULL,
|
||||
rest_search_query varchar(1024) DEFAULT '' NOT NULL,
|
||||
|
||||
import_features tinyint(4) DEFAULT '0' NOT NULL,
|
||||
);
|
||||
|
||||
CREATE TABLE tx_events_domain_model_location (
|
||||
|
|
Loading…
Reference in a new issue