PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.1.3
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.1.3
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 3.5.2 All 199 releases
betterdocs / admin / class-betterdocs-admin-screen.php

class-betterdocs-admin-screen.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 2.1.3, at admin/class-betterdocs-admin-screen.php

221 lines 11.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 class Betterdocs_Admin_Screen
3 {
4 private $menu_slug;
5
6 public function __construct() {
7 $this->menu_slug = 'betterdocs-admin';
8 add_filter( 'manage_docs_posts_columns', array( $this, 'set_custom_edit_action_columns' ) );
9 add_action( 'admin_menu', array( $this, 'menu_page' ) );
10 add_filter( 'parent_file', array( $this, 'highlight_admin_menu' ) );
11
12 global $pagenow;
13 if ($pagenow == 'edit-tags.php') {
14 add_filter( 'submenu_file', array( $this, 'highlight_admin_submenu' ), 10, 2 );
15 }
16 }
17
18 public function set_custom_edit_action_columns($columns)
19 {
20 unset( $columns['comments'] );
21 return $columns;
22 }
23
24 public function betterdocs_menu_list() {
25 $betterdocs_admin_pages = array(
26 'betterdocs' => array(
27 'page_title' => 'BetterDocs',
28 'menu_title' => 'BetterDocs',
29 'capability' => 'edit_docs',
30 'menu_slug' => $this->menu_slug,
31 'callback' => $this->betterdocs_admin_output(),
32 'icon_url' => BETTERDOCS_ADMIN_URL.'/assets/img/betterdocs-icon-white.svg',
33 'position' => 5
34 ),
35 'all_docs' => array(
36 'parent_slug' => $this->menu_slug,
37 'page_title' => 'All Docs',
38 'menu_title' => 'All Docs',
39 'text_domain' => 'betterdocs',
40 'capability' => 'edit_docs',
41 'menu_slug' => $this->menu_slug
42 ),
43 'add_new' => array(
44 'parent_slug' => $this->menu_slug,
45 'page_title' => 'Add New',
46 'menu_title' => 'Add New',
47 'text_domain' => 'betterdocs',
48 'capability' => 'edit_docs',
49 'menu_slug' => 'post-new.php?post_type=docs'
50 ),
51 'categories' => array(
52 'parent_slug' => $this->menu_slug,
53 'page_title' => 'Categories',
54 'menu_title' => 'Categories',
55 'text_domain' => 'betterdocs',
56 'capability' => 'manage_doc_terms',
57 'menu_slug' => 'edit-tags.php?taxonomy=doc_category&post_type=docs'
58 ),
59 'tags' => array(
60 'parent_slug' => $this->menu_slug,
61 'page_title' => 'Tags',
62 'menu_title' => 'Tags',
63 'text_domain' => 'betterdocs',
64 'capability' => 'manage_doc_terms',
65 'menu_slug' => 'edit-tags.php?taxonomy=doc_tag&post_type=docs'
66 ),
67 'quick_setup' => array(
68 'parent_slug' => $this->menu_slug,
69 'page_title' => 'Quick Setup',
70 'menu_title' => 'Quick Setup',
71 'text_domain' => 'betterdocs',
72 'capability' => 'delete_users',
73 'menu_slug' => 'betterdocs-setup',
74 'callback' => array( new BetterDocsSetupWizard(), 'plugin_setting_page' )
75 ),
76 'settings' => array(
77 'parent_slug' => $this->menu_slug,
78 'page_title' => 'Settings',
79 'menu_title' => 'Settings',
80 'text_domain' => 'betterdocs',
81 'capability' => 'edit_docs_settings',
82 'menu_slug' => 'betterdocs-settings',
83 'callback' => array( new betterdocs_settings(), 'settings_page' )
84 ),
85 'analytics' => array(
86 'parent_slug' => $this->menu_slug,
87 'page_title' => 'Analytics',
88 'menu_title' => 'Analytics',
89 'text_domain' => 'betterdocs',
90 'capability' => 'read_docs_analytics',
91 'menu_slug' => 'betterdocs-analytics',
92 'callback' => array( new betterdocs_settings(), 'analytics_page' )
93 ),
94 );
95 return apply_filters( 'betterdocs_admin_menu' ,$betterdocs_admin_pages );
96 }
97
98 /**
99 * Admin Menu Page
100 *
101 * @return void
102 */
103 public function menu_page()
104 {
105 foreach( $this->betterdocs_menu_list() as $key => $value ) {
106 if( $key === 'betterdocs' ) {
107 add_menu_page(
108 $value['page_title'], $value['menu_title'],
109 $value['capability'], $value['menu_slug'], $value['callback'],
110 $value['icon_url'], $value['position']
111 );
112 } else {
113 $parent_slug = isset( $value['parent_slug'] ) ? $value['parent_slug'] : '';
114 $page_title = isset( $value['page_title'] ) ? $value['page_title'] : '';
115 $text_domain = isset( $value['text_domain'] ) ? $value['text_domain'] : '';
116 $menu_title = isset( $value['menu_title'] ) ? $value['menu_title'] : '';
117 $capability = isset( $value['capability'] ) ? $value['capability'] : '';
118 $menu_slug = isset( $value['menu_slug'] ) ? $value['menu_slug'] : '';
119 $callback = isset( $value['callback'] ) ? $value['callback'] : '';
120 add_submenu_page(
121 $parent_slug, __( $page_title, $text_domain ),
122 __( $menu_title, $text_domain ), $capability,
123 $menu_slug, $callback
124 );
125 }
126 }
127 }
128
129 public function highlight_admin_menu($parent_file)
130 {
131 global $current_screen;
132
133 if( $this->menu_slug === 'betterdocs-admin' && in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
134 $parent_file = 'betterdocs-admin';
135 } else {
136 if( in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
137 $parent_file = 'edit.php?post_type=docs';
138 }
139 }
140 return apply_filters('betterdocs_highlight_admin_menu', $parent_file);
141 }
142
143 public function highlight_admin_submenu($submenu_file)
144 {
145 global $current_screen, $pagenow;
146
147 if ( $current_screen->post_type == 'docs' ) {
148 if ( $pagenow == 'post.php' ) {
149 $submenu_file = 'edit.php?post_type=docs';
150 }
151 if ( $pagenow == 'post-new.php' ) {
152 $submenu_file = 'post-new.php?post_type=docs';
153 }
154 if( $current_screen->id === 'edit-doc_category' ) {
155 $submenu_file = 'edit-tags.php?taxonomy=doc_category&post_type=docs';
156 }
157 if( $current_screen->id === 'edit-doc_tag' ) {
158 $submenu_file = 'edit-tags.php?taxonomy=doc_tag&post_type=docs';
159 }
160 if( $current_screen->id === 'edit-knowledge_base' ) {
161 $submenu_file = 'edit-tags.php?taxonomy=knowledge_base&post_type=docs';
162 }
163 }
164
165 if( 'betterdocs_page_betterdocs-settings' == $current_screen->id ) {
166 $submenu_file = 'betterdocs-settings';
167 }
168
169 if( 'betterdocs_page_betterdocs-setup' == $current_screen->id ) {
170 $submenu_file = 'betterdocs-setup';
171 }
172
173 return apply_filters('betterdocs_highlight_admin_submenu', $submenu_file);
174 }
175
176 public function header_template()
177 {
178 $html = '<div class="betterdocs-settings-header">
179 <div class="betterdocs-header-full">
180 <img src="'.BETTERDOCS_ADMIN_URL.'assets/img/betterdocs-icon.svg" alt="">
181 <h2 class="title">'.esc_html__('BetterDocs', 'betterdocs').'</h2>
182 <div class="betterdocs-header-button">
183 <a href="edit.php?post_type=docs&bdocs_view=classic" class="betterdocs-button betterdocs-button-secondary">'.esc_html__('Switch to Classic UI', 'betterdocs').'</a>
184 <a href="post-new.php?post_type=docs" class="betterdocs-button betterdocs-button-primary">'.esc_html__('Add New Doc', 'betterdocs').'</a>
185 </div>
186 <div class="betterdocs-switch-mode">
187 <label for="betterdocs-mode-toggle">
188 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xml:space="preserve">
189 <g id="Sun">
190 <g>
191 <path style="fill-rule:evenodd;clip-rule:evenodd;" d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z" />
192 </g>
193 </g>
194 </svg>
195 </label>
196 <input class="betterdocs-mode-toggle" id="betterdocs-mode-toggle" type="checkbox">
197 <label class="betterdocs-mode-toggle-button" for="betterdocs-mode-toggle"></label>
198 <label for="betterdocs-mode-toggle">
199 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" enable-background="new 0 0 100 100" xml:space="preserve">
200 <path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447-14.65,22.008-14.65,35.369 c0,13.36,5.203,25.921,14.65,35.368s22.008,14.65,35.368,14.65c13.361,0,25.921-5.203,35.369-14.65 c3.872-3.871,7.064-8.328,9.491-13.246C97.826,68.608,97.611,67.309,96.76,66.458z" />
201 </svg>
202 </label>
203 </div>
204 </div>
205 </div>';
206
207 echo apply_filters('betterdocs_admin_screen_header_nav',$html);
208 }
209
210 public function betterdocs_admin_output()
211 {
212 return array($this, 'betterdocs_admin_display');
213 }
214
215 public function betterdocs_admin_display()
216 {
217 if (file_exists(BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php')) {
218 return include_once BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php';
219 }
220 }
221 }