Addons for Elementor - Version 6.3

Version Description

  • Tweak Moved addons Pricing Table, Services, Tab Slider and Heading to template based design for easy customization.
  • Added - New template files for Pricing Table, Services, Tab Slider and Heading addons that can be overridden in the theme.
Download this release

Release Info

Developer livemesh
Plugin Icon 128x128 Addons for Elementor
Version 6.3
Comparing to
See all releases

Code changes from version 6.2.1 to 6.3

addons-for-elementor.php CHANGED
@@ -8,7 +8,7 @@
8
  * Author URI: https://livemeshelementor.com
9
  * License: GPL3
10
  * License URI: https://www.gnu.org/licenses/gpl-3.0.txt
11
- * Version: 6.2.1
12
  * Text Domain: livemesh-el-addons
13
  * Domain Path: languages
14
  * Elementor tested up to: 3.1.0
@@ -37,7 +37,7 @@ if ( !defined( 'ABSPATH' ) ) {
37
 
38
  if ( !function_exists( 'lae_fs' ) ) {
39
  // Plugin version
40
- define( 'LAE_VERSION', '6.2.1' );
41
  // Plugin Root File
42
  define( 'LAE_PLUGIN_FILE', __FILE__ );
43
  // Plugin Folder Path
8
  * Author URI: https://livemeshelementor.com
9
  * License: GPL3
10
  * License URI: https://www.gnu.org/licenses/gpl-3.0.txt
11
+ * Version: 6.3
12
  * Text Domain: livemesh-el-addons
13
  * Domain Path: languages
14
  * Elementor tested up to: 3.1.0
37
 
38
  if ( !function_exists( 'lae_fs' ) ) {
39
  // Plugin version
40
+ define( 'LAE_VERSION', '6.3' );
41
  // Plugin Root File
42
  define( 'LAE_PLUGIN_FILE', __FILE__ );
43
  // Plugin Folder Path
includes/widgets/heading.php CHANGED
@@ -290,27 +290,11 @@ class LAE_Heading_Widget extends LAE_Widget_Base {
290
 
291
  $settings = apply_filters('lae_heading_' . $this->get_id() . '_settings', $settings);
292
 
293
- list($animate_class, $animation_attr) = lae_get_animation_atts($settings['widget_animation']);
294
 
295
- $output = '<div class="lae-heading lae-' . $settings['style'] . ' lae-align' . $settings['align'] . ' ' . $animate_class . '" ' . $animation_attr . '>';
296
 
297
- if ($settings['style'] == 'style2' && !empty($settings['subtitle'])):
298
-
299
- $output .= '<div class="lae-subtitle">' . esc_html($settings['subtitle']) . '</div>';
300
-
301
- endif;
302
-
303
- $output .= '<' . esc_html($settings['title_tag']) . ' class="lae-title">' . wp_kses_post($settings['heading']) . '</' . esc_html($settings['title_tag']) . '>';
304
-
305
- if ($settings['style'] != 'style3' && !empty($settings['short_text'])):
306
-
307
- $output .= '<p class="lae-text">' . wp_kses_post($settings['short_text']) . '</p>';
308
-
309
- endif;
310
-
311
- $output .= '</div><!-- .lae-heading -->';
312
-
313
- echo apply_filters('lae_heading_output', $output, $settings);
314
 
315
  }
316
 
290
 
291
  $settings = apply_filters('lae_heading_' . $this->get_id() . '_settings', $settings);
292
 
293
+ $args['settings'] = $settings;
294
 
295
+ $args['widget_instance'] = $this;
296
 
297
+ lae_get_template_part("addons/heading/{$settings['style']}", $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
 
299
  }
300
 
includes/widgets/pricing-table.php CHANGED
@@ -34,27 +34,13 @@ class LAE_Pricing_Table_Widget extends LAE_Widget_Base {
34
 
35
  $title = $value = '';
36
 
37
- extract(shortcode_atts(array(
38
  'title' => '',
39
  'value' => ''
40
 
41
- ), $atts));
42
 
43
- $output = '<div class="lae-pricing-item">';
44
-
45
- $output .= '<div class="lae-title">' . htmlspecialchars_decode(wp_kses_post($title)) . '</div>';
46
-
47
- $output .= '<div class="lae-value-wrap">';
48
-
49
- $output .= '<div class="lae-value">';
50
-
51
- $output .= htmlspecialchars_decode(wp_kses_post($value));
52
-
53
- $output .= '</div>';
54
-
55
- $output .= '</div>';
56
-
57
- $output .= '</div>';
58
 
59
  return $output;
60
  }
@@ -549,68 +535,11 @@ class LAE_Pricing_Table_Widget extends LAE_Widget_Base {
549
  if (empty($settings['pricing_plans']))
550
  return;
551
 
552
- $output = '<div class="lae-pricing-table lae-grid-container ' . lae_get_grid_classes($settings) . '">';
553
-
554
- foreach ($settings['pricing_plans'] as $pricing_plan) :
555
-
556
- $pricing_title = esc_html($pricing_plan['pricing_title']);
557
- $tagline = esc_html($pricing_plan['tagline']);
558
- $price_tag = htmlspecialchars_decode(wp_kses_post($pricing_plan['price_tag']));
559
- $pricing_img = $pricing_plan['pricing_image'];
560
- $pricing_url = (empty($pricing_plan['button_url']['url'])) ? '#' : esc_url($pricing_plan['button_url']['url']);
561
- $pricing_button_text = esc_html($pricing_plan['button_text']);
562
- $button_new_window = esc_html($pricing_plan['button_url']['is_external']);
563
- $highlight = ($pricing_plan['highlight'] == 'yes');
564
-
565
- $price_tag = (empty($price_tag)) ? '' : $price_tag;
566
-
567
- list($animate_class, $animation_attr) = lae_get_animation_atts($pricing_plan['widget_animation']);
568
-
569
- $child_output = '<div class="lae-grid-item lae-pricing-plan ' . ($highlight ? ' lae-highlight' : '') . ' ' . $animate_class . '" ' . $animation_attr . '>';
570
-
571
- $child_output .= '<div class="lae-top-header">';
572
-
573
- if (!empty($tagline))
574
- $child_output .= '<p class="lae-tagline center">' . $tagline . '</p>';
575
-
576
- $child_output .= '<' . $settings['plan_name_tag'] . ' class="lae-plan-name lae-center">' . $pricing_title . '</' . $settings['plan_name_tag'] . '>';
577
-
578
- if (!empty($pricing_img)) :
579
- $child_output .= wp_get_attachment_image($pricing_img['id'], 'full', false, array('class' => 'lae-image full', 'alt' => $pricing_title));
580
-
581
- endif;
582
-
583
- $child_output .= '</div>';
584
-
585
- $child_output .= '<' . $settings['plan_price_tag'] . ' class="lae-plan-price lae-plan-header lae-center">';
586
-
587
- $child_output .= '<span class="lae-text">' . wp_kses_post($price_tag) . '</span>';
588
-
589
- $child_output .= '</' . $settings['plan_price_tag'] . '>';
590
-
591
- $child_output .= '<div class="lae-plan-details">';
592
-
593
- $child_output .= $this->parse_text_editor($pricing_plan['pricing_content']);
594
-
595
- $child_output .= '</div><!-- .lae-plan-details -->';
596
-
597
- $child_output .= '<div class="lae-purchase">';
598
-
599
- $child_output .= '<a class="lae-button default" href="' . esc_url($pricing_url) . '"' . (!empty($button_new_window) ? ' target="_blank"' : '') . '>' . esc_html($pricing_button_text) . '</a>';
600
-
601
- $child_output .= '</div>';
602
-
603
- $child_output .= '</div><!-- .lae-pricing-plan -->';
604
-
605
- $output .= apply_filters('lae_pricing_plan_output', $child_output, $pricing_plan, $settings);
606
-
607
- endforeach;
608
-
609
- $output .= '</div><!-- .lae-pricing-table -->';
610
 
611
- $output .= '<div class="lae-clear"></div>';
612
 
613
- echo apply_filters('lae_pricing_table_output', $output, $settings);
614
 
615
  }
616
 
34
 
35
  $title = $value = '';
36
 
37
+ $args = shortcode_atts(array(
38
  'title' => '',
39
  'value' => ''
40
 
41
+ ), $atts);
42
 
43
+ $output = lae_get_template_part('addons/pricing-table/pricing-item', $args, true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
 
45
  return $output;
46
  }
535
  if (empty($settings['pricing_plans']))
536
  return;
537
 
538
+ $args['settings'] = $settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
539
 
540
+ $args['widget_instance'] = $this;
541
 
542
+ lae_get_template_part('addons/pricing-table/loop', $args);
543
 
544
  }
545
 
includes/widgets/services.php CHANGED
@@ -297,84 +297,9 @@ class LAE_Services_Widget extends LAE_Widget_Base
297
  {
298
  $settings = $this->get_settings_for_display();
299
  $settings = apply_filters( 'lae_services_' . $this->get_id() . '_settings', $settings );
300
- $migration_allowed = Icons_Manager::is_migration_allowed();
301
- $output = '<div class="lae-services lae-' . $settings['style'] . ' lae-grid-container ' . lae_get_grid_classes( $settings ) . '">';
302
- foreach ( $settings['services'] as $index => $service ) {
303
- $has_link = false;
304
-
305
- if ( !empty($service['service_link']['url']) ) {
306
- $has_link = true;
307
- $link_key = 'link_' . $index;
308
- $url = $service['service_link'];
309
- $this->add_render_attribute( $link_key, 'title', $service['service_title'] );
310
- $this->add_render_attribute( $link_key, 'href', $url['url'] );
311
- if ( !empty($url['is_external']) ) {
312
- $this->add_render_attribute( $link_key, 'target', '_blank' );
313
- }
314
- if ( !empty($url['nofollow']) ) {
315
- $this->add_render_attribute( $link_key, 'rel', 'nofollow' );
316
- }
317
- }
318
-
319
- list( $animate_class, $animation_attr ) = lae_get_animation_atts( $service['widget_animation'] );
320
- $child_output = '<div class="lae-grid-item lae-service-wrapper">';
321
- $child_output .= '<div class="lae-service ' . $animate_class . '" ' . $animation_attr . '>';
322
-
323
- if ( $service['icon_type'] == 'icon_image' ) {
324
-
325
- if ( !empty($service['icon_image']) ) {
326
- $child_output .= '<div class="lae-image-wrapper">';
327
- $image_html = lae_get_image_html( $service['icon_image'], 'thumbnail_size', $settings );
328
- if ( $has_link ) {
329
- $image_html = '<a class="lae-title-link" ' . $this->get_render_attribute_string( $link_key ) . '>' . $image_html . '</a>';
330
- }
331
- $child_output .= $image_html;
332
- $child_output .= '</div>';
333
- }
334
-
335
- } elseif ( $service['icon_type'] == 'icon' && (!empty($service['icon']) || !empty($service['selected_icon']['value'])) ) {
336
- $migrated = isset( $service['__fa4_migrated']['selected_icon'] );
337
- $is_new = empty($service['icon']) && $migration_allowed;
338
- $child_output .= '<div class="lae-icon-wrapper">';
339
-
340
- if ( $is_new || $migrated ) {
341
- ob_start();
342
- Icons_Manager::render_icon( $service['selected_icon'], [
343
- 'aria-hidden' => 'true',
344
- ] );
345
- $icon_html = ob_get_contents();
346
- ob_end_clean();
347
- } else {
348
- $icon_html = '<i class="' . esc_attr( $service['icon'] ) . '" aria-hidden="true"></i>';
349
- }
350
-
351
- if ( $has_link ) {
352
- $icon_html = '<a class="lae-icon-link" ' . $this->get_render_attribute_string( $link_key ) . '>' . $icon_html . '</a>';
353
- }
354
- $child_output .= $icon_html;
355
- $child_output .= '</div>';
356
- }
357
-
358
- $child_output .= '<div class="lae-service-text">';
359
- $title_html = '<' . $settings['title_tag'] . ' class="lae-title">' . esc_html( $service['service_title'] ) . '</' . $settings['title_tag'] . '>';
360
- if ( $has_link ) {
361
- $title_html = '<a class="lae-title-link" ' . $this->get_render_attribute_string( $link_key ) . '>' . $title_html . '</a>';
362
- }
363
- $child_output .= $title_html;
364
- $child_output .= '<div class="lae-service-details">' . do_shortcode( wp_kses_post( $service['service_excerpt'] ) ) . '</div>';
365
- $child_output .= '</div><!-- .lae-service-text -->';
366
- $child_output .= '</div><!-- .lae-service -->';
367
- $child_output .= '</div><!-- .lae-service-wrapper -->';
368
- $output .= apply_filters(
369
- 'lae_service_item_output',
370
- $child_output,
371
- $service,
372
- $settings
373
- );
374
- }
375
- $output .= '</div><!-- .lae-services -->';
376
- $output .= '<div class="lae-clear"></div>';
377
- echo apply_filters( 'lae_services_output', $output, $settings ) ;
378
  }
379
 
380
  protected function content_template()
297
  {
298
  $settings = $this->get_settings_for_display();
299
  $settings = apply_filters( 'lae_services_' . $this->get_id() . '_settings', $settings );
300
+ $args['settings'] = $settings;
301
+ $args['widget_instance'] = $this;
302
+ lae_get_template_part( 'addons/services/loop', $args );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  protected function content_template()
includes/widgets/tab-slider.php CHANGED
@@ -16,7 +16,6 @@ use Elementor\Scheme_Color;
16
  use Elementor\Group_Control_Typography;
17
  use Elementor\Scheme_Typography;
18
  use Elementor\Utils;
19
- use Elementor\Icons_Manager;
20
 
21
  if (!defined('ABSPATH'))
22
  exit; // Exit if accessed directly
@@ -489,91 +488,11 @@ class LAE_Tab_Slider_Widget extends LAE_Widget_Base {
489
 
490
  $settings = apply_filters('lae_tab_slider_' . $this->get_id() . '_settings', $settings);
491
 
492
- $dir = is_rtl() ? ' dir="rtl"' : '';
493
 
494
- $style = is_rtl() ? ' style="direction:rtl"' : '';
495
 
496
- $plain_styles = array('style1');
497
-
498
- $slider_settings = [
499
- 'autoplay' => ('yes' === $settings['autoplay']),
500
- 'autoplay_speed' => absint($settings['autoplay_speed']),
501
- 'animation_speed' => absint($settings['animation_speed']),
502
- 'pause_on_hover' => ('yes' === $settings['pause_on_hover']),
503
- 'pause_on_focus' => ('yes' === $settings['pause_on_focus']),
504
- 'infinite_looping' => ('yes' === $settings['infinite_looping']),
505
- 'adaptive_height' => ('yes' === $settings['adaptive_height']),
506
- ];
507
-
508
- $output = '<div' . $dir . $style . ' class="lae-tab-slider lae-' . esc_attr($settings['style']) . '" data-settings=\'' . wp_json_encode($slider_settings) . '\'>';
509
-
510
- foreach ($settings['tabs'] as $tab) :
511
-
512
- $output .= '<div class="lae-tab-slide">';
513
-
514
- $tab_nav = '<div class="lae-tab-slide-nav">';
515
-
516
- if (in_array($settings['style'], $plain_styles, true)):
517
-
518
- $icon_type = 'none'; // do not display icons for plain styles even if chosen by the user
519
-
520
- else :
521
-
522
- $icon_type = $tab['icon_type'];
523
-
524
- endif;
525
-
526
- if ($icon_type == 'icon_image') :
527
-
528
- $tab_nav .= '<span class="lae-image-wrapper">';
529
-
530
- $icon_image = $tab['icon_image'];
531
-
532
- $tab_nav .= wp_get_attachment_image($icon_image['id'], 'thumbnail', false, array('class' => 'lae-image'));
533
-
534
- $tab_nav .= '</span>';
535
-
536
- elseif ($icon_type == 'icon' && (!empty($tab['selected_icon']['value']))) :
537
-
538
- $tab_nav .= '<span class="lae-icon-wrapper">';
539
-
540
- ob_start();
541
-
542
- Icons_Manager::render_icon($tab['selected_icon'], ['aria-hidden' => 'true']);
543
-
544
- $tab_nav .= ob_get_contents();
545
-
546
- ob_end_clean();
547
-
548
- $tab_nav .= '</span>';
549
-
550
- endif;
551
-
552
- $tab_nav .= '<span class="lae-tab-title">';
553
-
554
- $tab_nav .= esc_html($tab['tab_title']);
555
-
556
- $tab_nav .= '</span>';
557
-
558
- $tab_nav .= '</div>';
559
-
560
- $output .= apply_filters('lae_tab_slide_nav_output', $tab_nav, $tab, $settings);
561
-
562
- $tab_content = '<div class="lae-tab-slide-content">';
563
-
564
- $tab_content .= $this->parse_text_editor($tab['tab_content']);
565
-
566
- $tab_content .= '</div>';
567
-
568
- $output .= apply_filters('lae_tab_slide_content_output', $tab_content, $tab, $settings);
569
-
570
- $output .= '</div>';
571
-
572
- endforeach;
573
-
574
- $output .= '</div><!-- .lae-tab-slider -->';
575
-
576
- echo apply_filters('lae_tab_slider_output', $output, $settings);
577
 
578
  }
579
 
16
  use Elementor\Group_Control_Typography;
17
  use Elementor\Scheme_Typography;
18
  use Elementor\Utils;
 
19
 
20
  if (!defined('ABSPATH'))
21
  exit; // Exit if accessed directly
488
 
489
  $settings = apply_filters('lae_tab_slider_' . $this->get_id() . '_settings', $settings);
490
 
491
+ $args['settings'] = $settings;
492
 
493
+ $args['widget_instance'] = $this;
494
 
495
+ lae_get_template_part('addons/tab-slider/loop', $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
 
497
  }
498
 
plugin.php CHANGED
@@ -45,7 +45,7 @@ if ( !class_exists( 'Livemesh_Elementor_Addons' ) ) {
45
  public function __clone()
46
  {
47
  // Cloning instances of the class is forbidden
48
- _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'livemesh-el-addons' ), '6.2.1' );
49
  }
50
 
51
  /**
@@ -55,7 +55,7 @@ if ( !class_exists( 'Livemesh_Elementor_Addons' ) ) {
55
  public function __wakeup()
56
  {
57
  // Unserializing instances of the class is forbidden
58
- _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'livemesh-el-addons' ), '6.2.1' );
59
  }
60
 
61
  private function setup_debug_constants()
45
  public function __clone()
46
  {
47
  // Cloning instances of the class is forbidden
48
+ _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'livemesh-el-addons' ), '6.3' );
49
  }
50
 
51
  /**
55
  public function __wakeup()
56
  {
57
  // Unserializing instances of the class is forbidden
58
+ _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'livemesh-el-addons' ), '6.3' );
59
  }
60
 
61
  private function setup_debug_constants()
readme.txt CHANGED
@@ -7,7 +7,7 @@ Tags: elementor, elementor addons, elementor extensions, elementor widgets, page
7
  Requires at least: 4.5
8
  Tested up to: 5.6
9
  Requires PHP: 5.6
10
- Stable Tag: 6.2.1
11
  License: GPLv3
12
  License URI: https://opensource.org/licenses/GPL-3.0
13
 
@@ -258,6 +258,10 @@ Email us at support[at]livemeshthemes.com and we will be happy to assist you.
258
 
259
 
260
 
 
 
 
 
261
  = 6.2.1 =
262
  * Fixed – The spacing between columns in generic carousel not taking effect.
263
 
7
  Requires at least: 4.5
8
  Tested up to: 5.6
9
  Requires PHP: 5.6
10
+ Stable Tag: 6.3
11
  License: GPLv3
12
  License URI: https://opensource.org/licenses/GPL-3.0
13
 
258
 
259
 
260
 
261
+ = 6.3 =
262
+ * Tweak – Moved addons Pricing Table, Services, Tab Slider and Heading to template based design for easy customization.
263
+ * Added - New template files for Pricing Table, Services, Tab Slider and Heading addons that can be overridden in the theme.
264
+
265
  = 6.2.1 =
266
  * Fixed – The spacing between columns in generic carousel not taking effect.
267
 
templates/addons/heading/style1.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Heading Template 1
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/heading/style1.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ list($animate_class, $animation_attr) = lae_get_animation_atts($settings['widget_animation']);
14
+
15
+ ?>
16
+
17
+ <div class="lae-heading lae-<?php echo $settings['style']; ?> lae-align<?php echo $settings['align']; ?> <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
18
+
19
+ <<?php echo esc_html($settings['title_tag']); ?> class="lae-title"><?php echo wp_kses_post($settings['heading']); ?></<?php echo esc_html($settings['title_tag']); ?>>
20
+
21
+ <?php if (!empty($settings['short_text'])): ?>
22
+
23
+ <p class="lae-text"><?php echo wp_kses_post($settings['short_text']); ?></p>
24
+
25
+ <?php endif; ?>
26
+
27
+ </div><!-- .lae-heading -->
templates/addons/heading/style2.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Heading Template 2
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/heading/style2.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ list($animate_class, $animation_attr) = lae_get_animation_atts($settings['widget_animation']);
14
+
15
+ ?>
16
+
17
+ <div class="lae-heading lae-<?php echo $settings['style']; ?> lae-align<?php echo $settings['align']; ?> <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
18
+
19
+ <?php if (!empty($settings['subtitle'])): ?>
20
+
21
+ <div class="lae-subtitle"><?php echo esc_html($settings['subtitle']); ?></div>
22
+
23
+ <?php endif; ?>
24
+
25
+ <<?php echo esc_html($settings['title_tag']); ?> class="lae-title"><?php echo wp_kses_post($settings['heading']); ?></<?php echo esc_html($settings['title_tag']); ?>>
26
+
27
+ <?php if (!empty($settings['short_text'])): ?>
28
+
29
+ <p class="lae-text"><?php echo wp_kses_post($settings['short_text']); ?></p>
30
+
31
+ <?php endif; ?>
32
+
33
+ </div><!-- .lae-heading -->
templates/addons/heading/style3.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Heading Template 3
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/heading/style3.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ list($animate_class, $animation_attr) = lae_get_animation_atts($settings['widget_animation']);
14
+
15
+ ?>
16
+
17
+ <div class="lae-heading lae-<?php echo $settings['style']; ?> lae-align<?php echo $settings['align']; ?> <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
18
+
19
+ <<?php echo esc_html($settings['title_tag']); ?> class="lae-title"><?php echo wp_kses_post($settings['heading']); ?></<?php echo esc_html($settings['title_tag']); ?>>
20
+
21
+ </div><!-- .lae-heading -->
templates/addons/pricing-table/content.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Pricing Table Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/pricing-table/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ $pricing_title = esc_html($pricing_plan['pricing_title']);
14
+ $tagline = esc_html($pricing_plan['tagline']);
15
+ $price_tag = htmlspecialchars_decode(wp_kses_post($pricing_plan['price_tag']));
16
+ $pricing_img = $pricing_plan['pricing_image'];
17
+ $pricing_url = (empty($pricing_plan['button_url']['url'])) ? '#' : esc_url($pricing_plan['button_url']['url']);
18
+ $pricing_button_text = esc_html($pricing_plan['button_text']);
19
+ $button_new_window = esc_html($pricing_plan['button_url']['is_external']);
20
+ $highlight = ($pricing_plan['highlight'] == 'yes');
21
+
22
+ $price_tag = (empty($price_tag)) ? '' : $price_tag;
23
+
24
+ list($animate_class, $animation_attr) = lae_get_animation_atts($pricing_plan['widget_animation']);
25
+
26
+ ?>
27
+
28
+ <div class="lae-grid-item lae-pricing-plan <?php echo($highlight ? ' lae-highlight' : ''); ?> <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
29
+
30
+ <div class="lae-top-header">
31
+
32
+ <?php if (!empty($tagline)): ?>
33
+
34
+ <p class="lae-tagline center"><?php echo $tagline; ?></p>
35
+
36
+ <?php endif; ?>
37
+
38
+ <<?php echo $settings['plan_name_tag']; ?> class="lae-plan-name lae-center"><?php echo $pricing_title; ?></<?php echo $settings['plan_name_tag']; ?>>
39
+
40
+ <?php if (!empty($pricing_img)) : ?>
41
+
42
+ <?php echo wp_get_attachment_image($pricing_img['id'], 'full', false, array('class' => 'lae-image full', 'alt' => $pricing_title)); ?>
43
+
44
+ <?php endif; ?>
45
+
46
+ </div>
47
+
48
+ <<?php echo $settings['plan_price_tag']; ?> class="lae-plan-price lae-plan-header lae-center">
49
+
50
+ <span class="lae-text"><?php echo wp_kses_post($price_tag); ?></span>
51
+
52
+ </<?php echo $settings['plan_price_tag']; ?>>
53
+
54
+ <div class="lae-plan-details">
55
+
56
+ <?php echo $widget_instance->parse_text_editor($pricing_plan['pricing_content']); ?>
57
+
58
+ </div><!-- .lae-plan-details -->
59
+
60
+ <div class="lae-purchase">
61
+
62
+ <a class="lae-button default"
63
+ href="<?php echo esc_url($pricing_url); ?>"<?php echo(!empty($button_new_window) ? ' target="_blank"' : ''); ?>><?php echo esc_html($pricing_button_text); ?></a>
64
+
65
+ </div>
66
+
67
+ </div><!-- .lae-pricing-plan -->
templates/addons/pricing-table/loop.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Pricing Table Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/pricing-table/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-pricing-table lae-grid-container <?php echo lae_get_grid_classes($settings); ?>">
16
+
17
+ <?php foreach ($settings['pricing_plans'] as $pricing_plan) : ?>
18
+
19
+ <?php $args['pricing_plan'] = $pricing_plan; ?>
20
+
21
+ <?php lae_get_template_part("addons/pricing-table/content", $args); ?>
22
+
23
+ <?php endforeach; ?>
24
+
25
+ </div><!-- .lae-pricing-table -->
26
+
27
+ <div class="lae-clear"></div>
templates/addons/pricing-table/pricing-item.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Loop - Pricing Item Shortcode Template
5
+ *
6
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/pricing-table/pricing-item.php
7
+ *
8
+ */
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-pricing-item">
16
+
17
+ <div class="lae-title"><?php echo htmlspecialchars_decode(wp_kses_post($title)); ?></div>
18
+
19
+ <div class="lae-value-wrap">
20
+
21
+ <div class="lae-value">
22
+
23
+ <?php echo htmlspecialchars_decode(wp_kses_post($value)); ?>
24
+
25
+ </div>
26
+
27
+ </div>
28
+
29
+ </div>
templates/addons/services/content.php ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Services Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/services/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ use Elementor\Icons_Manager;
14
+
15
+ $has_link = false;
16
+
17
+ $migration_allowed = Icons_Manager::is_migration_allowed();
18
+
19
+ if (!empty($service['service_link']['url'])) {
20
+
21
+ $has_link = true;
22
+
23
+ $link_key = 'link_' . $index;
24
+
25
+ $url = $service['service_link'];
26
+
27
+ $widget_instance->add_render_attribute($link_key, 'title', $service['service_title']);
28
+
29
+ $widget_instance->add_render_attribute($link_key, 'href', $url['url']);
30
+
31
+ if (!empty($url['is_external'])) {
32
+ $widget_instance->add_render_attribute($link_key, 'target', '_blank');
33
+ }
34
+
35
+ if (!empty($url['nofollow'])) {
36
+ $widget_instance->add_render_attribute($link_key, 'rel', 'nofollow');
37
+ }
38
+ }
39
+
40
+ list($animate_class, $animation_attr) = lae_get_animation_atts($service['widget_animation']);
41
+
42
+ ?>
43
+
44
+ <div class="lae-grid-item lae-service-wrapper">
45
+
46
+ <div class="lae-service <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
47
+
48
+ <?php if ($service['icon_type'] == 'icon_image') : ?>
49
+
50
+ <?php if (!empty($service['icon_image'])): ?>
51
+
52
+ <div class="lae-image-wrapper">
53
+
54
+ <?php
55
+
56
+ $image_html = lae_get_image_html($service['icon_image'], 'thumbnail_size', $settings);
57
+
58
+ if ($has_link)
59
+ $image_html = '<a class="lae-title-link" ' . $widget_instance->get_render_attribute_string($link_key) . '>' . $image_html . '</a>';
60
+
61
+ echo $image_html;
62
+
63
+ ?>
64
+
65
+ </div>
66
+
67
+ <?php endif; ?>
68
+
69
+ <?php elseif ($service['icon_type'] == 'icon' && (!empty($service['icon']) || !empty($service['selected_icon']['value']))) : ?>
70
+
71
+ <?php
72
+
73
+ $migrated = isset($service['__fa4_migrated']['selected_icon']);
74
+ $is_new = empty($service['icon']) && $migration_allowed;
75
+
76
+ ?>
77
+
78
+ <div class="lae-icon-wrapper">
79
+
80
+ <?php
81
+
82
+ if ($is_new || $migrated) :
83
+
84
+ ob_start();
85
+
86
+ Icons_Manager::render_icon($service['selected_icon'], ['aria-hidden' => 'true']);
87
+
88
+ $icon_html = ob_get_contents();
89
+
90
+ ob_end_clean();
91
+
92
+ else :
93
+
94
+ $icon_html = '<i class="' . esc_attr($service['icon']) . '" aria-hidden="true"></i>';
95
+
96
+ endif;
97
+
98
+ if ($has_link)
99
+ $icon_html = '<a class="lae-icon-link" ' . $widget_instance->get_render_attribute_string($link_key) . '>' . $icon_html . '</a>';
100
+
101
+ echo $icon_html;
102
+
103
+ ?>
104
+
105
+ </div>
106
+
107
+ <?php endif; ?>
108
+
109
+ <div class="lae-service-text">
110
+
111
+ <?php
112
+
113
+ $title_html = '<' . $settings['title_tag'] . ' class="lae-title">' . esc_html($service['service_title']) . '</' . $settings['title_tag'] . '>';
114
+
115
+ if ($has_link)
116
+ $title_html = '<a class="lae-title-link" ' . $widget_instance->get_render_attribute_string($link_key) . '>' . $title_html . '</a>';
117
+
118
+ echo $title_html;
119
+
120
+ ?>
121
+
122
+ <div class="lae-service-details"><?php echo do_shortcode(wp_kses_post($service['service_excerpt'])); ?></div>
123
+
124
+ </div><!-- .lae-service-text -->
125
+
126
+ </div><!-- .lae-service -->
127
+
128
+ </div><!-- .lae-service-wrapper -->
templates/addons/services/loop.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Services Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/services/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-services lae-<?php echo $settings['style']; ?> lae-grid-container <?php echo lae_get_grid_classes($settings); ?>">
16
+
17
+ <?php foreach ($settings['services'] as $index => $service): ?>
18
+
19
+ <?php $args['index'] = $index; ?>
20
+
21
+ <?php $args['service'] = $service; ?>
22
+
23
+ <?php lae_get_template_part("addons/services/content", $args); ?>
24
+
25
+ <?php endforeach; ?>
26
+
27
+ </div><!-- .lae-services -->
28
+
29
+ <div class="lae-clear"></div>
templates/addons/tab-slider/loop.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Tab Slider Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/tab-slider/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ $dir = is_rtl() ? ' dir="rtl"' : '';
14
+
15
+ $rtl_style = is_rtl() ? ' style="direction:rtl"' : '';
16
+
17
+ $plain_styles = array('style1');
18
+
19
+ $slider_settings = [
20
+ 'autoplay' => ('yes' === $settings['autoplay']),
21
+ 'autoplay_speed' => absint($settings['autoplay_speed']),
22
+ 'animation_speed' => absint($settings['animation_speed']),
23
+ 'pause_on_hover' => ('yes' === $settings['pause_on_hover']),
24
+ 'pause_on_focus' => ('yes' === $settings['pause_on_focus']),
25
+ 'infinite_looping' => ('yes' === $settings['infinite_looping']),
26
+ 'adaptive_height' => ('yes' === $settings['adaptive_height']),
27
+ ];
28
+
29
+ ?>
30
+
31
+ <div<?php echo $dir . $rtl_style; ?> class="lae-tab-slider lae-<?php echo esc_attr($settings['style']); ?>"
32
+ data-settings='<?php echo wp_json_encode($slider_settings); ?>'>
33
+
34
+ <?php foreach ($settings['tabs'] as $tab) : ?>
35
+
36
+ <?php $args['tab'] = $tab; ?>
37
+
38
+ <?php lae_get_template_part("addons/tab-slider/{$settings['style']}", $args); ?>
39
+
40
+ <?php endforeach; ?>
41
+
42
+ </div><!-- .lae-tab-slider -->
templates/addons/tab-slider/style1.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tab Slider Template 1
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/tab-slider/style1.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-tab-slide">
16
+
17
+ <div class="lae-tab-slide-nav">
18
+
19
+ <span class="lae-tab-title"><?php echo esc_html($tab['tab_title']); ?></span>
20
+
21
+ </div>
22
+
23
+ <div class="lae-tab-slide-content">
24
+
25
+ <?php echo $widget_instance->parse_text_editor($tab['tab_content']); ?>
26
+
27
+ </div>
28
+
29
+ </div><!-- .lae-tab-slide -->
templates/addons/tab-slider/style2.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tab Slider Template 2
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/tab-slider/style2.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+
14
+ use Elementor\Icons_Manager;
15
+
16
+ ?>
17
+
18
+ <div class="lae-tab-slide">
19
+
20
+ <div class="lae-tab-slide-nav">
21
+
22
+ <?php $icon_type = $tab['icon_type']; ?>
23
+
24
+ <?php if ($icon_type == 'icon_image') : ?>
25
+
26
+ <span class="lae-image-wrapper">
27
+
28
+ <?php $icon_image = $tab['icon_image']; ?>
29
+
30
+ <?php echo wp_get_attachment_image($icon_image['id'], 'thumbnail', false, array('class' => 'lae-image')); ?>
31
+
32
+ </span>
33
+
34
+ <?php elseif ($icon_type == 'icon' && (!empty($tab['selected_icon']['value']))) : ?>
35
+
36
+ <span class="lae-icon-wrapper"><?php Icons_Manager::render_icon($tab['selected_icon'], ['aria-hidden' => 'true']); ?></span>
37
+
38
+ <?php endif; ?>
39
+
40
+ <span class="lae-tab-title"><?php echo esc_html($tab['tab_title']); ?></span>
41
+
42
+ </div>
43
+
44
+ <div class="lae-tab-slide-content">
45
+
46
+ <?php echo $widget_instance->parse_text_editor($tab['tab_content']); ?>
47
+
48
+ </div>
49
+
50
+ </div><!-- .lae-tab-slide -->
templates/addons/tab-slider/style3.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tab Slider Template 3
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/tab-slider/style3.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+
14
+ use Elementor\Icons_Manager;
15
+
16
+ ?>
17
+
18
+ <div class="lae-tab-slide">
19
+
20
+ <div class="lae-tab-slide-nav">
21
+
22
+ <?php $icon_type = $tab['icon_type']; ?>
23
+
24
+ <?php if ($icon_type == 'icon_image') : ?>
25
+
26
+ <span class="lae-image-wrapper">
27
+
28
+ <?php $icon_image = $tab['icon_image']; ?>
29
+
30
+ <?php echo wp_get_attachment_image($icon_image['id'], 'thumbnail', false, array('class' => 'lae-image')); ?>
31
+
32
+ </span>
33
+
34
+ <?php elseif ($icon_type == 'icon' && (!empty($tab['selected_icon']['value']))) : ?>
35
+
36
+ <span class="lae-icon-wrapper"><?php Icons_Manager::render_icon($tab['selected_icon'], ['aria-hidden' => 'true']); ?></span>
37
+
38
+ <?php endif; ?>
39
+
40
+ <span class="lae-tab-title"><?php echo esc_html($tab['tab_title']); ?></span>
41
+
42
+ </div>
43
+
44
+ <div class="lae-tab-slide-content">
45
+
46
+ <?php echo $widget_instance->parse_text_editor($tab['tab_content']); ?>
47
+
48
+ </div>
49
+
50
+ </div><!-- .lae-tab-slide -->
templates/addons/team-members/style1.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Team Member Template 1
4
  *
5
- * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/team-members/style-1.php
6
  *
7
  */
8
 
2
  /**
3
  * Team Member Template 1
4
  *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/team-members/style1.php
6
  *
7
  */
8
 
templates/addons/team-members/style2.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Team Member Template 2
4
  *
5
- * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/team-members/style-2.php
6
  *
7
  */
8
 
2
  /**
3
  * Team Member Template 2
4
  *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/team-members/style2.php
6
  *
7
  */
8