‪TYPO3CMS  ‪main
AbstractElementBrowser.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Psr\Http\Message\ServerRequestInterface;
31 
39 {
41 
45  protected string ‪$identifier = '';
46 
65  protected ‪$bparams = '';
66 
67  protected ?ServerRequestInterface ‪$request = null;
69 
70  public function ‪__construct(
71  protected readonly ‪IconFactory $iconFactory,
72  protected readonly ‪PageRenderer $pageRenderer,
73  protected readonly ‪UriBuilder $uriBuilder,
74  protected readonly ‪ExtensionConfiguration $extensionConfiguration,
75  protected readonly ‪BackendViewFactory $backendViewFactory,
76  ) {}
77 
81  protected function ‪initialize(ServerRequestInterface ‪$request)
82  {
83  $this->‪setUpBasicPageRendererForBackend($this->pageRenderer, $this->extensionConfiguration, $this->‪getRequest(), $this->‪getLanguageService());
84  $view = $this->backendViewFactory->create(‪$request);
85  $this->view = ‪$view;
86  $this->pageRenderer->loadJavaScriptModule('@typo3/backend/element-browser.js');
87  $this->pageRenderer->loadJavaScriptModule('@typo3/backend/viewport/resizable-navigation.js');
88  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_misc.xlf');
89  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_core.xlf');
90  $this->‪initVariables($request);
91  }
92 
96  public function ‪getIdentifier(): string
97  {
98  return ‪$this->identifier;
99  }
100 
101  protected function ‪initVariables(ServerRequestInterface ‪$request)
102  {
103  $this->bparams = ‪$request->getParsedBody()['bparams'] ?? ‪$request->getQueryParams()['bparams'] ?? '';
104  }
105 
106  protected function ‪getBodyTagParameters(): string
107  {
108  $bodyDataAttributes = array_merge(
109  $this->getBParamDataAttributes(),
110  $this->getBodyTagAttributes()
111  );
112  return GeneralUtility::implodeAttributes($bodyDataAttributes, true, true);
113  }
114 
118  protected function getBodyTagAttributes()
119  {
120  return [];
121  }
122 
128  protected function getBParamDataAttributes()
129  {
130  $params = explode('|', $this->bparams);
131  ‪$fieldRef = $params[0] ?? null;
132  $rteParams = $params[1] ?? null;
133  $rteConfig = $params[2] ?? null;
134  $irreObjectId = $params[4] ?? null;
135 
136  return [
137  'data-form-field-name' => 'data[' . ‪$fieldRef . '][' . $rteParams . '][' . $rteConfig . ']',
138  'data-field-reference' => ‪$fieldRef,
139  'data-rte-parameters' => $rteParams,
140  'data-rte-configuration' => $rteConfig,
141  'data-irre-object-id' => $irreObjectId,
142  ];
143  }
144 
145  public function ‪setRequest(ServerRequestInterface ‪$request): void
146  {
147  $this->request = ‪$request;
148  // initialize here, this is a dirty hack as long as the interface does not support setting a request object properly
149  // see ElementBrowserController.php for the process on how the program code flow is used
150  $this->‪initialize($request);
151  }
152 
153  protected function ‪getRequest(): ServerRequestInterface
154  {
155  return $this->request ?? ‪$GLOBALS['TYPO3_REQUEST'];
156  }
157 
158  protected function ‪getLanguageService(): ‪LanguageService
159  {
160  return ‪$GLOBALS['LANG'];
161  }
162 
163  protected function ‪getBackendUser(): ‪BackendUserAuthentication
164  {
165  return ‪$GLOBALS['BE_USER'];
166  }
167 }
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\$fieldRef
‪array< string, function getBodyTagAttributes() { return[];} protected array< string, function getBParamDataAttributes() { $params=explode('|', $this->bparams);$fieldRef=$params[0] ?? null;$rteParams=$params[1] ?? null;$rteConfig=$params[2] ?? null;$irreObjectId=$params[4] ?? null;return['data-form-field-name'=> 'data[' . $fieldRef . '][' . $rteParams . '][' . $rteConfig . ']', 'data-field-reference'=> $fieldRef
Definition: AbstractElementBrowser.php:136
‪TYPO3\CMS\Core\View\ViewInterface
Definition: ViewInterface.php:24
‪TYPO3\CMS\Backend\View\BackendViewFactory
Definition: BackendViewFactory.php:35
‪TYPO3\CMS\Core\Configuration\ExtensionConfiguration
Definition: ExtensionConfiguration.php:47
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\__construct
‪__construct(protected readonly IconFactory $iconFactory, protected readonly PageRenderer $pageRenderer, protected readonly UriBuilder $uriBuilder, protected readonly ExtensionConfiguration $extensionConfiguration, protected readonly BackendViewFactory $backendViewFactory,)
Definition: AbstractElementBrowser.php:68
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\getIdentifier
‪getIdentifier()
Definition: AbstractElementBrowser.php:94
‪TYPO3\CMS\Backend\Template\PageRendererBackendSetupTrait
Definition: PageRendererBackendSetupTrait.php:45
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\$bparams
‪string $bparams
Definition: AbstractElementBrowser.php:63
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser
Definition: AbstractElementBrowser.php:39
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\$view
‪ViewInterface $view
Definition: AbstractElementBrowser.php:66
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\initialize
‪initialize(ServerRequestInterface $request)
Definition: AbstractElementBrowser.php:79
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:44
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\getBodyTagParameters
‪getBodyTagParameters()
Definition: AbstractElementBrowser.php:104
‪TYPO3\CMS\Backend\ElementBrowser
Definition: AbstractElementBrowser.php:18
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:44
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\setRequest
‪array< string, getBodyTagAttributes() { return[];} protected array< string, function getBParamDataAttributes() { $params=explode('|', $this->bparams);$fieldRef=$params[0] ?? null;$rteParams=$params[1] ?? null;$rteConfig=$params[2] ?? null;$irreObjectId=$params[4] ?? null;return['data-form-field-name'=> 'data[' . $fieldRef . '][' . $rteParams . '][' . $rteConfig . ']', 'data-field-reference'=> function setRequest(ServerRequestInterface $request)
Definition: AbstractElementBrowser.php:143
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\$identifier
‪string $identifier
Definition: AbstractElementBrowser.php:44
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\getLanguageService
‪getLanguageService()
Definition: AbstractElementBrowser.php:156
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\getRequest
‪getRequest()
Definition: AbstractElementBrowser.php:151
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\initVariables
‪initVariables(ServerRequestInterface $request)
Definition: AbstractElementBrowser.php:99
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Template\PageRendererBackendSetupTrait\setUpBasicPageRendererForBackend
‪setUpBasicPageRendererForBackend(PageRenderer $pageRenderer, ExtensionConfiguration $extensionConfiguration, ServerRequestInterface $request, LanguageService $languageService,)
Definition: PageRendererBackendSetupTrait.php:49
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\$request
‪ServerRequestInterface $request
Definition: AbstractElementBrowser.php:65
‪TYPO3\CMS\Backend\ElementBrowser\AbstractElementBrowser\getBackendUser
‪getBackendUser()
Definition: AbstractElementBrowser.php:161