Add webfonts reset functionality to the checkbox
Change-Id: I983d261fa018416c36ad2123b94850986beeca70
This commit is contained in:
@@ -68,9 +68,8 @@
|
|||||||
* @param fontFamily String: font family name
|
* @param fontFamily String: font family name
|
||||||
*/
|
*/
|
||||||
apply : function(fontFamily, $element) {
|
apply : function(fontFamily, $element) {
|
||||||
var fontStack;
|
|
||||||
$element = $element || this.$element;
|
$element = $element || this.$element;
|
||||||
fontStack = this.options.fontStack.slice(0);
|
var fontStack = this.options.fontStack.slice(0);
|
||||||
this.load(fontFamily);
|
this.load(fontFamily);
|
||||||
fontStack.unshift(fontFamily);
|
fontStack.unshift(fontFamily);
|
||||||
$element.css('font-family', fontStack.join() );
|
$element.css('font-family', fontStack.join() );
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
+ '<div class="row"><div class="twelve columns"><h4>Font Settings</h4></div></div>'
|
+ '<div class="row"><div class="twelve columns"><h4>Font Settings</h4></div></div>'
|
||||||
+ '<div class="row">'
|
+ '<div class="row">'
|
||||||
+ '<div class="eleven columns">'
|
+ '<div class="eleven columns">'
|
||||||
+ '<label class="checkbox"><input type="checkbox" checked id="webfonts-enable-checkbox" />'
|
+ '<label class="checkbox"><input type="checkbox" id="webfonts-enable-checkbox" />'
|
||||||
+ '<strong>Download fonts automatically when needed</strong> '
|
+ '<strong>Download fonts automatically when needed</strong> '
|
||||||
+ 'Web fonts will be downloaded when text in special scripts is displayed. '
|
+ 'Web fonts will be downloaded when text in special scripts is displayed. '
|
||||||
+ '<a href="#">More Information</a>'
|
+ '<a href="#">More Information</a>'
|
||||||
@@ -64,17 +64,30 @@
|
|||||||
/**
|
/**
|
||||||
* Render the module into a given target
|
* Render the module into a given target
|
||||||
*/
|
*/
|
||||||
render: function ( ) {
|
render: function () {
|
||||||
this.$parent.$settingsPanel.empty();
|
this.$parent.$settingsPanel.empty();
|
||||||
this.$webfonts = $( 'body' ).data( 'webfonts' );
|
this.$webfonts = $( 'body' ).data( 'webfonts' );
|
||||||
this.$parent.$settingsPanel.append( this.$template );
|
this.$parent.$settingsPanel.append( this.$template );
|
||||||
|
$( 'select.uls-font-select' ).val( );
|
||||||
this.prepareLanguages();
|
this.prepareLanguages();
|
||||||
this.prepareFonts();
|
this.prepareFonts();
|
||||||
|
this.prepareWebfontsCheckbox();
|
||||||
|
|
||||||
this.listen();
|
this.listen();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
prepareWebfontsCheckbox: function () {
|
||||||
|
var enable = this.webfontPreferences.get( 'webfontsEnabled' );
|
||||||
|
// If the user didn't use the checkbox, the preference will be undefined.
|
||||||
|
// The default for now is to enable webfonts if the user didn't select anything.
|
||||||
|
if ( enable === undefined ) {
|
||||||
|
enable = true;
|
||||||
|
}
|
||||||
|
$( '#webfonts-enable-checkbox' ).prop( 'checked', enable );
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare the UI language chooser
|
* Prepare the UI language selector
|
||||||
*/
|
*/
|
||||||
prepareLanguages: function () {
|
prepareLanguages: function () {
|
||||||
var $languages = $( 'div.uls-ui-languages' );
|
var $languages = $( 'div.uls-ui-languages' );
|
||||||
@@ -83,6 +96,7 @@
|
|||||||
var languages = [this.language];
|
var languages = [this.language];
|
||||||
$.merge( languages, previousLanguages);
|
$.merge( languages, previousLanguages);
|
||||||
$.unique( languages );
|
$.unique( languages );
|
||||||
|
|
||||||
for ( var i = 0; i < 3; i++ ) {
|
for ( var i = 0; i < 3; i++ ) {
|
||||||
var language = languages[i];
|
var language = languages[i];
|
||||||
var $button = $( '<button>' )
|
var $button = $( '<button>' )
|
||||||
@@ -125,13 +139,15 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare the font chooser.
|
* Prepare the font selector.
|
||||||
*/
|
*/
|
||||||
prepareFonts: function () {
|
prepareFonts: function () {
|
||||||
var fonts = this.$webfonts.list( this.language );
|
var fonts = this.$webfonts.list( this.language );
|
||||||
var $fontSelector = $( 'select.uls-font-select' );
|
var $fontSelector = $( 'select.uls-font-select' );
|
||||||
|
|
||||||
$fontSelector.find( 'option' ).remove();
|
$fontSelector.find( 'option' ).remove();
|
||||||
var savedFont = this.webfontPreferences.get( this.language );
|
var savedFont = this.webfontPreferences.get( this.language );
|
||||||
|
|
||||||
if( fonts && fonts.length ) {
|
if( fonts && fonts.length ) {
|
||||||
$.each( fonts, function ( key, font ) {
|
$.each( fonts, function ( key, font ) {
|
||||||
var $fontOption = $( "<option>" )
|
var $fontOption = $( "<option>" )
|
||||||
@@ -140,27 +156,42 @@
|
|||||||
$fontOption.attr( 'selected', savedFont === font );
|
$fontOption.attr( 'selected', savedFont === font );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
var $systemFont = $( "<option>" ).val( 'system' ).text( 'System font' );
|
var $systemFont = $( "<option>" ).val( 'system' ).text( 'System font' );
|
||||||
$fontSelector.append( $systemFont );
|
$fontSelector.append( $systemFont );
|
||||||
$systemFont.attr( 'selected', savedFont === 'system' );
|
$systemFont.attr( 'selected', savedFont === 'system' || !savedFont );
|
||||||
var $fontLabel = $( 'label#font-selector' );
|
var $fontLabel = $( 'label#font-selector' );
|
||||||
$fontLabel.text( "Select font for " + $.uls.data.autonym( this.language ) );
|
$fontLabel.text( "Select font for " + $.uls.data.autonym( this.language ) );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
selectedFont: function () {
|
||||||
|
return $( 'select.uls-font-select' ).find( 'option:selected' ).val();
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register general event listeners
|
* Register general event listeners
|
||||||
*/
|
*/
|
||||||
listen: function () {
|
listen: function () {
|
||||||
var that = this;
|
var that = this;
|
||||||
|
|
||||||
$( "div.uls-ui-languages button.button" ).click( function () {
|
$( "div.uls-ui-languages button.button" ).click( function () {
|
||||||
$( "button.button" ).removeClass( "down" );
|
$( "button.button" ).removeClass( "down" );
|
||||||
$( this ).addClass( "down" );
|
$( this ).addClass( "down" );
|
||||||
that.language = $( this ).data( 'language' ) || that.language;
|
that.language = $( this ).data( 'language' ) || that.language;
|
||||||
that.prepareFonts();
|
that.prepareFonts();
|
||||||
} );
|
} );
|
||||||
|
|
||||||
$( '#uls-displaysettings-apply' ).on( 'click', function () {
|
$( '#uls-displaysettings-apply' ).on( 'click', function () {
|
||||||
that.apply();
|
that.apply();
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
$( '#webfonts-enable-checkbox' ).on( 'click', function () {
|
||||||
|
if ( this.checked ) {
|
||||||
|
that.$webfonts.apply( that.selectedFont() );
|
||||||
|
} else {
|
||||||
|
that.$webfonts.reset();
|
||||||
|
}
|
||||||
|
} );
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -195,9 +226,9 @@
|
|||||||
* Handle the apply button press
|
* Handle the apply button press
|
||||||
*/
|
*/
|
||||||
apply: function () {
|
apply: function () {
|
||||||
var that = this;
|
var that = this,
|
||||||
var $fontSelector = $( 'select.uls-font-select' );
|
font = this.selectedFont();
|
||||||
var font = $fontSelector.find( 'option:selected' ).val();
|
|
||||||
// Live font update if current UI language match with language selection
|
// Live font update if current UI language match with language selection
|
||||||
if ( this.language === this.currentLanguage() ) {
|
if ( this.language === this.currentLanguage() ) {
|
||||||
if ( font === 'system' ) {
|
if ( font === 'system' ) {
|
||||||
@@ -206,8 +237,11 @@
|
|||||||
this.$webfonts.apply( font );
|
this.$webfonts.apply( font );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save the preferences
|
// Save the preferences
|
||||||
this.webfontPreferences.set( this.language, font );
|
this.webfontPreferences.set( this.language, font );
|
||||||
|
this.webfontPreferences.set( 'webfontsEnabled',
|
||||||
|
$( '#webfonts-enable-checkbox' ).prop( 'checked' ) ? true : false );
|
||||||
this.webfontPreferences.save( function ( result ) {
|
this.webfontPreferences.save( function ( result ) {
|
||||||
// closure for not losing the scope
|
// closure for not losing the scope
|
||||||
that.onSave( result );
|
that.onSave( result );
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
* @licence MIT License
|
* @licence MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function( $, mw ) {
|
( function( $, mw ) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ULSPreferences = function ( group ) {
|
var ULSPreferences = function ( group ) {
|
||||||
|
|||||||
@@ -18,16 +18,21 @@
|
|||||||
*/
|
*/
|
||||||
( function ( $, mw ) {
|
( function ( $, mw ) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
$( document ).ready( function() {
|
$( document ).ready( function() {
|
||||||
var mediawikiFontRepository = $.webfonts.repository;
|
var mediawikiFontRepository = $.webfonts.repository;
|
||||||
|
|
||||||
mediawikiFontRepository.base = mw.config.get( 'wgExtensionAssetsPath' )
|
mediawikiFontRepository.base = mw.config.get( 'wgExtensionAssetsPath' )
|
||||||
+ '/UniversalLanguageSelector/data/fontrepo/fonts/';
|
+ '/UniversalLanguageSelector/data/fontrepo/fonts/';
|
||||||
|
|
||||||
$( 'body' ).webfonts( {
|
$( 'body' ).webfonts( {
|
||||||
repository: mediawikiFontRepository
|
repository: mediawikiFontRepository
|
||||||
} );
|
} );
|
||||||
|
|
||||||
var $webfonts = $( 'body' ).data( 'webfonts' );
|
var $webfonts = $( 'body' ).data( 'webfonts' );
|
||||||
var webfontPreferences = new $.fn.uls.preferences( 'webfonts' );
|
var webfontPreferences = new $.fn.uls.preferences( 'webfonts' );
|
||||||
var rememberedFont = webfontPreferences.get( mw.config.get( 'wgUserLanguage' ) );
|
var rememberedFont = webfontPreferences.get( mw.config.get( 'wgUserLanguage' ) );
|
||||||
|
|
||||||
if ( rememberedFont === 'system' ) {
|
if ( rememberedFont === 'system' ) {
|
||||||
$webfonts.reset();
|
$webfonts.reset();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user