Example #1
0
/**
 * Slider Shortcode Handler
 */
function youxi_shortcode_slider_cb($atts, $content, $tag)
{
    extract($atts, EXTR_SKIP);
    $controls = (array) explode(',', $controls);
    $behaviors = (array) explode(',', $behaviors);
    $id = esc_attr('carousel-' . Youxi_Shortcode::read_counter($tag));
    $attributes = array('id' => $id, 'class' => 'carousel', 'data-interval' => $interval);
    if (in_array('pause', $behaviors)) {
        $attributes['data-pause'] = 'hover';
    }
    if (in_array('wrap', $behaviors)) {
        $attributes['data-wrap'] = true;
    }
    $html = '';
    foreach ($attributes as $key => $val) {
        $html .= " {$key}=\"" . esc_attr($val) . "\"";
    }
    $o = "<div{$html}>";
    /* Reset slide index */
    Youxi_Shortcode::reset_counter('slide');
    /* Carousel Content */
    $slide_content = '<div class="carousel-inner">';
    $slide_content .= do_shortcode($content);
    $slide_content .= '</div>';
    $amount = Youxi_Shortcode::read_counter('slide');
    /* Carousel Pagers */
    $pagers = '';
    $arrows = '';
    foreach ($controls as $control) {
        switch ($control) {
            case 'pagers':
                if ($amount > 0) {
                    $pagers .= '<ol class="carousel-indicators">';
                    for ($i = 0; $i < $amount; $i++) {
                        $pagers .= '<li data-target="#' . esc_attr($id) . '" data-slide-to="' . esc_attr($i) . '"';
                        if (0 == $i) {
                            $pagers .= ' class="active"';
                        }
                        $pagers .= '></li>';
                    }
                    $pagers .= '</ol>';
                }
                break;
            case 'arrows':
                $arrows .= '<a class="left carousel-control" href="#' . esc_attr($id) . '" data-slide="prev">';
                $arrows .= '<span class="glyphicon glyphicon-chevron-left"></span>';
                $arrows .= '</a>';
                $arrows .= '<a class="right carousel-control" href="#' . esc_attr($id) . '" data-slide="next">';
                $arrows .= '<span class="glyphicon glyphicon-chevron-right"></span>';
                $arrows .= '</a>';
        }
    }
    $o .= $pagers;
    $o .= $slide_content;
    $o .= $arrows;
    $o .= '</div>';
    return $o;
}
Example #2
0
/**
 * Tabs Shortcode Handler
 */
function youxi_shortcode_tabs_cb($atts, $content, $tag)
{
    $o = '';
    $tabs = Youxi_Shortcode::to_array($content, true);
    if (is_array($tabs) && !empty($tabs)) {
        /* Reset the tab_content index */
        Youxi_Shortcode::reset_counter('tab');
        $o .= '<ul class="nav nav-' . esc_attr($atts['type']) . '">';
        foreach ($tabs as $index => $tab) {
            if (isset($tab['tag'], $tab['atts']) && Youxi_Shortcode::prefix('tab') == $tab['tag']) {
                extract($tab['atts']);
                $tab_id = sanitize_key($title . Youxi_Shortcode::read_counter($tag) . $index);
                $o .= '<li' . ($index == 0 ? ' class="active"' : '') . '>';
                $o .= '<a href="#' . esc_attr($tab_id) . '" data-toggle="tab">';
                $o .= $title;
                $o .= '</a>';
                $o .= '</li>';
            }
        }
        $o .= '</ul>';
        $o .= '<div class="tab-content">';
        $o .= do_shortcode($content);
        $o .= '</div>';
    }
    return $o;
}