Compare commits

...

18 Commits
3 ... 4.0.5

Author SHA1 Message Date
Guy Sartorelli 46b4763e8c
Merge branch '3' into 4.0 2024-02-27 13:45:03 +13:00
Guy Sartorelli e176dc6b09
Merge branch '3' into 4.0 2023-12-19 13:59:20 +13:00
Guy Sartorelli 4bc464d05c
Merge branch '3' into 4.0 2023-08-30 10:19:12 +12:00
Guy Sartorelli 25a0c4d470
Merge branch '3' into 4.0 2023-08-30 10:17:49 +12:00
Guy Sartorelli e371e74c29
Merge pull request #374 from creative-commoners/pulls/4.0/module-standardiser-1693279913
MNT Run module-standardiser
2023-08-29 17:15:18 +12:00
Steve Boyd d66fe9c2c0 MNT Run module-standardiser 2023-08-29 15:31:53 +12:00
Steve Boyd d369f38a53 Merge branch '3' into 4.0 2023-06-16 12:22:39 +12:00
Steve Boyd be87a90e68 Merge branch '3' into 4.0 2023-05-31 14:31:49 +12:00
Guy Sartorelli c9eac61657
Merge branch '3' into 4.0 2023-04-27 14:04:39 +12:00
Sabina Talipova 55cb9cc17b
Merge pull request #362 from creative-commoners/pulls/4.0/cms5-readme
DOC Update README.md for CMS 5
2023-04-24 15:16:25 +12:00
Guy Sartorelli 4961634dce
DOC Update README.md for CMS 5 2023-04-19 17:02:02 +12:00
Steve Boyd 6a8e40cc37 Merge branch '3' into 4.0 2023-03-30 13:51:20 +13:00
Maxime Rainville 3c6ac04bda
Merge pull request #354 from creative-commoners/pulls/4/remove-legacy-upgrader
MNT Remove legacy upgrader config
2023-01-23 10:04:03 +13:00
Steve Boyd 58807b73dd MNT Remove legacy upgrader config 2023-01-20 16:03:02 +13:00
Steve Boyd fd24736b52
FIX Use DataList::orderBy() (#353) 2023-01-18 14:00:38 +13:00
Sabina Talipova b1fc5ff52c Merge branch '3' into 4 2022-11-21 16:07:03 +13:00
Maxime Rainville 375fc5899d
Merge pull request #348 from creative-commoners/pulls/4/major-deps
DEP Update dependencies for CMS 5
2022-08-18 11:04:05 +12:00
Steve Boyd d0c0cc08f0 DEP Update dependencies for CMS 5 2022-08-10 15:47:55 +12:00
12 changed files with 116 additions and 74 deletions

View File

@ -1,10 +1,10 @@
name: Keepalive
on:
workflow_dispatch:
# The 7th of every month at 12:50pm UTC
# At 1:05 PM UTC, on day 22 of the month
schedule:
- cron: '50 12 7 * *'
- cron: '5 13 22 * *'
workflow_dispatch:
jobs:
keepalive:

17
.github/workflows/merge-up.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: Merge-up
on:
# At 12:10 PM UTC, only on Thursday
schedule:
- cron: '10 12 * * 4'
workflow_dispatch:
jobs:
merge-up:
name: Merge-up
# Only run cron on the symbiote account
if: (github.event_name == 'schedule' && github.repository_owner == 'symbiote') || (github.event_name != 'schedule')
runs-on: ubuntu-latest
steps:
- name: Merge-up
uses: silverstripe/gha-merge-up@v1

View File

@ -1,12 +0,0 @@
mappings:
GridFieldAddExistingSearchButton: Symbiote\GridFieldExtensions\GridFieldAddExistingSearchButton
GridFieldAddExistingSearchHandler: Symbiote\GridFieldExtensions\GridFieldAddExistingSearchHandler
GridFieldAddNewInlineButton: Symbiote\GridFieldExtensions\GridFieldAddNewInlineButton
GridFieldAddNewMultiClass: Symbiote\GridFieldExtensions\GridFieldAddNewMultiClass
GridFieldAddNewMultiClassHandler: Symbiote\GridFieldExtensions\GridFieldAddNewMultiClassHandler
GridFieldEditableColumns: Symbiote\GridFieldExtensions\GridFieldEditableColumns
GridFieldExtensions: Symbiote\GridFieldExtensions\GridFieldExtensions
GridFieldExternalLink: Symbiote\GridFieldExtensions\GridFieldExternalLink
GridFieldOrderableRows: Symbiote\GridFieldExtensions\GridFieldOrderableRows
GridFieldRequestHandler: Symbiote\GridFieldExtensions\GridFieldRequestHandler
GridFieldTitleHeader: Symbiote\GridFieldExtensions\GridFieldTitleHeader

View File

View File

@ -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.

View File

@ -1 +0,0 @@
comment: false

View File

@ -3,7 +3,13 @@
"description": "A collection of useful grid field components",
"type": "silverstripe-vendormodule",
"homepage": "http://github.com/symbiote/silverstripe-gridfieldextensions",
"keywords": ["silverstripe", "gridfield", "sortable", "sort", "sort field"],
"keywords": [
"silverstripe",
"gridfield",
"sortable",
"sort",
"sort field"
],
"license": "BSD-3-Clause",
"authors": [
{
@ -19,14 +25,14 @@
"issues": "http://github.com/symbiote/silverstripe-gridfieldextensions/issues"
},
"require": {
"php": "^7.4 || ^8.0",
"silverstripe/vendor-plugin": "^1.0",
"silverstripe/framework": "^4.11"
"php": "^8.1",
"silverstripe/vendor-plugin": "^2",
"silverstripe/framework": "^5"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "^3.0",
"silverstripe/versioned": "^1"
"phpunit/phpunit": "^9.6",
"squizlabs/php_codesniffer": "^3.7",
"silverstripe/versioned": "^2"
},
"extra": {
"screenshots": [

View File

@ -26,9 +26,6 @@ class GridFieldAddNewInlineButton extends AbstractGridFieldComponent implements
GridField_HTMLProvider,
GridField_SaveHandler
{
/**
* @skipUpgrade
*/
const POST_KEY = 'GridFieldAddNewInlineButton';
private $fragment;

View File

@ -28,9 +28,6 @@ class GridFieldAddNewMultiClass extends AbstractGridFieldComponent implements
GridField_HTMLProvider,
GridField_URLHandler
{
/**
* @skipUpgrade
*/
const POST_KEY = 'GridFieldAddNewMultiClass';
private static $allowed_actions = array(

View File

@ -41,9 +41,6 @@ class GridFieldEditableColumns extends GridFieldDataColumns implements
GridField_SaveHandler,
GridField_URLHandler
{
/**
* @skipUpgrade
*/
const POST_KEY = 'GridFieldEditableColumns';
private static $allowed_actions = array(

View File

@ -410,7 +410,11 @@ class GridFieldOrderableRows extends RequestHandler implements
}
}
return $list->sort($sortterm);
if ($list instanceof DataList) {
return $list->orderBy($sortterm);
} elseif (method_exists($list, 'sort')) {
return $list->sort($sortterm);
}
}
return $list;
@ -587,7 +591,7 @@ class GridFieldOrderableRows extends RequestHandler implements
}
$list = $grid->getList();
$sortterm .= '"'.$this->getSortTable($list).'"."'.$sortField.'"';
$items = $list->filter('ID', $sortedIDs)->sort($sortterm);
$items = $list->filter('ID', $sortedIDs)->orderBy($sortterm);
// Ensure that each provided ID corresponded to an actual object.
if (count($items ?? []) != count($sortedIDs ?? [])) {

View File

@ -6,6 +6,7 @@ use ReflectionMethod;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataList;
use Symbiote\GridFieldExtensions\GridFieldOrderableRows;
use Symbiote\GridFieldExtensions\Tests\Stub\PolymorphM2MMapper;
@ -314,40 +315,12 @@ class GridFieldOrderableRowsTest extends SapphireTest
$this->assertTrue($differenceFound);
}
public function testGetManipulatedDataWithoutDefaultSort()
/**
* @dataProvider provideGetManipulatedData
*/
public function testGetManipulatedData(string $dataClass, string $listClass, array $data, array $expected)
{
$sortedList = $this->getTitleSortedListForManipuatedData(TitleObject::class, [
['Title' => 'C'],
['Title' => 'A'],
['Title' => 'B'],
]);
$this->assertSame(['A', 'B', 'C'], $sortedList->column('Title'));
}
public function testGetManipulatedDataWithDefaultSort()
{
$sortedList = $this->getTitleSortedListForManipuatedData(TitleSortedObject::class, [
['Title' => 'Z', 'Iden' => 'C', 'DefaultSort' => 3],
['Title' => 'Z', 'Iden' => 'A', 'DefaultSort' => 2],
['Title' => 'Z', 'Iden' => 'B', 'DefaultSort' => 1],
]);
$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);
$list = $listClass == DataList::class ? new DataList($dataClass) : new ArrayList();
foreach ($data as $values) {
$item = new $dataClass();
$item->update($values);
@ -359,6 +332,73 @@ class GridFieldOrderableRowsTest extends SapphireTest
$config->addComponent($orderable);
$grid = new GridField('MyName', 'MyTitle', $list, $config);
$sortedList = $orderable->getManipulatedData($grid, $list);
return $sortedList;
$col = $dataClass === TitleObject::class ? 'Title' : 'Iden';
$this->assertSame($expected, $sortedList->column($col));
}
public function provideGetManipulatedData(): array
{
return [
[
TitleObject::class,
ArrayList::class,
[
['Title' => 'C'],
['Title' => 'A'],
['Title' => 'B']
],
['A', 'B', 'C']
],
[
TitleObject::class,
DataList::class,
[
['Title' => 'C'],
['Title' => 'A'],
['Title' => 'B'],
],
['A', 'B', 'C']
],
[
TitleSortedObject::class,
ArrayList::class,
[
['Title' => '1', 'Iden' => 'C'],
['Title' => '2', 'Iden' => 'A'],
['Title' => '3', 'Iden' => 'B'],
],
['C', 'A', 'B']
],
[
TitleSortedObject::class,
DataList::class,
[
['Title' => '1', 'Iden' => 'C'],
['Title' => '2', 'Iden' => 'A'],
['Title' => '3', 'Iden' => 'B'],
],
['C', 'A', 'B']
],
[
TitleSortedObject::class,
DataList::class,
[
['Title' => 'Z', 'Iden' => 'C', 'DefaultSort' => 3],
['Title' => 'Z', 'Iden' => 'A', 'DefaultSort' => 2],
['Title' => 'Z', 'Iden' => 'B', 'DefaultSort' => 1],
],
['B', 'A', 'C']
],
[
TitleArraySortedObject::class,
DataList::class,
[
['Title' => 'X', 'Iden' => 'C', 'OtherSort' => 3],
['Title' => 'Z', 'Iden' => 'A', 'OtherSort' => 2],
['Title' => 'Z', 'Iden' => 'B', 'OtherSort' => 1],
],
['C', 'B', 'A']
],
];
}
}