function backstretch_field_formatter_settings_form in Backstretch 7.2
Implements hook_field_formatter_settings_form().
File
- ./
backstretch.module, line 45 - Main file for Backstretch Formatter module.
Code
function backstretch_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
// This gets the view mode where the settings are stored.
$display = $instance['display'][$view_mode];
// This gets the settings.
$settings = $display['settings'];
$element = array();
if ($field['type'] == 'entityreference') {
$entity_type = $field['settings']['target_type'];
$bundles = isset($field['settings']['handler_settings']['target_bundles']) ? $field['settings']['handler_settings']['target_bundles'] : NULL;
$instances = array();
$fields = array();
if (is_array($bundles)) {
foreach (array_keys($bundles) as $bundle_name) {
$fields_info = field_info_instances($entity_type, $bundle_name);
foreach ($fields_info as $field_name => &$value) {
$field_info = field_info_field($field_name);
$value['type'] = $field_info['type'];
// Remove non image fields.
if ($value['type'] != 'image') {
unset($value);
continue;
}
$fields[$field_name] = $value['label'] . ' (' . $field_name . ')';
}
}
}
else {
$fields_info = field_info_instances($entity_type);
foreach ($fields_info as $bundle_name => $field) {
foreach ($field as $field_name => &$value) {
$field_info = field_info_field($field_name);
$value['type'] = $field_info['type'];
// Remove non image fields.
if ($value['type'] != 'image') {
unset($value);
continue;
}
$fields[$field_name] = $value['label'] . ' (' . $field_name . ')';
}
}
}
// Display all image fields in a select list.
if (count($fields) > 1) {
$element['field'] = array(
'#title' => t('Image field'),
'#type' => 'select',
'#required' => TRUE,
'#default_value' => $settings['field'],
'#options' => $fields,
'#description' => t('Select the image field which should be used for Backstretch.'),
);
}
elseif (count($fields)) {
$field = array_keys($fields);
$field = reset($field);
$element['field_info'] = array(
'#markup' => '<div class="form-item"><label>' . t('Image field') . '</label><div>' . t('Using: %name', array(
'%name' => $field,
)) . '</div></div>',
);
$element['field'] = array(
'#type' => 'value',
'#value' => $field,
);
}
else {
drupal_set_message(t('There is no image field in @entity_type.', array(
'@entity_type' => $entity_type,
)), 'error');
return array();
}
}
$image_styles = image_style_options(FALSE);
$element['image_style'] = array(
'#title' => t('Image style'),
'#type' => 'select',
'#default_value' => $settings['image_style'],
'#options' => $image_styles,
'#empty_option' => t('None (original image)'),
'#description' => t('Image style for the images.'),
);
$element['element'] = array(
'#type' => 'select',
'#title' => t('Attach to'),
'#default_value' => $settings['element'],
'#options' => array(
'other' => t('Other element'),
),
'#empty_option' => t('Whole page'),
'#description' => t('Where the Backstretch should be attached to.'),
);
$element['element_other'] = array(
'#type' => 'textfield',
'#title' => t('Other element'),
'#default_value' => $settings['element_other'],
'#description' => t('Enter the CSS selector for the element.'),
'#states' => array(
'visible' => array(
':input[name$="[element]"]' => array(
'value' => 'other',
),
),
),
);
$element['tokens'] = array(
'#type' => 'container',
'#theme' => 'token_tree',
'#token_types' => array(
$instance['entity_type'],
),
'#dialog' => TRUE,
'#states' => array(
'visible' => array(
':input[name$="[element]"]' => array(
'value' => 'other',
),
),
),
);
$element['duration'] = array(
'#type' => 'textfield',
'#title' => t('Duration'),
'#default_value' => $settings['duration'],
'#description' => t('Amount of time in between slides.'),
'#size' => 10,
'#field_suffix' => 'ms',
'#element_validate' => array(
'element_validate_integer_positive',
),
);
// Disable duration setting if it is a one value field.
if ($field['cardinality'] == '1') {
$element['duration']['#disabled'] = TRUE;
$element['duration']['#description'] = '<strong>' . t('Duration setting is only allowed for multi value fields.') . '</strong>';
}
$element['fade'] = array(
'#type' => 'textfield',
'#title' => t('Fade'),
'#default_value' => $settings['fade'],
'#description' => t('Speed of fade transition between slides.'),
'#size' => 10,
'#field_suffix' => 'ms',
'#element_validate' => array(
'backstretch_element_validate_duration',
),
);
// Make cardinality setting only available for multiple value field.
if ($field['cardinality'] != '1') {
$element['delta'] = array(
'#type' => 'select',
'#title' => t('Which image should be displayed?'),
'#default_value' => $settings['delta'],
'#options' => $field['cardinality'] != FIELD_CARDINALITY_UNLIMITED ? drupal_map_assoc(range(1, $field['cardinality'])) : drupal_map_assoc(range(1, BACKSTRETCH_MAX_DELTA)),
'#empty_option' => t('All images'),
);
}
$element['center_x'] = array(
'#type' => 'checkbox',
'#title' => t('Horizontal centered'),
'#default_value' => $settings['center_x'],
'#description' => t('Should we center the image on the X axis?'),
);
$element['center_y'] = array(
'#type' => 'checkbox',
'#title' => t('Vertically centered'),
'#default_value' => $settings['center_y'],
'#description' => t('Should we center the image on the Y axis?'),
);
$element['random'] = array(
'#type' => 'checkbox',
'#title' => t('Random'),
'#default_value' => $settings['random'],
'#description' => t('Check when a random image should be displayed instead of a slideshow.'),
'#access' => $field['cardinality'] != 1,
);
return $element;
}