public function renderModuleStatus(AphrontRequest $request) { $viewer = $request->getViewer(); $extensions = PhabricatorHovercardEngineExtension::getAllExtensions(); $rows = array(); foreach ($extensions as $extension) { $rows[] = array($extension->getExtensionOrder(), $extension->getExtensionKey(), get_class($extension), $extension->getExtensionName(), $extension->isExtensionEnabled() ? pht('Yes') : pht('No')); } return id(new AphrontTableView($rows))->setHeaders(array(pht('Order'), pht('Key'), pht('Class'), pht('Name'), pht('Enabled')))->setColumnClasses(array(null, null, null, 'wide pri', null)); }
public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer(); $phids = $request->getArr('phids'); $handles = id(new PhabricatorHandleQuery())->setViewer($viewer)->withPHIDs($phids)->execute(); $objects = id(new PhabricatorObjectQuery())->setViewer($viewer)->withPHIDs($phids)->execute(); $objects = mpull($objects, null, 'getPHID'); $extensions = PhabricatorHovercardEngineExtension::getAllEnabledExtensions(); $extension_maps = array(); foreach ($extensions as $key => $extension) { $extension->setViewer($viewer); $extension_phids = array(); foreach ($objects as $phid => $object) { if ($extension->canRenderObjectHovercard($object)) { $extension_phids[$phid] = $phid; } } $extension_maps[$key] = $extension_phids; } $extension_data = array(); foreach ($extensions as $key => $extension) { $extension_phids = $extension_maps[$key]; if (!$extension_phids) { unset($extensions[$key]); continue; } $extension_data[$key] = $extension->willRenderHovercards(array_select_keys($objects, $extension_phids)); } $cards = array(); foreach ($phids as $phid) { $handle = $handles[$phid]; $object = $objects[$phid]; $hovercard = id(new PhabricatorHovercardView())->setUser($viewer)->setObjectHandle($handle); if ($object) { $hovercard->setObject($object); foreach ($extension_maps as $key => $extension_phids) { if (isset($extension_phids[$phid])) { $extensions[$key]->renderHovercard($hovercard, $handle, $object, $extension_data[$key]); } } } $cards[$phid] = $hovercard; } if ($request->isAjax()) { return id(new AphrontAjaxResponse())->setContent(array('cards' => $cards)); } foreach ($cards as $key => $hovercard) { $cards[$key] = phutil_tag('div', array('class' => 'ml'), $hovercard); } return $this->newPage()->appendChild($cards)->setShowFooter(false); }