Compare commits
16 Commits
Author | SHA1 | Date |
---|---|---|
Guy Sartorelli | 4bc464d05c | |
Guy Sartorelli | 25a0c4d470 | |
Guy Sartorelli | e371e74c29 | |
Steve Boyd | d66fe9c2c0 | |
Steve Boyd | d369f38a53 | |
Steve Boyd | be87a90e68 | |
Guy Sartorelli | c9eac61657 | |
Sabina Talipova | 55cb9cc17b | |
Guy Sartorelli | 4961634dce | |
Steve Boyd | 6a8e40cc37 | |
Maxime Rainville | 3c6ac04bda | |
Steve Boyd | 58807b73dd | |
Steve Boyd | fd24736b52 | |
Sabina Talipova | b1fc5ff52c | |
Maxime Rainville | 375fc5899d | |
Steve Boyd | d0c0cc08f0 |
|
@ -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:
|
||||
|
|
|
@ -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
|
12
.upgrade.yml
12
.upgrade.yml
|
@ -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
|
|
@ -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.
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
comment: false
|
|
@ -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": [
|
||||
|
|
|
@ -26,9 +26,6 @@ class GridFieldAddNewInlineButton extends AbstractGridFieldComponent implements
|
|||
GridField_HTMLProvider,
|
||||
GridField_SaveHandler
|
||||
{
|
||||
/**
|
||||
* @skipUpgrade
|
||||
*/
|
||||
const POST_KEY = 'GridFieldAddNewInlineButton';
|
||||
|
||||
private $fragment;
|
||||
|
|
|
@ -28,9 +28,6 @@ class GridFieldAddNewMultiClass extends AbstractGridFieldComponent implements
|
|||
GridField_HTMLProvider,
|
||||
GridField_URLHandler
|
||||
{
|
||||
/**
|
||||
* @skipUpgrade
|
||||
*/
|
||||
const POST_KEY = 'GridFieldAddNewMultiClass';
|
||||
|
||||
private static $allowed_actions = array(
|
||||
|
|
|
@ -41,9 +41,6 @@ class GridFieldEditableColumns extends GridFieldDataColumns implements
|
|||
GridField_SaveHandler,
|
||||
GridField_URLHandler
|
||||
{
|
||||
/**
|
||||
* @skipUpgrade
|
||||
*/
|
||||
const POST_KEY = 'GridFieldEditableColumns';
|
||||
|
||||
private static $allowed_actions = array(
|
||||
|
|
|
@ -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;
|
||||
|
@ -584,7 +588,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 ?? [])) {
|
||||
|
|
|
@ -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']
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue