diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index 196e0daa59..47afe276f4 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -1149,7 +1149,7 @@ celerity_register_resource_map(array( ), 'diviner-shared-css' => array( - 'uri' => '/res/1f75ab71/rsrc/css/diviner/diviner-shared.css', + 'uri' => '/res/9c11bf88/rsrc/css/diviner/diviner-shared.css', 'type' => 'css', 'requires' => array( diff --git a/src/applications/diviner/atom/DivinerAtom.php b/src/applications/diviner/atom/DivinerAtom.php index 2c8865804c..8d092c89cb 100644 --- a/src/applications/diviner/atom/DivinerAtom.php +++ b/src/applications/diviner/atom/DivinerAtom.php @@ -204,6 +204,7 @@ final class DivinerAtom { $this->getContentRaw(), $this->getDocblockRaw(), $this->getProperties(), + $this->getChildHashes(), mpull($this->extends, 'toHash'), mpull($this->links, 'toHash'), ); diff --git a/src/applications/diviner/controller/DivinerAtomController.php b/src/applications/diviner/controller/DivinerAtomController.php index 074e400bde..d9374af80b 100644 --- a/src/applications/diviner/controller/DivinerAtomController.php +++ b/src/applications/diviner/controller/DivinerAtomController.php @@ -152,22 +152,41 @@ final class DivinerAtomController extends DivinerController { ->setHeader($spec['title'])); $task_methods = idx($methods_by_task, $spec['name'], array()); - $inner_box = id(new PHUIBoxView()) - ->addPadding(PHUI::PADDING_LARGE_LEFT) - ->addPadding(PHUI::PADDING_LARGE_RIGHT) - ->addPadding(PHUI::PADDING_LARGE_BOTTOM); - if ($task_methods) { - $inner_box->appendChild(hsprintf('')); + + $box_content[] = phutil_tag( + 'ul', + array( + 'class' => 'diviner-list', + ), + $list_items); } else { $no_methods = pht('No methods for this task.'); - $inner_box->appendChild(hsprintf('%s', $no_methods)); + $box_content = phutil_tag('em', array(), $no_methods); } + + $inner_box->appendChild($box_content); $section->addContent($inner_box); } $document->appendChild($section); @@ -406,7 +425,9 @@ final class DivinerAtomController extends DivinerController { return $task_specs + $extends_task_specs; } - private function renderFullSignature(DivinerLiveSymbol $symbol) { + private function renderFullSignature( + DivinerLiveSymbol $symbol, + $is_link = false) { switch ($symbol->getType()) { case DivinerAtom::TYPE_CLASS: case DivinerAtom::TYPE_INTERFACE: @@ -471,7 +492,7 @@ final class DivinerAtomController extends DivinerController { array( 'class' => 'diviner-atom-signature-name', 'href' => $anchor ? '#'.$anchor : null, - 'name' => $anchor, + 'name' => $is_link ? null : $anchor, ), $symbol->getName()); diff --git a/src/applications/diviner/controller/DivinerController.php b/src/applications/diviner/controller/DivinerController.php index 8e116d110a..5347a18b06 100644 --- a/src/applications/diviner/controller/DivinerController.php +++ b/src/applications/diviner/controller/DivinerController.php @@ -38,7 +38,7 @@ abstract class DivinerController extends PhabricatorController { DivinerAtom::getAtomTypeNameString( $symbol->getType())); - $item->addAttribute(phutil_safe_html($symbol->getSummary())); + $item->addAttribute($symbol->getSummary()); $list->addItem($item); } diff --git a/src/applications/diviner/publisher/DivinerLivePublisher.php b/src/applications/diviner/publisher/DivinerLivePublisher.php index 62004da063..cc72583817 100644 --- a/src/applications/diviner/publisher/DivinerLivePublisher.php +++ b/src/applications/diviner/publisher/DivinerLivePublisher.php @@ -117,11 +117,12 @@ final class DivinerLivePublisher extends DivinerPublisher { ->setGroupName($ref->getGroup()) ->setNodeHash($atom->getHash()); - if ($is_documentable) { + if ($atom->getType() !== DivinerAtom::TYPE_FILE) { $renderer = $this->getRenderer(); - $summary = $renderer->renderAtomSummary($atom); - $summary = (string)phutil_safe_html($summary); + $summary = $renderer->getAtomSummary($atom); $symbol->setSummary($summary); + } else { + $symbol->setSummary(''); } $symbol->save(); @@ -134,11 +135,15 @@ final class DivinerLivePublisher extends DivinerPublisher { // documentation, we insert them here. This also means we insert files, // which are unnecessary and unused. Make sure this makes sense, but then // probably introduce separate "isTopLevel" and "isDocumentable" flags? + // TODO: Yeah do that soon ^^^ + + if ($atom->getType() !== DivinerAtom::TYPE_FILE) { + $storage = $this->loadAtomStorageForSymbol($symbol) + ->setAtomData($atom->toDictionary()) + ->setContent(null) + ->save(); + } - $storage = $this->loadAtomStorageForSymbol($symbol) - ->setAtomData($atom->toDictionary()) - ->setContent(null) - ->save(); } } diff --git a/src/applications/diviner/renderer/DivinerDefaultRenderer.php b/src/applications/diviner/renderer/DivinerDefaultRenderer.php index c6d7b35806..26aa9514dd 100644 --- a/src/applications/diviner/renderer/DivinerDefaultRenderer.php +++ b/src/applications/diviner/renderer/DivinerDefaultRenderer.php @@ -124,7 +124,7 @@ final class DivinerDefaultRenderer extends DivinerRenderer { $summary); } - protected function getAtomSummary(DivinerAtom $atom) { + public function getAtomSummary(DivinerAtom $atom) { if ($atom->getDocblockMetaValue('summary')) { return $atom->getDocblockMetaValue('summary'); } diff --git a/webroot/rsrc/css/diviner/diviner-shared.css b/webroot/rsrc/css/diviner/diviner-shared.css index 4479ae6019..a0249609a8 100644 --- a/webroot/rsrc/css/diviner/diviner-shared.css +++ b/webroot/rsrc/css/diviner/diviner-shared.css @@ -81,3 +81,11 @@ .diviner-atom-signature-name { font-weight: bold; } + +.diviner-list .diviner-atom-signature { + color: {$greytext}; +} + +.diviner-list a { + font-weight: bold; +}