jenkins-bot has submitted this change and it was merged.

Change subject: Replace wfTemplate with TemplateFactory
......................................................................


Replace wfTemplate with TemplateFactory

Change-Id: I9e629f4661f1975418db2071a74b92d74bbb5cc5
---
M repo/Wikibase.hooks.php
M repo/Wikibase.php
D repo/includes/GlobalFunctions.php
A repo/includes/Template/TemplateFactory.php
M repo/includes/TemplateRegistry.php
M repo/includes/View/ClaimHtmlGenerator.php
M repo/includes/View/ClaimsView.php
M repo/includes/View/EntityView.php
M repo/includes/View/EntityViewFactory.php
M repo/includes/View/EntityViewPlaceholderExpander.php
M repo/includes/View/FingerprintView.php
M repo/includes/View/ItemView.php
M repo/includes/View/PropertyView.php
M repo/includes/View/SectionEditLinkGenerator.php
M repo/includes/View/SiteLinksView.php
M repo/includes/View/SnakHtmlGenerator.php
M repo/includes/View/TermBoxView.php
M repo/includes/WikibaseRepo.php
M repo/includes/modules/TemplateModule.php
M repo/tests/phpunit/includes/View/ClaimHtmlGeneratorTest.php
M repo/tests/phpunit/includes/View/ClaimsViewTest.php
M repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
M repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
M repo/tests/phpunit/includes/View/FingerprintViewTest.php
M repo/tests/phpunit/includes/View/ItemViewTest.php
M repo/tests/phpunit/includes/View/PropertyViewTest.php
M repo/tests/phpunit/includes/View/SectionEditLinkGeneratorTest.php
M repo/tests/phpunit/includes/View/SiteLinksViewTest.php
M repo/tests/phpunit/includes/View/SnakHtmlGeneratorTest.php
M repo/tests/phpunit/includes/View/TermBoxViewTest.php
30 files changed, 317 insertions(+), 133 deletions(-)

Approvals:
  Hoo man: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/Wikibase.hooks.php b/repo/Wikibase.hooks.php
index 7681057..343a256 100644
--- a/repo/Wikibase.hooks.php
+++ b/repo/Wikibase.hooks.php
@@ -33,6 +33,7 @@
 use Wikibase\Repo\View\EntityViewPlaceholderExpander;
 use Wikibase\Repo\View\TextInjector;
 use Wikibase\Repo\WikibaseRepo;
+use Wikibase\Template\TemplateFactory;
 use WikiPage;
 
 /**
@@ -991,6 +992,7 @@
                        $injector = new TextInjector( $placeholders );
                        $userLanguageLookup = new UserLanguageLookup();
                        $expander = new EntityViewPlaceholderExpander(
+                               new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                                $out->getTitle(),
                                $out->getUser(),
                                $out->getLanguage(),
diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index 15fe0bd..9be6173 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -213,5 +213,4 @@
                include_once( __DIR__ . '/config/Wikibase.experimental.php' );
        }
 
-       require __DIR__ . '/includes/GlobalFunctions.php';
 } );
diff --git a/repo/includes/GlobalFunctions.php 
b/repo/includes/GlobalFunctions.php
deleted file mode 100644
index 280026c..0000000
--- a/repo/includes/GlobalFunctions.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-use Wikibase\Repo\WikibaseRepo;
-use Wikibase\Template;
-
-/**
- * @license GNU GPL v2+
- * @author H. Snater < [email protected] >
- */
-
-/**
- * Shorthand function to retrieve a template filled with the specified 
parameters.
- *
- * important! note that the Template class does not escape anything.
- * be sure to escape your params before using this function!
- *
- * @since 0.2
- *
- * @param $key string template key
- * Varargs: normal template parameters
- *
- * @return string
- */
-function wfTemplate( $key /*...*/ ) {
-       $params = func_get_args();
-       array_shift( $params );
-
-       if ( isset( $params[0] ) && is_array( $params[0] ) ) {
-               $params = $params[0];
-       }
-
-       $template = new Template( 
WikibaseRepo::getDefaultInstance()->getTemplateRegistry(), $key, $params );
-
-       return $template->render();
-}
diff --git a/repo/includes/Template/TemplateFactory.php 
b/repo/includes/Template/TemplateFactory.php
new file mode 100644
index 0000000..7cc0a33
--- /dev/null
+++ b/repo/includes/Template/TemplateFactory.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Wikibase\Template;
+
+use Wikibase\Template;
+use Wikibase\TemplateRegistry;
+
+/**
+ * @license GNU GPL v2+
+ * @author Adrian Lang < [email protected] >
+ */
+class TemplateFactory {
+
+       /**
+        * @var TemplateRegistry
+        */
+       private $templateRegistry;
+
+       /**
+        * @param TemplateRegistry $templateRegistry
+        */
+       public function __construct( TemplateRegistry $templateRegistry ) {
+               $this->templateRegistry = $templateRegistry;
+       }
+
+       /**
+        * @param string $key
+        * @param array $params
+        * @return Template
+        */
+       public function get( $key, array $params ) {
+               return new Template( $this->templateRegistry, $key, $params );
+       }
+
+       /**
+        * Shorthand function to retrieve a template filled with the specified 
parameters.
+        *
+        * important! note that the Template class does not escape anything.
+        * be sure to escape your params before using this function!
+        *
+        * @since 0.2
+        *
+        * @param $key string template key
+        * Varargs: normal template parameters
+        *
+        * @return string
+        */
+       public function render( $key /* ... */ ) {
+               $params = func_get_args();
+               array_shift( $params );
+
+               if ( isset( $params[0] ) && is_array( $params[0] ) ) {
+                       $params = $params[0];
+               }
+
+               $template = $this->get( $key, $params );
+
+               return $template->render();
+       }
+
+}
diff --git a/repo/includes/TemplateRegistry.php 
b/repo/includes/TemplateRegistry.php
index f1afaa9..33a326e 100644
--- a/repo/includes/TemplateRegistry.php
+++ b/repo/includes/TemplateRegistry.php
@@ -21,6 +21,20 @@
        private $templates;
 
        /**
+        * @var TemplateRegistry
+        */
+       private static $instance;
+
+
+       public static function getDefaultInstance() {
+               if ( self::$instance === null ) {
+                       self::$instance = new self();
+                       self::$instance->addTemplates( include( __DIR__ . 
'/../resources/templates.php' ) );
+               }
+               return self::$instance;
+       }
+
+       /**
         * Gets the array containing all templates.
         *
         * @return array
diff --git a/repo/includes/View/ClaimHtmlGenerator.php 
b/repo/includes/View/ClaimHtmlGenerator.php
index 080b619..4f21031 100644
--- a/repo/includes/View/ClaimHtmlGenerator.php
+++ b/repo/includes/View/ClaimHtmlGenerator.php
@@ -10,6 +10,7 @@
 use Wikibase\DataModel\Snak\Snaks;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\Lib\Serializers\ClaimSerializer;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Base class for generating the HTML for a Claim in Entity View.
@@ -27,17 +28,25 @@
 class ClaimHtmlGenerator {
 
        /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
+
+       /**
         * @var SnakHtmlGenerator
         */
        private $snakHtmlGenerator;
 
        /**
+        * @param TemplateFactory $templateFactory
         * @param SnakHtmlGenerator $snakHtmlGenerator
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                SnakHtmlGenerator $snakHtmlGenerator
        ) {
                $this->snakHtmlGenerator = $snakHtmlGenerator;
+               $this->templateFactory = $templateFactory;
        }
 
        /**
@@ -61,7 +70,7 @@
                // TODO: Resolve if-statement after concept of Claim has been 
removed
                //  (see https://github.com/wmde/WikibaseDataModel/pull/317)
                if ( !( $claim instanceof Statement ) ) {
-                       $claimHtml = wfTemplate( 'wikibase-statementview',
+                       $claimHtml = $this->templateFactory->render( 
'wikibase-statementview',
                                $claim->getGuid(),
                                '',
                                $mainSnakHtml,
@@ -76,7 +85,7 @@
 
                        // Messages: wikibase-statementview-rank-preferred, 
wikibase-statementview-rank-normal,
                        // wikibase-statementview-rank-deprecated
-                       $rankHtml = wfTemplate( 'wb-rankselector',
+                       $rankHtml = $this->templateFactory->render( 
'wb-rankselector',
                                'ui-state-disabled',
                                'wb-rankselector-' . $serializedRank,
                                wfMessage( 'wikibase-statementview-rank-' . 
$serializedRank )->text()
@@ -95,7 +104,7 @@
                                $claim->getReferences()
                        );
 
-                       $claimHtml = wfTemplate( 'wikibase-statementview',
+                       $claimHtml = $this->templateFactory->render( 
'wikibase-statementview',
                                $claim->getGuid(),
                                $rankHtml,
                                $mainSnakHtml,
@@ -151,7 +160,7 @@
 
        private function wrapInListview( $listviewContent ) {
                if( $listviewContent !== '' ) {
-                       return wfTemplate( 'wb-listview', $listviewContent );
+                       return $this->templateFactory->render( 'wb-listview', 
$listviewContent );
                } else {
                        return '';
                }
@@ -178,7 +187,7 @@
                        );
                }
 
-               return wfTemplate( 'wb-referenceview',
+               return $this->templateFactory->render( 'wb-referenceview',
                        'wb-referenceview-' . $reference->getHash(),
                        $snaklistviewsHtml
                );
@@ -199,7 +208,7 @@
                        $snaksHtml .= $this->snakHtmlGenerator->getSnakHtml( 
$snak, ( $i++ === 0 ) );
                }
 
-               return wfTemplate(
+               return $this->templateFactory->render(
                        'wb-snaklistview',
                        $snaksHtml
                );
diff --git a/repo/includes/View/ClaimsView.php 
b/repo/includes/View/ClaimsView.php
index 345929c..f7e10f8 100644
--- a/repo/includes/View/ClaimsView.php
+++ b/repo/includes/View/ClaimsView.php
@@ -4,6 +4,7 @@
 
 use Wikibase\DataModel\Claim\Claim;
 use Wikibase\Lib\EntityIdFormatter;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Generates HTML to display claims.
@@ -15,6 +16,11 @@
  * @author Daniel Kinzler
  */
 class ClaimsView {
+
+       /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
 
        /**
         * @var EntityIdFormatter
@@ -32,11 +38,13 @@
        private $claimHtmlGenerator;
 
        /**
+        * @param TemplateFactory $templateFactory
         * @param EntityIdFormatter $propertyIdFormatter
         * @param SectionEditLinkGenerator $sectionEditLinkGenerator
         * @param ClaimHtmlGenerator $claimHtmlGenerator
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                EntityIdFormatter $propertyIdFormatter,
                SectionEditLinkGenerator $sectionEditLinkGenerator,
                ClaimHtmlGenerator $claimHtmlGenerator
@@ -44,6 +52,7 @@
                $this->propertyIdFormatter = $propertyIdFormatter;
                $this->sectionEditLinkGenerator = $sectionEditLinkGenerator;
                $this->claimHtmlGenerator = $claimHtmlGenerator;
+               $this->templateFactory = $templateFactory;
        }
 
        /**
@@ -63,12 +72,12 @@
                        $claimsHtml .= $this->getHtmlForClaimGroup( $claims );
                }
 
-               $claimgrouplistviewHtml = wfTemplate( 'wb-claimgrouplistview', 
$claimsHtml, '' );
+               $claimgrouplistviewHtml = $this->templateFactory->render( 
'wb-claimgrouplistview', $claimsHtml, '' );
 
                // TODO: Add link to SpecialPage that allows adding a new claim.
                $sectionHeading = $this->getHtmlForSectionHeading( 
'wikibase-statements' );
                // FIXME: claimgrouplistview should be the topmost claims 
related template
-               $html = wfTemplate( 'wb-claimlistview', 
$claimgrouplistviewHtml, '', '' );
+               $html = $this->templateFactory->render( 'wb-claimlistview', 
$claimgrouplistviewHtml, '', '' );
                return $sectionHeading . $html;
        }
 
@@ -80,7 +89,7 @@
         * @return string
         */
        private function getHtmlForSectionHeading( $heading ) {
-               $html = wfTemplate(
+               $html = $this->templateFactory->render(
                        'wb-section-heading',
                        wfMessage( $heading )->escaped(),
                        'claims' // ID - TODO: should not be added if output 
page is not the entity's page
@@ -132,7 +141,7 @@
                        );
                }
 
-               $toolbarHtml = wfTemplate( 'wikibase-toolbar-wrapper',
+               $toolbarHtml = $this->templateFactory->render( 
'wikibase-toolbar-wrapper',
                        
$this->sectionEditLinkGenerator->getSingleButtonToolbarHtml(
                                '',
                                array(),
@@ -141,9 +150,12 @@
                        )
                );
 
-               return wfTemplate( 'wb-claimlistview',
+               return $this->templateFactory->render( 'wb-claimlistview',
                        $propertyHtml,
-                       wfTemplate( 'wb-claimgrouplistview-groupname', 
$propertyLink ) . $toolbarHtml,
+                       $this->templateFactory->render(
+                               'wb-claimgrouplistview-groupname',
+                               $propertyLink
+                       ) . $toolbarHtml,
                        $propertyId->getSerialization()
                );
        }
diff --git a/repo/includes/View/EntityView.php 
b/repo/includes/View/EntityView.php
index 393900c..6d8b1cb 100644
--- a/repo/includes/View/EntityView.php
+++ b/repo/includes/View/EntityView.php
@@ -7,6 +7,7 @@
 use Language;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\EntityRevision;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Base class for creating views for all different kinds of Wikibase\Entity.
@@ -24,6 +25,11 @@
  * @author Bene* < [email protected] >
  */
 abstract class EntityView {
+
+       /**
+        * @var TemplateFactory
+        */
+       protected $templateFactory;
 
        /**
         * @var FingerprintView
@@ -51,12 +57,14 @@
        private $textInjector;
 
        /**
+        * @param TemplateFactory $templateFactory
         * @param FingerprintView $fingerprintView
         * @param ClaimsView $claimsView
         * @param Language $language
         * @param bool $editable
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                FingerprintView $fingerprintView,
                ClaimsView $claimsView,
                Language $language,
@@ -68,6 +76,7 @@
                $this->editable = $editable;
 
                $this->textInjector = new TextInjector();
+               $this->templateFactory = $templateFactory;
        }
 
        /**
@@ -101,7 +110,7 @@
 
                $entityId = $entity->getId() ?: 'new'; // if id is not set, use 
'new' suffix for css classes
 
-               $html = wfTemplate( 'wikibase-entityview',
+               $html = $this->templateFactory->render( 'wikibase-entityview',
                        $entity->getType(),
                        $entityId,
                        $this->language->getCode(),
@@ -202,14 +211,14 @@
                $i = 1;
 
                foreach ( $tocSections as $id => $message ) {
-                       $tocContent .= wfTemplate( 'wb-entity-toc-section',
+                       $tocContent .= $this->templateFactory->render( 
'wb-entity-toc-section',
                                $i++,
                                $id,
                                wfMessage( $message )->text()
                        );
                }
 
-               return wfTemplate( 'wb-entity-toc',
+               return $this->templateFactory->render( 'wb-entity-toc',
                        wfMessage( 'toc' )->text(),
                        $tocContent
                );
diff --git a/repo/includes/View/EntityViewFactory.php 
b/repo/includes/View/EntityViewFactory.php
index d6d8bfd..5fe7d01 100644
--- a/repo/includes/View/EntityViewFactory.php
+++ b/repo/includes/View/EntityViewFactory.php
@@ -11,10 +11,11 @@
 use Wikibase\LanguageFallbackChain;
 use Wikibase\Lib\EntityIdFormatter;
 use Wikibase\Lib\EntityIdFormatterFactory;
-use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\Lib\OutputFormatSnakFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
+use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\Lib\Store\LabelLookup;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * @since 0.5
@@ -70,11 +71,18 @@
        private $badgeItems;
 
        /**
+        *
+        * @var TemplateFactory
+        */
+       private $templateFactory;
+
+       /**
         * @param EntityIdFormatterFactory $idFormatterFactory
         * @param OutputFormatSnakFormatterFactory $snakFormatterFactory
         * @param EntityLookup $entityLookup
         * @param SiteStore $siteStore
         * @param DataTypeFactory $dataTypeFactory
+        * @param TemplateFactory $templateFactory
         */
        public function __construct(
                EntityIdFormatterFactory $idFormatterFactory,
@@ -82,6 +90,7 @@
                EntityLookup $entityLookup,
                SiteStore $siteStore,
                DataTypeFactory $dataTypeFactory,
+               TemplateFactory $templateFactory,
                array $siteLinkGroups,
                array $specialSiteLinkGroups,
                array $badgeItems
@@ -90,13 +99,16 @@
 
                $this->idFormatterFactory = $idFormatterFactory;
                $this->snakFormatterFactory = $snakFormatterFactory;
-               $this->sectionEditLinkGenerator = new 
SectionEditLinkGenerator();
                $this->entityLookup = $entityLookup;
                $this->siteStore = $siteStore;
                $this->dataTypeFactory = $dataTypeFactory;
                $this->siteLinkGroups = $siteLinkGroups;
                $this->specialSiteLinkGroups = $specialSiteLinkGroups;
                $this->badgeItems = $badgeItems;
+               $this->templateFactory = $templateFactory;
+               $this->sectionEditLinkGenerator = new SectionEditLinkGenerator(
+                       $this->templateFactory
+               );
        }
 
        /**
@@ -140,6 +152,7 @@
                switch ( $entityType ) {
                        case 'item':
                                $siteLinksView = new SiteLinksView(
+                                       $this->templateFactory,
                                        $this->siteStore->getSites(),
                                        $this->sectionEditLinkGenerator,
                                        $this->entityLookup,
@@ -149,6 +162,7 @@
                                );
 
                                return new ItemView(
+                                       $this->templateFactory,
                                        $fingerprintView,
                                        $claimsView,
                                        $language,
@@ -158,6 +172,7 @@
                                );
                        case 'property':
                                return new PropertyView(
+                                       $this->templateFactory,
                                        $fingerprintView,
                                        $claimsView,
                                        $this->dataTypeFactory,
@@ -184,15 +199,18 @@
                $propertyIdFormatter = $this->getPropertyIdFormatter( 
$languageCode, $fallbackChain, $labelLookup );
 
                $snakHtmlGenerator = new SnakHtmlGenerator(
+                       $this->templateFactory,
                        $this->getSnakFormatter( $languageCode, $fallbackChain, 
$labelLookup ),
                        $propertyIdFormatter
                );
 
                $claimHtmlGenerator = new ClaimHtmlGenerator(
+                       $this->templateFactory,
                        $snakHtmlGenerator
                );
 
                return new ClaimsView(
+                       $this->templateFactory,
                        $propertyIdFormatter,
                        $this->sectionEditLinkGenerator,
                        $claimHtmlGenerator
@@ -206,6 +224,7 @@
         */
        private function newFingerprintView( $languageCode ) {
                return new FingerprintView(
+                       $this->templateFactory,
                        $this->sectionEditLinkGenerator,
                        $languageCode
                );
diff --git a/repo/includes/View/EntityViewPlaceholderExpander.php 
b/repo/includes/View/EntityViewPlaceholderExpander.php
index 3f3f225..99d7331 100644
--- a/repo/includes/View/EntityViewPlaceholderExpander.php
+++ b/repo/includes/View/EntityViewPlaceholderExpander.php
@@ -12,6 +12,7 @@
 use Wikibase\DataModel\Entity\EntityIdParser;
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\StorageException;
+use Wikibase\Template\TemplateFactory;
 use Wikibase\UserLanguageLookup;
 
 /**
@@ -31,6 +32,11 @@
  * @author Daniel Kinzler
  */
 class EntityViewPlaceholderExpander {
+
+       /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
 
        /**
         * @var Title
@@ -68,6 +74,7 @@
        private $extraLanguages = null;
 
        /**
+        * @param TemplateFactory $templateFactory
         * @param Title $targetPage the page for which this expander is 
supposed to handle expansion.
         * @param User $user the current user
         * @param Language $uiLanguage the user's current UI language (as per 
the present request)
@@ -76,6 +83,7 @@
         * @param UserLanguageLookup $userLanguageLookup
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                Title $targetPage,
                User $user,
                Language $uiLanguage,
@@ -89,6 +97,7 @@
                $this->entityIdParser = $entityIdParser;
                $this->entityRevisionLookup = $entityRevisionLookup;
                $this->userLanguageLookup = $userLanguageLookup;
+               $this->templateFactory = $templateFactory;
        }
 
        /**
@@ -202,7 +211,7 @@
                        return '';
                }
 
-               $html = wfTemplate( 'wb-entity-toc-section',
+               $html = $this->templateFactory->render( 'wb-entity-toc-section',
                        0, // section number, not really used, it seems
                        'wb-terms',
                        wfMessage( 'wikibase-terms' )->inLanguage( 
$this->uiLanguage )->text()
@@ -240,7 +249,7 @@
                        return '';
                }
 
-               $termBoxView = new TermBoxView( $this->uiLanguage );
+               $termBoxView = new TermBoxView( $this->templateFactory, 
$this->uiLanguage );
                $html = $termBoxView->renderTermBox( $this->targetPage, 
$entity->getFingerprint(), $languages );
 
                return $html;
diff --git a/repo/includes/View/FingerprintView.php 
b/repo/includes/View/FingerprintView.php
index 2563090..2de3a84 100644
--- a/repo/includes/View/FingerprintView.php
+++ b/repo/includes/View/FingerprintView.php
@@ -6,6 +6,7 @@
 use Wikibase\DataModel\Term\AliasGroupList;
 use Wikibase\DataModel\Term\Fingerprint;
 use Wikibase\DataModel\Term\TermList;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Generates HTML to display the fingerprint of an entity
@@ -20,6 +21,11 @@
 class FingerprintView {
 
        /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
+
+       /**
         * @var SectionEditLinkGenerator
         */
        private $sectionEditLinkGenerator;
@@ -30,12 +36,18 @@
        private $languageCode;
 
        /**
+        * @param TemplateFactory $templateFactory
         * @param SectionEditLinkGenerator $sectionEditLinkGenerator
         * @param string $languageCode
         */
-       public function __construct( SectionEditLinkGenerator 
$sectionEditLinkGenerator, $languageCode ) {
+       public function __construct(
+               TemplateFactory $templateFactory,
+               SectionEditLinkGenerator $sectionEditLinkGenerator,
+               $languageCode
+       ) {
                $this->sectionEditLinkGenerator = $sectionEditLinkGenerator;
                $this->languageCode = $languageCode;
+               $this->templateFactory = $templateFactory;
        }
 
        /**
@@ -54,7 +66,7 @@
 
                $html .= $this->getHtmlForLabel( $labels, $entityId, $editable 
);
                $html .= $this->getHtmlForDescription( $descriptions, 
$entityId, $editable );
-               $html .= wfTemplate( 'wb-entity-header-separator' );
+               $html .= $this->templateFactory->render( 
'wb-entity-header-separator' );
                $html .= $this->getHtmlForAliases( $aliasGroups, $entityId, 
$editable );
 
                return $html;
@@ -71,7 +83,7 @@
                $hasLabel = $labels->hasTermForLanguage( $this->languageCode );
                $id = 'new';
                $idInParentheses = '';
-               $editSection = wfTemplate( 'wikibase-toolbar-wrapper',
+               $editSection = $this->templateFactory->render( 
'wikibase-toolbar-wrapper',
                        $this->getHtmlForEditSection( 'SetLabel', $entityId, 
$editable )
                );
 
@@ -81,9 +93,9 @@
                }
 
                if ( $hasLabel ) {
-                       return wfTemplate( 'wikibase-firstHeading',
+                       return $this->templateFactory->render( 
'wikibase-firstHeading',
                                $id,
-                               wfTemplate( 'wikibase-labelview',
+                               $this->templateFactory->render( 
'wikibase-labelview',
                                        '',
                                        htmlspecialchars( 
$labels->getByLanguage( $this->languageCode )->getText() ),
                                        $idInParentheses,
@@ -91,9 +103,9 @@
                                )
                        );
                } else {
-                       return wfTemplate( 'wikibase-firstHeading',
+                       return $this->templateFactory->render( 
'wikibase-firstHeading',
                                $id,
-                               wfTemplate( 'wikibase-labelview',
+                               $this->templateFactory->render( 
'wikibase-labelview',
                                        'wb-empty',
                                        wfMessage( 'wikibase-label-empty' 
)->escaped(),
                                        $idInParentheses,
@@ -115,13 +127,13 @@
                $editSection = $this->getHtmlForEditSection( 'SetDescription', 
$entityId, $editable );
 
                if ( $hasDescription ) {
-                       return wfTemplate( 'wikibase-descriptionview',
+                       return $this->templateFactory->render( 
'wikibase-descriptionview',
                                '',
                                htmlspecialchars( $descriptions->getByLanguage( 
$this->languageCode )->getText() ),
                                $editSection
                        );
                } else {
-                       return wfTemplate( 'wikibase-descriptionview',
+                       return $this->templateFactory->render( 
'wikibase-descriptionview',
                                'wb-empty',
                                wfMessage( 'wikibase-description-empty' 
)->escaped(),
                                $editSection
@@ -144,20 +156,20 @@
                        $aliasesHtml = '';
                        $aliases = $aliasGroups->getByLanguage( 
$this->languageCode )->getAliases();
                        foreach ( $aliases as $alias ) {
-                               $aliasesHtml .= wfTemplate(
+                               $aliasesHtml .= $this->templateFactory->render(
                                        'wikibase-aliasesview-list-item',
                                        htmlspecialchars( $alias )
                                );
                        }
 
-                       return wfTemplate( 'wikibase-aliasesview',
+                       return $this->templateFactory->render( 
'wikibase-aliasesview',
                                '',
                                wfMessage( 'wikibase-aliases-label' 
)->escaped(),
                                $aliasesHtml,
                                $editSection
                        );
                } else {
-                       return wfTemplate( 'wikibase-aliasesview',
+                       return $this->templateFactory->render( 
'wikibase-aliasesview',
                                'wb-empty',
                                wfMessage( 'wikibase-aliases-empty' 
)->escaped(),
                                '',
diff --git a/repo/includes/View/ItemView.php b/repo/includes/View/ItemView.php
index 907f578..e97569a 100644
--- a/repo/includes/View/ItemView.php
+++ b/repo/includes/View/ItemView.php
@@ -6,6 +6,7 @@
 use Language;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\EntityRevision;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Class for creating views for Item instances.
@@ -32,6 +33,7 @@
        /**
         * @see EntityView::__construct
         *
+        * @param TemplateFactory $templateFactory
         * @param FingerprintView $fingerprintView
         * @param ClaimsView $claimsView
         * @param Language $language
@@ -40,6 +42,7 @@
         * @param bool $editable
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                FingerprintView $fingerprintView,
                ClaimsView $claimsView,
                Language $language,
@@ -47,7 +50,7 @@
                array $siteLinkGroups,
                $editable = true
        ) {
-               parent::__construct( $fingerprintView, $claimsView, $language, 
$editable );
+               parent::__construct( $templateFactory, $fingerprintView, 
$claimsView, $language, $editable );
 
                $this->siteLinkGroups = $siteLinkGroups;
                $this->siteLinksView = $siteLinksView;
diff --git a/repo/includes/View/PropertyView.php 
b/repo/includes/View/PropertyView.php
index 0304ac7..d70c1ba 100644
--- a/repo/includes/View/PropertyView.php
+++ b/repo/includes/View/PropertyView.php
@@ -2,13 +2,13 @@
 
 namespace Wikibase\Repo\View;
 
-use DataTypes\DataTypeFactory;
 use DataTypes\DataType;
+use DataTypes\DataTypeFactory;
 use InvalidArgumentException;
 use Language;
 use Wikibase\DataModel\Entity\Property;
 use Wikibase\EntityRevision;
-use Wikibase\Repo\WikibaseRepo;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Class for creating views for Property instances.
@@ -28,19 +28,21 @@
        private $dataTypeFactory;
 
        /**
+        * @param TemplateFactory $templateFactory
         * @param FingerprintView $fingerprintView
         * @param ClaimsView $claimsView
         * @param Language $language
         * @param bool $editable
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                FingerprintView $fingerprintView,
                ClaimsView $claimsView,
                DataTypeFactory $dataTypeFactory,
                Language $language,
                $editable = true
        ) {
-               parent::__construct( $fingerprintView, $claimsView, $language, 
$editable );
+               parent::__construct( $templateFactory, $fingerprintView, 
$claimsView, $language, $editable );
 
                $this->dataTypeFactory = $dataTypeFactory;
        }
@@ -86,11 +88,11 @@
         * @return string
         */
        private function getHtmlForDataType( DataType $dataType ) {
-               return wfTemplate( 'wb-section-heading',
+               return $this->templateFactory->render( 'wb-section-heading',
                        wfMessage( 'wikibase-propertypage-datatype' 
)->escaped(),
                        'datatype'
                )
-               . wfTemplate( 'wikibase-propertyview-datatype',
+               . $this->templateFactory->render( 
'wikibase-propertyview-datatype',
                        htmlspecialchars( $dataType->getLabel( 
$this->language->getCode() ) )
                );
        }
diff --git a/repo/includes/View/SectionEditLinkGenerator.php 
b/repo/includes/View/SectionEditLinkGenerator.php
index 28abbeb..f82a148 100644
--- a/repo/includes/View/SectionEditLinkGenerator.php
+++ b/repo/includes/View/SectionEditLinkGenerator.php
@@ -4,6 +4,7 @@
 
 use Message;
 use SpecialPageFactory;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Generates HTML for a section edit link
@@ -16,6 +17,18 @@
  * @author Daniel Kinzler
  */
 class SectionEditLinkGenerator {
+
+       /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
+
+       /**
+        * @param TemplateFactory $templateFactory
+        */
+       public function __construct( TemplateFactory $templateFactory ) {
+               $this->templateFactory = $templateFactory;
+       }
 
        /**
         * Returns a toolbar with an edit link. In JavaScript, an enhanced 
toolbar will be initialized
@@ -43,8 +56,8 @@
                $editUrl = $enabled ? $this->getEditUrl( $specialPageName, 
$specialPageUrlParams ) : null;
                $toolbarButton = $this->getToolbarButton( $cssClassSuffix, 
$message->text(), $editUrl );
 
-               $html = wfTemplate( 'wikibase-toolbar-container',
-                       wfTemplate( 'wikibase-toolbar',
+               $html = $this->templateFactory->render( 
'wikibase-toolbar-container',
+                       $this->templateFactory->render( 'wikibase-toolbar',
                                '',
                                $toolbarButton
                        )
@@ -80,7 +93,8 @@
                $editUrl = $enabled ? $this->getEditUrl( $specialPageName, 
$specialPageUrlParams ) : null;
                $toolbarButton = $this->getToolbarButton( $cssClassSuffix, 
$message->text(), $editUrl );
 
-               $html = wfTemplate( 'wikibase-toolbar-container',
+               $html = $this->templateFactory->render(
+                       'wikibase-toolbar-container',
                        $toolbarButton
                );
 
@@ -118,8 +132,8 @@
         */
        private function getToolbarButton( $cssClassSuffix, $buttonLabel, 
$editUrl = null ) {
                if ( $editUrl !== null ) {
-                       return wfTemplate( 'wikibase-toolbar-bracketed',
-                               wfTemplate( 'wikibase-toolbar-button',
+                       return $this->templateFactory->render( 
'wikibase-toolbar-bracketed',
+                               $this->templateFactory->render( 
'wikibase-toolbar-button',
                                        'wikibase-toolbar-button-' . 
$cssClassSuffix,
                                        $editUrl,
                                        $buttonLabel
diff --git a/repo/includes/View/SiteLinksView.php 
b/repo/includes/View/SiteLinksView.php
index d7fb2c9..93f2e32 100644
--- a/repo/includes/View/SiteLinksView.php
+++ b/repo/includes/View/SiteLinksView.php
@@ -11,6 +11,7 @@
 use Wikibase\DataModel\SiteLink;
 use Wikibase\DataModel\Term\FingerprintProvider;
 use Wikibase\Lib\Store\EntityLookup;
+use Wikibase\Template\TemplateFactory;
 use Wikibase\Utils;
 
 /**
@@ -23,6 +24,11 @@
  * @author Bene* < [email protected] >
  */
 class SiteLinksView {
+
+       /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
 
        /**
         * @var SiteList
@@ -63,6 +69,7 @@
         * @param string $languageCode
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                SiteList $sites,
                SectionEditLinkGenerator $sectionEditLinkGenerator,
                EntityLookup $entityLookup,
@@ -76,6 +83,7 @@
                $this->badgeItems = $badgeItems;
                $this->specialSiteLinkGroups = $specialSiteLinkGroups;
                $this->languageCode = $languageCode;
+               $this->templateFactory = $templateFactory;
        }
 
        /**
@@ -106,8 +114,8 @@
                        $html .= $this->getHtmlForSiteLinkGroup( $siteLinks, 
$itemId, $group, $editable );
                }
 
-               return wfTemplate( 'wikibase-sitelinkgrouplistview',
-                       wfTemplate( 'wb-listview', $html )
+               return $this->templateFactory->render( 
'wikibase-sitelinkgrouplistview',
+                       $this->templateFactory->render( 'wb-listview', $html )
                );
        }
 
@@ -122,12 +130,12 @@
         * @return string
         */
        private function getHtmlForSiteLinkGroup( array $siteLinks, $itemId, 
$group, $editable ) {
-               return wfTemplate( 'wikibase-sitelinkgroupview',
+               return $this->templateFactory->render( 
'wikibase-sitelinkgroupview',
                        // TODO: support entity-id as prefix for element IDs.
                        htmlspecialchars( 'sitelinks-' . $group, ENT_QUOTES ),
                        wfMessage( 'wikibase-sitelinks-' . $group )->parse(),
                        '', // counter
-                       wfTemplate( 'wikibase-sitelinklistview',
+                       $this->templateFactory->render( 
'wikibase-sitelinklistview',
                                $this->getHtmlForSiteLinks(
                                        $this->getSiteLinksForTable( 
$this->getSitesForGroup( $group ), $siteLinks ),
                                        $group === 'special'
@@ -254,7 +262,7 @@
                // TODO: for non-JS, also set the dir attribute on the link 
cell;
                // but do not build language objects for each site since it 
causes too much load
                // and will fail when having too much site links
-               return wfTemplate( 'wikibase-sitelinkview',
+               return $this->templateFactory->render( 'wikibase-sitelinkview',
                        htmlspecialchars( $siteId ), // ID used in classes
                        $languageCode,
                        'auto',
@@ -273,7 +281,7 @@
        private function getHtmlForPage( $siteLink, $site ) {
                $pageName = $siteLink->getPageName();
 
-               return wfTemplate( 'wikibase-sitelinkview-pagename',
+               return $this->templateFactory->render( 
'wikibase-sitelinkview-pagename',
                        htmlspecialchars( $site->getPageUrl( $pageName ) ),
                        htmlspecialchars( $pageName ),
                        $this->getHtmlForBadges( $siteLink ),
@@ -288,7 +296,7 @@
         */
        private function getHtmlForUnknownSiteLink( $siteLink ) {
                // FIXME: No need for separate template; Use 
'wikibase-sitelinkview' template.
-               return wfTemplate( 'wikibase-sitelinkview-unknown',
+               return $this->templateFactory->render( 
'wikibase-sitelinkview-unknown',
                        htmlspecialchars( $siteLink->getSiteId() ),
                        htmlspecialchars(  $siteLink->getPageName() )
                );
@@ -332,14 +340,14 @@
                                $classes .= ' ' . Sanitizer::escapeClass( 
$this->badgeItems[$serialization] );
                        }
 
-                       $html .= wfTemplate( 'wb-badge',
+                       $html .= $this->templateFactory->render( 'wb-badge',
                                $classes,
                                $this->getTitleForBadge( $badge ),
                                $badge
                        );
                }
 
-               return wfTemplate( 'wikibase-badgeselector', $html );
+               return $this->templateFactory->render( 
'wikibase-badgeselector', $html );
        }
 
        /**
diff --git a/repo/includes/View/SnakHtmlGenerator.php 
b/repo/includes/View/SnakHtmlGenerator.php
index b1f06df..631b4ac 100644
--- a/repo/includes/View/SnakHtmlGenerator.php
+++ b/repo/includes/View/SnakHtmlGenerator.php
@@ -4,10 +4,11 @@
 
 use InvalidArgumentException;
 use ValueFormatters\FormattingException;
-use Wikibase\DataModel\Snak\Snak;
 use Wikibase\DataModel\Entity\PropertyNotFoundException;
+use Wikibase\DataModel\Snak\Snak;
 use Wikibase\Lib\EntityIdFormatter;
 use Wikibase\Lib\SnakFormatter;
+use Wikibase\Template\TemplateFactory;
 
 /**
  * Base class for generating Snak html.
@@ -21,6 +22,11 @@
  * @author Daniel Kinzler
  */
 class SnakHtmlGenerator {
+
+       /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
 
        /**
         * @since 0.4
@@ -43,6 +49,7 @@
         * @throws InvalidArgumentException
         */
        public function __construct(
+               TemplateFactory $templateFactory,
                SnakFormatter $snakFormatter,
                EntityIdFormatter $propertyIdFormatter
        ) {
@@ -54,6 +61,7 @@
 
                $this->snakFormatter = $snakFormatter;
                $this->propertyIdFormatter = $propertyIdFormatter;
+               $this->templateFactory = $templateFactory;
        }
 
        /**
@@ -76,7 +84,7 @@
 
                $propertyLink = $showPropertyLink ? $this->makePropertyLink( 
$snak ) : '';
 
-               $html = wfTemplate( 'wb-snak',
+               $html = $this->templateFactory->render( 'wb-snak',
                        // Display property link only once for snaks featuring 
the same property:
                        $propertyLink,
                        $snakViewCssClass,
diff --git a/repo/includes/View/TermBoxView.php 
b/repo/includes/View/TermBoxView.php
index 61800f5..c270714 100644
--- a/repo/includes/View/TermBoxView.php
+++ b/repo/includes/View/TermBoxView.php
@@ -7,6 +7,7 @@
 use Title;
 use Wikibase\DataModel\Term\AliasGroupList;
 use Wikibase\DataModel\Term\Fingerprint;
+use Wikibase\Template\TemplateFactory;
 use Wikibase\Utils;
 
 /**
@@ -22,6 +23,11 @@
 class TermBoxView {
 
        /**
+        * @var TemplateFactory
+        */
+       private $templateFactory;
+
+       /**
         * @var SectionEditLinkGenerator
         */
        private $sectionEditLinkGenerator;
@@ -31,9 +37,10 @@
         */
        private $language;
 
-       public function __construct( Language $language ) {
+       public function __construct( TemplateFactory $templateFactory, Language 
$language ) {
                $this->language = $language;
-               $this->sectionEditLinkGenerator = new 
SectionEditLinkGenerator();
+               $this->templateFactory = $templateFactory;
+               $this->sectionEditLinkGenerator = new SectionEditLinkGenerator( 
$templateFactory );
        }
 
        /**
@@ -74,11 +81,11 @@
                        $hasLabel = $labels->hasTermForLanguage( $languageCode 
);
                        $hasDescription = $descriptions->hasTermForLanguage( 
$languageCode );
 
-                       $tbody .= wfTemplate( 
'wikibase-entitytermsforlanguageview',
+                       $tbody .= $this->templateFactory->render( 
'wikibase-entitytermsforlanguageview',
                                $languageCode,
                                $title->getLocalURL( array( 'setlang' => 
$languageCode ) ),
                                htmlspecialchars( Utils::fetchLanguageName( 
$languageCode ) ),
-                               wfTemplate( 'wikibase-labelview',
+                               $this->templateFactory->render( 
'wikibase-labelview',
                                        $hasLabel ? '' : 'wb-empty',
                                        htmlspecialchars( $hasLabel
                                                ? $labels->getByLanguage( 
$languageCode )->getText()
@@ -87,7 +94,7 @@
                                        '',
                                        ''
                                ),
-                               wfTemplate( 'wikibase-descriptionview',
+                               $this->templateFactory->render( 
'wikibase-descriptionview',
                                        $hasDescription ? '' : 'wb-empty',
                                        htmlspecialchars( $hasDescription
                                                ? $descriptions->getByLanguage( 
$languageCode )->getText()
@@ -100,9 +107,9 @@
                        );
                }
 
-               $html = wfTemplate( 'wikibase-entitytermsview',
+               $html = $this->templateFactory->render( 
'wikibase-entitytermsview',
                        $this->msg( 'wikibase-terms' )->text(),
-                       wfTemplate( 'wikibase-entitytermsforlanguagelistview', 
$tbody ),
+                       $this->templateFactory->render( 
'wikibase-entitytermsforlanguagelistview', $tbody ),
                        $this->sectionEditLinkGenerator->getHtmlForEditSection(
                                'SpecialPages',
                                array(),
@@ -124,7 +131,7 @@
         */
        private function getHtmlForAliases( AliasGroupList $aliasGroups, 
$languageCode ) {
                if ( !$aliasGroups->hasGroupForLanguage( $languageCode ) ) {
-                       return wfTemplate( 'wikibase-aliasesview',
+                       return $this->templateFactory->render( 
'wikibase-aliasesview',
                                'wb-empty',
                                wfMessage( 'wikibase-aliases-empty' 
)->escaped(),
                                '',
@@ -134,13 +141,13 @@
                        $aliasesHtml = '';
                        $aliases = $aliasGroups->getByLanguage( $languageCode 
)->getAliases();
                        foreach ( $aliases as $alias ) {
-                               $aliasesHtml .= wfTemplate(
+                               $aliasesHtml .= $this->templateFactory->render(
                                        'wikibase-aliasesview-list-item',
                                        htmlspecialchars( $alias )
                                );
                        }
 
-                       return wfTemplate( 'wikibase-aliasesview',
+                       return $this->templateFactory->render( 
'wikibase-aliasesview',
                                '',
                                wfMessage( 'wikibase-aliases-label' 
)->escaped(),
                                $aliasesHtml,
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index dd38701..9f2e912 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -49,7 +49,9 @@
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Lib\Store\EntityContentDataCodec;
 use Wikibase\Lib\Store\EntityLookup;
-use Wikibase\Lib\Store\EntityRetrievingTermLookup;
+use Wikibase\Lib\Store\EntityRevisionLookup;
+use Wikibase\Lib\Store\EntityStore;
+use Wikibase\Lib\Store\EntityStoreWatcher;
 use Wikibase\Lib\Store\EntityTermLookup;
 use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Lib\Store\TermLookup;
@@ -75,6 +77,7 @@
 use Wikibase\Store;
 use Wikibase\StringNormalizer;
 use Wikibase\SummaryFormatter;
+use Wikibase\Template\TemplateFactory;
 use Wikibase\TemplateRegistry;
 use Wikibase\Utils;
 use Wikibase\Validators\EntityConstraintProvider;
@@ -169,11 +172,6 @@
        private $entityNamespaceLookup = null;
 
        /**
-        * @var TemplateRegistry|null
-        */
-       private $templateRegistry = null;
-
-       /**
         * Returns the default instance constructed using newInstance().
         * IMPORTANT: Use only when it is not feasible to inject an instance 
properly.
         *
@@ -265,7 +263,7 @@
        /**
         * @since 0.5
         *
-        * @return \Wikibase\Lib\Store\EntityStoreWatcher
+        * @return EntityStoreWatcher
         */
        public function getEntityStoreWatcher() {
                return $this->getStore()->getEntityStoreWatcher();
@@ -294,7 +292,7 @@
         *
         * @param string $uncached Flag string, set to 'uncached' to get an 
uncached direct lookup service.
         *
-        * @return \Wikibase\Lib\Store\EntityRevisionLookup
+        * @return EntityRevisionLookup
         */
        public function getEntityRevisionLookup( $uncached = '' ) {
                return $this->getStore()->getEntityRevisionLookup( $uncached );
@@ -303,7 +301,7 @@
        /**
         * @since 0.5
         *
-        * @return \Wikibase\Lib\Store\EntityStore
+        * @return EntityStore
         */
        public function getEntityStore() {
                return $this->getStore()->getEntityStore();
@@ -994,6 +992,7 @@
                        $this->getEntityLookup(),
                        $this->getSiteStore(),
                        $this->getDataTypeFactory(),
+                       new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                        $this->getSettings()->getSetting( 'siteLinkGroups' ),
                        $this->getSettings()->getSetting( 
'specialSiteLinkGroups' ),
                        $this->getSettings()->getSetting( 'badgeItems' )
@@ -1007,15 +1006,6 @@
                        new ValuesFinder( $this->getPropertyDataTypeLookup() ),
                        $this->getLanguageFallbackChainFactory()
                );
-       }
-
-       public function getTemplateRegistry() {
-               if ( $this->templateRegistry === null ) {
-                       $this->templateRegistry = new TemplateRegistry();
-                       $this->templateRegistry->addTemplates( include( __DIR__ 
. '/../resources/templates.php' ) );
-               }
-
-               return $this->templateRegistry;
        }
 
 }
diff --git a/repo/includes/modules/TemplateModule.php 
b/repo/includes/modules/TemplateModule.php
index 304a5d2..f7abc19 100644
--- a/repo/includes/modules/TemplateModule.php
+++ b/repo/includes/modules/TemplateModule.php
@@ -1,14 +1,14 @@
 <?php
 
 namespace Wikibase;
+
+use FormatJson;
 use ResourceLoaderContext;
 use ResourceLoaderFileModule;
-use Wikibase\Repo\WikibaseRepo;
+use ResourceLoaderModule;
 
 /**
  * Injects templates into JavaScript.
- *
- * Note: when moving the file, the path to templates.php might need updating.
  *
  * @since 0.2
  *
@@ -27,8 +27,8 @@
         */
        public function getScript( ResourceLoaderContext $context ) {
                // register HTML templates
-               $templateRegistry = 
WikibaseRepo::getDefaultInstance()->getTemplateRegistry();
-               $templatesJson = \FormatJson::encode( 
$templateRegistry->getTemplates() );
+               $templateRegistry = TemplateRegistry::getDefaultInstance();
+               $templatesJson = FormatJson::encode( 
$templateRegistry->getTemplates() );
 
                // template store JavaScript initialisation
                $script = <<<EOT
diff --git a/repo/tests/phpunit/includes/View/ClaimHtmlGeneratorTest.php 
b/repo/tests/phpunit/includes/View/ClaimHtmlGeneratorTest.php
index 04488f5..b9b87ce 100644
--- a/repo/tests/phpunit/includes/View/ClaimHtmlGeneratorTest.php
+++ b/repo/tests/phpunit/includes/View/ClaimHtmlGeneratorTest.php
@@ -16,6 +16,8 @@
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Repo\View\ClaimHtmlGenerator;
 use Wikibase\Repo\View\SnakHtmlGenerator;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\ClaimHtmlGenerator
@@ -85,12 +87,18 @@
                Claim $claim,
                $patterns
        ) {
+               $templateFactory = new TemplateFactory(
+                       TemplateRegistry::getDefaultInstance()
+               );
+
                $snakHtmlGenerator = new SnakHtmlGenerator(
+                       $templateFactory,
                        $snakFormatter,
                        $propertyIdFormatter
                );
 
                $claimHtmlGenerator = new ClaimHtmlGenerator(
+                       $templateFactory,
                        $snakHtmlGenerator
                );
 
diff --git a/repo/tests/phpunit/includes/View/ClaimsViewTest.php 
b/repo/tests/phpunit/includes/View/ClaimsViewTest.php
index f051172..4744b8d 100644
--- a/repo/tests/phpunit/includes/View/ClaimsViewTest.php
+++ b/repo/tests/phpunit/includes/View/ClaimsViewTest.php
@@ -17,6 +17,8 @@
 use Wikibase\Repo\View\ClaimHtmlGenerator;
 use Wikibase\Repo\View\ClaimsView;
 use Wikibase\Repo\View\SectionEditLinkGenerator;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\ClaimsView
@@ -105,9 +107,11 @@
         * @return ClaimsView
         */
        private function newClaimsView( EntityIdFormatter $propertyIdFormatter 
) {
+               $templateFactory = new TemplateFactory( 
TemplateRegistry::getDefaultInstance() );
                return new ClaimsView(
+                       $templateFactory,
                        $propertyIdFormatter,
-                       new SectionEditLinkGenerator(),
+                       new SectionEditLinkGenerator( $templateFactory ),
                        $this->getClaimHtmlGeneratorMock()
                );
        }
diff --git a/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php 
b/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
index 0c29d39..f510bf2 100644
--- a/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
+++ b/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
@@ -4,11 +4,10 @@
 
 use SiteList;
 use Wikibase\LanguageFallbackChain;
-use Wikibase\Lib\EntityIdFormatter;
-use Wikibase\Lib\EntityIdFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
-use Wikibase\Lib\Store\LabelLookup;
 use Wikibase\Repo\View\EntityViewFactory;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @licence GNU GPL v2+
@@ -59,6 +58,7 @@
                        $this->getMock( 'Wikibase\Lib\Store\EntityLookup' ),
                        $this->getSiteStore(),
                        $this->getMock( 'DataTypes\DataTypeFactory' ),
+                       new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                        array(),
                        array(),
                        array()
diff --git 
a/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php 
b/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
index 1f9b98d..5c34893 100644
--- a/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
+++ b/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
@@ -12,6 +12,8 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\StorageException;
 use Wikibase\Repo\View\EntityViewPlaceholderExpander;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\EntityViewPlaceholderExpander
@@ -54,6 +56,7 @@
                        ->will( $this->returnValue( array( 'de', 'en', 'ru' ) ) 
);
 
                return new EntityViewPlaceholderExpander(
+                       new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                        $title,
                        $user,
                        $language,
diff --git a/repo/tests/phpunit/includes/View/FingerprintViewTest.php 
b/repo/tests/phpunit/includes/View/FingerprintViewTest.php
index 01cb2ba..3d76693 100644
--- a/repo/tests/phpunit/includes/View/FingerprintViewTest.php
+++ b/repo/tests/phpunit/includes/View/FingerprintViewTest.php
@@ -7,6 +7,8 @@
 use Wikibase\DataModel\Term\Fingerprint;
 use Wikibase\Repo\View\FingerprintView;
 use Wikibase\Repo\View\SectionEditLinkGenerator;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\FingerprintView
@@ -43,7 +45,13 @@
        }
 
        private function getFingerprintView( $languageCode = 'en' ) {
-               return new FingerprintView( new SectionEditLinkGenerator(), 
$languageCode );
+               $templateFactory = new TemplateFactory( 
TemplateRegistry::getDefaultInstance() );
+
+               return new FingerprintView(
+                       $templateFactory,
+                       new SectionEditLinkGenerator( $templateFactory ),
+                       $languageCode
+               );
        }
 
        private function getFingerprint( $languageCode = 'en' ) {
diff --git a/repo/tests/phpunit/includes/View/ItemViewTest.php 
b/repo/tests/phpunit/includes/View/ItemViewTest.php
index a33c2c0..59ca464 100644
--- a/repo/tests/phpunit/includes/View/ItemViewTest.php
+++ b/repo/tests/phpunit/includes/View/ItemViewTest.php
@@ -2,11 +2,12 @@
 
 namespace Wikibase\Test;
 
-use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\Repo\View\ItemView;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\ItemView
@@ -48,6 +49,7 @@
 
        public function provideTestGetHtml() {
                $itemView = new ItemView(
+                       new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                        $this->getMockBuilder( 
'Wikibase\Repo\View\FingerprintView' )
                                ->disableOriginalConstructor()
                                ->getMock(),
diff --git a/repo/tests/phpunit/includes/View/PropertyViewTest.php 
b/repo/tests/phpunit/includes/View/PropertyViewTest.php
index 21455d6..6ff3bcd 100644
--- a/repo/tests/phpunit/includes/View/PropertyViewTest.php
+++ b/repo/tests/phpunit/includes/View/PropertyViewTest.php
@@ -10,6 +10,8 @@
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\Repo\View\PropertyView;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\PropertyView
@@ -76,6 +78,7 @@
 
        public function provideTestGetHtml() {
                $propertyView = new PropertyView(
+                       new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                        $this->getMockBuilder( 
'Wikibase\Repo\View\FingerprintView' )
                                ->disableOriginalConstructor()
                                ->getMock(),
diff --git a/repo/tests/phpunit/includes/View/SectionEditLinkGeneratorTest.php 
b/repo/tests/phpunit/includes/View/SectionEditLinkGeneratorTest.php
index cfedcc5..5240138 100644
--- a/repo/tests/phpunit/includes/View/SectionEditLinkGeneratorTest.php
+++ b/repo/tests/phpunit/includes/View/SectionEditLinkGeneratorTest.php
@@ -3,6 +3,8 @@
 namespace Wikibase\Test;
 
 use Wikibase\Repo\View\SectionEditLinkGenerator;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\SectionEditLinkGenerator
@@ -22,7 +24,7 @@
         * @dataProvider getHtmlForEditSectionProvider
         */
        public function testGetHtmlForEditSection( $expected, $pageName, 
$action, $enabled, $langCode ) {
-               $generator = new SectionEditLinkGenerator();
+               $generator = $this->newSectionEditLinkGenerator();
 
                $key = $action === 'add' ? 'wikibase-add' : 'wikibase-edit';
                $msg = wfMessage( $key )->inLanguage( $langCode );
@@ -60,7 +62,7 @@
         * @dataProvider getHtmlForEditSection_editUrlProvider
         */
        public function testGetHtmlForEditSection_editUrl( $expected, 
$specialPageName, $specialPageParams ) {
-               $generator = new SectionEditLinkGenerator();
+               $generator = $this->newSectionEditLinkGenerator();
 
                $html = $generator->getHtmlForEditSection(
                        $specialPageName,
@@ -97,7 +99,7 @@
         * @dataProvider getHtmlForEditSection_disabledProvider
         */
        public function testGetHtmlForEditSection_disabled( $specialPageName, 
$specialPageUrlParams, $enabled ) {
-               $generator = new SectionEditLinkGenerator();
+               $generator = $this->newSectionEditLinkGenerator();
 
                $html = $generator->getHtmlForEditSection(
                        $specialPageName,
@@ -119,4 +121,7 @@
                );
        }
 
+       private function newSectionEditLinkGenerator() {
+               return new SectionEditLinkGenerator( new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ) );
+       }
 }
diff --git a/repo/tests/phpunit/includes/View/SiteLinksViewTest.php 
b/repo/tests/phpunit/includes/View/SiteLinksViewTest.php
index 670ddf7..8d343bb 100644
--- a/repo/tests/phpunit/includes/View/SiteLinksViewTest.php
+++ b/repo/tests/phpunit/includes/View/SiteLinksViewTest.php
@@ -11,8 +11,9 @@
 use Wikibase\DataModel\SiteLink;
 use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\Repo\View\SectionEditLinkGenerator;
-use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Repo\View\SiteLinksView;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\SiteLinksView
@@ -189,6 +190,7 @@
        private function getSiteLinksView() {
 
                return new SiteLinksView(
+                       new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                        $this->newSiteList(),
                        $this->getSectionEditLinkGeneratorMock(),
                        $this->getEntityLookupMock(),
diff --git a/repo/tests/phpunit/includes/View/SnakHtmlGeneratorTest.php 
b/repo/tests/phpunit/includes/View/SnakHtmlGeneratorTest.php
index aab3938..e4ba4d9 100644
--- a/repo/tests/phpunit/includes/View/SnakHtmlGeneratorTest.php
+++ b/repo/tests/phpunit/includes/View/SnakHtmlGeneratorTest.php
@@ -11,6 +11,8 @@
 use Wikibase\Lib\EntityIdFormatter;
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Repo\View\SnakHtmlGenerator;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\SnakHtmlGenerator
@@ -33,6 +35,7 @@
                $patterns
        ) {
                $snakHtmlGenerator = new SnakHtmlGenerator(
+                       new TemplateFactory( 
TemplateRegistry::getDefaultInstance() ),
                        $snakFormatter,
                        $propertyIdFormatter
                );
diff --git a/repo/tests/phpunit/includes/View/TermBoxViewTest.php 
b/repo/tests/phpunit/includes/View/TermBoxViewTest.php
index 3243686..c639dda 100644
--- a/repo/tests/phpunit/includes/View/TermBoxViewTest.php
+++ b/repo/tests/phpunit/includes/View/TermBoxViewTest.php
@@ -7,6 +7,8 @@
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\Repo\View\TermBoxView;
+use Wikibase\Template\TemplateFactory;
+use Wikibase\TemplateRegistry;
 
 /**
  * @covers Wikibase\Repo\View\TermBoxView
@@ -22,7 +24,8 @@
 
        public function testRenderTermBox() {
                $language = Language::factory( 'qqx' ); // so we can look for 
message keys in the output
-               $view = new TermBoxView( $language );
+               $templateFactory = new TemplateFactory( 
TemplateRegistry::getDefaultInstance() );
+               $view = new TermBoxView( $templateFactory, $language );
 
                $title = $this->getMockBuilder( 'Title' )
                        ->disableOriginalConstructor()

-- 
To view, visit https://gerrit.wikimedia.org/r/180478
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I9e629f4661f1975418db2071a74b92d74bbb5cc5
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <[email protected]>
Gerrit-Reviewer: Adrian Lang <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to