Modify search result plugin to use redirect, remove static search result

This commit is contained in:
Björn Fromme
2019-09-08 13:11:24 +02:00
parent 618f8bba97
commit ea2a777de7
9 changed files with 40 additions and 63 deletions
+3 -14
View File
@@ -128,22 +128,11 @@ routeEnhancers:
- 41 - 41
routes: routes:
- -
routePath: /ergebnis routePath: '/ergebnis/{filter_settings}'
_controller: 'Search::searchresult' _controller: 'Search::searchresult'
defaultController: 'Search::searchresult'
StaticResultsPlugin:
type: Extbase
extension: EpProducts
plugin: staticresult
limitToPages:
- 1757
routes:
-
routePath: '/{filter_settings}'
_controller: 'Search::staticresult'
_arguments: _arguments:
filter_settings: encodedFilterSettings filter_settings: filterSettings
defaultController: 'Search::staticresult' defaultController: 'Search::searchresult'
requirements: requirements:
filter_settings: '[A-Z\d%\-]+' filter_settings: '[A-Z\d%\-]+'
ResellerPlugin: ResellerPlugin:
@@ -27,6 +27,7 @@ namespace EP\EpProducts\Controller;
* This copyright notice MUST APPEAR in all copies of the script! * 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\FilterSettings;
use EP\EpProducts\Domain\Model\SearchParams; use EP\EpProducts\Domain\Model\SearchParams;
use EP\EpProducts\Service\FilterService; use EP\EpProducts\Service\FilterService;
@@ -36,7 +37,6 @@ use TYPO3\CMS\Core\Log\LogManager;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException; use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException;
use TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException;
class SearchController extends ActionController class SearchController extends ActionController
{ {
@@ -82,7 +82,7 @@ class SearchController extends ActionController
public function searchbarAction() public function searchbarAction()
{ {
$fixed = (bool) $this->settings['fixed']; $fixed = (bool)$this->settings['fixed'];
$searchParams = new SearchParams($GLOBALS['TSFE']->id); $searchParams = new SearchParams($GLOBALS['TSFE']->id);
$this->view->assignMultiple([ $this->view->assignMultiple([
'filterSettings' => $this->defaultFilterSettings, 'filterSettings' => $this->defaultFilterSettings,
@@ -102,24 +102,46 @@ class SearchController extends ActionController
]); ]);
} }
public function initializeSearchresultAction() public function initializeProcessSearchAction()
{ {
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$this->processSearchParamsArgument($forcedConceptUids); $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); $this->processFilterSettingsArgument($forcedConceptUids);
} }
/** /**
* @param \EP\EpProducts\Domain\Model\SearchParams $searchParams
* @param \EP\EpProducts\Domain\Model\FilterSettings $filterSettings * @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([ $this->view->assignMultiple([
'detailPageUid' => $this->settings['detailPageUid'], 'detailPageUid' => $this->settings['detailPageUid'],
'referringPageUid' => $this->settings['defaultSearchPageUid'], '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 * @param SearchParams $searchParams
*/ */
@@ -42,7 +42,7 @@ class StaticSearchParamsMiddleware implements MiddlewareInterface
use DbConnectionTrait; use DbConnectionTrait;
const PREFIX_PATH_SEGMENT = 'reiseauswahl'; const PREFIX_PATH_SEGMENT = 'reiseauswahl';
const SEARCH_RESULT_URI = '/skireisen/auswahl/'; const SEARCH_RESULT_URI = '/skireisen/suche/ergebnis/';
const REDIRECT_RESPONSE_CODE = 302; const REDIRECT_RESPONSE_CODE = 302;
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
@@ -17,12 +17,6 @@ call_user_func(function () {
'Suchergebnis' 'Suchergebnis'
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts',
'staticresult',
'statisches Suchergebnis'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts', 'EP.EpProducts',
'product_detail', 'product_detail',
@@ -20,8 +20,6 @@ plugin.tx_epproducts {
snowReportStoragePid = snowReportStoragePid =
# cat=plugin.tx_epproducts//a; type=string; label=Default search page UID # cat=plugin.tx_epproducts//a; type=string; label=Default search page UID
defaultSearchPageUid = 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 # cat=plugin.tx_epproducts//a; type=string; label=Default product detail page UID
defaultDetailPageUid = defaultDetailPageUid =
# cat=plugin.tx_epproducts//a; type=string; label=Exclude products with concept UIDs from search result (CSV) # 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} destinationsStoragePid = {$plugin.tx_epproducts.settings.destinationsStoragePid}
snowReportStoragePid = {$plugin.tx_epproducts.settings.snowReportStoragePid} snowReportStoragePid = {$plugin.tx_epproducts.settings.snowReportStoragePid}
defaultSearchPageUid = {$plugin.tx_epproducts.settings.defaultSearchPageUid} defaultSearchPageUid = {$plugin.tx_epproducts.settings.defaultSearchPageUid}
defaultStaticSearchPageUid = {$plugin.tx_epproducts.settings.defaultStaticSearchPageUid}
defaultDetailPageUid = {$plugin.tx_epproducts.settings.defaultDetailPageUid} defaultDetailPageUid = {$plugin.tx_epproducts.settings.defaultDetailPageUid}
excludedConceptUids = {$plugin.tx_epproducts.settings.excludedConceptUids} excludedConceptUids = {$plugin.tx_epproducts.settings.excludedConceptUids}
excludedRegionUids = {$plugin.tx_epproducts.settings.excludedRegionUids} excludedRegionUids = {$plugin.tx_epproducts.settings.excludedRegionUids}
@@ -50,21 +50,10 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\EP\EpProducts\T
'EP.' . $_EXTKEY, 'EP.' . $_EXTKEY,
'searchresult', 'searchresult',
[ [
'Search' => 'searchresult', 'Search' => 'searchresult,processSearch',
], ],
[ [
'Search' => 'searchresult', 'Search' => 'searchresult,processSearch',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.' . $_EXTKEY,
'staticresult',
[
'Search' => 'staticresult',
],
[
'Search' => 'staticresult',
] ]
); );
@@ -17,7 +17,7 @@
inline-template> 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 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"> <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" object="{searchParams}" pluginName="searchresult" extensionName="epproducts"
pageUid="{settings.defaultSearchPageUid}" additionalAttributes="{ref: 'form'}"> pageUid="{settings.defaultSearchPageUid}" additionalAttributes="{ref: 'form'}">
<f:form.hidden property="destinationUid" additionalAttributes="{v-model: 'searchParams.destinationUid', number: 'number'}"/> <f:form.hidden property="destinationUid" additionalAttributes="{v-model: 'searchParams.destinationUid', number: 'number'}"/>
@@ -16,7 +16,7 @@
:date-presets='{settings.datePickerPresets -> v:format.json.encode()}' :date-presets='{settings.datePickerPresets -> v:format.json.encode()}'
inline-template> inline-template>
<div class="container"> <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" object="{searchParams}" pluginName="searchresult" extensionName="epproducts"
pageUid="{settings.defaultSearchPageUid}" class="form-horizontal"> pageUid="{settings.defaultSearchPageUid}" class="form-horizontal">
<f:form.hidden property="destinationUid" additionalAttributes="{v-model: 'searchParams.destinationUid', number: 'number'}"/> <f:form.hidden property="destinationUid" additionalAttributes="{v-model: 'searchParams.destinationUid', number: 'number'}"/>