i18n (Phase C batch 4): settings.ejs bagian umum/mikrotik/admin/whatsapp ID/EN
This commit is contained in:
1 parent
a94c740b16
commit
0920d44938
3 files changed
+117
-37
No files matched your search
@@ -1693,6 +1693,46 @@
|
||||
"alert_copied2": "MikroTik script copied!",
|
||||
"deactivate": "Deactivate",
|
||||
"activate": "Activate"
|
||||
},
|
||||
"set": {
|
||||
"ew_log_realtime": "Realtime Log",
|
||||
"ew_rekap": "Auto-Paid Recap",
|
||||
"ph_ew_service": "DANA / Gojek / ShopeePay (optional)",
|
||||
"ph_ew_keyword": "keyword (optional)",
|
||||
"ew_endpoint": "MacroDroid Endpoint:",
|
||||
"show": "Show",
|
||||
"al_empty": "No auto-paid entries in this period.",
|
||||
"ew_log_hint": "The e-wallet notification log was moved to a dedicated page so settings stay compact.",
|
||||
"public_url": "Public App URL (Public Base URL)",
|
||||
"id_prefix": "Customer ID Prefix",
|
||||
"id_digits": "Customer ID Number of Digits",
|
||||
"att_geo_on": "Active (Location Validation)",
|
||||
"att_geo_off": "Inactive (Unrestricted)",
|
||||
"geo_label": "Geofencing:",
|
||||
"geo_desc": "Employees can only check in within the configured radius from the office coordinates. Disable if staff work remotely/in the field.",
|
||||
"tz_wib": "WIB (Asia/Jakarta)",
|
||||
"tz_wita": "WITA (Asia/Makassar)",
|
||||
"tz_wit": "WIT (Asia/Jayapura)",
|
||||
"colpay_label": "Collector Payments:",
|
||||
"colpay_desc": "Collector payment approval is now configured per collector account in the Collector Management menu, not globally.",
|
||||
"acs_url": "GenieACS API URL",
|
||||
"acs_user": "GenieACS Username",
|
||||
"acs_pass": "GenieACS Password",
|
||||
"mr_mode": "Multi-Router Mode",
|
||||
"mr_on": "Active (Multiple Router)",
|
||||
"mr_off": "Inactive (Single Router Mode)",
|
||||
"mr_hint": "Choose the MikroTik operating mode: Active for multi-router, Inactive for single router with automatic fallback",
|
||||
"mr_default_hint": "Optional. If empty, the system auto-detects the first router (smallest ID). If set, this value is used.",
|
||||
"mt_ip": "MikroTik IP / Host",
|
||||
"mt_port": "MikroTik API Port",
|
||||
"mt_user": "MikroTik API User",
|
||||
"mt_pass": "MikroTik API Password",
|
||||
"admin_user": "Admin Username",
|
||||
"admin_pass": "Admin Password",
|
||||
"admin_key": "Admin API Key (For external access)",
|
||||
"wa_enable": "Enable WhatsApp Bot",
|
||||
"wa_numbers": "Admin WA Numbers (Comma-separated)",
|
||||
"wa_delay": "Delay Between Broadcast Messages (seconds)"
|
||||
}
|
||||
},
|
||||
"tech": {
|
||||
|
||||
@@ -1694,6 +1694,46 @@
|
||||
"alert_copied2": "Script MikroTik berhasil disalin!",
|
||||
"deactivate": "Non-aktifkan",
|
||||
"activate": "Aktifkan"
|
||||
},
|
||||
"set": {
|
||||
"ew_log_realtime": "Log Realtime",
|
||||
"ew_rekap": "Rekap Auto-Lunas",
|
||||
"ph_ew_service": "DANA / Gojek / ShopeePay (opsional)",
|
||||
"ph_ew_keyword": "kata kunci (opsional)",
|
||||
"ew_endpoint": "Endpoint MacroDroid:",
|
||||
"show": "Tampilkan",
|
||||
"al_empty": "Tidak ada auto-lunas pada periode ini.",
|
||||
"ew_log_hint": "Log notifikasi e-wallet dipindah ke halaman khusus agar pengaturan tidak terdorong ke bawah.",
|
||||
"public_url": "URL Publik Aplikasi (Public Base URL)",
|
||||
"id_prefix": "Prefix ID Pelanggan",
|
||||
"id_digits": "Jumlah Digit Angka ID Pelanggan",
|
||||
"att_geo_on": "Aktif (Validasi Lokasi)",
|
||||
"att_geo_off": "Nonaktif (Bebas)",
|
||||
"geo_label": "Geofencing:",
|
||||
"geo_desc": "Karyawan hanya bisa absen jika berada dalam radius yang ditentukan dari koordinat kantor. Nonaktifkan jika karyawan bekerja remote/lapangan.",
|
||||
"tz_wib": "WIB (Asia/Jakarta)",
|
||||
"tz_wita": "WITA (Asia/Makassar)",
|
||||
"tz_wit": "WIT (Asia/Jayapura)",
|
||||
"colpay_label": "Pembayaran Kolektor:",
|
||||
"colpay_desc": "Pengaturan approval pembayaran kolektor sekarang diatur per akun kolektor pada menu Manajemen Kolektor, bukan dari pengaturan global.",
|
||||
"acs_url": "GenieACS API URL",
|
||||
"acs_user": "GenieACS Username",
|
||||
"acs_pass": "GenieACS Password",
|
||||
"mr_mode": "Mode Multi-Router",
|
||||
"mr_on": "Aktif (Multiple Router)",
|
||||
"mr_off": "Nonaktif (Single Router Mode)",
|
||||
"mr_hint": "Pilih mode operasional MikroTik: Aktif untuk multi-router, Nonaktif untuk single router dengan fallback otomatis",
|
||||
"mr_default_hint": "Opsional. Jika kosong, sistem auto-detect router pertama (ID terkecil). Jika diisi, gunakan nilai ini.",
|
||||
"mt_ip": "MikroTik IP / Host",
|
||||
"mt_port": "MikroTik API Port",
|
||||
"mt_user": "MikroTik API User",
|
||||
"mt_pass": "MikroTik API Password",
|
||||
"admin_user": "Username Admin",
|
||||
"admin_pass": "Password Admin",
|
||||
"admin_key": "Admin API Key (Untuk akses luar)",
|
||||
"wa_enable": "Enable WhatsApp Bot",
|
||||
"wa_numbers": "Nomor Admin WA (Pisahkan dengan koma)",
|
||||
"wa_delay": "Jeda Antar Pesan Broadcast (Detik)"
|
||||
}
|
||||
},
|
||||
"tech": {
|
||||
|
||||
+37
-37
@@ -53,8 +53,8 @@
|
||||
</style>
|
||||
<% if (logsOnly) { %>
|
||||
<div style="display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap">
|
||||
<button type="button" class="btn btn-p btn-sm" id="ewtab-log" onclick="ewTab('log')"><i class="bi bi-broadcast"></i> Log Realtime</button>
|
||||
<button type="button" class="btn btn-g btn-sm" id="ewtab-rekap" onclick="ewTab('rekap')"><i class="bi bi-check2-circle"></i> Rekap Auto-Lunas</button>
|
||||
<button type="button" class="btn btn-p btn-sm" id="ewtab-log" onclick="ewTab('log')"><i class="bi bi-broadcast"></i> <%= t('admin.set.ew_log_realtime','Log Realtime') %></button>
|
||||
<button type="button" class="btn btn-g btn-sm" id="ewtab-rekap" onclick="ewTab('rekap')"><i class="bi bi-check2-circle"></i> <%= t('admin.set.ew_rekap','Rekap Auto-Lunas') %></button>
|
||||
</div>
|
||||
<div id="ew-tab-log">
|
||||
<div class="card mb16">
|
||||
@@ -72,11 +72,11 @@
|
||||
<div class="form-row" style="align-items:flex-end">
|
||||
<div class="fg">
|
||||
<label class="fl"><%= t('admin.settings.ewallet_logs.service', 'Service') %></label>
|
||||
<input class="fc" id="ew_service" placeholder="DANA / Gojek / ShopeePay (opsional)">
|
||||
<input class="fc" id="ew_service" placeholder="<%= t('admin.set.ph_ew_service','DANA / Gojek / ShopeePay (opsional)') %>">
|
||||
</div>
|
||||
<div class="fg" style="flex:2">
|
||||
<label class="fl"><%= t('admin.settings.ewallet_logs.search', 'Cari') %></label>
|
||||
<input class="fc" id="ew_q" placeholder="kata kunci (opsional)">
|
||||
<input class="fc" id="ew_q" placeholder="<%= t('admin.set.ph_ew_keyword','kata kunci (opsional)') %>">
|
||||
</div>
|
||||
<div class="fg w160">
|
||||
<label class="fl"><%= t('admin.settings.ewallet_logs.limit', 'Limit') %></label>
|
||||
@@ -89,7 +89,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hint" style="margin-top:6px">
|
||||
Endpoint MacroDroid: <span class="mono">POST /api/webhook/v1/payment-notif</span>
|
||||
<%= t('admin.set.ew_endpoint','Endpoint MacroDroid:') %> <span class="mono">POST /api/webhook/v1/payment-notif</span>
|
||||
</div>
|
||||
<div class="hint" style="margin-top:6px" id="ew_notif_hint"></div>
|
||||
<div class="tbl-wrap" style="margin-top:10px;max-height:420px;overflow:auto">
|
||||
@@ -117,11 +117,11 @@
|
||||
<div id="ew-tab-rekap" style="display:none">
|
||||
<div class="card mb16">
|
||||
<div class="card-hd" style="display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap">
|
||||
<h6 style="margin:0"><i class="bi bi-check2-circle"></i> Rekap Auto-Lunas</h6>
|
||||
<h6 style="margin:0"><i class="bi bi-check2-circle"></i> <%= t('admin.set.ew_rekap','Rekap Auto-Lunas') %></h6>
|
||||
<form method="GET" action="/admin/ewallet-logs" style="display:flex;gap:8px;align-items:center;flex-wrap:wrap">
|
||||
<input class="fc" type="number" name="month" min="1" max="12" value="<%= (typeof alMonth!=='undefined'?alMonth:(new Date().getMonth()+1)) %>" style="width:70px">
|
||||
<input class="fc" type="number" name="year" min="2000" max="3000" value="<%= (typeof alYear!=='undefined'?alYear:new Date().getFullYear()) %>" style="width:90px">
|
||||
<button class="btn btn-p btn-sm"><i class="bi bi-funnel"></i> Tampilkan</button>
|
||||
<button class="btn btn-p btn-sm"><i class="bi bi-funnel"></i> <%= t('admin.set.show','Tampilkan') %></button>
|
||||
<a class="btn btn-g btn-sm" href="/admin/autolunas/export?month=<%= (typeof alMonth!=='undefined'?alMonth:(new Date().getMonth()+1)) %>&year=<%= (typeof alYear!=='undefined'?alYear:new Date().getFullYear()) %>"><i class="bi bi-download"></i> CSV</a>
|
||||
</form>
|
||||
</div>
|
||||
@@ -144,7 +144,7 @@
|
||||
<td class="muted"><%= r.paid_at||'-' %></td>
|
||||
</tr>
|
||||
<% }); %>
|
||||
<% if (typeof alRows==='undefined' || !alRows.length) { %><tr><td colspan="6" class="text-center text-muted">Tidak ada auto-lunas pada periode ini.</td></tr><% } %>
|
||||
<% if (typeof alRows==='undefined' || !alRows.length) { %><tr><td colspan="6" class="text-center text-muted"><%= t('admin.set.al_empty','Tidak ada auto-lunas pada periode ini.') %></td></tr><% } %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -158,7 +158,7 @@
|
||||
<a class="btn btn-p btn-sm" href="/admin/ewallet-logs"><i class="bi bi-box-arrow-up-right"></i> <%= t('common.open', 'Buka') %></a>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="hint">Log notifikasi e-wallet dipindah ke halaman khusus agar pengaturan tidak terdorong ke bawah.</div>
|
||||
<div class="hint"><%= t('admin.set.ew_log_hint','Log notifikasi e-wallet dipindah ke halaman khusus agar pengaturan tidak terdorong ke bawah.') %></div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
@@ -220,17 +220,17 @@
|
||||
<input class="fc" name="company_header" value="<%= settings.company_header || '' %>">
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">URL Publik Aplikasi (Public Base URL)</label>
|
||||
<label class="fl"><%= t('admin.set.public_url','URL Publik Aplikasi (Public Base URL)') %></label>
|
||||
<input class="fc" name="public_base_url" value="<%= settings.public_base_url || '' %>" placeholder="https://portal.domain-anda.com">
|
||||
<div style="font-size:10px; color:var(--muted); margin-top:4px">Digunakan untuk menyusun tautan login pelanggan yang dikirim via WhatsApp. Contoh: <span class="mono">https://portal.domain-anda.com</span></div>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Prefix ID Pelanggan</label>
|
||||
<label class="fl"><%= t('admin.set.id_prefix','Prefix ID Pelanggan') %></label>
|
||||
<input class="fc" name="customer_id_prefix" value="<%= settings.customer_id_prefix || 'SKY' %>" placeholder="SKY" style="text-transform:uppercase" maxlength="12">
|
||||
<div style="font-size:10px; color:var(--muted); margin-top:4px">Format ID Pelanggan: <span class="mono">PREFIX-angka</span> (contoh: <span class="mono"><%= (settings.customer_id_prefix || 'SKY') %>-48213</span>). Hanya angka setelah tanda hubung. ID <b>permanen</b> & otomatis untuk pelanggan baru.</div>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Jumlah Digit Angka ID Pelanggan</label>
|
||||
<label class="fl"><%= t('admin.set.id_digits','Jumlah Digit Angka ID Pelanggan') %></label>
|
||||
<input class="fc" type="number" name="customer_id_digits" value="<%= settings.customer_id_digits || 5 %>" min="4" max="10" step="1">
|
||||
<div style="font-size:10px; color:var(--muted); margin-top:4px">Default 5 → contoh <span class="mono">SKY-48213</span>.</div>
|
||||
</div>
|
||||
@@ -274,8 +274,8 @@
|
||||
<i class="bi bi-shield-check"></i> Geofencing Absensi
|
||||
</label>
|
||||
<select class="fs" name="attendance_geofencing">
|
||||
<option value="true" <%= settings.attendance_geofencing === 'true' || settings.attendance_geofencing === true ? 'selected' : '' %>>Aktif (Validasi Lokasi)</option>
|
||||
<option value="false" <%= settings.attendance_geofencing === 'false' || settings.attendance_geofencing === false ? 'selected' : '' %>>Nonaktif (Bebas)</option>
|
||||
<option value="true" <%= settings.attendance_geofencing === 'true' || settings.attendance_geofencing === true ? 'selected' : '' %>><%= t('admin.set.att_geo_on','Aktif (Validasi Lokasi)') %></option>
|
||||
<option value="false" <%= settings.attendance_geofencing === 'false' || settings.attendance_geofencing === false ? 'selected' : '' %>><%= t('admin.set.att_geo_off','Nonaktif (Bebas)') %></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="fg">
|
||||
@@ -286,7 +286,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hint" style="margin-top:6px;color:var(--warning)">
|
||||
<i class="bi bi-exclamation-triangle"></i> <strong>Geofencing:</strong> Karyawan hanya bisa absen jika berada dalam radius yang ditentukan dari koordinat kantor. Nonaktifkan jika karyawan bekerja remote/lapangan.
|
||||
<i class="bi bi-exclamation-triangle"></i> <strong><%= t('admin.set.geo_label','Geofencing:') %></strong> <%= t('admin.set.geo_desc','Karyawan hanya bisa absen jika berada dalam radius yang ditentukan dari koordinat kantor. Nonaktifkan jika karyawan bekerja remote/lapangan.') %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fg">
|
||||
@@ -301,9 +301,9 @@
|
||||
<div class="fg">
|
||||
<label class="fl"><%= t('admin.settings.timezone', 'Zona Waktu') %></label>
|
||||
<select class="fs" name="timezone">
|
||||
<option value="Asia/Jakarta" <%= settings.timezone === 'Asia/Jakarta' ? 'selected' : '' %>>WIB (Asia/Jakarta)</option>
|
||||
<option value="Asia/Makassar" <%= settings.timezone === 'Asia/Makassar' ? 'selected' : '' %>>WITA (Asia/Makassar)</option>
|
||||
<option value="Asia/Jayapura" <%= settings.timezone === 'Asia/Jayapura' ? 'selected' : '' %>>WIT (Asia/Jayapura)</option>
|
||||
<option value="Asia/Jakarta" <%= settings.timezone === 'Asia/Jakarta' ? 'selected' : '' %>><%= t('admin.set.tz_wib','WIB (Asia/Jakarta)') %></option>
|
||||
<option value="Asia/Makassar" <%= settings.timezone === 'Asia/Makassar' ? 'selected' : '' %>><%= t('admin.set.tz_wita','WITA (Asia/Makassar)') %></option>
|
||||
<option value="Asia/Jayapura" <%= settings.timezone === 'Asia/Jayapura' ? 'selected' : '' %>><%= t('admin.set.tz_wit','WIT (Asia/Jayapura)') %></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="fg">
|
||||
@@ -318,7 +318,7 @@
|
||||
<i class="bi bi-robot"></i> <strong>Otomatisasi dipindah:</strong> Auto-Nonaktif, Auto-Hapus, Auto-Peringatan & Auto-Lunas kini tertata di menu <a href="/admin/automation" style="color:var(--primary);font-weight:800">Automation →</a>
|
||||
</div>
|
||||
<div class="hint" style="margin-top:6px;color:var(--warning)">
|
||||
<i class="bi bi-info-circle"></i> <strong>Pembayaran Kolektor:</strong> Pengaturan approval pembayaran kolektor sekarang diatur per akun kolektor pada menu Manajemen Kolektor, bukan dari pengaturan global.
|
||||
<i class="bi bi-info-circle"></i> <strong><%= t('admin.set.colpay_label','Pembayaran Kolektor:') %></strong> <%= t('admin.set.colpay_desc','Pengaturan approval pembayaran kolektor sekarang diatur per akun kolektor pada menu Manajemen Kolektor, bukan dari pengaturan global.') %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -348,16 +348,16 @@
|
||||
|
||||
<div id="genieacs_external_fields" <% if (settings.use_builtin_acs) { %>style="display:none;"<% } %>>
|
||||
<div class="fg">
|
||||
<label class="fl">GenieACS API URL</label>
|
||||
<label class="fl"><%= t('admin.set.acs_url','GenieACS API URL') %></label>
|
||||
<input class="fc" name="genieacs_url" value="<%= settings.genieacs_url || '' %>" placeholder="http://192.168.8.89:7557">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">GenieACS Username</label>
|
||||
<label class="fl"><%= t('admin.set.acs_user','GenieACS Username') %></label>
|
||||
<input class="fc" name="genieacs_username" value="<%= settings.genieacs_username || '' %>">
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">GenieACS Password</label>
|
||||
<label class="fl"><%= t('admin.set.acs_pass','GenieACS Password') %></label>
|
||||
<input class="fc" type="password" name="genieacs_password" value="<%= settings.genieacs_password || '' %>">
|
||||
</div>
|
||||
</div>
|
||||
@@ -366,17 +366,17 @@
|
||||
<!-- Multi-Router Mode Settings -->
|
||||
<div class="form-row" style="margin-top:20px; background:rgba(34,197,94,0.08); padding:12px; border-radius:8px; border:1px dashed rgba(34,197,94,0.3);">
|
||||
<div class="fg" style="flex:1">
|
||||
<label class="fl"><i class="bi bi-shuffle"></i> Mode Multi-Router</label>
|
||||
<label class="fl"><i class="bi bi-shuffle"></i> <%= t('admin.set.mr_mode','Mode Multi-Router') %></label>
|
||||
<select class="fs" name="multi_router_mode" id="multi_router_mode_select" onchange="toggleMultiRouterUI()">
|
||||
<option value="active" <%= (settings.multi_router_mode === 'active' || !settings.multi_router_mode) ? 'selected' : '' %>>Aktif (Multiple Router)</option>
|
||||
<option value="disabled" <%= settings.multi_router_mode === 'disabled' ? 'selected' : '' %>>Nonaktif (Single Router Mode)</option>
|
||||
<option value="active" <%= (settings.multi_router_mode === 'active' || !settings.multi_router_mode) ? 'selected' : '' %>><%= t('admin.set.mr_on','Aktif (Multiple Router)') %></option>
|
||||
<option value="disabled" <%= settings.multi_router_mode === 'disabled' ? 'selected' : '' %>><%= t('admin.set.mr_off','Nonaktif (Single Router Mode)') %></option>
|
||||
</select>
|
||||
<div class="hint">Pilih mode operasional MikroTik: Aktif untuk multi-router, Nonaktif untuk single router dengan fallback otomatis</div>
|
||||
<div class="hint"><%= t('admin.set.mr_hint','Pilih mode operasional MikroTik: Aktif untuk multi-router, Nonaktif untuk single router dengan fallback otomatis') %></div>
|
||||
</div>
|
||||
<div class="fg" id="default_router_div" style="flex:1; <%= (settings.multi_router_mode === 'disabled') ? '' : 'display:none' %>">
|
||||
<label class="fl">Default Router ID <span style="color:var(--muted); font-weight:normal;">(Opsional)</span></label>
|
||||
<input class="fc" type="number" name="default_router_id" id="default_router_id" value="<%= settings.default_router_id || '' %>" placeholder="Kosongkan untuk auto-detect" min="1">
|
||||
<div class="hint">Opsional. Jika kosong, sistem auto-detect router pertama (ID terkecil). Jika diisi, gunakan nilai ini.</div>
|
||||
<div class="hint"><%= t('admin.set.mr_default_hint','Opsional. Jika kosong, sistem auto-detect router pertama (ID terkecil). Jika diisi, gunakan nilai ini.') %></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -392,21 +392,21 @@
|
||||
|
||||
<div class="form-row" style="margin-top:20px">
|
||||
<div class="fg">
|
||||
<label class="fl">MikroTik IP / Host</label>
|
||||
<label class="fl"><%= t('admin.set.mt_ip','MikroTik IP / Host') %></label>
|
||||
<input class="fc" name="mikrotik_host" value="<%= settings.mikrotik_host || '' %>" placeholder="192.168.1.1">
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">MikroTik API Port</label>
|
||||
<label class="fl"><%= t('admin.set.mt_port','MikroTik API Port') %></label>
|
||||
<input class="fc" type="number" name="mikrotik_port" value="<%= settings.mikrotik_port || 8728 %>" placeholder="8728">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">MikroTik API User</label>
|
||||
<label class="fl"><%= t('admin.set.mt_user','MikroTik API User') %></label>
|
||||
<input class="fc" name="mikrotik_user" value="<%= settings.mikrotik_user || '' %>">
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">MikroTik API Password</label>
|
||||
<label class="fl"><%= t('admin.set.mt_pass','MikroTik API Password') %></label>
|
||||
<input class="fc" type="password" name="mikrotik_password" value="<%= settings.mikrotik_password || '' %>">
|
||||
</div>
|
||||
</div>
|
||||
@@ -418,16 +418,16 @@
|
||||
<h6 style="font-size:13px;color:var(--muted);margin-bottom:12px;text-transform:uppercase;letter-spacing:1px"><i class="bi bi-shield-lock"></i> Kredensial Admin</h6>
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">Username Admin</label>
|
||||
<label class="fl"><%= t('admin.set.admin_user','Username Admin') %></label>
|
||||
<input class="fc" name="admin_username" value="<%= settings.admin_username || '' %>">
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Password Admin</label>
|
||||
<label class="fl"><%= t('admin.set.admin_pass','Password Admin') %></label>
|
||||
<input class="fc" type="password" name="admin_password" value="<%= settings.admin_password || '' %>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Admin API Key (Untuk akses luar)</label>
|
||||
<label class="fl"><%= t('admin.set.admin_key','Admin API Key (Untuk akses luar)') %></label>
|
||||
<input class="fc" name="admin_api_key" value="<%= settings.admin_api_key || '' %>">
|
||||
</div>
|
||||
</div>
|
||||
@@ -436,19 +436,19 @@
|
||||
<div data-setcat="notif">
|
||||
<h6 style="font-size:13px;color:var(--muted);margin-bottom:12px;text-transform:uppercase;letter-spacing:1px"><i class="bi bi-whatsapp"></i> Integrasi WhatsApp</h6>
|
||||
<div class="fg">
|
||||
<label class="fl">Enable WhatsApp Bot</label>
|
||||
<label class="fl"><%= t('admin.set.wa_enable','Enable WhatsApp Bot') %></label>
|
||||
<select class="fs" name="whatsapp_enabled">
|
||||
<option value="true" <%= settings.whatsapp_enabled ? 'selected' : '' %>><%= t('common.active','Aktif') %></option>
|
||||
<option value="false" <%= !settings.whatsapp_enabled ? 'selected' : '' %>><%= t('common.inactive','Nonaktif') %></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Nomor Admin WA (Pisahkan dengan koma)</label>
|
||||
<label class="fl"><%= t('admin.set.wa_numbers','Nomor Admin WA (Pisahkan dengan koma)') %></label>
|
||||
<input class="fc" name="whatsapp_admin_numbers" value="<%= (settings.whatsapp_admin_numbers || []).join(', ') %>" placeholder="6281xxx, 6282xxx">
|
||||
<div style="font-size:10px; color:var(--muted); margin-top:4px">Nomor admin akan menerima notifikasi monitoring sistem. Nomor teknisi diambil otomatis dari <a href="/admin/technicians" style="color:var(--brand);font-weight:600">Data Teknisi</a>.</div>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Jeda Antar Pesan Broadcast (Detik)</label>
|
||||
<label class="fl"><%= t('admin.set.wa_delay','Jeda Antar Pesan Broadcast (Detik)') %></label>
|
||||
<input class="fc" type="number" name="whatsapp_broadcast_delay" value="<%= settings.whatsapp_broadcast_delay || 2 %>" min="1" max="60">
|
||||
<div style="font-size:10px; color:var(--muted); margin-top:4px">Rekomendasi: Minimal 2 detik agar tidak terdeteksi spam oleh WhatsApp.</div>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user