http://www.mediawiki.org/wiki/Special:Code/MediaWiki/93771

Revision: 93771
Author:   jeroendedauw
Date:     2011-08-02 18:08:08 +0000 (Tue, 02 Aug 2011)
Log Message:
-----------
make a call to the image push api module for each image, to prevent timeouts 
when there are many images and aliased mediaWiki to mw

Modified Paths:
--------------
    trunk/extensions/Push/includes/ext.push.tab.js

Modified: trunk/extensions/Push/includes/ext.push.tab.js
===================================================================
--- trunk/extensions/Push/includes/ext.push.tab.js      2011-08-02 17:01:20 UTC 
(rev 93770)
+++ trunk/extensions/Push/includes/ext.push.tab.js      2011-08-02 18:08:08 UTC 
(rev 93771)
@@ -5,7 +5,7 @@
  * @author Jeroen De Dauw <jeroendedauw at gmail dot com>
  */
 
-(function($) { $( document ).ready( function() {
+(function( $ ) { $( document ).ready( function() {
        
        // Compatibility with pre-RL code.
        // Messages will have been loaded into wgPushMessages.
@@ -23,6 +23,8 @@
                }
        }
        
+       mw = mediaWiki;
+       
        var pages;
        var targetData = [];
        
@@ -32,7 +34,7 @@
        
        $('.push-button').click(function() {
                this.disabled = true;
-               this.innerHTML = mediaWiki.msg( 'push-button-pushing' );
+               this.innerHTML = mw.msg( 'push-button-pushing' );
                
                var errorDiv = $( '#targeterrors' + $(this).attr( 'targetid' ) 
);
                errorDiv.fadeOut( 'fast' );                     
@@ -55,7 +57,7 @@
        
        $('#push-all-button').click(function() {
                this.disabled = true;
-               this.innerHTML = mediaWiki.msg( 'push-button-pushing' );
+               this.innerHTML = mw.msg( 'push-button-pushing' );
                $.each($(".push-button"), function(i,v) {
                        $(v).click();
                });
@@ -116,7 +118,7 @@
                        }
 
                        if ( files.length > 0 ) {
-                               $('#txtFileList').text( '(' + mediaWiki.msg( 
'push-tab-embedded-files' ) + ' ' );
+                               $('#txtFileList').text( '(' + mw.msg( 
'push-tab-embedded-files' ) + ' ' );
                                
                                for ( i in files ) {
                                        if ( i > 0 ) $('#txtFileList').append( 
', ' );
@@ -126,7 +128,7 @@
                                $('#txtFileList').append( ')' );
                        }
                        else {
-                               $('#txtFileList').text( mediaWiki.msg( 
'push-tab-no-embedded-files' ) );
+                               $('#txtFileList').text( mw.msg( 
'push-tab-no-embedded-files' ) );
                        }
                }
        }
@@ -173,7 +175,7 @@
                                                var revision = 
remotePage.revisions[0];
                                                var dateTime = 
revision.timestamp.split( 'T' );
 
-                                               var message = mediaWiki.msg(
+                                               var message = mw.msg(
                                                        'push-tab-last-edit',
                                                        revision.user,
                                                        dateTime[0],
@@ -182,7 +184,7 @@
                                        }
                                        else {
                                                $( '#targetlink' + targetId 
).attr( {'class': 'new'} );
-                                               var message = mediaWiki.msg( 
'push-tab-not-created' );
+                                               var message = mw.msg( 
'push-tab-not-created' );
                                        }
                                        
                                        infoDiv.text( message );
@@ -218,7 +220,7 @@
                        
                        if ( overideTemplates.length > 0 ) {
                                $( '#targettemplateconflicts' + targetId )
-                                       .text( mediaWiki.msg( 
'push-tab-template-override', overideTemplates.join( ', ' ) ) )
+                                       .text( mw.msg( 
'push-tab-template-override', overideTemplates.join( ', ' ) ) )
                                        .fadeIn( 'slow' );
                        }
                        else {
@@ -241,7 +243,7 @@
                        
                        if ( overideFiles.length > 0 ) {
                                $( '#targetfileconflicts' + targetId )
-                                       .text( mediaWiki.msg( 
'push-tab-files-override', overideFiles.join( ', ' ) ) )
+                                       .text( mw.msg( 
'push-tab-files-override', overideFiles.join( ', ' ) ) )
                                        .fadeIn( 'slow' );
                        }
                        else {
@@ -267,14 +269,14 @@
                                        handleError( sender, targetUrl, 
data.error );
                                }
                                else if ( data.length > 0 && data[0].edit && 
data[0].edit.captcha ) {
-                                       handleError( sender, targetUrl, { info: 
mediaWiki.msg( 'push-err-captacha', targetName ) } );
+                                       handleError( sender, targetUrl, { info: 
mw.msg( 'push-err-captacha', targetName ) } );
                                }
                                else {
                                        if ( $('#checkIncFiles').length != 0 && 
$('#checkIncFiles').attr('checked') ) {
                                                setButtonToImgPush( sender, 
targetUrl, targetName );
                                        }
                                        else {
-                                               sender.innerHTML = 
mediaWiki.msg( 'push-button-completed' );
+                                               sender.innerHTML = mw.msg( 
'push-button-completed' );
                                                setTimeout( function() 
{reEnableButton( sender, targetUrl, targetName );}, 1000 );
                                        }
                                }
@@ -282,40 +284,50 @@
                );      
        }
        
-       function setButtonToImgPush( button, targetUrl, targetName ) {
-               button.innerHTML = mediaWiki.msg( 'push-button-pushing-files' );
-               initiateImagePush( button, targetUrl, targetName );
+       function handleFilePushingCompletion( sender, targetUrl, targetName ) {
+               sender.innerHTML = mw.msg( 'push-button-completed' );
+               
+               setTimeout( function() {
+                       reEnableButton( sender, targetUrl, targetName );
+               }, 1000 );      
        }
        
-       function initiateImagePush( sender, targetUrl, targetName ) {
+       function setButtonToImgPush( button, targetUrl, targetName ) {
+               button.innerHTML = mw.msg( 'push-button-pushing-files' );
+               
                var images = window.wgPushPageFiles.concat( 
window.wgPushTemplateFiles );
+               var currentFile = images.pop();
                
+               initiateImagePush( button, targetUrl, targetName, images, 
currentFile, handleFilePushingCompletion );
+       }
+       
+       function initiateImagePush( sender, targetUrl, targetName, images, 
fileName, callback ) {
                $.getJSON(
                        wgScriptPath + '/api.php',
                        {
                                'action': 'pushimages',
                                'format': 'json',
-                               'images': images.join( '|' ), 
+                               'images': fileName, 
                                'targets': targetUrl
                        },
                        function( data ) {
                                var fail = false;
                                
                                if ( data.error ) {
-                                       data.error.info = mediaWiki.msg( 
'push-tab-err-filepush', data.error.info );
+                                       data.error.info = mw.msg( 
'push-tab-err-filepush', data.error.info );
                                        handleError( sender, targetUrl, 
data.error );
                                        fail = true;                            
        
                                }
                                else {
                                        for ( i in data ) {
                                                if ( data[i].error ) {
-                                                       data[i].error.info = 
mediaWiki.msg( 'push-tab-err-filepush', data[i].error.info );
+                                                       data[i].error.info = 
mw.msg( 'push-tab-err-filepush', data[i].error.info );
                                                        handleError( sender, 
targetUrl, data[i].error );
                                                        fail = true;
                                                        break;
                                                }
                                                else if ( !data[i].upload ) {
-                                                       data[i].error.info = 
mediaWiki.msg( 'push-tab-err-filepush-unknown' );
+                                                       data[i].error.info = 
mw.msg( 'push-tab-err-filepush-unknown' );
                                                        handleError( sender, 
targetUrl, data[i].error );
                                                        fail = true;
                                                        break;                  
                        
@@ -324,15 +336,20 @@
                                }
 
                                if ( !fail ) {
-                                       sender.innerHTML = mediaWiki.msg( 
'push-button-completed' );
-                                       setTimeout( function() {reEnableButton( 
sender, targetUrl, targetName );}, 1000 );                                      
        
+                                       if ( images.length > 0 ) {
+                                               var currentFile = images.pop();
+                                               initiateImagePush( sender, 
targetUrl, targetName, images, currentFile, callback );
+                                       }
+                                       else {
+                                               callback( sender, targetUrl, 
targetName );
+                                       }
                                }
                        }
                );                      
        }
        
        function reEnableButton( button, targetUrl, targetName ) {
-               button.innerHTML = mediaWiki.msg( 'push-button-text' );
+               button.innerHTML = mw.msg( 'push-button-text' );
                button.disabled = false;
                
                getRemoteArticleInfo( $(button).attr( 'targetid' ), 
$(button).attr( 'pushtarget' ) );
@@ -352,7 +369,7 @@
                        
                        if ( !hasDisabled ) {
                                pushAllButton.attr( "disabled", false );
-                               pushAllButton.text( mediaWiki.msg( 
'push-button-all' ) );
+                               pushAllButton.text( mw.msg( 'push-button-all' ) 
);
                        }                       
                }
        }       
@@ -361,14 +378,14 @@
                var errorDiv = $( '#targeterrors' + $(sender).attr( 'targetid' 
) );
 
                if ( error.code && error.code == 'uploaddisabled' ) {
-                       error.info = mediaWiki.msg( 
'push-tab-err-uploaddisabled' );
+                       error.info = mw.msg( 'push-tab-err-uploaddisabled' );
                }
                
                errorDiv.text( error.info );
                errorDiv.fadeIn( 'slow' );                      
                
-               sender.innerHTML = mediaWiki.msg( 'push-button-failed' );       
+               sender.innerHTML = mw.msg( 'push-button-failed' );      
                setTimeout( function() {reEnableButton( sender );}, 2500 );
        }
        
-} ); })(jQuery);
+} ); })( jQuery );


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to