fix: URL persistence in export + cache-busting v4.8.0
Some checks failed
Build & Push Docker / build (push) Has been cancelled
Some checks failed
Build & Push Docker / build (push) Has been cancelled
- getDocument() now explicitly lists all block fields including url - loadDocument() initializes url/series_id for backward compat with older JSONs - Cache-busting query params (?v=4.8) on all static assets - PDF generator uses block.url directly (proper model field) - Added 7 new URL tests (model, API, PDF link annotations) - Version bumped to 4.8.0
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
"""Application configuration."""
|
||||
|
||||
VERSION = "4.7.0"
|
||||
VERSION = "4.8.0"
|
||||
MAX_FILE_SIZE_MB = 10
|
||||
DEFAULT_COLOR = "#ffffff"
|
||||
|
||||
@@ -609,7 +609,7 @@ def generate_pdf(doc) -> bytes:
|
||||
c.restoreState()
|
||||
|
||||
# If block has a URL, make the entire block a clickable link
|
||||
if getattr(block, 'url', None):
|
||||
if block.url:
|
||||
c.linkURL(block.url,
|
||||
(bx + inset, row_y + inset,
|
||||
bx + bw - inset, row_y + row_h - inset),
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="/static/css/app.css">
|
||||
<link rel="stylesheet" href="/static/css/app.css?v=4.8">
|
||||
</head>
|
||||
<body>
|
||||
<header class="header">
|
||||
<div class="header-left">
|
||||
<h1 class="header-title">Scénář Creator</h1>
|
||||
<span class="header-version">v4.7</span>
|
||||
<span class="header-version">v4.8</span>
|
||||
</div>
|
||||
<div class="header-actions">
|
||||
<label class="btn btn-secondary btn-sm" id="importJsonBtn">
|
||||
@@ -249,10 +249,10 @@
|
||||
<div class="toast hidden" id="toast"></div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/interactjs@1.10.27/dist/interact.min.js"></script>
|
||||
<script src="/static/js/api.js"></script>
|
||||
<script src="/static/js/canvas.js"></script>
|
||||
<script src="/static/js/export.js"></script>
|
||||
<script src="/static/js/app.js"></script>
|
||||
<script src="/static/js/api.js?v=4.8"></script>
|
||||
<script src="/static/js/canvas.js?v=4.8"></script>
|
||||
<script src="/static/js/export.js?v=4.8"></script>
|
||||
<script src="/static/js/app.js?v=4.8"></script>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => App.init());
|
||||
</script>
|
||||
|
||||
@@ -84,7 +84,18 @@ const App = {
|
||||
date: this.state.event.date_from, // backward compat
|
||||
},
|
||||
program_types: this.state.program_types.map(pt => ({ ...pt })),
|
||||
blocks: this.state.blocks.map(b => ({ ...b }))
|
||||
blocks: this.state.blocks.map(b => ({
|
||||
id: b.id,
|
||||
date: b.date,
|
||||
start: b.start,
|
||||
end: b.end,
|
||||
title: b.title,
|
||||
type_id: b.type_id,
|
||||
responsible: b.responsible || null,
|
||||
notes: b.notes || null,
|
||||
url: b.url || null,
|
||||
series_id: b.series_id || null,
|
||||
}))
|
||||
};
|
||||
},
|
||||
|
||||
@@ -104,7 +115,9 @@ const App = {
|
||||
this.state.program_types = (doc.program_types || []).map(pt => ({ ...pt }));
|
||||
this.state.blocks = (doc.blocks || []).map(b => ({
|
||||
...b,
|
||||
id: b.id || this.uid()
|
||||
id: b.id || this.uid(),
|
||||
url: b.url || null, // backward compat: older JSONs lack this
|
||||
series_id: b.series_id || null,
|
||||
}));
|
||||
this.syncEventToUI();
|
||||
this.renderTypes();
|
||||
|
||||
Reference in New Issue
Block a user