upskill-event-manager/includes/class-hvac-scripts-styles.php
bengizmo 00b3b2008b fix: Resolve event manage page CSS override and duplicate header issues
- Scoped all CSS rules to .hvac-event-manage-wrapper to prevent theme conflicts
- Moved navigation header directly into page template to avoid duplication
- Disabled duplicate header hook in HVAC_Event_Manage_Header class
- Added theme override styles to enforce 1200px max-width and 20px padding
- Updated CSS methodology to use consistent spacing and remove CSS variables
- Added HVAC_Page_Content_Fixer class to clean escaped HTML comments
- Updated documentation with CSS architecture details
- Enhanced theme compatibility with higher specificity selectors

The event manage page now displays correctly with:
- Single navigation header (no duplicates)
- Proper white background and shadows
- Consistent button styling matching other pages
- Clean 1200px max-width layout with 20px padding

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 15:36:39 -03:00

493 lines
No EOL
14 KiB
PHP

<?php
/**
* HVAC Scripts and Styles Manager
*
* Centralized management of all plugin scripts and styles
*
* @package HVAC_Community_Events
* @since 2.0.0
*/
if (!defined('ABSPATH')) {
exit;
}
/**
* HVAC_Scripts_Styles class
*/
class HVAC_Scripts_Styles {
/**
* Instance
*
* @var HVAC_Scripts_Styles
*/
private static $instance = null;
/**
* Script version for cache busting
*
* @var string
*/
private $version;
/**
* Get instance
*
* @return HVAC_Scripts_Styles
*/
public static function instance() {
if (null === self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*/
private function __construct() {
$this->version = HVAC_PLUGIN_VERSION;
$this->init_hooks();
}
/**
* Initialize hooks
*
* @return void
*/
private function init_hooks() {
// Frontend scripts and styles
add_action('wp_enqueue_scripts', array($this, 'enqueue_frontend_assets'));
// Admin scripts and styles
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_assets'));
// Login page scripts and styles
add_action('login_enqueue_scripts', array($this, 'enqueue_login_assets'));
}
/**
* Enqueue frontend assets
*
* @return void
*/
public function enqueue_frontend_assets() {
// Only enqueue on plugin pages
if (!$this->is_plugin_page()) {
return;
}
// Main plugin styles
wp_enqueue_style(
'hvac-community-events',
HVAC_PLUGIN_URL . 'assets/css/hvac-community-events.css',
array(),
$this->version
);
// Page templates styles - ensures proper layout for all HVAC pages
wp_enqueue_style(
'hvac-page-templates',
HVAC_PLUGIN_URL . 'assets/css/hvac-page-templates.css',
array(),
$this->version
);
// Layout styles - ensure proper container width and padding
wp_enqueue_style(
'hvac-layout',
HVAC_PLUGIN_URL . 'assets/css/hvac-layout.css',
array('hvac-community-events'),
$this->version
);
// Dashboard styles
if ($this->is_dashboard_page()) {
wp_enqueue_style(
'hvac-dashboard',
HVAC_PLUGIN_URL . 'assets/css/hvac-dashboard.css',
array('hvac-community-events'),
$this->version
);
wp_enqueue_style(
'hvac-dashboard-enhanced',
HVAC_PLUGIN_URL . 'assets/css/hvac-dashboard-enhanced.css',
array('hvac-dashboard'),
$this->version
);
}
// Registration styles
if ($this->is_registration_page()) {
wp_enqueue_style(
'hvac-registration',
HVAC_PLUGIN_URL . 'assets/css/hvac-registration.css',
array('hvac-community-events'),
$this->version
);
}
// Communication templates styles
if ($this->is_communication_page()) {
wp_enqueue_style(
'communication-templates',
HVAC_PLUGIN_URL . 'assets/css/communication-templates.css',
array('hvac-community-events'),
$this->version
);
}
// Event manage page styles
if ($this->is_event_manage_page()) {
// First ensure common CSS is loaded
wp_enqueue_style(
'hvac-common',
HVAC_PLUGIN_URL . 'assets/css/hvac-common.css',
array(),
$this->version
);
// Then dashboard CSS
wp_enqueue_style(
'hvac-dashboard',
HVAC_PLUGIN_URL . 'assets/css/hvac-dashboard.css',
array('hvac-community-events', 'hvac-common'),
$this->version
);
// Layout CSS for proper container styling
wp_enqueue_style(
'hvac-layout',
HVAC_PLUGIN_URL . 'assets/css/hvac-layout.css',
array('hvac-community-events'),
$this->version
);
// Finally event manage CSS
wp_enqueue_style(
'hvac-event-manage',
HVAC_PLUGIN_URL . 'assets/css/hvac-event-manage.css',
array('hvac-community-events', 'hvac-common', 'hvac-dashboard', 'hvac-layout'),
$this->version
);
}
// Main plugin scripts
wp_enqueue_script(
'hvac-community-events',
HVAC_PLUGIN_URL . 'assets/js/hvac-community-events.js',
array('jquery'),
$this->version,
true
);
// Dashboard scripts
if ($this->is_dashboard_page()) {
wp_enqueue_script(
'hvac-dashboard',
HVAC_PLUGIN_URL . 'assets/js/hvac-dashboard.js',
array('jquery', 'hvac-community-events'),
$this->version,
true
);
wp_enqueue_script(
'hvac-dashboard-enhanced',
HVAC_PLUGIN_URL . 'assets/js/hvac-dashboard-enhanced.js',
array('hvac-dashboard'),
$this->version,
true
);
}
// Registration scripts
if ($this->is_registration_page()) {
wp_enqueue_script(
'hvac-registration',
HVAC_PLUGIN_URL . 'assets/js/hvac-registration.js',
array('jquery', 'hvac-community-events'),
$this->version,
true
);
}
// Help system scripts
wp_enqueue_script(
'hvac-help-system',
HVAC_PLUGIN_URL . 'assets/js/hvac-help-system.js',
array('jquery'),
$this->version,
true
);
// Localize main script
wp_localize_script('hvac-community-events', 'hvac_ajax', array(
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('hvac_ajax_nonce'),
'is_logged_in' => is_user_logged_in(),
'plugin_url' => HVAC_PLUGIN_URL,
));
// Localize dashboard script
if ($this->is_dashboard_page()) {
wp_localize_script('hvac-dashboard', 'hvac_dashboard', array(
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('hvac_dashboard_nonce'),
'strings' => array(
'loading' => __('Loading...', 'hvac-community-events'),
'error' => __('An error occurred. Please try again.', 'hvac-community-events'),
),
));
}
}
/**
* Enqueue admin assets
*
* @param string $hook Current admin page hook
* @return void
*/
public function enqueue_admin_assets($hook) {
// Global admin styles
wp_enqueue_style(
'hvac-admin',
HVAC_PLUGIN_URL . 'assets/css/hvac-admin.css',
array(),
$this->version
);
// Global admin scripts
wp_enqueue_script(
'hvac-admin',
HVAC_PLUGIN_URL . 'assets/js/hvac-admin.js',
array('jquery'),
$this->version . '.2', // Force cache refresh for jQuery fix
true
);
// Localize admin script
wp_localize_script('hvac-admin', 'hvac_admin', array(
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('hvac_admin_nonce'),
));
// Plugin-specific admin pages
if (strpos($hook, 'hvac-community-events') !== false) {
// Add any additional plugin-specific admin assets here
}
// Certificate admin scripts
if (strpos($hook, 'certificate') !== false) {
wp_enqueue_script(
'hvac-certificate-admin',
HVAC_PLUGIN_URL . 'assets/js/hvac-certificate-admin.js',
array('jquery'),
$this->version,
true
);
}
}
/**
* Enqueue login page assets
*
* @return void
*/
public function enqueue_login_assets() {
// Check if we're on the custom login page
if (!$this->is_custom_login_page()) {
return;
}
wp_enqueue_style(
'hvac-login',
HVAC_PLUGIN_URL . 'assets/css/hvac-login.css',
array(),
$this->version
);
wp_enqueue_script(
'hvac-login',
HVAC_PLUGIN_URL . 'assets/js/hvac-login.js',
array('jquery'),
$this->version,
true
);
}
/**
* Check if current page is a plugin page
*
* @return bool
*/
private function is_plugin_page() {
// Check using template loader if available
if (class_exists('HVAC_Template_Loader')) {
return HVAC_Template_Loader::is_plugin_template();
}
// Fallback: check URL path
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
$plugin_paths = array(
'trainer',
'master-trainer',
'training-login',
'hvac-dashboard',
'manage-event',
'event-summary',
);
foreach ($plugin_paths as $path) {
if (strpos($current_path, $path) !== false) {
return true;
}
}
return false;
}
/**
* Check if current page is a dashboard page
*
* @return bool
*/
private function is_dashboard_page() {
// Check by page slug
$dashboard_pages = array(
'trainer-dashboard',
'master-dashboard',
'hvac-dashboard',
'trainer/dashboard',
'master-trainer/dashboard',
'master-trainer/master-dashboard',
'trainer/event/manage',
'manage-event',
'trainer/certificate-reports',
'trainer/generate-certificates'
);
foreach ($dashboard_pages as $page_slug) {
if (is_page($page_slug)) {
return true;
}
}
// Also check URL path as fallback
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
$dashboard_paths = array(
'trainer/dashboard',
'master-trainer/dashboard',
'master-trainer/master-dashboard',
'trainer/event/manage',
'manage-event',
'trainer/certificate-reports',
'trainer/generate-certificates'
);
foreach ($dashboard_paths as $path) {
if (strpos($current_path, $path) !== false) {
return true;
}
}
// Check if this is a community events submission page
if (function_exists('tribe_is_community_edit_event_page') && tribe_is_community_edit_event_page()) {
return true;
}
if (function_exists('tribe_is_community_my_events_page') && tribe_is_community_my_events_page()) {
return true;
}
return false;
}
/**
* Check if current page is registration page
*
* @return bool
*/
private function is_registration_page() {
return is_page('trainer-registration') ||
is_page('trainer/registration');
}
/**
* Check if current page is communication page
*
* @return bool
*/
private function is_communication_page() {
return is_page('communication-templates') ||
is_page('trainer/communication-templates') ||
is_page('communication-schedules') ||
is_page('trainer/communication-schedules');
}
/**
* Check if current page is event manage page
*
* @return bool
*/
private function is_event_manage_page() {
// Check by page ID (most reliable)
global $post;
if ($post && $post->ID == 5344) { // Event manage page ID
return true;
}
// Check by page slug
if (is_page('manage') || is_page('trainer/event/manage') || is_page('manage-event') || is_page('trainer-event-manage')) {
return true;
}
// Check by page template
if (is_page_template('page-manage-event.php')) {
return true;
}
// Check URL path
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
if ($current_path === 'trainer/event/manage' || $current_path === 'trainer/event/manage/') {
return true;
}
// Check if this is a community events submission page
if (function_exists('tribe_is_community_edit_event_page') && tribe_is_community_edit_event_page()) {
return true;
}
return false;
}
/**
* Check if current page is custom login page
*
* @return bool
*/
private function is_custom_login_page() {
return is_page('training-login') ||
is_page('community-login') ||
is_page('trainer/login');
}
/**
* Get script version with cache busting
*
* @param string $file File path
* @return string
*/
public function get_asset_version($file = '') {
// In development, use file modification time
if (defined('WP_DEBUG') && WP_DEBUG && $file) {
$file_path = HVAC_PLUGIN_DIR . $file;
if (file_exists($file_path)) {
return filemtime($file_path);
}
}
return $this->version;
}
}