Fixed Flex Page parent header.admin.children_display_order setting being ignored in Admin [#2881]

This commit is contained in:
Matias Griese
2020-04-23 15:51:58 +03:00
parent 1ea5dad728
commit dfa8ce1ad4
2 changed files with 27 additions and 7 deletions

View File

@@ -8,10 +8,11 @@
1. [](#bugfix)
* Fixed flex objects with integer keys not working [#2863](https://github.com/getgrav/grav/issues/2863)
* Fixed `Pages::instances()` returning null values when using `Flex Pages` [#2889](https://github.com/getgrav/grav/issues/2889)
* Fixed Flex Page parent `header.admin.children_display_order` setting being ignored in Admin [#2881](https://github.com/getgrav/grav/issues/2881)
* Implemented missing Flex `$pageCollection->batch()` and `$pageCollection->order()` methods
* Fixed user avatar creation for new `Flex Users` when using folder storage
* Fixed `Trying to access array offset on value of type null` PHP 7.4 error in `Plugin.php`
* Fixed Gregwar Image library using `.jpeg` for cached images, rather use `.jpg`
* Implemented missing Flex `$pageCollection->batch()` and `$pageCollection->order()` methods
# v1.7.0-rc.8
## 03/19/2020

View File

@@ -16,6 +16,7 @@ use Grav\Common\File\CompiledJsonFile;
use Grav\Common\Flex\Traits\FlexGravTrait;
use Grav\Common\Flex\Traits\FlexIndexTrait;
use Grav\Common\Grav;
use Grav\Common\Page\Header;
use Grav\Common\Page\Interfaces\PageCollectionInterface;
use Grav\Common\Page\Interfaces\PageInterface;
use Grav\Common\Utils;
@@ -266,12 +267,20 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface
*/
public function getLevelListing(array $options): array
{
// Undocumented B/C
$order = $options['order'] ?? 'asc';
if ($order === SORT_ASC) {
$options['order'] = 'asc';
} elseif ($order === SORT_DESC) {
$options['order'] = 'desc';
}
$options += [
'field' => null,
'route' => null,
'leaf_route' => null,
'sortby' => null,
'order' => SORT_ASC,
'order' => 'asc',
'lang' => null,
'filters' => [],
];
@@ -395,6 +404,21 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface
$children = $page->children()->getIndex();
$selectedChildren = $children->filterBy($filters, true);
/** @var Header $header */
$header = $page->header();
if ($header->get('admin.children_display_order') === 'collection' && ($orderby = $header->get('content.order.by'))) {
// Use custom sorting by page header.
$sortby = $orderby;
$order = $header->get('content.order.dir', $order);
$custom = $header->get('content.order.custom');
}
if ($sortby) {
// Sort children.
$selectedChildren = $selectedChildren->order($sortby, $order, $custom ?? null);
}
/** @var PageObject $child */
foreach ($selectedChildren as $child) {
$selected = $child->path() === $extra;
@@ -485,11 +509,6 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface
$msg = 'PLUGIN_ADMIN.PAGE_ROUTE_NOT_FOUND';
}
// Sorting
if ($sortby) {
$response = Utils::sortArrayByKey($response, $sortby, $order);
}
if ($field) {
$temp_array = [];
foreach ($response as $index => $item) {