Page MenuHomePhabricator

reject-patch

Authored By
bzimport
Nov 21 2014, 11:16 PM
Size
5 KB
Referenced Files
None
Subscribers
None

reject-patch

Index: language/FlaggedRevs.i18n.php
===================================================================
--- language/FlaggedRevs.i18n.php (revision 75281)
+++ language/FlaggedRevs.i18n.php (working copy)
@@ -249,6 +249,13 @@
'revreview-restriction-any' => 'any',
'revreview-restriction-none' => 'none',
+ 'revreview-reject-header' => 'Reject changes for $1',
+ 'revreview-reject-text' => 'By completing this action, you will be \'\'\'rejecting\'\'\' the following changes. This will revert the article back to this [$1 older revision]',
+ 'revreview-reject-summary' => 'Edit summary:',
+ 'revreview-reject-confirm' => 'Reject these changes',
+ 'revreview-reject-cancel' => 'Cancel',
+ 'revreview-reject-default-summary' => 'Rejecting changes by [[User:$1|$1]] to version $2 by [[User:$3|$3]]',
+
'revreview-reviewlink' => 'pending edits',
'revreview-reviewlink-title' => 'View diff of all pending changes',
'revreview-unreviewedpage' => 'unchecked page',
Index: forms/RevisionReviewForm.php
===================================================================
--- forms/RevisionReviewForm.php (revision 75281)
+++ forms/RevisionReviewForm.php (working copy)
@@ -18,6 +18,7 @@
protected $approve = false;
protected $unapprove = false;
protected $reject = false;
+ protected $rejectConfirm = false;
protected $oldid = 0;
protected $refid = 0;
protected $templateParams = '';
@@ -63,6 +64,10 @@
$this->trySet( $this->reject, $value );
}
+ public function setRejectConfirm( $value ) {
+ $this->trySet( $this->rejectConfirm, $value );
+ }
+
public function getRefId() {
return $this->refid;
}
@@ -312,6 +317,11 @@
} elseif ( $this->getAction() === 'reject' ) {
$newRev = Revision::newFromTitle( $this->page, $this->oldid );
$oldRev = Revision::newFromTitle( $this->page, $this->refid );
+
+ if( !$this->rejectConfirm ) {
+ $this->rejectConfirmationForm( $oldRev, $newRev );
+ return false;
+ }
# Do not mess with archived/deleted revisions
if ( is_null( $oldRev ) || $oldRev->mDeleted ) {
return 'review_bad_oldid';
@@ -988,6 +998,63 @@
return $form;
}
+ /**
+ * Output the "are you sure you want to reject this" form
+ *
+ * A bit hacky, but we don't have a way to pass more complicated
+ * UI things back up, since RevisionReview expects either true
+ * or a string message key
+ */
+ private function rejectConfirmationForm( Revision $oldRev, $newRev ) {
+ global $wgOut;
+
+ $thisPage = SpecialPage::getTitleFor( 'RevisionReview' );
+
+ $permaLink = $oldRev->getTitle()->getFullURL( 'oldid=' . $oldRev->getId() );
+ $wgOut->addWikiMsg( 'revreview-reject-text', $permaLink );
+
+ $thisPage->skin = $this->user->getSkin();
+ $dbr = wfGetDB( DB_SLAVE );
+ $oldid = $dbr->addQuotes( $oldRev->getId() );
+ $res = $dbr->select( 'revision', 'rev_id',
+ array( 'rev_id > ' . $oldid, 'rev_page' => $oldRev->getPage() ),
+ __METHOD__
+ );
+
+ $ids = array();
+ foreach( $res as $r ) {
+ $ids[] = $r->rev_id;
+ }
+
+ $list = new RevDel_RevisionList( $thisPage, $oldRev->getTitle(), $ids );
+ for ( $list->reset(); $list->current(); $list->next() ) {
+ $item = $list->current();
+ if ( $item->canView() ) {
+ $wgOut->addHTML( $item->getHTML() );
+ }
+ }
+ $form = Html::openElement( 'form',
+ array( 'method' => 'POST', 'action' => $thisPage->getFullUrl() )
+ );
+ $form .= Html::hidden( 'action', 'reject' );
+ $form .= Html::hidden( 'wpReject', 1 );
+ $form .= Html::hidden( 'wpRejectConfirm', 1 );
+ $form .= Html::hidden( 'oldid', $this->oldid );
+ $form .= Html::hidden( 'refid', $this->refid );
+ $form .= Html::hidden( 'target', $oldRev->getTitle()->getPrefixedDBKey() );
+ $form .= Html::hidden( 'wpEditToken', $this->user->editToken() );
+ $form .= "<br />";
+
+ $defaultSummary = wfMsg( 'revreview-reject-default-summary',
+ $newRev->getUserText(), $oldRev->getId(), $oldRev->getUserText() );
+ $form .= Xml::inputLabel( wfMsg( 'revreview-reject-summary' ), 'wpReason',
+ 'wpReason', 120, $defaultSummary ) . "<br />";
+ $form .= Html::input( 'wpSubmit', wfMsg( 'revreview-reject-confirm' ), 'submit' );
+ $form .= Html::input( 'wpCancel', wfMsg( 'revreview-reject-cancel' ), 'button' );
+ $form .= Html::closeElement( 'form' );
+ $wgOut->addHtml( $form );
+ }
+
private function getSpecialLinks() {
$s = '<p>' . wfMsg( 'returnto',
$this->skin->makeLinkObj( SpecialPage::getTitleFor( 'UnreviewedPages' ) ) ) . '</p>';
Index: specialpages/RevisionReview_body.php
===================================================================
--- specialpages/RevisionReview_body.php (revision 75281)
+++ specialpages/RevisionReview_body.php (working copy)
@@ -46,6 +46,7 @@
$form->setApprove( $wgRequest->getCheck( 'wpApprove' ) );
$form->setUnapprove( $wgRequest->getCheck( 'wpUnapprove' ) );
$form->setReject( $wgRequest->getCheck( 'wpReject' ) );
+ $form->setRejectConfirm( $wgRequest->getBool( 'wpRejectConfirm' ) );
# Rev ID
$form->setOldId( $wgRequest->getInt( 'oldid' ) );
$form->setRefId( $wgRequest->getInt( 'refid' ) );
@@ -104,7 +105,9 @@
} elseif ( $form->getAction() === 'reject' ) {
$wgOut->redirect( $this->page->getFullUrl() );
}
- // Failure for flagging or unflagging
+ } elseif( $status === false ) {
+ // Reject confirmation screen. HACKY :(
+ return;
} else {
if ( $status === 'review_denied' ) {
$wgOut->permissionRequired( 'badaccess-group0' ); // protected?

File Metadata

Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6669
Default Alt Text
reject-patch (5 KB)

Event Timeline