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
@@ -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
*/
@@ -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',
]
);
@@ -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'}"/>