Adds drag and drop functionality to SilverStripe's GridField
Go to file
francisco arenas a5dbd8e8a2 spanish translation 2012-10-07 17:04:09 -03:00
.settings Updated project config for SS3.0 2012-07-16 19:24:31 -03:00
code/forms Fixed issue were "No items to sort" would always be sent back 2012-09-10 09:40:54 -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 Update docs/HasManyExample.md 2012-10-05 14:10:58 -03:00
images Added missing image 2012-05-18 19:28:13 -03:00
javascript BUGFIX renamed the Items array that is sent in post, as it was being overriden by another postvar called Items, containing GridState data. The array of Item Ids used by SortableGridField is now called ItemIDs 2012-09-10 13:38:00 +10:00
lang spanish translation 2012-10-07 17:04:09 -03:00
templates/Includes BUGFIX: Fixed issue were the allow drag and drop checkbox would trigger the form changed flag (Issue 3) thanks dasplan 2012-07-31 09:28:09 -03:00
tests/forms Added missing yml file for auto sort test 2012-09-06 12:29:31 -03:00
.buildpath Initial commit of module 2012-05-09 14:14:34 -03:00
.gitignore spanish translation 2012-10-07 17:04:09 -03:00
.project Renamed Eclipse Project 2012-07-15 12:53:27 -03:00
README.md Update README.md 2012-08-20 12:55:04 -03:00
_config.php Initial commit of module 2012-05-09 14:14:34 -03:00

README.md

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. For new DataObjects you do not need to increment the Sort order yourself in your DataObject GridFieldSortableRows will automatically do this the next time the grid is displayed.

:::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