r98807 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r98806‎ | r98807 | r98808 >
Date:20:55, 3 October 2011
Author:aaron
Status:ok
Tags:
Comment:
MFT r97886,r97892,r97899,r97969,r98179,r98654: ajax reviewing status code changes
Modified paths:
  • /branches/wmf/1.18wmf1/extensions/FlaggedRevs/FlaggedRevs.php (modified) (history)
  • /branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/FlaggedPageView.php (modified) (history)
  • /branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/FlaggedRevsUI.hooks.php (modified) (history)
  • /branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/RejectConfirmationFormUI.php (modified) (history)
  • /branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/RevisionReviewFormUI.php (modified) (history)
  • /branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/language/RevisionReview.i18n.php (modified) (history)
  • /branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/modules/review.js (modified) (history)

Diff [purge]

Index: branches/wmf/1.18wmf1/extensions/FlaggedRevs/FlaggedRevs.php
@@ -390,7 +390,10 @@
391391 'revreview-submitedit', 'revreview-submitedit-title',
392392 'revreview-submit-review', 'revreview-submit-unreview',
393393 'revreview-submit-reviewed', 'revreview-submit-unreviewed',
394 - 'revreview-submitting', 'actioncomplete', 'actionfailed'
 394+ 'revreview-submitting', 'actioncomplete', 'actionfailed',
 395+ 'revreview-adv-reviewing-p', 'revreview-adv-reviewing-c',
 396+ 'revreview-sadv-reviewing-p', 'revreview-sadv-reviewing-c',
 397+ 'revreview-adv-start-link', 'revreview-adv-stop-link'
395398 ),
396399 'dependencies' => array( 'mediawiki.util' ),
397400 'localBasePath' => $localModulePath,
@@ -500,9 +503,6 @@
501504 # Implicit autoreview rights group
502505 $wgHooks['AutopromoteCondition'][] = 'FlaggedRevsHooks::checkAutoPromoteCond';
503506
504 -# Check if a page is currently being reviewed
505 -$wgHooks['MediaWikiPerformAction'][] = 'FlaggedRevsUIHooks::onMediaWikiPerformAction';
506 -
507507 # Actually register special pages
508508 $wgHooks['SpecialPage_initList'][] = 'FlaggedRevsUIHooks::defineSpecialPages';
509509
Index: branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/FlaggedRevsUI.hooks.php
@@ -119,30 +119,6 @@
120120 return true;
121121 }
122122
123 - public static function onMediaWikiPerformAction(
124 - $output, $article, Title $title, $user, $request
125 - ) {
126 - $fa = FlaggedPage::getTitleInstance( $title );
127 - self::maybeMarkUnderReview( $fa, $request );
128 - return true;
129 - }
130 -
131 - // Mark when an unreviewed page is being reviewed
132 - protected static function maybeMarkUnderReview( FlaggedPage $fa, WebRequest $request ) {
133 - global $wgUser;
134 - if ( !$request->getInt( 'reviewing' ) && !$request->getInt( 'rcid' ) ) {
135 - return true; // not implied by URL
136 - }
137 - # Set a key to note when someone is reviewing this.
138 - # NOTE: diff-to-stable views already handled elsewhere.
139 - if ( $fa->isReviewable() && !$fa->getStable() // not reviewed yet
140 - && $fa->getTitle()->userCan( 'review' ) )
141 - {
142 - FRUserActivity::setUserReviewingPage( $wgUser, $fa->getID() );
143 - }
144 - return true;
145 - }
146 -
147123 /** Add user preferences */
148124 public static function onGetPreferences( $user, array &$preferences ) {
149125 // Box or bar UI
Index: branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/language/RevisionReview.i18n.php
@@ -53,6 +53,7 @@
5454 See the [[Special:Unreviewedpages|list of unreviewed pages]].',
5555 'revreview-stable1' => 'You may want to view [{{fullurl:$1|stableid=$2}} this flagged version] and see if it is now the [{{fullurl:$1|stable=1}} stable version] of this page.',
5656 'revreview-stable2' => 'You may want to view the [{{fullurl:$1|stable=1}} stable version] of this page.',
 57+ 'revreview-cancel' => 'Cancel',
5758 'revreview-submit' => 'Submit',
5859 'revreview-submitting' => 'Submitting...',
5960 'revreview-submit-review' => 'Accept revision',
@@ -64,8 +65,14 @@
6566 'revreview-successful2' => '\'\'\'Revision of [[:$1|$1]] successfully unflagged.\'\'\'',
6667 'revreview-poss-conflict-p' => '\'\'\'Warning: [[User:$1|$1]] started reviewing this page on $2 at $3.\'\'\'',
6768 'revreview-poss-conflict-c' => '\'\'\'Warning: [[User:$1|$1]] started reviewing these changes on $2 at $3.\'\'\'',
68 - 'revreview-adv-reviewing-p' => '\'\'\'Notice: You are being advertised as having started reviewing this page on $1 at $2.\'\'\'',
69 - 'revreview-adv-reviewing-c' => '\'\'\'Notice: You are being advertised as having started reviewing these changes on $1 at $2.\'\'\'',
 69+ 'revreview-adv-reviewing-p' => 'Notice: Other reviewers can see that you are reviewing this page.',
 70+ 'revreview-adv-reviewing-c' => 'Notice: Other reviewers can see that you are reviewing these changes.',
 71+ 'revreview-sadv-reviewing-p' => 'You can $1 yourself as reviewing this page to other users.',
 72+ 'revreview-sadv-reviewing-c' => 'You can $1 yourself as reviewing these changes to other users.',
 73+ 'revreview-adv-start-link' => 'advertise',
 74+ 'revreview-adv-stop-link' => 'de-advertise',
 75+ 'revreview-advertise-start' => 'Advertise',
 76+ 'revreview-advertise-stop' => 'De-advertise',
7077 'revreview-toolow' => '\'\'\'You must rate each of the attributes higher than "inadequate" in order for a revision to be considered reviewed.\'\'\'
7178
7279 To remove the review status of a revision, click "unaccept".
@@ -78,7 +85,7 @@
7986 'revreview-update-edited-prev' => '<span class="flaggedrevs_important">Your changes are not yet in the stable version. There are previous changes pending review.</span>
8087
8188 Please review all the changes shown below to make your edits appear in the stable version.',
82 - 'revreview-update-includes' => '\'\'\'Templates/files updated (unreviewed pages in bold):\'\'\'',
 89+ 'revreview-update-includes' => 'Templates/files updated (unreviewed pages in bold):',
8390
8491 'revreview-reject-header' => 'Reject changes for $1',
8592 'revreview-reject-text-list' => 'By completing this action you will be \'\'\'rejecting\'\'\' the source text changes from the following {{PLURAL:$1|revision|revisions}} of [[:$2|$2]]:',
Index: branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/FlaggedPageView.php
@@ -1407,9 +1407,6 @@
14081408 $changeDiv = '';
14091409 # If the user can review then prompt them to review them...
14101410 if ( $wgUser->isAllowed( 'review' ) ) {
1411 - # Set a key to note that someone is viewing this
1412 - FRUserActivity::setUserReviewingDiff(
1413 - $wgUser, $oldRev->getId(), $newRev->getId() );
14141411 // Reviewer just edited...
14151412 if ( $wgRequest->getInt( 'shownotice' )
14161413 && $newRev->isCurrent()
Index: branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/RevisionReviewFormUI.php
@@ -124,30 +124,30 @@
125125 $form .= Xml::closeElement( 'legend' ) . "\n";
126126 # Show explanatory text
127127 $form .= $this->topNotice;
128 - # Show possible conflict warning msg...
 128+
 129+ # Check if anyone is reviewing this already and
 130+ # show a conflict warning message as needed...
129131 if ( $priorRevId ) {
130132 list( $u, $ts ) =
131133 FRUserActivity::getUserReviewingDiff( $priorRevId, $this->rev->getId() );
132134 } else {
133135 list( $u, $ts ) = FRUserActivity::getUserReviewingPage( $this->rev->getPage() );
134136 }
135 - if ( $u !== null ) { // page under review...
136 - $form .= '<p><span class="fr-under-review">';
137 - if ( $u != $this->user->getName() ) { // by another user...
138 - $msg = $priorRevId
139 - ? 'revreview-poss-conflict-c'
140 - : 'revreview-poss-conflict-p';
141 - $form .= wfMsgExt( $msg, 'parseinline',
142 - $u, $wgLang->date( $ts, true ), $wgLang->time( $ts, true ) );
143 - } else { // by this user...
144 - $msg = $priorRevId
145 - ? 'revreview-adv-reviewing-c'
146 - : 'revreview-adv-reviewing-p';
147 - $form .= wfMsgExt( $msg, 'parseinline',
148 - $wgLang->date( $ts, true ), $wgLang->time( $ts, true ) );
149 - }
150 - $form .= "</span></p>\n";
 137+ $form .= "<p>";
 138+ // Page under review (and not by this user)...
 139+ if ( $u !== null && $u != $this->user->getName() ) {
 140+ $form .= '<span class="fr-under-review">';
 141+ $msg = $priorRevId
 142+ ? 'revreview-poss-conflict-c'
 143+ : 'revreview-poss-conflict-p';
 144+ $form .= wfMsgExt( $msg, 'parseinline',
 145+ $u, $wgLang->date( $ts, true ), $wgLang->time( $ts, true ) );
 146+ $form .= "</span>";
 147+ // Page not under review or under review by this user...
 148+ } elseif ( !$frev ) { // rev not already reviewed
 149+ $form .= '<span id="mw-fr-reviewing-status" style="display:none;"></span>'; // JS widget
151150 }
 151+ $form .= "</p>\n";
152152
153153 if ( $disabled ) {
154154 $form .= Xml::openElement( 'div', array( 'class' => 'fr-rating-controls-disabled',
@@ -185,11 +185,12 @@
186186 }
187187 # Determine if there will be reject button
188188 $rejectId = $this->rejectRefRevId();
 189+
189190 # Add the submit buttons
190191 $form .= self::submitButtons( $rejectId, $frev, (bool)$disabled, $reviewIncludes );
191 - # Untoggle "reviewing" status on exit
192 - $form .= '<script type="text/javascript">var jsReviewingStatus = ' .
193 - (int)( $u == $this->user->getName() ) . "</script>\n";
 192+ # Add "cancel" link
 193+ $form .= Linker::link( $article->getTitle(), wfMsg( 'revreview-cancel' ) );
 194+
194195 # Show stability log if there is anything interesting...
195196 if ( $article->isPageLocked() ) {
196197 $form .= ' ' . FlaggedRevsXML::logToggle( 'revreview-log-toggle-show' );
@@ -208,7 +209,9 @@
209210 $form .= Html::hidden( 'oldid', $revId, array( 'id' => 'mw-fr-input-oldid' ) ) . "\n";
210211 $form .= Html::hidden( 'wpEditToken', $this->user->editToken() ) . "\n";
211212 $form .= Html::hidden( 'changetime', $reviewTime,
212 - array( 'id' => 'mw-fr-input-changetime' ) ) . "\n";; // id for JS
 213+ array( 'id' => 'mw-fr-input-changetime' ) ) . "\n"; // id for JS
 214+ $form .= Html::hidden( 'userreviewing', (int)($u === $this->user->getName()),
 215+ array( 'id' => 'mw-fr-user-reviewing' ) ) . "\n"; // id for JS
213216 # Add review parameters
214217 $form .= Html::hidden( 'templateParams', $templateParams ) . "\n";
215218 $form .= Html::hidden( 'imageParams', $imageParams ) . "\n";
Index: branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/modules/review.js
@@ -5,6 +5,7 @@
66 */
77
88 window.FlaggedRevsReview = {
 9+ 'isUserReviewing': 0, // user reviewing this page?
910 /*
1011 * Updates for radios/checkboxes on patch by Daniel Arnold (bug 13744).
1112 * Visually update the revision rating form on change.
@@ -322,17 +323,82 @@
323324 },
324325
325326 /*
 327+ * Enable AJAX-based functionality to set that a user is reviewing a page/diff
 328+ */
 329+ 'enableAjaxReviewActivity': function() {
 330+ // User is already reviewing in another tab...
 331+ if ( $('#mw-fr-user-reviewing').val() == 1 ) {
 332+ FlaggedRevsReview.isUserReviewing = 1;
 333+ FlaggedRevsReview.advertiseReviewing( null, true );
 334+ // User is not already reviewing this....
 335+ } else {
 336+ FlaggedRevsReview.deadvertiseReviewing( null, true );
 337+ }
 338+ $('#mw-fr-reviewing-status').show();
 339+ },
 340+
 341+ /*
 342+ * Flag users as "now reviewing"
 343+ */
 344+ 'advertiseReviewing': function( e, isInitial ) {
 345+ if ( isInitial !== true ) { // don't send if just setting up form
 346+ if ( !FlaggedRevsReview.setReviewingStatus( 1 ) ) {
 347+ return; // failed
 348+ }
 349+ }
 350+ // Build notice to say that user is advertising...
 351+ var msgkey = $('#mw-fr-input-refid').length
 352+ ? 'revreview-adv-reviewing-c' // diff
 353+ : 'revreview-adv-reviewing-p' // page
 354+ var $underReview = $(
 355+ '<span class="fr-under-review">' + mw.message( msgkey ).escaped() + '</span>' );
 356+ // Update notice to say that user is advertising...
 357+ $('#mw-fr-reviewing-status')
 358+ .empty()
 359+ .append( $underReview )
 360+ .append( ' (' + mw.html.element( 'a',
 361+ { id: 'mw-fr-reviewing-stop' }, mw.msg( 'revreview-adv-stop-link' ) ) + ')' )
 362+ .find( '#mw-fr-reviewing-stop')
 363+ .css( 'cursor', 'pointer' )
 364+ .click( FlaggedRevsReview.deadvertiseReviewing );
 365+ },
 366+
 367+ /*
326368 * Flag users as "no longer reviewing"
327369 */
328 - 'deadvertiseReviewing': function() {
329 - var form = document.getElementById('mw-fr-reviewform');
330 - if( form && jsReviewingStatus ) {
331 - var oRevId = document.getElementById('mw-fr-input-refid').value;
332 - var nRevId = document.getElementById('mw-fr-input-oldid').value;
333 - } else if( location.href.indexOf('&reviewing=1') != -1 ) {
334 - var oRevId = 0;
335 - var nRevId = mw.config.get('wgCurRevisionId');
 370+ 'deadvertiseReviewing': function( e, isInitial ) {
 371+ if ( isInitial !== true ) { // don't send if just setting up form
 372+ if ( !FlaggedRevsReview.setReviewingStatus( 0 ) ) {
 373+ return; // failed
 374+ }
336375 }
 376+ // Build notice to say that user is not advertising...
 377+ var msgkey = $('#mw-fr-input-refid').length
 378+ ? 'revreview-sadv-reviewing-c' // diff
 379+ : 'revreview-sadv-reviewing-p' // page
 380+ var $underReview = $(
 381+ '<span class="fr-make-under-review">' +
 382+ mw.message( msgkey )
 383+ .escaped()
 384+ .replace( /\$1/, mw.html.element( 'a',
 385+ { id: 'mw-fr-reviewing-start' }, mw.msg( 'revreview-adv-start-link' ) ) ) +
 386+ '</span>'
 387+ );
 388+ $underReview.find( '#mw-fr-reviewing-start')
 389+ .css( 'cursor', 'pointer' )
 390+ .click( FlaggedRevsReview.advertiseReviewing );
 391+ // Update notice to say that user is not advertising...
 392+ $('#mw-fr-reviewing-status').empty().append( $underReview );
 393+ },
 394+
 395+ /*
 396+ * Set reviewing status for this page/diff
 397+ */
 398+ 'setReviewingStatus': function( value ) {
 399+ // Get {previd,oldid} array for this page view.
 400+ // The previd value will be 0 if this is not a diff view.
 401+ var oRevId = $('#mw-fr-input-refid') ? $('#mw-fr-input-refid').val() : 0;
 402+ var nRevId = $('#mw-fr-input-oldid') ? $('#mw-fr-input-oldid').val() : 0;
337403 if ( nRevId > 0 ) {
338404 // Send GET request via AJAX!
339405 var call = jQuery.ajax({
@@ -341,15 +407,20 @@
342408 action : 'reviewactivity',
343409 previd : oRevId,
344410 oldid : nRevId,
345 - reviewing : 0
 411+ reviewing : value
346412 },
347413 type : "POST",
348414 dataType: "html", // response type
349 - timeout : 2000, // don't delay user exiting
 415+ timeout : 1700, // don't delay user exiting
350416 async : false
351417 });
352418 }
353 - return;
 419+ if ( call.status == 200 ) {
 420+ FlaggedRevsReview.isUserReviewing = value;
 421+ return true;
 422+ } else {
 423+ return false;
 424+ }
354425 }
355426 };
356427
@@ -357,6 +428,11 @@
358429 FlaggedRevsReview.maybeDisableAcceptButton();
359430 FlaggedRevsReview.updateRatingFormColors();
360431 FlaggedRevsReview.enableAjaxReview();
 432+FlaggedRevsReview.enableAjaxReviewActivity();
361433
362434 // Flag users as "no longer reviewing" on navigate-away
363 -window.onbeforeunload = FlaggedRevsReview.deadvertiseReviewing;
 435+$( window ).bind( 'beforeunload', function( e ) {
 436+ if ( FlaggedRevsReview.isUserReviewing == 1 ) {
 437+ FlaggedRevsReview.deadvertiseReviewing();
 438+ }
 439+} );
Index: branches/wmf/1.18wmf1/extensions/FlaggedRevs/presentation/RejectConfirmationFormUI.php
@@ -147,7 +147,7 @@
148148 $form .= Html::input( 'wpSubmit', wfMsg( 'revreview-reject-confirm' ), 'submit' );
149149 $form .= ' ';
150150 $form .= $skin->link( $this->form->getPage(), wfMsg( 'revreview-reject-cancel' ),
151 - array( 'onClick' => 'history.back(); return false;' ),
 151+ array( 'onClick' => 'history.back(); return history.length <= 1;' ),
152152 array( 'oldid' => $this->form->getRefId(), 'diff' => $this->form->getOldId() ) );
153153 $form .= Xml::closeElement( 'form' );
154154

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r97886* Made "under review" notices require the user's consent (bug 31093)...aaron03:38, 23 September 2011
r97892FU r97886: fixed function callaaron07:17, 23 September 2011
r97899FU r97886: fix for JS back buttonaaron08:44, 23 September 2011
r97969FU r97886:...aaron22:45, 23 September 2011
r98179FU r97886:...aaron21:38, 26 September 2011
r98654Fix some things noticed in http://www.mediawiki.org/wiki/User:Krinkle/Extensi......aaron03:23, 2 October 2011

Status & tagging log