Merge "More jshint fixes"

This commit is contained in:
Amire80
2012-10-16 11:54:21 +00:00
committed by Gerrit Code Review
2 changed files with 51 additions and 43 deletions

View File

@@ -18,28 +18,30 @@
*/ */
( function ( $ ) { ( function ( $ ) {
"use strict"; 'use strict';
var closeRow = '<div class="row">' + var closeRow, settingsMenu, settingsPanel, windowTemplate, panelsRow;
closeRow = '<div class="row">' +
'<span id="languagesettings-close" class="icon-close"></span>' + '<span id="languagesettings-close" class="icon-close"></span>' +
'</div>'; '</div>';
var settingsMenu = '<div class="four columns languagesettings-menu">' + settingsMenu = '<div class="four columns languagesettings-menu">' +
'<h1 data-i18n="ext-uls-language-settings-title"></h1>' + '<h1 data-i18n="ext-uls-language-settings-title"></h1>' +
'<div class="settings-menu-items">' + '<div class="settings-menu-items">' +
'</div>' + '</div>' +
'</div>'; '</div>';
var settingsPanel = '<div id="languagesettings-settings-panel" class="eight columns">' + settingsPanel = '<div id="languagesettings-settings-panel" class="eight columns">' +
'</div>'; '</div>';
var panelsRow = '<div class="row" id="languagesettings-panels">' + panelsRow = '<div class="row" id="languagesettings-panels">' +
settingsMenu + settingsMenu +
settingsPanel + settingsPanel +
'</div>'; '</div>';
var windowTemplate = '<div style="display: block;" id="language-settings-dialog" class="uls-menu">' windowTemplate = '<div style="display: block;" id="language-settings-dialog" class="uls-menu">'
+ closeRow + closeRow
+ panelsRow + panelsRow
+ '</div>'; + '</div>';
var LanguageSettings = function ( element, options ) { function LanguageSettings( element, options ) {
this.$element = $( element ); this.$element = $( element );
this.options = $.extend( {}, $.fn.languagesettings.defaults, options ); this.options = $.extend( {}, $.fn.languagesettings.defaults, options );
this.$window = $( this.options.template ); this.$window = $( this.options.template );
@@ -47,32 +49,34 @@
this.initialized = false; this.initialized = false;
this.left = this.options.left; this.left = this.options.left;
this.top = this.options.top; this.top = this.options.top;
this.$settingsPanel = this.$window.find( "#languagesettings-settings-panel" ); this.$settingsPanel = this.$window.find( '#languagesettings-settings-panel' );
this.init(); this.init();
this.listen(); this.listen();
}; }
LanguageSettings.prototype = { LanguageSettings.prototype = {
constructor: LanguageSettings, constructor: LanguageSettings,
init: function () { init: function () {
$( "body" ).append( this.$window ); $( 'body' ).append( this.$window );
this.hide(); this.hide();
}, },
listen: function () { listen: function () {
var that = this; var that = this;
// Register all event listeners to the ULS language settings here. // 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' ) that.$window.find( '#languagesettings-close' )
.on( "click", $.proxy( that.hide, that ) ); .on( 'click', $.proxy( that.hide, that ) );
}, },
render: function () { render: function () {
var modules, defaultModule, moduleName;
// Get the name of all registered modules and list them in left side menu. // Get the name of all registered modules and list them in left side menu.
var modules = $.fn.languagesettings.modules; modules = $.fn.languagesettings.modules;
var defaultModule = this.options.defaultModule; defaultModule = this.options.defaultModule;
for ( var moduleName in modules ) { for ( moduleName in modules ) {
if ( modules.hasOwnProperty( moduleName ) ) { if ( modules.hasOwnProperty( moduleName ) ) {
if ( !defaultModule ) { if ( !defaultModule ) {
defaultModule = moduleName; defaultModule = moduleName;
@@ -89,25 +93,27 @@
* @param active boolean Make this module active and show by default * @param active boolean Make this module active and show by default
*/ */
renderModule: function ( moduleName, active ) { renderModule: function ( moduleName, active ) {
var $settingsMenuItems = this.$window.find( ".settings-menu-items" ); var $settingsMenuItems, module, $settingsText, $settingsTitle, $settingsLink;
var module = new $.fn.languagesettings.modules[moduleName]( this );
var $settingsTitle = $( "<div>" ) $settingsMenuItems = this.$window.find( '.settings-menu-items' );
.addClass( "settings-title" ) module = new $.fn.languagesettings.modules[moduleName]( this );
$settingsTitle = $( '<div>' )
.addClass( 'settings-title' )
.text( module.name ); .text( module.name );
var $settingsText = $( "<span>" ) $settingsText = $( '<span>' )
.addClass( "settings-text" ) .addClass( 'settings-text' )
.text( module.description ); .text( module.description );
var $settingsLink = $( "<div>" ) $settingsLink = $( '<div>' )
.addClass( moduleName + "-settings-block menu-section" ) .addClass( moduleName + '-settings-block menu-section' )
.prop( "id", moduleName + "-settings-block" ) .prop( 'id', moduleName + '-settings-block' )
.data( "module", module ) .data( 'module', module )
.append( $settingsTitle ) .append( $settingsTitle )
.append( $settingsText ); .append( $settingsText );
$settingsMenuItems.append( $settingsLink ); $settingsMenuItems.append( $settingsLink );
$settingsLink.on( "click", function () { $settingsLink.on( 'click', function () {
var module = $( this ).data( "module" ); var module = $( this ).data( 'module' );
module.render(); module.render();
$( this ).addClass( 'active' ); $( this ).addClass( 'active' );
} ); } );
@@ -120,13 +126,15 @@
show: function () { show: function () {
if ( !this.initialized ) { if ( !this.initialized ) {
var top, pos, left;
this.render(); this.render();
this.initialized = true; this.initialized = true;
var pos = $.extend( {}, this.$element.offset(), { pos = $.extend( {}, this.$element.offset(), {
height: this.$element[0].offsetHeight height: this.$element[0].offsetHeight
} ); } );
var top = this.top || pos.top + pos.height; top = this.top || pos.top + pos.height;
var left = this.left || '25%'; left = this.left || '25%';
// FIXME this is not exactly correct. position may not // FIXME this is not exactly correct. position may not
// be relative to the trigger. // be relative to the trigger.
this.$window.css( { this.$window.css( {
@@ -161,7 +169,7 @@
} }
}, },
click: function ( e ) { click: function () {
if ( !this.shown ) { if ( !this.shown ) {
this.show(); this.show();
} }
@@ -171,13 +179,13 @@
$.fn.languagesettings = function ( option ) { $.fn.languagesettings = function ( option ) {
return this.each( function () { return this.each( function () {
var $this = $( this ), var $this = $( this ),
data = $this.data( "languagesettings" ), data = $this.data( 'languagesettings' ),
options = typeof option === "object" && option; options = typeof option === 'object' && option;
if ( !data ) { 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](); data[option]();
} }
} ); } );

View File

@@ -19,7 +19,7 @@
*/ */
( function ( $, mw, undefined ) { ( function ( $, mw, undefined ) {
"use strict"; 'use strict';
var ULSPreferences = function ( group ) { var ULSPreferences = function ( group ) {
this.preferenceName = 'uls-preferences'; this.preferenceName = 'uls-preferences';
@@ -73,7 +73,7 @@
* @param callback * @param callback
*/ */
save: function ( callback ) { save: function ( callback ) {
var that = this; var that = this, api;
callback = callback || $.noop(); callback = callback || $.noop();
if ( this.isAnon ) { if ( this.isAnon ) {
// Anonymous user- Save preferences in local storage // Anonymous user- Save preferences in local storage
@@ -81,7 +81,7 @@
callback.call( this, true ); callback.call( this, true );
} else { } else {
// Logged in user. Use MW apis to change preferences // Logged in user. Use MW apis to change preferences
var api = new mw.Api(); api = new mw.Api();
api.post( { api.post( {
action: 'tokens', action: 'tokens',
type: 'options' type: 'options'
@@ -93,12 +93,12 @@
optionname: that.preferenceName, optionname: that.preferenceName,
optionvalue: $.toJSON( that.preferences ), optionvalue: $.toJSON( that.preferences ),
token: token token: token
} ).done( function ( result ) { } ).done( function () {
callback.call( this, true ); callback.call( this, true );
} ).fail( function () { } ).fail( function () {
callback.call( this, false ); callback.call( this, false );
} ); } );
} ).fail( function ( xhr, textStatus, exception ) { } ).fail( function () {
callback.call( this, false ); callback.call( this, false );
} ); } );
} }
@@ -107,12 +107,12 @@
mw.uls = mw.uls || {}; mw.uls = mw.uls || {};
mw.uls.preferences = function ( group ) { mw.uls.preferences = function ( group ) {
var data = $( 'body' ).data( "preferences" ); var data = $( 'body' ).data( 'preferences' );
if ( !data ) { 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 ); data.get( group );
} }
return data; return data;