Source of file GridFieldWorkflowRestrictedEditButton.php
Size: 2,784 Bytes - Last Modified: 2021-12-23T10:27:27+00:00
/var/www/docs.ssmods.com/process/src/src/Forms/gridfield/GridFieldWorkflowRestrictedEditButton.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | <?php namespace Symbiote\AdvancedWorkflow\Forms\GridField; use SilverStripe\Control\Controller; use SilverStripe\Forms\GridField\GridField_ColumnProvider; use SilverStripe\Forms\GridField\GridFieldEditButton; use SilverStripe\Security\Permission; use SilverStripe\Security\Security; use SilverStripe\View\ArrayData; use Symbiote\AdvancedWorkflow\DataObjects\WorkflowInstance; /** * * @package advancedworkflow */ class GridFieldWorkflowRestrictedEditButton implements GridField_ColumnProvider { /** * Add a column * * @param type $gridField * @param array $columns */ public function augmentColumns($gridField, &$columns) { if (!in_array('Actions', $columns)) { $columns[] = 'Actions'; } } /** * Append a 'disabled' CSS class to GridField rows whose WorkflowInstance records are not viewable/editable * by the current user. * * This is used to visually "grey out" records and it's leveraged in some overriding JavaScript, to maintain * an ability to click the target object's hyperlink. * * @param GridField $gridField * @param DataObject $record * @param string $columnName * @return array */ public function getColumnAttributes($gridField, $record, $columnName) { $defaultAtts = array('class' => 'col-buttons'); if ($record instanceof WorkflowInstance) { $isAdmin = Permission::check('ADMIN'); $isAssigned = $record->getAssignedMembers()->find('ID', Security::getCurrentUser()->ID); if (!$isAdmin && !$isAssigned) { $atts['class'] = $defaultAtts['class'].' disabled'; return $atts; } return $defaultAtts; } return $defaultAtts; } /** * Add the title * * @param GridField $gridField * @param string $columnName * @return array */ public function getColumnMetadata($gridField, $columnName) { if ($columnName == 'Actions') { return array('title' => ''); } } /** * Which columns are handled by this component * * @param type $gridField * @return type */ public function getColumnsHandled($gridField) { return array('Actions'); } /** * @param GridField $gridField * @param DataObject $record * @param string $columnName * * @return string - the HTML for the column */ public function getColumnContent($gridField, $record, $columnName) { $data = new ArrayData(array( 'Link' => Controller::join_links($gridField->Link('item'), $record->ID, 'edit') )); return $data->renderWith(GridFieldEditButton::class); } } |