From a449fafbc78320b25399fea35ecb0c13ff62535f Mon Sep 17 00:00:00 2001
From: Marcus Quinn <marcus@agentdesign.co.uk>
Date: Fri, 14 Mar 2025 04:31:52 +0000
Subject: [PATCH] Fix theme display: - Replace list table with custom HTML -
 Add proper theme card layout - Add theme details overlay - Fix block content
 filter issue

---
 admin/settings.php | 103 ++++++++++++++++++++++++++-------------------
 1 file changed, 60 insertions(+), 43 deletions(-)

diff --git a/admin/settings.php b/admin/settings.php
index c08a6d3..88e3bcc 100644
--- a/admin/settings.php
+++ b/admin/settings.php
@@ -329,50 +329,62 @@ function wpa_superstar_ajax_get_theme() {
         
         error_log('WPA Superstar: Successfully fetched theme data');
         
-        // Create the list table
-        $wp_list_table = _get_list_table('WP_Theme_Install_List_Table', array(
-            'screen' => get_current_screen()
-        ));
-        
-        if (!$wp_list_table) {
-            error_log('WPA Superstar: Failed to create list table instance');
-            wp_send_json_error('Failed to create theme list table');
-            return;
-        }
-        
-        // Set up the theme data
-        $theme = array(
-            'name' => $theme_data->name,
-            'slug' => $theme_data->slug,
-            'version' => $theme_data->version,
-            'author' => $theme_data->author,
-            'preview_url' => $theme_data->preview_url,
-            'screenshot_url' => $theme_data->screenshot_url,
-            'rating' => $theme_data->rating,
-            'num_ratings' => $theme_data->num_ratings,
-            'downloaded' => $theme_data->downloaded,
-            'last_updated' => $theme_data->last_updated,
-            'homepage' => $theme_data->homepage,
-            'description' => $theme_data->description,
-            'download_link' => $theme_data->download_link,
-            'active_installs' => $theme_data->active_installs,
-        );
-        
-        error_log('WPA Superstar: Theme data prepared');
-        
-        // Set up the list table
-        $wp_list_table->items = array((object) $theme);
-        $wp_list_table->set_pagination_args(array(
-            'total_items' => 1,
-            'per_page' => 1,
-        ));
-        
-        error_log('WPA Superstar: Preparing to display theme');
-        
-        // Get the HTML
+        // Generate custom HTML for the theme
         ob_start();
-        $wp_list_table->prepare_items();
-        $wp_list_table->display();
+        ?>
+        <div class="theme-browser">
+            <div class="themes wp-clearfix">
+                <div class="theme" tabindex="0">
+                    <div class="theme-screenshot">
+                        <img src="<?php echo esc_url($theme_data->screenshot_url); ?>" alt="">
+                    </div>
+                    <div class="theme-author"><?php printf(__('By %s'), wp_kses_post($theme_data->author)); ?></div>
+                    <h3 class="theme-name"><?php echo esc_html($theme_data->name); ?></h3>
+                    <div class="theme-actions">
+                        <?php if (current_user_can('install_themes')): ?>
+                            <?php 
+                            $installed_theme = wp_get_theme($theme_data->slug);
+                            if ($installed_theme->exists()): ?>
+                                <button type="button" class="button button-primary activate-theme" data-slug="<?php echo esc_attr($theme_data->slug); ?>">
+                                    <?php _e('Activate'); ?>
+                                </button>
+                            <?php else: ?>
+                                <button type="button" class="button button-primary install-theme" data-slug="<?php echo esc_attr($theme_data->slug); ?>">
+                                    <?php _e('Install'); ?>
+                                </button>
+                            <?php endif; ?>
+                        <?php endif; ?>
+                        <a class="button button-secondary preview install-theme-preview" href="<?php echo esc_url($theme_data->preview_url); ?>" target="_blank">
+                            <?php _e('Preview'); ?>
+                        </a>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="theme-overlay" style="display: none;">
+            <div class="theme-backdrop"></div>
+            <div class="theme-wrap wp-clearfix">
+                <div class="theme-header">
+                    <button class="close dashicons dashicons-no"><span class="screen-reader-text"><?php _e('Close details dialog'); ?></span></button>
+                </div>
+                <div class="theme-about wp-clearfix">
+                    <div class="theme-screenshots">
+                        <div class="screenshot"><img src="<?php echo esc_url($theme_data->screenshot_url); ?>" alt=""></div>
+                    </div>
+                    <div class="theme-info">
+                        <h2 class="theme-name"><?php echo esc_html($theme_data->name); ?></h2>
+                        <p class="theme-author"><?php printf(__('By %s'), wp_kses_post($theme_data->author)); ?></p>
+                        <p class="theme-description"><?php echo wp_kses_post($theme_data->description); ?></p>
+                        <p class="theme-tags">
+                            <span class="version"><?php printf(__('Version: %s'), esc_html($theme_data->version)); ?></span>
+                            <span class="active-installs"><?php printf(__('Active Installations: %s'), number_format_i18n($theme_data->active_installs)); ?></span>
+                            <span class="last-updated"><?php printf(__('Last Updated: %s'), esc_html($theme_data->last_updated)); ?></span>
+                        </p>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <?php
         $html = ob_get_clean();
         
         if (empty($html)) {
@@ -386,6 +398,11 @@ function wpa_superstar_ajax_get_theme() {
         
     } catch (Exception $e) {
         error_log('WPA Superstar Theme loading exception: ' . $e->getMessage());
+        error_log('WPA Superstar Theme loading exception trace: ' . $e->getTraceAsString());
+        wp_send_json_error('Theme loading error: ' . $e->getMessage());
+    } catch (Error $e) {
+        error_log('WPA Superstar Theme loading error: ' . $e->getMessage());
+        error_log('WPA Superstar Theme loading error trace: ' . $e->getTraceAsString());
         wp_send_json_error('Theme loading error: ' . $e->getMessage());
     }
 }