PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.15.2
Shortcodes and extra features for Phlox theme v2.15.2
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 3 years ago accordion-widget.php 3 years ago accordion.php 3 years ago attachment-url.php 3 years ago audio.php 3 years ago before-after.php 3 years ago button.php 3 years ago code.php 3 years ago contact-box.php 3 years ago contact-form.php 3 years ago custom-list.php 3 years ago divider.php 3 years ago dropcap.php 3 years ago facebook.php 3 years ago flickr.php 3 years ago gallery.php 3 years ago gmap.php 3 years ago highlight.php 3 years ago image.php 3 years ago instagram-feed.php 3 years ago latest-posts-slider.php 3 years ago popular-posts-widget.php 3 years ago products-grid.php 2 years ago quote.php 3 years ago recent-posts-grid-carousel.php 2 years ago recent-posts-land-style.php 2 years ago recent-posts-masonry.php 2 years ago recent-posts-tiles-carousel.php 2 years ago recent-posts-tiles.php 2 years ago recent-posts-timeline.php 2 years ago recent-posts-widget.php 3 years ago recent-products.php 2 years ago related-posts.php 8 years ago sample-element.php 3 years ago search.php 3 years ago socials-list.php 3 years ago staff.php 3 years ago tab-widget.php 3 years ago tabs.php 3 years ago testimonial.php 3 years ago text.php 3 years ago touch-slider.php 3 years ago video.php 3 years ago
accordion.php
210 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-2023 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 ' .$extra_classes . '" data-toggle="' . $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 $output .= sprintf( '<%1$s %2$s>%3$s</%1$s>',
180 $title_tag,
181 auxin_make_html_attributes( $header_attrs ),
182 $value['accordion_label']
183 );
184
185
186 // Accordion content
187 $content_attrs = array(
188 'id' => 'aux-toggle-content-' . $id_number,
189 'class' => 'aux-toggle-content toggle-content',
190 'tabindex' => $id_number,
191 'role' => 'tabpanel',
192 'aria-labelledby'=> 'aux-toggle-header-' . $id_number,
193 );
194 $output .= sprintf( '<div %s><p>%s</p></div>',
195 auxin_make_html_attributes( $content_attrs ),
196 preg_replace('/<p[^>]*>(.*)<\/p[^>]*>/i', '$1', $value['content'])
197 );
198
199 $output .= '</section>';
200 }
201 }
202
203 $output .= '</div>'; // End od widget-toggle
204 $output .= $result['widget_footer'];
205
206 // widget footer ------------------------------
207
208 return $output;
209 }
210