PluginProbe
Elementor Website Builder – more than just a page builder / 3.2.4
Elementor Website Builder – more than just a page builder v3.2.4
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / includes / widgets / alert.php

alert.php in Elementor Website Builder – more than just a page builder 3.2.4, at includes/widgets/alert.php

370 lines 8.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor;
3
4 use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
5
6 if ( ! defined( 'ABSPATH' ) ) {
7 exit; // Exit if accessed directly.
8 }
9
10 /**
11 * Elementor alert widget.
12 *
13 * Elementor widget that displays a collapsible display of content in an toggle
14 * style, allowing the user to open multiple items.
15 *
16 * @since 1.0.0
17 */
18 class Widget_Alert extends Widget_Base {
19
20 /**
21 * Get widget name.
22 *
23 * Retrieve alert widget name.
24 *
25 * @since 1.0.0
26 * @access public
27 *
28 * @return string Widget name.
29 */
30 public function get_name() {
31 return 'alert';
32 }
33
34 /**
35 * Get widget title.
36 *
37 * Retrieve alert widget title.
38 *
39 * @since 1.0.0
40 * @access public
41 *
42 * @return string Widget title.
43 */
44 public function get_title() {
45 return __( 'Alert', 'elementor' );
46 }
47
48 /**
49 * Get widget icon.
50 *
51 * Retrieve alert widget icon.
52 *
53 * @since 1.0.0
54 * @access public
55 *
56 * @return string Widget icon.
57 */
58 public function get_icon() {
59 return 'eicon-alert';
60 }
61
62 /**
63 * Get widget keywords.
64 *
65 * Retrieve the list of keywords the widget belongs to.
66 *
67 * @since 2.1.0
68 * @access public
69 *
70 * @return array Widget keywords.
71 */
72 public function get_keywords() {
73 return [ 'alert', 'notice', 'message' ];
74 }
75
76 /**
77 * Register alert widget controls.
78 *
79 * Adds different input fields to allow the user to change and customize the widget settings.
80 *
81 * @since 3.1.0
82 * @access protected
83 */
84 protected function register_controls() {
85 $this->start_controls_section(
86 'section_alert',
87 [
88 'label' => __( 'Alert', 'elementor' ),
89 ]
90 );
91
92 $this->add_control(
93 'alert_type',
94 [
95 'label' => __( 'Type', 'elementor' ),
96 'type' => Controls_Manager::SELECT,
97 'default' => 'info',
98 'options' => [
99 'info' => __( 'Info', 'elementor' ),
100 'success' => __( 'Success', 'elementor' ),
101 'warning' => __( 'Warning', 'elementor' ),
102 'danger' => __( 'Danger', 'elementor' ),
103 ],
104 'style_transfer' => true,
105 ]
106 );
107
108 $this->add_control(
109 'alert_title',
110 [
111 'label' => __( 'Title & Description', 'elementor' ),
112 'type' => Controls_Manager::TEXT,
113 'placeholder' => __( 'Enter your title', 'elementor' ),
114 'default' => __( 'This is an Alert', 'elementor' ),
115 'label_block' => true,
116 'dynamic' => [
117 'active' => true,
118 ],
119 ]
120 );
121
122 $this->add_control(
123 'alert_description',
124 [
125 'label' => __( 'Content', 'elementor' ),
126 'type' => Controls_Manager::TEXTAREA,
127 'placeholder' => __( 'Enter your description', 'elementor' ),
128 'default' => __( 'I am a description. Click the edit button to change this text.', 'elementor' ),
129 'separator' => 'none',
130 'show_label' => false,
131 'dynamic' => [
132 'active' => true,
133 ],
134 ]
135 );
136
137 $this->add_control(
138 'show_dismiss',
139 [
140 'label' => __( 'Dismiss Button', 'elementor' ),
141 'type' => Controls_Manager::SELECT,
142 'default' => 'show',
143 'options' => [
144 'show' => __( 'Show', 'elementor' ),
145 'hide' => __( 'Hide', 'elementor' ),
146 ],
147 ]
148 );
149
150 $this->add_control(
151 'view',
152 [
153 'label' => __( 'View', 'elementor' ),
154 'type' => Controls_Manager::HIDDEN,
155 'default' => 'traditional',
156 ]
157 );
158
159 $this->end_controls_section();
160
161 $this->start_controls_section(
162 'section_type',
163 [
164 'label' => __( 'Alert', 'elementor' ),
165 'tab' => Controls_Manager::TAB_STYLE,
166 ]
167 );
168
169 $this->add_control(
170 'background',
171 [
172 'label' => __( 'Background Color', 'elementor' ),
173 'type' => Controls_Manager::COLOR,
174 'selectors' => [
175 '{{WRAPPER}} .elementor-alert' => 'background-color: {{VALUE}};',
176 ],
177 ]
178 );
179
180 $this->add_control(
181 'border_color',
182 [
183 'label' => __( 'Border Color', 'elementor' ),
184 'type' => Controls_Manager::COLOR,
185 'selectors' => [
186 '{{WRAPPER}} .elementor-alert' => 'border-color: {{VALUE}};',
187 ],
188 ]
189 );
190
191 $this->add_control(
192 'border_left-width',
193 [
194 'label' => __( 'Left Border Width', 'elementor' ),
195 'type' => Controls_Manager::SLIDER,
196 'range' => [
197 'px' => [
198 'min' => 0,
199 'max' => 100,
200 ],
201 ],
202 'selectors' => [
203 '{{WRAPPER}} .elementor-alert' => 'border-left-width: {{SIZE}}{{UNIT}};',
204 ],
205 ]
206 );
207
208 $this->end_controls_section();
209
210 $this->start_controls_section(
211 'section_title',
212 [
213 'label' => __( 'Title', 'elementor' ),
214 'tab' => Controls_Manager::TAB_STYLE,
215 ]
216 );
217
218 $this->add_control(
219 'title_color',
220 [
221 'label' => __( 'Text Color', 'elementor' ),
222 'type' => Controls_Manager::COLOR,
223 'selectors' => [
224 '{{WRAPPER}} .elementor-alert-title' => 'color: {{VALUE}};',
225 ],
226 ]
227 );
228
229 $this->add_group_control(
230 Group_Control_Typography::get_type(),
231 [
232 'name' => 'alert_title',
233 'selector' => '{{WRAPPER}} .elementor-alert-title',
234 'global' => [
235 'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
236 ],
237 ]
238 );
239
240 $this->add_group_control(
241 Group_Control_Text_Shadow::get_type(),
242 [
243 'name' => 'title_shadow',
244 'selector' => '{{WRAPPER}} .elementor-alert-title',
245 ]
246 );
247
248 $this->end_controls_section();
249
250 $this->start_controls_section(
251 'section_description',
252 [
253 'label' => __( 'Description', 'elementor' ),
254 'tab' => Controls_Manager::TAB_STYLE,
255 ]
256 );
257
258 $this->add_control(
259 'description_color',
260 [
261 'label' => __( 'Text Color', 'elementor' ),
262 'type' => Controls_Manager::COLOR,
263 'selectors' => [
264 '{{WRAPPER}} .elementor-alert-description' => 'color: {{VALUE}};',
265 ],
266 ]
267 );
268
269 $this->add_group_control(
270 Group_Control_Typography::get_type(),
271 [
272 'name' => 'alert_description',
273 'selector' => '{{WRAPPER}} .elementor-alert-description',
274 'global' => [
275 'default' => Global_Typography::TYPOGRAPHY_TEXT,
276 ],
277 ]
278 );
279
280 $this->add_group_control(
281 Group_Control_Text_Shadow::get_type(),
282 [
283 'name' => 'description_shadow',
284 'selector' => '{{WRAPPER}} .elementor-alert-description',
285 ]
286 );
287
288 $this->end_controls_section();
289
290 }
291
292 /**
293 * Render alert widget output on the frontend.
294 *
295 * Written in PHP and used to generate the final HTML.
296 *
297 * @since 1.0.0
298 * @access protected
299 */
300 protected function render() {
301 $settings = $this->get_settings_for_display();
302
303 if ( Utils::is_empty( $settings['alert_title'] ) ) {
304 return;
305 }
306
307 if ( ! empty( $settings['alert_type'] ) ) {
308 $this->add_render_attribute( 'wrapper', 'class', 'elementor-alert elementor-alert-' . $settings['alert_type'] );
309 }
310
311 $this->add_render_attribute( 'wrapper', 'role', 'alert' );
312
313 $this->add_render_attribute( 'alert_title', 'class', 'elementor-alert-title' );
314
315 $this->add_inline_editing_attributes( 'alert_title', 'none' );
316 ?>
317 <div <?php echo $this->get_render_attribute_string( 'wrapper' ); ?>>
318 <span <?php echo $this->get_render_attribute_string( 'alert_title' ); ?>><?php echo $settings['alert_title']; ?></span>
319 <?php
320 if ( ! Utils::is_empty( $settings['alert_description'] ) ) :
321 $this->add_render_attribute( 'alert_description', 'class', 'elementor-alert-description' );
322
323 $this->add_inline_editing_attributes( 'alert_description' );
324 ?>
325 <span <?php echo $this->get_render_attribute_string( 'alert_description' ); ?>><?php echo $settings['alert_description']; ?></span>
326 <?php endif; ?>
327 <?php if ( 'show' === $settings['show_dismiss'] ) : ?>
328 <button type="button" class="elementor-alert-dismiss">
329 <span aria-hidden="true">&times;</span>
330 <span class="elementor-screen-only"><?php echo __( 'Dismiss alert', 'elementor' ); ?></span>
331 </button>
332 <?php endif; ?>
333 </div>
334 <?php
335 }
336
337 /**
338 * Render alert widget output in the editor.
339 *
340 * Written as a Backbone JavaScript template and used to generate the live preview.
341 *
342 * @since 2.9.0
343 * @access protected
344 */
345 protected function content_template() {
346 ?>
347 <# if ( settings.alert_title ) {
348 view.addRenderAttribute( {
349 alert_title: { class: 'elementor-alert-title' },
350 alert_description: { class: 'elementor-alert-description' }
351 } );
352
353 view.addInlineEditingAttributes( 'alert_title', 'none' );
354 view.addInlineEditingAttributes( 'alert_description' );
355 #>
356 <div class="elementor-alert elementor-alert-{{ settings.alert_type }}" role="alert">
357 <span {{{ view.getRenderAttributeString( 'alert_title' ) }}}>{{{ settings.alert_title }}}</span>
358 <span {{{ view.getRenderAttributeString( 'alert_description' ) }}}>{{{ settings.alert_description }}}</span>
359 <# if ( 'show' === settings.show_dismiss ) { #>
360 <button type="button" class="elementor-alert-dismiss">
361 <span aria-hidden="true">&times;</span>
362 <span class="elementor-screen-only"><?php echo __( 'Dismiss alert', 'elementor' ); ?></span>
363 </button>
364 <# } #>
365 </div>
366 <# } #>
367 <?php
368 }
369 }
370