annotate sites/all/modules/flexslider/theme/flexslider.theme.inc @ 3:b28be78d8160

alpha1.0 version
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:33:07 +0100
parents b74b41bb73f0
children
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@2 2 /**
danielebarchiesi@2 3 * @file
danielebarchiesi@2 4 * Theming functions for the flexslider module.
danielebarchiesi@2 5 *
danielebarchiesi@2 6 * Preprocessor functions fill variables for templates and helper
danielebarchiesi@2 7 * functions to make theming easier.
danielebarchiesi@2 8 */
danielebarchiesi@2 9
danielebarchiesi@2 10 /**
danielebarchiesi@2 11 * Default theme implementation for flexslider_list
danielebarchiesi@2 12 */
danielebarchiesi@2 13 function theme_flexslider_list(&$vars) {
danielebarchiesi@2 14 // Reference configuration variables
danielebarchiesi@2 15 $optionset = &$vars['settings']['optionset'];
danielebarchiesi@2 16 $items = &$vars['items'];
danielebarchiesi@2 17 $attributes = &$vars['settings']['attributes'];
danielebarchiesi@2 18 $type = &$vars['settings']['type'];
danielebarchiesi@2 19 $output = '';
danielebarchiesi@2 20
danielebarchiesi@2 21 // Build the list
danielebarchiesi@2 22 if (!empty($items)) {
danielebarchiesi@2 23 $output .= "<$type" . drupal_attributes($attributes) . '>';
danielebarchiesi@2 24 foreach ($items as $i => $item) {
danielebarchiesi@2 25 // If the slide hasn't been set, build the slide using the image
danielebarchiesi@2 26 // attributes given (assumes we're using a multi-image field)
danielebarchiesi@2 27 // @todo need to allow for different types of field and collection fields
danielebarchiesi@2 28 if (!isset($item['slide'])) {
danielebarchiesi@2 29 $image_options = array(
danielebarchiesi@2 30 'style_name' => $optionset->imagestyle_normal,
danielebarchiesi@2 31 'path' => $item['uri'],
danielebarchiesi@2 32 'height' => isset($item['height']) ? $item['height'] : '',
danielebarchiesi@2 33 'width' => isset($item['width']) ? $item['width'] : '',
danielebarchiesi@2 34 'alt' => $item['alt'],
danielebarchiesi@2 35 'title' => $item['title'],
danielebarchiesi@2 36 'attributes' => array(),
danielebarchiesi@2 37 );
danielebarchiesi@2 38 }
danielebarchiesi@2 39
danielebarchiesi@2 40 $caption = '';
danielebarchiesi@2 41 if (!empty($item['title'])) {
danielebarchiesi@2 42 $caption = $item['title'];
danielebarchiesi@2 43 }
danielebarchiesi@2 44 $output .= theme('flexslider_list_item', array(
danielebarchiesi@2 45 'item' => isset($item['slide']) ? $item['slide'] : theme_image_style($image_options),
danielebarchiesi@2 46 'item' => isset($item['slide']) ? $item['slide'] : ($optionset->imagestyle_normal ? theme_image_style($image_options) : theme_image($image_options)),
danielebarchiesi@2 47
danielebarchiesi@2 48 'thumb' => isset($item['thumb']) ? $item['thumb'] : image_style_url($optionset->imagestyle_thumbnail, $item['uri']),
danielebarchiesi@2 49 'optionset' => $optionset,
danielebarchiesi@2 50 'caption' => $caption,
danielebarchiesi@2 51 ));
danielebarchiesi@2 52 }
danielebarchiesi@2 53 $output .= "</$type>";
danielebarchiesi@2 54 }
danielebarchiesi@2 55
danielebarchiesi@2 56 return $output;
danielebarchiesi@2 57 }
danielebarchiesi@2 58
danielebarchiesi@2 59 /**
danielebarchiesi@2 60 * Default theme implementation for flexslider_list_item
danielebarchiesi@2 61 */
danielebarchiesi@2 62 function theme_flexslider_list_item(&$vars) {
danielebarchiesi@2 63 // Reference configuration variables
danielebarchiesi@2 64 $item = &$vars['item'];
danielebarchiesi@2 65 $attributes = &$vars['settings']['attributes'];
danielebarchiesi@2 66
danielebarchiesi@2 67 if ($vars['optionset']->options['controlNav'] === "thumbnails" &&
danielebarchiesi@2 68 isset($vars['thumb'])
danielebarchiesi@2 69 ) {
danielebarchiesi@2 70 $attributes['data-thumb'] = $vars['thumb'];
danielebarchiesi@2 71 }
danielebarchiesi@2 72
danielebarchiesi@2 73 $caption = '';
danielebarchiesi@2 74 if (!empty($vars['caption'])) {
danielebarchiesi@2 75 $caption = '<p class="flex-caption">' . $vars['caption'] . '</p>';
danielebarchiesi@2 76 }
danielebarchiesi@2 77
danielebarchiesi@2 78 $output = '';
danielebarchiesi@2 79 $output .= '<li' . drupal_attributes($attributes) . '>' . $item . $caption . "</li>\n";
danielebarchiesi@2 80
danielebarchiesi@2 81 return $output;
danielebarchiesi@2 82 }
danielebarchiesi@2 83
danielebarchiesi@2 84 /**
danielebarchiesi@2 85 * Template preprocess handler for 'flexslider' theme.
danielebarchiesi@2 86 */
danielebarchiesi@2 87 function template_process_flexslider(&$vars) {
danielebarchiesi@2 88
danielebarchiesi@2 89 // Reference configuration variables
danielebarchiesi@2 90 $optionset = &$vars['settings']['optionset'];
danielebarchiesi@2 91 $settings = &$vars['settings'];
danielebarchiesi@2 92 $items = &$vars['items'];
danielebarchiesi@2 93
danielebarchiesi@2 94 // Set the default container type
danielebarchiesi@2 95 if (empty($settings['type'])) {
danielebarchiesi@2 96 $settings['type'] = 'ul';
danielebarchiesi@2 97 }
danielebarchiesi@2 98
danielebarchiesi@2 99 // Load the selected optionset
danielebarchiesi@2 100 if (!empty($optionset)) {
danielebarchiesi@2 101 $optionset = flexslider_optionset_load($optionset);
danielebarchiesi@2 102 }
danielebarchiesi@2 103
danielebarchiesi@2 104 // Check if an optionset was loaded
danielebarchiesi@2 105 if (empty($optionset)) {
danielebarchiesi@2 106 // Fall back to 'default' option set
danielebarchiesi@2 107 $optionset = flexslider_optionset_load('default');
danielebarchiesi@2 108 watchdog('flexslider', 'Fallback to default optionset.', array(), WATCHDOG_WARNING);
danielebarchiesi@2 109 }
danielebarchiesi@2 110
danielebarchiesi@2 111 // Configure attributes for containing elements
danielebarchiesi@2 112 $attributes = array();
danielebarchiesi@2 113 // Merge with defined attributes
danielebarchiesi@2 114 if (isset($settings['attributes']) and is_array($settings['attributes'])) {
danielebarchiesi@2 115 $attributes += $settings['attributes'];
danielebarchiesi@2 116 }
danielebarchiesi@2 117
danielebarchiesi@2 118 // Set the ID for each flexslider instance if none is provided
danielebarchiesi@2 119 if (empty($attributes['id'])) {
danielebarchiesi@2 120 $flexslider_id = &drupal_static('flexslider_id', 0);
danielebarchiesi@2 121 $attributes['id'] = 'flexslider-' . ++$flexslider_id;
danielebarchiesi@2 122 }
danielebarchiesi@2 123
danielebarchiesi@2 124 // Add the namespace to any classes
danielebarchiesi@2 125 // @todo figure out what this is supposed to do
danielebarchiesi@2 126 if (!empty($attributes['class']) && !empty($optionset->options['namespace'])) {
danielebarchiesi@2 127 foreach ($attributes['class'] as $key => $value) {
danielebarchiesi@2 128 $attributes['class'][$key] = $optionset->options['namespace'] . $value;
danielebarchiesi@2 129 }
danielebarchiesi@2 130 }
danielebarchiesi@2 131
danielebarchiesi@2 132 // Add the flexslider class to be namespaced
danielebarchiesi@2 133 $attributes['class'][] = 'flexslider';
danielebarchiesi@2 134
danielebarchiesi@2 135 // Add the attributes to the settings array.
danielebarchiesi@2 136 $settings['attributes'] = $attributes;
danielebarchiesi@2 137
danielebarchiesi@2 138 // Finally, add the configuration to the page
danielebarchiesi@2 139 flexslider_add($vars['settings']['attributes']['id'], $vars['settings']['optionset']);
danielebarchiesi@2 140 }
danielebarchiesi@2 141
danielebarchiesi@2 142 /**
danielebarchiesi@2 143 * Preprocess function for flexslider_list_item
danielebarchiesi@2 144 */
danielebarchiesi@2 145 function template_preprocess_flexslider_list(&$vars) {
danielebarchiesi@2 146 // Reset the list of attributes
danielebarchiesi@2 147 $vars['settings']['attributes'] = array(
danielebarchiesi@2 148 // @todo find a way to detect the outter container class if possible
danielebarchiesi@2 149 'class' => array('slides'),
danielebarchiesi@2 150 );
danielebarchiesi@2 151
danielebarchiesi@2 152 }
danielebarchiesi@2 153
danielebarchiesi@2 154 /**
danielebarchiesi@2 155 * Preprocess function for flexslider_list_item
danielebarchiesi@2 156 */
danielebarchiesi@2 157 function template_preprocess_flexslider_list_item(&$vars) {
danielebarchiesi@2 158 // Reset the list of attributes
danielebarchiesi@2 159 $vars['settings']['attributes'] = array();
danielebarchiesi@2 160 //dpm($vars);
danielebarchiesi@2 161
danielebarchiesi@2 162 //$vars['item'] = implode('', $vars['item']);
danielebarchiesi@2 163 // @todo add attributes for thumbnails
danielebarchiesi@2 164 }