‪TYPO3CMS  11.5
AbstractElementBrowser.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
18 use Psr\Http\Message\ServerRequestInterface;
25 use TYPO3\CMS\Core\Page\PageRenderer;
27 
35 {
39  protected ‪$moduleTemplate;
40 
46  protected ‪$thisScript = '';
47 
66  protected ‪$bparams = '';
67 
68  protected ?ServerRequestInterface ‪$request = null;
69 
71  protected PageRenderer ‪$pageRenderer;
74 
75  public function ‪__construct(
77  PageRenderer ‪$pageRenderer,
80  ) {
81  $this->iconFactory = ‪$iconFactory;
82  $this->pageRenderer = ‪$pageRenderer;
83  $this->uriBuilder = ‪$uriBuilder;
84  $this->moduleTemplateFactory = ‪$moduleTemplateFactory;
85  }
86 
90  protected function ‪initialize()
91  {
92  $this->moduleTemplate = $this->moduleTemplateFactory->create($this->‪getRequest());
93  $this->moduleTemplate->getDocHeaderComponent()->disable();
94  $this->moduleTemplate->getView()->setTemplate('ElementBrowser');
95  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Recordlist/ElementBrowser');
96  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Viewport/ResizableNavigation');
97  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_misc.xlf');
98  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_core.xlf');
99  $this->‪determineScriptUrl();
100  $this->‪initVariables();
101  }
102 
106  protected function ‪determineScriptUrl()
107  {
108  $this->thisScript = (string)$this->uriBuilder->buildUriFromRoute(
109  $this->getRequest()->getAttribute('route')->getOption('_identifier')
110  );
111  }
112 
113  protected function ‪initVariables()
114  {
115  $this->bparams = $this->‪getRequest()->getParsedBody()['bparams'] ?? $this->‪getRequest()->getQueryParams()['bparams'] ?? '';
116  }
117 
121  protected function ‪setBodyTagParameters()
122  {
123  $bodyDataAttributes = array_merge(
124  $this->getBParamDataAttributes(),
125  $this->getBodyTagAttributes()
126  );
127  $bodyTag = $this->moduleTemplate->getBodyTag();
128  $bodyTag = str_replace('>', ' ' . GeneralUtility::implodeAttributes($bodyDataAttributes, true, true) . '>', $bodyTag);
129  $this->moduleTemplate->setBodyTag($bodyTag);
130  }
131 
135  protected function getBodyTagAttributes()
136  {
137  return [];
138  }
139 
145  protected function getBParamDataAttributes()
146  {
147  $params = explode('|', $this->bparams);
148  ‪$fieldRef = $params[0];
149  $rteParams = $params[1];
150  $rteConfig = $params[2];
151  $irreObjectId = $params[4] ?? null;
152 
153  return [
154  'data-form-field-name' => 'data[' . ‪$fieldRef . '][' . $rteParams . '][' . $rteConfig . ']',
155  'data-field-reference' => ‪$fieldRef,
156  'data-rte-parameters' => $rteParams,
157  'data-rte-configuration' => $rteConfig,
158  'data-irre-object-id' => $irreObjectId,
159  ];
160  }
161 
162  public function ‪setRequest(ServerRequestInterface ‪$request): void
163  {
164  $this->request = ‪$request;
165  // initialize here, this is a dirty hack as long as the interface does not support setting a request object properly
166  // see ElementBrowserController.php for the process on how the program code flow is used
167  $this->‪initialize();
168  }
169 
170  protected function ‪getRequest(): ServerRequestInterface
171  {
172  return $this->request ?? ‪$GLOBALS['TYPO3_REQUEST'];
173  }
174 
178  protected function ‪getLanguageService()
179  {
180  return ‪$GLOBALS['LANG'];
181  }
182 
186  protected function ‪getBackendUser()
187  {
188  return ‪$GLOBALS['BE_USER'];
189  }
190 }
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$uriBuilder
‪UriBuilder $uriBuilder
Definition: AbstractElementBrowser.php:69
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$pageRenderer
‪PageRenderer $pageRenderer
Definition: AbstractElementBrowser.php:68
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\getRequest
‪getRequest()
Definition: AbstractElementBrowser.php:167
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\__construct
‪__construct(IconFactory $iconFactory, PageRenderer $pageRenderer, UriBuilder $uriBuilder, ModuleTemplateFactory $moduleTemplateFactory)
Definition: AbstractElementBrowser.php:72
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$request
‪ServerRequestInterface $request
Definition: AbstractElementBrowser.php:65
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$thisScript
‪string $thisScript
Definition: AbstractElementBrowser.php:44
‪TYPO3\CMS\Backend\Template\ModuleTemplateFactory
Definition: ModuleTemplateFactory.php:29
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: AbstractElementBrowser.php:183
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$fieldRef
‪array< string, function getBodyTagAttributes() { return[];} protected array< string, function getBParamDataAttributes() { $params=explode('|', $this->bparams);$fieldRef=$params[0];$rteParams=$params[1];$rteConfig=$params[2];$irreObjectId=$params[4] ?? null;return['data-form-field-name'=> 'data[' . $fieldRef . '][' . $rteParams . '][' . $rteConfig . ']', 'data-field-reference'=> $fieldRef
Definition: AbstractElementBrowser.php:152
‪TYPO3\CMS\Backend\Template\ModuleTemplate
Definition: ModuleTemplate.php:46
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:40
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\determineScriptUrl
‪determineScriptUrl()
Definition: AbstractElementBrowser.php:103
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser
Definition: AbstractElementBrowser.php:35
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\setRequest
‪array< string, getBodyTagAttributes() { return[];} protected array< string, function getBParamDataAttributes() { $params=explode('|', $this->bparams);$fieldRef=$params[0];$rteParams=$params[1];$rteConfig=$params[2];$irreObjectId=$params[4] ?? null;return['data-form-field-name'=> 'data[' . $fieldRef . '][' . $rteParams . '][' . $rteConfig . ']', 'data-field-reference'=> function setRequest(ServerRequestInterface $request)
Definition: AbstractElementBrowser.php:159
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\getLanguageService
‪LanguageService getLanguageService()
Definition: AbstractElementBrowser.php:175
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\initVariables
‪initVariables()
Definition: AbstractElementBrowser.php:110
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$moduleTemplate
‪ModuleTemplate $moduleTemplate
Definition: AbstractElementBrowser.php:38
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$iconFactory
‪IconFactory $iconFactory
Definition: AbstractElementBrowser.php:67
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\initialize
‪initialize()
Definition: AbstractElementBrowser.php:87
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$bparams
‪string $bparams
Definition: AbstractElementBrowser.php:63
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\$moduleTemplateFactory
‪ModuleTemplateFactory $moduleTemplateFactory
Definition: AbstractElementBrowser.php:70
‪TYPO3\CMS\Recordlist\Browser\AbstractElementBrowser\setBodyTagParameters
‪setBodyTagParameters()
Definition: AbstractElementBrowser.php:118
‪TYPO3\CMS\Recordlist\Browser
Definition: AbstractElementBrowser.php:16