diff --git a/includes/VectorTemplate.php b/includes/VectorTemplate.php index 8fcba48..dcb6471 100644 --- a/includes/VectorTemplate.php +++ b/includes/VectorTemplate.php @@ -28,12 +28,21 @@ */ class VectorTemplate extends BaseTemplate { + /** @var TemplateParser */ + private $templateParser; + + /** + * @param Config|null $config + */ + public function __construct( Config $config = null ) { + parent::__construct( $config ); + $this->templateParser = new TemplateParser( __DIR__ . '/templates' ); + } + /** * Outputs the entire contents of the HTML page */ public function execute() { - $templateParser = new TemplateParser( __DIR__ . '/templates' ); - $this->data['namespace_urls'] = $this->data['content_navigation']['namespaces']; $this->data['view_urls'] = $this->data['content_navigation']['views']; $this->data['action_urls'] = $this->data['content_navigation']['actions']; @@ -103,12 +112,12 @@ class VectorTemplate extends BaseTemplate {

msg( 'navigation-heading' ) ?>

- renderNavigation( $templateParser, [ 'PERSONAL' ] ); ?> + renderNavigation( [ 'PERSONAL' ] ); ?>
- renderNavigation( $templateParser, [ 'NAMESPACES', 'VARIANTS' ] ); ?> + renderNavigation( [ 'NAMESPACES', 'VARIANTS' ] ); ?>
- renderNavigation( $templateParser, [ 'VIEWS', 'ACTIONS', 'SEARCH' ] ); ?> + renderNavigation( [ 'VIEWS', 'ACTIONS', 'SEARCH' ] ); ?>
@@ -165,7 +174,7 @@ class VectorTemplate extends BaseTemplate { ob_end_clean(); // Prepare and output the HTML response - echo $templateParser->processTemplate( 'index', $params ); + echo $this->templateParser->processTemplate( 'index', $params ); } /** @@ -264,30 +273,29 @@ class VectorTemplate extends BaseTemplate { * Render one or more navigations elements by name, automatically reversed by css * when UI is in RTL mode * - * @param TemplateParser $templateParser * @param array $elements */ - protected function renderNavigation( TemplateParser $templateParser, array $elements ) { + protected function renderNavigation( array $elements ) { // Render elements foreach ( $elements as $name => $element ) { switch ( $element ) { case 'NAMESPACES': - $this->renderNamespacesComponent( $templateParser ); + $this->renderNamespacesComponent(); break; case 'VARIANTS': $this->renderVariantsComponent(); break; case 'VIEWS': - $this->renderViewsComponent( $templateParser ); + $this->renderViewsComponent(); break; case 'ACTIONS': $this->renderActionsComponent(); break; case 'PERSONAL': - $this->renderPersonalComponent( $templateParser ); + $this->renderPersonalComponent(); break; case 'SEARCH': - $this->renderSearchComponent( $templateParser ); + $this->renderSearchComponent(); break; } } @@ -321,10 +329,7 @@ class VectorTemplate extends BaseTemplate { return parent::makeListItem( $key, $item, $options ); } - /** - * @param TemplateParser $templateParser - */ - private function renderNamespacesComponent( TemplateParser $templateParser ) { + private function renderNamespacesComponent() { $props = [ 'tabs-id' => 'p-namespaces', 'empty-portlet' => ( count( $this->data['namespace_urls'] ) == 0 ) ? 'emptyPortlet' : '', @@ -338,7 +343,7 @@ class VectorTemplate extends BaseTemplate { $props[ 'html-items' ] .= $this->makeListItem( $key, $item ); }; - echo $templateParser->processTemplate( 'VectorTabs', $props ); + echo $this->templateParser->processTemplate( 'VectorTabs', $props ); } private function renderVariantsComponent() { @@ -373,10 +378,7 @@ class VectorTemplate extends BaseTemplate { 'p-views', 'empty-portlet' => ( count( $this->data['view_urls'] ) == 0 ) ? 'emptyPortlet' : '', @@ -392,7 +394,7 @@ class VectorTemplate extends BaseTemplate { ] ); }; - echo $templateParser->processTemplate( 'VectorTabs', $props ); + echo $this->templateParser->processTemplate( 'VectorTabs', $props ); } private function renderActionsComponent() { @@ -417,10 +419,7 @@ class VectorTemplate extends BaseTemplate { getPersonalTools(); $props = [ 'empty-portlet' => ( count( $this->data['personal_urls'] ) == 0 ) ? 'emptyPortlet' : '', @@ -449,13 +448,10 @@ class VectorTemplate extends BaseTemplate { $props['html-personal-tools'] .= $this->makeListItem( $key, $item ); } - echo $templateParser->processTemplate( 'PersonalMenu', $props ); + echo $this->templateParser->processTemplate( 'PersonalMenu', $props ); } - /** - * @param TemplateParser $templateParser - */ - private function renderSearchComponent( TemplateParser $templateParser ) { + private function renderSearchComponent() { $props = [ 'searchHeaderAttrsHTML' => $this->data[ 'userlangattributes' ] ?? '', 'searchActionURL' => $this->data[ 'wgScript' ] ?? '', @@ -472,6 +468,6 @@ class VectorTemplate extends BaseTemplate { ), 'searchInputLabel' => $this->getMsg( 'search' ) ]; - echo $templateParser->processTemplate( 'SearchBox', $props ); + echo $this->templateParser->processTemplate( 'SearchBox', $props ); } }