Enhance Article editor

This commit is contained in:
2026-03-25 12:45:07 -04:00
parent dfdbb54875
commit 3ba7eae390
5 changed files with 677 additions and 53 deletions
+47 -2
View File
@@ -34,7 +34,52 @@
{% endfor %}
</div>
{% endif %}
<div style="white-space:pre-wrap;font-size:14px;line-height:1.8;color:var(--text);">{{ article.body }}</div>
<!-- Render rich HTML saved by TinyMCE -->
<style>
.kb-body { font-size:14px; line-height:1.8; color:var(--text); }
.kb-body h1,.kb-body h2,.kb-body h3,.kb-body h4 { font-weight:700; margin:1.4em 0 .5em; color:var(--text); }
.kb-body h1{font-size:1.55em;} .kb-body h2{font-size:1.3em;} .kb-body h3{font-size:1.12em;}
.kb-body p { margin:0 0 1em; }
.kb-body a { color:var(--accent); }
.kb-body code { background:var(--surface2); border:1px solid var(--border); border-radius:4px; padding:1px 5px; font-size:.88em; font-family:'Space Mono',monospace; }
.kb-body pre { background:#1e293b; color:#e2e8f0; padding:14px 18px; border-radius:8px; overflow-x:auto; margin:1em 0; }
.kb-body pre code { background:none; border:none; padding:0; color:inherit; }
.kb-body table { border-collapse:collapse; width:100%; margin:1em 0; }
.kb-body table th { background:var(--surface2); font-weight:600; }
.kb-body table th,.kb-body table td { border:1px solid var(--border); padding:8px 12px; font-size:13px; }
.kb-body table tr:nth-child(even) td { background:var(--bg); }
.kb-body img { max-width:100%; height:auto; border-radius:6px; margin:4px 0; }
.kb-body blockquote { border-left:4px solid var(--accent); margin:1em 0; padding:10px 16px; background:var(--info-bg); border-radius:0 6px 6px 0; color:var(--info); }
.kb-body ul,.kb-body ol { padding-left:24px; margin:0 0 1em; }
.kb-body li { margin-bottom:.3em; }
.kb-body hr { border:none; border-top:1px solid var(--border); margin:2em 0; }
.kb-body .callout-info { background:var(--info-bg); border:1px solid #bfdbfe; border-radius:8px; padding:14px 16px; margin:1em 0; }
.kb-body .callout-warning { background:var(--warning-bg); border:1px solid #fde68a; border-radius:8px; padding:14px 16px; margin:1em 0; }
.kb-body .callout-tip { background:var(--success-bg); border:1px solid #a7f3d0; border-radius:8px; padding:14px 16px; margin:1em 0; }
</style>
<div class="kb-body">{{ article.body | safe }}</div>
{% set existing_atts = article.attachments.all() %}
{% if existing_atts %}
<div style="margin-top:24px;padding-top:16px;border-top:1px solid var(--border);">
<div style="font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin-bottom:10px;">
<i class="bi bi-paperclip me-1"></i>Attachments
</div>
<div style="display:flex;flex-direction:column;gap:6px;">
{% for att in existing_atts %}
<a href="{{ url_for('admin.kb_serve_file', stored_name=att.stored_name) }}"
target="_blank"
style="display:flex;align-items:center;gap:10px;padding:9px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;">
<i class="bi bi-{% if att.mime_type and 'image' in att.mime_type %}image{% elif att.mime_type and 'pdf' in att.mime_type %}file-earmark-pdf{% else %}file-earmark{% endif %}"
style="color:var(--accent);font-size:16px;flex-shrink:0;"></i>
<span style="flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">{{ att.filename }}</span>
<span style="font-size:11px;color:var(--muted);font-family:'Space Mono',monospace;">{{ (att.file_size / 1024)|int }} KB</span>
<i class="bi bi-download" style="color:var(--muted);font-size:13px;"></i>
</a>
{% endfor %}
</div>
</div>
{% endif %}
</div>
</div>
<div class="card mt-3">
@@ -52,4 +97,4 @@
</div>
</div>
</div>
{% endblock %}
{% endblock %}