function better_field_descriptions_admin_settings_form in Better Field Descriptions 7
Implements hook_admin_settings_form().
1 string reference to 'better_field_descriptions_admin_settings_form'
- better_field_descriptions_menu in ./
better_field_descriptions.module - Implements hook_menu().
File
- ./
better_field_descriptions.admin.inc, line 11 - Functionality and helper functions for Better field descriptions.
Code
function better_field_descriptions_admin_settings_form($form, &$form_state) {
$entity_types = entity_get_info();
$entity_types_list = array();
foreach ($entity_types as $key => $entity_type_data) {
$entity_types_list[$key] = $key;
}
$entity_type = variable_get('better_field_descriptions_default_entity', 'node');
$form['entity_types'] = array(
'#type' => 'select',
'#title' => 'Select entity type',
'#options' => $entity_types_list,
'#default_value' => $entity_type,
'#ajax' => array(
'callback' => 'better_field_descriptions_load_entity_type',
'wrapper' => 'entity_type_fields-fieldset-wrapper',
),
);
$entity_type = !empty($form_state['values']['entity_types']) ? $form_state['values']['entity_types'] : variable_get('better_field_descriptions_default_entity', 'node');
$form['entity_type_fields'] = array(
'#type' => 'fieldset',
'#title' => $entity_type,
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#prefix' => '<div id="entity_type_fields-fieldset-wrapper">',
'#suffix' => '</div>',
);
// Get info on bundles.
$bundles = field_info_bundles($entity_type);
// Get list of fields selected for better descriptions.
$bfds = variable_get('better_field_descriptions_settings', array());
$form['entity_type_fields']['descriptions'] = array(
'#type' => 'markup',
'#markup' => t('Select fields that should have better descriptions.'),
);
$form['entity_type_fields']['bundles'] = array(
'#type' => 'item',
'#prefix' => '<div id="better-descriptions-form-id-wrapper">',
'#suffix' => '</div>',
'#tree' => TRUE,
);
foreach ($bundles as $bundle_machine_name => $bundle) {
// Array to hold fields in the node.
$fields_instances = array();
// Get info on pseudo fields, like title.
$extra_fields = field_info_extra_fields($entity_type, $bundle_machine_name, 'form');
if (isset($extra_fields['title'])) {
$fields_instances['title'] = $extra_fields['title']['label'];
}
// Get info on regular fields to the bundle.
$fields = field_info_instances($entity_type, $bundle_machine_name);
foreach ($fields as $field_machine_name => $field) {
$fields_instances[$field_machine_name] = $field['label'] . ' (' . $field_machine_name . ')';
}
// Compute default values.
$default_values = array();
if (isset($bfds[$bundle_machine_name])) {
$default_values = array_intersect_key($bfds[$bundle_machine_name], $fields_instances);
}
// Generate checkboxes.
$form['entity_type_fields']['bundles'][$bundle_machine_name] = array(
'#type' => 'checkboxes',
'#title' => $bundle['label'],
'#options' => $fields_instances,
'#default_value' => $default_values,
'#description' => t('Choose which fields should have better descriptions.'),
);
}
$form['#submit'] = array(
'better_field_descriptions_admin_settings_submit',
);
return system_settings_form($form);
}