danielebarchiesi@2: $slideshow_info) { danielebarchiesi@2: $main_frame_module = $slideshow_id; danielebarchiesi@2: break; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Make sure the main slideshow settings are defined before building the danielebarchiesi@2: // slideshow. danielebarchiesi@2: if (empty($main_frame_module)) { danielebarchiesi@2: drupal_set_message(t('No main frame module is enabled for views slideshow.'), 'error'); danielebarchiesi@2: } danielebarchiesi@2: elseif (empty($options[$main_frame_module])) { danielebarchiesi@2: drupal_set_message(t('The options for !module does not exists.', array('!module' => $main_frame_module)), 'error'); danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $settings = $options[$main_frame_module]; danielebarchiesi@2: $view = $vars['view']; danielebarchiesi@2: $rows = $vars['rows']; danielebarchiesi@2: $num_divs = count($rows); danielebarchiesi@2: $vss_id = $view->name . '-' . $view->current_display; danielebarchiesi@2: danielebarchiesi@2: // Give each slideshow a unique id if there are more than one on the page. danielebarchiesi@2: static $instances = array(); danielebarchiesi@2: if (isset($instances[$vss_id])) { danielebarchiesi@2: $instances[$vss_id]++; danielebarchiesi@2: $vss_id .= "_" . $instances[$vss_id]; danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $instances[$vss_id] = 1; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Building our default methods. danielebarchiesi@2: $methods = array( danielebarchiesi@2: 'goToSlide' => array(), danielebarchiesi@2: 'nextSlide' => array(), danielebarchiesi@2: 'pause' => array(), danielebarchiesi@2: 'play' => array(), danielebarchiesi@2: 'previousSlide' => array(), danielebarchiesi@2: 'transitionBegin' => array(), danielebarchiesi@2: 'transitionEnd' => array(), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: // Pull all widget info and slideshow info and merge them together. danielebarchiesi@2: $widgets = module_invoke_all('views_slideshow_widget_info'); danielebarchiesi@2: $slideshows = module_invoke_all('views_slideshow_slideshow_info'); danielebarchiesi@2: $addons = array_merge($widgets, $slideshows); danielebarchiesi@2: danielebarchiesi@2: // Loop through all the addons and call their methods if needed. danielebarchiesi@2: foreach ($addons as $addon_id => $addon_info) { danielebarchiesi@2: foreach ($addon_info['accepts'] as $imp_key => $imp_value) { danielebarchiesi@2: if (is_array($imp_value)) { danielebarchiesi@2: $methods[$imp_key][] = preg_replace('/_(.?)/e',"strtoupper('$1')", $addon_id); danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $methods[$imp_value][] = preg_replace('/_(.?)/e',"strtoupper('$1')", $addon_id); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: $js_settings = array( danielebarchiesi@2: 'viewsSlideshow' => array( danielebarchiesi@2: $vss_id => array( danielebarchiesi@2: 'methods' => $methods, danielebarchiesi@2: 'paused' => 0, danielebarchiesi@2: ) danielebarchiesi@2: ) danielebarchiesi@2: ); danielebarchiesi@2: drupal_add_js($js_settings, 'setting'); danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Process Skins danielebarchiesi@2: */ danielebarchiesi@2: $skin_info = array(); danielebarchiesi@2: if (isset($options['skin_info'])) { danielebarchiesi@2: $skin_info = $options['skin_info']; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Make sure $skin_info has all the values. danielebarchiesi@2: $skin_info += array( danielebarchiesi@2: 'class' => 'default', danielebarchiesi@2: 'name' => t('Untitled skin'), danielebarchiesi@2: 'module' => 'views_slideshow', danielebarchiesi@2: 'path' => '', danielebarchiesi@2: 'stylesheets' => array(), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: $vars['skin'] = $skin_info['class']; danielebarchiesi@2: danielebarchiesi@2: // Enqueue any stylesheets set for the skin on this view are added. danielebarchiesi@2: $skin_path = drupal_get_path('module', $skin_info['module']); danielebarchiesi@2: if ($skin_info['path']) { danielebarchiesi@2: $skin_path .= '/' . $skin_info['path']; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Add stylesheet. danielebarchiesi@2: if (!empty($skin_info['stylesheets'])) { danielebarchiesi@2: foreach ($skin_info['stylesheets'] as $stylesheet) { danielebarchiesi@2: drupal_add_css($skin_path . '/' . $stylesheet); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Process Widgets danielebarchiesi@2: */ danielebarchiesi@2: danielebarchiesi@2: // Build weights danielebarchiesi@2: for ($i = 1; $i <= count($widgets); $i++) { danielebarchiesi@2: $weight['top'][$i] = ''; danielebarchiesi@2: $weight['bottom'][$i] = ''; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: foreach ($widgets as $widget_id => $widget_name) { danielebarchiesi@2: // Put our widgets in the right location. danielebarchiesi@2: if ($options['widgets']['top'][$widget_id]['enable']) { danielebarchiesi@2: $widget_weight = ($options['widgets']['top'][$widget_id]['weight'] > count($widgets)) ? count($widgets) : $options['widgets']['top'][$widget_id]['weight']; danielebarchiesi@2: $weight['top'][$widget_weight][] = $widget_id; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: if ($options['widgets']['bottom'][$widget_id]['enable']) { danielebarchiesi@2: $widget_weight = ($options['widgets']['bottom'][$widget_id]['weight'] > count($widgets)) ? count($widgets) : $options['widgets']['bottom'][$widget_id]['weight']; danielebarchiesi@2: $weight['bottom'][$widget_weight][] = $widget_id; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Build our widgets danielebarchiesi@2: foreach ($weight as $location => $order) { danielebarchiesi@2: $vars[$location . '_widget_rendered'] = ''; danielebarchiesi@2: foreach ($order as $order_num => $widgets) { danielebarchiesi@2: if (is_array($widgets)) { danielebarchiesi@2: foreach ($widgets as $widget_id) { danielebarchiesi@2: $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: $vars[$location . '_widget_rendered'] .= $vars[$widget_id . '_' . $location]; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Process Slideshow danielebarchiesi@2: */ danielebarchiesi@2: $slides = theme($main_frame_module . '_main_frame', array('vss_id' => $vss_id, 'view' => $view, 'settings' => $settings, 'rows' => $rows)); danielebarchiesi@2: $vars['slideshow'] = theme('views_slideshow_main_section', array('vss_id' => $vss_id, 'slides' => $slides, 'plugin' => $main_frame_module)); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * The current element of the slideshow. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function theme_views_slideshow_main_section($vars) { danielebarchiesi@2: return '
'; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: pager. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function theme_views_slideshow_pager_widget_render($vars) { danielebarchiesi@2: // Add javascript settings for the pager type. danielebarchiesi@2: $js_vars = array( danielebarchiesi@2: 'viewsSlideshowPager' => array( danielebarchiesi@2: $vars['vss_id'] => array( danielebarchiesi@2: $vars['location'] => array( danielebarchiesi@2: 'type' => preg_replace('/_(.?)/e',"strtoupper('$1')", $vars['settings']['type']), danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: drupal_add_js($js_vars, 'setting'); danielebarchiesi@2: danielebarchiesi@2: // Create some attributes danielebarchiesi@2: $attributes['class'] = 'widget_pager widget_pager_' . $vars['location']; danielebarchiesi@2: $attributes['id'] = 'widget_pager_' . $vars['location'] . '_' . $vars['vss_id']; danielebarchiesi@2: return theme($vars['settings']['type'], array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings'], 'location' => $vars['location'], 'attributes' => $attributes)); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Theme pager fields danielebarchiesi@2: */ danielebarchiesi@2: function _views_slideshow_preprocess_views_slideshow_pager_fields(&$vars) { danielebarchiesi@2: // Build our javascript settings. danielebarchiesi@2: $js_vars = array( danielebarchiesi@2: 'viewsSlideshowPagerFields' => array( danielebarchiesi@2: $vars['vss_id'] => array( danielebarchiesi@2: $vars['location'] => array( danielebarchiesi@2: 'activatePauseOnHover' => $vars['settings']['views_slideshow_pager_fields_hover'], danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: // Add the settings to the page. danielebarchiesi@2: drupal_add_js($js_vars, 'setting'); danielebarchiesi@2: danielebarchiesi@2: // Add hover intent library danielebarchiesi@2: if ($vars['settings']['views_slideshow_pager_fields_hover']) { danielebarchiesi@2: if (module_exists('libraries')) { danielebarchiesi@2: // Load jQuery hoverIntent danielebarchiesi@2: $hoverIntent_path = libraries_get_path('jquery.hoverIntent'); danielebarchiesi@2: if (!empty($hoverIntent_path) && file_exists($hoverIntent_path . '/jquery.hoverIntent.js')) { danielebarchiesi@2: drupal_add_js($hoverIntent_path . '/jquery.hoverIntent.js'); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: $vars['classes_array'][] = $vars['attributes']['class']; danielebarchiesi@2: $vars['widget_id'] = $vars['attributes']['id']; danielebarchiesi@2: // Add our class to the wrapper. danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_pager_field'; danielebarchiesi@2: danielebarchiesi@2: // Render all the fields unless there is only 1 slide and the user specified danielebarchiesi@2: // to hide them when there is only one slide. danielebarchiesi@2: $vars['rendered_field_items'] = ''; danielebarchiesi@2: if (empty($vars['settings']['hide_on_single_slide']) && count($vars['view']->result) > 1) { danielebarchiesi@2: foreach ($vars['view']->result as $count => $node) { danielebarchiesi@2: $rendered_fields = ''; danielebarchiesi@2: foreach ($vars['settings']['views_slideshow_pager_fields_fields'] as $field => $use) { danielebarchiesi@2: if ($use !== 0 && is_object($vars['view']->field[$field])) { danielebarchiesi@2: $rendered_fields .= theme('views_slideshow_pager_field_field', array('view' => $vars['view'], 'field' => $field, 'count' => $count)); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: $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: } danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: pager item. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function _views_slideshow_preprocess_views_slideshow_pager_field_item(&$vars) { danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_pager_field_item'; danielebarchiesi@2: if (!$vars['count']) { danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_active_pager_field_item'; danielebarchiesi@2: } danielebarchiesi@2: $vars['classes_array'][] = ($vars['count'] % 2) ? 'views-row-even' : 'views-row-odd'; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: Controls. danielebarchiesi@2: * danielebarchiesi@2: * @inggroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function theme_views_slideshow_controls_widget_render($vars) { danielebarchiesi@2: // Add javascript settings for the controls type. danielebarchiesi@2: $js_vars = array( danielebarchiesi@2: 'viewsSlideshowControls' => array( danielebarchiesi@2: $vars['vss_id'] => array( danielebarchiesi@2: $vars['location'] => array( danielebarchiesi@2: 'type' => preg_replace('/_(.?)/e',"strtoupper('$1')", $vars['settings']['type']), danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: ), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: drupal_add_js($js_vars, 'setting'); danielebarchiesi@2: danielebarchiesi@2: $output = ''; danielebarchiesi@2: if (empty($vars['settings']['hide_on_single_slide']) && count($vars['rows']) > 1) { danielebarchiesi@2: $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: } danielebarchiesi@2: danielebarchiesi@2: return $output; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * The slideshow controls. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function _views_slideshow_preprocess_views_slideshow_controls_text(&$vars) { danielebarchiesi@2: $module_path = drupal_get_path('module', 'views_slideshow'); danielebarchiesi@2: drupal_add_css($module_path . '/views_slideshow_controls_text.css', array('type' => 'file')); danielebarchiesi@2: danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_controls_text'; danielebarchiesi@2: danielebarchiesi@2: $vars['rendered_control_previous'] = theme('views_slideshow_controls_text_previous', array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings'])); danielebarchiesi@2: danielebarchiesi@2: $vars['rendered_control_pause'] = theme('views_slideshow_controls_text_pause', array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings'])); danielebarchiesi@2: danielebarchiesi@2: $vars['rendered_control_next'] = theme('views_slideshow_controls_text_next', array('vss_id' => $vars['vss_id'], 'view' => $vars['view'], 'settings' => $vars['settings'])); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: "previous" control. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function _views_slideshow_preprocess_views_slideshow_controls_text_previous(&$vars) { danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_controls_text_previous'; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: "pause" control. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function _views_slideshow_preprocess_views_slideshow_controls_text_pause(&$vars) { danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_controls_text_pause'; danielebarchiesi@2: $vars['start_text'] = t('Pause'); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: "next" control. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function _views_slideshow_preprocess_views_slideshow_controls_text_next(&$vars) { danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_controls_text_next'; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: Slide Counter. danielebarchiesi@2: * danielebarchiesi@2: * @inggroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function theme_views_slideshow_slide_counter_widget_render($vars) { danielebarchiesi@2: 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: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Views Slideshow: slide counter. danielebarchiesi@2: */ danielebarchiesi@2: function _views_slideshow_preprocess_views_slideshow_slide_counter(&$vars) { danielebarchiesi@2: $vars['classes_array'][] = 'views_slideshow_slide_counter'; danielebarchiesi@2: }