137 lines
4.3 KiB
PHP
137 lines
4.3 KiB
PHP
<?php
|
|
|
|
use Elementor\Frontend;
|
|
use Elementor\Icons_Manager;
|
|
|
|
extract( shortcode_atts( array(
|
|
'accordion_items' => array(),
|
|
'expand_icon' => '',
|
|
'expand_icon_active' => '',
|
|
'accordion_type' => 'accordion',
|
|
'accordion_collapsible' => '',
|
|
'accordion_interactivity' => 'click',
|
|
'equal_height' => '',
|
|
|
|
), $settings ) );
|
|
|
|
$widget_class = 'stratum-advanced-accordion';
|
|
|
|
$class = stratum_css_class([
|
|
$widget_class,
|
|
]);
|
|
|
|
$accordion_options = [
|
|
'accordion_type' => $accordion_type,
|
|
'accordion_collapsible' => ($accordion_collapsible == 'yes'),
|
|
'accordion_interactivity' => $accordion_interactivity,
|
|
'equal_height' => (($equal_height == 'yes' && $accordion_type == 'accordion') ? true : false),
|
|
];
|
|
|
|
$out = "";
|
|
|
|
$frontend = new Frontend;
|
|
|
|
ob_start();
|
|
Icons_Manager::render_icon( $expand_icon, [ 'aria-hidden' => 'true' ] );
|
|
$expand_icon_html = ob_get_clean();
|
|
|
|
ob_start();
|
|
Icons_Manager::render_icon( $expand_icon_active, [ 'aria-hidden' => 'true' ] );
|
|
$expand_icon_active_html = ob_get_clean();
|
|
|
|
$once_active = false;
|
|
?>
|
|
<div class="<?php echo esc_attr( $class ); ?>" data-accordion-options="<?php echo esc_attr( json_encode($accordion_options) ); ?>">
|
|
<div class="<?php echo esc_attr( $widget_class . '__wrapper' ); ?>">
|
|
<?php
|
|
foreach ( $accordion_items as $index => $item ) {
|
|
$current_item = 'elementor-repeater-item-'.$item['_id'];
|
|
|
|
$item_class = stratum_css_class([
|
|
$widget_class . '__item',
|
|
(($item['active'] == 'yes' && $once_active == false) ? 'active-accordion' : ''),
|
|
$current_item
|
|
]);
|
|
|
|
if ($accordion_type == 'accordion' && $item['active'] == 'yes'){
|
|
$once_active = true;
|
|
}
|
|
|
|
ob_start();
|
|
Icons_Manager::render_icon( $item['title_icon'], [ 'aria-hidden' => 'true' ] );
|
|
$title_icon_html = ob_get_clean();
|
|
|
|
ob_start();
|
|
Icons_Manager::render_icon( $item['title_icon_active'], [ 'aria-hidden' => 'true' ] );
|
|
$title_icon_active_html = ob_get_clean();
|
|
|
|
?>
|
|
<div class="<?php echo esc_attr( $item_class ); ?>">
|
|
<div class="<?php echo esc_attr( $widget_class . '__item-header' ); ?>">
|
|
<div class="<?php echo esc_attr( $widget_class . '__title' ); ?>">
|
|
<?php
|
|
if ( ! empty( $title_icon_html ) || ! empty( $title_icon_active_html ) ) {
|
|
?>
|
|
<span class="<?php echo esc_attr( $widget_class . '__title-icon' ); ?>">
|
|
<?php
|
|
if ( ! empty( $title_icon_html ) ) {
|
|
?>
|
|
<span class="normal"><?php echo $title_icon_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped?></span>
|
|
<?php
|
|
}
|
|
|
|
if ( ! empty( $title_icon_active_html ) ) {
|
|
?>
|
|
<span class="active"><?php echo $title_icon_active_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped?></span>
|
|
<?php
|
|
}
|
|
?>
|
|
</span>
|
|
<?php
|
|
}
|
|
|
|
echo esc_html($item['title']);
|
|
?>
|
|
</div>
|
|
<div class="<?php echo esc_attr( $widget_class . '__expand-icon' ); ?>">
|
|
<?php
|
|
if ( ! empty( $expand_icon_html ) ) {
|
|
?>
|
|
<span class="normal"><?php echo $expand_icon_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
|
|
<?php
|
|
}
|
|
|
|
if ( ! empty( $expand_icon_active_html ) ) {
|
|
?>
|
|
<span class="active"><?php echo $expand_icon_active_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
|
|
<?php
|
|
}
|
|
?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="<?php echo esc_attr( $widget_class . '__item-content' ); ?>">
|
|
<div class="<?php echo esc_attr( $widget_class . '__item-wrapper' ); ?>">
|
|
<div class="<?php echo esc_attr( $widget_class . '__item-content-overlay' ); ?>"></div>
|
|
<div class="<?php echo esc_attr( $widget_class . '__text' ); ?>">
|
|
<?php
|
|
if ( $item['content_type'] == 'text' ) {
|
|
if ( !empty($item['text']) ) {
|
|
echo wp_kses_post( $item['text'] );
|
|
}
|
|
} elseif ( $item['content_type'] == 'template' ) {
|
|
if ( !empty($item['accordion_template']) ) {
|
|
echo $frontend->get_builder_content($item['accordion_template'], true); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
|
}
|
|
}
|
|
?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
?>
|
|
</div>
|
|
</div>
|