https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114763
Revision: 114763
Author: kaldari
Date: 2012-04-06 06:27:51 +0000 (Fri, 06 Apr 2012)
Log Message:
-----------
improving more link, adding support for infinite scrolling, fixing layout of
stats bar, etc.
Modified Paths:
--------------
trunk/extensions/PageTriage/PageTriage.php
trunk/extensions/PageTriage/SpecialPageTriage.php
trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.article.js
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.css
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.js
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.css
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php 2012-04-06 05:06:27 UTC (rev
114762)
+++ trunk/extensions/PageTriage/PageTriage.php 2012-04-06 06:27:51 UTC (rev
114763)
@@ -44,7 +44,8 @@
);
// Begin configuration variables
-$wgPageTriagePageIdPerRequest = 20;
+$wgPageTriagePagesPerRequest = 20; // Maximum number of articles for the API
to retrieve at once
+$wgPageTriageInfiniteScrolling = false; // Whether or not to use infinite
scrolling in the page list
// End configuration variables
$dir = dirname( __FILE__ ) . '/';
@@ -189,7 +190,8 @@
'dependencies' => array(
'mediawiki.jqueryMsg',
'ext.pageTriage.models',
- 'jquery.ui.button'
+ 'jquery.ui.button',
+ 'jquery.spinner'
),
'scripts' => array(
'ext.pageTriage.views/ext.pageTriage.listItem.js',
Modified: trunk/extensions/PageTriage/SpecialPageTriage.php
===================================================================
--- trunk/extensions/PageTriage/SpecialPageTriage.php 2012-04-06 05:06:27 UTC
(rev 114762)
+++ trunk/extensions/PageTriage/SpecialPageTriage.php 2012-04-06 06:27:51 UTC
(rev 114763)
@@ -24,6 +24,7 @@
* @param $sub string The subpage, if any
*/
public function execute( $sub ) {
+ global $wgPageTriageInfiniteScrolling;
$out = $this->getOutput();
// TODO: check user permissions, make sure they're logged in
and have the pagepatrol userright
@@ -35,6 +36,16 @@
// Output the title of the page
$out->setPageTitle( wfMessage( 'pagetriage' ) );
+
+ // Set whether or not to do infinite scrolling
+ if ( is_bool( $wgPageTriageInfiniteScrolling ) ) {
+ // Convert to string
+ $infiniteScroll = $wgPageTriageInfiniteScrolling ?
"true" : "false";
+ } else {
+ $infiniteScroll = $wgPageTriageInfiniteScrolling;
+ }
+ $out->addScript( "<script
type=\"text/javascript\">mw.config.set({\"wgPageTriageInfiniteScrolling\":" .
+ $infiniteScroll . "});</script>" );
// load the JS
$out->addModules( array( 'ext.pageTriage.external',
'ext.pageTriage.models', 'ext.pageTriage.views' ) );
@@ -48,7 +59,10 @@
// TODO: this should load with a spinner instead of "please
wait"
$triageInterface .= "<div id='mwe-pt-list-view'>Please
wait...</div>";
- $triageInterface .= "<div id='mwe-pt-list-stats-nav'
class='mwe-pt-navigation-bar mwe-pt-control-gradient'></div>";
+ $triageInterface .= "<div
id='mwe-pt-list-load-more-anchor'></div>";
+ $triageInterface .= "<div id='mwe-pt-list-stats-nav'
class='mwe-pt-navigation-bar mwe-pt-control-gradient'>";
+ $triageInterface .= "<div
id='mwe-pt-list-stats-nav-content'></div>";
+ $triageInterface .= "</div>";
$triageInterface .= "<div
id='mwe-pt-list-stats-nav-anchor'></div>";
// These are the templates that backbone/underscore render on
the client.
Modified: trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
===================================================================
--- trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
2012-04-06 05:06:27 UTC (rev 114762)
+++ trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
2012-04-06 06:27:51 UTC (rev 114763)
@@ -3,11 +3,11 @@
class ApiPageTriageGetMetadata extends ApiBase {
public function execute() {
- global $wgPageTriagePageIdPerRequest;
+ global $wgPageTriagePagesPerRequest;
$params = $this->extractRequestParams();
- if ( count( $params['page_id'] ) >
$wgPageTriagePageIdPerRequest ) {
+ if ( count( $params['page_id'] ) > $wgPageTriagePagesPerRequest
) {
$this->dieUsage( 'Too many pages in the request',
'exceed-page-limit' );
}
Modified:
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.article.js
===================================================================
---
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.article.js
2012-04-06 05:06:27 UTC (rev 114762)
+++
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.article.js
2012-04-06 06:27:51 UTC (rev 114763)
@@ -47,7 +47,7 @@
apiParams: {
namespace: 0,
- limit: 50,
+ limit: 20,
dir: 'newestfirst',
/*
showbots: null,
Modified:
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.css
===================================================================
---
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.css
2012-04-06 05:06:27 UTC (rev 114762)
+++
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.css
2012-04-06 06:27:51 UTC (rev 114763)
@@ -1,4 +1,4 @@
-#mwe-pt-list-stats-nav {
+#mwe-pt-list-stats-nav-content {
padding: 0.5em 1em;
}
Modified:
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.js
===================================================================
---
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.js
2012-04-06 05:06:27 UTC (rev 114762)
+++
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listStatsNav.js
2012-04-06 06:27:51 UTC (rev 114763)
@@ -40,7 +40,7 @@
render: function() {
// insert the template into the document. fill with
the current model.
- $( "#mwe-pt-list-stats-nav").html( this.template(
this.model.toJSON() ) );
+ $( "#mwe-pt-list-stats-nav-content" ).html(
this.template( this.model.toJSON() ) );
if( $( '#mwe-pt-list-stats-nav-anchor' ).offset().top <
$.waypoints('viewportHeight') ) {
// turn off floating nav, bring the bar back
into the list.
Modified:
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.css
===================================================================
---
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.css
2012-04-06 05:06:27 UTC (rev 114762)
+++
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.css
2012-04-06 06:27:51 UTC (rev 114763)
@@ -5,9 +5,17 @@
#mwe-pt-list-more {
text-align: center;
+ font-size: 17px;
+ line-height: 20px;
background-color: #E8F2F8;
margin: 0;
- padding: 0.5em;
+ padding: 0.4em;
border-right: 1px solid #ccc;
border-left: 1px solid #ccc;
+ min-height: 21px;
}
+
+#mwe-pt-list-more a {
+ cursor: pointer;
+}
+
Modified:
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
===================================================================
---
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
2012-04-06 05:06:27 UTC (rev 114762)
+++
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
2012-04-06 06:27:51 UTC (rev 114763)
@@ -22,7 +22,7 @@
articles.bind( 'add', this.addOne, this );
articles.bind( 'reset', this.addAll, this );
stats.bind( 'change', this.addStats, this );
-
+
// this event is triggered when the collection finishes
loading.
//articles.bind( 'all', this.render, this );
@@ -37,24 +37,50 @@
var controlNav = new mw.pageTriage.ListControlNav( {
eventBus: this.eventBus, model: articles } );
controlNav.render();
-
- // create the more link
+ },
+
+ initializeInfiniteScrolling: function() {
+ // make the article list infinitely scrolling
_this = this;
- $( '#mwe-pt-list-view' ).after( $( '<div
id="mwe-pt-list-more"></div>' )
- .append( $( '<a></a>' ).msg( 'pagetriage-more' )
- .click( function() {
- _this.loadMore();
- } )
- )
- );
+ var $anchor = $( '#mwe-pt-list-load-more-anchor' );
+ opts = { offset: '100%' };
+ $anchor.waypoint( function( event, direction ) {
+ if ( direction == 'down' ) {
+ _this.automaticLoadMore();
+ }
+ }, opts );
},
- loadMore: function() {
+ automaticLoadMore: function() {
var lastArticle = articles.last(1);
articles.apiParams.offset =
lastArticle[0].attributes.creation_date;
- articles.fetch( {add: true} );
+ articles.fetch( {
+ add: true,
+ success: function() {
+ $( '.mwe-pt-article-row' ).last().css(
'border-bottom', 'none' );
+ $.waypoints( 'refresh' );
+ }
+ } );
},
+ manualLoadMore: function() {
+ $( '#mwe-pt-list-more' ).empty();
+ $( '#mwe-pt-list-more' ).append( $.createSpinner(
'more-spinner' ) );
+ var lastArticle = articles.last(1);
+ articles.apiParams.offset =
lastArticle[0].attributes.creation_date;
+ articles.fetch( {
+ add: true,
+ success: function() {
+ $.removeSpinner( 'more-spinner' );
+ $( '#mwe-pt-list-more' ).append(
+ $( '<a></a>' ).msg(
'pagetriage-more' ).click( function() {
+ _this.manualLoadMore();
+ } )
+ );
+ }
+ } );
+ },
+
// add stats data to the navigation
addStats: function( stats ) {
var statsNav = new mw.pageTriage.ListStatsNav( {
eventBus: this.eventBus, model: stats } );
@@ -80,8 +106,22 @@
// add all the items in the articles collection
addAll: function() {
- $("#mwe-pt-list-view").empty(); // remove the spinner
before displaying.
+ $( '#mwe-pt-list-view' ).empty(); // remove the spinner
before displaying.
articles.forEach( this.addOne, this );
+ if ( mw.config.get( 'wgPageTriageInfiniteScrolling' ) )
{
+ $( '.mwe-pt-article-row' ).last().css(
'border-bottom', 'none' );
+ this.initializeInfiniteScrolling();
+ } else {
+ _this = this;
+ // Add a 'More' link
+ $( '#mwe-pt-list-view' ).after( $( '<div
id="mwe-pt-list-more"></div>' )
+ .append( $( '<a></a>' ).msg(
'pagetriage-more' )
+ .click( function() {
+ _this.manualLoadMore();
+ } )
+ )
+ );
+ }
this.eventBus.trigger( 'listAddAll' );
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs