1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
<?php namespace Elementor;
use Elementor\Includes\Widgets\Traits\Button_Trait; use Elementor\Modules\Promotions\Controls\Promotion_Control;
if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. }
/** * Elementor button widget. * * Elementor widget that displays a button with the ability to control every * aspect of the button design. * * @since 1.0.0 */ class Widget_Button extends Widget_Base {
use Button_Trait;
/** * Get widget name. * * Retrieve button widget name. * * @since 1.0.0 * @access public * * @return string Widget name. */ public function get_name() { return 'button'; }
/** * Get widget title. * * Retrieve button widget title. * * @since 1.0.0 * @access public * * @return string Widget title. */ public function get_title() { return esc_html__( 'Button', 'elementor' ); }
/** * Get widget icon. * * Retrieve button widget icon. * * @since 1.0.0 * @access public * * @return string Widget icon. */ public function get_icon() { return 'eicon-button'; }
/** * Get widget categories. * * Retrieve the list of categories the button widget belongs to. * * Used to determine where to display the widget in the editor. * * @since 2.0.0 * @access public * * @return array Widget categories. */ public function get_categories() { return [ 'basic' ]; }
protected function is_dynamic_content(): bool { return false; }
public function has_widget_inner_wrapper(): bool { return ! Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' ); }
protected function register_controls() { $this->start_controls_section( 'section_button', [ 'label' => esc_html__( 'Button', 'elementor' ), ] );
$this->register_button_content_controls();
if ( ! Utils::has_pro() ) { $this->add_control( Utils::CTA . '_promotion', [ 'label' => esc_html__( 'Call to Action widget', 'elementor' ), 'type' => Promotion_Control::TYPE, ] ); }
$this->end_controls_section();
$this->start_controls_section( 'section_style', [ 'label' => esc_html__( 'Button', 'elementor' ), 'tab' => Controls_Manager::TAB_STYLE, ] );
$this->register_button_style_controls();
$this->end_controls_section(); }
/** * Render button widget output on the frontend. * * Written in PHP and used to generate the final HTML. * * @since 1.0.0 * @access protected */ protected function render() { $this->render_button(); } }
|