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

Revision: 98080
Author:   catrope
Date:     2011-09-25 19:58:16 +0000 (Sun, 25 Sep 2011)
Log Message:
-----------
MoodBar: Write the filter state to a cookie and read it on page load. This 
still needs AJAX filtering to be implemented and the on-page-load state to 
actually take effect.

Modified Paths:
--------------
    
trunk/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js

Modified: 
trunk/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js
===================================================================
--- 
trunk/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js 
    2011-09-25 19:40:13 UTC (rev 98079)
+++ 
trunk/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js 
    2011-09-25 19:58:16 UTC (rev 98080)
@@ -1,10 +1,48 @@
 jQuery( function( $ ) {
+       function getSelectedTypes() {
+               var types = [];
+               $( '#fbd-filters-type-praise, #fbd-filters-type-confusion, 
#fbd-filters-type-issues' ).each( function() {
+                       if ( $(this).prop( 'checked' ) ) {
+                               types.push( $(this).val() );
+                       }
+               } );
+               return types;
+       }
+       
+       function setCookies() {
+               $.cookie( 'moodbar-feedback-types', getSelectedTypes().join( 
'|' ), { 'path': '/', 'expires': 7 } );
+               $.cookie( 'moodbar-feedback-username', $( 
'#fbd-filters-username' ).val(), { 'path': '/', 'expires': 7 } );
+       }
+       
+       function loadFromCookies() {
+               var     cookieTypes = $.cookie( 'moodbar-feedback-types' );
+                       $username = $( '#fbd-filters-username' );
+               if ( $username.val() == '' ) {
+                       var cookieUsername = $.cookie( 
'moodbar-feedback-username' );
+                       if ( cookieUsername != '' ) {
+                               $username.val( cookieUsername );
+                       }
+               }
+               
+               if ( cookieTypes ) {
+                       cookieTypes = '|' + cookieTypes;
+                       $( '#fbd-filters-type-praise, 
#fbd-filters-type-confusion, #fbd-filters-type-issues' ).each( function() {
+                               if ( !$(this).prop( 'checked' ) && 
cookieTypes.indexOf( '|' + $(this).val() ) != -1 ) {
+                                       $(this).prop( 'checked', true );
+                               }
+                       } );
+               }
+       }
+       
+       $( '#fbd-filters-set' ).click( setCookies );
+       loadFromCookies();
+       
        $( '#fbd-list-more').children( 'a' ).click( function( e ) {
                e.preventDefault();
                
                var     limit = 20,
                        username = $( '#fbd-filters-username' ).val(),
-                       types = [],
+                       types = getSelectedTypes(),
                        reqData;
                
                // Hide the "More" link and put in a spinner
@@ -22,11 +60,6 @@
                        'mbclimit': limit + 2, // we drop the first and last 
result
                        'mbccontinue': $( '#fbd-list').find( 'li:last' ).data( 
'mbccontinue' )
                };
-               $( '#fbd-filters-type-praise, #fbd-filters-type-confusion, 
#fbd-filters-type-issues' ).each( function() {
-                       if ( $(this).prop( 'checked' ) ) {
-                               types.push( $(this).val() );
-                       }
-               } );
                if ( types.length ) {
                        reqData['mbctype'] = types.join( '|' );
                }


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

Reply via email to