Source of file DataObjectOneRecordUpdateController.php
Size: 4,012 Bytes - Last Modified: 2021-12-23T10:39:22+00:00
/var/www/docs.ssmods.com/process/src/src/DataObjectOneRecordUpdateController.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | <?php namespace Sunnysideup\DataObjectSorter; use SilverStripe\Control\Director; use SilverStripe\Control\HTTPResponse; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\Form; use SilverStripe\Forms\FormAction; use SilverStripe\Forms\HiddenField; use Sunnysideup\DataObjectSorter\Api\DataObjectSorterRequirements; /** *@author nicolaas [at] sunnysideup.co.nz *@package: dataobjectsorter *@description: allows you to edit one record */ class DataObjectOneRecordUpdateController extends DataObjectSortBaseClass { private static $allowed_actions = [ 'onerecordform' => 'DATA_OBJECT_SORT_AND_EDIT_PERMISSION', 'show' => 'DATA_OBJECT_SORT_AND_EDIT_PERMISSION', 'save' => 'DATA_OBJECT_SORT_AND_EDIT_PERMISSION', ]; private static $fields_method = 'DosFields'; /** * make sure to also change in routes if you change this link. * * @var string */ private static $url_segment = 'dataobjectonerecordupdate'; public static function popup_link_only(string $className, int $recordID): string { return self::link_only_maker( DataObjectOneRecordUpdateController::class, 'show/' . self::classNameToString($className), ['id' => $recordID] ); } public static function popup_link( string $className, int $recordID, ?string $linkText = 'click here to edit' ): string { $link = DataObjectOneRecordUpdateController::popup_link_only($className, $recordID); return self::link_html_maker( $link, 'modalPopUp modal-popup', 'oneRecord' . self::classNameToString($className) . $recordID, $linkText ); } public static function button_link( string $className, int $recordID, ?string $linkText = 'click here to edit' ): string { $link = DataObjectOneRecordUpdateController::popup_link_only($className, $recordID); return self::button_maker( $link, 'modalPopUp modal-popup', 'oneRecord' . self::classNameToString($className) . $recordID, $linkText ); } public function onerecordform() { $obj = $this->getRecordAndCheckPermissions(); if ($obj instanceof HTTPResponse) { return $obj; } $formFields = $this->getFormFields($obj); if (! $formFields) { user_error('Form Fields could not be Found', E_USER_ERROR); } $formFields->push(new HiddenField('Table', 'Table', $this->SecureClassNameToBeUpdatedAsString())); $formFields->push(new HiddenField('Record', 'Record', $this->SecureRecordIdToBeUpdated())); $form = new Form( $controller = $this, $name = 'OneRecordForm', $formFields, $actions = new FieldList(new FormAction('save', 'save and close')) ); $form->loadDataFrom($obj); return $form; } public function save($data, $form) { $obj = $this->getRecordAndCheckPermissions(); if ($obj instanceof HTTPResponse) { return $obj; } $form->saveInto($obj); $obj->write(); return '<script>window.parent.jQuery.modal.close(true)</script>'; } public function show() { $obj = $this->getRecordAndCheckPermissions(); if ($obj instanceof HTTPResponse) { return $obj; } return parent::show(); } protected function init() { //must set this first. DataObjectSorterRequirements::theme_fix(DataObjectSorterRequirements::class); parent::init(); if (! Director::is_ajax()) { DataObjectSorterRequirements::popup_requirements('onerecord'); DataObjectSorterRequirements::url_variable( DataObjectOneRecordUpdateController::class, 'DataObjectOneRecordUpdateURL' ); } } } |