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