/** * ULS-based display settings panel * * Copyright (C) 2012 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris, * Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other * contributors. See CREDITS for a list. * * UniversalLanguageSelector is dual licensed GPLv2 or later and MIT. You don't * have to do anything special to choose one license or the other and you don't * have to notify anyone which license you are using. You are free to use * UniversalLanguageSelector in commercial projects as long as the copyright * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details. * * @file * @ingroup Extensions * @licence GNU General Public Licence 2.0 or later * @licence MIT License */ ( function( $, mw, undefined ) { "use strict"; var template = '

Display settings

' + '

Language used for menus

' + '
' + '
' + '

Font settings

' + '
' + '
' + '' + '
' + '
' + '
Select your preferred fonts
' + '
' + '
' + '' + '
' + '
' + '
' + '' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
'; // FIXME i18n and too much hardcoding. var DisplaySettings = function ( $parent ) { this.name = "Display"; this.description = "Set language used for menus and fonts"; this.$template = $( template ); this.uiLanguage = this.getUILanguage(); this.contentLanguage = this.getContentLanguage(); this.$webfonts = null; this.$parent = $parent; this.webfontPreferences = mw.uls.preferences( 'webfonts' ); }; DisplaySettings.prototype = { Constructor: DisplaySettings, /** * Render the module into a given target */ render: function () { this.$parent.$settingsPanel.empty(); this.$webfonts = $( 'body' ).data( 'webfonts' ); this.$parent.$settingsPanel.append( this.$template ); this.prepareLanguages(); this.prepareUIFonts(); this.prepareContentFonts(); this.prepareWebfontsCheckbox(); this.listen(); }, prepareWebfontsCheckbox: function () { $( '#webfonts-enable-checkbox' ).prop( 'checked', this.isWebFontsEnabled() ); }, isWebFontsEnabled: function () { var enable = this.webfontPreferences.get( 'webfonts-enabled' ); // 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; } return enable; }, /** * Prepare the UI language selector */ prepareLanguages: function () { var that = this; var $languages = this.$template.find( 'div.uls-ui-languages' ); $languages.empty(); var previousLanguages = this.frequentLanguageList(); var languages = [this.uiLanguage]; for ( var lang in previousLanguages ) { if ( previousLanguages[lang] === this.uiLanguage ) { continue; } languages.push( previousLanguages[lang] ); } function buttonHandler ( button ) { return function () { that.uiLanguage = button.data( "language" ) || that.uiLanguage; $( "div.uls-ui-languages button.button" ).removeClass( "down" ); button.addClass( "down" ); that.prepareUIFonts(); }; } for ( var i = 0; i < 3; i++ ) { var language = languages[i]; var $button = $( '