oObject = $oObject; $this->ComputeDetails(); $this->SetToolBlocks([]); $this->ComputeActions(); } /** * Compute object zlists and build the Field map that will be displayed * * @return void * @throws \ArchivedObjectException * @throws \CoreException * @throws \DictExceptionMissingString */ public function ComputeDetails(){ $sClass = $this->sClassName; $aDetailsList = MetaModel::GetZListItems($sClass, 'summary'); if(empty($aDetailsList)){ $aComplementAttributeSpec = MetaModel::GetNameSpec($sClass, FriendlyNameType::COMPLEMENTARY); $aAdditionalField = $aComplementAttributeSpec[1]; if (!empty($aAdditionalField)) { $aDetailsList = $aAdditionalField; } } $aFieldsMap = []; foreach ($aDetailsList as $sAttCode) { $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode); $sAttLabel = MetaModel::GetLabel($sClass, $sAttCode); $aFieldsMap[$sAttLabel] = $this->oObject->GetAsHTML($sAttCode); } $this->aObjectDisplayValues = $aFieldsMap; } /** * Build the Actions that will be displayed in the summary header * * @return void * @throws \Exception */ private function ComputeActions() { $oRouter = Router::GetInstance(); $oDetailsButton = null; // We can pass a DBObject to the UIBlock, so we check for the DisplayModifyForm method if(method_exists($this->oObject, 'DisplayModifyForm') && UserRights::IsActionAllowed($this->sClassName, UR_ACTION_MODIFY)) { $oPopoverMenu = new PopoverMenu(); $oDetailsAction = new URLPopupMenuItem( 'UI:Menu:View', Dict::S('UI:Menu:View'), ApplicationContext::MakeObjectUrl($this->sClassName, $this->sObjectId), '_blank' ); $oModifyButton = ButtonUIBlockFactory::MakeLinkNeutral( $oRouter->GenerateUrl('object.modify', ['class' => $this->sClassName, 'id' => $this->sObjectId]), Dict::S('UI:Menu:Modify'), 'fas fa-external-link-alt', '_blank', ); $oPopoverMenu->AddItem('more-actions', PopoverMenuItemFactory::MakeFromApplicationPopupMenuItem($oDetailsAction))->SetContainer(PopoverMenu::ENUM_CONTAINER_PARENT); $oDetailsButton = ButtonGroupUIBlockFactory::MakeButtonWithOptionsMenu($oModifyButton, $oPopoverMenu); } else { $oDetailsButton = ButtonUIBlockFactory::MakeLinkNeutral( ApplicationContext::MakeObjectUrl($this->sClassName, $this->sObjectId), Dict::S('UI:Menu:View'), 'fas fa-external-link-alt', '_blank', ); } $this->oActions = $oDetailsButton; $this->AddToolbarBlock($oDetailsButton); } /** * @return \Combodo\iTop\Application\UI\Base\UIBlock */ public function GetActions(): UIBlock { return $this->oActions; } /** * @param \Combodo\iTop\Application\UI\Base\UIBlock $oActions * * @return $this */ public function SetActions(UIBlock $oActions) { $this->oActions = $oActions; return $this; } /** * @return array */ public function GetDisplayValues() { return $this->aObjectDisplayValues; } /** * @param array $aObjectDisplayValues * * @return $this */ public function SetObjectDisplayValues(array $aObjectDisplayValues) { $this->aObjectDisplayValues = $aObjectDisplayValues; return $this; } /** * @inheritDoc */ public static function GetShortcutKeys(): array { return []; } /** * @inheritDoc */ public static function GetShortcutTriggeredElementSelector(): string { return ""; } }