Merge "Fix the webfonts preferences"

This commit is contained in:
Siebrand
2013-01-02 15:21:19 +00:00
committed by Gerrit Code Review
2 changed files with 77 additions and 56 deletions

View File

@@ -293,7 +293,11 @@
// Get the language code from the right property - // Get the language code from the right property -
// uiLanguage or contentLanguage // uiLanguage or contentLanguage
language = this[ target + 'Language' ]; language = this[ target + 'Language' ];
fonts = this.$webfonts.list( language ); if ( this.isWebFontsEnabled() ) {
fonts = this.$webfonts.list( language );
} else {
fonts = [];
}
// Possible classes: // Possible classes:
// uls-ui-fonts // uls-ui-fonts
// uls-content-fonts // uls-content-fonts
@@ -425,11 +429,19 @@
if ( this.checked ) { if ( this.checked ) {
mw.webfonts.preferences.enable(); mw.webfonts.preferences.enable();
$contentFontSelector.prop( 'disabled', false ); mw.webfonts.setup();
that.$webfonts = $( 'body' ).data( 'webfonts' );
$contentFontSelector.removeAttr( 'disabled' );
$uiFontSelector.prop( 'disabled', false ); $uiFontSelector.prop( 'disabled', false );
displaySettings.prepareContentFonts();
displaySettings.prepareUIFonts();
displaySettings.i18n();
displaySettings.$webfonts.apply( $uiFontSelector.find( 'option:selected' ) ); displaySettings.$webfonts.apply( $uiFontSelector.find( 'option:selected' ) );
displaySettings.$webfonts.refresh();
} else { } else {
mw.webfonts.preferences.disable(); mw.webfonts.preferences.disable();
mw.webfonts.preferences.setFont( that.uiLanguage, 'system' );
that.$webfonts.refresh();
$contentFontSelector.prop( 'disabled', true ); $contentFontSelector.prop( 'disabled', true );
$uiFontSelector.prop( 'disabled', true ); $uiFontSelector.prop( 'disabled', true );
displaySettings.$webfonts.reset(); displaySettings.$webfonts.reset();

View File

@@ -18,80 +18,64 @@
*/ */
( function ( $, mw, document, undefined ) { ( function ( $, mw, document, undefined ) {
'use strict'; 'use strict';
var mediawikiFontRepository, ulsPreferences;
$( document ).ready( function () { mw.webfonts = mw.webfonts || {};
var mediawikiFontRepository, ulsPreferences; ulsPreferences = mw.uls.preferences();
mw.webfonts.preferences = {
registry: {
'fonts': {},
'webfonts-enabled': true
},
mediawikiFontRepository = $.webfonts.repository; isEnabled: function () {
ulsPreferences = mw.uls.preferences(); return this.registry['webfonts-enabled'];
mediawikiFontRepository.base = mw.config.get( 'wgExtensionAssetsPath' ) },
+ '/UniversalLanguageSelector/data/fontrepo/fonts/';
// MediaWiki specific overrides for jquery.webfonts enable: function () {
$.extend( $.fn.webfonts.defaults, { this.registry['webfonts-enabled'] = true;
repository: mediawikiFontRepository, },
fontStack: new Array( $( 'body' ).css( 'font-family' ) )
} );
mw.webfonts = mw.webfonts || {}; disable: function () {
this.registry['webfonts-enabled'] = false;
},
mw.webfonts.preferences = { setFont: function ( language, font ) {
registry: { this.registry.fonts[language] = font;
'fonts': {}, },
'webfonts-enabled': true
},
isEnabled: function () { getFont: function ( language ) {
return this.registry['webfonts-enabled']; return this.registry.fonts[language];
}, },
enable: function () { save: function ( callback ) {
this.registry['webfonts-enabled'] = true; ulsPreferences.set( 'webfonts', this.registry );
}, ulsPreferences.save( callback );
},
disable: function () { load: function () {
this.registry['webfonts-enabled'] = false; mw.webfonts.preferences.registry = $.extend( this.registry,
}, ulsPreferences.get( 'webfonts' ) );
}
};
setFont: function ( language, font ) { mediawikiFontRepository = $.webfonts.repository;
this.registry.fonts[language] = font; mediawikiFontRepository.base = mw.config.get( 'wgExtensionAssetsPath' )
}, + '/UniversalLanguageSelector/data/fontrepo/fonts/';
getFont: function ( language ) {
return this.registry.fonts[language];
},
save: function ( callback ) {
ulsPreferences.set( 'webfonts', this.registry );
ulsPreferences.save( callback );
},
load: function () {
mw.webfonts.preferences.registry = $.extend( this.registry,
ulsPreferences.get( 'webfonts' ) );
}
};
mw.webfonts.preferences.load();
mw.webfonts.setup = function () {
// Initialize webfonts // Initialize webfonts
$( 'body' ).webfonts( { $( 'body' ).webfonts( {
fontSelector: function ( repository, language ) { fontSelector: function ( repository, language ) {
var font, enabled; var font;
font = mw.webfonts.preferences.getFont( language ); font = mw.webfonts.preferences.getFont( language );
enabled = mw.webfonts.preferences.isEnabled();
// If the user didn't set anything, the preference will be undefined.
// The default for now is to enable webfonts if the user didn't select anything.
if ( enabled === undefined ) {
enabled = true;
}
if ( !font ) { if ( !font ) {
font = repository.defaultFont( language ); font = repository.defaultFont( language );
} }
if ( font === 'system' || !enabled ) { if ( font === 'system' ) {
font = null; font = null;
} }
@@ -107,5 +91,30 @@
return $.fn.webfonts.defaults.exclude; return $.fn.webfonts.defaults.exclude;
}() ) }() )
} ); } );
};
$( document ).ready( function () {
var webfontsEnabled;
// MediaWiki specific overrides for jquery.webfonts
$.extend( $.fn.webfonts.defaults, {
repository: mediawikiFontRepository,
fontStack: new Array( $( 'body' ).css( 'font-family' ) )
} );
mw.webfonts.preferences.load();
webfontsEnabled = mw.webfonts.preferences.isEnabled();
// If the user didn't set anything, the preference will be undefined.
// The default for now is to enable webfonts if the user didn't select anything.
if ( webfontsEnabled === undefined ) {
webfontsEnabled = true;
}
if ( webfontsEnabled ) {
mw.webfonts.setup();
}
} ); } );
}( jQuery, mediaWiki, document ) ); }( jQuery, mediaWiki, document ) );