diff -ru ../orig/mediawiki-1.3.5/includes/Article.php ./includes/Article.php
--- ../orig/mediawiki-1.3.5/includes/Article.php	2004-09-02 00:04:40.000000000 +0200
+++ ./includes/Article.php	2005-02-05 16:42:00.000000000 +0100
@@ -889,7 +889,7 @@
 		global $wgOut, $wgUser, $wgLinkCache;
 		global $wgDBtransactions, $wgMwRedir;
 		global $wgUseSquid, $wgInternalServer;
-		global $wgIsPg;
+		global $wgIsPg, $wgRequest;
 		$fname = 'Article::updateArticle';
 
 		if ( $this->mMinorEdit ) { $me1 = 1; } else { $me1 = 0; }
@@ -1004,7 +1004,8 @@
 			$u->doUpdate();
 		}
 
-		$this->showArticle( $text, wfMsg( 'updated' ), $sectionanchor );
+                if ( $wgRequest->getVal( 'action' ) != 'rollbackall' )
+                        $this->showArticle( $text, wfMsg( 'updated' ), $sectionanchor );
 		return true;
 	}
 
@@ -1556,7 +1557,8 @@
 		$newcomment = wfMsg( 'revertpage', $s->old_user_text, $from );
 		$wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
 		$wgOut->setRobotpolicy( 'noindex,nofollow' );
-		$wgOut->addHTML( '<h2>' . $newcomment . "</h2>\n<hr />\n" );
+                if ( $wgRequest->getVal( 'action' ) != 'rollbackall' )
+		        $wgOut->addHTML( '<h2>' . $newcomment . "</h2>\n<hr />\n" );
 		$this->updateArticle( Article::getRevisionText( $s ), $newcomment, 1, $this->mTitle->userIsWatching(), $bot );
 		Article::onArticleEdit( $this->mTitle );
 		$wgOut->returnToMain( false );
diff -ru ../orig/mediawiki-1.3.5/includes/SpecialContributions.php ./includes/SpecialContributions.php
--- ../orig/mediawiki-1.3.5/includes/SpecialContributions.php	2004-08-08 22:31:11.000000000 +0200
+++ ./includes/SpecialContributions.php	2005-02-05 12:58:36.000000000 +0100
@@ -54,7 +54,21 @@
 		$id = 0;
 	}
 
-	$wgOut->setSubtitle( wfMsg( "contribsub", $ul ) );
+        if ( $sysop ) {
+		$extraRollback = $wgRequest->getBool( "bot" ) ? '&bot=1' : '';
+                $ra = " [". $sk->makeKnownLink( 'Special:Contributions', 
+                wfMsg( "rollbackalllink" ),
+		"action=rollbackall"
+                . "&target=" . urlencode( $target ) 
+                . "&from=" . urlencode( $target ) 
+                . "&limit=" . $limit
+                . "&offset=" . $offset
+                . $extraRollback ) ."]";
+        } else {
+                $ra = "";
+        }
+
+	$wgOut->setSubtitle( wfMsg( "contribsub", $ul ) . $ra );
 
 	if ( $hideminor ) {
 		$cmq = "AND cur_minor_edit=0";
@@ -180,7 +194,12 @@
 			$topmarktext .= wfMsg("newarticle");
 		}
 		$sysop = $wgUser->isSysop();
-		if($sysop ) {
+                $action = $wgRequest->getVal( 'action' );
+                if ( $sysop && $action == 'rollbackall' ) {
+                        $rbTitle = Title::makeTitle( $ns, $t );
+                        $rbArticle = new Article($rbTitle);
+                        $rbArticle->rollback();
+                } elseif ( $sysop ) {
 			$extraRollback = $wgRequest->getBool( "bot" ) ? '&bot=1' : '';
 			# $target = $wgRequest->getText( 'target' );
 			$topmarktext .= " [". $sk->makeKnownLink( $page,
diff -ru ../orig/mediawiki-1.3.5/languages/Language.php ./languages/Language.php
--- ../orig/mediawiki-1.3.5/languages/Language.php	2004-09-23 23:39:21.000000000 +0200
+++ ./languages/Language.php	2005-02-05 10:50:29.000000000 +0100
@@ -1049,6 +1049,7 @@
 'rollback'		=> 'Roll back edits',
 'rollback_short' => 'Rollback',
 'rollbacklink'	=> 'rollback',
+'rollbackalllink' => 'rollback all',
 'rollbackfailed' => 'Rollback failed',
 'cantrollback'	=> 'Cannot revert edit; last contributor is only author of this page.',
 'alreadyrolled'	=> "Cannot rollback last edit of [[$1]]
