fixed back button and coloring

This commit is contained in:
2026-03-26 01:38:00 +01:00
parent 53db329cc5
commit 37c8e231c3
4 changed files with 53 additions and 16 deletions

View File

@@ -3,11 +3,7 @@ import AdminLayout from '../../layouts/AdminLayout.astro';
---
<AdminLayout title="Write Post">
<!-- CodeMirror Assets -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/codemirror.min.css" slot="header-subtitle">
<script is:inline src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/codemirror.min.js" slot="header-subtitle"></script>
<script is:inline src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/mode/markdown/markdown.min.js" slot="header-subtitle"></script>
<script is:inline src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/keymap/vim.min.js" slot="header-subtitle"></script>
<p slot="header-subtitle" id="post-status" class="text-subtext1 mt-2 text-sm md:text-base">Create a new masterpiece.</p>
<div slot="header-actions" class="flex gap-4 w-full">
<button id="delete-btn" class="hidden text-red hover:bg-red/10 px-6 py-3 rounded-lg transition-colors font-bold border border-red/20 w-full md:w-auto">
@@ -19,6 +15,15 @@ import AdminLayout from '../../layouts/AdminLayout.astro';
>
Save Post
</button>
<a
id="view-post-btn"
href="#"
target="_blank"
class="hidden bg-blue text-crust font-bold py-3 px-8 rounded-lg hover:bg-sky transition-all transform hover:scale-105 w-full md:w-auto whitespace-nowrap items-center justify-center gap-2"
>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" x2="14" y2="10" x2="21" y2="3"/></svg>
View Post
</a>
</div>
<div id="alert" class="hidden p-4 rounded-lg mb-6"></div>
@@ -123,6 +128,7 @@ import AdminLayout from '../../layouts/AdminLayout.astro';
const fileInput = document.getElementById('file-upload') as HTMLInputElement;
const saveBtn = document.getElementById('save-btn');
const delBtn = document.getElementById('delete-btn');
const viewPostBtn = document.getElementById('view-post-btn') as HTMLAnchorElement;
const browseBtn = document.getElementById('browse-btn');
const assetsModal = document.getElementById('assets-modal');
const closeModal = document.getElementById('close-modal');
@@ -150,8 +156,8 @@ import AdminLayout from '../../layouts/AdminLayout.astro';
if (res.ok) {
allAssets = await res.json();
}
} catch (e) {
console.error("Failed to fetch assets", e);
} catch (err) {
console.error("Failed to fetch assets", err);
}
}
@@ -272,8 +278,8 @@ import AdminLayout from '../../layouts/AdminLayout.astro';
autocomplete?.classList.add('hidden');
}
window.addEventListener('click', (e) => {
if (!autocomplete?.contains(e.target as Node)) {
window.addEventListener('click', (ev) => {
if (!autocomplete?.contains(ev.target as Node)) {
hideAutocomplete();
}
});
@@ -325,8 +331,16 @@ import AdminLayout from '../../layouts/AdminLayout.astro';
},
body: JSON.stringify(payload)
});
if (res.ok) showAlert('Post saved!', 'success');
else showAlert('Error saving post.', 'error');
if (res.ok) {
showAlert('Post saved!', 'success');
if (viewPostBtn) {
viewPostBtn.href = `/posts/${payload.slug}`;
viewPostBtn.classList.remove('hidden');
viewPostBtn.classList.add('inline-flex');
}
} else {
showAlert('Error saving post.', 'error');
}
} catch (err) {
showAlert('Failed to connect to server.', 'error');
}
@@ -353,6 +367,13 @@ import AdminLayout from '../../layouts/AdminLayout.astro';
slugInput.value = editSlug;
slugInput.disabled = true; // Protect slug on edit
delBtn?.classList.remove('hidden');
if (viewPostBtn) {
viewPostBtn.href = `/posts/${editSlug}`;
viewPostBtn.classList.remove('hidden');
viewPostBtn.classList.add('inline-flex');
}
fetch(`/api/posts/${encodeURIComponent(editSlug)}`)
.then(res => res.json())
.then(data => {