init_admin(); } /** * Initialize admin components */ private function init_admin() { // Admin menu and pages add_action('admin_menu', array($this, 'register_admin_menu')); add_action('admin_init', array($this, 'admin_init')); add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_assets')); // AJAX handlers for privacy requests add_action('wp_ajax_whiskers_handle_data_request', array($this, 'handle_data_request')); add_action('wp_ajax_whiskers_run_cookie_scan', array($this, 'run_cookie_scan')); add_action('wp_ajax_whiskers_update_compliance', array($this, 'update_compliance_settings')); add_action('wp_ajax_tigerstyle_whiskers_save_inventory_completion', array($this, 'save_inventory_completion')); add_action('wp_ajax_tigerstyle_whiskers_schedule_review', array($this, 'schedule_compliance_review')); // Admin notices add_action('admin_notices', array($this, 'display_admin_notices')); // Initialize admin pages controller TigerStyleWhiskers_Admin_Pages::instance(); } /** * Register admin menu and pages */ public function register_admin_menu() { // Main Whiskers page add_menu_page( __('TigerStyle Whiskers', 'tigerstyle-whiskers'), __('Whiskers', 'tigerstyle-whiskers'), 'manage_options', 'tigerstyle-whiskers', array($this, 'render_main_page'), 'data:image/svg+xml;base64,' . base64_encode($this->get_menu_icon()), 30 ); // Dashboard submenu add_submenu_page( 'tigerstyle-whiskers', __('Privacy Dashboard', 'tigerstyle-whiskers'), __('📊 Dashboard', 'tigerstyle-whiskers'), 'manage_options', 'tigerstyle-whiskers', array($this, 'render_main_page') ); // Consent Analytics add_submenu_page( 'tigerstyle-whiskers', __('Consent Analytics', 'tigerstyle-whiskers'), __('📈 Consent Analytics', 'tigerstyle-whiskers'), 'manage_options', 'whiskers-consent-analytics', array($this, 'render_consent_analytics') ); // Data Requests add_submenu_page( 'tigerstyle-whiskers', __('Data Requests', 'tigerstyle-whiskers'), __('📋 Data Requests', 'tigerstyle-whiskers'), 'manage_options', 'whiskers-data-requests', array($this, 'render_data_requests') ); // Cookie Scanner add_submenu_page( 'tigerstyle-whiskers', __('Cookie Scanner', 'tigerstyle-whiskers'), __('🍪 Cookie Scanner', 'tigerstyle-whiskers'), 'manage_options', 'whiskers-cookie-scanner', array($this, 'render_cookie_scanner') ); // Compliance Monitor add_submenu_page( 'tigerstyle-whiskers', __('Compliance Monitor', 'tigerstyle-whiskers'), __('✅ Compliance', 'tigerstyle-whiskers'), 'manage_options', 'whiskers-compliance', array($this, 'render_compliance_monitor') ); // Settings add_submenu_page( 'tigerstyle-whiskers', __('Whiskers Settings', 'tigerstyle-whiskers'), __('⚙️ Settings', 'tigerstyle-whiskers'), 'manage_options', 'whiskers-settings', array($this, 'render_settings') ); } /** * Get SVG menu icon */ private function get_menu_icon() { return ''; } /** * Admin initialization */ public function admin_init() { // Register settings register_setting('whiskers_settings', 'whiskers_options'); // Initialize admin notices $this->check_heat_integration(); } /** * Enqueue admin assets */ public function enqueue_admin_assets($hook) { // Only load on Whiskers admin pages if (strpos($hook, 'whiskers') === false && strpos($hook, 'tigerstyle-whiskers') === false) { return; } // Admin CSS wp_enqueue_style( 'whiskers-admin', TIGERSTYLE_WHISKERS_PLUGIN_URL . 'assets/css/admin.css', array(), TIGERSTYLE_WHISKERS_VERSION ); // Admin JavaScript wp_enqueue_script( 'whiskers-admin', TIGERSTYLE_WHISKERS_PLUGIN_URL . 'assets/js/admin.js', array('jquery', 'wp-api'), TIGERSTYLE_WHISKERS_VERSION, true ); // Chart.js for analytics wp_enqueue_script( 'chartjs', 'https://cdn.jsdelivr.net/npm/chart.js', array(), '3.9.1', true ); // Localize script for AJAX wp_localize_script('whiskers-admin', 'whiskersAdmin', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('whiskers_admin_nonce'), 'strings' => array( 'cookieScanInProgress' => __('Scanning cookies with feline precision...', 'tigerstyle-whiskers'), 'complianceCheckRunning' => __('Checking compliance boundaries...', 'tigerstyle-whiskers'), 'dataRequestProcessed' => __('Data request processed successfully!', 'tigerstyle-whiskers'), 'errorOccurred' => __('An error occurred. Please check your whiskers and try again.', 'tigerstyle-whiskers'), ) )); } /** * Check Heat integration status */ private function check_heat_integration() { if (class_exists('TigerStyleSEO')) { update_option('whiskers_heat_integration', 'active'); } else { update_option('whiskers_heat_integration', 'missing'); } } /** * Display admin notices */ public function display_admin_notices() { $heat_integration = get_option('whiskers_heat_integration', 'unknown'); if ($heat_integration === 'missing') { echo '
🐱 TigerStyle Whiskers: '; echo __('Install TigerStyle Heat for enhanced SEO-privacy integration!', 'tigerstyle-whiskers'); echo '
'; echo '🔥🐱 Integration Active: '; echo __('Heat respects Whiskers consent boundaries perfectly!', 'tigerstyle-whiskers'); echo '
'; echo '