| 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 |
} |