MediaWiki r114482 - Code Review

Jump to: navigation, search
Repository:MediaWiki
Revision:r114481‎ | r114482 (on ViewVC)‎ | r114483 >
Date:02:28, 26 March 2012
Author:werdna
Status:fixme (Comments)
Tags:
Comment:
PageTriage: Add "unpatrolled" marker to pages that need triaging. Will eventually turn into a "mark as patrolled" link.
Modified paths:

Diff [purge]

Index: trunk/extensions/PageTriage/PageTriage.php
@@ -78,7 +78,11 @@
7979 $wgHooks['ArticleInsertComplete'][] = 'PageTriageHooks::onArticleInsertComplete';
8080 $wgHooks['ArticleSaveComplete'][] = 'PageTriageHooks::onArticleSaveComplete';
8181 $wgHooks['UnitTestsList'][] = 'efPageTriageUnitTests'; // unit tests
 82+$wgHooks['GetPreferences'][] = 'PageTriageHooks::onGetPreferences';
 83+$wgHooks['ArticleViewHeader'][] = 'PageTriageHooks::onArticleViewHeader';
8284
 85+$wgPageTriageMarkPatrolledLinkExpiry = 3600 * 24 * 30; // 30 days
 86+
8387 /**
8488 * @param $updater DatabaseUpdater
8589 * @return bool
@@ -144,3 +148,7 @@
145149 'ext.pageTriage.views/ext.pageTriage.articleListItem.css'
146150 )
147151 );
 152+
 153+$wgResourceModules['ext.pageTriage.article'] = $ptResourceTemplate + array(
 154+ 'styles' => 'ext.pageTriage.article/ext.pageTriage.article.css',
 155+);
Index: trunk/extensions/PageTriage/SpecialPageTriage.php
@@ -27,6 +27,11 @@
2828 $out = $this->getOutput();
2929
3030 // TODO: check user permissions, make sure they're logged in and have the pagepatrol userright
 31+
 32+ global $wgUser;
 33+ $wgUser->setOption( 'pagetriage-lastuse', wfTimestampNow() );
 34+ $wgUser->saveSettings();
 35+ $wgUser->invalidateCache();
3136
3237 // Initialize variable to hold list view options
3338 $opts = new FormOptions();
Index: trunk/extensions/PageTriage/PageTriage.hooks.php
@@ -118,4 +118,51 @@
119119 $dbw->replace( 'pagetriage_page', array( 'ptrp_page_id' ), $row, __METHOD__ );
120120 }
121121
 122+ /**
 123+ * Add last time user visited the triage page to preferences.
 124+ * @param $user User object
 125+ * @param &$preferences Preferences object
 126+ */
 127+ public static function onGetPreferences( $user, &$preferences ) {
 128+ $preferences['pagetriage-lastuse'] = array(
 129+ 'type' => 'hidden',
 130+ );
 131+
 132+ return true;
 133+ }
 134+
 135+ /**
 136+ * Adds "mark as patrolled" link to articles
 137+ *
 138+ * @param &$article Article object to show link for.
 139+ * @param &$outputDone Set if there is no more output to do.
 140+ * @param &$pcache Set if you want to use the parser cache.
 141+ * @return type description
 142+ */
 143+ public static function onArticleViewHeader( &$article, &$outputDone, &$pcache ) {
 144+ global $wgUser, $wgPageTriageMarkPatrolledLinkExpiry, $wgOut;
 145+
 146+ $lastUse = $wgUser->getOption('pagetriage-lastuse');
 147+ $lastUse = wfTimestamp( TS_UNIX, $lastUse );
 148+ $now = wfTimestamp( TS_UNIX, wfTimestampNow() );
 149+
 150+ $periodSince = $now - $lastUse;
 151+
 152+ if ( !$lastUse || $periodSince > $wgPageTriageMarkPatrolledLinkExpiry ) {
 153+ return true;
 154+ }
 155+
 156+ if ( ! PageTriageUtil::doesPageNeedTriage( $article ) ) {
 157+ return true;
 158+ }
 159+
 160+ $wgOut->addModules( array('ext.pageTriage.article') );
 161+
 162+ $msg = wfMessage( 'pagetriage-markpatrolled' )->parse();
 163+ $html = Html::element( 'div', array( 'class' => 'mw-pagetriage-markpatrolled' ), $msg );
 164+
 165+ $wgOut->addHTML( $html );
 166+
 167+ return true;
 168+ }
122169 }
Index: trunk/extensions/PageTriage/includes/PageTriageUtil.php
@@ -6,6 +6,34 @@
77 class PageTriageUtil {
88
99 /**
 10+ * Get whether or not a page needs triaging
 11+ *
 12+ * @param $article Article object
 13+ *
 14+ * @return Mixed null if the page is not in the triage system,
 15+ * otherwise whether or not the page is untriaged.
 16+ * Return convention is this way so that null and false are equivalent
 17+ * with a straight boolean test.
 18+ */
 19+ public static function doesPageNeedTriage( $article ) {
 20+ if ( ! $article || ! $article->getId() ) {
 21+ throw new MWException( "Invalid argument to " . __METHOD__ );
 22+ }
 23+
 24+ $dbr = wfGetDB( DB_SLAVE );
 25+
 26+ $row = $dbr->selectRow( 'pagetriage_page', 'ptrp_triaged',
 27+ array( 'ptrp_page_id' => $article->getID() )
 28+ );
 29+
 30+ if ( ! $row ) {
 31+ return null;
 32+ }
 33+
 34+ return !(boolean)$row->ptrp_triaged;
 35+ }
 36+
 37+ /**
1038 * Get a list of stat for untriaged articles
1139 * @return array
1240 *
Index: trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.css
@@ -0,0 +1,4 @@
 2+.mw-pagetriage-markpatrolled {
 3+ float: right;
 4+ font-size: small;
 5+}
\ No newline at end of file
Property changes on: trunk/extensions/PageTriage/modules/ext.pageTriage.article/ext.pageTriage.article.css
___________________________________________________________________
Added: svn:eol-style
16 + native
Index: trunk/extensions/PageTriage/PageTriage.i18n.php
@@ -16,6 +16,7 @@
1717 'pagetriage' => 'Page triage',
1818 'pagetriagelist' => 'Page triage list',
1919 'pagetriage-api-invalidid' => 'The ID you provided ($1) is not valid.',
 20+ 'pagetriage-markpatrolled' => 'Unpatrolled',
2021 );
2122
2223 /**

Comments

#Comment by Nikerabbit (talk | contribs)   08:15, 26 March 2012
+		$msg = wfMessage( 'pagetriage-markpatrolled' )->parse();
+		$html = Html::element( 'div', array( 'class' => 'mw-pagetriage-markpatrolled' ), $msg );
+
+		$wgOut->addHTML( $html );

Just use something like this to avoid escaping the parsed html.

 $wrap = Html::element( 'div', array( 'class' => 'mw-pagetriage-markpatrolled' ), '$1' );
 # OR
 # $wrap = '<div class="mw-pagetriage-markpatrolled">$1</div>';
 $wgOut->wrapWikiMsg( $wrap, 'pagetriage-markpatrolled' );

You can drop the array() here (also fixes coding style).

$wgOut->addModules( array('ext.pageTriage.article') );

Please add message documentation for the newly added messages. Thanks.

Status & tagging log

  • 08:15, 26 March 2012 Nikerabbit (talk | contribs) changed the status of r114482 [removed: new added: fixme]