Source of file GridFieldUnarchiveElementAction.php
Size: 3,469 Bytes - Last Modified: 2021-12-24T06:43:44+00:00
/var/www/docs.ssmods.com/process/src/src/Reports/GridFieldUnarchiveElementAction.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | <?php namespace Derralf\Elemental\ArchiveReport; use DNADesign\Elemental\Models\BaseElement; use SilverStripe\Dev\Debug; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridField_ColumnProvider; use SilverStripe\Forms\GridField\GridField_ActionProvider; use SilverStripe\Forms\GridField\GridField_FormAction; use SilverStripe\Control\Controller; use SilverStripe\Versioned\Versioned; class GridFieldUnarchiveElementAction implements GridField_ColumnProvider, GridField_ActionProvider { public function augmentColumns($gridField, &$columns) { if(!in_array('Actions', $columns)) { $columns[] = 'Actions'; } } public function getColumnAttributes($gridField, $record, $columnName) { return ['class' => 'grid-field__col-compact']; } public function getColumnMetadata($gridField, $columnName) { if($columnName == 'Actions') { return ['title' => '']; } } public function getColumnsHandled($gridField) { return ['Actions']; } public function getColumnContent($gridField, $record, $columnName) { if(!$record->canEdit()) return; $showField = false; if($record->isArchived()){ $showField = true; $label = _t(__CLASS__ . '.Unarchive', 'Unarchive'); } if($record->isOnLiveOnly()) { $showField = true; $label = _t(__CLASS__ . '.MakeDraft', 'Unlive'); } if($showField){ $field = GridField_FormAction::create( $gridField, 'UnarchiveElementAction'.$record->ID, $label, "dounarchiveelementaction", ['RecordID' => $record->ID] ); return $field->Field(); } } public function getActions($gridField) { return ['dounarchiveelementaction']; } public function handleAction(GridField $gridField, $actionName, $arguments, $data) { //Debug::show($arguments); //return; if($actionName == 'dounarchiveelementaction') { return $this->handleUnarchiveElement($arguments); } } public function handleUnarchiveElement($arguments) { $id = (int) $arguments["RecordID"]; $item = Versioned::get_latest_version(BaseElement::class, $id); if(!$item){ $message = "Error: Item with ID {$id} not found."; Controller::curr()->getResponse()->setStatusCode( 400, $message ); return; } if($item->isOnLiveOnly()) { $item->doUnpublish(); $message = "Item with ID {$id} set to draft"; } if($item->isArchived()) { // $message = "Item with ID {$id} is archived and will be restored."; //$oldReadingMode = Versioned::get_reading_mode(); //Versioned::set_stage(Versioned::DRAFT); Versioned::set_stage(Versioned::DRAFT); $item->forceChange(); $item->write(); //Versioned::set_reading_mode($oldReadingMode); $message = "Item with ID {$id} was restored to draft stage"; //Debug::show($message); } // output a success message to the user Controller::curr()->getResponse()->setStatusCode( 200, $message ); } } |