public function execute($parameters) { global $wgContentTranslationUseMagnusTool, $wgContentTranslationTranslateInTarget; $out = $this->getOutput(); $skin = $this->getSkin(); $request = $this->getRequest(); $user = $this->getUser(); $hasToken = $this->hasToken(); $campaign = $request->getVal('campaign'); $isCampaign = $this->isValidCampaign($campaign); // Direct access, isListed only affects Special:SpecialPages if (!ContentTranslationHooks::isEnabledForUser($user)) { if ($hasToken || $isCampaign) { // User has a token. Enabled cx for the user in this wiki. $this->enableCXBetaFeature(); } else { if ($campaign) { // Show login page if the URL has campaign parameter $out->showPermissionsErrorPage(array(array('badaccess-groups')), 'edit'); return; } $out->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); return; } } // Preloading to avoid FOUC $out->addModuleStyles('ext.cx.header.skin'); if ($hasToken) { $out->addModules('ext.cx.translationview'); // If Wikibase is installed, load the module for linking // the published article with the source article if ($wgContentTranslationTranslateInTarget && defined('WBC_VERSION')) { $out->addModules('ext.cx.wikibase.link'); } } else { $out->addModules('ext.cx.dashboard'); if ($wgContentTranslationUseMagnusTool) { $out->addModules('ext.cx.magnuslink'); } } $this->setHeaders(); $out->setArticleBodyOnly(true); // Default modules copied from OutputPage::addDefaultModules $out->addModules(array('mediawiki.user', 'mediawiki.page.startup', 'mediawiki.page.ready')); // Load legacy modules if any, for the skin. // Some wikis have Common.js scripts that depend on this module. $defaultSkinModules = $skin->getDefaultModules(); $out->addModules($defaultSkinModules['legacy']); Hooks::run('BeforePageDisplay', array(&$out, &$skin)); // T111668: Make sure we generate the personal tools // before we output the head, as extensions may add // things using the PersonalUrls hook. $toolbarList = Html::rawElement('ul', null, $skin->getPersonalToolsList()); $out->addHTML($out->headElement($skin)); $out->addHTML(Html::element('noscript', array(), $this->msg('cx-javascript')->text())); $out->addHtml(MWDebug::getDebugHTML($this->getContext())); $out->addHTML(Html::rawElement('div', array('id' => 'p-personal'), $toolbarList)); $out->addHTML($skin->bottomScripts()); $out->addHTML('</body></html>'); }
/** * Hook: SpecialContributionsBeforeMainOutput * @param int $id * @param User $user * @param SpecialPage $page */ public static function addNewContributionButton($id, User $user, SpecialPage $page) { global $wgContentTranslationEventLogging; if ($user->getId() === $page->getUser()->getId() && ContentTranslationHooks::isEnabledForUser($user)) { // If EventLogging integration is enabled, load the event logging functions module if ($wgContentTranslationEventLogging) { $page->getOutput()->addModules('ext.cx.eventlogging'); } $page->getOutput()->addModules('ext.cx.contributions.init'); } }