PluginProbe
Easy Bootstrap Shortcode / 3.7
Easy Bootstrap Shortcode v3.7
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
← All changes | shortcode/toggles/plugin_shortcode.php +42 -61 trunk3.7 View file →
@@ -1,9 +1,5 @@
1 1 <?php
2 -if ( ! defined( 'ABSPATH' ) ) {
3 - exit;
4 -}
5 -use EBS\Security\Sanitizer;
6 2
7 3 /* * *********************************************************
8 4 * jQuery UI Accordion (toggles)
9 5 * ********************************************************* */
@@ -9,67 +5,52 @@
9 5 * ********************************************************* */
10 6
11 7 $_oscitas_accordion = array();
12 8
13 -function osc_theme_toggles( $params, $content = null ) {
14 - global $_oscitas_accordion;
9 +function osc_theme_toggles($params, $content = null) {
10 + global $_oscitas_accordion;
11 + extract(shortcode_atts(array(
12 + 'id' => count($_oscitas_accordion),
13 + 'class' => ''
14 + ), $params));
15 + $_oscitas_accordion[$id] = array();
16 + $scontent = do_shortcode($content);
15 17
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;
18 + $output = '';
19 + if (trim($scontent) != '' || count($_oscitas_accordion[$id]['details'])) {
20 + $scontent = isset($_oscitas_accordion[$id]['details']) && is_array($_oscitas_accordion[$id]['details']) ? implode('', $_oscitas_accordion[$id]['details']) : '';
21 + $output .= '<div class="panel-group ' . $class . '" id="oscitas-accordion-' . $id . '">' . $scontent;
22 + $output .= '</div>';
23 + }
24 + return $output;
38 25 }
39 26
40 -ebs_backward_compatibility_callback( 'toggles', 'osc_theme_toggles' );
27 +add_shortcode('toggles', 'osc_theme_toggles');
41 28
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>';
29 +function osc_theme_toggle($params, $content = null) {
30 + global $_oscitas_accordion;
31 + extract(shortcode_atts(array(
32 + 'title' => 'title',
33 + 'class' => ''
34 + ), $params));
35 + $con = do_shortcode($content);
36 + $index = count($_oscitas_accordion) - 1;
37 + $id = 'details-' . $index . '-' . count($_oscitas_accordion[$index]['details']);
38 + $_oscitas_accordion[$index]['details'][] = <<<EOS
39 + <div class="panel panel-default">
40 + <div class="panel-heading">
41 + <h4 class="panel-title">
42 + <a class="accordion-toggle" data-toggle="collapse"
43 + data-parent="#oscitas-accordion-{$index}"
44 + href="#{$id}">
45 + {$title}
46 + </a>
47 + </h4>
48 + </div>
49 + <div id="{$id}" class="panel-collapse collapse {$class}">
50 + <div class="panel-body">{$con}</div>
51 + </div>
52 + </div>
53 +EOS;
73 54 }
74 55
75 -ebs_backward_compatibility_callback( 'toggle', 'osc_theme_toggle' );
56 +add_shortcode('toggle', 'osc_theme_toggle');