Implements hook_element_info().

File

modules/system/system.module, line 293
Configuration system that lets administrators modify the workings of the site.

Code

function system_element_info() {

  // Top level elements.
  $types['form'] = array(
    '#method' => 'post',
    '#action' => request_uri(),
    '#theme_wrappers' => array(
      'form',
    ),
  );
  $types['page'] = array(
    '#show_messages' => TRUE,
    '#theme' => 'page',
    '#theme_wrappers' => array(
      'html',
    ),
  );

  // By default, we don't want Ajax commands being rendered in the context of an
  // HTML page, so we don't provide defaults for #theme or #theme_wrappers.
  // However, modules can set these properties (for example, to provide an HTML
  // debugging page that displays rather than executes Ajax commands).
  $types['ajax'] = array(
    '#header' => TRUE,
    '#commands' => array(),
    '#error' => NULL,
  );
  $types['html_tag'] = array(
    '#theme' => 'html_tag',
    '#pre_render' => array(
      'drupal_pre_render_conditional_comments',
    ),
    '#attributes' => array(),
    '#value' => NULL,
  );
  $types['styles'] = array(
    '#items' => array(),
    '#pre_render' => array(
      'drupal_pre_render_styles',
    ),
    '#group_callback' => 'drupal_group_css',
    '#aggregate_callback' => 'drupal_aggregate_css',
  );
  $types['scripts'] = array(
    '#items' => array(),
    '#pre_render' => array(
      'drupal_pre_render_scripts',
    ),
  );

  // Input elements.
  $types['submit'] = array(
    '#input' => TRUE,
    '#name' => 'op',
    '#button_type' => 'submit',
    '#executes_submit_callback' => TRUE,
    '#limit_validation_errors' => FALSE,
    '#process' => array(
      'ajax_process_form',
      'form_process_button',
    ),
    '#theme_wrappers' => array(
      'button',
    ),
  );
  $types['button'] = array(
    '#input' => TRUE,
    '#name' => 'op',
    '#button_type' => 'submit',
    '#executes_submit_callback' => FALSE,
    '#limit_validation_errors' => FALSE,
    '#process' => array(
      'ajax_process_form',
      'form_process_button',
    ),
    '#theme_wrappers' => array(
      'button',
    ),
  );
  $types['image_button'] = array(
    '#input' => TRUE,
    '#button_type' => 'submit',
    '#executes_submit_callback' => TRUE,
    '#limit_validation_errors' => FALSE,
    '#process' => array(
      'ajax_process_form',
      'form_process_button',
    ),
    '#return_value' => TRUE,
    '#has_garbage_value' => TRUE,
    '#src' => NULL,
    '#theme_wrappers' => array(
      'image_button',
    ),
  );
  $types['textfield'] = array(
    '#input' => TRUE,
    '#size' => 60,
    '#maxlength' => 128,
    '#autocomplete_path' => FALSE,
    '#process' => array(
      'form_process_autocomplete',
      'ajax_process_form',
    ),
    '#theme' => 'textfield',
    '#theme_wrappers' => array(
      'form_element',
    ),
  );
  $types['machine_name'] = array(
    '#input' => TRUE,
    '#default_value' => NULL,
    '#required' => TRUE,
    '#maxlength' => 64,
    '#size' => 60,
    '#autocomplete_path' => FALSE,
    '#process' => array(
      'form_process_machine_name',
      'ajax_process_form',
    ),
    '#element_validate' => array(
      'form_validate_machine_name',
    ),
    '#theme' => 'textfield',
    '#theme_wrappers' => array(
      'form_element',
    ),
    // Use the same value callback as for textfields; this ensures that we only
    // get string values.
    '#value_callback' => 'form_type_textfield_value',
  );
  $types['password'] = array(
    '#input' => TRUE,
    '#size' => 60,
    '#maxlength' => 128,
    '#process' => array(
      'ajax_process_form',
    ),
    '#theme' => 'password',
    '#theme_wrappers' => array(
      'form_element',
    ),
    // Use the same value callback as for textfields; this ensures that we only
    // get string values.
    '#value_callback' => 'form_type_textfield_value',
  );
  $types['password_confirm'] = array(
    '#input' => TRUE,
    '#process' => array(
      'form_process_password_confirm',
      'user_form_process_password_confirm',
    ),
    '#theme_wrappers' => array(
      'form_element',
    ),
  );
  $types['textarea'] = array(
    '#input' => TRUE,
    '#cols' => 60,
    '#rows' => 5,
    '#resizable' => TRUE,
    '#process' => array(
      'ajax_process_form',
    ),
    '#theme' => 'textarea',
    '#theme_wrappers' => array(
      'form_element',
    ),
  );
  $types['radios'] = array(
    '#input' => TRUE,
    '#process' => array(
      'form_process_radios',
    ),
    '#theme_wrappers' => array(
      'radios',
    ),
    '#pre_render' => array(
      'form_pre_render_conditional_form_element',
    ),
  );
  $types['radio'] = array(
    '#input' => TRUE,
    '#default_value' => NULL,
    '#process' => array(
      'ajax_process_form',
    ),
    '#theme' => 'radio',
    '#theme_wrappers' => array(
      'form_element',
    ),
    '#title_display' => 'after',
  );
  $types['checkboxes'] = array(
    '#input' => TRUE,
    '#process' => array(
      'form_process_checkboxes',
    ),
    '#theme_wrappers' => array(
      'checkboxes',
    ),
    '#pre_render' => array(
      'form_pre_render_conditional_form_element',
    ),
  );
  $types['checkbox'] = array(
    '#input' => TRUE,
    '#return_value' => 1,
    '#theme' => 'checkbox',
    '#process' => array(
      'form_process_checkbox',
      'ajax_process_form',
    ),
    '#theme_wrappers' => array(
      'form_element',
    ),
    '#title_display' => 'after',
  );
  $types['select'] = array(
    '#input' => TRUE,
    '#multiple' => FALSE,
    '#process' => array(
      'form_process_select',
      'ajax_process_form',
    ),
    '#theme' => 'select',
    '#theme_wrappers' => array(
      'form_element',
    ),
  );
  $types['weight'] = array(
    '#input' => TRUE,
    '#delta' => 10,
    '#default_value' => 0,
    '#process' => array(
      'form_process_weight',
      'ajax_process_form',
    ),
  );
  $types['date'] = array(
    '#input' => TRUE,
    '#element_validate' => array(
      'date_validate',
    ),
    '#process' => array(
      'form_process_date',
    ),
    '#theme' => 'date',
    '#theme_wrappers' => array(
      'form_element',
    ),
  );
  $types['file'] = array(
    '#input' => TRUE,
    '#size' => 60,
    '#theme' => 'file',
    '#theme_wrappers' => array(
      'form_element',
    ),
  );
  $types['tableselect'] = array(
    '#input' => TRUE,
    '#js_select' => TRUE,
    '#multiple' => TRUE,
    '#process' => array(
      'form_process_tableselect',
    ),
    '#options' => array(),
    '#empty' => '',
    '#theme' => 'tableselect',
  );

  // Form structure.
  $types['item'] = array(
    '#markup' => '',
    '#pre_render' => array(
      'drupal_pre_render_markup',
    ),
    '#theme_wrappers' => array(
      'form_element',
    ),
  );
  $types['hidden'] = array(
    '#input' => TRUE,
    '#process' => array(
      'ajax_process_form',
    ),
    '#theme' => 'hidden',
  );
  $types['value'] = array(
    '#input' => TRUE,
  );
  $types['markup'] = array(
    '#markup' => '',
    '#pre_render' => array(
      'drupal_pre_render_markup',
    ),
  );
  $types['link'] = array(
    '#pre_render' => array(
      'drupal_pre_render_link',
      'drupal_pre_render_markup',
    ),
  );
  $types['fieldset'] = array(
    '#collapsible' => FALSE,
    '#collapsed' => FALSE,
    '#value' => NULL,
    '#process' => array(
      'form_process_fieldset',
      'ajax_process_form',
    ),
    '#pre_render' => array(
      'form_pre_render_fieldset',
    ),
    '#theme_wrappers' => array(
      'fieldset',
    ),
  );
  $types['vertical_tabs'] = array(
    '#theme_wrappers' => array(
      'vertical_tabs',
    ),
    '#default_tab' => '',
    '#process' => array(
      'form_process_vertical_tabs',
    ),
  );
  $types['container'] = array(
    '#theme_wrappers' => array(
      'container',
    ),
    '#process' => array(
      'form_process_container',
    ),
  );
  $types['actions'] = array(
    '#theme_wrappers' => array(
      'container',
    ),
    '#process' => array(
      'form_process_actions',
      'form_process_container',
    ),
    '#weight' => 100,
  );
  $types['token'] = array(
    '#input' => TRUE,
    '#theme' => 'hidden',
  );
  return $types;
}