Last active
December 18, 2024 16:25
-
-
Save nathaningram/8b4f44e270fdcf51c7df48d17ba36166 to your computer and use it in GitHub Desktop.
Revisions
-
nathaningram revised this gist
Dec 18, 2024 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -171,13 +171,13 @@ function bww_custom_dashboard_settings_page() { echo '</div>'; } // Inject the iframe into the dashboard function bww_dashboard_iframe() { global $pagenow; // Check if we're on the main dashboard page and iframe is enabled $enable_dashboard = get_option('custom_dashboard_enable', 'on'); if ($pagenow == 'index.php' && empty($_GET) && $enable_dashboard === 'on') { $selected_element_id = get_option('custom_dashboard_kadence_element', ''); $iframe_height = get_option('custom_dashboard_iframe_height', '600'); // Default: 600px -
nathaningram created this gist
Dec 18, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,227 @@ <?php /* Plugin Name: Brilliant Dashboard Description: Custom Dashboard Replacement with iFrame Version: 2024.12 Author: Brilliant Web Works */ // Prevent direct access if (!defined('ABSPATH')) { exit; // Exit if accessed directly } // Add settings page under 'Settings' function bww_custom_dashboard_menu() { add_options_page( 'Brilliant Dashboard Settings', 'Brilliant Dashboard', 'manage_options', 'brilliant-dashboard-settings', 'bww_custom_dashboard_settings_page' ); } add_action('admin_menu', 'bww_custom_dashboard_menu'); // Add inline CSS for toggle styling function bww_custom_dashboard_toggle_styles() { echo '<style> .switch { position: relative; display: inline-block; width: 34px; height: 20px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; transition: .4s; border-radius: 20px; } .slider:before { position: absolute; content: ""; height: 14px; width: 14px; left: 3px; bottom: 3px; background-color: white; transition: .4s; border-radius: 50%; } input:checked + .slider { background-color: #4caf50; } input:checked + .slider:before { transform: translateX(14px); } </style>'; } add_action('admin_head', 'bww_custom_dashboard_toggle_styles'); // Create Settings Page Content function bww_custom_dashboard_settings_page() { $selected_element = get_option('custom_dashboard_kadence_element', ''); $hide_widgets = get_option('custom_dashboard_hide_widgets', 'off'); $iframe_height = get_option('custom_dashboard_iframe_height', '600'); // Default: 600px $enable_dashboard = get_option('custom_dashboard_enable', 'on'); // Default: Enabled if ($_SERVER['REQUEST_METHOD'] == 'POST' && check_admin_referer('update_custom_dashboard_settings')) { // Update Enable/Disable Dashboard $enable_dashboard = isset($_POST['custom_dashboard_enable']) && $_POST['custom_dashboard_enable'] === 'on' ? 'on' : 'off'; update_option('custom_dashboard_enable', $enable_dashboard); // Update Kadence Element selection if (isset($_POST['custom_dashboard_kadence_element'])) { $selected_element = sanitize_text_field($_POST['custom_dashboard_kadence_element']); update_option('custom_dashboard_kadence_element', $selected_element); } // Update Hide Dashboard Widgets setting $hide_widgets = isset($_POST['custom_dashboard_hide_widgets']) && $_POST['custom_dashboard_hide_widgets'] === 'on' ? 'on' : 'off'; update_option('custom_dashboard_hide_widgets', $hide_widgets); // Update iframe height if (isset($_POST['custom_dashboard_iframe_height'])) { $iframe_height = absint($_POST['custom_dashboard_iframe_height']); // Ensure positive integer update_option('custom_dashboard_iframe_height', $iframe_height); } } // Fetch kadence_element posts $args = array( 'post_type' => 'kadence_element', 'posts_per_page' => -1 ); $elements = get_posts($args); echo '<div class="wrap">'; echo '<h1>Brilliant Dashboard Settings</h1>'; echo '<form method="post" action="">'; wp_nonce_field('update_custom_dashboard_settings'); // Enable/Disable Dashboard Toggle echo '<table class="form-table">'; echo '<tr valign="top">'; echo '<th scope="row">Enable Dashboard iFrame</th>'; echo '<td>'; echo '<label class="switch">'; echo '<input type="checkbox" name="custom_dashboard_enable" value="on"' . checked($enable_dashboard, 'on', false) . '>'; echo '<span class="slider"></span>'; echo '</label>'; echo '</td>'; echo '</tr>'; // Hide Dashboard Widgets Toggle echo '<tr valign="top">'; echo '<th scope="row">Hide Dashboard Widgets</th>'; echo '<td>'; echo '<label class="switch">'; echo '<input type="checkbox" name="custom_dashboard_hide_widgets" value="on"' . checked($hide_widgets, 'on', false) . '>'; echo '<span class="slider"></span>'; echo '</label>'; echo '</td>'; echo '</tr>'; // Kadence Element Selection echo '<tr valign="top">'; echo '<th scope="row">Select a Kadence Element</th>'; echo '<td>'; echo '<select name="custom_dashboard_kadence_element" class="regular-text">'; echo '<option value="">-- Select --</option>'; foreach ($elements as $element) { $selected = selected($selected_element, $element->ID, false); echo '<option value="' . esc_attr($element->ID) . '"' . $selected . '>' . esc_html($element->post_title) . '</option>'; } echo '</select>'; // Edit Element Button if (!empty($selected_element)) { $edit_link = admin_url('post.php?post=' . esc_attr($selected_element) . '&action=edit'); echo ' <a href="' . esc_url($edit_link) . '" class="button-secondary" target="_blank">Edit Element</a>'; } echo '</td>'; echo '</tr>'; // Iframe Height Field echo '<tr valign="top">'; echo '<th scope="row">Dashboard iFrame Height</th>'; echo '<td>'; echo '<input type="number" name="custom_dashboard_iframe_height" value="' . esc_attr($iframe_height) . '" class="small-text" min="100">'; echo '</td>'; echo '</tr>'; echo '</table>'; // Save Changes Button echo '<p class="submit">'; echo '<input type="submit" name="submit" id="submit" class="button button-primary" value="Save Changes">'; echo '</p>'; echo '</form>'; echo '</div>'; } // Inject the iframe directly into the dashboard function bww_dashboard_iframe() { global $pagenow; // Check if we're on the main dashboard page and iframe is enabled $enable_dashboard = get_option('custom_dashboard_enable', 'on'); if ($pagenow == 'index.php' && $enable_dashboard === 'on') { $selected_element_id = get_option('custom_dashboard_kadence_element', ''); $iframe_height = get_option('custom_dashboard_iframe_height', '600'); // Default: 600px if (!empty($selected_element_id)) { $selected_post = get_post($selected_element_id); if ($selected_post) { $element_url = home_url() . '/?kadence_element=' . $selected_post->post_name; echo '<div id="brilliant-dashboard-container" style="margin: 20px 20px 0 0;">'; echo '<iframe id="brilliant-dashboard" src="' . esc_url($element_url) . '" style="width:100%; height:' . esc_attr($iframe_height) . 'px; border:none;"></iframe>'; echo '</div>'; } } } } add_action('admin_notices', 'bww_dashboard_iframe'); // Optionally hide all dashboard widgets and other elements function bww_hide_all_dashboard_widgets() { $hide_widgets = get_option('custom_dashboard_hide_widgets', 'off'); if ($hide_widgets === 'on') { global $wp_meta_boxes; $wp_meta_boxes['dashboard']['normal']['core'] = array(); $wp_meta_boxes['dashboard']['side']['core'] = array(); $wp_meta_boxes['dashboard']['advanced']['core'] = array(); // Inline CSS to hide elements including Screen Options and Help toggles echo '<style> #wpbody-content > .wrap > h1, #dashboard-widgets-wrap, #screen-meta, #screen-meta-links { display: none; } </style>'; } } add_action('wp_dashboard_setup', 'bww_hide_all_dashboard_widgets', 100); // Force-hide the WordPress admin bar in the iframe for Kadence Element content function bww_disable_admin_bar_for_iframe() { $selected_element_id = get_option('custom_dashboard_kadence_element', ''); if (!empty($selected_element_id) && isset($_GET['kadence_element']) && $_GET['kadence_element'] === get_post_field('post_name', $selected_element_id)) { add_filter('show_admin_bar', '__return_false'); } } add_action('init', 'bww_disable_admin_bar_for_iframe');