mirror of
https://github.com/symbiote/silverstripe-gridfieldextensions.git
synced 2024-10-22 17:05:39 +02:00
Merge pull request #334 from josephlewisnz/feature/republish-live-records-3
Feature/republish live records 3
This commit is contained in:
commit
d5d438c5cc
@ -106,6 +106,17 @@ class Item extends DataObject {
|
||||
}
|
||||
```
|
||||
|
||||
### Versioning
|
||||
By default `GridFieldOrderableRows` will handle versioning but won't automatically publish any records. The user will need to go into each record and publish them manually which could get cumbersome for large lists.
|
||||
|
||||
You can configure the list to automatically publish a record if the record is the latest version and is already published. This won't publish any records which have draft changes.
|
||||
|
||||
```php
|
||||
$orderable = GridFieldOrderableRows::create()->setRepublishLiveRecords(true);
|
||||
```
|
||||
|
||||
There are caveats with both approaches so consideration should be made for which approach best suits the requirements.
|
||||
|
||||
**Please NOTE:** There is a limitation when using `GridFieldOrderableRows` on unsaved data objects; namely, that it doesn't work as without data being saved, the list of related objects has no context. Please check `$this->ID` before adding the `GridFieldOrderableRows` component to the grid field config (or even, before adding the gridfield at all).
|
||||
|
||||
Configurable Paginator
|
||||
|
@ -82,6 +82,15 @@ class GridFieldOrderableRows extends RequestHandler implements
|
||||
*/
|
||||
protected $extraSortFields = null;
|
||||
|
||||
/**
|
||||
* If the items in the list are versioned and this is set to true, then
|
||||
* we will check to see if the version we're sorting is the latest published
|
||||
* version and if so then we will re-publish the item.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $republishLiveRecords = false;
|
||||
|
||||
/**
|
||||
* The number of the column containing the reorder handles
|
||||
*
|
||||
@ -147,6 +156,28 @@ class GridFieldOrderableRows extends RequestHandler implements
|
||||
return $this->extraSortFields;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see $republishLiveRecords
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getRepublishLiveRecords()
|
||||
{
|
||||
return $this->republishLiveRecords;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see $republishLiveRecords
|
||||
*
|
||||
* @param boolean $bool
|
||||
* @return GridFieldOrderableRows $this
|
||||
*/
|
||||
public function setRepublishLiveRecords($bool)
|
||||
{
|
||||
$this->republishLiveRecords = $bool;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if the relationship list is for a type of many_many
|
||||
*
|
||||
@ -628,7 +659,15 @@ class GridFieldOrderableRows extends RequestHandler implements
|
||||
|
||||
if ($record->$sortField != $newSortValue) {
|
||||
$record->$sortField = $newSortValue;
|
||||
|
||||
// We need to do this before writing otherwith isLiveVersion() will always be false
|
||||
$shouldRepublish = $this->getRepublishLiveRecords() && $record->isLiveVersion();
|
||||
|
||||
// Write our staged record and publish if required
|
||||
$record->write();
|
||||
if ($shouldRepublish) {
|
||||
$record->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user