40 $this->mSort = $this->
getRequest()->getText(
'sort' );
41 if ( !array_key_exists( $this->mSort, $this->
getFieldNames() )
48 } elseif ( $this->
getRequest()->getBool(
'desc' ) ) {
52 parent::__construct();
71 return parent::getBody();
84 $body = parent::getBody();
103 $body = parent::getBody();
106 $pout->
setText( $navigation . $body . $navigation );
122 foreach ( $fields
as $field =>
$name ) {
123 if ( strval(
$name ) ==
'' ) {
124 $s .= Html::rawElement(
'th', [],
"\u{00A0}" ) .
"\n";
130 if ( $this->mSort == $field ) {
135 $class =
"$sortClass mw-datatable-is-sorted mw-datatable-is-descending";
140 $class =
"$sortClass mw-datatable-is-sorted mw-datatable-is-ascending";
147 $s .= Html::rawElement(
'th', [
'class' => $class ],
$link ) .
"\n";
149 $s .= Html::element(
'th', [],
$name ) .
"\n";
154 $ret = Html::openElement(
'table', [
155 'class' =>
" $tableClass" ]
157 $ret .= Html::rawElement(
'thead', [], Html::rawElement(
'tr', [],
"\n" .
$s .
"\n" ) );
158 $ret .= Html::openElement(
'tbody' ) .
"\n";
168 return "</tbody></table>\n";
177 $msgEmpty = $this->
msg(
'table_pager_empty' )->text();
178 return Html::rawElement(
'tr', [],
179 Html::element(
'td', [
'colspan' => $colspan ], $msgEmpty ) );
188 $this->mCurrentRow = $row;
189 $s = Html::openElement(
'tr', $this->
getRowAttrs( $row ) ) .
"\n";
192 foreach ( $fieldNames
as $field =>
$name ) {
193 $value = $row->$field ??
null;
196 if ( $formatted ==
'' ) {
197 $formatted =
"\u{00A0}";
203 $s .= Html::closeElement(
'tr' ) .
"\n";
230 if ( $class ===
'' ) {
257 return [
'class' =>
'TablePager_col_' . $field ];
273 return 'mw-datatable';
280 return 'TablePager_nav';
287 return 'TablePager_sort';
301 $types = [
'first',
'prev',
'next',
'last' ];
310 $buttons[] = new \OOUI\ButtonWidget( [
316 'classes' => [
'TablePager-button-' .
$type ],
317 'flags' => [
'progressive' ],
319 'label' => $this->
msg(
'table_pager_' . $type )->
text(),
323 'icon' =>
$type ===
'prev' ?
'previous' :
$type,
327 return new \OOUI\ButtonGroupWidget( [
339 return [
'mediawiki.pager.tablePager',
'oojs-ui.styles.icons-movement' ];
349 $select =
new XmlSelect(
'limit',
false, $this->mLimit );
354 return $select->getHTML();
365 # Add the current limit from the query string
366 # to avoid that the limit is lost after clicking Go next time
367 if ( !in_array( $this->mLimit, $this->mLimitsShown ) ) {
369 sort( $this->mLimitsShown );
372 foreach ( $this->mLimitsShown
as $key =>
$value ) {
373 # The pair is either $index => $limit, in which case the $value
374 # will be numeric, or $limit => $text, in which case the $value
383 $ret[$text] = $limit;
397 $blacklist = (
array)$blacklist;
399 foreach ( $blacklist
as $name ) {
415 return Html::rawElement(
431 # Make the select with some explanatory text
432 $msgSubmit = $this->
msg(
'table_pager_limit_submit' )->escaped();
434 return $this->
msg(
'table_pager_limit' )
436 "\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .