diff --git a/CHANGELOG.md b/CHANGELOG.md index 627925e..9a6f27a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.0.2 +## mm/dd/2021 + +1. [](#bugfix) + * Fixed saving page in expert mode [grav#3174](https://github.com/getgrav/grav/issues/3174) + # v1.0.1 ## 01/20/2021 diff --git a/blueprints.yaml b/blueprints.yaml index 56ac9e4..c73c549 100644 --- a/blueprints.yaml +++ b/blueprints.yaml @@ -14,7 +14,7 @@ docs: https://github.com/trilbymedia/grav-plugin-flex-objects/blob/develop/READM license: MIT dependencies: - - { name: grav, version: '>=1.7.0' } + - { name: grav, version: '>=1.7.4' } - { name: form, version: '>=4.3.0' } form: diff --git a/classes/Admin/AdminController.php b/classes/Admin/AdminController.php index 4dca0af..71e6810 100644 --- a/classes/Admin/AdminController.php +++ b/classes/Admin/AdminController.php @@ -22,6 +22,7 @@ use Grav\Framework\File\Interfaces\FileFormatterInterface; use Grav\Framework\Flex\FlexForm; use Grav\Framework\Flex\FlexFormFlash; +use Grav\Framework\Flex\FlexObject; use Grav\Framework\Flex\Interfaces\FlexAuthorizeInterface; use Grav\Framework\Flex\Interfaces\FlexCollectionInterface; use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface; @@ -729,6 +730,20 @@ public function taskSave(): bool /** @var FlexForm $form */ $form = $this->getForm($object); + + $callable = static function (array $data, array $files, FlexObject $object) use ($form) { + $object->update($data, $files); + + // Support for expert mode. + if (str_ends_with($form->getId(), '-raw') && isset($data['frontmatter']) && is_callable([$object, 'frontmatter'])) { + $object->frontmatter($data['frontmatter']); + unset($data['frontmatter']); + } + + $object->save(); + }; + + $form->setSubmitMethod($callable); $form->handleRequest($request); $error = $form->getError(); $errors = $form->getErrors();