feat: referrer finisher adds current page url to sent form
This commit is contained in:
@@ -2,11 +2,19 @@
|
|||||||
|
|
||||||
namespace EP\EpTheme\Form;
|
namespace EP\EpTheme\Form;
|
||||||
|
|
||||||
|
use TYPO3\CMS\Core\Site\SiteFinder;
|
||||||
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||||
use TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher;
|
use TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher;
|
||||||
|
|
||||||
class AddReferrerFinisher extends AbstractFinisher
|
class AddReferrerFinisher extends AbstractFinisher
|
||||||
{
|
{
|
||||||
protected function executeInternal()
|
protected function executeInternal()
|
||||||
|
{
|
||||||
|
$this->addCurrentUrlField();
|
||||||
|
$this->addReferrerField();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function addReferrerField(): void
|
||||||
{
|
{
|
||||||
// Look for key 'referrer' in frontend session
|
// Look for key 'referrer' in frontend session
|
||||||
$referrer = $GLOBALS['TSFE']->fe_user->getKey('ses', 'referrer');
|
$referrer = $GLOBALS['TSFE']->fe_user->getKey('ses', 'referrer');
|
||||||
@@ -37,4 +45,30 @@ class AddReferrerFinisher extends AbstractFinisher
|
|||||||
$GLOBALS['TSFE']->fe_user->setKey('ses', 'referrer', null);
|
$GLOBALS['TSFE']->fe_user->setKey('ses', 'referrer', null);
|
||||||
$GLOBALS['TSFE']->fe_user->storeSessionData();
|
$GLOBALS['TSFE']->fe_user->storeSessionData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function addCurrentUrlField(): void
|
||||||
|
{
|
||||||
|
// Get URL of current page
|
||||||
|
$pageId = $GLOBALS['TSFE']->id;
|
||||||
|
$site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByPageId($pageId);
|
||||||
|
$url = $site->getRouter()->generateUri($pageId);
|
||||||
|
|
||||||
|
// Add textfield to form containing url value
|
||||||
|
$field = $this->finisherContext
|
||||||
|
->getFormRuntime()
|
||||||
|
->getFormDefinition()
|
||||||
|
->getPageByIndex(0)
|
||||||
|
->createElement('pageurl', 'Text');
|
||||||
|
|
||||||
|
$field->setDefaultValue($url);
|
||||||
|
$field->setDataType('string');
|
||||||
|
$field->setLabel('URL');
|
||||||
|
|
||||||
|
// Add finisher variable for potential later use
|
||||||
|
$this->finisherContext->getFinisherVariableProvider()->add(
|
||||||
|
$this->shortFinisherIdentifier,
|
||||||
|
'pageurl',
|
||||||
|
$url
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user