You are here

function _field_conditional_state_get_element_settings in Field Conditional States 7.2

Returns the path to the actual input element within the $element array.

Return value

array array with two keys: -form_elements: "Path" to the actual input/select elements within the array The first element here is used as actual trigger element. -field_data: Path to the fields data (#entity_type, #bundle, #field_name)

6 calls to _field_conditional_state_get_element_settings()
field_conditional_state_controled_field_is_supported in ./field_conditional_state.module
Checks whether the given widget is supported as controled field.
field_conditional_state_control_field_is_supported in ./field_conditional_state.module
Checks whether the given widget is supported as control field.
field_conditional_state_element_after_build in ./field_conditional_state.module
Finds the actual element and adds the #pre_render callback to it.
field_conditional_state_form_field_ui_widget_type_form_alter in ./field_conditional_state.module
Implements hook_form_FORMID_alter() for field_ui_widget_type_form().
field_conditional_state_settings_form in ./field_conditional_state.admin.inc
Builds the settings form for a particular field instance.

... See full list

File

./field_conditional_state.module, line 69
Main functions of this module.

Code

function _field_conditional_state_get_element_settings($widget_type = NULL) {
  $cached =& drupal_static(__FUNCTION__, array());
  $settings = array();
  if (!empty($cached)) {
    $settings = $cached;
  }
  else {
    $settings_default = array(
      'form_elements' => array(),
      'field_data' => array(),
      // If reprocess_from_root is set to true, the field will be reprocessed
      // during the after_build phase of the form root.
      'reprocess_from_root' => FALSE,
      'field_states' => array(),
      'trigger_states' => array(),
      'trigger_value_widget' => '_field_conditional_state_default_trigger_value_widget',
      'trigger_value_submit' => '_field_conditional_state_default_trigger_value_submit',
    );
    $settings['addressfield_standard'] = $settings_default;
    $settings['addressfield_standard']['form_elements'][] = array(
      'street_block',
      'thoroughfare',
    );
    $settings['addressfield_standard']['form_elements'][] = array(
      'street_block',
      'premise',
    );
    $settings['addressfield_standard']['form_elements'][] = array(
      'locality_block',
      'locality',
    );
    $settings['addressfield_standard']['form_elements'][] = array(
      'country',
    );
    $settings['addressfield_standard']['form_elements'][] = array(
      'organisation_block',
      'organisation_name',
    );
    $settings['addressfield_standard']['form_elements'][] = array(
      'name_block',
      'name_line',
    );
    $settings['addressfield_standard']['form_elements'][] = array(
      'name_block',
      'first_name',
    );
    $settings['addressfield_standard']['form_elements'][] = array(
      'name_block',
      'last_name',
    );
    $settings['enfield_widget'] = $settings_default;
    $settings['enfield_widget']['form_elements'][] = array(
      'fid',
    );
    $settings['enfield_widget']['field_data'] = array(
      'fid',
    );
    $settings['enfield_widget']['reprocess_from_root'] = TRUE;
    $settings['entityreference_autocomplete'] = $settings_default;
    $settings['entityreference_autocomplete']['form_elements'][] = array(
      'target_id',
    );
    $settings['entityreference_autocomplete']['field_data'] = array(
      'target_id',
    );
    $settings['entityreference_autocomplete']['reprocess_from_root'] = TRUE;
    $settings['entityreference_autocomplete_tags'] = $settings_default;
    $settings['entityreference_autocomplete_tags']['form_elements'][] = array();
    $settings['email_textfield'] = $settings_default;
    $settings['email_textfield']['form_elements'][] = array(
      'email',
    );
    $settings['email_textfield']['field_data'] = array();
    $settings['file_generic'] = $settings_default;
    $settings['file_generic']['form_elements'][] = array(
      0,
      'upload',
    );
    $settings['file_generic']['field_data'] = array(
      0,
    );
    $settings['file_generic']['reprocess_from_root'] = TRUE;
    $settings['image_image'] = $settings_default;
    $settings['image_image']['form_elements'][] = array(
      0,
      'upload',
    );
    $settings['image_image']['field_data'] = array(
      0,
    );
    $settings['image_image']['reprocess_from_root'] = TRUE;
    $settings['starrating_rating_widget'] = $settings_default;
    $settings['starrating_rating_widget']['form_elements'][] = array(
      'value',
    );
    $settings['starrating_rating_widget']['field_data'] = array(
      'value',
    );
    $settings['link_field'] = $settings_default;
    $settings['link_field']['form_elements'][] = array(
      'title',
    );
    $settings['link_field']['form_elements'][] = array(
      'url',
    );
    $settings['link_field']['reprocess_from_root'] = TRUE;
    $settings['number'] = $settings_default;
    $settings['number']['form_elements'][] = array(
      'value',
    );
    $settings['number']['field_data'] = array(
      'value',
    );
    $settings['number']['reprocess_from_root'] = TRUE;
    $settings['options_buttons'] = $settings_default;
    $settings['options_buttons']['form_elements'][] = array();
    $settings['options_onoff'] = $settings_default;
    $settings['options_onoff']['form_elements'][] = array();
    $settings['options_select'] = $settings_default;
    $settings['options_select']['form_elements'][] = array();
    $settings['options_select']['trigger_value_widget'] = '_field_conditional_state_select_trigger_value_widget';
    $settings['options_select']['trigger_value_submit'] = '_field_conditional_state_select_trigger_value_submit';
    $settings['text_textfield'] = $settings_default;
    $settings['text_textfield']['form_elements'][] = array(
      'value',
    );
    $settings['text_textfield']['field_data'] = array(
      'value',
    );
    $settings['text_textfield']['reprocess_from_root'] = TRUE;
    $settings['url_external'] = $settings_default;
    $settings['url_external']['form_elements'][] = array(
      'value',
    );
    $settings['url_external']['field_data'] = array();
    $settings['video_embed_field_video'] = $settings_default;
    $settings['video_embed_field_video']['form_elements'][] = array(
      'video_url',
    );
    $settings['video_embed_field_video']['field_data'] = array();
    $settings['taxonomy_autocomplete'] = $settings_default;
    $settings['taxonomy_autocomplete']['form_elements'][] = array();
    $settings['text_textarea'] = $settings_default;
    $settings['text_textarea']['form_elements'][] = array(
      'value',
    );
    $settings['text_textarea']['reprocess_from_root'] = TRUE;
    $settings['text_textarea_with_summary'] = $settings_default;
    $settings['text_textarea_with_summary']['form_elements'][] = array(
      'value',
    );
    $settings['text_textarea_with_summary']['form_elements'][] = array(
      'format',
    );
    $settings['text_textarea_with_summary']['form_elements'][] = array(
      'summary',
    );
    $settings['text_textarea_with_summary']['reprocess_from_root'] = TRUE;
    foreach ($settings as $field => &$data) {
      $data['field_states'] = _field_conditional_state_get_field_states($field);
      $data['trigger_states'] = _field_conditional_state_get_trigger_states($field);
    }
    drupal_alter('field_conditional_state_settings', $settings);
    foreach ($settings as &$data) {
      if (!isset($data['field_states'])) {
        $data['field_states'] = array();
      }
      else {
        $data['field_states'] = _field_conditional_state_create_label_mapping($data['field_states']);
      }
      if (!isset($data['trigger_states'])) {
        $data['trigger_states'] = array();
      }
      else {
        $data['trigger_states'] = _field_conditional_state_create_label_mapping($data['trigger_states']);
      }
    }
    $cached = $settings;
  }
  if (is_null($widget_type) || empty($settings[$widget_type])) {
    return $settings;
  }
  else {
    return $settings[$widget_type];
  }
}