private function doModifyOutput(OutputPage $output)
 {
     $this->htmlBreadcrumbLinksBuilder->buildBreadcrumbs($output->getTitle());
     $this->htmlBreadcrumbLinksBuilder->setRTLDirectionalityState($output->getTitle()->getPageLanguage()->isRTL());
     $output->prependHTML($this->htmlBreadcrumbLinksBuilder->getHtml());
     return true;
 }
 /**
  * Test to ensure that no subobject is assigned from a Title that contains
  * a fragment
  */
 public function testBuildBreadcrumbsToNeverUseFragmentedPartOfTitle()
 {
     $subject = new DIWikiPage(__METHOD__, NS_MAIN, '', '');
     $byPropertyHierarchicalLinksFinder = $this->getMockBuilder('\\SBL\\ByPropertyHierarchicalLinksFinder')->disableOriginalConstructor()->getMock();
     $byPropertyHierarchicalLinksFinder->expects($this->once())->method('tryToFindLinksFor')->with($this->equalTo($subject));
     $byPropertyHierarchicalLinksFinder->expects($this->once())->method('getParents')->will($this->returnValue(array()));
     $byPropertyHierarchicalLinksFinder->expects($this->once())->method('getChildren')->will($this->returnValue(array()));
     $bySubpageLinksFinder = $this->getMockBuilder('\\SBL\\BySubpageLinksFinder')->disableOriginalConstructor()->getMock();
     $instance = new HtmlBreadcrumbLinksBuilder($byPropertyHierarchicalLinksFinder, $bySubpageLinksFinder);
     $title = Title::newFromText(__METHOD__);
     $title->setFragment('Foo');
     $instance->buildBreadcrumbs($title);
 }
Example #3
0
 private function addCallbackHandlers($store, $configuration)
 {
     $propertyRegistry = new PropertyRegistry();
     /**
      * @see https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/docs/technical/hooks.md
      */
     $this->handlers['SMW::Property::initProperties'] = function () use($propertyRegistry) {
         return $propertyRegistry->register();
     };
     /**
      * @see https://www.mediawiki.org/wiki/Manual:Hooks/SkinTemplateOutputPageBeforeExec
      */
     $this->handlers['SkinTemplateOutputPageBeforeExec'] = function (&$skin, &$template) use($store, $configuration) {
         $bySubpageLinksFinder = new BySubpageLinksFinder();
         $bySubpageLinksFinder->setSubpageDiscoverySupportState($configuration['useSubpageFinderFallback']);
         $byPropertyHierarchicalLinksFinder = new ByPropertyHierarchicalLinksFinder($store);
         $byPropertyHierarchicalLinksFinder->setFindClosestDescendantState($configuration['tryToFindClosestDescendant']);
         $byPropertyHierarchicalLinksFinder->setPropertySearchPatternByNamespace($configuration['propertySearchPatternByNamespace']);
         $htmlBreadcrumbLinksBuilder = new HtmlBreadcrumbLinksBuilder($byPropertyHierarchicalLinksFinder, $bySubpageLinksFinder);
         $htmlBreadcrumbLinksBuilder->setLinker(new DummyLinker());
         $htmlBreadcrumbLinksBuilder->setBreadcrumbTrailStyleClass($configuration['breadcrumbTrailStyleClass']);
         $htmlBreadcrumbLinksBuilder->setBreadcrumbDividerStyleClass($configuration['breadcrumbDividerStyleClass']);
         $skinTemplateOutputModifier = new SkinTemplateOutputModifier($htmlBreadcrumbLinksBuilder);
         $skinTemplateOutputModifier->modifyTemplate($template);
         $skinTemplateOutputModifier->modifyOutput($skin->getOutput());
         return true;
     };
     /**
      * @see https://www.mediawiki.org/wiki/Manual:Hooks/BeforePageDisplay
      */
     $this->handlers['BeforePageDisplay'] = function (&$output, &$skin) use($configuration) {
         $pageDisplayOutputModifier = new PageDisplayOutputModifier();
         $pageDisplayOutputModifier->setHideSubpageParentState($configuration['hideSubpageParent']);
         $pageDisplayOutputModifier->setSubpageByNamespace($configuration['wgNamespacesWithSubpages']);
         $pageDisplayOutputModifier->modifyOutput($output);
         return true;
     };
 }