(bug 39531) Only show the fonts dropdown if there are fonts

The Display settings template is wrapped in a new <div>
to allow easy $template.find() queries.

This change requires a change in jquery.webfonts, that makes
the lib function return an empty list when there are no fonts:
https://github.com/wikimedia/jquery.webfonts/pull/1

Change-Id: Ief5a920439df340360a44ca95de2a7f070b96d5d
This commit is contained in:
Amir E. Aharoni
2012-10-08 21:30:42 +02:00
parent 1276a35f31
commit 0385ed8bfb

View File

@@ -20,7 +20,8 @@
( function ( $, mw, undefined ) { ( function ( $, mw, undefined ) {
"use strict"; "use strict";
var template = '<div class="row">' // Top "Display settings" title var template = '<div class="uls-display-settings">'
+ '<div class="row">' // Top "Display settings" title
+ '<div class="twelve columns">' + '<div class="twelve columns">'
+ '<h3 data-i18n="ext-uls-display-settings-title"></h3>' + '<h3 data-i18n="ext-uls-display-settings-title"></h3>'
+ '</div>' + '</div>'
@@ -82,6 +83,7 @@
+ '<button class="button uls-settings-close" data-i18n="ext-uls-language-settings-cancel"></button>' + '<button class="button uls-settings-close" data-i18n="ext-uls-language-settings-cancel"></button>'
+ '<button id="uls-displaysettings-apply" class="active blue button" data-i18n="ext-uls-language-settings-apply"></button>' + '<button id="uls-displaysettings-apply" class="active blue button" data-i18n="ext-uls-language-settings-apply"></button>'
+ '</div>' + '</div>'
+ '</div>'
+ '</div>'; // FIXME i18n and too much hardcoding. + '</div>'; // FIXME i18n and too much hardcoding.
var DisplaySettings = function ( $parent ) { var DisplaySettings = function ( $parent ) {
@@ -275,13 +277,15 @@
* TODO Can this be merged with prepareContentLanguages? * TODO Can this be merged with prepareContentLanguages?
*/ */
prepareUIFonts: function () { prepareUIFonts: function () {
if ( this.uiLanguage === this.contentLanguage ) { var fonts = this.$webfonts.list( this.uiLanguage ),
$( 'div.uls-ui-fonts' ).hide(); $uiFonts = this.$template.find( 'div.uls-ui-fonts' );
if ( this.uiLanguage === this.contentLanguage || fonts.length === 0 ) {
$uiFonts.hide();
return; return;
} else { } else {
$( 'div.uls-ui-fonts' ).show(); $uiFonts.show();
} }
var fonts = this.$webfonts.list( this.uiLanguage );
var $fontSelector = this.$template.find( 'select#ui-font-selector' ); var $fontSelector = this.$template.find( 'select#ui-font-selector' );
$fontSelector.find( 'option' ).remove(); $fontSelector.find( 'option' ).remove();
@@ -317,7 +321,16 @@
* Prepare the font selector for UI language. * Prepare the font selector for UI language.
*/ */
prepareContentFonts: function () { prepareContentFonts: function () {
var fonts = this.$webfonts.list( this.contentLanguage ); var fonts = this.$webfonts.list( this.contentLanguage ),
$contentFonts = this.$template.find( 'div.uls-content-fonts' );
if ( fonts.length === 0 ) {
$contentFonts.hide();
return;
} else {
$contentFonts.show();
}
var $fontSelector = this.$template.find( '#content-font-selector' ); var $fontSelector = this.$template.find( '#content-font-selector' );
$fontSelector.find( 'option' ).remove(); $fontSelector.find( 'option' ).remove();