From e5a147ec0cc1d5393ae8a16ca1aa25360cb01f88 Mon Sep 17 00:00:00 2001 From: Sabina Talipova Date: Tue, 31 Oct 2023 14:11:06 +1300 Subject: [PATCH] FIX ModelAdmin toast elements --- lang/en.yml | 4 +++- .../GridFieldDetailForm_ItemRequest.php | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lang/en.yml b/lang/en.yml index 9eecf2ddc94..334a15fc20c 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -102,7 +102,7 @@ en: Create: Create Delete: Delete DeletePermissionsFailure: 'No delete permissions' - Deleted: 'Deleted {type} {name}' + Deleted: 'Deleted {type} "{name}"' Save: Save Saved: 'Saved {name} {link}' SilverStripe\Forms\GridField\GridFieldDetailForm_ItemRequest: @@ -111,6 +111,8 @@ en: NEXT: 'Go to next record' PREVIOUS: 'Go to previous record' ViewPermissionsFailure: 'It seems you don''t have the necessary permissions to view "{ObjectTitle}"' + SAVETOASTMESSAGE: 'Saved {type} "{title}" successfully.' + SAVEDUP: 'Saved successfully.' SilverStripe\Forms\GridField\GridFieldEditButton: EDIT: Edit SilverStripe\Forms\GridField\GridFieldFilterHeader: diff --git a/src/Forms/GridField/GridFieldDetailForm_ItemRequest.php b/src/Forms/GridField/GridFieldDetailForm_ItemRequest.php index fef944f0c7d..43ddd6bb317 100644 --- a/src/Forms/GridField/GridFieldDetailForm_ItemRequest.php +++ b/src/Forms/GridField/GridFieldDetailForm_ItemRequest.php @@ -8,6 +8,7 @@ use SilverStripe\Control\HTTPRequest; use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\RequestHandler; +use SilverStripe\Core\Convert; use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\Form; @@ -543,6 +544,18 @@ public function doSave($data, $form) $form->sessionMessage($message, 'good', ValidationResult::CAST_HTML); + $message = _t( + __CLASS__ . '.SAVETOASTMESSAGE', + 'Saved {type} "{title}" successfully.', + [ + 'type' => $this->record->i18n_singular_name(), + 'title' => Convert::raw2xml($this->record->Title) + ] + ); + + $controller = $this->getToplevelController(); + $controller->getResponse()->addHeader('X-Status', $message); + // Redirect after save return $this->redirectAfterSave($isNewRecord); } @@ -706,6 +719,8 @@ protected function redirectAfterSave($isNewRecord) } elseif ($this->gridField->getList()->byID($this->record->ID)) { // Return new view, as we can't do a "virtual redirect" via the CMS Ajax // to the same URL (it assumes that its content is already current, and doesn't reload) + $message = $controller->getResponse()->getHeader('X-Status') ?? rawurlencode(_t(__CLASS__ . '.SAVEDUP', 'Saved successfully') ?? ''); + $controller->getResponse()->addHeader('X-Status', $message); return $this->edit($controller->getRequest()); } else { // We might be able to redirect to open the record in a different view @@ -782,7 +797,7 @@ public function doDelete($data, $form) $message = _t( 'SilverStripe\\Forms\\GridField\\GridFieldDetailForm.Deleted', - 'Deleted {type} {name}', + 'Deleted {type} "{name}"', [ 'type' => $this->record->i18n_singular_name(), 'name' => htmlspecialchars($title ?? '', ENT_QUOTES) @@ -800,6 +815,7 @@ public function doDelete($data, $form) //when an item is deleted, redirect to the parent controller $controller = $this->getToplevelController(); $controller->getRequest()->addHeader('X-Pjax', 'Content'); // Force a content refresh + $controller->getResponse()->addHeader('X-Status', $message); return $controller->redirect($this->getBackLink(), 302); //redirect back to admin section }