<?php
if (!defined('ABSPATH')) exit;

// Ação de registo de menu e setting movida para settings.php

// Limpa e padroniza os dados das lojas (mantida aqui por organização)
function imz_sanitize_stores_settings($input) {
    if (!is_array($input)) return [];
    $sanitized_output = [];
    foreach ($input as $store) {
        if (empty($store['name'])) continue;
        $sanitized_key = !empty($store['key']) ? sanitize_key($store['key']) : sanitize_key($store['name']);
        $sanitized_output[] = [
            'key'         => $sanitized_key,
            'name'        => sanitize_text_field($store['name']),
            'button_text' => sanitize_text_field($store['button_text']),
            'icon_url'    => esc_url_raw($store['icon_url'] ?? ''),
        ];
    }
    return $sanitized_output;
}

// Função que desenha o CONTEÚDO da página de configurações
function imz_render_stores_settings_page_content() {
    wp_enqueue_media();
    $stores = get_option('imz_predefined_stores', []);
    ?>
    <div id="lojas_digitais_content">
        <h2>Gerir Lojas Digitais</h2>
        <p>Adicione, edite ou remova as plataformas de música que aparecerão na lista de seleção ao editar um post.</p>
        
        <div id="stores-admin-wrapper">
            <div id="stores-admin-container">
                <?php if (!empty($stores)): foreach ($stores as $index => $store): ?>
                    <div class="store-admin-row">
                        <input type="text" name="imz_predefined_stores[<?php echo $index; ?>][key]" value="<?php echo esc_attr($store['key']); ?>" placeholder="ID Único (ex: spotify)">
                        <input type="text" name="imz_predefined_stores[<?php echo $index; ?>][name]" value="<?php echo esc_attr($store['name']); ?>" placeholder="Nome Visível (ex: Spotify)">
                        <input type="text" name="imz_predefined_stores[<?php echo $index; ?>][button_text]" value="<?php echo esc_attr($store['button_text']); ?>" placeholder="Texto do Botão (ex: Escutar)">
                        <div class="icon-uploader-wrapper">
                            <img src="<?php echo esc_url($store['icon_url'] ?? ''); ?>" class="icon-preview" style="<?php echo empty($store['icon_url']) ? 'display:none;' : ''; ?>">
                            <input type="hidden" class="icon-url-input" name="imz_predefined_stores[<?php echo $index; ?>][icon_url]" value="<?php echo esc_attr($store['icon_url'] ?? ''); ?>">
                            <button type="button" class="button upload-icon-button">Carregar Ícone</button>
                        </div>
                        <button type="button" class="button button-link-delete remove-store-admin-row">Remover</button>
                    </div>
                <?php endforeach; endif; ?>
            </div>
            <button type="button" id="add_store_admin_row" class="button button-primary" style="margin-top: 15px;">Adicionar Nova Loja</button>
        </div>
        <?php submit_button(); ?>
    </div>
    <style>
        .store-admin-row { display: grid; grid-template-columns: 150px 200px 200px 1fr auto; gap: 15px; align-items: center; margin-bottom: 15px; }
        .icon-uploader-wrapper { display: flex; align-items: center; gap: 10px; }
        .icon-preview { width: 32px; height: 32px; border-radius: 4px; background-color: #f0f0f1; }
    </style>
    <script>
        jQuery(document).ready(function($) {
            const lojasContent = $('#lojas_digitais_content');
            if (!lojasContent.length) return;

            var container = lojasContent.find('#stores-admin-container');

            function initializeMediaUploader(button) {
                var mediaUploader = wp.media({
                    title: 'Selecione um Ícone',
                    button: { text: 'Usar este Ícone' },
                    multiple: false
                });
                mediaUploader.on('select', function() {
                    var attachment = mediaUploader.state().get('selection').first().toJSON();
                    var row = button.closest('.store-admin-row');
                    row.find('.icon-url-input').val(attachment.url);
                    row.find('.icon-preview').attr('src', attachment.url).show();
                });
                mediaUploader.open();
            }

            container.on('click', '.upload-icon-button', function() { initializeMediaUploader($(this)); });
            
            lojasContent.find('#add_store_admin_row').on('click', function() {
                var index = container.find('.store-admin-row').length;
                var newRow = `
                    <div class="store-admin-row">
                        <input type="text" name="imz_predefined_stores[${index}][key]" placeholder="ID Único (ex: spotify)">
                        <input type="text" name="imz_predefined_stores[${index}][name]" placeholder="Nome Visível (ex: Spotify)">
                        <input type="text" name="imz_predefined_stores[${index}][button_text]" placeholder="Texto do Botão (ex: Escutar)">
                        <div class="icon-uploader-wrapper">
                            <img src="" class="icon-preview" style="display:none;">
                            <input type="hidden" class="icon-url-input" name="imz_predefined_stores[${index}][icon_url]" value="">
                            <button type="button" class="button upload-icon-button">Carregar Ícone</button>
                        </div>
                        <button type="button" class="button button-link-delete remove-store-admin-row">Remover</button>
                    </div>`;
                container.append(newRow);
            });

            container.on('click', '.remove-store-admin-row', function() { $(this).closest('.store-admin-row').remove(); });
        });
    </script>
    <?php
}

// A função original foi dividida para ser chamada dentro do novo sistema de abas
function imz_render_stores_settings_page() {
     ?>
     <form method="post" action="options.php">
        <?php
            settings_fields('imz_stores_group');
            imz_render_stores_settings_page_content();
        ?>
    </form>
    <?php
}

// Regista a nova opção (agora chamado a partir do settings.php principal)
add_action('admin_init', function() {
    register_setting('imz_stores_group', 'imz_predefined_stores', 'imz_sanitize_stores_settings');
});