danielebarchiesi@2: ';
danielebarchiesi@2: foreach ($items as $i => $item) {
danielebarchiesi@2: // If the slide hasn't been set, build the slide using the image
danielebarchiesi@2: // attributes given (assumes we're using a multi-image field)
danielebarchiesi@2: // @todo need to allow for different types of field and collection fields
danielebarchiesi@2: if (!isset($item['slide'])) {
danielebarchiesi@2: $image_options = array(
danielebarchiesi@2: 'style_name' => $optionset->imagestyle_normal,
danielebarchiesi@2: 'path' => $item['uri'],
danielebarchiesi@2: 'height' => isset($item['height']) ? $item['height'] : '',
danielebarchiesi@2: 'width' => isset($item['width']) ? $item['width'] : '',
danielebarchiesi@2: 'alt' => $item['alt'],
danielebarchiesi@2: 'title' => $item['title'],
danielebarchiesi@2: 'attributes' => array(),
danielebarchiesi@2: );
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: $caption = '';
danielebarchiesi@2: if (!empty($item['title'])) {
danielebarchiesi@2: $caption = $item['title'];
danielebarchiesi@2: }
danielebarchiesi@2: $output .= theme('flexslider_list_item', array(
danielebarchiesi@2: 'item' => isset($item['slide']) ? $item['slide'] : theme_image_style($image_options),
danielebarchiesi@2: 'item' => isset($item['slide']) ? $item['slide'] : ($optionset->imagestyle_normal ? theme_image_style($image_options) : theme_image($image_options)),
danielebarchiesi@2:
danielebarchiesi@2: 'thumb' => isset($item['thumb']) ? $item['thumb'] : image_style_url($optionset->imagestyle_thumbnail, $item['uri']),
danielebarchiesi@2: 'optionset' => $optionset,
danielebarchiesi@2: 'caption' => $caption,
danielebarchiesi@2: ));
danielebarchiesi@2: }
danielebarchiesi@2: $output .= "$type>";
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: return $output;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Default theme implementation for flexslider_list_item
danielebarchiesi@2: */
danielebarchiesi@2: function theme_flexslider_list_item(&$vars) {
danielebarchiesi@2: // Reference configuration variables
danielebarchiesi@2: $item = &$vars['item'];
danielebarchiesi@2: $attributes = &$vars['settings']['attributes'];
danielebarchiesi@2:
danielebarchiesi@2: if ($vars['optionset']->options['controlNav'] === "thumbnails" &&
danielebarchiesi@2: isset($vars['thumb'])
danielebarchiesi@2: ) {
danielebarchiesi@2: $attributes['data-thumb'] = $vars['thumb'];
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: $caption = '';
danielebarchiesi@2: if (!empty($vars['caption'])) {
danielebarchiesi@2: $caption = '
' . $vars['caption'] . '
';
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: $output = '';
danielebarchiesi@2: $output .= '' . $item . $caption . "\n";
danielebarchiesi@2:
danielebarchiesi@2: return $output;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Template preprocess handler for 'flexslider' theme.
danielebarchiesi@2: */
danielebarchiesi@2: function template_process_flexslider(&$vars) {
danielebarchiesi@2:
danielebarchiesi@2: // Reference configuration variables
danielebarchiesi@2: $optionset = &$vars['settings']['optionset'];
danielebarchiesi@2: $settings = &$vars['settings'];
danielebarchiesi@2: $items = &$vars['items'];
danielebarchiesi@2:
danielebarchiesi@2: // Set the default container type
danielebarchiesi@2: if (empty($settings['type'])) {
danielebarchiesi@2: $settings['type'] = 'ul';
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Load the selected optionset
danielebarchiesi@2: if (!empty($optionset)) {
danielebarchiesi@2: $optionset = flexslider_optionset_load($optionset);
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Check if an optionset was loaded
danielebarchiesi@2: if (empty($optionset)) {
danielebarchiesi@2: // Fall back to 'default' option set
danielebarchiesi@2: $optionset = flexslider_optionset_load('default');
danielebarchiesi@2: watchdog('flexslider', 'Fallback to default optionset.', array(), WATCHDOG_WARNING);
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Configure attributes for containing elements
danielebarchiesi@2: $attributes = array();
danielebarchiesi@2: // Merge with defined attributes
danielebarchiesi@2: if (isset($settings['attributes']) and is_array($settings['attributes'])) {
danielebarchiesi@2: $attributes += $settings['attributes'];
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Set the ID for each flexslider instance if none is provided
danielebarchiesi@2: if (empty($attributes['id'])) {
danielebarchiesi@2: $flexslider_id = &drupal_static('flexslider_id', 0);
danielebarchiesi@2: $attributes['id'] = 'flexslider-' . ++$flexslider_id;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Add the namespace to any classes
danielebarchiesi@2: // @todo figure out what this is supposed to do
danielebarchiesi@2: if (!empty($attributes['class']) && !empty($optionset->options['namespace'])) {
danielebarchiesi@2: foreach ($attributes['class'] as $key => $value) {
danielebarchiesi@2: $attributes['class'][$key] = $optionset->options['namespace'] . $value;
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Add the flexslider class to be namespaced
danielebarchiesi@2: $attributes['class'][] = 'flexslider';
danielebarchiesi@2:
danielebarchiesi@2: // Add the attributes to the settings array.
danielebarchiesi@2: $settings['attributes'] = $attributes;
danielebarchiesi@2:
danielebarchiesi@2: // Finally, add the configuration to the page
danielebarchiesi@2: flexslider_add($vars['settings']['attributes']['id'], $vars['settings']['optionset']);
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Preprocess function for flexslider_list_item
danielebarchiesi@2: */
danielebarchiesi@2: function template_preprocess_flexslider_list(&$vars) {
danielebarchiesi@2: // Reset the list of attributes
danielebarchiesi@2: $vars['settings']['attributes'] = array(
danielebarchiesi@2: // @todo find a way to detect the outter container class if possible
danielebarchiesi@2: 'class' => array('slides'),
danielebarchiesi@2: );
danielebarchiesi@2:
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Preprocess function for flexslider_list_item
danielebarchiesi@2: */
danielebarchiesi@2: function template_preprocess_flexslider_list_item(&$vars) {
danielebarchiesi@2: // Reset the list of attributes
danielebarchiesi@2: $vars['settings']['attributes'] = array();
danielebarchiesi@2: //dpm($vars);
danielebarchiesi@2:
danielebarchiesi@2: //$vars['item'] = implode('', $vars['item']);
danielebarchiesi@2: // @todo add attributes for thumbnails
danielebarchiesi@2: }