/** * BeforePageDisplay hook handler. * @param $out OutputPage * @return bool */ public static function beforePageDisplay($out) { wfProfileIn(__METHOD__); $gadgets = Gadget::loadList(); if (!$gadgets) { wfProfileOut(__METHOD__); return true; } $lb = new LinkBatch(); $lb->setCaller(__METHOD__); $pages = array(); /** * @var $gadget Gadget */ $user = $out->getUser(); foreach ($gadgets as $gadget) { if ($gadget->isEnabled($user) && $gadget->isAllowed($user)) { if ($gadget->hasModule()) { $out->addModuleStyles($gadget->getModuleName()); $out->addModules($gadget->getModuleName()); } foreach ($gadget->getLegacyScripts() as $page) { $lb->add(NS_MEDIAWIKI, $page); $pages[] = $page; } } } // Allow other extensions, e.g. MobileFrontend, to disallow legacy gadgets if (wfRunHooks('Gadgets::allowLegacy', array($out->getContext()))) { $lb->execute(__METHOD__); $done = array(); foreach ($pages as $page) { if (isset($done[$page])) { continue; } $done[$page] = true; self::applyScript($page, $out); } } wfProfileOut(__METHOD__); return true; }
/** * Exports a gadget with its dependencies in a serialized form * @param $gadget String Name of gadget to export */ public function showExportForm($gadget) { global $wgOut, $wgScript; $gadgets = Gadget::loadList(); if (!isset($gadgets[$gadget])) { $wgOut->showErrorPage('error', 'gadgets-not-found', array($gadget)); return; } $g = $gadgets[$gadget]; $this->setHeaders(); $wgOut->setPagetitle(wfMsg("gadgets-export-title")); $wgOut->addWikiMsg('gadgets-export-text', $gadget, $g->getDefinition()); $exportList = "MediaWiki:gadget-{$gadget}\n"; foreach ($g->getScriptsAndStyles() as $page) { $exportList .= "MediaWiki:{$page}\n"; } $wgOut->addHTML(Html::openElement('form', array('method' => 'get', 'action' => $wgScript)) . Html::hidden('title', SpecialPage::getTitleFor('Export')->getPrefixedDBKey()) . Html::hidden('pages', $exportList) . Html::hidden('wpDownload', '1') . Html::hidden('templates', '1') . Xml::submitButton(wfMsg('gadgets-export-download')) . Html::closeElement('form')); }
/** * BeforePageDisplay hook handler. * @param $out OutputPage * @return bool */ public static function beforePageDisplay($out) { global $wgUser; wfProfileIn(__METHOD__); $gadgets = Gadget::loadList(); if (!$gadgets) { wfProfileOut(__METHOD__); return true; } $lb = new LinkBatch(); $lb->setCaller(__METHOD__); $pages = array(); /** * @var $gadget Gadget */ foreach ($gadgets as $gadget) { if ($gadget->isEnabled($wgUser) && $gadget->isAllowed($wgUser)) { if ($gadget->hasModule()) { $out->addModuleStyles($gadget->getModuleName()); $out->addModules($gadget->getModuleName()); } foreach ($gadget->getLegacyScripts() as $page) { $lb->add(NS_MEDIAWIKI, $page); $pages[] = $page; } } } $lb->execute(__METHOD__); $done = array(); foreach ($pages as $page) { if (isset($done[$page])) { continue; } $done[$page] = true; self::applyScript($page, $out); } wfProfileOut(__METHOD__); return true; }
/** * BeforePageDisplay hook handler. * @param $out OutputPage */ public static function beforePageDisplay($out) { global $wgUser; wfProfileIn(__METHOD__); $gadgets = Gadget::loadList(); if (!$gadgets) { wfProfileOut(__METHOD__); return true; } $lb = new LinkBatch(); $lb->setCaller(__METHOD__); $pages = array(); $stylesModules = array(); foreach ($gadgets as $gadget) { if ($gadget->isEnabled($wgUser) && $gadget->isAllowed($wgUser)) { if ($gadget->hasModule()) { $out->addModules($gadget->getModuleName()); } if ($gadget->hasStylesModule()) { $stylesModules[] = $gadget->getStylesModuleName(); } foreach ($gadget->getLegacyScripts() as $page) { $lb->add(NS_MEDIAWIKI, $page); $pages[] = $page; } } } if (count($stylesModules)) { $out->addHeadItem('ext.gadget', $out->makeResourceLoaderLink($stylesModules, ResourceLoaderModule::TYPE_STYLES) . Html::inlineScript(ResourceLoader::makeLoaderConditionalScript(ResourceLoader::makeLoaderStateScript(array_fill_keys($stylesModules, 'ready'))))); } $lb->execute(__METHOD__); $done = array(); foreach ($pages as $page) { if (isset($done[$page])) { continue; } $done[$page] = true; self::applyScript($page, $out); } wfProfileOut(__METHOD__); return true; }