+ function revLink( $row ) {
+ global $wgUser, $wgLang;
+ $date = $wgLang->timeanddate( $row->rev_timestamp, true );
+ if( $row->rev_deleted && !$wgUser->isAllowed( 'undelete' ) ) {
+ return $date;
+ } else {
+ return $this->mSkin->makeKnownLinkObj(
+ $this->mTitle,
+ $date,
+ 'oldid='.$row->rev_id );
+ }
+ }
+
+ function curLink( $row, $latest ) {
+ global $wgUser;
+ $cur = htmlspecialchars( wfMsg( 'cur' ) );
+ if( $latest
+ || ( $row->rev_deleted && !$wgUser->isAllowed( 'undelete' ) ) ) {
+ return $cur;
+ } else {
+ return $this->mSkin->makeKnownLinkObj(
+ $this->mTitle,
+ $cur,
+ 'diff=0&oldid=' . $row->rev_id );
+ }
+ }
+
+ function lastLink( $row, $next, $counter ) {
+ global $wgUser;
+ $last = htmlspecialchars( wfMsg( 'last' ) );
+ if( is_null( $next )
+ || ( $row->rev_deleted && !$wgUser->isAllowed( 'undelete' ) ) ) {
+ return $last;
+ } else {
+ return $this->mSkin->makeKnownLinkObj(
+ $this->mTitle,
+ $last,
+ "diff={$row->rev_id}&oldid={$next->rev_id}",
+ '',
+ '',
+ ' tabindex="'.$counter.'"' );
+ }
+ }
+
+ function diffButtons( $row, $latest, $counter ) {
+ global $wgUser;
+ if( $this->linesonpage > 1) {
+ $radio = array(
+ 'type' => 'radio',
+ 'value' => $row->rev_id,
+ 'title' => wfMsg( 'selectolderversionfordiff' )
+ );
+ if( $row->rev_deleted && !$wgUser->isAllowed( 'undelete' ) ) {
+ $radio['disabled'] = 'disabled';
+ }
+
+ # XXX: move title texts to javascript
+ if ( $latest ) {
+ $first = wfElement( 'input', array_merge(
+ $radio,
+ array(
+ 'style' => 'visibility:hidden',
+ 'name' => 'oldid' ) ) );
+ $checkmark = array( 'checked' => 'checked' );
+ } else {
+ if( $counter == 2 ) {
+ $checkmark = array( 'checked' => 'checked' );
+ } else {
+ $checkmark = array();
+ }
+ $first = wfElement( 'input', array_merge(
+ $radio,
+ $checkmark,
+ array( 'name' => 'oldid' ) ) );
+ $checkmark = array();
+ }
+ $second = wfElement( 'input', array_merge(
+ $radio,
+ $checkmark,
+ array( 'name' => 'diff' ) ) );
+ return $first . $second;
+ } else {
+ return '';
+ }
+ }
+