{"id":20738,"date":"2026-02-02T18:25:00","date_gmt":"2026-02-02T15:25:00","guid":{"rendered":"https:\/\/fluxads.sa\/?page_id=20738"},"modified":"2026-02-04T15:47:28","modified_gmt":"2026-02-04T12:47:28","slug":"congratulations","status":"publish","type":"page","link":"https:\/\/fluxads.sa\/ar\/congratulations\/","title":{"rendered":"\u062a\u0647\u0646\u0626\u0629"},"content":{"rendered":"<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-20748 size-full\" src=\"https:\/\/fluxads.sa\/wp-content\/uploads\/2026\/02\/1-1-1.png\" alt=\"\" width=\"600\" height=\"1067\" \/><br \/>\n    <div class=\"rcg-wrap\" style=\"max-width:520px;margin:0 auto;\">\r\n      <div style=\"display:flex;gap:8px;flex-wrap:wrap;\">\r\n        <input id=\"rcg_name\" type=\"text\" dir=\"rtl\" inputmode=\"text\"\r\n               placeholder=\"\u0627\u0643\u062a\u0628 \u0627\u0633\u0645\u0643 \u0647\u0646\u0627\"\r\n               style=\"flex:1;min-width:220px;padding:10px;border:1px solid #ccc;border-radius:10px;font-family: 'Cairo';\"\r\n               maxlength=\"28\" \/>\r\n        <button id=\"rcg_btn\" type=\"button\"\r\n                style=\"padding:10px 14px;border:0;border-radius:10px;background:#0b3aa7;color:#fff;cursor:pointer;font-family: 'Cairo';\">\r\n          \u062a\u0648\u0644\u064a\u062f \u0627\u0644\u0635\u0648\u0631\u0629\r\n        <\/button>\r\n      <\/div>\r\n\r\n      <div id=\"rcg_status\" style=\"margin-top:10px;font-size:14px;\"><\/div>\r\n      <div id=\"rcg_preview\" style=\"margin-top:12px;\"><\/div>\r\n\r\n      <canvas id=\"rcg_canvas\" width=\"1152\" height=\"2048\" style=\"display:none;\"><\/canvas>\r\n    <\/div>\r\n\r\n    <script>\r\n    (function(){\r\n      const templateUrl = \"https:\\\/\\\/fluxads.sa\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/2-1.png\";\r\n      const x = Number(\"576\");\r\n      const y = Number(\"1790\");\r\n      const fontSize = Number(\"86\");\r\n      const color = \"#FFFFFF\";\r\n      const maxLen = Number(\"28\");\r\n\r\n      const ajaxUrl = \"https:\\\/\\\/fluxads.sa\\\/wp-admin\\\/admin-ajax.php\";\r\n      const nonce = \"387b77ebca\";\r\n\r\n      const nameEl = document.getElementById('rcg_name');\r\n      const btn = document.getElementById('rcg_btn');\r\n      const statusEl = document.getElementById('rcg_status');\r\n      const previewEl = document.getElementById('rcg_preview');\r\n      const canvas = document.getElementById('rcg_canvas');\r\n      const ctx = canvas.getContext('2d');\r\n\r\n      function setStatus(msg){ statusEl.textContent = msg; }\r\n\r\n      async function loadImage(url){\r\n        return new Promise((resolve, reject) => {\r\n          const img = new Image();\r\n          img.crossOrigin = \"anonymous\"; \/\/ \u0644\u0627\u0632\u0645 \u0644\u0648 \u0627\u0644\u0635\u0648\u0631\u0629 \u0645\u0646 \u0646\u0641\u0633 \u0627\u0644\u062f\u0648\u0645\u064a\u0646\/\u0645\u0639 CORS\r\n          img.onload = () => resolve(img);\r\n          img.onerror = reject;\r\n          img.src = url;\r\n        });\r\n      }\r\n\r\n      function drawCenteredText(text){\r\n        ctx.save();\r\n        ctx.fillStyle = color;\r\n        \/\/ \u062e\u0637 \u0627\u0641\u062a\u0631\u0627\u0636\u064a (\u0645\u0645\u0643\u0646 \u062a\u063a\u064a\u0651\u0631\u0647\u060c \u0644\u0643\u0646 \u0628\u062f\u0648\u0646 \u0645\u0644\u0641\u0627\u062a \u0641\u0648\u0646\u062a)\r\n        ctx.font = `700 ${fontSize}px Cairo`;\r\n        ctx.textAlign = 'center';\r\n        ctx.textBaseline = 'middle';\r\n        try { ctx.direction = 'rtl'; } catch(e) {}\r\n\r\n        \/\/ \u0638\u0644 \u0628\u0633\u064a\u0637\r\n        ctx.shadowColor = 'rgba(0,0,0,0.35)';\r\n        ctx.shadowBlur = 6;\r\n        ctx.shadowOffsetY = 2;\r\n\r\n        ctx.fillText(text, x, y);\r\n        ctx.restore();\r\n      }\r\n\r\n      function canvasToBlob(){\r\n        return new Promise(resolve => canvas.toBlob(resolve, 'image\/png', 1.0));\r\n      }\r\n\r\n      async function uploadBlob(blob){\r\n        const fd = new FormData();\r\n        fd.append('action', 'rcg_upload');\r\n        fd.append('_wpnonce', nonce);\r\n        fd.append('name', nameEl.value);\r\n        fd.append('file', blob, 'ramadan-card.png');\r\n\r\n        const res = await fetch(ajaxUrl, { method:'POST', credentials:'same-origin', body: fd });\r\n        const json = await res.json();\r\n        if(!json || !json.success) throw new Error((json && json.data) ? json.data : 'Upload failed');\r\n        return json.data;\r\n      }\r\n\r\n      btn.addEventListener('click', async () => {\r\n        let name = (nameEl.value || '').trim();\r\n        if(!name) { setStatus('\u0627\u0643\u062a\u0628 \u0627\u0644\u0627\u0633\u0645 \u0623\u0648\u0644\u0627\u064b'); return; }\r\n        if(name.length > maxLen) name = name.slice(0, maxLen);\r\n\r\n        btn.disabled = true;\r\n        setStatus('\u062c\u0627\u0631\u064a \u062a\u0648\u0644\u064a\u062f \u0627\u0644\u0635\u0648\u0631\u0629...');\r\n        previewEl.innerHTML = '';\r\n\r\n        try{\r\n          const bg = await loadImage(templateUrl);\r\n\r\n          ctx.clearRect(0,0,canvas.width,canvas.height);\r\n          ctx.drawImage(bg, 0, 0, canvas.width, canvas.height);\r\n          drawCenteredText(name);\r\n\r\n          const blob = await canvasToBlob();\r\n          if(!blob) throw new Error('\u062a\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0635\u0648\u0631\u0629');\r\n\r\n          setStatus('\u062c\u0627\u0631\u064a \u0627\u0644\u062d\u0641\u0638...');\r\n          const { image_url, result_url } = await uploadBlob(blob);\r\n\r\n          setStatus('\u062a\u0645 \u2705');\r\n          previewEl.innerHTML = `\r\n            <img decoding=\"async\" src=\"${image_url}\" alt=\"\u0646\u062a\u064a\u062c\u062a\u0643\" style=\"max-width:100%;height:auto;border-radius:14px;border:1px solid #ddd;\" \/>\r\n            <div style=\"margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;\">\r\n              <a href=\"${image_url}\" download style=\"text-decoration:none;padding:8px 10px;border:1px solid #ddd;border-radius:10px;\">\u062a\u062d\u0645\u064a\u0644<\/a>\r\n              <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=${encodeURIComponent(result_url)}\"\r\n                 style=\"text-decoration:none;padding:8px 10px;border:1px solid #ddd;border-radius:10px;\"><i class=\"fab fa-facebook\"><\/i><\/a>\r\n              <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/twitter.com\/intent\/tweet?url=${encodeURIComponent(result_url)}\"\r\n                 style=\"text-decoration:none;padding:8px 10px;border:1px solid #ddd;border-radius:10px;\">X<\/a>\r\n              <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/wa.me\/?text=${encodeURIComponent(result_url)}\"\r\n                 style=\"text-decoration:none;padding:8px 10px;border:1px solid #ddd;border-radius:10px;\">\u0648\u0627\u062a\u0633\u0627\u0628<\/a>\r\n              <a href=\"${result_url}\" style=\"text-decoration:none;padding:8px 10px;border:1px solid #ddd;border-radius:10px;\">\u0635\u0641\u062d\u0629 \u0627\u0644\u0646\u062a\u064a\u062c\u0629<\/a>\r\n            <\/div>\r\n          `;\r\n        } catch(err){\r\n          console.error(err);\r\n          setStatus('\u062d\u0635\u0644 \u062e\u0637\u0623: ' + (err.message || err));\r\n        } finally {\r\n          btn.disabled = false;\r\n        }\r\n      });\r\n    })();\r\n    <\/script>\r\n    <\/p>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-20738","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/pages\/20738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/comments?post=20738"}],"version-history":[{"count":16,"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/pages\/20738\/revisions"}],"predecessor-version":[{"id":20761,"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/pages\/20738\/revisions\/20761"}],"wp:attachment":[{"href":"https:\/\/fluxads.sa\/ar\/wp-json\/wp\/v2\/media?parent=20738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}