You are here

function theme_fel_fields_multiple_form in Form element layout 7

Theme override for 'field_multiple_value_form'.

See also

theme_field_multiple_value_form()

File

modules/fel_fields/fel_fields.module, line 268
Field support for Form element layout (fel.module).

Code

function theme_fel_fields_multiple_form($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']) ? theme('form_required_marker', $variables) : '';
    $label_classes = !empty($element['#title_classes']) ? ' class="' . implode(' ', $element['#title_classes']) . '"' : '';
    $description_before = (isset($element['#description_display']) and $element['#description_display'] == 'before');
    $label = '<label' . $label_classes . '>' . t('!title !required', array(
      '!title' => $element['#title'],
      '!required' => $required,
    )) . '</label>';
    $fel_items = array();
    if (!$description_before) {
      $header = array(
        array(
          'data' => $label,
          'colspan' => 2,
          'class' => array(
            'field-label',
          ),
        ),
        t('Order'),
      );
    }
    else {
      $fel_items['title'] = $label;
    }
    if (!empty($element['#description'])) {
      $fel_items['description'] = theme('fel_form_element_description', $variables);
    }
    $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');

    // Add the items as table rows.
    foreach ($items as $key => $item) {
      $item['_weight']['#attributes']['class'] = array(
        $order_class,
      );
      $delta_element = drupal_render($item['_weight']);
      $cells = array(
        array(
          'data' => '',
          'class' => array(
            'field-multiple-drag',
          ),
        ),
        drupal_render($item),
        array(
          'data' => $delta_element,
          'class' => array(
            'delta-order',
          ),
        ),
      );
      $rows[] = array(
        'data' => $cells,
        'class' => array(
          'draggable',
        ),
      );
    }
    $table_args = array(
      'rows' => $rows,
      'attributes' => array(
        'id' => $table_id,
        'class' => array(
          'field-multiple-table',
        ),
      ),
    );
    if (!$description_before) {
      $table_args['header'] = $header;
    }
    $fel_items['children'] = theme('table', $table_args);
    $output = '<div class="form-item">';
    $output .= fel_order_output($element, $fel_items);
    $output .= '<div class="clearfix">' . drupal_render($add_more_button) . '</div>';
    $output .= '</div>';
    drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
  }
  else {
    foreach (element_children($element) as $key) {
      $output .= drupal_render($element[$key]);
    }
  }
  return $output;
}