PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.2.7
Easy Elements for Elementor – Addons & Website Templates v1.2.7
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 All 47 releases
easy-elements / includes / Extensions / WrapperLink / EasyelWrapperLink.php

EasyelWrapperLink.php in Easy Elements for Elementor – Addons & Website Templates 1.2.7, at includes/Extensions/WrapperLink/EasyelWrapperLink.php

129 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Easyel\EasyElements\Extensions\WrapperLink;
3 use Easyel\EasyElements\Extensions\WrapperLink\Controls\LinkControls;
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 final class EasyelWrapperLink {
9
10 private static $instance = null;
11
12 public static function get_instance() {
13 if ( null === self::$instance ) {
14 self::$instance = new self();
15 self::$instance->easyel_setup_hooks();
16 }
17 return self::$instance;
18 }
19
20 private function easyel_setup_hooks() {
21
22 $tab_slug = 'extensions';
23 $extensions_settings = get_option('easy_element_' . $tab_slug, [] );
24
25 $enable_wrapper_link = isset( $extensions_settings['enable_wrapper_link'] ) ? $extensions_settings['enable_wrapper_link'] : 0;
26
27 if( (int) $enable_wrapper_link !== 1 ) {
28 return;
29 }
30
31 add_action( 'plugins_loaded', [ $this, 'easyel_check_elementor' ] );
32
33 }
34
35 public function easyel_check_elementor() {
36 if ( ! did_action( 'elementor/loaded' ) ) {
37 return;
38 }
39
40 add_action('elementor/element/common/_section_style/after_section_end', [ $this, 'easy_wrapper_link_register_section'] );
41 add_action('elementor/element/section/section_advanced/after_section_end', [ $this, 'easy_wrapper_link_register_section'] );
42
43 add_action('elementor/element/common/easyel_wrapper_link_section/before_section_end', [ $this, 'easyel_add_wrapper_controls'], 10, 2 );
44 add_action('elementor/element/section/easyel_wrapper_link_section/before_section_end', [ $this, 'easyel_add_wrapper_controls'], 10, 2 );
45
46 add_action('elementor/element/container/section_layout/after_section_end', [ $this, 'easy_wrapper_link_register_section'] );
47
48 add_action('elementor/element/container/easyel_wrapper_link_section/before_section_end', [ $this, 'easyel_add_wrapper_controls'], 10, 2 );
49 add_action( 'elementor/frontend/before_render', [ $this, 'easyel_link_before_render' ], 10, 1 );
50
51 $render_hooks = [
52 'elementor/frontend/widget/before_render' => 'should_script_enqueue',
53 'elementor/frontend/widget/after_render' => 'should_script_enqueue',
54 'elementor/frontend/section/before_render' => 'should_script_enqueue',
55 'elementor/frontend/section/after_render' => 'should_script_enqueue',
56 'elementor/frontend/column/before_render' => 'should_script_enqueue',
57 'elementor/frontend/column/after_render' => 'should_script_enqueue',
58 'elementor/frontend/before_render' => 'should_script_enqueue',
59 'elementor/frontend/container/before_render'=> 'should_script_enqueue',
60 ];
61
62 foreach ( $render_hooks as $hook => $method ) {
63 add_action( $hook, [ $this, $method ] );
64 }
65
66 }
67
68 public function easy_wrapper_link_register_section( $element_data ) {
69
70 if ( 'section' === $element_data->get_name() || 'column' === $element_data->get_name() || 'container' === $element_data->get_name() ) {
71 $wrapper_position = \Elementor\Controls_Manager::TAB_ADVANCED;
72 } else {
73 $wrapper_position = \Elementor\Controls_Manager::TAB_CONTENT;
74 }
75
76 $element_data->start_controls_section(
77 'easyel_wrapper_link_section',
78 [
79 'label' => EASY_EXTENSION_BADGE . __( 'Wrapper Link', 'easy-elements' ),
80 'tab' => $wrapper_position,
81 ]
82 );
83
84 $element_data->end_controls_section();
85 }
86
87 public function easyel_add_wrapper_controls( $element, $section_id ) {
88
89 LinkControls::register_controls( $element );
90 }
91
92 public function easyel_link_before_render( $widget ) {
93 $settings = $widget->get_settings_for_display();
94
95 if ( isset( $settings['easyel_wrapper_link_url'] ) && ! empty( $settings['easyel_wrapper_link_url']['url'] ) ) {
96 $wrapper_link = $settings['easyel_wrapper_link_url'];
97
98 if ( $wrapper_link && ! empty( $wrapper_link['url'] ) ) {
99 $wrapper_link['url'] = esc_url( $wrapper_link['url'] );
100
101 $widget->add_render_attribute(
102 '_wrapper',
103 [
104 'data-easyel-wrapper-link' => wp_json_encode( $wrapper_link, true ),
105 'style' => 'cursor: pointer',
106 'class' => 'easyel-wrapper-link'
107 ]
108 );
109 }
110 }
111 }
112
113 public function enqueue_scripts() {
114 wp_enqueue_script( 'easyel-wrapper-link' );
115 }
116
117 public function should_script_enqueue( $widget ) {
118
119 $settings = $widget->get_settings_for_display();
120 if ( isset( $settings['easyel_wrapper_link_url'] ) && ! empty( $settings['easyel_wrapper_link_url']['url'] ) ) {
121 $element_link = $settings['easyel_wrapper_link_url'];
122
123 if ( $element_link && ! empty( $element_link['url'] ) ) {
124 $this->enqueue_scripts();
125 }
126 }
127 }
128 }
129