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

Revision: 114684
Author:   bsitu
Date:     2012-04-03 18:05:33 +0000 (Tue, 03 Apr 2012)
Log Message:
-----------
Display top 5 triagers at nav bar

Modified Paths:
--------------
    trunk/extensions/PageTriage/PageTriage.i18n.php
    trunk/extensions/PageTriage/PageTriage.php
    trunk/extensions/PageTriage/SpecialPageTriage.php
    trunk/extensions/PageTriage/api/ApiPageTriageStats.php
    trunk/extensions/PageTriage/includes/PageTriageUtil.php
    
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js

Modified: trunk/extensions/PageTriage/PageTriage.i18n.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.i18n.php     2012-04-03 17:53:21 UTC 
(rev 114683)
+++ trunk/extensions/PageTriage/PageTriage.i18n.php     2012-04-03 18:05:33 UTC 
(rev 114684)
@@ -52,6 +52,7 @@
        'pagetriage-filter-set-button' => 'Set Filters',
        'pagetriage-stats-untriaged-age' => 'Article Ages: Average: $1, Oldest: 
$2',
        'pagetriage-stats-less-than-a-day' => 'less than one day',
+       'pagetriage-stats-top-triagers' => 'Top {{PLURAL:$1|triager|$1 
triagers}}: $2',
        'pagetriage-filter-ns-article' => 'Article',
 );
 
@@ -95,7 +96,8 @@
        'pagetriage-filter-non-autoconfirmed' => 'Checkbox text for articles by 
non-Autoconfirmed users',
        'pagetriage-filter-blocked' => 'Checkbox text for articles by blocked 
users',
        'pagetriage-filter-set-button' => 'Button text for the set filter 
button',
-       'pagetriage-stats-untriaged-age' => 'Navigation text displaying triage 
stats',
+       'pagetriage-stats-untriaged-age' => 'Navigation text displaying triage 
stats, $1 and $2 are the ages of average and oldest articles respectively',
        'pagetriage-stats-less-than-a-day' => 'show this message if the article 
age is less than one day, part of variable $1 and $2 of 
{{msg-pagetriage|pagetriage-stats-untriaged-age}} ',
+       'pagetriage-stats-top-triagers' => 'Text that shows top triagers, $1 is 
the total number, $2 shows the detail',
        'pagetriage-filter-ns-article' => 'The name of the main article 
namespace',
 );

Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php  2012-04-03 17:53:21 UTC (rev 
114683)
+++ trunk/extensions/PageTriage/PageTriage.php  2012-04-03 18:05:33 UTC (rev 
114684)
@@ -239,6 +239,8 @@
                'pagetriage-filter-set-button',
                'pagetriage-stats-untriaged-age',
                'pagetriage-stats-less-than-a-day',
+               'pagetriage-stats-top-triagers',
+               'days',
                'pagetriage-filter-ns-article',
        )
 );

Modified: trunk/extensions/PageTriage/SpecialPageTriage.php
===================================================================
--- trunk/extensions/PageTriage/SpecialPageTriage.php   2012-04-03 17:53:21 UTC 
(rev 114683)
+++ trunk/extensions/PageTriage/SpecialPageTriage.php   2012-04-03 18:05:33 UTC 
(rev 114684)
@@ -228,7 +228,12 @@
                                </script>
                                
                                <script type="text/template" 
id="listStatsNavTemplate">
-                                       <% if ( ptrAverage ) { %> <%= gM( 
'pagetriage-stats-untriaged-age', ptrAverage, ptrOldest ) %> <% } %>
+                                       <div id="mwe-pt-top-triager">
+                                               <%= ptrTopTriager %>
+                                       </div>
+                                       <div id="mwe-pt-article-age-stats">
+                                               <% if ( ptrAverage ) { %> <%= 
gM( 'pagetriage-stats-untriaged-age', ptrAverage, ptrOldest ) %> <% } %>
+                                       </div>
                                </script>
                                
 HTML;

Modified: trunk/extensions/PageTriage/api/ApiPageTriageStats.php
===================================================================
--- trunk/extensions/PageTriage/api/ApiPageTriageStats.php      2012-04-03 
17:53:21 UTC (rev 114683)
+++ trunk/extensions/PageTriage/api/ApiPageTriageStats.php      2012-04-03 
18:05:33 UTC (rev 114684)
@@ -3,9 +3,18 @@
 class ApiPageTriageStats extends ApiBase {
 
        public function execute() {
-               $data = array( 
-                               'untriagedarticle' => 
PageTriageUtil::getUntriagedArticleStat(), 
-                               'toptriager' => PageTriageUtil::getTopTriager() 
+               $topTriager = PageTriageUtil::getTopTriager();
+               // Grab at most top 5 from cache
+               if ( count( $topTriager ) > 5 ) {
+                       $topTriager = array_slice( 
PageTriageUtil::getTopTriager(), 0 , 5 );
+               }
+
+               $data = array(
+                               'untriagedarticle' => 
PageTriageUtil::getUntriagedArticleStat(),
+                               'toptriager' => array(
+                                       'total' => count( $topTriager ),
+                                       'data' => $topTriager
+                               )
                        );
 
                $result = array( 'result' => 'success', 'stats' => $data );

Modified: trunk/extensions/PageTriage/includes/PageTriageUtil.php
===================================================================
--- trunk/extensions/PageTriage/includes/PageTriageUtil.php     2012-04-03 
17:53:21 UTC (rev 114683)
+++ trunk/extensions/PageTriage/includes/PageTriageUtil.php     2012-04-03 
18:05:33 UTC (rev 114684)
@@ -93,7 +93,7 @@
         *                       last-day, last-week, last-month, last-year
         * @return array
         */
-       public static function getTopTriager( $time = 'last-day' ) {
+       public static function getTopTriager( $time = 'last-week' ) {
                global $wgMemc;
 
                $now = wfTimestamp( TS_UNIX );
@@ -118,7 +118,7 @@
                if ( $topTriager === false ) {
                        $res = $dbr->select(
                                array( 'pagetriage_log', 'user' ),
-                               array( 'user_name', 'COUNT(ptrl_id) AS num' ),
+                               array( 'user_name', 'user_id', 'COUNT(ptrl_id) 
AS num' ),
                                array( 'user_id = ptrl_user_id', 
'ptrl_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( $timeFrame[$time]['ts'] 
) ) ),
                                __METHOD__,
                                array( 'GROUP BY' => 'user_id', 'ORDER BY' => 
'num DESC', 'LIMIT' => 50 )

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js
   2012-04-03 17:53:21 UTC (rev 114683)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.models/ext.pageTriage.stats.js
   2012-04-03 18:05:33 UTC (rev 114684)
@@ -14,31 +14,32 @@
                },
                
                formatMetadata: function ( stats ) {
-                       stats.set( 'ptr_untriaged_article_count', stats.get( 
'untriagedarticle' )['count'] );             
+                       stats.set( 'ptr_untriaged_article_count', stats.get( 
'untriagedarticle' )['count'] );
+                       stats.set( 'ptrTopTriager', this.formatTopTriager( 
stats.get( 'toptriager' ) ) );
                        stats.set( 'ptrAverage', this.formatDaysFromNow( 
stats.get( 'untriagedarticle' )['age-50th-percentile'] ) );
                        stats.set( 'ptrOldest', this.formatDaysFromNow( 
stats.get( 'untriagedarticle' )['age-100th-percentile'] ) );
                },
-               
+
                formatDaysFromNow: function ( dateStr ) {
                        if ( !dateStr ) {
                                return '';
                        }
 
                        var now = new Date();
-                       now = new Date( 
-                                       Date.UTC( 
-                                               now.getUTCFullYear(), 
-                                               now.getUTCMonth(), 
-                                               now.getUTCDate(), 
-                                               now.getUTCHours(), 
-                                               now.getUTCMinutes(), 
+                       now = new Date(
+                                       Date.UTC(
+                                               now.getUTCFullYear(),
+                                               now.getUTCMonth(),
+                                               now.getUTCDate(),
+                                               now.getUTCHours(),
+                                               now.getUTCMinutes(),
                                                now.getUTCSeconds() 
-                                       ) 
+                                       )
                        );
-                       
+
                        var begin = Date.parseExact( dateStr, 'yyyyMMddHHmmss' 
);
                        begin.setTimezone( 'GMT' );
-                       
+
                        var diff = Math.round( ( now.getTime() - 
begin.getTime() ) / ( 1000 * 60 * 60 * 24 ) );
                        if ( diff ) {
                                return gM( 'days', diff );
@@ -47,6 +48,22 @@
                        }
                },
 
+               formatTopTriager: function ( topTriager ) {
+                       if ( topTriager.total > 0 ) {
+                               var topTriagerList = '';
+                               for ( var key in topTriager.data ) {
+                                       if ( topTriagerList ) {
+                                               topTriagerList += ', ' + 
topTriager.data[key].user_name;
+                                       } else {
+                                               topTriagerList += 
topTriager.data[key].user_name;
+                                       }
+                               }
+                               return gM( 'pagetriage-stats-top-triagers', 
Number( topTriager.total ), topTriagerList );
+                       } else {
+                               return '';
+                       }
+               },
+
                url: mw.util.wikiScript( 'api' ) + 
'?action=pagetriagestats&format=json',
 
                parse: function( response ) {


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

Reply via email to