cleanUp Tasks Tab Details

This commit is contained in:
ma0068
2024-10-23 14:26:33 +02:00
parent 8787558fef
commit e283997293
7 changed files with 312 additions and 78 deletions
+7 -1
View File
@@ -2,9 +2,15 @@
$config['tabs'] =
[
'details' => [
//all fields can be configured to be hidden, see class attribute stv-details-details-name for name
'hiddenFields' => [],
'hideUDFs' => false
],
'prestudent' => [
//all fields can be configured to be hidden, see class attribute stv-prestudent-prestudent-name for name
//all fields can be configured to be hidden, see class attribute stv-details-prestudent-name for name
'hiddenFields' => [
//corresponding to config-entry 'ZGV_DOKTOR_ANZEIGEN' in global.config
@@ -58,7 +58,8 @@ class Config extends FHCAPI_Controller
$result['details'] = [
'title' => $this->p->t('stv', 'tab_details'),
'component' => './Stv/Studentenverwaltung/Details/Details.js'
'component' => './Stv/Studentenverwaltung/Details/Details.js',
'config' => $config['details']
];
$result['notes'] = [
'title' => $this->p->t('stv', 'tab_notes'),
@@ -55,7 +55,7 @@ class Student extends FHCAPI_Controller
// Load language phrases
$this->loadPhrases([
'ui'
'ui', 'lehre'
]);
}
@@ -223,12 +223,10 @@ class Student extends FHCAPI_Controller
// Check PKs
if (count($update_lehrverband) + count($update_student) && $uid === null) {
// TODO(chris): phrase
$this->terminateWithValidationErrors(['' => "Kein/e StudentIn vorhanden!"]);
$this->terminateWithValidationErrors(['' => $this->p->t('lehre', 'error_no_student')]);
}
if (count($update_person) && $person_id === null) {
// TODO(chris): phrase
$this->terminateWithValidationErrors(['' => "Keine Person vorhanden!"]);
$this->terminateWithValidationErrors(['' => $this->p->t('lehre', 'error_no_person')]);
}
// Do Updates
+2
View File
@@ -5,6 +5,7 @@ import konto from './stv/konto.js';
import kontakt from './stv/kontakt.js';
import prestudent from './stv/prestudent.js';
import status from './stv/status.js';
import details from './stv/details.js';
export default {
verband,
@@ -14,6 +15,7 @@ export default {
kontakt,
prestudent,
status,
details,
configStudent() {
return this.$fhcApi.get('api/frontend/v1/stv/config/student');
},
+10
View File
@@ -0,0 +1,10 @@
export default {
get(prestudent_id) {
return this.$fhcApi.post('api/frontend/v1/stv/student/get/' + prestudent_id);
},
save(prestudent_id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/student/save/' + prestudent_id,
data
);
},
}
@@ -37,7 +37,11 @@ export default {
}
},
props: {
modelValue: Object
modelValue: Object,
config: {
type: Object,
default: {}
}
},
data() {
return {
@@ -95,8 +99,7 @@ export default {
methods: {
updateStudent(n) {
// TODO(chris): move to fhcapi.factory
this.$fhcApi
.get('api/frontend/v1/stv/student/get/' + n.prestudent_id)
return this.$fhcApi.factory.stv.details.get(n.prestudent_id)
.then(result => {
this.data = result.data;
if (!this.data.familienstand)
@@ -110,14 +113,13 @@ export default {
return;
this.$refs.form.clearValidation();
this.$refs.form
.post('api/frontend/v1/stv/student/save/' + this.modelValue.prestudent_id, this.changed)
return this.$fhcApi.factory.stv.details.save(this.modelValue.prestudent_id, this.changed)
.then(result => {
this.original = {...this.data};
this.changed = {};
this.$refs.form.setFeedback(true, result.data);
})
.catch(this.$fhcAlert.handleSystemError)
.catch(this.$fhcAlert.handleSystemError);
},
udfsLoaded(udfs) {
this.original = {...(this.original || {}), ...udfs};
@@ -141,16 +143,17 @@ export default {
<template v-if="data">
<div class="row mb-3">
<form-input
container-class="col-4"
label="Person ID"
v-if="!config.hiddenFields.includes('person_id')"
container-class="col-4 stv-details-details-person_id"
:label="$p.t('person', 'person_id')"
type="text"
v-model="data.person_id"
name="person_id"
readonly
>
</form-input>
<div v-if="showZugangscode" class="col-4">
<label>Zugangscode</label>
<div v-if="showZugangscode && !config.hiddenFields.includes('zugangscode')" class="col-4 stv-details-details-zugangscode">
<label>{{$p.t('person', 'zugangscode')}}</label>
<div class="align-self-center">
<span class="form-text">
<a :href="cisRoot + 'addons/bewerbung/cis/registration.php?code=' + data.zugangscode + '&emailAdresse=' + data.email_privat" target="_blank">{{data.zugangscode}}</a>
@@ -158,9 +161,9 @@ export default {
</div>
</div>
<form-input
v-if="showBpk"
container-class="col-4"
label="BPK"
v-if="showBpk && !config.hiddenFields.includes('bpk')"
container-class="col-4 stv-details-details-bpk"
:label="$p.t('person', 'bpk')"
type="text"
v-model="data.bpk"
name="bpk"
@@ -170,8 +173,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Anrede"
v-if="!config.hiddenFields.includes('anrede')"
container-class="col-4 stv-details-details-anrede"
:label="$p.t('person', 'anrede')"
type="text"
v-model="data.anrede"
name="anrede"
@@ -179,8 +183,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Titel Pre"
v-if="!config.hiddenFields.includes('titelpre')"
container-class="col-4 stv-details-details-titelpre"
:label="$p.t('person', 'titelpre')"
type="text"
v-model="data.titelpre"
name="titelpre"
@@ -188,8 +193,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Titel Post"
v-if="!config.hiddenFields.includes('titelpost')"
container-class="col-4 stv-details-details-titelpost"
:label="$p.t('person', 'titelpost')"
type="text"
v-model="data.titelpost"
name="titelpost"
@@ -199,8 +205,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Nachname"
v-if="!config.hiddenFields.includes('nachname')"
container-class="col-4 stv-details-details-nachname"
:label="$p.t('person', 'nachname')"
type="text"
v-model="data.nachname"
name="nachname"
@@ -208,8 +215,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Vorname"
v-if="!config.hiddenFields.includes('vorname')"
container-class="col-4 stv-details-details-vorname"
:label="$p.t('person', 'vorname')"
type="text"
v-model="data.vorname"
name="vorname"
@@ -217,8 +225,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Vornamen"
v-if="!config.hiddenFields.includes('vornamen')"
container-class="col-4 stv-details-details-vornamen"
:label="$p.t('person', 'vornamen')"
type="text"
v-model="data.vornamen"
name="vornamen"
@@ -228,8 +237,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Wahlname"
v-if="!config.hiddenFields.includes('wahlname')"
container-class="col-4 stv-details-details-wahlname"
:label="$p.t('person', 'wahlname')"
type="text"
v-model="data.wahlname"
name="wahlname"
@@ -239,8 +249,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Geburtsdatum"
v-if="!config.hiddenFields.includes('gebdatum')"
container-class="col-4 stv-details-details-gebdatum"
:label="$p.t('person', 'geburtsdatum')"
type="DatePicker"
v-model="data.gebdatum"
name="gebdatum"
@@ -254,8 +265,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Geburtsort"
v-if="!config.hiddenFields.includes('gebort')"
container-class="col-4 stv-details-details-gebort"
:label="$p.t('person', 'geburtsort')"
type="text"
v-model="data.gebort"
name="gebort"
@@ -263,8 +275,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Geburtsnation"
v-if="!config.hiddenFields.includes('geburtsnation')"
container-class="col-4 stv-details-details-geburtsnation"
:label="$p.t('person', 'geburtsnation')"
type="select"
v-model="data.geburtsnation"
name="geburtsnation"
@@ -276,8 +289,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="SVNR"
v-if="!config.hiddenFields.includes('svnr')"
container-class="col-4 stv-details-details-svnr"
:label="$p.t('person', 'svnr')"
type="text"
v-model="data.svnr"
name="svnr"
@@ -285,8 +299,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Ersatzkennzeichen"
v-if="!config.hiddenFields.includes('ersatzkennzeichen')"
container-class="col-4 stv-details-details-ersatzkennzeichen"
:label="$p.t('person', 'ersatzkennzeichen')"
type="text"
v-model="data.ersatzkennzeichen"
name="ersatzkennzeichen"
@@ -296,8 +311,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Staatsbürgerschaft"
v-if="!config.hiddenFields.includes('staatsbuergerschaft')"
container-class="col-4 stv-details-details-staatsbuergerschaft"
:label="$p.t('person', 'staatsbuergerschaft')"
type="select"
v-model="data.staatsbuergerschaft"
name="staatsbuergerschaft"
@@ -307,8 +323,9 @@ export default {
<option v-for="nation in lists.nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</form-input>
<form-input
container-class="col-4"
label="Matrikelnummer"
v-if="!config.hiddenFields.includes('matr_nr')"
container-class="col-4 stv-details-details-matr_nr"
:label="$p.t('person', 'matrikelnummer')"
type="text"
v-model="data.matr_nr"
name="matr_nr"
@@ -316,8 +333,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Sprache"
v-if="!config.hiddenFields.includes('sprache')"
container-class="col-4 stv-details-details-sprache"
:label="$p.t('person', 'sprache')"
type="select"
v-model="data.sprache"
name="sprache"
@@ -327,8 +345,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Geschlecht"
v-if="!config.hiddenFields.includes('geschlecht')"
container-class="col-4 stv-details-details-geschlecht"
:label="$p.t('person', 'geschlecht')"
type="select"
v-model="data.geschlecht"
name="geschlecht"
@@ -336,8 +355,9 @@ export default {
<option v-for="geschlecht in lists.geschlechter" :key="geschlecht.geschlecht" :value="geschlecht.geschlecht">{{geschlecht.bezeichnung}}</option>
</form-input>
<form-input
container-class="col-4"
label="Familienstand"
v-if="!config.hiddenFields.includes('familienstand')"
container-class="col-4 stv-details-details-familienstand"
:label="$p.t('person', 'familienstand')"
type="select"
v-model="data.familienstand"
name="familienstand"
@@ -347,8 +367,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Foto"
v-if="!config.hiddenFields.includes('foto')"
container-class="col-4 stv-details-details-foto"
:label="$p.t('person', 'foto')"
type="UploadImage"
v-model="data.foto"
name="foto"
@@ -356,8 +377,9 @@ export default {
<img alt="No Image" :src="noImageSrc" class="w-100">
</form-input>
<form-input
container-class="col-4"
label="Anmerkung"
v-if="!config.hiddenFields.includes('anmerkung')"
container-class="col-4 stv-details-details-anmerkung"
:label="$p.t('global', 'anmerkung')"
type="textarea"
v-model="data.anmerkung"
name="anmerkung"
@@ -365,8 +387,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Homepage"
v-if="!config.hiddenFields.includes('homepage')"
container-class="col-4 stv-details-details-homepage"
:label="$p.t('person', 'homepage')"
type="text"
v-model="data.homepage"
name="homepage"
@@ -378,15 +401,24 @@ export default {
<div v-else>
Loading...
</div>
<core-udf @load="udfsLoaded" v-model="data" class="row-cols-3 g-3 mb-3" ci-model="person/person" :pk="{person_id:modelValue.person_id}"></core-udf>
<core-udf
v-if="!config.hideUDFs"
@load="udfsLoaded"
v-model="data"
class="row-cols-3 g-3 mb-3"
ci-model="person/person"
:pk="{person_id:modelValue.person_id}"
>
</core-udf>
</fieldset>
<fieldset v-if="data?.student_uid" class="overflow-hidden">
<legend>StudentIn</legend>
<legend>{{$p.t('person', 'studentIn')}}</legend>
<template v-if="data">
<div class="row mb-3">
<form-input
container-class="col-4"
label="UID"
v-if="!config.hiddenFields.includes('student_uid')"
container-class="col-4 stv-details-details-student_uid"
:label="$p.t('person', 'uid')"
type="text"
v-model="data.student_uid"
name="student_uid"
@@ -394,8 +426,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Personenkennzeichen"
v-if="!config.hiddenFields.includes('matrikelnr')"
container-class="col-4 stv-details-details-matrikelnr"
:label="$p.t('person', 'personenkennzeichen')"
type="text"
v-model="data.matrikelnr"
name="matrikelnr"
@@ -404,8 +437,9 @@ export default {
</form-input>
<div class="col-4 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
label="Aktiv"
v-if="!config.hiddenFields.includes('aktiv')"
container-class="form-check stv-details-details-aktiv"
:label="$p.t('person', 'aktiv')"
type="checkbox"
v-model="data.aktiv"
name="aktiv"
@@ -415,8 +449,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Semester"
v-if="!config.hiddenFields.includes('semester')"
container-class="col-4 stv-details-details-semester"
:label="$p.t('lehre', 'semester')"
type="text"
v-model="data.semester"
name="semester"
@@ -424,8 +459,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Verband"
v-if="!config.hiddenFields.includes('verband')"
container-class="col-4 stv-details-details-verband"
:label="$p.t('lehre', 'verband')"
type="text"
v-model="data.verband"
name="verband"
@@ -433,8 +469,9 @@ export default {
>
</form-input>
<form-input
container-class="col-4"
label="Gruppe"
v-if="!config.hiddenFields.includes('gruppe')"
container-class="col-4 stv-details-details-gruppe"
:label="$p.t('lehre', 'gruppe')"
type="text"
v-model="data.gruppe"
name="gruppe"
@@ -444,8 +481,9 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
label="Alias"
v-if="!config.hiddenFields.includes('alias')"
container-class="col-4 stv-details-details-alias"
:label="$p.t('person', 'alias')"
type="text"
v-model="data.alias"
name="alias"
+181 -2
View File
@@ -30346,8 +30346,187 @@ array(
'insertvon' => 'system'
)
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'zugangscode',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zugangscode',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'access code',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'wahlname',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Wahlname',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'elective name',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'familienstand',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Familienstand',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'marital status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'foto',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Foto',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'photo',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'homepage',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Homepage',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'homepage',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'lehre',
'phrase' => 'verband',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Verband',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'verband',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'aktiv',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Aktiv',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'active',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'lehre',
'phrase' => 'error_no_person',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Keine Person gefunden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No Person found',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'lehre',
'phrase' => 'error_no_student',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Kein/e Student/in gefunden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No Student found',
'description' => '',
'insertvon' => 'system'
)
)
),
);