mirror of
https://github.com/FriendsOfTYPO3/feedit.git
synced 2024-11-12 18:36:09 +01:00
[TASK] Clean up FrontendEditing Controller
The FrontendEditingController class in EXT:core does two things: - persisting incoming GET/POST requests (actually only when EXT:feedit is installed) - rendering editIcons and editIconPanel In order to separate these concerns, the first patch extracts some minor functionality into EXT:feedit, and cleans up code which should have been done long ago. The next iteration will be to deprecate unused methods and properties, and to move FrontendEditingController into EXT:feedit, however, using an Interface to render editIcons and editPanels instead. Resolves: #85869 Releases: master Change-Id: I78ed1da9e619099dc56b970961c90c34f8dff1e4 Reviewed-on: https://review.typo3.org/57925 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Frank Naegler <frank.naegler@typo3.org> Tested-by: Frank Naegler <frank.naegler@typo3.org> Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl> Reviewed-by: Jörg Bösche <typo3@joergboesche.de> Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
This commit is contained in:
parent
3862ef8057
commit
ef7fb4a499
1 changed files with 33 additions and 5 deletions
|
@ -54,11 +54,16 @@ class FrontendEditInitiator implements MiddlewareInterface
|
|||
} else {
|
||||
$controllerKey = 'default';
|
||||
}
|
||||
$controllerClass = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['frontendEditingController'][$controllerKey];
|
||||
if ($controllerClass) {
|
||||
$GLOBALS['BE_USER']->frontendEdit = GeneralUtility::makeInstance($controllerClass);
|
||||
if ($controllerClass instanceof FrontendEditingController) {
|
||||
$GLOBALS['BE_USER']->frontendEdit->initConfigOptions();
|
||||
$controllerClassName = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['frontendEditingController'][$controllerKey] ?? '';
|
||||
if (!empty($controllerClassName)) {
|
||||
$frontendEditingController = GeneralUtility::makeInstance($controllerClassName);
|
||||
$GLOBALS['BE_USER']->frontendEdit = $frontendEditingController;
|
||||
if ($GLOBALS['BE_USER']->frontendEdit instanceof FrontendEditingController) {
|
||||
$GLOBALS['BE_USER']->frontendEdit->TSFE_EDIT = $request->getParsedBody()['TSFE_EDIT'] ?? $request->getQueryParams()['TSFE_EDIT'] ?? null;
|
||||
// Include classes for editing IF editing module in Admin Panel is open
|
||||
if (((int)$GLOBALS['TSFE']->displayEditIcons === 1 || (int)$GLOBALS['TSFE']->displayFieldEditIcons === 1) && $this->isValidEditAction($GLOBALS['BE_USER']->frontendEdit->TSFE_EDIT)) {
|
||||
$GLOBALS['BE_USER']->frontendEdit->editAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -68,4 +73,27 @@ class FrontendEditInitiator implements MiddlewareInterface
|
|||
}
|
||||
return $handler->handle($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if an edit-action is sent from the Admin Panel
|
||||
*
|
||||
* @param array|null $parameters
|
||||
* @return bool
|
||||
*/
|
||||
protected function isValidEditAction(array &$parameters = null): bool
|
||||
{
|
||||
if (!is_array($parameters)) {
|
||||
return false;
|
||||
}
|
||||
if ($parameters['cancel']) {
|
||||
unset($parameters['cmd']);
|
||||
} else {
|
||||
$cmd = (string)$parameters['cmd'];
|
||||
if (($cmd !== 'edit' || is_array($parameters['data']) && ($parameters['doSave'] || $parameters['update'] || $parameters['update_close'])) && $cmd !== 'new') {
|
||||
// $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.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue