Skip to content
Snippets Groups Projects

Issue #3173822: Exposed operators are not included in fieldsets

Merged Issue #3173822: Exposed operators are not included in fieldsets
3 unresolved threads
3 unresolved threads
+ 45
11
@@ -127,6 +127,36 @@ class ViewsEFFieldsetData {
return empty($branch) ? [] : $branch;
}
/**
* Helper function that moves a form element.
*
* @param string $field_name
* The field name.
* @param array $item
* The item.
* @param array $form_info
* The form info.
* @param array $form
* The form.
* @param bool $operator_element
* Are we moving an operator element?
*
* @return array
* The converted element.
*/
private function moveFormElement($field_name, array $item, array $form_info, array &$form, $operator_element = FALSE): array {
$element = $form[$field_name] +
[
'#weight' => $operator_element ? $item['item']['weight'] - 1 : $item['item']['weight'],
'#title' => $form_info['label'] ?: '',
'#description' => $form_info['description'] ?: '',
];
unset($form['#info']['filter-' . $item['item']['id']]);
unset($form[$field_name]);
return $element;
}
/**
* Tree to FAPI recursive.
*
@@ -144,17 +174,21 @@ class ViewsEFFieldsetData {
if ($item['item']['type'] === 'filter') {
$form_info = $form['#info']['filter-' . $item['item']['id']] ?? NULL;
if (!is_null($form_info)) {
$field_name = $form_info['value'] ?: $item['item']['id'];
if (isset($form[$field_name]) && is_array($form[$field_name])) {
$element[$field_name] = $form[$field_name] +
[
'#weight' => $item['item']['weight'],
'#title' => $form_info['label'] ?: '',
'#description' => $form_info['description'] ?: '',
];
unset($form['#info']['filter-' . $item['item']['id']]);
unset($form[$field_name]);
$field_name = $form_info['value'] ?? $item['item']['id'];
if (isset($form[$field_name]) && is_array($form[$field_name])) {
$element[$field_name] = $this->moveFormElement($field_name, $item, $form_info, $form);
// Check if there's an operator exposed and handle it as well.
$field_name_op = $field_name . '_op';
if (array_key_exists($field_name_op, $form) && is_array($form[$field_name_op])) {
$element[$field_name_op] = $this->moveFormElement($field_name_op, $item, $form_info, $form, TRUE);
}
}
else {
// Since issue #2625136 in Drupal 9,
// exposed operators are placed inside a wrapper.
$field_name_wrapper = $field_name . '_wrapper';
if (array_key_exists($field_name_wrapper, $form) && is_array($form[$field_name_wrapper])) {
$element[$field_name_wrapper] = $this->moveFormElement($field_name_wrapper, $item, $form_info, $form, TRUE);
}
}
}
Loading