From 17f92d08bad15f91289b7385430ca6ca70eb687a Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Thu, 6 Apr 2023 10:30:12 +1200 Subject: [PATCH 1/2] FIX Handle arrays in default_sort --- src/GridFieldOrderableRows.php | 7 +++++++ tests/GridFieldOrderableRowsTest.php | 13 +++++++++++++ tests/Stub/TitleArraySortedObject.php | 22 ++++++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 tests/Stub/TitleArraySortedObject.php diff --git a/src/GridFieldOrderableRows.php b/src/GridFieldOrderableRows.php index 6b3d8bb..57f57c2 100755 --- a/src/GridFieldOrderableRows.php +++ b/src/GridFieldOrderableRows.php @@ -365,6 +365,13 @@ class GridFieldOrderableRows extends RequestHandler implements if ($list instanceof DataList) { $classname = $list->dataClass(); if ($defaultSort = Config::inst()->get($classname, 'default_sort')) { + if (is_array($defaultSort)) { + $defaultSortArray = []; + foreach ($defaultSort as $column => $direction) { + $defaultSortArray[] = "\"$column\" $direction"; + } + $defaultSort = implode(', ', $defaultSortArray); + } // Append the default sort to the end of the sort string // This may result in redundancy... but it seems to work $sortterm .= ($sortterm ? ', ' : '') . $defaultSort; diff --git a/tests/GridFieldOrderableRowsTest.php b/tests/GridFieldOrderableRowsTest.php index 1b23da9..333cfa8 100644 --- a/tests/GridFieldOrderableRowsTest.php +++ b/tests/GridFieldOrderableRowsTest.php @@ -24,6 +24,7 @@ use Symbiote\GridFieldExtensions\Tests\Stub\ThroughDefinerVersioned; use Symbiote\GridFieldExtensions\Tests\Stub\ThroughIntermediary; use Symbiote\GridFieldExtensions\Tests\Stub\TitleObject; use Symbiote\GridFieldExtensions\Tests\Stub\TitleSortedObject; +use Symbiote\GridFieldExtensions\Tests\Stub\TitleArraySortedObject; use Symbiote\GridFieldExtensions\Tests\Stub\ThroughIntermediaryVersioned; /** @@ -53,6 +54,7 @@ class GridFieldOrderableRowsTest extends SapphireTest ThroughBelongs::class, TitleObject::class, TitleSortedObject::class, + TitleArraySortedObject::class, ThroughDefinerVersioned::class, ThroughIntermediaryVersioned::class, ThroughBelongsVersioned::class, @@ -332,6 +334,17 @@ class GridFieldOrderableRowsTest extends SapphireTest $this->assertSame(['B', 'A', 'C'], $sortedList->column('Iden')); } + + public function testGetManipulatedDataWithDefaultSortArray() + { + $sortedList = $this->getTitleSortedListForManipuatedData(TitleArraySortedObject::class, [ + ['Title' => 'X', 'Iden' => 'C', 'OtherSort' => 3], + ['Title' => 'Z', 'Iden' => 'A', 'OtherSort' => 2], + ['Title' => 'Z', 'Iden' => 'B', 'OtherSort' => 1], + ]); + $this->assertSame(['C', 'B', 'A'], $sortedList->column('Iden')); + } + private function getTitleSortedListForManipuatedData(string $dataClass, array $data): DataList { $list = new DataList($dataClass); diff --git a/tests/Stub/TitleArraySortedObject.php b/tests/Stub/TitleArraySortedObject.php new file mode 100644 index 0000000..25d3f1a --- /dev/null +++ b/tests/Stub/TitleArraySortedObject.php @@ -0,0 +1,22 @@ + 'Varchar', + 'Iden' => 'Varchar', + 'OtherSort' => 'Int' + ]; + + private static array $default_sort = [ + 'Title' => 'ASC', + 'OtherSort' => 'ASC', + ]; + + private static $table_name = 'TitleArraySortedObject'; +} From 4961634dced4a1cf03c89ea60eb69e8d17f42244 Mon Sep 17 00:00:00 2001 From: Guy Sartorelli Date: Wed, 19 Apr 2023 17:02:02 +1200 Subject: [PATCH 2/2] DOC Update README.md for CMS 5 --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c51d16d..3f539cd 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,10 @@ This module provides a number of useful grid field components: * `GridFieldTitleHeader` - a simple header which displays column titles. * `GridFieldConfigurablePaginator` - a paginator for GridField that allows customisable page sizes. -This branch will aim for compatibility with Silverstripe 4.x. - ## Installation -```bash -composer require symbiote/silverstripe-gridfieldextensions:^3 + +```sh +composer require symbiote/silverstripe-gridfieldextensions ``` -For Silverstripe 3.x, please see the [compatible branch](https://github.com/symbiote/silverstripe-gridfieldextensions/tree/2). - See [docs/en/index.md](docs/en/index.md) for documentation and examples.