2025-04-16 16:13:31 +02:00

92 lines
2.7 KiB
PHP

<?php
/**
* Asset loader class
*/
// Exit if accessed directly
if (!defined('ABSPATH')) {
exit;
}
class Palantics_Loader {
/**
* Constructor
*/
public function __construct() {
// Enqueue frontend scripts
add_action('wp_enqueue_scripts', array($this, 'enqueue_frontend_scripts'));
// Enqueue admin scripts
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
}
/**
* Enqueue frontend scripts
*/
public function enqueue_frontend_scripts() {
// Register main tracking script
wp_register_script(
'palantics-tracking-script',
PALANTICS_PLUGIN_URL . 'assets/js/tracking-script.js',
array(),
PALANTICS_PLUGIN_VERSION,
false
);
// Register class tracking script
wp_register_script(
'palantics-class-tracking',
PALANTICS_PLUGIN_URL . 'assets/js/class-tracking.js',
array('palantics-tracking-script'),
PALANTICS_PLUGIN_VERSION,
true
);
// Get tracking classes from options
$track_classes = get_option('palantics_tracking_track_classes', '');
$track_classes_array = array_filter(array_map('trim', explode(',', $track_classes)));
// Only enqueue class tracking if we have classes to track
if (!empty($track_classes_array)) {
// Add trackClasses as a JavaScript variable
wp_localize_script(
'palantics-class-tracking',
'trackClasses',
$track_classes_array
);
// Enqueue the script
wp_enqueue_script('palantics-class-tracking');
}
// Always enqueue the main tracking script
wp_enqueue_script('palantics-tracking-script');
// Add server URL to JavaScript
$server_url = esc_url(get_option('palantics_tracking_server_url', 'tracking1.karlbreuer.com'));
wp_add_inline_script(
'palantics-tracking-script',
"const server = 'https://" . $server_url . "';",
'before'
);
}
/**
* Enqueue admin scripts
*/
public function enqueue_admin_scripts($hook) {
// Only load on our settings page
if ($hook != 'settings_page_palantics-tracking-settings') {
return;
}
// Enqueue admin styles
wp_enqueue_style(
'palantics-admin-style',
PALANTICS_PLUGIN_URL . 'assets/css/admin.css',
array(),
PALANTICS_PLUGIN_VERSION
);
}
}