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

194 lines 10.0 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, 2);
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 if( $this->menu_slug === 'betterdocs-admin' && in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
105 $parent_file = 'betterdocs-admin';
106 } else {
107 if( in_array( $current_screen->id, array( 'edit-doc_tag', 'edit-doc_category' ) ) ) {
108 $parent_file = 'edit.php?post_type=docs';
109 }
110 }
111 return $parent_file;
112 }
113
114 public function highlight_admin_submenu( $parent_file, $submenu_file )
115 {
116 global $current_screen, $pagenow;
117 if ( $current_screen->post_type == 'docs' ) {
118 if ( $pagenow == 'post.php' ) {
119 $submenu_file = 'edit.php?post_type=docs';
120 }
121 if ( $pagenow == 'post-new.php' ) {
122 $submenu_file = 'post-new.php?post_type=docs';
123 }
124 if( $current_screen->id === 'edit-doc_category' ) {
125 $submenu_file = 'edit-tags.php?taxonomy=doc_category&post_type=docs';
126 }
127 if( $current_screen->id === 'edit-doc_tag' ) {
128 $submenu_file = 'edit-tags.php?taxonomy=doc_tag&post_type=docs';
129 }
130 if( $current_screen->id === 'edit-knowledge_base' ) {
131 $submenu_file = 'edit-tags.php?taxonomy=knowledge_base&post_type=docs';
132 }
133 }
134 if( 'betterdocs_page_betterdocs-settings' == $current_screen->id ) {
135 $submenu_file = 'betterdocs-settings';
136 }
137 if( 'betterdocs_page_betterdocs-setup' == $current_screen->id ) {
138 $submenu_file = 'betterdocs-setup';
139 }
140
141 return $submenu_file;
142 }
143
144 public function header_template()
145 {
146 $html = '<div class="betterdocs-settings-header">
147 <div class="betterdocs-header-full">
148 <img src="'.BETTERDOCS_ADMIN_URL.'assets/img/betterdocs-icon.svg" alt="">
149 <h2 class="title">'.esc_html__('BetterDocs', 'betterdocs').'</h2>
150 <div class="betterdocs-header-button">
151 <a href="edit.php?post_type=docs&bdocs_view=classic" class="betterdocs-button betterdocs-button-secondary">'.esc_html__('Switch to Classic UI', 'betterdocs').'</a>
152 <a href="post-new.php?post_type=docs" class="betterdocs-button betterdocs-button-primary">'.esc_html__('Add New Doc', 'betterdocs').'</a>
153 </div>
154 <div class="betterdocs-switch-mode">
155 <label for="betterdocs-mode-toggle">
156 <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">
157 <g id="Sun">
158 <g>
159 <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" />
160 </g>
161 </g>
162 </svg>
163 </label>
164 <input class="betterdocs-mode-toggle" id="betterdocs-mode-toggle" type="checkbox">
165 <label class="betterdocs-mode-toggle-button" for="betterdocs-mode-toggle"></label>
166 <label for="betterdocs-mode-toggle">
167 <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">
168 <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" />
169 </svg>
170 </label>
171 </div>
172 </div>
173 </div>';
174
175 echo apply_filters('betterdocs_admin_screen_header_nav',$html);
176 }
177
178 public function betterdocs_menu_slug()
179 {
180 return 'betterdocs-admin';
181 }
182
183 public function betterdocs_admin_output()
184 {
185 return array($this, 'betterdocs_admin_display');
186 }
187
188 public function betterdocs_admin_display()
189 {
190 if (file_exists(BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php')) {
191 return include_once BETTERDOCS_ADMIN_DIR_PATH . 'partials/betterdocs-admin-screen.php';
192 }
193 }
194 }