Compare commits

...

5 Commits

Author SHA1 Message Date
UndefinedOffset c3915cc2b8
Updated changelog 2022-07-06 14:53:04 -03:00
UndefinedOffset 255347b755
Added allow plugin configs for composer 2 in ci 2022-07-06 14:50:18 -03:00
UndefinedOffset eabbe33342
Adjusted ci workflow to only run against 4.11 2022-07-06 14:46:33 -03:00
Ed Chipman f5a5346349
Merge pull request #134 from GuySartorelli/enh/injectable
NEW Extend new AbstractGridFieldComponent class
2022-07-06 14:42:50 -03:00
Guy Sartorelli e374c93ae3 NEW Extend new AbstractGridFieldComponent class
This makes the `GridFieldSortableRows` component `Injectable`, and
allows any future enhancements in the new abstract class to
automatically apply without requiring additional changes in this module.

The class is introduced in silverstripe/framework 4.11.0 so the
dependency constraint needs to be updated.
2022-02-12 19:24:44 +13:00
8 changed files with 37 additions and 107 deletions

View File

@ -15,8 +15,8 @@ on:
jobs:
silverstripe_410_php74:
name: "Silverstripe 4.10 | PHP 7.4"
silverstripe_411_php74:
name: "Silverstripe 4.11 | PHP 7.4"
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[ci skip]')"
env:
@ -69,8 +69,8 @@ jobs:
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-ss410-php74-${{ hashFiles('**/composer.json') }}-${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: ${{ runner.os }}-composer-ss410-php74-
key: ${{ runner.os }}-composer-ss411-php74-${{ hashFiles('**/composer.json') }}-${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: ${{ runner.os }}-composer-ss411-php74-
- name: Install Composer dependencies
env:
@ -78,8 +78,8 @@ jobs:
run: |
composer self-update --ansi || true
if [[ $GITHUB_ACCESS_TOKEN ]]; then composer config --ansi -g github-oauth.github.com $GITHUB_ACCESS_TOKEN; fi
composer require silverstripe/admin 1.10.* --no-update
composer require silverstripe/versioned 1.10.*
composer require silverstripe/admin 1.11.* --no-update
composer require silverstripe/versioned 1.11.*
composer install --verbose --no-interaction --no-progress --no-suggest --optimize-autoloader --ansi
- name: Configure Environment
@ -92,8 +92,8 @@ jobs:
SS_DATABASE_PORT: ${{ job.services.mysql.ports['3306'] }}
run: vendor/bin/phpunit --colors=always --printer UndefinedOffset\\SortableGridField\\Tests\\PHPUnit\\Bootstrap\\GitHubActionsAnnotatorPrinter
silverstripe_410_php80:
name: "Silverstripe 4.10 | PHP 8.0"
silverstripe_411_php80:
name: "Silverstripe 4.11 | PHP 8.0"
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[ci skip]')"
env:
@ -146,8 +146,8 @@ jobs:
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-ss410-php80-${{ hashFiles('**/composer.json') }}-${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: ${{ runner.os }}-composer-ss410-php80-
key: ${{ runner.os }}-composer-ss411-php80-${{ hashFiles('**/composer.json') }}-${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: ${{ runner.os }}-composer-ss411-php80-
- name: Install Composer dependencies
env:
@ -155,85 +155,11 @@ jobs:
run: |
composer self-update --ansi || true
if [[ $GITHUB_ACCESS_TOKEN ]]; then composer config --ansi -g github-oauth.github.com $GITHUB_ACCESS_TOKEN; fi
composer require silverstripe/admin 1.10.* --no-update
composer require silverstripe/versioned 1.10.*
composer install --verbose --no-interaction --no-progress --no-suggest --optimize-autoloader --ansi
- name: Configure Environment
run: |
cp tests/utils/actions.env.template .env
mkdir artifacts
- name: Perform PHPUnit Tests
env:
SS_DATABASE_PORT: ${{ job.services.mysql.ports['3306'] }}
run: vendor/bin/phpunit --colors=always --printer UndefinedOffset\\SortableGridField\\Tests\\PHPUnit\\Bootstrap\\GitHubActionsAnnotatorPrinter
silverstripe_49_php74:
name: "Silverstripe 4.9 | PHP 7.4"
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[ci skip]')"
env:
php_version: 7.4
php_extensions: ctype, dom, fileinfo, hash, intl, mbstring, session, simplexml, tokenizer, xml, pdo, mysqli, gd, zip
services:
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: testpassword
MYSQL_DATABASE: test_db
ports:
- 3306/tcp
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup PHP Extension Cache
id: cache-env
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ env.php_version }}
extensions: ${{ env.php_extensions }}
key: php74-ext-cache-${{ hashFiles('.github/workflows/ci.yml') }}
- name: Cache PHP Extensions
uses: actions/cache@v2
with:
path: ${{ steps.cache-env.outputs.dir }}
key: ${{ steps.cache-env.outputs.key }}
restore-keys: ${{ steps.cache-env.outputs.key }}
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ env.php_version }}
extensions: ${{ env.php_extensions }}
ini-values: log_errors=On, error_log="${{github.workspace}}/artifacts/php_errors.log"
coverage: none
tools: composer:v1
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-ss49-php74-${{ hashFiles('**/composer.json') }}-${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: ${{ runner.os }}-composer-ss49-php74-
- name: Install Composer dependencies
env:
GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
composer self-update --ansi || true
if [[ $GITHUB_ACCESS_TOKEN ]]; then composer config --ansi -g github-oauth.github.com $GITHUB_ACCESS_TOKEN; fi
composer require silverstripe/admin 1.9.* --no-update
composer require silverstripe/versioned 1.9.*
composer config allow-plugins.composer/installers true
composer config allow-plugins.silverstripe/recipe-plugin true
composer config allow-plugins.silverstripe/vendor-plugin true
composer require silverstripe/admin 1.11.* --no-update
composer require silverstripe/versioned 1.11.*
composer install --verbose --no-interaction --no-progress --no-suggest --optimize-autoloader --ansi
- name: Configure Environment

View File

@ -1,5 +1,8 @@
# Change Log
## [2.1.0](https://github.com/UndefinedOffset/SortableGridField/tree/2.1.0) (2022-07-06)
[Full Changelog](https://github.com/UndefinedOffset/SortableGridField/compare/2.0.9...2.1.0)
## [2.0.9](https://github.com/UndefinedOffset/SortableGridField/tree/2.0.9) (2021-07-19)
[Full Changelog](https://github.com/UndefinedOffset/SortableGridField/compare/2.0.8...2.0.9)

View File

@ -12,7 +12,7 @@ Adds drag and drop functionality to SilverStripe 4's GridField
## Requirements
* SilverStripe 4.x
* SilverStripe 4.11+
## Installation

View File

@ -12,7 +12,7 @@
}
],
"require": {
"silverstripe/framework": "~4.0",
"silverstripe/framework": "~4.11",
"silverstripe/versioned": "^1.0",
"silverstripe/vendor-plugin": "^1.0"
},

View File

@ -17,16 +17,16 @@ class TestPage extends Page
public function getCMSFields()
{
$fields = parent::getCMSFields();
$conf = GridFieldConfig_RelationEditor::create(10);
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
$conf->addComponent(GridFieldSortableRows::create('SortOrder'));
$fields->addFieldToTab(
'Root.TestObjects',
'Root.TestObjects',
GridField::create(
'TestObjects',
'TestObjects',
$this->TestObjects(),
'TestObjects',
'TestObjects',
$this->TestObjects(),
$conf
)
);

View File

@ -25,9 +25,9 @@ class TestPage extends Page
$fields = parent::getCMSFields();
$conf = GridFieldConfig_RelationEditor::create(10);
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
$conf->addComponent(GridFieldSortableRows::create('SortOrder'));
$fields->addFieldToTab('Root.TestObjects', new GridField('TestObjects', 'TestObjects', $this->TestObjects(), $conf));
$fields->addFieldToTab('Root.TestObjects', GridField::create('TestObjects', 'TestObjects', $this->TestObjects(), $conf));
return $fields;
}

View File

@ -10,24 +10,24 @@ use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;
class MyModelAdmin extends ModelAdmin
{
private static $menu_title = 'My Model Admin';
private static $url_segment = 'my-model-admin';
private static $managed_models = [
MATestObject::class,
];
public function getEditForm($id = null, $fields = null)
{
$form = parent::getEditForm($id, $fields);
// This check is simply to ensure you are on the managed model you want adjust accordingly
if ($this->modelClass === MATestObject::class) {
$gridField = $form->Fields()->dataFieldByName($this->sanitiseClassName($this->modelClass));
// This is just a precaution to ensure we got a GridField from dataFieldByName() which you should have
if ($gridField instanceof GridField) {
$gridField->getConfig()->addComponent(new GridFieldSortableRows('SortOrder'));
$gridField->getConfig()->addComponent(GridFieldSortableRows::create('SortOrder'));
}
}
@ -44,7 +44,7 @@ class MATestObject extends DataObject
'Title' => 'Varchar',
'SortOrder' => 'Int',
];
private static $indexes = [
'SortOrder' => true,
];

View File

@ -6,6 +6,7 @@ use SilverStripe\Control\Controller;
use SilverStripe\Core\ClassInfo;
use SilverStripe\Core\Config\Config;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Forms\GridField\AbstractGridFieldComponent;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridField_ActionProvider;
use SilverStripe\Forms\GridField\GridField_DataManipulator;
@ -30,7 +31,7 @@ use SilverStripe\View\Requirements;
/**
* This component provides a checkbox which when checked enables drag-and-drop re-ordering of elements displayed in a {@link GridField}
*/
class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionProvider, GridField_DataManipulator
class GridFieldSortableRows extends AbstractGridFieldComponent implements GridField_HTMLProvider, GridField_ActionProvider, GridField_DataManipulator
{
/** @var string */
protected $sortColumn;