PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.0.14
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.0.14
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.0.14, at admin/class-betterdocs-admin-screen.php

212 lines 10.9 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 );
86 return apply_filters( 'betterdocs_admin_menu' ,$betterdocs_admin_pages );
87 }
88
89 /**
90 * Admin Menu Page
91 *
92 * @return void
93 */
94 public function menu_page()
95 {
96 foreach( $this->betterdocs_menu_list() as $key => $value ) {
97 if( $key === 'betterdocs' ) {
98 add_menu_page(
99 $value['page_title'], $value['menu_title'],
100 $value['capability'], $value['menu_slug'], $value['callback'],
101 $value['icon_url'], $value['position']
102 );
103 } else {
104 $parent_slug = isset( $value['parent_slug'] ) ? $value['parent_slug'] : '';
105 $page_title = isset( $value['page_title'] ) ? $value['page_title'] : '';
106 $text_domain = isset( $value['text_domain'] ) ? $value['text_domain'] : '';
107 $menu_title = isset( $value['menu_title'] ) ? $value['menu_title'] : '';
108 $capability = isset( $value['capability'] ) ? $value['capability'] : '';
109 $menu_slug = isset( $value['menu_slug'] ) ? $value['menu_slug'] : '';
110 $callback = isset( $value['callback'] ) ? $value['callback'] : '';
111 add_submenu_page(
112 $parent_slug, __( $page_title, $text_domain ),
113 __( $menu_title, $text_domain ), $capability,
114 $menu_slug, $callback
115 );
116 }
117 }
118 }
119
120 public function highlight_admin_menu($parent_file)
121 {
122 global $current_screen;
123
124 if( $this->menu_slug === 'betterdocs-admin' && in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
125 $parent_file = 'betterdocs-admin';
126 } else {
127 if( in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
128 $parent_file = 'edit.php?post_type=docs';
129 }
130 }
131 return apply_filters('betterdocs_highlight_admin_menu', $parent_file);
132 }
133
134 public function highlight_admin_submenu($submenu_file)
135 {
136 global $current_screen, $pagenow;
137
138 if ( $current_screen->post_type == 'docs' ) {
139 if ( $pagenow == 'post.php' ) {
140 $submenu_file = 'edit.php?post_type=docs';
141 }
142 if ( $pagenow == 'post-new.php' ) {
143 $submenu_file = 'post-new.php?post_type=docs';
144 }
145 if( $current_screen->id === 'edit-doc_category' ) {
146 $submenu_file = 'edit-tags.php?taxonomy=doc_category&post_type=docs';
147 }
148 if( $current_screen->id === 'edit-doc_tag' ) {
149 $submenu_file = 'edit-tags.php?taxonomy=doc_tag&post_type=docs';
150 }
151 if( $current_screen->id === 'edit-knowledge_base' ) {
152 $submenu_file = 'edit-tags.php?taxonomy=knowledge_base&post_type=docs';
153 }
154 }
155
156 if( 'betterdocs_page_betterdocs-settings' == $current_screen->id ) {
157 $submenu_file = 'betterdocs-settings';
158 }
159
160 if( 'betterdocs_page_betterdocs-setup' == $current_screen->id ) {
161 $submenu_file = 'betterdocs-setup';
162 }
163
164 return apply_filters('betterdocs_highlight_admin_submenu', $submenu_file);
165 }
166
167 public function header_template()
168 {
169 $html = '<div class="betterdocs-settings-header">
170 <div class="betterdocs-header-full">
171 <img src="'.BETTERDOCS_ADMIN_URL.'assets/img/betterdocs-icon.svg" alt="">
172 <h2 class="title">'.esc_html__('BetterDocs', 'betterdocs').'</h2>
173 <div class="betterdocs-header-button">
174 <a href="edit.php?post_type=docs&bdocs_view=classic" class="betterdocs-button betterdocs-button-secondary">'.esc_html__('Switch to Classic UI', 'betterdocs').'</a>
175 <a href="post-new.php?post_type=docs" class="betterdocs-button betterdocs-button-primary">'.esc_html__('Add New Doc', 'betterdocs').'</a>
176 </div>
177 <div class="betterdocs-switch-mode">
178 <label for="betterdocs-mode-toggle">
179 <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">
180 <g id="Sun">
181 <g>
182 <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" />
183 </g>
184 </g>
185 </svg>
186 </label>
187 <input class="betterdocs-mode-toggle" id="betterdocs-mode-toggle" type="checkbox">
188 <label class="betterdocs-mode-toggle-button" for="betterdocs-mode-toggle"></label>
189 <label for="betterdocs-mode-toggle">
190 <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">
191 <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" />
192 </svg>
193 </label>
194 </div>
195 </div>
196 </div>';
197
198 echo apply_filters('betterdocs_admin_screen_header_nav',$html);
199 }
200
201 public function betterdocs_admin_output()
202 {
203 return array($this, 'betterdocs_admin_display');
204 }
205
206 public function betterdocs_admin_display()
207 {
208 if (file_exists(BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php')) {
209 return include_once BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php';
210 }
211 }
212 }