summaryrefslogtreecommitdiffstats
path: root/core/modules/views/tests/modules/views_test_data/views_test_data.module
blob: cdb99cc100f667049695c80cafd7eb972a292d46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php

/**
 * @file
 * Helper module for Views tests.
 */

use Drupal\Core\Form\FormStateInterface;

/**
 * Access callback for the generic handler test.
 *
 * @return bool
 *   Returns views_test_data.tests->handler_access_callback config. so the user
 *   has access to the handler.
 *
 * @see \Drupal\views\Tests\Handler\HandlerTest
 */
function views_test_data_handler_test_access_callback() {
  return \Drupal::config('views_test_data.tests')->get('handler_access_callback');
}

/**
 * Access callback with an argument for the generic handler test.
 *
 * @param bool $argument
 *   A parameter to test that an argument got passed.
 *
 * @return bool
 *   Returns views_test_data.tests->handler_access_callback_argument, so the
 *   use has access to the handler.
 *
 * @see \Drupal\views\Tests\Handler\HandlerTest
 */
function views_test_data_handler_test_access_callback_argument($argument = FALSE) {
  // Check the argument to be sure that access arguments are passed into the
  // callback.
  if ($argument) {
    return \Drupal::config('views_test_data.tests')->get('handler_access_callback_argument');
  }
  else {
    return FALSE;
  }
}

/**
 * Implements hook_preprocess_HOOK() for views table templates.
 */
function views_test_data_preprocess_views_view_table(&$variables) {
  if ($variables['view']->storage->id() == 'test_view_render') {
    $views_render_test = \Drupal::state()->get('views_render.test');
    $views_render_test++;
    \Drupal::state()->set('views_render.test', $views_render_test);
  }
}

/**
 * Prepares variables for the mapping row style test templates.
 *
 * Default template: views-view-mapping-test.html.twig.
 *
 * @param array $variables
 *   An associative array containing:
 *   - rows: A list of view rows.
 *   - options: Various view options, including the row style mapping.
 *   - view: The view object.
 */
function template_preprocess_views_view_mapping_test(&$variables) {
  $variables['element'] = [];

  foreach ($variables['rows'] as $delta => $row) {
    $fields = [];
    foreach ($variables['options']['mapping'] as $type => $field_names) {
      if (!is_array($field_names)) {
        $field_names = [$field_names];
      }
      foreach ($field_names as $field_name) {
        if ($value = $variables['view']->style_plugin->getField($delta, $field_name)) {
          $fields[$type . '-' . $field_name] = $type . ':' . $value;
        }
      }
    }

    // If there are no fields in this row, skip to the next one.
    if (empty($fields)) {
      continue;
    }

    // Build a container for the row.
    $variables['element'][$delta] = [
      '#type' => 'container',
      '#attributes' => [
        'class' => [
          'views-row-mapping-test',
        ],
      ],
    ];

    // Add each field to the row.
    foreach ($fields as $key => $render) {
      $variables['element'][$delta][$key] = [
        '#children' => $render,
        '#type' => 'container',
        '#attributes' => [
          'class' => [
            $key,
          ],
        ],
      ];
    }
  }
}

/**
 * Test pre_render function.
 *
 * @param array $element
 *   A render array
 *
 * @return array
 *   The changed render array.
 */
function views_test_data_test_pre_render_function($element) {
  $element['#markup'] = 'views_test_data_test_pre_render_function executed';
  return $element;
}

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function views_test_data_form_views_form_test_form_multiple_default_alter(&$form, FormStateInterface $form_state, $form_id) {
  drupal_set_message(t('Test base form ID with Views forms and arguments.'));
}