v2.5.0: add QR import and backup scheduling

This commit is contained in:
Виталий Литвинов
2026-04-25 14:39:56 +03:00
parent c7540a97f7
commit b2ab0dca57
10 changed files with 854 additions and 97 deletions

View File

@@ -272,6 +272,22 @@
</div>
<button id="createBackupBtn" type="button" data-i18n="createBackup">Create backup</button>
</div>
<div class="backup-schedule">
<div>
<strong data-i18n="backupScheduleTitle">Automatic backups</strong>
<span id="backupScheduleMeta" data-i18n="backupScheduleLoading">Loading schedule...</span>
</div>
<div class="segmented compact" role="group" aria-label="Backup schedule">
<button type="button" data-backup-schedule="off" data-i18n="scheduleOff">Off</button>
<button type="button" data-backup-schedule="daily" data-i18n="scheduleDaily">Daily</button>
<button type="button" data-backup-schedule="weekly" data-i18n="scheduleWeekly">Weekly</button>
<button type="button" data-backup-schedule="monthly" data-i18n="scheduleMonthly">Monthly</button>
</div>
</div>
<div class="backup-includes">
<strong data-i18n="backupIncludesTitle">Backup contents</strong>
<span data-i18n="backupIncludesText">telemt config, goTelegram settings, keys, disabled keys, site, templates, SSL certificates, bot, admin panel and traffic history.</span>
</div>
<div id="backupsList" class="backup-list"></div>
</section>
@@ -351,6 +367,18 @@
</div>
<div id="toast" class="toast"></div>
<div id="qrModal" class="promo-modal" hidden>
<div class="promo-card qr-card" role="dialog" aria-modal="true" aria-labelledby="qrTitle">
<button id="qrClose" class="icon-btn ghost" type="button" aria-label="Close" data-i18n-aria-label="ariaClose">×</button>
<p class="eyebrow" data-i18n="qrEyebrow">QR import</p>
<h2 id="qrTitle" data-i18n="qrTitle">Scan Telegram proxy</h2>
<div class="qr-frame">
<img id="qrImage" alt="Telegram proxy QR">
</div>
<p id="qrMeta" class="modal-note"></p>
<button id="qrCopyBtn" type="button" class="soft" data-i18n="copyLink">Copy link</button>
</div>
</div>
<div id="promoModal" class="promo-modal" hidden>
<div class="promo-card" role="dialog" aria-modal="true" aria-labelledby="promoTitle">
<button id="promoClose" class="icon-btn ghost" type="button" aria-label="Close" data-i18n-aria-label="ariaClose">×</button>
@@ -372,6 +400,6 @@
</div>
</div>
</div>
<script src="/app.js?v=2.5.0-admin8" type="module"></script>
<script src="/app.js?v=2.5.0-admin9" type="module"></script>
</body>
</html>