function theme_content_multiple_values in Content Construction Kit (CCK) 6.3
Same name and namespace in other branches
- 6 content.module \theme_content_multiple_values()
- 6.2 content.module \theme_content_multiple_values()
Theme an individual form element.
Combine multiple values into a table with drag-n-drop reordering.
1 theme call to theme_content_multiple_values()
- content_multiple_value_form in includes/
content.node_form.inc - Special handling to create form elements for multiple values.
File
- ./
content.module, line 495 - Allows administrators to associate custom fields to content types.
Code
function theme_content_multiple_values($element) {
$field_name = $element['#field_name'];
$field = content_fields($field_name);
$output = '';
if ($field['multiple'] >= 1) {
$table_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>' : '';
$header = array(
array(
'data' => t('!title: !required', array(
'!title' => $element['#title'],
'!required' => $required,
)),
'colspan' => 2,
),
array(
'data' => t('Order'),
'class' => 'content-multiple-weight-header',
),
);
if ($field['multiple'] == 1) {
$header[] = array(
'data' => '<span>' . t('Remove') . '</span>',
'class' => 'content-multiple-remove-header',
);
}
$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 !== $element['#field_name'] . '_add_more') {
$items[$element[$key]['#delta']] =& $element[$key];
}
}
uasort($items, '_content_sort_items_value_helper');
// Add the items as table rows.
foreach ($items as $delta => $item) {
$item['_weight']['#attributes']['class'] = $order_class;
$delta_element = drupal_render($item['_weight']);
if ($field['multiple'] == 1) {
$remove_element = drupal_render($item['_remove']);
}
$cells = array(
array(
'data' => '',
'class' => 'content-multiple-drag',
),
drupal_render($item),
array(
'data' => $delta_element,
'class' => 'delta-order',
),
);
$row_class = 'draggable';
if ($field['multiple'] == 1) {
if (!empty($item['_remove']['#default_value'])) {
$row_class .= ' content-multiple-removed-row';
}
$cells[] = array(
'data' => $remove_element,
'class' => 'content-multiple-remove-cell',
);
}
$rows[] = array(
'data' => $cells,
'class' => $row_class,
);
}
$output .= theme('table', $header, $rows, array(
'id' => $table_id,
'class' => 'content-multiple-table',
));
$output .= $element['#description'] ? '<div class="description">' . $element['#description'] . '</div>' : '';
$output .= drupal_render($element[$element['#field_name'] . '_add_more']);
drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
drupal_add_js(drupal_get_path('module', 'content') . '/js/content.node_form.js');
}
else {
foreach (element_children($element) as $key) {
$output .= drupal_render($element[$key]);
}
}
return $output;
}