content[] = ''; } public function beginChildren(): void { if ($this->getInnerIterator()->getMatches()) { $this->content[] = ''; } } public function render() { foreach ($this as $section) { if (($matches = $this->getInnerIterator()->getMatches()) === null) { continue; } $title = $this->getView()->escape($section->getTitle()); $contentMatches = array(); foreach ($matches as $match) { if ($match->getMatchType() === DocSearchMatch::MATCH_HEADER) { $title = $match->highlight(); } else { $contentMatches[] = sprintf( '

%s

', $match->highlight() ); } } $path = $this->getView()->getHelper('Url')->url( array_merge( $this->getUrlParams(), array( 'chapter' => $this->encodeUrlParam($section->getChapter()->getId()) ) ), $this->url, false, false ); $url = $this->getView()->url( $path, array('highlight-search' => $this->getInnerIterator()->getSearch()->getInput()) ); /** @var \Icinga\Web\Url $url */ $url->setAnchor($this->encodeAnchor($section->getId())); $urlAttributes = array( 'data-base-target' => '_next', 'title' => $section->getId() === $section->getChapter()->getId() ? sprintf( $this->getView()->translate( 'Show all matches of "%s" in the chapter "%s"', 'search.render.section.link' ), $this->getInnerIterator()->getSearch()->getInput(), $section->getChapter()->getTitle() ) : sprintf( $this->getView()->translate( 'Show all matches of "%s" in the section "%s" of the chapter "%s"', 'search.render.section.link' ), $this->getInnerIterator()->getSearch()->getInput(), $section->getTitle(), $section->getChapter()->getTitle() ) ); if ($section->getNoFollow()) { $urlAttributes['rel'] = 'nofollow'; } $this->content[] = '
  • ' . $this->getView()->qlink( $title, $url->getAbsoluteUrl(), null, $urlAttributes, false ); if (! empty($contentMatches)) { $this->content = array_merge($this->content, $contentMatches); } if (! $section->hasChildren()) { $this->content[] = '
  • '; } } return implode("\n", $this->content); } }