PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.11.55
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.11.55
4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / modules / premium-equal-height / module.php
premium-addons-for-elementor / modules / premium-equal-height Last commit date
module.php 5 months ago
module.php
346 lines
1 <?php
2 /**
3 * Class: Module
4 * Name: Premium Equal Height
5 * Slug: premium-equal-height
6 */
7
8 namespace PremiumAddons\Modules\Premium_Equal_Height;
9
10 // PremiumAddons Classes.
11 use PremiumAddons\Includes\Controls\Premium_Select;
12 use PremiumAddons\Admin\Includes\Admin_Helper;
13 use PremiumAddons\Includes\Helper_Functions;
14
15 // Elementor Classes.
16 use Elementor\Repeater;
17 use Elementor\Controls_Manager;
18
19
20 if ( ! defined( 'ABSPATH' ) ) {
21 exit;
22 }
23
24 /**
25 * Class Module For Premium Equal Height addon.
26 */
27 class Module {
28
29 /**
30 * Load Script
31 *
32 * @var $load_script
33 */
34 private static $load_script = null;
35
36 /**
37 * Class object
38 *
39 * @var instance
40 */
41 private static $instance = null;
42
43 /**
44 * Class Constructor Function.
45 */
46 public function __construct() {
47
48 // Enqueue the required JS file.
49 add_action( 'elementor/preview/enqueue_scripts', array( $this, 'enqueue_scripts' ) );
50
51 // Create Premium Equal Height tab at the end of section layout tab.
52 add_action( 'elementor/element/section/section_advanced/after_section_end', array( $this, 'register_controls' ), 10 );
53
54 add_action( 'elementor/section/print_template', array( $this, '_print_template' ), 10, 2 );
55
56 // Insert data before section rendering.
57 add_action( 'elementor/frontend/section/before_render', array( $this, 'before_render' ), 10, 1 );
58
59 // Check if scripts should be loaded.
60 add_action( 'elementor/frontend/section/before_render', array( $this, 'check_script_enqueue' ) );
61
62 add_action( 'elementor/element/container/section_layout/after_section_end', array( $this, 'register_controls' ), 10 );
63 add_action( 'elementor/container/print_template', array( $this, '_print_template' ), 10, 2 );
64 add_action( 'elementor/frontend/container/before_render', array( $this, 'before_render' ), 100, 1 );
65 add_action( 'elementor/frontend/container/before_render', array( $this, 'check_script_enqueue' ) );
66 }
67
68 /**
69 * Enqueue scripts.
70 *
71 * Registers required dependencies for the extension and enqueues them.
72 *
73 * @since 1.6.5
74 * @access public
75 */
76 public function enqueue_scripts() {
77
78 if ( ! wp_script_is( 'pa-eq-height', 'enqueued' ) ) {
79 wp_enqueue_script( 'pa-eq-height' );
80 }
81 }
82
83 /**
84 * Register Premium Equal Height controls.
85 *
86 * @access public
87 * @param object $element for current element.
88 */
89 public function register_controls( $element ) {
90
91 $element->start_controls_section(
92 'section_premium_eq_height',
93 array(
94 'label' => sprintf( '<i class="pa-extension-icon pa-dash-icon"></i> %s', __( 'Equal Height', 'premium-addons-for-elementor' ) ),
95 'tab' => Controls_Manager::TAB_ADVANCED,
96 )
97 );
98
99 $element->add_control(
100 'premium_eq_height_update',
101 array(
102 'label' => '<div class="elementor-update-preview editor-pa-preview-update" style="background-color: #fff;"><div class="elementor-update-preview-title">Update changes to page</div><div class="elementor-update-preview-button-wrapper"><button class="elementor-update-preview-button elementor-button elementor-button-success">Apply</button></div></div>',
103 'type' => Controls_Manager::RAW_HTML,
104 )
105 );
106
107 $element->add_control(
108 'premium_eq_height_switcher',
109 array(
110 'label' => __( 'Enable Equal Height', 'premium-addons-for-elementor' ),
111 'type' => Controls_Manager::SWITCHER,
112 'return_value' => 'yes',
113 'render_type' => 'template',
114 'prefix_class' => 'premium-equal-height-',
115 'frontend_available' => true,
116 )
117 );
118
119 $element->add_control(
120 'premium_eq_height_type',
121 array(
122 'label' => __( 'Apply on', 'premium-addons-for-elementor' ),
123 'type' => Controls_Manager::SELECT,
124 'default' => 'widget',
125 'options' => array(
126 'widget' => __( 'Widgets', 'premium-addons-for-elementor' ),
127 'custom' => __( 'Custom Selector', 'premium-addons-for-elementor' ),
128 ),
129 'condition' => array(
130 'premium_eq_height_switcher' => 'yes',
131 ),
132 )
133 );
134
135 $element->add_control(
136 'premium_eq_height_target',
137 array(
138 'label' => __( 'Widgets', 'premium-addons-for-elementor' ),
139 'type' => Premium_Select::TYPE,
140 'render_type' => 'template',
141 'label_block' => true,
142 'multiple' => true,
143 'frontend_available' => true,
144 'condition' => array(
145 'premium_eq_height_switcher' => 'yes',
146 'premium_eq_height_type' => 'widget',
147 ),
148 )
149 );
150
151 $element->add_control(
152 'premium_eq_height_custom_target',
153 array(
154 'label' => __( 'Selectors', 'premium-addons-for-elementor' ),
155 'type' => Controls_Manager::TEXT,
156 'label_block' => true,
157 'placeholder' => __( '.class-name, .class-name2 .my-custom-class', 'premium-addons-for-elementor' ),
158 'description' => __( 'Enter selectors separated with \' , \' ', 'premium-addons-for-elementor' ),
159 'condition' => array(
160 'premium_eq_height_switcher' => 'yes',
161 'premium_eq_height_type' => 'custom',
162 ),
163 )
164 );
165
166 $element->add_control(
167 'premium_eq_height_trigger',
168 array(
169 'label' => __( 'Trigger on', 'premium-addons-for-elementor' ),
170 'type' => Controls_Manager::SELECT,
171 'options' => array(
172 'load' => __( 'Page Load', 'premium-addons-for-elementor' ),
173 'scroll' => __( 'Scroll', 'premium-addons-for-elementor' ),
174 ),
175 'default' => 'load',
176 'condition' => array(
177 'premium_eq_height_switcher' => 'yes',
178 ),
179 )
180 );
181
182 $element->add_control(
183 'premium_eq_height_enable_on',
184 array(
185 'label' => __( 'Enable Equal Height on', 'premium-addons-for-elementor' ),
186 'type' => Controls_Manager::SELECT2,
187 'multiple' => true,
188 'options' => Helper_Functions::get_all_breakpoints(),
189 'label_block' => true,
190 'default' => Helper_Functions::get_all_breakpoints( 'keys' ),
191 'condition' => array(
192 'premium_eq_height_switcher' => 'yes',
193 ),
194 )
195 );
196
197 $docs = array(
198 'https://premiumaddons.com/docs/elementor-column-equal-height/' => __( 'How to use Premium Equal Height feature »', 'premium-addons-for-elementor' ),
199 'https://www.youtube.com/watch?v=ZaZ163p-saA' => __( 'Video tutorial »', 'premium-addons-for-elementor' ),
200 );
201
202 $doc_index = 1;
203 foreach ( $docs as $url => $title ) {
204
205 $doc_url = Helper_Functions::get_campaign_link( $url, 'eq-height-addon', 'wp-editor', 'get-support' );
206
207 $element->add_control(
208 'doc_' . $doc_index,
209 array(
210 'type' => Controls_Manager::RAW_HTML,
211 'raw' => sprintf( '<a href="%s" target="_blank">%s</a>', $doc_url, $title ),
212 'content_classes' => 'editor-pa-doc',
213 )
214 );
215
216 ++$doc_index;
217
218 }
219
220 $element->end_controls_section();
221 }
222
223 /**
224 * Render Premium Equal Height output in the editor.
225 *
226 * Written as a Backbone JavaScript template and used to generate the live preview.
227 *
228 * @since 4.2.5
229 * @access public
230 * @param object $template for current template.
231 * @param object $element for current element.
232 */
233 public function _print_template( $template, $element ) {
234
235 $old_template = $template;
236 ob_start();
237
238 ?>
239 <# if( 'yes' === settings.premium_eq_height_switcher ) {
240
241 var targetType = settings.premium_eq_height_type,
242
243 target = 'custom' === targetType ? settings.premium_eq_height_custom_target.split(',') : settings.premium_eq_height_target,
244
245 addonSettings = {
246 'targetType': targetType,
247 'target': target,
248 'trigger':settings.premium_eq_height_trigger,
249 'enableOn':settings.premium_eq_height_enable_on
250 };
251
252 view.addRenderAttribute( 'equal_height', {
253 'id' : 'premium-temp-equal-height-' + view.getID(),
254 'data-pa-eq-height': JSON.stringify( addonSettings )
255 });
256
257 #>
258 <div {{{ view.getRenderAttributeString( 'equal_height' ) }}}></div>
259 <# } #>
260 <?php
261
262 $element_content = ob_get_contents();
263
264 ob_end_clean();
265
266 $template = $element_content . $old_template;
267 return $template;
268 }
269
270 /**
271 * Render Premium Equal Height output on the frontend.
272 *
273 * Written in PHP and used to generate the final HTML.
274 *
275 * @since 4.2.5
276 * @access public
277 *
278 * @param object $element for current element.
279 */
280 public function before_render( $element ) {
281
282 $settings = $element->get_settings_for_display();
283
284 if ( 'yes' === $settings['premium_eq_height_switcher'] ) {
285
286 $target_type = $settings['premium_eq_height_type'];
287
288 $target = ( 'custom' === $target_type ) ? explode( ',', $settings['premium_eq_height_custom_target'] ) : $settings['premium_eq_height_target'];
289
290 $addon_settings = array(
291 'targetType' => $target_type,
292 'target' => $target,
293 'trigger' => $settings['premium_eq_height_trigger'],
294 'enableOn' => $settings['premium_eq_height_enable_on'],
295 );
296
297 $element->add_render_attribute( '_wrapper', 'data-pa-eq-height', wp_json_encode( $addon_settings ) );
298 }
299 }
300
301 /**
302 * Check Script Enqueue
303 *
304 * Check if the script files should be loaded.
305 *
306 * @since 4.7.7
307 * @access public
308 *
309 * @param object $element for current element.
310 */
311 public function check_script_enqueue( $element ) {
312
313 if ( self::$load_script ) {
314 return;
315 }
316
317 if ( 'yes' === $element->get_settings_for_display( 'premium_eq_height_switcher' ) ) {
318 $this->enqueue_scripts();
319
320 self::$load_script = true;
321
322 remove_action( 'elementor/frontend/section/before_render', array( $this, 'check_script_enqueue' ) );
323 remove_action( 'elementor/frontend/container/before_render', array( $this, 'check_script_enqueue' ) );
324 }
325 }
326
327 /**
328 * Creates and returns an instance of the class
329 *
330 * @since 4.2.5
331 * @access public
332 *
333 * @return object
334 */
335 public static function get_instance() {
336
337 if ( ! isset( self::$instance ) ) {
338
339 self::$instance = new self();
340
341 }
342
343 return self::$instance;
344 }
345 }
346