Don't attempt to stash new section edits
authorOri Livneh <ori@wikimedia.org>
Thu, 4 Dec 2014 02:03:29 +0000 (18:03 -0800)
committerOri Livneh <ori@wikimedia.org>
Thu, 4 Dec 2014 02:19:20 +0000 (18:19 -0800)
The parser output of edits produced via the 'new section' interface varies on
both the edit body and the edit summary (since it determines the new section's
name). So there isn't an early point in the edit process where we can start
computing the edit output. We have to wait for the user to be completely
done, by which point edit-stashing provides no advantage.

Change-Id: Ida461e08189b75c5a508628d11dc929a6138814a

resources/src/mediawiki.action/mediawiki.action.edit.stash.js

index 895cb03..9972321 100644 (file)
@@ -13,7 +13,7 @@
                                token: token,
                                title: mw.config.get( 'wgPageName' ),
                                section: data.wpSection,
-                               sectiontitle: data.wpSection === 'new' ? data.wpSummary : '',
+                               sectiontitle: '',
                                text: data.wpTextbox1,
                                contentmodel: data.model,
                                contentformat: data.format,
                        } );
                }
 
-               $form.on( 'change', function () {
+               function onEditChanged() {
+                       // If a stash request is already in flight, abort it, since its
+                       // payload has just been invalidated by this change.
                        if ( pending ) {
                                pending.abort();
                        }
                        api.getToken( 'edit' ).then( stashEdit );
-               } );
+               }
+
+               // We don't attempt to stash new section edits because in such cases
+               // the parser output varies on the edit summary (since it determines
+               // the new section's name).
+               if ( $form.find( 'input[name=wpSection]' ).val() === 'new' ) {
+                       return;
+               }
+
+               $form.find( '#wpTextbox1' ).on( 'change', onEditChanged );
        } );
 }( mediaWiki, jQuery ) );