(bug 18726) Fixed double URL escaping in the links to Special:RevisionDelete in the...
[lhc/web/wiklou.git] / includes / specials / SpecialUndelete.php
index 7217ce8..3a3e571 100644 (file)
@@ -642,7 +642,7 @@ class UndeleteForm {
                                        $this->showList( $result );
                                }
                        } else {
-                               $wgOut->addWikiText( wfMsgHtml( 'undelete-header' ) );
+                               $wgOut->addWikiMsg( 'undelete-header' );
                        }
                        return;
                }
@@ -679,17 +679,16 @@ class UndeleteForm {
                        Xml::openElement( 'form', array(
                                'method' => 'get',
                                'action' => $wgScript ) ) .
-                       '<fieldset>' .
-                       Xml::element( 'legend', array(),
-                               wfMsg( 'undelete-search-box' ) ) .
+                       Xml::fieldset( wfMsg( 'undelete-search-box' ) ) .
                        Xml::hidden( 'title',
                                SpecialPage::getTitleFor( 'Undelete' )->getPrefixedDbKey() ) .
                        Xml::inputLabel( wfMsg( 'undelete-search-prefix' ),
                                'prefix', 'prefix', 20,
-                               $this->mSearchPrefix ) .
+                               $this->mSearchPrefix ) . ' ' .
                        Xml::submitButton( wfMsg( 'undelete-search-submit' ) ) .
-                       '</fieldset>' .
-                       '</form>' );
+                       Xml::closeElement( 'fieldset' ) .
+                       Xml::closeElement( 'form' )
+               );
        }
 
        // Generic list of deleted pages
@@ -701,7 +700,7 @@ class UndeleteForm {
                        return;
                }
 
-               $wgOut->addWikiMsg( "undeletepagetext" );
+               $wgOut->addWikiMsg( 'undeletepagetext', $wgLang->formatNum( $result->numRows() ) );
 
                $sk = $wgUser->getSkin();
                $undelete = SpecialPage::getTitleFor( 'Undelete' );
@@ -710,7 +709,6 @@ class UndeleteForm {
                        $title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
                        $link = $sk->makeKnownLinkObj( $undelete, htmlspecialchars( $title->getPrefixedText() ),
                                'target=' . $title->getPrefixedUrl() );
-                       #$revs = wfMsgHtml( 'undeleterevisions', $wgLang->formatNum( $row->count ) );
                        $revs = wfMsgExt( 'undeleterevisions',
                                array( 'parseinline' ),
                                $wgLang->formatNum( $row->count ) );
@@ -739,10 +737,10 @@ class UndeleteForm {
 
                if( $rev->isDeleted(Revision::DELETED_TEXT) ) {
                        if( !$rev->userCan(Revision::DELETED_TEXT) ) {
-                               $wgOut->addWikiText( wfMsg( 'rev-deleted-text-permission' ) );
+                               $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-permission' );
                                return;
                        } else {
-                               $wgOut->addWikiText( wfMsg( 'rev-deleted-text-view' ) );
+                               $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-view' );
                                $wgOut->addHTML( '<br/>' );
                                // and we are allowed to see...
                        }
@@ -765,7 +763,7 @@ class UndeleteForm {
                                        $wgOut->addHTML( '<hr />' );
                                }
                        } else {
-                               $wgOut->addHTML( wfMsgHtml( 'undelete-nodiff' ) );
+                               $wgOut->addWikiMsg( 'undelete-nodiff' );
                        }
                }
 
@@ -776,13 +774,16 @@ class UndeleteForm {
                $t = htmlspecialchars( $wgLang->time( $timestamp, true ) );
                $user = $skin->revUserTools( $rev );
 
-               $wgOut->addHTML( '<p>' . wfMsgHtml( 'undelete-revision', $link, $time, $user, $d, $t ) . '</p>' );
+               if( $this->mPreview ) {
+                       $openDiv = '<div id="mw-undelete-revision" class="mw-warning">';
+               } else {
+                       $openDiv = '<div id="mw-undelete-revision">';
+               }
 
+               $wgOut->addHTML( $openDiv . wfMsgWikiHtml( 'undelete-revision', $link, $time, $user, $d, $t ) . '</div>' );
                wfRunHooks( 'UndeleteShowRevision', array( $this->mTargetObj, $rev ) );
 
                if( $this->mPreview ) {
-                       $wgOut->addHTML( "<hr />\n" );
-
                        //Hide [edit]s
                        $popts = $wgOut->parserOptions();
                        $popts->setEditSection( false );
@@ -791,37 +792,37 @@ class UndeleteForm {
                }
 
                $wgOut->addHTML(
-                       wfElement( 'textarea', array(
+                       Xml::element( 'textarea', array(
                                        'readonly' => 'readonly',
                                        'cols' => intval( $wgUser->getOption( 'cols' ) ),
                                        'rows' => intval( $wgUser->getOption( 'rows' ) ) ),
                                $rev->getText( Revision::FOR_THIS_USER ) . "\n" ) .
-                       wfOpenElement( 'div' ) .
-                       wfOpenElement( 'form', array(
+                       Xml::openElement( 'div' ) .
+                       Xml::openElement( 'form', array(
                                'method' => 'post',
                                'action' => $self->getLocalURL( "action=submit" ) ) ) .
-                       wfElement( 'input', array(
+                       Xml::element( 'input', array(
                                'type' => 'hidden',
                                'name' => 'target',
                                'value' => $this->mTargetObj->getPrefixedDbKey() ) ) .
-                       wfElement( 'input', array(
+                       Xml::element( 'input', array(
                                'type' => 'hidden',
                                'name' => 'timestamp',
                                'value' => $timestamp ) ) .
-                       wfElement( 'input', array(
+                       Xml::element( 'input', array(
                                'type' => 'hidden',
                                'name' => 'wpEditToken',
                                'value' => $wgUser->editToken() ) ) .
-                       wfElement( 'input', array(
+                       Xml::element( 'input', array(
                                'type' => 'submit',
                                'name' => 'preview',
                                'value' => wfMsg( 'showpreview' ) ) ) .
-                       wfElement( 'input', array(
+                       Xml::element( 'input', array(
                                'name' => 'diff',
                                'type' => 'submit',
                                'value' => wfMsg( 'showdiff' ) ) ) .
-                       wfCloseElement( 'form' ) .
-                       wfCloseElement( 'div' ) );
+                       Xml::closeElement( 'form' ) .
+                       Xml::closeElement( 'div' ) );
        }
 
        /**
@@ -832,7 +833,7 @@ class UndeleteForm {
         * @return string HTML
         */
        function showDiff( $previousRev, $currentRev ) {
-               global $wgOut, $wgUser;
+               global $wgOut;
 
                $diffEngine = new DifferenceEngine();
                $diffEngine->showDiffStyle();
@@ -865,28 +866,49 @@ class UndeleteForm {
                if( $isDeleted ) {
                        /// @fixme $rev->getTitle() is null for deleted revs...?
                        $targetPage = SpecialPage::getTitleFor( 'Undelete' );
-                       $targetQuery = 'target=' .
-                               $this->mTargetObj->getPrefixedUrl() .
-                               '&timestamp=' .
-                               wfTimestamp( TS_MW, $rev->getTimestamp() );
+                       $targetQuery = array(
+                               'target' => $this->mTargetObj->getPrefixedUrl(),
+                               'timestamp' => wfTimestamp( TS_MW, $rev->getTimestamp() )
+                       );
                } else {
                        /// @fixme getId() may return non-zero for deleted revs...
                        $targetPage = $rev->getTitle();
-                       $targetQuery = 'oldid=' . $rev->getId();
+                       $targetQuery = array( 'oldid' => $rev->getId() );
+               }
+               // Add show/hide link if available
+               if( $wgUser->isAllowed( 'deleterevision' ) ) {
+                       // If revision was hidden from sysops
+                       if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+                               $del = ' ' . Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ),
+                                       '(' . wfMsgHtml('rev-delundel') . ')' );
+                       // Otherwise, show the link...
+                       } else {
+                               $query = array( 'target' => $this->mTargetObj->getPrefixedDbkey(),
+                                       'artimestamp' => $rev->getTimestamp() );
+                               $del = ' ' . $sk->revDeleteLink( $query,
+                                       $rev->isDeleted( Revision::DELETED_RESTRICTED ) );
+                       }
+               } else {
+                       $del = '';
                }
                return
                        '<div id="mw-diff-'.$prefix.'title1"><strong>' .
-                               $sk->makeLinkObj( $targetPage,
-                                       wfMsgHtml( 'revisionasof',
-                                               $wgLang->timeanddate( $rev->getTimestamp(), true ) ),
-                                       $targetQuery ) .
+                               $sk->link(
+                                       $targetPage,
+                                       wfMsgHtml(
+                                               'revisionasof',
+                                               $wgLang->timeanddate( $rev->getTimestamp(), true )
+                                       ),
+                                       array(),
+                                       $targetQuery
+                               ) .
                                ( $isDeleted ? ' ' . wfMsgHtml( 'deletedrev' ) : '' ) .
                        '</strong></div>' .
                        '<div id="mw-diff-'.$prefix.'title2">' .
                                $sk->revUserTools( $rev ) . '<br/>' .
                        '</div>' .
                        '<div id="mw-diff-'.$prefix.'title3">' .
-                               $sk->revComment( $rev ) . '<br/>' .
+                               $sk->revComment( $rev ) . $del . '<br/>' .
                        '</div>';
        }
 
@@ -943,7 +965,7 @@ class UndeleteForm {
                        $wgOut->setPagetitle( wfMsg( 'viewdeletedpage' ) );
                }
 
-               $wgOut->addWikiText( wfMsgHtml( 'undeletepagetitle', $this->mTargetObj->getPrefixedText()) );
+               $wgOut->addWikiMsg( 'undeletepagetitle', $this->mTargetObj->getPrefixedText() );
 
                $archive = new PageArchive( $this->mTargetObj );
                /*
@@ -998,6 +1020,11 @@ class UndeleteForm {
                # Show relevant lines from the deletion log:
                $wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) . "\n" );
                LogEventsList::showLogExtract( $wgOut, 'delete', $this->mTargetObj->getPrefixedText() );
+               # Show relevant lines from the suppression log:
+               if( $wgUser->isAllowed( 'suppressionlog' ) ) {
+                       $wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'suppress' ) ) . "\n" );
+                       LogEventsList::showLogExtract( $wgOut, 'suppress', $this->mTargetObj->getPrefixedText() );
+               }
 
                if( $this->mAllowed && ( $haveRevisions || $haveFiles ) ) {
                        # Format the user-visible controls (comment field, submission button)
@@ -1015,8 +1042,7 @@ class UndeleteForm {
                                $unsuppressBox = "";
                        }
                        $table =
-                               Xml::openElement( 'fieldset' ) .
-                               Xml::element( 'legend', null, wfMsg( 'undelete-fieldset-title' ) ).
+                               Xml::fieldset( wfMsg( 'undelete-fieldset-title' ) ) .
                                Xml::openElement( 'table', array( 'id' => 'mw-undelete-table' ) ) .
                                        "<tr>
                                                <td colspan='2'>" .
@@ -1034,8 +1060,8 @@ class UndeleteForm {
                                        <tr>
                                                <td>&nbsp;</td>
                                                <td class='mw-submit'>" .
-                                                       Xml::submitButton( wfMsg( 'undeletebtn' ), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) .
-                                                       Xml::element( 'input', array( 'type' => 'reset', 'value' => wfMsg( 'undeletereset' ), 'id' => 'mw-undelete-reset' ) ) .
+                                                       Xml::submitButton( wfMsg( 'undeletebtn' ), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) . ' ' .
+                                                       Xml::element( 'input', array( 'type' => 'reset', 'value' => wfMsg( 'undeletereset' ), 'id' => 'mw-undelete-reset' ) ) . ' ' .
                                                        Xml::submitButton( wfMsg( 'undeleteinvert' ), array( 'name' => 'invert', 'id' => 'mw-undelete-invert' ) ) .
                                                "</td>
                                        </tr>" .
@@ -1135,19 +1161,16 @@ class UndeleteForm {
                $comment = $sk->revComment( $rev );
                $revdlink = '';
                if( $wgUser->isAllowed( 'deleterevision' ) ) {
-                       $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
                        if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
                        // If revision was hidden from sysops
-                               $del = wfMsgHtml('rev-delundel');
+                               $revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ),
+                                       '('.wfMsgHtml('rev-delundel').')' );
                        } else {
-                               $del = $sk->makeKnownLinkObj( $revdel,
-                                       wfMsgHtml('rev-delundel'),
-                                       'target=' . $this->mTargetObj->getPrefixedUrl() . "&artimestamp=$ts" );
-                               // Bolden oversighted content
-                               if( $rev->isDeleted( Revision::DELETED_RESTRICTED ) )
-                                       $del = "<strong>$del</strong>";
+                               $query = array( 'target' => $this->mTargetObj->getPrefixedDBkey(),
+                                       'artimestamp' => $ts
+                               );
+                               $revdlink = $sk->revDeleteLink( $query, $rev->isDeleted( Revision::DELETED_RESTRICTED ) );
                        }
-                       $revdlink = "<tt>(<small>$del</small>)</tt>";
                }
 
                return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
@@ -1181,20 +1204,15 @@ class UndeleteForm {
                $comment = $this->getFileComment( $file, $sk );
                $revdlink = '';
                if( $wgUser->isAllowed( 'deleterevision' ) ) {
-                       $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
                        if( !$file->userCan(File::DELETED_RESTRICTED ) ) {
                        // If revision was hidden from sysops
-                               $del = wfMsgHtml('rev-delundel');
+                               $revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml('rev-delundel').')' );
                        } else {
-                               $del = $sk->makeKnownLinkObj( $revdel,
-                                       wfMsgHtml('rev-delundel'),
-                                       'target=' . $this->mTargetObj->getPrefixedUrl() .
-                                       '&fileid=' . $row->fa_id );
-                               // Bolden oversighted content
-                               if( $file->isDeleted( File::DELETED_RESTRICTED ) )
-                                       $del = "<strong>$del</strong>";
+                               $query = array( 'target' => $this->mTargetObj->getPrefixedDBkey(),
+                                       'fileid' => $row->fa_id
+                               );
+                               $revdlink = $sk->revDeleteLink( $query, $file->isDeleted( File::DELETED_RESTRICTED ) );
                        }
-                       $revdlink = "<tt>(<small>$del</small>)</tt>";
                }
                return "<li>$checkBox $revdlink $pageLink . . $userLink $data $comment</li>\n";
        }