You are here

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;
  }
}