mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-07 04:09:15 +02:00
Merge branch '61-adding-r-in-modulbeschreibung-to-include-room' into 'development'
Resolve "adding %r in "Modulbeschreibung" to include room" See merge request htwk-software/htwkalender!91
This commit is contained in:
3916
frontend/package-lock.json
generated
3916
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -13,45 +13,45 @@
|
|||||||
"test": "vitest"
|
"test": "vitest"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fullcalendar/core": "^6.1.11",
|
"@fullcalendar/core": "^6.1.15",
|
||||||
"@fullcalendar/daygrid": "^6.1.11",
|
"@fullcalendar/daygrid": "^6.1.15",
|
||||||
"@fullcalendar/interaction": "^6.1.11",
|
"@fullcalendar/interaction": "^6.1.15",
|
||||||
"@fullcalendar/timegrid": "^6.1.11",
|
"@fullcalendar/timegrid": "^6.1.15",
|
||||||
"@fullcalendar/vue3": "^6.1.11",
|
"@fullcalendar/vue3": "^6.1.15",
|
||||||
"@tanstack/vue-query": "^5.28.9",
|
"@tanstack/vue-query": "^5.62.2",
|
||||||
"@unhead/ssr": "^1.9.14",
|
"@unhead/ssr": "^1.11.13",
|
||||||
"@vueuse/core": "^10.9.0",
|
"@vueuse/core": "^10.11.1",
|
||||||
"country-flag-emoji-polyfill": "^0.1.8",
|
"country-flag-emoji-polyfill": "^0.1.8",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.2.8",
|
||||||
"primeflex": "^3.3.1",
|
"primeflex": "^3.3.1",
|
||||||
"primeicons": "^6.0.1",
|
"primeicons": "^6.0.1",
|
||||||
"primevue": "^3.50.0",
|
"primevue": "^3.53.0",
|
||||||
"source-sans": "^3.46.0",
|
"source-sans": "^3.46.0",
|
||||||
"vue": "^3.4.11",
|
"vue": "^3.4.11",
|
||||||
"vue-i18n": "^9.10.2"
|
"vue-i18n": "^10.0.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
||||||
"@rollup/plugin-terser": "^0.4.4",
|
"@rollup/plugin-terser": "^0.4.4",
|
||||||
"@tanstack/vue-query-devtools": "^5.28.10",
|
"@tanstack/vue-query-devtools": "^5.62.2",
|
||||||
"@types/node": "^20.12.2",
|
"@types/node": "^20.17.9",
|
||||||
"@unhead/vue": "^1.9.15",
|
"@unhead/vue": "^1.11.13",
|
||||||
"@vitejs/plugin-vue": "^5.0.4",
|
"@vitejs/plugin-vue": "^5.2.1",
|
||||||
"@vue/eslint-config-typescript": "^12.0.0",
|
"@vue/eslint-config-typescript": "^12.0.0",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.1",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-vue": "^9.24.0",
|
"eslint-plugin-vue": "^9.32.0",
|
||||||
"prettier": "3.2.1",
|
"prettier": "3.2.1",
|
||||||
"sass": "^1.72.0",
|
"sass": "^1.81.1",
|
||||||
"sass-loader": "^13.3.3",
|
"sass-loader": "^13.3.3",
|
||||||
"terser": "^5.31.0",
|
"terser": "^5.36.0",
|
||||||
"typescript": "^5.4.3",
|
"typescript": "5.6.3",
|
||||||
"vite": "^5.2.7",
|
"vite": "^5.4.11",
|
||||||
"vite-plugin-vue-devtools": "^7.3.1",
|
"vite-plugin-vue-devtools": "^7.6.7",
|
||||||
"vite-ssg": "^0.23.7",
|
"vite-ssg": "^0.23.8",
|
||||||
"vite-ssg-sitemap": "^0.7.1",
|
"vite-ssg-sitemap": "^0.7.1",
|
||||||
"vitest": "^1.4.0",
|
"vitest": "^1.6.0",
|
||||||
"vue-router": "^4.4.0",
|
"vue-router": "^4.5.0",
|
||||||
"vue-tsc": "^2.1.6"
|
"vue-tsc": "^2.1.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -117,7 +117,7 @@ if (!import.meta.env.SSR) window.addEventListener("resize", updateMobile);
|
|||||||
</transition>
|
</transition>
|
||||||
</RouterView>
|
</RouterView>
|
||||||
<!-- show CalendarPreview but only on specific router views -->
|
<!-- show CalendarPreview but only on specific router views -->
|
||||||
<CalendarPreview v-if="isDisabled($route.name)" />
|
<CalendarPreview v-if="isDisabled(route.name)" />
|
||||||
|
|
||||||
<VueQueryDevtools />
|
<VueQueryDevtools />
|
||||||
<Toast />
|
<Toast />
|
||||||
|
@@ -132,11 +132,11 @@ function unselectModule(event: DataTableRowUnselectEvent) {
|
|||||||
:rows-per-page-options="[5, 10, 20, 50]"
|
:rows-per-page-options="[5, 10, 20, 50]"
|
||||||
paginator-template="FirstPageLink PrevPageLink CurrentPageReport NextPageLink LastPageLink RowsPerPageDropdown"
|
paginator-template="FirstPageLink PrevPageLink CurrentPageReport NextPageLink LastPageLink RowsPerPageDropdown"
|
||||||
:current-page-report-template="
|
:current-page-report-template="
|
||||||
$t('additionalModules.paginator.from') +
|
t('additionalModules.paginator.from') +
|
||||||
'{first}' +
|
'{first}' +
|
||||||
$t('additionalModules.paginator.to') +
|
t('additionalModules.paginator.to') +
|
||||||
'{last}' +
|
'{last}' +
|
||||||
$t('additionalModules.paginator.of') +
|
t('additionalModules.paginator.of') +
|
||||||
'{totalRecords}'
|
'{totalRecords}'
|
||||||
"
|
"
|
||||||
filter-display="row"
|
filter-display="row"
|
||||||
@@ -155,7 +155,7 @@ function unselectModule(event: DataTableRowUnselectEvent) {
|
|||||||
|
|
||||||
<Column
|
<Column
|
||||||
field="course"
|
field="course"
|
||||||
:header="$t('additionalModules.course')"
|
:header="t('additionalModules.course')"
|
||||||
:show-clear-button="false"
|
:show-clear-button="false"
|
||||||
:show-filter-menu="false"
|
:show-filter-menu="false"
|
||||||
>
|
>
|
||||||
@@ -173,7 +173,7 @@ function unselectModule(event: DataTableRowUnselectEvent) {
|
|||||||
</Column>
|
</Column>
|
||||||
<Column
|
<Column
|
||||||
field="name"
|
field="name"
|
||||||
:header="$t('additionalModules.module')"
|
:header="t('additionalModules.module')"
|
||||||
:show-clear-button="false"
|
:show-clear-button="false"
|
||||||
:show-filter-menu="false"
|
:show-filter-menu="false"
|
||||||
>
|
>
|
||||||
@@ -194,7 +194,7 @@ function unselectModule(event: DataTableRowUnselectEvent) {
|
|||||||
filter-field="eventType"
|
filter-field="eventType"
|
||||||
:filter-menu-style="{ width: '10rem' }"
|
:filter-menu-style="{ width: '10rem' }"
|
||||||
style="min-width: 10rem"
|
style="min-width: 10rem"
|
||||||
:header="$t('additionalModules.eventType')"
|
:header="t('additionalModules.eventType')"
|
||||||
:show-clear-button="false"
|
:show-clear-button="false"
|
||||||
:show-filter-menu="false"
|
:show-filter-menu="false"
|
||||||
>
|
>
|
||||||
@@ -213,7 +213,7 @@ function unselectModule(event: DataTableRowUnselectEvent) {
|
|||||||
</Column>
|
</Column>
|
||||||
<Column
|
<Column
|
||||||
field="prof"
|
field="prof"
|
||||||
:header="$t('additionalModules.professor')"
|
:header="t('additionalModules.professor')"
|
||||||
:show-clear-button="false"
|
:show-clear-button="false"
|
||||||
:show-filter-menu="false"
|
:show-filter-menu="false"
|
||||||
>
|
>
|
||||||
@@ -221,7 +221,7 @@ function unselectModule(event: DataTableRowUnselectEvent) {
|
|||||||
<Skeleton></Skeleton>
|
<Skeleton></Skeleton>
|
||||||
</template>
|
</template>
|
||||||
</Column>
|
</Column>
|
||||||
<Column :header="$t('additionalModules.info')">
|
<Column :header="t('additionalModules.info')">
|
||||||
<template #body="slotProps">
|
<template #body="slotProps">
|
||||||
<div v-if="loadingData">
|
<div v-if="loadingData">
|
||||||
<Skeleton></Skeleton>
|
<Skeleton></Skeleton>
|
||||||
@@ -232,7 +232,7 @@ function unselectModule(event: DataTableRowUnselectEvent) {
|
|||||||
severity="secondary"
|
severity="secondary"
|
||||||
rounded
|
rounded
|
||||||
outlined
|
outlined
|
||||||
:aria-label="$t('additionalModules.info-long')"
|
:aria-label="t('additionalModules.info-long')"
|
||||||
class="small-button"
|
class="small-button"
|
||||||
@click.stop="showInfo(slotProps.data)"
|
@click.stop="showInfo(slotProps.data)"
|
||||||
></Button>
|
></Button>
|
||||||
|
@@ -52,7 +52,7 @@ const columns = computed(() => [
|
|||||||
:visible="dialogVisible && previewOn"
|
:visible="dialogVisible && previewOn"
|
||||||
:maximizable="!mobilePage"
|
:maximizable="!mobilePage"
|
||||||
:draggable="false"
|
:draggable="false"
|
||||||
:header="$t('calendarPreview.preview-long')"
|
:header="t('calendarPreview.preview-long')"
|
||||||
class="w-full lg:w-30rem lg:h-auto m-0 lg:m-2"
|
class="w-full lg:w-30rem lg:h-auto m-0 lg:m-2"
|
||||||
position="bottomleft"
|
position="bottomleft"
|
||||||
@update:visible="dialogVisible = $event"
|
@update:visible="dialogVisible = $event"
|
||||||
@@ -85,7 +85,7 @@ const columns = computed(() => [
|
|||||||
<template #button>
|
<template #button>
|
||||||
<Button
|
<Button
|
||||||
icon="pi pi-calendar"
|
icon="pi pi-calendar"
|
||||||
:label="$t('calendarPreview.preview')"
|
:label="t('calendarPreview.preview')"
|
||||||
class="p-button-rounded p-button-primary"
|
class="p-button-rounded p-button-primary"
|
||||||
raised
|
raised
|
||||||
@click="dialogVisible = true"
|
@click="dialogVisible = true"
|
||||||
|
@@ -23,7 +23,7 @@ import { useI18n } from "vue-i18n";
|
|||||||
import { usePrimeVue } from "primevue/config";
|
import { usePrimeVue } from "primevue/config";
|
||||||
import primeVue_de from "@/i18n/translations/primevue/prime_vue_local_de.json";
|
import primeVue_de from "@/i18n/translations/primevue/prime_vue_local_de.json";
|
||||||
import primeVue_en from "@/i18n/translations/primevue/prime_vue_local_en.json";
|
import primeVue_en from "@/i18n/translations/primevue/prime_vue_local_en.json";
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t, locale, availableLocales } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
const countries = computed(() => [
|
const countries = computed(() => [
|
||||||
{ name: t("english"), code: "en", icon: "🇬🇧" },
|
{ name: t("english"), code: "en", icon: "🇬🇧" },
|
||||||
@@ -54,8 +54,8 @@ updateLocale(localeStore().locale);
|
|||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-model="$i18n.locale"
|
v-model="locale"
|
||||||
:options="$i18n.availableLocales"
|
:options="availableLocales"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
placeholder="Select a Language"
|
placeholder="Select a Language"
|
||||||
class="w-full md:w-14rem"
|
class="w-full md:w-14rem"
|
||||||
|
@@ -21,8 +21,11 @@ import { computed, ref } from "vue";
|
|||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import LocaleSwitcher from "./LocaleSwitcher.vue";
|
import LocaleSwitcher from "./LocaleSwitcher.vue";
|
||||||
import DarkModeSwitcher from "./DarkModeSwitcher.vue";
|
import DarkModeSwitcher from "./DarkModeSwitcher.vue";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
const { t } = useI18n({ useScope: "global" });
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
const isDark = ref(true);
|
const isDark = ref(true);
|
||||||
|
|
||||||
const items = computed(() => [
|
const items = computed(() => [
|
||||||
@@ -96,7 +99,7 @@ function handleDarkModeToggled(isDarkVar: boolean) {
|
|||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
:class="
|
:class="
|
||||||
$route.path == item.route
|
route.path == item.route
|
||||||
? 'flex align-items-center active'
|
? 'flex align-items-center active'
|
||||||
: 'flex align-items-center'
|
: 'flex align-items-center'
|
||||||
"
|
"
|
||||||
@@ -111,7 +114,7 @@ function handleDarkModeToggled(isDarkVar: boolean) {
|
|||||||
<a
|
<a
|
||||||
v-else-if="item.url"
|
v-else-if="item.url"
|
||||||
:class="
|
:class="
|
||||||
$route.path.includes(item.info)
|
route.path.includes(item.info)
|
||||||
? 'flex align-items-center active'
|
? 'flex align-items-center active'
|
||||||
: 'flex align-items-center'
|
: 'flex align-items-center'
|
||||||
"
|
"
|
||||||
@@ -124,7 +127,7 @@ function handleDarkModeToggled(isDarkVar: boolean) {
|
|||||||
<span
|
<span
|
||||||
v-else
|
v-else
|
||||||
:class="
|
:class="
|
||||||
$route.path.includes(item.info)
|
route.path.includes(item.info)
|
||||||
? 'flex align-items-center active'
|
? 'flex align-items-center active'
|
||||||
: 'flex align-items-center'
|
: 'flex align-items-center'
|
||||||
"
|
"
|
||||||
|
@@ -62,13 +62,13 @@ function formatWeekday(weekday: string) {
|
|||||||
<h2>{{ module.name }}</h2>
|
<h2>{{ module.name }}</h2>
|
||||||
<table class="w-full">
|
<table class="w-full">
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $t("moduleInformation.course") }}: {{ module.course }}</td>
|
<td>{{ t("moduleInformation.course") }}: {{ module.course }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $t("moduleInformation.person") }}: {{ module.prof }}</td>
|
<td>{{ t("moduleInformation.person") }}: {{ module.prof }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $t("moduleInformation.semester") }}: {{ module.semester }}</td>
|
<td>{{ t("moduleInformation.semester") }}: {{ module.semester }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
@@ -81,33 +81,33 @@ function formatWeekday(weekday: string) {
|
|||||||
>
|
>
|
||||||
<Column
|
<Column
|
||||||
field="day"
|
field="day"
|
||||||
:header="$t('moduleInformation.day')"
|
:header="t('moduleInformation.day')"
|
||||||
></Column>
|
></Column>
|
||||||
<Column field="start" :header="$t('moduleInformation.start')">
|
<Column field="start" :header="t('moduleInformation.start')">
|
||||||
<template #body="slotProps">
|
<template #body="slotProps">
|
||||||
{{ formatTimestamp(slotProps.data.start) }}
|
{{ formatTimestamp(slotProps.data.start) }}
|
||||||
</template>
|
</template>
|
||||||
</Column>
|
</Column>
|
||||||
<Column field="end" :header="$t('moduleInformation.end')">
|
<Column field="end" :header="t('moduleInformation.end')">
|
||||||
<template #body="slotProps">
|
<template #body="slotProps">
|
||||||
{{ formatTimestamp(slotProps.data.end) }}
|
{{ formatTimestamp(slotProps.data.end) }}
|
||||||
</template>
|
</template>
|
||||||
</Column>
|
</Column>
|
||||||
<Column
|
<Column
|
||||||
field="rooms"
|
field="rooms"
|
||||||
:header="$t('moduleInformation.room')"
|
:header="t('moduleInformation.room')"
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="eventType"
|
field="eventType"
|
||||||
:header="$t('moduleInformation.type')"
|
:header="t('moduleInformation.type')"
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="notes"
|
field="notes"
|
||||||
:header="$t('moduleInformation.notes')"
|
:header="t('moduleInformation.notes')"
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="week"
|
field="week"
|
||||||
:header="$t('moduleInformation.week')"
|
:header="t('moduleInformation.week')"
|
||||||
></Column>
|
></Column>
|
||||||
</DataTable>
|
</DataTable>
|
||||||
<DataView
|
<DataView
|
||||||
@@ -140,7 +140,7 @@ function formatWeekday(weekday: string) {
|
|||||||
<div class="mr-2">{{ formatWeekday(item.day) }}</div>
|
<div class="mr-2">{{ formatWeekday(item.day) }}</div>
|
||||||
<div class="mr-2">
|
<div class="mr-2">
|
||||||
{{
|
{{
|
||||||
$t("moduleInformation.nthWeek", {
|
t("moduleInformation.nthWeek", {
|
||||||
count: item.week,
|
count: item.week,
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
@@ -150,25 +150,25 @@ function formatWeekday(weekday: string) {
|
|||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="mr-2">
|
<td class="mr-2">
|
||||||
<b>{{ $t("moduleInformation.start") }}:</b>
|
<b>{{ t("moduleInformation.start") }}:</b>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ formatTimestamp(item.start) }}</td>
|
<td>{{ formatTimestamp(item.start) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="mr-2">
|
<td class="mr-2">
|
||||||
<b>{{ $t("moduleInformation.end") }}:</b>
|
<b>{{ t("moduleInformation.end") }}:</b>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ formatTimestamp(item.end) }}</td>
|
<td>{{ formatTimestamp(item.end) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="mr-2">
|
<td class="mr-2">
|
||||||
<b>{{ $t("moduleInformation.room") }}:</b>
|
<b>{{ t("moduleInformation.room") }}:</b>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ item.rooms }}</td>
|
<td>{{ item.rooms }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="mr-2">
|
<td class="mr-2">
|
||||||
<b>{{ $t("moduleInformation.notes") }}:</b>
|
<b>{{ t("moduleInformation.notes") }}:</b>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ item.notes }}</td>
|
<td>{{ item.notes }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -20,6 +20,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
import { computed, ComputedRef, PropType } from "vue";
|
import { computed, ComputedRef, PropType } from "vue";
|
||||||
import { Module } from "../model/module.ts";
|
import { Module } from "../model/module.ts";
|
||||||
import moduleStore from "../store/moduleStore";
|
import moduleStore from "../store/moduleStore";
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
const store = moduleStore();
|
const store = moduleStore();
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -83,7 +85,7 @@ function toggleModule(module: Module) {
|
|||||||
class="flex justify-content-between align-items-center flex-wrap md:mx-4"
|
class="flex justify-content-between align-items-center flex-wrap md:mx-4"
|
||||||
>
|
>
|
||||||
<h3>
|
<h3>
|
||||||
{{ $t("moduleSelection.modules") }} -
|
{{ t("moduleSelection.modules") }} -
|
||||||
{{ store.countModules() }}
|
{{ store.countModules() }}
|
||||||
</h3>
|
</h3>
|
||||||
<div
|
<div
|
||||||
@@ -92,8 +94,8 @@ function toggleModule(module: Module) {
|
|||||||
<p>
|
<p>
|
||||||
{{
|
{{
|
||||||
allSelected
|
allSelected
|
||||||
? $t("moduleSelection.deselectAll")
|
? t("moduleSelection.deselectAll")
|
||||||
: $t("moduleSelection.selectAll")
|
: t("moduleSelection.selectAll")
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
<InputSwitch
|
<InputSwitch
|
||||||
@@ -107,7 +109,7 @@ function toggleModule(module: Module) {
|
|||||||
</template>
|
</template>
|
||||||
<template #empty>
|
<template #empty>
|
||||||
<p class="p-4 text-2xl font-bold text-900 empty-message">
|
<p class="p-4 text-2xl font-bold text-900 empty-message">
|
||||||
{{ $t("moduleSelection.noModulesAvailable") }}
|
{{ t("moduleSelection.noModulesAvailable") }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
<template #list="slotProps">
|
<template #list="slotProps">
|
||||||
@@ -126,8 +128,8 @@ function toggleModule(module: Module) {
|
|||||||
:icon="store.hasModule(item) ? 'pi pi-times' : 'pi pi-plus'"
|
:icon="store.hasModule(item) ? 'pi pi-times' : 'pi pi-plus'"
|
||||||
:label="
|
:label="
|
||||||
store.hasModule(item)
|
store.hasModule(item)
|
||||||
? $t('moduleSelection.selected')
|
? t('moduleSelection.selected')
|
||||||
: $t('moduleSelection.unselected')
|
: t('moduleSelection.unselected')
|
||||||
"
|
"
|
||||||
outlined
|
outlined
|
||||||
:severity="store.hasModule(item) ? '' : 'secondary'"
|
:severity="store.hasModule(item) ? '' : 'secondary'"
|
||||||
|
@@ -44,6 +44,11 @@ const placeholders = computed(() => [
|
|||||||
", p = " +
|
", p = " +
|
||||||
t("moduleTemplateDialog.mandatory"),
|
t("moduleTemplateDialog.mandatory"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
placeholder: "%r",
|
||||||
|
description: t("moduleTemplateDialog.room"),
|
||||||
|
examples: "ZU101, LI201",
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -61,7 +66,7 @@ const placeholders = computed(() => [
|
|||||||
<Dialog
|
<Dialog
|
||||||
v-model:visible="helpVisible"
|
v-model:visible="helpVisible"
|
||||||
class="w-full md:w-auto"
|
class="w-full md:w-auto"
|
||||||
:header="$t('moduleTemplateDialog.moduleConfiguration')"
|
:header="t('moduleTemplateDialog.moduleConfiguration')"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
{{ t("moduleTemplateDialog.explanationOne") }}
|
{{ t("moduleTemplateDialog.explanationOne") }}
|
||||||
@@ -70,15 +75,15 @@ const placeholders = computed(() => [
|
|||||||
<DataTable :value="placeholders">
|
<DataTable :value="placeholders">
|
||||||
<Column
|
<Column
|
||||||
field="placeholder"
|
field="placeholder"
|
||||||
:header="$t('moduleTemplateDialog.placeholder')"
|
:header="t('moduleTemplateDialog.placeholder')"
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="description"
|
field="description"
|
||||||
:header="$t('moduleTemplateDialog.description')"
|
:header="t('moduleTemplateDialog.description')"
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="examples"
|
field="examples"
|
||||||
:header="$t('moduleTemplateDialog.examples')"
|
:header="t('moduleTemplateDialog.examples')"
|
||||||
></Column>
|
></Column>
|
||||||
</DataTable>
|
</DataTable>
|
||||||
<p>
|
<p>
|
||||||
|
@@ -134,7 +134,8 @@
|
|||||||
"lecture": "Vorlesung",
|
"lecture": "Vorlesung",
|
||||||
"seminar": "Seminar",
|
"seminar": "Seminar",
|
||||||
"exam": "Prüfung/Praktikum",
|
"exam": "Prüfung/Praktikum",
|
||||||
"eventTyp": "Ereignistyp"
|
"eventTyp": "Ereignistyp",
|
||||||
|
"room": "Raum"
|
||||||
},
|
},
|
||||||
"calendarLink": {
|
"calendarLink": {
|
||||||
"copyToastNotification": "Link in Zwischenablage kopiert",
|
"copyToastNotification": "Link in Zwischenablage kopiert",
|
||||||
|
@@ -134,7 +134,8 @@
|
|||||||
"lecture": "lecture",
|
"lecture": "lecture",
|
||||||
"seminar": "seminar",
|
"seminar": "seminar",
|
||||||
"exam": "exam/internship project",
|
"exam": "exam/internship project",
|
||||||
"eventTyp": "event type"
|
"eventTyp": "event type",
|
||||||
|
"room": "room"
|
||||||
},
|
},
|
||||||
"calendarLink": {
|
"calendarLink": {
|
||||||
"copyToastNotification": "link copied to clipboard",
|
"copyToastNotification": "link copied to clipboard",
|
||||||
|
@@ -96,11 +96,11 @@ getCourses();
|
|||||||
<template>
|
<template>
|
||||||
<DynamicPage
|
<DynamicPage
|
||||||
:hide-content="selectedCourse.name === ''"
|
:hide-content="selectedCourse.name === ''"
|
||||||
:headline="$t('courseSelection.headline')"
|
:headline="t('courseSelection.headline')"
|
||||||
:sub-title="$t('courseSelection.subTitle')"
|
:sub-title="t('courseSelection.subTitle')"
|
||||||
icon="pi pi-calendar"
|
icon="pi pi-calendar"
|
||||||
:button="{
|
:button="{
|
||||||
label: $t('courseSelection.nextStep'),
|
label: t('courseSelection.nextStep'),
|
||||||
icon: 'pi pi-arrow-right',
|
icon: 'pi pi-arrow-right',
|
||||||
disabled: store.isEmpty(),
|
disabled: store.isEmpty(),
|
||||||
onClick: () => router.push('/additional-modules'),
|
onClick: () => router.push('/additional-modules'),
|
||||||
@@ -113,8 +113,8 @@ getCourses();
|
|||||||
:class="flexSpecs"
|
:class="flexSpecs"
|
||||||
filter
|
filter
|
||||||
option-label="name"
|
option-label="name"
|
||||||
:placeholder="$t('courseSelection.courseDropDown')"
|
:placeholder="t('courseSelection.courseDropDown')"
|
||||||
:empty-message="$t('courseSelection.noCoursesAvailable')"
|
:empty-message="t('courseSelection.noCoursesAvailable')"
|
||||||
:auto-filter-focus="true"
|
:auto-filter-focus="true"
|
||||||
@change="getModules()"
|
@change="getModules()"
|
||||||
></Dropdown>
|
></Dropdown>
|
||||||
@@ -123,7 +123,7 @@ getCourses();
|
|||||||
:options="semesters"
|
:options="semesters"
|
||||||
:class="flexSpecs"
|
:class="flexSpecs"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
:placeholder="$t('courseSelection.semesterDropDown')"
|
:placeholder="t('courseSelection.semesterDropDown')"
|
||||||
@change="getCourses()"
|
@change="getCourses()"
|
||||||
></Dropdown>
|
></Dropdown>
|
||||||
</template>
|
</template>
|
||||||
|
@@ -17,99 +17,103 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="flex align-items-center justify-content-center flex-column">
|
<div class="flex align-items-center justify-content-center flex-column">
|
||||||
<div class="flex align-items-center justify-content-center m-2">
|
<div class="flex align-items-center justify-content-center m-2">
|
||||||
<h1>{{ $t("faqView.headline") }}</h1>
|
<h1>{{ t("faqView.headline") }}</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-column lg:col-7">
|
<div class="flex flex-column lg:col-7">
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{{ $t("faqView.firstQuestion") }}
|
{{ t("faqView.firstQuestion") }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{{ $t("faqView.firstAnswer") }}
|
{{ t("faqView.firstAnswer") }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.secondQuestion") }}</div>
|
<div class="col">{{ t("faqView.secondQuestion") }}</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{{ $t("faqView.secondAnswer") }}
|
{{ t("faqView.secondAnswer") }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.thirdQuestion") }}</div>
|
<div class="col">{{ t("faqView.thirdQuestion") }}</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<Accordion>
|
<Accordion>
|
||||||
<AccordionTab :header="$t('faqView.thirdAnswer.tabTitle')">
|
<AccordionTab :header="t('faqView.thirdAnswer.tabTitle')">
|
||||||
<ol>
|
<ol>
|
||||||
<li>{{ $t("faqView.thirdAnswer.google.first") }}</li>
|
<li>{{ t("faqView.thirdAnswer.google.first") }}</li>
|
||||||
<li>
|
<li>
|
||||||
{{ $t("faqView.thirdAnswer.google.second") }}
|
{{ t("faqView.thirdAnswer.google.second") }}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{ $t("faqView.thirdAnswer.google.third") }}
|
{{ t("faqView.thirdAnswer.google.third") }}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{ $t("faqView.thirdAnswer.google.fourth") }}
|
{{ t("faqView.thirdAnswer.google.fourth") }}
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
<AccordionTab header="HTWK App">
|
<AccordionTab header="HTWK App">
|
||||||
<p>{{ $t("faqView.thirdAnswer.htwk_app.description") }}</p>
|
<p>{{ t("faqView.thirdAnswer.htwk_app.description") }}</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>{{ $t("faqView.thirdAnswer.htwk_app.one") }}</li>
|
<li>{{ t("faqView.thirdAnswer.htwk_app.one") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.htwk_app.two") }}</li>
|
<li>{{ t("faqView.thirdAnswer.htwk_app.two") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.htwk_app.three") }}</li>
|
<li>{{ t("faqView.thirdAnswer.htwk_app.three") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.htwk_app.four") }}</li>
|
<li>{{ t("faqView.thirdAnswer.htwk_app.four") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.htwk_app.five") }}</li>
|
<li>{{ t("faqView.thirdAnswer.htwk_app.five") }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
<AccordionTab
|
<AccordionTab
|
||||||
:header="$t('faqView.thirdAnswer.microsoft_outlook.title')"
|
:header="t('faqView.thirdAnswer.microsoft_outlook.title')"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
{{
|
{{
|
||||||
$t("faqView.thirdAnswer.microsoft_outlook.outlook_2010.title")
|
t("faqView.thirdAnswer.microsoft_outlook.outlook_2010.title")
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.first",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.first",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.second",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.second",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.third",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.third",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.fourth",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.fourth",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.fifth",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2010.fifth",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
@@ -118,141 +122,141 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
{{
|
{{
|
||||||
$t("faqView.thirdAnswer.microsoft_outlook.outlook_2007.title")
|
t("faqView.thirdAnswer.microsoft_outlook.outlook_2007.title")
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.first",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.first",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.second",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.second",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.third",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.third",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.fourth",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.fourth",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.fifth",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.fifth",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{{
|
{{
|
||||||
$t(
|
t(
|
||||||
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.sixth",
|
"faqView.thirdAnswer.microsoft_outlook.outlook_2007.sixth",
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
<AccordionTab :header="$t('faqView.thirdAnswer.apple_osx.title')">
|
<AccordionTab :header="t('faqView.thirdAnswer.apple_osx.title')">
|
||||||
<ol>
|
<ol>
|
||||||
<li>{{ $t("faqView.thirdAnswer.apple_osx.first") }}</li>
|
<li>{{ t("faqView.thirdAnswer.apple_osx.first") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.apple_osx.second") }}</li>
|
<li>{{ t("faqView.thirdAnswer.apple_osx.second") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.apple_osx.third") }}</li>
|
<li>{{ t("faqView.thirdAnswer.apple_osx.third") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.apple_osx.fourth") }}</li>
|
<li>{{ t("faqView.thirdAnswer.apple_osx.fourth") }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
<AccordionTab :header="$t('faqView.thirdAnswer.thunderbird.title')">
|
<AccordionTab :header="t('faqView.thirdAnswer.thunderbird.title')">
|
||||||
<ol>
|
<ol>
|
||||||
<li>{{ $t("faqView.thirdAnswer.thunderbird.one") }}</li>
|
<li>{{ t("faqView.thirdAnswer.thunderbird.one") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.thunderbird.two") }}</li>
|
<li>{{ t("faqView.thirdAnswer.thunderbird.two") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.thunderbird.three") }}</li>
|
<li>{{ t("faqView.thirdAnswer.thunderbird.three") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.thunderbird.four") }}</li>
|
<li>{{ t("faqView.thirdAnswer.thunderbird.four") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.thunderbird.five") }}</li>
|
<li>{{ t("faqView.thirdAnswer.thunderbird.five") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.thunderbird.six") }}</li>
|
<li>{{ t("faqView.thirdAnswer.thunderbird.six") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.thunderbird.seven") }}</li>
|
<li>{{ t("faqView.thirdAnswer.thunderbird.seven") }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
<AccordionTab :header="$t('faqView.thirdAnswer.iphone.title')">
|
<AccordionTab :header="t('faqView.thirdAnswer.iphone.title')">
|
||||||
<p>{{ $t("faqView.thirdAnswer.iphone.description") }}</p>
|
<p>{{ t("faqView.thirdAnswer.iphone.description") }}</p>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.one") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.one") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.two") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.two") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.three") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.three") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.four") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.four") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.five") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.five") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.six") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.six") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.seven") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.seven") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.eight") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.eight") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.iphone.nine") }}</li>
|
<li>{{ t("faqView.thirdAnswer.iphone.nine") }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
<AccordionTab header="Android">
|
<AccordionTab header="Android">
|
||||||
<p>{{ $t("faqView.thirdAnswer.android.description") }}</p>
|
<p>{{ t("faqView.thirdAnswer.android.description") }}</p>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
<AccordionTab header="Windows Phone">
|
<AccordionTab header="Windows Phone">
|
||||||
<p>{{ $t("faqView.thirdAnswer.windows_phone.description") }}</p>
|
<p>{{ t("faqView.thirdAnswer.windows_phone.description") }}</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.one") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.one") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.two") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.two") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.three") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.three") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.four") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.four") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.five") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.five") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.six") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.six") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.seven") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.seven") }}</li>
|
||||||
<li>{{ $t("faqView.thirdAnswer.windows_phone.eight") }}</li>
|
<li>{{ t("faqView.thirdAnswer.windows_phone.eight") }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</AccordionTab>
|
</AccordionTab>
|
||||||
</Accordion>
|
</Accordion>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.fourthQuestion") }}</div>
|
<div class="col">{{ t("faqView.fourthQuestion") }}</div>
|
||||||
<div class="col">{{ $t("faqView.fourthAnswer") }}</div>
|
<div class="col">{{ t("faqView.fourthAnswer") }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.fifthQuestion") }}</div>
|
<div class="col">{{ t("faqView.fifthQuestion") }}</div>
|
||||||
<div class="col">{{ $t("faqView.fifthAnswer") }}</div>
|
<div class="col">{{ t("faqView.fifthAnswer") }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col my-2">{{ $t("faqView.sixthQuestion") }}</div>
|
<div class="col my-2">{{ t("faqView.sixthQuestion") }}</div>
|
||||||
<div class="col">{{ $t("faqView.sixthAnswer") }}</div>
|
<div class="col">{{ t("faqView.sixthAnswer") }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.seventhQuestion") }}</div>
|
<div class="col">{{ t("faqView.seventhQuestion") }}</div>
|
||||||
<div class="col">{{ $t("faqView.seventhAnswer") }}</div>
|
<div class="col">{{ t("faqView.seventhAnswer") }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.eighthQuestion") }}</div>
|
<div class="col">{{ t("faqView.eighthQuestion") }}</div>
|
||||||
<div class="col">{{ $t("faqView.eighthAnswer") }}</div>
|
<div class="col">{{ t("faqView.eighthAnswer") }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.ninthQuestion") }}</div>
|
<div class="col">{{ t("faqView.ninthQuestion") }}</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{{ $t("faqView.ninthAnswer") }}
|
{{ t("faqView.ninthAnswer") }}
|
||||||
<a href="https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender"
|
<a href="https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender"
|
||||||
>Gitlab</a
|
>Gitlab</a
|
||||||
>.
|
>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid my-2">
|
<div class="grid my-2">
|
||||||
<div class="col">{{ $t("faqView.crossPromoQuestion") }}</div>
|
<div class="col">{{ t("faqView.crossPromoQuestion") }}</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{{ $t("faqView.crossPromo.teaser") }}
|
{{ t("faqView.crossPromo.teaser") }}
|
||||||
<div class="flex flex-column gap-3 my-3">
|
<div class="flex flex-column gap-3 my-3">
|
||||||
<Card
|
<Card
|
||||||
v-for="promoPage in new Array('mensa', 'htwkarte')"
|
v-for="promoPage in new Array('mensa', 'htwkarte')"
|
||||||
@@ -267,13 +271,13 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
/>
|
/>
|
||||||
<div class="flex flex-column gap-1">
|
<div class="flex flex-column gap-1">
|
||||||
<div>
|
<div>
|
||||||
{{ $t("faqView.crossPromo." + promoPage + ".title") }}
|
{{ t("faqView.crossPromo." + promoPage + ".title") }}
|
||||||
</div>
|
</div>
|
||||||
<div class="p-card-subtitle text-base">
|
<div class="p-card-subtitle text-base">
|
||||||
<a
|
<a
|
||||||
:href="$t('faqView.crossPromo.' + promoPage + '.link')"
|
:href="t('faqView.crossPromo.' + promoPage + '.link')"
|
||||||
>
|
>
|
||||||
{{ $t("faqView.crossPromo." + promoPage + ".link") }}
|
{{ t("faqView.crossPromo." + promoPage + ".link") }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -281,7 +285,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
</template>
|
</template>
|
||||||
<template #content>
|
<template #content>
|
||||||
<p class="m-0">
|
<p class="m-0">
|
||||||
{{ $t("faqView.crossPromo." + promoPage + ".description") }}
|
{{ t("faqView.crossPromo." + promoPage + ".description") }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
</Card>
|
</Card>
|
||||||
@@ -289,7 +293,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
{{ $t("faqView.notFound") }}<br />
|
{{ t("faqView.notFound") }}<br />
|
||||||
<a href="mailto:support@htwkalender.de">support@htwkalender.de</a>
|
<a href="mailto:support@htwkalender.de">support@htwkalender.de</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -20,6 +20,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
import moduleStore from "@/store/moduleStore";
|
import moduleStore from "@/store/moduleStore";
|
||||||
import { router } from "@/main";
|
import { router } from "@/main";
|
||||||
import AdditionalModuleTable from "@/components/AdditionalModuleTable.vue";
|
import AdditionalModuleTable from "@/components/AdditionalModuleTable.vue";
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
const store = moduleStore();
|
const store = moduleStore();
|
||||||
|
|
||||||
@@ -36,7 +38,7 @@ async function nextStep() {
|
|||||||
<div class="flex flex-column align-items-center w-full mb-8">
|
<div class="flex flex-column align-items-center w-full mb-8">
|
||||||
<div class="flex align-items-center justify-content-center">
|
<div class="flex align-items-center justify-content-center">
|
||||||
<h3>
|
<h3>
|
||||||
{{ $t("additionalModules.subTitle") }}
|
{{ t("additionalModules.subTitle") }}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -46,7 +48,7 @@ async function nextStep() {
|
|||||||
:disabled="store.isEmpty()"
|
:disabled="store.isEmpty()"
|
||||||
class="col-12 md:col-4 align-self-end"
|
class="col-12 md:col-4 align-self-end"
|
||||||
icon="pi pi-arrow-right"
|
icon="pi pi-arrow-right"
|
||||||
:label="$t('additionalModules.nextStep')"
|
:label="t('additionalModules.nextStep')"
|
||||||
@click="nextStep()"
|
@click="nextStep()"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -58,7 +60,7 @@ async function nextStep() {
|
|||||||
class="col-12 md:col-4 mb-3 align-self-end"
|
class="col-12 md:col-4 mb-3 align-self-end"
|
||||||
severity="secondary"
|
severity="secondary"
|
||||||
icon="pi pi-arrow-up"
|
icon="pi pi-arrow-up"
|
||||||
:label="$t('additionalModules.scrollToTop')"
|
:label="t('additionalModules.scrollToTop')"
|
||||||
@click="topFunction()"
|
@click="topFunction()"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -83,7 +83,7 @@ async function finalStep() {
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex flex-column align-items-center mb-7">
|
<div class="flex flex-column align-items-center mb-7">
|
||||||
<div class="flex align-items-center justify-content-center m-2 gap-2">
|
<div class="flex align-items-center justify-content-center m-2 gap-2">
|
||||||
<h3>{{ $t("renameModules.subTitle") }}</h3>
|
<h3>{{ t("renameModules.subTitle") }}</h3>
|
||||||
<ModuleTemplateDialog />
|
<ModuleTemplateDialog />
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full lg:w-8 flex flex-column">
|
<div class="w-full lg:w-8 flex flex-column">
|
||||||
@@ -100,7 +100,7 @@ async function finalStep() {
|
|||||||
<div
|
<div
|
||||||
class="flex align-items-center justify-content-end flex-wrap gap-2 px-2"
|
class="flex align-items-center justify-content-end flex-wrap gap-2 px-2"
|
||||||
>
|
>
|
||||||
{{ $t("renameModules.enableAllNotifications") }}
|
{{ t("renameModules.enableAllNotifications") }}
|
||||||
<InputSwitch
|
<InputSwitch
|
||||||
:model-value="
|
:model-value="
|
||||||
tableData.reduce(
|
tableData.reduce(
|
||||||
@@ -181,7 +181,7 @@ async function finalStep() {
|
|||||||
:disabled="store.isEmpty() || requestIsPending"
|
:disabled="store.isEmpty() || requestIsPending"
|
||||||
class="col-12 md:col-4 mb-3 align-self-end"
|
class="col-12 md:col-4 mb-3 align-self-end"
|
||||||
:icon="requestIsPending ? 'pi pi-spin pi-spinner' : 'pi pi-save'"
|
:icon="requestIsPending ? 'pi pi-spin pi-spinner' : 'pi pi-save'"
|
||||||
:label="$t('renameModules.nextStep')"
|
:label="t('renameModules.nextStep')"
|
||||||
@click="finalStep()"
|
@click="finalStep()"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -20,6 +20,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
import { defineAsyncComponent } from "vue";
|
import { defineAsyncComponent } from "vue";
|
||||||
import moduleStore from "@/store/moduleStore";
|
import moduleStore from "@/store/moduleStore";
|
||||||
import { router } from "@/main";
|
import { router } from "@/main";
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
const store = moduleStore();
|
const store = moduleStore();
|
||||||
const AdditionalModuleTable = defineAsyncComponent(
|
const AdditionalModuleTable = defineAsyncComponent(
|
||||||
@@ -35,7 +37,7 @@ async function nextStep() {
|
|||||||
<div class="flex flex-column align-items-center w-full mb-7">
|
<div class="flex flex-column align-items-center w-full mb-7">
|
||||||
<div class="flex align-items-center justify-content-center m-2">
|
<div class="flex align-items-center justify-content-center m-2">
|
||||||
<h3>
|
<h3>
|
||||||
{{ $t("additionalModules.subTitle") }}
|
{{ t("additionalModules.subTitle") }}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<AdditionalModuleTable />
|
<AdditionalModuleTable />
|
||||||
@@ -46,7 +48,7 @@ async function nextStep() {
|
|||||||
:disabled="store.isEmpty()"
|
:disabled="store.isEmpty()"
|
||||||
class="col-12 md:col-4 mb-3 align-self-end"
|
class="col-12 md:col-4 mb-3 align-self-end"
|
||||||
icon="pi pi-arrow-right"
|
icon="pi pi-arrow-right"
|
||||||
:label="$t('additionalModules.nextStep')"
|
:label="t('additionalModules.nextStep')"
|
||||||
@click="nextStep()"
|
@click="nextStep()"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -91,11 +91,11 @@ function loadCalendar(): void {
|
|||||||
<template>
|
<template>
|
||||||
<DynamicPage
|
<DynamicPage
|
||||||
hide-content
|
hide-content
|
||||||
:headline="$t('editCalendarView.headline')"
|
:headline="t('editCalendarView.headline')"
|
||||||
:sub-title="$t('editCalendarView.subTitle')"
|
:sub-title="t('editCalendarView.subTitle')"
|
||||||
icon="pi pi-pencil"
|
icon="pi pi-pencil"
|
||||||
:button="{
|
:button="{
|
||||||
label: $t('editCalendarView.loadCalendar'),
|
label: t('editCalendarView.loadCalendar'),
|
||||||
icon: 'pi pi-arrow-down',
|
icon: 'pi pi-arrow-down',
|
||||||
disabled: !isToken(token),
|
disabled: !isToken(token),
|
||||||
onClick: loadCalendar,
|
onClick: loadCalendar,
|
||||||
|
@@ -107,7 +107,7 @@ async function deleteFeed() {
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex flex-column align-items-center mb-7">
|
<div class="flex flex-column align-items-center mb-7">
|
||||||
<div class="flex align-items-center justify-content-center m-2 gap-2">
|
<div class="flex align-items-center justify-content-center m-2 gap-2">
|
||||||
<h3>{{ $t("renameModules.subTitle") }}</h3>
|
<h3>{{ t("renameModules.subTitle") }}</h3>
|
||||||
<ModuleTemplateDialog />
|
<ModuleTemplateDialog />
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full lg:w-8 flex flex-column">
|
<div class="w-full lg:w-8 flex flex-column">
|
||||||
@@ -122,7 +122,7 @@ async function deleteFeed() {
|
|||||||
>
|
>
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="flex align-items-center justify-content-end">
|
<div class="flex align-items-center justify-content-end">
|
||||||
{{ $t("renameModules.enableAllNotifications") }}
|
{{ t("renameModules.enableAllNotifications") }}
|
||||||
<InputSwitch
|
<InputSwitch
|
||||||
class="mx-4"
|
class="mx-4"
|
||||||
:model-value="
|
:model-value="
|
||||||
@@ -219,7 +219,7 @@ async function deleteFeed() {
|
|||||||
severity="danger"
|
severity="danger"
|
||||||
outlined
|
outlined
|
||||||
icon="pi pi-trash"
|
icon="pi pi-trash"
|
||||||
:label="$t('editCalendarView.delete')"
|
:label="t('editCalendarView.delete')"
|
||||||
@click="visible = true"
|
@click="visible = true"
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
@@ -227,7 +227,7 @@ async function deleteFeed() {
|
|||||||
severity="info"
|
severity="info"
|
||||||
outlined
|
outlined
|
||||||
icon="pi pi-plus"
|
icon="pi pi-plus"
|
||||||
:label="$t('editCalendarView.addModules')"
|
:label="t('editCalendarView.addModules')"
|
||||||
@click="router.push('edit-additional-modules')"
|
@click="router.push('edit-additional-modules')"
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
@@ -235,7 +235,7 @@ async function deleteFeed() {
|
|||||||
severity="success"
|
severity="success"
|
||||||
outlined
|
outlined
|
||||||
icon="pi pi-save"
|
icon="pi pi-save"
|
||||||
:label="$t('editCalendarView.save')"
|
:label="t('editCalendarView.save')"
|
||||||
@click="finalStep()"
|
@click="finalStep()"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -257,14 +257,14 @@ async function deleteFeed() {
|
|||||||
class="inline-flex align-items-center justify-content-center gap-2"
|
class="inline-flex align-items-center justify-content-center gap-2"
|
||||||
>
|
>
|
||||||
<span class="font-bold white-space-nowrap">{{
|
<span class="font-bold white-space-nowrap">{{
|
||||||
$t("editCalendarView.dialog.headline")
|
t("editCalendarView.dialog.headline")
|
||||||
}}</span>
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<p class="m-0">{{ $t("editCalendarView.dialog.subTitle") }}</p>
|
<p class="m-0">{{ t("editCalendarView.dialog.subTitle") }}</p>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<Button
|
<Button
|
||||||
:label="$t('editCalendarView.dialog.delete')"
|
:label="t('editCalendarView.dialog.delete')"
|
||||||
severity="danger"
|
severity="danger"
|
||||||
icon="pi pi-trash"
|
icon="pi pi-trash"
|
||||||
autofocus
|
autofocus
|
||||||
|
@@ -19,11 +19,11 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
<template>
|
<template>
|
||||||
<DynamicPage
|
<DynamicPage
|
||||||
:hide-content="availableRooms.length === 0"
|
:hide-content="availableRooms.length === 0"
|
||||||
:headline="$t('freeRooms.freeRooms')"
|
:headline="t('freeRooms.freeRooms')"
|
||||||
:sub-title="$t('freeRooms.detail')"
|
:sub-title="t('freeRooms.detail')"
|
||||||
icon="pi pi-search"
|
icon="pi pi-search"
|
||||||
:button="{
|
:button="{
|
||||||
label: $t('freeRooms.search'),
|
label: t('freeRooms.search'),
|
||||||
icon: 'pi pi-search',
|
icon: 'pi pi-search',
|
||||||
disabled: isLater,
|
disabled: isLater,
|
||||||
onClick: loadFreeRooms,
|
onClick: loadFreeRooms,
|
||||||
@@ -33,8 +33,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
<Calendar
|
<Calendar
|
||||||
v-model="date"
|
v-model="date"
|
||||||
:class="flexSpecs"
|
:class="flexSpecs"
|
||||||
:placeholder="$t('freeRooms.pleaseSelectDate')"
|
:placeholder="t('freeRooms.pleaseSelectDate')"
|
||||||
:empty-message="$t('roomFinderPage.noRoomsAvailable')"
|
:empty-message="t('roomFinderPage.noRoomsAvailable')"
|
||||||
date-format="dd.mm.yy"
|
date-format="dd.mm.yy"
|
||||||
panel-class="min-w-min"
|
panel-class="min-w-min"
|
||||||
touch-u-i
|
touch-u-i
|
||||||
@@ -118,13 +118,13 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
:rows="10"
|
:rows="10"
|
||||||
:global-filter-fields="['room']"
|
:global-filter-fields="['room']"
|
||||||
>
|
>
|
||||||
<Column field="room" :sortable="true" :header="$t('freeRooms.room')">
|
<Column field="room" :sortable="true" :header="t('freeRooms.room')">
|
||||||
<template #filter="{ filterModel, filterCallback }">
|
<template #filter="{ filterModel, filterCallback }">
|
||||||
<InputText
|
<InputText
|
||||||
v-model="filterModel.value"
|
v-model="filterModel.value"
|
||||||
type="text"
|
type="text"
|
||||||
class="p-column-filter"
|
class="p-column-filter"
|
||||||
:placeholder="$t('freeRooms.searchByRoom')"
|
:placeholder="t('freeRooms.searchByRoom')"
|
||||||
@input="filterCallback()"
|
@input="filterCallback()"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
@@ -136,7 +136,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
{{ slotProps.data.room }}
|
{{ slotProps.data.room }}
|
||||||
</p>
|
</p>
|
||||||
<Button
|
<Button
|
||||||
:label="$t('freeRooms.viewOccupancy')"
|
:label="t('freeRooms.viewOccupancy')"
|
||||||
icon="pi pi-hourglass"
|
icon="pi pi-hourglass"
|
||||||
class="p-button-rounded p-button-outlined sm:align-self-center align-self-end"
|
class="p-button-rounded p-button-outlined sm:align-self-center align-self-end"
|
||||||
@click="occupationRoute(slotProps.data.room)"
|
@click="occupationRoute(slotProps.data.room)"
|
||||||
@@ -158,6 +158,9 @@ import { padStart } from "@fullcalendar/core/internal";
|
|||||||
import { router } from "@/main";
|
import { router } from "@/main";
|
||||||
import { formatYearMonthDay } from "@/helpers/dates";
|
import { formatYearMonthDay } from "@/helpers/dates";
|
||||||
|
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
const { t } = useI18n({ useScope: "global" });
|
||||||
|
|
||||||
const mobilePage = inject("mobilePage") as Ref<boolean>;
|
const mobilePage = inject("mobilePage") as Ref<boolean>;
|
||||||
const filters = ref({
|
const filters = ref({
|
||||||
room: { value: null, matchMode: FilterMatchMode.CONTAINS, label: "Room" },
|
room: { value: null, matchMode: FilterMatchMode.CONTAINS, label: "Room" },
|
||||||
|
@@ -123,8 +123,8 @@ const button = computed(() => {
|
|||||||
<template>
|
<template>
|
||||||
<DynamicPage
|
<DynamicPage
|
||||||
:hide-content="selectedRoom.name === ''"
|
:hide-content="selectedRoom.name === ''"
|
||||||
:headline="$t('roomFinderPage.headline')"
|
:headline="t('roomFinderPage.headline')"
|
||||||
:sub-title="$t('roomFinderPage.detail')"
|
:sub-title="t('roomFinderPage.detail')"
|
||||||
icon="pi pi-search"
|
icon="pi pi-search"
|
||||||
:lower-button="button"
|
:lower-button="button"
|
||||||
>
|
>
|
||||||
@@ -135,8 +135,8 @@ const button = computed(() => {
|
|||||||
class="flex-1 m-0"
|
class="flex-1 m-0"
|
||||||
filter
|
filter
|
||||||
option-label="name"
|
option-label="name"
|
||||||
:placeholder="$t('roomFinderPage.dropDownSelect')"
|
:placeholder="t('roomFinderPage.dropDownSelect')"
|
||||||
:empty-message="$t('roomFinderPage.noRoomsAvailable')"
|
:empty-message="t('roomFinderPage.noRoomsAvailable')"
|
||||||
:auto-filter-focus="true"
|
:auto-filter-focus="true"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
@@ -145,7 +145,7 @@ const button = computed(() => {
|
|||||||
</template>
|
</template>
|
||||||
<Button
|
<Button
|
||||||
class="col-12 md:col-4 mt-3"
|
class="col-12 md:col-4 mt-3"
|
||||||
:label="$t('roomFinderPage.reset')"
|
:label="t('roomFinderPage.reset')"
|
||||||
@click="selectedRoom.name = ''"
|
@click="selectedRoom.name = ''"
|
||||||
/>
|
/>
|
||||||
</DynamicPage>
|
</DynamicPage>
|
||||||
|
@@ -32,6 +32,8 @@ func ReplaceTemplateSubStrings(rawString string, event model.Event) string {
|
|||||||
return event.EventType
|
return event.EventType
|
||||||
case "%p":
|
case "%p":
|
||||||
return event.Compulsory
|
return event.Compulsory
|
||||||
|
case "%r":
|
||||||
|
return event.Rooms
|
||||||
default:
|
default:
|
||||||
return match
|
return match
|
||||||
}
|
}
|
||||||
|
@@ -83,6 +83,46 @@ func TestReplaceTemplateSubStrings(t *testing.T) {
|
|||||||
},
|
},
|
||||||
want: "Test Test %",
|
want: "Test Test %",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Test 6",
|
||||||
|
args: args{
|
||||||
|
rawString: "%r",
|
||||||
|
event: model.Event{
|
||||||
|
Rooms: "Test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: "Test",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Test 7",
|
||||||
|
args: args{
|
||||||
|
rawString: "%r %r",
|
||||||
|
event: model.Event{
|
||||||
|
Rooms: "Test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: "Test Test",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Test 8",
|
||||||
|
args: args{
|
||||||
|
rawString: "%r %r %r",
|
||||||
|
event: model.Event{
|
||||||
|
Rooms: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: " ",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Test 9",
|
||||||
|
args: args{
|
||||||
|
rawString: "Software%rprojekt",
|
||||||
|
event: model.Event{
|
||||||
|
Rooms: "Test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: "SoftwareTestprojekt",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
Reference in New Issue
Block a user