API-Route to new global variables

This commit is contained in:
2026-02-05 09:18:24 +01:00
parent e9ae850002
commit 6fc65e195c
8 changed files with 108 additions and 65 deletions

View File

@@ -1,15 +1,44 @@
<script setup>
import {reactive, onMounted} from 'vue';
import Icon from "../../../app/Views/Components/Icon.vue";
import GlobalWidgets from "../../../app/Views/Partials/GlobalWidgets/GlobalWidgets.vue";
import {toast} from "vue3-toastify";
import {useAjax} from "../components/ajaxHandler.js";
const { request } = useAjax()
const globalProps = reactive({
navbar: {
personal: [],
common: [],
costunits: [],
events: [],
},
tenant: '',
user: null,
currentPath: '/',
errors: {},
availableLocalGroups: []
});
onMounted(async () => {
const response = await fetch('/api/v1/retreive-global-data');
const data = await response.json();
Object.assign(globalProps, data); // reactive wird automatisch aktualisiert
});
const currentPath = window.location.pathname;
const props = defineProps({
title: { type: String, default: 'App' },
user: { type: Object, },
flash: { type: Object, default: () => ({}) },
navbar: { type: Object },
tenant: String,
currentPath: String,
})
flash: { type: Object, default: () => ({}) }
});
</script>
<template>
@@ -25,36 +54,36 @@ const props = defineProps({
</div>
<nav class="nav">
<ul class="nav-links" v-if="props.navbar.personal.length > 0">
<li v-for="navlink in props.navbar.personal">
<ul class="nav-links" v-if="globalProps.navbar.personal.length > 0">
<li v-for="navlink in globalProps.navbar.personal">
<a
:class="{ navlink_active: navlink.url.endsWith(props.currentPath) }"
:class="{ navlink_active: navlink.url.endsWith(currentPath) }"
:href="navlink.url"
>{{navlink.display}}</a>
</li>
</ul>
<ul class="nav-links" v-if="props.navbar.common.length > 0">
<li v-for="navlink in props.navbar.common">
<ul class="nav-links" v-if="globalProps.navbar.common.length > 0">
<li v-for="navlink in globalProps.navbar.common">
<a
:class="{ navlink_active: navlink.url.endsWith(props.currentPath) }"
:class="{ navlink_active: navlink.url.endsWith(currentPath) }"
:href="navlink.url"
>{{navlink.display}}</a>
</li>
</ul>
<ul class="nav-links" v-if="props.navbar.costunits.length > 0">
<li v-for="navlink in props.navbar.costunits">
<ul class="nav-links" v-if="globalProps.navbar.costunits.length > 0">
<li v-for="navlink in globalProps.navbar.costunits">
<a
:class="{ navlink_active: navlink.url.endsWith(props.currentPath) }"
:class="{ navlink_active: navlink.url.endsWith(currentPath) }"
:href="navlink.url"
>{{navlink.display}}</a>
</li>
</ul>
<ul class="nav-links" v-if="props.navbar.events.length > 0">
<li v-for="navlink in props.navbar.events">
<ul class="nav-links" v-if="globalProps.navbar.events.length > 0">
<li v-for="navlink in globalProps.navbar.events">
<a
:class="{ navlink_active: navlink.url.endsWith(props.currentPath) }"
:class="{ navlink_active: navlink.url.endsWith(currentPath) }"
:href="navlink.url"
>{{navlink.display}}</a>
</li>
@@ -67,10 +96,9 @@ const props = defineProps({
<div class="header">
<div class="left-side">
<h1>{{ props.title }}</h1>
<label id="show_username" v-if="props.user !== null">Willkommen, {{ props.user.nicename }}</label>
Test
<label id="show_username" v-if="globalProps.user !== null">Willkommen, {{ globalProps.user.nicename }}</label>
</div>
<div class="user-info" v-if="props.user !== null">
<div class="user-info" v-if="globalProps.user !== null">
<a href="/messages" class="header-link-anonymous" title="Meine Nachrichten">
<Icon name="envelope" />
</a>
@@ -91,7 +119,7 @@ const props = defineProps({
</div>
<global-widgets :user="props.user" :tenant="props.tenant" v-if="props.user !== null" />
<global-widgets :user="globalProps.user" :tenant="globalProps.tenant" v-if="globalProps.user !== null" />
<div class="content">
<slot />
</div>