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