Use existing CSS classes for label and input elements in table for proper aligning
[lhc/web/wiklou.git] / includes / SpecialRevisiondelete.php
index b14cc92..419d89a 100644 (file)
@@ -50,6 +50,14 @@ function wfSpecialRevisiondelete( $par = null ) {
                                new FauxRequest(
                                        array( 'page' => $page->getPrefixedText(), 'type' => 'delete' ) ) ) );
                $logViewer->showList( $wgOut );
+               if( $wgUser->isAllowed( 'suppress' ) ){
+                       $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'suppress' ) ) . "</h2>\n" );
+                       $logViewer = new LogViewer(
+                               new LogReader(
+                                       new FauxRequest(
+                                               array( 'page' => $page->getPrefixedText(), 'type' => 'suppress' ) ) ) );
+                       $logViewer->showList( $wgOut );
+               }
        }
 }
 
@@ -68,7 +76,7 @@ class RevisionDeleteForm {
         * @param string $file
         */
        function __construct( $page, $oldids, $logids, $artimestamps, $fileids, $img, $file ) {
-               global $wgUser;
+               global $wgUser, $wgOut;
 
                $this->page = $page;
                # For reviewing deleted files...
@@ -84,6 +92,25 @@ class RevisionDeleteForm {
                        return;
                }
                $this->skin = $wgUser->getSkin();
+               # Give a link to the log for this page
+               if( !is_null($this->page) && $this->page->getNamespace() > -1 ) {
+                       $links = array();
+                       
+                       $logtitle = SpecialPage::getTitleFor( 'Log' );
+                       $links[] = $this->skin->makeKnownLinkObj( $logtitle, wfMsgHtml( 'viewpagelogs' ),
+                               wfArrayToCGI( array( 'page' => $this->page->getPrefixedUrl() ) ) );
+                       # Give a link to the page history       
+                       $links[] = $this->skin->makeKnownLinkObj( $this->page, wfMsgHtml( 'pagehist' ),
+                               wfArrayToCGI( array( 'action' => 'history' ) ) );
+                       # Link to deleted edits
+                       if( $wgUser->isAllowed('undelete') ) {
+                               $undelete = SpecialPage::getTitleFor( 'Undelete' );
+                               $links[] = $this->skin->makeKnownLinkObj( $undelete, wfMsgHtml( 'deletedhist' ),
+                                       wfArrayToCGI( array( 'target' => $this->page->getPrefixedUrl() ) ) );
+                       }
+                       # Logs themselves don't have histories or archived revisions
+                       $wgOut->setSubtitle( '<p>'.implode($links,' / ').'</p>' );
+               }
                // At this point, we should only have one of these
                if( $oldids ) {
                        $this->revisions = $oldids;
@@ -226,51 +253,52 @@ class RevisionDeleteForm {
                                $wgOut->addHtml( $this->historyLine( $rev ) );
                                $bitfields |= $rev->mDeleted;
                        }
-               } 
+               }
                $wgOut->addHtml( "</ul>" );
-               
+
                $wgOut->addWikiText( wfMsgHtml( 'revdelete-text' ) );
-               
+
                // Normal sysops can always see what they did, but can't always change it
                if( !$UserAllowed ) return;
-               
+
                $items = array(
-                       wfInputLabel( wfMsgHtml( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
-                       wfSubmitButton( wfMsgHtml( 'revdelete-submit' ) ) );
+                       Xml::inputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
+                       Xml::submitButton( wfMsg( 'revdelete-submit' ) )
+               );
                $hidden = array(
-                       wfHidden( 'wpEditToken', $wgUser->editToken() ),
-                       wfHidden( 'target', $this->page->getPrefixedText() ),
-                       wfHidden( 'type', $this->deleteKey ) );
+                       Xml::hidden( 'wpEditToken', $wgUser->editToken() ),
+                       Xml::hidden( 'target', $this->page->getPrefixedText() ),
+                       Xml::hidden( 'type', $this->deleteKey )
+               );
                if( $this->deleteKey=='oldid' ) {
                        foreach( $revObjs as $rev )
                                $hidden[] = wfHidden( 'oldid[]', $rev->getID() );
-               } else {        
+               } else {
                        foreach( $revObjs as $rev )
                                $hidden[] = wfHidden( 'artimestamp[]', $rev->getTimestamp() );
                }
                $special = SpecialPage::getTitleFor( 'Revisiondelete' );
-               $wgOut->addHtml( wfElement( 'form', array(
-                       'method' => 'post',
-                       'action' => $special->getLocalUrl( 'action=submit' ) ),
-                       null ) );
-               
-               $wgOut->addHtml( '<fieldset><legend>' . wfMsgHtml( 'revdelete-legend' ) . '</legend>' );
+               $wgOut->addHtml(
+                       Xml::openElement( 'form', array( 'method' => 'post', 'action' => $special->getLocalUrl( 'action=submit' ), 'id' => 'mw-revdel-form-revisions' ) ) .
+                       Xml::openElement( 'fieldset' ) .
+                       xml::element( 'legend', null,  wfMsg( 'revdelete-legend' ) )
+               );
                // FIXME: all items checked for just one rev are checked, even if not set for the others
                foreach( $this->checks as $item ) {
                        list( $message, $name, $field ) = $item;
-                       $wgOut->addHtml( "<div>" .
-                               wfCheckLabel( wfMsgHtml( $message), $name, $name, $bitfields & $field ) .
-                               "</div>\n" );
+                       $wgOut->addHtml( Xml::tags( 'div', null, Xml::checkLabel( wfMsg( $message ), $name, $name, $bitfields & $field ) ) );
                }
-               $wgOut->addHtml( '</fieldset>' );
                foreach( $items as $item ) {
-                       $wgOut->addHtml( '<p>' . $item . '</p>' );
+                       $wgOut->addHtml( Xml::tags( 'p', null, $item ) );
                }
                foreach( $hidden as $item ) {
                        $wgOut->addHtml( $item );
                }
-               
-               $wgOut->addHtml( '</form>' );
+               $wgOut->addHtml( 
+                       Xml::closeElement( 'fieldset' ) .
+                       Xml::closeElement( 'form' ) . "\n"
+               );
+
        }
 
        /**
@@ -364,18 +392,20 @@ class RevisionDeleteForm {
                        }
                }
                $wgOut->addHtml( "</ul>" );
-               
+
                $wgOut->addWikiText( wfMsgHtml( 'revdelete-text' ) );
                //Normal sysops can always see what they did, but can't always change it
                if( !$UserAllowed ) return;
-               
+
                $items = array(
-                       wfInputLabel( wfMsgHtml( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
-                       wfSubmitButton( wfMsgHtml( 'revdelete-submit' ) ) );
+                       Xml::inputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
+                       Xml::submitButton( wfMsg( 'revdelete-submit' ) )
+               );
                $hidden = array(
-                       wfHidden( 'wpEditToken', $wgUser->editToken() ),
-                       wfHidden( 'target', $this->page->getPrefixedText() ),
-                       wfHidden( 'type', $this->deleteKey ) );
+                       Xml::hidden( 'wpEditToken', $wgUser->editToken() ),
+                       Xml::hidden( 'target', $this->page->getPrefixedText() ),
+                       Xml::hidden( 'type', $this->deleteKey )
+               );
                if( $this->deleteKey=='oldimage' ) {
                        foreach( $this->ofiles as $filename )
                                $hidden[] = wfHidden( 'oldimage[]', $filename );
@@ -384,36 +414,35 @@ class RevisionDeleteForm {
                                $hidden[] = wfHidden( 'fileid[]', $fileid );
                }
                $special = SpecialPage::getTitleFor( 'Revisiondelete' );
-               $wgOut->addHtml( wfElement( 'form', array(
-                       'method' => 'post',
-                       'action' => $special->getLocalUrl( 'action=submit' ) ),
-                       null ) );
-               
-               $wgOut->addHtml( '<fieldset><legend>' . wfMsgHtml( 'revdelete-legend' ) . '</legend>' );
+               $wgOut->addHtml( 
+                       Xml::openElement( 'form', array( 'method' => 'post', 'action' => $special->getLocalUrl( 'action=submit' ), 'id' => 'mw-revdel-form-filerevisions' ) ) .
+                       Xml::openElement( 'fieldset' ) .
+                       xml::element( 'legend', null,  wfMsg( 'revdelete-legend' ) )
+               );
                // FIXME: all items checked for just one file are checked, even if not set for the others
                foreach( $this->checks as $item ) {
                        list( $message, $name, $field ) = $item;
-                       $wgOut->addHtml( '<div>' .
-                               wfCheckLabel( wfMsgHtml( $message), $name, $name, $bitfields & $field ) .
-                               '</div>' );
+                       $wgOut->addHtml( Xml::tags( 'div', null, Xml::checkLabel( wfMsg( $message ), $name, $name, $bitfields & $field ) ) );
                }
-               $wgOut->addHtml( '</fieldset>' );
                foreach( $items as $item ) {
-                       $wgOut->addHtml( '<p>' . $item . '</p>' );
+                       $wgOut->addHtml( Xml::tags( 'p', null, $item ) );
                }
                foreach( $hidden as $item ) {
                        $wgOut->addHtml( $item );
                }
-               
-               $wgOut->addHtml( '</form>' );
+
+               $wgOut->addHtml( 
+                       Xml::closeElement( 'fieldset' ) .
+                       Xml::closeElement( 'form' ) . "\n"
+               );
        }
-               
+
        /**
         * This lets a user set restrictions for log items
         * @param WebRequest $request
         */
        function showLogItems( $request ) {
-               global $wgOut, $wgUser, $action;
+               global $wgOut, $wgUser, $action, $wgMessageCache;
 
                $UserAllowed = true;
                $wgOut->addWikiText( wfMsgExt( 'logdelete-selected', array('parsemag'), count($this->events) ) );
@@ -434,9 +463,10 @@ class RevisionDeleteForm {
                while( $row = $dbr->fetchObject( $result ) ) {
                        $logRows[$row->log_id] = $row;
                }
+               $wgMessageCache->loadAllMessages();
                foreach( $this->events as $logid ) {
                        // Don't hide from oversight log!!!
-                       if( !isset( $logRows[$logid] ) || $logRows[$logid]->log_type=='oversight' ) {
+                       if( !isset( $logRows[$logid] ) || $logRows[$logid]->log_type=='suppress' ) {
                                $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
                                return;
                        } else if( !LogPage::userCan( $logRows[$logid],Revision::DELETED_RESTRICTED) ) {
@@ -455,7 +485,7 @@ class RevisionDeleteForm {
                $wgOut->addWikiMsg( 'revdelete-text' );
                // Normal sysops can always see what they did, but can't always change it
                if( !$UserAllowed ) return;
-               
+
                $items = array(
                        Xml::inputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
                        Xml::submitButton( wfMsg( 'revdelete-submit' ) ) );
@@ -465,32 +495,31 @@ class RevisionDeleteForm {
                foreach( $this->events as $logid ) {
                        $hidden[] = Xml::hidden( 'logid[]', $logid );
                }
-               
+
                $special = SpecialPage::getTitleFor( 'Revisiondelete' );
-               $wgOut->addHtml( Xml::element( 'form', array(
-                       'method' => 'post',
-                       'action' => $special->getLocalUrl( 'action=submit' ) ),
-                       null ) );
-               
-               $wgOut->addHtml( '<fieldset><legend>' . wfMsgHtml( 'revdelete-legend' ) . '</legend>' );
+               $wgOut->addHtml(
+                       Xml::openElement( 'form', array( 'method' => 'post', 'action' => $special->getLocalUrl( 'action=submit' ), 'id' => 'mw-revdel-form-logs' ) ) .
+                       Xml::openElement( 'fieldset' ) .
+                       xml::element( 'legend', null,  wfMsg( 'revdelete-legend' ) )
+               );
                // FIXME: all items checked for just on event are checked, even if not set for the others
                foreach( $this->checks as $item ) {
                        list( $message, $name, $field ) = $item;
-                       $wgOut->addHtml( '<div>' .
-                               Xml::checkLabel( wfMsg( $message), $name, $name, $bitfields & $field ) .
-                               '</div>' );
+                       $wgOut->addHtml( Xml::tags( 'div', null, Xml::checkLabel( wfMsg( $message ), $name, $name, $bitfields & $field ) ) );
                }
-               $wgOut->addHtml( '</fieldset>' );
                foreach( $items as $item ) {
-                       $wgOut->addHtml( '<p>' . $item . '</p>' );
+                       $wgOut->addHtml( Xml::tags( 'p', null, $item ) );
                }
                foreach( $hidden as $item ) {
                        $wgOut->addHtml( $item );
                }
-               
-               $wgOut->addHtml( '</form>' );
+
+               $wgOut->addHtml( 
+                       Xml::closeElement( 'fieldset' ) .
+                       Xml::closeElement( 'form' ) . "\n"
+               );
        }
-       
+
        /**
         * @param Revision $rev
         * @returns string
@@ -594,11 +623,15 @@ class RevisionDeleteForm {
 
                $date = $wgContLang->timeanddate( $row->log_timestamp );
                $paramArray = LogPage::extractParams( $row->log_params );
+               $title = Title::makeTitle( $row->log_namespace, $row->log_title );
+               
+               $logtitle = SpecialPage::getTitleFor( 'Log' );
+               $loglink = $this->skin->makeKnownLinkObj( $logtitle, wfMsgHtml( 'log' ),
+                       wfArrayToCGI( array( 'page' => $title->getPrefixedUrl() ) ) );
                // Action text
                if( !LogPage::userCan($row,LogPage::DELETED_ACTION) ) {
                        $action = '<span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';        
                } else {
-                       $title = Title::makeTitle( $row->log_namespace, $row->log_title );
                        $action = LogPage::actionText( $row->log_type, $row->log_action, $title, 
                                $this->skin, $paramArray, true, true );
                        if( $row->log_deleted & LogPage::DELETED_ACTION )
@@ -614,7 +647,7 @@ class RevisionDeleteForm {
                if( LogPage::isDeleted($row,LogPage::DELETED_COMMENT) ) {
                        $comment = '<span class="history-deleted">' . $comment . '</span>';
                }
-               return "<li>$date $userLink $action $comment</li>";
+               return "<li>($loglink) $date $userLink $action $comment</li>";
        }
        
        /**
@@ -679,20 +712,7 @@ class RevisionDeleteForm {
                global $wgOut;
 
                $wgOut->setPagetitle( wfMsgHtml( 'actioncomplete' ) );
-               # Give a link to the log for this page
-               $logtitle = SpecialPage::getTitleFor( 'Log' );
-               $loglink = $this->skin->makeKnownLinkObj( $logtitle, wfMsgHtml( 'viewpagelogs' ),
-                       wfArrayToCGI( array('page' => $this->target ) ) );
-               # Give a link to the page history       
-               $histlink = $this->skin->makeKnownLinkObj( $this->title, wfMsgHtml( 'pagehist' ),
-                       wfArrayToCGI( array('action' => 'history' ) ) );
-               # Link to deleted edits
-               $undelete = SpecialPage::getTitleFor( 'Undelete' );
-               $dellink = $this->skin->makeKnownLinkObj( $undelete, wfMsgHtml( 'deletedhist' ),
-                       wfArrayToCGI( array('target' => $this->target) ) );
-               # Logs themselves don't have histories or archived revisions
-               if( !is_null($this->title) && $this->title->getNamespace() > -1)
-                       $wgOut->setSubtitle( '<p>'.$histlink.' / '.$loglink.' / '.$dellink.'</p>' );
+               
                if( $this->deleteKey=='logid' ) {
                        $wgOut->addWikiText( Xml::element( 'span', array( 'class' => 'success' ), wfMsg( 'logdelete-success' ) ), false );
                        $this->showLogItems( $request );
@@ -703,6 +723,7 @@ class RevisionDeleteForm {
                        $wgOut->addWikiText( Xml::element( 'span', array( 'class' => 'success' ), wfMsg( 'revdelete-success' ) ), false );
                        $this->showImages( $request );
                } else if( $this->deleteKey=='oldimage' ) {
+                       $wgOut->addWikiText( Xml::element( 'span', array( 'class' => 'success' ), wfMsg( 'revdelete-success' ) ), false );
                        $this->showImages( $request );
                }
        }
@@ -1060,7 +1081,7 @@ class RevisionDeleter {
                                $success = false;
                                continue; // Must exist
                        } else if( !LogPage::userCan($logRows[$logid], Revision::DELETED_RESTRICTED)
-                                || $logRows[$logid]->log_type=='oversight' ) {
+                                || $logRows[$logid]->log_type == 'suppress' ) {
                        // Don't hide from oversight log!!!
                        $userAllowedAll=false;
                        continue;
@@ -1323,7 +1344,7 @@ class RevisionDeleter {
         */
        function updateLog( $title, $count, $nbitfield, $obitfield, $comment, $target, $param, $items = array() ) {
                // Put things hidden from sysops in the oversight log
-               $logtype = ( ($nbitfield | $obitfield) & Revision::DELETED_RESTRICTED ) ? 'oversight' : 'delete';
+               $logtype = ( ($nbitfield | $obitfield) & Revision::DELETED_RESTRICTED ) ? 'suppress' : 'delete';
                $log = new LogPage( $logtype );
                // FIXME: do this better
                if( $param=='logid' ) {