Premium Addons for Elementor - Version 3.5.4

Version Description

  • Tweak: Added Stroke option for First/Second heading in Dual Heading widget.
Download this release

Release Info

Developer leap13
Plugin Icon 128x128 Premium Addons for Elementor
Version 3.5.4
Comparing to
See all releases

Code changes from version 3.5.3 to 3.5.4

admin/includes/admin-notices.php CHANGED
@@ -273,7 +273,7 @@ class Admin_Notices {
273
 
274
  /**
275
  *
276
- * Shows an admin notice for Facebook Reviews.
277
  *
278
  * @since 3.5.2
279
  * @access public
273
 
274
  /**
275
  *
276
+ * Shows an admin notice for Facebook Reviews.
277
  *
278
  * @since 3.5.2
279
  * @access public
admin/includes/version-control.php CHANGED
@@ -91,7 +91,7 @@ class Version_Control {
91
  <tr class="pa-roll-row">
92
  <th><?php echo __('Rollback Version', 'premium-addons-for-elementor'); ?></th>
93
  <td>
94
- <div><?php echo sprintf( '<a target="_blank" href="%1$s" class="button pa-btn pa-rollback-button elementor-button-spinner">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __('Reinstall Version 3.5.1', 'premium-addons-for-elementor') ); ?></div>
95
  <p class="pa-roll-desc">
96
  <span><?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?></span>
97
  </p>
91
  <tr class="pa-roll-row">
92
  <th><?php echo __('Rollback Version', 'premium-addons-for-elementor'); ?></th>
93
  <td>
94
+ <div><?php echo sprintf( '<a target="_blank" href="%1$s" class="button pa-btn pa-rollback-button elementor-button-spinner">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __('Reinstall Version 3.5.3', 'premium-addons-for-elementor') ); ?></div>
95
  <p class="pa-roll-desc">
96
  <span><?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?></span>
97
  </p>
assets/frontend/css/premium-addons.css CHANGED
@@ -2300,6 +2300,13 @@ button.premium-modal-box-modal-close {
2300
  -webkit-text-fill-color: transparent;
2301
  -webkit-background-clip: text;
2302
  }
 
 
 
 
 
 
 
2303
  @media (max-width: 500px) {
2304
  .premium-dual-header-container .premium-dual-header-first-header,
2305
  .premium-dual-header-container .premium-dual-header-second-header {
2300
  -webkit-text-fill-color: transparent;
2301
  -webkit-background-clip: text;
2302
  }
2303
+ .premium-dual-header-first-clip.stroke .premium-dual-header-first-span,
2304
+ .premium-dual-header-second-clip.stroke {
2305
+ -webkit-text-stroke-color: transparent;
2306
+ -webkit-text-fill-color: #fff;
2307
+ -webkit-text-stroke-width: 4px;
2308
+ }
2309
+
2310
  @media (max-width: 500px) {
2311
  .premium-dual-header-container .premium-dual-header-first-header,
2312
  .premium-dual-header-container .premium-dual-header-second-header {
includes/class-addons-integration.php CHANGED
@@ -96,7 +96,7 @@ class Addons_Integration {
96
 
97
  wp_register_style(
98
  'pa-preview',
99
- PREMIUM_ADDONS_URL . 'assets/templates/css/preview.css',
100
  array(),
101
  PREMIUM_ADDONS_VERSION,
102
  'all'
96
 
97
  wp_register_style(
98
  'pa-preview',
99
+ PREMIUM_ADDONS_URL . 'assets/editor/templates/css/preview.css',
100
  array(),
101
  PREMIUM_ADDONS_VERSION,
102
  'all'
premium-addons-for-elementor.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons Plugin Includes 22+ premium widgets for Elementor Page Builder.
5
  Plugin URI: https://premiumaddons.com
6
- Version: 3.5.3
7
  Author: Leap13
8
  Author URI: https://leap13.com/
9
  Text Domain: premium-addons-for-elementor
@@ -14,12 +14,12 @@ License: GNU General Public License v3.0
14
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
15
 
16
  // Define Constants
17
- define('PREMIUM_ADDONS_VERSION', '3.5.3');
18
  define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
19
  define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
20
  define('PREMIUM_ADDONS_FILE', __FILE__);
21
  define('PREMIUM_ADDONS_BASENAME', plugin_basename( PREMIUM_ADDONS_FILE ) );
22
- define('PREMIUM_ADDONS_STABLE_VERSION', '3.5.2');
23
 
24
  if( ! class_exists('Premium_Addons_Elementor') ) {
25
 
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons Plugin Includes 22+ premium widgets for Elementor Page Builder.
5
  Plugin URI: https://premiumaddons.com
6
+ Version: 3.5.4
7
  Author: Leap13
8
  Author URI: https://leap13.com/
9
  Text Domain: premium-addons-for-elementor
14
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
15
 
16
  // Define Constants
17
+ define('PREMIUM_ADDONS_VERSION', '3.5.4');
18
  define('PREMIUM_ADDONS_URL', plugins_url('/', __FILE__));
19
  define('PREMIUM_ADDONS_PATH', plugin_dir_path(__FILE__));
20
  define('PREMIUM_ADDONS_FILE', __FILE__);
21
  define('PREMIUM_ADDONS_BASENAME', plugin_basename( PREMIUM_ADDONS_FILE ) );
22
+ define('PREMIUM_ADDONS_STABLE_VERSION', '3.5.3');
23
 
24
  if( ! class_exists('Premium_Addons_Elementor') ) {
25
 
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: http://premiumaddons.com
5
  Requires at least: 4.5
6
  Tested up to: 5.2.2
7
  Requires PHP: 5.4
8
- Stable tag: 3.5.3
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
@@ -141,6 +141,10 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
141
 
142
  == Changelog ==
143
 
 
 
 
 
144
  = 3.5.3 =
145
 
146
  - Fixed: Non-dismissible admin notice.
5
  Requires at least: 4.5
6
  Tested up to: 5.2.2
7
  Requires PHP: 5.4
8
+ Stable tag: 3.5.4
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
141
 
142
  == Changelog ==
143
 
144
+ = 3.5.4 =
145
+
146
+ - Tweak: Added `Stroke` option for First/Second heading in Dual Heading widget.
147
+
148
  = 3.5.3 =
149
 
150
  - Fixed: Non-dismissible admin notice.
widgets/premium-dual-header.php CHANGED
@@ -284,12 +284,51 @@ class Premium_Dual_Header extends Widget_Base {
284
  ]
285
  );
286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  /*First Border*/
288
  $this->add_group_control(
289
  Group_Control_Border::get_type(),
290
  [
291
  'name' => 'first_header_border',
292
- 'selector' => '{{WRAPPER}} .premium-dual-header-first-span'
 
293
  ]
294
  );
295
 
@@ -321,6 +360,7 @@ class Premium_Dual_Header extends Widget_Base {
321
  'label' => __('Margin', 'premium-addons-for-elementor'),
322
  'type' => Controls_Manager::DIMENSIONS,
323
  'size_units' => [ 'px', 'em', '%' ],
 
324
  'selectors' => [
325
  '{{WRAPPER}} .premium-dual-header-first-span' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
326
  ]
@@ -426,12 +466,51 @@ class Premium_Dual_Header extends Widget_Base {
426
  ]
427
  );
428
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  /*Second Border*/
430
  $this->add_group_control(
431
  Group_Control_Border::get_type(),
432
  [
433
  'name' => 'second_header_border',
434
- 'selector' => '{{WRAPPER}} .premium-dual-header-second-header'
 
435
  ]
436
  );
437
 
@@ -462,6 +541,7 @@ class Premium_Dual_Header extends Widget_Base {
462
  [
463
  'label' => __('Margin', 'premium-addons-for-elementor'),
464
  'type' => Controls_Manager::DIMENSIONS,
 
465
  'size_units' => [ 'px', 'em', '%' ],
466
  'selectors' => [
467
  '{{WRAPPER}} .premium-dual-header-second-header' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
@@ -503,16 +583,24 @@ class Premium_Dual_Header extends Widget_Base {
503
  $first_clip = '';
504
 
505
  $second_clip = '';
 
 
506
 
507
- if( $settings['premium_dual_header_first_back_clip'] === 'clipped' ) : $first_clip = "premium-dual-header-first-clip"; endif;
508
 
509
- if( $settings['premium_dual_header_second_back_clip'] === 'clipped' ) : $second_clip = "premium-dual-header-second-clip"; endif;
 
 
 
 
 
 
510
 
511
  $first_grad = $settings['premium_dual_header_first_animated'] === 'yes' ? ' gradient' : '';
512
 
513
  $second_grad = $settings['premium_dual_header_second_animated'] === 'yes' ? ' gradient' : '';
514
 
515
- $full_first_title_tag = '<' . $first_title_tag . ' class="premium-dual-header-first-header ' . $first_clip . $first_grad . '"><span class="premium-dual-header-first-span">'. $first_title_text . '</span><span class="premium-dual-header-second-header ' . $second_clip . $second_grad . '">'. $second_title_text . '</span></' . $settings['premium_dual_header_first_header_tag'] . '> ';
516
 
517
  $link = '';
518
  if( $settings['premium_dual_header_link_switcher'] == 'yes' && $settings['premium_dual_heading_link_selection'] == 'link' ) {
@@ -528,7 +616,7 @@ class Premium_Dual_Header extends Widget_Base {
528
  <a href="<?php echo esc_attr( $link ); ?>" <?php if( ! empty( $settings['premium_dual_heading_link']['is_external'] ) ) : ?> target="_blank" <?php endif; ?><?php if( ! empty( $settings['premium_dual_heading_link']['nofollow'] ) ) : ?> rel="nofollow" <?php endif; ?>>
529
  <?php endif; ?>
530
  <div class="premium-dual-header-first-container">
531
- <?php echo $full_first_title_tag; ?>
532
  </div>
533
  <?php if( ! empty ( $link ) ) : ?>
534
  </a>
@@ -555,20 +643,30 @@ class Premium_Dual_Header extends Widget_Base {
555
 
556
  firstClip = '',
557
 
558
- secondClip = '';
 
 
 
 
559
 
560
  if( 'clipped' === settings.premium_dual_header_first_back_clip )
561
  firstClip = "premium-dual-header-first-clip";
562
 
563
  if( 'clipped' === settings.premium_dual_header_second_back_clip )
564
  secondClip = "premium-dual-header-second-clip";
 
 
 
 
 
 
565
 
566
  var firstGrad = 'yes' === settings.premium_dual_header_first_animated ? ' gradient' : '',
567
 
568
  secondGrad = 'yes' === settings.premium_dual_header_second_animated ? ' gradient' : '';
569
 
570
- view.addRenderAttribute('first_title', 'class', ['premium-dual-header-first-header', firstClip, firstGrad ] );
571
- view.addRenderAttribute('second_title', 'class', ['premium-dual-header-second-header', secondClip, secondGrad ] );
572
 
573
  if( 'yes' == settings.premium_dual_header_link_switcher && 'link' == settings.premium_dual_heading_link_selection ) {
574
  var link = settings.premium_dual_heading_existing_link;
@@ -584,7 +682,7 @@ class Premium_Dual_Header extends Widget_Base {
584
  <# } #>
585
  <div class="premium-dual-header-first-container">
586
  <{{{firstTag}}} {{{ view.getRenderAttributeString('first_title') }}}>
587
- <span class="premium-dual-header-first-span">{{{ firstText }}}</span><span {{{ view.getRenderAttributeString('second_title') }}}>{{{ secondText }}}</span>
588
  </{{{firstTag}}}>
589
 
590
  </div>
284
  ]
285
  );
286
 
287
+ $this->add_control('premium_dual_header_first_stroke',
288
+ [
289
+ 'label' => __('Stroke', 'premium-addons-for-elementor'),
290
+ 'type' => Controls_Manager::SWITCHER,
291
+ 'condition' => [
292
+ 'premium_dual_header_first_back_clip' => 'clipped'
293
+ ],
294
+ ]
295
+ );
296
+
297
+ $this->add_control('premium_dual_header_first_stroke_color',
298
+ [
299
+ 'label' => __('Stroke Fill Color', 'premium-addons-for-elementor'),
300
+ 'type' => Controls_Manager::COLOR,
301
+ 'condition' => [
302
+ 'premium_dual_header_first_back_clip' => 'clipped',
303
+ 'premium_dual_header_first_stroke' => 'yes'
304
+ ],
305
+ 'selectors' => [
306
+ '{{WRAPPER}} .premium-dual-header-first-clip.stroke .premium-dual-header-first-span' => '-webkit-text-fill-color: {{VALUE}};'
307
+ ]
308
+ ]
309
+ );
310
+
311
+ $this->add_control('premium_dual_header_first_stroke_width',
312
+ [
313
+ 'label' => __('Stroke Fill Width', 'premium-addons-for-elementor'),
314
+ 'type' => Controls_Manager::SLIDER,
315
+ 'condition' => [
316
+ 'premium_dual_header_first_back_clip' => 'clipped',
317
+ 'premium_dual_header_first_stroke' => 'yes'
318
+ ],
319
+ 'selectors' => [
320
+ '{{WRAPPER}} .premium-dual-header-first-clip.stroke .premium-dual-header-first-span' => '-webkit-text-stroke-width: {{SIZE}}px;'
321
+ ]
322
+ ]
323
+ );
324
+
325
  /*First Border*/
326
  $this->add_group_control(
327
  Group_Control_Border::get_type(),
328
  [
329
  'name' => 'first_header_border',
330
+ 'selector' => '{{WRAPPER}} .premium-dual-header-first-span',
331
+ 'separator' => 'before'
332
  ]
333
  );
334
 
360
  'label' => __('Margin', 'premium-addons-for-elementor'),
361
  'type' => Controls_Manager::DIMENSIONS,
362
  'size_units' => [ 'px', 'em', '%' ],
363
+ 'separator' => 'before',
364
  'selectors' => [
365
  '{{WRAPPER}} .premium-dual-header-first-span' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
366
  ]
466
  ]
467
  );
468
 
469
+ $this->add_control('premium_dual_header_second_stroke',
470
+ [
471
+ 'label' => __('Stroke', 'premium-addons-for-elementor'),
472
+ 'type' => Controls_Manager::SWITCHER,
473
+ 'condition' => [
474
+ 'premium_dual_header_second_back_clip' => 'clipped'
475
+ ],
476
+ ]
477
+ );
478
+
479
+ $this->add_control('premium_dual_header_second_stroke_color',
480
+ [
481
+ 'label' => __('Stroke Fill Color', 'premium-addons-for-elementor'),
482
+ 'type' => Controls_Manager::COLOR,
483
+ 'condition' => [
484
+ 'premium_dual_header_second_back_clip' => 'clipped',
485
+ 'premium_dual_header_second_stroke' => 'yes'
486
+ ],
487
+ 'selectors' => [
488
+ '{{WRAPPER}} .premium-dual-header-second-clip.stroke' => '-webkit-text-fill-color: {{VALUE}};'
489
+ ]
490
+ ]
491
+ );
492
+
493
+ $this->add_control('premium_dual_header_second_stroke_width',
494
+ [
495
+ 'label' => __('Stroke Fill Width', 'premium-addons-for-elementor'),
496
+ 'type' => Controls_Manager::SLIDER,
497
+ 'condition' => [
498
+ 'premium_dual_header_second_back_clip' => 'clipped',
499
+ 'premium_dual_header_second_stroke' => 'yes'
500
+ ],
501
+ 'selectors' => [
502
+ '{{WRAPPER}} .premium-dual-header-second-clip.stroke' => '-webkit-text-stroke-width: {{SIZE}}px;'
503
+ ]
504
+ ]
505
+ );
506
+
507
  /*Second Border*/
508
  $this->add_group_control(
509
  Group_Control_Border::get_type(),
510
  [
511
  'name' => 'second_header_border',
512
+ 'selector' => '{{WRAPPER}} .premium-dual-header-second-header',
513
+ 'separator' => 'before'
514
  ]
515
  );
516
 
541
  [
542
  'label' => __('Margin', 'premium-addons-for-elementor'),
543
  'type' => Controls_Manager::DIMENSIONS,
544
+ 'separator' => 'before',
545
  'size_units' => [ 'px', 'em', '%' ],
546
  'selectors' => [
547
  '{{WRAPPER}} .premium-dual-header-second-header' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
583
  $first_clip = '';
584
 
585
  $second_clip = '';
586
+
587
+ $first_stroke = '';
588
 
589
+ $second_stroke = '';
590
 
591
+ if( 'clipped' === $settings['premium_dual_header_first_back_clip'] ) : $first_clip = "premium-dual-header-first-clip"; endif;
592
+
593
+ if( 'clipped' === $settings['premium_dual_header_second_back_clip'] ) : $second_clip = "premium-dual-header-second-clip"; endif;
594
+
595
+ if( ! empty( $first_clip ) && 'yes' === $settings['premium_dual_header_first_stroke'] ) : $first_stroke = " stroke"; endif;
596
+
597
+ if( ! empty( $second_clip ) && 'yes' === $settings['premium_dual_header_second_stroke'] ) : $second_stroke = " stroke"; endif;
598
 
599
  $first_grad = $settings['premium_dual_header_first_animated'] === 'yes' ? ' gradient' : '';
600
 
601
  $second_grad = $settings['premium_dual_header_second_animated'] === 'yes' ? ' gradient' : '';
602
 
603
+ $full_title = '<' . $first_title_tag . ' class="premium-dual-header-first-header ' . $first_clip . $first_stroke . $first_grad . '"><span class="premium-dual-header-first-span">'. $first_title_text . '</span><span class="premium-dual-header-second-header ' . $second_clip . $second_stroke . $second_grad . '">'. $second_title_text . '</span></' . $settings['premium_dual_header_first_header_tag'] . '> ';
604
 
605
  $link = '';
606
  if( $settings['premium_dual_header_link_switcher'] == 'yes' && $settings['premium_dual_heading_link_selection'] == 'link' ) {
616
  <a href="<?php echo esc_attr( $link ); ?>" <?php if( ! empty( $settings['premium_dual_heading_link']['is_external'] ) ) : ?> target="_blank" <?php endif; ?><?php if( ! empty( $settings['premium_dual_heading_link']['nofollow'] ) ) : ?> rel="nofollow" <?php endif; ?>>
617
  <?php endif; ?>
618
  <div class="premium-dual-header-first-container">
619
+ <?php echo $full_title; ?>
620
  </div>
621
  <?php if( ! empty ( $link ) ) : ?>
622
  </a>
643
 
644
  firstClip = '',
645
 
646
+ secondClip = '',
647
+
648
+ firstStroke = '',
649
+
650
+ secondStroke = '';
651
 
652
  if( 'clipped' === settings.premium_dual_header_first_back_clip )
653
  firstClip = "premium-dual-header-first-clip";
654
 
655
  if( 'clipped' === settings.premium_dual_header_second_back_clip )
656
  secondClip = "premium-dual-header-second-clip";
657
+
658
+ if( 'yes' === settings.premium_dual_header_first_stroke )
659
+ firstStroke = "stroke";
660
+
661
+ if( 'yes' === settings.premium_dual_header_second_stroke )
662
+ secondStroke = "stroke";
663
 
664
  var firstGrad = 'yes' === settings.premium_dual_header_first_animated ? ' gradient' : '',
665
 
666
  secondGrad = 'yes' === settings.premium_dual_header_second_animated ? ' gradient' : '';
667
 
668
+ view.addRenderAttribute('first_title', 'class', ['premium-dual-header-first-header', firstClip, firstGrad, firstStroke ] );
669
+ view.addRenderAttribute('second_title', 'class', ['premium-dual-header-second-header', secondClip, secondGrad, secondStroke ] );
670
 
671
  if( 'yes' == settings.premium_dual_header_link_switcher && 'link' == settings.premium_dual_heading_link_selection ) {
672
  var link = settings.premium_dual_heading_existing_link;
682
  <# } #>
683
  <div class="premium-dual-header-first-container">
684
  <{{{firstTag}}} {{{ view.getRenderAttributeString('first_title') }}}>
685
+ <span class="premium-dual-header-first-span">{{{ firstText }}}</span><span {{{ view.getRenderAttributeString('second_title') }}}>{{{ secondText }}}</span>
686
  </{{{firstTag}}}>
687
 
688
  </div>