mirror of
https://github.com/farmOS/farmOS.git
synced 2024-02-23 11:37:38 +01:00
Reformat farm_group_views_pre_view() to accommodate more logic.
This commit is contained in:
parent
58ced4cdb3
commit
d7023002c4
|
@ -49,49 +49,55 @@ function farm_group_views_data_alter(array &$data) {
|
|||
*/
|
||||
function farm_group_views_pre_view(ViewExecutable $view, $display_id, array &$args) {
|
||||
|
||||
// Only alter the farm_log page and CSV export views.
|
||||
if ($view->id() != 'farm_log' || in_array($display_id, ['block_upcoming', 'block_late'])) {
|
||||
return;
|
||||
}
|
||||
// Alter the farm_log View.
|
||||
if ($view->id() == 'farm_log') {
|
||||
|
||||
// Make sure the is_group_assignment field exists.
|
||||
/** @var \Drupal\Core\Field\BaseFieldDefinition[] $definitions */
|
||||
$definitions = \Drupal::service('entity_field.manager')->getBaseFieldDefinitions('log');
|
||||
if (isset($definitions['is_group_assignment'])) {
|
||||
|
||||
// Get field name and table name.
|
||||
$definition = $definitions['is_group_assignment'];
|
||||
$field_name = $definition->getName();
|
||||
/** @var \Drupal\Core\Entity\Sql\DefaultTableMapping $table_mapping */
|
||||
$table_mapping = \Drupal::entityTypeManager()->getStorage('log')->getTableMapping();
|
||||
$table = $table_mapping->getFieldTableName($definition->getName());
|
||||
|
||||
// Define filter options.
|
||||
$opts = [
|
||||
'operator' => '=',
|
||||
'value' => 'All',
|
||||
'exposed' => TRUE,
|
||||
'expose' => [
|
||||
'label' => t('Is group assignment'),
|
||||
'identifier' => 'is_group_assignment',
|
||||
],
|
||||
];
|
||||
// Add the filter.
|
||||
$filter_id = $view->addHandler($view->current_display, 'filter', $table, $field_name, $opts);
|
||||
|
||||
// Move the is_group_assignment filter to render before the status filter.
|
||||
$filters = $view->getDisplay()->getOption('filters');
|
||||
if ($index = array_search('status', array_keys($filters))) {
|
||||
$filter = $filters[$filter_id];
|
||||
unset($filters[$filter_id]);
|
||||
// Use array_merge + array_splice instead of array_splice so we can
|
||||
// preserve the array keys.
|
||||
$filters = array_merge(array_slice($filters, 0, $index), [$filter_id => $filter], array_slice($filters, $index));
|
||||
// Do not alter the upcoming/late block displays.
|
||||
if (in_array($display_id, ['block_upcoming', 'block_late'])) {
|
||||
return;
|
||||
}
|
||||
// Set the new sorted filters array.
|
||||
$view->getDisplay()->setOption('filters', $filters);
|
||||
}
|
||||
|
||||
// Make sure the is_group_assignment field exists.
|
||||
/** @var \Drupal\Core\Field\BaseFieldDefinition[] $definitions */
|
||||
$definitions = \Drupal::service('entity_field.manager')
|
||||
->getBaseFieldDefinitions('log');
|
||||
if (isset($definitions['is_group_assignment'])) {
|
||||
|
||||
// Get field name and table name.
|
||||
$definition = $definitions['is_group_assignment'];
|
||||
$field_name = $definition->getName();
|
||||
/** @var \Drupal\Core\Entity\Sql\DefaultTableMapping $table_mapping */
|
||||
$table_mapping = \Drupal::entityTypeManager()
|
||||
->getStorage('log')
|
||||
->getTableMapping();
|
||||
$table = $table_mapping->getFieldTableName($definition->getName());
|
||||
|
||||
// Define filter options.
|
||||
$opts = [
|
||||
'operator' => '=',
|
||||
'value' => 'All',
|
||||
'exposed' => TRUE,
|
||||
'expose' => [
|
||||
'label' => t('Is group assignment'),
|
||||
'identifier' => 'is_group_assignment',
|
||||
],
|
||||
];
|
||||
// Add the filter.
|
||||
$filter_id = $view->addHandler($view->current_display, 'filter', $table, $field_name, $opts);
|
||||
|
||||
// Move the is_group_assignment filter to render before the status filter.
|
||||
$filters = $view->getDisplay()->getOption('filters');
|
||||
if ($index = array_search('status', array_keys($filters))) {
|
||||
$filter = $filters[$filter_id];
|
||||
unset($filters[$filter_id]);
|
||||
// Use array_merge + array_splice instead of array_splice so we can
|
||||
// preserve the array keys.
|
||||
$filters = array_merge(array_slice($filters, 0, $index), [$filter_id => $filter], array_slice($filters, $index));
|
||||
}
|
||||
// Set the new sorted filters array.
|
||||
$view->getDisplay()->setOption('filters', $filters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue