API-Route to new global variables
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user