mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-12 01:29:28 +00:00
changes to support studiensemester_kurz as part of the url
This commit is contained in:
@@ -26,14 +26,119 @@ const ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\/\/)(.*
|
||||
const router = VueRouter.createRouter({
|
||||
history: VueRouter.createWebHistory(),
|
||||
routes: [
|
||||
{ path: `/${ciPath}/studentenverwaltung`, component: FhcStudentenverwaltung },
|
||||
{ path: `/${ciPath}/studentenverwaltung/prestudent/:prestudent_id`, component: FhcStudentenverwaltung },
|
||||
{ path: `/${ciPath}/studentenverwaltung/prestudent/:prestudent_id/:tab`, component: FhcStudentenverwaltung },
|
||||
{ path: `/${ciPath}/studentenverwaltung/student/:id`, component: FhcStudentenverwaltung },
|
||||
{ path: `/${ciPath}/studentenverwaltung/person/:person_id`, component: FhcStudentenverwaltung }
|
||||
{
|
||||
name: 'index',
|
||||
path: `/${ciPath}/studentenverwaltung`,
|
||||
component: FhcStudentenverwaltung
|
||||
},
|
||||
{
|
||||
name: 'studiensemester',
|
||||
path: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz`,
|
||||
component: FhcStudentenverwaltung,
|
||||
props: (route) => {
|
||||
return {
|
||||
url_studiensemester_kurzbz: route.params.studiensemester_kurzbz
|
||||
};
|
||||
},
|
||||
beforeEnter: (to, from, next) => {
|
||||
const isSemester = /^[WS]S\d{4}$/.test(to.params.studiensemester_kurzbz);
|
||||
if (!isSemester) {
|
||||
return next({name: 'index'});
|
||||
}
|
||||
next();
|
||||
}
|
||||
},
|
||||
{
|
||||
path: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/prestudent/:prestudent_id`,
|
||||
component: FhcStudentenverwaltung,
|
||||
props: (route) => {
|
||||
return {
|
||||
url_studiensemester_kurzbz: route.params.studiensemester_kurzbz,
|
||||
url_mode: 'prestudent',
|
||||
url_prestudent_id: route.params.prestudent_id
|
||||
};
|
||||
},
|
||||
beforeEnter: (to, from, next) => {
|
||||
const isSemester = /^[WS]S\d{4}$/.test(to.params.studiensemester_kurzbz);
|
||||
if (!isSemester) {
|
||||
return next({name: 'index'});
|
||||
}
|
||||
next();
|
||||
}
|
||||
},
|
||||
{
|
||||
path: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/prestudent/:prestudent_id/:tab`,
|
||||
component: FhcStudentenverwaltung,
|
||||
props: (route) => {
|
||||
return {
|
||||
url_studiensemester_kurzbz: route.params.studiensemester_kurzbz,
|
||||
url_mode: 'prestudent',
|
||||
url_prestudent_id: route.params.prestudent_id,
|
||||
url_tab: route.params.tab
|
||||
};
|
||||
},
|
||||
beforeEnter: (to, from, next) => {
|
||||
const isSemester = /^[WS]S\d{4}$/.test(to.params.studiensemester_kurzbz);
|
||||
if (!isSemester) {
|
||||
return next({name: 'index'});
|
||||
}
|
||||
next();
|
||||
}
|
||||
},
|
||||
{
|
||||
path: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/student/:id`,
|
||||
component: FhcStudentenverwaltung,
|
||||
props: (route) => {
|
||||
return {
|
||||
url_studiensemester_kurzbz: route.params.studiensemester_kurzbz,
|
||||
url_mode: 'student',
|
||||
url_student_id: route.params.id
|
||||
};
|
||||
},
|
||||
beforeEnter: (to, from, next) => {
|
||||
const isSemester = /^[WS]S\d{4}$/.test(to.params.studiensemester_kurzbz);
|
||||
if (!isSemester) {
|
||||
return next({name: 'index'});
|
||||
}
|
||||
next();
|
||||
}
|
||||
},
|
||||
{
|
||||
path: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/person/:person_id`,
|
||||
component: FhcStudentenverwaltung,
|
||||
props: (route) => {
|
||||
return {
|
||||
url_studiensemester_kurzbz: route.params.studiensemester_kurzbz,
|
||||
url_mode: 'person',
|
||||
url_prestudent_id: route.params.person_id
|
||||
};
|
||||
},
|
||||
beforeEnter: (to, from, next) => {
|
||||
const isSemester = /^[WS]S\d{4}$/.test(to.params.studiensemester_kurzbz);
|
||||
if (!isSemester) {
|
||||
return next({name: 'index'});
|
||||
}
|
||||
next();
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
redirect: {
|
||||
name: 'index'
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
router.afterEach((to, from, failure) => {
|
||||
console.log('vue router afterEach: ' + to.params.studiensemester_kurzbz);
|
||||
if (to.params.studiensemester_kurzbz) {
|
||||
document.title = to.params.studiensemester_kurzbz + ' - Studierendenverwaltung FH-Complete';
|
||||
} else {
|
||||
document.title = 'Studierendenverwaltung FH-Complete';
|
||||
}
|
||||
});
|
||||
|
||||
const app = Vue.createApp({
|
||||
name: 'StudentenverwaltungApp'
|
||||
});
|
||||
|
||||
@@ -85,9 +85,7 @@ export default {
|
||||
student: {
|
||||
defaultaction: {
|
||||
type: "link",
|
||||
action: function(data) {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/studentenverwaltung/student/' + data.uid;
|
||||
}
|
||||
action: this.buildStudentSearchResultLink
|
||||
},
|
||||
childactions: [
|
||||
]
|
||||
@@ -95,9 +93,7 @@ export default {
|
||||
prestudent: {
|
||||
defaultaction: {
|
||||
type: "link",
|
||||
action: function(data) {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/studentenverwaltung/prestudent/' + data.prestudent_id;
|
||||
}
|
||||
action: this.buildPrestudentSearchResultLink
|
||||
},
|
||||
childactions: [
|
||||
]
|
||||
@@ -113,20 +109,61 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$attrs.url_studiensemester_kurzbz': function (newVal, oldVal) {
|
||||
if (newVal !== oldVal) {
|
||||
this.studiensemesterKurzbz = newVal;
|
||||
this.$refs.stvList.updateUrl();
|
||||
this.$refs.details.reload();
|
||||
}
|
||||
},
|
||||
'$attrs.url_mode': function () {
|
||||
this.handlePersonUrl();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
buildPrestudentSearchResultLink(data) {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ FHC_JS_DATA_STORAGE_OBJECT.ci_router
|
||||
+ '/studentenverwaltung'
|
||||
+ '/' + this.studiensemesterKurzbz
|
||||
+ '/prestudent/'
|
||||
+ data.prestudent_id;
|
||||
},
|
||||
buildStudentSearchResultLink(data) {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ FHC_JS_DATA_STORAGE_OBJECT.ci_router
|
||||
+ '/studentenverwaltung'
|
||||
+ '/' + this.studiensemesterKurzbz
|
||||
+ '/student/'
|
||||
+ data.uid;
|
||||
},
|
||||
onSelectVerband( {link, studiengang_kz}) {
|
||||
let urlpath = String(link);
|
||||
if (!urlpath.match(/\/prestudent/))
|
||||
{
|
||||
urlpath = this.studiensemesterKurzbz + '/' + urlpath;
|
||||
urlpath = 'CURRENT_SEMESTER' + '/' + urlpath;
|
||||
}
|
||||
this.studiengangKz = studiengang_kz;
|
||||
this.$refs.stvList.updateUrl(
|
||||
ApiStv.students.verband(urlpath)
|
||||
);
|
||||
);
|
||||
this.$router.push({
|
||||
name: 'studiensemester',
|
||||
params: {
|
||||
studiensemester_kurzbz: this.studiensemesterKurzbz
|
||||
}
|
||||
});
|
||||
},
|
||||
studiensemesterChanged(v) {
|
||||
this.studiensemesterKurzbz = v;
|
||||
|
||||
this.$router.push({
|
||||
params: {
|
||||
studiensemester_kurzbz: v
|
||||
}
|
||||
});
|
||||
|
||||
this.$refs.stvList.updateUrl();
|
||||
this.$refs.details.reload();
|
||||
},
|
||||
@@ -135,9 +172,38 @@ export default {
|
||||
},
|
||||
searchfunction(params) {
|
||||
return this.$api.call(ApiSearchbar.search(params));
|
||||
},
|
||||
handlePersonUrl() {
|
||||
if (this.$route.params.id) {
|
||||
this.$refs.stvList.updateUrl(
|
||||
ApiStv.students.uid(this.$route.params.id, 'CURRENT_SEMESTER'),
|
||||
true
|
||||
);
|
||||
} else if (this.$route.params.prestudent_id) {
|
||||
this.$refs.stvList.updateUrl(
|
||||
ApiStv.students.prestudent(this.$route.params.prestudent_id, 'CURRENT_SEMESTER'),
|
||||
true
|
||||
);
|
||||
} else if (this.$route.params.person_id) {
|
||||
this.$refs.stvList.updateUrl(
|
||||
ApiStv.students.person(this.$route.params.person_id, 'CURRENT_SEMESTER'),
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (!this.$attrs?.url_studiensemester_kurzbz) {
|
||||
this.$router.replace({
|
||||
name: 'studiensemester',
|
||||
params: {
|
||||
studiensemester_kurzbz: this.defaultSemester
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.studiensemesterKurzbz = this.$attrs.url_studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
this.$api
|
||||
.call(ApiStv.kontakt.address.getNations())
|
||||
.then(result => {
|
||||
@@ -199,23 +265,7 @@ export default {
|
||||
mounted() {
|
||||
//Test manu Systemerror
|
||||
//FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto = 'ma0068@technikum-wien.at';this.$fhcAlert.handleSystemError(1);
|
||||
if (this.$route.params.id) {
|
||||
this.$refs.stvList.updateUrl(
|
||||
ApiStv.students.uid(this.$route.params.id, this.studiensemesterKurzbz),
|
||||
true
|
||||
);
|
||||
} else if (this.$route.params.prestudent_id) {
|
||||
this.$refs.stvList.updateUrl(
|
||||
ApiStv.students.prestudent(this.$route.params.prestudent_id, this.studiensemesterKurzbz),
|
||||
true
|
||||
);
|
||||
} else if (this.$route.params.person_id) {
|
||||
this.$refs.stvList.updateUrl(
|
||||
ApiStv.students.person(this.$route.params.person_id, this.studiensemesterKurzbz),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
this.handlePersonUrl();
|
||||
},
|
||||
template: `
|
||||
<div class="stv">
|
||||
@@ -231,7 +281,7 @@ export default {
|
||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" :aria-label="$p.t('ui/schliessen')"></button>
|
||||
</div>
|
||||
<stv-verband @select-verband="onSelectVerband" class="col" style="height:0%"></stv-verband>
|
||||
<stv-studiensemester :default="defaultSemester" @changed="studiensemesterChanged"></stv-studiensemester>
|
||||
<stv-studiensemester v-model:studiensemester-kurzbz="studiensemesterKurzbz" @update:studiensemester-kurzbz="studiensemesterChanged"></stv-studiensemester>
|
||||
</nav>
|
||||
<main class="col-md-8 ms-sm-auto col-lg-9 col-xl-10">
|
||||
<vertical-split>
|
||||
|
||||
@@ -8,9 +8,16 @@ export default {
|
||||
CoreFilterCmpt,
|
||||
ListNew
|
||||
},
|
||||
inject: [
|
||||
'lists'
|
||||
],
|
||||
inject: {
|
||||
'lists': {
|
||||
from: 'lists',
|
||||
required: true
|
||||
},
|
||||
currentSemester: {
|
||||
from: 'currentSemester',
|
||||
required: true
|
||||
}
|
||||
},
|
||||
props: {
|
||||
selected: Array,
|
||||
studiengangKz: Number,
|
||||
@@ -155,7 +162,8 @@ export default {
|
||||
filterKontoMissingCounter: undefined,
|
||||
count: 0,
|
||||
filteredcount: 0,
|
||||
selectedcount: 0
|
||||
selectedcount: 0,
|
||||
currentEndpointRawUrl: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -192,13 +200,21 @@ export default {
|
||||
|
||||
if( endpoint === undefined )
|
||||
{
|
||||
endpoint = { url: '' };
|
||||
endpoint = {url: this.currentEndpointRawUrl};
|
||||
}
|
||||
else if( endpoint.url === undefined )
|
||||
{
|
||||
endpoint.url = '';
|
||||
endpoint.url = this.currentEndpointRawUrl;
|
||||
} else
|
||||
{
|
||||
this.currentEndpointRawUrl = endpoint.url;
|
||||
}
|
||||
|
||||
endpoint.url = endpoint.url.replace(
|
||||
'CURRENT_SEMESTER',
|
||||
encodeURIComponent(this.currentSemester)
|
||||
);
|
||||
|
||||
const params = {}, filter = {};
|
||||
if (this.filterKontoCount0)
|
||||
filter.konto_count_0 = this.filterKontoCount0;
|
||||
|
||||
@@ -2,12 +2,12 @@ import {CoreRESTClient} from '../../../RESTClient.js';
|
||||
|
||||
export default {
|
||||
emits: [
|
||||
'changed'
|
||||
'update:studiensemesterKurzbz'
|
||||
],
|
||||
props: {
|
||||
default: {
|
||||
studiensemesterKurzbz: {
|
||||
type: String,
|
||||
default: ''
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -68,7 +68,7 @@ export default {
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = false;
|
||||
this.$emit('changed', this.list[this.current]);
|
||||
this.$emit('update:studiensemesterKurzbz', this.list[this.current]);
|
||||
})
|
||||
.catch(error => {
|
||||
this.current = fallback;
|
||||
@@ -77,6 +77,11 @@ export default {
|
||||
});
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'studiensemesterKurzbz': function () {
|
||||
this.current = this.list.indexOf(this.studiensemesterKurzbz);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
CoreRESTClient
|
||||
.get('components/stv/studiensemester')
|
||||
@@ -84,7 +89,7 @@ export default {
|
||||
.then(result => {
|
||||
this.list = result.map(el => el.studiensemester_kurzbz);
|
||||
this.loading = false;
|
||||
this.current = this.list.indexOf(this.default);
|
||||
this.current = this.list.indexOf(this.studiensemesterKurzbz);
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user