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