*/ if ( ! defined( 'ABSPATH' ) ) { exit; } class Group107_AccessibleDocs_Admin { /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $plugin_name; /** * The version of this plugin. * * @since 1.0.0 * @access private * @var string $version The current version of this plugin. */ private $version; /** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $plugin_name The name of this plugin. * @param string $version The version of this plugin. */ public function __construct( $plugin_name, $version ) { $this->plugin_name = $plugin_name; $this->version = $version; $this->load_dependencies(); add_action('admin_menu', [$this, 'register_accessible_docs_pages']); } /** * Register the stylesheets for the admin area. * * @since 1.0.0 */ public function enqueue_styles( $hook_suffix = '' ) { // The menu icon style is needed on every admin page, the rest only on the plugin pages (small file). wp_enqueue_style( $this->plugin_name, ACCESSIBLE_DOCS_PLUGIN_URL . 'assets/css/accessible-docs-admin.css', array(), $this->version, 'all' ); } /** * Register the JavaScript for the admin area. * * @since 1.0.0 */ public function enqueue_scripts( $hook_suffix = '' ) { // Only the Documents List page needs JavaScript. if ( false === strpos( (string) $hook_suffix, 'accessible-docs-admin-documents-list' ) ) { return; } wp_enqueue_script( $this->plugin_name.'-admin', ACCESSIBLE_DOCS_PLUGIN_URL . 'assets/js/js-accessible-docs-admin.js', array(), $this->version, true ); wp_localize_script($this->plugin_name.'-admin', 'accessible_docs_admin_object', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('accessible_docs_admin_nonce'), )); } /** * Load the required dependencies. * * @since 1.0.0 * @access private */ private function load_dependencies() { require_once ACCESSIBLE_DOCS_PLUGIN_PATH . 'admin/class-accessible-docs-admin-general-settings.php'; require_once ACCESSIBLE_DOCS_PLUGIN_PATH . 'admin/class-accessible-docs-admin-popup-settings.php'; } /** * Registers the AccessibleDocs page in the WordPress admin menu. * * @since 1.0.0 */ public function register_accessible_docs_pages() { add_menu_page( __('AccessibleDocs', 'accessible-docs'), __('AccessibleDocs', 'accessible-docs'), 'manage_options', 'accessible-docs', [$this, 'render_accessible_docs_general_settings_page'], 'none', 65 ); // Popup settings subpage add_submenu_page( 'accessible-docs', __('Popup settings', 'accessible-docs'), __('Popup settings', 'accessible-docs'), 'manage_options', 'accessible-docs-admin-popup-settings', [$this, 'render_accessible_docs_popup_settings_page'] ); // Documents List subpage add_submenu_page( 'accessible-docs', __('Documents List', 'accessible-docs'), __('Documents List', 'accessible-docs'), 'manage_options', 'accessible-docs-admin-documents-list', [$this, 'render_accessible_docs_documents_list_page'] ); } /** * Renders the AccessibleDocs general settings page content. * * @since 1.0.0 */ public function render_accessible_docs_general_settings_page() { include ACCESSIBLE_DOCS_PLUGIN_PATH . '/admin/partials/accessible-docs-admin-general-settings-page.php'; } /** * Renders the AccessibleDocs documents list page content. * * @since 1.0.0 */ public function render_accessible_docs_documents_list_page() { include ACCESSIBLE_DOCS_PLUGIN_PATH . '/admin/partials/accessible-docs-admin-documents-list-page.php'; } /** * Renders the AccessibleDocs popup settings page content. * * @since 1.0.0 */ public function render_accessible_docs_popup_settings_page() { include ACCESSIBLE_DOCS_PLUGIN_PATH . '/admin/partials/accessible-docs-admin-popup-settings-page.php'; } }