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

Revision: 114620
Author:   bsitu
Date:     2012-03-30 00:24:22 +0000 (Fri, 30 Mar 2012)
Log Message:
-----------
Add JavasScript and API code for stats navigation

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

Added Paths:
-----------
    trunk/extensions/PageTriage/api/ApiPageTriageStats.php
    
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js

Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php  2012-03-29 23:47:42 UTC (rev 
114619)
+++ trunk/extensions/PageTriage/PageTriage.php  2012-03-30 00:24:22 UTC (rev 
114620)
@@ -61,6 +61,7 @@
 
 $wgAutoloadClasses['ApiPageTriageList'] = $dir . 'api/ApiPageTriageList.php';
 $wgAutoloadClasses['ApiPageTriageGetMetadata'] = $dir . 
'api/ApiPageTriageGetMetadata.php';
+$wgAutoloadClasses['ApiPageTriageStats'] = $dir . 'api/ApiPageTriageStats.php';
 
 // custom exceptions
 $wgAutoloadClasses['MWArticleMetadataMissingPageIdException'] = $dir . 
'includes/ArticleMetadata.php';
@@ -70,6 +71,7 @@
 // api modules
 $wgAPIModules['pagetriagelist'] = 'ApiPageTriageList';
 $wgAPIModules['pagetriagegetmetadata'] = 'ApiPageTriageGetMetadata';
+$wgAPIModules['pagetriagestats'] = 'ApiPageTriageStats';
 
 // hooks
 $wgHooks['LoadExtensionSchemaUpdates'][] = 'efPageTriageSchemaUpdates';
@@ -173,7 +175,8 @@
                'ext.pageTriage.external'
        ),
        'scripts' => array(
-               'ext.pageTriage.models/ext.pageTriage.article.js'
+               'ext.pageTriage.models/ext.pageTriage.article.js',
+               'ext.pageTriage.models/ext.pageTriage.stats.js'
        )
 );
 

Modified: trunk/extensions/PageTriage/SpecialPageTriage.php
===================================================================
--- trunk/extensions/PageTriage/SpecialPageTriage.php   2012-03-29 23:47:42 UTC 
(rev 114619)
+++ trunk/extensions/PageTriage/SpecialPageTriage.php   2012-03-30 00:24:22 UTC 
(rev 114620)
@@ -155,7 +155,7 @@
                                
                                <script type="text/template" 
id="listControlNavTemplate">
                                        <span 
class="mwe-pt-control-label"><b><%= gM( 'pagetriage-showing' ) %></b> some 
things</span>
-                                       <span 
class="mwe-pt-control-label-right"><%= gM( 'pagetriage-article-count', 100, 
'untriaged' ) %></span><br/>
+                                       <span 
class="mwe-pt-control-label-right"><%= gM( 'pagetriage-article-count', 
ptr_untriaged_article_count, 'untriaged' ) %></span><br/>
                                        <span 
id="mwe-pt-filter-dropdown-control" class="mwe-pt-control-label">
                                                <b>
                                                        <%= gM( 
'pagetriage-filter-list-prompt' ) %>

Added: trunk/extensions/PageTriage/api/ApiPageTriageStats.php
===================================================================
--- trunk/extensions/PageTriage/api/ApiPageTriageStats.php                      
        (rev 0)
+++ trunk/extensions/PageTriage/api/ApiPageTriageStats.php      2012-03-30 
00:24:22 UTC (rev 114620)
@@ -0,0 +1,27 @@
+<?php
+
+class ApiPageTriageStats extends ApiBase {
+
+       public function execute() {
+               $data = array( 
+                               'untriagedarticle' => 
PageTriageUtil::getUntriagedArticleStat(), 
+                               'toptriager' => PageTriageUtil::getTopTriager() 
+                       );
+
+               $result = array( 'result' => 'success', 'stats' => $data );
+               $this->getResult()->addValue( null, $this->getModuleName(), 
$result );
+       }
+
+       public function getAllowedParams() {
+               return array();
+       }
+
+       public function getVersion() {
+               return __CLASS__ . ': $Id: ApiPageTriageStatsNav.php $';
+       }
+
+       public function getDescription() {
+               return 'Get the stats for page triage';
+       }
+
+}


Property changes on: trunk/extensions/PageTriage/api/ApiPageTriageStats.php
___________________________________________________________________
Added: svn:eol-style
   + native

Added: 
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js
                           (rev 0)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js
   2012-03-30 00:24:22 UTC (rev 114620)
@@ -0,0 +1,26 @@
+// Stats represents the dashboard data for pagetriage
+$( function() {
+       if ( !mw.pageTriage ) {
+               mw.pageTriage = {};
+       }
+       mw.pageTriage.Stats = Backbone.Model.extend( {
+               defaults: {
+                       title: 'PageTriage Dashboard Data',
+                       pageid: ''
+               },
+               
+               initialize: function() {
+                       this.bind( 'change', this.formatMetadata, this );
+               },
+               
+               formatMetadata: function ( stats ) {
+                       stats.set( 'ptr_untriaged_article_count', stats.get( 
'untriagedarticle' )['count'] );
+               },
+               url: mw.util.wikiScript( 'api' ) + 
'?action=pagetriagestats&format=json',
+
+               parse: function( response ) {
+                       // extract the useful bits of json.
+                       return response.pagetriagestats.stats;
+               }
+       } );
+} );


Property changes on: 
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
   2012-03-29 23:47:42 UTC (rev 114619)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
   2012-03-30 00:24:22 UTC (rev 114620)
@@ -38,7 +38,7 @@
                render: function() {
                        _this = this;
                        // render and return the template.  fill with the 
current model.
-                       $( "#mwe-pt-list-control-nav").html( this.template() );
+                       $( "#mwe-pt-list-control-nav").html( this.template( 
this.model.toJSON() ) );
 
                        // make a button
                        $( ".mwe-pt-filter-set-button" ).button( {

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
 2012-03-29 23:47:42 UTC (rev 114619)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
 2012-03-30 00:24:22 UTC (rev 114620)
@@ -3,12 +3,13 @@
 
        // instantiate the collection of articles
        var articles = new mw.pageTriage.ArticleList;
+       var stats = new mw.pageTriage.Stats;
 
        // set the default sort order.
        articles.comparator = function( article ) {
                return -article.get( "creation_date" );
        };
-       
+
        // overall list view
        // currently, this is the main application view.
        mw.pageTriage.ListView = Backbone.View.extend( {
@@ -19,25 +20,29 @@
                        this.position = 0;
                        articles.bind( 'add', this.addOne, this );
                        articles.bind( 'reset', this.addAll, this );
+                       stats.bind( 'change', this.addNav, this );
                
                        // this event is triggered when the collection finishes 
loading.
                        //articles.bind( 'all', this.render, this );
 
                        // on init, make sure to load the contents of the 
collection.
                        articles.fetch();
+                       stats.fetch();
                },
 
                render: function() {
                        // reset the position indicator
                        this.position = 0;
                        
-                       // add the navigation bits
-                       var controlNav = new mw.pageTriage.ListControlNav( { 
articles: articles } );
-                       controlNav.render();
-
                        var statsNav = new mw.pageTriage.ListStatsNav();
                        $( "#mwe-pt-list-stats-nav").html( statsNav.render().el 
);
                },
+               
+               // add stats data to the navigation
+               addNav: function( stats ) {
+                       var controlNav = new mw.pageTriage.ListControlNav( { 
model: stats } );
+                       controlNav.render();    
+               },
 
                // add a single article to the list
                addOne: function( article ) {


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

Reply via email to