function _flexslider_views_slideshow_preprocess_flexslider_views_slideshow_main_frame in Flex Slider 7
FlexSlider Views theme for the main wrapper element
1 call to _flexslider_views_slideshow_preprocess_flexslider_views_slideshow_main_frame()
- template_preprocess_flexslider_views_slideshow_main_frame in flexslider_views_slideshow/
flexslider_views_slideshow.module
File
- flexslider_views_slideshow/
theme/ flexslider_views_slideshow.theme.inc, line 15 - Theme and preprocess functions for Flexslider Views
Code
function _flexslider_views_slideshow_preprocess_flexslider_views_slideshow_main_frame(&$vars) {
// Load the settings, row information, view data and views slideshow ID into
// more conveniently named variables.
$settings = $vars['settings'];
$rows = $vars['rows'];
$view = $vars['view'];
$vss_id = $vars['vss_id'];
// Load the option set data
$optionset = $settings['optionset'];
$settings = flexslider_optionset_load($settings['optionset']);
$settings = $settings->options;
// Cast the strings into int or bool as necessary
$new_settings = array();
foreach ($settings as $key => $value) {
if (is_string($value)) {
$value = str_ireplace("\n", ' ', $value);
$value = trim($value);
// Check for numbers and/or boolean values
if (is_numeric($value)) {
$value = (int) $value;
}
elseif (strtolower($value) == 'true') {
$value = TRUE;
}
elseif (strtolower($value) == 'false') {
$value = FALSE;
}
}
$new_settings[$key] = $value;
}
// Merge the existing settings with the generated ones
$settings = array_merge(array(
'num_divs' => sizeof($rows),
'id_prefix' => '#flexslider_views_slideshow_main_',
//'div_prefix' => '#'
// @todo figure out what the div prefix is used for
'vss_id' => $vss_id,
), $new_settings);
// We need to go through the current js setting values to make sure the one we
// want to add is not already there. If it is already there then append -[num]
// to the id to make it unique.
$slideshow_count = 1;
$current_settings = drupal_add_js();
foreach ($current_settings['settings']['data'] as $current_setting) {
if (isset($current_setting['flexslider_views_slideshow'])) {
$current_keys = array_keys($current_setting['flexslider_views_slideshow']);
if (stristr($current_keys[0], '#flexslider_views_slideshow_main_' . $vss_id)) {
$slideshow_count++;
}
}
}
// Append the new unique IDs if required
if ($slideshow_count > 1) {
$vss_id .= '-' . $slideshow_count;
$settings['vss_id'] = $vss_id;
}
// Load the FlexSlider library for use
flexslider_add();
// Create the settings container
// Due to a limitation inside of views_slideshow, the ID for the settings container
// must end with _main
//
// @see lines 162 through 169 in views_slideshow.theme.inc
drupal_add_js(array(
'flexslider_views_slideshow' => array(
'#flexslider_views_slideshow_main_' . $vss_id => $settings,
),
), 'setting');
// Load the initilization javascript
drupal_add_js(drupal_get_path('module', 'flexslider_views_slideshow') . '/js/flexslider_views_slideshow.js');
// Required container class for FlexSlider
$vars['classes_array'][] = 'slides';
// Render the rows
$rendered_rows = '';
$slideshow_count = 0;
foreach ($rows as $count => $row) {
$items[] = $row;
// @todo see if we can group multiple items per slide
$rendered_rows .= theme('flexslider_views_slideshow_main_frame_row', array(
'vss_id' => $vss_id,
'items' => $items,
'count' => $count,
'view' => $view,
));
// Clear the items array
$items = array();
// Count the number of slides created
$slideshow_count++;
}
// Save the rendered rows
$vars['rendered_rows'] = $rendered_rows;
}