deprecated and will be removed in the future.
* The FileBasedSiteLookup class has been deprecated. For a cacheable SiteLookup
implementation, use CachingSiteStore instead.
+* Language::viewPrevNext function is deprecated, use
+ SpecialPage::buildPrevNextNavigation instead
* ManualLogEntry::setTags() is deprecated, use ManualLogEntry::addTags()
instead. The setTags() method was overriding the tags, addTags() doesn't
override, only adds new tags.
$miserMaxResults = $this->getConfig()->get( 'MiserMode' )
&& ( $this->offset + $this->limit >= $this->getMaxResults() );
$atEnd = ( $this->numRows <= $this->limit ) || $miserMaxResults;
- $paging = $this->getLanguage()->viewPrevNext( $this->getPageTitle( $par ), $this->offset,
- $this->limit, $this->linkParameters(), $atEnd );
+ $paging = $this->buildPrevNextNavigation( $this->offset,
+ $this->limit, $this->linkParameters(), $atEnd, $par );
$out->addHTML( '<p>' . $paging . '</p>' );
} else {
# No results to show, so don't bother with "showing X of Y" etc.
public function setLinkRenderer( LinkRenderer $linkRenderer ) {
$this->linkRenderer = $linkRenderer;
}
+
+ /**
+ * Generate (prev x| next x) (20|50|100...) type links for paging
+ *
+ * @param int $offset
+ * @param int $limit
+ * @param array $query Optional URL query parameter string
+ * @param bool $atend Optional param for specified if this is the last page
+ * @param string|bool $subpage Optional param for specifying subpage
+ * @return string
+ */
+ protected function buildPrevNextNavigation( $offset, $limit,
+ array $query = [], $atend = false, $subpage = false
+ ) {
+ $lang = $this->getLanguage();
+
+ # Make 'previous' link
+ $prev = $this->msg( 'prevn' )->numParams( $limit )->text();
+ if ( $offset > 0 ) {
+ $plink = $this->numLink( max( $offset - $limit, 0 ), $limit, $query,
+ $prev, 'prevn-title', 'mw-prevlink', $subpage );
+ } else {
+ $plink = htmlspecialchars( $prev );
+ }
+
+ # Make 'next' link
+ $next = $this->msg( 'nextn' )->numParams( $limit )->text();
+ if ( $atend ) {
+ $nlink = htmlspecialchars( $next );
+ } else {
+ $nlink = $this->numLink( $offset + $limit, $limit,
+ $query, $next, 'nextn-title', 'mw-nextlink', $subpage );
+ }
+
+ # Make links to set number of items per page
+ $numLinks = [];
+ foreach ( [ 20, 50, 100, 250, 500 ] as $num ) {
+ $numLinks[] = $this->numLink( $offset, $num, $query,
+ $lang->formatNum( $num ), 'shown-title', 'mw-numlink', $subpage );
+ }
+
+ return $this->msg( 'viewprevnext' )->rawParams( $plink, $nlink, $lang->pipeList( $numLinks ) )->
+ escaped();
+ }
+
+ /**
+ * Helper function for buildPrevNextNavigation() that generates links
+ *
+ * @param int $offset
+ * @param int $limit
+ * @param array $query Extra query parameters
+ * @param string $link Text to use for the link; will be escaped
+ * @param string $tooltipMsg Name of the message to use as tooltip
+ * @param string $class Value of the "class" attribute of the link
+ * @param string|bool $subpage Optional param for specifying subpage
+ * @return string HTML fragment
+ */
+ private function numLink( $offset, $limit, array $query, $link,
+ $tooltipMsg, $class, $subpage = false
+ ) {
+ $query = [ 'limit' => $limit, 'offset' => $offset ] + $query;
+ $tooltip = $this->msg( $tooltipMsg )->numParams( $limit )->text();
+ $href = $this->getPageTitle( $subpage )->getLocalURL( $query );
+ return Html::element( 'a', [ 'href' => $href,
+ 'title' => $tooltip, 'class' => $class ], $link );
+ }
}