function custom_formatters_engine_formatter_preset_settings_form in Custom Formatters 7.2
Settings form callback for Custom Formatters Formatter preset engine.
Parameters
array $form: The form api array.
array $form_state: The form state array.
object $item: The Custom Formatter object.
1 string reference to 'custom_formatters_engine_formatter_preset_settings_form'
- custom_formatters_custom_formatters_engine_info in includes/
custom_formatters.inc - Implements hook_custom_formatters_engine().
File
- engines/
formatter_preset.inc, line 35 - Formatter preset engine for Custom Formatters modules.
Code
function custom_formatters_engine_formatter_preset_settings_form(&$form, $form_state, $item) {
// Turn code field into nested fields.
$item->code = unserialize($item->code);
$form['code'] = array(
'#type' => 'container',
'#tree' => TRUE,
);
// Build formatters list.
$field_type = isset($form_state['values']['field_types']) ? $form_state['values']['field_types'] : $item->field_types;
$options = array();
$formatters = field_info_formatter_types();
foreach ($formatters as $formatter_name => $formatter) {
if (in_array($field_type, $formatter['field types'])) {
$options[$formatter_name] = $formatter['label'];
}
}
$form['code']['formatter'] = array(
'#title' => t('Formatter'),
'#type' => 'select',
'#options' => $options,
'#default_value' => isset($item->code['formatter']) ? $item->code['formatter'] : '',
'#ajax' => array(
'callback' => 'custom_formatters_export_ui_form_js',
'wrapper' => 'engine-wrapper',
),
);
// Get currently selected formatter.
$formatter_name = isset($form_state['values']['code']['formatter']) ? $form_state['values']['code']['formatter'] : $form['code']['formatter']['#default_value'];
if (!isset($form['code']['formatter']['#options'][$formatter_name])) {
$formatter_name = key($form['code']['formatter']['#options']);
}
$formatter = $formatters[$formatter_name];
// Formatter settings.
$form['code']['settings'] = array(
'#tree' => TRUE,
);
$function = "{$formatter['module']}_field_formatter_settings_form";
if (!empty($formatter['settings']) && function_exists($function)) {
$view_mode = '_custom_display';
$field = field_info_field($field_type);
$instance['entity_type'] = isset($form['preview']['entity_type']['#default_value']) ? $form['preview']['entity_type']['#default_value'] : key($form['preview']['entity_type']['#options']);
$instance['bundle'] = isset($form['preview']['bundle']['#default_value']) ? $form['preview']['bundle']['#default_value'] : key($form['preview']['bundle']['#options']);
$instance['display'][$view_mode] = array(
'type' => $formatter_name,
'settings' => isset($item->code['settings']) ? $item->code['settings'] : $formatter['settings'],
'module' => $formatter['module'],
);
$formatter_settings = $function($field, $instance, $view_mode, $form, $form_state);
if (is_array($formatter_settings) && !empty($formatter_settings)) {
$form['code']['settings'] += $formatter_settings;
}
}
}