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>