Advertisement
oscarviedma

Código funcionalidad PHP OV Dashboard - OV DIVI

Aug 12th, 2024
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.22 KB | None | 0 0
  1. class Custom_Dashboard_Iframe {
  2.     private $screen_id = 'dashboard';
  3.     private $iframe_url = 'https://ovdemos.s3-tastewp.com/index.php/ov-dashboard/';
  4.  
  5.     public function __construct() {
  6.         add_action('wp_dashboard_setup', [$this, 'remove_dashboard_widgets']);
  7.         add_action('admin_notices', [$this, 'add_dashboard_iframe']);
  8.         add_action('admin_head', [$this, 'custom_admin_styles']);
  9.         add_action('admin_footer', [$this, 'custom_admin_scripts']);
  10.         add_filter('show_admin_bar', [$this, 'disable_admin_bar_on_iframe_page']);
  11.     }
  12.  
  13.     public function remove_dashboard_widgets() {
  14.         global $wp_meta_boxes;
  15.         $wp_meta_boxes[$this->screen_id]['normal']['core'] = [];
  16.         $wp_meta_boxes[$this->screen_id]['side']['core'] = [];
  17.     }
  18.  
  19.     public function add_dashboard_iframe() {
  20.         $screen = get_current_screen();
  21.         if ($screen->id !== $this->screen_id) return;
  22.         echo '<div id="iframe-container" style="margin:0; padding:0; width:100%; height:calc(100vh - 32px); overflow:hidden;">';
  23.         echo '<iframe id="mi-panel-iframe-completo" src="' . esc_url($this->iframe_url) . '" style="width:100%; height:100%; border:none;"></iframe>';
  24.         echo '</div>';
  25.     }
  26.  
  27.     public function custom_admin_styles() {
  28.         $screen = get_current_screen();
  29.         if ($screen->id !== $this->screen_id) return;
  30.         ?>
  31.         <style>
  32.             .wrap h1, #welcome-panel, #dashboard-widgets-wrap { display: none !important; }
  33.             #wpcontent { padding-left: 0 !important; }
  34.             #wpbody-content { padding-bottom: 0 !important; }
  35.             @media screen and (min-width: 1156px) {
  36.                 body, html { overflow: auto !important; }
  37.                 #mi-panel-iframe-completo {
  38.                     overflow: hidden !important;
  39.                     -ms-overflow-style: none !important;
  40.                     scrollbar-width: none !important;
  41.                 }
  42.                 #mi-panel-iframe-completo::-webkit-scrollbar { display: none !important; }
  43.             }
  44.             @media screen and (max-width: 1155px) {
  45.                 body, html { overflow: hidden !important; }
  46.                 #mi-panel-iframe-completo { overflow: auto !important; }
  47.             }
  48.             @media screen and (max-width: 782px) {
  49.                 #iframe-container { height: calc(100vh - 46px); }
  50.             }
  51.         </style>
  52.         <?php
  53.     }
  54.  
  55.     public function custom_admin_scripts() {
  56.         $screen = get_current_screen();
  57.         if ($screen->id !== $this->screen_id) return;
  58.         ?>
  59.         <script>
  60.         (function() {
  61.             var iframe = document.getElementById('mi-panel-iframe-completo');
  62.             var container = document.getElementById('iframe-container');
  63.  
  64.             function adjustIframe() {
  65.                 if (!iframe || !container) return;
  66.                 iframe.style.height = container.clientHeight + 'px';
  67.                 var isWideScreen = window.innerWidth > 1155;
  68.                 iframe.style.overflow = isWideScreen ? 'hidden' : 'auto';
  69.                 iframe.scrolling = isWideScreen ? 'no' : 'yes';
  70.                 document.body.style.overflow = isWideScreen ? 'auto' : 'hidden';
  71.             }
  72.  
  73.             function updateIframeLinks() {
  74.                 var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
  75.                 var links = iframeDocument.querySelectorAll('a');
  76.                 links.forEach(function(link) {
  77.                     link.setAttribute('target', '_parent');
  78.                 });
  79.             }
  80.  
  81.             if (iframe) {
  82.                 window.addEventListener('load', function() {
  83.                     adjustIframe();
  84.                     updateIframeLinks();
  85.                 });
  86.  
  87.                 window.addEventListener('resize', adjustIframe);
  88.  
  89.                 iframe.addEventListener('load', function() {
  90.                     updateIframeLinks();
  91.                 });
  92.  
  93.                 setInterval(adjustIframe, 500);
  94.             }
  95.         })();
  96.         </script>
  97.         <?php
  98.     }
  99.  
  100.     public function disable_admin_bar_on_iframe_page($show_admin_bar) {
  101.         return is_page('ov-dashboard') ? false : $show_admin_bar;
  102.     }
  103. }
  104.  
  105. new Custom_Dashboard_Iframe();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement