From f5a0c2327ed65dea68fdca4443e401b75607cdd3 Mon Sep 17 00:00:00 2001 From: jrobson Date: Thu, 7 Nov 2013 13:23:47 -0800 Subject: [PATCH] Create prepareQuickTemplate function Skins should be able to easily add to templates their own variables. This helps with this. This helps drastically reduce to the code in the mobile skin and ensure it benefits from changes in core See: I43fc26bf334753b189e20921f142bade7658ac31 Change-Id: I0a9a7f10ea6a2e9c90c2a83e7c5f7fa56fa0fb93 --- includes/SkinTemplate.php | 52 ++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 1e7ce13d92..f25545d264 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -217,15 +217,6 @@ class SkinTemplate extends Skin { * @param $out OutputPage */ function outputPage( OutputPage $out = null ) { - global $wgContLang; - global $wgScript, $wgStylePath; - global $wgMimeType, $wgJsMimeType; - global $wgXhtmlNamespaces, $wgHtml5Version; - global $wgDisableCounters, $wgSitename, $wgLogo; - global $wgMaxCredits, $wgShowCreditsIfMax; - global $wgPageShowWatchingUsers; - global $wgArticlePath, $wgScriptPath, $wgServer; - wfProfileIn( __METHOD__ ); Profiler::instance()->setTemplated( true ); @@ -237,14 +228,41 @@ class SkinTemplate extends Skin { } $out = $this->getOutput(); - $request = $this->getRequest(); $user = $this->getUser(); - $title = $this->getTitle(); wfProfileIn( __METHOD__ . '-init' ); $this->initPage( $out ); wfProfileOut( __METHOD__ . '-init' ); + $tpl = $this->prepareQuickTemplate( $out ); + // execute template + wfProfileIn( __METHOD__ . '-execute' ); + $res = $tpl->execute(); + wfProfileOut( __METHOD__ . '-execute' ); + + // result may be an error + $this->printOrError( $res ); + if ( $oldContext ) { + $this->setContext( $oldContext ); + } + } + + /** + * initialize various variables and generate the template + * + * @since 1.23 + * @param $out OutputPage + * @return QuickTemplate the template to be executed by outputPage + */ + protected function prepareQuickTemplate( OutputPage $out = null ) { + global $wgContLang, $wgScript, $wgStylePath, + $wgMimeType, $wgJsMimeType, $wgXhtmlNamespaces, $wgHtml5Version, + $wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits, + $wgShowCreditsIfMax, $wgPageShowWatchingUsers, $wgArticlePath, + $wgScriptPath, $wgServer; + + $title = $this->getTitle(); + $request = $this->getRequest(); $tpl = $this->setupTemplateForOutput(); wfProfileIn( __METHOD__ . '-stuff-head' ); @@ -523,18 +541,8 @@ class SkinTemplate extends Skin { $tpl->set( 'dataAfterContent', $this->afterContentHook() ); wfProfileOut( __METHOD__ . '-stuff5' ); - // execute template - wfProfileIn( __METHOD__ . '-execute' ); - $res = $tpl->execute(); - wfProfileOut( __METHOD__ . '-execute' ); - - // result may be an error - $this->printOrError( $res ); - - if ( $oldContext ) { - $this->setContext( $oldContext ); - } wfProfileOut( __METHOD__ ); + return $tpl; } /** -- 2.20.1