PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.8.9
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.8.9
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.9, at includes/Editors/BlockEditor/Blocks/Sidebar.php

149 lines 6.1 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' ) && betterdocs_pro()->assets != null ) { // 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',
38 'shortcodes/js/search-modal.js',
39 [ 'jquery' ]
40 );
41 }
42
43 public function get_default_attributes() {
44 return [
45 'blockId' => '',
46 'sidebar_layout' => 'layout-1',
47 'selectKB' => '',
48 'includeCategories' => '',
49 'excludeCategories' => '',
50 'terms_per_page' => -1,
51 'terms_order' => 'asc',
52 'terms_orderby' => 'doc_category_order',
53 'docs_per_page' => -1,
54 'postsOrderBy' => 'title',
55 'postsOrder' => 'asc',
56 'enableNestedSubcategory' => false,
57 'docs_per_subcategory' => 10,
58 'titleTag' => 'h1',
59 'show_count' => false,
60 'enableStickyTOC' => false,
61 'listIcon' => '',
62 'listIconImageUrl' => '',
63 'initialDocsQueryNumber' => 5,
64 'initialFAQQueryNumber' => 5,
65 'searchModalQueryTermIds' => '', //for search modal
66 'searchModalQueryDocIds' => '', //for search modal
67 'searchModalQueriesFaqGroupIds' => ''
68 ];
69 }
70
71 public function render( $attributes, $content ) {
72 $layout = isset( $this->attributes['sidebar_layout'] ) ? $this->attributes['sidebar_layout'] : 'layout-1';
73 $layout = str_replace( 'layout-', '', $layout );
74 $layout_mapper = [
75 1 => 1,
76 2 => 4,
77 3 => 5,
78 4 => 2,
79 5 => 3,
80 6 => 6,
81 7 => 7
82 ];
83 $sidebar_layout = isset( $layout_mapper[ $layout ] ) ? $layout_mapper[ $layout ] : 1;
84
85 if ( ! betterdocs()->is_pro_active() ) {
86 $sidebar_layout = 1;
87 }
88
89 add_filter( 'betterdocs_base_terms_args', [ $this, 'filter_base_args' ], 10, 1 );
90 $this->views( 'templates/sidebars/sidebar-' . $sidebar_layout );
91 if ( $this->attributes['enableStickyTOC'] && $sidebar_layout == 1 ) {
92 $this->views( 'widgets/sticky-toc-block' );
93 }
94 remove_filter( 'betterdocs_base_terms_args', [ $this, 'filter_base_args' ], 10 );
95 }
96
97 public function filter_base_args( $term_args ) {
98 if ( $term_args['orderby'] == 'doc_category_order' ) {
99 $term_args['meta_key'] = 'doc_category_order';
100 $term_args['orderby'] = 'meta_value_num';
101 }
102 return $term_args;
103 }
104
105 public function view_params() {
106 $settings = &$this->attributes;
107
108 $default_multiple_kb = betterdocs()->settings->get( 'multiple_kb' );
109 $kb_slug = ! empty( $settings['selectKB'] ) && isset( $settings['selectKB'] ) ? json_decode( $settings['selectKB'] )->value : '';
110 $layout_seven_params = [];
111
112 if ( $settings['sidebar_layout'] == 'layout-1' || $settings['sidebar_layout'] == 'layout-6' || $settings['sidebar_layout'] == 'layout-7' ) {
113 $settings['show_count'] = true;
114 }
115
116 $default_view_params = [
117 'shortcode_attr' => [
118 'terms_order' => $settings['terms_order'],
119 'terms_orderby' => $settings['terms_orderby'] == 'doc_category_order' ? 'betterdocs_order' : $settings['terms_orderby'],
120 'terms_include' => array_diff( $this->string_to_array( $settings['includeCategories'] ), $this->string_to_array( $settings['excludeCategories'] ) ),
121 'terms_exclude' => isset( $settings['excludeCategories'] ) ? $this->string_to_array( $settings['excludeCategories'] ) : '',
122 'nested_subcategory' => $settings['enableNestedSubcategory'],
123 'multiple_knowledge_base' => $default_multiple_kb,
124 'kb_slug' => $kb_slug,
125 'sidebar_list' => true,
126 'list_icon_url' => '',
127 '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' ) ) ),
128 'layout_type' => 'block',
129 'disable_customizer_style' => true,
130 'posts_per_page' => -1,
131 'title_tag' => $settings['titleTag'],
132 'show_count' => $settings['show_count'],
133 'orderby' => $settings['postsOrderBy'],
134 'order' => $settings['postsOrder']
135 ]
136 ];
137
138 if ( $settings['sidebar_layout'] == 'layout-7' ) {
139 $default_view_params['number_of_docs'] = $settings['initialDocsQueryNumber'];
140 $default_view_params['number_of_faqs'] = $settings['initialFAQQueryNumber'];
141 $default_view_params['faq_term_ids'] = $settings['searchModalQueriesFaqGroupIds'];
142 $default_view_params['doc_ids'] = $settings['searchModalQueryDocIds'];
143 $default_view_params['doc_term_ids'] = $settings['searchModalQueryTermIds'];
144 }
145
146 return $default_view_params;
147 }
148 }
149