]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.js
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / extensions / ConfirmEdit / FancyCaptcha / resources / ext.confirmEdit.fancyCaptcha.js
diff --git a/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.js b/extensions/ConfirmEdit/FancyCaptcha/resources/ext.confirmEdit.fancyCaptcha.js
new file mode 100644 (file)
index 0000000..d047b19
--- /dev/null
@@ -0,0 +1,33 @@
+( function ( $, mw ) {
+       $( document ).on( 'click', '.fancycaptcha-reload', function () {
+               var $this = $( this ),
+                       $root = $this.closest( '.fancycaptcha-captcha-container' ),
+                       $captchaImage = $root.find( '.fancycaptcha-image' );
+
+               $this.addClass( 'fancycaptcha-reload-loading' );
+
+               // AJAX request to get captcha index key
+               new mw.Api().post( { action: 'fancycaptchareload' } ).done( function ( data ) {
+                       var captchaIndex = data.fancycaptchareload.index,
+                               imgSrc;
+                       if ( typeof captchaIndex === 'string' ) {
+                               // replace index key with a new one for captcha image
+                               imgSrc = $captchaImage.attr( 'src' ).replace( /(wpCaptchaId=)\w+/, '$1' + captchaIndex );
+                               $captchaImage.attr( 'src', imgSrc );
+
+                               // replace index key with a new one for hidden tag
+                               $( '#mw-input-captchaId' ).val( captchaIndex );
+                               $( '#mw-input-captchaWord' ).val( '' ).focus();
+
+                               // now do the same with a selector that works for pre-1.27 login forms
+                               $root.find( '[name="wpCaptchaId"]' ).val( captchaIndex );
+                               $root.find( '[name="wpCaptchaWord"]' ).val( '' ).focus();
+                       }
+               } )
+               .always( function () {
+                       $this.removeClass( 'fancycaptcha-reload-loading' );
+               } );
+
+               return false;
+       } );
+}( jQuery, mediaWiki ) );