diff --git a/public/typo3conf/ext/ep_theme/Classes/Form/AddReferrerFinisher.php b/public/typo3conf/ext/ep_theme/Classes/Form/AddReferrerFinisher.php index 6f5463bd..ec01204c 100644 --- a/public/typo3conf/ext/ep_theme/Classes/Form/AddReferrerFinisher.php +++ b/public/typo3conf/ext/ep_theme/Classes/Form/AddReferrerFinisher.php @@ -2,11 +2,19 @@ namespace EP\EpTheme\Form; +use TYPO3\CMS\Core\Site\SiteFinder; +use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher; class AddReferrerFinisher extends AbstractFinisher { protected function executeInternal() + { + $this->addCurrentUrlField(); + $this->addReferrerField(); + } + + private function addReferrerField(): void { // Look for key 'referrer' in frontend session $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->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 + ); + } }