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

Revision: 90961
Author:   janpaul123
Date:     2011-06-28 14:35:01 +0000 (Tue, 28 Jun 2011)
Log Message:
-----------
Entered input is now remembered when selecting a different type or subtype, 
fixes bug 29624.

Modified Paths:
--------------
    trunk/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.core.js

Modified: trunk/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.core.js
===================================================================
--- trunk/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.core.js 
2011-06-28 14:28:11 UTC (rev 90960)
+++ trunk/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.core.js 
2011-06-28 14:35:01 UTC (rev 90961)
@@ -7,6 +7,7 @@
        currentSubtypeId = null, // id of the currently selected subtype (e.g. 
'original' or 'special')
        currentTypeOrSubtype = null, // content of the current (sub)type (i.e. 
an object with title, descr, text, etc.)
        previewData = null, // data of the currently previewed thing is set here
+       rememberData = null, // input data to remember when switching types or 
subtypes
        emailable = false,
        gallery = {};
        
@@ -157,6 +158,7 @@
         */
        clickType: function( e ) {
                e.preventDefault();
+               $.wikiLove.rememberInputData(); // remember previously entered 
data
                $( '#mw-wikilove-get-started' ).hide(); // always hide the get 
started section
                
                var newTypeId = $( this ).data( 'typeId' );
@@ -206,6 +208,8 @@
         * Handler for changing the subtype.
         */
        changeSubtype: function() {
+               $.wikiLove.rememberInputData(); // remember previously entered 
data
+               
                // find out which subtype is selected
                var newSubtypeId = $( '#mw-wikilove-subtype option:selected' 
).first().data( 'subtypeId' );
                if( currentSubtypeId != newSubtypeId ) { // only change stuff 
when a different subtype is selected
@@ -220,11 +224,47 @@
        },
        
        /*
+        * Remember data the user entered if it is different from the default.
+        */
+       rememberInputData: function() {
+               if( rememberData === null) {
+                       rememberData = {
+                               'header' : '',
+                               'title'  : '',
+                               'message': '',
+                               'image'  : '',
+                       };
+               }
+               if( currentTypeOrSubtype !== null ) {
+                       if( !currentTypeOrSubtype.header || $( 
'#mw-wikilove-header' ).val()   != currentTypeOrSubtype.header  ) {
+                               rememberData.header  = $( '#mw-wikilove-header' 
).val();
+                       }
+                       if( !currentTypeOrSubtype.title  || $( 
'#mw-wikilove-title' ).val()    != currentTypeOrSubtype.title ) {
+                               rememberData.title   = $( '#mw-wikilove-title' 
).val();
+                       }
+                       if( !currentTypeOrSubtype.message || $( 
'#mw-wikilove-message' ).val() != currentTypeOrSubtype.message ) {
+                               rememberData.message = $( 
'#mw-wikilove-message' ).val();
+                       }
+                       if( typeof currentTypeOrSubtype.gallery == undefined && 
$.inArray( 'image', currentTypeOrSubtype.fields ) >= 0 ) {
+                               rememberData.image   = $( '#mw-wikilove-image' 
).val();
+                       }
+               }
+       },
+       
+       /*
         * Called when type or subtype changes, updates controls.
         */
        updateAllDetails: function() {
                $( '#mw-wikilove-dialog' ).find( '.mw-wikilove-error' 
).remove();
                
+               // use remembered data for fields that can be set by the user
+               var currentRememberData = {
+                       'header' : ( $.inArray( 'header', 
currentTypeOrSubtype.fields )  >= 0 ? rememberData.header : '' ),
+                       'title'  : ( $.inArray( 'title', 
currentTypeOrSubtype.fields )   >= 0 ? rememberData.title : '' ),
+                       'message': ( $.inArray( 'message', 
currentTypeOrSubtype.fields ) >= 0 ? rememberData.message : '' ),
+                       'image'  : ( $.inArray( 'image', 
currentTypeOrSubtype.fields )   >= 0 ? rememberData.image : '' ),
+               };
+               
                // only show the description if it exists for this type or 
subtype
                if( typeof currentTypeOrSubtype.descr == 'string' ) {
                        $( '#mw-wikilove-subtype-description').show();
@@ -237,21 +277,21 @@
                        .toggle( $.inArray( 'header', 
currentTypeOrSubtype.fields ) >= 0 );
                
                // set the new text for the header textbox
-               $( '#mw-wikilove-header' ).val( currentTypeOrSubtype.header || 
'' );
+               $( '#mw-wikilove-header' ).val( currentRememberData.header || 
currentTypeOrSubtype.header || '' );
                
                // show or hide title label and textbox depending on fields 
configuration
                $( '#mw-wikilove-title, #mw-wikilove-title-label')
                        .toggle( $.inArray( 'title', 
currentTypeOrSubtype.fields ) >= 0 );
                
                // set the new text for the title textbox
-               $( '#mw-wikilove-title' ).val( currentTypeOrSubtype.title || '' 
);
+               $( '#mw-wikilove-title' ).val( currentRememberData.title || 
currentTypeOrSubtype.title || '' );
                
                // show or hide image label and textbox depending on fields 
configuration
                $( '#mw-wikilove-image, #mw-wikilove-image-label, 
#mw-wikilove-image-note, #mw-wikilove-commons-text' )
                        .toggle( $.inArray( 'image', 
currentTypeOrSubtype.fields ) >= 0 );
                
                // set the new text for the image textbox
-               $( '#mw-wikilove-image' ).val( currentTypeOrSubtype.image || '' 
);
+               $( '#mw-wikilove-image' ).val( currentRememberData.image || 
currentTypeOrSubtype.image || '' );
                
                if( typeof currentTypeOrSubtype.gallery == 'object' 
                        && $.isArray( currentTypeOrSubtype.gallery.imageList )
@@ -268,7 +308,7 @@
                        .toggle( $.inArray( 'message', 
currentTypeOrSubtype.fields ) >= 0 );
                        
                // set the new text for the message textbox
-               $( '#mw-wikilove-message' ).val( currentTypeOrSubtype.message 
|| '' );
+               $( '#mw-wikilove-message' ).val( currentRememberData.message || 
currentTypeOrSubtype.message || '' );
                
                if( $.inArray( 'notify', currentTypeOrSubtype.fields ) >= 0 && 
emailable ) {
                        $( '#mw-wikilove-notify' ).show();


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to