i18n (Phase C batch 11): areas, routers, broadcast, backup, whatsapp_templates, mikrotik_display ID/EN

This commit is contained in:
oxpoe committed 2026-10-09 07:59:09 +07:00
1 parent fd074f8ff7
commit e70bc23651
8 files changed
+264 -88

No files matched your search

+19 -19
View File
@@ -46,12 +46,12 @@
<form method="POST" action="/admin/whatsapp/templates">
<div class="card mb16">
<div class="card-hd">
<h6><i class="bi bi-chat-left-quote-fill"></i> Pengaturan Template Notifikasi WhatsApp</h6>
<h6><i class="bi bi-chat-left-quote-fill"></i> <%= t('admin.wt.title','Pengaturan Template Notifikasi WhatsApp') %></h6>
</div>
<div class="card-bd template-grid">
<div>
<div class="fg">
<label class="fl">Template Pengingat Tagihan (Bulanan / Manual)</label>
<label class="fl"><%= t('admin.wt.lbl_reminder','Template Pengingat Tagihan (Bulanan / Manual)') %></label>
<textarea class="fc" id="tmpl_auto_billing" name="whatsapp_auto_billing_message" rows="8" required style="width: 100%;"><%= templates.whatsapp_auto_billing_message %></textarea>
<div style="font-size: 11px; color: var(--muted); margin-top: 6px; display:flex; justify-between; align-items:center;">
<span><i class="bi bi-info-circle"></i> Variabel: <b style="color:var(--primary)">{{id_pelanggan}}</b> <span style="color:var(--primary)"><%= t('common.required','(wajib)') %></span>, <b style="color:var(--primary)">{{pppoe}}</b> <span style="color:var(--muted)">(Username PPPoE, opsional)</span>, <b>{{nama}}</b>, <b>{{tagihan}}</b>, <b>{{rincian}}</b>, <b>{{paket}}</b>, <b>{{link}}</b>.</span>
@@ -59,7 +59,7 @@
</div>
<div class="fg" style="margin-top: 20px;">
<label class="fl">Template Tagihan QRIS (Manual)</label>
<label class="fl"><%= t('admin.wt.lbl_qris','Template Tagihan QRIS (Manual)') %></label>
<textarea class="fc" id="tmpl_billing_qris" name="whatsapp_billing_qris_message" rows="8" required style="width: 100%;"><%= templates.whatsapp_billing_qris_message %></textarea>
<div style="font-size: 11px; color: var(--muted); margin-top: 6px;">
<i class="bi bi-info-circle"></i> Variabel: <b style="color:var(--primary)">{{id_pelanggan}}</b> <span style="color:var(--primary)"><%= t('common.required','(wajib)') %></span>, <b style="color:var(--primary)">{{pppoe}}</b> <span style="color:var(--muted)">(Username PPPoE, opsional)</span>, <b>{{nama}}</b>, <b>{{periode}}</b>, <b>{{paket}}</b>, <b>{{qris_nominal}}</b>, <b>{{qris_kode}}</b>, <b>{{qris_qr}}</b>.
@@ -69,7 +69,7 @@
<div>
<div class="fg">
<label class="fl">Template Pembayaran Sukses (Lunas)</label>
<label class="fl"><%= t('admin.wt.lbl_success','Template Pembayaran Sukses (Lunas)') %></label>
<textarea class="fc" id="tmpl_payment_success" name="whatsapp_payment_success_message" rows="8" required style="width: 100%;"><%= templates.whatsapp_payment_success_message %></textarea>
<div style="font-size: 11px; color: var(--muted); margin-top: 6px;">
<i class="bi bi-info-circle"></i> Variabel: <b style="color:var(--primary)">{{id_pelanggan}}</b> <span style="color:var(--primary)"><%= t('common.required','(wajib)') %></span>, <b style="color:var(--primary)">{{pppoe}}</b> <span style="color:var(--muted)">(Username PPPoE, opsional)</span>, <b>{{nama}}</b>, <b>{{no_invoice}}</b>, <b>{{paket}}</b>, <b>{{periode}}</b>, <b>{{waktu}}</b>, <b>{{metode}}</b>, <b>{{total}}</b>, <b>{{company}}</b>, <b>{{company_phone}}</b>, <b>{{link_portal}}</b>, <b>{{link_pdf}}</b> (link PDF invoice).
@@ -77,7 +77,7 @@
</div>
<div class="fg" style="margin-top: 20px;">
<label class="fl">Template Pemberitahuan Isolir (Otomatis / Manual)</label>
<label class="fl"><%= t('admin.wt.lbl_isolir','Template Pemberitahuan Isolir (Otomatis / Manual)') %></label>
<textarea class="fc" id="tmpl_isolir" name="whatsapp_isolir_message" rows="8" required style="width: 100%;"><%= templates.whatsapp_isolir_message %></textarea>
<div style="font-size: 11px; color: var(--muted); margin-top: 6px;">
<i class="bi bi-info-circle"></i> Variabel: <b style="color:var(--primary)">{{id_pelanggan}}</b> <span style="color:var(--primary)"><%= t('common.required','(wajib)') %></span>, <b style="color:var(--primary)">{{pppoe}}</b> <span style="color:var(--muted)">(Username PPPoE, opsional)</span>, <b>{{nama}}</b>, <b>{{paket}}</b>, <b>{{tagihan}}</b>, <b>{{link}}</b>.
@@ -85,19 +85,19 @@
</div>
<div class="fg" style="margin-top: 20px;">
<label class="fl">Template Peringatan Tunggakan (menuju nonaktif)</label>
<label class="fl"><%= t('admin.wt.lbl_arrears','Template Peringatan Tunggakan (menuju nonaktif)') %></label>
<div class="fg" style="margin-top: 20px;">
<label class="fl">Template Auto-Lunas (Rp 0 / auto_isolate=0)</label>
<label class="fl"><%= t('admin.wt.lbl_autopaid','Template Auto-Lunas (Rp 0 / auto_isolate=0)') %></label>
<textarea class="fc" id="tmpl_autolunas" name="whatsapp_autolunas_message" rows="7" required style="width: 100%;"><%= templates.whatsapp_autolunas_message %></textarea>
<div style="font-size: 11px; color: var(--muted); margin-top: 6px;"><i class="bi bi-info-circle"></i> Variabel: <b style="color:var(--primary)">{{id_pelanggan}}</b>, <b>{{nama}}</b>, <b>{{tagihan}}</b>, <b>{{rincian}}</b>, <b>{{company}}</b>.</div>
</div>
<div class="fg" style="margin-top: 20px;">
<label class="fl">Template Auto-Nonaktif (menunggak)</label>
<label class="fl"><%= t('admin.wt.lbl_autoinactive','Template Auto-Nonaktif (menunggak)') %></label>
<textarea class="fc" id="tmpl_deactivated" name="whatsapp_deactivated_message" rows="7" required style="width: 100%;"><%= templates.whatsapp_deactivated_message %></textarea>
<div style="font-size: 11px; color: var(--muted); margin-top: 6px;"><i class="bi bi-info-circle"></i> Variabel: <b style="color:var(--primary)">{{id_pelanggan}}</b>, <b>{{nama}}</b>, <b>{{bulan_nunggak}}</b>, <b>{{batas}}</b>, <b>{{link}}</b>, <b>{{company}}</b>.</div>
</div>
<div class="fg" style="margin-top: 20px;">
<label class="fl">Template Auto-Hapus (bulan ke-4)</label>
<label class="fl"><%= t('admin.wt.lbl_autodelete','Template Auto-Hapus (bulan ke-4)') %></label>
<textarea class="fc" id="tmpl_deleted" name="whatsapp_deleted_message" rows="7" required style="width: 100%;"><%= templates.whatsapp_deleted_message %></textarea>
<div style="font-size: 11px; color: var(--muted); margin-top: 6px;"><i class="bi bi-info-circle"></i> Variabel: <b style="color:var(--primary)">{{id_pelanggan}}</b>, <b>{{nama}}</b>, <b>{{bulan_nunggak}}</b>, <b>{{company}}</b>.</div>
</div>
@@ -112,11 +112,11 @@
<div style="display:flex; gap:8px; flex-wrap:wrap;">
<button type="button" class="btn btn-primary btn-sm" onclick="fillOfficialReceiptPreset()"><i class="bi bi-receipt-cutoff"></i> Muat Template Struk Resmi Lengkap</button>
<button type="button" class="btn btn-g btn-sm" onclick="fillSpintaxPreset()"><i class="bi bi-magic"></i> Muat Template Ringkas (Spintax Anti-Ban)</button>
<button type="button" class="btn btn-w btn-sm" onclick="showMetaConverter()"><i class="bi bi-meta"></i> <i class="bi bi-magic"></i> Konversi Format Meta Cloud API</button>
<button type="button" class="btn btn-w btn-sm" onclick="showMetaConverter()"><i class="bi bi-meta"></i> <i class="bi bi-magic"></i> <%= t('admin.wt.convert','Konversi Format Meta Cloud API') %></button>
<div style="flex-basis:100%; font-size:11.5px; color:var(--muted); margin-top:4px"><i class="bi bi-exclamation-circle" style="color:var(--primary)"></i> Setiap template <b>wajib menyertakan variabel ID Pelanggan</b> <b style="color:var(--primary)">{{id_pelanggan}}</b>.</div>
<div id="presetStatus" style="flex-basis:100%; font-size:12px; display:none"></div>
</div>
<button type="submit" class="btn btn-p"><i class="bi bi-save"></i> Simpan Template</button>
<button type="submit" class="btn btn-p"><i class="bi bi-save"></i> <%= t('admin.wt.save','Simpan Template') %></button>
</div>
</div>
</form>
@@ -125,17 +125,17 @@
<div class="mo" id="metaConverterModal">
<div class="mb" style="max-width: 680px;">
<div class="mh">
<span class="mt"><i class="bi bi-meta"></i> Tool Konversi Template Meta WhatsApp Cloud API</span>
<span class="mt"><i class="bi bi-meta"></i> <%= t('admin.wt.tool_title','Tool Konversi Template Meta WhatsApp Cloud API') %></span>
<button type="button" class="mc" onclick="closeModal('metaConverterModal')">&times;</button>
</div>
<div class="mbody" style="max-height:70vh; overflow-y:auto;">
<div class="fg mb12">
<label class="fl">Pilih Template yang Akan Dikonversi ke Format Meta:</label>
<label class="fl"><%= t('admin.wt.pick_tmpl','Pilih Template yang Akan Dikonversi ke Format Meta:') %></label>
<select class="fs" id="metaSourceSelect" onchange="convertCurrentTemplate()">
<option value="tmpl_auto_billing">Template Pengingat Tagihan</option>
<option value="tmpl_billing_qris">Template Tagihan QRIS</option>
<option value="tmpl_payment_success">Template Pembayaran Sukses</option>
<option value="tmpl_isolir">Template Pemberitahuan Isolir</option>
<option value="tmpl_auto_billing"><%= t('admin.wt.opt_reminder','Template Pengingat Tagihan') %></option>
<option value="tmpl_billing_qris"><%= t('admin.wt.opt_qris','Template Tagihan QRIS') %></option>
<option value="tmpl_payment_success"><%= t('admin.wt.opt_success','Template Pembayaran Sukses') %></option>
<option value="tmpl_isolir"><%= t('admin.wt.opt_isolir','Template Pemberitahuan Isolir') %></option>
</select>
</div>
@@ -145,7 +145,7 @@
</div>
<div class="fg mb12">
<label class="fl">Daftar Variabel Urutan Parameter (Components Payload):</label>
<label class="fl"><%= t('admin.wt.vars','Daftar Variabel Urutan Parameter (Components Payload):') %></label>
<div id="metaParamMapping" style="background:var(--bg3); padding:10px 14px; border-radius:8px; font-size:12px; font-family:monospace;"></div>
</div>
</div>
@@ -204,7 +204,7 @@ function applyPreset(set, msg) {
});
highlightField(document.querySelector('[name="whatsapp_auto_billing_message"]'));
var names = set.map(function (p) { return p[2]; }).join(' / ');
setPresetStatus('Dimuat ' + ok + ' template (' + names + '). Klik "Simpan Template" untuk menyimpan.\n' + (msg || ''));
setPresetStatus('Dimuat ' + ok + ' template (' + names + '). Klik "<%= t('admin.wt.save','Simpan Template') %>" untuk menyimpan.\n' + (msg || ''));
}
function fillOfficialReceiptPreset() {
applyPreset([