{"id":7027,"date":"2026-09-08T17:31:28","date_gmt":"2026-09-08T15:31:28","guid":{"rendered":"https:\/\/sabore.hu\/?page_id=7027"},"modified":"2026-09-08T19:14:00","modified_gmt":"2026-09-08T17:14:00","slug":"verify","status":"publish","type":"page","link":"https:\/\/sabore.hu\/en\/registration\/verify\/","title":{"rendered":"Verify Discount"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"7027\" class=\"elementor elementor-7027\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-837116c e-flex e-con-boxed e-con e-parent\" data-id=\"837116c\" 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-554d7b1 elementor-widget elementor-widget-shortcode\" data-id=\"554d7b1\" 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 class=\"wcv-wrapper\">\r\n        <div class=\"wcv-input-row\">\r\n            <input\r\n                type=\"text\"\r\n                id=\"wcv-coupon-input\"\r\n                class=\"wcv-input\"\r\n                placeholder=\"Enter coupon code\"\r\n                autocomplete=\"off\"\r\n            >\r\n            <button type=\"button\" id=\"wcv-verify-coupon\" class=\"wcv-button\">\r\n                <span class=\"wcv-button-text\">Verify Coupon<\/span>\r\n                <span class=\"wcv-spinner\" aria-hidden=\"true\"><\/span>\r\n            <\/button>\r\n        <\/div>\r\n        <div id=\"wcv-result\" class=\"wcv-result\" role=\"status\" aria-live=\"polite\"><\/div>\r\n    <\/div>\r\n\r\n        <style>\r\n        .wcv-wrapper {\r\n            max-width: 480px;\r\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\r\n        }\r\n        .wcv-input-row {\r\n            display: flex;\r\n            gap: 8px;\r\n        }\r\n        .wcv-input {\r\n            flex: 1;\r\n            min-width: 0;\r\n            padding: 10px 14px;\r\n            border: 1px solid #d7dbe0;\r\n            border-radius: 6px;\r\n            font-size: 14px;\r\n            color: #1f2430;\r\n            outline: none;\r\n            transition: border-color 0.15s ease, box-shadow 0.15s ease;\r\n        }\r\n        .wcv-input:focus {\r\n            border-color: #6c5ce7;\r\n            box-shadow: 0 0 0 3px rgba(108, 92, 231, 0.15);\r\n        }\r\n        .wcv-button {\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n            padding: 10px 18px;\r\n            background: #6c5ce7;\r\n            color: #fff;\r\n            border: none;\r\n            border-radius: 6px;\r\n            font-size: 14px;\r\n            font-weight: 600;\r\n            white-space: nowrap;\r\n            cursor: pointer;\r\n            transition: background 0.15s ease, opacity 0.15s ease;\r\n        }\r\n        .wcv-button:hover:not(:disabled) {\r\n            background: #5b4bd6;\r\n        }\r\n        .wcv-button:focus-visible {\r\n            outline: 2px solid #6c5ce7;\r\n            outline-offset: 2px;\r\n        }\r\n        .wcv-button:disabled {\r\n            opacity: 0.7;\r\n            cursor: not-allowed;\r\n        }\r\n        .wcv-spinner {\r\n            display: none;\r\n            width: 14px;\r\n            height: 14px;\r\n            border: 2px solid rgba(255, 255, 255, 0.4);\r\n            border-top-color: #fff;\r\n            border-radius: 50%;\r\n            animation: wcv-spin 0.6s linear infinite;\r\n        }\r\n        .wcv-button.is-loading .wcv-spinner {\r\n            display: inline-block;\r\n        }\r\n        .wcv-button.is-loading .wcv-button-text {\r\n            opacity: 0.85;\r\n        }\r\n        @keyframes wcv-spin {\r\n            to { transform: rotate(360deg); }\r\n        }\r\n        .wcv-result {\r\n            margin-top: 12px;\r\n            display: none;\r\n        }\r\n        .wcv-result.is-visible {\r\n            display: block;\r\n            opacity: 0;\r\n            transform: translateY(-4px);\r\n            animation: wcv-fade-in 0.25s ease forwards;\r\n        }\r\n        @keyframes wcv-fade-in {\r\n            to { opacity: 1; transform: translateY(0); }\r\n        }\r\n        .wcv-alert {\r\n            display: flex;\r\n            align-items: flex-start;\r\n            gap: 10px;\r\n            padding: 12px 14px;\r\n            border-radius: 6px;\r\n            font-size: 13.5px;\r\n            line-height: 1.5;\r\n        }\r\n        .wcv-alert.is-error {\r\n            background: #fdecea;\r\n            color: #b3261e;\r\n            border: 1px solid #f6c2be;\r\n        }\r\n        .wcv-alert.is-success {\r\n            background: #eafaf1;\r\n            color: #1e7e45;\r\n            border: 1px solid #b7ecc9;\r\n        }\r\n        .wcv-icon {\r\n            flex-shrink: 0;\r\n            width: 18px;\r\n            height: 18px;\r\n            margin-top: 1px;\r\n        }\r\n        .wcv-coupon-card {\r\n            border: 1px solid #b7ecc9;\r\n            border-radius: 8px;\r\n            overflow: hidden;\r\n            background: #fff;\r\n        }\r\n        .wcv-coupon-card .wcv-card-header.is-success {\r\n            border-radius: 0;\r\n            border: none;\r\n            border-bottom: 1px solid #b7ecc9;\r\n        }\r\n        .wcv-header-text {\r\n            display: flex;\r\n            flex-direction: column;\r\n            gap: 4px;\r\n            min-width: 0;\r\n        }\r\n        .wcv-coupon-code {\r\n            display: inline-block;\r\n            align-self: flex-start;\r\n            font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\r\n            font-weight: 700;\r\n            font-size: 13px;\r\n            letter-spacing: 0.3px;\r\n            padding: 3px 8px;\r\n            border: 1px dashed currentColor;\r\n            border-radius: 4px;\r\n        }\r\n        .wcv-coupon-desc {\r\n            font-size: 13px;\r\n            opacity: 0.9;\r\n        }\r\n        .wcv-card-body {\r\n            padding: 4px 14px 14px;\r\n        }\r\n        .wcv-detail-section {\r\n            margin-top: 14px;\r\n        }\r\n        .wcv-detail-section:first-child {\r\n            margin-top: 6px;\r\n        }\r\n        .wcv-section-title {\r\n            font-size: 11.5px;\r\n            font-weight: 700;\r\n            color: #8b90a0;\r\n            margin-bottom: 2px;\r\n        }\r\n        .wcv-detail-row {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            gap: 14px;\r\n            padding: 6px 0;\r\n            border-bottom: 1px solid #f0f1f3;\r\n            font-size: 13px;\r\n            color: #1f2430;\r\n        }\r\n        .wcv-detail-row:last-child {\r\n            border-bottom: none;\r\n        }\r\n        .wcv-detail-label {\r\n            color: #6b7280;\r\n            flex: 0 0 auto;\r\n        }\r\n        .wcv-detail-value {\r\n            text-align: right;\r\n            font-weight: 600;\r\n            word-break: break-word;\r\n        }\r\n        @media (prefers-reduced-motion: reduce) {\r\n            .wcv-spinner,\r\n            .wcv-result.is-visible {\r\n                animation: none;\r\n            }\r\n            .wcv-result.is-visible {\r\n                opacity: 1;\r\n                transform: none;\r\n            }\r\n        }\r\n    <\/style>\r\n\r\n    <script>\r\n    (function () {\r\n        var wcvAjaxUrl = \"https:\/\/sabore.hu\/wp-admin\/admin-ajax.php\";\r\n        var wcvNonce   = \"2c248efbb1\";\r\n\r\n        document.addEventListener('DOMContentLoaded', function () {\r\n            var button = document.getElementById('wcv-verify-coupon');\r\n            var input  = document.getElementById('wcv-coupon-input');\r\n            var result = document.getElementById('wcv-result');\r\n\r\n            if (!button || !input || !result) {\r\n                return;\r\n            }\r\n\r\n            var ICON_SUCCESS = '<svg class=\"wcv-icon\" viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"#1e7e45\"\/><path d=\"M7.5 12.5l3 3 6-6.5\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\r\n            var ICON_ERROR = '<svg class=\"wcv-icon\" viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"#b3261e\"\/><path d=\"M8 8l8 8M16 8l-8 8\" stroke=\"#fff\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>';\r\n\r\n            function showResult(html) {\r\n                result.innerHTML = html;\r\n                result.classList.remove('is-visible');\r\n                void result.offsetWidth; \/\/ restart the fade-in animation on repeat results\r\n                result.classList.add('is-visible');\r\n            }\r\n\r\n            function buildErrorHtml(message) {\r\n                return '<div class=\"wcv-alert is-error\">' + ICON_ERROR + '<div>' + message + '<\/div><\/div>';\r\n            }\r\n\r\n            function buildSuccessHtml(response) {\r\n                var html = '<div class=\"wcv-coupon-card\">';\r\n\r\n                html += '<div class=\"wcv-alert is-success wcv-card-header\">' + ICON_SUCCESS;\r\n                html += '<div class=\"wcv-header-text\">';\r\n                html += '<span class=\"wcv-coupon-code\">' + response.code + '<\/span>';\r\n                html += '<div class=\"wcv-coupon-desc\">' + response.description + '<\/div>';\r\n                html += '<\/div><\/div>';\r\n\r\n                html += '<div class=\"wcv-card-body\">';\r\n                (response.sections || []).forEach(function (section) {\r\n                    html += '<div class=\"wcv-detail-section\">';\r\n                    html += '<div class=\"wcv-section-title\">' + section.title + '<\/div>';\r\n                    (section.rows || []).forEach(function (row) {\r\n                        html += '<div class=\"wcv-detail-row\">';\r\n                        html += '<span class=\"wcv-detail-label\">' + row.label + '<\/span>';\r\n                        html += '<span class=\"wcv-detail-value\">' + row.value + '<\/span>';\r\n                        html += '<\/div>';\r\n                    });\r\n                    html += '<\/div>';\r\n                });\r\n                html += '<\/div><\/div>';\r\n\r\n                return html;\r\n            }\r\n\r\n            function setLoading(isLoading) {\r\n                button.disabled = isLoading;\r\n                button.classList.toggle('is-loading', isLoading);\r\n            }\r\n\r\n            function verifyCoupon() {\r\n                var code = input.value.trim();\r\n\r\n                if (!code) {\r\n                    showResult(buildErrorHtml('Please enter a coupon code.'));\r\n                    input.focus();\r\n                    return;\r\n                }\r\n\r\n                setLoading(true);\r\n\r\n                var formData = new FormData();\r\n                formData.append('action', 'wcv_verify_coupon');\r\n                formData.append('nonce', wcvNonce);\r\n                formData.append('coupon_code', code);\r\n\r\n                fetch(wcvAjaxUrl, {\r\n                    method: 'POST',\r\n                    credentials: 'same-origin',\r\n                    body: formData\r\n                })\r\n                    .then(function (res) { return res.json(); })\r\n                    .then(function (response) {\r\n                        if (response && response.status === 'success') {\r\n                            showResult(buildSuccessHtml(response));\r\n                        } else {\r\n                            var message = (response && response.message) ? response.message : 'Coupon does not exist.';\r\n                            showResult(buildErrorHtml(message));\r\n                        }\r\n                    })\r\n                    .catch(function () {\r\n                        showResult(buildErrorHtml('Something went wrong. Please try again.'));\r\n                    })\r\n                    .finally(function () {\r\n                        setLoading(false);\r\n                    });\r\n            }\r\n\r\n            button.addEventListener('click', verifyCoupon);\r\n            input.addEventListener('keydown', function (e) {\r\n                if (e.key === 'Enter') {\r\n                    e.preventDefault();\r\n                    verifyCoupon();\r\n                }\r\n            });\r\n        });\r\n    })();\r\n    <\/script>\r\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":20,"featured_media":0,"parent":7024,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7027","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/pages\/7027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/comments?post=7027"}],"version-history":[{"count":0,"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/pages\/7027\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/pages\/7024"}],"wp:attachment":[{"href":"https:\/\/sabore.hu\/en\/wp-json\/wp\/v2\/media?parent=7027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}