PluginProbe
Easy Bootstrap Shortcode / trunk
Easy Bootstrap Shortcode vtrunk
trunk 2.4.0 2.5 3.4 3.5 3.6 3.7 4.0.0 4.4 4.5 4.5.4 5.0.0 5.0.1 5.0.2
easy-bootstrap-shortcodes / shortcode / toggles / plugin_shortcode.php

plugin_shortcode.php in Easy Bootstrap Shortcode trunk, at shortcode/toggles/plugin_shortcode.php

76 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit;
4 }
5 use EBS\Security\Sanitizer;
6
7 /* * *********************************************************
8 * jQuery UI Accordion (toggles)
9 * ********************************************************* */
10
11 $_oscitas_accordion = array();
12
13 function osc_theme_toggles( $params, $content = null ) {
14 global $_oscitas_accordion;
15
16 $atts = shortcode_atts(
17 array(
18 'id' => count( $_oscitas_accordion ),
19 'class' => '',
20 ),
21 $params
22 );
23
24 $id = Sanitizer::int( $atts['id'] );
25 $class = Sanitizer::class_list( $atts['class'] );
26
27 $_oscitas_accordion[ $id ] = array();
28 $scontent = do_shortcode( $content );
29
30 $output = '';
31 if ( '' !== trim( $scontent ) || count( $_oscitas_accordion[ $id ]['details'] ) ) {
32 $scontent = isset( $_oscitas_accordion[ $id ]['details'] ) && is_array( $_oscitas_accordion[ $id ]['details'] ) ? implode( '', $_oscitas_accordion[ $id ]['details'] ) : '';
33 $output .= '<div class="panel-group ' . $class . EBS_CONTAINER_CLASS . '" id="oscitas-accordion-' . $id . '">' . $scontent;
34 $output .= '</div>';
35 }
36
37 return $output;
38 }
39
40 ebs_backward_compatibility_callback( 'toggles', 'osc_theme_toggles' );
41
42 function osc_theme_toggle( $params, $content = null ) {
43 global $_oscitas_accordion;
44
45 $atts = shortcode_atts(
46 array(
47 'title' => 'title',
48 'class' => '',
49 ),
50 $params
51 );
52
53 $title = Sanitizer::html( $atts['title'] );
54 $class = Sanitizer::class_list( $atts['class'] );
55 $con = do_shortcode( $content );
56
57 $index = count( $_oscitas_accordion ) - 1;
58 $id = isset( $_oscitas_accordion[ $index ]['details'] ) ? 'details-' . $index . '-' . count( $_oscitas_accordion[ $index ]['details'] ) : 'details-' . $index . '-0';
59
60 $_oscitas_accordion[ $index ]['details'][] =
61 '<div class="panel panel-default' . EBS_CONTAINER_CLASS . '">' .
62 '<div class="panel-heading' . EBS_CONTAINER_CLASS . '">' .
63 '<h4 class="panel-title' . EBS_CONTAINER_CLASS . '">' .
64 '<a class="accordion-toggle' . EBS_CONTAINER_CLASS . ' collapsed" data-toggle="collapse" data-parent="#oscitas-accordion-' . $index . '" href="#' . Sanitizer::attr( $id ) . '">' .
65 $title .
66 '</a>' .
67 '</h4>' .
68 '</div>' .
69 '<div id="' . Sanitizer::attr( $id ) . '" class="panel-collapse collapse ' . $class . EBS_CONTAINER_CLASS . '">' .
70 '<div class="panel-body' . EBS_CONTAINER_CLASS . '">' . $con . '</div>' .
71 '</div>' .
72 '</div>';
73 }
74
75 ebs_backward_compatibility_callback( 'toggle', 'osc_theme_toggle' );
76