<?php
/**
 * The Pro Plugins tab for plugin settings.
 *
 * @package SEO_Pro_Stack
 * @subpackage SEO_Pro_Stack/Admin/Settings/Tabs
 */

// If this file is called directly, abort.
if (!defined('ABSPATH')) {
    exit;
}

/**
 * The Pro Plugins tab for plugin settings.
 */
class SEOProStack_Tab_Pro_Plugins {

    /**
     * Render the tab content.
     */
    public function render() {
        ?>
        <div class="seoprostack-settings-content tab-content" id="pro-plugins">
            <div class="seoprostack-setting-section">
                <h2><?php esc_html_e('Premium WordPress Plugins', 'seoprostack'); ?></h2>
                <p class="description"><?php esc_html_e('These premium plugins enhance your WordPress site with advanced features and functionality.', 'seoprostack'); ?></p>
                
                <div class="seoprostack-plugin-filters" id="seoprostack-plugin-filters">
                    <a href="#" class="button current" data-category="all"><?php esc_html_e('All', 'seoprostack'); ?></a>
                    <a href="#" class="button" data-category="seo"><?php esc_html_e('SEO', 'seoprostack'); ?></a>
                    <a href="#" class="button" data-category="performance"><?php esc_html_e('Performance', 'seoprostack'); ?></a>
                    <a href="#" class="button" data-category="analytics"><?php esc_html_e('Analytics', 'seoprostack'); ?></a>
                </div>
                
                <div class="seoprostack-loading" style="text-align: center; padding: 30px; display: none;">
                    <span class="spinner is-active"></span>
                    <p><?php esc_html_e('Loading plugins...', 'seoprostack'); ?></p>
                </div>
                
                <div class="seoprostack-plugin-list" id="seoprostack-plugin-list">
                    <!-- Plugins will be loaded here via AJAX -->
                </div>
                
                <div class="seoprostack-no-plugins" style="display: none;">
                    <p><?php esc_html_e('No plugins found matching your criteria.', 'seoprostack'); ?></p>
                </div>
            </div>
            
            <script type="text/javascript">
                jQuery(document).ready(function($) {
                    // Function to load plugins
                    function loadProPlugins(category) {
                        var $container = $('#seoprostack-plugin-list');
                        var $loading = $('.seoprostack-loading');
                        var $noPlugins = $('.seoprostack-no-plugins');
                        
                        // Reset container and show loading
                        $container.empty();
                        $noPlugins.hide();
                        $loading.show();
                        
                        // Make AJAX request
                        $.ajax({
                            url: seoProStack.ajaxurl,
                            type: 'POST',
                            data: {
                                action: 'seoprostack_get_pro_plugins',
                                category: category,
                                nonce: seoProStack.nonce
                            },
                            success: function(response) {
                                $loading.hide();
                                
                                if (response.success && response.data.plugins && response.data.plugins.length > 0) {
                                    // Render plugins
                                    $.each(response.data.plugins, function(index, plugin) {
                                        var $pluginCard = $('<div class="seoprostack-plugin-card" />');
                                        
                                        // Plugin header
                                        var $header = $('<div class="seoprostack-plugin-header" />');
                                        $header.append('<h3>' + plugin.name + '</h3>');
                                        $header.append('<span class="seoprostack-plugin-version">v' + plugin.version + '</span>');
                                        $pluginCard.append($header);
                                        
                                        // Plugin content
                                        var $content = $('<div class="seoprostack-plugin-content" />');
                                        $content.append('<p>' + plugin.description + '</p>');
                                        
                                        // Plugin actions
                                        var $actions = $('<div class="seoprostack-plugin-actions" />');
                                        
                                        if (plugin.status === 'installed') {
                                            if (plugin.active) {
                                                $actions.append('<span class="button button-disabled">Active</span>');
                                            } else {
                                                $actions.append('<a href="#" class="button activate-plugin" data-plugin="' + plugin.path + '">Activate</a>');
                                            }
                                        } else {
                                            $actions.append('<a href="' + plugin.url + '" class="button button-primary" target="_blank">Get Plugin</a>');
                                        }
                                        
                                        $content.append($actions);
                                        $pluginCard.append($content);
                                        
                                        // Add card to container
                                        $container.append($pluginCard);
                                    });
                                } else {
                                    $noPlugins.show();
                                }
                            },
                            error: function() {
                                $loading.hide();
                                $noPlugins.show();
                            }
                        });
                    }
                    
                    // Handle category filter clicks
                    $('#seoprostack-plugin-filters a').on('click', function(e) {
                        e.preventDefault();
                        
                        // Update active filter
                        $('#seoprostack-plugin-filters a').removeClass('current');
                        $(this).addClass('current');
                        
                        // Load plugins
                        var category = $(this).data('category');
                        loadProPlugins(category);
                    });
                    
                    // Load initial plugins
                    loadProPlugins('all');
                    
                    // Delegate plugin activation
                    $(document).on('click', '.activate-plugin', function(e) {
                        e.preventDefault();
                        
                        var $button = $(this);
                        var pluginPath = $button.data('plugin');
                        
                        $button.text('Activating...').addClass('updating-message');
                        
                        $.ajax({
                            url: seoProStack.ajaxurl,
                            type: 'POST',
                            data: {
                                action: 'seoprostack_activate_plugin',
                                plugin: pluginPath,
                                nonce: seoProStack.nonce
                            },
                            success: function(response) {
                                if (response.success) {
                                    $button.removeClass('updating-message')
                                          .removeClass('activate-plugin')
                                          .addClass('button-disabled')
                                          .text('Active')
                                          .prop('disabled', true);
                                } else {
                                    $button.removeClass('updating-message').text('Activate');
                                    alert(response.data.message || 'Error activating plugin');
                                }
                            },
                            error: function() {
                                $button.removeClass('updating-message').text('Activate');
                                alert('Error connecting to server');
                            }
                        });
                    });
                });
            </script>
        </div>
        <?php
    }
}