Compare commits

...

1 Commits

Author SHA1 Message Date
75b50fb9ef Add Form Support 2026-05-02 19:11:09 +02:00
15 changed files with 284 additions and 37 deletions

6
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "app/ritzenbergen-dto"] [submodule "app/dto"]
path = app/ritzenbergen-dto path = app/dto
url = https://git.ritzenbergen.de/R40fendt/ritzenbergen-dto url = https://git.ritzenbergen.de/R40fendt/ritzenbergen-dto.git

View File

@@ -17,7 +17,7 @@ export default {
<section <section
class="footer3 cid-u6k7q0Blvk" class="footer3 cid-u6k7q0Blvk"
once="footers" once="footers"
id="footer-6-u6k7q0Blvk" id="footer"
> >
<div class="container"> <div class="container">
<div class="row"> <div class="row">
@@ -41,7 +41,7 @@ export default {
<br /> <br />
</p> </p>
<RouterLink to="/adminpanel/login">Admin Login</RouterLink> <NuxtLink to="/adminpanel/login">Admin Login</NuxtLink>
</Modal> </Modal>
<button @click="aboutVisible=true" class="text-white btn-ueber openBtn">Über</button> <button @click="aboutVisible=true" class="text-white btn-ueber openBtn">Über</button>

View File

@@ -15,8 +15,8 @@ export default {
return { return {
datalinks: [ datalinks: [
{ link: "/galerie", title: "Galerie" }, { link: "/galerie", title: "Galerie" },
{ link: "/umgebung", title: "Umgebung" }, { link: "/#umgebung", title: "Umgebung" },
{ link: "/footer", title: "Kontakt" }, { link: "/#footer", title: "Kontakt" },
{ link: "/bulitipp", title: "BuLi-Tipp" }, { link: "/bulitipp", title: "BuLi-Tipp" },
], ],
buttontextdata: "Über Ritzenbergen", buttontextdata: "Über Ritzenbergen",
@@ -58,18 +58,18 @@ export default {
<div class="container"> <div class="container">
<div class="navbar-brand"> <div class="navbar-brand">
<span class="navbar-logo"> <span class="navbar-logo">
<span href="/"> <NuxtLink to="/">
<img <img
class="navbar-logo-img" class="navbar-logo-img"
src="../assets/RitzenbergenOrtsschild.png" src="../assets/RitzenbergenOrtsschild.png"
style="height: 60px; padding-left: 5px" style="height: 60px; padding-left: 5px"
/> />
</span> </NuxtLink>
</span> </span>
<span class="navbar-caption-wrap"> <span class="navbar-caption-wrap">
<span class="navbar-caption text-black display-4" href="/" <NuxtLink to="/" class="navbar-caption text-black display-4">
>Amedorf & Ritzenbergen</span Amedorf & Ritzenbergen
> </NuxtLink>
</span> </span>
</div> </div>
<button <button
@@ -95,13 +95,13 @@ export default {
<div class="navbar-collapse opacityScroll" :class="{show: !isNavCollapsed, collapsing: isCollapsing, collapse: !isCollapsing}" id="navbarSupportedContent"> <div class="navbar-collapse opacityScroll" :class="{show: !isNavCollapsed, collapsing: isCollapsing, collapse: !isCollapsing}" id="navbarSupportedContent">
<ul class="navbar-nav nav-dropdown" data-app-modern-menu="true"> <ul class="navbar-nav nav-dropdown" data-app-modern-menu="true">
<li class="nav-item" v-for="link in datalinks"> <li class="nav-item" v-for="link in datalinks">
<span <NuxtLink
class="nav-link link text-black display-4" class="nav-link link text-black display-4"
:href="link.link" :to="link.link"
aria-expanded="false" aria-expanded="false"
> >
{{ link.title }} {{ link.title }}
</span> </NuxtLink>
</li> </li>
</ul> </ul>
<div class="navbar-buttons mbr-section-btn"> <div class="navbar-buttons mbr-section-btn">

View File

@@ -5,8 +5,9 @@ import { ref } from "vue";
import Modal from "../Modal.vue"; import Modal from "../Modal.vue";
import { Formular } from "../../dto/formular.dto"; import { Formular } from "../../dto/formular.dto";
async function init() { const { $gql } = useNuxtApp();
forms.value=await RitzenbergenLib.graphqlClient.request<{formulare: Formular[] }>(`
const forms = await $gql.request<{formulare: Formular[] }>(`
{ {
formulare { formulare {
id id
@@ -33,10 +34,6 @@ async function init() {
` `
).then(data=>data.formulare); ).then(data=>data.formulare);
console.log(forms.value);
}
const forms = ref([] as Formular[]);
const props=defineProps({ const props=defineProps({
formid: { formid: {
@@ -46,10 +43,8 @@ const props=defineProps({
} }
}); });
init();
function submit($event: Event) { function submit($event: Event) {
const url = new URL( /*const url = new URL(
RitzenbergenLib.RitzenbergenLib.api("/formulare/submit.php") RitzenbergenLib.RitzenbergenLib.api("/formulare/submit.php")
); );
const formData = new FormData(<HTMLFormElement>$event.target); const formData = new FormData(<HTMLFormElement>$event.target);
@@ -59,7 +54,7 @@ function submit($event: Event) {
}).then(() => { }).then(() => {
init(); init();
values.value={}; values.value={};
}); });*/
} }
const modalOpened=ref<boolean>(false); const modalOpened=ref<boolean>(false);
@@ -107,8 +102,9 @@ const values=ref({});
data-form-title="Form Name" data-form-title="Form Name"
:data-formid="form.id" :data-formid="form.id"
:data-i="i" :data-i="i"
@submit.prevent="submit"
> >
<!-- @submit.prevent="submit" -->
<div v-for="(field, j) in form.fields" :key="j"> <div v-for="(field, j) in form.fields" :key="j">
<label <label
v-if="field.placeholder == null" v-if="field.placeholder == null"

View File

@@ -2,7 +2,7 @@
import Navbar from "../../components/Navbar.vue"; import Navbar from "../../components/Navbar.vue";
import { ref } from "vue"; import { ref } from "vue";
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import RitzenbergenLib from "../../ritzenbergenlib.ts"; import RitzenbergenLib from "../../ritzenbergenlib";

View File

@@ -6,10 +6,9 @@ import Uebersicht from "../components/bulitipp/Uebersicht.vue";
import Rangliste from "../components/bulitipp/Rangliste.vue"; import Rangliste from "../components/bulitipp/Rangliste.vue";
import Paarungsergebnisse from "../components/bulitipp/Paarungsergebnisse.vue"; import Paarungsergebnisse from "../components/bulitipp/Paarungsergebnisse.vue";
import Tabelle from "../components/bulitipp/Tabelle.vue"; import Tabelle from "../components/bulitipp/Tabelle.vue";
import RitzenbergenLib from "../ritzenbergenlib.ts"; import RitzenbergenLib from "../ritzenbergenlib";
import SpieltagSumme from "../ritzenbergenlib.ts"; import SpieltagSumme from "../ritzenbergenlib";
import Loading from "../components/bulitipp/Loading.vue"; import Loading from "../components/bulitipp/Loading.vue";
import $ from "jquery";
import Tippen from "../components/bulitipp/Tippen.vue"; import Tippen from "../components/bulitipp/Tippen.vue";
import TippenEinloggen from "../components/bulitipp/TippenEinloggen.vue"; import TippenEinloggen from "../components/bulitipp/TippenEinloggen.vue";

View File

@@ -1,9 +1,8 @@
<script lang="js"> <script lang="js">
import Navbar from "../components/Navbar.vue"; import Navbar from "../components/Navbar.vue";
import Embla from "../components/Embla.vue"; import Embla from "../components/Embla.vue";
import RitzenbergenLib from "../ritzenbergenlib.ts"; import RitzenbergenLib from "../ritzenbergenlib";
import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import $ from "jquery";
export default { export default {
components: { components: {

View File

@@ -50,7 +50,7 @@ async function loadImage(path: string) {
<Willkommen/> <Willkommen/>
<Events style="margin-top: 120px;"/> <!-- <Events style="margin-top: 120px;"/> -->
<Forms/> <Forms/>
@@ -89,7 +89,7 @@ async function loadImage(path: string) {
<br> --> <br> -->
<Umgebung ref="umgebung" /> <Umgebung ref="umgebung" id="umgebung" />
<MyFooter ref="footer" /> <MyFooter ref="footer" />
</template> </template>

16
app/plugins/graphql.ts Normal file
View File

@@ -0,0 +1,16 @@
import { GraphQLClient } from "graphql-request";
export default defineNuxtPlugin(() => {
const config=useRuntimeConfig();
const endpoint = process.server
? config.graphqlEndpoint
: config.public.graphqlEndpoint
const client = new GraphQLClient(endpoint);
return {
provide: {
gql: client
}
}
});

View File

@@ -1,11 +1,20 @@
import { GraphQLClient } from "graphql-request";
// https://nuxt.com/docs/api/configuration/nuxt-config // https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({ export default defineNuxtConfig({
compatibilityDate: '2025-07-15', compatibilityDate: '2025-07-15',
devtools: { enabled: true }, devtools: { enabled: true },
modules: [], ssr: false,
modules: ["@formkit/nuxt"],
devServer: { devServer: {
port: 1420 port: 1420
}, },
runtimeConfig: {
graphqlEndpoint: process.env.GRAPHQL_ENDPOINT_INTERNAL || "http://localhost:3000/graphql",
public: {
graphqlEndpoint: process.env.GRAPHQL_ENDPOINT_PUBLIC || "http://backend:3000/graphql"
}
},
css: [ css: [
'~/assets/mobirise/css/additional.scss', '~/assets/mobirise/css/additional.scss',

213
package-lock.json generated
View File

@@ -7,6 +7,8 @@
"name": "nuxt-test", "name": "nuxt-test",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@formkit/nuxt": "^2.0.0",
"@formkit/vue": "^2.0.0",
"@nuxtjs/tailwindcss": "^6.14.0", "@nuxtjs/tailwindcss": "^6.14.0",
"graphql-request": "^7.4.0", "graphql-request": "^7.4.0",
"jarallax": "^3.0.0", "jarallax": "^3.0.0",
@@ -1045,6 +1047,174 @@
"integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@formkit/core": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/core/-/core-2.0.0.tgz",
"integrity": "sha512-y56SDriprtH44wJEPsEcsGXMZkBHzOT7gKJwX1uSmeM1aXnzMn86SEm5RIwNrDW7MVAgCjPPry/YAZxGgt2peA==",
"license": "MIT",
"dependencies": {
"@formkit/utils": "^2.0.0"
}
},
"node_modules/@formkit/dev": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/dev/-/dev-2.0.0.tgz",
"integrity": "sha512-AFoRoFmoZjywfrRcbjyvuCSHeWS1lADn4tTuyx1nW1ZXw40G4T6ZoTW+ooiZKALpT2FpoKEnktbnQh97crozBw==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/utils": "^2.0.0"
}
},
"node_modules/@formkit/i18n": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/i18n/-/i18n-2.0.0.tgz",
"integrity": "sha512-crUPI5vNyubvOJek24FAMQ2T2wVTaFrisnf9GudI3oj9+Gu73sUZZBH7cQ3Mhf3WpE0QimMEhmDknYIaxoVwXA==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/utils": "^2.0.0",
"@formkit/validation": "^2.0.0"
}
},
"node_modules/@formkit/inputs": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/inputs/-/inputs-2.0.0.tgz",
"integrity": "sha512-RK5KRtMg3YHTCOZ0z83yzFTCb9im1n4gAq/YFUs51jzWthzOdpSSTTOpmQBYq2WhHehC4JZuCuDsVc7UasC3yw==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/utils": "^2.0.0"
}
},
"node_modules/@formkit/nuxt": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/nuxt/-/nuxt-2.0.0.tgz",
"integrity": "sha512-pJVVMAjwCV+nqNsMUVcGr7K8WuhFckSubX/zVAj8eHx9s3m4soE111UTl7sKu5onujbhYFvQ6dyQKLmrFA/OLg==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/i18n": "^2.0.0",
"@formkit/vue": "^2.0.0",
"chokidar": "^4.0.0",
"pathe": "^2.0.0",
"unplugin": "^2.0.0",
"unplugin-formkit": "^0.2.13"
},
"peerDependencies": {
"@nuxt/kit": "^3.10.3 || ^4.0.0"
}
},
"node_modules/@formkit/nuxt/node_modules/chokidar": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"license": "MIT",
"dependencies": {
"readdirp": "^4.0.1"
},
"engines": {
"node": ">= 14.16.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@formkit/nuxt/node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"license": "MIT",
"engines": {
"node": ">= 14.18.0"
},
"funding": {
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@formkit/nuxt/node_modules/unplugin": {
"version": "2.3.11",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz",
"integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==",
"license": "MIT",
"dependencies": {
"@jridgewell/remapping": "^2.3.5",
"acorn": "^8.15.0",
"picomatch": "^4.0.3",
"webpack-virtual-modules": "^0.6.2"
},
"engines": {
"node": ">=18.12.0"
}
},
"node_modules/@formkit/observer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/observer/-/observer-2.0.0.tgz",
"integrity": "sha512-1DSKS28XCRSzRFHN+OVBe/6tKup6Tc1VtEvy2sGXfRsNRRo6my62pAB7EhcRcp+zu2keTkWhOcLx/ncz4GBgug==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/utils": "^2.0.0"
}
},
"node_modules/@formkit/rules": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/rules/-/rules-2.0.0.tgz",
"integrity": "sha512-JXxG5SdSDdlI2X9u/hNzK/7kQXR8o9+9HCvivhsBOquc52YcQ1uvfwT08wRRkYhRcO0IkXLIIW4fKCWuDsEVpw==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/utils": "^2.0.0",
"@formkit/validation": "^2.0.0"
}
},
"node_modules/@formkit/themes": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/themes/-/themes-2.0.0.tgz",
"integrity": "sha512-Rtad6OPtOFYF8C8FdR/BrUCkIoDY55ixRMxSQ0r3On/R2ERf3ub7YmyTWUUcoIG/cgITOEFloLz+yKRlyTkFQg==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0"
}
},
"node_modules/@formkit/utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/utils/-/utils-2.0.0.tgz",
"integrity": "sha512-9ql3QKsJvdhHY/lFVaXlML0kXTYhv/v/pKytrT3Oby5zIOuUOV/11+25rU+YkpnZePZ8AIhc0INW1iUGr4nF8w==",
"license": "MIT"
},
"node_modules/@formkit/validation": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/validation/-/validation-2.0.0.tgz",
"integrity": "sha512-hAB2koAF9BPw3b2PnqQ4wyZa9QJ1X/T0r8ixBBuvgJpQFJM1YUBGM1FjuI7YmAEzrjghflriegbZK9IAFqTRcw==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/observer": "^2.0.0",
"@formkit/utils": "^2.0.0"
}
},
"node_modules/@formkit/vue": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formkit/vue/-/vue-2.0.0.tgz",
"integrity": "sha512-mn0K+Gj2a6YZTCsL3rQk8F2AzOJTzWG7GwSgGJU1PmItMlzcKFkCC+kjqS4HpVCeSLRq5nUPlVsoxeSd2/pLNg==",
"license": "MIT",
"dependencies": {
"@formkit/core": "^2.0.0",
"@formkit/dev": "^2.0.0",
"@formkit/i18n": "^2.0.0",
"@formkit/inputs": "^2.0.0",
"@formkit/observer": "^2.0.0",
"@formkit/rules": "^2.0.0",
"@formkit/themes": "^2.0.0",
"@formkit/utils": "^2.0.0",
"@formkit/validation": "^2.0.0"
},
"peerDependencies": {
"vue": "^3.4.0"
}
},
"node_modules/@graphql-typed-document-node/core": { "node_modules/@graphql-typed-document-node/core": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
@@ -11477,6 +11647,49 @@
"node": "^20.19.0 || >=22.12.0" "node": "^20.19.0 || >=22.12.0"
} }
}, },
"node_modules/unplugin-formkit": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/unplugin-formkit/-/unplugin-formkit-0.2.13.tgz",
"integrity": "sha512-qNHz7/0QDO0uVD5MoUZz49CI7q8cHM24RQDwbs5NfRJ6EiyZ1gBmWq9ta3QHR2nD7xacXV+yzmfDbnwlNpkzsg==",
"license": "MIT",
"dependencies": {
"pathe": "^1.1.1",
"unplugin": "^1.4.0"
},
"peerDependenciesMeta": {
"esbuild": {
"optional": true
},
"rollup": {
"optional": true
},
"vite": {
"optional": true
},
"webpack": {
"optional": true
}
}
},
"node_modules/unplugin-formkit/node_modules/pathe": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
"integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
"license": "MIT"
},
"node_modules/unplugin-formkit/node_modules/unplugin": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz",
"integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==",
"license": "MIT",
"dependencies": {
"acorn": "^8.14.0",
"webpack-virtual-modules": "^0.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/unplugin-utils": { "node_modules/unplugin-utils": {
"version": "0.3.1", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz",

View File

@@ -10,6 +10,20 @@
"postinstall": "nuxt prepare" "postinstall": "nuxt prepare"
}, },
"dependencies": { "dependencies": {
"@formkit/nuxt": "^2.0.0",
"@formkit/vue": "^2.0.0",
"@formkit/themes": "^2.0.0",
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-opener": "^2",
"bcryptjs": "^3.0.3",
"crypto-js": "^4.2.0",
"embla-carousel-vue": "^8.6.0",
"moment": "^2.30.1",
"process": "^0.11.10",
"sloc": "^0.3.2",
"striptags": "^3.2.0",
"vscode-langservers-extracted": "^4.10.0",
"@nuxtjs/tailwindcss": "^6.14.0", "@nuxtjs/tailwindcss": "^6.14.0",
"graphql-request": "^7.4.0", "graphql-request": "^7.4.0",
"jarallax": "^3.0.0", "jarallax": "^3.0.0",
@@ -21,6 +35,7 @@
}, },
"devDependencies": { "devDependencies": {
"@tauri-apps/cli": "^2.10.1", "@tauri-apps/cli": "^2.10.1",
"sass-embedded": "^1.99.0" "sass-embedded": "^1.99.0",
"@types/markdown-it": "^14.1.2"
} }
} }