mirror of
https://github.com/symbiote/silverstripe-gridfieldextensions.git
synced 2024-10-22 17:05:39 +02:00
Merge pull request #289 from silverstripe-superchargers/feature/republish-live-records
NEW added the ability to autopublish items that are already live
This commit is contained in:
commit
06bb23919d
@ -114,6 +114,19 @@ 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 = new GridFieldOrderableRows()
|
||||||
|
->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
|
||||||
|
@ -89,8 +89,18 @@ class GridFieldOrderableRows extends RequestHandler implements
|
|||||||
*/
|
*/
|
||||||
protected $reorderColumnNumber = 0;
|
protected $reorderColumnNumber = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $sortField
|
* @param string $sortField
|
||||||
|
* @param boolean $republishLiveRecords
|
||||||
*/
|
*/
|
||||||
public function __construct($sortField = 'Sort')
|
public function __construct($sortField = 'Sort')
|
||||||
{
|
{
|
||||||
@ -138,6 +148,28 @@ class GridFieldOrderableRows extends RequestHandler implements
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string|array
|
* @return string|array
|
||||||
*/
|
*/
|
||||||
@ -656,7 +688,15 @@ class GridFieldOrderableRows extends RequestHandler implements
|
|||||||
$record = $currentSortList[$targetRecordID];
|
$record = $currentSortList[$targetRecordID];
|
||||||
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