diff --git a/resources/js/ext.uls.languagesettings.js b/resources/js/ext.uls.languagesettings.js index 90d204a0..cd847add 100644 --- a/resources/js/ext.uls.languagesettings.js +++ b/resources/js/ext.uls.languagesettings.js @@ -18,28 +18,30 @@ */ ( function ( $ ) { - "use strict"; + 'use strict'; - var closeRow = '
' + + var closeRow, settingsMenu, settingsPanel, windowTemplate, panelsRow; + + closeRow = '
' + '' + '
'; - var settingsMenu = '
' + + settingsMenu = '
' + '

' + '
' + '
' + '
'; - var settingsPanel = '
' + + settingsPanel = '
' + '
'; - var panelsRow = '
' + + panelsRow = '
' + settingsMenu + settingsPanel + '
'; - var windowTemplate = '
' + windowTemplate = '
' + closeRow + panelsRow + '
'; - var LanguageSettings = function ( element, options ) { + function LanguageSettings( element, options ) { this.$element = $( element ); this.options = $.extend( {}, $.fn.languagesettings.defaults, options ); this.$window = $( this.options.template ); @@ -47,32 +49,34 @@ this.initialized = false; this.left = this.options.left; this.top = this.options.top; - this.$settingsPanel = this.$window.find( "#languagesettings-settings-panel" ); + this.$settingsPanel = this.$window.find( '#languagesettings-settings-panel' ); this.init(); this.listen(); - }; + } LanguageSettings.prototype = { constructor: LanguageSettings, init: function () { - $( "body" ).append( this.$window ); + $( 'body' ).append( this.$window ); this.hide(); }, listen: function () { var that = this; // Register all event listeners to the ULS language settings here. - that.$element.on( "click", $.proxy( that.show, that ) ); + that.$element.on( 'click', $.proxy( that.show, that ) ); that.$window.find( '#languagesettings-close' ) - .on( "click", $.proxy( that.hide, that ) ); + .on( 'click', $.proxy( that.hide, that ) ); }, render: function () { + var modules, defaultModule, moduleName; + // Get the name of all registered modules and list them in left side menu. - var modules = $.fn.languagesettings.modules; - var defaultModule = this.options.defaultModule; - for ( var moduleName in modules ) { + modules = $.fn.languagesettings.modules; + defaultModule = this.options.defaultModule; + for ( moduleName in modules ) { if ( modules.hasOwnProperty( moduleName ) ) { if ( !defaultModule ) { defaultModule = moduleName; @@ -89,25 +93,27 @@ * @param active boolean Make this module active and show by default */ renderModule: function ( moduleName, active ) { - var $settingsMenuItems = this.$window.find( ".settings-menu-items" ); - var module = new $.fn.languagesettings.modules[moduleName]( this ); - var $settingsTitle = $( "
" ) - .addClass( "settings-title" ) + var $settingsMenuItems, module, $settingsText, $settingsTitle, $settingsLink; + + $settingsMenuItems = this.$window.find( '.settings-menu-items' ); + module = new $.fn.languagesettings.modules[moduleName]( this ); + $settingsTitle = $( '
' ) + .addClass( 'settings-title' ) .text( module.name ); - var $settingsText = $( "" ) - .addClass( "settings-text" ) + $settingsText = $( '' ) + .addClass( 'settings-text' ) .text( module.description ); - var $settingsLink = $( "
" ) - .addClass( moduleName + "-settings-block menu-section" ) - .prop( "id", moduleName + "-settings-block" ) - .data( "module", module ) + $settingsLink = $( '
' ) + .addClass( moduleName + '-settings-block menu-section' ) + .prop( 'id', moduleName + '-settings-block' ) + .data( 'module', module ) .append( $settingsTitle ) .append( $settingsText ); $settingsMenuItems.append( $settingsLink ); - $settingsLink.on( "click", function () { - var module = $( this ).data( "module" ); + $settingsLink.on( 'click', function () { + var module = $( this ).data( 'module' ); module.render(); $( this ).addClass( 'active' ); } ); @@ -120,13 +126,15 @@ show: function () { if ( !this.initialized ) { + var top, pos, left; + this.render(); this.initialized = true; - var pos = $.extend( {}, this.$element.offset(), { + pos = $.extend( {}, this.$element.offset(), { height: this.$element[0].offsetHeight } ); - var top = this.top || pos.top + pos.height; - var left = this.left || '25%'; + top = this.top || pos.top + pos.height; + left = this.left || '25%'; // FIXME this is not exactly correct. position may not // be relative to the trigger. this.$window.css( { @@ -161,7 +169,7 @@ } }, - click: function ( e ) { + click: function () { if ( !this.shown ) { this.show(); } @@ -171,13 +179,13 @@ $.fn.languagesettings = function ( option ) { return this.each( function () { var $this = $( this ), - data = $this.data( "languagesettings" ), - options = typeof option === "object" && option; + data = $this.data( 'languagesettings' ), + options = typeof option === 'object' && option; if ( !data ) { - $this.data( "languagesettings", ( data = new LanguageSettings( this, options ) ) ); + $this.data( 'languagesettings', ( data = new LanguageSettings( this, options ) ) ); } - if ( typeof option === "string" ) { + if ( typeof option === 'string' ) { data[option](); } } ); diff --git a/resources/js/ext.uls.preferences.js b/resources/js/ext.uls.preferences.js index ca15154d..4ddc2d3b 100644 --- a/resources/js/ext.uls.preferences.js +++ b/resources/js/ext.uls.preferences.js @@ -19,7 +19,7 @@ */ ( function ( $, mw, undefined ) { - "use strict"; + 'use strict'; var ULSPreferences = function ( group ) { this.preferenceName = 'uls-preferences'; @@ -73,7 +73,7 @@ * @param callback */ save: function ( callback ) { - var that = this; + var that = this, api; callback = callback || $.noop(); if ( this.isAnon ) { // Anonymous user- Save preferences in local storage @@ -81,7 +81,7 @@ callback.call( this, true ); } else { // Logged in user. Use MW apis to change preferences - var api = new mw.Api(); + api = new mw.Api(); api.post( { action: 'tokens', type: 'options' @@ -93,12 +93,12 @@ optionname: that.preferenceName, optionvalue: $.toJSON( that.preferences ), token: token - } ).done( function ( result ) { + } ).done( function () { callback.call( this, true ); } ).fail( function () { callback.call( this, false ); } ); - } ).fail( function ( xhr, textStatus, exception ) { + } ).fail( function () { callback.call( this, false ); } ); } @@ -107,12 +107,12 @@ mw.uls = mw.uls || {}; mw.uls.preferences = function ( group ) { - var data = $( 'body' ).data( "preferences" ); + var data = $( 'body' ).data( 'preferences' ); if ( !data ) { - $( 'body' ).data( "preferences", ( data = new ULSPreferences( group ) ) ); + $( 'body' ).data( 'preferences', ( data = new ULSPreferences( group ) ) ); } - if ( typeof group === "string" ) { + if ( typeof group === 'string' ) { data.get( group ); } return data;