function theme_multifield_table_multiple_value_fields in Multifield table 7
Replacement for theme_field_multiple_value_form().
Each field is printed in a separate cell.
File
- theme/
theme.inc, line 55 - Theme functions for the Mutifield Table module.
Code
function theme_multifield_table_multiple_value_fields($variables) {
$element = $variables['element'];
$output = '';
if (isset($element['#cardinality']) && ($element['#cardinality'] > 1 || $element['#cardinality'] == FIELD_CARDINALITY_UNLIMITED)) {
$table_id = drupal_html_id($element['#field_name'] . '_values');
$order_class = $element['#field_name'] . '-delta-order';
$required = !empty($element['#required']) ? '<span class="form-required" title="' . t('This field is required.') . '">*</span>' : '';
$rows = array();
// Sort items according to '_weight' (needed when the form comes back after
// preview or failed validation).
$items = array();
foreach (element_children($element) as $key) {
if ($key === 'add_more') {
$add_more_button =& $element[$key];
}
else {
$items[] =& $element[$key];
}
}
usort($items, '_field_sort_items_value_helper');
$header = array(
array(
'data' => '<label>' . t('!title: !required', array(
'!title' => $element['#title'],
'!required' => $required,
)) . "</label>",
'class' => array(
'field-label',
),
),
);
$id_fields = array(
'#type' => 'container',
'#attributes' => array(),
);
// Add the items as table rows.
foreach ($items as $key => $item) {
// Make sure _weight comes after actions.
$item['_weight']['#weight'] = 101;
uasort($item, 'element_sort');
$item['_weight']['#attributes']['class'] = array(
$order_class,
);
$cells = array(
array(
'data' => '',
'class' => array(
'field-multiple-drag',
),
),
);
foreach (element_children($item) as $field_name) {
if ($field_name != 'id') {
// Only add the header once.
if ($key == 0) {
$header[] = array(
'data' => '<label>' . t('!title', array(
'!title' => _multifield_table_get_title($item[$field_name]),
)) . '</label>',
'class' => array(
'field-label',
),
);
}
$cells[] = array(
'data' => $item[$field_name],
);
}
else {
$id_fields[] = $item[$field_name];
}
}
$rows[] = array(
'data' => $cells,
'class' => array(
'draggable',
),
);
}
$output = array(
'#prefix' => '<div class="form-item">',
'#suffix' => '</div>',
);
$output['multifield_table'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#attributes' => array(
'id' => $table_id,
'class' => array(
'field-multiple-table',
),
),
);
if (!empty($element['#description'])) {
$output[] = array(
'#prefix' => '<div class="description">',
'#suffix' => '</div>',
'#markup' => $element['#description'],
);
}
if (isset($add_more_button)) {
$output[] = $add_more_button + array(
'#prefix' => '<div class="clearfix">',
'#suffix' => '</div>',
);
}
if (!empty($id_fields)) {
$output[] = $id_fields;
}
$output = drupal_render($output);
drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
}
else {
foreach (element_children($element) as $key) {
$output .= drupal_render($element[$key]);
}
}
return $output;
}