Source footer data from SkinMustache
SkinMustache now provides this data in a slightly modified form. Use it. Change-Id: I060a8acfab6e7e2eea14e84fd4a5cad23677390b
This commit is contained in:
parent
ec27126c93
commit
4fad68ed0b
|
@ -133,7 +133,6 @@ class SkinVector extends SkinMustache {
|
||||||
'html-newtalk' => $newTalksHtml ? '<div class="usermessage">' . $newTalksHtml . '</div>' : '',
|
'html-newtalk' => $newTalksHtml ? '<div class="usermessage">' . $newTalksHtml . '</div>' : '',
|
||||||
|
|
||||||
'html-categories' => $skin->getCategories(),
|
'html-categories' => $skin->getCategories(),
|
||||||
'data-footer' => $this->getFooterData(),
|
|
||||||
|
|
||||||
'is-search-in-header' => $isSearchInHeader,
|
'is-search-in-header' => $isSearchInHeader,
|
||||||
'input-location' => $this->getSearchBoxInputLocation( $isSearchInHeader ),
|
'input-location' => $this->getSearchBoxInputLocation( $isSearchInHeader ),
|
||||||
|
@ -175,73 +174,6 @@ class SkinVector extends SkinMustache {
|
||||||
: Constants::SEARCH_BOX_INPUT_LOCATION_DEFAULT;
|
: Constants::SEARCH_BOX_INPUT_LOCATION_DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get rows that make up the footer
|
|
||||||
* @return array for use in Mustache template describing the footer elements.
|
|
||||||
*/
|
|
||||||
private function getFooterData() : array {
|
|
||||||
$skin = $this;
|
|
||||||
$footerRows = [];
|
|
||||||
foreach ( $this->getFooterLinks() as $category => $links ) {
|
|
||||||
$items = [];
|
|
||||||
$rowId = "footer-$category";
|
|
||||||
|
|
||||||
foreach ( $links as $key => $link ) {
|
|
||||||
// Link may be null. If so don't include it.
|
|
||||||
if ( $link ) {
|
|
||||||
$items[] = [
|
|
||||||
'id' => "$rowId-$key",
|
|
||||||
'html' => $link,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$footerRows[] = [
|
|
||||||
'id' => $rowId,
|
|
||||||
'className' => null,
|
|
||||||
'array-items' => $items
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
// If footer icons are enabled append to the end of the rows
|
|
||||||
$footerIcons = $this->getFooterIcons();
|
|
||||||
|
|
||||||
if ( count( $footerIcons ) > 0 ) {
|
|
||||||
$items = [];
|
|
||||||
foreach ( $footerIcons as $blockName => $blockIcons ) {
|
|
||||||
$html = '';
|
|
||||||
foreach ( $blockIcons as $icon ) {
|
|
||||||
// Only output icons which have an image.
|
|
||||||
// For historic reasons this mimics the `icononly` option
|
|
||||||
// for BaseTemplate::getFooterIcons.
|
|
||||||
if ( is_string( $icon ) || isset( $icon['src'] ) ) {
|
|
||||||
$html .= $skin->makeFooterIcon( $icon );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// For historic reasons this mimics the `icononly` option
|
|
||||||
// for BaseTemplate::getFooterIcons. Empty rows should not be output.
|
|
||||||
if ( $html ) {
|
|
||||||
$items[] = [
|
|
||||||
'id' => 'footer-' . htmlspecialchars( $blockName ) . 'ico',
|
|
||||||
'html' => $html,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Empty rows should not be output.
|
|
||||||
// This is how Vector has behaved historically but we can revisit.
|
|
||||||
if ( count( $items ) > 0 ) {
|
|
||||||
$footerRows[] = [
|
|
||||||
'id' => 'footer-icons',
|
|
||||||
'className' => 'noprint',
|
|
||||||
'array-items' => $items,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return [ 'array-footer-rows' => $footerRows ];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines wheather the initial state of sidebar is visible on not
|
* Determines wheather the initial state of sidebar is visible on not
|
||||||
*
|
*
|
||||||
|
|
|
@ -10,17 +10,15 @@
|
||||||
@prop footerItem[] array-items
|
@prop footerItem[] array-items
|
||||||
|
|
||||||
string|null html-user-language-attributes a string of attribute HTML
|
string|null html-user-language-attributes a string of attribute HTML
|
||||||
footerRow[] array-footer-rows iterable list of footer rows
|
footerRow data-info the info row
|
||||||
|
footerRow data-places the places row
|
||||||
|
footerRow data-icons the icons row
|
||||||
}}
|
}}
|
||||||
{{! `role` is unnecessary but kept to support selectors in any gadgets or user styles and
|
{{! `role` is unnecessary but kept to support selectors in any gadgets or user styles and
|
||||||
to mitigate a VoiceOver bug. }}
|
to mitigate a VoiceOver bug. }}
|
||||||
<footer id="footer" class="mw-footer" role="contentinfo" {{{html-user-language-attributes}}}>
|
<footer id="footer" class="mw-footer" role="contentinfo" {{{html-user-language-attributes}}}>
|
||||||
{{#array-footer-rows}}
|
{{#data-info}}{{>Footer__row}}{{/data-info}}
|
||||||
<ul id="{{id}}" {{#className}}class="{{.}}"{{/className}}>
|
{{#data-places}}{{>Footer__row}}{{/data-places}}
|
||||||
{{#array-items}}
|
{{#data-icons}}{{>Footer__row}}{{/data-icons}}
|
||||||
<li id="{{id}}">{{{html}}}</li>
|
|
||||||
{{/array-items}}
|
|
||||||
</ul>
|
|
||||||
{{/array-footer-rows}}
|
|
||||||
<div style="clear: both;"></div>
|
<div style="clear: both;"></div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<ul id="{{id}}" {{#className}}class="{{.}}"{{/className}}>
|
||||||
|
{{#array-items}}
|
||||||
|
<li id="{{id}}">{{{html}}}</li>
|
||||||
|
{{/array-items}}
|
||||||
|
</ul>
|
|
@ -3,8 +3,8 @@
|
||||||
import { htmlUserLanguageAttributes } from './utils';
|
import { htmlUserLanguageAttributes } from './utils';
|
||||||
import footerTemplate from '!!raw-loader!../includes/templates/Footer.mustache';
|
import footerTemplate from '!!raw-loader!../includes/templates/Footer.mustache';
|
||||||
|
|
||||||
const FOOTER_ROWS = [
|
const
|
||||||
{
|
FOOTER_INFO = {
|
||||||
id: 'footer-info',
|
id: 'footer-info',
|
||||||
'array-items': [
|
'array-items': [
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ additional terms may apply. See <a href="https://foundation.wikimedia.org/wiki/S
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
FOOTER_PLACES = {
|
||||||
id: 'footer-places',
|
id: 'footer-places',
|
||||||
'array-items': [
|
'array-items': [
|
||||||
{
|
{
|
||||||
|
@ -56,7 +56,7 @@ additional terms may apply. See <a href="https://foundation.wikimedia.org/wiki/S
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
FOOTER_ICONS = {
|
||||||
id: 'footer-icons',
|
id: 'footer-icons',
|
||||||
'array-items': [
|
'array-items': [
|
||||||
{
|
{
|
||||||
|
@ -68,12 +68,13 @@ additional terms may apply. See <a href="https://foundation.wikimedia.org/wiki/S
|
||||||
html: `<a href="https://www.mediawiki.org/"><img src="https://wikipedia.org/static/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="https://wikipedia.org/static/images/poweredby_mediawiki_132x47.png 1.5x, https://wikipedia.org/static/images/poweredby_mediawiki_176x62.png 2x" width="88" height="31"/></a>`
|
html: `<a href="https://www.mediawiki.org/"><img src="https://wikipedia.org/static/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="https://wikipedia.org/static/images/poweredby_mediawiki_132x47.png 1.5x, https://wikipedia.org/static/images/poweredby_mediawiki_176x62.png 2x" width="88" height="31"/></a>`
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
};
|
||||||
];
|
|
||||||
|
|
||||||
export { footerTemplate };
|
export { footerTemplate };
|
||||||
|
|
||||||
export const FOOTER_TEMPLATE_DATA = {
|
export const FOOTER_TEMPLATE_DATA = {
|
||||||
'html-user-language-attributes': htmlUserLanguageAttributes,
|
'html-user-language-attributes': htmlUserLanguageAttributes,
|
||||||
'array-footer-rows': FOOTER_ROWS
|
'data-info': FOOTER_INFO,
|
||||||
|
'data-places': FOOTER_PLACES,
|
||||||
|
'data-icons': FOOTER_ICONS
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue