diff --git a/web/templates/admin_pricing.html b/web/templates/admin_pricing.html index 5e2607b..d609d32 100644 --- a/web/templates/admin_pricing.html +++ b/web/templates/admin_pricing.html @@ -1032,7 +1032,23 @@ function closePricelistsCreateModal() { document.getElementById('pricelists-create-modal').classList.remove('flex'); } +async function checkOnlineStatus() { + try { + const resp = await fetch('/api/db-status'); + const data = await resp.json(); + return data.connected === true; + } catch(e) { + return false; + } +} + async function createPricelist() { + // Check if online before creating + const isOnline = await checkOnlineStatus(); + if (!isOnline) { + throw new Error('Создание прайслистов доступно только в онлайн режиме'); + } + const resp = await fetch('/api/pricelists', { method: 'POST', headers: { @@ -1050,6 +1066,13 @@ async function createPricelist() { } async function deletePricelist(id) { + // Check if online before deleting + const isOnline = await checkOnlineStatus(); + if (!isOnline) { + showToast('Удаление прайслистов доступно только в онлайн режиме', 'error'); + return; + } + if (!confirm('Удалить этот прайслист?')) return; try { diff --git a/web/templates/base.html b/web/templates/base.html index 1cf1124..7b489b1 100644 --- a/web/templates/base.html +++ b/web/templates/base.html @@ -20,7 +20,7 @@ QuoteForge
@@ -237,17 +237,11 @@ } } + // Admin pricing link is now always visible + // Write permission is checked at operation time (create/delete) async function checkWritePermission() { - try { - const resp = await fetch('/api/pricelists/can-write'); - const data = await resp.json(); - if (data.can_write) { - const link = document.getElementById('admin-pricing-link'); - if (link) link.classList.remove('hidden'); - } - } catch(e) { - console.error('Failed to check write permission:', e); - } + // No longer needed - link always visible in offline-first mode + // Operations will check online status when executed } // Load last sync time for dropdown (removed since dropdown is gone)