schulart und Noten in fronend. Erste versuch Zeitraum in backend
This commit is contained in:
8
src/routes/admin/zeitraum/+page.server.ts
Normal file
8
src/routes/admin/zeitraum/+page.server.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import type { PageServerLoad } from './$types';
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
|
||||
export const load: PageServerLoad = async ({ cookies }) => {
|
||||
if (cookies.get('admin_session') !== 'true') {
|
||||
throw redirect(303, '/admin'); // zurück zur Login-Seite
|
||||
}
|
||||
};
|
||||
50
src/routes/admin/zeitraum/+page.svelte
Normal file
50
src/routes/admin/zeitraum/+page.svelte
Normal file
@@ -0,0 +1,50 @@
|
||||
<script lang="ts">
|
||||
import { onMount } from 'svelte'
|
||||
let bezeichnung = ''
|
||||
let startDatum = ''
|
||||
let endDatum = ''
|
||||
let zeitraeume = []
|
||||
|
||||
onMount(async () => {
|
||||
zeitraeume = await fetchZeitraeume()
|
||||
})
|
||||
|
||||
async function handleSubmit() {
|
||||
await createPraktikumszeitraum({ bezeichnung, startDatum, endDatum })
|
||||
zeitraeume = await fetchZeitraeume()
|
||||
|
||||
// Felder zurücksetzen
|
||||
bezeichnung = ''
|
||||
startDatum = ''
|
||||
endDatum = ''
|
||||
}
|
||||
</script>
|
||||
|
||||
<h1 class="text-2xl font-bold mb-4">🗓 Praktikumszeiträume verwalten</h1>
|
||||
|
||||
<form on:submit|preventDefault={handleSubmit} class="grid gap-4 max-w-xl bg-white p-4 rounded shadow">
|
||||
<input type="text" bind:value={bezeichnung} placeholder="Bezeichnung (z. B. Frühjahr 2025)" required class="input" />
|
||||
<div class="flex gap-2">
|
||||
<input type="date" bind:value={startDatum} required class="input flex-1" />
|
||||
<input type="date" bind:value={endDatum} required class="input flex-1" />
|
||||
</div>
|
||||
<button type="submit" class="bg-green-600 text-white py-2 rounded hover:bg-green-700">✅ Zeitraum speichern</button>
|
||||
</form>
|
||||
|
||||
<h2 class="text-xl font-semibold mt-8 mb-2">📋 Bereits erfasste Zeiträume</h2>
|
||||
<div class="grid gap-4">
|
||||
{#each zeitraeume as z}
|
||||
<div class="p-4 bg-gray-100 rounded shadow">
|
||||
<h3 class="font-bold">{z.bezeichnung}</h3>
|
||||
<p class="text-sm text-gray-700">
|
||||
{new Date(z.startDatum).toLocaleDateString()} – {new Date(z.endDatum).toLocaleDateString()}
|
||||
</p>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.input {
|
||||
@apply border p-2 rounded w-full;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user