Merge branch 'master' into bug-70848/FHC4_Studierendenverwaltung_Notiz_handleVisibleColumns_pp

This commit is contained in:
ma0068
2026-02-03 10:36:13 +01:00
4 changed files with 79 additions and 26 deletions
@@ -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' => [
@@ -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);
@@ -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"
>
<template #option="slotProps">
<div
@@ -308,7 +317,6 @@ export default {
type="text"
v-model="data.zgvort"
name="zgvort"
:disabled="!hasZGVBakkPermission"
>
</form-input>
<form-input
@@ -325,7 +333,6 @@ export default {
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"
:teleport="true"
:disabled="!hasZGVBakkPermission"
>
</form-input>
<form-input
@@ -335,7 +342,6 @@ export default {
type="select"
v-model="data.zgvnation"
name="zgvnation"
:disabled="!hasZGVBakkPermission"
>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">&nbsp;</option>
@@ -356,7 +362,7 @@ export default {
dropdown
name="zgvmas_code"
@complete="filterMasterZgvs"
:disabled="!hasZGVMasterPermission"
:disabled="disableZgvMaster"
>
<template #option="slotProps">
<div
@@ -375,7 +381,6 @@ export default {
type="text"
v-model="data.zgvmaort"
name="zgvmaort"
:disabled="!hasZGVMasterPermission"
>
</form-input>
<form-input
@@ -392,7 +397,6 @@ export default {
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"
:teleport="true"
:disabled="!hasZGVMasterPermission"
>
</form-input>
<form-input
@@ -402,7 +406,6 @@ export default {
type="select"
v-model="data.zgvmanation"
name="zgvmanation"
:disabled="!hasZGVMasterPermission"
>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">&nbsp;</option>
@@ -424,7 +427,7 @@ export default {
dropdown
name="zgvdoktor_code"
@complete="filterDoktorZgvs"
:disabled="!hasZGVDoctorPermission"
:disabled="disableZgvDoctor"
>
<template #option="slotProps">
<div
@@ -443,7 +446,6 @@ export default {
type="text"
v-model="data.zgvdoktorort"
name="zgvdoktorort"
:disabled="!hasZGVDoctorPermission"
>
</form-input>
<form-input
@@ -460,7 +462,6 @@ export default {
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"
:teleport="true"
:disabled="!hasZGVDoctorPermission"
>
</form-input>
<form-input
@@ -470,7 +471,6 @@ export default {
type="select"
v-model="data.zgvdoktornation"
name="zgvdoktornation"
:disabled="!hasZGVDoctorPermission"
>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">&nbsp;</option>
@@ -487,7 +487,6 @@ export default {
type="checkbox"
v-model="data.zgv_erfuellt"
name="zgv_erfuellt"
:disabled="!hasZGVBakkPermission"
>
</form-input>
</div>
@@ -499,7 +498,6 @@ export default {
type="checkbox"
v-model="data.zgvmas_erfuellt"
name="zgvmas_erfuellt"
:disabled="!hasZGVMasterPermission"
>
</form-input>
</div>
@@ -511,7 +509,6 @@ export default {
type="checkbox"
v-model="data.zgvdoktor_erfuellt"
name="zgvdoktor_erfuellt"
:disabled="!hasZGVDoctorPermission"
>
</form-input>
</div>
@@ -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: [
{