currentID = $currentID; } } /** * @param GridField $gridField * @return array|null */ public function getHTMLFragments($gridField) { $modelClass = $gridField->getModelClass(); $parentID = 0; if (!$this->currentID) { return null; } /** @var DataObject|Hierarchy $modelObj */ $modelObj = DataObject::get_by_id($modelClass, $this->currentID); if (!$modelObj) { throw new \LogicException( "Can't find object of class $modelClass ID #{$this->currentID} for GridFieldLevelup" ); } $parent = null; if ($modelObj->hasMethod('getParent')) { $parent = $modelObj->getParent(); } elseif ($modelObj->ParentID) { $parent = $modelObj->Parent(); } if ($parent) { $parentID = $parent->ID; } // Attributes $attrs = array_merge($this->attributes, [ 'href' => sprintf($this->linkSpec ?? '', $parentID), 'class' => 'cms-panel-link ss-ui-button font-icon-level-up no-text grid-levelup' ]); $linkTag = HTML::createTag('a', $attrs); $forTemplate = new ArrayData([ 'UpLink' => DBField::create_field('HTMLFragment', $linkTag) ]); $template = SSViewer::get_templates_by_class($this, '', __CLASS__); return [ 'before' => $forTemplate->renderWith($template), ]; } public function setAttributes($attrs) { $this->attributes = $attrs; return $this; } public function getAttributes() { return $this->attributes; } public function setLinkSpec($link) { $this->linkSpec = $link; return $this; } public function getLinkSpec() { return $this->linkSpec; } }