Addons for Elementor - Version 6.2

Version Description

  • Tweak Moved to templates based design for easy customization for generic carousel, stats bars, odometers, piecharts, team members, testimonials and testimonials slider widgets. More widgets being migrated in next releases.
  • Tweak - Moved away from hooks/filters based customization for some of the widgets since they are not being utilized well. Templates are much more intuitive and require less effort; they let you copy files to your theme and override them quickly.
  • Tweak - Moved to templates based design for Posts Carousel widget. If you have done any customization of this popular widget through WP hooks/filters, pls note they will not work anymore in the new version. Pls find the template file in templates/addons/posts-carousel folder in the plugin, copy the same to your (child) theme and make changes as per requirements. Much easier now than using hooks/filters.
  • Fixed - Social icons not showing up on team members widget.
  • Fixed - The templates for posts slider, posts multislider, posts gridbox slider widgets overridden in theme not taking effect
Download this release

Release Info

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

Code changes from version 6.1 to 6.2

Files changed (44) hide show
  1. addons-for-elementor.php +3 -3
  2. includes/base/widget-base.php +41 -0
  3. includes/widgets/carousel.php +4 -50
  4. includes/widgets/clients.php +4 -44
  5. includes/widgets/heading.php +1 -1
  6. includes/widgets/odometers.php +4 -78
  7. includes/widgets/piecharts.php +4 -27
  8. includes/widgets/portfolio.php +1 -1
  9. includes/widgets/posts-carousel.php +4 -222
  10. includes/widgets/posts-gridbox-slider.php +1 -1
  11. includes/widgets/posts-multislider.php +1 -1
  12. includes/widgets/posts-slider.php +1 -1
  13. includes/widgets/pricing-table.php +1 -1
  14. includes/widgets/services.php +1 -1
  15. includes/widgets/stats-bars.php +4 -35
  16. includes/widgets/tab-slider.php +1 -1
  17. includes/widgets/team-members.php +5 -150
  18. includes/widgets/testimonials-slider.php +5 -70
  19. includes/widgets/testimonials.php +4 -48
  20. plugin.php +3 -2
  21. readme.txt +11 -1
  22. templates/addons/carousel/content.php +19 -0
  23. templates/addons/carousel/loop.php +61 -0
  24. templates/addons/clients/content.php +43 -0
  25. templates/addons/clients/loop.php +35 -0
  26. templates/addons/odometers/content.php +88 -0
  27. templates/addons/odometers/loop.php +27 -0
  28. templates/addons/piecharts/content.php +29 -0
  29. templates/addons/piecharts/loop.php +27 -0
  30. templates/addons/posts-carousel/content.php +155 -0
  31. templates/addons/posts-carousel/custom-skin.php +23 -0
  32. templates/addons/posts-carousel/loop-end.php +13 -0
  33. templates/addons/posts-carousel/loop-start.php +44 -0
  34. templates/addons/posts-carousel/loop.php +37 -0
  35. templates/addons/stats-bars/content.php +39 -0
  36. templates/addons/stats-bars/loop.php +25 -0
  37. templates/addons/team-members/loop.php +35 -0
  38. templates/addons/team-members/social-profile.php +106 -0
  39. templates/addons/team-members/style1.php +95 -0
  40. templates/addons/team-members/style2.php +95 -0
  41. templates/addons/testimonials-slider/content.php +53 -0
  42. templates/addons/testimonials-slider/loop.php +47 -0
  43. templates/addons/testimonials/content.php +47 -0
  44. templates/addons/testimonials/loop.php +26 -0
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.1
12
  * Text Domain: livemesh-el-addons
13
  * Domain Path: languages
14
  * Elementor tested up to: 3.1.0
@@ -37,12 +37,12 @@ if ( !defined( 'ABSPATH' ) ) {
37
 
38
  if ( !function_exists( 'lae_fs' ) ) {
39
  // Plugin version
40
- define( 'LAE_VERSION', '6.1' );
41
  // Plugin Root File
42
  define( 'LAE_PLUGIN_FILE', __FILE__ );
43
  // Plugin Folder Path
44
  define( 'LAE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
45
- define( 'LAE_PLUGIN_SLUG', plugin_basename( __FILE__ ) );
46
  // Plugin Folder URL
47
  define( 'LAE_PLUGIN_URL', plugins_url( '/', __FILE__ ) );
48
  // Plugin Addons 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.2
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.2' );
41
  // Plugin Root File
42
  define( 'LAE_PLUGIN_FILE', __FILE__ );
43
  // Plugin Folder Path
44
  define( 'LAE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
45
+ define( 'LAE_PLUGIN_SLUG', dirname( plugin_basename( __FILE__ ) ) );
46
  // Plugin Folder URL
47
  define( 'LAE_PLUGIN_URL', plugins_url( '/', __FILE__ ) );
48
  // Plugin Addons Folder Path
includes/base/widget-base.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace LivemeshAddons\Widgets;
4
+
5
+ use Elementor\Widget_Base;
6
+
7
+ if (!defined('ABSPATH')) {
8
+ exit; // Exit if accessed directly.
9
+ }
10
+
11
+ /**
12
+ * Elementor widget base.
13
+ *
14
+ * An abstract class to register new Elementor widgets for Livemesh Addons. It extended the
15
+ * `Widget_Base` class from Elementor to inherit its properties.
16
+ *
17
+ * This abstract class must be extended in order to register new widgets.
18
+ *
19
+ * @since 6.2
20
+ * @abstract
21
+ */
22
+ abstract class LAE_Widget_Base extends Widget_Base {
23
+
24
+ /**
25
+ * Parse text editor.
26
+ *
27
+ * Parses the content from rich text editor with shortcodes, oEmbed and
28
+ * filtered data.
29
+ *
30
+ * @param string $content Text editor content.
31
+ *
32
+ * @return string Parsed content.
33
+ * @since 6.2
34
+ * @access public
35
+ *
36
+ */
37
+ public function parse_text_editor($content) {
38
+
39
+ return parent::parse_text_editor($content);
40
+ }
41
+ }
includes/widgets/carousel.php CHANGED
@@ -20,7 +20,7 @@ if (!defined('ABSPATH'))
20
  exit; // Exit if accessed directly
21
 
22
 
23
- class LAE_Carousel_Widget extends Widget_Base {
24
 
25
  public function get_name() {
26
  return 'lae-carousel';
@@ -509,59 +509,13 @@ Fusce risus nisl, viverra et, tempor et, pretium in, sapien. Vestibulum turpis s
509
 
510
  $settings = $this->get_settings_for_display();
511
 
512
- $dir = is_rtl() ? ' dir="rtl"' : '';
513
-
514
  $settings = apply_filters('lae_carousel_' . $this->get_id() . '_settings', $settings);
515
 
516
- $elements = $settings['elements'];
517
-
518
- $carousel_settings = [
519
- 'arrows' => ('yes' === $settings['arrows']),
520
- 'dots' => ('yes' === $settings['dots']),
521
- 'autoplay' => ('yes' === $settings['autoplay']),
522
- 'autoplay_speed' => absint($settings['autoplay_speed']),
523
- 'animation_speed' => absint($settings['animation_speed']),
524
- 'pause_on_hover' => ('yes' === $settings['pause_on_hover']),
525
- ];
526
-
527
- $responsive_settings = [
528
- 'display_columns' => $settings['display_columns'],
529
- 'scroll_columns' => $settings['scroll_columns'],
530
- 'gutter' => $settings['gutter'],
531
- 'tablet_width' => $settings['tablet_width'],
532
- 'tablet_display_columns' => $settings['tablet_display_columns'],
533
- 'tablet_scroll_columns' => $settings['tablet_scroll_columns'],
534
- 'tablet_gutter' => $settings['tablet_gutter'],
535
- 'mobile_width' => $settings['mobile_width'],
536
- 'mobile_display_columns' => $settings['mobile_display_columns'],
537
- 'mobile_scroll_columns' => $settings['mobile_scroll_columns'],
538
- 'mobile_gutter' => $settings['mobile_gutter'],
539
-
540
- ];
541
-
542
- $carousel_settings = array_merge($carousel_settings, $responsive_settings);
543
-
544
- if (!empty($elements)) :
545
-
546
- $output = '<div' . $dir . ' id="lae-carousel-' . $this->get_id() . '" class="lae-carousel lae-container" data-settings=\'' . wp_json_encode($carousel_settings) . '\'>';
547
-
548
- foreach ($elements as $element) :
549
-
550
- $child_output = '<div class="lae-carousel-item">';
551
-
552
- $child_output .= $this->parse_text_editor($element['element_content']);
553
-
554
- $child_output .= '</div><!-- .lae-carousel-item -->';
555
-
556
- $output .= apply_filters('lae_carousel_item_output', $child_output, $element, $settings);
557
-
558
- endforeach;
559
-
560
- $output .= '</div><!-- .lae-carousel -->';
561
 
562
- echo apply_filters('lae_carousel_output', $output, $settings);
563
 
564
- endif;
565
  }
566
 
567
  protected function content_template() {
20
  exit; // Exit if accessed directly
21
 
22
 
23
+ class LAE_Carousel_Widget extends LAE_Widget_Base {
24
 
25
  public function get_name() {
26
  return 'lae-carousel';
509
 
510
  $settings = $this->get_settings_for_display();
511
 
 
 
512
  $settings = apply_filters('lae_carousel_' . $this->get_id() . '_settings', $settings);
513
 
514
+ $args['settings'] = $settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
 
516
+ $args['widget_instance'] = $this;
517
 
518
+ lae_get_template_part('addons/carousel/loop', $args);
519
  }
520
 
521
  protected function content_template() {
includes/widgets/clients.php CHANGED
@@ -21,7 +21,7 @@ if (!defined('ABSPATH'))
21
  exit; // Exit if accessed directly
22
 
23
 
24
- class LAE_Clients_Widget extends Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-clients';
@@ -286,51 +286,11 @@ class LAE_Clients_Widget extends Widget_Base {
286
 
287
  $settings = apply_filters('lae_clients_' . $this->get_id() . '_settings', $settings);
288
 
289
- list($animate_class, $animation_attr) = lae_get_animation_atts($settings['widget_animation']);
290
 
291
- $output = '<div class="lae-clients lae-gapless-grid">';
292
 
293
- $output .= '<div class="lae-grid-container ' . lae_get_grid_classes($settings) . '">';
294
-
295
- foreach ($settings['clients'] as $client):
296
-
297
- $child_output = '<div class="lae-grid-item lae-client ' . $animate_class . '" ' . $animation_attr . '>';
298
-
299
- if (!empty($client['client_image'])):
300
-
301
- $child_output .= wp_get_attachment_image($client['client_image']['id'], 'full', false, array('class' => 'lae-image full', 'alt' => $client['client_name']));
302
-
303
- endif;
304
-
305
- if (!empty($client['client_link']) && !empty($client['client_link']['url'])):
306
-
307
- $target = $client['client_link']['is_external'] ? 'target="_blank"' : '';
308
-
309
- $child_output .= '<div class="lae-client-name">';
310
-
311
- $child_output .= '<a href="' . esc_url($client['client_link']['url']) . ' " title="' . esc_html($client['client_name']) . '" ' . $target . '>' . wp_kses_post($client['client_name']) . '</a>';
312
-
313
- $child_output .= '</div>';
314
-
315
- else:
316
-
317
- $child_output .= '<div class="lae-client-name">' . wp_kses_post($client['client_name']) . '</div>';
318
-
319
- endif;
320
-
321
- $child_output .= '<div class="lae-image-overlay"></div>';
322
-
323
- $child_output .= '</div><!-- .lae-client -->';
324
-
325
- $output .= apply_filters('lae_client_item_output', $child_output, $client, $settings);
326
-
327
- endforeach;
328
-
329
- $output .= '</div>';
330
-
331
- $output .= '</div><!-- .lae-clients -->';
332
-
333
- echo apply_filters('lae_clients_output', $output, $settings);
334
  }
335
 
336
  protected function content_template() {
21
  exit; // Exit if accessed directly
22
 
23
 
24
+ class LAE_Clients_Widget extends LAE_Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-clients';
286
 
287
  $settings = apply_filters('lae_clients_' . $this->get_id() . '_settings', $settings);
288
 
289
+ $args['settings'] = $settings;
290
 
291
+ $args['widget_instance'] = $this;
292
 
293
+ lae_get_template_part('addons/clients/loop', $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
  }
295
 
296
  protected function content_template() {
includes/widgets/heading.php CHANGED
@@ -19,7 +19,7 @@ if (!defined('ABSPATH'))
19
  exit; // Exit if accessed directly
20
 
21
 
22
- class LAE_Heading_Widget extends Widget_Base {
23
 
24
  public function get_name() {
25
  return 'lae-heading';
19
  exit; // Exit if accessed directly
20
 
21
 
22
+ class LAE_Heading_Widget extends LAE_Widget_Base {
23
 
24
  public function get_name() {
25
  return 'lae-heading';
includes/widgets/odometers.php CHANGED
@@ -16,14 +16,13 @@ use Elementor\Utils;
16
  use Elementor\Scheme_Color;
17
  use Elementor\Group_Control_Typography;
18
  use Elementor\Scheme_Typography;
19
- use Elementor\Icons_Manager;
20
  use Elementor\Modules\DynamicTags\Module as TagsModule;
21
 
22
  if (!defined('ABSPATH'))
23
  exit; // Exit if accessed directly
24
 
25
 
26
- class LAE_Odometers_Widget extends Widget_Base {
27
 
28
  public function get_name() {
29
  return 'lae-odometers';
@@ -384,84 +383,11 @@ class LAE_Odometers_Widget extends Widget_Base {
384
 
385
  $settings = apply_filters('lae_odometers_' . $this->get_id() . '_settings', $settings);
386
 
387
- $migration_allowed = Icons_Manager::is_migration_allowed();
388
 
389
- $output = '<div class="lae-odometers lae-grid-container ' . lae_get_grid_classes($settings) . '">';
390
 
391
- foreach ($settings['odometers'] as $odometer):
392
-
393
- $prefix = (!empty ($odometer['prefix'])) ? '<span class="prefix">' . $odometer['prefix'] . '</span>' : '';
394
- $suffix = (!empty ($odometer['suffix'])) ? '<span class="suffix">' . $odometer['suffix'] . '</span>' : '';
395
-
396
- $child_output = '<div class="lae-grid-item lae-odometer">';
397
-
398
- $child_output .= (!empty ($odometer['prefix'])) ? '<span class="lae-prefix">' . $odometer['prefix'] . '</span>' : '';
399
-
400
- $child_output .= '<div class="lae-number odometer" data-stop="' . intval($odometer['stop_value']) . '">';
401
-
402
- $child_output .= intval($odometer['start_value']);
403
-
404
- $child_output .= '</div><!-- .lae-number -->';
405
-
406
- $child_output .= (!empty ($odometer['suffix'])) ? '<span class="lae-suffix">' . $odometer['suffix'] . '</span>' : '';
407
-
408
- $icon_type = esc_html($odometer['icon_type']);
409
-
410
- $icon_html = '';
411
-
412
- if ($icon_type == 'icon_image') :
413
-
414
- $icon_image = $odometer['icon_image'];
415
-
416
- if (!empty($icon_image)):
417
-
418
- $icon_html = '<span class="lae-image-wrapper">' . wp_get_attachment_image($icon_image['id'], 'full', false, array('class' => 'lae-image full')) . '</span>';
419
-
420
- endif;
421
-
422
- elseif ((!empty($odometer['icon']) || !empty($odometer['selected_icon']['value']))) :
423
-
424
- $migrated = isset($odometer['__fa4_migrated']['selected_icon']);
425
- $is_new = empty($odometer['icon']) && $migration_allowed;
426
-
427
- $icon_html = '<span class="lae-icon-wrapper">';
428
-
429
- if ($is_new || $migrated) :
430
-
431
- ob_start();
432
-
433
- Icons_Manager::render_icon($odometer['selected_icon'], ['aria-hidden' => 'true']);
434
-
435
- $icon_html .= ob_get_contents();
436
- ob_end_clean();
437
-
438
- else :
439
-
440
- $icon_html .= '<i class="' . esc_attr($odometer['icon']) . '" aria-hidden="true"></i>';
441
-
442
- endif;
443
-
444
- $icon_html .= '</span>';
445
-
446
- endif;
447
-
448
- $child_output .= '<div class="lae-stats-title-wrap">';
449
-
450
- $child_output .= '<div class="lae-stats-title">' . $icon_html . esc_html($odometer['stats_title']) . '</div>';
451
-
452
- $child_output .= '</div>';
453
-
454
- $child_output .= '</div><!-- .lae-odometer -->';
455
-
456
- $output .= apply_filters('lae_odometer_output', $child_output, $odometer, $settings);
457
-
458
- endforeach;
459
-
460
- $output .= '</div><!-- .lae-odometers -->';
461
-
462
- $output .= '<div class="lae-clear"></div>';
463
-
464
- echo apply_filters('lae_odometers_output', $output, $settings);
465
 
466
  }
467
 
16
  use Elementor\Scheme_Color;
17
  use Elementor\Group_Control_Typography;
18
  use Elementor\Scheme_Typography;
 
19
  use Elementor\Modules\DynamicTags\Module as TagsModule;
20
 
21
  if (!defined('ABSPATH'))
22
  exit; // Exit if accessed directly
23
 
24
 
25
+ class LAE_Odometers_Widget extends LAE_Widget_Base {
26
 
27
  public function get_name() {
28
  return 'lae-odometers';
383
 
384
  $settings = apply_filters('lae_odometers_' . $this->get_id() . '_settings', $settings);
385
 
386
+ $args['settings'] = $settings;
387
 
388
+ $args['widget_instance'] = $this;
389
 
390
+ lae_get_template_part('addons/odometers/loop', $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
 
392
  }
393
 
includes/widgets/piecharts.php CHANGED
@@ -21,7 +21,7 @@ if (!defined('ABSPATH'))
21
  exit; // Exit if accessed directly
22
 
23
 
24
- class LAE_Piecharts_Widget extends Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-piecharts';
@@ -275,34 +275,11 @@ class LAE_Piecharts_Widget extends Widget_Base {
275
 
276
  $settings = apply_filters('lae_piecharts_' . $this->get_id() . '_settings', $settings);
277
 
278
- $bar_color = ' data-bar-color="' . esc_attr($settings['bar_color']) . '"';
279
- $track_color = ' data-track-color="' . esc_attr($settings['track_color']) . '"';
280
 
281
- $output = '<div class="lae-piecharts lae-grid-container ' . lae_get_grid_classes($settings) . '">';
282
 
283
- foreach ($settings['piecharts'] as $piechart):
284
-
285
- $child_output = '<div class="lae-grid-item lae-piechart">';
286
-
287
- $child_output .= '<div class="lae-percentage"' . $bar_color . $track_color . ' data-percent="' . round($piechart['percentage_value']) . '">';
288
-
289
- $child_output .= '<span>' . round($piechart['percentage_value']) . '<sup>%</sup>' . '</span>';
290
-
291
- $child_output .= '</div>';
292
-
293
- $child_output .= '<div class="lae-label">' . esc_html($piechart['stats_title']) . '</div>';
294
-
295
- $child_output .= '</div><!-- .lae-piechart -->';
296
-
297
- $output .= apply_filters('lae_piechart_output', $child_output, $piechart, $settings);
298
-
299
- endforeach;
300
-
301
- $output .= '</div><!-- .lae-piecharts -->';
302
-
303
- $output .= '<div class="lae-clear"></div>';
304
-
305
- echo apply_filters('lae_piecharts_output', $output, $settings);
306
 
307
  }
308
 
21
  exit; // Exit if accessed directly
22
 
23
 
24
+ class LAE_Piecharts_Widget extends LAE_Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-piecharts';
275
 
276
  $settings = apply_filters('lae_piecharts_' . $this->get_id() . '_settings', $settings);
277
 
278
+ $args['settings'] = $settings;
 
279
 
280
+ $args['widget_instance'] = $this;
281
 
282
+ lae_get_template_part('addons/piecharts/loop', $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
 
284
  }
285
 
includes/widgets/portfolio.php CHANGED
@@ -19,7 +19,7 @@ if (!defined('ABSPATH'))
19
  exit; // Exit if accessed directly
20
 
21
 
22
- class LAE_Portfolio_Widget extends Widget_Base {
23
 
24
  public function get_name() {
25
  return 'lae-portfolio';
19
  exit; // Exit if accessed directly
20
 
21
 
22
+ class LAE_Portfolio_Widget extends LAE_Widget_Base {
23
 
24
  public function get_name() {
25
  return 'lae-portfolio';
includes/widgets/posts-carousel.php CHANGED
@@ -19,7 +19,7 @@ use Elementor\Scheme_Typography;
19
  if (!defined('ABSPATH'))
20
  exit; // Exit if accessed directly
21
 
22
- class LAE_Posts_Carousel_Widget extends Widget_Base {
23
 
24
  public function get_name() {
25
  return 'lae-posts-carousel';
@@ -1021,20 +1021,6 @@ class LAE_Posts_Carousel_Widget extends Widget_Base {
1021
 
1022
  }
1023
 
1024
- protected function get_item_template_content($template_id, $settings) {
1025
-
1026
- /* Initialize the theme builder templates - Requires elementor pro plugin */
1027
- if (!is_plugin_active('elementor-pro/elementor-pro.php')) {
1028
- $output = lae_template_error(__('Custom skin requires Elementor Pro but the plugin is not installed/active', 'livemesh-el-addons'));
1029
- }
1030
- else {
1031
- $output = lae_get_item_template_content($template_id, $settings);
1032
- }
1033
-
1034
- return $output;
1035
-
1036
- }
1037
-
1038
  protected function get_item_template_options() {
1039
 
1040
  $template_options = array();
@@ -1060,217 +1046,13 @@ class LAE_Posts_Carousel_Widget extends Widget_Base {
1060
 
1061
  $settings = $this->get_settings_for_display();
1062
 
1063
- $dir = is_rtl() ? ' dir="rtl"' : '';
1064
-
1065
  $settings = apply_filters('lae_posts_carousel_' . $this->get_id() . '_settings', $settings);
1066
 
1067
- $taxonomies = array();
1068
-
1069
- $carousel_settings = [
1070
- 'arrows' => ('yes' === $settings['arrows']),
1071
- 'dots' => ('yes' === $settings['dots']),
1072
- 'autoplay' => ('yes' === $settings['autoplay']),
1073
- 'autoplay_speed' => absint($settings['autoplay_speed']),
1074
- 'animation_speed' => absint($settings['animation_speed']),
1075
- 'pause_on_hover' => ('yes' === $settings['pause_on_hover']),
1076
- 'adaptive_height' => ('yes' === $settings['adaptive_height']),
1077
- ];
1078
-
1079
- $responsive_settings = [
1080
- 'display_columns' => $settings['display_columns'],
1081
- 'scroll_columns' => $settings['scroll_columns'],
1082
- 'gutter' => $settings['gutter'],
1083
- 'tablet_width' => $settings['tablet_width'],
1084
- 'tablet_display_columns' => $settings['tablet_display_columns'],
1085
- 'tablet_scroll_columns' => $settings['tablet_scroll_columns'],
1086
- 'tablet_gutter' => $settings['tablet_gutter'],
1087
- 'mobile_width' => $settings['mobile_width'],
1088
- 'mobile_display_columns' => $settings['mobile_display_columns'],
1089
- 'mobile_scroll_columns' => $settings['mobile_scroll_columns'],
1090
- 'mobile_gutter' => $settings['mobile_gutter'],
1091
-
1092
- ];
1093
-
1094
- $carousel_settings = array_merge($carousel_settings, $responsive_settings);
1095
-
1096
- // Use the processed post selector query to find posts.
1097
- $query_args = lae_build_query_args($settings);
1098
-
1099
- $query_args = apply_filters('lae_posts_carousel_' . $this->get_id() . '_query_args', $query_args, $settings);
1100
-
1101
- $loop = new \WP_Query($query_args);
1102
-
1103
- $template_id = $settings['item_template'];
1104
-
1105
- // Loop through the posts and do something with them.
1106
- if ($loop->have_posts()) :
1107
-
1108
- $target = $settings['post_link_new_window'] == 'yes' ? ' target="_blank"' : '';
1109
-
1110
- $output = '<div' . $dir . ' id="lae-posts-carousel-' . uniqid()
1111
- . '" class="lae-posts-carousel lae-container '
1112
- . 'lae-' . str_replace('_', '-', $settings['carousel_skin'])
1113
- . '" data-settings=\'' . wp_json_encode($carousel_settings) . '\'>';
1114
-
1115
- $taxonomies[] = $settings['taxonomy_chosen'];
1116
-
1117
- while ($loop->have_posts()) : $loop->the_post();
1118
-
1119
- $post_id = get_the_ID();
1120
-
1121
- $entry_output = '<div data-id="id-' . get_the_ID() . '" class="lae-posts-carousel-item">';
1122
-
1123
- $entry_output .= '<article id="post-' . get_the_ID() . '" class="' . join(' ', get_post_class('', $post_id)) . '">';
1124
-
1125
- if ($settings['carousel_skin'] == 'custom_skin') :
1126
-
1127
- if ($template_id)
1128
-
1129
- $entry_output .= $this->get_item_template_content($template_id, $settings);
1130
- else
1131
- $entry_output .= lae_template_error(__('Choose a custom skin template for the carousel item', 'livemesh-el-addons'));
1132
-
1133
- else :
1134
-
1135
- if ($thumbnail_exists = has_post_thumbnail() && $settings['display_thumbnail'] == 'yes'):
1136
-
1137
- $entry_image = '<div class="lae-project-image">';
1138
-
1139
- $image_setting = ['id' => get_post_thumbnail_id()];
1140
-
1141
- $thumbnail_html = lae_get_image_html($image_setting, 'thumbnail_size', $settings);
1142
-
1143
- if ($settings['image_linkable'] == 'yes'):
1144
-
1145
- $thumbnail_html = '<a href="' . get_the_permalink() . '"' . $target . '>' . $thumbnail_html . '</a>';
1146
-
1147
- endif;
1148
-
1149
- $entry_image .= apply_filters('lae_posts_carousel_thumbnail_html', $thumbnail_html, $image_setting, $settings);
1150
-
1151
- if (($settings['display_title_on_thumbnail'] == 'yes') || ($settings['display_taxonomy_on_thumbnail'] == 'yes')):
1152
-
1153
- $image_info = '<div class="lae-image-info">';
1154
-
1155
- $image_info .= '<div class="lae-entry-info">';
1156
-
1157
- if ($settings['display_title_on_thumbnail'] == 'yes'):
1158
-
1159
- $image_info .= '<' . $settings['title_tag'] . ' class="lae-post-title"><a href="' . get_permalink() . '" title="' . get_the_title() . '" rel="bookmark"' . $target . '>' . get_the_title() . '</a></' . $settings['title_tag'] . '>';
1160
-
1161
- endif;
1162
-
1163
- if ($settings['display_taxonomy_on_thumbnail'] == 'yes'):
1164
-
1165
- $image_info .= lae_get_info_for_taxonomies($taxonomies);
1166
-
1167
- endif;
1168
-
1169
- $image_info .= '</div>';
1170
-
1171
- $image_info .= '</div><!-- .lae-image-info -->';
1172
-
1173
- $entry_image .= apply_filters('lae_posts_carousel_image_info', $image_info, $post_id, $settings);
1174
-
1175
- $entry_image .= '</div>';
1176
-
1177
- endif;
1178
-
1179
- $entry_output .= apply_filters('lae_posts_carousel_entry_image', $entry_image, $post_id, $image_setting, $settings);
1180
-
1181
- endif;
1182
-
1183
- if (($settings['display_title'] == 'yes') || ($settings['display_summary'] == 'yes')) :
1184
-
1185
- $entry_output .= '<div class="lae-entry-text-wrap ' . ($thumbnail_exists ? '' : ' nothumbnail') . '">';
1186
-
1187
- if ($settings['display_title'] == 'yes') :
1188
-
1189
- $entry_title = '<' . $settings['entry_title_tag']
1190
- . ' class="entry-title"><a href="' . get_permalink()
1191
- . '" title="' . get_the_title()
1192
- . '" rel="bookmark"' . $target . '>' . get_the_title()
1193
- . '</a></' . $settings['entry_title_tag'] . '>';
1194
-
1195
- $entry_output .= apply_filters('lae_posts_carousel_entry_title', $entry_title, $post_id, $settings);
1196
-
1197
- endif;
1198
-
1199
- if (($settings['display_post_date'] == 'yes') || ($settings['display_author'] == 'yes') || ($settings['display_taxonomy'] == 'yes')) :
1200
-
1201
- $entry_meta = '<div class="lae-entry-meta">';
1202
-
1203
- if ($settings['display_author'] == 'yes'):
1204
-
1205
- $entry_meta .= lae_entry_author();
1206
-
1207
- endif;
1208
-
1209
- if ($settings['display_post_date'] == 'yes'):
1210
-
1211
- $entry_meta .= lae_entry_published();
1212
-
1213
- endif;
1214
-
1215
- if ($settings['display_taxonomy'] == 'yes'):
1216
-
1217
- $entry_meta .= lae_get_info_for_taxonomies($taxonomies);
1218
-
1219
- endif;
1220
-
1221
- $entry_meta .= '</div>';
1222
-
1223
- $entry_output .= apply_filters('lae_posts_carousel_entry_meta', $entry_meta, $post_id, $settings);
1224
-
1225
- endif;
1226
-
1227
- if ($settings['display_summary'] == 'yes') :
1228
-
1229
- $excerpt = '<div class="entry-summary">';
1230
-
1231
- $excerpt .= get_the_excerpt();
1232
-
1233
- $excerpt .= '</div>';
1234
-
1235
- $entry_output .= apply_filters('lae_posts_carousel_entry_excerpt', $excerpt, $post_id, $settings);
1236
-
1237
- endif;
1238
-
1239
- if ($settings['display_read_more'] == 'yes') :
1240
-
1241
- $read_more_text = $settings['read_more_text'];
1242
-
1243
- $read_more = '<div class="lae-read-more">';
1244
-
1245
- $read_more .= '<a href="' . get_the_permalink() . '"' . $target . '>' . $read_more_text . '</a>';
1246
-
1247
- $read_more .= '</div>';
1248
-
1249
- $entry_output .= apply_filters('lae_posts_carousel_read_more_link', $read_more, $post_id, $settings);
1250
-
1251
- endif;
1252
-
1253
- $entry_output .= '</div>';
1254
-
1255
- endif;
1256
-
1257
- endif;
1258
-
1259
- $entry_output .= '</article><!-- .hentry -->';
1260
-
1261
- $entry_output .= '</div><!-- .lae-posts-carousel-item -->';
1262
-
1263
- $output .= apply_filters('lae_posts_carousel_entry_output', $entry_output, $post_id, $settings);
1264
-
1265
- endwhile;
1266
-
1267
- wp_reset_postdata();
1268
-
1269
- $output .= '</div><!-- .lae-posts-carousel -->';
1270
 
1271
- echo apply_filters('lae_posts_carousel_output', $output, $settings);
1272
 
1273
- endif;
1274
 
1275
  }
1276
 
19
  if (!defined('ABSPATH'))
20
  exit; // Exit if accessed directly
21
 
22
+ class LAE_Posts_Carousel_Widget extends LAE_Widget_Base {
23
 
24
  public function get_name() {
25
  return 'lae-posts-carousel';
1021
 
1022
  }
1023
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1024
  protected function get_item_template_options() {
1025
 
1026
  $template_options = array();
1046
 
1047
  $settings = $this->get_settings_for_display();
1048
 
 
 
1049
  $settings = apply_filters('lae_posts_carousel_' . $this->get_id() . '_settings', $settings);
1050
 
1051
+ $args['settings'] = $settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1052
 
1053
+ $args['widget_instance'] = $this;
1054
 
1055
+ lae_get_template_part('addons/posts-carousel/loop', $args);
1056
 
1057
  }
1058
 
includes/widgets/posts-gridbox-slider.php CHANGED
@@ -18,7 +18,7 @@ if ( !defined( 'ABSPATH' ) ) {
18
  exit;
19
  }
20
  // Exit if accessed directly
21
- class LAE_Posts_GridBox_Slider_Widget extends Widget_Base
22
  {
23
  public function get_name()
24
  {
18
  exit;
19
  }
20
  // Exit if accessed directly
21
+ class LAE_Posts_GridBox_Slider_Widget extends LAE_Widget_Base
22
  {
23
  public function get_name()
24
  {
includes/widgets/posts-multislider.php CHANGED
@@ -18,7 +18,7 @@ if ( !defined( 'ABSPATH' ) ) {
18
  exit;
19
  }
20
  // Exit if accessed directly
21
- class LAE_Posts_Multislider_Widget extends Widget_Base
22
  {
23
  public function get_name()
24
  {
18
  exit;
19
  }
20
  // Exit if accessed directly
21
+ class LAE_Posts_Multislider_Widget extends LAE_Widget_Base
22
  {
23
  public function get_name()
24
  {
includes/widgets/posts-slider.php CHANGED
@@ -18,7 +18,7 @@ if ( !defined( 'ABSPATH' ) ) {
18
  exit;
19
  }
20
  // Exit if accessed directly
21
- class LAE_Posts_Slider_Widget extends Widget_Base
22
  {
23
  public function get_name()
24
  {
18
  exit;
19
  }
20
  // Exit if accessed directly
21
+ class LAE_Posts_Slider_Widget extends LAE_Widget_Base
22
  {
23
  public function get_name()
24
  {
includes/widgets/pricing-table.php CHANGED
@@ -21,7 +21,7 @@ if (!defined('ABSPATH'))
21
  exit; // Exit if accessed directly
22
 
23
 
24
- class LAE_Pricing_Table_Widget extends Widget_Base {
25
 
26
 
27
  public function __construct($data = [], $args = null) {
21
  exit; // Exit if accessed directly
22
 
23
 
24
+ class LAE_Pricing_Table_Widget extends LAE_Widget_Base {
25
 
26
 
27
  public function __construct($data = [], $args = null) {
includes/widgets/services.php CHANGED
@@ -21,7 +21,7 @@ if ( !defined( 'ABSPATH' ) ) {
21
  exit;
22
  }
23
  // Exit if accessed directly
24
- class LAE_Services_Widget extends Widget_Base
25
  {
26
  public function get_name()
27
  {
21
  exit;
22
  }
23
  // Exit if accessed directly
24
+ class LAE_Services_Widget extends LAE_Widget_Base
25
  {
26
  public function get_name()
27
  {
includes/widgets/stats-bars.php CHANGED
@@ -21,7 +21,7 @@ if (!defined('ABSPATH'))
21
  exit; // Exit if accessed directly
22
 
23
 
24
- class LAE_Stats_Bars_Widget extends Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-stats-bars';
@@ -281,42 +281,11 @@ class LAE_Stats_Bars_Widget extends Widget_Base {
281
 
282
  $settings = apply_filters('lae_stats_bars_' . $this->get_id() . '_settings', $settings);
283
 
284
- $output = '<div class="lae-stats-bars">';
285
 
286
- foreach ($settings['stats_bars'] as $stats_bar) :
287
 
288
- $color_style = '';
289
- $color = $stats_bar['bar_color'];
290
- if ($color)
291
- $color_style = ' style="background:' . esc_attr($color) . ';"';
292
-
293
- $child_output = '<div class="lae-stats-bar">';
294
-
295
- $child_output .= '<div class="lae-stats-title">';
296
-
297
- $child_output .= esc_html($stats_bar['stats_title']);
298
-
299
- $child_output .= '<span>' . esc_attr($stats_bar['percentage_value']) . '%</span>';
300
-
301
- $child_output .= '</div>';
302
-
303
- $child_output .= '<div class="lae-stats-bar-wrap">';
304
-
305
- $child_output .= '<div ' . $color_style . ' class="lae-stats-bar-content" data-perc="' . esc_attr($stats_bar['percentage_value']) . '"></div>';
306
-
307
- $child_output .= '<div class="lae-stats-bar-bg"></div>';
308
-
309
- $child_output .= '</div>';
310
-
311
- $child_output .= '</div><!-- .lae-stats-bar -->';
312
-
313
- $output .= apply_filters('lae_stats_bar_output', $child_output, $stats_bar, $settings);
314
-
315
- endforeach;
316
-
317
- $output .= '</div><!-- .lae-stats-bars -->';
318
-
319
- echo apply_filters('lae_stats_bars_output', $output, $settings);
320
 
321
  }
322
 
21
  exit; // Exit if accessed directly
22
 
23
 
24
+ class LAE_Stats_Bars_Widget extends LAE_Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-stats-bars';
281
 
282
  $settings = apply_filters('lae_stats_bars_' . $this->get_id() . '_settings', $settings);
283
 
284
+ $args['settings'] = $settings;
285
 
286
+ $args['widget_instance'] = $this;
287
 
288
+ lae_get_template_part('addons/stats-bars/loop', $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
 
290
  }
291
 
includes/widgets/tab-slider.php CHANGED
@@ -22,7 +22,7 @@ if (!defined('ABSPATH'))
22
  exit; // Exit if accessed directly
23
 
24
 
25
- class LAE_Tab_Slider_Widget extends Widget_Base {
26
 
27
  public function get_name() {
28
  return 'lae-tab-slider';
22
  exit; // Exit if accessed directly
23
 
24
 
25
+ class LAE_Tab_Slider_Widget extends LAE_Widget_Base {
26
 
27
  public function get_name() {
28
  return 'lae-tab-slider';
includes/widgets/team-members.php CHANGED
@@ -24,7 +24,7 @@ if (!defined('ABSPATH'))
24
  exit; // Exit if accessed directly
25
 
26
 
27
- class LAE_Team_Widget extends Widget_Base {
28
 
29
  public function get_name() {
30
  return 'lae-team-members';
@@ -55,6 +55,7 @@ class LAE_Team_Widget extends Widget_Base {
55
 
56
  public function get_style_depends() {
57
  return [
 
58
  'lae-animate-styles',
59
  'lae-frontend-styles',
60
  'lae-team-members-styles'
@@ -639,157 +640,11 @@ class LAE_Team_Widget extends Widget_Base {
639
 
640
  $settings = apply_filters('lae_team_members_' . $this->get_id() . '_settings', $settings);
641
 
642
- $item_style = '';
643
 
644
- $container_style = 'lae-container';
645
 
646
- if ($settings['style'] == 'style1'):
647
-
648
- $item_style = 'lae-grid-item';
649
-
650
- $container_style = 'lae-grid-container ' . lae_get_grid_classes($settings);
651
-
652
- endif;
653
-
654
- $output = '<div class="lae-team-members lae-' . $settings['style'] . ' ' . $container_style . '">';
655
-
656
- foreach ($settings['team_members'] as $index => $team_member):
657
-
658
- $has_link = false;
659
-
660
- if (!empty($team_member['member_link']['url'])) {
661
-
662
- $has_link = true;
663
-
664
- $link_key = 'link_' . $index;
665
-
666
- $url = $team_member['member_link'];
667
-
668
- $this->add_render_attribute($link_key, 'title', $team_member['member_name']);
669
-
670
- $this->add_render_attribute($link_key, 'href', $url['url']);
671
-
672
- if (!empty($url['is_external'])) {
673
- $this->add_render_attribute($link_key, 'target', '_blank');
674
- }
675
-
676
- if (!empty($url['nofollow'])) {
677
- $this->add_render_attribute($link_key, 'rel', 'nofollow');
678
- }
679
- }
680
-
681
- $child_output = '<div class="' . $item_style . ' lae-team-member-wrapper">';
682
-
683
- list($animate_class, $animation_attr) = lae_get_animation_atts($team_member['widget_animation']);
684
-
685
- $child_output .= '<div class="lae-team-member ' . $animate_class . '" ' . $animation_attr . '>';
686
-
687
- $child_output .= '<div class="lae-image-wrapper">';
688
-
689
- if (!empty($team_member['member_image'])):
690
-
691
- $image_html = lae_get_image_html($team_member['member_image'], 'thumbnail_size', $settings);
692
-
693
- if ($has_link)
694
- $image_html = '<a class="lae-image-link" ' . $this->get_render_attribute_string($link_key) . '>' . $image_html . '</a>';
695
-
696
- $child_output .= $image_html;
697
-
698
- endif;
699
-
700
- if ($settings['style'] == 'style1'):
701
-
702
- $child_output .= $this->social_profile($team_member, $settings);
703
-
704
- endif;
705
-
706
- $child_output .= '</div><!-- .lae-image-wrapper -->';
707
-
708
- $child_output .= '<div class="lae-team-member-text">';
709
-
710
- $title_html = '<' . $settings['title_tag'] . ' class="lae-title">' . esc_html($team_member['member_name']) . '</' . $settings['title_tag'] . '>';
711
-
712
- if ($has_link)
713
- $title_html = '<a class="lae-title-link" ' . $this->get_render_attribute_string($link_key) . '>' . $title_html . '</a>';
714
-
715
- $child_output .= $title_html;
716
-
717
- $child_output .= '<div class="lae-team-member-position">';
718
-
719
- $child_output .= do_shortcode($team_member['member_position']);
720
-
721
- $child_output .= '</div>';
722
-
723
- $child_output .= '<div class="lae-team-member-details">';
724
-
725
- $child_output .= do_shortcode($team_member['member_details']);
726
-
727
- $child_output .= '</div>';
728
-
729
- if ($settings['style'] == 'style2'):
730
-
731
- $child_output .= $this->social_profile($team_member, $settings);
732
-
733
- endif;
734
-
735
- $child_output .= '</div><!-- .lae-team-member-text -->';
736
-
737
- $child_output .= '</div><!-- .lae-team-member -->';
738
-
739
- $child_output .= '</div><!-- .lae-team-member-wrapper -->';
740
-
741
- $output .= apply_filters('lae_team_member_output', $child_output, $team_member, $settings);
742
-
743
- endforeach;
744
-
745
- $output .= '</div><!-- .lae-team-members -->';
746
-
747
- $output .= '<div class="lae-clear"></div>';
748
-
749
- echo apply_filters('lae_team_members_output', $output, $settings);
750
-
751
- }
752
-
753
- private function social_profile($team_member, $settings) {
754
-
755
-
756
- $output = '<div class="lae-social-wrap">';
757
-
758
- $output .= '<div class="lae-social-list">';
759
-
760
-
761
- $email = $team_member['member_email'];
762
- $facebook_url = $team_member['facebook_url'];
763
- $twitter_url = $team_member['twitter_url'];
764
- $linkedin_url = $team_member['linkedin_url'];
765
- $dribbble_url = $team_member['dribbble_url'];
766
- $pinterest_url = $team_member['pinterest_url'];
767
- $googleplus_url = $team_member['google_plus_url'];
768
- $instagram_url = $team_member['instagram_url'];
769
-
770
-
771
- if ($email)
772
- $output .= '<div class="lae-social-list-item"><a class="lae-email" href="mailto:' . $email . '" title="' . __("Send an email", 'livemesh-el-addons') . '"><i class="lae-icon-email"></i></a></div>';
773
- if ($facebook_url)
774
- $output .= '<div class="lae-social-list-item"><a class="lae-facebook" href="' . $facebook_url . '" target="_blank" title="' . __("Follow on Facebook", 'livemesh-el-addons') . '"><i class="lae-icon-facebook"></i></a></div>';
775
- if ($twitter_url)
776
- $output .= '<div class="lae-social-list-item"><a class="lae-twitter" href="' . $twitter_url . '" target="_blank" title="' . __("Subscribe to Twitter Feed", 'livemesh-el-addons') . '"><i class="lae-icon-twitter"></i></a></div>';
777
- if ($linkedin_url)
778
- $output .= '<div class="lae-social-list-item"><a class="lae-linkedin" href="' . $linkedin_url . '" target="_blank" title="' . __("View LinkedIn Profile", 'livemesh-el-addons') . '"><i class="lae-icon-linkedin"></i></a></div>';
779
- if ($googleplus_url)
780
- $output .= '<div class="lae-social-list-item"><a class="lae-googleplus" href="' . $googleplus_url . '" target="_blank" title="' . __("Follow on Google Plus", 'livemesh-el-addons') . '"><i class="lae-icon-googleplus"></i></a></div>';
781
- if ($instagram_url)
782
- $output .= '<div class="lae-social-list-item"><a class="lae-instagram" href="' . $instagram_url . '" target="_blank" title="' . __("View Instagram Feed", 'livemesh-el-addons') . '"><i class="lae-icon-instagram"></i></a></div>';
783
- if ($pinterest_url)
784
- $output .= '<div class="lae-social-list-item"><a class="lae-pinterest" href="' . $pinterest_url . '" target="_blank" title="' . __("Subscribe to Pinterest Feed", 'livemesh-el-addons') . '"><i class="lae-icon-pinterest"></i></a></div>';
785
- if ($dribbble_url)
786
- $output .= '<div class="lae-social-list-item"><a class="lae-dribbble" href="' . $dribbble_url . '" target="_blank" title="' . __("View Dribbble Portfolio", 'livemesh-el-addons') . '"><i class="lae-icon-dribbble"></i></a></div>';
787
-
788
- $output .= '</div><!-- .lae-social-list -->';
789
-
790
- $output .= '</div><!-- .lae-social-wrap -->';
791
-
792
- return apply_filters('lae_team_member_social_links', $output, $team_member, $settings);
793
 
794
  }
795
 
24
  exit; // Exit if accessed directly
25
 
26
 
27
+ class LAE_Team_Widget extends LAE_Widget_Base {
28
 
29
  public function get_name() {
30
  return 'lae-team-members';
55
 
56
  public function get_style_depends() {
57
  return [
58
+ 'lae-icomoon-styles',
59
  'lae-animate-styles',
60
  'lae-frontend-styles',
61
  'lae-team-members-styles'
640
 
641
  $settings = apply_filters('lae_team_members_' . $this->get_id() . '_settings', $settings);
642
 
643
+ $args['settings'] = $settings;
644
 
645
+ $args['widget_instance'] = $this;
646
 
647
+ lae_get_template_part('addons/team-members/loop', $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
648
 
649
  }
650
 
includes/widgets/testimonials-slider.php CHANGED
@@ -10,7 +10,6 @@ Author URI: https://www.livemeshthemes.com
10
  namespace LivemeshAddons\Widgets;
11
 
12
  use Elementor\Repeater;
13
- use Elementor\Widget_Base;
14
  use Elementor\Controls_Manager;
15
  use Elementor\Utils;
16
  use Elementor\Scheme_Color;
@@ -21,7 +20,7 @@ if (!defined('ABSPATH'))
21
  exit; // Exit if accessed directly
22
 
23
 
24
- class LAE_Testimonials_Slider_Widget extends Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-testimonials-slider';
@@ -480,79 +479,15 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
480
 
481
  $settings = $this->get_settings_for_display();
482
 
483
- $dir = is_rtl() ? ' dir="rtl"' : '';
484
-
485
- $style = is_rtl() ? ' style="direction:rtl"' : '';
486
 
487
  $settings = apply_filters('lae_testimonials_slider_' . $this->get_id() . '_settings', $settings);
488
 
489
- $slider_options = [
490
- 'slide_animation' => $settings['slide_animation'],
491
- 'direction' => $settings['direction'],
492
- 'slideshow_speed' => absint($settings['slideshow_speed']),
493
- 'animation_speed' => absint($settings['animation_speed']),
494
- 'control_nav' => ('yes' === $settings['control_nav']),
495
- 'direction_nav' => ('yes' === $settings['direction_nav']),
496
- 'pause_on_hover' => ('yes' === $settings['pause_on_hover']),
497
- 'pause_on_action' => ('yes' === $settings['pause_on_action']),
498
- 'smooth_height' => ('yes' === $settings['smooth_height'])
499
- ];
500
-
501
- $output = '<div' . $dir . $style . ' class="lae-testimonials-slider lae-flexslider lae-container" data-settings=\'' . wp_json_encode($slider_options) . '\'>';
502
-
503
- $output .= '<ul class="lae-slides">';
504
-
505
- foreach ($settings['testimonials'] as $testimonial) :
506
-
507
- $child_output = '<li class="lae-slide lae-testimonial-wrapper">';
508
-
509
- $child_output .= '<div class="lae-testimonial">';
510
-
511
- $child_output .= '<div class="lae-testimonial-text">';
512
-
513
- $child_output .= '<i class="lae-icon-quote"></i>';
514
-
515
- $child_output .= $this->parse_text_editor($testimonial['testimonial_text']);
516
-
517
- $child_output .= '</div>';
518
-
519
- $child_output .= '<div class="lae-testimonial-user">';
520
-
521
- $child_output .= '<div class="lae-image-wrapper">';
522
-
523
- $client_image = $testimonial['client_image'];
524
-
525
- if (!empty($client_image)):
526
-
527
- $child_output .= wp_get_attachment_image($client_image['id'], 'thumbnail', false, array('class' => 'lae-image full'));
528
-
529
- endif;
530
-
531
- $child_output .= '</div><!-- .lae-image-wrapper -->';
532
-
533
- $child_output .= '<div class="lae-text">';
534
-
535
- $child_output .= '<' . $settings['title_tag'] . ' class="lae-author-name">' . esc_html($testimonial['client_name']) . '</' . $settings['title_tag'] . '>';
536
-
537
- $child_output .= '<div class="lae-author-credentials">' . wp_kses_post($testimonial['credentials']) . '</div>';
538
-
539
- $child_output .= '</div>';
540
-
541
- $child_output .= '</div><!-- .lae-testimonial-user -->';
542
-
543
- $child_output .= '</div><!-- .lae-testimonial -->';
544
-
545
- $child_output .= '</li><!-- .lae-testimonial-wrapper.lae-slide -->';
546
-
547
- $output .= apply_filters('lae_testimonials_slide_output', $child_output, $testimonial, $settings);
548
-
549
- endforeach;
550
-
551
- $output .= '</ul><!-- .lae-slides -->';
552
 
553
- $output .= '</div><!-- .lae-testimonials-slider -->';
554
 
555
- echo apply_filters('lae_testimonials_slider_output', $output, $settings);
556
 
557
  }
558
 
10
  namespace LivemeshAddons\Widgets;
11
 
12
  use Elementor\Repeater;
 
13
  use Elementor\Controls_Manager;
14
  use Elementor\Utils;
15
  use Elementor\Scheme_Color;
20
  exit; // Exit if accessed directly
21
 
22
 
23
+ class LAE_Testimonials_Slider_Widget extends LAE_Widget_Base {
24
 
25
  public function get_name() {
26
  return 'lae-testimonials-slider';
479
 
480
  $settings = $this->get_settings_for_display();
481
 
482
+ $settings['slider_id'] = $this->get_id();
 
 
483
 
484
  $settings = apply_filters('lae_testimonials_slider_' . $this->get_id() . '_settings', $settings);
485
 
486
+ $args['settings'] = $settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
 
488
+ $args['widget_instance'] = $this;
489
 
490
+ lae_get_template_part('addons/testimonials-slider/loop', $args);
491
 
492
  }
493
 
includes/widgets/testimonials.php CHANGED
@@ -21,7 +21,7 @@ if (!defined('ABSPATH'))
21
  exit; // Exit if accessed directly
22
 
23
 
24
- class LAE_Testimonials_Widget extends Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-testimonials';
@@ -396,55 +396,11 @@ class LAE_Testimonials_Widget extends Widget_Base {
396
 
397
  $settings = apply_filters('lae_testimonials_' . $this->get_id() . '_settings', $settings);
398
 
399
- $output = '<div class="lae-testimonials lae-grid-container ' . lae_get_grid_classes($settings) . '">';
400
 
401
- foreach ($settings['testimonials'] as $testimonial) :
402
 
403
- list($animate_class, $animation_attr) = lae_get_animation_atts($testimonial['widget_animation']);
404
-
405
- $child_output = '<div class="lae-grid-item lae-testimonial ' . $animate_class . '" ' . $animation_attr . '>';
406
-
407
- $child_output .= '<div class="lae-testimonial-text">';
408
-
409
- $child_output .= $this->parse_text_editor($testimonial['testimonial_text']);
410
-
411
- $child_output .= '</div>';
412
-
413
- $child_output .= '<div class="lae-testimonial-user">';
414
-
415
- $child_output .= '<div class="lae-image-wrapper">';
416
-
417
- $client_image = $testimonial['client_image'];
418
-
419
- if (!empty($client_image)):
420
-
421
- $child_output .= wp_get_attachment_image($client_image['id'], 'thumbnail', false, array('class' => 'lae-image full'));
422
-
423
- endif;
424
-
425
- $child_output .= '</div>';
426
-
427
- $child_output .= '<div class="lae-text">';
428
-
429
- $child_output .= '<' . $settings['title_tag'] . ' class="lae-author-name">' . esc_html($testimonial['client_name']) . '</' . $settings['title_tag'] . '>';
430
-
431
- $child_output .= '<div class="lae-author-credentials">' . wp_kses_post($testimonial['credentials']) . '</div>';
432
-
433
- $child_output .= '</div><!-- .lae-text -->';
434
-
435
- $child_output .= '</div><!-- .lae-testimonial-user -->';
436
-
437
- $child_output .= '</div><!-- .lae-testimonial -->';
438
-
439
- $output .= apply_filters('lae_testimonial_output', $child_output, $testimonial, $settings);
440
-
441
- endforeach;
442
-
443
- $output .= '</div><!-- .lae-testimonials -->';
444
-
445
- $output .= '<div class="lae-clear"></div>';
446
-
447
- echo apply_filters('lae_testimonials_output', $output, $settings);
448
 
449
  }
450
 
21
  exit; // Exit if accessed directly
22
 
23
 
24
+ class LAE_Testimonials_Widget extends LAE_Widget_Base {
25
 
26
  public function get_name() {
27
  return 'lae-testimonials';
396
 
397
  $settings = apply_filters('lae_testimonials_' . $this->get_id() . '_settings', $settings);
398
 
399
+ $args['settings'] = $settings;
400
 
401
+ $args['widget_instance'] = $this;
402
 
403
+ lae_get_template_part('addons/testimonials/loop', $args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
404
 
405
  }
406
 
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.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.1' );
59
  }
60
 
61
  private function setup_debug_constants()
@@ -521,6 +521,7 @@ if ( !class_exists( 'Livemesh_Elementor_Addons' ) ) {
521
  */
522
  public function include_widgets( $widgets_manager )
523
  {
 
524
  /* Load Elementor Addon Elements */
525
  $deactivate_element_team_members = lae_get_option( 'lae_deactivate_element_team', false );
526
 
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' );
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.2' );
59
  }
60
 
61
  private function setup_debug_constants()
521
  */
522
  public function include_widgets( $widgets_manager )
523
  {
524
+ require_once LAE_PLUGIN_DIR . 'includes/base/widget-base.php';
525
  /* Load Elementor Addon Elements */
526
  $deactivate_element_team_members = lae_get_option( 'lae_deactivate_element_team', false );
527
 
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.1
11
  License: GPLv3
12
  License URI: https://opensource.org/licenses/GPL-3.0
13
 
@@ -255,6 +255,16 @@ Email us at support[at]livemeshthemes.com and we will be happy to assist you.
255
 
256
  == Changelog ==
257
 
 
 
 
 
 
 
 
 
 
 
258
  = 6.1 =
259
  * Removed – Unused JS and CSS files
260
 
7
  Requires at least: 4.5
8
  Tested up to: 5.6
9
  Requires PHP: 5.6
10
+ Stable Tag: 6.2
11
  License: GPLv3
12
  License URI: https://opensource.org/licenses/GPL-3.0
13
 
255
 
256
  == Changelog ==
257
 
258
+
259
+
260
+
261
+ = 6.2 =
262
+ * Tweak – Moved to templates based design for easy customization for generic carousel, stats bars, odometers, piecharts, team members, testimonials and testimonials slider widgets. More widgets being migrated in next releases.
263
+ * Tweak - Moved away from hooks/filters based customization for some of the widgets since they are not being utilized well. Templates are much more intuitive and require less effort; they let you copy files to your theme and override them quickly.
264
+ * Tweak - Moved to templates based design for Posts Carousel widget. If you have done any customization of this popular widget through WP hooks/filters, pls note they will not work anymore in the new version. Pls find the template file in templates/addons/posts-carousel folder in the plugin, copy the same to your (child) theme and make changes as per requirements. Much easier now than using hooks/filters.
265
+ * Fixed - Social icons not showing up on team members widget.
266
+ * Fixed - The templates for posts slider, posts multislider, posts gridbox slider widgets overridden in theme not taking effect
267
+
268
  = 6.1 =
269
  * Removed – Unused JS and CSS files
270
 
templates/addons/carousel/content.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Carousel Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/carousel/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-carousel-item">
16
+
17
+ <?php echo $widget_instance->parse_text_editor($element['element_content']); ?>
18
+
19
+ </div><!-- .lae-carousel-item -->
templates/addons/carousel/loop.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Carousel Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/carousel/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ $elements = $settings['elements'];
14
+
15
+ $dir = is_rtl() ? ' dir="rtl"' : '';
16
+
17
+ $carousel_settings = [
18
+ 'arrows' => ('yes' === $settings['arrows']),
19
+ 'dots' => ('yes' === $settings['dots']),
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
+ ];
25
+
26
+ $responsive_settings = [
27
+ 'display_columns' => $settings['display_columns'],
28
+ 'scroll_columns' => $settings['scroll_columns'],
29
+ 'gutter' => $settings['gutter'],
30
+ 'tablet_width' => $settings['tablet_width'],
31
+ 'tablet_display_columns' => $settings['tablet_display_columns'],
32
+ 'tablet_scroll_columns' => $settings['tablet_scroll_columns'],
33
+ 'tablet_gutter' => $settings['tablet_gutter'],
34
+ 'mobile_width' => $settings['mobile_width'],
35
+ 'mobile_display_columns' => $settings['mobile_display_columns'],
36
+ 'mobile_scroll_columns' => $settings['mobile_scroll_columns'],
37
+ 'mobile_gutter' => $settings['mobile_gutter'],
38
+
39
+ ];
40
+
41
+ $carousel_settings = array_merge($carousel_settings, $responsive_settings);
42
+
43
+ ?>
44
+
45
+ <?php if (!empty($elements)) : ?>
46
+
47
+ <div<?php echo $dir; ?> id="lae-carousel-<?php echo $widget_instance->get_id(); ?>"
48
+ class="lae-carousel lae-container"
49
+ data-settings='<?php echo wp_json_encode($carousel_settings); ?>'>
50
+
51
+ <?php foreach ($elements as $element) : ?>
52
+
53
+ <?php $args['element'] = $element; ?>
54
+
55
+ <?php lae_get_template_part("addons/carousel/content", $args); ?>
56
+
57
+ <?php endforeach; ?>
58
+
59
+ </div><!-- .lae-carousel -->
60
+
61
+ <?php endif; ?>
templates/addons/clients/content.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Clients Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/clients/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-grid-item lae-client <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
16
+
17
+ <?php if (!empty($client['client_image'])): ?>
18
+
19
+ <?php echo wp_get_attachment_image($client['client_image']['id'], 'full', false, array('class' => 'lae-image full', 'alt' => $client['client_name'])); ?>
20
+
21
+ <?php endif; ?>
22
+
23
+ <?php if (!empty($client['client_link']) && !empty($client['client_link']['url'])): ?>
24
+
25
+ <?php $target = $client['client_link']['is_external'] ? 'target="_blank"' : ''; ?>
26
+
27
+ <div class="lae-client-name">
28
+
29
+ <a href="<?php echo esc_url($client['client_link']['url']); ?> "
30
+ title="<?php echo esc_html($client['client_name']); ?>" <?php echo $target; ?>><?php echo
31
+ wp_kses_post($client['client_name']); ?></a>
32
+
33
+ </div>
34
+
35
+ <?php else: ?>
36
+
37
+ <div class="lae-client-name"><?php echo wp_kses_post($client['client_name']); ?></div>
38
+
39
+ <?php endif; ?>
40
+
41
+ <div class="lae-image-overlay"></div>
42
+
43
+ </div><!-- .lae-client -->
templates/addons/clients/loop.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Clients Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/clients/loop.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
+ $args['animate_class'] = $animate_class;
16
+
17
+ $args['animation_attr'] = $animation_attr;
18
+
19
+ ?>
20
+
21
+ <div class="lae-clients lae-gapless-grid">
22
+
23
+ <div class="lae-grid-container <?php echo lae_get_grid_classes($settings); ?>">
24
+
25
+ <?php foreach ($settings['clients'] as $client): ?>
26
+
27
+ <?php $args['client'] = $client; ?>
28
+
29
+ <?php lae_get_template_part("addons/clients/content", $args); ?>
30
+
31
+ <?php endforeach; ?>
32
+
33
+ </div>
34
+
35
+ </div><!-- .lae-clients -->
templates/addons/odometers/content.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Odometers Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/odometers/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ use Elementor\Icons_Manager;
14
+
15
+ $migration_allowed = Icons_Manager::is_migration_allowed();
16
+
17
+ $prefix = (!empty ($odometer['prefix'])) ? '<span class="prefix">' . $odometer['prefix'] . '</span>' : '';
18
+ $suffix = (!empty ($odometer['suffix'])) ? '<span class="suffix">' . $odometer['suffix'] . '</span>' : '';
19
+
20
+ ?>
21
+
22
+ <div class="lae-grid-item lae-odometer">
23
+
24
+ <?php echo (!empty ($odometer['prefix'])) ? '<span class="lae-prefix">' . $odometer['prefix'] . '</span>' : ''; ?>
25
+
26
+ <div class="lae-number odometer" data-stop="<?php echo intval($odometer['stop_value']); ?>">
27
+
28
+ <?php echo intval($odometer['start_value']); ?>
29
+
30
+ </div>
31
+
32
+ <?php echo (!empty ($odometer['suffix'])) ? '<span class="lae-suffix">' . $odometer['suffix'] . '</span>' : ''; ?>
33
+
34
+ <?php $icon_type = esc_html($odometer['icon_type']); ?>
35
+
36
+ <?php $icon_html = ''; ?>
37
+
38
+ <?php if ($icon_type == 'icon_image') : ?>
39
+
40
+ <?php $icon_image = $odometer['icon_image']; ?>
41
+
42
+ <?php if (!empty($icon_image)): ?>
43
+
44
+ <?php $icon_html = '<span class="lae-image-wrapper">' . wp_get_attachment_image($icon_image['id'], 'full', false, array('class' => 'lae-image full')) . '</span>'; ?>
45
+
46
+ <?php endif; ?>
47
+
48
+ <?php elseif ((!empty($odometer['icon']) || !empty($odometer['selected_icon']['value']))) : ?>
49
+ <?php
50
+
51
+ $migrated = isset($odometer['__fa4_migrated']['selected_icon']);
52
+ $is_new = empty($odometer['icon']) && $migration_allowed;
53
+
54
+ $icon_html = '<span class="lae-icon-wrapper">';
55
+
56
+ ?>
57
+
58
+ <?php if ($is_new || $migrated) : ?>
59
+
60
+ <?php
61
+
62
+ ob_start();
63
+
64
+ Icons_Manager::render_icon($odometer['selected_icon'], ['aria-hidden' => 'true']);
65
+
66
+ $icon_html .= ob_get_contents();
67
+
68
+ ob_end_clean();
69
+
70
+ ?>
71
+
72
+ <?php else : ?>
73
+
74
+ <?php $icon_html .= '<i class="' . esc_attr($odometer['icon']) . '" aria-hidden="true"></i>'; ?>
75
+
76
+ <?php endif; ?>
77
+
78
+ <?php $icon_html .= '</span>'; ?>
79
+
80
+ <?php endif; ?>
81
+
82
+ <div class="lae-stats-title-wrap">
83
+
84
+ <div class="lae-stats-title"><?php echo $icon_html . esc_html($odometer['stats_title']); ?></div>
85
+
86
+ </div>
87
+
88
+ </div><!-- .lae-odometer -->
templates/addons/odometers/loop.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Odometers Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/odometers/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-odometers lae-grid-container <?php echo lae_get_grid_classes($settings); ?>">
16
+
17
+ <?php foreach ($settings['odometers'] as $odometer): ?>
18
+
19
+ <?php $args['odometer'] = $odometer; ?>
20
+
21
+ <?php lae_get_template_part("addons/odometers/content", $args); ?>
22
+
23
+ <?php endforeach; ?>
24
+
25
+ </div><!-- .lae-odometers -->
26
+
27
+ <div class="lae-clear"></div>
templates/addons/piecharts/content.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Piecharts Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/piecharts/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ $bar_color = ' data-bar-color="' . esc_attr($settings['bar_color']) . '"';
14
+ $track_color = ' data-track-color="' . esc_attr($settings['track_color']) . '"';
15
+
16
+ ?>
17
+
18
+ <div class="lae-grid-item lae-piechart">
19
+
20
+ <div class="lae-percentage" <?php echo $bar_color; ?> <?php echo $track_color; ?>
21
+ data-percent="<?php echo round($piechart['percentage_value']); ?>">
22
+
23
+ <span><?php echo round($piechart['percentage_value']); ?><sup>%</sup></span>
24
+
25
+ </div>
26
+
27
+ <div class="lae-label"><?php echo esc_html($piechart['stats_title']); ?></div>
28
+
29
+ </div><!-- .lae-piechart -->
templates/addons/piecharts/loop.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Piecharts Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/piecharts/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-piecharts lae-grid-container <?php echo lae_get_grid_classes($settings); ?> ">
16
+
17
+ <?php foreach ($settings['piecharts'] as $piechart): ?>
18
+
19
+ <?php $args['piechart'] = $piechart; ?>
20
+
21
+ <?php lae_get_template_part("addons/piecharts/content", $args); ?>
22
+
23
+ <?php endforeach; ?>
24
+
25
+ </div><!-- .lae-piecharts -->
26
+
27
+ <div class="lae-clear"></div>
templates/addons/posts-carousel/content.php ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Posts Carousel Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/posts-carousel/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div data-id="id-<?php echo get_the_ID(); ?>" class="lae-posts-carousel-item">
16
+
17
+ <article id="post-<?php echo get_the_ID(); ?>" class="<?php echo join(' ', get_post_class('', $post_id)); ?>">
18
+
19
+ <?php if ($settings['carousel_skin'] == 'custom_skin') : ?>
20
+
21
+ <?php lae_get_template_part('addons/posts-carousel/custom-skin', $args); ?>
22
+
23
+ <?php else : ?>
24
+
25
+ <?php $target = $settings['post_link_new_window'] == 'yes' ? ' target="_blank"' : ''; ?>
26
+
27
+ <?php $taxonomies = array($settings['taxonomy_chosen']); ?>
28
+
29
+ <?php if ($thumbnail_exists = has_post_thumbnail() && $settings['display_thumbnail'] == 'yes'): ?>
30
+
31
+ <div class="lae-project-image">
32
+
33
+ <?php $image_setting = ['id' => get_post_thumbnail_id()]; ?>
34
+
35
+ <?php $thumbnail_html = lae_get_image_html($image_setting, 'thumbnail_size', $settings); ?>
36
+
37
+ <?php if ($settings['image_linkable'] == 'yes'): ?>
38
+
39
+ <a href="<?php echo get_the_permalink(); ?>"<?php echo $target; ?>><?php echo $thumbnail_html; ?></a>
40
+
41
+ <?php else: ?>
42
+
43
+ <?php echo $thumbnail_html; ?>
44
+
45
+ <?php endif; ?>
46
+
47
+ <?php if (($settings['display_title_on_thumbnail'] == 'yes') || ($settings['display_taxonomy_on_thumbnail'] == 'yes')): ?>
48
+
49
+ <div class="lae-image-info">
50
+
51
+ <div class="lae-entry-info">
52
+
53
+ <?php if ($settings['display_title_on_thumbnail'] == 'yes'): ?>
54
+
55
+ <<?php echo $settings['title_tag']; ?> class="lae-post-title">
56
+
57
+ <a href="<?php echo get_permalink(); ?>" title="<?php echo get_the_title(); ?>"
58
+ rel="bookmark"<?php echo $target; ?>><?php echo get_the_title(); ?></a>
59
+
60
+ </<?php echo $settings['title_tag']; ?>>
61
+
62
+ <?php endif; ?>
63
+
64
+ <?php if ($settings['display_taxonomy_on_thumbnail'] == 'yes'): ?>
65
+
66
+ <?php echo lae_get_info_for_taxonomies($taxonomies); ?>
67
+
68
+ <?php endif; ?>
69
+
70
+ </div>
71
+
72
+ </div><!-- .lae-image-info -->
73
+
74
+ <?php endif; ?>
75
+
76
+ </div>
77
+
78
+ <?php endif; ?>
79
+
80
+ <?php if (($settings['display_title'] == 'yes') || ($settings['display_summary'] == 'yes')) : ?>
81
+
82
+ <div class="lae-entry-text-wrap <?php echo($thumbnail_exists ? '' : ' nothumbnail'); ?>">
83
+
84
+ <?php if ($settings['display_title'] == 'yes') : ?>
85
+
86
+ <<?php echo $settings['entry_title_tag']; ?> class="entry-title">
87
+
88
+ <a href="<?php echo get_permalink(); ?>" title="<?php echo get_the_title(); ?>"
89
+ rel="bookmark"<?php echo $target; ?>><?php echo get_the_title(); ?></a>
90
+
91
+ </<?php echo $settings['entry_title_tag']; ?>>
92
+
93
+ <?php endif; ?>
94
+
95
+ <?php if (($settings['display_post_date'] == 'yes') || ($settings['display_author'] == 'yes') || ($settings['display_taxonomy'] == 'yes')) : ?>
96
+
97
+ <div class="lae-entry-meta">
98
+
99
+ <?php
100
+
101
+ if ($settings['display_author'] == 'yes'):
102
+
103
+ echo lae_entry_author();
104
+
105
+ endif;
106
+
107
+ if ($settings['display_post_date'] == 'yes'):
108
+
109
+ echo lae_entry_published();
110
+
111
+ endif;
112
+
113
+ if ($settings['display_taxonomy'] == 'yes'):
114
+
115
+ echo lae_get_info_for_taxonomies($taxonomies);
116
+
117
+ endif;
118
+
119
+ ?>
120
+
121
+ </div>
122
+
123
+ <?php endif; ?>
124
+
125
+ <?php if ($settings['display_summary'] == 'yes') : ?>
126
+
127
+ <div class="entry-summary">
128
+
129
+ <?php echo get_the_excerpt(); ?>
130
+
131
+ </div>
132
+
133
+ <?php endif; ?>
134
+
135
+ <?php if ($settings['display_read_more'] == 'yes') : ?>
136
+
137
+ <?php $read_more_text = $settings['read_more_text']; ?>
138
+
139
+ <div class="lae-read-more">
140
+
141
+ <a href="<?php echo get_the_permalink(); ?>"<?php echo $target; ?>><?php echo $read_more_text; ?></a>
142
+
143
+ </div>
144
+
145
+ <?php endif; ?>
146
+
147
+ </div>
148
+
149
+ <?php endif; ?>
150
+
151
+ <?php endif; ?>
152
+
153
+ </article><!-- .hentry -->
154
+
155
+ </div><!-- .lae-posts-carousel-item -->
templates/addons/posts-carousel/custom-skin.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $template_id = $settings['item_template'];
4
+
5
+ if ($template_id) :
6
+
7
+ /* Initialize the theme builder templates - Requires elementor pro plugin */
8
+ if (!is_plugin_active('elementor-pro/elementor-pro.php')) {
9
+
10
+ echo lae_template_error(__('Custom skin requires Elementor Pro but the plugin is not installed/active', 'livemesh-el-addons'));
11
+
12
+ }
13
+ else {
14
+
15
+ echo lae_get_item_template_content($template_id, $settings);
16
+
17
+ }
18
+
19
+ else :
20
+
21
+ echo lae_template_error(__('Choose a custom skin template for the carousel item', 'livemesh-el-addons'));
22
+
23
+ endif;
templates/addons/posts-carousel/loop-end.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop End - Posts Carousel Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/posts-carousel/loop-end.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+ ?>
13
+ </div><!-- .lae-posts-carousel -->
templates/addons/posts-carousel/loop-start.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop Start - Posts Carousel Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/posts-carousel/loop-start.php
6
+ */
7
+
8
+ if (!defined('ABSPATH')) {
9
+ exit; // Exit if accessed directly
10
+ }
11
+
12
+ $carousel_settings = [
13
+ 'arrows' => ('yes' === $settings['arrows']),
14
+ 'dots' => ('yes' === $settings['dots']),
15
+ 'autoplay' => ('yes' === $settings['autoplay']),
16
+ 'autoplay_speed' => absint($settings['autoplay_speed']),
17
+ 'animation_speed' => absint($settings['animation_speed']),
18
+ 'pause_on_hover' => ('yes' === $settings['pause_on_hover']),
19
+ 'adaptive_height' => ('yes' === $settings['adaptive_height']),
20
+ ];
21
+
22
+ $responsive_settings = [
23
+ 'display_columns' => $settings['display_columns'],
24
+ 'scroll_columns' => $settings['scroll_columns'],
25
+ 'gutter' => $settings['gutter'],
26
+ 'tablet_width' => $settings['tablet_width'],
27
+ 'tablet_display_columns' => $settings['tablet_display_columns'],
28
+ 'tablet_scroll_columns' => $settings['tablet_scroll_columns'],
29
+ 'tablet_gutter' => $settings['tablet_gutter'],
30
+ 'mobile_width' => $settings['mobile_width'],
31
+ 'mobile_display_columns' => $settings['mobile_display_columns'],
32
+ 'mobile_scroll_columns' => $settings['mobile_scroll_columns'],
33
+ 'mobile_gutter' => $settings['mobile_gutter'],
34
+
35
+ ];
36
+
37
+ $carousel_settings = array_merge($carousel_settings, $responsive_settings);
38
+
39
+ ?>
40
+
41
+ <div<?php echo is_rtl() ? ' dir="rtl"' : ''; ?>
42
+ id="lae-posts-carousel-<?php echo uniqid(); ?>"
43
+ class="lae-posts-carousel lae-container <?php echo 'lae-' . str_replace('_', '-', $settings['carousel_skin']); ?>"
44
+ data-settings='<?php echo wp_json_encode($carousel_settings); ?>'>
templates/addons/posts-carousel/loop.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Posts Carousel Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/posts-carousel/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ // Use the processed post selector query to find posts.
14
+ $query_args = lae_build_query_args($settings);
15
+
16
+ $query_args = apply_filters('lae_posts_carousel_' . $widget_instance->get_id() . '_query_args', $query_args, $settings);
17
+
18
+ $loop = new \WP_Query($query_args);
19
+
20
+ // Loop through the posts and do something with them.
21
+ if ($loop->have_posts()) :
22
+
23
+ lae_get_template_part('addons/posts-carousel/loop-start', $args);
24
+
25
+ while ($loop->have_posts()) : $loop->the_post();
26
+
27
+ $args['post_id'] = get_the_ID();
28
+
29
+ lae_get_template_part("/addons/posts-carousel/content", $args);
30
+
31
+ endwhile;
32
+
33
+ wp_reset_postdata();
34
+
35
+ lae_get_template_part('addons/posts-carousel/loop-end', $args);
36
+
37
+ endif;
templates/addons/stats-bars/content.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Stats Bars Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/stats-bars/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ $color_style = '';
14
+ $color = $stats_bar['bar_color'];
15
+ if ($color)
16
+ $color_style = ' style="background:' . esc_attr($color) . ';"';
17
+
18
+ ?>
19
+
20
+ <div class="lae-stats-bar">
21
+
22
+ <div class="lae-stats-title">
23
+
24
+ <?php echo esc_html($stats_bar['stats_title']) ?>
25
+
26
+ <span><?php echo esc_attr($stats_bar['percentage_value']); ?>%</span>
27
+
28
+ </div>
29
+
30
+ <div class="lae-stats-bar-wrap">
31
+
32
+ <div <?php echo $color_style; ?> class="lae-stats-bar-content"
33
+ data-perc="<?php echo esc_attr($stats_bar['percentage_value']); ?>"></div>
34
+
35
+ <div class="lae-stats-bar-bg"></div>
36
+
37
+ </div>
38
+
39
+ </div><!-- .lae-stats-bar -->
templates/addons/stats-bars/loop.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Stats Bars Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/stats-bars/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <div class="lae-stats-bars">
16
+
17
+ <?php foreach ($settings['stats_bars'] as $stats_bar) : ?>
18
+
19
+ <?php $args['stats_bar'] = $stats_bar; ?>
20
+
21
+ <?php lae_get_template_part("addons/stats-bars/content", $args); ?>
22
+
23
+ <?php endforeach; ?>
24
+
25
+ </div><!-- .lae-stats-bars -->
templates/addons/team-members/loop.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Team Members Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/team-members/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ if ($settings['style'] == 'style1')
14
+
15
+ $container_style = 'lae-grid-container ' . lae_get_grid_classes($settings);
16
+ else
17
+ $container_style = 'lae-container';
18
+
19
+ ?>
20
+
21
+ <div class="lae-team-members lae-<?php echo $settings['style']; ?> <?php echo $container_style; ?>">
22
+
23
+ <?php foreach ($settings['team_members'] as $index => $team_member): ?>
24
+
25
+ <?php $args['index'] = $index; ?>
26
+
27
+ <?php $args['team_member'] = $team_member; ?>
28
+
29
+ <?php lae_get_template_part("addons/team-members/{$settings['style']}", $args); ?>
30
+
31
+ <?php endforeach; ?>
32
+
33
+ </div><!-- .lae-team-members -->
34
+
35
+ <div class="lae-clear"></div>
templates/addons/team-members/social-profile.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Social Profile Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/team-members/social-profile.php
6
+ *
7
+ */
8
+ ?>
9
+
10
+ <div class="lae-social-wrap">
11
+ <div class="lae-social-list">
12
+
13
+ <?php
14
+
15
+ $email = $team_member['member_email'];
16
+ $facebook_url = $team_member['facebook_url'];
17
+ $twitter_url = $team_member['twitter_url'];
18
+ $linkedin_url = $team_member['linkedin_url'];
19
+ $dribbble_url = $team_member['dribbble_url'];
20
+ $pinterest_url = $team_member['pinterest_url'];
21
+ $googleplus_url = $team_member['google_plus_url'];
22
+ $instagram_url = $team_member['instagram_url'];
23
+
24
+ ?>
25
+ <?php if ($email): ?>
26
+ <div class="lae-social-list-item">
27
+ <a class="lae-email" href="mailto:<?php echo $email; ?>"
28
+ title="<?php echo __("Send an email", 'livemesh-el-addons'); ?>">
29
+ <i class="lae-icon-email"></i>
30
+ </a>
31
+ </div>
32
+ <?php endif; ?>
33
+ <?php if ($facebook_url): ?>
34
+ <div class="lae-social-list-item">
35
+ <a class="lae-facebook" href="<?php echo $facebook_url; ?>"
36
+ target="_blank"
37
+ title="<?php echo __("Follow on Facebook", 'livemesh-el-addons'); ?>">
38
+ <i class="lae-icon-facebook"></i>
39
+ </a>
40
+ </div>
41
+ <?php endif; ?>
42
+
43
+ <?php if ($twitter_url): ?>
44
+ <div class="lae-social-list-item">
45
+ <a class="lae-twitter" href="<?php echo $twitter_url; ?>" target="_blank"
46
+ title="<?php echo __("Subscribe to Twitter Feed", 'livemesh-el-addons'); ?>">
47
+ <i class="lae-icon-twitter"></i>
48
+ </a>
49
+ </div>
50
+ <?php endif; ?>
51
+
52
+ <?php if ($linkedin_url): ?>
53
+ <div class="lae-social-list-item">
54
+ <a class="lae-linkedin" href="<?php echo $linkedin_url; ?>"
55
+ target="_blank"
56
+ title="<?php echo __("View LinkedIn Profile", 'livemesh-el-addons'); ?>">
57
+ <i class="lae-icon-linkedin">
58
+
59
+ </i>
60
+ </a>
61
+ </div>
62
+ <?php endif; ?>
63
+
64
+ <?php if ($googleplus_url): ?>
65
+ <div class="lae-social-list-item">
66
+ <a class="lae-googleplus" href="<?php echo $googleplus_url; ?>"
67
+ target="_blank"
68
+ title="<?php echo __("Follow on Google Plus", 'livemesh-el-addons'); ?>">
69
+ <i class="lae-icon-googleplus"></i>
70
+ </a>
71
+ </div>
72
+ <?php endif; ?>
73
+
74
+ <?php if ($instagram_url): ?>
75
+ <div class="lae-social-list-item">
76
+ <a class="lae-instagram" href="<?php echo $instagram_url; ?>"
77
+ target="_blank"
78
+ title="<?php echo __("View Instagram Feed", 'livemesh-el-addons'); ?>">
79
+ <i class="lae-icon-instagram"></i>
80
+ </a>
81
+ </div>
82
+ <?php endif; ?>
83
+
84
+ <?php if ($pinterest_url): ?>
85
+ <div class="lae-social-list-item">
86
+ <a class="lae-pinterest" href="<?php echo $pinterest_url; ?>"
87
+ target="_blank"
88
+ title="<?php echo __("Subscribe to Pinterest Feed", 'livemesh-el-addons'); ?>">
89
+ <i class="lae-icon-pinterest"></i>
90
+ </a>
91
+ </div>
92
+ <?php endif; ?>
93
+
94
+ <?php if ($dribbble_url): ?>
95
+ <div class="lae-social-list-item">
96
+ <a class="lae-dribbble" href="<?php echo $dribbble_url; ?>" target="_blank"
97
+ title="<?php echo __("View Dribbble Portfolio", 'livemesh-el-addons'); ?>">
98
+ <i class="lae-icon-dribbble"></i>
99
+ </a>
100
+ </div>
101
+ <?php endif; ?>
102
+
103
+ </div><!-- .lae-social-list -->
104
+ </div><!-- .lae-social-wrap -->
105
+
106
+
templates/addons/team-members/style1.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
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
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ $has_link = false;
14
+
15
+ if (!empty($team_member['member_link']['url'])) {
16
+
17
+ $has_link = true;
18
+
19
+ $link_key = 'link_' . $index;
20
+
21
+ $url = $team_member['member_link'];
22
+
23
+ $widget_instance->add_render_attribute($link_key, 'title', $team_member['member_name']);
24
+
25
+ $widget_instance->add_render_attribute($link_key, 'href', $url['url']);
26
+
27
+ if (!empty($url['is_external'])) {
28
+ $widget_instance->add_render_attribute($link_key, 'target', '_blank');
29
+ }
30
+
31
+ if (!empty($url['nofollow'])) {
32
+ $widget_instance->add_render_attribute($link_key, 'rel', 'nofollow');
33
+ }
34
+ }
35
+ ?>
36
+
37
+ <div class="lae-grid-item lae-team-member-wrapper">
38
+
39
+ <?php list($animate_class, $animation_attr) = lae_get_animation_atts($team_member['widget_animation']); ?>
40
+
41
+ <div class="lae-team-member <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
42
+
43
+ <div class="lae-image-wrapper">
44
+
45
+ <?php if (!empty($team_member['member_image'])): ?>
46
+
47
+ <?php $image_html = lae_get_image_html($team_member['member_image'], 'thumbnail_size', $settings); ?>
48
+
49
+ <?php if ($has_link): ?>
50
+
51
+ <a class="lae-image-link" <?php echo $widget_instance->get_render_attribute_string($link_key); ?>><?php echo $image_html; ?></a>
52
+
53
+ <?php else: ?>
54
+
55
+ <?php echo $image_html; ?>
56
+
57
+ <?php endif; ?>
58
+
59
+ <?php endif; ?>
60
+
61
+ <?php lae_get_template_part("addons/team-members/social-profile", $args); ?>
62
+
63
+ </div><!-- .lae-image-wrapper -->
64
+
65
+ <div class="lae-team-member-text">
66
+
67
+ <?php $title_html = '<' . $settings['title_tag'] . ' class="lae-title">' . esc_html($team_member['member_name']) . '</' . $settings['title_tag'] . '>'; ?>
68
+
69
+ <?php if ($has_link): ?>
70
+
71
+ <a class="lae-title-link" <?php echo $widget_instance->get_render_attribute_string($link_key); ?>><?php echo $title_html; ?></a>
72
+
73
+ <?php else: ?>
74
+
75
+ <?php echo $title_html; ?>
76
+
77
+ <?php endif; ?>
78
+
79
+ <div class="lae-team-member-position">
80
+
81
+ <?php echo do_shortcode($team_member['member_position']); ?>
82
+
83
+ </div>
84
+
85
+ <div class="lae-team-member-details">
86
+
87
+ <?php echo do_shortcode($team_member['member_details']); ?>
88
+
89
+ </div>
90
+
91
+ </div><!-- .lae-team-member-text -->
92
+
93
+ </div><!-- .lae-team-member -->
94
+
95
+ </div><!-- .lae-team-member-wrapper -->
templates/addons/team-members/style2.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
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
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ $has_link = false;
14
+
15
+ if (!empty($team_member['member_link']['url'])) {
16
+
17
+ $has_link = true;
18
+
19
+ $link_key = 'link_' . $index;
20
+
21
+ $url = $team_member['member_link'];
22
+
23
+ $widget_instance->add_render_attribute($link_key, 'title', $team_member['member_name']);
24
+
25
+ $widget_instance->add_render_attribute($link_key, 'href', $url['url']);
26
+
27
+ if (!empty($url['is_external'])) {
28
+ $widget_instance->add_render_attribute($link_key, 'target', '_blank');
29
+ }
30
+
31
+ if (!empty($url['nofollow'])) {
32
+ $widget_instance->add_render_attribute($link_key, 'rel', 'nofollow');
33
+ }
34
+ }
35
+ ?>
36
+
37
+ <div class="lae-team-member-wrapper">
38
+
39
+ <?php list($animate_class, $animation_attr) = lae_get_animation_atts($team_member['widget_animation']); ?>
40
+
41
+ <div class="lae-team-member <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
42
+
43
+ <div class="lae-image-wrapper">
44
+
45
+ <?php if (!empty($team_member['member_image'])): ?>
46
+
47
+ <?php $image_html = lae_get_image_html($team_member['member_image'], 'thumbnail_size', $settings); ?>
48
+
49
+ <?php if ($has_link): ?>
50
+
51
+ <a class="lae-image-link" <?php echo $widget_instance->get_render_attribute_string($link_key); ?>><?php echo $image_html; ?></a>
52
+
53
+ <?php else: ?>
54
+
55
+ <?php echo $image_html; ?>
56
+
57
+ <?php endif; ?>
58
+
59
+ <?php endif; ?>
60
+
61
+ </div><!-- .lae-image-wrapper -->
62
+
63
+ <div class="lae-team-member-text">
64
+
65
+ <?php $title_html = '<' . $settings['title_tag'] . ' class="lae-title">' . esc_html($team_member['member_name']) . '</' . $settings['title_tag'] . '>'; ?>
66
+
67
+ <?php if ($has_link): ?>
68
+
69
+ <a class="lae-title-link" <?php echo $widget_instance->get_render_attribute_string($link_key); ?>><?php echo $title_html; ?></a>
70
+
71
+ <?php else: ?>
72
+
73
+ <?php echo $title_html; ?>
74
+
75
+ <?php endif; ?>
76
+
77
+ <div class="lae-team-member-position">
78
+
79
+ <?php echo do_shortcode($team_member['member_position']); ?>
80
+
81
+ </div>
82
+
83
+ <div class="lae-team-member-details">
84
+
85
+ <?php echo do_shortcode($team_member['member_details']); ?>
86
+
87
+ </div>
88
+
89
+ <?php lae_get_template_part("addons/team-members/social-profile", $args); ?>
90
+
91
+ </div><!-- .lae-team-member-text -->
92
+
93
+ </div><!-- .lae-team-member -->
94
+
95
+ </div><!-- .lae-team-member-wrapper -->
templates/addons/testimonials-slider/content.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Testimonials Slider Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/testimonials-slider/content.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+
15
+ <li class="lae-slide lae-testimonial-wrapper">
16
+
17
+ <div class="lae-testimonial">
18
+
19
+ <div class="lae-testimonial-text">
20
+
21
+ <i class="lae-icon-quote"></i>
22
+
23
+ <?php echo $widget_instance->parse_text_editor($testimonial['testimonial_text']); ?>
24
+
25
+ </div>
26
+
27
+ <div class="lae-testimonial-user">
28
+
29
+ <div class="lae-image-wrapper">
30
+
31
+ <?php $client_image = $testimonial['client_image']; ?>
32
+
33
+ <?php if (!empty($client_image)): ?>
34
+
35
+ <?php echo wp_get_attachment_image($client_image['id'], 'thumbnail', false, array('class' => 'lae-image full')); ?>
36
+
37
+ <?php endif; ?>
38
+
39
+ </div><!-- .lae-image-wrapper -->
40
+
41
+ <div class="lae-text">
42
+
43
+ <<?php echo $settings['title_tag']; ?> class="lae-author-name"><?php echo esc_html($testimonial['client_name']); ?></<?php echo $settings['title_tag']; ?>>
44
+
45
+ <div class="lae-author-credentials"><?php echo wp_kses_post($testimonial['credentials']); ?></div>
46
+
47
+ </div>
48
+
49
+ </div><!-- .lae-testimonial-user -->
50
+
51
+ </div><!-- .lae-testimonial -->
52
+
53
+ </li><!-- .lae-testimonial-wrapper.lae-slide -->
templates/addons/testimonials-slider/loop.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Testimonials Slider Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/testimonials-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
+ $style = is_rtl() ? ' style="direction:rtl"' : '';
16
+
17
+ $settings = apply_filters('lae_testimonials_slider_' . $settings['slider_id'] . '_settings', $settings);
18
+
19
+ $slider_options = [
20
+ 'slide_animation' => $settings['slide_animation'],
21
+ 'direction' => $settings['direction'],
22
+ 'slideshow_speed' => absint($settings['slideshow_speed']),
23
+ 'animation_speed' => absint($settings['animation_speed']),
24
+ 'control_nav' => ('yes' === $settings['control_nav']),
25
+ 'direction_nav' => ('yes' === $settings['direction_nav']),
26
+ 'pause_on_hover' => ('yes' === $settings['pause_on_hover']),
27
+ 'pause_on_action' => ('yes' === $settings['pause_on_action']),
28
+ 'smooth_height' => ('yes' === $settings['smooth_height'])
29
+ ];
30
+
31
+ ?>
32
+
33
+ <div<?php echo $dir . $style; ?> class="lae-testimonials-slider lae-flexslider lae-container"
34
+ data-settings='<?php echo wp_json_encode($slider_options); ?>'>
35
+ <ul class="lae-slides">
36
+
37
+ <?php foreach ($settings['testimonials'] as $testimonial) : ?>
38
+
39
+ <?php $args['testimonial'] = $testimonial; ?>
40
+
41
+ <?php lae_get_template_part("addons/testimonials-slider/content", $args); ?>
42
+
43
+ <?php endforeach; ?>
44
+
45
+ </ul><!-- .lae-slides -->
46
+
47
+ </div><!-- .lae-testimonials-slider -->
templates/addons/testimonials/content.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Content - Testimonials Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/testimonials/content.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($testimonial['widget_animation']); ?>
14
+
15
+ <div class="lae-grid-item lae-testimonial <?php echo $animate_class; ?>" <?php echo $animation_attr; ?>>
16
+
17
+ <div class="lae-testimonial-text">
18
+
19
+ <?php echo $widget_instance->parse_text_editor($testimonial['testimonial_text']); ?>
20
+
21
+ </div>
22
+
23
+ <div class="lae-testimonial-user">
24
+
25
+ <div class="lae-image-wrapper">
26
+
27
+ <?php $client_image = $testimonial['client_image']; ?>
28
+
29
+ <?php if (!empty($client_image)): ?>
30
+
31
+ <?php echo wp_get_attachment_image($client_image['id'], 'thumbnail', false, array('class' => 'lae-image full')); ?>
32
+
33
+ <?php endif; ?>
34
+
35
+ </div>
36
+
37
+ <div class="lae-text">
38
+
39
+ <<?php echo $settings['title_tag']; ?> class="lae-author-name"><?php echo esc_html($testimonial['client_name']); ?></<?php echo $settings['title_tag']; ?>>
40
+
41
+ <div class="lae-author-credentials"><?php echo wp_kses_post($testimonial['credentials']); ?></div>
42
+
43
+ </div><!-- .lae-text -->
44
+
45
+ </div><!-- .lae-testimonial-user -->
46
+
47
+ </div><!-- .lae-testimonial -->
templates/addons/testimonials/loop.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loop - Testimonials Template
4
+ *
5
+ * This template can be overridden by copying it to mytheme/addons-for-elementor/addons/testimonials/loop.php
6
+ *
7
+ */
8
+
9
+ if (!defined('ABSPATH')) {
10
+ exit; // Exit if accessed directly
11
+ }
12
+
13
+ ?>
14
+ <div class="lae-testimonials lae-grid-container <?php echo lae_get_grid_classes($settings); ?>">
15
+
16
+ <?php foreach ($settings['testimonials'] as $testimonial) : ?>
17
+
18
+ <?php $args['testimonial'] = $testimonial; ?>
19
+
20
+ <?php lae_get_template_part("addons/testimonials/content", $args); ?>
21
+
22
+ <?php endforeach; ?>
23
+
24
+ </div><!-- .lae-testimonials -->
25
+
26
+ <div class="lae-clearphp"></div>