Premium Addons for Elementor - Version 3.8.3

Version Description

  • Tweak: Added more action buttons to the plugin on Plugins page.
  • Tweak: Added posts to Existing Page link option in all widgets.
  • Fixed: Google Chrome console erros with Vertical Scroll widget.
  • Fixed: Page scroll is disabled even after Vertical Scroll slides are fully scrolled.
Download this release

Release Info

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

Code changes from version 3.8.2 to 3.8.3

admin/includes/admin-notices.php CHANGED
@@ -21,14 +21,15 @@ class Admin_Notices {
21
  */
22
  public function __construct() {
23
 
24
- add_action('admin_init', array( $this, 'init') );
25
 
26
- add_action('admin_notices', array( $this, 'admin_notices' ) );
27
 
28
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
29
 
30
  add_action( 'wp_ajax_pa_dismiss_admin_notice', array( $this, 'dismiss_admin_notice' ) );
31
 
 
32
  }
33
 
34
  /**
@@ -147,7 +148,7 @@ class Admin_Notices {
147
 
148
  if( ! defined('ELEMENTOR_VERSION' ) ) {
149
 
150
- if ( ! self::is_plugin_installed( $elementor_path ) ) {
151
 
152
  if( self::check_user_can( 'install_plugins' ) ) {
153
 
@@ -243,7 +244,7 @@ class Admin_Notices {
243
 
244
  if( ! defined('PREMIUM_BLOCKS_VERSION' ) ) {
245
 
246
- if ( ! self::is_plugin_installed( $pbg_path ) && self::check_user_can( 'install_plugins' ) ) {
247
 
248
  $pbg_notice = get_option( 'pbg_notice' );
249
 
@@ -309,19 +310,6 @@ class Admin_Notices {
309
  }
310
 
311
 
312
- /**
313
- * Checks if a plugin is installed
314
- *
315
- * @since 1.0.0
316
- * @return boolean
317
- *
318
- */
319
- public static function is_plugin_installed( $plugin_path ){
320
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
321
- $plugins = get_plugins();
322
- return isset( $plugins[ $plugin_path ] );
323
- }
324
-
325
  /**
326
  * Checks user credentials for specific action
327
  *
21
  */
22
  public function __construct() {
23
 
24
+ add_action( 'admin_init', array( $this, 'init') );
25
 
26
+ add_action( 'admin_notices', array( $this, 'admin_notices' ) );
27
 
28
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
29
 
30
  add_action( 'wp_ajax_pa_dismiss_admin_notice', array( $this, 'dismiss_admin_notice' ) );
31
 
32
+
33
  }
34
 
35
  /**
148
 
149
  if( ! defined('ELEMENTOR_VERSION' ) ) {
150
 
151
+ if ( ! Helper_Functions::is_plugin_installed( $elementor_path ) ) {
152
 
153
  if( self::check_user_can( 'install_plugins' ) ) {
154
 
244
 
245
  if( ! defined('PREMIUM_BLOCKS_VERSION' ) ) {
246
 
247
+ if ( ! Helper_Functions::is_plugin_installed( $pbg_path ) && self::check_user_can( 'install_plugins' ) ) {
248
 
249
  $pbg_notice = get_option( 'pbg_notice' );
250
 
310
  }
311
 
312
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  /**
314
  * Checks user credentials for specific action
315
  *
admin/includes/version-control.php CHANGED
@@ -92,7 +92,7 @@ class Version_Control {
92
  <tr class="pa-roll-row">
93
  <th><?php echo __('Rollback Version', 'premium-addons-for-elementor'); ?></th>
94
  <td>
95
- <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.8.1', 'premium-addons-for-elementor') ); ?></div>
96
  <p class="pa-roll-desc">
97
  <span><?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?></span>
98
  </p>
92
  <tr class="pa-roll-row">
93
  <th><?php echo __('Rollback Version', 'premium-addons-for-elementor'); ?></th>
94
  <td>
95
+ <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' ), __('Rollback to Version 3.8.2', 'premium-addons-for-elementor') ); ?></div>
96
  <p class="pa-roll-desc">
97
  <span><?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?></span>
98
  </p>
admin/settings/modules-setting.php CHANGED
@@ -26,9 +26,9 @@ class Modules_Settings {
26
 
27
  add_action( 'wp_ajax_pa_save_admin_addons_settings', array( $this, 'pa_save_settings' ) );
28
 
29
- add_action('admin_enqueue_scripts',array( $this, 'localize_js_script' ) );
30
 
31
- add_filter( 'plugin_action_links_' . PREMIUM_ADDONS_BASENAME, array( $this, 'plugin_settings_page' ) );
32
 
33
  }
34
 
@@ -37,13 +37,26 @@ class Modules_Settings {
37
  * @since 1.0.0
38
  * @return void
39
  */
40
- public function plugin_settings_page( $links ) {
41
 
 
 
 
 
42
  $settings_link = sprintf( '<a href="%1$s">%2$s</a>', admin_url( 'admin.php?page=' . $this->page_slug ), __( 'Settings', 'premium-addons-for-elementor' ) );
 
 
 
 
 
 
 
 
 
 
 
43
 
44
- array_unshift( $links, $settings_link );
45
-
46
- return $links;
47
  }
48
 
49
  public function localize_js_script(){
@@ -171,7 +184,7 @@ class Modules_Settings {
171
  <h1 class="pa-title-main"><?php echo Helper_Functions::name(); ?></h1>
172
  <h3 class="pa-title-sub"><?php echo sprintf(__('Thank you for using %s. This plugin has been developed by %s and we hope you enjoy using it.','premium-addons-for-elementor'), Helper_Functions::name(), Helper_Functions::author() ); ?></h3>
173
  </div>
174
- <?php if( ! Helper_Functions::is_show_logo()) : ?>
175
  <div class="pa-title-right">
176
  <img class="pa-logo" src="<?php echo PREMIUM_ADDONS_URL . 'admin/images/premium-addons-logo.png';?>">
177
  </div>
@@ -394,7 +407,7 @@ class Modules_Settings {
394
 
395
  </tr>
396
 
397
- <?php if( ! defined('PREMIUM_PRO_ADDONS_VERSION') ) : ?>
398
  <tr class="pa-sec-elems-tr"><th><h1>PRO Elements</h1></th></tr>
399
 
400
  <tr>
26
 
27
  add_action( 'wp_ajax_pa_save_admin_addons_settings', array( $this, 'pa_save_settings' ) );
28
 
29
+ add_action( 'admin_enqueue_scripts',array( $this, 'localize_js_script' ) );
30
 
31
+ add_filter( 'plugin_action_links_' . PREMIUM_ADDONS_BASENAME, array( $this, 'insert_action_links' ) );
32
 
33
  }
34
 
37
  * @since 1.0.0
38
  * @return void
39
  */
40
+ public function insert_action_links( $links ) {
41
 
42
+ $papro_path = 'premium-addons-pro/premium-addons-pro-for-elementor.php';
43
+
44
+ $is_papro_installed = Helper_Functions::is_plugin_installed( $papro_path );
45
+
46
  $settings_link = sprintf( '<a href="%1$s">%2$s</a>', admin_url( 'admin.php?page=' . $this->page_slug ), __( 'Settings', 'premium-addons-for-elementor' ) );
47
+
48
+ $rollback_link = sprintf( '<a href="%1$s">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __( 'Rollback to Version ' . PREMIUM_ADDONS_STABLE_VERSION, 'premium-addons-for-elementor' ) );
49
+
50
+ $new_links = array( $settings_link, $rollback_link );
51
+
52
+ if( ! $is_papro_installed ) {
53
+ $pro_link = sprintf( '<a href="https://premiumaddons.com/pro/" target="_blank" style="color: #39b54a; font-weight: bold;">%s</a>', __( 'Go Pro', 'premium-addons-for-elementor' ) );
54
+ array_push ( $new_links, $pro_link );
55
+ }
56
+
57
+ $new_links = array_merge( $links, $new_links );
58
 
59
+ return $new_links;
 
 
60
  }
61
 
62
  public function localize_js_script(){
184
  <h1 class="pa-title-main"><?php echo Helper_Functions::name(); ?></h1>
185
  <h3 class="pa-title-sub"><?php echo sprintf(__('Thank you for using %s. This plugin has been developed by %s and we hope you enjoy using it.','premium-addons-for-elementor'), Helper_Functions::name(), Helper_Functions::author() ); ?></h3>
186
  </div>
187
+ <?php if( ! Helper_Functions::is_show_logo() ) : ?>
188
  <div class="pa-title-right">
189
  <img class="pa-logo" src="<?php echo PREMIUM_ADDONS_URL . 'admin/images/premium-addons-logo.png';?>">
190
  </div>
407
 
408
  </tr>
409
 
410
+ <?php if( ! defined( 'PREMIUM_PRO_ADDONS_VERSION' ) ) : ?>
411
  <tr class="pa-sec-elems-tr"><th><h1>PRO Elements</h1></th></tr>
412
 
413
  <tr>
assets/frontend/js/premium-vscroll.js CHANGED
@@ -23,7 +23,7 @@
23
  $menuItems = $(".premium-vscroll-nav-item", $instance),
24
  defaultSettings = {
25
  speed: 700,
26
- offset: 1,
27
  fullSection: true
28
  },
29
  settings = $.extend({}, defaultSettings, settings),
@@ -180,13 +180,13 @@
180
  if ( checkTemps ) {
181
 
182
  document.addEventListener
183
- ? vSection.addEventListener( "wheel", self.onWheel, !1 )
184
  : vSection.attachEvent( "onmousewheel", self.onWheel );
185
 
186
  } else {
187
 
188
  document.addEventListener
189
- ? document.addEventListener( "wheel", self.onWheel, !1 )
190
  : document.attachEvent( "onmousewheel", self.onWheel );
191
 
192
  }
@@ -347,7 +347,7 @@
347
  }
348
 
349
  if ( sectionId && sections.hasOwnProperty( sectionId ) ) {
350
-
351
  prevSectionId = self.checkPrevSection( sections, sectionId );
352
  nextSectionId = self.checkNextSection( sections, sectionId );
353
 
@@ -407,6 +407,8 @@
407
  }
408
  }
409
 
 
 
410
  }
411
 
412
  };
@@ -706,7 +708,7 @@
706
  ).removeClass("premium-vscroll-dots-hide");
707
  }
708
  }
709
-
710
  if ( beforeCheck() ) {
711
  sectionId = getFirstSection(sections);
712
  }
@@ -715,7 +717,7 @@
715
  sectionId = getLastSection(sections);
716
  }
717
 
718
- if ( sectionId && sections.hasOwnProperty( sectionId )) {
719
 
720
  prevSectionId = self.checkPrevSection(sections, sectionId);
721
  nextSectionId = self.checkNextSection(sections, sectionId);
@@ -750,7 +752,7 @@
750
  inScope = false;
751
  var $lastselector = checkTemps
752
  ? $instance
753
- : $("#" + sectionId);
754
  if ("down" === direction) {
755
  if (
756
  $lastselector.offset().top +
@@ -774,6 +776,8 @@
774
  }
775
  }
776
  }
 
 
777
  }
778
  };
779
 
23
  $menuItems = $(".premium-vscroll-nav-item", $instance),
24
  defaultSettings = {
25
  speed: 700,
26
+ offset: 0,
27
  fullSection: true
28
  },
29
  settings = $.extend({}, defaultSettings, settings),
180
  if ( checkTemps ) {
181
 
182
  document.addEventListener
183
+ ? vSection.addEventListener( "wheel", self.onWheel, { passive: false } )
184
  : vSection.attachEvent( "onmousewheel", self.onWheel );
185
 
186
  } else {
187
 
188
  document.addEventListener
189
+ ? document.addEventListener( "wheel", self.onWheel, { passive: false } )
190
  : document.attachEvent( "onmousewheel", self.onWheel );
191
 
192
  }
347
  }
348
 
349
  if ( sectionId && sections.hasOwnProperty( sectionId ) ) {
350
+
351
  prevSectionId = self.checkPrevSection( sections, sectionId );
352
  nextSectionId = self.checkNextSection( sections, sectionId );
353
 
407
  }
408
  }
409
 
410
+ } else {
411
+ inScope = false;
412
  }
413
 
414
  };
708
  ).removeClass("premium-vscroll-dots-hide");
709
  }
710
  }
711
+
712
  if ( beforeCheck() ) {
713
  sectionId = getFirstSection(sections);
714
  }
717
  sectionId = getLastSection(sections);
718
  }
719
 
720
+ if ( sectionId && sections.hasOwnProperty( sectionId ) ) {
721
 
722
  prevSectionId = self.checkPrevSection(sections, sectionId);
723
  nextSectionId = self.checkNextSection(sections, sectionId);
752
  inScope = false;
753
  var $lastselector = checkTemps
754
  ? $instance
755
+ : $( "#" + sectionId );
756
  if ("down" === direction) {
757
  if (
758
  $lastselector.offset().top +
776
  }
777
  }
778
  }
779
+ } else {
780
+ inScope = false;
781
  }
782
  };
783
 
includes/class-helper-functions.php CHANGED
@@ -173,6 +173,22 @@ class Helper_Functions {
173
 
174
  }
175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  /**
177
  * Get Installed Theme
178
  *
173
 
174
  }
175
 
176
+ /**
177
+ * Checks if a plugin is installed
178
+ *
179
+ * @since 1.0.0
180
+ * @return boolean
181
+ *
182
+ */
183
+ public static function is_plugin_installed( $plugin_path ) {
184
+
185
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
186
+
187
+ $plugins = get_plugins();
188
+
189
+ return isset( $plugins[ $plugin_path ] );
190
+ }
191
+
192
  /**
193
  * Get Installed Theme
194
  *
includes/elementor-helper.php CHANGED
@@ -47,18 +47,9 @@ class premium_Template_Tags {
47
 
48
  public function get_all_post() {
49
 
50
- $post_types = get_post_types();
51
- $post_type_not__in = array('attachment', 'revision', 'nav_menu_item', 'custom_css', 'customize_changeset', 'elementor_library', 'post');
52
-
53
- foreach ( $post_type_not__in as $post_type_not ) {
54
- unset( $post_types[$post_type_not] );
55
- }
56
- $post_type = array_values( $post_types );
57
-
58
-
59
  $all_posts = get_posts( array(
60
  'posts_per_page' => -1,
61
- 'post_type' => 'page',
62
  )
63
  );
64
  if( !empty( $all_posts ) && !is_wp_error( $all_posts ) ) {
47
 
48
  public function get_all_post() {
49
 
 
 
 
 
 
 
 
 
 
50
  $all_posts = get_posts( array(
51
  'posts_per_page' => -1,
52
+ 'post_type' => array ( 'page', 'post' ),
53
  )
54
  );
55
  if( !empty( $all_posts ) && !is_wp_error( $all_posts ) ) {
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.8.2
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.8.2');
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.8.1');
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.8.3
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.8.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.8.2');
23
 
24
  if( ! class_exists('Premium_Addons_Elementor') ) {
25
 
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
- === Premium Addons for Elementor ===
2
  Contributors: Leap13, Rimoun
3
  Tags: Elementor, Elementor Page Builder, Elements, Elementor Addons, Add-ons, Page Builder, Widgets, Elementor Widgets
4
  Donate Link: https://premiumaddons.com/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme
5
  Requires at Least: 4.5
6
  Tested Up To: 5.2.4
7
  Requires PHP: 5.4
8
- Stable Tag: 3.8.2
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
@@ -175,6 +175,13 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
175
 
176
  == Changelog ==
177
 
 
 
 
 
 
 
 
178
  = 3.8.2 =
179
 
180
  - Fixed: SVG icons size option not working in all widgets.
1
+ === Premium Addons for Elementor ===
2
  Contributors: Leap13, Rimoun
3
  Tags: Elementor, Elementor Page Builder, Elements, Elementor Addons, Add-ons, Page Builder, Widgets, Elementor Widgets
4
  Donate Link: https://premiumaddons.com/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme
5
  Requires at Least: 4.5
6
  Tested Up To: 5.2.4
7
  Requires PHP: 5.4
8
+ Stable Tag: 3.8.3
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
175
 
176
  == Changelog ==
177
 
178
+ = 3.8.3 =
179
+
180
+ - Tweak: Added more action buttons to the plugin on Plugins page.
181
+ - Tweak: Added posts to `Existing Page` link option in all widgets.
182
+ - Fixed: Google Chrome console erros with Vertical Scroll widget.
183
+ - Fixed: Page scroll is disabled even after Vertical Scroll slides are fully scrolled.
184
+
185
  = 3.8.2 =
186
 
187
  - Fixed: SVG icons size option not working in all widgets.
widgets/premium-grid.php CHANGED
@@ -554,7 +554,7 @@ class Premium_Grid extends Widget_Base {
554
  'label_block' => true,
555
  'condition' => [
556
  'premium_gallery_img_link_type' => 'url',
557
- 'premium_gallery_video!' => 'true',
558
  ]
559
  ]);
560
 
@@ -570,7 +570,8 @@ class Premium_Grid extends Widget_Base {
570
  'separator' => 'after',
571
  'label_block' => true,
572
  'condition' => [
573
- 'premium_gallery_video!' => 'true',
 
574
  ]
575
  ]);
576
 
@@ -2419,7 +2420,7 @@ class Premium_Grid extends Widget_Base {
2419
  'rel' => $no_follow
2420
  ]);
2421
 
2422
- } elseif( 'link' === $item['premium_gallery_img_link_type'] && ! empty( $item['premium_gallery_img_existing']['url'] ) ) {
2423
 
2424
  $icon_link = get_permalink( $item['premium_gallery_img_existing'] );
2425
 
554
  'label_block' => true,
555
  'condition' => [
556
  'premium_gallery_img_link_type' => 'url',
557
+ 'premium_gallery_video!' => 'true',
558
  ]
559
  ]);
560
 
570
  'separator' => 'after',
571
  'label_block' => true,
572
  'condition' => [
573
+ 'premium_gallery_img_link_type' => 'link',
574
+ 'premium_gallery_video!' => 'true',
575
  ]
576
  ]);
577
 
2420
  'rel' => $no_follow
2421
  ]);
2422
 
2423
+ } elseif( 'link' === $item['premium_gallery_img_link_type'] && ! empty( $item['premium_gallery_img_existing'] ) ) {
2424
 
2425
  $icon_link = get_permalink( $item['premium_gallery_img_existing'] );
2426
 
widgets/premium-vscroll.php CHANGED
@@ -78,8 +78,8 @@ class Premium_Vscroll extends Widget_Base {
78
  'label' => __('Content Type', 'premium-addons-for-elementor'),
79
  'type' => Controls_Manager::SELECT,
80
  'options' => [
81
- 'ids' => __('Section ID', 'premium-addons-for-elementor'),
82
- 'templates' => __('Elementor Templates', 'premium-addons-for-elementor')
83
  ],
84
  'default' => 'templates',
85
  'description' => __('Choose which method you prefer to insert sections.', 'premium-addons-for-elementor')
78
  'label' => __('Content Type', 'premium-addons-for-elementor'),
79
  'type' => Controls_Manager::SELECT,
80
  'options' => [
81
+ 'templates' => __('Elementor Templates', 'premium-addons-for-elementor'),
82
+ 'ids' => __('Section ID', 'premium-addons-for-elementor')
83
  ],
84
  'default' => 'templates',
85
  'description' => __('Choose which method you prefer to insert sections.', 'premium-addons-for-elementor')