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

198 lines 10.1 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 public function __construct() {
5 add_filter( 'manage_docs_posts_columns', array( $this, 'set_custom_edit_action_columns' ) );
6 add_action( 'manage_docs_posts_custom_column' , array($this, 'custom_action_column' ), 10, 2 );
7 add_filter( 'manage_edit-docs_columns', array( $this, 'sort_columns' ) );
8 add_action( 'admin_menu', array( $this, 'menu_page' ) );
9 add_filter( 'parent_file', array( $this, 'highlight_admin_menu' ) );
10
11 global $pagenow;
12 if ($pagenow == 'edit-tags.php') {
13 add_filter( 'submenu_file', array( $this, 'highlight_admin_submenu' ), 10, 2 );
14 }
15 }
16
17 public function set_custom_edit_action_columns($columns)
18 {
19 unset( $columns['comments'] );
20 $columns['action'] = __( 'Action', 'betterdocs' );
21 return $columns;
22 }
23
24 public function custom_action_column($column, $post_id)
25 {
26 $wp_list_table = new BetterDocs_WP_Posts_List_Table();
27 $post = get_post($post_id);
28 switch ( $column ) {
29 case 'action' :
30 echo $wp_list_table->custom_row_actions( $post );
31 break;
32 }
33 }
34
35 public function sort_columns( $cols ) {
36 $cols += array_splice($cols,array_search('action',array_keys($cols)),1);
37 return $cols;
38 }
39 /**
40 * Admin Menu Page
41 *
42 * @return void
43 */
44 public function menu_page()
45 {
46 $settings_class = new betterdocs_settings();
47 $singular_name = BetterDocs_DB::get_settings('breadcrumb_doc_title');
48
49 $betterdocs_articles_caps = apply_filters( 'betterdocs_articles_caps', 'edit_posts', 'article_roles' );
50 $betterdocs_terms_caps = apply_filters( 'betterdocs_terms_caps', 'delete_others_posts', 'article_roles' );
51 $betterdocs_settings_caps = apply_filters( 'betterdocs_settings_caps', 'administrator', 'settings_roles' );
52
53 $settings = apply_filters( 'betterdocs_admin_menu', array(
54 'betterdocs-setup' => array(
55 'title' => __('Quick Setup', 'betterdocs'),
56 'capability' => 'delete_users',
57 'callback' => 'BetterDocsSetupWizard::plugin_setting_page'
58 ),
59 'betterdocs-settings' => array(
60 'title' => __('Settings', 'betterdocs'),
61 'capability' => $betterdocs_settings_caps,
62 'callback' => array( $settings_class, 'settings_page' )
63 ),
64 ) );
65
66 $this->menu_slug = 'betterdocs-admin';
67 //$betterdocs_admin_output = apply_filters( 'betterdocs_admin_output', array() );
68 $betterdocs_admin_output = $this->betterdocs_admin_output();
69
70 add_menu_page(
71 'BetterDocs', 'BetterDocs',
72 $betterdocs_articles_caps, $this->menu_slug, $betterdocs_admin_output,
73 BETTERDOCS_ADMIN_URL.'/assets/img/betterdocs-icon-white.svg', 5
74 );
75 add_submenu_page(
76 $this->menu_slug, '',
77 __( 'All Docs', 'betterdocs' ),
78 $betterdocs_articles_caps, $this->menu_slug
79 );
80 add_submenu_page(
81 $this->menu_slug, __('Add New', 'betterdocs'),
82 __('Add New', 'betterdocs'),
83 $betterdocs_articles_caps,
84 'post-new.php?post_type=docs'
85 );
86 add_submenu_page(
87 $this->menu_slug, __('Categories', 'betterdocs'), __('Categories', 'betterdocs'),
88 $betterdocs_terms_caps, 'edit-tags.php?taxonomy=doc_category&post_type=docs'
89 );
90 add_submenu_page(
91 $this->menu_slug, __('Tags', 'betterdocs'), __('Tags', 'betterdocs'),
92 $betterdocs_terms_caps, 'edit-tags.php?taxonomy=doc_tag&post_type=docs'
93 );
94
95 foreach( $settings as $slug => $setting ) {
96 $cap = isset( $setting['capability'] ) ? $setting['capability'] : 'delete_users';
97 add_submenu_page( $this->menu_slug, $setting['title'], $setting['title'], $cap, $slug, $setting['callback'] );
98 }
99 }
100
101 public function highlight_admin_menu($parent_file)
102 {
103 global $current_screen;
104
105 if( $this->menu_slug === 'betterdocs-admin' && in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
106 $parent_file = 'betterdocs-admin';
107 } else {
108 if( in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
109 $parent_file = 'edit.php?post_type=docs';
110 }
111 }
112 return apply_filters('betterdocs_highlight_admin_menu', $parent_file);
113 }
114
115 public function highlight_admin_submenu($submenu_file)
116 {
117 global $current_screen, $pagenow;
118
119 if ( $current_screen->post_type == 'docs' ) {
120 if ( $pagenow == 'post.php' ) {
121 $submenu_file = 'edit.php?post_type=docs';
122 }
123 if ( $pagenow == 'post-new.php' ) {
124 $submenu_file = 'post-new.php?post_type=docs';
125 }
126 if( $current_screen->id === 'edit-doc_category' ) {
127 $submenu_file = 'edit-tags.php?taxonomy=doc_category&post_type=docs';
128 }
129 if( $current_screen->id === 'edit-doc_tag' ) {
130 $submenu_file = 'edit-tags.php?taxonomy=doc_tag&post_type=docs';
131 }
132 if( $current_screen->id === 'edit-knowledge_base' ) {
133 $submenu_file = 'edit-tags.php?taxonomy=knowledge_base&post_type=docs';
134 }
135 }
136
137 if( 'betterdocs_page_betterdocs-settings' == $current_screen->id ) {
138 $submenu_file = 'betterdocs-settings';
139 }
140
141 if( 'betterdocs_page_betterdocs-setup' == $current_screen->id ) {
142 $submenu_file = 'betterdocs-setup';
143 }
144
145 return apply_filters('betterdocs_highlight_admin_submenu', $submenu_file);
146 }
147
148 public function header_template()
149 {
150 $html = '<div class="betterdocs-settings-header">
151 <div class="betterdocs-header-full">
152 <img src="'.BETTERDOCS_ADMIN_URL.'assets/img/betterdocs-icon.svg" alt="">
153 <h2 class="title">'.esc_html__('BetterDocs', 'betterdocs').'</h2>
154 <div class="betterdocs-header-button">
155 <a href="edit.php?post_type=docs&bdocs_view=classic" class="betterdocs-button betterdocs-button-secondary">'.esc_html__('Switch to Classic UI', 'betterdocs').'</a>
156 <a href="post-new.php?post_type=docs" class="betterdocs-button betterdocs-button-primary">'.esc_html__('Add New Doc', 'betterdocs').'</a>
157 </div>
158 <div class="betterdocs-switch-mode">
159 <label for="betterdocs-mode-toggle">
160 <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">
161 <g id="Sun">
162 <g>
163 <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" />
164 </g>
165 </g>
166 </svg>
167 </label>
168 <input class="betterdocs-mode-toggle" id="betterdocs-mode-toggle" type="checkbox">
169 <label class="betterdocs-mode-toggle-button" for="betterdocs-mode-toggle"></label>
170 <label for="betterdocs-mode-toggle">
171 <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">
172 <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" />
173 </svg>
174 </label>
175 </div>
176 </div>
177 </div>';
178
179 echo apply_filters('betterdocs_admin_screen_header_nav',$html);
180 }
181
182 public function betterdocs_menu_slug()
183 {
184 return 'betterdocs-admin';
185 }
186
187 public function betterdocs_admin_output()
188 {
189 return array($this, 'betterdocs_admin_display');
190 }
191
192 public function betterdocs_admin_display()
193 {
194 if (file_exists(BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php')) {
195 return include_once BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php';
196 }
197 }
198 }