Merge branch 'release/2019.09-01'
This commit is contained in:
Generated
+56
-56
@@ -753,16 +753,16 @@
|
||||
},
|
||||
{
|
||||
"name": "georgringer/news",
|
||||
"version": "7.3.0",
|
||||
"version": "7.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/georgringer/news.git",
|
||||
"reference": "3a871b538b8cc3858f227ade52cb73f722984b0e"
|
||||
"reference": "e1e034399468af4f58fe627d73085bcb1dc9df95"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/georgringer/news/zipball/3a871b538b8cc3858f227ade52cb73f722984b0e",
|
||||
"reference": "3a871b538b8cc3858f227ade52cb73f722984b0e",
|
||||
"url": "https://api.github.com/repos/georgringer/news/zipball/e1e034399468af4f58fe627d73085bcb1dc9df95",
|
||||
"reference": "e1e034399468af4f58fe627d73085bcb1dc9df95",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -804,8 +804,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "Georg Ringer",
|
||||
"role": "Developer",
|
||||
"homepage": "http://montagmorgen.at"
|
||||
"homepage": "http://montagmorgen.at",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Versatile news extension, based on extbase & fluid for TYPO3 CMS",
|
||||
@@ -816,7 +816,7 @@
|
||||
"news",
|
||||
"typo3"
|
||||
],
|
||||
"time": "2019-08-28T18:54:01+00:00"
|
||||
"time": "2019-08-29T17:11:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "gridelementsteam/gridelements",
|
||||
@@ -1173,9 +1173,9 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "Helmut Hummel",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]",
|
||||
"homepage": "http://helhum.io"
|
||||
"homepage": "http://helhum.io",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "A reliable and powerful command line interface for TYPO3 CMS",
|
||||
@@ -1294,9 +1294,9 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ignace Nyamagana Butera",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]",
|
||||
"homepage": "https://github.com/nyamsprod/"
|
||||
"homepage": "https://github.com/nyamsprod/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Csv data manipulation made easy in PHP",
|
||||
@@ -1313,16 +1313,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.2.3",
|
||||
"version": "v4.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "e612609022e935f3d0337c1295176505b41188c8"
|
||||
"reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e612609022e935f3d0337c1295176505b41188c8",
|
||||
"reference": "e612609022e935f3d0337c1295176505b41188c8",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/97e59c7a16464196a8b9c77c47df68e4a39a45c4",
|
||||
"reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1360,7 +1360,7 @@
|
||||
"parser",
|
||||
"php"
|
||||
],
|
||||
"time": "2019-08-12T20:17:41+00:00"
|
||||
"time": "2019-09-01T07:51:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pixelant/pxa-social-feed",
|
||||
@@ -3222,8 +3222,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "The TYPO3 admin panel provides a panel with additional functionality in the frontend (Debugging, Caching, Preview...)",
|
||||
@@ -3287,8 +3287,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Classes for the TYPO3 backend.",
|
||||
@@ -3391,8 +3391,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Backend user administration and overview. Allows you to compare the settings of users and verify their permissions and see who is online.",
|
||||
@@ -3606,8 +3606,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "The core library of TYPO3.",
|
||||
@@ -3722,8 +3722,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "TYPO3 Extension Manager",
|
||||
@@ -3828,8 +3828,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Listing of files in the directory",
|
||||
@@ -3933,8 +3933,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Fluid is a next-generation templating engine which makes the life of extension authors a lot easier!",
|
||||
@@ -4102,8 +4102,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Classes for the frontend of TYPO3.",
|
||||
@@ -4161,8 +4161,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Shows various infos",
|
||||
@@ -4219,8 +4219,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "The Install Tool mounted as the module Tools>Install in TYPO3.",
|
||||
@@ -4276,8 +4276,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Enables the 'Config' and 'DB Check' modules for technical analysis of the system. This includes raw database search, checking relations, counting pages and records etc.",
|
||||
@@ -4335,8 +4335,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "List of database-records",
|
||||
@@ -4387,8 +4387,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "The recycler offers the possibility to restore deleted records or remove them from the database permanently. These actions can be applied to a single record, multiple records, and recursively to child records (ex. restoring a page can restore all content elements on that page). Filtering by page and by table provides a quick overview of deleted records before taking action on them.",
|
||||
@@ -4441,8 +4441,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Custom redirects in TYPO3.",
|
||||
@@ -4556,8 +4556,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Integration of CKEditor as Rich Text Editor.",
|
||||
@@ -4605,8 +4605,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "The TYPO3 Scheduler let's you register tasks to happen at a specific time",
|
||||
@@ -4659,8 +4659,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "SEO features for TYPO3.",
|
||||
@@ -4768,8 +4768,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "JavaScript-driven editor with syntax highlighting and codecompletion. Based on CodeMirror.",
|
||||
@@ -4869,8 +4869,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Framework for management of TypoScript template records for the CMS frontend.",
|
||||
@@ -4921,8 +4921,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "TYPO3 Core Team",
|
||||
"role": "Developer",
|
||||
"email": "[email protected]"
|
||||
"email": "[email protected]",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Shows the frontend webpage inside the backend frameset.",
|
||||
|
||||
@@ -128,22 +128,11 @@ routeEnhancers:
|
||||
- 41
|
||||
routes:
|
||||
-
|
||||
routePath: /ergebnis
|
||||
routePath: '/ergebnis/{filter_settings}'
|
||||
_controller: 'Search::searchresult'
|
||||
defaultController: 'Search::searchresult'
|
||||
StaticResultsPlugin:
|
||||
type: Extbase
|
||||
extension: EpProducts
|
||||
plugin: staticresult
|
||||
limitToPages:
|
||||
- 1757
|
||||
routes:
|
||||
-
|
||||
routePath: '/{filter_settings}'
|
||||
_controller: 'Search::staticresult'
|
||||
_arguments:
|
||||
filter_settings: encodedFilterSettings
|
||||
defaultController: 'Search::staticresult'
|
||||
filter_settings: filterSettings
|
||||
defaultController: 'Search::searchresult'
|
||||
requirements:
|
||||
filter_settings: '[A-Z\d%\-]+'
|
||||
ResellerPlugin:
|
||||
|
||||
Generated
+434
-359
File diff suppressed because it is too large
Load Diff
@@ -173,7 +173,6 @@ class ProductController extends ActionController
|
||||
$this->view->assignMultiple([
|
||||
'hotels' => $hotels,
|
||||
'product' => $product,
|
||||
'currentPageUid' => $GLOBALS['TSFE']->id,
|
||||
'linkHotel' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace EP\EpProducts\Controller;
|
||||
* This copyright notice MUST APPEAR in all copies of the script!
|
||||
***************************************************************/
|
||||
|
||||
use EP\EpEvents\Domain\Model\Search;
|
||||
use EP\EpProducts\Domain\Model\FilterSettings;
|
||||
use EP\EpProducts\Domain\Model\SearchParams;
|
||||
use EP\EpProducts\Service\FilterService;
|
||||
@@ -36,7 +37,6 @@ use TYPO3\CMS\Core\Log\LogManager;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
|
||||
use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException;
|
||||
use TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException;
|
||||
|
||||
class SearchController extends ActionController
|
||||
{
|
||||
@@ -82,7 +82,7 @@ class SearchController extends ActionController
|
||||
|
||||
public function searchbarAction()
|
||||
{
|
||||
$fixed = (bool) $this->settings['fixed'];
|
||||
$fixed = (bool)$this->settings['fixed'];
|
||||
$searchParams = new SearchParams($GLOBALS['TSFE']->id);
|
||||
$this->view->assignMultiple([
|
||||
'filterSettings' => $this->defaultFilterSettings,
|
||||
@@ -102,24 +102,46 @@ class SearchController extends ActionController
|
||||
]);
|
||||
}
|
||||
|
||||
public function initializeSearchresultAction()
|
||||
public function initializeProcessSearchAction()
|
||||
{
|
||||
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
|
||||
$this->processSearchParamsArgument($forcedConceptUids);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SearchParams $searchParams
|
||||
* @throws StopActionException
|
||||
* @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
|
||||
*/
|
||||
public function processSearchAction(SearchParams $searchParams)
|
||||
{
|
||||
$filterSettings = FilterSettings::fromSearchParams($searchParams);
|
||||
|
||||
$redirectUri = $this->uriBuilder
|
||||
->reset()
|
||||
->setCreateAbsoluteUri(true)
|
||||
->uriFor(
|
||||
'searchresult',
|
||||
['filterSettings' => FilterSettingsEncoder::encode($filterSettings)],
|
||||
null,
|
||||
null,
|
||||
'searchresult'
|
||||
);
|
||||
|
||||
$this->redirectToUri($redirectUri);
|
||||
}
|
||||
|
||||
public function initializeSearchresultAction()
|
||||
{
|
||||
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
|
||||
$this->processFilterSettingsArgument($forcedConceptUids);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \EP\EpProducts\Domain\Model\SearchParams $searchParams
|
||||
* @param \EP\EpProducts\Domain\Model\FilterSettings $filterSettings
|
||||
*/
|
||||
public function searchresultAction(SearchParams $searchParams = null, FilterSettings $filterSettings = null)
|
||||
public function searchresultAction(FilterSettings $filterSettings)
|
||||
{
|
||||
if ($searchParams !== null) {
|
||||
$this->logSearch($searchParams);
|
||||
$filterSettings = FilterSettings::fromSearchParams($searchParams);
|
||||
}
|
||||
|
||||
$this->view->assignMultiple([
|
||||
'detailPageUid' => $this->settings['detailPageUid'],
|
||||
'referringPageUid' => $this->settings['defaultSearchPageUid'],
|
||||
@@ -127,20 +149,6 @@ class SearchController extends ActionController
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $encodedFilterSettings
|
||||
* @throws StopActionException
|
||||
*/
|
||||
public function staticresultAction($encodedFilterSettings)
|
||||
{
|
||||
$this->forward(
|
||||
'searchresult',
|
||||
null,
|
||||
null,
|
||||
['filterSettings' => $encodedFilterSettings]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SearchParams $searchParams
|
||||
*/
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ class StaticSearchParamsMiddleware implements MiddlewareInterface
|
||||
use DbConnectionTrait;
|
||||
|
||||
const PREFIX_PATH_SEGMENT = 'reiseauswahl';
|
||||
const SEARCH_RESULT_URI = '/skireisen/auswahl/';
|
||||
const SEARCH_RESULT_URI = '/skireisen/suche/ergebnis/';
|
||||
const REDIRECT_RESPONSE_CODE = 302;
|
||||
|
||||
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
||||
|
||||
@@ -17,12 +17,6 @@ call_user_func(function () {
|
||||
'Suchergebnis'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'EP.EpProducts',
|
||||
'staticresult',
|
||||
'statisches Suchergebnis'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
|
||||
'EP.EpProducts',
|
||||
'product_detail',
|
||||
|
||||
@@ -20,8 +20,6 @@ plugin.tx_epproducts {
|
||||
snowReportStoragePid =
|
||||
# cat=plugin.tx_epproducts//a; type=string; label=Default search page UID
|
||||
defaultSearchPageUid =
|
||||
# cat=plugin.tx_epproducts//a; type=string; label=Default static search page UID
|
||||
defaultStaticSearchPageUid =
|
||||
# cat=plugin.tx_epproducts//a; type=string; label=Default product detail page UID
|
||||
defaultDetailPageUid =
|
||||
# cat=plugin.tx_epproducts//a; type=string; label=Exclude products with concept UIDs from search result (CSV)
|
||||
|
||||
@@ -27,7 +27,6 @@ plugin.tx_epproducts {
|
||||
destinationsStoragePid = {$plugin.tx_epproducts.settings.destinationsStoragePid}
|
||||
snowReportStoragePid = {$plugin.tx_epproducts.settings.snowReportStoragePid}
|
||||
defaultSearchPageUid = {$plugin.tx_epproducts.settings.defaultSearchPageUid}
|
||||
defaultStaticSearchPageUid = {$plugin.tx_epproducts.settings.defaultStaticSearchPageUid}
|
||||
defaultDetailPageUid = {$plugin.tx_epproducts.settings.defaultDetailPageUid}
|
||||
excludedConceptUids = {$plugin.tx_epproducts.settings.excludedConceptUids}
|
||||
excludedRegionUids = {$plugin.tx_epproducts.settings.excludedRegionUids}
|
||||
|
||||
@@ -50,21 +50,10 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\EP\EpProducts\T
|
||||
'EP.' . $_EXTKEY,
|
||||
'searchresult',
|
||||
[
|
||||
'Search' => 'searchresult',
|
||||
'Search' => 'searchresult,processSearch',
|
||||
],
|
||||
[
|
||||
'Search' => 'searchresult',
|
||||
]
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
|
||||
'EP.' . $_EXTKEY,
|
||||
'staticresult',
|
||||
[
|
||||
'Search' => 'staticresult',
|
||||
],
|
||||
[
|
||||
'Search' => 'staticresult',
|
||||
'Search' => 'searchresult,processSearch',
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ import ContactForm from './components/ContactForm.vue'
|
||||
import WatchlistToggle from './components/WatchlistToggle.vue'
|
||||
import Watchlist from './components/Watchlist.vue'
|
||||
import HotelList from './components/HotelList.vue'
|
||||
import ReferrerLink from './components/ReferrerLink.vue'
|
||||
import FacebookPixel from './components/FacebookPixel.vue'
|
||||
import BackLink from './components/BackLink.vue'
|
||||
|
||||
// Define global constants
|
||||
const $window = $(window);
|
||||
@@ -64,7 +64,7 @@ new Vue({
|
||||
WatchlistToggle,
|
||||
Watchlist,
|
||||
HotelList,
|
||||
ReferrerLink,
|
||||
BackLink,
|
||||
MyEp: () => import('./myep/components/App.vue'),
|
||||
FacebookPixel
|
||||
},
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
<template>
|
||||
<div class="ep-backlink" v-if="referringUrl" v-cloak>
|
||||
<a :href="referringUrl" class="button button--small">{{ label }}</a>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'BackLink',
|
||||
data () {
|
||||
return {
|
||||
referringUrl: null,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
label () {
|
||||
if (this.referringUrl.match(/suche/)) {
|
||||
return 'zurück zum Suchergebnis'
|
||||
}
|
||||
|
||||
return 'zurück'
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
const urlParams = new URLSearchParams(location.search);
|
||||
if (urlParams.has('ref')) {
|
||||
this.referringUrl = urlParams.get('ref');
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -1,13 +1,11 @@
|
||||
<script>
|
||||
import WatchlistToggle from './WatchlistToggle.vue'
|
||||
import ReferrerLink from './ReferrerLink.vue'
|
||||
|
||||
import defaultFilterSettings from '../_filtersettings'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
WatchlistToggle,
|
||||
ReferrerLink
|
||||
WatchlistToggle
|
||||
},
|
||||
props: {
|
||||
referringPageUrl: {
|
||||
|
||||
+3
-1
@@ -14,6 +14,7 @@
|
||||
import FacebookPixel from './FacebookPixel.vue'
|
||||
import WatchlistToggle from './WatchlistToggle.vue'
|
||||
import OsmMap from './OsmMap.vue'
|
||||
import BackLink from "./BackLink.vue";
|
||||
import dayjs from 'dayjs'
|
||||
import 'dayjs/locale/de'
|
||||
|
||||
@@ -29,7 +30,8 @@
|
||||
Calendar,
|
||||
FacebookPixel,
|
||||
WatchlistToggle,
|
||||
OsmMap
|
||||
OsmMap,
|
||||
BackLink
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
<template>
|
||||
<a @click="storeReferringPage()">
|
||||
<slot></slot>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
referringPage: {
|
||||
type: Object,
|
||||
default () {
|
||||
return {
|
||||
url: null,
|
||||
label: null
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
storeReferringPage () {
|
||||
if (this.referringPage.url && this.referringPage.label) {
|
||||
sessionStorage.setItem('referringPage', JSON.stringify(this.referringPage))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -204,14 +204,11 @@
|
||||
},
|
||||
updateFilterSettings (settings) {
|
||||
this.filterSettings = { ...this.filterSettings, ...settings };
|
||||
sessionStorage.setItem('filterSettings', JSON.stringify(this.filterSettings));
|
||||
}
|
||||
},
|
||||
created () {
|
||||
if (!$.isEmptyObject(this.initialFilterSettings)) {
|
||||
this.updateFilterSettings(this.initialFilterSettings)
|
||||
} else if (sessionStorage.getItem('filterSettings')) {
|
||||
this.updateFilterSettings(JSON.parse(sessionStorage.getItem('filterSettings')))
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
|
||||
+16
-23
@@ -2,17 +2,16 @@
|
||||
<div class="teaserbox teaserbox--landscape teaserbox--searchresult searchresult-item">
|
||||
<div class="teaserbox__image">
|
||||
<img class="teaserbox__flag" :src="item.country.flag" :alt="item.country.name"/>
|
||||
<referrer-link :href="item.detailPageUri" :referring-page="referringPage"
|
||||
rel="nofollow" title="Details & Buchen">
|
||||
<a :href="getUrl()" rel="nofollow" title="Details & Buchen">
|
||||
<picture class="searchresult-item__image">
|
||||
<source media="(max-width: 768px)" :data-srcset="item.hotel.images.resized.s[0].url + ' 220w'"/>
|
||||
<source media="(max-width: 1200px)" :data-srcset="item.hotel.images.resized.l[0].url + ' 280w'"/>
|
||||
<source media="(min-width: 1201px)" :data-srcset="item.hotel.images.resized.m[0].url + ' 260w'"/>
|
||||
<source media="(max-width: 1200px)" :data-srcset="item.hotel.images.resized.l[0].url + ' 280w'"/>
|
||||
<source media="(max-width: 768px)" :data-srcset="item.hotel.images.resized.s[0].url + ' 220w'"/>
|
||||
<img class="scale lazyload" :data-src="item.hotel.images.resized.s[0].url"
|
||||
:title="item.hotel.images.resized.s[0].title"
|
||||
:alt="item.hotel.images.resized.s[0].alt">
|
||||
</picture>
|
||||
</referrer-link>
|
||||
</a>
|
||||
<div class="concept-badge" :id="section.concept.code"
|
||||
:class=" 'concept-badge--' + section.concept.code">{{ section.concept.name }}</div>
|
||||
</div>
|
||||
@@ -45,21 +44,21 @@
|
||||
<div class="teaserbox__aside__top">
|
||||
<span class="searchresult-item__label">{{ item.dates.length > 1 ? 'Zeitraum' : 'Termin' }}</span>
|
||||
<span class="searchresult-item__daterange">{{ dateRange }}</span>
|
||||
<referrer-link :href="item.detailPageUri" :referring-page="referringPage"
|
||||
rel="nofollow" title="Details & Buchen" v-if="item.dates.length && !item.daytrip">
|
||||
<a :href="getUrl()" rel="nofollow" title="Details & Buchen"
|
||||
v-if="item.dates.length && !item.daytrip">
|
||||
<span class="searchresult-item__daterange">
|
||||
<i class="fa fa-arrow-circle-right"></i> {{ item.dates.length }} Termin{{ item.dates.length > 1 ? 'e' : '' }}
|
||||
</span>
|
||||
</referrer-link>
|
||||
</a>
|
||||
<hr>
|
||||
<span class="searchresult-item__label">{{ item.daytrip ? 'Tageweise buchbar' : nightsOptions }}</span>
|
||||
</div>
|
||||
<div class="teaserbox__aside__bottom">
|
||||
<span class="searchresult-item__price">ab {{ item.minPrice }} €</span>
|
||||
<referrer-link :href="item.detailPageUri" :referring-page="referringPage"
|
||||
class="button button--full searchresult-item__button" rel="nofollow" title="Details & Buchen">
|
||||
<a :href="getUrl()" class="button button--full searchresult-item__button"
|
||||
rel="nofollow" title="Details & Buchen">
|
||||
Details & Buchen
|
||||
</referrer-link>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<watchlist-toggle :uid="item.key" class="teaserbox-watchlist"></watchlist-toggle>
|
||||
@@ -70,12 +69,10 @@
|
||||
import dayjs from 'dayjs'
|
||||
import 'dayjs/locale/de'
|
||||
import WatchlistToggle from './WatchlistToggle.vue'
|
||||
import ReferrerLink from './ReferrerLink.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
WatchlistToggle,
|
||||
ReferrerLink
|
||||
WatchlistToggle
|
||||
},
|
||||
props: {
|
||||
item: {
|
||||
@@ -85,15 +82,11 @@
|
||||
section: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
referringPage: {
|
||||
type: Object,
|
||||
default () {
|
||||
return {
|
||||
url: null,
|
||||
label: null
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getUrl () {
|
||||
return this.item.detailPageUri + '?ref=' + window.location.pathname;
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
@@ -10,10 +10,13 @@
|
||||
<img class="teaserbox__flag"
|
||||
src="{item.country.flag}"
|
||||
alt="{item.country.name}"/>
|
||||
<referrer-link href="{f:uri.action(pageUid: detailPage, action: 'detail', controller: 'Product', arguments: '{product: product.uid, hotel: item.hotel.uid}')}"
|
||||
:referring-page="{ url: referringPageUrl, label: 'zurück' }" rel="nofollow">
|
||||
<f:link.action action="detail" controller="Product"
|
||||
pageUid="{detailPage}"
|
||||
arguments="{product: product.uid, hotel: item.hotel.uid}"
|
||||
additionalParams="{ref: '{f:uri.page()}'}"
|
||||
>
|
||||
<f:render section="Image" arguments="{_all}"/>
|
||||
</referrer-link>
|
||||
</f:link.action>
|
||||
<f:if condition="{product.concept.code}">
|
||||
<div class="concept-badge concept-badge--{product.concept.code}">{product.concept.name}</div>
|
||||
</f:if>
|
||||
@@ -70,32 +73,46 @@
|
||||
<span class="searchresult-item__label">{f:if(condition: '{item.dates -> f:count()} > 1', then: 'Zeitraum', else: 'Termin')}</span>
|
||||
<span class="searchresult-item__daterange">{ep:dateRange(dateFrom: item.minDateStart, dateTo: item.maxDateEnd, includeLabel: 0)}</span>
|
||||
<f:if condition="{item.dates -> f:count()} > 1">
|
||||
<referrer-link href="{f:uri.action(pageUid: detailPage, action: 'detail', controller: 'Product', arguments: '{product: product.uid, hotel: item.hotel.uid}')}"
|
||||
:referring-page="{ url: referringPageUrl, label: 'zurück' }" rel="nofollow">
|
||||
<f:link.action action="detail" controller="Product"
|
||||
pageUid="{detailPage}"
|
||||
arguments="{product: product.uid, hotel: item.hotel.uid}"
|
||||
additionalParams="{ref: '{f:uri.page()}'}"
|
||||
additionalAttributes="{rel: 'nofollow'}"
|
||||
>
|
||||
<span class="searchresult-item__daterange">
|
||||
<i class="fa fa-arrow-circle-right"></i> {item.dates -> f:count()} Termin{f:if(condition: '{item.dates -> f:count()} > 1', then: 'e')}
|
||||
</span>
|
||||
</referrer-link>
|
||||
</f:link.action>
|
||||
</f:if>
|
||||
<hr>
|
||||
<span class="searchresult-item__label">{ep:nightsOptions(options: item.nights)}</span>
|
||||
</div>
|
||||
<div class="teaserbox__aside__bottom">
|
||||
<span class="searchresult-item__price">ab {item.minPrice} €</span>
|
||||
<referrer-link href="{f:uri.action(pageUid: detailPage, action: 'detail', controller: 'Product', arguments: '{product: product.uid, hotel: item.hotel.uid}')}"
|
||||
:referring-page="{ url: referringPageUrl, label: 'zurück' }"
|
||||
class="button button--full searchresult-item__button" rel="nofollow">
|
||||
<f:link.action action="detail" controller="Product"
|
||||
pageUid="{detailPage}"
|
||||
arguments="{product: product.uid, hotel: item.hotel.uid}"
|
||||
additionalParams="{ref: '{f:uri.page()}'}"
|
||||
additionalAttributes="{rel: 'nofollow'}"
|
||||
class="button button--full searchresult-item__button"
|
||||
>
|
||||
Details & Buchen
|
||||
</referrer-link>
|
||||
</f:link.action>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="teaserbox__aside__top"> </div>
|
||||
<div class="teaserbox__aside__bottom">
|
||||
<span class="searchresult-item__price">ausgebucht</span>
|
||||
<referrer-link href="{f:uri.action(pageUid: detailPage, action: 'detail', controller: 'Product', arguments: '{product: product.uid, hotel: item.hotel.uid}')}"
|
||||
:referring-page="{ url: referringPageUrl, label: 'zurück' }"
|
||||
class="button button--full searchresult-item__button" rel="nofollow">Details</referrer-link>
|
||||
<f:link.action action="detail" controller="Product"
|
||||
pageUid="{detailPage}"
|
||||
arguments="{product: product.uid, hotel: item.hotel.uid}"
|
||||
additionalParams="{ref: '{f:uri.page()}'}"
|
||||
additionalAttributes="{rel: 'nofollow'}"
|
||||
class="button button--full searchresult-item__button"
|
||||
>
|
||||
Details
|
||||
</f:link.action>
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
@@ -109,15 +126,15 @@
|
||||
<f:then>
|
||||
<f:alias map="{image: item.hotel.images.original.0}">
|
||||
<picture class="searchresult-item__image">
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '220', height: '130c-100'
|
||||
)} 220w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '280', height: '220c-100'
|
||||
)} 280w"/>
|
||||
<source media="(min-width: 1201px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '260', height: '200c-100'
|
||||
)} 260w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '280', height: '220c-100'
|
||||
)} 280w"/>
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '220', height: '130c-100'
|
||||
)} 220w"/>
|
||||
<img class="scale lazyload" data-src="{f:uri.image(
|
||||
image: image, width: '260', height: '200c-100'
|
||||
)}" title="{image.title}" alt="{image.alternative}">
|
||||
@@ -126,18 +143,18 @@
|
||||
</f:then>
|
||||
<f:else>
|
||||
<picture class="searchresult-item__image">
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '220', height: '130c-100'
|
||||
)} 220w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '280', height: '220c-100'
|
||||
)} 280w"/>
|
||||
<source media="(min-width: 1201px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '260', height: '200c-100'
|
||||
)} 260w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '280', height: '220c-100'
|
||||
)} 280w"/>
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '220', height: '130c-100'
|
||||
)} 220w"/>
|
||||
<img class="scale lazyload" data-src="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '260', height: '200c-100'
|
||||
|
||||
@@ -60,8 +60,6 @@
|
||||
</f:link.typolink>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="ep-backlink" v-if="referringPage" v-cloak>
|
||||
<a :href="referringPage.url" class="button button--small">{{ referringPage.label }}</a>
|
||||
</div>
|
||||
<back-link></back-link>
|
||||
{v:render.template(file: 'EXT:ep_theme/Resources/Private/Partials/Breadcrumb.html')}
|
||||
</div>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<f:if condition="{image.uid}">
|
||||
<f:then>
|
||||
<picture>
|
||||
<source media="(max-width: 512px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '350', height: '175c-100'
|
||||
)} 350w"/>
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '500', height: '250c-100'
|
||||
)} 500w"/>
|
||||
<source media="(max-width: 991px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '360', height: '200c-100'
|
||||
)} 360w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '320', height: '160c-100'
|
||||
)} 320w"/>
|
||||
<source media="(min-width: 1201px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '370', height: '220c-100'
|
||||
)} 370w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '320', height: '160c-100'
|
||||
)} 320w"/>
|
||||
<source media="(max-width: 991px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '360', height: '200c-100'
|
||||
)} 360w"/>
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '500', height: '250c-100'
|
||||
)} 500w"/>
|
||||
<source media="(max-width: 512px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '350', height: '175c-100'
|
||||
)} 350w"/>
|
||||
<img class="scale lazyload" data-src="{f:uri.image(
|
||||
image: image, width: '500', height: '250c-100'
|
||||
)}" title="{image.title}" alt="{image.alternative}">
|
||||
@@ -23,26 +23,26 @@
|
||||
</f:then>
|
||||
<f:else>
|
||||
<picture>
|
||||
<source media="(max-width: 512px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '350', height: '175c-100'
|
||||
)} 320w"/>
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '500', height: '250c-100'
|
||||
)} 500w"/>
|
||||
<source media="(max-width: 991px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '360', height: '200c-100'
|
||||
)} 360w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '320', height: '160c-100'
|
||||
)} 420w"/>
|
||||
<source media="(min-width: 1201px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '370', height: '220c-100'
|
||||
)} 370w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '320', height: '160c-100'
|
||||
)} 420w"/>
|
||||
<source media="(max-width: 991px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '360', height: '200c-100'
|
||||
)} 360w"/>
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '500', height: '250c-100'
|
||||
)} 500w"/>
|
||||
<source media="(max-width: 512px)" data-srcset="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '350', height: '175c-100'
|
||||
)} 320w"/>
|
||||
<img class="scale lazyload" data-src="{f:uri.image(
|
||||
src: 'EXT:ep_theme/Resources/Public/images/header-winter.jpg',
|
||||
width: '500', height: '250c-100'
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
<f:if condition="{image}">
|
||||
<f:then>
|
||||
<picture class="product-teaser__image">
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '320', height: '140c-100'
|
||||
<source media="(min-width: 1201px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '320', height: '200c-100'
|
||||
)} 320w"/>
|
||||
<source media="(max-width: 991px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '260', height: '220c-100'
|
||||
)} 260w"/>
|
||||
<source media="(max-width: 1200px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '220', height: '130c-100'
|
||||
)} 220w"/>
|
||||
<source media="(min-width: 1201px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '320', height: '200c-100'
|
||||
<source media="(max-width: 991px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '260', height: '220c-100'
|
||||
)} 260w"/>
|
||||
<source media="(max-width: 768px)" data-srcset="{f:uri.image(
|
||||
image: image, width: '320', height: '140c-100'
|
||||
)} 320w"/>
|
||||
<img class="scale lazyload" data-src="{f:uri.image(
|
||||
image: image, width: '260', height: '160c-100'
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
inline-template>
|
||||
<div class="container searchbar affix{f:if(condition: fixed, else: '-top')}"{f:if(condition: fixed, else: ' data-spy="affix" data-offset-top="650" data-offset-bottom="200"')}>
|
||||
<div class="container">
|
||||
<f:form action="searchresult" controller="Search" method="post" name="searchParams"
|
||||
<f:form action="processSearch" controller="Search" method="post" name="searchParams"
|
||||
object="{searchParams}" pluginName="searchresult" extensionName="epproducts"
|
||||
pageUid="{settings.defaultSearchPageUid}" additionalAttributes="{ref: 'form'}">
|
||||
<f:form.hidden property="destinationUid" additionalAttributes="{v-model: 'searchParams.destinationUid', number: 'number'}"/>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
:date-presets='{settings.datePickerPresets -> v:format.json.encode()}'
|
||||
inline-template>
|
||||
<div class="container">
|
||||
<f:form action="searchresult" controller="Search" method="post" name="searchParams"
|
||||
<f:form action="processSearch" controller="Search" method="post" name="searchParams"
|
||||
object="{searchParams}" pluginName="searchresult" extensionName="epproducts"
|
||||
pageUid="{settings.defaultSearchPageUid}" class="form-horizontal">
|
||||
<f:form.hidden property="destinationUid" additionalAttributes="{v-model: 'searchParams.destinationUid', number: 'number'}"/>
|
||||
|
||||
Reference in New Issue
Block a user