‪TYPO3CMS  9.5
FrontendEditingController.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
31 
38 {
45  public ‪$TSFE_EDIT;
46 
47  public function ‪__construct()
48  {
49  trigger_error(__CLASS__ . ' will be removed in TYPO3 v10.0. Functionality has been moved to EXT:feedit, FrontendBackendUserAuthentication and ContentObjectRenderer.', E_USER_DEPRECATED);
50  }
51 
55  public function ‪initConfigOptions()
56  {
57  $this->TSFE_EDIT = GeneralUtility::_GP('TSFE_EDIT');
58  // Include classes for editing IF editing module in Admin Panel is open
60  || (int)$this->‪getTypoScriptFrontendController()->displayFieldEditIcons === 1)
61  && $this->‪isEditAction()
62  ) {
63  $this->‪editAction();
64  }
65  }
66 
78  public function ‪displayEditPanel($content, array $conf, $currentRecord, array $dataArray)
79  {
80  if ($conf['newRecordFromTable']) {
81  $currentRecord = $conf['newRecordFromTable'] . ':NEW';
82  $conf['allow'] = 'new';
83  $checkEditAccessInternals = false;
84  } else {
85  $checkEditAccessInternals = true;
86  }
87  list($table, $uid) = explode(':', $currentRecord);
88  // Page ID for new records, 0 if not specified
89  $newRecordPid = (int)$conf['newRecordInPid'];
90  $newUid = null;
91  if (!$conf['onlyCurrentPid'] || $dataArray['pid'] == $this->‪getTypoScriptFrontendController()->id) {
92  if ($table === 'pages') {
93  $newUid = $uid;
94  } else {
95  if ($conf['newRecordFromTable']) {
96  $newUid = $this->‪getTypoScriptFrontendController()->id;
97  if ($newRecordPid) {
98  $newUid = $newRecordPid;
99  }
100  } else {
101  $newUid = -1 * $uid;
102  }
103  }
104  }
105  if ($this->‪getTypoScriptFrontendController()->‪displayEditIcons && $table && $this->‪allowedToEdit($table, $dataArray, $conf, $checkEditAccessInternals) && $this->‪allowedToEditLanguage($table, $dataArray)) {
106  $editClass = ‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/classes/class.frontendedit.php']['edit'];
107  if ($editClass) {
108  $edit = GeneralUtility::makeInstance($editClass);
109  $allowedActions = $this->‪getAllowedEditActions($table, $conf, $dataArray['pid']);
110  $content = $edit->editPanel($content, $conf, $currentRecord, $dataArray, $table, $allowedActions, $newUid, $this->‪getHiddenFields($dataArray));
111  }
112  }
113  return $content;
114  }
115 
128  public function ‪displayEditIcons($content, $params, array $conf = [], $currentRecord = '', array $dataArray = [], $addUrlParamStr = '')
129  {
130  // Check incoming params:
131  list($currentRecordTable, $currentRecordUID) = explode(':', $currentRecord);
132  list($fieldList, $table) = array_reverse(GeneralUtility::trimExplode(':', $params, true));
133  // Reverse the array because table is optional
134  if (!$table) {
135  $table = $currentRecordTable;
136  } elseif ($table != $currentRecordTable) {
137  // If the table is set as the first parameter, and does not match the table of the current record, then just return.
138  return $content;
139  }
140  $editUid = $dataArray['_LOCALIZED_UID'] ?: $currentRecordUID;
141  // Edit icons imply that the editing action is generally allowed, assuming page and content element permissions permit it.
142  if (!array_key_exists('allow', $conf)) {
143  $conf['allow'] = 'edit';
144  }
145  if ($this->‪getTypoScriptFrontendController()->displayFieldEditIcons && $table && $this->‪allowedToEdit($table, $dataArray, $conf) && $fieldList && $this->‪allowedToEditLanguage($table, $dataArray)) {
146  $editClass = ‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/classes/class.frontendedit.php']['edit'];
147  if ($editClass) {
148  $edit = GeneralUtility::makeInstance($editClass);
149  $content = $edit->editIcons($content, $params, $conf, $currentRecord, $dataArray, $addUrlParamStr, $table, $editUid, $fieldList);
150  }
151  }
152  return $content;
153  }
154 
155  /*****************************************************
156  *
157  * Frontend Editing
158  *
159  ****************************************************/
165  public function ‪isEditAction()
166  {
167  if (is_array($this->TSFE_EDIT)) {
168  if ($this->TSFE_EDIT['cancel']) {
169  unset($this->TSFE_EDIT['cmd']);
170  } else {
171  $cmd = (string)$this->TSFE_EDIT['cmd'];
172  if (($cmd !== 'edit' || is_array($this->TSFE_EDIT['data']) && ($this->TSFE_EDIT['doSave'] || $this->TSFE_EDIT['update'] || $this->TSFE_EDIT['update_close'])) && $cmd !== 'new') {
173  // $cmd can be a command like "hide" or "move". If $cmd is "edit" or "new" it's an indication to show the formfields. But if data is sent with update-flag then $cmd = edit is accepted because edit may be sent because of .keepGoing flag.
174  return true;
175  }
176  }
177  }
178  return false;
179  }
180 
186  public function ‪isEditFormShown()
187  {
188  if (is_array($this->TSFE_EDIT)) {
189  $cmd = (string)$this->TSFE_EDIT['cmd'];
190  if ($cmd === 'edit' || $cmd === 'new') {
191  return true;
192  }
193  }
194  }
195 
202  public function ‪editAction()
203  {
204  // Commands
205  list($table, $uid) = explode(':', $this->TSFE_EDIT['record']);
206  $uid = (int)$uid;
207  $cmd = $this->TSFE_EDIT['cmd'];
208  // Look for some TSFE_EDIT data that indicates we should save.
209  if (($this->TSFE_EDIT['doSave'] || $this->TSFE_EDIT['update'] || $this->TSFE_EDIT['update_close']) && is_array($this->TSFE_EDIT['data'])) {
210  $cmd = 'save';
211  }
212  if ($cmd === 'save' || $cmd && $table && $uid && isset(‪$GLOBALS['TCA'][$table])) {
213  // Hook for defining custom editing actions. Naming is incorrect, but preserves compatibility.
214  $_params = [];
215  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['extEditAction'] ?? [] as $_funcRef) {
216  GeneralUtility::callUserFunction($_funcRef, $_params, $this);
217  }
218  // Perform the requested editing command.
219  $cmdAction = 'do' . ucwords($cmd);
220  if (is_callable([$this, $cmdAction])) {
221  $this->{$cmdAction}($table, $uid);
222  } else {
223  throw new \UnexpectedValueException('The specified frontend edit command (' . $cmd . ') is not valid.', 1225818120);
224  }
225  }
226  }
227 
234  public function ‪doHide($table, $uid)
235  {
236  $hideField = ‪$GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'];
237  if ($hideField) {
238  $recData = [];
239  $recData[$table][$uid][$hideField] = 1;
240  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
241  $dataHandler->start($recData, []);
242  $dataHandler->process_datamap();
243  }
244  }
245 
252  public function ‪doUnhide($table, $uid)
253  {
254  $hideField = ‪$GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'];
255  if ($hideField) {
256  $recData = [];
257  $recData[$table][$uid][$hideField] = 0;
258  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
259  $dataHandler->start($recData, []);
260  $dataHandler->process_datamap();
261  }
262  }
263 
270  public function ‪doUp($table, $uid)
271  {
272  $this->‪move($table, $uid, 'up');
273  }
274 
281  public function ‪doDown($table, $uid)
282  {
283  $this->‪move($table, $uid, 'down');
284  }
285 
292  public function ‪doMoveAfter($table, $uid)
293  {
294  $afterUID = $this->TSFE_EDIT['moveAfter'];
295  $this->‪move($table, $uid, '', $afterUID);
296  }
297 
306  protected function ‪move($table, $uid, $direction = '', $afterUID = 0)
307  {
308  $dataHandlerCommands = [];
309  $sortField = ‪$GLOBALS['TCA'][$table]['ctrl']['sortby'];
310  if ($sortField) {
311  // Get the current record
312  // Only fetch uid, pid and the fields that are necessary to detect the sorting factors
313  if (isset(‪$GLOBALS['TCA'][$table]['ctrl']['copyAfterDuplFields'])) {
314  $copyAfterDuplicateFields = GeneralUtility::trimExplode(',', ‪$GLOBALS['TCA'][$table]['ctrl']['copyAfterDuplFields'], true);
315  } else {
316  $copyAfterDuplicateFields = [];
317  }
318 
319  ‪$fields = $copyAfterDuplicateFields;
320  ‪$fields[] = 'uid';
321  ‪$fields[] = 'pid';
322  ‪$fields[] = $sortField;
323  ‪$fields = array_unique(‪$fields);
324 
325  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
326  ->getQueryBuilderForTable($table);
327  $queryBuilder->getRestrictions()->removeAll();
328 
329  $currentRecord = $queryBuilder
330  ->select(...‪$fields)
331  ->from($table)
332  ->where($queryBuilder->expr()->eq(
333  'uid',
334  $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)
335  ))
336  ->execute()
337  ->fetch();
338 
339  if (is_array($currentRecord)) {
340  // Fetch the record before or after the current one
341  // to define the data handler commands
342  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
343  ->getQueryBuilderForTable($table);
344 
345  $queryBuilder
346  ->select('uid', 'pid')
347  ->from($table)
348  ->where($queryBuilder->expr()->eq(
349  'pid',
350  $queryBuilder->createNamedParameter($currentRecord['pid'], \PDO::PARAM_INT)
351  ))
352  ->setMaxResults(2);
353 
354  // Disable the default restrictions (but not all) if the admin panel is in preview mode
355  if ($this->‪getBackendUser()->adminPanel instanceof AdminPanelView && $this->‪getBackendUser()->adminPanel->extGetFeAdminValue('preview')) {
356  $queryBuilder->getRestrictions()
357  ->removeByType(StartTimeRestriction::class)
358  ->removeByType(EndTimeRestriction::class)
359  ->removeByType(HiddenRestriction::class)
360  ->removeByType(FrontendGroupRestriction::class);
361  }
362 
363  if (!empty($copyAfterDuplicateFields)) {
364  foreach ($copyAfterDuplicateFields as $fieldName) {
365  $queryBuilder->andWhere($queryBuilder->expr()->eq(
366  $fieldName,
367  $queryBuilder->createNamedParameter($currentRecord[$fieldName], \PDO::PARAM_STR)
368  ));
369  }
370  }
371  if (!empty($direction)) {
372  if ($direction === 'up') {
373  $queryBuilder->andWhere(
374  $queryBuilder->expr()->lt(
375  $sortField,
376  $queryBuilder->createNamedParameter($currentRecord[$sortField], \PDO::PARAM_INT)
377  )
378  );
379  $queryBuilder->orderBy($sortField, 'DESC');
380  } else {
381  $queryBuilder->andWhere(
382  $queryBuilder->expr()->gt(
383  $sortField,
384  $queryBuilder->createNamedParameter($currentRecord[$sortField], \PDO::PARAM_INT)
385  )
386  );
387  $queryBuilder->orderBy($sortField, 'ASC');
388  }
389  }
390 
391  $result = $queryBuilder->execute();
392  if ($recordBefore = $result->fetch()) {
393  if ($afterUID) {
394  $dataHandlerCommands[$table][$uid]['move'] = -$afterUID;
395  } elseif ($direction === 'down') {
396  $dataHandlerCommands[$table][$uid]['move'] = -$recordBefore['uid'];
397  } elseif ($recordAfter = $result->fetch()) {
398  // Must take the second record above...
399  $dataHandlerCommands[$table][$uid]['move'] = -$recordAfter['uid'];
400  } else {
401  // ... and if that does not exist, use pid
402  $dataHandlerCommands[$table][$uid]['move'] = $currentRecord['pid'];
403  }
404  } elseif ($direction === 'up') {
405  $dataHandlerCommands[$table][$uid]['move'] = $currentRecord['pid'];
406  }
407  }
408 
409  // If any data handler commands were set, execute the data handler command
410  if (!empty($dataHandlerCommands)) {
411  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
412  $dataHandler->start([], $dataHandlerCommands);
413  $dataHandler->process_cmdmap();
414  }
415  }
416  }
417 
424  public function ‪doDelete($table, $uid)
425  {
426  $cmdData[$table][$uid]['delete'] = 1;
427  if (!empty($cmdData)) {
428  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
429  $dataHandler->start([], $cmdData);
430  $dataHandler->process_cmdmap();
431  }
432  }
433 
440  public function ‪doSave($table, $uid)
441  {
442  $data = $this->TSFE_EDIT['data'];
443  if (!empty($data)) {
444  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
445  $dataHandler->start($data, []);
446  $dataHandler->process_uploads($_FILES);
447  $dataHandler->process_datamap();
448  // Save the new UID back into TSFE_EDIT
449  $newUID = $dataHandler->substNEWwithIDs['NEW'];
450  if ($newUID) {
451  $this->TSFE_EDIT['newUID'] = $newUID;
452  }
453  }
454  }
455 
463  public function ‪doSaveAndClose($table, $uid)
464  {
465  $this->‪doSave($table, $uid);
466  }
467 
475  public function ‪doClose($table, $uid)
476  {
477  }
478 
487  protected function ‪allowedToEditLanguage($table, array $currentRecord)
488  {
489  // If no access right to record languages, return immediately
491  $languageAspect = GeneralUtility::makeInstance(Context::class)->getAspect('language');
492  if ($table === 'pages') {
493  $lang = $languageAspect->getId();
494  } elseif ($table === 'tt_content') {
495  $lang = $languageAspect->getContentId();
496  } elseif (‪$GLOBALS['TCA'][$table]['ctrl']['languageField']) {
497  $lang = $currentRecord[‪$GLOBALS['TCA'][$table]['ctrl']['languageField']];
498  } else {
499  $lang = -1;
500  }
501  return $this->‪getBackendUser()->‪checkLanguageAccess($lang);
502  }
503 
513  protected function ‪allowedToEdit($table, array $dataArray, array $conf, $checkEditAccessInternals = true)
514  {
515  // Unless permissions specifically allow it, editing is not allowed.
516  $mayEdit = false;
517  if ($checkEditAccessInternals) {
518  $editAccessInternals = $this->‪getBackendUser()->‪recordEditAccessInternals($table, $dataArray, false, false);
519  } else {
520  $editAccessInternals = true;
521  }
522  if ($editAccessInternals) {
523  if ($table === 'pages') {
524  if ($this->‪getBackendUser()->isAdmin() || $this->‪getBackendUser()->doesUserHaveAccess($dataArray, ‪Permission::PAGE_EDIT)) {
525  $mayEdit = true;
526  }
527  } else {
528  if ($this->‪getBackendUser()->isAdmin() || $this->‪getBackendUser()->doesUserHaveAccess(‪BackendUtility::getRecord('pages', $dataArray['pid']), ‪Permission::CONTENT_EDIT)) {
529  $mayEdit = true;
530  }
531  }
532  if (!$conf['onlyCurrentPid'] || $dataArray['pid'] == $this->‪getTypoScriptFrontendController()->id) {
533  // Permissions:
534  $types = GeneralUtility::trimExplode(',', strtolower($conf['allow']), true);
535  $allow = array_flip($types);
536  $perms = $this->‪getBackendUser()->‪calcPerms($this->‪getTypoScriptFrontendController()->page);
537  if ($table === 'pages') {
538  $allow = $this->‪getAllowedEditActions($table, $conf, $dataArray['pid'], $allow);
539  // Can only display editbox if there are options in the menu
540  if (!empty($allow)) {
541  $mayEdit = true;
542  }
543  } else {
544  $mayEdit = !empty($allow) && $perms & ‪Permission::CONTENT_EDIT;
545  }
546  }
547  }
548  return $mayEdit;
549  }
550 
560  protected function ‪getAllowedEditActions($table, array $conf, $pid, $allow = '')
561  {
562  if (!$allow) {
563  $types = GeneralUtility::trimExplode(',', strtolower($conf['allow']), true);
564  $allow = array_flip($types);
565  }
566  if (!$conf['onlyCurrentPid'] || $pid == $this->‪getTypoScriptFrontendController()->id) {
567  // Permissions
568  $types = GeneralUtility::trimExplode(',', strtolower($conf['allow']), true);
569  $allow = array_flip($types);
570  $perms = $this->‪getBackendUser()->‪calcPerms($this->‪getTypoScriptFrontendController()->page);
571  if ($table === 'pages') {
572  // Rootpage
573  if (count($this->‪getTypoScriptFrontendController()->config['rootLine']) === 1) {
574  unset($allow['move']);
575  unset($allow['hide']);
576  unset($allow['delete']);
577  }
578  if (!($perms & ‪Permission::PAGE_EDIT) || !$this->‪getBackendUser()->checkLanguageAccess(0)) {
579  unset($allow['edit']);
580  unset($allow['move']);
581  unset($allow['hide']);
582  }
583  if (!($perms & ‪Permission::PAGE_DELETE)) {
584  unset($allow['delete']);
585  }
586  if (!($perms & ‪Permission::PAGE_NEW)) {
587  unset($allow['new']);
588  }
589  }
590  }
591  return $allow;
592  }
593 
599  public function ‪getJavascriptIncludes()
600  {
601  // No extra JS includes needed
602  return '';
603  }
604 
612  public function ‪getHiddenFields(array $dataArray)
613  {
614  // No special hidden fields needed.
615  return [];
616  }
617 
621  protected function ‪getBackendUser(): ?FrontendBackendUserAuthentication
622  {
623  return ‪$GLOBALS['BE_USER'] instanceof FrontendBackendUserAuthentication ? ‪$GLOBALS['BE_USER'] : null;
624  }
625 
629  protected function ‪getTypoScriptFrontendController(): TypoScriptFrontendController
630  {
631  return ‪$GLOBALS['TSFE'];
632  }
633 }
‪TYPO3\CMS\Core\DataHandling\DataHandler
Definition: DataHandler.php:81
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doSaveAndClose
‪doSaveAndClose($table, $uid)
Definition: FrontendEditingController.php:462
‪TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction
Definition: HiddenRestriction.php:25
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\recordEditAccessInternals
‪bool recordEditAccessInternals($table, $idOrRow, $newRecord=false, $deletedRecord=false, $checkFullLanguageAccess=false)
Definition: BackendUserAuthentication.php:802
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doSave
‪doSave($table, $uid)
Definition: FrontendEditingController.php:439
‪TYPO3\CMS\Core\Database\Query\Restriction\EndTimeRestriction
Definition: EndTimeRestriction.php:25
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_NEW
‪const PAGE_NEW
Definition: Permission.php:47
‪TYPO3\CMS\Backend\FrontendBackendUserAuthentication
Definition: FrontendBackendUserAuthentication.php:35
‪TYPO3\CMS\Core\Database\Query\Restriction\StartTimeRestriction
Definition: StartTimeRestriction.php:25
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doClose
‪doClose($table, $uid)
Definition: FrontendEditingController.php:474
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\calcPerms
‪int calcPerms($row)
Definition: BackendUserAuthentication.php:592
‪TYPO3\CMS\Adminpanel\View\AdminPanelView
Definition: AdminPanelView.php:34
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\isEditAction
‪bool isEditAction()
Definition: FrontendEditingController.php:164
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\__construct
‪__construct()
Definition: FrontendEditingController.php:46
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\getAllowedEditActions
‪array getAllowedEditActions($table, array $conf, $pid, $allow='')
Definition: FrontendEditingController.php:559
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController
Definition: FrontendEditingController.php:38
‪$fields
‪$fields
Definition: pages.php:4
‪TYPO3\CMS\Core\Database\Query\Restriction\FrontendGroupRestriction
Definition: FrontendGroupRestriction.php:28
‪TYPO3\CMS\Core\Context\Context
Definition: Context.php:49
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:23
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doDelete
‪doDelete($table, $uid)
Definition: FrontendEditingController.php:423
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\getHiddenFields
‪array getHiddenFields(array $dataArray)
Definition: FrontendEditingController.php:611
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doUp
‪doUp($table, $uid)
Definition: FrontendEditingController.php:269
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doDown
‪doDown($table, $uid)
Definition: FrontendEditingController.php:280
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\allowedToEdit
‪bool allowedToEdit($table, array $dataArray, array $conf, $checkEditAccessInternals=true)
Definition: FrontendEditingController.php:512
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\editAction
‪editAction()
Definition: FrontendEditingController.php:201
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\$TSFE_EDIT
‪array $TSFE_EDIT
Definition: FrontendEditingController.php:44
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\getJavascriptIncludes
‪string getJavascriptIncludes()
Definition: FrontendEditingController.php:598
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\checkLanguageAccess
‪bool checkLanguageAccess($langValue)
Definition: BackendUserAuthentication.php:733
‪TYPO3\CMS\Core\Context\LanguageAspect
Definition: LanguageAspect.php:55
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doMoveAfter
‪doMoveAfter($table, $uid)
Definition: FrontendEditingController.php:291
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:72
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecord
‪static array null getRecord($table, $uid, $fields=' *', $where='', $useDeleteClause=true)
Definition: BackendUtility.php:130
‪TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
Definition: TypoScriptFrontendController.php:97
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\allowedToEditLanguage
‪bool allowedToEditLanguage($table, array $currentRecord)
Definition: FrontendEditingController.php:486
‪TYPO3\CMS\Core\Type\Bitmask\Permission\CONTENT_EDIT
‪const CONTENT_EDIT
Definition: Permission.php:52
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\getTypoScriptFrontendController
‪TypoScriptFrontendController getTypoScriptFrontendController()
Definition: FrontendEditingController.php:628
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:37
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_DELETE
‪const PAGE_DELETE
Definition: Permission.php:42
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\getBackendUser
‪FrontendBackendUserAuthentication null getBackendUser()
Definition: FrontendEditingController.php:620
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\displayEditIcons
‪string displayEditIcons($content, $params, array $conf=[], $currentRecord='', array $dataArray=[], $addUrlParamStr='')
Definition: FrontendEditingController.php:127
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doHide
‪doHide($table, $uid)
Definition: FrontendEditingController.php:233
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:44
‪TYPO3\CMS\Core\FrontendEditing
Definition: FrontendEditingController.php:2
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\move
‪move($table, $uid, $direction='', $afterUID=0)
Definition: FrontendEditingController.php:305
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\initConfigOptions
‪initConfigOptions()
Definition: FrontendEditingController.php:54
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\doUnhide
‪doUnhide($table, $uid)
Definition: FrontendEditingController.php:251
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\displayEditPanel
‪string displayEditPanel($content, array $conf, $currentRecord, array $dataArray)
Definition: FrontendEditingController.php:77
‪TYPO3\CMS\Core\FrontendEditing\FrontendEditingController\isEditFormShown
‪bool isEditFormShown()
Definition: FrontendEditingController.php:185