Extension:FlaggedRevs/Specifications/Reject Pending Revision

This is a description of a "reject" button for FlaggedRevs.

The problem
Currently, the user interface for reviewing changes in the en.wp configuration of FlaggedRevs provides two buttons: "accept" and "unaccept". When one is highlighted, the other is greyed out. The problem with this is that in the common case, the user would like to see a "reject" button, and will probably try clicking on "unaccept" even when the article was never accepted in the first place.

A solution would be to have a reject button which reverts to a previous version. This would be acceptable if it were obvious which previous version to revert to. Sometimes it is, sometimes it isn't.

Possible solutions
Note - 2010-09-14: we plan to implement "alternative A" (originally planned "C", but decided after some conversation that we didn't need to be that conservative given the confirmation screen)

Alternative A:
Rather than trying to solve all cases, we'll attempt to solve the 90% case, and punt on the rest. The common case, we believe, is that the user will be looking at a diff between the latest accepted revision and the latest pending revision. In this case, the "reject" button should be roughly equivalent to an "undo".

For example, let's say that there are three pending revisions in the queue. That means there is the latest accepted revision (we'll call "A1"), and three pending revisions ("P1", "P2", and "P3"). P3 is the latest pending revision, while P1 and P2 are intermediate pending revisions.

The table below shows what should be done when a diff is being presented on an article under Pending Revisions:

The reject button, when enabled, would introduce a new revision ("A2") which undoes P1, P2, and P3.

The Appearance column above is an ASCII representation of the visible buttons. Strikethrough indicates a disabled button.

"Reject" user interface
When the "Reject" button is pressed, a followup screen should come up.


 * Would you like to reject the following revisions?
 * 01:59, 17 June 2010 192.168.1.100 (Talk | block) (16,001 bytes) (My super fancy edit)
 * 23:41, 16 June 2010 192.168.1.120 (Talk | block) (16,005 bytes) (My even fancier edit)
 * 23:41, 16 June 2010 192.168.1.140 (Talk | block) (16,006 bytes) (My fancy edit)
 * NOTE: This action will revert to the following revision:
 * 20:11, 14 June 2010 ExampleReviewer (Talk | contribs | block) (16,001 bytes) (My correct edit)
 * [Reject] [Cancel]
 * [Reject] [Cancel]
 * [Reject] [Cancel]

Selecting "reject" will result in the following:
 * 1)  A message at the top, letting the user know what they just did
 * 2)  The new latest revision, which should be a copy of what was previously the latest accepted revision.

The text of the box should be as follows: "You have rejected all pending revisions, reverting this page to the latest accepted revision from YYYY-MM-DD by (Author)"

Alternative B
When a reviewer chooses to review the pending changes to an article, the following happens:


 * 1) A diff is displayed between the latest accepted edit and the next edit. If there are several consecutive edits by one user, the diff is between the latest accepted edit and the last of the consecutive edits by that user.
 * 2) The reviewer is given two options "Accept" and either "Undo" (if there are edits after the one a diff is being shown for) or "Rollback" (if there are no edits after the one a diff is being shown for)
 * 3) If the user clicks "Accept", the edit the diff is for is marked as accepted and, if there are more pending changes, the process goes back to step 1. Otherwise, finish.
 * 4) If the user clicks on either "Undo" or "Rollback", the usual undo or rollback feature is triggered.
 * 5) If an undo is required and is not possible, the reviewer is told to inspect the page history and determine what the accepted version should look like and create a version like that (using "edit this page") and save it after checking the "accept the pending changes" box. (This is a mess, but I don't see a good alternative - not everything can be automated.)
 * 6) If the undo works, go to step 1.
 * 7) If there is a rollback, finish.

Alternative C
This alternative is identical to Alternative A in all ways, except that in the case where there are multiple pending revisions from different authors, we disable the "reject" functionality.

The tool tip (title) for the reject button in the multiple author case will read: "The change below is the result of multiple changes from multiple authors. Please check the revision history prior to reverting."

Status of this feature
Currently tracked here: http://www.pivotaltracker.com/story/show/3598176