35 $this->data[
'namespace_urls'] = $this->data[
'content_navigation'][
'namespaces'];
36 $this->data[
'view_urls'] = $this->data[
'content_navigation'][
'views'];
37 $this->data[
'action_urls'] = $this->data[
'content_navigation'][
'actions'];
38 $this->data[
'variant_urls'] = $this->data[
'content_navigation'][
'variants'];
41 if ( $this->config->get(
'VectorUseIconWatch' ) ) {
42 $mode = $this->
getSkin()->getUser()->isWatched( $this->
getSkin()->getRelevantTitle() )
46 if ( isset( $this->data[
'action_urls'][$mode] ) ) {
47 $this->data[
'view_urls'][$mode] = $this->data[
'action_urls'][$mode];
48 unset( $this->data[
'action_urls'][$mode] );
59 'html-headelement' => $this->
get(
'headelement',
'' ),
60 'html-sitenotice' => $this->
get(
'sitenotice',
null ),
62 'page-langcode' => $this->
getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode(),
63 'page-isarticle' => (bool)$this->data[
'isarticle'],
67 'html-title' => $this->
get(
'title',
'' ),
69 'html-prebodyhtml' => $this->
get(
'prebodyhtml',
'' ),
70 'msg-tagline' => $this->
getMsg(
'tagline' )->text(),
72 'html-userlangattributes' => $this->
get(
'userlangattributes',
'' ),
74 'html-subtitle' => $this->
get(
'subtitle',
'' ),
78 'html-undelete' => $this->
get(
'undelete', null ) ?:
null,
81 'html-newtalk' => $this->
get(
'newtalk',
'' ) ?:
null,
83 'msg-jumptonavigation' => $this->
getMsg(
'vector-jumptonavigation' )->text(),
84 'msg-jumptosearch' => $this->
getMsg(
'vector-jumptosearch' )->text(),
87 'html-bodycontent' => $this->
get(
'bodycontent' ),
89 'html-printfooter' => $this->
get(
'printfooter',
null ),
90 'html-catlinks' => $this->
get(
'catlinks',
'' ),
91 'html-dataAfterContent' => $this->
get(
'dataAfterContent',
'' ),
93 'html-debuglog' => $this->
get(
'debughtml',
'' ),
95 'html-printtail' => $this->
getTrail(),
101 <div
id=
"mw-navigation">
102 <h2><?php $this->
msg(
'navigation-heading' ) ?></h2>
105 <div
id=
"left-navigation">
108 <div
id=
"right-navigation">
113 <div
id=
"p-logo" role=
"banner"><a
class=
"mw-wiki-logo" href=
"<?php
114 echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] )
121 <?php Hooks::run(
'VectorBeforeFooter' ); ?>
122 <div
id=
"footer" role=
"contentinfo"<?php $this->
html(
'userlangattributes' ) ?>>
126 <ul
id=
"footer-<?php echo $category ?>">
128 foreach ( $links as $link ) {
130 <li
id=
"footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->
html( $link ) ?></li>
139 if ( count( $footericons ) > 0 ) {
141 <ul
id=
"footer-icons" class=
"noprint">
143 foreach ( $footericons as $blockName => $footerIcons ) {
145 <li
id=
"footer-<?php echo htmlspecialchars( $blockName ); ?>ico">
147 foreach ( $footerIcons as $icon ) {
148 echo $this->
getSkin()->makeFooterIcon( $icon );
159 <div style=
"clear: both;"></div>
162 $params[
'html-unported'] = ob_get_contents();
166 $templates =
new TemplateParser( __DIR__ .
'/templates' );
167 echo $templates->processTemplate(
'index', $params );
177 if ( !isset( $portals[
'TOOLBOX'] ) ) {
178 $portals[
'TOOLBOX'] =
true;
180 if ( !isset( $portals[
'LANGUAGES'] ) ) {
181 $portals[
'LANGUAGES'] =
true;
184 foreach ( $portals as $name =>
$content ) {
190 $name = (string)$name;
197 Hooks::run(
'VectorAfterToolbox' );
200 if ( $this->data[
'language_urls'] !==
false ) {
201 $this->
renderPortal(
'lang', $this->data[
'language_urls'],
'otherlanguages' );
218 if ( $msg ===
null ) {
221 $msgObj = $this->
getMsg( $msg );
222 $labelId = Sanitizer::escapeIdForAttribute(
"p-$name-label" );
224 <div
class=
"portal" role=
"navigation" id=
"<?php
225 echo htmlspecialchars( Sanitizer::escapeIdForAttribute( "p-$name
" ) )
228 ?> aria-labelledby=
"<?php echo htmlspecialchars( $labelId ) ?>">
229 <h3<?php $this->
html(
'userlangattributes' ) ?>
id=
"<?php echo htmlspecialchars( $labelId )
231 echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg );
239 foreach (
$content as $key => $val ) {
242 if ( $hook !==
null ) {
245 Hooks::run( $hook, [ &$skin,
true ] );
270 foreach ( $elements as $name => $element ) {
271 switch ( $element ) {
274 <div
id=
"p-namespaces" role=
"navigation" class=
"vectorTabs<?php
275 if ( count( $this->data['namespace_urls'] ) == 0 ) {
276 echo ' emptyPortlet';
278 ?>" aria-labelledby=
"p-namespaces-label">
279 <h3
id=
"p-namespaces-label"><?php $this->
msg(
'namespaces' ) ?></h3>
280 <ul<?php $this->
html(
'userlangattributes' ) ?>>
282 foreach ( $this->data[
'namespace_urls'] as $key => $item ) {
284 'vector-wrap' =>
true,
294 <div
id=
"p-variants" role=
"navigation" class=
"vectorMenu<?php
295 if ( count( $this->data['variant_urls'] ) == 0 ) {
296 echo ' emptyPortlet';
298 ?>" aria-labelledby=
"p-variants-label">
301 $variantLabel = $this->
getMsg(
'variants' )->text();
302 foreach ( $this->data[
'variant_urls'] as $item ) {
303 if ( isset( $item[
'class'] ) && stripos( $item[
'class'],
'selected' ) !==
false ) {
304 $variantLabel = $item[
'text'];
309 <input type=
"checkbox" class=
"vectorMenuCheckbox" aria-labelledby=
"p-variants-label" />
310 <h3
id=
"p-variants-label">
311 <span><?php echo htmlspecialchars( $variantLabel ) ?></span>
315 foreach ( $this->data[
'variant_urls'] as $key => $item ) {
325 <div
id=
"p-views" role=
"navigation" class=
"vectorTabs<?php
326 if ( count( $this->data['view_urls'] ) == 0 ) {
327 echo ' emptyPortlet';
329 ?>" aria-labelledby=
"p-views-label">
330 <h3
id=
"p-views-label"><?php $this->
msg(
'views' ) ?></h3>
331 <ul<?php $this->
html(
'userlangattributes' ) ?>>
333 foreach ( $this->data[
'view_urls'] as $key => $item ) {
335 'vector-wrap' =>
true,
336 'vector-collapsible' =>
true,
346 <div
id=
"p-cactions" role=
"navigation" class=
"vectorMenu<?php
347 if ( count( $this->data['action_urls'] ) == 0 ) {
348 echo ' emptyPortlet';
350 ?>" aria-labelledby=
"p-cactions-label">
351 <input type=
"checkbox" class=
"vectorMenuCheckbox" aria-labelledby=
"p-cactions-label" />
352 <h3
id=
"p-cactions-label"><span><?php
353 $this->
msg(
'vector-more-actions' )
355 <ul
class=
"menu"<?php $this->
html(
'userlangattributes' ) ?>>
357 foreach ( $this->data[
'action_urls'] as $key => $item ) {
367 <div
id=
"p-personal" role=
"navigation"<?php
368 if ( count( $this->data[
'personal_urls'] ) == 0 ) {
369 echo
' class="emptyPortlet"';
371 ?> aria-labelledby=
"p-personal-label">
372 <h3
id=
"p-personal-label"><?php $this->
msg(
'personaltools' ) ?></h3>
373 <ul<?php $this->
html(
'userlangattributes' ) ?>>
378 User::groupHasPermission(
'*',
'edit' )
382 [
'id' =>
'pt-anonuserpage' ],
390 if ( array_key_exists(
'uls', $personalTools ) ) {
391 $langSelector = $this->
makeListItem(
'uls', $personalTools[
'uls' ] );
392 unset( $personalTools[
'uls' ] );
397 foreach ( $personalTools as $key => $item ) {
407 <div
id=
"p-search" role=
"search">
408 <h3<?php $this->
html(
'userlangattributes' ) ?>>
409 <label
for=
"searchInput"><?php $this->
msg(
'search' ) ?></label>
411 <form action=
"<?php $this->text( 'wgScript' ) ?>" id=
"searchform">
412 <div<?php echo $this->config->get(
'VectorUseSimpleSearch' ) ?
' id="simpleSearch"' :
'' ?>>
415 echo Html::hidden(
'title', $this->
get(
'searchtitle' ) );
430 [
'id' =>
'mw-searchButton',
'class' =>
'searchButton mw-fallbackSearchButton' ]
434 [
'id' =>
'searchButton',
'class' =>
'searchButton' ]
450 public function makeLink( $key, $item, $options = [] ) {
451 $html = parent::makeLink( $key, $item, $options );
453 if ( isset( $options[
'vector-wrap'] ) && $options[
'vector-wrap'] ) {
454 $html = Html::rawElement(
'span', [], $html );
465 $this->config->get(
'VectorUseIconWatch' )
466 && ( $key ===
'watch' || $key ===
'unwatch' )
468 $item[
'class'] = rtrim(
'icon ' . $item[
'class'],
' ' );
469 $item[
'primary'] =
true;
474 isset( $options[
'vector-collapsible'] ) && $options[
'vector-collapsible'] ) {
475 $item[
'class'] = rtrim(
'collapsible ' . $item[
'class'],
' ' );
478 return parent::makeListItem( $key, $item, $options );
New base template for a skin's template extended from QuickTemplate this class features helper method...
getFooterLinks( $option=null)
Returns an array of footerlinks trimmed down to only those footer links that are valid.
makeSearchButton( $mode, $attrs=[])
renderAfterPortlet( $name)
getToolbox()
Create an array of common toolbox items from the data in the quicktemplate stored by SkinTemplate.
getTrail()
Get the basic end-page trail including bottomscripts, reporttime, and debug stuff.
getPersonalTools()
Create an array of personal tools items from the data in the quicktemplate stored by SkinTemplate.
getFooterIcons( $option=null)
Returns an array of footer icons filtered down by options relevant to how the skin wishes to display ...
getMsg( $name,... $params)
Get a Message object with its context set.
getIndicators()
Get the suggested HTML for page status indicators: icons (or short text snippets) usually displayed i...
makeSearchInput( $attrs=[])
static tooltip( $name, $options=null)
Returns raw bits of HTML, use titleAttrib()
static tooltipAndAccesskeyAttribs( $name, array $msgParams=[], $options=null)
Returns the attributes for the tooltip and access key.
getSkin()
Get the Skin object related to this object.
QuickTemplate subclass for Vector.
makeLink( $key, $item, $options=[])
Makes a link, usually used by makeListItem to generate a link for an item in a list used in navigatio...
makeListItem( $key, $item, $options=[])
Generates a list item for a navigation, portlet, portal, sidebar... list.If you want something other ...
renderNavigation(array $elements)
Render one or more navigations elements by name, automatically reversed by css when UI is in RTL mode...
renderPortals(array $portals)
Render a series of portals.
execute()
Outputs the entire contents of the HTML page.
renderPortal( $name, $content, $msg=null, $hook=null)