function template_preprocess_pattern_views_row in UI Patterns 8
Preprocess hook.
Parameters
array $variables: Theme variables.
File
- modules/
ui_patterns_views/ ui_patterns_views.module, line 27 - Contains module file.
Code
function template_preprocess_pattern_views_row(array &$variables) {
/** @var \Drupal\views\ResultRow $row */
/** @var \Drupal\views\ViewExecutable $view */
/** @var \Drupal\ui_patterns_views\Plugin\views\row\Pattern $row_plugin */
$fields = [];
$view = $variables['view'];
$row_plugin = $view->rowPlugin;
$options = $variables['options'];
$row = $variables['row'];
foreach ($options['pattern_mapping'] as $mapping) {
$field_name = $mapping['source'];
$field = $view->field[$field_name];
$field_output = $view->style_plugin
->getField($row->index, $field_name);
if ($row_plugin
->isFieldVisible($field, $field_output)) {
$destination = $row_plugin
->getMappingDestination('views_row', $field_name, $options);
$fields[$destination][] = $field_output;
}
}
$variables['pattern'] = [];
if ($view->preview && !isset($view->element['#embed'])) {
\Drupal::messenger()
->addWarning(t("Pattern Views row plugin does not support preview."));
$variables['pattern'] = [
'#type' => 'status_messages',
];
}
elseif (!empty($fields)) {
$variables['pattern'] = [
'#type' => 'pattern',
'#id' => $options['pattern'],
'#fields' => $fields,
'#multiple_sources' => TRUE,
'#variant' => isset($options['pattern_variant']) ? $options['pattern_variant'] : '',
];
// Allow default context values to not override those exposed elsewhere.
$variables['pattern']['#context']['type'] = 'views_row';
$variables['pattern']['#context']['view_name'] = $view->storage
->id();
$variables['pattern']['#context']['display'] = $view->current_display;
$variables['pattern']['#context']['view'] = $view;
$variables['pattern']['#context']['row'] = $row;
}
}