coyotte508's picture
coyotte508 HF staff
✨ Admin page for pages
3d330e9
raw
history blame
1.58 kB
<script lang="ts">
import type { Page } from '$lib/types/Page';
import type { PageData } from './$types';
export let data: PageData;
function updatePicture(page: Page, key: string, value: string) {
fetch('/admin/pages/' + encodeURIComponent(page._id), {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ type: 'picture', key, value })
});
}
function updateText(page: Page, key: string, value: string) {
fetch('/admin/pages/' + encodeURIComponent(page._id), {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ type: 'text', key, value })
});
}
</script>
{#each data.pages as page}
<section class="mb-6">
<h1>{page.name} ({page._id})</h1>
<h2 class="mt-4">Textes</h2>
{#each Object.keys(page.text) as key}
<label class="block w-full mt-4">
<h3>{key}</h3>
<textarea
name="{page._id}_text_{key}"
cols="30"
rows="10"
class="block w-full"
value={page.text[key]}
on:blur={(event) => updateText(page, key, event.currentTarget.value)}
/>
</label>
{/each}
<h2 class="mt-4">Images</h2>
{#each Object.keys(page.pictures) as key}
<label class="block w-full mt-4">
<h3>{key}</h3>
<select
name="{page._id}_picture_{key}"
value={page.pictures[key]}
on:change={(event) => updatePicture(page, key, event.currentTarget.value)}
>
{#each data.photos as photo}
<option value={photo._id}>{photo.name}</option>
{/each}
</select>
</label>
{/each}
</section>
{/each}