PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / trunk
Shortcodes and extra features for Phlox theme vtrunk
2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / includes / elements / accordion.php
auxin-elements / includes / elements Last commit date
about-widget.php 5 months ago accordion-widget.php 1 month ago accordion.php 5 months ago attachment-url.php 5 months ago audio.php 5 months ago before-after.php 5 months ago button.php 5 months ago code.php 5 months ago contact-box.php 5 months ago contact-form.php 5 months ago custom-list.php 5 months ago divider.php 5 months ago dropcap.php 5 months ago facebook.php 5 months ago flickr.php 5 months ago gallery.php 5 months ago gmap.php 5 months ago highlight.php 5 months ago image.php 5 months ago instagram-feed.php 5 months ago latest-posts-slider.php 5 months ago popular-posts-widget.php 5 months ago products-grid.php 5 months ago quote.php 5 months ago recent-posts-grid-carousel.php 5 months ago recent-posts-land-style.php 5 months ago recent-posts-masonry.php 5 months ago recent-posts-tiles-carousel.php 5 months ago recent-posts-tiles.php 5 months ago recent-posts-timeline.php 5 months ago recent-posts-widget.php 5 months ago recent-products.php 5 months ago related-posts.php 8 years ago sample-element.php 5 months ago search.php 5 months ago socials-list.php 5 months ago staff.php 5 months ago tab-widget.php 5 months ago tabs.php 5 months ago testimonial.php 5 months ago text.php 5 months ago touch-slider.php 5 months ago video.php 5 months ago
accordion.php
212 lines
1 <?php
2 /**
3 * Accordion element if site origin bundle plugin is activaited
4 *
5 *
6 * @package Auxin
7 * @license LICENSE.txt
8 * @author averta
9 * @link http://phlox.pro/
10 * @copyright (c) 2010-2026 averta
11 */
12
13 function auxin_get_new_accordion_master_array( $master_array ) {
14
15 $master_array['aux_accordion'] = array(
16 'name' => __('Accordion ', 'auxin-elements'),
17 'auxin_output_callback' => 'auxin_widget_accordion_callback',
18 'base' => 'aux_accordion',
19 'description' => __('Collapsible content', 'auxin-elements'),
20 'class' => 'aux-widget-accordion widget-toggle',
21 'show_settings_on_create' => true,
22 'weight' => 1,
23 'is_widget' => false,
24 'is_shortcode' => true,
25 'category' => THEME_NAME,
26 'group' => '',
27 'admin_enqueue_js' => '',
28 'admin_enqueue_css' => '',
29 'front_enqueue_js' => '',
30 'front_enqueue_css' => '',
31 'icon' => 'aux-element aux-pb-icons-accordion',
32 'custom_markup' => '',
33 'js_view' => '',
34 'html_template' => '',
35 'deprecated' => '',
36 'content_element' => '',
37 'as_parent' => '',
38 'as_child' => '',
39 'params' => array(
40 array(
41 'heading' => __('Title','auxin-elements'),
42 'description' => __('Accordion title, leave it empty if you don`t need title.', 'auxin-elements'),
43 'param_name' => 'title',
44 'type' => 'textfield',
45 'value' => __( 'Accordion Title', 'auxin-elements' ),
46 'holder' => 'textfield',
47 'class' => 'title',
48 'admin_label' => true,
49 'dependency' => '',
50 'weight' => '',
51 'group' => '' ,
52 'edit_field_class' => ''
53 ),
54 array(
55 'heading' => __('Type','auxin-elements'),
56 'description' => __('Whether to show only 1 element opens at a time or multiple.','auxin-elements'),
57 'param_name' => 'type',
58 'type' => 'dropdown',
59 'def_value' => 'true',
60 'value' => array(
61 'false' => __('Toggle', 'auxin-elements'),
62 'true' => __('Accordion', 'auxin-elements'),
63 ),
64 'holder' => '',
65 'class' => 'type',
66 'admin_label' => true,
67 'dependency' => '',
68 'weight' => '',
69 'group' => '' ,
70 'edit_field_class' => ''
71 ),
72 array(
73 'heading' => __('Accordion label','auxin-elements'),
74 'description' => __('Enter your accordion item label.', 'auxin-elements'),
75 'repeater' => 'accordion',
76 'repeater-label' => __('Accordion', 'auxin-elements'),
77 'section-name' => __('Accordion Section', 'auxin-elements'),
78 'param_name' => 'accordion_label',
79 'type' => 'textfield',
80 'value' => '',
81 'holder' => 'textfield',
82 'class' => 'accordion_label',
83 'admin_label' => true,
84 'dependency' => '',
85 'weight' => '',
86 'group' => '' ,
87 'edit_field_class' => ''
88 ),
89 array(
90 'heading' => __('Content', 'auxin-elements'),
91 'description' => __('Enter your accordion item content.', 'auxin-elements'),
92 'repeater' => 'accordion',
93 'repeater-label' => __('Accordion', 'auxin-elements'),
94 'section-name' => __('Accordion Section', 'auxin-elements'),
95 'param_name' => 'content',
96 'type' => 'textarea_html',
97 'value' => '',
98 'def_value' => '',
99 'holder' => 'div',
100 'class' => 'content',
101 'admin_label' => true,
102 'dependency' => '',
103 'weight' => '',
104 'group' => '',
105 'edit_field_class' => ''
106 ),
107 array(
108 'heading' => __('Extra class name','auxin-elements'),
109 'description' => __('If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'auxin-elements'),
110 'param_name' => 'extra_classes',
111 'type' => 'textfield',
112 'value' => '',
113 'def_value' => '',
114 'holder' => 'textfield',
115 'class' => 'extra_classes',
116 'admin_label' => true,
117 'dependency' => '',
118 'weight' => '',
119 'group' => '' ,
120 'edit_field_class' => ''
121 )
122 )
123 );
124
125 return $master_array;
126 }
127
128 add_filter( 'auxin_master_array_shortcodes', 'auxin_get_new_accordion_master_array', 10, 1 );
129
130
131 /**
132 * Element without loop and column
133 * The front-end output of this element is returned by the following function
134 *
135 * @param array $atts The array containing the parsed values from shortcode, it should be same as defined params above.
136 * @param string $shortcode_content The shorcode content
137 * @return string The output of element markup
138 */
139 function auxin_widget_accordion_callback( $atts, $shortcode_content = null ){
140
141 // Defining default attributes
142 $default_atts = array(
143 'title' => '', // header title
144 'type' => 'true', // accordion/toggle
145 'accordion' => '', // accordion/toggle
146 'title_tag' => 'h6',
147 'tab_id_prefix' => '', // Default prefix for tab index and id
148 'extra_classes' => '', // custom css class names for this element
149 'custom_el_id' => '', // custom id attribute for this element
150 'base_class' => 'aux-widget-accordion widget-toggle' // base class name for container
151 );
152
153 $result = auxin_get_widget_scafold( $atts, $default_atts, $shortcode_content );
154 extract( $result['parsed_atts'] );
155
156 // widget header ------------------------------
157 $output = $result['widget_header'];
158 $output .= $result['widget_title'];
159
160 $extra_classes .= $type == 'true' ? ' aux-type-toggle' : ' aux-type-accordion';
161
162 $output .= '<div class="widget-inner ' . esc_attr( $extra_classes ) . '" data-toggle="' . esc_attr( $type ) . '">';
163
164 // widget custom output -----------------------
165 if ( is_array( $accordion ) || is_object( $accordion ) ) {
166 foreach ( $accordion as $index => $value ) {
167 $output .= '<section class="aux-toggle-item">';
168
169 $id_number = esc_attr( $tab_id_prefix . ( $index + 1 ) );
170
171 // Accordion title
172 $header_attrs = array(
173 'id' => 'aux-toggle-header-' . $id_number,
174 'class' => 'aux-toggle-header toggle-header',
175 'tabindex' => $id_number,
176 'role' => 'tab',
177 'aria-controls' => 'aux-toggle-content-' . $id_number,
178 );
179
180 $title_tag = strtolower( $title_tag ) == 'script' ? 'h6' : $title_tag;
181 $output .= sprintf( '<%1$s %2$s>%3$s</%1$s>',
182 tag_escape( $title_tag ),
183 auxin_make_html_attributes( $header_attrs ),
184 wp_kses_post( $value['accordion_label'] )
185 );
186
187
188 // Accordion content
189 $content_attrs = array(
190 'id' => 'aux-toggle-content-' . $id_number,
191 'class' => 'aux-toggle-content toggle-content',
192 'tabindex' => $id_number,
193 'role' => 'tabpanel',
194 'aria-labelledby'=> 'aux-toggle-header-' . $id_number,
195 );
196 $output .= sprintf( '<div %s><p>%s</p></div>',
197 auxin_make_html_attributes( $content_attrs ),
198 preg_replace('/<p[^>]*>(.*)<\/p[^>]*>/i', '$1', wp_kses_post( $value['content'] ))
199 );
200
201 $output .= '</section>';
202 }
203 }
204
205 $output .= '</div>'; // End od widget-toggle
206 $output .= $result['widget_footer'];
207
208 // widget footer ------------------------------
209
210 return $output;
211 }
212