https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114723

Revision: 114723
Author:   raindrift
Date:     2012-04-04 23:45:13 +0000 (Wed, 04 Apr 2012)
Log Message:
-----------
made the filter status display work
fixed a bug where the menu wouldn't always put itself away properly

Modified Paths:
--------------
    trunk/extensions/PageTriage/PageTriage.i18n.php
    trunk/extensions/PageTriage/PageTriage.php
    
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js

Modified: trunk/extensions/PageTriage/PageTriage.i18n.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.i18n.php     2012-04-04 23:31:46 UTC 
(rev 114722)
+++ trunk/extensions/PageTriage/PageTriage.i18n.php     2012-04-04 23:45:13 UTC 
(rev 114723)
@@ -56,7 +56,16 @@
        'pagetriage-filter-ns-article' => 'Article',
        'pagetriage-filter-ns-all' => 'All',
        'pagetriage-more' => 'More',
+       'pagetriage-filter-stat-all' => 'All',
        'pagetriage-filter-stat-namespace' => 'Namespace: $1',
+       'pagetriage-filter-stat-triaged' => 'Triaged',
+       'pagetriage-filter-stat-bots' => 'Bots',
+       'pagetriage-filter-stat-redirects' => 'Redirects',
+       'pagetriage-filter-stat-no-categories' => 'No categories',
+       'pagetriage-filter-stat-orphan' => 'Orphans',
+       'pagetriage-filter-stat-non-autoconfirmed' => 'New editors',
+       'pagetriage-filter-stat-blocked' => 'Blocked users',
+       
 );
 
 /**
@@ -105,5 +114,16 @@
        'pagetriage-filter-ns-article' => 'The name of the main article 
namespace, for the namespace filter select list',
        'pagetriage-filter-ns-all' => 'For the namespace filter select list, 
text indicating that all namespaces will be selected',
        'pagetriage-more' => 'Text for a link that loads more articles into 
list',
-       'pagetriage-filter-stat-namespace' => 'Status display for the namespace 
filter.  $1 is the name of the namespace.',
+       'pagetriage-filter-stat-all' => 'Status display component for all pages 
(no filter)',
+       'pagetriage-filter-stat-namespace' => 'Status display component for the 
namespace filter.  $1 is the name of the namespace.',
+       'pagetriage-filter-stat-triaged' => 'Status display component for 
triaged pages',
+       'pagetriage-filter-stat-bots' => 'Status display component for 
bot-created pages',
+       'pagetriage-filter-stat-redirects' => 'Status display component for 
redirects',
+       'pagetriage-filter-stat-no-categories' => 'Status display component for 
articles with no categories',
+       'pagetriage-filter-stat-orphan' => 'Status display component for orphan 
articles',
+       'pagetriage-filter-stat-non-autoconfirmed' => 'Status display component 
for articles by non-autoconfirmed editors',
+       'pagetriage-filter-stat-blocked' => 'Status display component for 
articles by blocked users',
+       
+
+       
 );

Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php  2012-04-04 23:31:46 UTC (rev 
114722)
+++ trunk/extensions/PageTriage/PageTriage.php  2012-04-04 23:45:13 UTC (rev 
114723)
@@ -249,6 +249,14 @@
                'pagetriage-filter-ns-all',
                'pagetriage-more',
                'pagetriage-filter-stat-namespace',
+               'pagetriage-filter-stat-triaged',
+               'pagetriage-filter-stat-bots',
+               'pagetriage-filter-stat-redirects',
+               'pagetriage-filter-stat-all',
+               'pagetriage-filter-stat-no-categories',
+               'pagetriage-filter-stat-orphan',
+               'pagetriage-filter-stat-non-autoconfirmed',
+               'pagetriage-filter-stat-blocked',
        )
 );
 

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
   2012-04-04 23:31:46 UTC (rev 114722)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
   2012-04-04 23:45:13 UTC (rev 114723)
@@ -5,7 +5,8 @@
                tagName: "div",
                template: _.template( $( "#listControlNavTemplate" ).html() ),
                filterMenuVisible: 0,
-               filterStatus: 'All',
+               filterStatus: gM( 'pagetriage-filter-stat-all'),
+               newFilterStatus: [],
 
                initialize: function( options ) {
                        var _this = this;
@@ -43,6 +44,10 @@
 
                render: function() {
                        var _this = this;
+                       
+                       if(! this.filterStatus ) {
+                               this.filterStatus = gM( 
'pagetriage-filter-stat-all');
+                       }
                        // render and return the template.  fill with the 
current model.
                        $( "#mwe-pt-list-control-nav-content").html( 
this.template( { filterStatus: this.filterStatus } ) );
                        
@@ -60,24 +65,15 @@
                                icons: { secondary:'ui-icon-triangle-1-e' }
                        } );
                        $( ".mwe-pt-filter-set-button" ).click( function( e ) {
+                               console.log('set button clicked');
                                _this.filterSync();
                                _this.toggleFilterMenu();                       
        
                                e.stopPropagation();
                        } );
                        
                        // the filter dropdown menu control
+                       console.log('click event set on body and menu');
                        $( '#mwe-pt-filter-dropdown-control' ).click( function( 
e ) {
-                               // close the meny when the user clicks away
-                               $( 'body' ).one( 'click', function() {
-                                       _this.toggleFilterMenu();
-                               } );
-
-                               // this event "covers up" the body event, which 
keeps the menu from closing when
-                               // the user clicks inside.
-                               $( '#mwe-pt-control-dropdown' ).click( 
function( e ) {
-                                       e.stopPropagation();
-                               } );
-
                                _this.toggleFilterMenu();
                                e.stopPropagation();
                        } );                    
@@ -91,15 +87,32 @@
                        $( '#mwe-pt-list-control-nav' ).css( 'width', 
$(window).width() - 176 - 16 - 2 + "px" );
                },
                
-               toggleFilterMenu: function() {
-                       if( this.filterMenuVisible ) {
+               toggleFilterMenu: function( action ) {
+                       var _this = this;
+                       if( (action && action == 'close') || 
this.filterMenuVisible ) {
                                $( '#mwe-pt-dropdown-arrow' ).html( '▸' 
);
                                $( '#mwe-pt-control-dropdown' ).css( 
'visibility', 'hidden' );
+                               $( 'body' ).unbind( 'click' ); // remove these 
events since they're not needed til next time.
+                               $( '#mwe-pt-control-dropdown' ).unbind( 'click' 
);
                                this.filterMenuVisible = 0;
-                       } else {
+                       } else if( (action && action == 'open') || 
!this.filterMenuVisible ) {
                                this.menuSync();
                                $( '#mwe-pt-control-dropdown' ).css( 
'visibility', 'visible' );
                                $( '#mwe-pt-dropdown-arrow' ).html( '▾' 
);
+
+                               // close the menu when the user clicks away
+                               $( 'body' ).click( 'click', function() {
+                                       console.log('body clicked');
+                                       _this.toggleFilterMenu( 'close' );
+                               } );
+
+                               // this event "covers up" the body event, which 
keeps the menu from closing when
+                               // the user clicks inside.
+                               $( '#mwe-pt-control-dropdown' ).click( 
function( e ) {
+                                       console.log('menu clicked');
+                                       e.stopPropagation();
+                               } );
+
                                this.filterMenuVisible = 1;                     
        
                        }
                },
@@ -170,34 +183,47 @@
                
                // sync the menu with the contents of the filters
                menuSync: function() {
-                       var newFilterStatus = [];
+                       this.newFilterStatus = [];
 
                        $( '#mwe-pt-filter-namespace' ).val( 
this.model.getParam( 'namespace' ) );
 
                        // update the status display
                        if( this.model.getParam( 'namespace' ) > -1 ) { // 
still true for ns 0
-                               newFilterStatus.push( gM( 
'pagetriage-filter-stat-namespace', this.model.getParam( 'namespace' ) ) );   
+                               var ns = this.model.getParam( 'namespace' );
+                               var nsText;
+                               if( ns == 0 ) {
+                                       nsText = gM( 
'pagetriage-filter-ns-article' );
+                               } else {
+                                       nsText = mw.config.get( 
'wgFormattedNamespaces' )[ns];
+                               }
+                               this.newFilterStatus.push( gM( 
'pagetriage-filter-stat-namespace', nsText ) );  
                        }
                        
-                       // TODO: update the status for everything else.
-                               
-                       $( '#mwe-pt-filter-triaged-edits' ).prop( 'checked', 
this.model.getParam( 'showtriaged' )=="1"?true:false );
-                       // api doesn't support this?
-                       //$( '#mwe-pt-filter-nominated-for-deletion' ).prop( 
'checked', this.model.getParam('')=="1"?true:false );
-                       $( '#mwe-pt-filter-bot-edits' ).prop( 'checked', 
this.model.getParam( 'showbots' )=="1"?true:false );
-                       $( '#mwe-pt-filter-redirects' ).prop( 'checked', 
this.model.getParam( 'showredirs' )=="1"?true:false );
-                       
+                       this.menuCheckboxUpdate( $( 
'#mwe-pt-filter-triaged-edits' ), 'showtriaged', 
'pagetriage-filter-stat-triaged');
+                       // api doesn't suppor this one.
+                       //this.menuCheckboxUpdate( $( 
'#mwe-pt-filter-nominated-for-deletion' ' ), '', '');
+                       this.menuCheckboxUpdate( $( '#mwe-pt-filter-bot-edits' 
), 'showbots', 'pagetriage-filter-stat-bots');
+                       this.menuCheckboxUpdate( $( '#mwe-pt-filter-redirects' 
), 'showredirs', 'pagetriage-filter-stat-redirects');
+
                        /* api doesn't support these
                        $( '#mwe-pt-filter-user' ).val( this.model.getParam('') 
);
                        $( '#mwe-pt-filter-tag' ).val( this.model.getParam('') 
);
                        */
-                       
-                       $( '#mwe-pt-filter-no-categories' ).prop( 'checked', 
this.model.getParam( 'no_category' )=="1"?true:false );
-                       $( '#mwe-pt-filter-orphan' ).prop( 'checked', 
this.model.getParam( 'no_inbound_links' )=="1"?true:false );
-                       $( '#mwe-pt-filter-non-autoconfirmed' ).prop( 
'checked', this.model.getParam( 'non_autoconfirmed_users' )=="1"?true:false );
-                       $( '#mwe-pt-filter-blocked' ).prop( 'checked', 
this.model.getParam( 'blocked_users' )=="1"?true:false );
-                       
-                       this.filterStatus = newFilterStatus.join('.');          
        
+
+                       this.menuCheckboxUpdate( $( 
'#mwe-pt-filter-no-categories' ), 'no_category', 
'pagetriage-filter-stat-no-categories');
+                       this.menuCheckboxUpdate( $( '#mwe-pt-filter-orphan' ), 
'no_inbound_links', 'pagetriage-filter-stat-orphan');
+                       this.menuCheckboxUpdate( $( 
'#mwe-pt-filter-non-autoconfirmed' ), 'non_autoconfirmed_users', 
'pagetriage-filter-stat-non-autoconfirmed');
+                       this.menuCheckboxUpdate( $( '#mwe-pt-filter-blocked' ), 
'blocked_users', 'pagetriage-filter-stat-blocked');
+
+                       this.filterStatus = this.newFilterStatus.join(' · 
');                      
+               },
+               
+               menuCheckboxUpdate: function( $checkbox, param, message ) {
+                       // update a checkbox in the menu with data from the 
model.
+                       $checkbox.prop( 'checked', this.model.getParam( param 
)=="1"?true:false );
+                       if( this.model.getParam( param ) ) {
+                               this.newFilterStatus.push( gM( message ) );
+                       }
                }
                
        } );


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

Reply via email to