From ed073dc83a7917281a53e423566f8933f40ac6c5 Mon Sep 17 00:00:00 2001 From: Rob Church Date: Sat, 7 Jul 2007 00:17:51 +0000 Subject: [PATCH] * Make "undo" and "rollback" links appear in a consistent fashion on page histories * Fix odd user interface behaviour in rollback success pages - introduce a separate message for the UI feedback and pass standard tool links --- RELEASE-NOTES | 1 + includes/Article.php | 22 ++++++++++++---------- includes/Linker.php | 30 ++++++++++++++++++++++-------- includes/PageHistory.php | 16 ++++++++++++---- languages/messages/MessagesEn.php | 1 + maintenance/language/messages.inc | 1 + 6 files changed, 49 insertions(+), 22 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index df25f06162..a55cddbd93 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -124,6 +124,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN removals, and convenient exporting of watchlist contents * Show "undo" links in page histories * Option to jump to specified time period in user contributions +* Improved feedback on "rollback success" page == Bugfixes since 1.10 == diff --git a/includes/Article.php b/includes/Article.php index e8ab1b282c..ccd63d4ce0 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -2257,16 +2257,20 @@ class Article { $newComment = wfMsgForContent( 'revertpage', $target->getUserText(), $from ); $newComment = $wgRequest->getText( 'summary', $newComment ); - # Save it! - $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) ); - $wgOut->setRobotpolicy( 'noindex,nofollow' ); - $wgOut->addHTML( '

' . htmlspecialchars( $newComment ) . "

\n
\n" ); - + # Save $flags = EDIT_UPDATE | EDIT_MINOR; if( $bot ) $flags |= EDIT_FORCE_BOT; - if( !$this->doEdit( $target->getText(), $newComment, $flags ) ) - ; # todo: this error case has not been handled? Use db transactions? + $this->doEdit( $target->getText(), $newComment, $flags ); + + # User feedback + $wgOut->setPageTitle( wfMsg( 'actioncomplete' ) ); + $wgOut->setRobotPolicy( 'noindex,nofollow' ); + $old = $wgUser->getSkin()->userLink( $current->getUser(), $current->getUserText() ) + . $wgUser->getSkin()->userToolLinks( $current->getUser(), $current->getUserText() ); + $new = $wgUser->getSkin()->userLink( $target->getUser(), $target->getUserText() ) + . $wgUser->getSkin()->userToolLinks( $target->getUser(), $target->getUserText() ); + $wgOut->addHtml( wfMsgExt( 'rollback-success', array( 'parse', 'replaceafter' ), $old, $new ) ); $wgOut->returnToMain( false ); } @@ -2991,6 +2995,4 @@ class Article { $wgOut->addParserOutput( $parserOutput ); } -} - - +} \ No newline at end of file diff --git a/includes/Linker.php b/includes/Linker.php index 600f455244..9613026547 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -1175,15 +1175,28 @@ class Linker { * @param Revision $rev */ function generateRollback( $rev ) { - global $wgUser, $wgRequest; + return '[' + . $this->buildRollbackLink( $rev ) + . ']'; + } + + /** + * Build a raw rollback link, useful for collections of "tool" links + * + * @param Revision $rev + * @return string + */ + public function buildRollbackLink( $rev ) { + global $wgRequest, $wgUser; $title = $rev->getTitle(); - - $extraRollback = $wgRequest->getBool( 'bot' ) ? '&bot=1' : ''; - $extraRollback .= '&token=' . urlencode( - $wgUser->editToken( array( $title->getPrefixedText(), $rev->getUserText() ) ) ); - return '['. $this->makeKnownLinkObj( $title, - wfMsg('rollbacklink'), - 'action=rollback&from=' . urlencode( $rev->getUserText() ) . $extraRollback ) .']'; + $extra = $wgRequest->getBool( 'bot' ) ? '&bot=1' : ''; + $extra .= '&token=' . urlencode( $wgUser->editToken( array( $title->getPrefixedText(), + $rev->getUserText() ) ) ); + return $this->makeKnownLinkObj( + $title, + wfMsgHtml( 'rollbacklink' ), + 'action=rollback&from=' . urlencode( $rev->getUserText() ) . $extra + ); } /** @@ -1323,3 +1336,4 @@ class Linker { } + diff --git a/includes/PageHistory.php b/includes/PageHistory.php index 2b57d66593..7e7c541450 100644 --- a/includes/PageHistory.php +++ b/includes/PageHistory.php @@ -244,19 +244,26 @@ class PageHistory { if( $row->rev_deleted & Revision::DELETED_TEXT ) { $s .= ' ' . wfMsgHtml( 'deletedrev' ); } + + $tools = array(); + if( $wgUser->isAllowed( 'rollback' ) && $latest ) { - $s .= ' '.$this->mSkin->generateRollback( $rev ); + $tools[] = '' + . $this->mSkin->buildRollbackLink( $rev ) + . ''; } - + if ( !is_null( $next ) ) { $undolink = $this->mSkin->makeKnownLinkObj( $this->mTitle, - '(' . wfMsgHtml( 'editundo' ) . ')', + wfMsgHtml( 'editundo' ), 'action=edit&undoafter=' . $next->rev_id . '&undo=' . $rev->getId() ); - $s .= " {$undolink}"; + $tools[] = "{$undolink}"; } + $s .= ' (' . implode( ' | ', $tools ) . ')'; + wfRunHooks( 'PageHistoryLineEnding', array( &$row , &$s ) ); $s .= "\n"; @@ -599,3 +606,4 @@ class PageHistoryPager extends ReverseChronologicalPager { } + diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 8abc3ecab5..89f70faf42 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -1802,6 +1802,7 @@ by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled bac Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]).', 'editcomment' => 'The edit comment was: "$1".', # only shown if there is an edit comment 'revertpage' => 'Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]); changed back to last version by [[User:$1|$1]]', +'rollback-success' => 'Reverted edits by $1; changed back to last version by $2.', 'sessionfailure' => 'There seems to be a problem with your login session; this action has been canceled as a precaution against session hijacking. Please hit "back" and reload the page you came from, then try again.', diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index 9b87411033..aa5eb3e8df 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -1154,6 +1154,7 @@ $wgMessageStructure = array( 'alreadyrolled', 'editcomment', 'revertpage', + 'rollback-success', 'sessionfailure', 'protectlogpage', 'protectlogtext', -- 2.20.1