danielebarchiesi@2
|
1 <?php
|
danielebarchiesi@2
|
2
|
danielebarchiesi@2
|
3 /**
|
danielebarchiesi@2
|
4 * @file
|
danielebarchiesi@2
|
5 * Adds fields integration with FlexSlider
|
danielebarchiesi@2
|
6 *
|
danielebarchiesi@2
|
7 * @author jepedo
|
danielebarchiesi@2
|
8 * @author Mathew Winstone <mwinstone@coldfrontlabs.ca>
|
danielebarchiesi@2
|
9 */
|
danielebarchiesi@2
|
10
|
danielebarchiesi@2
|
11 /**
|
danielebarchiesi@2
|
12 * Implements hook_field_formatter_info().
|
danielebarchiesi@2
|
13 *
|
danielebarchiesi@2
|
14 * Adds the flexslider format option within the manage display form of
|
danielebarchiesi@2
|
15 * of an image field.
|
danielebarchiesi@2
|
16 */
|
danielebarchiesi@2
|
17 function flexslider_fields_field_formatter_info() {
|
danielebarchiesi@2
|
18 return array(
|
danielebarchiesi@2
|
19 'flexslider' => array(
|
danielebarchiesi@2
|
20 'label' => t('flexslider'),
|
danielebarchiesi@2
|
21 'field types' => array('image', 'media'),
|
danielebarchiesi@2
|
22 'settings' => array(
|
danielebarchiesi@2
|
23 'optionset' => 'default',
|
danielebarchiesi@2
|
24 'caption' => FALSE,
|
danielebarchiesi@2
|
25 ),
|
danielebarchiesi@2
|
26 ),
|
danielebarchiesi@2
|
27 );
|
danielebarchiesi@2
|
28 }
|
danielebarchiesi@2
|
29
|
danielebarchiesi@2
|
30 /**
|
danielebarchiesi@2
|
31 * Implements hook_field_formatter_settings_form().
|
danielebarchiesi@2
|
32 *
|
danielebarchiesi@2
|
33 * Provides display settings form within the manage display page of
|
danielebarchiesi@2
|
34 * an image field with formatter flexslider.
|
danielebarchiesi@2
|
35 */
|
danielebarchiesi@2
|
36 function flexslider_fields_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
|
danielebarchiesi@2
|
37 $display = $instance['display'][$view_mode];
|
danielebarchiesi@2
|
38 $settings = $display['settings'];
|
danielebarchiesi@2
|
39
|
danielebarchiesi@2
|
40 $form = array();
|
danielebarchiesi@2
|
41
|
danielebarchiesi@2
|
42 // Show select box for the option set
|
danielebarchiesi@2
|
43 $optionsets = array();
|
danielebarchiesi@2
|
44 ctools_include('export');
|
danielebarchiesi@2
|
45 foreach (flexslider_optionset_load_all() as $name => $optionset) {
|
danielebarchiesi@2
|
46 $optionsets[$name] = check_plain($optionset->title);
|
danielebarchiesi@2
|
47 }
|
danielebarchiesi@2
|
48
|
danielebarchiesi@2
|
49 $form['optionset'] = array(
|
danielebarchiesi@2
|
50 '#title' => t('Option set'),
|
danielebarchiesi@2
|
51 '#type' => 'select',
|
danielebarchiesi@2
|
52 '#options' => $optionsets,
|
danielebarchiesi@2
|
53 '#default_value' => $settings['optionset'],
|
danielebarchiesi@2
|
54 );
|
danielebarchiesi@2
|
55
|
danielebarchiesi@2
|
56 // If the image field doesn't have the Title field enabled, tell the user.
|
danielebarchiesi@2
|
57 if ($instance['settings']['title_field'] == FALSE) {
|
danielebarchiesi@2
|
58 $form['caption'] = array(
|
danielebarchiesi@2
|
59 '#title' => t('Use image title as the caption'),
|
danielebarchiesi@2
|
60 '#type' => 'checkbox',
|
danielebarchiesi@2
|
61 '#disabled' => TRUE,
|
danielebarchiesi@2
|
62 '#description' => t('You need to <a href="@url">enable the Title field</a> for this image field to be able use it as a caption.', array('@url' => url('admin/structure/types/manage/' . $instance['bundle'] . '/fields/' . $instance['field_name'], array('fragment' => 'edit-instance-settings-title-field', 'query' => array('destination' => 'admin/structure/types/manage/' . $instance['bundle'] . '/display'))))),
|
danielebarchiesi@2
|
63 );
|
danielebarchiesi@2
|
64 }
|
danielebarchiesi@2
|
65 else {
|
danielebarchiesi@2
|
66 $form['caption'] = array(
|
danielebarchiesi@2
|
67 '#title' => t('Use image title as the caption'),
|
danielebarchiesi@2
|
68 '#type' => 'checkbox',
|
danielebarchiesi@2
|
69 '#default_value' => $settings['caption'],
|
danielebarchiesi@2
|
70 );
|
danielebarchiesi@2
|
71 }
|
danielebarchiesi@2
|
72
|
danielebarchiesi@2
|
73 return $form;
|
danielebarchiesi@2
|
74 }
|
danielebarchiesi@2
|
75
|
danielebarchiesi@2
|
76 /**
|
danielebarchiesi@2
|
77 * Implements hook_field_formatter_settings_summary().
|
danielebarchiesi@2
|
78 *
|
danielebarchiesi@2
|
79 * Displays the summary of the set options of a flexslider formatted image field
|
danielebarchiesi@2
|
80 */
|
danielebarchiesi@2
|
81 function flexslider_fields_field_formatter_settings_summary($field, $instance, $view_mode) {
|
danielebarchiesi@2
|
82 $display = $instance['display'][$view_mode];
|
danielebarchiesi@2
|
83 $settings = $display['settings'];
|
danielebarchiesi@2
|
84
|
danielebarchiesi@2
|
85 $summary = array();
|
danielebarchiesi@2
|
86
|
danielebarchiesi@2
|
87 // Load option set
|
danielebarchiesi@2
|
88 ctools_include('export');
|
danielebarchiesi@2
|
89 if (!empty($settings['optionset'])) {
|
danielebarchiesi@2
|
90 $o = flexslider_optionset_load($settings['optionset']);
|
danielebarchiesi@2
|
91 if ($o !== NULL) {
|
danielebarchiesi@2
|
92 $optionset = $o;
|
danielebarchiesi@2
|
93 }
|
danielebarchiesi@2
|
94 }
|
danielebarchiesi@2
|
95
|
danielebarchiesi@2
|
96 // Build settings summary
|
danielebarchiesi@2
|
97 $optionset = isset($optionset) ? $optionset->title : t('Default settings');
|
danielebarchiesi@2
|
98 $summary[] = t('Option set: %optionset', array('%optionset' => $optionset));
|
danielebarchiesi@2
|
99
|
danielebarchiesi@2
|
100 return implode('<br />', $summary);
|
danielebarchiesi@2
|
101 }
|
danielebarchiesi@2
|
102
|
danielebarchiesi@2
|
103 /**
|
danielebarchiesi@2
|
104 * Implements hook_field_formatter_view().
|
danielebarchiesi@2
|
105 *
|
danielebarchiesi@2
|
106 * Prepares a renderable array of images and adds the neccessary JS and CSS
|
danielebarchiesi@2
|
107 */
|
danielebarchiesi@2
|
108 function flexslider_fields_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
|
danielebarchiesi@2
|
109 if ($field['type'] == 'media') {
|
danielebarchiesi@2
|
110 $image_items = array();
|
danielebarchiesi@2
|
111 foreach ($items as $item) {
|
danielebarchiesi@2
|
112 if ($item['file']->type == 'image') {
|
danielebarchiesi@2
|
113 $file = (array) $item['file'];
|
danielebarchiesi@2
|
114 $file += array('alt' => '', 'title' => '');
|
danielebarchiesi@2
|
115 $image_items[] = $file;
|
danielebarchiesi@2
|
116 }
|
danielebarchiesi@2
|
117 }
|
danielebarchiesi@2
|
118 $items = $image_items;
|
danielebarchiesi@2
|
119 }
|
danielebarchiesi@2
|
120
|
danielebarchiesi@2
|
121 $element = array();
|
danielebarchiesi@2
|
122 if (count($items) > 0) {
|
danielebarchiesi@2
|
123 $element[] = array(
|
danielebarchiesi@2
|
124 '#theme' => 'flexslider',
|
danielebarchiesi@2
|
125 '#items' => $items,
|
danielebarchiesi@2
|
126 '#settings' => $display['settings'],
|
danielebarchiesi@2
|
127 );
|
danielebarchiesi@2
|
128 }
|
danielebarchiesi@2
|
129
|
danielebarchiesi@2
|
130 return $element;
|
danielebarchiesi@2
|
131 }
|