Source of file CatalogPageGridFieldDetailForm.php
Size: 7,548 Bytes - Last Modified: 2021-12-24T06:45:23+00:00
/var/www/docs.ssmods.com/process/src/code/Forms/CatalogPageGridFieldDetailForm.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 | <?php /** * Class CatalogPageGridFieldDetailForm */ class CatalogPageGridFieldDetailForm extends GridFieldDetailForm { } /** * Class CatalogPageGridFieldDetailForm_ItemRequest */ class CatalogPageGridFieldDetailForm_ItemRequest extends GridFieldDetailForm_ItemRequest { /** * @var array */ private static $allowed_actions = array( 'ItemEditForm' ); /** * @return Form */ public function ItemEditForm() { if (!$this->record->isPublished()) { Versioned::reading_stage('Stage'); } if (!$this->record->ParentID) { // set a parent id for the record, even if it will change $parents = $this->record->getCatalogParents(); if ($parents && $parents->count()) $this->record->ParentID = $parents->first()->ID; } $form = parent::ItemEditForm(); if ($this->record->has_extension('CatalogPageExtension') || $this->record->has_extension('CatalogDataObjectExtension') ) { $actions = $form->Actions(); if ($this->record->ID) { if ($this->record->isPublished()) { $actions->push( FormAction::create('doDisable', _t('CatalogManager.DISABLE', 'Disable')) ->setUseButtonTag(true) ->addExtraClass('ss-ui-action-destructive') ); } else { $actions->push( FormAction::create('doEnable', _t('CatalogManager.ENABLE', 'Enable')) ->setUseButtonTag(true) ->addExtraClass('ss-ui-action-constructive') ->setAttribute('data-icon', 'accept') ); } } if ($this->record->canCreate() && $this->record->stat('can_duplicate') == true) { $actions->push( FormAction::create('doDuplicate', _t('CatalogManager.DUPLICATE', 'Duplicate')) ->setUseButtonTag(true) ->addExtraClass('ss-ui-action-constructive') ->setAttribute('data-icon', 'accept') ); } $form->setActions($actions); } $this->extend('updateItemEditForm', $form); return $form; } /** * @param $data * @param $form * @return HTMLText|ViewableData_Customised */ public function doEnable($data, $form) { $this->publish($data, $form); return $this->edit(Controller::curr()->getRequest()); } /** * @param $data * @param $form * @return HTMLText|ViewableData_Customised */ public function doDisable($data, $form) { $this->unpublish($data, $form); return $this->edit(Controller::curr()->getRequest()); } /** * @param $data * @param $form * @return HTMLText|SS_HTTPResponse|ViewableData_Customised|void */ public function doSave($data, $form) { $currentStage = Versioned::current_stage(); Versioned::reading_stage('Stage'); $action = parent::doSave($data, $form); Versioned::reading_stage($currentStage); if ($this->record->isPublished()) { $this->publish($data, $form); } return $action; } /** * @param $data * @param $form * @return bool|SS_HTTPResponse */ public function doDelete($data, $form) { if ($this->record->isPublished()) { $this->unpublish($data, $form); } $currentStage = Versioned::current_stage(); Versioned::reading_stage('Stage'); $action = parent::doDelete($data, $form); Versioned::reading_stage($currentStage); return $action; } /** * @param $data * @param $form */ private function publish($data, $form) { $currentStage = Versioned::current_stage(); Versioned::reading_stage('Stage'); $class = $this->record->ClassName; $page = $class::get()->byID($this->record->ID); if ($page) { $page->doPublish(); $form->sessionMessage( _t( 'CatalogManager.SUCCESS', '{title} has been {type}.', "", array( 'title' => $this->record->getTitle(), 'type' => 'enabled' ) ), 'good' ); } else { $form->sessionMessage( _t( 'CatalogManager.ERROR', 'Something failed, please refresh your browser.' ), 'bad' ); } Versioned::reading_stage($currentStage); } /** * @param $data * @param $form */ private function unpublish($data, $form) { $currentStage = Versioned::current_stage(); Versioned::reading_stage('Stage'); $class = $this->record->ClassName; $page = $class::get()->byID($this->record->ID); if ($page) { $page->doUnpublish(); $form->sessionMessage( _t( 'CatalogManager.SUCCESS', '{title} has been {type}.', "", array( 'title' => $this->record->getTitle(), 'type' => 'disabled' ) ), 'good' ); } else { $form->sessionMessage( _t( 'CatalogManager.ERROR', 'Something failed, please refresh your browser.' ), 'bad' ); } Versioned::reading_stage($currentStage); } /** * @param $data * @param $form * @return HTMLText|ViewableData_Customised */ public function doDuplicate($data, $form) { $this->duplicate($data, $form); return $this->edit(Controller::curr()->getRequest()); } /** * @param $data * @param $form */ private function duplicate($data, $form) { Versioned::reading_stage('Stage'); $class = $this->record->ClassName; $page = $class::get()->byID($this->record->ID); $newPage = false; if ($page) { $page->Title = "Copy of " . $page->Title; $newPage = $page->duplicate(); $form->sessionMessage( _t( 'CatalogManager.SUCCESS', '{title} has been {type}.', "", array( 'title' => $this->record->getTitle(), 'type' => 'duplicated' ) ), 'good' ); } else { $form->sessionMessage( _t( 'CatalogManager.ERROR', 'Something failed, please refresh your browser.' ), 'bad' ); } Versioned::reading_stage('Live'); if ($newPage) { Controller::curr()->redirect(Controller::curr()->Link() . '/EditForm/field/' . $this->record->ClassName . '/item/' . $newPage->ID); } } } |