function theme_fel_fields_collection_table in Form element layout 7
Theme replacement for 'field_collection_table_multiple_value_fields'.
Which again is an override for field_multiple_value_form.
See also
theme_field_collection_table_multiple_value_fields()
File
- modules/
fel_fields/ fel_fields.theme.inc, line 50 - Theme replacement functions for Form element layout fields.
Code
function theme_fel_fields_collection_table($variables) {
$element = $variables['element'];
if (isset($element['#cardinality']) && ($element['#cardinality'] > 1 || $element['#cardinality'] == FIELD_CARDINALITY_UNLIMITED)) {
$settings = isset($element['#instance']['display']['default']['settings']) ? $element['#instance']['display']['default']['settings'] : array(
'csscolrow' => FALSE,
'cssfield' => FALSE,
);
$table_id = drupal_html_id($element['#field_name'] . '_values');
$order_class = $element['#field_name'] . '-delta-order';
$required = !empty($element['#required']) ? theme('form_required_marker', $variables) : '';
$draggable = empty($element['#custom_settings']['nodragging']);
$rows = array();
$rown = 0;
// 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 (!isset($element[$key]['#entity_type'])) {
if ($key === 'add_more') {
$add_more_button =& $element[$key];
}
}
else {
$items[] =& $element[$key];
}
}
usort($items, '_field_sort_items_value_helper');
$header = $draggable ? array(
array(
'data' => '',
'class' => '',
),
) : array();
// Add the items as table rows.
foreach ($items as $key => $item) {
uasort($item, 'element_sort');
$item['_weight']['#attributes']['class'] = array(
$order_class,
);
$rown++;
$coln = 0;
$cells = array();
if ($draggable) {
$classes = array(
'field-multiple-drag',
'field_body',
);
if (isset($settings['cssrowcol']) && $settings['cssrowcol']) {
$classes = array_merge($classes, array(
'r' . $rown,
'c1',
'r' . $rown . '-c1',
));
}
if (isset($settings['cssfield']) && $settings['cssfield']) {
$classes = array_merge($classes, array(
'drag_r' . $rown . '_' . $element['#field_name'],
'td_drag',
'drag_' . $element['#field_name'],
));
}
$cells[] = array(
'data' => '',
'class' => $classes,
);
}
foreach (element_children($item) as $field_name) {
$coln++;
if ($draggable || $field_name != '_weight') {
$classes = array(
'col-' . strtr($field_name, '_', '-'),
);
// Only add the header once.
if ($key == 0) {
$classes[] = 'field-label';
if (isset($settings['cssrowcol']) && $settings['cssrowcol']) {
$classes = array_merge($classes, array(
'h1',
'c' . $coln,
'h1-c' . $coln,
));
}
if (isset($settings['cssfield']) && $settings['cssfield']) {
$classes = array_merge($classes, array(
'h1_' . $field_name,
'th_' . $field_name,
));
}
$header[] = array(
'data' => '<label>' . t('!title', array(
'!title' => _field_collection_table_get_title($item[$field_name]),
)) . '</label>',
'class' => $classes,
);
}
else {
$classes[] = 'field-body';
if (isset($settings['cssrowcol']) && $settings['cssrowcol']) {
$classes = array_merge($classes, array(
'r' . $rown,
'c' . $coln,
'r' . $rown . '-c' . $coln,
));
}
if (isset($settings['cssfield']) && $settings['cssfield']) {
$classes = array_merge($classes, array(
'r' . $rown . '_' . $field_name,
'td_' . $field_name,
));
}
}
$cells[] = array(
'data' => $item[$field_name],
'class' => $classes,
);
}
}
$row = array(
'data' => $cells,
);
if ($draggable) {
$row['class'] = array(
'draggable',
);
}
$rows[] = $row;
}
$element['#title_classes'][] = 'field-label';
$items['title'] = '<label for="' . $table_id . '" class="' . implode(' ', $element['#title_classes']) . '">';
$items['title'] .= t('!title !required', array(
'!title' => $element['#title'],
'!required' => $required,
));
$items['title'] .= '</label>';
if (!empty($element['#description'])) {
$items['description'] = theme('fel_form_element_description', $variables);
}
$items['children'] = theme('table', array(
'header' => $header,
'rows' => $rows,
'attributes' => array(
'id' => $table_id,
'class' => array(
'field-multiple-table',
),
),
));
$output = '<div class="form-item">';
$output .= fel_order_output($element, $items);
$output .= '</div>';
if (isset($add_more_button)) {
$output .= drupal_render($add_more_button) . '<div class="clearfix"></div>';
}
if ($draggable) {
drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
}
}
else {
foreach (element_children($element) as $key) {
$output .= drupal_render($element[$key]);
}
}
return $output;
}