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

Revision: 114851
Author:   kaldari
Date:     2012-04-11 18:34:29 +0000 (Wed, 11 Apr 2012)
Log Message:
-----------
revamping the css and js for loading more articles, allowing infinite scrolling 
override from query string

Modified Paths:
--------------
    trunk/extensions/PageTriage/SpecialPageTriage.php
    
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listStatsNav.css
    
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.css
    
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.js

Modified: trunk/extensions/PageTriage/SpecialPageTriage.php
===================================================================
--- trunk/extensions/PageTriage/SpecialPageTriage.php   2012-04-11 18:30:38 UTC 
(rev 114850)
+++ trunk/extensions/PageTriage/SpecialPageTriage.php   2012-04-11 18:34:29 UTC 
(rev 114851)
@@ -24,7 +24,7 @@
         * @param $sub string The subpage, if any
         */
        public function execute( $sub ) {
-               global $wgPageTriageInfiniteScrolling;
+               global $wgRequest, $wgPageTriageInfiniteScrolling;
                $out = $this->getOutput();
                
                // TODO: check user permissions, make sure they're logged in 
and have the pagepatrol userright
@@ -37,17 +37,24 @@
                // Output the title of the page
                $out->setPageTitle( wfMessage( 'pagetriage' ) );
                
-               // Set whether or not to do infinite scrolling
+               // Set whether or not to do infinite scrolling based on config 
variable
                if ( is_bool( $wgPageTriageInfiniteScrolling ) ) {
                        // Convert to string
                        $infiniteScroll = $wgPageTriageInfiniteScrolling ? 
"true" : "false";
                } else {
                        $infiniteScroll = $wgPageTriageInfiniteScrolling;
                }
+               
+               // Allow override from query string parameter
+               if ( $wgRequest->getVal( 'infinite' ) ) {
+                       $infiniteScroll = true;
+               }
+               
+               // Set the infinite scrolling flag in JavaScript
                $out->addScript( "<script 
type=\"text/javascript\">mw.config.set({\"wgPageTriageInfiniteScrolling\":" . 
                        $infiniteScroll . "});</script>" );
 
-               // load the JS
+               // Load the JS
                $out->addModules( array( 'ext.pageTriage.external', 
'ext.pageTriage.models', 'ext.pageTriage.views.list' ) );
                                
                // This will hold the HTML for the triage interface

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listStatsNav.css
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listStatsNav.css
       2012-04-11 18:30:38 UTC (rev 114850)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listStatsNav.css
       2012-04-11 18:34:29 UTC (rev 114851)
@@ -3,6 +3,7 @@
 }
 
 .stickyBottom #mwe-pt-list-stats-nav {
+       border-top: 1px solid #ccc !important;
        position: fixed;
        bottom: 0;
        left: 160px;

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.css
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.css
   2012-04-11 18:30:38 UTC (rev 114850)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.css
   2012-04-11 18:34:29 UTC (rev 114851)
@@ -10,8 +10,8 @@
        background-color: #E8F2F8;
        margin: 0;
        padding: 0.4em;
-       border-right: 1px solid #ccc;
-       border-left: 1px solid #ccc;
+       border: 1px solid #ccc;
+       border-top: none;
        min-height: 21px;
 }
 

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.js
    2012-04-11 18:30:38 UTC (rev 114850)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views.list/ext.pageTriage.listView.js
    2012-04-11 18:34:29 UTC (rev 114851)
@@ -46,8 +46,8 @@
                        controlNav.render();
                },
                
+               // make the article list infinitely scrolling
                initializeInfiniteScrolling: function() {
-                       // make the article list infinitely scrolling
                        var _this = this;
                        var $anchor = $( '#mwe-pt-list-load-more-anchor' );
                        opts = { offset: '100%' };
@@ -56,11 +56,15 @@
                                        _this.automaticLoadMore();
                                }
                        }, opts );
+                       // replace more link with spinner in hidden div since 
we'll never need the more link
+                       $( '#mwe-pt-list-more' ).empty();
+                       $( '#mwe-pt-list-more' ).append( $.createSpinner( 
'more-spinner' ) );
                },
                
+               // load more method for infinite scrolling
                automaticLoadMore: function() {
                        var _this = this;
-                       $( '#mwe-pt-list-more' ).append( $.createSpinner( 
'more-spinner' ) );
+                       $( '#mwe-pt-list-more' ).show(); // show spinner
                        var lastArticle = articles.last(1);
                        if( 0 in lastArticle ) {
                                articles.apiParams.offset = 
lastArticle[0].attributes.creation_date;
@@ -72,18 +76,17 @@
                        articles.fetch( {
                                add: true,
                                success: function() {
-                                       $.removeSpinner( 'more-spinner' );
-                                       $( '.mwe-pt-article-row' ).last().css( 
'border-bottom', 'none' );
+                                       $( '#mwe-pt-list-more' ).hide(); // 
hide spinner
                                        $.waypoints( 'refresh' );
                                        _this.eventBus.trigger( 
"articleListChange" );
                                        if ( !articles.moreToLoad ) {
                                                $( 
'#mwe-pt-list-load-more-anchor' ).waypoint( 'destroy' );
-                                               $( '#mwe-pt-list-more' ).hide();
                                        }
                                }
                        } );
                },
                
+               // manual load more method (i.e. infinite scrolling turned off)
                manualLoadMore: function() {
                        var _this = this;
                        $( '#mwe-pt-list-more-link' ).hide();
@@ -102,7 +105,6 @@
                                        $.removeSpinner( 'more-spinner' );
                                        $( '#mwe-pt-list-more-link' ).show();
                                        if ( !articles.moreToLoad ) {
-                                               $( '.mwe-pt-article-row' 
).last().css( 'border-bottom', 'none' );
                                                $( '#mwe-pt-list-more' ).hide();
                                        }
                                        $.waypoints( 'refresh' );
@@ -121,7 +123,7 @@
                addOne: function( article ) {
                        // define position, for making alternating background 
colors.
                        // this is added at the last minute, so it gets updated 
when the sort changes.
-                       if(! this.position ) {
+                       if( !this.position ) {
                                this.position = 0;
                        }
                        this.position++;
@@ -136,15 +138,30 @@
                },
 
                // add all the items in the articles collection
+               // this only gets executed when the article collection list is 
reset
                addAll: function() {
-                       $( '#mwe-pt-list-view' ).empty(); // remove the spinner 
before displaying.
+                       
+                       // remove the spinner/wait message and any previously 
displayed articles before loading
+                       // new articles
+                       $( '#mwe-pt-list-view' ).empty();
+                       
+                       // load the new articles
                        articles.forEach( this.addOne, this );
-                       $( '#mwe-pt-list-more' ).show();
-                       if ( mw.config.get( 'wgPageTriageInfiniteScrolling' ) ) 
{
-                               $( '.mwe-pt-article-row' ).last().css( 
'border-bottom', 'none' );
-                               this.initializeInfiniteScrolling();
-                               $( '#mwe-pt-list-more-link' ).hide();
+                       $( '#mwe-pt-list-stats-nav' ).css( 'border-top', 'none' 
);
+                       
+                       // if there are more articles that can be loaded, set 
up loading machanism
+                       if ( articles.moreToLoad ) {
+                               if ( mw.config.get( 
'wgPageTriageInfiniteScrolling' ) ) {
+                                       this.initializeInfiniteScrolling();
+                               } else {
+                                       // Show 'More' link
+                                       $( '#mwe-pt-list-more' ).show();
+                               }
+                       } else {
+                               $( '#mwe-pt-list-more' ).hide();
                        }
+                       
+                       $.waypoints( 'refresh' );
                        this.eventBus.trigger( 'articleListChange' );
            }
 


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

Reply via email to