true, 'font-icon-edit' => true, 'btn--icon-large' => true, 'action-menu--handled' => true ]; /** * @inheritdoc */ public function getTitle($gridField, $record, $columnName) { return _t(__CLASS__ . '.EDIT', "Edit"); } /** * @inheritdoc */ public function getGroup($gridField, $record, $columnName) { return GridField_ActionMenuItem::DEFAULT_GROUP; } /** * @inheritdoc */ public function getExtraData($gridField, $record, $columnName) { return [ "classNames" => "font-icon-edit action-detail edit-link" ]; } /** * @inheritdoc */ public function getUrl($gridField, $record, $columnName) { return Controller::join_links($gridField->Link('item'), $record->ID, 'edit'); } /** * Add a column 'Delete' * * @param GridField $gridField * @param array $columns */ public function augmentColumns($gridField, &$columns) { if (!in_array('Actions', $columns)) { $columns[] = 'Actions'; } } /** * Return any special attributes that will be used for FormField::create_tag() * * @param GridField $gridField * @param DataObject $record * @param string $columnName * @return array */ public function getColumnAttributes($gridField, $record, $columnName) { return ['class' => 'grid-field__col-compact']; } /** * Add the title * * @param GridField $gridField * @param string $columnName * @return array */ public function getColumnMetadata($gridField, $columnName) { if ($columnName == 'Actions') { return ['title' => '']; } return []; } /** * Which columns are handled by this component * * @param GridField $gridField * @return array */ public function getColumnsHandled($gridField) { return ['Actions']; } /** * Which GridField actions are this component handling. * * @param GridField $gridField * @return array */ public function getActions($gridField) { return []; } /** * @param GridField $gridField * @param DataObject $record * @param string $columnName * @return string The HTML for the column */ public function getColumnContent($gridField, $record, $columnName) { // No permission checks, handled through GridFieldDetailForm, // which can make the form readonly if no edit permissions are available. $data = new ArrayData([ 'Link' => Controller::join_links($gridField->Link('item'), $record->ID, 'edit'), 'ExtraClass' => $this->getExtraClass() ]); $template = SSViewer::get_templates_by_class($this, '', __CLASS__); return $data->renderWith($template); } /** * Get the extra HTML classes to add for edit buttons * * @return string */ public function getExtraClass() { return implode(' ', array_keys($this->extraClass)); } /** * Add an extra HTML class * * @param string $class * @return $this */ public function addExtraClass($class) { $this->extraClass[$class] = true; return $this; } /** * Remove an HTML class * * @param string $class * @return $this */ public function removeExtraClass($class) { unset($this->extraClass[$class]); return $this; } /** * Handle the actions and apply any changes to the GridField. * * @param GridField $gridField * @param string $actionName * @param mixed $arguments * @param array $data - form data * * @return void */ public function handleAction(GridField $gridField, $actionName, $arguments, $data) { } }