Implement plugin for booking link page rendering

This commit is contained in:
Björn Fromme
2019-09-13 17:58:55 +02:00
parent 07e712b46e
commit bcda84924e
8 changed files with 217 additions and 145 deletions
+18
View File
@@ -120,6 +120,24 @@ routeEnhancers:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_hotel
routeFieldName: uid
BookingLinkPlugin:
type: Extbase
extension: EpProducts
plugin: booking_link
limitToPages:
- 1787
routes:
-
routePath: '/{product}'
_controller: 'Product::detail'
_arguments:
product: product
defaultController: 'Product::detail'
aspects:
product:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_product
routeFieldName: path_segment
SearchResultPlugin:
type: Extbase
extension: EpProducts
@@ -29,6 +29,12 @@ call_user_func(function () {
'Produktdetails'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts',
'booking_link',
'Buchungslink'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts',
'product_teasergroup',
@@ -28,7 +28,7 @@ return [
concept_description, board_description, additional_services, programme_description, ski_pass_description,
rating_average, rating_votes_count, teaser_images, header_images, images, concept, country, region, city,
journey, facts, officetip, hotels, calendar_hotel, faqs,header_title,header_subtitle, alt_product, alt_label,
video, banner, additional_regions, badge, daytrip, testimonials, external_link',
video, banner, additional_regions, badge, daytrip, testimonials, external_link, path_segment',
],
'types' => [
'1' => [
@@ -45,7 +45,7 @@ return [
'palettes' => [
'destinations' => ['showitem' => 'country,region,city'],
'top' => ['showitem' => 'searchable, bookable, daytrip, important, skipass_included, detail_page,
external_link'],
external_link, path_segment'],
'name' => ['showitem' => 'name,code'],
'alternative' => ['showitem' => 'alt_product, alt_label'],
'header' => ['showitem' => 'headline,subline,--linebreak--,header_title,header_subtitle'],
@@ -806,6 +806,22 @@ return [
'type' => 'input',
'eval' => 'trim',
]
]
],
'path_segment' => [
'exclude' => 0,
'label' => 'Buchungslink URL',
'config' => [
'type' => 'slug',
'generatorOptions' => [
'fields' => ['name'],
'prefixParentPageSlug' => false,
'replacements' => [
'/' => '-',
],
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInSite',
],
],
],
];
@@ -80,6 +80,17 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\EP\EpProducts\T
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.' . $_EXTKEY,
'booking_link',
[
'Product' => 'detail,hotelList',
],
[
'Product' => '',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.' . $_EXTKEY,
'product_teasergroup',
@@ -22,6 +22,7 @@ CREATE TABLE tx_epproducts_domain_model_product
bus_pro_id int(11) unsigned NOT NULL default '0',
detail_page varchar(255) DEFAULT '' NOT NULL,
external_link varchar(255) DEFAULT '' NOT NULL,
path_segment varchar(255) DEFAULT '' NOT NULL,
description text NOT NULL,
teaser text NOT NULL,
teaser_long text NOT NULL,
@@ -63,13 +63,17 @@ class ContextProcessor implements DataProcessorInterface
if ($regionUid > 0) {
$processedData['context']['region'] = $this->getContextRecord($regionUid, 'tx_epproducts_domain_model_region');
}
$resellerData = $this->getResellerData();
if ($resellerData) {
$processedData['context']['paCode'] = $resellerData['paCode'];
} elseif ($paCode = $this->getPaCodeFromRequest()) {
$processedData['context']['paCode'] = $paCode;
} elseif ($cookieData = CookieUtility::getPaCookie()) {
$processedData['context']['paCode'] = $cookieData;
if ($data['tx_eptheme_context_pacode']) {
$processedData['context']['paCode'] = $data['tx_eptheme_context_pacode'];
} else {
$resellerData = $this->getResellerData();
if ($resellerData) {
$processedData['context']['paCode'] = $resellerData['paCode'];
} elseif ($paCode = $this->getPaCodeFromRequest()) {
$processedData['context']['paCode'] = $paCode;
} elseif ($cookieData = CookieUtility::getPaCookie()) {
$processedData['context']['paCode'] = $cookieData;
}
}
return $processedData;
@@ -5,6 +5,15 @@ defined('TYPO3_MODE') or die();
call_user_func(function() {
$temporaryColumns = [
'tx_eptheme_context_pacode' => [
'exclude' => 0,
'label' => 'PA Code für diese Seite',
'config' => [
'type' => 'input',
'size' => 8,
'eval' => 'trim',
],
],
'tx_eptheme_context_country_code' => [
'config' => [
'type' => 'passthrough'
@@ -101,7 +110,7 @@ call_user_func(function() {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'pages',
'--div--;Kontext,
tx_eptheme_context_country,tx_eptheme_context_region,
tx_eptheme_context_pacode,tx_eptheme_context_country,tx_eptheme_context_region,
tx_eptheme_hide_searchbar,tx_eptheme_bodyclass,
--div--;Slider,
tx_eptheme_slides,
+141 -134
View File
@@ -2,169 +2,176 @@
#
# Table structure for table 'tx_eptheme_domain_model_slider'
#
CREATE TABLE tx_eptheme_domain_model_slide (
CREATE TABLE tx_eptheme_domain_model_slide
(
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
headline varchar(255) DEFAULT '' NOT NULL,
subline varchar(255) DEFAULT '' NOT NULL,
button varchar(255) DEFAULT '' NOT NULL,
page_uid varchar(255) DEFAULT '' NOT NULL,
image int(11) unsigned NOT NULL default '0',
page int(11) unsigned DEFAULT '0',
sorting int(11) unsigned DEFAULT '0' NOT NULL,
headline varchar(255) DEFAULT '' NOT NULL,
subline varchar(255) DEFAULT '' NOT NULL,
button varchar(255) DEFAULT '' NOT NULL,
page_uid varchar(255) DEFAULT '' NOT NULL,
image int(11) unsigned NOT NULL default '0',
page int(11) unsigned DEFAULT '0',
sorting int(11) unsigned DEFAULT '0' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL,
cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
starttime int(11) unsigned DEFAULT '0' NOT NULL,
endtime int(11) unsigned DEFAULT '0' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL,
cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
starttime int(11) unsigned DEFAULT '0' NOT NULL,
endtime int(11) unsigned DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(255) DEFAULT '' NOT NULL,
t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
t3ver_stage int(11) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(255) DEFAULT '' NOT NULL,
t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
t3ver_stage int(11) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob,
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob,
PRIMARY KEY (uid),
KEY parent (pid),
KEY t3ver_oid (t3ver_oid,t3ver_wsid),
KEY language (l10n_parent,sys_language_uid)
PRIMARY KEY (uid),
KEY parent (pid),
KEY t3ver_oid (t3ver_oid, t3ver_wsid),
KEY language (l10n_parent, sys_language_uid)
);
#
# Table structure for table 'tx_eptheme_domain_model_lineup'
#
CREATE TABLE tx_eptheme_domain_model_lineup (
CREATE TABLE tx_eptheme_domain_model_lineup
(
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
name varchar(255) DEFAULT '' NOT NULL,
description text NOT NULL,
image int(11) unsigned NOT NULL default '0',
facebook_url varchar(255) DEFAULT '' NOT NULL,
twitter_url varchar(255) DEFAULT '' NOT NULL,
instagram_url varchar(255) DEFAULT '' NOT NULL,
youtube_url varchar(255) DEFAULT '' NOT NULL,
sorting int(11) unsigned DEFAULT '0' NOT NULL,
tt_content int(11) unsigned DEFAULT '0' NOT NULL,
name varchar(255) DEFAULT '' NOT NULL,
description text NOT NULL,
image int(11) unsigned NOT NULL default '0',
facebook_url varchar(255) DEFAULT '' NOT NULL,
twitter_url varchar(255) DEFAULT '' NOT NULL,
instagram_url varchar(255) DEFAULT '' NOT NULL,
youtube_url varchar(255) DEFAULT '' NOT NULL,
sorting int(11) unsigned DEFAULT '0' NOT NULL,
tt_content int(11) unsigned DEFAULT '0' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL,
cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
starttime int(11) unsigned DEFAULT '0' NOT NULL,
endtime int(11) unsigned DEFAULT '0' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL,
cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
starttime int(11) unsigned DEFAULT '0' NOT NULL,
endtime int(11) unsigned DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(255) DEFAULT '' NOT NULL,
t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
t3ver_stage int(11) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(255) DEFAULT '' NOT NULL,
t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
t3ver_stage int(11) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob,
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob,
PRIMARY KEY (uid),
KEY parent (pid),
KEY t3ver_oid (t3ver_oid,t3ver_wsid),
KEY language (l10n_parent,sys_language_uid)
PRIMARY KEY (uid),
KEY parent (pid),
KEY t3ver_oid (t3ver_oid, t3ver_wsid),
KEY language (l10n_parent, sys_language_uid)
);
CREATE TABLE pages (
tx_eptheme_context_country_code char(2) DEFAULT '',
tx_eptheme_context_country int(11) unsigned DEFAULT '0',
tx_eptheme_context_region int(11) unsigned DEFAULT '0',
tx_eptheme_context_concept int(11) unsigned DEFAULT '0',
tx_eptheme_context_product int(11) unsigned DEFAULT '0',
tx_eptheme_hide_searchbar tinyint(4) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_bodyclass varchar(255) DEFAULT '' NOT NULL,
tx_eptheme_slides int(11) unsigned DEFAULT '0',
tx_eptheme_badge int(11) unsigned DEFAULT '0'
CREATE TABLE pages
(
tx_eptheme_context_pacode char(8) DEFAULT '',
tx_eptheme_context_country_code char(2) DEFAULT '',
tx_eptheme_context_country int(11) unsigned DEFAULT '0',
tx_eptheme_context_region int(11) unsigned DEFAULT '0',
tx_eptheme_context_concept int(11) unsigned DEFAULT '0',
tx_eptheme_context_product int(11) unsigned DEFAULT '0',
tx_eptheme_hide_searchbar tinyint(4) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_bodyclass varchar(255) DEFAULT '' NOT NULL,
tx_eptheme_slides int(11) unsigned DEFAULT '0',
tx_eptheme_badge int(11) unsigned DEFAULT '0'
);
CREATE TABLE pages_language_overlay (
tx_eptheme_context_country_code char(2) DEFAULT '',
tx_eptheme_context_country int(11) unsigned DEFAULT '0',
tx_eptheme_context_region int(11) unsigned DEFAULT '0',
tx_eptheme_context_concept int(11) unsigned DEFAULT '0',
tx_eptheme_context_product int(11) unsigned DEFAULT '0',
tx_eptheme_hide_searchbar tinyint(4) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_bodyclass varchar(255) DEFAULT '' NOT NULL,
tx_eptheme_slides int(11) unsigned DEFAULT '0',
tx_eptheme_badge int(11) unsigned DEFAULT '0'
CREATE TABLE pages_language_overlay
(
tx_eptheme_context_country_code char(2) DEFAULT '',
tx_eptheme_context_country int(11) unsigned DEFAULT '0',
tx_eptheme_context_region int(11) unsigned DEFAULT '0',
tx_eptheme_context_concept int(11) unsigned DEFAULT '0',
tx_eptheme_context_product int(11) unsigned DEFAULT '0',
tx_eptheme_hide_searchbar tinyint(4) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_bodyclass varchar(255) DEFAULT '' NOT NULL,
tx_eptheme_slides int(11) unsigned DEFAULT '0',
tx_eptheme_badge int(11) unsigned DEFAULT '0'
);
CREATE TABLE tt_content (
tx_eptheme_context_country int(11) unsigned DEFAULT '0',
tx_eptheme_context_region int(11) unsigned DEFAULT '0',
tx_eptheme_context_city int(11) unsigned DEFAULT '0',
tx_eptheme_context_hotel int(11) unsigned DEFAULT '0',
tx_eptheme_context_concept int(11) unsigned DEFAULT '0',
tx_eptheme_context_product int(11) unsigned DEFAULT '0',
tx_eptheme_context_date_from int(11) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_context_date_to int(11) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_lineup int(11) unsigned DEFAULT '0',
tx_eptheme_contact int(11) unsigned DEFAULT '0',
button varchar(255) DEFAULT '' NOT NULL
CREATE TABLE tt_content
(
tx_eptheme_context_country int(11) unsigned DEFAULT '0',
tx_eptheme_context_region int(11) unsigned DEFAULT '0',
tx_eptheme_context_city int(11) unsigned DEFAULT '0',
tx_eptheme_context_hotel int(11) unsigned DEFAULT '0',
tx_eptheme_context_concept int(11) unsigned DEFAULT '0',
tx_eptheme_context_product int(11) unsigned DEFAULT '0',
tx_eptheme_context_date_from int(11) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_context_date_to int(11) unsigned DEFAULT '0' NOT NULL,
tx_eptheme_lineup int(11) unsigned DEFAULT '0',
tx_eptheme_contact int(11) unsigned DEFAULT '0',
button varchar(255) DEFAULT '' NOT NULL
);
CREATE TABLE tx_eptheme_domain_model_addresscheck (
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
tstamp int(11) DEFAULT '0' NOT NULL,
crdate int(11) DEFAULT '0' NOT NULL,
cruser_id int(11) DEFAULT '0' NOT NULL,
deleted tinyint(3) DEFAULT '0',
hidden tinyint(4) DEFAULT '0' NOT NULL,
CREATE TABLE tx_eptheme_domain_model_addresscheck
(
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
tstamp int(11) DEFAULT '0' NOT NULL,
crdate int(11) DEFAULT '0' NOT NULL,
cruser_id int(11) DEFAULT '0' NOT NULL,
deleted tinyint(3) DEFAULT '0',
hidden tinyint(4) DEFAULT '0' NOT NULL,
name tinytext,
first_name tinytext,
last_name tinytext,
customer_id varchar(255) DEFAULT '' NOT NULL,
title varchar(255) DEFAULT '' NOT NULL,
email varchar(255) DEFAULT '' NOT NULL,
address tinytext,
city varchar(255) DEFAULT '' NOT NULL,
zip varchar(20) DEFAULT '' NOT NULL,
country varchar(128) DEFAULT '' NOT NULL,
name tinytext,
first_name tinytext,
last_name tinytext,
customer_id varchar(255) DEFAULT '' NOT NULL,
title varchar(255) DEFAULT '' NOT NULL,
email varchar(255) DEFAULT '' NOT NULL,
address tinytext,
city varchar(255) DEFAULT '' NOT NULL,
zip varchar(20) DEFAULT '' NOT NULL,
country varchar(128) DEFAULT '' NOT NULL,
no_postal tinyint(4) DEFAULT '0' NOT NULL,
no_email tinyint(4) DEFAULT '0' NOT NULL,
address_current tinyint(4) DEFAULT '0' NOT NULL,
no_postal tinyint(4) DEFAULT '0' NOT NULL,
no_email tinyint(4) DEFAULT '0' NOT NULL,
address_current tinyint(4) DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(30) DEFAULT '' NOT NULL,
t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
t3ver_stage tinyint(4) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
t3_origuid int(11) DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(30) DEFAULT '' NOT NULL,
t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
t3ver_stage tinyint(4) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
t3_origuid int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (uid),
KEY parent (pid),
KEY pid (pid,email)
PRIMARY KEY (uid),
KEY parent (pid),
KEY pid (pid, email)
);