
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
<?php
/**
 * Shortcode Tabs config
 *
 * @link       https://codesupply.co/plugins/basic-shortcodes/
 * @since      1.0.0
 *
 * @package    Basic Shortcodes
 * @subpackage Templates
 */

/**
 * Tabs
 */
bsc_register_shortcode( array(
	'name'			=> 'tabs',
	'title'			=> esc_html__( 'Tabs', 'basic-shortcodes' ),
	'priority'		=> 40,
	'base'			=> 'bsc_tabs',
	'autoregister'	=> true,
	'fields' 		=> array(
		array(
			'type'		=> 'section',
			'label'		=> esc_html__( 'Options', 'basic-shortcodes' ),
		),
		array(
			'type'		=> 'radio',
			'name'		=> 'type',
			'label'		=> esc_html__( 'Type', 'basic-shortcodes' ),
			'style'		=> 'horizontal',
			'default'	=> 'tabs',
			'options'	=> array(
				'tabs'		=> esc_html__( 'Tabs', 'basic-shortcodes' ),
				'pills'		=> esc_html__( 'Pills', 'basic-shortcodes' ),
			),
		),
		array(
			'type'		=> 'radio',
			'name'		=> 'nav',
			'label'		=> esc_html__( 'Navigation type', 'basic-shortcodes' ),
			'style'		=> 'horizontal',
			'default'	=> 'horizontal',
			'options'	=> array(
				'horizontal'	=> esc_html__( 'Horizontal', 'basic-shortcodes' ),
				'vertical'		=> esc_html__( 'Vertical', 'basic-shortcodes' ),
			),
		),
		array(
			'type'		=> 'section',
			'label'		=> esc_html__( 'Content', 'basic-shortcodes' ),
		),
		array(
			'type'			=> 'repeater',
			'base'			=> 'bsc_tab',
			'autoregister'	=> true,
			'label'			=> esc_html__( 'Tabs', 'basic-shortcodes' ),
			'fields'		=> array(
				array(
					'type'		=> 'input',
					'name'		=> 'title',
					'label'		=> esc_html__( 'Title', 'basic-shortcodes' ),
					'default'	=> '',
					'attrs'		=> array(
						'class'	=> 'widefat',
					),
				),
				array(
					'type'		=> 'content',
					'name'		=> 'content',
					'label'		=> esc_html__( 'Content', 'basic-shortcodes' ),
					'default'	=> '',
					'attrs'		=> array(
						'class'	=> 'widefat',
						'rows'  => 6,
					),
				),
			),
		),
	),
) );


/**
 * Tabs Wrap Shortcode
 *
 * @param array  $output    Shortcode HTML.
 * @param array  $atts      User defined attributes in shortcode tag.
 * @param string $content   Shorcode tag content.
 * @return string           Shortcode result HTML.
 */
function bsc_tabs_shortcode( $output, $atts, $content ) {
	global $bsc_tabs;
	if ( ! is_array( $bsc_tabs ) ) {
		$bsc_tabs = array();
	}

	// Output.
	$nav_items  = '';
	$pane_items = '';
	$num        = 1;

	foreach ( $bsc_tabs as $tab ) {
		$data_toggle = ( 'tabs' === $atts['type'] ) ? 'tab' : 'pill';
		$item_id     = uniqid();
		$content_id  = $data_toggle . '-' . $item_id;

		$nav_items .= sprintf(
			'<li class="nav-item"><a class="nav-link%s" data-toggle="%s" href="#%s">%s</a></li>',
			( 1 === $num ) ? ' active' : '',
			$data_toggle,
			$content_id,
			$tab['title']
		);

		$pane_items .= sprintf(
			'<div id="%s" class="tab-pane fade%s" role="tabpanel">%s</div>',
			$content_id,
			( 1 === $num ) ? ' show active' : '',
			$tab['content']
		);

		$num++;
	}

	// Reset Tabs.
	$bsc_tabs = array();

	// Tabs Output.
	$output  = '';
	$output .= '<div class="bsc-tabs tabs-' . $atts['nav'] . '">';

	if ( 'vertical' === $atts['nav'] ) {
		$output .= '<div class="row">';
		$output .= '<div class="col-md-3"><ul class="nav nav-' . $atts['type'] . '" role="tablist">' . $nav_items . '</ul></div>';
		$output .= '<div class="col-md-9"><div class="tab-content">' . $pane_items . '</div></div>';
		$output .= '</div>';
	} else {
		$output .= '<ul class="nav nav-' . $atts['type'] . '" role="tablist">' . $nav_items . '</ul>';
		$output .= '<div class="tab-content">' . $pane_items . '</div>';
	}

	$output .= '</div>';

	return $output;
}
add_filter( 'bsc_tabs_shortcode', 'bsc_tabs_shortcode', 10, 3 );


/**
 * Tab Item Shortcode
 *
 * @param array  $output    Shortcode HTML.
 * @param array  $atts      User defined attributes in shortcode tag.
 * @param string $content   Shorcode tag content.
 * @return string           Shortcode result HTML.
 */
function bsc_tab_shortcode( $output, $atts, $content ) {
	global $bsc_tabs;
	if ( ! is_array( $bsc_tabs ) ) {
		$bsc_tabs = array();
	}

	$bsc_tabs[] = array(
		'title'		=> $atts['title'],
		'content'	=> $content,
	);

	return false;
}
add_filter( 'bsc_tab_shortcode', 'bsc_tab_shortcode', 10, 3 );
