PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.5.3
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.5.3
4.9.4 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 All 202 releases
← All changes | includes/Editors/BlockEditor/Blocks/Sidebar.php +71 -118 4.5.6 → 3.5.3 View file →
@@ -1,131 +1,99 @@
1 1 <?php
2 -// phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query,WordPress.DB.SlowDBQuery.slow_db_query_meta_key,WordPress.DB.SlowDBQuery.slow_db_query_tax_query -- core block query; meta/tax filtering required.
2 +
3 3 namespace WPDeveloper\BetterDocs\Editors\BlockEditor\Blocks;
4 4
5 -if ( ! defined( 'ABSPATH' ) ) {
6 - exit;
7 -}
8 -
9 -
10 5 use WPDeveloper\BetterDocs\Editors\BlockEditor\Block;
11 6
12 7 class Sidebar extends Block {
13 8
14 - public $view_wrapper = 'betterdocs-toc-block';
9 + public $view_wrapper = 'betterdocs-toc-block';
15 10
16 - protected $editor_styles = [
17 - 'betterdocs-sidebar',
18 - 'betterdocs-search-modal',
19 - 'betterdocs-extend-search-modal'
20 - ];
11 + protected $editor_styles = [
12 + 'betterdocs-sidebar'
13 + ];
21 14
22 - protected $frontend_styles = [
23 - 'betterdocs-sidebar',
24 - 'betterdocs-fontawesome'
25 - ];
15 + protected $frontend_styles = [
16 + 'betterdocs-sidebar'
17 + ];
26 18
27 - protected $frontend_scripts = [
28 - 'betterdocs',
29 - 'betterdocs-category-grid',
30 - 'betterdocs-search-modal'
31 - ];
19 + protected $frontend_scripts = [
20 + 'betterdocs',
21 + 'betterdocs-category-grid'
22 + ];
32 23
33 - public function get_name() {
34 - return 'sidebar';
35 - }
24 + public function get_name() {
25 + return 'sidebar';
26 + }
36 27
37 - public function register_scripts() {
38 - if( is_admin() ){ // load for wordpress admin panel only
39 - if ( function_exists( 'betterdocs_pro' ) && betterdocs_pro()->assets != null ) { // get the sidebar modal on gutenberg edit mode
40 - betterdocs_pro()->assets->enqueue( 'betterdocs-extend-search-modal', 'public/js/extend-search-modal.js', [] );
41 - }
42 - $this->assets_manager->enqueue(
43 - 'betterdocs-search-modal',
44 - 'shortcodes/js/search-modal.js',
45 - [ 'jquery' ]
46 - );
47 - }
48 - }
49 -
50 28 public function get_default_attributes() {
51 29 return [
52 - 'blockId' => '',
53 - 'sidebar_layout' => 'layout-1',
54 - 'selectKB' => '',
55 - 'includeCategories' => '',
56 - 'excludeCategories' => '',
57 - 'terms_per_page' => -1,
58 - 'terms_order' => 'asc',
59 - 'terms_orderby' => 'doc_category_order',
60 - 'docs_per_page' => -1,
61 - 'postsOrderBy' => 'title',
62 - 'postsOrder' => 'asc',
63 - 'enableNestedSubcategory' => false,
64 - 'docs_per_subcategory' => 10,
65 - 'titleTag' => 'h1',
66 - 'show_count' => false,
67 - 'enableStickyTOC' => false,
68 - 'listIcon' => '',
69 - 'listIconImageUrl' => '',
70 - 'initialDocsQueryNumber' => 5,
71 - 'initialFAQQueryNumber' => 5,
72 - 'searchModalQueryTermIds' => '', //for search modal
73 - 'searchModalQueryDocIds' => '', //for search modal
74 - 'searchModalQueriesFaqGroupIds' => ''
30 + 'blockId' => '',
31 + 'sidebar_layout' => 'layout-1',
32 + 'selectKB' => '',
33 + 'includeCategories' => '',
34 + 'excludeCategories' => '',
35 + 'terms_per_page' => -1,
36 + 'terms_order' => 'asc',
37 + 'terms_orderby' => 'doc_category_order',
38 + 'docs_per_page' => -1,
39 + 'docs_orderby' => 'title',
40 + 'docs_order' => 'asc',
41 + 'enableNestedSubcategory' => false,
42 + 'docs_per_subcategory' => 10,
43 + 'titleTag' => 'h1',
44 + 'show_count' => false,
45 + 'enableStickyTOC' => false
75 46 ];
76 47 }
77 48
78 - public function render( $attributes, $content ) {
79 - $layout = isset( $this->attributes['sidebar_layout'] ) ? $this->attributes['sidebar_layout'] : 'layout-1';
80 - $layout = str_replace( 'layout-', '', $layout );
81 - $layout_mapper = [
82 - 1 => 1,
83 - 2 => 4,
84 - 3 => 5,
85 - 4 => 2,
86 - 5 => 3,
87 - 6 => 6,
88 - 7 => 7,
89 - 8 => 8,
90 - ];
91 - $sidebar_layout = isset( $layout_mapper[ $layout ] ) ? $layout_mapper[ $layout ] : 1;
49 + public function render( $attributes, $content ) {
50 + $layout = isset( $this->attributes['sidebar_layout'] ) ? $this->attributes['sidebar_layout'] : 'layout-1';
51 + $layout = str_replace( 'layout-', '', $layout );
52 + $layout_mapper = [
53 + 1 => 1,
54 + 2 => 4,
55 + 3 => 5,
56 + 4 => 2,
57 + 5 => 3,
58 + 6 => 6
59 + ];
60 + $sidebar_layout = $layout_mapper[$layout];
92 61
93 - if ( ! betterdocs()->is_pro_active() ) {
94 - $sidebar_layout = 1;
95 - }
62 + if ( ! betterdocs()->is_pro_active() ) {
63 + $sidebar_layout = 1;
64 + }
96 65
97 - add_filter( 'betterdocs_base_terms_args', [ $this, 'filter_base_args' ], 10, 1 );
98 - $this->views( 'templates/sidebars/sidebar-' . $sidebar_layout );
99 - if ( $this->attributes['enableStickyTOC'] && $sidebar_layout == 1 ) {
100 - $this->views( 'widgets/sticky-toc-block' );
101 - }
102 - remove_filter( 'betterdocs_base_terms_args', [ $this, 'filter_base_args' ], 10 );
103 - }
66 + add_filter( 'betterdocs_base_terms_args', [$this, 'filter_base_args'], 10, 1 );
67 + $this->views( 'templates/sidebars/sidebar-' . $sidebar_layout );
68 + if ( $this->attributes['enableStickyTOC'] && $sidebar_layout == 1 ) {
69 + $this->views( 'widgets/sticky-toc-block' );
70 + }
71 + remove_filter( 'betterdocs_base_terms_args', [$this, 'filter_base_args'], 10 );
72 + }
104 73
105 - public function filter_base_args( $term_args ) {
106 - if ( $term_args['orderby'] == 'doc_category_order' ) {
107 - $term_args['meta_key'] = 'doc_category_order';
108 - $term_args['orderby'] = 'meta_value_num';
109 - }
110 - return $term_args;
111 - }
74 + public function filter_base_args( $term_args ) {
75 + if ( $term_args['orderby'] == 'doc_category_order' ) {
76 + $term_args['meta_key'] = 'doc_category_order';
77 + $term_args['orderby'] = 'meta_value_num';
78 + }
79 + return $term_args;
80 + }
112 81
113 - public function view_params() {
114 - $settings = &$this->attributes;
82 + public function view_params() {
83 + $settings = &$this->attributes;
115 84
116 - $default_multiple_kb = betterdocs()->settings->get( 'multiple_kb' );
117 - $kb_slug = ! empty( $settings['selectKB'] ) && isset( $settings['selectKB'] ) ? json_decode( $settings['selectKB'] )->value : '';
118 - $layout_seven_params = [];
85 + $default_multiple_kb = betterdocs()->settings->get( 'multiple_kb' );
86 + $kb_slug = ! empty( $settings['selectKB'] ) && isset( $settings['selectKB'] ) ? json_decode( $settings['selectKB'] )->value : '';
119 87
120 - if ( $settings['sidebar_layout'] == 'layout-1' || $settings['sidebar_layout'] == 'layout-6' || $settings['sidebar_layout'] == 'layout-7' ) {
121 - $settings['show_count'] = true;
122 - }
88 + if( $settings['sidebar_layout'] == 'layout-1' || $settings['sidebar_layout'] == 'layout-6' ) {
89 + $settings['show_count'] = true;
90 + }
123 91
124 - $default_view_params = [
92 + return [
125 93 'shortcode_attr' => [
126 94 'terms_order' => $settings['terms_order'],
127 - 'terms_orderby' => $settings['terms_orderby'] == 'doc_category_order' ? 'betterdocs_order' : $settings['terms_orderby'],
95 + 'terms_orderby' => $settings['terms_orderby'],
128 96 'terms_include' => array_diff( $this->string_to_array( $settings['includeCategories'] ), $this->string_to_array( $settings['excludeCategories'] ) ),
129 97 'terms_exclude' => isset( $settings['excludeCategories'] ) ? $this->string_to_array( $settings['excludeCategories'] ) : '',
130 98 'nested_subcategory' => $settings['enableNestedSubcategory'],
131 99 'multiple_knowledge_base' => $default_multiple_kb,
@@ -130,27 +98,12 @@
130 98 'nested_subcategory' => $settings['enableNestedSubcategory'],
131 99 'multiple_knowledge_base' => $default_multiple_kb,
132 100 'kb_slug' => $kb_slug,
133 101 'sidebar_list' => true,
134 - 'list_icon_url' => '',
135 - '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' ) ) ),
136 - 'layout_type' => 'block',
137 102 'disable_customizer_style' => true,
138 103 'posts_per_page' => -1,
139 104 'title_tag' => $settings['titleTag'],
140 - 'show_count' => $settings['show_count'],
141 - 'orderby' => $settings['postsOrderBy'],
142 - 'order' => $settings['postsOrder']
105 + 'show_count' => $settings['show_count']
143 106 ]
144 107 ];
145 -
146 - if ( $settings['sidebar_layout'] == 'layout-7' ) {
147 - $default_view_params['number_of_docs'] = $settings['initialDocsQueryNumber'];
148 - $default_view_params['number_of_faqs'] = $settings['initialFAQQueryNumber'];
149 - $default_view_params['faq_term_ids'] = $settings['searchModalQueriesFaqGroupIds'];
150 - $default_view_params['doc_ids'] = $settings['searchModalQueryDocIds'];
151 - $default_view_params['doc_term_ids'] = $settings['searchModalQueryTermIds'];
152 - }
153 -
154 - return $default_view_params;
155 - }
108 + }
156 109 }