PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.9.3
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.9.3
4.9.3 4.9.2 4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 All 201 releases
betterdocs / includes / Editors / Elementor / Widget / Breadcrumbs.php

Breadcrumbs.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.9.3, at includes/Editors/Elementor/Widget/Breadcrumbs.php

450 lines 12.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace WPDeveloper\BetterDocs\Editors\Elementor\Widget;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit; // Exit if accessed directly
6 }
7
8 use Elementor\Controls_Manager;
9 use Elementor\Group_Control_Typography;
10 use WPDeveloper\BetterDocs\Editors\Elementor\BaseWidget;
11
12 class Breadcrumbs extends BaseWidget {
13
14 public function get_name() {
15 return 'betterdocs-breadcrumb';
16 }
17
18 public function get_title() {
19 return __( 'Doc Breadcrumbs', 'betterdocs' );
20 }
21
22 public function get_icon() {
23 return 'betterdocs-icon-Breadcrumbs';
24 }
25
26 public function get_keywords() {
27 return [ 'betterdocs-elements', 'breadcrumbs', 'internal links', 'docs', 'betterdocs' ];
28 }
29
30 public function get_custom_help_url() {
31 return 'https://betterdocs.co/docs/single-doc-in-elementor';
32 }
33
34 public function get_categories() {
35 return [ 'betterdocs-elements', 'betterdocs-elements-single', 'docs-archive' ];
36 }
37
38 public function get_style_depends() {
39 return [ 'betterdocs-breadcrumb' ];
40 }
41
42 protected function register_controls() {
43
44 $this->start_controls_section(
45 'section_betterdocs_breadcrumb_layout_settings',
46 [
47 'label' => __( 'Layout', 'betterdocs' )
48 ]
49 );
50
51 $this->add_control(
52 'betterdocs_breadcrumb_sidebar_layout',
53 [
54 'label' => esc_html__( 'Select layout', 'betterdocs' ),
55 'type' => Controls_Manager::SELECT,
56 'default' => 'layout-1',
57 'label_block' => false,
58 'options' => [
59 'layout-1' => esc_html__( 'Layout 1', 'betterdocs' ),
60 'layout-2' => esc_html__( 'Layout 2', 'betterdocs' )
61 ]
62 ]
63 );
64
65 $this->end_controls_section(); # end of 'Select Layout'
66
67 $this->breadcrumb_style();
68 $this->icon_style();
69
70 $this->breadcrumb_style_layout_2();
71 $this->icon_style_layout_2();
72 }
73
74 public function breadcrumb_style() {
75 $this->start_controls_section(
76 'section_betterdocs_breadcrumbs_style',
77 [
78 'label' => __( 'Style', 'betterdocs' ),
79 'tab' => Controls_Manager::TAB_STYLE,
80 'condition' => [
81 'betterdocs_breadcrumb_sidebar_layout' => [ 'layout-1' ]
82 ]
83 ]
84 );
85
86 $this->add_control(
87 'active_link_color',
88 [
89 'label' => __( 'Active Text Color', 'betterdocs' ),
90 'type' => Controls_Manager::COLOR,
91 'selectors' => [
92 '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item.current span' => 'color: {{VALUE}}'
93 ]
94 ]
95 );
96
97 $this->add_control(
98 'active_link_color_hover',
99 [
100 'label' => __( 'Active Text Hover Color', 'betterdocs' ),
101 'type' => Controls_Manager::COLOR,
102 'selectors' => [
103 '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item.current span:hover' => 'color: {{VALUE}}'
104 ]
105 ]
106 );
107
108 $this->add_control(
109 'link_color',
110 [
111 'label' => __( 'Text Color', 'betterdocs' ),
112 'type' => Controls_Manager::COLOR,
113 'selectors' => [
114 '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item > a' => 'color: {{VALUE}}'
115 ]
116 ]
117 );
118
119 $this->add_control(
120 'link_color_hover',
121 [
122 'label' => __( 'Text Color Hover', 'betterdocs' ),
123 'type' => Controls_Manager::COLOR,
124 'selectors' => [
125 '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item > a:hover' => 'color: {{VALUE}}'
126 ]
127 ]
128 );
129
130 $this->add_group_control(
131 Group_Control_Typography::get_type(),
132 [
133 'name' => 'text_typography',
134 'selector' => '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item a,{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item span'
135 ]
136 );
137
138 $this->add_responsive_control(
139 'alignment',
140 [
141 'label' => __( 'Alignment', 'betterdocs' ),
142 'type' => Controls_Manager::CHOOSE,
143 'options' => [
144 'flex-start' => [
145 'title' => __( 'Left', 'betterdocs' ),
146 'icon' => 'eicon-text-align-left'
147 ],
148 'center' => [
149 'title' => __( 'Center', 'betterdocs' ),
150 'icon' => 'eicon-text-align-center'
151 ],
152 'flex-end' => [
153 'title' => __( 'Right', 'betterdocs' ),
154 'icon' => 'eicon-text-align-right'
155 ]
156 ],
157 'selectors' => [
158 '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-list' => 'justify-content: {{VALUE}}'
159 ]
160 ]
161 );
162
163 $this->add_responsive_control(
164 'breadcrumb_layout_1_padding',
165 [
166 'label' => __( 'Padding', 'betterdocs' ),
167 'type' => Controls_Manager::DIMENSIONS,
168 'size_units' => [ 'px', 'em', '%' ],
169 'selectors' => [
170 '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-list' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
171 ]
172 ]
173 );
174
175 $this->add_responsive_control(
176 'breadcrumb_layout_1_margin',
177 [
178 'label' => __( 'Margin', 'betterdocs' ),
179 'type' => Controls_Manager::DIMENSIONS,
180 'size_units' => [ 'px', 'em', '%' ],
181 'selectors' => [
182 '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-list' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
183 ]
184 ]
185 );
186
187 $this->end_controls_section();
188 }
189
190 public function breadcrumb_style_layout_2() {
191 $this->start_controls_section(
192 'section_betterdocs_breadcrumbs_style_layout_2',
193 [
194 'label' => __( 'Style', 'betterdocs' ),
195 'tab' => Controls_Manager::TAB_STYLE,
196 'condition' => [
197 'betterdocs_breadcrumb_sidebar_layout' => [ 'layout-2' ]
198 ]
199 ]
200 );
201
202 $this->add_control(
203 'active_link_color_layout_2',
204 [
205 'label' => __( 'Active Text Color', 'betterdocs' ),
206 'type' => Controls_Manager::COLOR,
207 'selectors' => [
208 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-item.current span' => 'color: {{VALUE}}'
209 ]
210 ]
211 );
212
213 $this->add_control(
214 'active_link_color_hover_layout_2',
215 [
216 'label' => __( 'Active Text Hover Color', 'betterdocs' ),
217 'type' => Controls_Manager::COLOR,
218 'selectors' => [
219 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-item.current span:hover' => 'color: {{VALUE}}'
220 ]
221 ]
222 );
223
224 $this->add_control(
225 'link_color_layout_2',
226 [
227 'label' => __( 'Text Color', 'betterdocs' ),
228 'type' => Controls_Manager::COLOR,
229 'selectors' => [
230 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-item > a' => 'color: {{VALUE}}'
231 ]
232 ]
233 );
234
235 $this->add_control(
236 'link_color_hover_layout_2',
237 [
238 'label' => __( 'Text Color Hover', 'betterdocs' ),
239 'type' => Controls_Manager::COLOR,
240 'selectors' => [
241 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-item > a:hover' => 'color: {{VALUE}}'
242 ]
243 ]
244 );
245
246 $this->add_control(
247 'background_color_layout_2',
248 [
249 'label' => __( 'Background Color', 'betterdocs' ),
250 'type' => Controls_Manager::COLOR,
251 'selectors' => [
252 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-list' => 'background-color: {{VALUE}};'
253 ]
254 ]
255 );
256
257 $this->add_control(
258 'background_hover_color_layout_2',
259 [
260 'label' => __( 'Background Hover Color', 'betterdocs' ),
261 'type' => Controls_Manager::COLOR,
262 'selectors' => [
263 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-list:hover' => 'background-color: {{VALUE}};'
264 ]
265 ]
266 );
267
268 $this->add_group_control(
269 Group_Control_Typography::get_type(),
270 [
271 'name' => 'text_typography_layout_2',
272 'selector' => '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-item a,{{WRAPPER}} .betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-item span'
273 ]
274 );
275
276 $this->add_responsive_control(
277 'alignment_layout_2',
278 [
279 'label' => __( 'Alignment', 'betterdocs' ),
280 'type' => Controls_Manager::CHOOSE,
281 'options' => [
282 'flex-start' => [
283 'title' => __( 'Left', 'betterdocs' ),
284 'icon' => 'eicon-text-align-left'
285 ],
286 'center' => [
287 'title' => __( 'Center', 'betterdocs' ),
288 'icon' => 'eicon-text-align-center'
289 ],
290 'flex-end' => [
291 'title' => __( 'Right', 'betterdocs' ),
292 'icon' => 'eicon-text-align-right'
293 ]
294 ],
295 'selectors' => [
296 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-list' => 'justify-content: {{VALUE}}'
297 ]
298 ]
299 );
300
301 $this->add_responsive_control(
302 'breadcrumb_layout_2_padding',
303 [
304 'label' => __( 'Padding', 'betterdocs' ),
305 'type' => Controls_Manager::DIMENSIONS,
306 'size_units' => [ 'px', 'em', '%' ],
307 'selectors' => [
308 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
309 ]
310 ]
311 );
312
313 $this->add_responsive_control(
314 'breadcrumb_layout_2_margin',
315 [
316 'label' => __( 'Margin', 'betterdocs' ),
317 'type' => Controls_Manager::DIMENSIONS,
318 'size_units' => [ 'px', 'em', '%' ],
319 'default' => [
320 'top' => 0,
321 'right' => 9,
322 'bottom' => 0,
323 'left' => 0,
324 'unit' => 'px',
325 'isLinked' => false,
326 ],
327 'selectors' => [
328 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
329 ]
330 ]
331 );
332
333 $this->end_controls_section();
334 }
335
336 public function icon_style_layout_2() {
337 /**
338 * ----------------------------------------------------------
339 * Section: Icon Style
340 * ----------------------------------------------------------
341 */
342 $this->start_controls_section(
343 'section_article_settings_layout_2',
344 [
345 'label' => __( 'Icon', 'betterdocs' ),
346 'tab' => Controls_Manager::TAB_STYLE,
347 'condition' => [
348 'betterdocs_breadcrumb_sidebar_layout' => [ 'layout-2' ]
349 ]
350 ]
351 );
352
353 $this->add_control(
354 'breadcrumbs_icon_color_layout_2',
355 [
356 'label' => esc_html__( 'Color', 'betterdocs' ),
357 'type' => Controls_Manager::COLOR,
358 'selectors' => [
359 '{{WRAPPER}} #betterdocs-breadcrumb.betterdocs-breadcrumb.layout-2 .betterdocs-breadcrumb-list .betterdocs-breadcrumb-item .icon-container svg path' => 'fill: {{VALUE}};'
360 ]
361 ]
362 );
363
364 $this->add_responsive_control(
365 'breadcrumbs_icon_size_layout_2',
366 [
367 'label' => __( 'Size', 'betterdocs' ),
368 'type' => Controls_Manager::SLIDER,
369 'size_units' => [ 'px', '%', 'em' ],
370 'range' => [
371 '%' => [
372 'max' => 100,
373 'step' => 1
374 ]
375 ],
376 'selectors' => [
377 '{{WRAPPER}} .betterdocs-breadcrumb .breadcrumb-delimiter .breadcrumb-delimiter-icon' => 'width: {{SIZE}}{{UNIT}};height: {{SIZE}}{{UNIT}};'
378 ]
379 ]
380 );
381
382 $this->end_controls_section(); # end of 'Column Settings'
383 }
384
385 public function icon_style() {
386 /**
387 * ----------------------------------------------------------
388 * Section: Icon Style
389 * ----------------------------------------------------------
390 */
391 $this->start_controls_section(
392 'section_article_settings',
393 [
394 'label' => __( 'Icon', 'betterdocs' ),
395 'tab' => Controls_Manager::TAB_STYLE,
396 'condition' => [
397 'betterdocs_breadcrumb_sidebar_layout' => [ 'layout-1' ]
398 ]
399 ]
400 );
401
402 $this->add_control(
403 'breadcrumbs_icon_color',
404 [
405 'label' => esc_html__( 'Color', 'betterdocs' ),
406 'type' => Controls_Manager::COLOR,
407 'selectors' => [
408 '{{WRAPPER}} .betterdocs-breadcrumb .breadcrumb-delimiter' => 'color: {{VALUE}};'
409 ]
410 ]
411 );
412
413 $this->add_responsive_control(
414 'breadcrumbs_icon_size',
415 [
416 'label' => __( 'Size', 'betterdocs' ),
417 'type' => Controls_Manager::SLIDER,
418 'size_units' => [ 'px', '%', 'em' ],
419 'range' => [
420 '%' => [
421 'max' => 100,
422 'step' => 1
423 ]
424 ],
425 'selectors' => [
426 '{{WRAPPER}} .betterdocs-breadcrumb .breadcrumb-delimiter .breadcrumb-delimiter-icon' => 'width: {{SIZE}}{{UNIT}};height: {{SIZE}}{{UNIT}};'
427 ]
428 ]
429 );
430
431 $this->end_controls_section(); # end of 'Column Settings'
432 }
433
434 public function view_params() {
435 $settings = &$this->attributes;
436
437 $params = [
438 'breadcrumbs_layout' => $settings['betterdocs_breadcrumb_sidebar_layout']
439 ];
440
441 return $params;
442 }
443
444 protected function render_callback() {
445 $this->views( 'widgets/breadcrumbs' );
446 }
447
448 public function render_plain_content() {}
449 }
450