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