Skip to content

Commit 40e444c

Browse files
committed
Fixed saveAndClose button.
1 parent 2dd98bf commit 40e444c

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

Classes/Backend/GetButtonsHook.php

+9-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55

66
use TYPO3\CMS\Backend\Template\Components\Buttons\InputButton;
77
use TYPO3\CMS\Backend\Template\Components\ModifyButtonBarEvent;
8+
use TYPO3\CMS\Core\Imaging\Icon;
89
use TYPO3\CMS\Core\Imaging\IconFactory;
9-
use TYPO3\CMS\Core\Imaging\IconSize;
1010
use TYPO3\CMS\Core\Localization\LanguageService;
1111
use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
12+
use TYPO3\CMS\Core\Page\JavaScriptModuleInstruction;
13+
use TYPO3\CMS\Core\Page\PageRenderer;
1214

1315
/**
1416
* TYPO3 7 moved all save-actions into a drop-down. Only the default save action can be reached with one click.
@@ -18,12 +20,13 @@
1820
class GetButtonsHook {
1921

2022
private IconFactory $iconFactory;
21-
2223
private LanguageService $languageService;
24+
private PageRenderer $pageRenderer;
2325

24-
public function __construct(IconFactory $iconFactory, LanguageServiceFactory $languageServiceFactory) {
26+
public function __construct(IconFactory $iconFactory, LanguageServiceFactory $languageServiceFactory, PageRenderer $pageRenderer) {
2527
$this->iconFactory = $iconFactory;
2628
$this->languageService = $languageServiceFactory->createFromUserPreferences($GLOBALS['BE_USER'] ?? null);
29+
$this->pageRenderer = $pageRenderer;
2730
}
2831

2932
public function __invoke(ModifyButtonBarEvent $event): void {
@@ -33,14 +36,16 @@ public function __invoke(ModifyButtonBarEvent $event): void {
3336
return;
3437
}
3538

39+
$this->pageRenderer->getJavaScriptRenderer()->addJavaScriptModuleInstruction(JavaScriptModuleInstruction::create('@vierwd/vierwd_base/SaveAndClose.js'));
40+
3641
// find the save button and replace it
3742
foreach ($buttonBars['left'] as &$buttonGroup) {
3843
foreach ($buttonGroup as $button) {
3944
if ($button instanceof InputButton && $button->getName() === '_savedok') {
4045
$saveAndClose = new InputButton();
4146

4247
$saveAndClose->setForm($button->getForm());
43-
$saveAndClose->setIcon($this->iconFactory->getIcon('actions-document-save-close', IconSize::SMALL));
48+
$saveAndClose->setIcon($this->iconFactory->getIcon('actions-document-save-close', Icon::SIZE_SMALL));
4449
$saveAndClose->setName('_saveandclosedok');
4550
$saveAndClose->setTitle($this->languageService->sL(
4651
'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:rm.saveCloseDoc'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* global TYPO3: false */
2+
3+
const saveAndCloseButton = document.querySelector('[name="_saveandclosedok"]');
4+
if (saveAndCloseButton) {
5+
saveAndCloseButton.addEventListener('click', event => {
6+
event.preventDefault();
7+
event.stopPropagation();
8+
event.stopImmediatePropagation();
9+
10+
TYPO3.FormEngine.saveAndCloseDocument();
11+
});
12+
}

0 commit comments

Comments
 (0)