From 1bc80d58ba6c3d5ac9eff07f8f92eac89e30f782 Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Thu, 16 Aug 2012 14:45:24 +0530 Subject: [PATCH] ULS persistent preference system. Change-Id: Ieb22e09f226e770c9935b875f4226a75ffd8c46d --- UniversalLanguageSelector.php | 13 +++ resources/js/ext.uls.displaysettings.js | 73 +++++++++++---- resources/js/ext.uls.languagesettings.js | 11 +-- resources/js/ext.uls.preferences.js | 113 +++++++++++++++++++++++ resources/js/ext.uls.webfonts.js | 11 ++- 5 files changed, 197 insertions(+), 24 deletions(-) create mode 100644 resources/js/ext.uls.preferences.js diff --git a/UniversalLanguageSelector.php b/UniversalLanguageSelector.php index b98cc727..628840f6 100644 --- a/UniversalLanguageSelector.php +++ b/UniversalLanguageSelector.php @@ -77,11 +77,24 @@ $wgResourceModules['ext.uls.init'] = array( 'position' => 'top', ); +$wgResourceModules['ext.uls.preferences'] = array( + 'scripts' => 'resources/js/ext.uls.preferences.js', + 'localBasePath' => $dir, + 'remoteExtPath' => 'UniversalLanguageSelector', + 'dependencies' => array( + 'mediawiki.user', + 'jquery.json', + ), +); + $wgResourceModules['ext.uls.languagesettings'] = array( 'scripts' => 'resources/js/ext.uls.languagesettings.js', 'styles' => 'resources/css/ext.uls.languagesettings.css', 'localBasePath' => $dir, 'remoteExtPath' => 'UniversalLanguageSelector', + 'dependencies' => array( + 'ext.uls.preferences', + ), ); $wgResourceModules['ext.uls.webfonts'] = array( diff --git a/resources/js/ext.uls.displaysettings.js b/resources/js/ext.uls.displaysettings.js index 20a581b6..e4058a28 100644 --- a/resources/js/ext.uls.displaysettings.js +++ b/resources/js/ext.uls.displaysettings.js @@ -40,15 +40,17 @@ + '
' + '
' + '' - + '' + + '' + '
'; // FIXME i18n and too much hardcoding. - var DisplaySettings = function () { + var DisplaySettings = function ( $parent ) { this.name = "Display"; this.description = "Set the languages of menus and fonts"; this.$template = $( template ); this.language = this.currentLanguage(); this.$webfonts = null; + this.$parent = $parent; + this.webfontPreferences = new $.fn.uls.preferences( 'webfonts' ); }; DisplaySettings.prototype = { @@ -57,12 +59,11 @@ /** * Render the module into a given target - * @param $target */ - render: function ( $target ) { - $target.empty(); + render: function ( ) { + this.$parent.$settingsPanel.empty(); this.$webfonts = $( 'body' ).data( 'webfonts' ); - $target.append( this.$template ); + this.$parent.$settingsPanel.append( this.$template ); this.prepareLanguages(); this.prepareFonts(); this.listen(); @@ -84,10 +85,10 @@ .addClass( 'two columns button' ) .text( $.uls.data.autonym( language ) ); if ( language === this.language ) { - $button.addClass( 'down' ); + $button.addClass( 'down' ); } if ( i > 0 ) { - $button.addClass( 'offset-by-one' ); + $button.addClass( 'offset-by-one' ); } $button.data( 'language', language ); $languages.append( $button ); @@ -129,10 +130,18 @@ var fonts = this.$webfonts.list( this.language ); var $fontSelector = $( 'select.uls-font-select' ); $fontSelector.find( 'option' ).remove(); - $.each( fonts, function ( key, font ) { - $fontSelector.append( $( "" ) - .attr( "value", font ).text( font ) ); - } ); + var savedFont = this.webfontPreferences.get( this.language ); + if( fonts && fonts.length ) { + $.each( fonts, function ( key, font ) { + var $fontOption = $( "