From eb98597220c835bce0689f44e68105769965b12e Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 20 Jan 2021 12:24:40 +0200 Subject: [PATCH] Flex Pages: Fixed fatal error when trying to move a page to Root (/) [#3161] --- CHANGELOG.md | 1 + system/src/Grav/Common/Flex/Types/Pages/PageObject.php | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62adc455c..5cd63de01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * Sanitize valid Page extensions from `Page::template_format()` * Fixed `bin/gpm index` erroring out [#3158](https://github.com/getgrav/grav/issues/3158) * Fixed `bin/gpm selfupgrade` failing to report failed Grav update [#3116](https://github.com/getgrav/grav/issues/3116) + * Flex Pages: Fixed fatal error when trying to move a page to Root (/) [#3161](https://github.com/getgrav/grav/issues/3161) # v1.7.0 ## 01/19/2021 diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 98b949ebe..1d4f9b981 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -372,7 +372,14 @@ class PageObject extends FlexPageObject // If menu item was moved, just make it to be the last in order. if ($isMoved && $this->order() !== false) { $parentKey = $this->getProperty('parent_key'); - $newParent = $this->getFlexDirectory()->getObject($parentKey, 'storage_key'); + if ($parentKey === '') { + $newParent = $this->getFlexDirectory()->getIndex()->getRoot(); + } else { + $newParent = $this->getFlexDirectory()->getObject($parentKey, 'storage_key'); + if (!$newParent instanceof PageInterface) { + throw new RuntimeException("New parent page '{$parentKey}' not found."); + } + } $newSiblings = $newParent->children()->getCollection()->withOrdered(); $order = 0; foreach ($newSiblings as $sibling) {