Files
hub-insurance/wp-content/plugins/generateblocks-pro/includes/overlays/class-overlay-iframe-context.php
T
2026-07-02 15:54:39 -06:00

95 lines
2.6 KiB
PHP

<?php
/**
* Modal Iframe Context Handler
*
* Handles enqueuing the iframe context script and adding modal context detection.
*
* @package GenerateBlocks Pro
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Class GenerateBlocks_Pro_Overlay_Iframe_Context
*
* This class manages the context for modals when they are opened in an iframe.
* It enqueues the necessary scripts and styles, adds body classes, and provides utility methods
* for checking modal context and generating modal edit URLs.
*/
class GenerateBlocks_Pro_Overlay_Iframe_Context {
/**
* Initialize the class.
*/
public function __construct() {
// Don't initialize if overlays are disabled.
if ( ! generateblocks_pro_overlays_enabled() ) {
return;
}
add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_iframe_context_script' ) );
}
/**
* Enqueue iframe context script when editing overlays.
*/
public function enqueue_iframe_context_script() {
// Only in admin area.
if ( ! is_admin() ) {
return;
}
// Check if we're on a post edit screen.
$current_screen = get_current_screen();
if ( ! $current_screen || ! in_array( $current_screen->base, array( 'post', 'post-new' ), true ) ) {
return;
}
// Check if we're editing a overlay.
global $post;
if ( ! $post || 'gblocks_overlay' !== $post->post_type ) {
return;
}
// Check if we're in overlay iframe context.
if ( isset( $_GET['gb_overlay_context'] ) && '1' === $_GET['gb_overlay_context'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$assets = generateblocks_pro_get_enqueue_assets( 'gb-overlay-iframe-context' );
// Enqueue the iframe context script.
wp_enqueue_script(
'gb-overlay-iframe-context',
GENERATEBLOCKS_PRO_DIR_URL . 'dist/overlay-iframe-context.js', // Use built file.
$assets['dependencies'],
$assets['version'],
true
);
// Enqueue the iframe context styles.
wp_enqueue_style(
'gb-overlay-iframe-context',
GENERATEBLOCKS_PRO_DIR_URL . 'dist/overlay-iframe-context.css',
array(),
filemtime( GENERATEBLOCKS_PRO_DIR . 'dist/overlay-iframe-context.css' ) // Use built file.
);
// Add admin body class for overlay context.
add_filter( 'admin_body_class', array( $this, 'add_overlay_context_body_class' ) );
}
}
/**
* Add overlay context body class.
*
* @param string $classes Existing body classes.
* @return string Modified body classes.
*/
public function add_overlay_context_body_class( $classes ) {
return $classes . ' gb-overlay-context';
}
}
// Initialize the class.
new GenerateBlocks_Pro_Overlay_Iframe_Context();