function field_config_cardinality_preprocess_field_multiple_value_form in Field Config Cardinality 8
Same name and namespace in other branches
- 8.2 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;
}
}
}