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

/**
 * Collapsibles
 */
bsc_register_shortcode( array(
	'name'			=> 'collapsibles',
	'title'			=> esc_html__( 'Collapsibles', 'basic-shortcodes' ),
	'priority'		=> 50,
	'base'			=> 'bsc_collapsibles',
	'autoregister'	=> true,
	'fields' 		=> array(
		array(
			'type'		=> 'section',
			'label'		=> esc_html__( 'Content', 'basic-shortcodes' ),
		),
		array(
			'type'			=> 'repeater',
			'base'			=> 'bsc_collapsible',
			'autoregister'	=> true,
			'label'			=> esc_html__( 'Collapsibles', '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,
					),
				),
				array(
					'type'		=> 'checkbox',
					'name'		=> 'opened',
					'label'		=> esc_html__( 'Opened', 'basic-shortcodes' ),
					'default'	=> false,
				),
			),
		),
	),
) );


/**
 * Collapsibles 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_collapsibles_shortcode( $output, $atts, $content ) {

	$collapse_id = uniqid();
	$output  = sprintf(
		'<div id="collapsibles-%1$s" class="bsc-collapsibles" role="tablist" aria-multiselectable="true">%2$s</div>
		',
		$collapse_id,
		str_replace( 'data-parent="#"', 'data-parent="#collapsibles-' . $collapse_id . '"' , $content )
	);

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


/**
 * Collapsible 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_collapsible_shortcode( $output, $atts, $content ) {

	$item_id = uniqid();
	$output  = sprintf(
		'<div class="bsc-collapsible card">
			<div class="card-header" role="tab" id="card-%1$s">
				<h5>
					<a data-toggle="collapse" href="#collapse-%1$s" data-parent="#" aria-expanded="true" aria-controls="collapse-%1$s">
						%2$s
					</a>
				</h5>
			</div>

			<div id="collapse-%1$s" class="collapse%3$s" role="tabpanel" aria-labelledby="card-%1$s">
				<div class="card-body">
					%4$s
				</div>
			</div>
		</div>
		',
		$item_id,
		$atts['title'],
		( 'true' === $atts['opened'] ) ? ' show' : '',
		do_shortcode( $content )
	);

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