From 3fbbf05c26a3f69c9e3904c52dd47b9d437b795b Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Wed, 18 Sep 2013 11:28:08 -0700 Subject: [PATCH] Optionally exclude elements from applying webfonts * Updates jquery.webfonts from upstream * Introduces wgULSNoWebfontsSelectors configuration variable. It takes an array of jquery selector to which webfonts will not be applied if defined. Change-Id: I0dc263f84620af4077f52e18eeb0f986ff0f13b9 --- UniversalLanguageSelector.hooks.php | 3 ++- UniversalLanguageSelector.php | 8 ++++++++ lib/jquery.webfonts.js | 4 ++++ resources/js/ext.uls.webfonts.js | 12 +++++++++--- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index 3fc37be1..f776b43f 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -248,7 +248,7 @@ class UniversalLanguageSelectorHooks { * @return bool */ public static function addConfig( &$vars ) { - global $wgULSGeoService, $wgULSIMEEnabled, $wgULSPosition, + global $wgULSGeoService, $wgULSIMEEnabled, $wgULSPosition, $wgULSNoWebfontsSelectors, $wgULSAnonCanChangeLanguage, $wgULSEventLogging, $wgULSNoImeSelectors; // Place constant stuff here (not depending on request context) @@ -260,6 +260,7 @@ class UniversalLanguageSelectorHooks { $vars['wgULSAnonCanChangeLanguage'] = $wgULSAnonCanChangeLanguage; $vars['wgULSEventLogging'] = $wgULSEventLogging; $vars['wgULSNoImeSelectors'] = $wgULSNoImeSelectors; + $vars['wgULSNoWebfontsSelectors'] = $wgULSNoWebfontsSelectors; return true; } diff --git a/UniversalLanguageSelector.php b/UniversalLanguageSelector.php index 1d5dd154..7da0f491 100644 --- a/UniversalLanguageSelector.php +++ b/UniversalLanguageSelector.php @@ -130,6 +130,14 @@ $wgULSEventLogging = false; */ $wgULSNoImeSelectors = array( '#wpCaptchaWord' ); + +/** + * Array of jQuery selectors of elements on which webfonts must not be applied. + * By default exclude the interwiki language links. + * @since 2013.09 + */ +$wgULSNoWebfontsSelectors = array( '#p-lang li > a' ); + $dir = __DIR__; // Internationalization diff --git a/lib/jquery.webfonts.js b/lib/jquery.webfonts.js index b4c0b5eb..c089467d 100644 --- a/lib/jquery.webfonts.js +++ b/lib/jquery.webfonts.js @@ -190,6 +190,10 @@ var fontFamilyStyle, fontFamily, $element = $( element ); + if ( $element.is( webfonts.options.exclude ) ) { + return; + } + // Note: it depends on the browser whether this returns font names // which don't exist. In Chrome it does, while in Opera it doesn't. fontFamilyStyle = $element.css( 'fontFamily' ); diff --git a/resources/js/ext.uls.webfonts.js b/resources/js/ext.uls.webfonts.js index c0922bc7..52b87b34 100644 --- a/resources/js/ext.uls.webfonts.js +++ b/resources/js/ext.uls.webfonts.js @@ -70,12 +70,17 @@ return font; }, exclude: ( function () { + var excludes = $.fn.webfonts.defaults.exclude; + if ( mw.user.options.get( 'editfont' ) !== 'default' ) { // Exclude textboxes from webfonts if user has edit area font option // set using 'Preferences' page - return 'textarea'; + excludes = ( excludes ) + ? excludes + ',textarea' + : 'textarea'; } - return $.fn.webfonts.defaults.exclude; + + return excludes; }() ) } ); $( 'body' ).webfonts(); @@ -87,7 +92,8 @@ // MediaWiki specific overrides for jquery.webfonts $.extend( $.fn.webfonts.defaults, { repository: mediawikiFontRepository, - fontStack: $( 'body' ).css( 'font-family' ).split( /, /g ) + fontStack: $( 'body' ).css( 'font-family' ).split( /, /g ), + exclude: mw.config.get( 'wgULSNoWebfontsSelectors' ).join( ', ' ) } ); mw.webfonts.preferences.load();