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

Revision: 114814
Author:   bsitu
Date:     2012-04-09 22:47:10 +0000 (Mon, 09 Apr 2012)
Log Message:
-----------
Add the ability for in-article triage

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

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

Modified: trunk/extensions/PageTriage/PageTriage.hooks.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.hooks.php    2012-04-09 19:01:58 UTC 
(rev 114813)
+++ trunk/extensions/PageTriage/PageTriage.hooks.php    2012-04-09 22:47:10 UTC 
(rev 114814)
@@ -138,8 +138,15 @@
         * @return type description
         */
        public static function onArticleViewHeader( &$article, &$outputDone, 
&$pcache ) {
-               global $wgUser, $wgPageTriageMarkPatrolledLinkExpiry, $wgOut;
+               global $wgUser, $wgPageTriageMarkPatrolledLinkExpiry, $wgOut, 
$wgRequest;
 
+               // the presence of rcid means this is coming from 
Special:NewPages,
+               // and hence don't make any interference, this also applies to
+               // user with no right
+               if ( $wgRequest->getVal( 'rcid' ) || 
!$article->getTitle()->quickUserCan( 'patrol' ) ) {
+                       return true;
+               }
+
                $lastUse = $wgUser->getOption('pagetriage-lastuse');
                $lastUse = wfTimestamp( TS_UNIX, $lastUse );
                $now = wfTimestamp( TS_UNIX, wfTimestampNow() );
@@ -150,14 +157,24 @@
                        return true;
                }
 
-               if ( ! PageTriageUtil::doesPageNeedTriage( $article ) ) {
-                       return true;
+               $status = PageTriageUtil::doesPageNeedTriage( $article );
+
+               if ( $status === true) {
+                       // show 'Mark as reviewed' link
+                       $msg = wfMessage( 'pagetriage-markpatrolled' 
)->escaped();
+                       $msg = Html::element( 'a', array( 'href' => '#', 
'class' => 'mw-pagetriage-markpatrolled-link' ), $msg );
+                       
+               } else if ( $status === false ) {
+                       // show 'Reviewed' text
+                       $msg= wfMessage( 'pagetriage-reviewed' )->escaped();
+               } else {
+                       // Do nothing as this page is not in PageTriage queue
+                       return true;    
                }
 
                $wgOut->addModules( array('ext.pageTriage.article') );
 
-               $msg = wfMessage( 'pagetriage-markpatrolled' )->parse();
-               $html = Html::element( 'div', array( 'class' => 
'mw-pagetriage-markpatrolled' ), $msg );
+               $html = Html::rawElement( 'div', array( 'class' => 
'mw-pagetriage-markpatrolled' ), $msg );
 
                $wgOut->addHTML( $html );
 

Modified: trunk/extensions/PageTriage/PageTriage.i18n.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.i18n.php     2012-04-09 19:01:58 UTC 
(rev 114813)
+++ trunk/extensions/PageTriage/PageTriage.i18n.php     2012-04-09 22:47:10 UTC 
(rev 114814)
@@ -15,7 +15,9 @@
        'pagetriage' => 'Page Triage',
        'pagetriage-desc' => 'Facilitates reviewing and approving new pages',
        'pagetriage-api-invalidid' => 'The ID you provided ($1) is not valid.',
-       'pagetriage-markpatrolled' => 'Unpatrolled',
+       'pagetriage-markpatrolled' => 'Mark this page as reviewed',
+       'pagetriage-reviewed' => 'Reviewed',
+       'pagetriage-mark-as-reviewed-error' => 'Error occurred in marking as 
reviewed',
        'pagetriage-hist' => 'hist',
        'pagetriage-bytes' => '$1 {{PLURAL:$1|byte|bytes}}',
        'pagetriage-edits' => '$1 {{PLURAL:$1|edit|edits}}',
@@ -82,6 +84,8 @@
        'pagetriage-desc' => '{{desc}}',
        'pagetriage-api-invalidid' => 'Invalid title error message for 
pagetriage API',
        'pagetriage-markpatrolled' => 'Button text for the mark-as-patrolled 
button',
+       'pagetriage-reviewed' => 'Text to indicate a page has been reviewed',
+       'pagetriage-mark-as-reviewed-error' => 'Generic error message for 
marking as reviewed',
        'pagetriage-bytes' => 'The number of bytes in the article',
        'pagetriage-edits' => 'The number of times the article has been edited',
        'pagetriage-categories' => 'The number of categories in the article',

Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php  2012-04-09 19:01:58 UTC (rev 
114813)
+++ trunk/extensions/PageTriage/PageTriage.php  2012-04-09 22:47:10 UTC (rev 
114814)
@@ -279,4 +279,9 @@
 
 $wgResourceModules['ext.pageTriage.article'] = $ptResourceTemplate + array(
        'styles' => 'ext.pageTriage.article/ext.pageTriage.article.css',
+       'scripts' => 'ext.pageTriage.article/ext.pageTriage.article.js',
+       'messages' => array (
+                       'pagetriage-reviewed',
+                       'pagetriage-mark-as-reviewed-error',
+               ),
 );

Modified: trunk/extensions/PageTriage/api/ApiPageTriageAction.php
===================================================================
--- trunk/extensions/PageTriage/api/ApiPageTriageAction.php     2012-04-09 
19:01:58 UTC (rev 114813)
+++ trunk/extensions/PageTriage/api/ApiPageTriageAction.php     2012-04-09 
22:47:10 UTC (rev 114814)
@@ -5,13 +5,20 @@
        public function execute() {
                global $wgUser;
 
+               $params = $this->extractRequestParams();
+
                if ( $wgUser->isAnon() || $wgUser->isBlocked( false )  ) {
-                       $this->dieUsage( "You don't have permission to do 
that", 'permission-denied' );
+                       $this->permissionError();
                }
-               
-               //@Todo: Add more user permission checking
 
-               $params = $this->extractRequestParams();
+               $article = Article::newFromID( $params['pageid'] );
+               if ( $article ) {
+                       if ( !$article->getTitle()->quickUserCan( 'patrol' ) ) {
+                               $this->permissionError();       
+                       }
+               } else {
+                       $this->pageError();
+               }
                
                $pageTriage = new PageTriage( $params['pageid'] );
                $pageTriage->setTriageStatus( $params['reviewed'], $wgUser );
@@ -20,6 +27,14 @@
                $this->getResult()->addValue( null, $this->getModuleName(), 
$result );
        }
 
+       private function permissionError() {
+               $this->dieUsage( "You don't have permission to do that", 
'permission-denied' ); 
+       }
+
+       private function pageError() {
+               $this->dieUsage( "The page specified does not exist", 
'bad-page' );     
+       }
+
        public function needsToken() {
                return true;
        }

Modified: trunk/extensions/PageTriage/includes/PageTriageUtil.php
===================================================================
--- trunk/extensions/PageTriage/includes/PageTriageUtil.php     2012-04-09 
19:01:58 UTC (rev 114813)
+++ trunk/extensions/PageTriage/includes/PageTriageUtil.php     2012-04-09 
22:47:10 UTC (rev 114814)
@@ -15,7 +15,7 @@
         * Return convention is this way so that null and false are equivalent
         * with a straight boolean test.
         */
-       public static function doesPageNeedTriage( $article ) {         
+       public static function doesPageNeedTriage( $article ) {
                if ( ! $article ) {
                        throw new MWException( "Invalid argument to " . 
__METHOD__ );
                }

Added: 
trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.js
                                (rev 0)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.js
        2012-04-09 22:47:10 UTC (rev 114814)
@@ -0,0 +1,39 @@
+( function( $ ) {
+       if ( !mw.pageTriage ) {
+               mw.pageTriage = {};
+       }
+
+       mw.pageTriage.action = {
+               submit: function() {
+                       apiRequest = {
+                               'action': 'pagetriageaction',
+                               'pageid': wgArticleId,
+                               'reviewed': '1',
+                               'token': mw.user.tokens.get('editToken'),
+                               'format': 'json'
+                       };
+
+                       return $.ajax( {
+                               type: 'post',
+                               url: mw.util.wikiScript( 'api' ),
+                               data: apiRequest,
+                               success: this.callback,
+                               dataType: 'json'
+                       } );
+               },
+
+               callback: function( data ) {
+                       $( '.mw-pagetriage-markpatrolled' ).html( 
+                               data.error ? 
+                                       mw.msg( 
'pagetriage-mark-as-reviewed-error' ) : 
+                                       mw.msg( 'pagetriage-reviewed' ) 
+                       );
+               }
+       }
+
+       $( '.mw-pagetriage-markpatrolled-link' )
+               .click( function() {
+                               mw.pageTriage.action.submit();
+                       } )
+               .end();
+} ) ( jQuery );


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


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

Reply via email to