Merge "LivePreview: Prevent unnecessary DOM change for spinner"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 8 Sep 2015 00:22:32 +0000 (00:22 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 8 Sep 2015 00:22:32 +0000 (00:22 +0000)
1  2 
resources/src/mediawiki.action/mediawiki.action.edit.preview.js

@@@ -17,6 -17,7 +17,7 @@@
                $editform = $( '#editform' );
                $textbox = $editform.find( '#wpTextbox1' );
                $summary = $editform.find( '#wpSummary' );
+               $spinner = $( '.mw-spinner-preview' );
                $errorBox = $( '.errorbox' );
                section = $editform.find( '[name="wpSection"]' ).val();
  
@@@ -36,7 -37,7 +37,7 @@@
                $wikiPreview.show();
  
                // Jump to where the preview will appear
 -              $wikiPreview[0].scrollIntoView();
 +              $wikiPreview[ 0 ].scrollIntoView();
  
                copySelectors = [
                        // Main
                // Not shown during normal preview, to be removed if present
                $( '.mw-newarticletext' ).remove();
  
-               $spinner = $.createSpinner( {
-                       size: 'large',
-                       type: 'block'
-               } );
-               $wikiPreview.before( $spinner );
-               $spinner.css( {
-                       marginTop: $spinner.height()
-               } );
+               if ( $spinner.length === 0 ) {
+                       $spinner = $.createSpinner( {
+                               size: 'large',
+                               type: 'block'
+                       } )
+                               .addClass( 'mw-spinner-preview' )
+                               .css( 'margin-top', '1em' );
+                       $wikiPreview.before( $spinner );
+               } else {
+                       $spinner.show();
+               }
  
                // Can't use fadeTo because it calls show(), and we might want to keep some elements hidden
                // (e.g. empty #catlinks)
                                        indexpageids: '',
                                        prop: 'revisions',
                                        titles: mw.config.get( 'wgPageName' ),
 -                                      rvdifftotext: response.parse.text['*'],
 +                                      rvdifftotext: response.parse.text[ '*' ],
                                        rvprop: ''
                                };
                                if ( section !== '' ) {
                                }
                                return api.post( postData ).done( function ( result2 ) {
                                        try {
 -                                              var diffHtml = result2.query.pages[result2.query.pageids[0]]
 -                                                      .revisions[0].diff['*'];
 +                                              var diffHtml = result2.query.pages[ result2.query.pageids[ 0 ] ]
 +                                                      .revisions[ 0 ].diff[ '*' ];
                                                $wikiDiff.find( 'table.diff tbody' ).html( diffHtml );
                                        } catch ( e ) {
                                                // "result.blah is undefined" error, ignore
                                        );
                                }
                                if ( response.parse.categorieshtml ) {
 -                                      $( '#catlinks' ).replaceWith( response.parse.categorieshtml['*'] );
 +                                      $( '#catlinks' ).replaceWith( response.parse.categorieshtml[ '*' ] );
                                }
                                if ( response.parse.templates ) {
                                        newList = [];
                                                li = $( '<li>' )
                                                        .append( $( '<a>' )
                                                                .attr( {
 -                                                                      'href': mw.util.getUrl( template['*'] ),
 +                                                                      href: mw.util.getUrl( template[ '*' ] ),
                                                                        'class': ( template.exists !== undefined ? '' : 'new' )
                                                                } )
 -                                                              .text( template['*'] )
 +                                                              .text( template[ '*' ] )
                                                        );
                                                newList.push( li );
                                        } );
                                        $editform.find( '.templatesUsed .mw-editfooter-list' ).detach().empty().append( newList ).appendTo( '.templatesUsed' );
                                }
                                if ( response.parse.limitreporthtml ) {
 -                                      $( '.limitreport' ).html( response.parse.limitreporthtml['*'] );
 +                                      $( '.limitreport' ).html( response.parse.limitreporthtml[ '*' ] );
                                }
                                if ( response.parse.langlinks && mw.config.get( 'skin' ) === 'vector' ) {
                                        newList = [];
                                                        .addClass( 'interlanguage-link interwiki-' + langlink.lang )
                                                        .append( $( '<a>' )
                                                                .attr( {
 -                                                                      'href': langlink.url,
 -                                                                      'title': langlink['*'] + ' - ' + langlink.langname,
 -                                                                      'lang': langlink.lang,
 -                                                                      'hreflang': langlink.lang
 +                                                                      href: langlink.url,
 +                                                                      title: langlink[ '*' ] + ' - ' + langlink.langname,
 +                                                                      lang: langlink.lang,
 +                                                                      hreflang: langlink.lang
                                                                } )
                                                                .text( langlink.autonym )
                                                        );
                                        $list.detach().empty().append( newList ).prependTo( $parent );
                                }
  
 -                              if ( response.parse.text['*'] ) {
 +                              if ( response.parse.text[ '*' ] ) {
                                        $content = $wikiPreview.children( '.mw-content-ltr,.mw-content-rtl' );
                                        $content
                                                .detach()
 -                                              .html( response.parse.text['*'] );
 +                                              .html( response.parse.text[ '*' ] );
  
                                        mw.hook( 'wikipage.content' ).fire( $content );
  
                        var isSubject = ( section === 'new' ),
                                summaryMsg = isSubject ? 'subject-preview' : 'summary-preview',
                                $summaryPreview = $editform.find( '.mw-summary-preview' ).empty();
 -                      if ( response.parse.parsedsummary && response.parse.parsedsummary['*'] !== '' ) {
 +                      if ( response.parse.parsedsummary && response.parse.parsedsummary[ '*' ] !== '' ) {
                                $summaryPreview.append(
                                        mw.message( summaryMsg ).parse(),
                                        ' ',
                                        $( '<span>' ).addClass( 'comment' ).html(
                                                // There is no equivalent to rawParams
                                                mw.message( 'parentheses' ).escaped()
 -                                                      .replace( '$1', response.parse.parsedsummary['*'] )
 +                                                      .replace( '$1', response.parse.parsedsummary[ '*' ] )
                                        )
                                );
                        }
                        mw.hook( 'wikipage.editform' ).fire( $editform );
                } );
                request.always( function () {
-                       $spinner.remove();
+                       $spinner.hide();
                        $copyElements.animate( {
                                opacity: 1
                        }, 'fast' );
                        $( '.portal:last' ).after(
                                $( '<div>' ).attr( {
                                        'class': 'portal',
 -                                      'id': 'p-lang',
 -                                      'role': 'navigation',
 -                                      'title': mw.msg( 'tooltip-p-lang' ),
 +                                      id: 'p-lang',
 +                                      role: 'navigation',
 +                                      title: mw.msg( 'tooltip-p-lang' ),
                                        'aria-labelledby': 'p-lang-label'
                                } )
                                .append( $( '<h3>' ).attr( 'id', 'p-lang-label' ).text( mw.msg( 'otherlanguages' ) ) )