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
← All changes | includes/Editors/Elementor/Widget/Breadcrumbs.php +417 -120 3.3.4 → 4.9.3 View file →
@@ -1,9 +1,9 @@
1 1 <?php
2 2 namespace WPDeveloper\BetterDocs\Editors\Elementor\Widget;
3 3
4 4 if ( ! defined( 'ABSPATH' ) ) {
5 - exit; // Exit if accessed directly
5 + exit; // Exit if accessed directly
6 6 }
7 7
8 8 use Elementor\Controls_Manager;
9 9 use Elementor\Group_Control_Typography;
@@ -10,143 +10,440 @@
10 10 use WPDeveloper\BetterDocs\Editors\Elementor\BaseWidget;
11 11
12 12 class Breadcrumbs extends BaseWidget {
13 13
14 - public function get_name() {
15 - return 'betterdocs-breadcrumb';
16 - }
14 + public function get_name() {
15 + return 'betterdocs-breadcrumb';
16 + }
17 17
18 - public function get_title() {
19 - return __( 'Doc Breadcrumbs', 'betterdocs' );
20 - }
18 + public function get_title() {
19 + return __( 'Doc Breadcrumbs', 'betterdocs' );
20 + }
21 21
22 - public function get_icon() {
23 - return 'betterdocs-icon-Breadcrumbs';
24 - }
22 + public function get_icon() {
23 + return 'betterdocs-icon-Breadcrumbs';
24 + }
25 25
26 - public function get_keywords() {
27 - return ['betterdocs-elements', 'breadcrumbs', 'internal links', 'docs', 'betterdocs'];
28 - }
26 + public function get_keywords() {
27 + return [ 'betterdocs-elements', 'breadcrumbs', 'internal links', 'docs', 'betterdocs' ];
28 + }
29 29
30 - public function get_custom_help_url() {
31 - return 'https://betterdocs.co/docs/single-doc-in-elementor';
32 - }
30 + public function get_custom_help_url() {
31 + return 'https://betterdocs.co/docs/single-doc-in-elementor';
32 + }
33 33
34 - public function get_categories() {
35 - return ['betterdocs-elements', 'betterdocs-elements-single', 'docs-archive'];
36 - }
34 + public function get_categories() {
35 + return [ 'betterdocs-elements', 'betterdocs-elements-single', 'docs-archive' ];
36 + }
37 37
38 - public function get_style_depends() {
39 - return ['betterdocs-breadcrumb'];
40 - }
38 + public function get_style_depends() {
39 + return [ 'betterdocs-breadcrumb' ];
40 + }
41 41
42 - protected function register_controls() {
42 + protected function register_controls() {
43 43
44 - $this->start_controls_section(
45 - 'section_betterdocs_breadcrumbs_style',
46 - [
47 - 'label' => __( 'Style', 'betterdocs' ),
48 - 'tab' => Controls_Manager::TAB_STYLE
49 - ]
50 - );
44 + $this->start_controls_section(
45 + 'section_betterdocs_breadcrumb_layout_settings',
46 + [
47 + 'label' => __( 'Layout', 'betterdocs' )
48 + ]
49 + );
51 50
52 - $this->add_control(
53 - 'link_color',
54 - [
55 - 'label' => __( 'Text Color', 'betterdocs' ),
56 - 'type' => Controls_Manager::COLOR,
57 - 'selectors' => [
58 - '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item > a' => 'color: {{VALUE}}'
59 - ]
60 - ]
61 - );
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 + );
62 64
63 - $this->add_group_control(
64 - Group_Control_Typography::get_type(),
65 - [
66 - 'name' => 'text_typography',
67 - 'selector' => '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item a,{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-item span'
68 - ]
69 - );
65 + $this->end_controls_section(); # end of 'Select Layout'
70 66
71 - $this->add_responsive_control(
72 - 'alignment',
73 - [
74 - 'label' => __( 'Alignment', 'betterdocs' ),
75 - 'type' => Controls_Manager::CHOOSE,
76 - 'options' => [
77 - 'flex-start' => [
78 - 'title' => __( 'Left', 'betterdocs' ),
79 - 'icon' => 'eicon-text-align-left'
80 - ],
81 - 'center' => [
82 - 'title' => __( 'Center', 'betterdocs' ),
83 - 'icon' => 'eicon-text-align-center'
84 - ],
85 - 'flex-end' => [
86 - 'title' => __( 'Right', 'betterdocs' ),
87 - 'icon' => 'eicon-text-align-right'
88 - ]
89 - ],
90 - 'selectors' => [
91 - '{{WRAPPER}} .betterdocs-breadcrumb .betterdocs-breadcrumb-list' => 'justify-content: {{VALUE}}'
92 - ]
93 - ]
94 - );
67 + $this->breadcrumb_style();
68 + $this->icon_style();
95 69
96 - $this->end_controls_section();
70 + $this->breadcrumb_style_layout_2();
71 + $this->icon_style_layout_2();
72 + }
97 73
98 - $this->icon_style();
99 - }
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 + );
100 85
101 - public function icon_style() {
102 - /**
103 - * ----------------------------------------------------------
104 - * Section: Icon Style
105 - * ----------------------------------------------------------
106 - */
107 - $this->start_controls_section(
108 - 'section_article_settings',
109 - [
110 - 'label' => __( 'Icon', 'betterdocs' ),
111 - 'tab' => Controls_Manager::TAB_STYLE
112 - ]
113 - );
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 + );
114 96
115 - $this->add_control(
116 - 'breadcrumbs_icon_color',
117 - [
118 - 'label' => esc_html__( 'Color', 'betterdocs' ),
119 - 'type' => Controls_Manager::COLOR,
120 - 'selectors' => [
121 - '{{WRAPPER}} .betterdocs-breadcrumb .breadcrumb-delimiter' => 'color: {{VALUE}};'
122 - ]
123 - ]
124 - );
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 + );
125 107
126 - $this->add_responsive_control(
127 - 'breadcrumbs_icon_size',
128 - [
129 - 'label' => __( 'Size', 'betterdocs' ),
130 - 'type' => Controls_Manager::SLIDER,
131 - 'size_units' => ['px', '%', 'em'],
132 - 'range' => [
133 - '%' => [
134 - 'max' => 100,
135 - 'step' => 1
136 - ]
137 - ],
138 - 'selectors' => [
139 - '{{WRAPPER}} .betterdocs-breadcrumb .breadcrumb-delimiter .breadcrumb-delimiter-icon' => 'width: {{SIZE}}{{UNIT}};height: {{SIZE}}{{UNIT}};'
140 - ]
141 - ]
142 - );
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 + );
143 118
144 - $this->end_controls_section(); # end of 'Column Settings'
145 - }
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 + );
146 129
147 - protected function render_callback() {
148 - $this->views( 'widgets/breadcrumbs' );
149 - }
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 + );
150 137
151 - public function render_plain_content() {}
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() {}
152 449 }