<?php
/**
 * Widget Nome Defunto
 *
 * Visualizza il nome completo del defunto con titolo, seconda e terza riga.
 * Supporta personalizzazione completa di tipografia, colori e spaziature.
 *
 * @package AnnunciFunebri
 * @since 4.7.6
 */

if (!defined('ABSPATH')) exit;

class ANNFU_Widget_Nome extends ANNFU_Widget_Base {

    /**
     * Ottiene il nome del widget
     *
     * @return string
     */
    public function get_name() {
        return 'annfu_nome';
    }

    /**
     * Ottiene il titolo del widget
     *
     * @return string
     */
    public function get_title() {
        return __('Nome Defunto', 'annuncifunebri-onoranza');
    }

    /**
     * Ottiene l'icona del widget
     *
     * @return string
     */
    public function get_icon() {
        return 'eicon-person';
    }

    /**
     * Registra i controlli del widget
     *
     * @return void
     */
    protected function register_controls() {
        // === SEZIONE CONTENUTO ===
        $this->start_controls_section(
            'sezione_contenuto',
            array(
                'label' => __('Contenuto', 'annuncifunebri-onoranza'),
                'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
            )
        );

        $this->add_control(
            'mostra_titolo',
            array(
                'label' => __('Mostra Titolo', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::SWITCHER,
                'label_on' => __('Sì', 'annuncifunebri-onoranza'),
                'label_off' => __('No', 'annuncifunebri-onoranza'),
                'return_value' => 'si',
                'default' => 'si',
            )
        );

        $this->add_control(
            'mostra_seconda_riga',
            array(
                'label' => __('Mostra Seconda Riga', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::SWITCHER,
                'label_on' => __('Sì', 'annuncifunebri-onoranza'),
                'label_off' => __('No', 'annuncifunebri-onoranza'),
                'return_value' => 'si',
                'default' => 'si',
            )
        );

        $this->add_control(
            'mostra_terza_riga',
            array(
                'label' => __('Mostra Terza Riga', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::SWITCHER,
                'label_on' => __('Sì', 'annuncifunebri-onoranza'),
                'label_off' => __('No', 'annuncifunebri-onoranza'),
                'return_value' => 'si',
                'default' => 'si',
            )
        );

        $this->add_control(
            'tag_html',
            array(
                'label' => __('Tag HTML Nome', 'annuncifunebri-onoranza'),
                'type' => \Elementor\Controls_Manager::SELECT,
                'options' => array(
                    'h1' => 'H1',
                    'h2' => 'H2',
                    'h3' => 'H3',
                    'h4' => 'H4',
                    'h5' => 'H5',
                    'h6' => 'H6',
                    'div' => 'div',
                    'span' => 'span',
                    'p' => 'p',
                ),
                'default' => 'h2',
            )
        );

        $this->aggiungi_controllo_allineamento('{{WRAPPER}} .annfu-widget-nome');

        $this->end_controls_section();

        // === SEZIONE STILE - TITOLO ===
        $this->start_controls_section(
            'sezione_stile_titolo',
            array(
                'label' => __('Stile Titolo', 'annuncifunebri-onoranza'),
                'tab' => \Elementor\Controls_Manager::TAB_STYLE,
                'condition' => array(
                    'mostra_titolo' => 'si',
                ),
            )
        );

        $this->aggiungi_controllo_tipografia(
            'tipografia_titolo',
            __('Tipografia', 'annuncifunebri-onoranza'),
            '{{WRAPPER}} .annfu-nome-titolo'
        );

        $this->aggiungi_controllo_colore(
            'colore_titolo',
            __('Colore', 'annuncifunebri-onoranza'),
            '{{WRAPPER}} .annfu-nome-titolo'
        );

        $this->aggiungi_controlli_spaziatura('margin', '{{WRAPPER}} .annfu-nome-titolo');

        $this->end_controls_section();

        // === SEZIONE STILE - NOME ===
        $this->start_controls_section(
            'sezione_stile_nome',
            array(
                'label' => __('Stile Nome', 'annuncifunebri-onoranza'),
                'tab' => \Elementor\Controls_Manager::TAB_STYLE,
            )
        );

        $this->aggiungi_controllo_tipografia(
            'tipografia_nome',
            __('Tipografia', 'annuncifunebri-onoranza'),
            '{{WRAPPER}} .annfu-nome-principale'
        );

        $this->aggiungi_controllo_colore(
            'colore_nome',
            __('Colore', 'annuncifunebri-onoranza'),
            '{{WRAPPER}} .annfu-nome-principale'
        );

        $this->aggiungi_controlli_spaziatura('margin', '{{WRAPPER}} .annfu-nome-principale');

        $this->end_controls_section();

        // === SEZIONE STILE - RIGHE AGGIUNTIVE ===
        $this->start_controls_section(
            'sezione_stile_righe',
            array(
                'label' => __('Stile Righe Aggiuntive', 'annuncifunebri-onoranza'),
                'tab' => \Elementor\Controls_Manager::TAB_STYLE,
            )
        );

        $this->aggiungi_controllo_tipografia(
            'tipografia_righe',
            __('Tipografia', 'annuncifunebri-onoranza'),
            '{{WRAPPER}} .annfu-nome-riga-aggiuntiva'
        );

        $this->aggiungi_controllo_colore(
            'colore_righe',
            __('Colore', 'annuncifunebri-onoranza'),
            '{{WRAPPER}} .annfu-nome-riga-aggiuntiva'
        );

        $this->aggiungi_controlli_spaziatura('margin', '{{WRAPPER}} .annfu-nome-riga-aggiuntiva');

        $this->end_controls_section();

        // === SEZIONE STILE - CONTENITORE ===
        $this->start_controls_section(
            'sezione_stile_contenitore',
            array(
                'label' => __('Stile Contenitore', 'annuncifunebri-onoranza'),
                'tab' => \Elementor\Controls_Manager::TAB_STYLE,
            )
        );

        $this->aggiungi_controllo_colore(
            'colore_sfondo',
            __('Colore Sfondo', 'annuncifunebri-onoranza'),
            '{{WRAPPER}} .annfu-widget-nome',
            'background-color'
        );

        $this->aggiungi_controlli_spaziatura('padding', '{{WRAPPER}} .annfu-widget-nome');
        $this->aggiungi_controlli_spaziatura('margin', '{{WRAPPER}} .annfu-widget-nome');
        $this->aggiungi_controlli_bordo('{{WRAPPER}} .annfu-widget-nome');
        $this->aggiungi_controlli_ombra('{{WRAPPER}} .annfu-widget-nome');

        $this->end_controls_section();

        // === CONTROLLI VISIBILITÀ ===
        $this->aggiungi_controlli_visibilita();
    }

    /**
     * Render del widget sul frontend
     *
     * @return void
     */
    protected function render() {
        $impostazioni = $this->ottieni_impostazioni();
        $annuncio = $this->ottieni_dati_annuncio();

        // Verifica visibilità
        if (!$this->verifica_visibilita($impostazioni)) {
            return;
        }

        // Se non ci sono dati e siamo in editor, mostra placeholder
        if (!$annuncio) {
            if ($this->e_modalita_editor()) {
                $this->render_placeholder_editor(
                    'eicon-person',
                    __('Widget Nome Defunto', 'annuncifunebri-onoranza'),
                    __('I dati del necrologio verranno visualizzati qui', 'annuncifunebri-onoranza')
                );
            }
            return;
        }

        // Ottieni i dati
        $titolo = $this->ottieni_campo('titolo');
        $nome_visualizzato = $this->ottieni_campo('nomeVisualizzato');
        $seconda_riga = $this->ottieni_campo('secondaRiga');
        $terza_riga = $this->ottieni_campo('terzaRiga');
        $tag_html = $impostazioni['tag_html'];

        ?>
        <div class="annfu-widget-nome">
            <?php if ($impostazioni['mostra_titolo'] === 'si' && !empty($titolo)): ?>
                <div class="annfu-nome-titolo"><?php echo esc_html($titolo); ?></div>
            <?php endif; ?>

            <<?php echo esc_attr($tag_html); ?> class="annfu-nome-principale">
                <?php echo esc_html($nome_visualizzato); ?>
            </<?php echo esc_attr($tag_html); ?>>

            <?php if ($impostazioni['mostra_seconda_riga'] === 'si' && !empty($seconda_riga)): ?>
                <div class="annfu-nome-riga-aggiuntiva annfu-nome-seconda-riga">
                    <?php echo esc_html($seconda_riga); ?>
                </div>
            <?php endif; ?>

            <?php if ($impostazioni['mostra_terza_riga'] === 'si' && !empty($terza_riga)): ?>
                <div class="annfu-nome-riga-aggiuntiva annfu-nome-terza-riga">
                    <?php echo esc_html($terza_riga); ?>
                </div>
            <?php endif; ?>
        </div>
        <?php
    }

    /**
     * Render del contenuto nel template JS di Elementor (live preview)
     *
     * @return void
     */
    protected function content_template() {
        ?>
        <#
        var datiDemo = {
            titolo: 'Cav.',
            nomeVisualizzato: 'Mario Rossi',
            secondaRiga: 'Vedovo di Anna Bianchi',
            terzaRiga: 'Marietto'
        };

        var tagHtml = settings.tag_html || 'h2';
        #>
        <div class="annfu-widget-nome">
            <# if (settings.mostra_titolo === 'si') { #>
                <div class="annfu-nome-titolo">{{{ datiDemo.titolo }}}</div>
            <# } #>

            <{{{ tagHtml }}} class="annfu-nome-principale">
                {{{ datiDemo.nomeVisualizzato }}}
            </{{{ tagHtml }}}>

            <# if (settings.mostra_seconda_riga === 'si') { #>
                <div class="annfu-nome-riga-aggiuntiva annfu-nome-seconda-riga">
                    {{{ datiDemo.secondaRiga }}}
                </div>
            <# } #>

            <# if (settings.mostra_terza_riga === 'si') { #>
                <div class="annfu-nome-riga-aggiuntiva annfu-nome-terza-riga">
                    {{{ datiDemo.terzaRiga }}}
                </div>
            <# } #>
        </div>
        <?php
    }

    /**
     * Verifica se il widget ha dati da mostrare
     *
     * @return bool
     */
    protected function ha_dati_widget() {
        $nome = $this->ottieni_campo('nomeVisualizzato');
        return !empty($nome);
    }
}
