*/
use MediaWiki\MediaWikiServices;
+use MediaWiki\Revision\RevisionRecord;
/**
* @ingroup Pager
*/
function formatRow( $row ) {
if ( $this->lastRow ) {
- $latest = ( $this->counter == 1 && $this->mIsFirst );
$firstInList = $this->counter == 1;
$this->counter++;
? $this->getTitle()->getNotificationTimestamp( $this->getUser() )
: false;
- $s = $this->historyLine(
- $this->lastRow, $row, $notifTimestamp, $latest, $firstInList );
+ $s = $this->historyLine( $this->lastRow, $row, $notifTimestamp, false, $firstInList );
} else {
$s = '';
}
$s .= Html::hidden( 'type', 'revision' ) . "\n";
// Button container stored in $this->buttons for re-use in getEndBody()
- $this->buttons = Html::openElement( 'div', [ 'class' => 'mw-history-compareselectedversions' ] );
- $className = 'historysubmit mw-history-compareselectedversions-button';
- $attrs = [ 'class' => $className ]
- + Linker::tooltipAndAccesskeyAttribs( 'compareselectedversions' );
- $this->buttons .= $this->submitButton( $this->msg( 'compareselectedversions' )->text(),
- $attrs
- ) . "\n";
-
- $user = $this->getUser();
- $actionButtons = '';
- if ( $user->isAllowed( 'deleterevision' ) ) {
- $actionButtons .= $this->getRevisionButton( 'revisiondelete', 'showhideselectedversions' );
- }
- if ( $this->showTagEditUI ) {
- $actionButtons .= $this->getRevisionButton( 'editchangetags', 'history-edit-tags' );
- }
- if ( $actionButtons ) {
- $this->buttons .= Xml::tags( 'div', [ 'class' =>
- 'mw-history-revisionactions' ], $actionButtons );
- }
+ $this->buttons = '';
+ if ( $this->getNumRows() > 0 ) {
+ $this->buttons .= Html::openElement(
+ 'div', [ 'class' => 'mw-history-compareselectedversions' ] );
+ $className = 'historysubmit mw-history-compareselectedversions-button';
+ $attrs = [ 'class' => $className ]
+ + Linker::tooltipAndAccesskeyAttribs( 'compareselectedversions' );
+ $this->buttons .= $this->submitButton( $this->msg( 'compareselectedversions' )->text(),
+ $attrs
+ ) . "\n";
+
+ $user = $this->getUser();
+ $actionButtons = '';
+ if ( $user->isAllowed( 'deleterevision' ) ) {
+ $actionButtons .= $this->getRevisionButton(
+ 'revisiondelete', 'showhideselectedversions' );
+ }
+ if ( $this->showTagEditUI ) {
+ $actionButtons .= $this->getRevisionButton(
+ 'editchangetags', 'history-edit-tags' );
+ }
+ if ( $actionButtons ) {
+ $this->buttons .= Xml::tags( 'div', [ 'class' =>
+ 'mw-history-revisionactions' ], $actionButtons );
+ }
- if ( $user->isAllowed( 'deleterevision' ) || $this->showTagEditUI ) {
- $this->buttons .= ( new ListToggle( $this->getOutput() ) )->getHTML();
- }
+ if ( $user->isAllowed( 'deleterevision' ) || $this->showTagEditUI ) {
+ $this->buttons .= ( new ListToggle( $this->getOutput() ) )->getHTML();
+ }
- $this->buttons .= '</div>';
+ $this->buttons .= '</div>';
- $s .= $this->buttons;
+ $s .= $this->buttons;
+ }
$s .= '<ul id="pagehistory">' . "\n";
return $s;
protected function getEndBody() {
if ( $this->lastRow ) {
- $latest = $this->counter == 1 && $this->mIsFirst;
$firstInList = $this->counter == 1;
if ( $this->mIsBackwards ) {
# Next row is unknown, but for UI reasons, probably exists if an offset has been specified
? $this->getTitle()->getNotificationTimestamp( $this->getUser() )
: false;
- $s = $this->historyLine(
- $this->lastRow, $next, $notifTimestamp, $latest, $firstInList );
+ $s = $this->historyLine( $this->lastRow, $next, $notifTimestamp, false, $firstInList );
} else {
$s = '';
}
* @param mixed $next The database row corresponding to the next line
* (chronologically previous)
* @param bool|string $notificationtimestamp
- * @param bool $latest Whether this row corresponds to the page's latest revision.
+ * @param bool $dummy Unused.
* @param bool $firstInList Whether this row corresponds to the first
* displayed on this history page.
* @return string HTML output for the row
*/
function historyLine( $row, $next, $notificationtimestamp = false,
- $latest = false, $firstInList = false ) {
+ $dummy = false, $firstInList = false ) {
$rev = new Revision( $row, 0, $this->getTitle() );
if ( is_object( $next ) ) {
$prevRev = null;
}
- $curlink = $this->curLink( $rev, $latest );
+ $latest = $rev->getId() === $this->getWikiPage()->getLatest();
+ $curlink = $this->curLink( $rev );
$lastlink = $this->lastLink( $rev, $next );
$curLastlinks = Html::rawElement( 'span', [], $curlink ) .
Html::rawElement( 'span', [], $lastlink );
$this->preventClickjacking();
// If revision was hidden from sysops and we don't need the checkbox
// for anything else, disable it
- if ( !$this->showTagEditUI && !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
+ if ( !$this->showTagEditUI
+ && !$rev->userCan( RevisionRecord::DELETED_RESTRICTED, $user )
+ ) {
$del = Xml::check( 'deleterevisions', false, [ 'disabled' => 'disabled' ] );
// Otherwise, enable the checkbox...
} else {
// User can only view deleted revisions...
} elseif ( $rev->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) {
// If revision was hidden from sysops, disable the link
- if ( !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
+ if ( !$rev->userCan( RevisionRecord::DELETED_RESTRICTED, $user ) ) {
$del = Linker::revDeleteLinkDisabled( false );
// Otherwise, show the link...
} else {
$query = [ 'type' => 'revision',
'target' => $this->getTitle()->getPrefixedDBkey(), 'ids' => $rev->getId() ];
$del .= Linker::revDeleteLink( $query,
- $rev->isDeleted( Revision::DELETED_RESTRICTED ), false );
+ $rev->isDeleted( RevisionRecord::DELETED_RESTRICTED ), false );
}
}
if ( $del ) {
}
}
- if ( !$rev->isDeleted( Revision::DELETED_TEXT )
- && !$prevRev->isDeleted( Revision::DELETED_TEXT )
+ if ( !$rev->isDeleted( RevisionRecord::DELETED_TEXT )
+ && !$prevRev->isDeleted( RevisionRecord::DELETED_TEXT )
) {
# Create undo tooltip for the first (=latest) line only
$undoTooltip = $latest
* Create a diff-to-current link for this revision for this page
*
* @param Revision $rev
- * @param bool $latest This is the latest revision of the page?
* @return string
*/
- function curLink( $rev, $latest ) {
+ function curLink( $rev ) {
$cur = $this->historyPage->message['cur'];
- if ( $latest || !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
+ $latest = $this->getWikiPage()->getLatest();
+ if ( $latest === $rev->getId()
+ || !$rev->userCan( RevisionRecord::DELETED_TEXT, $this->getUser() )
+ ) {
return $cur;
} else {
return MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
new HtmlArmor( $cur ),
[],
[
- 'diff' => $this->getWikiPage()->getLatest(),
+ 'diff' => $latest,
'oldid' => $rev->getId()
]
);
$nextRev = new Revision( $next, 0, $this->getTitle() );
- if ( !$prevRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
- || !$nextRev->userCan( Revision::DELETED_TEXT, $this->getUser() )
+ if ( !$prevRev->userCan( RevisionRecord::DELETED_TEXT, $this->getUser() )
+ || !$nextRev->userCan( RevisionRecord::DELETED_TEXT, $this->getUser() )
) {
return $last;
}
$checkmark = [ 'checked' => 'checked' ];
} else {
# Check visibility of old revisions
- if ( !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
+ if ( !$rev->userCan( RevisionRecord::DELETED_TEXT, $this->getUser() ) ) {
$radio['disabled'] = 'disabled';
$checkmark = []; // We will check the next possible one
} elseif ( !$this->oldIdChecked ) {