function theme_field_ui_table

Returns HTML for Field UI overview tables.

Parameters

$variables: An associative array containing:

  • elements: An associative array containing a Form API structure to be rendered as a table.

Related topics

1 theme call to theme_field_ui_table()
field_ui_element_info in modules/field_ui/field_ui.module
Implements hook_element_info().

File

modules/field_ui/field_ui.admin.inc, line 207

Code

function theme_field_ui_table($variables) {
    $elements = $variables['elements'];
    $table = array();
    $js_settings = array();
    // Add table headers and attributes.
    foreach (array(
        'header',
        'attributes',
    ) as $key) {
        if (isset($elements["#{$key}"])) {
            $table[$key] = $elements["#{$key}"];
        }
    }
    // Determine the colspan to use for region rows, by checking the number of
    // columns in the headers.
    $columns_count = 0;
    foreach ($table['header'] as $header) {
        $columns_count += is_array($header) && isset($header['colspan']) ? $header['colspan'] : 1;
    }
    // Render rows, region by region.
    foreach ($elements['#regions'] as $region_name => $region) {
        $region_name_class = drupal_html_class($region_name);
        // Add region rows.
        if (isset($region['title'])) {
            $table['rows'][] = array(
                'class' => array(
                    'region-title',
                    'region-' . $region_name_class . '-title',
                ),
                'no_striping' => TRUE,
                'data' => array(
                    array(
                        'data' => $region['title'],
                        'colspan' => $columns_count,
                    ),
                ),
            );
        }
        if (isset($region['message'])) {
            $class = empty($region['rows_order']) ? 'region-empty' : 'region-populated';
            $table['rows'][] = array(
                'class' => array(
                    'region-message',
                    'region-' . $region_name_class . '-message',
                    $class,
                ),
                'no_striping' => TRUE,
                'data' => array(
                    array(
                        'data' => $region['message'],
                        'colspan' => $columns_count,
                    ),
                ),
            );
        }
        // Add form rows, in the order determined at pre-render time.
        foreach ($region['rows_order'] as $name) {
            $element = $elements[$name];
            $row = array(
                'data' => array(),
            );
            if (isset($element['#attributes'])) {
                $row += $element['#attributes'];
            }
            // Render children as table cells.
            foreach (element_children($element) as $cell_key) {
                $child =& $element[$cell_key];
                // Do not render a cell for children of #type 'value'.
                if (!(isset($child['#type']) && $child['#type'] == 'value')) {
                    $cell = array(
                        'data' => drupal_render($child),
                    );
                    if (isset($child['#cell_attributes'])) {
                        $cell += $child['#cell_attributes'];
                    }
                    $row['data'][] = $cell;
                }
            }
            $table['rows'][] = $row;
        }
    }
    return theme('table', $table);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.