mirror of
https://github.com/symbiote/silverstripe-gridfieldextensions.git
synced 2024-10-22 17:05:39 +02:00
Added functionality so that GridFieldOrderableRows updates *_versions table for Versioned data objects.
This commit is contained in:
parent
7d1a48c5d7
commit
04d3f368c2
@ -339,8 +339,16 @@ class GridFieldOrderableRows extends RequestHandler implements
|
||||
$pool = array_values($values);
|
||||
sort($pool);
|
||||
|
||||
// If not a ManyManyList and using versioning, detect it.
|
||||
$isVersioned = false;
|
||||
$class = $list->dataClass();
|
||||
if ($class == $this->getSortTable($list)) {
|
||||
$isVersioned = $class::has_extension('Versioned');
|
||||
}
|
||||
|
||||
// Loop through each item, and update the sort values which do not
|
||||
// match to order the objects.
|
||||
if (!$isVersioned) {
|
||||
foreach(array_values($order) as $pos => $id) {
|
||||
if($values[$id] != $pool[$pos]) {
|
||||
DB::query(sprintf(
|
||||
@ -352,6 +360,20 @@ class GridFieldOrderableRows extends RequestHandler implements
|
||||
));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// For versioned objects, modify them with the ORM so that the
|
||||
// *_versions table is updated. This ensures re-ordering works
|
||||
// similar to the SiteTree where you change the position, and then
|
||||
// you go into the record and publish it.
|
||||
$sortField = $this->getSortField();
|
||||
foreach(array_values($order) as $pos => $id) {
|
||||
if($values[$id] != $pool[$pos]) {
|
||||
$record = $class::get()->byID($id);
|
||||
$record->$sortField = $pool[$pos];
|
||||
$record->write();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->extend('onAfterReorderItems', $list);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user