Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions admin/class-betterlytics-admin-controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,6 @@ public function render() {
</button>
</div>
</div>
<script>
document.getElementById('betterlytics-dismiss-banner').addEventListener('click', function() {
var banner = document.getElementById('betterlytics-setup-banner');
banner.style.display = 'none';
var xhr = new XMLHttpRequest();
xhr.open('POST', '<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('action=betterlytics_dismiss_setup_banner&nonce=<?php echo esc_js( wp_create_nonce( 'betterlytics_admin' ) ); ?>');
});
</script>
<?php endif; ?>

<div class="wrap betterlytics-admin-wrap max-w-[1200px] mx-auto px-10 relative">
Expand Down
52 changes: 29 additions & 23 deletions admin/class-betterlytics-admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,35 @@ public function enqueue_styles( $hook ) {
);
}

/**
* Enqueue admin scripts.
*
* @since 1.0.0
* @param string $hook The current admin page hook.
*/
public function enqueue_scripts( $hook ) {
// Always enqueue - dashboard link script runs on all admin pages.
wp_enqueue_script(
'betterlytics-admin',
BETTERLYTICS_PLUGIN_URL . 'admin/js/betterlytics-admin.js',
[],
$this->version,
true
);

// Only localize with AJAX data on Betterlytics pages where banner may show.
if ( 'settings_page_betterlytics' === $hook ) {
wp_localize_script(
'betterlytics-admin',
'betterlyticsAdmin',
[
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'betterlytics_admin' ),
]
);
}
}

/**
* Register plugin settings.
*
Expand Down Expand Up @@ -178,29 +207,6 @@ public function hide_admin_notices() {
}
}

/**
* Add target="_blank" to dashboard link in admin menu.
*
* @since 1.0.0
*/
public function dashboard_link_script() {
?>
<script>
(function(){
function setTarget() {
var link = document.querySelector('#adminmenu a[href*="betterlytics.io"]');
if (link) { link.target = '_blank'; link.rel = 'noopener'; }
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', setTarget);
} else {
setTarget();
}
})();
</script>
<?php
}

/**
* AJAX handler for dismissing the setup banner.
*
Expand Down
57 changes: 57 additions & 0 deletions admin/js/betterlytics-admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/**
* Betterlytics Admin Scripts
*
* @package Betterlytics
*/

( function() {
'use strict';

/**
* Set target="_blank" on external dashboard link in admin menu.
* Runs on all admin pages.
*/
function initDashboardLink() {
function setTarget() {
var link = document.querySelector( '#adminmenu a[href*="betterlytics.io"]' );
if ( link ) {
link.target = '_blank';
link.rel = 'noopener';
}
}

if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', setTarget );
} else {
setTarget();
}
}

/**
* Setup banner dismiss functionality.
* Only runs when banner exists and config is provided.
*/
function initBannerDismiss() {
var dismissBtn = document.getElementById( 'betterlytics-dismiss-banner' );
if ( ! dismissBtn || typeof betterlyticsAdmin === 'undefined' ) {
return;
}

dismissBtn.addEventListener( 'click', function() {
var banner = document.getElementById( 'betterlytics-setup-banner' );
if ( banner ) {
banner.style.display = 'none';
}

var xhr = new XMLHttpRequest();
xhr.open( 'POST', betterlyticsAdmin.ajaxUrl );
xhr.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
xhr.send( 'action=betterlytics_dismiss_setup_banner&nonce=' + betterlyticsAdmin.nonce );
} );
}

// Initialize.
initDashboardLink();
initBannerDismiss();

} )();
2 changes: 1 addition & 1 deletion includes/class-betterlytics.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,9 @@ private function define_admin_hooks() {

// Admin functionality.
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
$this->loader->add_action( 'admin_init', $plugin_admin, 'register_settings' );
$this->loader->add_action( 'admin_head', $plugin_admin, 'hide_admin_notices' );
$this->loader->add_action( 'admin_print_footer_scripts', $plugin_admin, 'dashboard_link_script' );
$this->loader->add_action( 'wp_ajax_betterlytics_dismiss_setup_banner', $plugin_admin, 'ajax_dismiss_setup_banner' );
}

Expand Down
14 changes: 7 additions & 7 deletions public/class-betterlytics-public.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,13 @@ public function enqueue_event_scripts() {
return;
}

wp_enqueue_script(
'betterlytics-events',
BETTERLYTICS_PLUGIN_URL . 'public/js/betterlytics-events.js',
[],
$this->version,
true
);
wp_enqueue_script(
'betterlytics-events',
BETTERLYTICS_PLUGIN_URL . 'public/js/betterlytics-events.js',
[],
$this->version,
true
);

wp_localize_script(
'betterlytics-events',
Expand Down