PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.8.1
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.8.1
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 3.5.1 All 200 releases
betterdocs / includes / Editors / BlockEditor / Blocks / Sidebar.php

Sidebar.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 3.8.1, at includes/Editors/BlockEditor/Blocks/Sidebar.php

145 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDeveloper\BetterDocs\Editors\BlockEditor\Blocks;
4
5 use WPDeveloper\BetterDocs\Editors\BlockEditor\Block;
6
7 class Sidebar extends Block {
8
9 public $view_wrapper = 'betterdocs-toc-block';
10
11 protected $editor_styles = [
12 'betterdocs-sidebar',
13 'betterdocs-search-modal',
14 'betterdocs-extend-search-modal'
15 ];
16
17 protected $frontend_styles = [
18 'betterdocs-sidebar',
19 'betterdocs-fontawesome'
20 ];
21
22 protected $frontend_scripts = [
23 'betterdocs',
24 'betterdocs-category-grid',
25 'betterdocs-search-modal'
26 ];
27
28 public function get_name() {
29 return 'sidebar';
30 }
31
32 public function register_scripts() {
33 if ( function_exists( 'betterdocs_pro' ) ) { // get the sidebar modal on gutenberg edit mode
34 betterdocs_pro()->assets->enqueue( 'betterdocs-extend-search-modal', 'public/js/extend-search-modal.js', [] );
35 }
36 $this->assets_manager->enqueue(
37 'betterdocs-search-modal', 'shortcodes/js/search-modal.js', ['jquery']
38 );
39 }
40
41 public function get_default_attributes() {
42 return [
43 'blockId' => '',
44 'sidebar_layout' => 'layout-1',
45 'selectKB' => '',
46 'includeCategories' => '',
47 'excludeCategories' => '',
48 'terms_per_page' => -1,
49 'terms_order' => 'asc',
50 'terms_orderby' => 'doc_category_order',
51 'docs_per_page' => -1,
52 'docs_orderby' => 'title',
53 'docs_order' => 'asc',
54 'enableNestedSubcategory' => false,
55 'docs_per_subcategory' => 10,
56 'titleTag' => 'h1',
57 'show_count' => false,
58 'enableStickyTOC' => false,
59 'listIcon' => '',
60 'listIconImageUrl' => '',
61 'initialDocsQueryNumber' => 5,
62 'initialFAQQueryNumber' => 5,
63 'searchModalQueryTermIds' => '', //for search modal
64 'searchModalQueryDocIds' => '', //for search modal
65 'searchModalQueriesFaqGroupIds' => ''
66 ];
67 }
68
69 public function render( $attributes, $content ) {
70 $layout = isset( $this->attributes['sidebar_layout'] ) ? $this->attributes['sidebar_layout'] : 'layout-1';
71 $layout = str_replace( 'layout-', '', $layout );
72 $layout_mapper = [
73 1 => 1,
74 2 => 4,
75 3 => 5,
76 4 => 2,
77 5 => 3,
78 6 => 6,
79 7 => 7
80 ];
81 $sidebar_layout = isset( $layout_mapper[$layout] ) ? $layout_mapper[$layout] : 1;
82
83 if ( ! betterdocs()->is_pro_active() ) {
84 $sidebar_layout = 1;
85 }
86
87 add_filter( 'betterdocs_base_terms_args', [$this, 'filter_base_args'], 10, 1 );
88 $this->views( 'templates/sidebars/sidebar-' . $sidebar_layout );
89 if ( $this->attributes['enableStickyTOC'] && $sidebar_layout == 1 ) {
90 $this->views( 'widgets/sticky-toc-block' );
91 }
92 remove_filter( 'betterdocs_base_terms_args', [$this, 'filter_base_args'], 10 );
93 }
94
95 public function filter_base_args( $term_args ) {
96 if ( $term_args['orderby'] == 'doc_category_order' ) {
97 $term_args['meta_key'] = 'doc_category_order';
98 $term_args['orderby'] = 'meta_value_num';
99 }
100 return $term_args;
101 }
102
103 public function view_params() {
104 $settings = &$this->attributes;
105
106 $default_multiple_kb = betterdocs()->settings->get( 'multiple_kb' );
107 $kb_slug = ! empty( $settings['selectKB'] ) && isset( $settings['selectKB'] ) ? json_decode( $settings['selectKB'] )->value : '';
108 $layout_seven_params = [];
109
110 if ( $settings['sidebar_layout'] == 'layout-1' || $settings['sidebar_layout'] == 'layout-6' || $settings['sidebar_layout'] == 'layout-7' ) {
111 $settings['show_count'] = true;
112 }
113
114 $default_view_params = [
115 'shortcode_attr' => [
116 'terms_order' => $settings['terms_order'],
117 'terms_orderby' => $settings['terms_orderby'] == 'doc_category_order' ? 'betterdocs_order' : $settings['terms_orderby'],
118 'terms_include' => array_diff( $this->string_to_array( $settings['includeCategories'] ), $this->string_to_array( $settings['excludeCategories'] ) ),
119 'terms_exclude' => isset( $settings['excludeCategories'] ) ? $this->string_to_array( $settings['excludeCategories'] ) : '',
120 'nested_subcategory' => $settings['enableNestedSubcategory'],
121 'multiple_knowledge_base' => $default_multiple_kb,
122 'kb_slug' => $kb_slug,
123 'sidebar_list' => true,
124 'list_icon_url' => '',
125 'list_icon_name' => $settings['sidebar_layout'] == 'layout-4' ? '' : ( ! empty( $this->attributes['listIconImageUrl'] ) ? $this->attributes['listIconImageUrl'] : ( ! empty( $this->attributes['listIcon'] ) ? $this->attributes['listIcon'] : ( ! empty( betterdocs()->settings->get( 'docs_list_icon' ) ) ? betterdocs()->settings->get( 'docs_list_icon' )['url'] : 'list' ) ) ),
126 'layout_type' => 'block',
127 'disable_customizer_style' => true,
128 'posts_per_page' => -1,
129 'title_tag' => $settings['titleTag'],
130 'show_count' => $settings['show_count']
131 ]
132 ];
133
134 if ( $settings['sidebar_layout'] == 'layout-7' ) {
135 $default_view_params['number_of_docs'] = $settings['initialDocsQueryNumber'];
136 $default_view_params['number_of_faqs'] = $settings['initialFAQQueryNumber'];
137 $default_view_params['faq_term_ids'] = $settings['searchModalQueriesFaqGroupIds'];
138 $default_view_params['doc_ids'] = $settings['searchModalQueryDocIds'];
139 $default_view_params['doc_term_ids'] = $settings['searchModalQueryTermIds'];
140 }
141
142 return $default_view_params;
143 }
144 }
145