PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.11.62
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.11.62
4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / addons / wrapper-link.php
premium-addons-for-elementor / addons Last commit date
display-conditions.php 5 months ago equal-height.php 5 months ago floating-effects.php 5 months ago liquid-glass.php 5 months ago shape-divider.php 5 months ago shapes.php 5 months ago tooltips.php 5 months ago wrapper-link.php 5 months ago
wrapper-link.php
254 lines
1 <?php
2 /**
3 * Class: Wrapper_Link
4 * Name: Wrapper Link
5 * Slug: premium-wrapper-link
6 */
7
8 namespace PremiumAddons\Addons;
9
10 // Elementor Classes.
11 use Elementor\Controls_Manager;
12
13 // Premium Addons Classes.
14 use PremiumAddons\Admin\Includes\Admin_Helper;
15 use PremiumAddons\Includes\Helper_Functions;
16 use PremiumAddons\Includes\Controls\Premium_Post_Filter;
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit; // If this file is called directly, abort.
20 }
21
22 /**
23 * Class Wrapper_Link.
24 */
25 class Wrapper_Link {
26
27 /**
28 * Load Script
29 *
30 * @var $load_script
31 */
32 private static $load_script = null;
33
34 /**
35 * Class object
36 *
37 * @var instance
38 */
39 private static $instance = null;
40
41 /**
42 * Class Constructor Function.
43 */
44 public function __construct() {
45
46 // Enqueue the required JS file.
47 add_action( 'elementor/preview/enqueue_scripts', array( $this, 'enqueue_scripts' ) );
48
49 // Creates Premium Wrapper Link tab at the end of layout/content tab.
50 add_action( 'elementor/element/section/section_layout/after_section_end', array( $this, 'register_controls' ) );
51 add_action( 'elementor/element/column/section_advanced/after_section_end', array( $this, 'register_controls' ) );
52 add_action( 'elementor/element/common/_section_style/after_section_end', array( $this, 'register_controls' ) );
53
54 add_action( 'elementor/frontend/before_render', array( $this, 'check_script_enqueue' ) );
55
56 add_action( 'elementor/element/container/section_layout/after_section_end', array( $this, 'register_controls' ) );
57 add_action( 'elementor/frontend/before_render', array( $this, 'before_render' ), 100 );
58 }
59
60 /**
61 * Register Global Tooltip controls.
62 *
63 * @since 1.0.0
64 * @access public
65 * @param object $element for current element.
66 */
67 public function register_controls( $element ) {
68
69 $tabs = Controls_Manager::TAB_CONTENT;
70
71 if ( 'section' === $element->get_name() || 'column' === $element->get_name() || 'container' === $element->get_name() ) {
72 $tabs = Controls_Manager::TAB_LAYOUT;
73 }
74
75 $element->start_controls_section(
76 'section_premium_wrapper_link',
77 array(
78 'label' => sprintf( '<i class="pa-extension-icon pa-dash-icon"></i> %s', __( 'Wrapper Link', 'premium-addons-for-elementor' ) ),
79 'tab' => $tabs,
80 )
81 );
82
83 $element->add_control(
84 'premium_wrapper_link_switcher',
85 array(
86 'label' => __( 'Enable Wrapper Link', 'premium-addons-for-elementor' ),
87 'type' => Controls_Manager::SWITCHER,
88 'prefix_class' => 'premium-wrapper-link-',
89 )
90 );
91
92 $element->add_control(
93 'wrapper_link_notice',
94 array(
95 'raw' => __( 'Please note that Wrapper Link works on the frontend.', 'premium-addons-for-elementor' ),
96 'type' => Controls_Manager::RAW_HTML,
97 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
98 'condition' => array(
99 'premium_wrapper_link_switcher' => 'yes',
100 ),
101 )
102 );
103
104 $element->add_control(
105 'premium_wrapper_link_selection',
106 array(
107 'label' => __( 'Link Type', 'premium-addons-for-elementor' ),
108 'type' => Controls_Manager::SELECT,
109 'options' => array(
110 'url' => __( 'URL', 'premium-addons-for-elementor' ),
111 'link' => __( 'Existing Page', 'premium-addons-for-elementor' ),
112 ),
113 'default' => 'url',
114 'label_block' => true,
115 'condition' => array(
116 'premium_wrapper_link_switcher' => 'yes',
117 ),
118 )
119 );
120
121 $element->add_control(
122 'premium_wrapper_link',
123 array(
124 'label' => __( 'Link', 'premium-addons-for-elementor' ),
125 'type' => Controls_Manager::URL,
126 'dynamic' => array(
127 'active' => true,
128 ),
129 'placeholder' => 'https://example.com',
130 'condition' => array(
131 'premium_wrapper_link_switcher' => 'yes',
132 'premium_wrapper_link_selection' => 'url',
133 ),
134 )
135 );
136
137 $element->add_control(
138 'premium_wrapper_existing_link',
139 array(
140 'label' => __( 'Existing Page', 'premium-addons-for-elementor' ),
141 'type' => Premium_Post_Filter::TYPE,
142 'label_block' => true,
143 'multiple' => false,
144 'source' => array( 'post', 'page' ),
145 'condition' => array(
146 'premium_wrapper_link_switcher' => 'yes',
147 'premium_wrapper_link_selection' => 'link',
148 ),
149 )
150 );
151
152 $element->end_controls_section();
153 }
154
155
156 /**
157 * Render Wrapper Link output on the frontend.
158 *
159 * Written in PHP and used to generate the final HTML.
160 *
161 * @since 1.0.0
162 * @access public
163 * @param object $element for current element.
164 */
165 public function before_render( $element ) {
166
167 $settings = $element->get_settings_for_display();
168
169 if ( 'yes' === $element->get_settings_for_display( 'premium_wrapper_link_switcher' ) ) {
170
171 if ( 'link' === $settings['premium_wrapper_link_selection'] ) {
172 $href = get_permalink( $settings['premium_wrapper_existing_link'] );
173 } else {
174 $href = $settings['premium_wrapper_link']['url'];
175 }
176
177 $link_settings = array(
178 'type' => $settings['premium_wrapper_link_selection'],
179 'link' => $settings['premium_wrapper_link'],
180 'href' => esc_url( $href ),
181 );
182
183 if ( ! empty( $href ) ) {
184 $element->add_render_attribute(
185 '_wrapper',
186 array(
187 'data-premium-element-link' => wp_json_encode( $link_settings ),
188 'style' => 'cursor: pointer',
189 )
190 );
191 }
192 }
193 }
194
195 /**
196 * Enqueue scripts.
197 *
198 * Registers required dependencies for the extension and enqueues them.
199 *
200 * @since 1.6.5
201 * @access public
202 */
203 public function enqueue_scripts() {
204
205 if ( ! wp_script_is( 'pa-wrapper-link', 'enqueued' ) ) {
206 wp_enqueue_script( 'pa-wrapper-link' );
207 }
208 }
209
210 /**
211 * Check Script Enqueue
212 *
213 * Check if the script files should be loaded.
214 *
215 * @since 4.7.7
216 * @access public
217 */
218 public function check_script_enqueue( $element ) {
219
220 if ( self::$load_script ) {
221 return;
222 }
223
224 if ( 'yes' === $element->get_settings_for_display( 'premium_wrapper_link_switcher' ) ) {
225
226 $this->enqueue_scripts();
227
228 self::$load_script = true;
229
230 remove_action( 'elementor/frontend/before_render', array( $this, 'check_script_enqueue' ) );
231
232 }
233 }
234
235 /**
236 * Creates and returns an instance of the class
237 *
238 * @since 4.2.5
239 * @access public
240 *
241 * @return object
242 */
243 public static function get_instance() {
244
245 if ( ! isset( self::$instance ) ) {
246
247 self::$instance = new self();
248
249 }
250
251 return self::$instance;
252 }
253 }
254