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).
|
**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
|
Configurable Paginator
|
||||||
|
@ -82,6 +82,15 @@ class GridFieldOrderableRows extends RequestHandler implements
|
|||||||
*/
|
*/
|
||||||
protected $extraSortFields = null;
|
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
|
* The number of the column containing the reorder handles
|
||||||
*
|
*
|
||||||
@ -147,6 +156,28 @@ class GridFieldOrderableRows extends RequestHandler implements
|
|||||||
return $this->extraSortFields;
|
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
|
* 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) {
|
if ($record->$sortField != $newSortValue) {
|
||||||
$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();
|
$record->write();
|
||||||
|
if ($shouldRepublish) {
|
||||||
|
$record->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user