You are here

function field_config_cardinality_preprocess_field_multiple_value_form in Field Config Cardinality 8.2

Same name and namespace in other branches
  1. 8 field_config_cardinality.module \field_config_cardinality_preprocess_field_multiple_value_form()

Implements hook_preprocess_field_multiple_value_form()

Parameters

$variables:

File

./field_config_cardinality.module, line 152
Field_config_cardinality.module.

Code

function field_config_cardinality_preprocess_field_multiple_value_form(&$variables) {
  $element = $variables['element'];
  $variables['multiple'] = FALSE;
  if (!empty($element['#cardinality_multiple'])) {
    $variables['multiple'] = $element['#cardinality_multiple'];
  }
  else {
    if (!empty($element['#multiple'])) {
      $variables['multiple'] = $element['#multiple'];
    }
  }
  if ($variables['multiple'] == TRUE && isset($element['#attributes']['data-fcc'])) {
    $cardinality_config = $element['#attributes']['data-fcc'];
    if (!empty($cardinality_config)) {
      $order_class = $element['#field_name'] . '-delta-order';
      $rows = [];

      // Sort items according to '_weight' (needed when the form comes back after
      // preview or failed validation).
      $items = [];
      $variables['button'] = [];
      foreach (Element::children($element) as $key) {
        if (is_integer($key)) {
          $items[] =& $element[$key];
        }
      }
      if (count($items) <= $cardinality_config - 1 || $cardinality_config == '-1') {
        $variables['button'] =& $element['add_more'];
      }
      usort($items, '_field_multiple_value_form_sort_helper');

      // Add the items as table rows.
      foreach ($items as $key => $item) {
        if (is_numeric($key) && $key <= $cardinality_config - 1 || $cardinality_config == '-1') {
          $item['_weight']['#attributes']['class'] = [
            $order_class,
          ];

          // Remove weight form element from item render array so it can be rendered
          // in a separate table column.
          $delta_element = $item['_weight'];
          unset($item['_weight']);
          $cells = [
            [
              'data' => '',
              'class' => [
                'field-multiple-drag',
              ],
            ],
            [
              'data' => $item,
            ],
            [
              'data' => $delta_element,
              'class' => [
                'delta-order',
              ],
            ],
          ];
          $rows[] = [
            'data' => $cells,
            'class' => [
              'draggable',
            ],
          ];
        }
      }
      $variables['table']['#rows'] = $rows;
    }
  }
}