mirror of
https://github.com/UndefinedOffset/SortableGridField.git
synced 2024-10-22 17:05:38 +02:00
Updated documentation and examples to correctly state namespaces used.
This commit is contained in:
parent
e5d442cabe
commit
21a6f3c8e8
19
README.md
19
README.md
@ -29,19 +29,20 @@ public function getMyManyManyRelationship() {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
To enable drag and drop sorting on the grid field add the following to your grid field's config
|
To enable drag and drop sorting on the grid field add the following to your grid field's config, also make sure you add the namespace ``UndefinedOffset\SortableGridField\Forms`` to your file.
|
||||||
*Grid Field Config*
|
|
||||||
|
|
||||||
```php
|
```php
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows; //Namespaces should be added to the top of your file
|
||||||
|
|
||||||
$myGridConfig->addComponent(new GridFieldSortableRows('{Column to store sort}'));
|
$myGridConfig->addComponent(new GridFieldSortableRows('{Column to store sort}'));
|
||||||
```
|
```
|
||||||
|
|
||||||
To move an item to another page drag the row over the respective move to page button which appear on the left and right of the GridField and release.
|
To move an item to another page drag the row over the respective move to page button which appear on the left and right of the GridField and release.
|
||||||
|
|
||||||
#### Full code Examples
|
#### Full code Examples
|
||||||
* [has_many relationship] (https://github.com/UndefinedOffset/SortableGridField/blob/master/docs/HasManyExample.md)
|
* [has_many relationship](https://github.com/UndefinedOffset/SortableGridField/blob/master/docs/HasManyExample.md)
|
||||||
* [many_many relationship] (https://github.com/UndefinedOffset/SortableGridField/blob/master/docs/ManyManyExample.md)
|
* [many_many relationship](https://github.com/UndefinedOffset/SortableGridField/blob/master/docs/ManyManyExample.md)
|
||||||
* [ModelAdmin implementation] (https://github.com/UndefinedOffset/SortableGridField/blob/master/docs/ModelAdminExample.md)
|
* [ModelAdmin implementation](https://github.com/UndefinedOffset/SortableGridField/blob/master/docs/ModelAdminExample.md)
|
||||||
|
|
||||||
#### Events
|
#### Events
|
||||||
GridFieldSortableRows provides 4 "events" onBeforeGridFieldRowSort(), onAfterGridFieldRowSort(), onBeforeGridFieldPageSort() and onAfterGridFieldPageSort(). These "events" are passed a clone of the DataList used in GridFieldSortableRows, in the case of page sorting this list has a limit that shows you the current page plus/minus one object. For GridFieldSortableRows that are on ModelAdmin decendents these events are called on the ModelAdmin if they do not have a owner DataObject, if you are using GridFieldSortableRows on a GridField for a DataObject's relationship the events are called on that DataObject.
|
GridFieldSortableRows provides 4 "events" onBeforeGridFieldRowSort(), onAfterGridFieldRowSort(), onBeforeGridFieldPageSort() and onAfterGridFieldPageSort(). These "events" are passed a clone of the DataList used in GridFieldSortableRows, in the case of page sorting this list has a limit that shows you the current page plus/minus one object. For GridFieldSortableRows that are on ModelAdmin decendents these events are called on the ModelAdmin if they do not have a owner DataObject, if you are using GridFieldSortableRows on a GridField for a DataObject's relationship the events are called on that DataObject.
|
||||||
@ -49,6 +50,8 @@ GridFieldSortableRows provides 4 "events" onBeforeGridFieldRowSort(), onAfterGri
|
|||||||
#### Appending to the top instead of the bottom
|
#### Appending to the top instead of the bottom
|
||||||
By default GridFieldSortableRows appends to the bottom of the list for performance on large data sets, however you can set new records to append new records to the top by calling setAppendToTop(true) on your GridFieldSortableRows instance.
|
By default GridFieldSortableRows appends to the bottom of the list for performance on large data sets, however you can set new records to append new records to the top by calling setAppendToTop(true) on your GridFieldSortableRows instance.
|
||||||
```php
|
```php
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows; //Namespaces should be added to the top of your file
|
||||||
|
|
||||||
$myGridConfig->addComponent($sortable=new GridFieldSortableRows('SortOrder'));
|
$myGridConfig->addComponent($sortable=new GridFieldSortableRows('SortOrder'));
|
||||||
$sortable->setAppendToTop(true);
|
$sortable->setAppendToTop(true);
|
||||||
```
|
```
|
||||||
@ -56,6 +59,8 @@ $sortable->setAppendToTop(true);
|
|||||||
#### Working with versioned records
|
#### Working with versioned records
|
||||||
By default GridFieldSortableRows does not update any other stage for versioned than the base stage. However you can enable this by calling setUpdateVersionedStage() and passing in the name of the stage you want to update along with the base stage. For example passing in "Live" will also update the "Live" stage when any sort happens.
|
By default GridFieldSortableRows does not update any other stage for versioned than the base stage. However you can enable this by calling setUpdateVersionedStage() and passing in the name of the stage you want to update along with the base stage. For example passing in "Live" will also update the "Live" stage when any sort happens.
|
||||||
```php
|
```php
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows; //Namespaces should be added to the top of your file
|
||||||
|
|
||||||
$myGridConfig->addComponent($sortable=new GridFieldSortableRows('SortOrder'));
|
$myGridConfig->addComponent($sortable=new GridFieldSortableRows('SortOrder'));
|
||||||
$sortable->setUpdateVersionedStage('Live');
|
$sortable->setUpdateVersionedStage('Live');
|
||||||
```
|
```
|
||||||
@ -63,6 +68,8 @@ $sortable->setUpdateVersionedStage('Live');
|
|||||||
#### Overriding the default relationship name
|
#### Overriding the default relationship name
|
||||||
By default the relationship name comes from the name of the GridField, however you can override this lookup by calling setCustomRelationName() and passing in the name of the relationship. This allows for you to have multiple GridFields on the same form interacting with the same many_many list maybe filtered slightly differently.
|
By default the relationship name comes from the name of the GridField, however you can override this lookup by calling setCustomRelationName() and passing in the name of the relationship. This allows for you to have multiple GridFields on the same form interacting with the same many_many list maybe filtered slightly differently.
|
||||||
```php
|
```php
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows; //Namespaces should be added to the top of your file
|
||||||
|
|
||||||
$myGridConfig->addComponent($sortable=new GridFieldSortableRows('SortOrder'));
|
$myGridConfig->addComponent($sortable=new GridFieldSortableRows('SortOrder'));
|
||||||
$sortable->setCustomRelationName('MyRelationship');
|
$sortable->setCustomRelationName('MyRelationship');
|
||||||
|
|
||||||
@ -74,6 +81,8 @@ When you're reporting an issue please ensure you specify what version of SilverS
|
|||||||
### Notes
|
### Notes
|
||||||
* When using with GridFieldManyRelationHandler make sure that you add GridFieldSortableRows to your config before for example GridFieldManyRelationHandler:
|
* When using with GridFieldManyRelationHandler make sure that you add GridFieldSortableRows to your config before for example GridFieldManyRelationHandler:
|
||||||
```php
|
```php
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows; //Namespaces should be added to the top of your file
|
||||||
|
|
||||||
$config->addComponent(new GridFieldSortableRows('SortOrder'), 'GridFieldManyRelationHandler');
|
$config->addComponent(new GridFieldSortableRows('SortOrder'), 'GridFieldManyRelationHandler');
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -2,35 +2,41 @@ has_many Example
|
|||||||
=================
|
=================
|
||||||
```php
|
```php
|
||||||
/*** TestPage.php ***/
|
/*** TestPage.php ***/
|
||||||
|
use SilverStripe\Forms\GridField\GridField;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;
|
||||||
|
|
||||||
class TestPage extends Page {
|
class TestPage extends Page {
|
||||||
private static $has_many=array(
|
private static $has_many=array(
|
||||||
'TestObjects'=>'TestObject'
|
'TestObjects'=>'TestObject'
|
||||||
);
|
);
|
||||||
|
|
||||||
public function getCMSFields() {
|
public function getCMSFields() {
|
||||||
$fields=parent::getCMSFields();
|
$fields=parent::getCMSFields();
|
||||||
|
|
||||||
$conf=GridFieldConfig_RelationEditor::create(10);
|
$conf=GridFieldConfig_RecordEditor::create(10);
|
||||||
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
|
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
|
||||||
|
|
||||||
$fields->addFieldToTab('Root.TestObjects', new GridField('TestObjects', 'TestObjects', $this->TestObjects(), $conf));
|
$fields->addFieldToTab('Root.TestObjects', new GridField('TestObjects', 'TestObjects', $this->TestObjects(), $conf));
|
||||||
|
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*** TestObject.php ***/
|
/*** TestObject.php ***/
|
||||||
|
use SilverStripe\ORM\DataObject;
|
||||||
|
|
||||||
class TestObject extends DataObject {
|
class TestObject extends DataObject {
|
||||||
private static $db=array(
|
private static $db=array(
|
||||||
'Title'=>'Text',
|
'Title'=>'Text',
|
||||||
'SortOrder'=>'Int'
|
'SortOrder'=>'Int'
|
||||||
);
|
);
|
||||||
|
|
||||||
private static $has_one=array(
|
private static $has_one=array(
|
||||||
'Parent'=>'TestPage'
|
'Parent'=>'TestPage'
|
||||||
);
|
);
|
||||||
|
|
||||||
private static $default_sort='SortOrder';
|
private static $default_sort='SortOrder';
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -2,29 +2,33 @@ many_many Example
|
|||||||
=================
|
=================
|
||||||
```php
|
```php
|
||||||
/*** TestPage.php ***/
|
/*** TestPage.php ***/
|
||||||
|
use SilverStripe\Forms\GridField\GridField;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;
|
||||||
|
|
||||||
class TestPage extends Page {
|
class TestPage extends Page {
|
||||||
private static $many_many=array(
|
private static $many_many=array(
|
||||||
'TestObjects'=>'TestObject'
|
'TestObjects'=>'TestObject'
|
||||||
);
|
);
|
||||||
|
|
||||||
private static $many_many_extraFields=array(
|
private static $many_many_extraFields=array(
|
||||||
'TestObjects'=>array(
|
'TestObjects'=>array(
|
||||||
'SortOrder'=>'Int'
|
'SortOrder'=>'Int'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
public function getCMSFields() {
|
public function getCMSFields() {
|
||||||
$fields=parent::getCMSFields();
|
$fields=parent::getCMSFields();
|
||||||
|
|
||||||
$conf=GridFieldConfig_RelationEditor::create(10);
|
$conf=GridFieldConfig_RelationEditor::create(10);
|
||||||
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
|
$conf->addComponent(new GridFieldSortableRows('SortOrder'));
|
||||||
|
|
||||||
$fields->addFieldToTab('Root.TestObjects', new GridField('TestObjects', 'TestObjects', $this->TestObjects(), $conf));
|
$fields->addFieldToTab('Root.TestObjects', new GridField('TestObjects', 'TestObjects', $this->TestObjects(), $conf));
|
||||||
|
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function TestObjects() {
|
public function TestObjects() {
|
||||||
return $this->getManyManyComponents('TestObjects')->sort('SortOrder');
|
return $this->getManyManyComponents('TestObjects')->sort('SortOrder');
|
||||||
}
|
}
|
||||||
@ -32,13 +36,15 @@ class TestPage extends Page {
|
|||||||
|
|
||||||
|
|
||||||
/*** TestObject.php ***/
|
/*** TestObject.php ***/
|
||||||
|
use SilverStripe\ORM\DataObject;
|
||||||
|
|
||||||
class TestObject extends DataObject {
|
class TestObject extends DataObject {
|
||||||
private static $db=array(
|
private static $db=array(
|
||||||
'Title'=>'Text'
|
'Title'=>'Text'
|
||||||
);
|
);
|
||||||
|
|
||||||
private static $belongs_many_many=array(
|
private static $belongs_many_many=array(
|
||||||
'TestPages'=>'TestPage'
|
'TestPages'=>'TestPage'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -2,17 +2,21 @@ ModelAdmin implementation Example
|
|||||||
=================
|
=================
|
||||||
```php
|
```php
|
||||||
/**** MyModelAdmin.php ****/
|
/**** MyModelAdmin.php ****/
|
||||||
|
use SilverStripe\Admin\ModelAdmin;
|
||||||
|
use SilverStripe\Forms\GridField\GridField;
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;
|
||||||
|
|
||||||
class MyModelAdmin extends ModelAdmin {
|
class MyModelAdmin extends ModelAdmin {
|
||||||
private static $menu_title='My Model Admin';
|
private static $menu_title='My Model Admin';
|
||||||
private static $url_segment='my-model-admin';
|
private static $url_segment='my-model-admin';
|
||||||
|
|
||||||
private static $managed_models=array(
|
private static $managed_models=array(
|
||||||
'MATestObject'
|
'MATestObject'
|
||||||
);
|
);
|
||||||
|
|
||||||
public function getEditForm($id = null, $fields = null) {
|
public function getEditForm($id = null, $fields = null) {
|
||||||
$form=parent::getEditForm($id, $fields);
|
$form=parent::getEditForm($id, $fields);
|
||||||
|
|
||||||
//This check is simply to ensure you are on the managed model you want adjust accordingly
|
//This check is simply to ensure you are on the managed model you want adjust accordingly
|
||||||
if($this->modelClass=='MATestObject' && $gridField=$form->Fields()->dataFieldByName($this->sanitiseClassName($this->modelClass))) {
|
if($this->modelClass=='MATestObject' && $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
|
//This is just a precaution to ensure we got a GridField from dataFieldByName() which you should have
|
||||||
@ -20,18 +24,20 @@ class MyModelAdmin extends ModelAdmin {
|
|||||||
$gridField->getConfig()->addComponent(new GridFieldSortableRows('SortOrder'));
|
$gridField->getConfig()->addComponent(new GridFieldSortableRows('SortOrder'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**** MATestObject.php ****/
|
/**** MATestObject.php ****/
|
||||||
|
use SilverStripe\ORM\DataObject;
|
||||||
|
|
||||||
class MATestObject extends DataObject {
|
class MATestObject extends DataObject {
|
||||||
private static $db=array(
|
private static $db=array(
|
||||||
'Title'=>'Varchar',
|
'Title'=>'Varchar',
|
||||||
'SortOrder'=>'Int'
|
'SortOrder'=>'Int'
|
||||||
);
|
);
|
||||||
|
|
||||||
private static $default_sort='SortOrder';
|
private static $default_sort='SortOrder';
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user