diff --git a/includes/VectorTemplate.php b/includes/VectorTemplate.php
index f587c371b..737e1026d 100644
--- a/includes/VectorTemplate.php
+++ b/includes/VectorTemplate.php
@@ -27,10 +27,9 @@
* @ingroup Skins
*/
class VectorTemplate extends BaseTemplate {
- /* Functions */
/**
- * Outputs the entire contents of the (X)HTML page
+ * Outputs the entire contents of the HTML page
*/
public function execute() {
$this->data['namespace_urls'] = $this->data['content_navigation']['namespaces'];
@@ -49,102 +48,55 @@ class VectorTemplate extends BaseTemplate {
unset( $this->data['action_urls'][$mode] );
}
}
- $this->data['pageLanguage'] =
- $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode();
- // Output HTML Page
- $this->html( 'headelement' );
- ?>
-
-
- data['sitenotice'] ) {
- echo Html::rawElement( 'div',
- [
- 'id' => 'siteNotice',
- 'class' => 'mw-body-content',
- ],
- // Raw HTML
- $this->get( 'sitenotice' )
- );
- }
- echo $this->getIndicators();
+ // Naming conventions for Mustache parameters:
+ // - Prefix "is" for boolean values.
+ // - Prefix "msg-" for interface messages.
+ // - Prefix "page-" for data relating to the current page (e.g. Title, WikiPage, or OutputPage).
+ // - Prefix "html-" for raw HTML (in front of other keys, if applicable).
+ // - Conditional values are null if absent.
+ $params = [
+ 'html-headelement' => $this->get( 'headelement', '' ),
+ 'html-sitenotice' => $this->get( 'sitenotice', null ),
+ 'html-indicators' => $this->getIndicators(),
+ 'page-langcode' => $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode(),
+ 'page-isarticle' => (bool)$this->data['isarticle'],
+
// Loose comparison with '!=' is intentional, to catch null and false too, but not '0'
- if ( $this->data['title'] != '' ) {
- echo Html::rawElement( 'h1',
- [
- 'id' => 'firstHeading',
- 'class' => 'firstHeading',
- 'lang' => $this->get( 'pageLanguage' ),
- ],
- // Raw HTML
- $this->get( 'title' )
- );
- }
+ 'html-title' => ( $this->data['title'] != '' ? $this->get( 'title' ) : null ),
- $this->html( 'prebodyhtml' );
- ?>
-
- data['isarticle'] ) {
- echo Html::element( 'div',
- [
- 'id' => 'siteSub',
- 'class' => 'noprint',
- ],
- $this->getMsg( 'tagline' )->text()
- );
- }
- ?>
-
html( 'userlangattributes' ) ?>>html( 'subtitle' )
- ?>
- data['undelete'] ) {
- echo Html::rawElement( 'div',
- [ 'id' => 'contentSub2' ],
- // Raw HTML
- $this->get( 'undelete' )
- );
- }
- if ( $this->data['newtalk'] ) {
- echo Html::rawElement( 'div',
- [ 'class' => 'usermessage' ],
- // Raw HTML
- $this->get( 'newtalk' )
- );
- }
- // Keep this empty `div` for compatibility with gadgets and user scripts
- // using this place to insert extra elements before.
- echo Html::element( 'div', [ 'id' => 'jump-to-nav' ] );
- ?>
-
msg( 'vector-jumptonavigation' ) ?>
-
msg( 'vector-jumptosearch' ) ?>
- html( 'bodycontent' );
+ 'html-prebodyhtml' => $this->get( 'prebodyhtml', '' ),
+ 'msg-tagline' => $this->getMsg( 'tagline' )->text(),
+ // TODO: mediawiki/SkinTemplate should expose langCode and langDir properly.
+ 'html-userlangattributes' => $this->get( 'userlangattributes', '' ),
+ // From OutputPage::getSubtitle()
+ 'html-subtitle' => $this->get( 'subtitle', '' ),
- if ( $this->data['printfooter'] ) {
- ?>
-
- $this->get( 'undelete', null ) ?: null,
- if ( $this->data['catlinks'] ) {
- $this->html( 'catlinks' );
- }
+ // From Skin::getNewtalks(). Always returns string, cast to null if empty.
+ 'html-newtalk' => $this->get( 'newtalk', '' ) ?: null,
- if ( $this->data['dataAfterContent'] ) {
- $this->html( 'dataAfterContent' );
- }
- ?>
-
- html( 'debughtml' ); ?>
-
-
+ 'msg-jumptonavigation' => $this->getMsg( 'vector-jumptonavigation' )->text(),
+ 'msg-jumptosearch' => $this->getMsg( 'vector-jumptosearch' )->text(),
+
+ // Result of OutputPage::addHTML calls
+ 'html-bodycontent' => $this->get( 'bodycontent' ),
+
+ 'html-printfooter' => $this->get( 'printfooter', null ),
+ 'html-catlinks' => $this->get( 'catlinks', '' ),
+ 'html-dataAfterContent' => $this->get( 'dataAfterContent', '' ),
+ // From MWDebug::getHTMLDebugLog (when $wgShowDebug is enabled)
+ 'html-debuglog' => $this->get( 'debughtml', '' ),
+ // From BaseTemplate::getTrail (handles bottom JavaScript)
+ 'html-printtail' => $this->getTrail(),
+ ];
+
+ // TODO: Convert the rest to Mustache
+ ob_start();
+ ?>