Adds drag and drop functionality to SilverStripe's GridField
Go to file
UndefinedOffset 086bff1a13 Added titles
2012-07-10 12:01:35 -03:00
.settings Initial commit of module 2012-05-09 14:14:34 -03:00
code/forms Fixed issue where the sort order could become confused because the filter() was not applied when calling fixSortColumn() 2012-07-10 11:33:22 -03:00
css MINOR: Added label to the "Allow Drag and Drop" text so that clicking this will activate the checkbox 2012-05-31 19:50:33 -03:00
docs Added titles 2012-07-10 12:01:35 -03:00
images Added missing image 2012-05-18 19:28:13 -03:00
javascript Fixed compatibility issues with SS3 Beta 3 2012-05-28 11:26:33 -03:00
lang Added support for cross page sorting 2012-05-16 22:37:08 -03:00
templates/Includes MINOR: Added label to the "Allow Drag and Drop" text so that clicking this will activate the checkbox 2012-05-31 19:50:33 -03:00
tests/forms Added permission checking to ensure the user can edit a row 2012-05-15 12:33:00 -03:00
_config.php Initial commit of module 2012-05-09 14:14:34 -03:00
.buildpath Initial commit of module 2012-05-09 14:14:34 -03:00
.project Initial commit of module 2012-05-09 14:14:34 -03:00
README.md Corrected example snippet not displaying right 2012-07-10 11:36:54 -03:00

SortableGridField

Adds drag and drop functionality to SilverStripe 3.0's GridField

Requirments

  • SilverStripe 3.0

Installation

  • Download the module from here https://github.com/UndefinedOffset/SortableGridField/downloads
  • Extract the downloaded archive into your site root so that the destination folder is called SortableGridField, opening the extracted folder should contain _config.php in the root along with other files/folders
  • Run dev/build?flush=all to regenerate the manifest
  • Upon entering the cms and using GridFieldSortableRows component for the first time you make need to add ?flush=all to the end of the address to force the templates to regenerate

Usage

To enable sorting on a has_many relationship set up an interger field on your data object. Also for has_many relationships make sure to set the $default_sort on the dataobject to this new interger field to ensure that the sort order is applied when the relationship is requested. For many_many relationships you must add a $many_many_extraFields static to the data object defining the relationship, see the SilverStripe documentation for more information on this. If you are using a many_many relationship you will need to do a custom getter to set the sort order of this relationship for use on the front end see bellow for an example.

:::php
public function getMyManyManyRelationship() {
    return $this->getManyManyComponents('MyManyManyRelationship')->sort('SortColumn');
}

To enable drag and drop sorting on the grid field add the following to your grid field's config Grid Field Config

:::php
$myGridConfig->addComponent(new GridFieldSortableRows('{Column to store sort}'));

To move an item to another page drag the row over the respective page button and release.

@TODO

  • Optimize re-ordering of a has_many relationship when sorting on a single page