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

Revision: 114482
Author:   werdna
Date:     2012-03-26 02:28:38 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
PageTriage: Add "unpatrolled" marker to pages that need triaging. Will 
eventually turn into a "mark as patrolled" link.

Modified Paths:
--------------
    trunk/extensions/PageTriage/PageTriage.hooks.php
    trunk/extensions/PageTriage/PageTriage.i18n.php
    trunk/extensions/PageTriage/PageTriage.php
    trunk/extensions/PageTriage/SpecialPageTriage.php
    trunk/extensions/PageTriage/includes/PageTriageUtil.php

Added Paths:
-----------
    trunk/extensions/PageTriage/modules/ext.pageTriage.article/
    
trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.css

Modified: trunk/extensions/PageTriage/PageTriage.hooks.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.hooks.php    2012-03-25 19:20:43 UTC 
(rev 114481)
+++ trunk/extensions/PageTriage/PageTriage.hooks.php    2012-03-26 02:28:38 UTC 
(rev 114482)
@@ -118,4 +118,51 @@
                $dbw->replace( 'pagetriage_page', array( 'ptrp_page_id' ), 
$row, __METHOD__ );  
        }
 
+       /**
+        * Add last time user visited the triage page to preferences.
+        * @param $user User object
+        * @param &$preferences Preferences object
+        */
+       public static function onGetPreferences( $user, &$preferences ) {
+               $preferences['pagetriage-lastuse'] = array(
+                       'type' => 'hidden',
+               );
+
+               return true;
+       }
+
+       /**
+        * Adds "mark as patrolled" link to articles
+        *
+        * @param &$article Article object to show link for.
+        * @param &$outputDone Set if there is no more output to do.
+        * @param &$pcache Set if you want to use the parser cache.
+        * @return type description
+        */
+       public static function onArticleViewHeader( &$article, &$outputDone, 
&$pcache ) {
+               global $wgUser, $wgPageTriageMarkPatrolledLinkExpiry, $wgOut;
+
+               $lastUse = $wgUser->getOption('pagetriage-lastuse');
+               $lastUse = wfTimestamp( TS_UNIX, $lastUse );
+               $now = wfTimestamp( TS_UNIX, wfTimestampNow() );
+
+               $periodSince = $now - $lastUse;
+
+               if ( !$lastUse || $periodSince > 
$wgPageTriageMarkPatrolledLinkExpiry ) {
+                       return true;
+               }
+
+               if ( ! PageTriageUtil::doesPageNeedTriage( $article ) ) {
+                       return true;
+               }
+
+               $wgOut->addModules( array('ext.pageTriage.article') );
+
+               $msg = wfMessage( 'pagetriage-markpatrolled' )->parse();
+               $html = Html::element( 'div', array( 'class' => 
'mw-pagetriage-markpatrolled' ), $msg );
+
+               $wgOut->addHTML( $html );
+
+               return true;
+       }
 }

Modified: trunk/extensions/PageTriage/PageTriage.i18n.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.i18n.php     2012-03-25 19:20:43 UTC 
(rev 114481)
+++ trunk/extensions/PageTriage/PageTriage.i18n.php     2012-03-26 02:28:38 UTC 
(rev 114482)
@@ -16,6 +16,7 @@
        'pagetriage' => 'Page triage',
        'pagetriagelist' => 'Page triage list',
        'pagetriage-api-invalidid' => 'The ID you provided ($1) is not valid.',
+       'pagetriage-markpatrolled' => 'Unpatrolled',
 );
 
 /**

Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php  2012-03-25 19:20:43 UTC (rev 
114481)
+++ trunk/extensions/PageTriage/PageTriage.php  2012-03-26 02:28:38 UTC (rev 
114482)
@@ -78,7 +78,11 @@
 $wgHooks['ArticleInsertComplete'][] = 
'PageTriageHooks::onArticleInsertComplete';
 $wgHooks['ArticleSaveComplete'][] = 'PageTriageHooks::onArticleSaveComplete';
 $wgHooks['UnitTestsList'][] = 'efPageTriageUnitTests'; // unit tests
+$wgHooks['GetPreferences'][] = 'PageTriageHooks::onGetPreferences';
+$wgHooks['ArticleViewHeader'][] = 'PageTriageHooks::onArticleViewHeader';
 
+$wgPageTriageMarkPatrolledLinkExpiry = 3600 * 24 * 30; // 30 days
+
 /**
  * @param $updater DatabaseUpdater
  * @return bool
@@ -144,3 +148,7 @@
                'ext.pageTriage.views/ext.pageTriage.articleListItem.css'
        )
 );
+
+$wgResourceModules['ext.pageTriage.article'] = $ptResourceTemplate + array(
+       'styles' => 'ext.pageTriage.article/ext.pageTriage.article.css',
+);

Modified: trunk/extensions/PageTriage/SpecialPageTriage.php
===================================================================
--- trunk/extensions/PageTriage/SpecialPageTriage.php   2012-03-25 19:20:43 UTC 
(rev 114481)
+++ trunk/extensions/PageTriage/SpecialPageTriage.php   2012-03-26 02:28:38 UTC 
(rev 114482)
@@ -27,6 +27,11 @@
                $out = $this->getOutput();
 
                // TODO: check user permissions, make sure they're logged in 
and have the pagepatrol userright
+
+               global $wgUser;
+               $wgUser->setOption( 'pagetriage-lastuse', wfTimestampNow() );
+               $wgUser->saveSettings();
+               $wgUser->invalidateCache();
                
                // Initialize variable to hold list view options
                $opts = new FormOptions();

Modified: trunk/extensions/PageTriage/includes/PageTriageUtil.php
===================================================================
--- trunk/extensions/PageTriage/includes/PageTriageUtil.php     2012-03-25 
19:20:43 UTC (rev 114481)
+++ trunk/extensions/PageTriage/includes/PageTriageUtil.php     2012-03-26 
02:28:38 UTC (rev 114482)
@@ -6,6 +6,34 @@
 class PageTriageUtil {
 
        /**
+        * Get whether or not a page needs triaging
+        *
+        * @param $article Article object
+        * 
+        * @return Mixed null if the page is not in the triage system,
+        * otherwise whether or not the page is untriaged.
+        * Return convention is this way so that null and false are equivalent
+        * with a straight boolean test.
+        */
+       public static function doesPageNeedTriage( $article ) {
+               if ( ! $article || ! $article->getId() ) {
+                       throw new MWException( "Invalid argument to " . 
__METHOD__ );
+               }
+
+               $dbr = wfGetDB( DB_SLAVE );
+
+               $row = $dbr->selectRow( 'pagetriage_page', 'ptrp_triaged',
+                       array( 'ptrp_page_id' => $article->getID() )
+               );
+
+               if ( ! $row ) {
+                       return null;
+               }
+
+               return !(boolean)$row->ptrp_triaged;
+       }
+
+       /**
         * Get a list of stat for untriaged articles
         * @return array
         *

Added: 
trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.css
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.css
                               (rev 0)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.css
       2012-03-26 02:28:38 UTC (rev 114482)
@@ -0,0 +1,4 @@
+.mw-pagetriage-markpatrolled {
+       float: right;
+       font-size: small;
+}
\ No newline at end of file


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


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

Reply via email to