flexslider_field_collection.module in FlexSlider Field Collection 7
Provides a Flex Slider formatter for Field Collection fields.
File
flexslider_field_collection.moduleView source
<?php
/**
* @file
* Provides a Flex Slider formatter for Field Collection fields.
*/
/**
* Implements hook_field_formatter_info().
*/
function flexslider_field_collection_field_formatter_info() {
return array(
'field_collection_entity_flexslider' => array(
'label' => t('FlexSlider'),
'description' => t('Displays the rendered entities in a FlexSlider.'),
'field types' => array(
'field_collection',
),
'settings' => array(
'optionset' => '',
'view_mode' => '',
),
),
);
}
/**
* Implements hook_field_formatter_settings_form().
*/
function flexslider_field_collection_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$form = array();
// Creates a select list for the Flex Slider option set.
$optionsets = array();
ctools_include('export');
foreach (flexslider_optionset_load_all() as $name => $optionset) {
$optionsets[$name] = $optionset->title;
}
$form['optionset'] = array(
'#title' => t('Option set'),
'#type' => 'select',
'#options' => $optionsets,
'#default_value' => $settings['optionset'],
);
// Creates a select list for the slide view modes.
$entity_info = entity_get_info('field_collection_item');
$options = array();
if (!empty($entity_info['view modes'])) {
foreach ($entity_info['view modes'] as $view_mode => $view_mode_settings) {
$options[$view_mode] = $view_mode_settings['label'];
}
}
if (count($options) > 1) {
$form['view_mode'] = array(
'#type' => 'select',
'#options' => $options,
'#title' => t('Slide view mode'),
'#default_value' => $settings['view_mode'],
);
}
return $form;
}
/**
* Implements hook_field_formatter_settings_summary().
*/
function flexslider_field_collection_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$summary = array();
// Load the Flex Slider option set.
ctools_include('export');
if (!empty($settings['optionset'])) {
$optionset = flexslider_optionset_load($settings['optionset']);
}
// Build the settings summary.
$optionset = isset($optionset) ? $optionset->title : t('Default settings');
$summary[] = t('Option set: %optionset', array(
'%optionset' => $optionset,
));
$entity_info = entity_get_info('field_collection_item');
$summary[] = t('Slides rendered as @mode', array(
'@mode' => isset($entity_info['view modes'][$settings['view_mode']]['label']) ? $entity_info['view modes'][$settings['view_mode']]['label'] : 'default',
));
return implode('<br />', $summary);
}
/**
* Implements hook_field_formatter_view().
*/
function flexslider_field_collection_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$settings = $display['settings'];
$result = array();
if ($display['type'] == 'field_collection_entity_flexslider') {
$view_mode = !empty($display['settings']['view_mode']) ? $display['settings']['view_mode'] : 'full';
foreach ($items as $delta => $item) {
if ($field_collection = field_collection_field_get_entity($item)) {
$renderable = $field_collection
->view($view_mode);
$result[$delta] = array(
'slide' => drupal_render($renderable),
'item' => $field_collection,
);
}
}
}
$element = array();
if (count($result) > 0) {
$element[] = array(
'#theme' => 'flexslider',
'#items' => $result,
'#settings' => $display['settings'],
);
}
return $element;
}