/** * Save slide settings metabox data * rli_slideshow_save_slide_meta() * * @todo Extend to detect slide's template and base this on it. * @todo Handle default settings */ function rli_slideshow_save_slide_meta($post_id) { // verify if this is an auto save routine. // If it is our form has not been submitted, so we dont want to do anything if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $post_id; } $slide_settings = get_post_meta($post_id, '_rli_slideshow_slide_settings', true); $template_specs = rli_slideshow_get_slide_template_specifications('default'); foreach ($template_specs as $specification) { switch ($specification['setting_type']) { case 'lookup': break; case 'string': $str = "rli_slideshow_slide_" . $specification['slug']; if (isset($_POST[$str])) { $slide_settings[$specification['slug']] = strip_tags($_POST[$str]); } break; } } // a temporary measure $slide_settings['template'] = 'default'; update_post_meta($post_id, '_rli_slideshow_slide_settings', $slide_settings); }
function rli_slideshow_display_slideshow($slideshow = 'default') { global $post; $slides = rli_slideshow_get_slides(); if ($slides->have_posts()) { // @todo Prepare default slideshow-wide CSS rules, such as default background rules. $slide_output = $slide_styles = ""; // Setup script // @todo make this dynamic and option driven // @todo target the specific slideshow by ID $slide_script = "\n\t\t\t\n<script type='text/javascript'>\n\t\t\t\tjQuery(document).ready(function(\$) {\n\t\t\t\t\t\$('.rli-slideshow').css('display','block').slides({\n\t\t\t\t\t\tplay: 7000,\n\t\t\t\t\t\teffect: 'fade',\n\t\t\t\t\t\tcrossface: true,\n\t\t\t\t\t\thoverPause: true,\n\t\t\t\t\t\tslideSpeed: 400,\n\t\t\t\t\t\tpagination: true,\n\t\t\t\t\t\tgeneratePagination: true,\n\t\t\t\t\t\tcontainer: 'rli-slideshow-container',\n\t\t\t\t\t\tcurrentClass: 'rli-slideshow-current',\n\t\t\t\t\t\tpaginationClass: 'rli-slideshow-pages'\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t</script>\n"; while ($slides->have_posts()) { $slides->the_post(); // Setup output variables $slide_classes = $html = $css = ""; // Load the slide's data $slide_settings = get_post_meta($post->ID, '_rli_slideshow_slide_settings', true); // Get and store the template name. if (!isset($slide_settings['template'])) { $slide_settings['template'] = 'default'; } $slide_template = $slide_settings['template']; // Get the template $template_specs = rli_slideshow_get_slide_template_specifications($slide_template); // @todo ORDER SLIDES // Build the slide content, styles, and classes based on the template and slide data foreach ($template_specs as $setting) { $slug = $setting['slug']; if (!isset($slide_settings[$slug])) { $slide_settings[$slug] = ''; } $html .= rli_slideshow_render_slide_html_from_template($setting, $slide_settings[$slug]); $css .= rli_slideshow_render_slide_css_from_template($setting, $slide_settings[$slug]); $slide_classes .= rli_slideshow_render_slide_class_from_template($setting, $slide_settings[$slug]); } $slide_styles .= $css; $slide_output .= "\n\t\t\t\t<div class='rli-slide rli-slide-" . $post->ID . " {$slide_classes}' >\n\t\t\t\t\t{$html}\n\t\t\t\t</div>\n"; } wp_reset_query(); // echo styles echo "<style type='text/css'>\n{$slide_styles}</style>\n"; // echo html echo "<div class='rli-slideshow' style='display:none;'>\n<div class='rli-slideshow-container'>\n{$slide_output}</div>\n</div>\n"; // echo js echo $slide_script; } }