{"id":24858,"date":"2026-02-05T18:01:14","date_gmt":"2026-02-05T17:01:14","guid":{"rendered":"https:\/\/frnix.org\/?page_id=24858"},"modified":"2026-02-05T18:04:42","modified_gmt":"2026-02-05T17:04:42","slug":"se-desinscrire","status":"publish","type":"page","link":"https:\/\/frnix.org\/it\/se-desinscrire\/","title":{"rendered":"se-desinscrire"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"24858\" class=\"elementor elementor-24858\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-069d40a e-flex e-con-boxed e-con e-parent\" data-id=\"069d40a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f2b0557 elementor-widget elementor-widget-shortcode\" data-id=\"f2b0557\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <div id=\"frnix-unsub-wrapper\">\n            \n            <!-- ============================================ -->\n            <!-- \u00c9TAT 1 : Formulaire de d\u00e9sinscription        -->\n            <!-- ============================================ -->\n            <div id=\"frnix-unsub-form-view\" class=\"frnix-unsub-card\">\n                <div class=\"frnix-unsub-icon\">\n                    <svg width=\"48\" height=\"48\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#1E3F70\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                        <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/>\n                        <path d=\"M22 4L12 13 2 4\"\/>\n                    <\/svg>\n                <\/div>\n                <h3 class=\"frnix-unsub-title\">D\u00e9sinscription<\/h3>\n                <p class=\"frnix-unsub-text\">\n                    Entrez votre adresse email pour vous d\u00e9sinscrire des communications FRNIX.\n                    Vous ne recevrez plus d'emails de notre part (hors emails transactionnels li\u00e9s \u00e0 vos inscriptions).\n                <\/p>\n                <div class=\"frnix-unsub-field\">\n                    <label for=\"frnix-unsub-email\">Adresse email<\/label>\n                    <input type=\"email\" id=\"frnix-unsub-email\" placeholder=\"votre@email.com\" required \/>\n                <\/div>\n                <button type=\"button\" id=\"frnix-unsub-btn\" class=\"frnix-unsub-button frnix-unsub-button-danger\">\n                    <span class=\"frnix-unsub-btn-text\">Se d\u00e9sinscrire<\/span>\n                    <span class=\"frnix-unsub-btn-loader\" style=\"display:none;\">\n                        <svg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" class=\"frnix-spin\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"3\" fill=\"none\" stroke-dasharray=\"31 31\" stroke-linecap=\"round\"\/><\/svg>\n                    <\/span>\n                <\/button>\n                <div id=\"frnix-unsub-error\" class=\"frnix-unsub-message frnix-unsub-message-error\" style=\"display:none;\"><\/div>\n            <\/div>\n            \n            <!-- ============================================ -->\n            <!-- \u00c9TAT 2 : Confirmation + bouton r\u00e9inscription -->\n            <!-- ============================================ -->\n            <div id=\"frnix-unsub-done-view\" class=\"frnix-unsub-card\" style=\"display:none;\">\n                <div class=\"frnix-unsub-icon\">\n                    <svg width=\"48\" height=\"48\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#64CA8C\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                        <circle cx=\"12\" cy=\"12\" r=\"10\"\/>\n                        <path d=\"M8 12l3 3 5-5\"\/>\n                    <\/svg>\n                <\/div>\n                <h3 class=\"frnix-unsub-title\">D\u00e9sinscription confirm\u00e9e<\/h3>\n                <p id=\"frnix-unsub-done-msg\" class=\"frnix-unsub-text\"><\/p>\n                <p class=\"frnix-unsub-text frnix-unsub-text-muted\">\n                    Vous avez chang\u00e9 d'avis ? Vous pouvez vous r\u00e9inscrire \u00e0 tout moment.\n                <\/p>\n                <button type=\"button\" id=\"frnix-resub-btn\" class=\"frnix-unsub-button frnix-unsub-button-primary\">\n                    <span class=\"frnix-unsub-btn-text\">Se r\u00e9inscrire<\/span>\n                    <span class=\"frnix-unsub-btn-loader\" style=\"display:none;\">\n                        <svg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" class=\"frnix-spin\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"3\" fill=\"none\" stroke-dasharray=\"31 31\" stroke-linecap=\"round\"\/><\/svg>\n                    <\/span>\n                <\/button>\n            <\/div>\n            \n            <!-- ============================================ -->\n            <!-- \u00c9TAT 3 : R\u00e9inscription confirm\u00e9e             -->\n            <!-- ============================================ -->\n            <div id=\"frnix-resub-done-view\" class=\"frnix-unsub-card\" style=\"display:none;\">\n                <div class=\"frnix-unsub-icon\">\n                    <svg width=\"48\" height=\"48\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#0099FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                        <path d=\"M22 4L12 13 2 4\"\/>\n                        <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/>\n                    <\/svg>\n                <\/div>\n                <h3 class=\"frnix-unsub-title\">R\u00e9inscription confirm\u00e9e !<\/h3>\n                <p id=\"frnix-resub-done-msg\" class=\"frnix-unsub-text\"><\/p>\n                <a href=\"https:\/\/frnix.org\/it\/\" class=\"frnix-unsub-button frnix-unsub-button-outline\">\n                    Torna alla pagina iniziale\n                <\/a>\n            <\/div>\n            \n        <\/div>\n        \n        <!-- STYLES -->\n        <style>\n            #frnix-unsub-wrapper {\n                max-width: 520px;\n                margin: 40px auto;\n                font-family: Arial, Helvetica, sans-serif;\n            }\n            .frnix-unsub-card {\n                background: #ffffff;\n                border: 1px solid #e9ecef;\n                border-radius: 12px;\n                padding: 40px 35px;\n                text-align: center;\n                box-shadow: 0 2px 12px rgba(0,0,0,0.06);\n            }\n            .frnix-unsub-icon { margin-bottom: 20px; }\n            .frnix-unsub-title {\n                font-size: 24px !important;\n                color: #1E3F70;\n                margin: 0 0 12px 0;\n                font-weight: 600;\n            }\n            .frnix-unsub-text {\n                font-size: 15px;\n                color: #555555;\n                line-height: 1.6;\n                margin: 0 0 20px 0;\n            }\n            .frnix-unsub-text-muted {\n                font-size: 13px;\n                color: #888888;\n                margin: 0 0 20px 0;\n            }\n            \n            \/* Champ email *\/\n            .frnix-unsub-field {\n                text-align: left;\n                margin-bottom: 20px;\n            }\n            .frnix-unsub-field label {\n                display: block;\n                font-size: 13px;\n                font-weight: 600;\n                color: #1E3F70;\n                margin-bottom: 6px;\n            }\n            .frnix-unsub-field input {\n                width: 100%;\n                padding: 12px 15px;\n                font-size: 15px;\n                border: 1px solid #d0d5dd;\n                border-radius: 8px;\n                outline: none;\n                transition: border-color 0.2s;\n                box-sizing: border-box;\n                font-family: Arial, Helvetica, sans-serif;\n            }\n            .frnix-unsub-field input:focus {\n                border-color: #0099FF;\n                box-shadow: 0 0 0 3px rgba(0,153,255,0.12);\n            }\n            \n            \/* Boutons *\/\n            .frnix-unsub-button,\n            a.frnix-unsub-button {\n                display: inline-flex !important;\n                align-items: center !important;\n                justify-content: center !important;\n                gap: 8px;\n                padding: 13px 30px !important;\n                font-size: 15px !important;\n                font-weight: 600 !important;\n                border: none;\n                border-radius: 8px !important;\n                cursor: pointer;\n                transition: all 0.2s;\n                text-decoration: none !important;\n                font-family: Arial, Helvetica, sans-serif;\n                min-width: 180px;\n            }\n            .frnix-unsub-button:disabled {\n                opacity: 0.6;\n                cursor: not-allowed;\n            }\n            .frnix-unsub-button:focus,\n            .frnix-unsub-button:active {\n                outline: none !important;\n                box-shadow: none !important;\n            }\n            .frnix-unsub-button-danger {\n                background-color: #1E3F70 !important;\n                color: #ffffff !important;\n            }\n            .frnix-unsub-button-danger:hover:not(:disabled),\n            .frnix-unsub-button-danger:focus:not(:disabled),\n            .frnix-unsub-button-danger:active:not(:disabled) {\n                background-color: #0099FF !important;\n                color: #ffffff !important;\n            }\n            .frnix-unsub-button-primary {\n                background-color: #0099FF !important;\n                color: #ffffff !important;\n            }\n            .frnix-unsub-button-primary:hover:not(:disabled),\n            .frnix-unsub-button-primary:focus:not(:disabled),\n            .frnix-unsub-button-primary:active:not(:disabled) {\n                background-color: #0080dd !important;\n                color: #ffffff !important;\n            }\n            .frnix-unsub-button-outline {\n                background-color: transparent !important;\n                color: #1E3F70 !important;\n                border: 2px solid #1E3F70 !important;\n            }\n            .frnix-unsub-button-outline:hover,\n            .frnix-unsub-button-outline:focus,\n            .frnix-unsub-button-outline:active {\n                background-color: #1E3F70 !important;\n                color: #ffffff !important;\n            }\n            \n            \/* Message erreur *\/\n            .frnix-unsub-message {\n                margin-top: 15px;\n                padding: 12px 16px;\n                border-radius: 8px;\n                font-size: 14px;\n                line-height: 1.4;\n            }\n            .frnix-unsub-message-error {\n                background-color: #FFF0F0;\n                color: #CC0000;\n                border: 1px solid #FFCCCC;\n            }\n            \n            \/* Spinner *\/\n            @keyframes frnix-spin {\n                to { transform: rotate(360deg); }\n            }\n            .frnix-spin {\n                animation: frnix-spin 0.8s linear infinite;\n            }\n            \n            \/* Responsive *\/\n            @media (max-width: 600px) {\n                #frnix-unsub-wrapper { margin: 20px 15px; }\n                .frnix-unsub-card { padding: 30px 20px; }\n            }\n        <\/style>\n        \n        <!-- JAVASCRIPT -->\n        <script>\n        (function() {\n            var ajaxUrl  = 'https:\/\/frnix.org\/wp-admin\/admin-ajax.php';\n            var nonce    = 'c3b8aaa376';\n            var currentEmail = '';\n            \n            var formView      = document.getElementById('frnix-unsub-form-view');\n            var doneView      = document.getElementById('frnix-unsub-done-view');\n            var resubDoneView = document.getElementById('frnix-resub-done-view');\n            \n            var emailInput = document.getElementById('frnix-unsub-email');\n            var unsubBtn   = document.getElementById('frnix-unsub-btn');\n            var resubBtn   = document.getElementById('frnix-resub-btn');\n            var errorDiv   = document.getElementById('frnix-unsub-error');\n            var doneMsg    = document.getElementById('frnix-unsub-done-msg');\n            var resubMsg   = document.getElementById('frnix-resub-done-msg');\n            \n            function setLoading(btn, loading) {\n                var text   = btn.querySelector('.frnix-unsub-btn-text');\n                var loader = btn.querySelector('.frnix-unsub-btn-loader');\n                btn.disabled = loading;\n                if (text) text.style.display = loading ? 'none' : 'inline';\n                if (loader) loader.style.display = loading ? 'inline-flex' : 'none';\n            }\n            \n            function showError(msg) {\n                errorDiv.textContent = msg;\n                errorDiv.style.display = 'block';\n            }\n            \n            function hideError() {\n                errorDiv.style.display = 'none';\n            }\n            \n            function switchView(show) {\n                formView.style.display = 'none';\n                doneView.style.display = 'none';\n                resubDoneView.style.display = 'none';\n                show.style.display = 'block';\n            }\n            \n            \/\/ === D\u00e9sinscription ===\n            unsubBtn.addEventListener('click', function() {\n                hideError();\n                \n                var email = emailInput.value.trim();\n                if (!email || email.indexOf('@') === -1) {\n                    showError('Veuillez entrer une adresse email valide.');\n                    return;\n                }\n                \n                currentEmail = email;\n                setLoading(unsubBtn, true);\n                \n                fetch(ajaxUrl, {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                    body: 'action=frnix_unsubscribe_email&nonce=' + nonce + '&email=' + encodeURIComponent(email)\n                })\n                .then(function(r) { return r.json(); })\n                .then(function(data) {\n                    setLoading(unsubBtn, false);\n                    if (data.success) {\n                        doneMsg.textContent = data.data.message;\n                        switchView(doneView);\n                    } else {\n                        showError(data.data || 'Une erreur est survenue.');\n                    }\n                })\n                .catch(function() {\n                    setLoading(unsubBtn, false);\n                    showError('Erreur de connexion. Veuillez r\u00e9essayer.');\n                });\n            });\n            \n            \/\/ === R\u00e9inscription ===\n            resubBtn.addEventListener('click', function() {\n                if (!currentEmail) return;\n                \n                setLoading(resubBtn, true);\n                \n                fetch(ajaxUrl, {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                    body: 'action=frnix_resubscribe_email&nonce=' + nonce + '&email=' + encodeURIComponent(currentEmail)\n                })\n                .then(function(r) { return r.json(); })\n                .then(function(data) {\n                    setLoading(resubBtn, false);\n                    if (data.success) {\n                        resubMsg.textContent = data.data.message;\n                        switchView(resubDoneView);\n                    } else {\n                        alert(data.data || 'Une erreur est survenue.');\n                    }\n                })\n                .catch(function() {\n                    setLoading(resubBtn, false);\n                    alert('Erreur de connexion. Veuillez r\u00e9essayer.');\n                });\n            });\n            \n            \/\/ === Entr\u00e9e clavier ===\n            emailInput.addEventListener('keydown', function(e) {\n                if (e.key === 'Enter') {\n                    e.preventDefault();\n                    unsubBtn.click();\n                }\n            });\n        })();\n        <\/script>\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":26,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"hf_cat_page":[],"class_list":["post-24858","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/pages\/24858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/comments?post=24858"}],"version-history":[{"count":1,"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/pages\/24858\/revisions"}],"predecessor-version":[{"id":24868,"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/pages\/24858\/revisions\/24868"}],"wp:attachment":[{"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/media?parent=24858"}],"wp:term":[{"taxonomy":"hf_cat_page","embeddable":true,"href":"https:\/\/frnix.org\/it\/wp-json\/wp\/v2\/hf_cat_page?post=24858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}