PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.49
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.49
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / widgets / Cookie_Preferences_Button / Cookie_Preferences_Button.php

Cookie_Preferences_Button.php in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.49, at includes/widgets/Cookie_Preferences_Button/Cookie_Preferences_Button.php

268 lines 7.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Cookie Preferences Button widget (Free).
4 *
5 * @package King_Addons
6 */
7
8 namespace King_Addons;
9
10 use Elementor\Controls_Manager;
11 use Elementor\Group_Control_Border;
12 use Elementor\Group_Control_Box_Shadow;
13 use Elementor\Group_Control_Typography;
14 use Elementor\Widget_Base;
15
16 if (!defined('ABSPATH')) {
17 exit;
18 }
19
20 /**
21 * Renders a manage-consent button that opens the cookie settings modal.
22 */
23 class Cookie_Preferences_Button extends Widget_Base
24 {
25 /**
26 * Get widget slug.
27 *
28 * @return string
29 */
30 public function get_name(): string
31 {
32 return 'king-addons-cookie-preferences-button';
33 }
34
35 /**
36 * Get widget title.
37 *
38 * @return string
39 */
40 public function get_title(): string
41 {
42 return esc_html__('Cookie Preferences Button', 'king-addons');
43 }
44
45 /**
46 * Get widget icon.
47 *
48 * @return string
49 */
50 public function get_icon(): string
51 {
52 return 'king-addons-icon king-addons-button';
53 }
54
55 /**
56 * Get widget categories.
57 *
58 * @return array<int, string>
59 */
60 public function get_categories(): array
61 {
62 return ['king-addons'];
63 }
64
65 /**
66 * Get widget keywords.
67 *
68 * @return array<int, string>
69 */
70 public function get_keywords(): array
71 {
72 return ['cookie', 'consent', 'gdpr', 'ccpa', 'privacy'];
73 }
74
75 /**
76 * Enqueue style dependencies.
77 *
78 * @return array<int, string>
79 */
80 public function get_style_depends(): array
81 {
82 return [
83 KING_ADDONS_ASSETS_UNIQUE_KEY . '-cookie-preferences-button-style',
84 ];
85 }
86
87 /**
88 * Enqueue script dependencies.
89 *
90 * @return array<int, string>
91 */
92 public function get_script_depends(): array
93 {
94 return [
95 KING_ADDONS_ASSETS_UNIQUE_KEY . '-cookie-preferences-button-script',
96 ];
97 }
98
99 /**
100 * Register widget controls.
101 *
102 * @return void
103 */
104 public function register_controls(): void
105 {
106 $this->start_controls_section(
107 'kng_content_section',
108 [
109 'label' => esc_html__('Content', 'king-addons'),
110 'tab' => Controls_Manager::TAB_CONTENT,
111 ]
112 );
113
114 $this->add_control(
115 'kng_label',
116 [
117 'label' => esc_html__('Button Label', 'king-addons'),
118 'type' => Controls_Manager::TEXT,
119 'default' => esc_html__('Cookie settings', 'king-addons'),
120 ]
121 );
122
123 $this->add_responsive_control(
124 'kng_align',
125 [
126 'label' => esc_html__('Alignment', 'king-addons'),
127 'type' => Controls_Manager::CHOOSE,
128 'options' => [
129 'flex-start' => [
130 'title' => esc_html__('Left', 'king-addons'),
131 'icon' => 'eicon-text-align-left',
132 ],
133 'center' => [
134 'title' => esc_html__('Center', 'king-addons'),
135 'icon' => 'eicon-text-align-center',
136 ],
137 'flex-end' => [
138 'title' => esc_html__('Right', 'king-addons'),
139 'icon' => 'eicon-text-align-right',
140 ],
141 ],
142 'selectors' => [
143 '{{WRAPPER}} .king-addons-cookie-button' => 'justify-content: {{VALUE}};',
144 ],
145 ]
146 );
147
148 $this->end_controls_section();
149
150 $this->start_controls_section(
151 'kng_style_section',
152 [
153 'label' => esc_html__('Button', 'king-addons'),
154 'tab' => Controls_Manager::TAB_STYLE,
155 ]
156 );
157
158 $this->add_group_control(
159 Group_Control_Typography::get_type(),
160 [
161 'name' => 'kng_typography',
162 'selector' => '{{WRAPPER}} .king-addons-cookie-button__trigger',
163 ]
164 );
165
166 $this->add_control(
167 'kng_text_color',
168 [
169 'label' => esc_html__('Text Color', 'king-addons'),
170 'type' => Controls_Manager::COLOR,
171 'selectors' => [
172 '{{WRAPPER}} .king-addons-cookie-button__trigger' => 'color: {{VALUE}};',
173 ],
174 ]
175 );
176
177 $this->add_control(
178 'kng_background',
179 [
180 'label' => esc_html__('Background', 'king-addons'),
181 'type' => Controls_Manager::COLOR,
182 'selectors' => [
183 '{{WRAPPER}} .king-addons-cookie-button__trigger' => 'background-color: {{VALUE}};',
184 ],
185 ]
186 );
187
188 $this->add_control(
189 'kng_border_color',
190 [
191 'label' => esc_html__('Border Color', 'king-addons'),
192 'type' => Controls_Manager::COLOR,
193 'selectors' => [
194 '{{WRAPPER}} .king-addons-cookie-button__trigger' => 'border-color: {{VALUE}};',
195 ],
196 ]
197 );
198
199 $this->add_group_control(
200 Group_Control_Border::get_type(),
201 [
202 'name' => 'kng_border',
203 'selector' => '{{WRAPPER}} .king-addons-cookie-button__trigger',
204 ]
205 );
206
207 $this->add_group_control(
208 Group_Control_Box_Shadow::get_type(),
209 [
210 'name' => 'kng_box_shadow',
211 'selector' => '{{WRAPPER}} .king-addons-cookie-button__trigger',
212 ]
213 );
214
215 $this->add_control(
216 'kng_border_radius',
217 [
218 'label' => esc_html__('Border Radius', 'king-addons'),
219 'type' => Controls_Manager::SLIDER,
220 'range' => [
221 'px' => [
222 'min' => 0,
223 'max' => 50,
224 ],
225 ],
226 'selectors' => [
227 '{{WRAPPER}} .king-addons-cookie-button__trigger' => 'border-radius: {{SIZE}}{{UNIT}};',
228 ],
229 ]
230 );
231
232 $this->add_responsive_control(
233 'kng_padding',
234 [
235 'label' => esc_html__('Padding', 'king-addons'),
236 'type' => Controls_Manager::DIMENSIONS,
237 'size_units' => ['px', 'em', '%'],
238 'selectors' => [
239 '{{WRAPPER}} .king-addons-cookie-button__trigger' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
240 ],
241 ]
242 );
243
244 $this->end_controls_section();
245 }
246
247 /**
248 * Render widget output.
249 *
250 * @return void
251 */
252 public function render(): void
253 {
254 $settings = $this->get_settings_for_display();
255 $label = !empty($settings['kng_label']) ? $settings['kng_label'] : esc_html__('Cookie settings', 'king-addons');
256 ?>
257 <div class="king-addons-cookie-button">
258 <button type="button" class="king-addons-cookie-button__trigger" data-ka-cookie-manage="true">
259 <?php echo esc_html($label); ?>
260 </button>
261 </div>
262 <?php
263 }
264 }
265
266
267
268