diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
commit | 9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch) | |
tree | 46d1a0dee7febef5c2d57a9f7b972be16a163b3d /resources/mediawiki.special/mediawiki.special.preferences.js | |
parent | 78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff) |
update to MediaWiki 1.17.0
Diffstat (limited to 'resources/mediawiki.special/mediawiki.special.preferences.js')
-rw-r--r-- | resources/mediawiki.special/mediawiki.special.preferences.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/resources/mediawiki.special/mediawiki.special.preferences.js b/resources/mediawiki.special/mediawiki.special.preferences.js new file mode 100644 index 00000000..1775bec4 --- /dev/null +++ b/resources/mediawiki.special/mediawiki.special.preferences.js @@ -0,0 +1,77 @@ +/* + * JavaScript for Special:Preferences + */ +( function( $, mw ) { + +$( '#prefsubmit' ).attr( 'id', 'prefcontrol' ); +$( '#preferences' ) + .addClass( 'jsprefs' ) + .before( $( '<ul id="preftoc"></ul>' ) ) + .children( 'fieldset' ) + .hide() + .addClass( 'prefsection' ) + .children( 'legend' ) + .addClass( 'mainLegend' ) + .each( function( i ) { + $(this).parent().attr( 'id', 'prefsection-' + i ); + if ( i === 0 ) { + $(this).parent().show(); + } + $( '#preftoc' ).append( + $( '<li></li>' ) + .addClass( i === 0 ? 'selected' : null ) + .append( + $( '<a></a>') + .text( $(this).text() ) + .attr( 'href', '#prefsection-' + i ) + .mousedown( function( e ) { + $(this).parent().parent().find( 'li' ).removeClass( 'selected' ); + $(this).parent().addClass( 'selected' ); + e.preventDefault(); + return false; + } ) + .click( function( e ) { + $( '#preferences > fieldset' ).hide(); + $( '#prefsection-' + i ).show(); + e.preventDefault(); + return false; + } ) + ) + ); + } + ); + +/** + * Given an email validity status (true, false, null) update the label CSS class + */ +var updateMailValidityLabel = function( mail ) { + var isValid = mw.util.validateEmail( mail ), + $label = $( '#mw-emailaddress-validity' ); + + // We allow empty address + if( isValid === null ) { + $label.text( '' ).removeClass( 'valid invalid' ); + + // Valid + } else if ( isValid ) { + $label.text( mw.msg( 'email-address-validity-valid' ) ).addClass( 'valid' ).removeClass( 'invalid' ); + + // Not valid + } else { + $label.text( mw.msg( 'email-address-validity-invalid' ) ).addClass( 'invalid' ).removeClass( 'valid' ); + } +}; + +// Lame tip to let user know if its email is valid. See bug 22449 +// Only bind once for 'blur' so that the user can fill it in without errors +// After that look at every keypress for direct feedback if it was invalid onblur +$( '#mw-input-wpemailaddress' ).one( 'blur', function() { + if ( $( '#mw-emailaddress-validity' ).length === 0 ) { + $(this).after( '<label for="mw-input-wpemailaddress" id="mw-emailaddress-validity"></label>' ); + } + updateMailValidityLabel( $(this).val() ); + $(this).keyup( function() { + updateMailValidityLabel( $(this).val() ); + } ); +} ); +} )( jQuery, mediaWiki );
\ No newline at end of file |