From cf9cb3b7195f016129245debb9f3f067fc778e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bjo=CC=88rn=20Fromme?= Date: Wed, 1 Aug 2018 10:34:33 +0200 Subject: [PATCH] Add dedicated field for reseller images to hotels --- .../Classes/Domain/Model/Hotel.php | 22 +++ .../Classes/Domain/Serialization/Hotel.php | 6 + .../TCA/tx_epproducts_domain_model_hotel.php | 36 +++- web/typo3conf/ext/ep_products/ext_tables.sql | 1 + .../Private/Templates/Reseller/Copypaste.html | 161 ++++++++++-------- 5 files changed, 147 insertions(+), 79 deletions(-) diff --git a/web/typo3conf/ext/ep_products/Classes/Domain/Model/Hotel.php b/web/typo3conf/ext/ep_products/Classes/Domain/Model/Hotel.php index 4b87ceb6..c3c4261c 100644 --- a/web/typo3conf/ext/ep_products/Classes/Domain/Model/Hotel.php +++ b/web/typo3conf/ext/ep_products/Classes/Domain/Model/Hotel.php @@ -153,6 +153,11 @@ class Hotel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements Te */ protected $images; + /** + * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> + */ + protected $resellerImages; + /** * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> */ @@ -224,6 +229,7 @@ class Hotel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements Te protected function initStorageObjects() { $this->images = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); + $this->resellerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->teaserImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->headerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->teamer = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); @@ -510,6 +516,22 @@ class Hotel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements Te $this->images = $images; } + /** + * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $resellerImages + */ + public function getResellerImages() + { + return $this->resellerImages; + } + + /** + * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $resellerImages + */ + public function setResellerImages($resellerImages) + { + $this->resellerImages = $resellerImages; + } + /** * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage */ diff --git a/web/typo3conf/ext/ep_products/Classes/Domain/Serialization/Hotel.php b/web/typo3conf/ext/ep_products/Classes/Domain/Serialization/Hotel.php index 7d935425..037e2305 100644 --- a/web/typo3conf/ext/ep_products/Classes/Domain/Serialization/Hotel.php +++ b/web/typo3conf/ext/ep_products/Classes/Domain/Serialization/Hotel.php @@ -56,6 +56,11 @@ class Hotel */ public $features; + /** + * @var array + */ + public $images = []; + /** * @var array */ @@ -74,6 +79,7 @@ class Hotel $hotel->type = \EP\EpProducts\Domain\Model\Hotel::$typeLabels[$entity->getType()]; $hotel->description = SerializationUtility::sanitizeText($entity->getDescription()); $hotel->features = SerializationUtility::sanitizeText($entity->getFeatures()); + $hotel->images['image'] = SerializationUtility::preprocessImages($entity->getResellerImages()); return $hotel; } diff --git a/web/typo3conf/ext/ep_products/Configuration/TCA/tx_epproducts_domain_model_hotel.php b/web/typo3conf/ext/ep_products/Configuration/TCA/tx_epproducts_domain_model_hotel.php index 55e951a8..90ad7779 100644 --- a/web/typo3conf/ext/ep_products/Configuration/TCA/tx_epproducts_domain_model_hotel.php +++ b/web/typo3conf/ext/ep_products/Configuration/TCA/tx_epproducts_domain_model_hotel.php @@ -22,14 +22,14 @@ return [ 'endtime' => 'endtime', ], 'searchFields' => 'name,headline,teaser,description,features,room_types,additional_information,teaser_images, - header_images,images,code,type,category,country,region,city,teamer,products,', + header_images,images,reseller_images,code,type,category,country,region,city,teamer,products,', 'iconfile' => 'EXT:ep_products/Resources/Public/Icons/tx_epproducts_domain_model_hotel.gif' ], 'interface' => [ 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, detail_page, keywords, address, longitude, latitude, headline, teaser, description, features, room_types, additional_information, - teaser_images, header_images, images, code, type, category, country, region, city, facts, teamer, products, - header_title,header_subtitle, earlybird, low_contingent, show_as_teaser', + teaser_images, header_images, images, reseller_images, code, type, category, country, region, city, facts, + teamer, products, header_title,header_subtitle, earlybird, low_contingent, show_as_teaser', ], 'types' => [ '1' => [ @@ -37,7 +37,7 @@ return [ --palette--;;destinations, --palette--;;categories, keywords, --div--;Texte, teaser, description, features, room_types, additional_information, --div--;Verknüpfungen, facts, teamer, additional_codes, - --div--;Bilder/Dateien, teaser_images, header_images, images', + --div--;Bilder/Dateien, teaser_images, header_images, images, reseller_images', 'columnsOverrides' => [ 'teaser' => [ 'defaultExtras' => 'richtext[]:rte_transform[mode=ts_links]', @@ -344,7 +344,7 @@ return [ ], 'images' => [ 'exclude' => 0, - 'label' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_hotel.images', + 'label' => 'Bilder', 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'images', [ @@ -368,6 +368,32 @@ return [ $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ), ], + 'reseller_images' => [ + 'exclude' => 0, + 'label' => 'Bilder für Vertriebspartner', + 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( + 'reseller_images', + [ + 'appearance' => [ + 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' + ], + 'foreign_types' => [ + '0' => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + ], + 'maxitems' => 10 + ], + $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] + ), + ], 'code' => [ 'exclude' => 0, 'label' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_hotel.code', diff --git a/web/typo3conf/ext/ep_products/ext_tables.sql b/web/typo3conf/ext/ep_products/ext_tables.sql index a362b959..c220c1a8 100644 --- a/web/typo3conf/ext/ep_products/ext_tables.sql +++ b/web/typo3conf/ext/ep_products/ext_tables.sql @@ -202,6 +202,7 @@ CREATE TABLE tx_epproducts_domain_model_hotel ( teaser_images int(11) unsigned NOT NULL default '0', header_images int(11) unsigned NOT NULL default '0', images int(11) unsigned NOT NULL default '0', + reseller_images int(11) unsigned NOT NULL default '0', code varchar(255) DEFAULT '' NOT NULL, groupsch_id varchar(8) DEFAULT '' NOT NULL, type varchar(255) DEFAULT '' NOT NULL, diff --git a/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Reseller/Copypaste.html b/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Reseller/Copypaste.html index 07e2ffea..19dd111f 100644 --- a/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Reseller/Copypaste.html +++ b/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Reseller/Copypaste.html @@ -23,9 +23,9 @@ - + - +
@@ -99,80 +99,93 @@

Termine, Zimmer und Leistungen

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + +
von{date.from}
bis{date.to}
Nächte{date.nights}
Abpreis{date.minprice} €
Bus inkl.{f:if(condition: date.busincluded, then: 'ja', else: 'nein')}
Skipass inkl.{f:if(condition: date.skipassincluded, then: 'ja', else: 'nein')}
Zimmer - - - - - - - - - - + + + +
BezeichnungPreisverfügbar
+ + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - -
von{date.from}
bis{date.to}
Nächte{date.nights}
Abpreis{date.minprice} €
Bus inkl.{f:if(condition: date.busincluded, then: 'ja', else: 'nein')}
Skipass inkl.{f:if(condition: date.skipassincluded, then: 'ja', else: 'nein')}
Zimmer + + - - - + + + - - -
{room.name}{room.price} €{room.available}BezeichnungPreisverfügbar
-
Inklusivleistungen - {date.servicesincluded.service -> v:iterator.implode(glue: '
')} -
Zusatzleistungen - - - - - - - -
{service.label}{service.price} €
-
BuchungslinkURL
- + +
{room.name}{room.price} €{room.available}
+ + + + Inklusivleistungen + + {date.servicesincluded.service -> v:iterator.implode(glue: '
')} + + + + Zusatzleistungen + + + + + + + + +
{service.label}{service.price} €
+ + + + Buchungslink + URL + + +
+ + +

Aktuell nicht buchbar.

+
+ + +

Bilder

+ + {image}
+
+