/** * This method is called when unknown action is called */ public static function onUnknownAction($action, $article) { if ($action == 'rendercontentonly') { self::$renderContentOnly = true; global $wgArticle; $wgArticle->view(); return false; } return true; }
public function executeIndex($params) { global $wgOut, $wgUser, $wgTitle, $wgRequest, $wgCityId, $wgEnableAdminDashboardExt, $wgAllInOne; wfProfileIn(__METHOD__); /* set the grid or full width if passed in, otherwise, respect the default */ $grid = $wgRequest->getVal('wikiagrid', ''); $fullhead = $wgRequest->getVal('wikiafullheader', ''); if ( '1' === $grid ) { $this->wg->OasisGrid = true; } else if ( '0' === $grid ) { $this->wg->OasisGrid = false; } if ( '1' === $fullhead ) { $this->wg->GlobalHeaderFullWidth = true; } else if ( '0' === $fullhead ) { $this->wg->GlobalHeaderFullWidth = false; } /* end grid or full width */ $jsPackages = array(); $scssPackages = array(); $this->app->runHook( 'WikiaAssetsPackages', array( &$wgOut, &$jsPackages, &$scssPackages ) ); $this->isUserLoggedIn = $wgUser->isLoggedIn(); // TODO: move to CreateNewWiki extension - this code should use a hook $wikiWelcome = $wgRequest->getVal('wiki-welcome'); if(!empty($wikiWelcome)) { $wgOut->addStyle( $this->assetsManager->getSassCommonURL( 'extensions/wikia/CreateNewWiki/css/WikiWelcome.scss' ) ); $wgOut->addScript( '<script src="' . $this->wg->ExtensionsPath . '/wikia/CreateNewWiki/js/WikiWelcome.js"></script>' ); } $renderContentOnly = false; if (!empty($this->wg->EnableRenderContentOnlyExt)) { if(renderContentOnly::isRenderContentOnlyEnabled()) { $renderContentOnly = true; } } if($renderContentOnly) { $this->body = F::app()->renderView('BodyContentOnly', 'Index'); } else { // macbre: let extensions modify content of the page (e.g. EditPageLayout) wfProfileIn(__METHOD__ . ' - renderBody'); $this->body = !empty($params['body']) ? $params['body'] : F::app()->renderView('Body', 'Index'); wfProfileOut(__METHOD__ . ' - renderBody'); } // get microdata for body tag $this->itemType = self::getItemType(); $skin = RequestContext::getMain()->getSkin(); /* @var $skin WikiaSkin */ // this is bad but some extensions could have added some scripts to bottom queue // todo: make it not run twice during each request $this->bottomScripts = $skin->bottomScripts(); // generate list of CSS classes for <body> tag $bodyClasses = array('mediawiki', $this->dir, $this->pageClass); $bodyClasses = array_merge($bodyClasses, self::$extraBodyClasses); $bodyClasses[] = $this->skinNameClass; if(Wikia::isMainPage()) { $bodyClasses[] = 'mainpage'; } wfProfileIn(__METHOD__ . ' - skin Operations'); // add skin theme name if(!empty($skin->themename)) { $bodyClasses[] = "oasis-{$skin->themename}"; } // mark dark themes if (SassUtil::isThemeDark()) { $bodyClasses[] = 'oasis-dark-theme'; } // support for oasis split skin if (!empty($this->wg->GlobalHeaderFullWidth)) { $bodyClasses[] = 'oasis-split-skin'; } $this->bodyClasses = $bodyClasses; if (is_array($scssPackages)) { foreach ($scssPackages as $package) { $wgOut->addStyle($this->assetsManager->getSassCommonURL('extensions/'.$package)); } } // Reset (this ensures no duplication in CSS links) $this->cssLinks = ''; $this->cssPrintLinks = ''; foreach ( $skin->getStyles() as $s ) { if ( !empty($s['url']) ) { $tag = $s['tag']; if ( !empty( $wgAllInOne ) ) { $url = $this->minifySingleAsset($s['url']); if ($url !== $s['url']) { $tag = str_replace($s['url'],$url,$tag); } } // Print styles will be loaded separately at the bottom of the page if ( stripos($tag, 'media="print"') !== false ) { $this->cssPrintLinks .= $tag; } else { $this->cssLinks .= $tag; } } else { $this->cssLinks .= $s['tag']; } } $this->headLinks = $wgOut->getHeadLinks(); $this->headItems = $skin->getHeadItems(); $this->pageTitle = htmlspecialchars( $this->pageTitle ); $this->displayTitle = htmlspecialchars( $this->displayTitle ); $this->mimeType = htmlspecialchars( $this->mimeType ); $this->charset = htmlspecialchars( $this->charset ); wfProfileOut(__METHOD__ . ' - skin Operations'); $this->topScripts = $wgOut->topScripts; if (is_array($jsPackages)) { foreach ($jsPackages as $package) { $wgOut->addScriptFile($this->wg->ExtensionsPath . '/' . $package); } } // setup loading of JS/CSS using WSL (WikiaScriptLoader) $this->loadJs(); // FIXME: create separate module for stats stuff? // load Google Analytics code $this->googleAnalytics = AnalyticsEngine::track('GA_Urchin', AnalyticsEngine::EVENT_PAGEVIEW); // onewiki GA $this->googleAnalytics .= AnalyticsEngine::track('GA_Urchin', 'onewiki', array($wgCityId)); // track page load time $this->googleAnalytics .= AnalyticsEngine::track('GA_Urchin', 'pagetime', array('oasis')); // track browser height TODO NEF no browser height tracking code anymore, remove //$this->googleAnalytics .= AnalyticsEngine::track('GA_Urchin', 'browser-height'); // record which varnish this page was served by $this->googleAnalytics .= AnalyticsEngine::track('GA_Urchin', 'varnish-stat'); // TODO NEF not used, remove //$this->googleAnalytics .= AnalyticsEngine::track('GA_Urchin', 'noads'); // TODO NEF we dont do AB this way anymore, remove //$this->googleAnalytics .= AnalyticsEngine::track('GA_Urchin', 'abtest'); // Add important Gracenote analytics for reporting needed for licensing on LyricWiki. if (43339 == $wgCityId){ $this->googleAnalytics .= AnalyticsEngine::track('GA_Urchin', 'lyrics'); } // macbre: RT #25697 - hide Comscore & QuantServe tags on edit pages if(!in_array($wgRequest->getVal('action'), array('edit', 'submit'))) { $this->comScore = AnalyticsEngine::track('Comscore', AnalyticsEngine::EVENT_PAGEVIEW); $this->quantServe = AnalyticsEngine::track('QuantServe', AnalyticsEngine::EVENT_PAGEVIEW); $this->ivw = AnalyticsEngine::track('IVW', AnalyticsEngine::EVENT_PAGEVIEW); } $this->mainSassFile = 'skins/oasis/css/oasis.scss'; if (!empty($wgEnableAdminDashboardExt) && AdminDashboardLogic::displayAdminDashboard($this->app, $wgTitle)) { $this->displayAdminDashboard = true; } else { $this->displayAdminDashboard = false; } wfProfileOut(__METHOD__); }