function views_field_formatter_field_formatter_settings_form in Views field formatter 7
Implements hook_field_formatter_settings_form().
File
- ./
views_field_formatter.module, line 33 - Views field formatter module.
Code
function views_field_formatter_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings']['views_field_formatter'];
$element = array();
// Get only enabled views.
$views = views_get_enabled_views();
$options = array();
foreach ($views as $view => $data) {
// If editing a field from a Views, remove the current view from the list.
if (isset($form_state['view']) && $form_state['view']->name == $view) {
continue;
}
// Remove Views which don't have the tag 'views_field_formatter'.
$tags = explode(',', $data->tag);
if (!in_array('views_field_formatter', $tags)) {
continue;
}
foreach ($data->display as $display => $display_data) {
$options[$data->human_name][$view . '::' . $display] = $display_data->display_title . ' (' . $view . '::' . $display . ')';
}
}
$element['views_field_formatter'] = array(
'#type' => 'fieldset',
'#title' => 'Views field formatter configuration',
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
if (!empty($options)) {
$element['views_field_formatter']['view'] = array(
'#title' => t('View'),
'#description' => t('Select the view (<em><a href="@add_view_url">or create a new one</a></em>) that will be used to get the value of the field. Only views with tag <em>views_field_formatter</em> will be visible.', array(
'@add_view_url' => url('admin/structure/views/add'),
)),
'#type' => 'select',
'#default_value' => $settings['view'],
'#options' => $options,
);
$element['views_field_formatter']['multiple'] = array(
'#title' => t('Multiple'),
'#description' => t('If the field is configured as multiple, should we display a view per item ? If selected, there will be one view per item. The arguments passed to that view are in this order: the field item value, the entity id and the item delta.'),
'#type' => 'checkbox',
'#default_value' => boolval($settings['multiple']),
);
$field_multiple = sprintf(':input[name="fields[%s][settings_edit_form][settings][views_field_formatter][multiple]"]', $field['field_name']);
$element['views_field_formatter']['implode_character'] = array(
'#title' => t('Implode with this character'),
'#description' => t('If it is set, all field values are imploded with this character and sent as one views argument. Empty to disable.'),
'#type' => 'textfield',
'#default_value' => $settings['implode_character'],
'#states' => array(
'visible' => array(
$field_multiple => array(
'checked' => TRUE,
),
),
),
);
}
else {
$element['views_field_formatter']['help'] = array(
'#markup' => t('<p>No available Views were found. <a href="@add_view_url">Create</a> or <a href="@views_templates">add from the views templates</a> a views with tag <em>views_field_formatter</em>.</p>', array(
'@add_view_url' => url('admin/structure/views/add'),
'@views_templates' => url('admin/structure/views/add-template'),
)),
);
}
return $element;
}