Skip to content

Commit

Permalink
BUG GridFieldFilterHeader works without non-filterable cols
Browse files Browse the repository at this point in the history
Previously relied on the presence of a last column which wasn't filterable,
commonly a GridFieldEditButton. If this wasn't present, the filter buttons
were never added, leading to the GridField JS reload request being sent
without the required button form action, so GridFieldFilterHeader->handleAction()
was never called.
  • Loading branch information
chillu committed May 23, 2013
1 parent 2e2c922 commit c85c495
Showing 1 changed file with 20 additions and 21 deletions.
41 changes: 20 additions & 21 deletions forms/gridfield/GridFieldFilterHeader.php
Expand Up @@ -113,7 +113,7 @@ public function getHTMLFragments($gridField) {
$currentColumn++;
$metadata = $gridField->getColumnMetadata($columnField);
$title = $metadata['title'];

$fields = new FieldGroup();

if($title && $gridField->getList()->canFilterBy($columnField)) {
$value = '';
Expand All @@ -127,34 +127,33 @@ public function getHTMLFragments($gridField) {
$field->setAttribute('placeholder',
_t('GridField.FilterBy', "Filter by ") . _t('GridField.'.$metadata['title'], $metadata['title']));

$field = new FieldGroup(
$field,
$fields->push($field);
$fields->push(
GridField_FormAction::create($gridField, 'reset', false, 'reset', null)
->addExtraClass('ss-gridfield-button-reset')
->setAttribute('title', _t('GridField.ResetFilter', "Reset"))
->setAttribute('id', 'action_reset_' . $gridField->getModelClass() . '_' . $columnField)
);
}

if($currentColumn == count($columns)){
$fields->push(
GridField_FormAction::create($gridField, 'filter', false, 'filter', null)
->addExtraClass('ss-gridfield-button-filter')
->setAttribute('title', _t('GridField.Filter', "Filter"))
->setAttribute('id', 'action_filter_' . $gridField->getModelClass() . '_' . $columnField)
);
} else {
if($currentColumn == count($columns)){
$field = new FieldGroup(
GridField_FormAction::create($gridField, 'filter', false, 'filter', null)
->addExtraClass('ss-gridfield-button-filter')
->setAttribute('title', _t('GridField.Filter', "Filter"))
->setAttribute('id', 'action_filter_' . $gridField->getModelClass() . '_' . $columnField),
GridField_FormAction::create($gridField, 'reset', false, 'reset', null)
->addExtraClass('ss-gridfield-button-close')
->setAttribute('title', _t('GridField.ResetFilter', "Reset"))
->setAttribute('id', 'action_reset_' . $gridField->getModelClass() . '_' . $columnField)
);
$field->addExtraClass('filter-buttons');
$field->addExtraClass('no-change-track');
}else{
$field = new LiteralField('', '');
}
$fields->push(
GridField_FormAction::create($gridField, 'reset', false, 'reset', null)
->addExtraClass('ss-gridfield-button-close')
->setAttribute('title', _t('GridField.ResetFilter', "Reset"))
->setAttribute('id', 'action_reset_' . $gridField->getModelClass() . '_' . $columnField)
);
$fields->addExtraClass('filter-buttons');
$fields->addExtraClass('no-change-track');
}

$forTemplate->Fields->push($field);
$forTemplate->Fields->push($fields);
}

return array(
Expand Down

0 comments on commit c85c495

Please sign in to comment.