{"id":137,"date":"2025-04-19T13:52:02","date_gmt":"2025-04-19T13:52:02","guid":{"rendered":"https:\/\/abatablaster.xyz\/?page_id=137"},"modified":"2025-10-15T02:04:02","modified_gmt":"2025-10-15T02:04:02","slug":"whatsapp-blaster","status":"publish","type":"page","link":"https:\/\/abatablaster.xyz\/index.php\/whatsapp-blaster\/","title":{"rendered":"Blaster (Broadcast)"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"ms\">\n\n<head>\n    <meta charset=\"utf-8\" \/>\n    <title>Broadcast + Status Kempen (Gabungan)<\/title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\n    <!-- SweetAlert2 -->\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sweetalert2@11\"><\/script>\n    <style>\n        \/* Spinner ringkas (ganti spinner bootstrap) *\/\n        .spinner-border {\n            display: inline-block;\n            width: 1rem;\n            height: 1rem;\n            border: .15em solid #a7e6c1;\n            border-right-color: transparent;\n            border-radius: 50%;\n            animation: spin 0.75s linear infinite;\n            vertical-align: middle\n        }\n\n        @keyframes spin {\n            to {\n                transform: rotate(360deg)\n            }\n        }\n\n        \/* Blink untuk notis sedang jalan *\/\n        .blinker {\n            animation: blink-animation 1s steps(2, start) infinite;\n        }\n\n        @keyframes blink-animation {\n            to {\n                visibility: hidden;\n            }\n        }\n\n        \/* Kontena asas *\/\n        body {\n            font-family: system-ui, Arial, \"Segoe UI Emoji\", \"Noto Color Emoji\", sans-serif;\n            background: #f5fbf7;\n            margin: 0;\n            padding: 20px;\n        }\n\n        .shell {\n            max-width: 1100px;\n            margin: 0 auto;\n        }\n\n        .card {\n            background: #ffffff;\n            border: 1px solid #d9f1e1;\n            border-radius: 12px;\n            padding: 20px;\n            margin-bottom: 20px;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, .04);\n        }\n\n        \/* ========== UI standard ========== *\/\n        .input {\n            width: 100%;\n            padding: 10px;\n            border: 1px solid #ccc;\n            border-radius: 8px;\n        }\n\n        .field-row {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 12px;\n            align-items: center;\n        }\n\n        .field-row .input {\n            flex: 1 1 180px;\n            min-width: 160px;\n        }\n\n        .field-row .sep {\n            flex: 0 0 auto;\n            opacity: .8;\n        }\n\n        .btn {\n            display: inline-flex;\n            align-items: center;\n            gap: .5rem;\n            padding: 10px 16px;\n            border-radius: 8px;\n            border: 0;\n            font-weight: 600;\n            cursor: pointer;\n            box-shadow: 0 1px 0 rgba(0, 0, 0, .06);\n        }\n\n        .btn+.btn {\n            margin-left: 10px;\n        }\n\n        .btn--green {\n            background: #30a46c;\n            color: #fff;\n        }\n\n        .btn--red {\n            background: #e53935;\n            color: #fff;\n        }\n\n        .btn--deepred {\n            background: #b71c1c;\n            color: #fff;\n        }\n\n        .btn--orange {\n            background: #f0ad4e;\n            color: #fff;\n        }\n\n        .btn--blue {\n            background: #5bc0de;\n            color: #fff;\n        }\n\n        .btn--gray {\n            background: #e0e0e0;\n            color: #333;\n        }\n\n        @media (max-width: 720px) {\n            body {\n                padding: 12px;\n            }\n\n            .shell {\n                max-width: 100%;\n            }\n        }\n\n        #campaignControls {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 10px;\n        }\n\n        #campaignControls .btn+.btn {\n            margin-left: 0;\n        }\n\n        \/* sebab kita guna gap *\/\n\n        .progress-shell {\n            height: 14px;\n            background: #e0f7eb;\n            border-radius: 999px;\n            overflow: hidden;\n        }\n\n        .progress-fill {\n            height: 100%;\n            width: 0%;\n            background: #30a46c;\n            transition: width .5s ease;\n        }\n\n        #campaignStatusTable thead th {\n            position: sticky;\n            top: 0;\n            background: #e0f7eb;\n            z-index: 1;\n        }\n\n        \/* kecilkan font table status + sticky header *\/\n        #campaignStatusTable {\n            font-size: 14px;\n        }\n\n        #campaignStatusTable td,\n        #campaignStatusTable th {\n            padding: 6px 8px !important;\n        }\n\n        \/* lajur index (#) *\/\n        #campaignStatusTable .col-idx {\n            text-align: center;\n            width: 64px;\n            color: #5f6b6b;\n        }\n\n        \/* ========== Responsive: Jadual Blast Akan Datang ========== *\/\n        .upcoming-table {\n            width: 100%;\n            border-collapse: collapse;\n            font-size: 14px;\n            table-layout: fixed;\n            \/* <- tambah ini *\/\n        }\n\n        .upcoming-table th,\n        .upcoming-table td {\n            padding: 6px 8px !important;\n            border: 1px solid #d6ece5;\n        }\n\n        \/* Header mesti sentiasa nampak, termasuk mobile *\/\n        .upcoming-table thead th {\n            background: #f6fffb;\n            position: sticky;\n            top: 0;\n            z-index: 1;\n        }\n\n        \/* Mobile: jadikan setiap row sebagai \u201ccard\u201d, tapi JANGAN sentuh row kosong *\/\n        @media (max-width: 720px) {\n            .upcoming-table thead th {\n                position: static;\n            }\n\n            .upcoming-table thead {\n                display: table-header-group;\n                \/* kekalkan header *\/\n            }\n\n            .upcoming-table tbody tr:not(.empty-row) {\n                display: block;\n                margin: 10px 0;\n                border: 1px solid #d6ece5;\n                border-radius: 10px;\n                background: #ffffff;\n            }\n\n            .upcoming-table tbody tr:not(.empty-row) td {\n                display: flex;\n                gap: 10px;\n                align-items: center;\n                justify-content: space-between;\n                border: none;\n                \/* buang border dalaman *\/\n                border-bottom: 1px dashed #d6ece5;\n                padding: 10px 12px !important;\n            }\n\n            .upcoming-table tbody tr:not(.empty-row) td:last-child {\n                border-bottom: none;\n            }\n\n            \/* Label lajur untuk setiap sel (guna data-label dari JS) *\/\n            .upcoming-table tbody td::before {\n                content: attr(data-label);\n                font-weight: 700;\n                color: #2e7d32;\n            }\n\n            \/* Baris kosong \u201cTiada jadual.\u201d \u2013 kekalkan rupa simple *\/\n            .upcoming-table tbody tr.empty-row td {\n                display: block;\n                text-align: center;\n                border: none;\n                padding: 14px 10px !important;\n                opacity: .8;\n            }\n        }\n\n        .upcoming-table.is-empty thead {\n            display: none;\n        }\n\n        .upcoming-table .empty-row td {\n            text-align: center;\n            padding: 14px 10px;\n            opacity: .8;\n            border: none;\n        }\n    <\/style>\n<\/head>\n\n<body>\n    <div class=\"shell\">\n\n        <!-- =============== BORANG KIRIM BROADCAST =============== -->\n        <div id=\"broadcastSection\" class=\"card\">\n            <div style=\"text-align:center;margin-bottom:10px;\">\n                <img decoding=\"async\" src=\"https:\/\/abatablaster.xyz\/wp-content\/uploads\/2025\/05\/photo_2024-05-16_15-47-59.jpg\" alt=\"Logo\"\n                    style=\"max-height:100px;border-radius:16px;\">\n            <\/div>\n\n            <h3 style=\"color:#2e7d32;text-align:center;\">\ud83d\udce2 Hantar Mesej Pukal (Broadcast)<\/h3>\n            <div id=\"statusBroadcast\" style=\"margin-bottom:10px;\"><\/div>\n\n            <form id=\"borangBroadcast\">\n                <label><strong>\ud83d\udcdb Nama Kempen:<\/strong><\/label><br \/>\n                <input type=\"text\" id=\"namaKempen\" class=\"input\" style=\"margin:5px 0;\" \/>\n\n                <label><strong>\u2709\ufe0f Berapa Mesej Anda Ingin Hantar?<\/strong><\/label><br \/>\n                <select id=\"jumlahMesej\" class=\"input\" style=\"margin-bottom:20px;\">\n                    <option value=\"1\" selected>1 Mesej<\/option>\n                    <option value=\"2\">2 Mesej<\/option>\n                    <option value=\"3\">3 Mesej<\/option>\n                <\/select>\n\n                <!-- BLOCK MESEJ 1 -->\n                <div id=\"blockMesej1\">\n                    <h4 style=\"margin-top:20px;color:#2e7d32;\">\ud83d\udce6 Mesej 1 (Wajib)<\/h4>\n                    <label id=\"labelMesej1\"><strong>\ud83d\udcdd Mesej 1:<\/strong><\/label><br \/>\n                    <textarea id=\"mesej1\" rows=\"2\" class=\"input\"><\/textarea>\n\n                    <label><strong>\ud83d\udcc2 Jenis Mesej 1:<\/strong><\/label><br \/>\n                    <select id=\"jenisMesej1\" class=\"input\" style=\"margin-bottom:5px;\">\n                        <option value=\"text\">Teks Sahaja<\/option>\n                        <option value=\"image\">Gambar + Caption<\/option>\n                        <option value=\"video\">Video + Caption<\/option>\n                        <option value=\"audio\">Audio<\/option>\n                        <option value=\"document\">Dokumen (PDF\/DOC\/ZIP\/DSB.)<\/option>\n                        <option value=\"sticker\">Sticker<\/option>\n                    <\/select><br \/>\n\n                    <div id=\"mediaSection1\" style=\"display:none;\">\n                        <label id=\"labelUploadMedia1\"><strong>\ud83d\udce4 Upload Media 1:<\/strong><\/label><br \/>\n                        <input type=\"file\" id=\"mediaFile1\" accept=\"image\/*,video\/*\" style=\"margin-bottom:10px;\"><br \/>\n                        <div id=\"mediaPreview1\" style=\"max-width:200px;\"><\/div>\n                        <label><strong>\ud83d\udcdd Caption 1:<\/strong><\/label><br \/>\n                        <textarea id=\"caption1\" rows=\"1\" class=\"input\"><\/textarea>\n                    <\/div>\n                <\/div>\n\n                <!-- BLOCK MESEJ 2 -->\n                <div id=\"blockMesej2\" style=\"display:none;\">\n                    <h4 style=\"margin-top:30px;color:#2e7d32;\">\ud83d\udce6 Mesej 2 (Pilihan)<\/h4>\n                    <label id=\"labelMesej2\"><strong>\ud83d\udcdd Mesej 2:<\/strong><\/label><br \/>\n                    <textarea id=\"mesej2\" rows=\"2\" class=\"input\"><\/textarea>\n\n                    <label><strong>\ud83d\udcc2 Jenis Mesej 2:<\/strong><\/label><br \/>\n                    <select id=\"jenisMesej2\" class=\"input\" style=\"margin-bottom:5px;\">\n                        <option value=\"text\">Teks Sahaja<\/option>\n                        <option value=\"image\">Gambar + Caption<\/option>\n                        <option value=\"video\">Video + Caption<\/option>\n                        <option value=\"audio\">Audio<\/option>\n                        <option value=\"document\">Dokumen (PDF\/DOC\/ZIP\/DSB.)<\/option>\n                        <option value=\"sticker\">Sticker<\/option>\n                    <\/select><br \/>\n\n                    <div id=\"mediaSection2\" style=\"display:none;\">\n                        <label id=\"labelUploadMedia2\"><strong>\ud83d\udce4 Upload Media 2:<\/strong><\/label><br \/>\n                        <input type=\"file\" id=\"mediaFile2\" accept=\"image\/*,video\/*\" style=\"margin-bottom:10px;\"><br \/>\n                        <div id=\"mediaPreview2\" style=\"max-width:200px;\"><\/div>\n                        <label><strong>\ud83d\udcdd Caption 2:<\/strong><\/label><br \/>\n                        <textarea id=\"caption2\" rows=\"1\" class=\"input\"><\/textarea>\n                    <\/div>\n                <\/div>\n\n                <!-- BLOCK MESEJ 3 -->\n                <div id=\"blockMesej3\" style=\"display:none;\">\n                    <h4 style=\"margin-top:30px;color:#2e7d32;\">\ud83d\udce6 Mesej 3 (Pilihan)<\/h4>\n                    <label id=\"labelMesej3\"><strong>\ud83d\udcdd Mesej 3:<\/strong><\/label><br \/>\n                    <textarea id=\"mesej3\" rows=\"2\" class=\"input\"><\/textarea>\n\n                    <label><strong>\ud83d\udcc2 Jenis Mesej 3:<\/strong><\/label><br \/>\n                    <select id=\"jenisMesej3\" class=\"input\" style=\"margin-bottom:5px;\">\n                        <option value=\"text\">Teks Sahaja<\/option>\n                        <option value=\"image\">Gambar + Caption<\/option>\n                        <option value=\"video\">Video + Caption<\/option>\n                        <option value=\"audio\">Audio<\/option>\n                        <option value=\"document\">Dokumen (PDF\/DOC\/ZIP\/DSB.)<\/option>\n                        <option value=\"sticker\">Sticker<\/option>\n                    <\/select><br \/>\n\n                    <div id=\"mediaSection3\" style=\"display:none;\">\n                        <label id=\"labelUploadMedia3\"><strong>\ud83d\udce4 Upload Media 3:<\/strong><\/label><br \/>\n                        <input type=\"file\" id=\"mediaFile3\" accept=\"image\/*,video\/*\" style=\"margin-bottom:10px;\"><br \/>\n                        <div id=\"mediaPreview3\" style=\"max-width:200px;\"><\/div>\n                        <label><strong>\ud83d\udcdd Caption 3:<\/strong><\/label><br \/>\n                        <textarea id=\"caption3\" rows=\"1\" class=\"input\"><\/textarea>\n                    <\/div>\n                <\/div>\n\n                <label><strong>\ud83d\udcf1 Pilih Nombor WhatsApp:<\/strong><\/label><br \/>\n                <select id=\"nomborPengirim\" required class=\"input\" style=\"margin:5px 0;\">\n                    <option value=\"\">-- Sila Pilih --<\/option>\n                <\/select><br \/>\n\n                <label><strong>\ud83d\udcc7 Senarai Nombor Penerima (asingkan dengan koma):<\/strong><\/label><br \/>\n                <textarea id=\"senaraiNombor\" required rows=\"3\" class=\"input\" style=\"margin:5px 0;\"><\/textarea>\n                <br \/>\n                <small id=\"jumlahNombor\"\n                    style=\"color: #2e7d32; font-weight: bold; display: block; margin-bottom: 10px;\">0 nombor\n                    dipilih.<\/small>\n\n                <label for=\"uploadExcel\" style=\"margin-top:10px; display:block;\">\ud83d\udce5 Atau muat naik fail\n                    Excel\/CSV:<\/label>\n                <input type=\"file\" id=\"uploadExcel\" accept=\".xlsx, .csv\" style=\"margin-bottom: 15px;\" \/>\n                <button type=\"button\" id=\"padamSemua\" class=\"btn btn--red\" style=\"margin-bottom:10px;\">\n                    \ud83e\uddf9 Padam Semua Nombor\n                <\/button>\n\n                <label><strong>\u23f1 Delay setiap mesej:<\/strong><\/label>\n                <div class=\"field-row\" style=\"margin-top:6px;\">\n                    <input type=\"number\" id=\"delayMin\" min=\"0\" class=\"input\" placeholder=\"Contoh: 2 saat\" \/>\n                    <span class=\"sep\">hingga<\/span>\n                    <input type=\"number\" id=\"delayMax\" min=\"0\" class=\"input\" placeholder=\"Contoh: 5 saat\" \/>\n                <\/div>\n\n                <label><strong>\ud83d\ude34 Rehat selepas beberapa mesej:<\/strong><\/label>\n                <div class=\"field-row\" style=\"margin-top:6px;\">\n                    <input type=\"number\" id=\"rehatMin\" min=\"0\" class=\"input\" placeholder=\"Contoh: 100 saat\" \/>\n                    <span class=\"sep\">hingga<\/span>\n                    <input type=\"number\" id=\"rehatMax\" min=\"0\" class=\"input\" placeholder=\"Contoh: 200 saat\" \/>\n                    <span class=\"sep\">saat setiap<\/span>\n                    <input type=\"number\" id=\"setiapX\" min=\"0\" class=\"input\" placeholder=\"Contoh: 30\" \/>\n                <\/div>\n\n                <!-- ========== JADUAL PENGHANTARAN (BARU) ========== -->\n                <h4 style=\"margin-top:24px;color:#2e7d32;\">\u23f0 Jadual Penghantaran<\/h4>\n                <div class=\"field-row\" style=\"margin-top:6px;\">\n                    <label style=\"display:flex;gap:8px;align-items:center;\">\n                        <input type=\"radio\" name=\"scheduleType\" id=\"schNow\" value=\"now\" checked \/>\n                        <span>Hantar Sekarang<\/span>\n                    <\/label>\n                    <label style=\"display:flex;gap:8px;align-items:center;\">\n                        <input type=\"radio\" name=\"scheduleType\" id=\"schManual\" value=\"manual\" \/>\n                        <span>Manual (pilih tarikh tertentu)<\/span>\n                    <\/label>\n                    <label style=\"display:flex;gap:8px;align-items:center;\">\n                        <input type=\"radio\" name=\"scheduleType\" id=\"schRecurring\" value=\"recurring\" \/>\n                        <span>Recurring (berkala)<\/span>\n                    <\/label>\n                <\/div>\n\n                <!-- Manual dates -->\n                <div id=\"schManualBox\"\n                    style=\"display:none;margin-top:10px;border:1px solid #d6ece5;padding:10px;border-radius:8px;\">\n                    <div id=\"manualDatesWrap\" style=\"display:flex;flex-direction:column;gap:8px;\"><\/div>\n                    <button type=\"button\" id=\"btnAddDate\" class=\"btn btn--blue\" style=\"margin-top:10px;\">\u2795 Tambah\n                        Tarikh<\/button>\n                    <small style=\"display:block;opacity:.8;margin-top:6px;\">Maksimum 10 tarikh. Masa mesti di masa\n                        depan.<\/small>\n                <\/div>\n\n                <!-- Recurring -->\n                <div id=\"schRecurringBox\"\n                    style=\"display:none;margin-top:10px;border:1px solid #d6ece5;padding:10px;border-radius:8px;\">\n                    <div class=\"field-row\" style=\"margin-top:6px;\">\n                        <input type=\"datetime-local\" id=\"recurringStart\" class=\"input\" step=\"60\" \/>\n                        <span class=\"sep\">mula<\/span>\n                        <select id=\"recurringInterval\" class=\"input\" style=\"max-width:220px;\">\n                            <option value=\"daily\">Harian<\/option>\n                            <option value=\"weekly\">Mingguan<\/option>\n                            <option value=\"custom\">Custom (minit)<\/option>\n                        <\/select>\n                    <\/div>\n                    <div class=\"field-row\" style=\"margin-top:6px;\">\n                        <input type=\"number\" id=\"customMinutes\" min=\"5\" class=\"input\"\n                            placeholder=\"Custom (minit) \u2014 isi jika 'custom'\" \/>\n                        <span class=\"sep\">ulang<\/span>\n                        <input type=\"number\" id=\"recurringCount\" min=\"1\" class=\"input\"\n                            placeholder=\"Bilangan kitaran (cth: 5)\" \/>\n                    <\/div>\n                    <small style=\"display:block;opacity:.8;margin-top:6px;\">Jika 'custom', isi minit (>= 5). Semua masa\n                        mesti di masa depan.<\/small>\n                <\/div>\n                <!-- ========== TAMAT JADUAL ========== -->\n\n                <button type=\"submit\" class=\"btn btn--green\">\ud83d\ude80 Hantar Broadcast<\/button>\n                <button type=\"button\" id=\"resetForm\" class=\"btn btn--red\">\ud83d\udd04 Reset Semua<\/button>\n                <button type=\"button\" id=\"resetCampaignBtn\" class=\"btn btn--deepred\">\u274c Reset Semua Kempen\n                    Tertangguh<\/button>\n            <\/form>\n\n            <hr style=\"margin: 30px 0; border: none; border-top: 1px dashed #ccc;\" \/>\n\n            <div id=\"previewMesej\"\n                style=\"background:#f9fff5;border:1px solid #c5e1a5;padding:15px;border-radius:10px;margin-top:15px;display:none;\">\n                <h4 style=\"color:#33691e;margin-top:0;\">\ud83d\udd0d Preview Mesej<\/h4>\n                <div id=\"previewList\" style=\"font-size: 14px; line-height: 1.6;\"><\/div>\n            <\/div>\n        <\/div>\n\n        <!-- =============== STATUS KEMPEN BROADCAST =============== -->\n        <div id=\"campaignStatusSection\" class=\"card\" style=\"border-color:#30a46c;background:#f6fef9;\">\n            <h3 style=\"color: #30a46c;\">\n                \ud83d\udcca Status Kempen:\n                <span id=\"campaignStatus\" style=\"font-weight: bold;\">\n                    <span class=\"spinner-border text-success\" role=\"status\"><\/span> Memuatkan...\n                <\/span>\n            <\/h3>\n\n            <p style=\"font-size: 16px;\">\n                \ud83d\ude80 Progress: <span id=\"campaignProgress\">0\/0<\/span> (<span id=\"campaignPercent\">0%<\/span>)\n            <\/p>\n            <div class=\"progress-shell\">\n                <div id=\"campaignProgressBar\" class=\"progress-fill\"><\/div>\n            <\/div>\n\n            <div id=\"campaignControls\" style=\"margin-top: 20px;\">\n                <button id=\"btnStopCampaign\" class=\"btn btn--red\">\ud83d\udeab Hentikan Kempen<\/button>\n                <button id=\"btnPauseCampaign\" class=\"btn btn--orange\">\u23f8 Pause Kempen<\/button>\n                <button id=\"btnResumeCampaign\" class=\"btn btn--blue\" style=\"display:none;\">\u25b6\ufe0f Sambung Semula<\/button>\n\n                <button id=\"btnDownloadReport\" class=\"btn btn--green\">\ud83d\udcc4 Muat Turun Report<\/button>\n                <!-- \u25bc\u25bc BUTANG BARU \u25bc\u25bc -->\n                <button id=\"btnDownloadBerjaya\" class=\"btn btn--green\" style=\"display:none;\">\u2b07\ufe0f Muat Turun\n                    (BERJAYA)<\/button>\n                <button id=\"btnDownloadMasalah\" class=\"btn btn--orange\" style=\"display:none;\">\u2b07\ufe0f Muat Turun\n                    (GAGAL\/MENUNGGU\/SKIP)<\/button>\n                <!-- \u25b2\u25b2 BUTANG BARU \u25b2\u25b2 -->\n\n                <button id=\"btnRetryFailed\" class=\"btn btn--blue\" style=\"display:none;\">\ud83d\udd01 Blast Semula (GAGAL)<\/button>\n                <button id=\"btnResetStatus\" class=\"btn btn--gray\" style=\"display:none;\">\ud83d\udd04 Reset Paparan<\/button>\n            <\/div>\n\n            <div id=\"campaignStatusTableWrap\" style=\"margin-top: 30px;\">\n                <h4 style=\"color:#30a46c;\">\ud83d\udccb Status Setiap Nombor<\/h4>\n                <div id=\"statusScrollBox\"\n                    style=\"max-height:420px; overflow:auto; border:1px solid #d6ece5; border-radius:8px;\">\n                    <table id=\"campaignStatusTable\" style=\"width:100%; border-collapse:collapse; margin-top:0;\">\n                        <thead>\n                            <tr>\n                                <th style=\"padding:8px 6px; border:1px solid #c0e8db; width:64px; text-align:center;\">#\n                                <\/th>\n                                <th style=\"padding:8px 6px; border:1px solid #c0e8db;\">No. Telefon<\/th>\n                                <th style=\"padding:8px 6px; border:1px solid #c0e8db;\">Status<\/th>\n                            <\/tr>\n                        <\/thead>\n                        <tbody id=\"campaignStatusTableBody\">\n                            <tr id=\"tableLoadingRow\">\n                                <td colspan=\"3\" style=\"text-align:center; padding:18px;\">\n                                    <span class=\"spinner-border text-success\" role=\"status\"><\/span> Memuatkan\n                                    status...\n                                <\/td>\n                            <\/tr>\n                        <\/tbody>\n                    <\/table>\n                <\/div>\n                <!-- ========== JADUAL BLAST AKAN DATANG (BARU) ========== -->\n                <h4 style=\"margin-top:24px;\">\ud83d\udcc5 Jadual Blast Akan Datang<\/h4>\n                <div id=\"upcomingWrap\" style=\"border:1px solid #d6ece5;border-radius:10px;padding:10px;\">\n                    <table class=\"upcoming-table\" style=\"width:100%;border-collapse:collapse;\">\n                        <thead>\n                            <tr style=\"background:#f6fffb;\">\n                                <th style=\"text-align:left;border:1px solid #d6ece5;padding:6px 8px;\">Kempen<\/th>\n                                <th style=\"text-align:left;border:1px solid #d6ece5;padding:6px 8px;\">Jenis<\/th>\n                                <th style=\"text-align:left;border:1px solid #d6ece5;padding:6px 8px;\">Next Run<\/th>\n                                <th style=\"text-align:left;border:1px solid #d6ece5;padding:6px 8px;\">Bil. Nombor<\/th>\n                                <th style=\"text-align:left;border:1px solid #d6ece5;padding:6px 8px;\">Tindakan<\/th>\n                            <\/tr>\n                        <\/thead>\n                        <tbody id=\"upcomingTableBody\">\n                            <tr class=\"empty-row\">\n                                <td colspan=\"5\">Tiada jadual.<\/td>\n                            <\/tr>\n                        <\/tbody>\n                    <\/table>\n                <\/div>\n                <!-- ========== TAMAT ========== -->\n            <\/div>\n\n            <p id=\"campaignCompleteNote\" style=\"margin-top: 10px; font-size: 14px; color: #333;\"><\/p>\n            <div id=\"campaignRunningNotice\" style=\"display: none; margin-top: 15px; text-align: center;\">\n                <span style=\"font-size: 16px; font-weight: bold; color: #d35400;\" class=\"blinker\">\u26a1 Kempen sedang\n                    berjalan...<\/span>\n            <\/div>\n        <\/div> <!-- \/#campaignStatusSection -->\n    <\/div> <!-- \/.shell -->\n\n    <script type=\"module\" src=\"\/js\/broadcast-biasa.js\"><\/script>\n\n<\/body>\n\n<\/html>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Broadcast + Status Kempen (Gabungan) \ud83d\udce2 Hantar Mesej Pukal (Broadcast) \ud83d\udcdb Nama Kempen: \u2709\ufe0f Berapa Mesej Anda Ingin Hantar? 1 Mesej2 Mesej3 Mesej \ud83d\udce6 Mesej 1 (Wajib) \ud83d\udcdd Mesej 1: \ud83d\udcc2 Jenis Mesej 1: Teks SahajaGambar + CaptionVideo + CaptionAudioDokumen (PDF\/DOC\/ZIP\/DSB.)Sticker \ud83d\udce4 Upload Media 1: \ud83d\udcdd Caption 1: \ud83d\udce6 Mesej 2 (Pilihan) \ud83d\udcdd Mesej 2: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-137","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/pages\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":28,"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/pages\/137\/revisions"}],"predecessor-version":[{"id":1111,"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/pages\/137\/revisions\/1111"}],"wp:attachment":[{"href":"https:\/\/abatablaster.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}