/** * @covers ParserOutput::setProperty * @covers ParserOutput::getProperty * @covers ParserOutput::unsetProperty * @covers ParserOutput::getProperties */ public function testProperties() { $po = new ParserOutput(); $po->setProperty('foo', 'val'); $properties = $po->getProperties(); $this->assertEquals($po->getProperty('foo'), 'val'); $this->assertEquals($properties['foo'], 'val'); $po->setProperty('foo', 'second val'); $properties = $po->getProperties(); $this->assertEquals($po->getProperty('foo'), 'second val'); $this->assertEquals($properties['foo'], 'second val'); $po->unsetProperty('foo'); $properties = $po->getProperties(); $this->assertEquals($po->getProperty('foo'), false); $this->assertArrayNotHasKey('foo', $properties); }
function egOgmcParserOutputApplyValues(OutputPage $out, ParserOutput $parserOutput, $data) { wfProfileIn(__METHOD__); global $wgTitle; $articleId = $wgTitle->getArticleID(); $titleImage = $titleDescription = null; wfRunHooks('OpenGraphMeta:beforeCustomFields', array($articleId, &$titleImage, &$titleDescription)); // Get description from ArticleService if (is_null($titleDescription)) { $DESC_LENGTH = 500; $articleService = new ArticleService($wgTitle); $titleDescription = $articleService->getTextSnippet($DESC_LENGTH); } if (!empty($titleDescription)) { $parserOutput->setProperty('description', $titleDescription); $out->mDescription = $parserOutput->getProperty('description'); } wfProfileOut(__METHOD__); }
/** * OutputPageParserOutput hook handler * Disables TOC in output before it grabs HTML * @see https://www.mediawiki.org/wiki/Manual:Hooks/OutputPageParserOutput * * @param OutputPage $outputPage * @param ParserOutput $po * @return bool */ public static function onOutputPageParserOutput($outputPage, ParserOutput $po) { global $wgMFWikibaseImageCategory; $context = MobileContext::singleton(); $isBeta = $context->isBetaGroupMember(); $mfUseWikibaseDescription = $context->getMFConfig()->get('MFUseWikibaseDescription'); if ($context->shouldDisplayMobileView()) { $outputPage->enableTOC(false); $outputPage->setProperty('MinervaTOC', $po->getTOCHTML() !== ''); if ($mfUseWikibaseDescription && $isBeta) { $item = $po->getProperty('wikibase_item'); if ($item) { $desc = ExtMobileFrontend::getWikibaseDescription($item); $category = ExtMobileFrontend::getWikibasePropertyValue($item, $wgMFWikibaseImageCategory); if ($desc) { $outputPage->setProperty('wgMFDescription', $desc); } if ($category) { $outputPage->setProperty('wgMFImagesCategory', $category); } } } // Enable wrapped sections $po->setText(ExtMobileFrontend::DOMParse($outputPage, $po->getText(), $isBeta)); } return true; }
/** * Propogate if we should create a ToC from ParserOutput -> OutputPage. * * Its assumed we should create a ToC on the following conditions: * * __NOCOLLABORATIONHUBTOC__ is not on page * * Somebody added parser metadata to the OutputPage (More likely to be a real page) * * The limit report was enabled (More likely to be a real page) * These conditions are hacky. Ideally we'd come up with a more * robust way of determining if this is really a wikipage. * * Eventually, the TOC will be output by onOutputPageBeforeHTML hook if this * hook signals it is ok. * * @param $out OutputPage * @param $pout ParserOutput */ public static function onOutputPageParserOutput(OutputPage $out, ParserOutput $pout) { if ($out->getProperty('CollaborationHubSubpage')) { // We've already been here, so we can't abort // outputting the TOC at this stage. wfDebug(__METHOD__ . ' TOC already outputted, possibly incorrectly.'); return; } if ($pout->getProperty('nocollaborationhubtoc') !== false) { // TOC disabled, mark as done. $out->setProperty('CollaborationHubSubpage', true); } elseif ($pout->getLimitReportData()) { $out->setProperty('CollaborationHubSubpage', "in-progress"); } }
/** * Get the defaultsort property * @return string|null */ public function getDefaultSort() { return $this->parserOutput->getProperty('defaultsort'); }
/** * OutputPageParserOutput hook handler * Disables TOC in output before it grabs HTML * @see https://www.mediawiki.org/wiki/Manual:Hooks/OutputPageParserOutput * * @param OutputPage $outputPage * @param ParserOutput $po * @return bool */ public static function onOutputPageParserOutput($outputPage, ParserOutput $po) { $context = MobileContext::singleton(); $mfUseWikibaseDescription = $context->getMFConfig()->get('MFUseWikibaseDescription'); if ($context->shouldDisplayMobileView()) { $outputPage->enableTOC(false); $outputPage->setProperty('MinervaTOC', $po->getTOCHTML() !== ''); if ($mfUseWikibaseDescription && $context->isBetaGroupMember()) { $item = $po->getProperty('wikibase_item'); if ($item) { $desc = ExtMobileFrontend::getWikibaseDescription($item); if ($desc) { $outputPage->setProperty('wgMFDescription', $desc); } } } } return true; }
protected function saveToParserOutput(\ParserOutput $parserOutput, Nodes\NodeInfobox $raw) { if ($raw) { $infoboxes = $parserOutput->getProperty(PortableInfoboxDataService::INFOBOXES_PROPERTY_NAME); $infoboxes[] = ['data' => $raw->getRenderData(), 'sources' => $raw->getSource()]; $parserOutput->setProperty(PortableInfoboxDataService::INFOBOXES_PROPERTY_NAME, $infoboxes); } }