*/
protected static $limitPreferenceName;
+ /**
+ * Preference name for collapsing the active filter display. Subclasses should override this.
+ * @var string
+ */
+ protected static $collapsedPreferenceName;
+
/** @var string */
protected $rcSubpage;
return;
}
- $knownParams = call_user_func_array(
- [ $this->getRequest(), 'getValues' ],
- array_keys( $this->getOptions()->getAllValues() )
+ $knownParams = $this->getRequest()->getValues(
+ ...array_keys( $this->getOptions()->getAllValues() )
);
// HACK: Temporarily until we can properly define "sticky" filters and parameters,
foreach ( $jsData['messageKeys'] as $key ) {
$messages[$key] = $this->msg( $key )->plain();
}
-
$out->addBodyClasses( 'mw-rcfilters-enabled' );
+ $collapsed = $this->getUser()->getBoolOption( static::$collapsedPreferenceName );
+ if ( $collapsed ) {
+ $out->addBodyClasses( 'mw-rcfilters-collapsed' );
+ }
+
$out->addHTML(
ResourceLoader::makeInlineScript(
ResourceLoader::makeMessageSetScript( $messages ),
);
$out->addJsConfigVars( 'wgStructuredChangeFilters', $jsData['groups'] );
+ $out->addJsConfigVars( 'wgStructuredChangeFiltersCollapsedState', $collapsed );
$out->addJsConfigVars(
'wgRCFiltersChangeTags',
'wgStructuredChangeFiltersDaysPreferenceName',
static::$daysPreferenceName
);
+ $out->addJsConfigVars(
+ 'wgStructuredChangeFiltersCollapsedPreferenceName',
+ static::$collapsedPreferenceName
+ );
$out->addJsConfigVars(
'StructuredChangeFiltersLiveUpdatePollingRate',
* @return ChangesListFilterGroup|null Group, or null if not registered
*/
public function getFilterGroup( $groupName ) {
- return isset( $this->filterGroups[$groupName] ) ?
- $this->filterGroups[$groupName] :
- null;
+ return $this->filterGroups[$groupName] ?? null;
}
// Currently, this intentionally only includes filters that display
];
usort( $this->filterGroups, function ( $a, $b ) {
- return $b->getPriority() - $a->getPriority();
+ return $b->getPriority() <=> $a->getPriority();
} );
foreach ( $this->filterGroups as $groupName => $group ) {
unset( $legendItems['unpatrolled'] );
}
foreach ( $legendItems as $key => $item ) { # generate items of the legend
- $label = isset( $item['legend'] ) ? $item['legend'] : $item['title'];
+ $label = $item['legend'] ?? $item['title'];
$letter = $item['letter'];
- $cssClass = isset( $item['class'] ) ? $item['class'] : $key;
+ $cssClass = $item['class'] ?? $key;
$legend .= Html::element( 'dt',
[ 'class' => $cssClass ], $context->msg( $letter )->text()