- $s = "<select name=\"limit\">";
- foreach ( $this->mLimitsShown as $limit ) {
- $selected = $limit == $this->mLimit ? 'selected="selected"' : '';
- $formattedLimit = $wgLang->formatNum( $limit );
- $s .= "<option value=\"$limit\" $selected>$formattedLimit</option>\n";
+
+ # Add the current limit from the query string
+ # to avoid that the limit is lost after clicking Go next time
+ if ( !in_array( $this->mLimit, $this->mLimitsShown ) ) {
+ $this->mLimitsShown[] = $this->mLimit;
+ sort( $this->mLimitsShown );
+ }
+ $s = Html::openElement( 'select', array( 'name' => 'limit' ) ) . "\n";
+ foreach ( $this->mLimitsShown as $key => $value ) {
+ # The pair is either $index => $limit, in which case the $value
+ # will be numeric, or $limit => $text, in which case the $value
+ # will be a string.
+ if( is_int( $value ) ){
+ $limit = $value;
+ $text = $wgLang->formatNum( $limit );
+ } else {
+ $limit = $key;
+ $text = $value;
+ }
+ $s .= Xml::option( $text, $limit, $limit == $this->mLimit ) . "\n";