Revision: 49226 Author: aaron Date: 2009-04-06 01:43:38 +0000 (Mon, 06 Apr 2009)
Log Message: ----------- * (bug 17543) Allow partial hiding of top revision * Fixed isCurrent() check * Cleaned up/fixed some UI code duplication Modified Paths: -------------- trunk/phase3/includes/PageHistory.php trunk/phase3/includes/specials/SpecialRevisiondelete.php trunk/phase3/languages/messages/MessagesEn.php trunk/phase3/maintenance/language/messages.inc Modified: trunk/phase3/includes/PageHistory.php =================================================================== --- trunk/phase3/includes/PageHistory.php 2009-04-05 20:18:02 UTC (rev 49225) +++ trunk/phase3/includes/PageHistory.php 2009-04-06 01:43:38 UTC (rev 49226) @@ -268,11 +268,7 @@ $s = "($curlink) ($lastlink) $arbitrary"; if( $wgUser->isAllowed( 'deleterevision' ) ) { - if( $latest ) { - // We don't currently handle well changing the top revision's settings - $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('. - $this->message['rev-delundel'].')' ); - } else if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { + if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { // If revision was hidden from sysops $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('. $this->message['rev-delundel'].')' ); Modified: trunk/phase3/includes/specials/SpecialRevisiondelete.php =================================================================== --- trunk/phase3/includes/specials/SpecialRevisiondelete.php 2009-04-05 20:18:02 UTC (rev 49225) +++ trunk/phase3/includes/specials/SpecialRevisiondelete.php 2009-04-06 01:43:38 UTC (rev 49226) @@ -267,11 +267,9 @@ $revObjs[$row->rev_id] = new Revision( $row ); } foreach( $this->revisions as $revid ) { - // Hiding top revisison is bad - if( !isset($revObjs[$revid]) || $revObjs[$revid]->isCurrent() ) { - continue; - } else if( !$revObjs[$revid]->userCan(Revision::DELETED_RESTRICTED) ) { - // If a rev is hidden from sysops + if( !isset($revObjs[$revid]) ) continue; // Must exist + // Check if the revision was Oversighted + if( !$revObjs[$revid]->userCan(Revision::DELETED_RESTRICTED) ) { if( !$this->wasPosted ) { $wgOut->permissionRequired( 'suppressrevision' ); return; @@ -812,31 +810,26 @@ $wgOut->permissionRequired( 'suppressrevision' ); return false; } - # If the save went through, go to success message. Otherwise - # bounce back to form... + # If the save went through, go to success message... if( $this->save( $bitfield, $comment, $this->page ) ) { $this->success(); - } else if( $request->getCheck( 'oldid' ) || $request->getCheck( 'artimestamp' ) ) { - return $this->showRevs(); - } else if( $request->getCheck( 'logid' ) ) { - return $this->showLogs(); - } else if( $request->getCheck( 'oldimage' ) || $request->getCheck( 'fileid' ) ) { - return $this->showImages(); + return true; + # ...otherwise, bounce back to form... + } else { + $this->failure(); } + return false; } private function success() { global $wgOut; - $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) ); - $wrap = '<span class="success">$1</span>'; - if( $this->deleteKey == 'logid' ) { $wgOut->wrapWikiMsg( $wrap, 'logdelete-success' ); $this->showLogItems(); } else if( $this->deleteKey == 'oldid' || $this->deleteKey == 'artimestamp' ) { - $wgOut->wrapWikiMsg( $wrap, 'revdelete-success' ); + $wgOut->wrapWikiMsg( $wrap, 'revdelete-success' ); $this->showRevs(); } else if( $this->deleteKey == 'fileid' ) { $wgOut->wrapWikiMsg( $wrap, 'revdelete-success' ); @@ -846,6 +839,24 @@ $this->showImages(); } } + + private function failure() { + global $wgOut; + $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) ); + $wrap = '<span class="error">$1</span>'; + if( $this->deleteKey == 'logid' ) { + $this->showLogItems(); + } else if( $this->deleteKey == 'oldid' || $this->deleteKey == 'artimestamp' ) { + $wgOut->wrapWikiMsg( $wrap, 'revdelete-failure' ); + $this->showRevs(); + } else if( $this->deleteKey == 'fileid' ) { + $wgOut->wrapWikiMsg( $wrap, 'revdelete-failure' ); + $this->showImages(); + } else if( $this->deleteKey == 'oldimage' ) { + $wgOut->wrapWikiMsg( $wrap, 'revdelete-failure' ); + $this->showImages(); + } + } /** * Put together a rev_deleted bitfield from the submitted checkboxes @@ -882,6 +893,7 @@ } else if( isset($this->events) ) { return $deleter->setEventVisibility( $title, $this->events, $bitfield, $reason ); } + return false; } } @@ -910,30 +922,32 @@ foreach( $items as $revid ) { $where[] = intval($revid); } - $result = $this->dbw->select( 'revision', '*', - array( - 'rev_page' => $title->getArticleID(), - 'rev_id' => $where ), - __METHOD__ ); + $result = $this->dbw->select( array('revision','page'), '*', + array( 'rev_page' => $title->getArticleID(), + 'rev_id' => $where, 'rev_page = page_id' ), + __METHOD__ + ); while( $row = $this->dbw->fetchObject( $result ) ) { $revObjs[$row->rev_id] = new Revision( $row ); } // To work! foreach( $items as $revid ) { - if( !isset($revObjs[$revid]) || $revObjs[$revid]->isCurrent() ) { + if( !isset($revObjs[$revid]) ) { $success = false; continue; // Must exist + } else if( $revObjs[$revid]->isCurrent() && ($bitfield & Revision::DELETED_TEXT) ) { + $success = false; + continue; // Cannot hide current version text } else if( !$revObjs[$revid]->userCan(Revision::DELETED_RESTRICTED) ) { - $userAllowedAll=false; + $userAllowedAll = false; continue; } // For logging, maintain a count of revisions if( $revObjs[$revid]->mDeleted != $bitfield ) { - $revCount++; - $revIDs[]=$revid; - + $revIDs[] = $revid; $this->updateRevision( $revObjs[$revid], $bitfield ); $this->updateRecentChangesEdits( $revObjs[$revid], $bitfield, false ); + $revCount++; } } // Clear caches... Modified: trunk/phase3/languages/messages/MessagesEn.php =================================================================== --- trunk/phase3/languages/messages/MessagesEn.php 2009-04-05 20:18:02 UTC (rev 49225) +++ trunk/phase3/languages/messages/MessagesEn.php 2009-04-06 01:43:38 UTC (rev 49226) @@ -1340,6 +1340,7 @@ 'revdelete-logentry' => 'changed revision visibility of [[$1]]', 'logdelete-logentry' => 'changed event visibility of [[$1]]', 'revdelete-success' => "'''Revision visibility successfully set.'''", +'revdelete-failure' => "'''Revision visibility could not be set.'''", 'logdelete-success' => "'''Log visibility successfully set.'''", 'revdel-restore' => 'change visibility', 'pagehist' => 'Page history', Modified: trunk/phase3/maintenance/language/messages.inc =================================================================== --- trunk/phase3/maintenance/language/messages.inc 2009-04-05 20:18:02 UTC (rev 49225) +++ trunk/phase3/maintenance/language/messages.inc 2009-04-06 01:43:38 UTC (rev 49226) @@ -674,6 +674,7 @@ 'revdelete-logaction', 'logdelete-logaction', 'revdelete-success', + 'revdelete-failure', 'logdelete-success', 'revdel-restore', 'pagehist', _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs