first commit
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
<?php
|
||||
/**
|
||||
* Shortcode Tabs config
|
||||
*
|
||||
* @package Powerkit
|
||||
* @subpackage Templates
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tabs
|
||||
*/
|
||||
powerkit_basic_shortcodes_register( array(
|
||||
'name' => 'tabs',
|
||||
'title' => esc_html__( 'Tabs', 'powerkit' ),
|
||||
'priority' => 40,
|
||||
'base' => 'powerkit_tabs',
|
||||
'autoregister' => true,
|
||||
'fields' => array(
|
||||
array(
|
||||
'type' => 'section',
|
||||
'label' => esc_html__( 'Options', 'powerkit' ),
|
||||
),
|
||||
array(
|
||||
'type' => 'radio',
|
||||
'name' => 'type',
|
||||
'label' => esc_html__( 'Type', 'powerkit' ),
|
||||
'style' => 'horizontal',
|
||||
'default' => 'tabs',
|
||||
'options' => array(
|
||||
'tabs' => esc_html__( 'Tabs', 'powerkit' ),
|
||||
'pills' => esc_html__( 'Pills', 'powerkit' ),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'radio',
|
||||
'name' => 'nav',
|
||||
'label' => esc_html__( 'Navigation type', 'powerkit' ),
|
||||
'style' => 'horizontal',
|
||||
'default' => 'horizontal',
|
||||
'options' => array(
|
||||
'horizontal' => esc_html__( 'Horizontal', 'powerkit' ),
|
||||
'vertical' => esc_html__( 'Vertical', 'powerkit' ),
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'section',
|
||||
'label' => esc_html__( 'Content', 'powerkit' ),
|
||||
),
|
||||
array(
|
||||
'type' => 'repeater',
|
||||
'base' => 'powerkit_tab',
|
||||
'autoregister' => true,
|
||||
'label' => esc_html__( 'Tabs', 'powerkit' ),
|
||||
'fields' => array(
|
||||
array(
|
||||
'type' => 'input',
|
||||
'name' => 'title',
|
||||
'label' => esc_html__( 'Title', 'powerkit' ),
|
||||
'default' => '',
|
||||
'attrs' => array(
|
||||
'class' => 'widefat',
|
||||
),
|
||||
),
|
||||
array(
|
||||
'type' => 'content',
|
||||
'name' => 'content',
|
||||
'label' => esc_html__( 'Content', 'powerkit' ),
|
||||
'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 powerkit_basic_shortcodes_tabs( $output, $atts, $content ) {
|
||||
global $powerkit_basic_shortcodes_tabs;
|
||||
if ( ! is_array( $powerkit_basic_shortcodes_tabs ) ) {
|
||||
$powerkit_basic_shortcodes_tabs = array();
|
||||
}
|
||||
|
||||
// Output.
|
||||
$nav_items = '';
|
||||
$pane_items = '';
|
||||
$num = 1;
|
||||
|
||||
foreach ( $powerkit_basic_shortcodes_tabs as $tab ) {
|
||||
$data_toggle = ( 'tabs' === $atts['type'] ) ? 'tab' : 'pill';
|
||||
$item_id = uniqid();
|
||||
$content_id = $data_toggle . '-' . $item_id;
|
||||
|
||||
$nav_items .= sprintf(
|
||||
'<li class="pk-nav-item"><a class="pk-nav-link%s pk-font-heading" data-toggle="%s" href="#%s">%s</a></li>',
|
||||
( 1 === $num ) ? ' pk-active' : '',
|
||||
$data_toggle,
|
||||
$content_id,
|
||||
$tab['title']
|
||||
);
|
||||
|
||||
$pane_items .= sprintf(
|
||||
'<div id="%s" class="pk-tab-pane pk-fade%s" role="tabpanel">%s</div>',
|
||||
$content_id,
|
||||
( 1 === $num ) ? ' pk-show pk-active' : '',
|
||||
$tab['content']
|
||||
);
|
||||
|
||||
$num++;
|
||||
}
|
||||
|
||||
// Reset Tabs.
|
||||
$powerkit_basic_shortcodes_tabs = array();
|
||||
|
||||
// Tabs Output.
|
||||
$output = '';
|
||||
$output .= '<div class="pk-tabs pk-tabs-' . $atts['nav'] . '">';
|
||||
$output .= '<div class="pk-tabs-container">';
|
||||
$output .= '<div class="pk-tabs-navigation"><ul class="pk-nav pk-nav-' . $atts['type'] . '" role="tablist">' . $nav_items . '</ul></div>';
|
||||
$output .= '<div class="pk-tabs-content"><div class="pk-tab-content">' . $pane_items . '</div></div>';
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
add_filter( 'powerkit_tabs_shortcode', 'powerkit_basic_shortcodes_tabs', 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 powerkit_basic_shortcodes_tab( $output, $atts, $content ) {
|
||||
global $powerkit_basic_shortcodes_tabs;
|
||||
if ( ! is_array( $powerkit_basic_shortcodes_tabs ) ) {
|
||||
$powerkit_basic_shortcodes_tabs = array();
|
||||
}
|
||||
|
||||
$powerkit_basic_shortcodes_tabs[] = array(
|
||||
'title' => $atts['title'],
|
||||
'content' => $content,
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
add_filter( 'powerkit_tab_shortcode', 'powerkit_basic_shortcodes_tab', 10, 3 );
|
||||
Reference in New Issue
Block a user