From 3e46e947360c3b23d6d64a5c188d2ddc0d598a30 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 27 Jan 2026 11:07:46 +0100 Subject: [PATCH 1/5] quick fix to prevent pruefunglist from being empty due to js error in combination with tabulator sort persistence --- .../Details/Pruefung/Pruefunglist.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js b/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js index 62cd47547..58d42666f 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js @@ -91,7 +91,15 @@ export default{ layoutColumnsOnNewData: false, height: 'auto', index: 'pruefung_id', - persistenceID: 'stv-details-pruefung-list-2025112402' + persistenceID: 'stv-details-pruefung-list-2026012701', + persistence: { + sort: false, + columns: ["width", "visible", "frozen"], + filter: false, + headerFilter: false, + group: false, + page: false + } }, tabulatorEvents: [ { From 7fe36d59e398e1398957f5c5d49fa565edcae286 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 28 Jan 2026 11:32:03 +0100 Subject: [PATCH 2/5] apply edit Zgv permissions only to ZGV dropdowns --- .../Stv/Studentenverwaltung/Details/Prestudent.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js index 7a3f7f44e..73fd00b25 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js @@ -308,7 +308,6 @@ export default { type="text" v-model="data.zgvort" name="zgvort" - :disabled="!hasZGVBakkPermission" > @@ -375,7 +372,6 @@ export default { type="text" v-model="data.zgvmaort" name="zgvmaort" - :disabled="!hasZGVMasterPermission" > @@ -443,7 +437,6 @@ export default { type="text" v-model="data.zgvdoktorort" name="zgvdoktorort" - :disabled="!hasZGVDoctorPermission" > @@ -487,7 +478,6 @@ export default { type="checkbox" v-model="data.zgv_erfuellt" name="zgv_erfuellt" - :disabled="!hasZGVBakkPermission" > @@ -499,7 +489,6 @@ export default { type="checkbox" v-model="data.zgvmas_erfuellt" name="zgvmas_erfuellt" - :disabled="!hasZGVMasterPermission" > @@ -511,7 +500,6 @@ export default { type="checkbox" v-model="data.zgvdoktor_erfuellt" name="zgvdoktor_erfuellt" - :disabled="!hasZGVDoctorPermission" > From f1aa5382cf3765c4d3b35db8aeace38b2cb77f8f Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 28 Jan 2026 17:04:11 +0100 Subject: [PATCH 3/5] check editZgv Permission for Stg and also check it in api function --- .../controllers/Studentenverwaltung.php | 6 +- .../api/frontend/v1/stv/Prestudent.php | 56 +++++++++++++++++-- .../Studentenverwaltung/Details/Prestudent.js | 21 +++++-- 3 files changed, 70 insertions(+), 13 deletions(-) diff --git a/application/controllers/Studentenverwaltung.php b/application/controllers/Studentenverwaltung.php index 3fba97e91..36c91d5f6 100644 --- a/application/controllers/Studentenverwaltung.php +++ b/application/controllers/Studentenverwaltung.php @@ -32,9 +32,9 @@ class Studentenverwaltung extends Auth_Controller 'student/keine_studstatuspruefung' => $this->permissionlib->isBerechtigt('student/keine_studstatuspruefung'), 'lehre/reihungstestAufsicht' => $this->permissionlib->isBerechtigt('lehre/reihungstestAufsicht'), 'system/change_outputformat' => $this->permissionlib->getOE_isEntitledFor('system/change_outputformat'), - 'student/editBakkZgv' => $this->permissionlib->isBerechtigt('student/editBakkZgv'), - 'student/editMakkZgv' => $this->permissionlib->isBerechtigt('student/editMakkZgv'), - 'student/editDokZgv' => $this->permissionlib->isBerechtigt('student/editDokZgv'), + 'student/editBakkZgv' => $this->permissionlib->getSTG_isEntitledFor('student/editBakkZgv') ?: array(), + 'student/editMakkZgv' => $this->permissionlib->getSTG_isEntitledFor('student/editMakkZgv') ?: array(), + 'student/editDokZgv' => $this->permissionlib->getSTG_isEntitledFor('student/editDokZgv') ?: array(), 'student/editBismelden' => $this->permissionlib->isBerechtigt('student/editBismelden') ], 'variables' => [ diff --git a/application/controllers/api/frontend/v1/stv/Prestudent.php b/application/controllers/api/frontend/v1/stv/Prestudent.php index 7dc607d1a..d8c8d1ff2 100644 --- a/application/controllers/api/frontend/v1/stv/Prestudent.php +++ b/application/controllers/api/frontend/v1/stv/Prestudent.php @@ -43,7 +43,7 @@ class Prestudent extends FHCAPI_Controller // Load language phrases $this->loadPhrases([ - 'ui', 'studierendenantrag', 'lehre' + 'ui', 'studierendenantrag', 'lehre', 'global' ]); } @@ -98,11 +98,9 @@ class Prestudent extends FHCAPI_Controller 'person_id', 'berufstaetigkeit_code', 'ausbildungcode', - 'zgv_code', 'zgvort', 'zgvdatum', 'zgvnation', - 'zgvmas_code', 'zgvmaort', 'zgvmadatum', 'zgvmanation', @@ -110,7 +108,6 @@ class Prestudent extends FHCAPI_Controller 'bismelden', 'anmerkung', 'dual', - 'zgvdoktor_code', 'zgvdoktorort', 'zgvdoktordatum', 'zgvdoktornation', @@ -125,6 +122,57 @@ class Prestudent extends FHCAPI_Controller 'standort_code' ]; + // add zgv code fields only if user has permission + $this->load->library('PermissionLib'); + $prestudentres = $this->PrestudentModel->load($prestudent_id); + if(!hasData($prestudentres)) + { + $this->terminateWithError($this->p->t('ui', 'error_fieldNotFound', ['field' => 'Prestudent ' . $prestudent_id])); + } + $prestudent = (getData($prestudentres))[0]; + $bakkZgvStg = $this->permissionlib->getSTG_isEntitledFor('student/editBakkZgv') ?: array(); + $makkZgvStg = $this->permissionlib->getSTG_isEntitledFor('student/editMakkZgv') ?: array(); + $dokZgvStg = $this->permissionlib->getSTG_isEntitledFor('student/editDokZgv') ?: array(); + + if(in_array($prestudent->studiengang_kz, $bakkZgvStg)) + { + $array_allowed_props_prestudent[] = 'zgv_code'; + } + else if(!is_null($this->input->post('zgv_code'))) + { + $this->terminateWithError( + $this->p->t('global', 'zgv') + . ' - ' . + $this->p->t('ui', 'error_keineBerechtigungStg') + ); + } + + if(in_array($prestudent->studiengang_kz, $makkZgvStg)) + { + $array_allowed_props_prestudent[] = 'zgvmas_code'; + } + else if(!is_null($this->input->post('zgvmas_code'))) + { + $this->terminateWithError( + $this->p->t('lehre', 'zgvMaster') + . ' - ' . + $this->p->t('ui', 'error_keineBerechtigungStg') + ); + } + + if(in_array($prestudent->studiengang_kz, $dokZgvStg)) + { + $array_allowed_props_prestudent[] = 'zgvdoktor_code'; + } + else if(!is_null($this->input->post('zgvdoktor_code'))) + { + $this->terminateWithError( + $this->p->t('lehre', 'zgvDoktor') + . ' - ' . + $this->p->t('ui', 'error_keineBerechtigungStg') + ); + } + // add UDFs $result = $this->udflib->getDefinitionForModel($this->PrestudentModel); diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js index 73fd00b25..47724e4d7 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js @@ -32,15 +32,15 @@ export default { }, hasZGVBakkPermission: { from: 'hasZGVBakkPermission', - default: false + default: [] }, hasZGVMasterPermission: { from: 'hasZGVMasterPermission', - default: false + default: [] }, hasZGVDoctorPermission: { from: 'hasZGVDoctorPermission', - default: false + default: [] }, hasBismeldenPermission: { from: 'hasBismeldenPermission', @@ -89,6 +89,15 @@ export default { computed: { deltaLength() { return Object.keys(this.deltaArray).length; + }, + disableZgvBakk: function() { + return !this.hasZGVBakkPermission.includes(this.modelValue.studiengang_kz.toString()); + }, + disableZgvMaster: function() { + return !this.hasZGVMasterPermission.includes(this.modelValue.studiengang_kz.toString()); + }, + disableZgvDoctor: function() { + return !this.hasZGVDoctorPermission.includes(this.modelValue.studiengang_kz.toString()); } }, watch: { @@ -289,7 +298,7 @@ export default { dropdown name="zgv_code" @complete="filterZgvs" - :disabled="!hasZGVBakkPermission" + :disabled="disableZgvBakk" >