public function testHandle() { $parser = new Parser(); $parser->startExternalParse(null, new ParserOptions(), Parser::OT_HTML); NoLangLinkHandler::handle($parser, '*'); $actual = NoLangLinkHandler::getNoExternalLangLinks($parser->getOutput()); $this->assertEquals(array('*'), $actual); }
protected function makeParserOutput(array $langLinks, array $noExternalLangLinks = array()) { $out = new ParserOutput(); NoLangLinkHandler::setNoExternalLangLinks($out, $noExternalLangLinks); foreach ($langLinks as $lang => $link) { $out->addLanguageLink("{$lang}:{$link}"); } return $out; }
/** * Add output page property if repo links are suppressed, and property for item id * * @param OutputPage &$out * @param ParserOutput $parserOutput * * @return bool */ public function doOutputPageParserOutput(OutputPage &$out, ParserOutput $parserOutput) { if (!$this->namespaceChecker->isWikibaseEnabled($out->getTitle()->getNamespace())) { // shorten out return true; } $noExternalLangLinks = NoLangLinkHandler::getNoExternalLangLinks($parserOutput); if (!empty($noExternalLangLinks)) { $out->setProperty('noexternallanglinks', $noExternalLangLinks); } $itemId = $parserOutput->getProperty('wikibase_item'); if ($itemId !== false) { $out->setProperty('wikibase_item', $itemId); } $otherProjects = $parserOutput->getExtensionData('wikibase-otherprojects-sidebar'); if ($otherProjects !== null) { $out->setProperty('wikibase-otherprojects-sidebar', $otherProjects); } $badges = $parserOutput->getExtensionData('wikibase_badges'); if ($badges !== null) { $out->setProperty('wikibase_badges', $badges); } return true; }
/** * Get the noexternallanglinks page property from the ParserOutput, * which is set by the {{#noexternallanglinks}} parser function. * * @see NoLangLinkHandler::getNoExternalLangLinks * * @param ParserOutput $out * * @return string[] A list of language codes, identifying which repository links to ignore. * Empty if {{#noexternallanglinks}} was not used on the page. */ public function getNoExternalLangLinks(ParserOutput $out) { return NoLangLinkHandler::getNoExternalLangLinks($out); }
/** * Apply the magic word. */ public static function onParserGetVariableValueSwitch(Parser &$parser, &$cache, &$magicWordId, &$ret) { if ($magicWordId === 'noexternallanglinks') { NoLangLinkHandler::handle($parser, '*'); } elseif ($magicWordId === 'wbreponame') { // @todo factor out, with tests $wikibaseClient = WikibaseClient::getDefaultInstance(); $settings = $wikibaseClient->getSettings(); $repoSiteName = $settings->getSetting('repoSiteName'); $message = new Message($repoSiteName); if ($message->exists()) { $lang = $parser->getTargetLanguage(); $ret = $message->inLanguage($lang)->parse(); } else { $ret = $repoSiteName; } } return true; }