Source of file SiteTreeChangeRecordable.php
Size: 2,032 Bytes - Last Modified: 2021-12-23T10:25:23+00:00
/var/www/docs.ssmods.com/process/src/src/Extension/SiteTreeChangeRecordable.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | <?php namespace Symbiote\DataChange\Extension; use Symbiote\DataChange\Model\DataChangeRecord; use SilverStripe\Forms\FieldList; use SilverStripe\Security\Permission; use SilverStripe\Forms\GridField\GridFieldConfig_RecordViewer; use SilverStripe\Forms\GridField\GridField; /** * Add to Pages you want changes recorded for * * @author stephen@symbiote.com.au * @license BSD License http://silverstripe.org/bsd-license/ */ class SiteTreeChangeRecordable extends ChangeRecordable { public function onAfterPublish(&$original) { $this->dataChangeTrackService->track($this->owner, 'Publish'); } public function onAfterUnpublish() { $this->dataChangeTrackService->track($this->owner, 'Unpublish'); } public function updateCMSFields(FieldList $fields) { if (Permission::check('CMS_ACCESS_DataChangeAdmin')) { //Get all data changes relating to this page filter them by publish/unpublish $dataChanges = DataChangeRecord::get()->filter([ 'ChangeRecordID' => $this->owner->ID, 'ChangeRecordClass' => $this->owner->ClassName ])->exclude('ChangeType', 'Change'); //create a gridfield out of them $gridFieldConfig = GridFieldConfig_RecordViewer::create(); $publishedGrid = new GridField('PublishStates', 'Published States', $dataChanges, $gridFieldConfig); $dataColumns = $publishedGrid->getConfig()->getComponentByType('SilverStripe\Forms\GridField\GridFieldDataColumns'); $dataColumns->setDisplayFields( array('ChangeType' => 'Change Type', 'ObjectTitle' => 'Page Title', 'ChangedBy.Title' => 'User', 'Created' => 'Modification Date', ) ); //linking through to the datachanges modeladmin $fields->addFieldsToTab('Root.PublishedState', $publishedGrid); return $fields; } } } |