‪TYPO3CMS  10.4
FormManagerController.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 Symfony\Component\Yaml\Yaml;
35 use ‪TYPO3\CMS\Form\Exception as FormException;
39 
47 {
48 
52  protected ‪$databaseService;
53 
59  {
60  $this->databaseService = ‪$databaseService;
61  }
62 
68  protected ‪$defaultViewObjectName = BackendTemplateView::class;
69 
75  public function ‪indexAction()
76  {
78  $this->view->getModuleTemplate()->setModuleName($this->request->getPluginName() . '_' . $this->request->getControllerName());
79  $this->view->getModuleTemplate()->setFlashMessageQueue($this->controllerContext->getFlashMessageQueue());
80 
81  $this->view->assign('forms', $this->‪getAvailableFormDefinitions());
82  $this->view->assign('stylesheets', $this->‪resolveResourcePaths($this->formSettings['formManager']['stylesheets']));
83  $this->view->assign('dynamicRequireJsModules', $this->formSettings['formManager']['dynamicRequireJsModules']);
84  $this->view->assign('formManagerAppInitialData', $this->‪getFormManagerAppInitialData());
85  if (!empty($this->formSettings['formManager']['javaScriptTranslationFile'])) {
86  $this->‪getPageRenderer()->‪addInlineLanguageLabelFile($this->formSettings['formManager']['javaScriptTranslationFile']);
87  }
88  }
89 
96  public function ‪initializeCreateAction()
97  {
98  $this->defaultViewObjectName = JsonView::class;
99  }
100 
112  public function ‪createAction(string $formName, string $templatePath, string $prototypeName, string $savePath)
113  {
114  if (!$this->formPersistenceManager->isAllowedPersistencePath($savePath)) {
115  throw new ‪PersistenceManagerException(sprintf('Save to path "%s" is not allowed', $savePath), 1614500657);
116  }
117 
118  if (!$this->‪isValidTemplatePath($prototypeName, $templatePath)) {
119  throw new FormException(sprintf('The template path "%s" is not allowed', $templatePath), 1329233410);
120  }
121  if (empty($formName)) {
122  throw new FormException('No form name', 1472312204);
123  }
124 
125  $templatePath = GeneralUtility::getFileAbsFileName($templatePath);
126  $form = Yaml::parse((string)file_get_contents($templatePath));
127  $form['label'] = $formName;
128  $form['identifier'] = $this->formPersistenceManager->getUniqueIdentifier($this->‪convertFormNameToIdentifier($formName));
129  $form['prototypeName'] = $prototypeName;
130 
131  $formPersistenceIdentifier = $this->formPersistenceManager->getUniquePersistenceIdentifier($form['identifier'], $savePath);
132 
133  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormCreate'] ?? [] as $className) {
134  $hookObj = GeneralUtility::makeInstance($className);
135  if (method_exists($hookObj, 'beforeFormCreate')) {
136  $form = $hookObj->beforeFormCreate(
137  $formPersistenceIdentifier,
138  $form
139  );
140  }
141  }
142 
143  ‪$response = [
144  'status' => 'success',
145  'url' => $this->controllerContext->getUriBuilder()->uriFor('index', ['formPersistenceIdentifier' => $formPersistenceIdentifier], 'FormEditor')
146  ];
147 
148  try {
149  $this->formPersistenceManager->save($formPersistenceIdentifier, $form);
150  } catch (‪PersistenceManagerException $e) {
151  ‪$response = [
152  'status' => 'error',
153  'message' => $e->getMessage(),
154  'code' => $e->getCode(),
155  ];
156  }
157 
158  $this->view->assign('response', ‪$response);
159  // createAction uses the Extbase JsonView::class.
160  // That's why we have to set the view variables in this way.
161  $this->view->setVariablesToRender([
162  'response',
163  ]);
164  }
165 
172  public function ‪initializeDuplicateAction()
173  {
174  $this->defaultViewObjectName = JsonView::class;
175  }
176 
186  public function ‪duplicateAction(string $formName, string $formPersistenceIdentifier, string $savePath)
187  {
188  if (!$this->formPersistenceManager->isAllowedPersistencePath($savePath)) {
189  throw new ‪PersistenceManagerException(sprintf('Save to path "%s" is not allowed', $savePath), 1614500658);
190  }
191  if (!$this->formPersistenceManager->isAllowedPersistencePath($formPersistenceIdentifier)) {
192  throw new ‪PersistenceManagerException(sprintf('Read of "%s" is not allowed', $formPersistenceIdentifier), 1614500659);
193  }
194 
195  $formToDuplicate = $this->formPersistenceManager->load($formPersistenceIdentifier);
196  $formToDuplicate['label'] = $formName;
197  $formToDuplicate['identifier'] = $this->formPersistenceManager->getUniqueIdentifier($this->‪convertFormNameToIdentifier($formName));
198 
199  $formPersistenceIdentifier = $this->formPersistenceManager->getUniquePersistenceIdentifier($formToDuplicate['identifier'], $savePath);
200 
201  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormDuplicate'] ?? [] as $className) {
202  $hookObj = GeneralUtility::makeInstance($className);
203  if (method_exists($hookObj, 'beforeFormDuplicate')) {
204  $formToDuplicate = $hookObj->beforeFormDuplicate(
205  $formPersistenceIdentifier,
206  $formToDuplicate
207  );
208  }
209  }
210 
211  ‪$response = [
212  'status' => 'success',
213  'url' => $this->controllerContext->getUriBuilder()->uriFor('index', ['formPersistenceIdentifier' => $formPersistenceIdentifier], 'FormEditor')
214  ];
215 
216  try {
217  $this->formPersistenceManager->save($formPersistenceIdentifier, $formToDuplicate);
218  } catch (‪PersistenceManagerException $e) {
219  ‪$response = [
220  'status' => 'error',
221  'message' => $e->getMessage(),
222  'code' => $e->getCode(),
223  ];
224  }
225 
226  $this->view->assign('response', ‪$response);
227  // createAction uses the Extbase JsonView::class.
228  // That's why we have to set the view variables in this way.
229  $this->view->setVariablesToRender([
230  'response',
231  ]);
232  }
233 
240  public function ‪initializeReferencesAction()
241  {
242  $this->defaultViewObjectName = JsonView::class;
243  }
244 
252  public function ‪referencesAction(string $formPersistenceIdentifier)
253  {
254  if (!$this->formPersistenceManager->isAllowedPersistencePath($formPersistenceIdentifier)) {
255  throw new ‪PersistenceManagerException(sprintf('Read from "%s" is not allowed', $formPersistenceIdentifier), 1614500660);
256  }
257 
258  $this->view->assign('references', $this->‪getProcessedReferencesRows($formPersistenceIdentifier));
259  $this->view->assign('formPersistenceIdentifier', $formPersistenceIdentifier);
260  // referencesAction uses the extbase JsonView::class.
261  // That's why we have to set the view variables in this way.
262  $this->view->setVariablesToRender([
263  'references',
264  'formPersistenceIdentifier'
265  ]);
266  }
267 
275  public function ‪deleteAction(string $formPersistenceIdentifier)
276  {
277  if (!$this->formPersistenceManager->isAllowedPersistencePath($formPersistenceIdentifier)) {
278  throw new ‪PersistenceManagerException(sprintf('Delete "%s" is not allowed', $formPersistenceIdentifier), 1614500661);
279  }
280 
281  if (empty($this->databaseService->getReferencesByPersistenceIdentifier($formPersistenceIdentifier))) {
282  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormDelete'] ?? [] as $className) {
283  $hookObj = GeneralUtility::makeInstance($className);
284  if (method_exists($hookObj, 'beforeFormDelete')) {
285  $hookObj->beforeFormDelete(
286  $formPersistenceIdentifier
287  );
288  }
289  }
290 
291  $this->formPersistenceManager->delete($formPersistenceIdentifier);
292  } else {
294  $this->formSettings['formManager']['controller'],
295  $this->formSettings['formManager']['translationFiles'] ?? []
296  );
297 
298  $this->‪addFlashMessage(
299  sprintf($controllerConfiguration['deleteAction']['errorMessage'], $formPersistenceIdentifier),
300  $controllerConfiguration['deleteAction']['errorTitle'],
302  true
303  );
304  }
305  $this->‪redirect('index');
306  }
307 
318  protected function ‪getAccessibleFormStorageFolders(): array
319  {
320  $preparedAccessibleFormStorageFolders = [];
321  foreach ($this->formPersistenceManager->getAccessibleFormStorageFolders() as $identifier => $folder) {
322  $preparedAccessibleFormStorageFolders[] = [
323  'label' => $folder->getName(),
324  'value' => $identifier
325  ];
326  }
327 
328  if ($this->formSettings['persistenceManager']['allowSaveToExtensionPaths']) {
329  foreach ($this->formPersistenceManager->getAccessibleExtensionFolders() as $relativePath => $fullPath) {
330  $preparedAccessibleFormStorageFolders[] = [
331  'label' => $relativePath,
332  'value' => $relativePath
333  ];
334  }
335  }
336 
337  return $preparedAccessibleFormStorageFolders;
338  }
339 
346  protected function ‪getFormManagerAppInitialData(): string
347  {
348  $formManagerAppInitialData = [
349  'selectablePrototypesConfiguration' => $this->formSettings['formManager']['selectablePrototypesConfiguration'],
350  'accessibleFormStorageFolders' => $this->‪getAccessibleFormStorageFolders(),
351  'endpoints' => [
352  'create' => $this->controllerContext->getUriBuilder()->uriFor('create'),
353  'duplicate' => $this->controllerContext->getUriBuilder()->uriFor('duplicate'),
354  'delete' => $this->controllerContext->getUriBuilder()->uriFor('delete'),
355  'references' => $this->controllerContext->getUriBuilder()->uriFor('references')
356  ],
357  ];
358 
359  $formManagerAppInitialData = ‪ArrayUtility::reIndexNumericArrayKeysRecursive($formManagerAppInitialData);
360  $formManagerAppInitialData = ‪TranslationService::getInstance()->‪translateValuesRecursive(
361  $formManagerAppInitialData,
362  $this->formSettings['formManager']['translationFiles'] ?? []
363  );
364  return json_encode($formManagerAppInitialData);
365  }
366 
372  protected function ‪getAvailableFormDefinitions(): array
373  {
374  $allReferencesForFileUid = $this->databaseService->getAllReferencesForFileUid();
375  $allReferencesForPersistenceIdentifier = $this->databaseService->getAllReferencesForPersistenceIdentifier();
376 
377  $availableFormDefinitions = [];
378  foreach ($this->formPersistenceManager->listForms() as $formDefinition) {
379  $referenceCount = 0;
380  if (
381  isset($formDefinition['fileUid'])
382  && array_key_exists($formDefinition['fileUid'], $allReferencesForFileUid)
383  ) {
384  $referenceCount = $allReferencesForFileUid[$formDefinition['fileUid']];
385  } elseif (array_key_exists($formDefinition['persistenceIdentifier'], $allReferencesForPersistenceIdentifier)) {
386  $referenceCount = $allReferencesForPersistenceIdentifier[$formDefinition['persistenceIdentifier']];
387  }
388 
389  $formDefinition['referenceCount'] = $referenceCount;
390  $availableFormDefinitions[] = $formDefinition;
391  }
392 
393  return $availableFormDefinitions;
394  }
395 
404  protected function ‪getProcessedReferencesRows(string $persistenceIdentifier): array
405  {
406  if (empty($persistenceIdentifier)) {
407  throw new \InvalidArgumentException('$persistenceIdentifier must not be empty.', 1477071939);
408  }
409 
410  $references = [];
411  $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
412 
413  $referenceRows = $this->databaseService->getReferencesByPersistenceIdentifier($persistenceIdentifier);
414  foreach ($referenceRows as &$referenceRow) {
415  $record = $this->‪getRecord($referenceRow['tablename'], $referenceRow['recuid']);
416  if (!$record) {
417  continue;
418  }
419  $pageRecord = $this->‪getRecord('pages', $record['pid']);
420  $urlParameters = [
421  'edit' => [
422  $referenceRow['tablename'] => [
423  $referenceRow['recuid'] => 'edit'
424  ]
425  ],
426  'returnUrl' => $this->‪getModuleUrl('web_FormFormbuilder')
427  ];
428 
429  $references[] = [
430  'recordPageTitle' => is_array($pageRecord) ? $this->‪getRecordTitle('pages', $pageRecord) : '',
431  'recordTitle' => $this->‪getRecordTitle($referenceRow['tablename'], $record, true),
432  'recordIcon' => $iconFactory->getIconForRecord($referenceRow['tablename'], $record, ‪Icon::SIZE_SMALL)->render(),
433  'recordUid' => $referenceRow['recuid'],
434  'recordEditUrl' => $this->‪getModuleUrl('record_edit', $urlParameters),
435  ];
436  }
437  return $references;
438  }
439 
451  protected function ‪isValidTemplatePath(string $prototypeName, string $templatePath): bool
452  {
453  $isValid = false;
454  foreach ($this->formSettings['formManager']['selectablePrototypesConfiguration'] as $prototypesConfiguration) {
455  if ($prototypesConfiguration['identifier'] !== $prototypeName) {
456  continue;
457  }
458  foreach ($prototypesConfiguration['newFormTemplates'] as $templatesConfiguration) {
459  if ($templatesConfiguration['templatePath'] !== $templatePath) {
460  continue;
461  }
462  $isValid = true;
463  break;
464  }
465  }
466 
467  $templatePath = GeneralUtility::getFileAbsFileName($templatePath);
468  if (!is_file($templatePath)) {
469  $isValid = false;
470  }
471 
472  return $isValid;
473  }
474 
480  protected function ‪registerDocheaderButtons()
481  {
483  $buttonBar = $this->view->getModuleTemplate()->getDocHeaderComponent()->getButtonBar();
484  $currentRequest = ‪$this->request;
485  $moduleName = $currentRequest->‪getPluginName();
486  $getVars = $this->request->getArguments();
487 
488  // Create new
489  $addFormButton = $buttonBar->makeLinkButton()
490  ->setDataAttributes(['identifier' => 'newForm'])
491  ->setHref('#')
492  ->setTitle($this->‪getLanguageService()->sL('LLL:EXT:form/Resources/Private/Language/Database.xlf:formManager.create_new_form'))
493  ->setIcon($this->view->getModuleTemplate()->getIconFactory()->getIcon('actions-add', ‪Icon::SIZE_SMALL));
494  $buttonBar->addButton($addFormButton, ‪ButtonBar::BUTTON_POSITION_LEFT);
495 
496  // Reload
497  $reloadButton = $buttonBar->makeLinkButton()
498  ->setHref(GeneralUtility::getIndpEnv('REQUEST_URI'))
499  ->setTitle($this->‪getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.reload'))
500  ->setIcon($this->view->getModuleTemplate()->getIconFactory()->getIcon('actions-refresh', ‪Icon::SIZE_SMALL));
501  $buttonBar->addButton($reloadButton, ‪ButtonBar::BUTTON_POSITION_RIGHT);
502 
503  // Shortcut
504  $mayMakeShortcut = $this->‪getBackendUser()->‪mayMakeShortcut();
505  if ($mayMakeShortcut) {
506  $extensionName = $currentRequest->getControllerExtensionName();
507  if (count($getVars) === 0) {
508  $modulePrefix = strtolower('tx_' . $extensionName . '_' . $moduleName);
509  $getVars = ['id', 'route', $modulePrefix];
510  }
511 
512  $shortcutButton = $buttonBar->makeShortcutButton()
513  ->setModuleName($moduleName)
514  ->setDisplayName($this->‪getLanguageService()->sL('LLL:EXT:form/Resources/Private/Language/Database.xlf:module.shortcut_name'))
515  ->setGetVariables($getVars);
516  $buttonBar->addButton($shortcutButton, ‪ButtonBar::BUTTON_POSITION_RIGHT);
517  }
518  }
519 
526  protected function ‪convertFormNameToIdentifier(string $formName): string
527  {
528  $csConverter = GeneralUtility::makeInstance(CharsetConverter::class);
529 
530  $formIdentifier = $csConverter->specCharsToASCII('utf-8', $formName);
531  $formIdentifier = (string)preg_replace('/[^a-zA-Z0-9-_]/', '', $formIdentifier);
532  $formIdentifier = lcfirst($formIdentifier);
533  return $formIdentifier;
534  }
535 
543  protected function ‪getRecord(string $table, int $uid)
544  {
545  return ‪BackendUtility::getRecord($table, $uid);
546  }
547 
556  protected function ‪getRecordTitle(string $table, array $row, bool $prep = false): string
557  {
558  return ‪BackendUtility::getRecordTitle($table, $row, $prep);
559  }
560 
568  protected function ‪getModuleUrl(string $moduleName, array $urlParameters = []): string
569  {
571  ‪$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
572  return (string)‪$uriBuilder->buildUriFromRoute($moduleName, $urlParameters);
573  }
574 
580  protected function ‪getBackendUser(): ‪BackendUserAuthentication
581  {
582  return ‪$GLOBALS['BE_USER'];
583  }
584 
590  protected function ‪getLanguageService(): ‪LanguageService
591  {
592  return ‪$GLOBALS['LANG'];
593  }
594 
600  protected function ‪getPageRenderer(): ‪PageRenderer
601  {
602  return GeneralUtility::makeInstance(PageRenderer::class);
603  }
604 }
‪TYPO3\CMS\Form\Service\DatabaseService
Definition: DatabaseService.php:32
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Form\Controller\FormManagerController\createAction
‪createAction(string $formName, string $templatePath, string $prototypeName, string $savePath)
Definition: FormManagerController.php:110
‪TYPO3\CMS\Core\Page\PageRenderer\addInlineLanguageLabelFile
‪addInlineLanguageLabelFile($fileRef, $selectionPrefix='', $stripFromSelectionName='')
Definition: PageRenderer.php:1564
‪TYPO3\CMS\Form\Service\TranslationService\getInstance
‪static TranslationService getInstance()
Definition: TranslationService.php:83
‪TYPO3\CMS\Core\Messaging\AbstractMessage
Definition: AbstractMessage.php:26
‪TYPO3\CMS\Backend\Template\Components\ButtonBar\BUTTON_POSITION_LEFT
‪const BUTTON_POSITION_LEFT
Definition: ButtonBar.php:36
‪TYPO3\CMS\Backend\Template\Components\ButtonBar
Definition: ButtonBar.php:32
‪TYPO3\CMS\Form\Controller\FormManagerController\deleteAction
‪deleteAction(string $formPersistenceIdentifier)
Definition: FormManagerController.php:273
‪TYPO3\CMS\Form\Controller\FormManagerController\getFormManagerAppInitialData
‪string getFormManagerAppInitialData()
Definition: FormManagerController.php:344
‪TYPO3\CMS\Form\Service\TranslationService
Definition: TranslationService.php:44
‪TYPO3\CMS\Form\Controller\FormManagerController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: FormManagerController.php:578
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Form\Mvc\Persistence\Exception\PersistenceManagerException
Definition: PersistenceManagerException.php:28
‪TYPO3\CMS\Form\Controller\FormManagerController\registerDocheaderButtons
‪registerDocheaderButtons()
Definition: FormManagerController.php:478
‪TYPO3\CMS\Form\Controller\FormManagerController\isValidTemplatePath
‪bool isValidTemplatePath(string $prototypeName, string $templatePath)
Definition: FormManagerController.php:449
‪TYPO3\CMS\Form\Controller\FormManagerController\$defaultViewObjectName
‪string $defaultViewObjectName
Definition: FormManagerController.php:66
‪TYPO3\CMS\Form\Controller\FormManagerController\getRecord
‪array null getRecord(string $table, int $uid)
Definition: FormManagerController.php:541
‪TYPO3\CMS\Form\Controller\FormManagerController\duplicateAction
‪duplicateAction(string $formName, string $formPersistenceIdentifier, string $savePath)
Definition: FormManagerController.php:184
‪TYPO3\CMS\Form\Controller\AbstractBackendController\resolveResourcePaths
‪array resolveResourcePaths(array $resourcePaths)
Definition: AbstractBackendController.php:78
‪TYPO3\CMS\Extbase\Mvc\Request\getPluginName
‪string getPluginName()
Definition: Request.php:181
‪TYPO3\CMS\Form\Controller\FormManagerController\getPageRenderer
‪PageRenderer getPageRenderer()
Definition: FormManagerController.php:598
‪TYPO3\CMS\Form\Controller
Definition: AbstractBackendController.php:18
‪TYPO3\CMS\Core\Charset\CharsetConverter
Definition: CharsetConverter.php:54
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:33
‪TYPO3\CMS\Form\Controller\FormManagerController\getProcessedReferencesRows
‪array getProcessedReferencesRows(string $persistenceIdentifier)
Definition: FormManagerController.php:402
‪TYPO3\CMS\Form\Controller\FormManagerController\injectDatabaseService
‪injectDatabaseService(DatabaseService $databaseService)
Definition: FormManagerController.php:57
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\addFlashMessage
‪addFlashMessage($messageBody, $messageTitle='', $severity=AbstractMessage::OK, $storeInSession=true)
Definition: ActionController.php:747
‪TYPO3\CMS\Form\Controller\FormManagerController\indexAction
‪indexAction()
Definition: FormManagerController.php:73
‪TYPO3\CMS\Form\Service\TranslationService\translateValuesRecursive
‪array translateValuesRecursive(array $array, array $translationFiles=[])
Definition: TranslationService.php:179
‪TYPO3\CMS\Form\Controller\FormManagerController\getRecordTitle
‪string getRecordTitle(string $table, array $row, bool $prep=false)
Definition: FormManagerController.php:554
‪TYPO3\CMS\Form\Controller\FormManagerController\getAccessibleFormStorageFolders
‪array getAccessibleFormStorageFolders()
Definition: FormManagerController.php:316
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\redirect
‪redirect($actionName, $controllerName=null, $extensionName=null, array $arguments=null, $pageUid=null, $delay=0, $statusCode=303)
Definition: ActionController.php:852
‪TYPO3\CMS\Form\Controller\FormManagerController
Definition: FormManagerController.php:47
‪TYPO3\CMS\Form\Controller\FormManagerController\getAvailableFormDefinitions
‪array getAvailableFormDefinitions()
Definition: FormManagerController.php:370
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:42
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\mayMakeShortcut
‪bool mayMakeShortcut()
Definition: BackendUserAuthentication.php:877
‪TYPO3\CMS\Form\Exception
Definition: Exception.php:26
‪TYPO3\CMS\Form\Controller\FormManagerController\$databaseService
‪DatabaseService $databaseService
Definition: FormManagerController.php:51
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$response
‪TYPO3 CMS Extbase Mvc Response $response
Definition: ActionController.php:115
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Form\Controller\FormManagerController\initializeCreateAction
‪initializeCreateAction()
Definition: FormManagerController.php:94
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$uriBuilder
‪TYPO3 CMS Extbase Mvc Web Routing UriBuilder $uriBuilder
Definition: ActionController.php:127
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordTitle
‪static string getRecordTitle($table, $row, $prep=false, $forceResult=true)
Definition: BackendUtility.php:1541
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Form\Controller\FormManagerController\referencesAction
‪referencesAction(string $formPersistenceIdentifier)
Definition: FormManagerController.php:250
‪TYPO3\CMS\Form\Controller\FormManagerController\initializeReferencesAction
‪initializeReferencesAction()
Definition: FormManagerController.php:238
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecord
‪static array null getRecord($table, $uid, $fields=' *', $where='', $useDeleteClause=true)
Definition: BackendUtility.php:95
‪TYPO3\CMS\Backend\View\BackendTemplateView
Definition: BackendTemplateView.php:28
‪TYPO3\CMS\Form\Controller\FormManagerController\getLanguageService
‪LanguageService getLanguageService()
Definition: FormManagerController.php:588
‪TYPO3\CMS\Form\Controller\FormManagerController\getModuleUrl
‪string getModuleUrl(string $moduleName, array $urlParameters=[])
Definition: FormManagerController.php:566
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:24
‪TYPO3\CMS\Form\Controller\FormManagerController\initializeDuplicateAction
‪initializeDuplicateAction()
Definition: FormManagerController.php:170
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$request
‪TYPO3 CMS Extbase Mvc Request $request
Definition: ActionController.php:109
‪TYPO3\CMS\Core\Utility\ArrayUtility\reIndexNumericArrayKeysRecursive
‪static array reIndexNumericArrayKeysRecursive(array $array)
Definition: ArrayUtility.php:214
‪TYPO3\CMS\Form\Controller\FormManagerController\convertFormNameToIdentifier
‪string convertFormNameToIdentifier(string $formName)
Definition: FormManagerController.php:524
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Backend\Template\Components\ButtonBar\BUTTON_POSITION_RIGHT
‪const BUTTON_POSITION_RIGHT
Definition: ButtonBar.php:41
‪TYPO3\CMS\Form\Controller\AbstractBackendController
Definition: AbstractBackendController.php:33
‪TYPO3\CMS\Extbase\Mvc\View\JsonView
Definition: JsonView.php:29
‪TYPO3\CMS\Core\Messaging\AbstractMessage\ERROR
‪const ERROR
Definition: AbstractMessage.php:31