release v2.0.0 #4

Merged
crimsen merged 481 commits from develop into master 2024-01-18 15:15:08 +00:00
11 changed files with 196 additions and 74 deletions
Showing only changes of commit 61a679dfb1 - Show all commits

View File

@ -161,6 +161,8 @@ export default boot(({ Vue, router, store }) => {
console.log(routes); console.log(routes);
router.addRoutes(routes); router.addRoutes(routes);
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
Vue.prototype.$flaschengeist_plugins = pluginMainLinks; Vue.prototype.$flaschengeistPluginsMainLinks = pluginMainLinks;
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
Vue.prototype.$flaschengeistPlugins = plugins;
console.log(pluginMainLinks); console.log(pluginMainLinks);
}); });

View File

@ -0,0 +1,52 @@
<template>
<q-card class="col-4">
<q-card-section class="row fit justify-center items-center content-center">
<q-avatar size="150px">
<q-img :src="pic" placeholder-src="logo-black.svg" />
</q-avatar>
</q-card-section>
<q-card-section>
<div class="text-h6">{{ firstname }} {{ lastname }}</div>
<div class="text-subtitle2">{{ club }}</div>
<q-separator />
<div class="text-subtitle2">Aufgabe bei Flaschengeist:</div>
<div>
{{ job }}
</div>
</q-card-section>
<q-card-section class="q-pt-none">
{{ description }}
</q-card-section>
</q-card>
</template>
<script lang="ts">
import { defineComponent } from '@vue/composition-api';
export default defineComponent({
name: 'Developer',
props: {
pic: {
default: 'logo-dark.svg'
},
firstname: {
//required: true,
default: 'firstname'
},
lastname: {
//required: true,
default: 'lastname'
},
job: {
default: 'student'
},
club: {
default: 'Studentenclub Wu5 e.V.'
},
description: {
default:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. '
}
}
});
</script>

View File

@ -47,14 +47,7 @@
<!-- Plugins --> <!-- Plugins -->
<q-list> <q-list>
<essential-link <essential-link
v-for="(link, index) in links" v-for="(link, index) in $flaschengeistPluginsMainLinks"
:key="'main' + index"
:title="link.title"
:link="link.link"
:icon="link.icon"
/>
<essential-link
v-for="(link, index) in $flaschengeist_plugins"
:key="'plugin' + index" :key="'plugin' + index"
:title="link.title" :title="link.title"
:link="link.link" :link="link.link"
@ -88,6 +81,16 @@
@click="leftDrawerMini = true" @click="leftDrawerMini = true"
/> />
</div> </div>
<q-separator />
<essential-link
v-for="(link, index) in links"
:key="'main' + index"
:title="link.title"
:link="link.link"
:icon="link.icon"
/>
</q-drawer> </q-drawer>
<q-page-container> <q-page-container>
@ -105,27 +108,15 @@ import { defineComponent, ref, computed } from '@vue/composition-api';
const links = [ const links = [
{ {
name: 'about', name: 'about',
title: 'about', title: 'Über Flaschengeist',
link: 'about', link: 'about',
icon: 'mdi-information', icon: 'mdi-information'
children: [
{
title: 'Neues About',
link: 'newAbout',
icon: 'mdi-information-outline'
},
{
title: 'Altes About',
link: 'oldAbout',
icon: 'mdi-information-variant'
}
]
} }
]; ];
declare module 'vue/types/vue' { declare module 'vue/types/vue' {
interface Vue { interface Vue {
$flaschengeist_plugins: PluginMainLink[]; $flaschengeistPluginsMainLinks: PluginMainLink[];
} }
} }
@ -151,7 +142,7 @@ export default defineComponent({
const pluginChildLinks = computed(() => { const pluginChildLinks = computed(() => {
const test: const test:
| PluginMainLink | PluginMainLink
| undefined = ctx.root.$flaschengeist_plugins.find( | undefined = ctx.root.$flaschengeistPluginsMainLinks.find(
(plugin: PluginMainLink) => { (plugin: PluginMainLink) => {
if (ctx.root.$route.matched.length > 1) { if (ctx.root.$route.matched.length > 1) {
return plugin.name == ctx.root.$route.matched[1].name; return plugin.name == ctx.root.$route.matched[1].name;

View File

@ -13,6 +13,22 @@
Flaschengeist Flaschengeist
</span> </span>
</q-toolbar-title> </q-toolbar-title>
<q-btn
flat
round
dense
icon="mdi-information"
v-if="$route.name != 'about_out'"
@click="$router.push({ name: 'about_out' })"
/>
<q-btn
flat
round
dense
icon="mdi-login-variant"
v-if="$route.name != 'login'"
@click="$router.push({ name: 'login' })"
/>
</q-toolbar> </q-toolbar>
</q-header> </q-header>

View File

@ -1,17 +1,113 @@
<template> <template>
<q-page padding class="fit row justify-center content-center items-center"> <q-page
<q-card class="col-4" height="" v-if="$route.name == 'about'"> padding
<q-card-section> class="fit row justify-center content-center items-center"
About v-if="$route.name == 'about' || $route.name == 'about_out'"
>
<q-card flat class="col-6">
<q-card-section
class="row fit justify-center items-center content-center"
>
<q-img
src="logo-dark.svg"
class="q-mt-md"
style="min-width: 200px; max-width: 400px"
/>
</q-card-section>
<q-card-section class="text-h4 text-center">
Flaschengeist
<div class="text-caption">
Version 2.0.0
</div>
</q-card-section>
<q-card-section class="text-center">
Flaschengeist ist ein dynamischen Managementsystem für Studentenclubs.
Es ermöglicht unter anderem die Mitgliederverwaltung, Dienstverwaltung,
Arbeitsgruppenverwaltung und vieles meher. Es kann fast alles ermöglich
werden, wenn ein Plugin dafür geschrieben wird. Jeder Club hat die
Möglichkeit sein eigenes Flaschengeist zu hosten. Ziel ist später
Clubübergreifend dezentralisiert miteinander zu arbeiten.
</q-card-section> </q-card-section>
</q-card> </q-card>
<router-view /> <q-separator />
<q-card flat class="col-12">
<q-card-section class="text-h6" v-if="$route.name == 'about'">
Geladene Plugins:
</q-card-section>
<q-card-section v-if="$route.name == 'about'">
<q-chip
v-for="(plugin, index) in $flaschengeistPlugins"
:key="'plugin' + index"
>
{{ plugin.name }}
<q-separator vertical color="black" class="q-ma-xs" />
Version
</q-chip>
</q-card-section>
<q-separator />
<q-card-section class="text-h6">
Entwickler:
</q-card-section>
</q-card>
<div
class="fit row inline wrap justify-around items-start content-start q-gutter-sm"
>
<developer
v-for="developer in developers"
:key="i"
class="col-xs-12 col-md-5 col-lg-3"
:firstname="developer.firstname"
:lastname="developer.lastname"
:job="developer.job"
:club="developer.club"
:description="developer.description"
:pic="developer.pic"
/>
</div>
</q-page> </q-page>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent } from '@vue/composition-api'; import { defineComponent } from '@vue/composition-api';
import Developer from 'components/about/Developer.vue';
const developers = [
{
firstname: 'Tim',
lastname: 'Gröger',
club: 'Studentenclub Wu5 e.V.',
job: 'Gründer von Flaschengeist; Maintainer',
pic:
'https://scontent-frt3-2.xx.fbcdn.net/v/t1.0-9/31768724_1663023210401956_3834323197281435648_n.jpg?_nc_cat=109&_nc_sid=09cbfe&_nc_ohc=jWvUfn_xJ9YAX_oJ3CE&_nc_ht=scontent-frt3-2.xx&oh=15249378051f1e27f8b15122effb5c4a&oe=5FAC6A17',
description:
'Eigentlich wöllte ich jetzt hier echt viel hinschreiben. Aber ich habe keinen Plan was. Früher war ich einfach nur Tim G. und habe für andere den Kaffe geholt. Unter anderen für Ferdinand Thiessen.'
},
{
firstname: 'Ferdinand',
lastname: 'Thiessen',
club: 'Club Aquarium e.V.',
pic:
'https://scontent-frx5-1.xx.fbcdn.net/v/t1.0-9/17022243_1418942461493397_9069541318944803902_n.jpg?_nc_cat=110&_nc_sid=174925&_nc_ohc=HjkSm8vcRW8AX8bTnJ8&_nc_ht=scontent-frx5-1.xx&oh=f09bd36525f3c6e55feaafb3b05b43d2&oe=5FAD432A',
job: 'Backend-Developer; Co-Maintainer',
description:
'Geiler Typ. Einfach mal so alles Aufgeräumt. Aufeinmal könnte man aus dem Code eine Dokumentation zaubern!'
},
{
firstname: 'Dominik',
lastname: 'Renz',
club: 'Studentenclub Wu5 e.V.',
job: 'Eigentlich Frontend-Developer',
description: 'Er findet sich langsam rein.',
pic:
'https://scontent-frt3-1.xx.fbcdn.net/v/t31.0-8/10363433_647611335326483_3447118968375865826_o.jpg?_nc_cat=104&_nc_sid=09cbfe&_nc_ohc=nWMgo-6Ih74AX_NiGUz&_nc_ht=scontent-frt3-1.xx&oh=f16d2edfe86f68d54900099087edb9c9&oe=5FAACFD4'
}
];
export default defineComponent({ export default defineComponent({
// name: 'PageName' // name: 'PageName'
components: { Developer },
setup() {
return { developers };
}
}); });
</script> </script>

View File

@ -1,14 +0,0 @@
<template>
<q-card class="col-4" height="">
<q-card-section>
Neues About
</q-card-section>
</q-card>
</template>
<script lang="ts">
import { defineComponent } from '@vue/composition-api';
export default defineComponent({
// name: 'PageName'
});
</script>

View File

@ -1,14 +0,0 @@
<template>
<q-card class="col-4" height="">
<q-card-section>
Altes About
</q-card-section>
</q-card>
</template>
<script lang="ts">
import { defineComponent } from '@vue/composition-api';
export default defineComponent({
// name: 'PageName'
});
</script>

View File

@ -15,7 +15,7 @@ import { mainLink } from '../plugin';
export default defineComponent({ export default defineComponent({
// name: 'PageName' // name: 'PageName'
setup(_, ctx) { setup(_, ctx) {
const a = ctx.root.$flaschengeist_plugins; const a = ctx.root.$flaschengeistPluginsMainLinks;
return { a, mainLink }; return { a, mainLink };
} }
}); });

View File

@ -15,7 +15,7 @@ import { mainLink } from '../plugin';
export default defineComponent({ export default defineComponent({
// name: 'PageName' // name: 'PageName'
setup(_, ctx) { setup(_, ctx) {
const a = ctx.root.$flaschengeist_plugins; const a = ctx.root.$flaschengeistPluginsMainLinks;
return { a, mainLink }; return { a, mainLink };
} }
}); });

View File

@ -21,7 +21,7 @@ import { mainLink } from '../plugin';
export default defineComponent({ export default defineComponent({
// name: 'PageName' // name: 'PageName'
setup(_, ctx) { setup(_, ctx) {
const a = ctx.root.$flaschengeist_plugins; const a = ctx.root.$flaschengeistPluginsMainLinks;
return { a, mainLink }; return { a, mainLink };
} }
}); });

View File

@ -10,6 +10,11 @@ const routes: RouteConfig[] = [
name: 'login', name: 'login',
path: 'login', path: 'login',
component: () => import('pages/Login.vue') component: () => import('pages/Login.vue')
},
{
name: 'about_out',
path: 'about',
component: () => import('pages/about/About.vue')
} }
] ]
}, },
@ -21,19 +26,7 @@ const routes: RouteConfig[] = [
{ {
name: 'about', name: 'about',
path: 'about', path: 'about',
component: () => import('pages/about/About.vue'), component: () => import('pages/about/About.vue')
children: [
{
name: 'newAbout',
path: 'newAbout',
component: () => import('pages/about/NewAbout.vue')
},
{
name: 'oldAbout',
path: 'oldAbout',
component: () => import('pages/about/OldAbout.vue')
}
]
} }
] ]
}, },