annotate sites/all/modules/views_slideshow/theme/views_slideshow.theme.inc @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents b74b41bb73f0
children
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@2 2
danielebarchiesi@2 3 /**
danielebarchiesi@2 4 * @file
danielebarchiesi@2 5 * The theme system, which controls the output of views slideshow.
danielebarchiesi@2 6 *
danielebarchiesi@2 7 * This just adds a wrapper div to the slideshow.
danielebarchiesi@2 8 */
danielebarchiesi@2 9
danielebarchiesi@2 10 function _views_slideshow_preprocess_views_slideshow(&$vars) {
danielebarchiesi@2 11 $options = $vars['options'];
danielebarchiesi@2 12 $vars['skin'] = 'default';
danielebarchiesi@2 13 $vars['slideshow'] = '';
danielebarchiesi@2 14 $main_frame_module = $options['slideshow_type'];
danielebarchiesi@2 15
danielebarchiesi@2 16 if (empty($main_frame_module)) {
danielebarchiesi@2 17 // Get all slideshow types.
danielebarchiesi@2 18 $slideshows = module_invoke_all('views_slideshow_slideshow_info');
danielebarchiesi@2 19
danielebarchiesi@2 20 if ($slideshows) {
danielebarchiesi@2 21 foreach ($slideshows as $slideshow_id => $slideshow_info) {
danielebarchiesi@2 22 $main_frame_module = $slideshow_id;
danielebarchiesi@2 23 break;
danielebarchiesi@2 24 }
danielebarchiesi@2 25 }
danielebarchiesi@2 26 }
danielebarchiesi@2 27
danielebarchiesi@2 28 // Make sure the main slideshow settings are defined before building the
danielebarchiesi@2 29 // slideshow.
danielebarchiesi@2 30 if (empty($main_frame_module)) {
danielebarchiesi@2 31 drupal_set_message(t('No main frame module is enabled for views slideshow.'), 'error');
danielebarchiesi@2 32 }
danielebarchiesi@2 33 elseif (empty($options[$main_frame_module])) {
danielebarchiesi@2 34 drupal_set_message(t('The options for !module does not exists.', array('!module' => $main_frame_module)), 'error');
danielebarchiesi@2 35 }
danielebarchiesi@2 36 else {
danielebarchiesi@2 37 $settings = $options[$main_frame_module];
danielebarchiesi@2 38 $view = $vars['view'];
danielebarchiesi@2 39 $rows = $vars['rows'];
danielebarchiesi@2 40 $num_divs = count($rows);
danielebarchiesi@2 41 $vss_id = $view->name . '-' . $view->current_display;
danielebarchiesi@2 42
danielebarchiesi@2 43 // Give each slideshow a unique id if there are more than one on the page.
danielebarchiesi@2 44 static $instances = array();
danielebarchiesi@2 45 if (isset($instances[$vss_id])) {
danielebarchiesi@2 46 $instances[$vss_id]++;
danielebarchiesi@2 47 $vss_id .= "_" . $instances[$vss_id];
danielebarchiesi@2 48 }
danielebarchiesi@2 49 else {
danielebarchiesi@2 50 $instances[$vss_id] = 1;
danielebarchiesi@2 51 }
danielebarchiesi@2 52
danielebarchiesi@2 53 // Building our default methods.
danielebarchiesi@2 54 $methods = array(
danielebarchiesi@2 55 'goToSlide' => array(),
danielebarchiesi@2 56 'nextSlide' => array(),
danielebarchiesi@2 57 'pause' => array(),
danielebarchiesi@2 58 'play' => array(),
danielebarchiesi@2 59 'previousSlide' => array(),
danielebarchiesi@2 60 'transitionBegin' => array(),
danielebarchiesi@2 61 'transitionEnd' => array(),
danielebarchiesi@2 62 );
danielebarchiesi@2 63
danielebarchiesi@2 64 // Pull all widget info and slideshow info and merge them together.
danielebarchiesi@2 65 $widgets = module_invoke_all('views_slideshow_widget_info');
danielebarchiesi@2 66 $slideshows = module_invoke_all('views_slideshow_slideshow_info');
danielebarchiesi@2 67 $addons = array_merge($widgets, $slideshows);
danielebarchiesi@2 68
danielebarchiesi@2 69 // Loop through all the addons and call their methods if needed.
danielebarchiesi@2 70 foreach ($addons as $addon_id => $addon_info) {
danielebarchiesi@2 71 foreach ($addon_info['accepts'] as $imp_key => $imp_value) {
danielebarchiesi@2 72 if (is_array($imp_value)) {
danielebarchiesi@2 73 $methods[$imp_key][] = preg_replace('/_(.?)/e',"strtoupper('$1')", $addon_id);
danielebarchiesi@2 74 }
danielebarchiesi@2 75 else {
danielebarchiesi@2 76 $methods[$imp_value][] = preg_replace('/_(.?)/e',"strtoupper('$1')", $addon_id);
danielebarchiesi@2 77 }
danielebarchiesi@2 78 }
danielebarchiesi@2 79 }
danielebarchiesi@2 80
danielebarchiesi@2 81 $js_settings = array(
danielebarchiesi@2 82 'viewsSlideshow' => array(
danielebarchiesi@2 83 $vss_id => array(
danielebarchiesi@2 84 'methods' => $methods,
danielebarchiesi@2 85 'paused' => 0,
danielebarchiesi@2 86 )
danielebarchiesi@2 87 )
danielebarchiesi@2 88 );
danielebarchiesi@2 89 drupal_add_js($js_settings, 'setting');
danielebarchiesi@2 90
danielebarchiesi@2 91 /**
danielebarchiesi@2 92 * Process Skins
danielebarchiesi@2 93 */
danielebarchiesi@2 94 $skin_info = array();
danielebarchiesi@2 95 if (isset($options['skin_info'])) {
danielebarchiesi@2 96 $skin_info = $options['skin_info'];
danielebarchiesi@2 97 }
danielebarchiesi@2 98
danielebarchiesi@2 99 // Make sure $skin_info has all the values.
danielebarchiesi@2 100 $skin_info += array(
danielebarchiesi@2 101 'class' => 'default',
danielebarchiesi@2 102 'name' => t('Untitled skin'),
danielebarchiesi@2 103 'module' => 'views_slideshow',
danielebarchiesi@2 104 'path' => '',
danielebarchiesi@2 105 'stylesheets' => array(),
danielebarchiesi@2 106 );
danielebarchiesi@2 107
danielebarchiesi@2 108 $vars['skin'] = $skin_info['class'];
danielebarchiesi@2 109
danielebarchiesi@2 110 // Enqueue any stylesheets set for the skin on this view are added.
danielebarchiesi@2 111 $skin_path = drupal_get_path('module', $skin_info['module']);
danielebarchiesi@2 112 if ($skin_info['path']) {
danielebarchiesi@2 113 $skin_path .= '/' . $skin_info['path'];
danielebarchiesi@2 114 }
danielebarchiesi@2 115
danielebarchiesi@2 116 // Add stylesheet.
danielebarchiesi@2 117 if (!empty($skin_info['stylesheets'])) {
danielebarchiesi@2 118 foreach ($skin_info['stylesheets'] as $stylesheet) {
danielebarchiesi@2 119 drupal_add_css($skin_path . '/' . $stylesheet);
danielebarchiesi@2 120 }
danielebarchiesi@2 121 }
danielebarchiesi@2 122
danielebarchiesi@2 123 /**
danielebarchiesi@2 124 * Process Widgets
danielebarchiesi@2 125 */
danielebarchiesi@2 126
danielebarchiesi@2 127 // Build weights
danielebarchiesi@2 128 for ($i = 1; $i <= count($widgets); $i++) {
danielebarchiesi@2 129 $weight['top'][$i] = '';
danielebarchiesi@2 130 $weight['bottom'][$i] = '';
danielebarchiesi@2 131 }
danielebarchiesi@2 132
danielebarchiesi@2 133 foreach ($widgets as $widget_id => $widget_name) {
danielebarchiesi@2 134 // Put our widgets in the right location.
danielebarchiesi@2 135 if ($options['widgets']['top'][$widget_id]['enable']) {
danielebarchiesi@2 136 $widget_weight = ($options['widgets']['top'][$widget_id]['weight'] > count($widgets)) ? count($widgets) : $options['widgets']['top'][$widget_id]['weight'];
danielebarchiesi@2 137 $weight['top'][$widget_weight][] = $widget_id;
danielebarchiesi@2 138 }
danielebarchiesi@2 139
danielebarchiesi@2 140 if ($options['widgets']['bottom'][$widget_id]['enable']) {
danielebarchiesi@2 141 $widget_weight = ($options['widgets']['bottom'][$widget_id]['weight'] > count($widgets)) ? count($widgets) : $options['widgets']['bottom'][$widget_id]['weight'];
danielebarchiesi@2 142 $weight['bottom'][$widget_weight][] = $widget_id;
danielebarchiesi@2 143 }
danielebarchiesi@2 144 }
danielebarchiesi@2 145
danielebarchiesi@2 146 // Build our widgets
danielebarchiesi@2 147 foreach ($weight as $location => $order) {
danielebarchiesi@2 148 $vars[$location . '_widget_rendered'] = '';
danielebarchiesi@2 149 foreach ($order as $order_num => $widgets) {
danielebarchiesi@2 150 if (is_array($widgets)) {
danielebarchiesi@2 151 foreach ($widgets as $widget_id) {
danielebarchiesi@2 152 $vars[$widget_id . '_' . $location] = theme($widget_id . '_widget_render', array('vss_id' => $vss_id, 'view' => $view, 'settings' => $options['widgets'][$location][$widget_id], 'location' => $location, 'rows' => $rows));
danielebarchiesi@2 153 $vars[$location . '_widget_rendered'] .= $vars[$widget_id . '_' . $location];
danielebarchiesi@2 154 }
danielebarchiesi@2 155 }
danielebarchiesi@2 156 }
danielebarchiesi@2 157 }
danielebarchiesi@2 158
danielebarchiesi@2 159 /**
danielebarchiesi@2 160 * Process Slideshow
danielebarchiesi@2 161 */
danielebarchiesi@2 162 $slides = theme($main_frame_module . '_main_frame', array('vss_id' => $vss_id, 'view' => $view, 'settings' => $settings, 'rows' => $rows));
danielebarchiesi@2 163 $vars['slideshow'] = theme('views_slideshow_main_section', array('vss_id' => $vss_id, 'slides' => $slides, 'plugin' => $main_frame_module));
danielebarchiesi@2 164 }
danielebarchiesi@2 165 }
danielebarchiesi@2 166
danielebarchiesi@2 167 /**
danielebarchiesi@2 168 * The current element of the slideshow.
danielebarchiesi@2 169 *
danielebarchiesi@2 170 * @ingroup themeable
danielebarchiesi@2 171 */
danielebarchiesi@2 172 function theme_views_slideshow_main_section($vars) {
danielebarchiesi@2 173 return '<div id="' . $vars['plugin'] . '_main_' . $vars['vss_id'] . '" class="' . $vars['plugin'] . '_main views_slideshow_main">' . $vars['slides'] . '</div>';
danielebarchiesi@2 174 }
danielebarchiesi@2 175
danielebarchiesi@2 176 /**
danielebarchiesi@2 177 * Views Slideshow: pager.
danielebarchiesi@2 178 *
danielebarchiesi@2 179 * @ingroup themeable
danielebarchiesi@2 180 */
danielebarchiesi@2 181 function theme_views_slideshow_pager_widget_render($vars) {
danielebarchiesi@2 182 // Add javascript settings for the pager type.
danielebarchiesi@2 183 $js_vars = array(
danielebarchiesi@2 184 'viewsSlideshowPager' => array(
danielebarchiesi@2 185 $vars['vss_id'] => array(
danielebarchiesi@2 186 $vars['location'] => array(
danielebarchiesi@2 187 'type' => preg_replace('/_(.?)/e',"strtoupper('$1')", $vars['settings']['type']),
danielebarchiesi@2 188 ),
danielebarchiesi@2 189 ),
danielebarchiesi@2 190 ),
danielebarchiesi@2 191 );
danielebarchiesi@2 192
danielebarchiesi@2 193 drupal_add_js($js_vars, 'setting');
danielebarchiesi@2 194
danielebarchiesi@2 195 // Create some attributes
danielebarchiesi@2 196 $attributes['class'] = 'widget_pager widget_pager_' . $vars['location'];
danielebarchiesi@2 197 $attributes['id'] = 'widget_pager_' . $vars['location'] . '_' . $vars['vss_id'];
danielebarchiesi@2 198 return theme($vars['settings']['type'], array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings'], 'location' => $vars['location'], 'attributes' => $attributes));
danielebarchiesi@2 199 }
danielebarchiesi@2 200
danielebarchiesi@2 201 /**
danielebarchiesi@2 202 * Theme pager fields
danielebarchiesi@2 203 */
danielebarchiesi@2 204 function _views_slideshow_preprocess_views_slideshow_pager_fields(&$vars) {
danielebarchiesi@2 205 // Build our javascript settings.
danielebarchiesi@2 206 $js_vars = array(
danielebarchiesi@2 207 'viewsSlideshowPagerFields' => array(
danielebarchiesi@2 208 $vars['vss_id'] => array(
danielebarchiesi@2 209 $vars['location'] => array(
danielebarchiesi@2 210 'activatePauseOnHover' => $vars['settings']['views_slideshow_pager_fields_hover'],
danielebarchiesi@2 211 ),
danielebarchiesi@2 212 ),
danielebarchiesi@2 213 ),
danielebarchiesi@2 214 );
danielebarchiesi@2 215
danielebarchiesi@2 216 // Add the settings to the page.
danielebarchiesi@2 217 drupal_add_js($js_vars, 'setting');
danielebarchiesi@2 218
danielebarchiesi@2 219 // Add hover intent library
danielebarchiesi@2 220 if ($vars['settings']['views_slideshow_pager_fields_hover']) {
danielebarchiesi@2 221 if (module_exists('libraries')) {
danielebarchiesi@2 222 // Load jQuery hoverIntent
danielebarchiesi@2 223 $hoverIntent_path = libraries_get_path('jquery.hoverIntent');
danielebarchiesi@2 224 if (!empty($hoverIntent_path) && file_exists($hoverIntent_path . '/jquery.hoverIntent.js')) {
danielebarchiesi@2 225 drupal_add_js($hoverIntent_path . '/jquery.hoverIntent.js');
danielebarchiesi@2 226 }
danielebarchiesi@2 227 }
danielebarchiesi@2 228 }
danielebarchiesi@2 229
danielebarchiesi@2 230 $vars['classes_array'][] = $vars['attributes']['class'];
danielebarchiesi@2 231 $vars['widget_id'] = $vars['attributes']['id'];
danielebarchiesi@2 232 // Add our class to the wrapper.
danielebarchiesi@2 233 $vars['classes_array'][] = 'views_slideshow_pager_field';
danielebarchiesi@2 234
danielebarchiesi@2 235 // Render all the fields unless there is only 1 slide and the user specified
danielebarchiesi@2 236 // to hide them when there is only one slide.
danielebarchiesi@2 237 $vars['rendered_field_items'] = '';
danielebarchiesi@2 238 if (empty($vars['settings']['hide_on_single_slide']) && count($vars['view']->result) > 1) {
danielebarchiesi@2 239 foreach ($vars['view']->result as $count => $node) {
danielebarchiesi@2 240 $rendered_fields = '';
danielebarchiesi@2 241 foreach ($vars['settings']['views_slideshow_pager_fields_fields'] as $field => $use) {
danielebarchiesi@2 242 if ($use !== 0 && is_object($vars['view']->field[$field])) {
danielebarchiesi@2 243 $rendered_fields .= theme('views_slideshow_pager_field_field', array('view' => $vars['view'], 'field' => $field, 'count' => $count));
danielebarchiesi@2 244 }
danielebarchiesi@2 245 }
danielebarchiesi@2 246 $vars['rendered_field_items'] .= theme('views_slideshow_pager_field_item', array('vss_id' => $vars['vss_id'], 'item' => $rendered_fields, 'count' => $count, 'location' => $vars['location']));
danielebarchiesi@2 247 }
danielebarchiesi@2 248 }
danielebarchiesi@2 249 }
danielebarchiesi@2 250
danielebarchiesi@2 251 /**
danielebarchiesi@2 252 * Views Slideshow: pager item.
danielebarchiesi@2 253 *
danielebarchiesi@2 254 * @ingroup themeable
danielebarchiesi@2 255 */
danielebarchiesi@2 256 function _views_slideshow_preprocess_views_slideshow_pager_field_item(&$vars) {
danielebarchiesi@2 257 $vars['classes_array'][] = 'views_slideshow_pager_field_item';
danielebarchiesi@2 258 if (!$vars['count']) {
danielebarchiesi@2 259 $vars['classes_array'][] = 'views_slideshow_active_pager_field_item';
danielebarchiesi@2 260 }
danielebarchiesi@2 261 $vars['classes_array'][] = ($vars['count'] % 2) ? 'views-row-even' : 'views-row-odd';
danielebarchiesi@2 262 }
danielebarchiesi@2 263
danielebarchiesi@2 264 /**
danielebarchiesi@2 265 * Views Slideshow: Controls.
danielebarchiesi@2 266 *
danielebarchiesi@2 267 * @inggroup themeable
danielebarchiesi@2 268 */
danielebarchiesi@2 269 function theme_views_slideshow_controls_widget_render($vars) {
danielebarchiesi@2 270 // Add javascript settings for the controls type.
danielebarchiesi@2 271 $js_vars = array(
danielebarchiesi@2 272 'viewsSlideshowControls' => array(
danielebarchiesi@2 273 $vars['vss_id'] => array(
danielebarchiesi@2 274 $vars['location'] => array(
danielebarchiesi@2 275 'type' => preg_replace('/_(.?)/e',"strtoupper('$1')", $vars['settings']['type']),
danielebarchiesi@2 276 ),
danielebarchiesi@2 277 ),
danielebarchiesi@2 278 ),
danielebarchiesi@2 279 );
danielebarchiesi@2 280
danielebarchiesi@2 281 drupal_add_js($js_vars, 'setting');
danielebarchiesi@2 282
danielebarchiesi@2 283 $output = '';
danielebarchiesi@2 284 if (empty($vars['settings']['hide_on_single_slide']) && count($vars['rows']) > 1) {
danielebarchiesi@2 285 $output = theme($vars['settings']['type'], array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings'], 'location' => $vars['location'], 'rows' => $vars['rows']));
danielebarchiesi@2 286 }
danielebarchiesi@2 287
danielebarchiesi@2 288 return $output;
danielebarchiesi@2 289 }
danielebarchiesi@2 290
danielebarchiesi@2 291 /**
danielebarchiesi@2 292 * The slideshow controls.
danielebarchiesi@2 293 *
danielebarchiesi@2 294 * @ingroup themeable
danielebarchiesi@2 295 */
danielebarchiesi@2 296 function _views_slideshow_preprocess_views_slideshow_controls_text(&$vars) {
danielebarchiesi@2 297 $module_path = drupal_get_path('module', 'views_slideshow');
danielebarchiesi@2 298 drupal_add_css($module_path . '/views_slideshow_controls_text.css', array('type' => 'file'));
danielebarchiesi@2 299
danielebarchiesi@2 300 $vars['classes_array'][] = 'views_slideshow_controls_text';
danielebarchiesi@2 301
danielebarchiesi@2 302 $vars['rendered_control_previous'] = theme('views_slideshow_controls_text_previous', array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings']));
danielebarchiesi@2 303
danielebarchiesi@2 304 $vars['rendered_control_pause'] = theme('views_slideshow_controls_text_pause', array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings']));
danielebarchiesi@2 305
danielebarchiesi@2 306 $vars['rendered_control_next'] = theme('views_slideshow_controls_text_next', array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings']));
danielebarchiesi@2 307 }
danielebarchiesi@2 308
danielebarchiesi@2 309 /**
danielebarchiesi@2 310 * Views Slideshow: "previous" control.
danielebarchiesi@2 311 *
danielebarchiesi@2 312 * @ingroup themeable
danielebarchiesi@2 313 */
danielebarchiesi@2 314 function _views_slideshow_preprocess_views_slideshow_controls_text_previous(&$vars) {
danielebarchiesi@2 315 $vars['classes_array'][] = 'views_slideshow_controls_text_previous';
danielebarchiesi@2 316 }
danielebarchiesi@2 317
danielebarchiesi@2 318 /**
danielebarchiesi@2 319 * Views Slideshow: "pause" control.
danielebarchiesi@2 320 *
danielebarchiesi@2 321 * @ingroup themeable
danielebarchiesi@2 322 */
danielebarchiesi@2 323 function _views_slideshow_preprocess_views_slideshow_controls_text_pause(&$vars) {
danielebarchiesi@2 324 $vars['classes_array'][] = 'views_slideshow_controls_text_pause';
danielebarchiesi@2 325 $vars['start_text'] = t('Pause');
danielebarchiesi@2 326 }
danielebarchiesi@2 327
danielebarchiesi@2 328 /**
danielebarchiesi@2 329 * Views Slideshow: "next" control.
danielebarchiesi@2 330 *
danielebarchiesi@2 331 * @ingroup themeable
danielebarchiesi@2 332 */
danielebarchiesi@2 333 function _views_slideshow_preprocess_views_slideshow_controls_text_next(&$vars) {
danielebarchiesi@2 334 $vars['classes_array'][] = 'views_slideshow_controls_text_next';
danielebarchiesi@2 335 }
danielebarchiesi@2 336
danielebarchiesi@2 337 /**
danielebarchiesi@2 338 * Views Slideshow: Slide Counter.
danielebarchiesi@2 339 *
danielebarchiesi@2 340 * @inggroup themeable
danielebarchiesi@2 341 */
danielebarchiesi@2 342 function theme_views_slideshow_slide_counter_widget_render($vars) {
danielebarchiesi@2 343 return theme('views_slideshow_slide_counter', array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings'], 'location' => $vars['location'], 'rows' => $vars['rows']));
danielebarchiesi@2 344 }
danielebarchiesi@2 345
danielebarchiesi@2 346 /**
danielebarchiesi@2 347 * Views Slideshow: slide counter.
danielebarchiesi@2 348 */
danielebarchiesi@2 349 function _views_slideshow_preprocess_views_slideshow_slide_counter(&$vars) {
danielebarchiesi@2 350 $vars['classes_array'][] = 'views_slideshow_slide_counter';
danielebarchiesi@2 351 }