Last minute fixes

This commit is contained in:
2025-10-01 00:31:31 +02:00
parent 66f1f5f336
commit 146e48d42d
10 changed files with 34 additions and 111 deletions
+6 -2
View File
@@ -9,8 +9,11 @@
"login_instead": "Stattdessen anmelden",
"logout": "Abmelden",
"name": "Name",
"name_help": "Nutze entweder deinen echten Namen oder wähle einen zufälligen aus!",
"old_invalid": "Altes Passwort inkorrekt!",
"password": "Passwort",
"password_help": "Dein Passwort wird selbstverständlich sicher gehashed.",
"password_length": "Mindestens 8 Zeichen lang",
"register": "Registrieren",
"register_instead": "Stattdessen registrieren",
"reset": "Zurücksetzen",
@@ -36,7 +39,8 @@
"INTEGER": "Ganzzahl",
"NUMBER": "Zahl",
"TEXT": "Freitext",
"WORD": "Ein Wort"
"WORD": "Ein Wort",
"CHAR": "Ein Zeichen"
}
},
"error": {
@@ -45,7 +49,7 @@
"default": "Unbekannter Fehler",
"team_not_found": "Team nicht gefunden oder Passwort inkorrekt!"
},
"hello": "Hallo",
"hello": "Willkommen zu PicHunt!",
"layouts": {
"default_tile": "PicHunt",
"refresh": "Aktualisieren",
+6 -2
View File
@@ -9,8 +9,11 @@
"login_instead": "Login instead",
"logout": "Logout",
"name": "Name",
"name_help": "Use either your real name or choose a random one!",
"old_invalid": "Old password incorrect!",
"password": "Password",
"password_help": "Your password will of course be securely hashed.",
"password_length": "At least 8 characters long",
"register": "Register",
"register_instead": "Register instead",
"reset": "Reset",
@@ -36,7 +39,8 @@
"INTEGER": "Whole number",
"NUMBER": "Number",
"TEXT": "Free text",
"WORD": "One Word"
"WORD": "One word",
"CHAR": "One character"
}
},
"error": {
@@ -45,7 +49,7 @@
"default": "Unknown error",
"team_not_found": "Team not found or password incorrect!"
},
"hello": "Hello",
"hello": "Welcome to PicHunt!",
"layouts": {
"default_tile": "PicHunt",
"refresh": "Refresh",
-10
View File
@@ -35,16 +35,6 @@ const slugs = computed(() => checkSlug(route.params));
<template #center>
{{ titleStore.title || t('layouts.default_tile') }}</template
>
<template #right>
<VaButton
round
icon="help"
:to="$localePath('/help')"
title="Help"
:preset="$localePath('/help') === route.path ? 'secondary' : ''"
:border-color="$localePath('/help') === route.path ? 'primary' : ''"
/>
</template>
</VaNavbar>
</template>
-90
View File
@@ -1,90 +0,0 @@
<script setup lang="ts">
import { useTitleStore } from '~/stores/title';
const { t } = useI18n();
const titleStore = useTitleStore();
useHead({
title: t('layouts.title', {
title: t('page.help.title')
})
});
titleStore.title = t('page.help.head');
// TODO: add help texts
</script>
<template>
<div>
<h1 class="text-3xl">
{{ t('page.help.title') }}
</h1>
<p>
{{ t('page.help.subtitle') }}
</p>
<div class="mt-4 grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3">
<VaCard>
<VaCardTitle>PicHunt</VaCardTitle>
<VaCardContent class="flex flex-col gap-2">
<p>tolle seite für fotosafaris</p>
</VaCardContent>
</VaCard>
<VaCard>
<VaCardTitle>Hunts</VaCardTitle>
<VaCardContent class="flex flex-col gap-2">
<p>haben meistens zeitrahmen</p>
<p>abgaben danach können evtl nicht bewertet werden</p>
</VaCardContent>
</VaCard>
<VaCard>
<VaCardTitle>Teams</VaCardTitle>
<VaCardContent class="flex flex-col gap-2">
<p>anmeldung pro user erforderlich!</p>
<p>dann einladecode an user teilen und beitreten</p>
<p>im team gemeinsam antworten abgeben</p>
<p>bei problemen admins ansprechen</p>
</VaCardContent>
</VaCard>
<VaCard>
<VaCardTitle>Quests</VaCardTitle>
<VaCardContent class="flex flex-col gap-2">
<p>aufgabe, die mit foto zu lösen ist</p>
<p>manchmal ist auch antwortstext erforderlich</p>
<p>
manchmal gibts extra punkte, dann steht erklärt nach welchen
kriterien die vergeben werden
</p>
</VaCardContent>
</VaCard>
<VaCard stripe stripe-color="primary">
<VaCardTitle>Answers</VaCardTitle>
<VaCardContent class="flex flex-col gap-2">
<p>zusammen an antwort feilen "zwischenspeichern"</p>
<p>wird erst bewertet wenn finalisiert, dann nicht mehr änderbar</p>
</VaCardContent>
</VaCard>
<VaCard color="info">
<VaCardTitle>Reviews</VaCardTitle>
<VaCardContent class="flex flex-col gap-2">
<p>
admin team bewertet über den zeitraum alle finalisierten antworten
</p>
<p>vergibt punkte und prüft auf richtige antworten</p>
</VaCardContent>
</VaCard>
<VaCard>
<VaCardTitle>Showcase</VaCardTitle>
<VaCardContent class="flex flex-col gap-2">
<p>
nach Hunt gibt es showcase der besten antworten und siegerehrung
</p>
</VaCardContent>
</VaCard>
</div>
</div>
</template>
+1 -1
View File
@@ -85,7 +85,7 @@ ${document.location.href}`
<VaButton
icon="replay"
:disabled="pending"
title="Refresh"
:title="t('page.common.refresh')"
@click="refresh"
>{{ t('page.common.refresh') }}</VaButton
>
+8 -4
View File
@@ -11,7 +11,7 @@ watch(loggedIn, () => refresh());
<template>
<div>
<h1 class="text-primary text-3xl">{{ t('hello') }}</h1>
<h1 class="text-primary mb-3 text-3xl">{{ t('hello') }}</h1>
<VaButton icon="refresh" :disabled="pending" @click="refresh">{{
t('layouts.refresh')
}}</VaButton>
@@ -68,9 +68,13 @@ watch(loggedIn, () => refresh());
</div>
</div>
<div v-else>
<VaButton color="info" icon="login" :to="$localePath(`/login`)">{{
t('page.home.login_first')
}}</VaButton>
<VaButton
class="mt-6"
color="info"
icon="login"
:to="$localePath(`/login`)"
>{{ t('page.home.login_first') }}</VaButton
>
</div>
<div class="mt-8">
<VaDivider />
+3 -1
View File
@@ -29,7 +29,9 @@ async function submit() {
method: 'POST',
body: form
});
form.password = '';
await fetch();
form.email = '';
await router.push(
localePath(
(route.query.to
@@ -124,7 +126,7 @@ async function submit() {
class="w-full text-center"
>{{ t(error) }}</VaAlert
>
<VaButtonGroup>
<VaButtonGroup grow>
<VaButton color="success" type="submit" :disabled="!isValid">{{
t('auth.login')
}}</VaButton>
+3 -1
View File
@@ -80,6 +80,7 @@ async function submit() {
validation.max(t('auth.name'), 64),
validation.min(t('auth.name'), 1)
]"
:messages="t('auth.name_help')"
required
>
<template #prependInner>
@@ -118,6 +119,7 @@ async function submit() {
validation.required(t('auth.password')),
validation.min(t('auth.password'), 8)
]"
:messages="[t('auth.password_help'), t('auth.password_length')]"
autocomplete="current-password"
:minlength="8"
required
@@ -156,7 +158,7 @@ async function submit() {
>{{ t(error) }}</VaAlert
>
<VaButtonGroup>
<VaButtonGroup grow>
<VaButton color="success" type="submit" :disabled="!isValid">{{
t('auth.register')
}}</VaButton>
@@ -0,0 +1,6 @@
-- AlterEnum
ALTER TYPE "public"."TextType" ADD VALUE 'CHAR';
-- AlterTable
ALTER TABLE "public"."HuntQuest" ALTER COLUMN "description_de" SET DEFAULT '',
ALTER COLUMN "description_en" SET DEFAULT '';
+1
View File
@@ -153,6 +153,7 @@ model TeamMember {
enum TextType {
TEXT
WORD
CHAR
NUMBER
INTEGER
}