Projet

Général

Profil

Paste
Télécharger (5,46 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / flexslider / theme / flexslider.theme.inc @ b5aa1857

1 85ad3d82 Assos Assos
<?php
2
/**
3
 * @file
4
 * Theming functions for the flexslider module.
5
 *
6
 * Preprocessor functions fill variables for templates and helper
7
 * functions to make theming easier.
8
 */
9
10
/**
11
 * Default theme implementation for flexslider_list
12
 */
13 a60304ed Assos Assos
function theme_flexslider_list(&$variables) {
14 85ad3d82 Assos Assos
  // Reference configuration variables
15 a60304ed Assos Assos
  $optionset = &$variables['settings']['optionset'];
16
  $items = &$variables['items'];
17
  $attributes = &$variables['settings']['attributes'];
18
  $type = &$variables['settings']['type'];
19 85ad3d82 Assos Assos
  $output = '';
20
21
  // Build the list
22
  if (!empty($items)) {
23
    $output .= "<$type" . drupal_attributes($attributes) . '>';
24 a60304ed Assos Assos
    foreach ($items as $item) {
25 85ad3d82 Assos Assos
26
      $caption = '';
27
      if (!empty($item['caption'])) {
28
        $caption = $item['caption'];
29
      }
30
31
      $output .= theme('flexslider_list_item', array(
32
        'item' => $item['slide'],
33
        'settings' => array(
34
          'optionset' => $optionset,
35
        ),
36
        'caption' => $caption,
37
      ));
38
    }
39
    $output .= "</$type>";
40
  }
41
42
  return $output;
43
}
44
45
/**
46
 * Default theme implementation for flexslider_list_item
47
 */
48 a60304ed Assos Assos
function theme_flexslider_list_item(&$variables) {
49
  return '<li' . drupal_attributes($variables['settings']['attributes']) . '>' . $variables['item'] . $variables['caption'] . "</li>\n";
50 85ad3d82 Assos Assos
}
51
52
/**
53 a60304ed Assos Assos
 * Prepares variables for flexslider templates.
54
 *
55
 * @see flexslider.tpl.php.
56 85ad3d82 Assos Assos
 */
57 a60304ed Assos Assos
function template_process_flexslider(&$variables) {
58 85ad3d82 Assos Assos
59
  // Reference configuration variables
60 a60304ed Assos Assos
  $optionset = &$variables['settings']['optionset'];
61
  $settings = &$variables['settings'];
62
  $items = &$variables['items'];
63 85ad3d82 Assos Assos
64
  // Set the default container type
65
  if (empty($settings['type'])) {
66
    $settings['type'] = 'ul';
67
  }
68
69
  // Load the selected optionset
70
  if (!empty($optionset)) {
71
    $optionset = flexslider_optionset_load($optionset);
72
  }
73
74
  // Check if an optionset was loaded
75
  if (empty($optionset)) {
76
    // Fall back to 'default' option set
77
    $optionset = flexslider_optionset_load('default');
78
    watchdog('flexslider', 'Fallback to default optionset.', array(), WATCHDOG_WARNING);
79
  }
80
81
  // Configure attributes for containing elements
82
  $attributes = array();
83
  // Merge with defined attributes
84
  if (isset($settings['attributes']) and is_array($settings['attributes'])) {
85
    $attributes += $settings['attributes'];
86
  }
87
88
  // Set the ID for each flexslider instance if none is provided
89
  if (empty($attributes['id'])) {
90
    $flexslider_id = &drupal_static('flexslider_id', 0);
91
    $attributes['id'] = 'flexslider-' . ++$flexslider_id;
92
  }
93
94
  // Add the namespace to any classes
95
  // @todo figure out what this is supposed to do
96
  if (!empty($attributes['class']) && !empty($optionset->options['namespace'])) {
97
    foreach ($attributes['class'] as $key => $value) {
98
      $attributes['class'][$key] = $optionset->options['namespace'] . $value;
99
    }
100
  }
101
102
  // Add the flexslider class to be namespaced
103
  $attributes['class'][] = 'flexslider';
104
105 a60304ed Assos Assos
  // Add the optionset name as a class to the container.
106
  $attributes['class'][] = 'optionset-' . drupal_html_class($optionset->name);
107
108
  // Add the image style name as a class to the container.
109
  if (!empty($settings['image_style'])) {
110
    $attributes['class'][] = 'imagestyle-' . drupal_html_class($settings['image_style']);
111
  }
112
113 85ad3d82 Assos Assos
  // Add the attributes to the settings array.
114
  $settings['attributes'] = $attributes;
115
116
  // Finally, add the configuration to the page
117 a60304ed Assos Assos
  flexslider_add($variables['settings']['attributes']['id'], $variables['settings']['optionset']);
118 85ad3d82 Assos Assos
}
119
120
/**
121 a60304ed Assos Assos
 * Prepares variables for flexslider list templates.
122
 *
123
 * @see flexslider-list.tpl.php.
124 85ad3d82 Assos Assos
 */
125 a60304ed Assos Assos
function template_process_flexslider_list(&$variables) {
126 85ad3d82 Assos Assos
  // Reset the list of attributes
127 a60304ed Assos Assos
  $variables['settings']['attributes'] = array(
128 85ad3d82 Assos Assos
    // @todo find a way to detect the outter container class if possible
129
    'class' => array('slides'),
130
  );
131
132
}
133
134
/**
135 a60304ed Assos Assos
 * Prepares variables for flexslider list item templates.
136
 *
137
 * @see flexslider-list-item.tpl.php.
138 85ad3d82 Assos Assos
 */
139 a60304ed Assos Assos
function template_process_flexslider_list_item(&$variables) {
140 85ad3d82 Assos Assos
  // Reset the list of attributes
141 a60304ed Assos Assos
  $variables['settings']['attributes'] = array();
142 85ad3d82 Assos Assos
143
  // Reference configuration variables
144 a60304ed Assos Assos
  $item = &$variables['item'];
145
  $settings = &$variables['settings'];
146
  $caption = &$variables['caption'];
147
  $attributes = &$variables['settings']['attributes'];
148 85ad3d82 Assos Assos
149
  // Generated thumbnail support
150
  if (isset($settings['optionset']->options['controlNav']) and $settings['optionset']->options['controlNav'] === "thumbnails") {
151
    // If the thumbnails are enabled in the option set, scan for the first img
152
    // tag and extract the src attribute to set as the thumbnail data
153
    $src = array();
154 a60304ed Assos Assos
    preg_match("/<img.+?src=[\"'](.+?)[\"'].+?>/", $item, $src);
155 85ad3d82 Assos Assos
156
    if (!empty($src[1])) {
157
      $attributes['data-thumb'] = $src[1];
158
    }
159 a60304ed Assos Assos
160
    // Let's also get the alt attribute to apply to thumbnails.
161
    // This only works in library version 2.6+.
162
    $alt = array();
163
    preg_match("/<img.+?alt=[\"'](.*?)[\"'].+?>/", $item, $alt);
164
165
    if (!empty($alt)) {
166
      $attributes['data-thumb-alt'] = $alt[1];
167
    }
168 85ad3d82 Assos Assos
  }
169
170
  if (isset($settings['optionset']->options['thumbCaptions']) and $settings['optionset']->options['thumbCaptions'] and !empty($caption)) {
171
    $attributes['data-thumbcaption'] = $caption;
172
    // Prevent captions from appearing in the slider as well
173
    if (isset($settings['optionset']->options['thumbCaptionsBoth']) and FALSE === $settings['optionset']->options['thumbCaptionsBoth']) {
174 a60304ed Assos Assos
      $caption = '';
175 85ad3d82 Assos Assos
    }
176
  }
177
178
  if (!empty($caption)) {
179
    $caption = '<div class="flex-caption">' . $caption . '</div>';
180
  }
181
}