Merge branch 'feature-47784/FHC-4/CleanupTasks' into merge_FHC4_C4

This commit is contained in:
Harald Bamberger
2025-01-27 17:13:15 +01:00
31 changed files with 1852 additions and 605 deletions
+42
View File
@@ -0,0 +1,42 @@
<?php
$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-details-prestudent-name for name
'hiddenFields' => [
//propably used by FH-Communities
'aufnahmeschluessel', 'standort_code', 'facheinschlaegigBerufstaetig'
],
'hideUDFs' => false
]
];
// List of fields to show when ZGV_DOKTOR_ANZEIGEN is defined
$fieldsZgvDoktor = ['zgvdoktorort', 'zgvdoktordatum', 'zgvdoktornation', 'zgvdoktor_erfuellt', 'zgvdoktor_code'];
// List of fields to show when ZGV_ERFUELLT_ANZEIGEN is defined
$fieldsZgvErfuellt = ['zgv_erfuellt', 'zgvmas_erfuellt','zgvdoktor_erfuellt'];
//order important: to show zgf_erfuellt_doktor just in case visibility of doktor is true
if (!defined('ZGV_ERFUELLT_ANZEIGEN') || !ZGV_ERFUELLT_ANZEIGEN) {
$config['tabs']['prestudent']['hiddenFields'] = array_merge(
$config['tabs']['prestudent']['hiddenFields'], $fieldsZgvErfuellt
);
}
if (!defined('ZGV_DOKTOR_ANZEIGEN') || !ZGV_DOKTOR_ANZEIGEN) {
$config['tabs']['prestudent']['hiddenFields'] = array_merge(
$config['tabs']['prestudent']['hiddenFields'],
$fieldsZgvDoktor
);
}
@@ -45,7 +45,7 @@ class Address extends FHCAPI_Controller
$this->terminateWithSuccess($data);
}
public function getPlaces($plz)
public function getPlaces($plz = null)
{
$this->load->model('codex/Gemeinde_model', 'GemeindeModel');
@@ -53,7 +53,7 @@ class Address extends FHCAPI_Controller
$this->form_validation->set_data(['address.plz' => $plz]);
$this->form_validation->set_rules('address.plz', 'PLZ', 'numeric|less_than[10000]');
$this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric|less_than[10000]');
if (!$this->form_validation->run())
$this->terminateWithValidationErrors($this->form_validation->error_array());
@@ -46,14 +46,20 @@ class Config extends FHCAPI_Controller
'stv',
'konto'
]);
// Load Config
$this->load->config('stv');
}
public function student()
{
$result = [];
$config = $this->config->item('tabs');
$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'),
@@ -69,7 +75,8 @@ class Config extends FHCAPI_Controller
];
$result['prestudent'] = [
'title' => $this->p->t('stv', 'tab_prestudent'),
'component' => './Stv/Studentenverwaltung/Details/Prestudent.js'
'component' => './Stv/Studentenverwaltung/Details/Prestudent.js',
'config' => $config['prestudent']
];
$result['status'] = [
'title' => 'Status',
@@ -97,7 +97,14 @@ class Kontakt extends FHCAPI_Controller
|| $this->router->method == 'deleteContact'
|| $this->router->method == 'deleteBankverbindung'
) {
$id = current(array_slice($this->uri->rsegments, 2));
if($this->input->post('address_id'))
$id = $this->input->post('address_id');
if($this->input->post('adresse_id'))
$id = $this->input->post('adresse_id');
if($this->input->post('bankverbindung_id'))
$id = $this->input->post('bankverbindung_id');
if($this->input->post('kontakt_id'))
$id = $this->input->post('kontakt_id');
$model = 'person/Adresse_model';
if ($this->router->method == 'loadContact'
@@ -125,7 +132,12 @@ class Kontakt extends FHCAPI_Controller
}
public function getAdressen($person_id)
{
$this->AdresseModel->addSelect('public.tbl_adresse.*');
$this->AdresseModel->addSelect("public.tbl_adresse.*,
TO_CHAR (CASE
WHEN public.tbl_adresse.updateamum >= public.tbl_adresse.insertamum
THEN public.tbl_adresse.updateamum
ELSE public.tbl_adresse.insertamum
END::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS lastUpdate");
$this->AdresseModel->addSelect('t.*');
$this->AdresseModel->addSelect('f.firma_id');
$this->AdresseModel->addSelect('f.name as firmenname');
@@ -143,15 +155,19 @@ class Kontakt extends FHCAPI_Controller
public function addNewAddress($person_id)
{
$this->form_validation->set_rules('plz', 'PLZ', 'required|numeric', [
$this->form_validation->set_data(['address.plz' => $_POST['plz']]);
$this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'PLZ']),
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'PLZ'])
]);
if(isset($_POST['gemeinde']) && isset($_POST['ort']))
$this->form_validation->set_rules('plz', 'Postleitzahl', 'callback_validateLocationCombination', [
'validateLocationCombination' => $this->p->t('ui', 'error_location_combination')
]);
if(isset($_POST['gemeinde']) && isset($_POST['ort']) && isset($_POST['nation']) && $_POST['nation'] == 'A')
{
$this->form_validation->set_rules('address.plz', 'Postleitzahl', 'callback_validateLocationCombination', [
'validateLocationCombination' => $this->p->t('ui', 'error_location_combination')
]);
}
if ($this->form_validation->run() == false)
{
@@ -196,25 +212,33 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function updateAddress($address_id)
public function updateAddress()
{
$address_id = $this->input->post('adresse_id');
$this->form_validation->set_data(['address.plz' => $_POST['plz']]);
$uid = getAuthUID();
$this->form_validation->set_rules('plz', 'PLZ', 'required|numeric', [
$this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'PLZ']),
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'PLZ'])
]);
if(isset($_POST['gemeinde']) && isset($_POST['ort']))
$this->form_validation->set_rules('plz', 'Postleitzahl', 'callback_validateLocationCombination', [
if(isset($_POST['gemeinde']) && ($_POST['gemeinde'] != '')
&& isset($_POST['ort']) && ($_POST['ort'] != '')
&& isset($_POST['nation']) && ($_POST['nation'] == 'A')
&& isset($_POST['plz']) && ($_POST['plz'] != '') )
{
$this->form_validation->set_rules('address.plz', 'Postleitzahl', 'callback_validateLocationCombination', [
'validateLocationCombination' => $this->p->t('ui', 'error_location_combination')
]);
}
if ($this->form_validation->run() == false)
{
@@ -272,15 +296,15 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function loadAddress($adresse_id)
public function loadAddress()
{
$adresse_id = $this->input->post('address_id');
$this->load->model('person/Adresse_model', 'AdresseModel');
$this->AdresseModel->addSelect('public.tbl_adresse.*');
@@ -306,8 +330,10 @@ class Kontakt extends FHCAPI_Controller
$this->terminateWithSuccess(current(getData($result)) ? : null);
}
public function deleteAddress($adresse_id)
public function deleteAddress()
{
$adresse_id = $this->input->post('address_id');
$this->load->model('person/Adresse_model', 'AdresseModel');
$result = $this->AdresseModel->load([
'adresse_id'=> $adresse_id,
@@ -366,10 +392,10 @@ class Kontakt extends FHCAPI_Controller
$this->load->model('organisation/standort_model', 'StandortModel');
$result = $this->StandortModel->searchStandorte($searchString);
if (isError($result)) {
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess($result ?: []);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function getStandorteByFirma($firma_id)
@@ -418,8 +444,9 @@ class Kontakt extends FHCAPI_Controller
}
}
public function loadContact($kontakt_id)
public function loadContact()
{
$kontakt_id = $this->input->post('kontakt_id');
$this->load->model('person/Kontakt_model', 'KontaktModel');
$this->KontaktModel->addSelect('*, public.tbl_kontakt.*');
@@ -439,7 +466,6 @@ class Kontakt extends FHCAPI_Controller
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Kontakt_id']), self::ERROR_TYPE_GENERAL);
}
// $this->outputJsonSuccess(current(getData($result)));
$this->terminateWithSuccess(current(getData($result)));
}
@@ -495,8 +521,9 @@ class Kontakt extends FHCAPI_Controller
return $this->outputJsonSuccess(true);
}
public function updateContact($kontakt_id)
public function updateContact()
{
$kontakt_id = $this->input->post('kontakt_id');
$this->load->model('person/Kontakt_model', 'KontaktModel');
if(!$kontakt_id)
@@ -523,13 +550,6 @@ class Kontakt extends FHCAPI_Controller
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
/* if(isset($_POST['standort']))
{
$standort_id = $_POST['standort']['standort_id'];
}
else
$standort_id = null;*/
$uid = getAuthUID();
$kontakttyp = $this->input->post('kontakttyp');
$anmerkung = $this->input->post('anmerkung');
@@ -538,8 +558,6 @@ class Kontakt extends FHCAPI_Controller
$person_id = $this->input->post('person_id');
$standort_id = $this->input->post('standort_id');
//return $this->terminateWithError("in update " . $standort_id, self::ERROR_TYPE_GENERAL);
$result = $this->KontaktModel->update(
[
'kontakt_id' => $kontakt_id
@@ -557,15 +575,14 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function deleteContact($kontakt_id)
public function deleteContact()
{
$kontakt_id = $this->input->post('kontakt_id');
$this->load->model('person/Kontakt_model', 'KontaktModel');
$result = $this->KontaktModel->delete(
@@ -643,15 +660,15 @@ class Kontakt extends FHCAPI_Controller
'orgform_kurzbz' => $orgform_kurzbz
]
);
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function loadBankverbindung($bankverbindung_id)
public function loadBankverbindung()
{
$bankverbindung_id = $this->input->post('bankverbindung_id');
$this->load->model('person/Bankverbindung_model', 'BankverbindungModel');
$this->BankverbindungModel->addSelect('*');
@@ -719,15 +736,15 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function deleteBankverbindung($bankverbindung_id)
public function deleteBankverbindung()
{
$bankverbindung_id = $this->input->post('bankverbindung_id');
$this->load->model('person/Bankverbindung_model', 'BankverbindungModel');
$result = $this->BankverbindungModel->delete(
@@ -19,6 +19,7 @@ class Prestudent extends FHCAPI_Controller
'getAufmerksamdurch' => ['admin:r', 'assistenz:r'],
'getBerufstaetigkeit' => ['admin:r', 'assistenz:r'],
'getTypenStg' => ['admin:r', 'assistenz:r'],
'getBisstandort' => ['admin:r', 'assistenz:r'],
'getStudienplaene' => ['admin:r', 'assistenz:r'],
'getStudiengang' => ['admin:r', 'assistenz:r']
]);
@@ -265,6 +266,17 @@ class Prestudent extends FHCAPI_Controller
return $this->terminateWithSuccess(getData($result) ?: []);
}
public function getBisstandort()
{
$this->load->model('codex/Bisstandort_model', 'BisstandortModel');
$result = $this->BisstandortModel->load();
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->terminateWithSuccess(getData($result) ?: []);
}
public function getStudienplaene($prestudent_id)
{
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
@@ -647,15 +647,8 @@ class Status extends FHCAPI_Controller
return $this->outputJsonSuccess(true);
}
public function loadStatus()
public function loadStatus($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester)
{
$_POST = json_decode(utf8_encode($this->input->raw_input_stream), true);
$prestudent_id = $this->input->post('prestudent_id');
$status_kurzbz = $this->input->post('status_kurzbz');
$ausbildungssemester = $this->input->post('ausbildungssemester');
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
$result = $this->PrestudentstatusModel->loadWhere(
array(
'prestudent_id' => $prestudent_id,
@@ -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
+1
View File
@@ -309,6 +309,7 @@ abstract class Notiz_Controller extends FHCAPI_Controller
}
//update(1) loading all dms-entries with this notiz_id
$dms_id_arr = [];
$this->load->model('person/Notizdokument_model', 'NotizdokumentModel');
$this->NotizdokumentModel->addJoin('campus.tbl_dms_version', 'dms_id');
@@ -0,0 +1,14 @@
<?php
class Bisstandort_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'bis.tbl_bisstandort';
$this->pk = 'standort_code';
}
}
+4 -2
View File
@@ -34,8 +34,10 @@
<?php
$configArray = [
'generateAlias' => !defined('GENERATE_ALIAS_STUDENT') ? true : GENERATE_ALIAS_STUDENT,
'showZgvDoktor' => !defined('ZGV_DOKTOR_ANZEIGEN') ? false : ZGV_DOKTOR_ANZEIGEN,
'showZgvErfuellt' => !defined('ZGV_ERFUELLT_ANZEIGEN') ? false : ZGV_ERFUELLT_ANZEIGEN
//replaced by possibility to hide each formular field via config stv.php
#'showZgvDoktor' => !defined('ZGV_DOKTOR_ANZEIGEN') ? false : ZGV_DOKTOR_ANZEIGEN,
#'showZgvErfuellt' => !defined('ZGV_ERFUELLT_ANZEIGEN') ? false : ZGV_ERFUELLT_ANZEIGEN
];
?>
+4 -4
View File
@@ -5,8 +5,8 @@ export default {
getUid(){
return this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');
},
addNewNotiz(id, formData) {
return this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
addNewNotiz(form, id, formData) {
return this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
formData
);
},
@@ -27,8 +27,8 @@ export default {
id
});
},
updateNotiz(notiz_id, formData){
return this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
updateNotiz(form, notiz_id, formData){
return this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
formData
);
},
+8
View File
@@ -2,12 +2,20 @@ import verband from './stv/verband.js';
import students from './stv/students.js';
import filter from './stv/filter.js';
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,
students,
filter,
konto,
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
);
},
}
+82
View File
@@ -0,0 +1,82 @@
export default {
//------------- address.js-----------
getAdressen (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);
},
addNewAddress(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/addNewAddress/' + id,
data
);
},
loadAddress(address_id){
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});
},
updateAddress(address_id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/updateAddress/' + address_id,
data
);
},
deleteAddress(address_id) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});
},
getPlaces(plz) {
return this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);
},
getFirmen(searchString) {
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);
},
getNations() {
return this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');
},
getAdressentypen() {
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');
},
//------------- bankverbindung.js-----------
getBankverbindung (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);
},
addNewBankverbindung(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,
data
);
},
loadBankverbindung(bankverbindung_id){
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});
},
updateBankverbindung(bankverbindung_id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,
data
);
},
deleteBankverbindung(bankverbindung_id) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});
},
//------------- contact.js-----------
getKontakte (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);
},
addNewContact(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/addNewContact/' + id,
data
);
},
loadContact(kontakt_id){
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});
},
updateContact(kontakt_id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,
data
);
},
deleteContact(kontakt_id) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});
},
getStandorteByFirma(searchString){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);
},
getKontakttypen(){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');
}
};
+84
View File
@@ -0,0 +1,84 @@
export default {
//------------- Prestudent.js------------------------------------------------------
get(prestudent_id){
return this.$fhcApi.post('api/frontend/v1/stv/prestudent/get/' + prestudent_id);
},
updatePrestudent(prestudent_id, data){
return this.$fhcApi.post('api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,
data
);
},
getBezeichnungZGV() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');
},
getBezeichnungMZgv() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');
},
getBezeichnungDZgv() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');
},
getStgs() {
return this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');
},
getAusbildung() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');
},
getAufmerksamdurch() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');
},
getBerufstaetigkeit() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');
},
getTypenStg() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');
},
getBisstandort() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');
},
//------------- MultiStatus.js------------------------------------------------------
getHistoryPrestudent (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);
},
getMaxSem(studiengang_kzs) {
return this.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});
},
advanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
confirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
isLastStatus(id) {
return this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);
},
deleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
getLastBismeldestichtag() {
return this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');
},
//------------- History.js------------------------------------------------------
getHistoryPrestudents (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);
},
}
+59
View File
@@ -0,0 +1,59 @@
export default {
//------------- Modal.js------------------------------------------------------
insertStatus(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/status/insertStatus/' + id,
data
);
},
loadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post(
'api/frontend/v1/stv/status/loadStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
updateStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {
return this.$fhcApi.post(
'api/frontend/v1/stv/status/updateStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester,
data
);
},
getStudienplaene(prestudent_id) {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);
},
getStudiengang(prestudent_id) {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);
},
getStatusgruende() {
return this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');
},
getStati() {
return this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');
},
//------------- Dropdown.js------------------------------------------------------
addStudent(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,
data,
{errorHeader: id}
);
},
changeStatus(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,
data,
{errorHeader: id}
);
},
getStatusarray() {
return this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');
}
}
@@ -66,7 +66,7 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-print"></i>';
button.title = bernahmebestätigung drucken';
button.title = this.$p.t('betriebsmittel', 'btn_printUebernahmebestaetigung');
let cellData = cell.getData();
button.addEventListener(
'click',
@@ -82,7 +82,7 @@ export default {
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = 'Betriebsmittel bearbeiten';
button.title = this.$p.t('betriebsmittel', 'btn_editBetriebsmittel');
button.addEventListener(
'click',
(event) =>
@@ -93,7 +93,7 @@ export default {
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = 'Betriebsmittel löschen';
button.title = this.$p.t('betriebsmittel', 'btn_deleteBetriebsmittel');
button.addEventListener(
'click',
() =>
@@ -117,26 +117,43 @@ export default {
event: 'tableBuilt',
handler: async() => {
await this.$p.loadCategory(['wawi', 'global', 'infocenter']);
await this.$p.loadCategory(['wawi', 'global', 'infocenter', 'betriebsmittel', 'person']);
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('nummer').component.updateDefinition({
title: this.$p.t('wawi', 'nummer')
});
cm.getColumnByField('betriebsmitteltyp').component.updateDefinition({
title: this.$p.t('global', 'typ')
});
cm.getColumnByField('anmerkung').component.updateDefinition({
title: this.$p.t('global', 'anmerkung')
});
cm.getColumnByField('format_retour').component.updateDefinition({
title: this.$p.t('wawi', 'retourdatum')
});
cm.getColumnByField('beschreibung').component.updateDefinition({
title: this.$p.t('global', 'beschreibung')
});
cm.getColumnByField('kaution').component.updateDefinition({
title: this.$p.t('infocenter', 'kaution')
});
cm.getColumnByField('format_ausgabe').component.updateDefinition({
title: this.$p.t('wawi', 'ausgabedatum')
});
cm.getColumnByField('betriebsmittel_id').component.updateDefinition({
title: this.$p.t('ui', 'betriebsmittel_id')
});
cm.getColumnByField('betriebsmittelperson_id').component.updateDefinition({
title: this.$p.t('ui', 'betriebsmittelperson_id')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('uid').component.updateDefinition({
title: this.$p.t('person', 'uid')
});
}
}
],
@@ -261,7 +278,7 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="Betriebsmittel"
:new-btn-label="this.$p.t('ui', 'betriebsmittel')"
@click:new="actionNewBetriebsmittel"
>
</core-filter-cmpt>
@@ -278,7 +295,7 @@ export default {
<div class="row mb-3">
<form-input
type="select"
:label="$p.t('global/typ')"
:label="$p.t('global/typ') + ' *'"
name="betriebsmitteltyp"
v-model="formData.betriebsmitteltyp"
:disabled="!statusNew"
+132 -134
View File
@@ -126,6 +126,7 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.title = this.$p.t('ui', 'notiz_edit');
button.innerHTML = '<i class="fa fa-edit"></i>';
button.addEventListener(
'click',
@@ -136,6 +137,7 @@ export default {
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.title = this.$p.t('notiz', 'notiz_delete');
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.addEventListener(
'click',
@@ -161,7 +163,7 @@ export default {
event: 'tableBuilt',
handler: async () => {
await this.$p.loadCategory(['notiz', 'global']);
await this.$p.loadCategory(['notiz', 'global', 'ui']);
let cm = this.$refs.table.tabulator.columnManager;
@@ -202,18 +204,24 @@ export default {
visible: this.showVariables.showLastupdate
});
cm.getColumnByField('notiz_id').component.updateDefinition({
visible: this.showVariables.showNotiz_id
visible: this.showVariables.showNotiz_id,
title: this.$p.t('ui', 'notiz_id')
});
cm.getColumnByField('notizzuordnung_id').component.updateDefinition({
visible: this.showVariables.showNotizzuordnung_id
visible: this.showVariables.showNotizzuordnung_id,
title: this.$p.t('ui', 'notizzuordnung_id')
});
cm.getColumnByField('type_id').component.updateDefinition({
visible: this.showVariables.showType_id
visible: this.showVariables.showType_id,
title: this.$p.t('ui', 'type_id')
});
cm.getColumnByField('id').component.updateDefinition({
visible: this.showVariables.showId
visible: this.showVariables.showId,
title: this.$p.t('ui', 'extension_id')
});
cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});
}
}
],
@@ -257,9 +265,15 @@ export default {
},
methods: {
actionDeleteNotiz(notiz_id) {
this.loadNotiz(notiz_id).then(() => {
this.$refs.deleteNotizModal.show();
});
this.loadNotiz(notiz_id);
this.$fhcAlert
.confirmDelete()
.then(result => result
? notiz_id
: Promise.reject({handled: true}))
.then(this.deleteNotiz)
.catch(this.$fhcAlert.handleSystemError);
},
actionEditNotiz(notiz_id) {
this.loadNotiz(notiz_id).then(() => {
@@ -302,7 +316,9 @@ export default {
formData.append('data', JSON.stringify(this.notizData));
Object.entries(this.notizData.anhang).forEach(([k, v]) => formData.append(k, v));
return this.endpoint.addNewNotiz(this.id, formData)
this.$refs.formNotiz.clearValidation();
return this.endpoint.addNewNotiz(this.$refs.formNotiz, this.id, formData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetFormData();
@@ -318,10 +334,8 @@ export default {
},
deleteNotiz(notiz_id) {
return this.endpoint.deleteNotiz(notiz_id, this.typeId, this.id)
//return this.$fhcApi.post(this.endpoint + 'deleteNotiz/', this.param)
.then(result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
this.$refs.deleteNotizModal.hide();
this.reload();
this.resetFormData();
})
@@ -354,7 +368,8 @@ export default {
formData.append('data', JSON.stringify(this.notizData));
Object.entries(this.notizData.anhang).forEach(([k, v]) => formData.append(k, v));
return this.endpoint.updateNotiz(notiz_id, formData)
this.$refs.formNotiz.clearValidation();
return this.endpoint.updateNotiz(this.$refs.formNotiz, notiz_id, formData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetFormData();
@@ -372,7 +387,9 @@ export default {
this.$refs.table.reloadTable();
},
resetFormData() {
this.$refs.formc.reset();
//TODO(Manu) check ref, needed here?
//this.$refs.formNotiz.reset();
//this.$refs.formc.reset();
this.notizData = {
typeId: this.typeId,
titel: null,
@@ -405,7 +422,7 @@ export default {
const vm = this;
tinymce.init({
target: this.$refs.editor, //Important: not selector: to enable multiple import of component
target: this.$refs.editor.$refs.input, //Important: not selector: to enable multiple import of component
//height: 800,
//plugins: ['lists'],
//toolbar: " blocks | bold italic underline | alignleft aligncenter alignright alignjustify",
@@ -493,19 +510,9 @@ export default {
},
template: `
<div class="core-notiz">
<div v-if="notizLayout=='classicFas'">
<!--Modal: deleteNotizModal-->
<BsModal ref="deleteNotizModal">
<template #title>Notiz löschen</template>
<template #default>
<p>Notiz wirklich löschen?</p>
</template>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetFormData">Abbrechen</button>
<button ref="Close" type="button" class="btn btn-primary" @click="deleteNotiz(notizData.notiz_id)">OK</button>
</template>
</BsModal>
<core-filter-cmpt
ref="table"
:tabulator-options="tabulatorOptions"
@@ -514,14 +521,14 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="Notiz"
:new-btn-label="this.$p.t('global', 'notiz')"
@click:new="actionNewNotiz"
>
</core-filter-cmpt>
<br>
<form ref="formc" @submit.prevent class="row pt-3">
<form-form ref="formNotiz" @submit.prevent class="row pt-3">
<br><br>
<div class="pt-2">
<div class="row mb-3">
@@ -538,28 +545,41 @@ export default {
</div>
<div class="row mb-3">
<label for="titel" class="form-label col-sm-2">{{$p.t('global','titel')}} *</label>
<div class="col-sm-7">
<input type="text" v-model="notizData.titel" class="form-control">
</div>
<form-input
container-class="col-12"
:label="$p.t('global','titel') + ' *'"
type="text"
v-model="notizData.titel"
name="titel"
>
</form-input>
</div>
<div class="row mb-3">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}} *</label>
<div class="row mb-3">
<!-- TinyMce 5 -->
<div v-if="showTinyMce" class="col-sm-7">
<textarea
<div v-if="showTinyMce" class="col-sm-12">
<form-input
ref="editor"
:label="$p.t('global','text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
>
</form-input>
</div>
<div v-else class="col-sm-12">
<form-input
ref="editor"
:label="$p.t('global','text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
class="form-control"
:value="notizData.text"
@input="updateText">
</textarea>
</div>
<div v-else class="col-sm-7">
<textarea rows="5" cols="75" v-model="notizData.text" class="form-control"></textarea>
>
</form-input>
</div>
</div>
</div>
@@ -645,22 +665,10 @@ export default {
<button v-if="notizData.statusNew" type="button" class="btn btn-primary" @click="addNewNotiz()"> {{$p.t('studierendenantrag', 'btn_new')}}</button>
<button v-else type="button" class="btn btn-primary" @click="updateNotiz(notizData.notiz_id)"> {{$p.t('ui', 'speichern')}}</button>
</form>
</form-form>
</div>
<div v-else-if="notizLayout=='twoColumnsFormRight'" class="notiz-notiz">
<!--Modal: deleteNotizModal-->
<BsModal ref="deleteNotizModal">
<template #title>Notiz löschen</template>
<template #default>
<p>Notiz wirklich löschen?</p>
</template>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetFormData">Abbrechen</button>
<button ref="Close" type="button" class="btn btn-primary" @click="deleteNotiz(notizData.notiz_id)">OK</button>
</template>
</BsModal>
<div class="row">
<div class="col-sm-6 pt-6">
@@ -673,19 +681,14 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="Notiz"
:new-btn-label="this.$p.t('global', 'notiz')"
@click:new="actionNewNotiz"
>
</core-filter-cmpt>
</div>
<div class="col-sm-6">
<!--
<p v-if="notizData.statusNew" class="fw-bold">{{$p.t('notiz','notiz_new')}} <span> [{{notizData.typeId}}]</span></p>
<p v-else class="fw-bold">{{$p.t('notiz','notiz_edit')}} <span> [{{notizData.typeId}}]</span></p>
-->
<form ref="formc" @submit.prevent class="row pt-3">
<form-form ref="formNotiz" @submit.prevent class="row pt-3">
<div class="col pt-3">
<p v-if="notizData.statusNew" class="fw-bold">{{$p.t('notiz','notiz_new')}} <span> [{{notizData.typeId}}]</span></p>
<p v-else class="fw-bold">{{$p.t('notiz','notiz_edit')}} <span> [{{notizData.typeId}}]</span></p>
@@ -710,20 +713,29 @@ export default {
<div class="row mb-3">
<!-- TinyMce 5 -->
<div v-if="showTinyMce" class="col-sm-12">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}} *</label>
<textarea
<form-input
ref="editor"
:label="$p.t('global','text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
class="form-control"
:value="notizData.text"
@input="updateText">
</textarea>
>
</form-input>
</div>
<div v-else class="col-sm-12">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}} *</label>
<textarea rows="5" cols="75" v-model="notizData.text" class="form-control"></textarea>
<form-input
ref="editor"
:label="$p.t('global','text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
>
</form-input>
</div>
</div>
@@ -828,12 +840,6 @@ export default {
>
</form-input>
</div>
<!--
<label for="bis" class="form-label col-sm-2">{{$p.t('notiz','erledigt')}}</label>
<div class="col-sm-1">
<input type="checkbox" v-model="notizData.erledigt">
</div>
-->
</div>
</div>
@@ -843,27 +849,16 @@ export default {
<p class="small">{{notizData.lastupdate}}</p>
</div>
</div>
</form>
</form-form>
</div>
</div>
</div>
<div v-else-if="notizLayout=='twoColumnsFormLeft'" class="notiz-notiz">
<!--Modal: deleteNotizModal-->
<BsModal ref="deleteNotizModal">
<template #title>Notiz löschen</template>
<template #default>
<p>Notiz wirklich löschen?</p>
</template>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetFormData">Abbrechen</button>
<button ref="Close" type="button" class="btn btn-primary" @click="deleteNotiz(notizData.notiz_id)">OK</button>
</template>
</BsModal>
<div class="row">
<div class="col-sm-6">
<form ref="formc" @submit.prevent class="row pt-3">
<form-form ref="formNotiz" @submit.prevent class="row pt-3">
<div class="col pt-3">
<p v-if="notizData.statusNew" class="fw-bold">{{$p.t('notiz','notiz_new')}} <span> [{{notizData.typeId}}]</span></p>
<p v-else class="fw-bold">{{$p.t('notiz','notiz_edit')}} <span> [{{notizData.typeId}}]</span></p>
@@ -883,19 +878,29 @@ export default {
<div class="row mb-3">
<!-- TinyMce 5 -->
<div v-if="showTinyMce" class="col-sm-12">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}} *</label>
<textarea
ref="editor"
rows="5"
cols="75"
class="form-control"
:value="notizData.text"
@input="updateText"></textarea>
<form-input
ref="editor"
:label="$p.t('global', 'text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
>
</form-input>
</div>
<div v-else class="col-sm-12">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}} *</label>
<textarea rows="5" cols="75" v-model="notizData.text" class="form-control"></textarea>
<form-input
ref="editor"
:label="$p.t('global','text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
>
</form-input>
</div>
</div>
@@ -1001,12 +1006,6 @@ export default {
>
</form-input>
</div>
<!--
<label for="bis" class="form-label col-sm-2">{{$p.t('notiz','erledigt')}}</label>
<div class="col-sm-1">
<input type="checkbox" v-model="notizData.erledigt">
</div>
-->
</div>
</div>
@@ -1021,7 +1020,7 @@ export default {
<button v-if="notizData.statusNew" class="btn btn-primary" @click="addNewNotiz()"> {{$p.t('studierendenantrag', 'btn_new')}}</button>
<button v-else class="btn btn-primary" @click="updateNotiz(notizData.notiz_id)"> {{$p.t('ui', 'speichern')}}</button>
</div>
</form>
</form-form>
</div>
<div class="col-sm-6 pt-6">
@@ -1034,7 +1033,7 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="Notiz"
:new-btn-label="this.$p.t('global', 'notiz')"
@click:new="actionNewNotiz"
>
</core-filter-cmpt>
@@ -1043,17 +1042,6 @@ export default {
</div>
<div v-else-if="notizLayout=='popupModal'" class="notiz-notiz">
<!--Modal: deleteNotizModal-->
<BsModal ref="deleteNotizModal">
<template #title>Notiz löschen</template>
<template #default>
<p>Notiz wirklich löschen?</p>
</template>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetFormData">Abbrechen</button>
<button ref="Close" type="button" class="btn btn-primary" @click="deleteNotiz(notizData.notiz_id)">OK</button>
</template>
</BsModal>
<BsModal ref="NotizModal">
<template #title>
@@ -1062,7 +1050,7 @@ export default {
</template>
<template #default>
<div>
<form ref="formc" @submit.prevent class="row">
<form-form ref="formNotiz" @submit.prevent class="row">
<div class="row mb-3">
<form-input
container-class="col-12"
@@ -1077,19 +1065,29 @@ export default {
<div class="row mb-3">
<!-- TinyMce 5 -->
<div v-if="showTinyMce" class="col-sm-12">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}} *</label>
<textarea
ref="editor"
rows="5"
cols="75"
class="form-control"
:value="notizData.text"
@input="updateText"></textarea>
<form-input
ref="editor"
:label="$p.t('global','text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
>
</form-input>
</div>
<div v-else class="col-sm-12">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}} *</label>
<textarea rows="5" cols="75" v-model="notizData.text" class="form-control"></textarea>
<form-input
ref="editor"
:label="$p.t('global','text') + ' *'"
type="textarea"
v-model="notizData.text"
name="text"
rows="5"
cols="75"
>
</form-input>
</div>
</div>
@@ -1209,7 +1207,7 @@ export default {
<button v-if="notizData.statusNew" class="btn btn-primary" @click="addNewNotiz()"> {{$p.t('studierendenantrag', 'btn_new')}}</button>
<button v-else class="btn btn-primary" @click="updateNotiz(notizData.notiz_id)"> {{$p.t('ui', 'speichern')}}</button>
</div>
</form>
</form-form>
</div>
</template>
</BsModal>
@@ -1223,7 +1221,7 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="Notiz"
:new-btn-label="this.$p.t('global', 'notiz')"
@click:new="actionNewNotiz"
>
</core-filter-cmpt>
@@ -45,8 +45,6 @@ export default {
cisRoot: this.cisRoot,
activeAddonBewerbung: this.activeAddons.split(';').includes('bewerbung'),
configGenerateAlias: this.config.generateAlias,
configShowZgvDoktor: this.config.showZgvDoktor,
configShowZgvErfuellt: this.config.showZgvErfuellt,
hasBpkPermission: this.permissions['student/bpk'],
hasAliasPermission: this.permissions['student/alias'],
hasPrestudentPermission: this.permissions['basis/prestudent'],
@@ -37,25 +37,17 @@ export default {
}
},
props: {
modelValue: Object
modelValue: Object,
config: {
type: Object,
default: {}
}
},
data() {
return {
test: {udf_viaf: 'TEST'},
familienstaende: {
"": "--keine Auswahl--",
"g": "geschieden",
"l": "ledig",
"v": "verheiratet",
"w": "verwitwet"
},
original: null,
data: null,
changed: {},
udfChanges: false,
studentIn: null,
gebDatumIsValid: false,
gebDatumIsInvalid: false
changed: {}
}
},
computed: {
@@ -67,6 +59,15 @@ export default {
},
noImageSrc() {
return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/profilbild_dummy.jpg';
},
familienstaende() {
return {
"": "-- " + this.$p.t('fehlermonitoring', 'keineAuswahl') + " --",
"g": this.$p.t('person', 'geschieden'),
"l": this.$p.t('person', 'ledig'),
"v": this.$p.t('person', 'verheiratet'),
"w": this.$p.t('person', 'verwitwet'),
};
}
},
watch: {
@@ -74,7 +75,6 @@ export default {
this.updateStudent(n);
},
data: {
// TODO(chris): use @input instead?
handler(n) {
let res = {};
for (var k in this.original) {
@@ -82,7 +82,6 @@ export default {
if (new Date(this.original[k]).toString() != new Date(n[k]).toString())
res[k] = n[k];
} else {
// TODO(chris): null && ""? should there be an exception for this?
if (this.original[k] !== n[k] && !(this.original[k] === null && n[k] === ""))
res[k] = n[k];
}
@@ -94,9 +93,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 +107,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};
@@ -129,28 +125,27 @@ export default {
created() {
this.updateStudent(this.modelValue);
},
//TODO(chris): Phrasen
//TODO(chris): Geburtszeit? Anzahl der Kinder?
template: `
<core-form ref="form" class="stv-details-details" @submit.prevent="save">
<div class="position-sticky top-0 z-1">
<button type="submit" class="btn btn-primary position-absolute top-0 end-0" :disabled="!changedLength">Speichern</button>
<button type="submit" class="btn btn-primary position-absolute top-0 end-0" :disabled="!changedLength">{{$p.t('ui', 'speichern')}}</button>
</div>
<fieldset class="overflow-hidden">
<legend>Person</legend>
<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 +153,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 +165,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 +175,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 +185,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 +197,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 +207,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 +217,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 +229,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 +241,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 +257,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,21 +267,22 @@ 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"
>
<option value="">-- keine Auswahl --</option>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<option v-for="nation in lists.nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</form-input>
</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 +290,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,19 +302,20 @@ 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"
>
<option value="">-- keine Auswahl --</option>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<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 +323,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 +335,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 +345,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 +357,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 +367,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 +377,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"
@@ -376,17 +389,26 @@ export default {
</div>
</template>
<div v-else>
Loading...
{{$p.t('ui', 'dropdownLoading')}}...
</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 +416,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 +427,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 +439,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 +449,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 +459,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 +471,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"
@@ -455,7 +483,7 @@ export default {
</div>
</template>
<div v-else>
Loading...
{{$p.t('ui', 'dropdownLoading')}}...
</div>
</fieldset>
</core-form>`
@@ -18,10 +18,15 @@ export default{
uid: Number
},
data() {
return{
return {
tabulatorOptions: {
ajaxURL: 'api/frontend/v1/stv/kontakt/getAdressen/' + this.uid,
ajaxRequestFunc: this.$fhcApi.get,
ajaxURL: 'dummy',
ajaxRequestFunc: this.$fhcApi.factory.stv.kontakt.getAdressen,
ajaxParams: () => {
return {
id: this.uid
};
},
ajaxResponse: (url, params, response) => response.data,
//autoColumns: true,
columns:[
@@ -57,10 +62,10 @@ export default{
{title:"Adresse_id", field:"adresse_id", visible:false},
{title:"Person_id", field:"person_id", visible:false},
{title:"Name", field:"name", visible:false},
{title:"letzte Änderung", field:"updateamum", visible:false},
{title:"letzte Änderung", field:"lastupdate", visible:false},
{title:"Rechnungsadresse", field:"rechnungsadresse", visible:false,
formatter: (cell, formatterParams, onRendered) => {
let output = cell.getValue() ? "ja" : "nein";
let output = cell.getValue() ? this.$p.t('ui','ja') : this.$p.t('ui','nein');
return output;
}
},
@@ -74,6 +79,7 @@ export default{
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = this.$p.t('person', 'adresse_edit');
button.addEventListener('click', (event) =>
this.actionEditAdress(cell.getData().adresse_id)
);
@@ -82,9 +88,15 @@ export default{
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.addEventListener('click', () =>
this.actionDeleteAdress(cell.getData().adresse_id)
);
button.title = this.$p.t('person', 'adresse_delete');
button.addEventListener('click', () => {
if (cell.getData().heimatadresse)
this.$fhcAlert.alertError(this.$p.t('person', 'error_deleteHomeAdress'));
else
this.actionDeleteAdress(cell.getData().adresse_id)
});
container.append(button);
return container;
@@ -103,7 +115,7 @@ export default{
{
event: 'tableBuilt',
handler: async () => {
await this.$p.loadCategory(['notiz','global','person', 'ui']);
await this.$p.loadCategory(['notiz', 'global', 'person', 'ui']);
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('bezeichnung').component.updateDefinition({
@@ -127,6 +139,9 @@ export default{
cm.getColumnByField('heimatadresse').component.updateDefinition({
title: this.$p.t('person', 'heimatadresse')
});
cm.getColumnByField('zustelladresse').component.updateDefinition({
title: this.$p.t('person', 'zustelladresse')
});
cm.getColumnByField('co_name').component.updateDefinition({
title: this.$p.t('person', 'co_name')
});
@@ -136,7 +151,7 @@ export default{
cm.getColumnByField('firmenname').component.updateDefinition({
title: this.$p.t('person', 'firma')
});
cm.getColumnByField('updateamum').component.updateDefinition({
cm.getColumnByField('lastupdate').component.updateDefinition({
title: this.$p.t('notiz', 'letzte_aenderung')
});
cm.getColumnByField('rechnungsadresse').component.updateDefinition({
@@ -145,6 +160,18 @@ export default{
cm.getColumnByField('anmerkung').component.updateDefinition({
title: this.$p.t('global', 'anmerkung')
});
cm.getColumnByField('firma_id').component.updateDefinition({
title: this.$p.t('ui', 'firma_id')
});
cm.getColumnByField('adresse_id').component.updateDefinition({
title: this.$p.t('ui', 'adresse_id')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
/* cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});*/
}
}
],
@@ -153,7 +180,9 @@ export default{
heimatadresse: true,
rechnungsadresse: false,
typ: 'h',
nation: 'A'
nation: 'A',
address: {plz: null},
plz: null
},
statusNew: true,
places: [],
@@ -164,8 +193,9 @@ export default{
filteredFirmen: [],
abortController: {
suggestions: null,
places: null
}
places: null,
firmen: null
},
}
},
computed:{
@@ -189,60 +219,59 @@ export default{
this.resetModal();
this.$refs.adressModal.show();
},
actionEditAdress(adress_id) {
actionEditAdress(adresse_id) {
this.statusNew = false;
this.loadAdress(adress_id).then(() => {
this.loadAdress(adresse_id).then(() => {
if(this.addressData.adresse_id)
{
this.loadPlaces(this.addressData.plz);
this.addressData.address.plz = this.addressData.plz;
// delete this.addressData.plz;
this.loadPlaces(this.addressData.address.plz);
this.$refs.adressModal.show();
}
});
},
actionDeleteAdress(adress_id) {
this.loadAdress(adress_id).then(() => {
if(this.addressData.adresse_id)
if(this.addressData.heimatadresse)
this.$fhcAlert.alertError(this.$p.t('person', 'error_deleteHomeAdress'));
else {
this.$fhcAlert
.confirmDelete()
.then(result => result
? adress_id
: Promise.reject({handled: true}))
.then(this.deleteAddress)
.catch(this.$fhcAlert.handleSystemError);
}
});
actionDeleteAdress(adresse_id) {
this.$fhcAlert
.confirmDelete()
.then(result => result
? adresse_id
: Promise.reject({handled: true}))
.then(this.deleteAddress)
.catch(this.$fhcAlert.handleSystemError);
},
addNewAddress(addressData) {
this.$fhcApi.post('api/frontend/v1/stv/kontakt/addNewAddress/' + this.uid,
this.addressData
).then(response => {
this.addressData.plz = this.addressData.address.plz;
return this.$refs.addressData.factory.stv.kontakt.addNewAddress(this.uid, this.addressData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal('adressModal');
this.resetModal();
}).catch(this.$fhcAlert.handleSystemError)
.finally(() => {
window.scrollTo(0, 0);
//window.scrollTo(0, 0);
this.reload();
});
},
reload() {
this.$refs.table.reloadTable();
},
loadAdress(adress_id) {
loadAdress(adresse_id) {
this.statusNew = false;
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/loadAddress/' + adress_id)
return this.$fhcApi.factory.stv.kontakt.loadAddress(adresse_id)
.then(result => {
this.addressData = result.data;
return result;
this.addressData = result.data;
this.addressData.address = {};
this.addressData.address.plz = this.addressData.plz || null;
// delete this.addressData.plz;
return result;
})
.catch(this.$fhcAlert.handleSystemError);
},
updateAddress(adress_id) {
this.$fhcApi.post('api/frontend/v1/stv/kontakt/updateAddress/' + adress_id,
updateAddress(adresse_id) {
this.addressData.plz = this.addressData.address.plz;
return this.$refs.addressData.factory.stv.kontakt.updateAddress(adresse_id,
this.addressData
).then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
@@ -250,12 +279,12 @@ export default{
this.resetModal();
}).catch(this.$fhcAlert.handleSystemError)
.finally(() => {
window.scrollTo(0, 0);
//window.scrollTo(0, 0);
this.reload();
});
},
deleteAddress(adress_id) {
this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/' + adress_id)
deleteAddress(adresse_id) {
return this.$fhcApi.factory.stv.kontakt.deleteAddress(adresse_id)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
}).catch(this.$fhcAlert.handleSystemError)
@@ -267,27 +296,24 @@ export default{
loadPlaces() {
if (this.abortController.places)
this.abortController.places.abort();
if (this.addressData.nation != 'A' || !this.addressData.plz)
if (this.addressData.nation != 'A' || !this.addressData.address.plz)
return;
this.abortController.places = new AbortController();
this.$fhcApi
.get('api/frontend/v1/stv/address/getPlaces/' + this.addressData.plz, undefined, {
signal: this.abortController.places.signal
})
return this.$refs.addressData.factory.stv.kontakt.getPlaces(this.addressData.address.plz)
.then(result => {
this.places = result.data;
});
/* .catch(error => {
if (error.code != "ERR_CANCELED")
window.setTimeout(this.loadPlaces, 100);
else
this.$fhcAlert.handleSystemError(error);
});*/
},
search(event) {
return this.$fhcApi
.get('api/frontend/v1/stv/kontakt/getFirmen/' + event.query)
if (this.abortController.firmen) {
this.abortController.firmen.abort();
}
this.abortController.firmen = new AbortController();
return this.$refs.addressData.factory.stv.kontakt.getFirmen(event.query)
.then(result => {
this.filteredFirmen = result.data.retval;
});
@@ -308,24 +334,23 @@ export default{
this.addressData.anmerkung = null;
this.addressData.typ = 'h';
this.addressData.nation = 'A';
this.addressData.plz = null;
this.addressData.address = {plz: null};
this.statusNew = true;
},
},
created() {
this.$fhcApi
.get('api/frontend/v1/stv/address/getNations')
this.$fhcApi.factory.stv.kontakt.getNations()
.then(result => {
this.nations = result.data;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/kontakt/getAdressentypen')
this.$fhcApi.factory.stv.kontakt.getAdressentypen()
.then(result => {
this.adressentypen = result.data;
})
.catch(this.$fhcAlert.handleSystemError)
.catch(this.$fhcAlert.handleSystemError);
},
template: `
<div class="stv-details-kontakt-address h-100 pt-3">
@@ -386,9 +411,9 @@ export default{
<div class="row mb-3">
<form-input
type="text"
name="plz"
name="address[plz]"
:label="$p.t('person/plz') + ' *'"
v-model="addressData.plz"
v-model="addressData.address.plz"
required
@input="loadPlaces"
>
@@ -416,6 +441,7 @@ export default{
v-else
type="text"
name="addressData.gemeinde"
:label="$p.t('person/gemeinde')"
v-model="addressData.gemeinde"
>
</form-input>
@@ -442,6 +468,7 @@ export default{
v-else
type="text"
name="ort"
:label="$p.t('person/ort')"
v-model="addressData.ort"
>
</form-input>
@@ -560,7 +587,7 @@ export default{
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{$p.t('ui', 'abbrechen')}}</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="reload()">{{$p.t('ui', 'abbrechen')}}</button>
<button v-if="statusNew" type="button" class="btn btn-primary" @click="addNewAddress()">OK</button>
<button v-else type="button" class="btn btn-primary" @click="updateAddress(addressData.adresse_id)">OK</button>
</template>
@@ -574,7 +601,7 @@ export default{
:side-menu="false"
reload
new-btn-show
new-btn-label="Adresse"
:new-btn-label="this.$p.t('person', 'adresse')"
@click:new="actionNewAdress"
>
</core-filter-cmpt>
@@ -16,8 +16,13 @@ export default{
data() {
return{
tabulatorOptions: {
ajaxURL: 'api/frontend/v1/stv/Kontakt/getBankverbindung/' + this.uid,
ajaxRequestFunc: this.$fhcApi.get,
ajaxURL: 'dummy',
ajaxRequestFunc: this.$fhcApi.factory.stv.kontakt.getBankverbindung,
ajaxParams: () => {
return {
id: this.uid
};
},
ajaxResponse: (url, params, response) => response.data,
columns:[
{title:"Name", field:"name"},
@@ -31,10 +36,10 @@ export default{
let output;
switch(cell.getValue()){
case "p":
output = "Privatkonto";
output = this.$p.t('person', 'privatkonto');
break;
case "f":
output = "Firmenkonto";
output = this.$p.t('person', 'firmenkonto');
break;
default:
output = cell.getValue();
@@ -63,6 +68,7 @@ export default{
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = this.$p.t('person', 'bankvb_edit');
button.addEventListener('click', (event) =>
this.actionEditBankverbindung(cell.getData().bankverbindung_id)
);
@@ -71,6 +77,7 @@ export default{
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = this.$p.t('person', 'bankvb_delete');
button.addEventListener('click', () =>
this.actionDeleteBankverbindung(cell.getData().bankverbindung_id)
);
@@ -96,6 +103,13 @@ export default{
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('name').component.updateDefinition({
title: this.$p.t('global', 'name')
});
cm.getColumnByField('typ').component.updateDefinition({
title: this.$p.t('global', 'typ')
});
cm.getColumnByField('anschrift').component.updateDefinition({
title: this.$p.t('person', 'anschrift')
});
@@ -105,12 +119,18 @@ export default{
cm.getColumnByField('blz').component.updateDefinition({
title: this.$p.t('person', 'blz')
});
cm.getColumnByField('typ').component.updateDefinition({
title: this.$p.t('global', 'typ')
});
cm.getColumnByField('verrechnung').component.updateDefinition({
title: this.$p.t('person', 'verrechnung')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('bankverbindung_id').component.updateDefinition({
title: this.$p.t('ui', 'bankverbindung_id')
});
/* cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});*/
}
}
],
@@ -140,20 +160,17 @@ export default{
});
},
actionDeleteBankverbindung(bankverbindung_id){
this.loadBankverbindung(bankverbindung_id).then(() => {
this.$fhcAlert
.confirmDelete()
.then(result => result
? bankverbindung_id
: Promise.reject({handled: true}))
.then(this.deleteBankverbindung)
.catch(this.$fhcAlert.handleSystemError);
});
this.$fhcAlert
.confirmDelete()
.then(result => result
? bankverbindung_id
: Promise.reject({handled: true}))
.then(this.deleteBankverbindung)
.catch(this.$fhcAlert.handleSystemError);
},
addNewBankverbindung(bankverbindungData) {
this.$fhcApi.post('api/frontend/v1/stv/kontakt/addNewBankverbindung/' + this.uid,
this.bankverbindungData
).then(response => {
return this.$refs.bankverbindungData.factory.stv.kontakt.addNewBankverbindung(this.uid, this.bankverbindungData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal('bankverbindungModal');
this.resetModal();
@@ -165,7 +182,7 @@ export default{
},
loadBankverbindung(bankverbindung_id){
this.statusNew = false;
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/loadBankverbindung/' + bankverbindung_id)
return this.$fhcApi.factory.stv.kontakt.loadBankverbindung(bankverbindung_id)
.then(
result => {
this.bankverbindungData = result.data;
@@ -174,7 +191,7 @@ export default{
.catch(this.$fhcAlert.handleSystemError);
},
updateBankverbindung(bankverbindung_id){
this.$fhcApi.post('api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,
return this.$refs.bankverbindungData.factory.stv.kontakt.updateBankverbindung(bankverbindung_id,
this.bankverbindungData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
@@ -187,7 +204,7 @@ export default{
});
},
deleteBankverbindung(bankverbindung_id){
this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/' + bankverbindung_id)
return this.$fhcApi.factory.stv.kontakt.deleteBankverbindung(bankverbindung_id)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
}).catch(this.$fhcAlert.handleSystemError)
@@ -222,7 +239,7 @@ export default{
<div class="stv-details-kontakt-bankaccount h-100 pt-3">
<!--Modal: Bankverbindung-->
<BsModal title="Bankverbindung anlegen" ref="bankverbindungModal">
<BsModal ref="bankverbindungModal">
<template #title>
<p v-if="statusNew" class="fw-bold mt-3">{{$p.t('person', 'bankvb_new')}}</p>
<p v-else class="fw-bold mt-3">{{$p.t('person', 'bankvb_edit')}}</p>
@@ -234,7 +251,7 @@ export default{
<form-input
type="text"
name="name"
label="Name"
:label="$p.t('global/name')"
v-model="bankverbindungData.name"
>
</form-input>
@@ -328,7 +345,7 @@ export default{
:side-menu="false"
reload
new-btn-show
new-btn-label="Bankverbindung"
:new-btn-label="this.$p.t('person', 'bankverbindung')"
@click:new="actionNewBankverbindung"
>
</core-filter-cmpt>
@@ -18,8 +18,13 @@ export default{
data() {
return{
tabulatorOptions: {
ajaxURL: 'api/frontend/v1/stv/Kontakt/getKontakte/' + this.uid,
ajaxRequestFunc: this.$fhcApi.get,
ajaxURL: 'dummy',
ajaxRequestFunc: this.$fhcApi.factory.stv.kontakt.getKontakte,
ajaxParams: () => {
return {
id: this.uid
};
},
ajaxResponse: (url, params, response) => response.data,
columns:[
{title:"Typ", field:"kontakttyp"},
@@ -51,6 +56,7 @@ export default{
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = this.$p.t('person', 'kontakt_edit');
button.addEventListener('click', (event) =>
this.actionEditContact(cell.getData().kontakt_id)
);
@@ -59,6 +65,7 @@ export default{
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = this.$p.t('person', 'kontakt_delete');
button.addEventListener('click', () =>
this.actionDeleteContact(cell.getData().kontakt_id)
);
@@ -96,7 +103,6 @@ export default{
cm.getColumnByField('anmerkung').component.updateDefinition({
title: this.$p.t('global', 'anmerkung')
});
cm.getColumnByField('lastupdate').component.updateDefinition({
title: this.$p.t('notiz', 'letzte_aenderung')
});
@@ -106,6 +112,21 @@ export default{
cm.getColumnByField('bezeichnung').component.updateDefinition({
title: this.$p.t('person', 'standort')
});
cm.getColumnByField('firma_id').component.updateDefinition({
title: this.$p.t('ui', 'firma_id')
});
cm.getColumnByField('kontakt_id').component.updateDefinition({
title: this.$p.t('ui', 'kontakt_id')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('standort_id').component.updateDefinition({
title: this.$p.t('ui', 'standort_id')
});
/* cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});*/
}}
],
lastSelected: null,
@@ -119,6 +140,10 @@ export default{
firmen: [],
filteredFirmen: [],
filteredOrte: null,
abortController: {
firmen: null,
standorte: null
},
}
},
watch: {
@@ -156,8 +181,7 @@ export default{
.catch(this.$fhcAlert.handleSystemError);
},
addNewContact(formData) {
this.$fhcApi.post('api/frontend/v1/stv/kontakt/addNewContact/' + this.uid,
this.contactData)
return this.$refs.contactData.factory.stv.kontakt.addNewContact(this.uid, this.contactData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal("contactModal");
@@ -168,11 +192,11 @@ export default{
this.reload();
});
},
loadContact(contact_id){
loadContact(kontakt_id){
this.statusNew = false;
if(this.contactData.firma_id)
this.loadStandorte(this.contactData.firma_id);
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/loadContact/' + contact_id)
return this.$fhcApi.factory.stv.kontakt.loadContact(kontakt_id)
.then(
result => {
this.contactData = result.data;
@@ -181,7 +205,7 @@ export default{
.catch(this.$fhcAlert.handleSystemError);
},
deleteContact(kontakt_id){
this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/' + kontakt_id)
return this.$fhcApi.factory.stv.kontakt.deleteContact(kontakt_id)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
})
@@ -193,9 +217,9 @@ export default{
});
},
updateContact(kontakt_id){
this.$fhcApi.post('api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,
this.contactData).
then(response => {
return this.$refs.contactData.factory.stv.kontakt.updateContact(kontakt_id,
this.contactData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal('contactModal');
this.resetModal();
@@ -214,15 +238,25 @@ export default{
this.$refs.table.reloadTable();
},
searchFirma(event) {
return this.$fhcApi
.get('api/frontend/v1/stv/kontakt/getFirmen/' + event.query)
if (this.abortController.firmen) {
this.abortController.firmen.abort();
}
this.abortController.firmen = new AbortController();
return this.$fhcApi.factory.stv.kontakt.getFirmen(event.query)
.then(result => {
this.filteredFirmen = result.data.retval;
});
},
loadStandorte(firmen_id) {
return this.$fhcApi
.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + firmen_id)
if (this.abortController.standorte) {
this.abortController.standorte.abort();
}
this.abortController.standorte = new AbortController();
return this.$fhcApi.factory.stv.kontakt.getStandorteByFirma(firmen_id)
.then(result => {
this.filteredOrte = result.data;
});
@@ -242,8 +276,7 @@ export default{
},
},
created(){
this.$fhcApi
.get('api/frontend/v1/stv/kontakt/getKontakttypen')
this.$fhcApi.factory.stv.kontakt.getKontakttypen()
.then(result => {
this.kontakttypen = result.data;
})
@@ -393,7 +426,7 @@ export default{
:side-menu="false"
reload
new-btn-show
new-btn-label="Kontakt"
:new-btn-label="this.$p.t('global', 'kontakt')"
@click:new="actionNewContact"
>
</core-filter-cmpt>
@@ -124,7 +124,7 @@ export default {
type="select"
v-model="data.buchungstyp_kurzbz"
name="buchungstyp_kurzbz"
:label="$p.t('konto/buchungstyp')"
:label="$p.t('konto/buchungstyp') + ' *'"
@update:model-value="checkDefaultBetrag"
>
<option v-for="typ in activeBuchungstypen" :key="typ.buchungstyp_kurzbz" :value="typ.buchungstyp_kurzbz" :class="typ.aktiv ? '' : 'text-decoration-line-through text-muted'">
@@ -8,9 +8,10 @@ export default {
modelValue: Object
},
template: `
<div class="stv-details-notizen h-100 pb-3 overflow-hidden">
<div class="stv-details-notizen h-100 pb-3">
<!-- mit factory als endpoint -->
<core-notiz
class="overflow-hidden"
:endpoint="$fhcApi.factory.notiz.person"
ref="formc"
notiz-layout="twoColumnsFormLeft"
@@ -15,14 +15,6 @@ export default {
lists: {
from: 'lists'
},
showZgvErfuellt: {
from: 'configShowZgvErfuellt',
default: false
},
showZgvDoktor: {
from: 'configShowZgvDoktor',
default: false
},
hasPrestudentPermission: {
from: 'hasPrestudentPermission',
default: false
@@ -41,6 +33,10 @@ export default {
},
props: {
modelValue: Object,
config: {
type: Object,
default: {}
}
},
data() {
return {
@@ -58,6 +54,7 @@ export default {
{ text: 'Nein', value: false }
],
listStgTyp: [],
listBisStandort: [],
initialFormData: {},
deltaArray: {},
actionUpdate: false
@@ -91,8 +88,7 @@ export default {
methods: {
loadPrestudent() {
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/get/' + this.modelValue.prestudent_id)
return this.$fhcApi.factory.stv.prestudent.get(this.modelValue.prestudent_id)
.then(result => result.data)
.then(result => {
this.data = result;
@@ -105,10 +101,10 @@ export default {
this.initialFormData = {...(this.initialFormData || {}), ...udfs};
},
updatePrestudent(){
this.$refs.form
.post('api/frontend/v1/stv/prestudent/updatePrestudent/' + this.modelValue.prestudent_id, this.deltaArray)
return this.$refs.form.factory.stv.prestudent.updatePrestudent(this.modelValue.prestudent_id, this.deltaArray)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.initialFormData = {...this.data};
this.deltaArray = [];
this.actionUpdate = false;
})
@@ -120,62 +116,60 @@ export default {
},
created() {
this.loadPrestudent();
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV')
this.$fhcApi.factory.stv.prestudent.getBezeichnungZGV()
.then(result => result.data)
.then(result => {
this.listZgvs = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv')
this.$fhcApi.factory.stv.prestudent.getBezeichnungMZgv()
.then(result => result.data)
.then(result => {
this.listZgvsmaster = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv')
this.$fhcApi.factory.stv.prestudent.getBezeichnungDZgv()
.then(result => result.data)
.then(result => {
this.listZgvsdoktor = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/lists/getStgs')
this.$fhcApi.factory.stv.prestudent.getStgs()
.then(result => result.data)
.then(result => {
this.listStgs = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getAusbildung')
this.$fhcApi.factory.stv.prestudent.getAusbildung()
.then(result => result.data)
.then(result => {
this.listAusbildung = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch')
this.$fhcApi.factory.stv.prestudent.getAufmerksamdurch()
.then(result => result.data)
.then(result => {
this.listAufmerksamdurch = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit')
this.$fhcApi.factory.stv.prestudent.getBerufstaetigkeit()
.then(result => result.data)
.then(result => {
this.listBerufe = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getTypenStg')
this.$fhcApi.factory.stv.prestudent.getTypenStg()
.then(result => result.data)
.then(result => {
this.listStgTyp = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi.factory.stv.prestudent.getBisstandort()
.then(result => result.data)
.then(result => {
this.listBisStandort = result;
})
.catch(this.$fhcAlert.handleSystemError);
},
template: `
<div class="stv-details-prestudent h-100 pb-3">
@@ -187,7 +181,8 @@ export default {
<legend>{{$p.t('lehre', 'title_zgv')}} {{modelValue.nachname}} {{modelValue.vorname}}</legend>
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('prestudent_id')"
container-class="col-3 stv-details-prestudent-prestudent_id"
label="Prestudent_id"
type="text"
v-model="data.prestudent_id"
@@ -196,6 +191,8 @@ export default {
>
</form-input>
<form-input
v-if="!config.hiddenFields.includes('person_id')"
container-class="col-4 stv-details-prestudent-person_id"
container-class="col-3"
label="Person_id"
type="text"
@@ -207,7 +204,8 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgv_code')"
container-class="col-3 stv-details-prestudent-zgv_code"
label="ZGV"
type="select"
v-model="data.zgv_code"
@@ -216,7 +214,8 @@ export default {
<option v-for="zgv in listZgvs" :key="zgv.zgv_code" :value="zgv.zgv_code">{{zgv.zgv_bez}}</option>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvOrt')"
container-class="col-3 stv-details-prestudent-zgvOrt"
:label="$p.t('infocenter', 'zgvOrt')"
type="text"
v-model="data.zgvort"
@@ -224,7 +223,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvDatum')"
container-class="col-3 stv-details-prestudent-zgvDatum"
:label="$p.t('infocenter', 'zgvDatum')"
type="DatePicker"
v-model="data.zgvdatum"
@@ -238,7 +238,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvNation')"
container-class="col-3 stv-details-prestudent-zgvNation"
:label="$p.t('infocenter', 'zgvNation')"
type="select"
v-model="data.zgvnation"
@@ -250,7 +251,8 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmas_code')"
container-class="col-3 stv-details-prestudent-zgvmas_code"
:label="$p.t('lehre', 'zgvMaster')"
type="select"
v-model="data.zgvmas_code"
@@ -259,7 +261,8 @@ export default {
<option v-for="mzgv in listZgvsmaster" :key="mzgv.zgvmas_code" :value="mzgv.zgvmas_code">{{mzgv.zgvmas_bez}}</option>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmaort')"
container-class="col-3 stv-details-prestudent-zgvmaort"
:label="$p.t('lehre', 'zgvMasterOrt')"
type="text"
v-model="data.zgvmaort"
@@ -267,7 +270,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmadatum')"
container-class="col-3 stv-details-prestudent-zgvmadatum"
:label="$p.t('lehre', 'zgvMasterDatum')"
type="DatePicker"
v-model="data.zgvmadatum"
@@ -281,7 +285,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmanation')"
container-class="col-3 stv-details-prestudent-zgvmanation"
:label="$p.t('lehre', 'zgvMasterNation')"
type="select"
v-model="data.zgvmanation"
@@ -292,9 +297,10 @@ export default {
</form-input>
</div>
<!--ZGV Doktor-->
<div v-if="showZgvDoktor" class="row mb-3">
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktor_code')"
container-class="col-3 stv-details-prestudent-zgvdoktor_code"
:label="$p.t('lehre', 'zgvDoktor')"
type="select"
v-model="data.zgvdoktor_code"
@@ -303,7 +309,8 @@ export default {
<option v-for="zgv in listZgvsdoktor" :key="zgv.zgvdoktor_code" :value="zgv.zgvdoktor_code">{{zgv.zgvdoktor_bez}}</option>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktorort')"
container-class="col-3 stv-details-prestudent-zgvdoktorort"
:label="$p.t('lehre', 'zgvDoktorOrt')"
type="text"
v-model="data.zgvdoktorort"
@@ -311,7 +318,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktordatum')"
container-class="col-3 stv-details-prestudent-zgvdoktordatum"
:label="$p.t('lehre', 'zgvDoktorDatum')"
type="DatePicker"
v-model="data.zgvdoktordatum"
@@ -325,7 +333,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktornation')"
container-class="col-3 stv-details-prestudent-zgvdoktornation"
:label="$p.t('lehre', 'zgvDoktorNation')"
type="select"
v-model="data.zgvdoktornation"
@@ -336,10 +345,11 @@ export default {
</form-input>
</div>
<div v-if="showZgvErfuellt" class="row mb-3">
<div class="row mb-3">
<div class="col-3 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('zgv_erfuellt')"
container-class="form-check stv-details-prestudent-zgv_erfuellt"
:label="$p.t('infocenter', 'zgvErfuellt')"
type="checkbox"
v-model="data.zgv_erfuellt"
@@ -349,18 +359,20 @@ export default {
</div>
<div class="col-3 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
:label="$p.t('infocenter', 'zgvMasterErfuellt')"
v-if="!config.hiddenFields.includes('zgvmas_erfuellt')"
container-class="form-check stv-details-prestudent-zgvmas_erfuellt"
:label="$p.t('lehre', 'zgvMasterErfuellt')"
type="checkbox"
v-model="data.zgvmas_erfuellt"
name="zgvmas_erfuellt"
>
</form-input>
</div>
<div v-if="showZgvDoktor" class="col-3 pt-4 d-flex align-items-center">
<div class="col-3 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
:label="$p.t('infocenter', 'zgvDoktorErfuellt')"
v-if="!config.hiddenFields.includes('zgvdoktor_erfuellt')"
container-class="form-check stv-details-prestudent-zgvdoktor_erfuellt"
:label="$p.t('lehre', 'zgvDoktorErfuellt')"
type="checkbox"
v-model="data.zgvdoktor_erfuellt"
name="zgvdoktor_erfuellt"
@@ -373,7 +385,8 @@ export default {
<legend>PrestudentIn</legend>
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('aufmerksamdurch_kurzbz')"
container-class="col-4 stv-details-prestudent-aufmerksamdurch_kurzbz"
:label="$p.t('person', 'aufmerksamDurch')"
type="select"
v-model="data.aufmerksamdurch_kurzbz"
@@ -382,7 +395,8 @@ export default {
<option v-for="adurch in listAufmerksamdurch" :key="adurch.aufmerksamdurch_kurzbz" :value="adurch.aufmerksamdurch_kurzbz">{{adurch.beschreibung}}</option>
</form-input>
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('berufstaetigkeit_code')"
container-class="col-4 stv-details-prestudent-berufstaetigkeit_code"
:label="$p.t('person', 'berufstaetigkeit')"
type="select"
v-model="data.berufstaetigkeit_code"
@@ -391,7 +405,8 @@ export default {
<option v-for="beruf in listBerufe" :key="beruf.berufstaetigkeit_code" :value="beruf.berufstaetigkeit_code">{{beruf.berufstaetigkeit_bez}} </option>
</form-input>
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('ausbildungcode')"
container-class="col-4 stv-details-prestudent-ausbildungcode"
:label="$p.t('person', 'ausbildung')"
type="select"
v-model="data.ausbildungcode"
@@ -401,21 +416,22 @@ export default {
</form-input>
</div>
` + /* TODO(chris): Ausgeblendet für Testing
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('aufnahmeschluessel')"
container-class="col-4 stv-details-prestudent-aufnahmeschluessel"
label="Aufnahmeschlüssel"
type="text"
v-model="data.aufnahmeschluessel"
name="aufnahmeschluessel"
disabled
disabled
>
</form-input>
<div class="col-4 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('facheinschlaegigBerufstaetig')"
container-class="form-check stv-details-prestudent-facheinschlaegigBerufstaetig"
:label="$p.t('person', 'facheinschlaegigBerufstaetig')"
type="checkbox"
v-model="data.facheinschlberuf"
@@ -424,45 +440,46 @@ export default {
</form-input>
</div>
<!--Todo(manu) validierung Integer, liste hier null-->
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('standort_code')"
container-class="col-4 stv-details-prestudent-standort_code"
:label="$p.t('person', 'bisstandort')"
type="text"
type="select"
v-model="data.standort_code"
name="standort_code"
disabled
>
</form-input>
<option v-for="standort in listBisStandort" :key="standort.standort_code" :value="standort.standort_code">{{standort.bezeichnung}}</option>
</form-input>
</div>
*/`
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('studiengang_kz')"
container-class="col-4 stv-details-prestudent-studiengang_kz"
:label="$p.t('lehre', 'studiengang')"
type="select"
v-model="data.studiengang_kz"
name="studiengang_kz"
disabled
>
<option v-for="stg in listStgs" :key="stg.studiengang_kz" :value="stg.studiengang_kz">{{stg.kuerzel}} - {{stg.bezeichnung}} </option>
<option v-for="stg in listStgs" :key="stg.studiengang_kz" :value="stg.studiengang_kz">{{stg.kuerzel}} - {{stg.bezeichnung}}</option>
</form-input>
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('gsstudientyp_kurzbz')"
container-class="col-4 stv-details-prestudent-gsstudientyp_kurzbz"
:label="$p.t('lehre', 'studientyp')"
type="select"
v-model="data.gsstudientyp_kurzbz"
name="gsstudientyp_kurzbz"
>
<option v-for="typ in listStgTyp" :key="typ.typ" :value="typ.typ">{{typ.bezeichnung}} </option>
<option v-for="typ in listStgTyp" :key="typ.typ" :value="typ.typ">{{typ.bezeichnung}}</option>
</form-input>
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('anmerkung')"
container-class="col-4 stv-details-prestudent-anmerkung"
:label="$p.t('global', 'anmerkung')"
type="text"
v-model="data.anmerkung"
@@ -471,7 +488,8 @@ export default {
</form-input>
<div class="col-2 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('bismelden')"
container-class="form-check stv-details-prestudent-bismelden"
:label="$p.t('person', 'bismelden')"
type="checkbox"
v-model="data.bismelden"
@@ -481,7 +499,8 @@ export default {
</div>
<div class="col-2 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('dual')"
container-class="form-check stv-details-prestudent-dual"
:label="$p.t('lehre', 'dual')"
type="checkbox"
v-model="data.dual"
@@ -489,7 +508,7 @@ export default {
>
</form-input>
</div>
` + /* TODO(chris): Ausgeblendet für Testing
<form-input
container-class="col-3"
:label="$p.t('lehre', 'foerderrelevant')"
@@ -499,9 +518,9 @@ export default {
>
<option v-for="entry in listFoerderrelevant" :value="entry.value">{{entry.text}}</option>
</form-input>
*/`
<form-input
v-if="!config.hiddenFields.includes('priorisierung')"
container-class="col-1"
:label="$p.t('lehre', 'prioritaet')"
type="text"
@@ -511,7 +530,15 @@ export default {
>
</form-input>
</div>
<core-udf @load="udfsLoaded" v-model="data" class="row-cols-3 g-3 mb-3" ci-model="crm/prestudent" :pk="{prestudent_id:modelValue.prestudent_id}"></core-udf>
<core-udf
v-if="!config.hideUDFs"
@load="udfsLoaded"
v-model="data"
class="row-cols-3 g-3 mb-3"
ci-model="crm/prestudent"
:pk="{prestudent_id:modelValue.prestudent_id}"
>
</core-udf>
</fieldset>
</form-form>
<div>
@@ -11,8 +11,13 @@ export default{
data() {
return {
tabulatorOptions: {
ajaxURL: 'api/frontend/v1/stv/Prestudent/getHistoryPrestudents/' + this.personId,
ajaxRequestFunc: this.$fhcApi.get,
ajaxURL: 'dummy',
ajaxRequestFunc: this.$fhcApi.factory.stv.prestudent.getHistoryPrestudents,
ajaxParams: () => {
return {
id: this.personId
};
},
ajaxResponse: (url, params, response) => response.data,
//autoColumns: true,
columns:[
@@ -63,8 +68,12 @@ export default{
},
watch: {
personId() {
this.$refs.table.tabulator.setData('api/frontend/v1/stv/Prestudent/getHistoryPrestudents/' + this.personId);
}
this.$fhcApi.factory.stv.prestudent.getHistoryPrestudents(this.personId)
.then(result => {
this.$refs.table.tabulator.setData(result.data);
})
.catch(this.$fhcAlert.handleSystemError); // Handle any errors
},
},
template: `
<div class="stv-details-prestudent-history h-100 pt-3">
@@ -57,8 +57,13 @@ export default{
data() {
return {
tabulatorOptions: {
ajaxURL: 'api/frontend/v1/stv/Status/getHistoryPrestudent/' + this.modelValue.prestudent_id,
ajaxRequestFunc: this.$fhcApi.get,
ajaxURL: 'dummy',
ajaxRequestFunc: this.$fhcApi.factory.stv.prestudent.getHistoryPrestudent,
ajaxParams: () => {
return {
id: this.modelValue.prestudent_id
};
},
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Kurzbz", field: "status_kurzbz", tooltip: true},
@@ -79,6 +84,7 @@ export default{
{title: "InsertVon", field: "insertvon", visible: false},
{title: "UpdateAmUm", field: "format_updateamum", visible: false},
{title: "UpdateVon", field: "updatevon", visible: false},
/* {title: "Aufnahmestufe", field: "aufnahmestufe", visible: false},*/
{
title: 'Aktionen', field: 'actions',
minWidth: 150, // Ensures Action-buttons will be always fully displayed
@@ -92,7 +98,7 @@ export default{
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-forward"></i>';
button.title = 'Status vorrücken';
button.title = this.$p.t('ui', 'btn_statusVorruecken');
button.addEventListener('click', () =>
this.actionAdvanceStatus(data.status_kurzbz, data.studiensemester_kurzbz, data.ausbildungssemester)
);
@@ -103,7 +109,7 @@ export default{
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-check"></i>';
button.title = 'Status bestätigen';
button.title = this.$p.t('ui', 'btn_confirmStatus');
button.addEventListener('click', () =>
this.actionConfirmStatus(data.status_kurzbz, data.studiensemester_kurzbz, data.ausbildungssemester)
);
@@ -114,7 +120,7 @@ export default{
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = 'Status bearbeiten';
button.title = this.$p.t('ui', 'btn_editStatus');
button.addEventListener('click', () =>
this.actionEditStatus(data.status_kurzbz, data.studiensemester_kurzbz, data.ausbildungssemester)
);
@@ -125,7 +131,7 @@ export default{
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = 'Status löschen';
button.title = this.$p.t('ui', 'btn_deleteStatus');
button.addEventListener('click', () =>
this.actionDeleteStatus(data.status_kurzbz, data.studiensemester_kurzbz, data.ausbildungssemester)
);
@@ -149,12 +155,14 @@ export default{
layoutColumnsOnNewData: false,
height: 'auto',
selectable: false,
index: 'statusId',
persistenceID: 'stv-multistatus'
},
tabulatorEvents: [
{
event: 'tableBuilt',
handler: async () => {
await this.$p.loadCategory(['lehre','global','person']);
await this.$p.loadCategory(['lehre','global','person','ui']);
let cm = this.$refs.table.tabulator.columnManager;
@@ -197,6 +205,14 @@ export default{
cm.getColumnByField('insertvon').component.updateDefinition({
title: this.$p.t('lehre', 'insert_von')
});
cm.getColumnByField('prestudent_id').component.updateDefinition({
title: this.$p.t('ui', 'prestudent_id')
});
cm.getColumnByField('studienplan_id').component.updateDefinition({
title: this.$p.t('ui', 'studienplan_id')
});
}
}
],
@@ -210,10 +226,7 @@ export default{
watch: {
modelValue() {
if (this.$refs.table) {
if (this.$refs.table.tableBuilt)
this.$refs.table.tabulator.setData('api/frontend/v1/stv/Status/getHistoryPrestudent/' + this.modelValue.prestudent_id);
else
this.data.tabulatorOptions.ajaxURL = 'api/frontend/v1/stv/Status/getHistoryPrestudent/' + this.modelValue.prestudent_id;
this.$refs.table.reloadTable();
}
this.getMaxSem();
}
@@ -224,8 +237,7 @@ export default{
? [this.modelValue.studiengang_kz]
: this.modelValue.map(prestudent => prestudent.studiengang_kz);
this.maxSem = 0;
this.$fhcApi
.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs})
this.$fhcApi.factory.stv.prestudent.getMaxSem(studiengang_kzs)
.then(result => this.maxSem = result.data)
.catch(this.$fhcAlert.handleSystemError);
},
@@ -245,24 +257,32 @@ export default{
this.$fhcAlert
.confirmDelete()
.then(result => result
? 'api/frontend/v1/stv/status/isLastStatus/' + statusId.prestudent_id
: Promise.reject({handled: true})
)
.then(this.$fhcApi.get)
.then(result => result.data
? new Promise((resolve, reject) => { BsConfirm.popup(this.$p.t('lehre', 'last_status_confirm_delete')).then(resolve).catch(() => reject({handled:true})) })
: true
)
.then(result => result
? 'api/frontend/v1/stv/status/deleteStatus/' + Object.values(statusId).join('/')
: Promise.reject({handled: true})
)
.then(this.$fhcApi.post)
.then(() => this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete')))
.then(this.reload)
.then(this.$reloadList)
.catch(this.$fhcAlert.handleSystemError);
.then(result => {
// If confirmed, check if this is the last status
return result
? this.$fhcApi.factory.stv.prestudent.isLastStatus(statusId.prestudent_id)
: Promise.reject({handled: true});
})
.then(result => {
return result.data
? new Promise((resolve, reject) => {
BsConfirm.popup(this.$p.t('lehre', 'last_status_confirm_delete'))
.then(resolve)
.catch(() => reject({handled: true}));
})
: true;
})
.then(result => {
return result
? this.$fhcApi.factory.stv.prestudent.deleteStatus(statusId)
: Promise.reject({handled: true});
})
.then(() => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
this.reload();
this.$reloadList();
})
.catch(this.$fhcAlert.handleSystemError); // Handle any errors
},
actionAdvanceStatus(status, stdsem, ausbildungssemester) {
const statusId = {
@@ -271,22 +291,21 @@ export default{
studiensemester_kurzbz: stdsem,
ausbildungssemester: ausbildungssemester
};
this.$fhcApi
.post('api/frontend/v1/stv/status/advanceStatus/' + Object.values(statusId).join('/'))
return this.$fhcApi.factory.stv.prestudent.advanceStatus(statusId)
.then(() => this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successAdvance')))
.then(this.reload)
.catch(this.$fhcAlert.handleSystemError);
},
actionConfirmStatus(status, stdsem, ausbildungssemester) {
const statusId = {
prestudent_id: this.modelValue.prestudent_id,
status_kurzbz: status,
studiensemester_kurzbz: stdsem,
ausbildungssemester: ausbildungssemester
};
BsConfirm
.popup(this.$p.t('stv', 'status_confirm_popup'))
.then(() => this.$fhcApi.post(
'api/frontend/v1/stv/status/confirmStatus/' +
this.modelValue.prestudent_id + '/' +
status + '/' +
stdsem + '/' +
ausbildungssemester
))
.then(() => this.$fhcApi.factory.stv.prestudent.confirmStatus(statusId))
.then(() => this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successConfirm')))
.then(this.reload)
.catch(this.$fhcAlert.handleSystemError);
@@ -298,9 +317,7 @@ export default{
},
created() {
this.getMaxSem();
this.$fhcApi
.get('api/frontend/v1/stv/status/getLastBismeldestichtag/')
this.$fhcApi.factory.stv.prestudent.getLastBismeldestichtag()
.then(result => {
this.dataMeldestichtag = result.data[0].meldestichtag;
if (this.$refs.table && this.$refs.table.tableBuilt)
@@ -309,8 +326,7 @@ export default{
.catch(this.$fhcAlert.handleSystemError);
},
template: `
<div class="stv-multistatus h-100 pt-3">
<div class="stv-multistatus h-100 pt-3">
<status-modal
ref="test"
:meldestichtag="new Date(dataMeldestichtag)"
@@ -328,7 +344,7 @@ export default{
:side-menu="false"
reload
new-btn-show
new-btn-label="Status"
:new-btn-label="this.$p.t('global', 'status')"
@click:new="actionNewStatus"
>
@@ -339,6 +355,7 @@ export default{
:show-toolbar-student="showToolbarStudent"
:show-toolbar-interessent="showToolbarInteressent"
:prestudent-ids="prestudentIds"
:max-sem="maxSem"
@reload-table="reload"
>
</status-dropdown>
@@ -353,6 +370,7 @@ export default{
:show-toolbar-student="showToolbarStudent"
:show-toolbar-interessent="showToolbarInteressent"
:prestudent-ids="prestudentIds"
:max-sem="maxSem"
@reload-table="reload"
>
</status-dropdown>
@@ -30,12 +30,15 @@ export default {
type: Array,
required: true,
default: () => []
},
maxSem: {
type: Number,
required: true
}
},
data() {
return {
listDataToolbar: [],
//TODO(Manu) get from config
statiInteressent: ["Bewerber", "Aufgenommener", "Student" , "Wartender", "Abgewiesener"],
statiStudent: ["Abbrecher", "Unterbrecher", "Student" , "Diplomand", "Absolvent"]
};
@@ -139,12 +142,7 @@ export default {
addStudent(data) {
Promise
.allSettled(
this.prestudentIds.map(prestudent_id => this.$fhcApi.post(
'api/frontend/v1/stv/status/addStudent/' + prestudent_id,
data,
{ errorHeader: prestudent_id }
))
)
this.prestudentIds.map(prestudent_id => this.$fhcApi.factory.stv.status.addStudent(prestudent_id, data)))
.then(res => this.showFeedback(res, data.status_kurzbz));
},
changeStatusToAbbrecher(statusgrund_id) {
@@ -207,27 +205,40 @@ export default {
},
promtAusbildungssemester(status, statusgrund_id) {
const count = this.prestudentIds.length;
return BsPrompt
.popup(this.$p.t(
'lehre',
count > 1 ? 'modal_askAusbildungssemPlural' : 'modal_askAusbildungssem',
{ count, status }
))
.then(ausbildungssemester => ({
status_kurzbz: status,
ausbildungssemester,
statusgrund_id
}));
const askForSemester = () => {
return BsPrompt
.popup(this.$p.t(
'lehre',
count > 1 ? 'modal_askAusbildungssemPlural' : 'modal_askAusbildungssem',
{ count, status }
))
.then(input => {
const ausbildungssemester = parseInt(input, 10);
//check if valid number
if ((!/^\d+$/.test(input) || ausbildungssemester < 0)) {
this.$fhcAlert.alertError(this.$p.t('ui', 'error_noInteger'));
return askForSemester();
}
if (ausbildungssemester > this.maxSem) {
this.$fhcAlert.alertError(this.$p.t('ui', 'error_maxSem'));
return askForSemester();
}
return {
status_kurzbz: status,
ausbildungssemester,
statusgrund_id
};
});
};
return askForSemester();
},
changeStatus(data) {
Promise
.allSettled(
this.prestudentIds.map(prestudent_id => this.$fhcApi.post(
'api/frontend/v1/stv/status/changeStatus/' + prestudent_id,
data,
{ errorHeader: prestudent_id }
))
)
this.prestudentIds.map(prestudent_id => this.$fhcApi.factory.stv.status.changeStatus(prestudent_id, data)))
.then(res => this.showFeedback(res, data.status_kurzbz));
},
showFeedback(results, status_kurzbz) {
@@ -248,8 +259,7 @@ export default {
}
},
created() {
this.$fhcApi
.get('api/frontend/v1/stv/status/getStatusarray/')
this.$fhcApi.factory.stv.status.getStatusarray()
.then(result => result.data)
.then(result => {
this.listDataToolbar = result;
@@ -258,7 +268,7 @@ export default {
},
template: `
<div class="stv-status-dropdown">
<div v-if="showToolbar" class="btn-group">
<button ref="toolbarButton" type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
{{$p.t('lehre', 'btn_statusAendern')}}
@@ -127,9 +127,8 @@ export default{
studiensemester_kurzbz,
ausbildungssemester
};
this.$fhcApi
.post('api/frontend/v1/stv/status/loadStatus/', this.statusId)
this.$fhcApi.factory.stv.status.loadStatus(this.statusId)
.then(result => {
this.statusNew = false;
this.formData = result.data;
@@ -143,12 +142,9 @@ export default{
}
},
insertStatus() {
this.$refs.form
.post(
'api/frontend/v1/stv/status/insertStatus/' + this.statusId,
this.formData
)
this.$fhcApi.factory.stv.status.insertStatus(this.statusId, this.formData)
.then(result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$reloadList();
this.$emit('saved');
this.$refs.modal.hide();
@@ -156,11 +152,7 @@ export default{
.catch(this.$fhcAlert.handleSystemError);
},
editStatus() {
this.$refs.form
.post(
'api/frontend/v1/stv/status/updateStatus/' + Object.values(this.statusId).join('/'),
this.formData
)
this.$fhcApi.factory.stv.status.updateStatus(this.statusId, this.formData)
.then(result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$reloadList();
@@ -174,24 +166,23 @@ export default{
this.prestudent = prestudent;
if (old_id == prestudent.prestudent_id)
return Promise.resolve();
return this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent.prestudent_id)
return this.$fhcApi.factory.stv.status.getStudienplaene(prestudent.prestudent_id)
.then(result => this.studienplaene = result.data)
.then(() => this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent.prestudent_id))
.then(() => this.$fhcApi.factory.stv.status.getStudiengang(prestudent.prestudent_id))
.then(result => this.mischform = result.data.mischform);
}
},
created() {
this.$fhcApi
.get('api/frontend/v1/stv/status/getStatusgruende')
this.$fhcApi.factory.stv.status.getStatusgruende()
.then(result => this.statusgruende = result.data)
.catch(this.$fhcAlert.handleSystemError);
/*this.$fhcApi
.get('api/frontend/v1/stv/lists/getStati')
//TODO(Manu) check why it is/was hard coded
this.$fhcApi.factory.stv.status.getStati()
.then(result => this.stati = result.data)
.catch(this.$fhcAlert.handleSystemError);*/
this.stati = [
.catch(this.$fhcAlert.handleSystemError);
/* this.stati = [
{ status_kurzbz: 'Interessent', bezeichnung: 'Interessent'},
{ status_kurzbz: 'Bewerber', bezeichnung: 'Bewerber'},
{ status_kurzbz: 'Aufgenommener', bezeichnung: 'Aufgenommener'},
@@ -203,7 +194,7 @@ export default{
{ status_kurzbz: 'Abbrecher', bezeichnung: 'Abbrecher'},
{ status_kurzbz: 'Abgewiesener', bezeichnung: 'Abgewiesener'},
{ status_kurzbz: 'Wartender', bezeichnung: 'Wartender'}
];
];*/
},
template: `
<bs-modal class="stv-status-modal" ref="modal">
@@ -212,7 +203,7 @@ export default{
</template>
<core-form ref="form">
<form-validation></form-validation>
<p v-if="bisLocked && !isStatusBeforeStudent">
+744
View File
@@ -24611,6 +24611,26 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'notiz',
'phrase' => 'notiz_delete',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Notiz löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Delete Note',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'notiz',
@@ -33264,6 +33284,26 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'bankverbindung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bankverbindung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'bank details',
'description' => '',
'insertvon' => 'system'
)
)
),
//Status
array(
'app' => 'core',
@@ -34385,6 +34425,87 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'btn_statusVorruecken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status vorrücken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'advance status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'btn_confirmStatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status bestätigen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'confirm status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'btn_editStatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status bearbeiten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'edit status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'btn_deleteStatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'delete status',
'description' => '',
'insertvon' => 'system'
)
)
),
// Betriebsmittel begin
array(
'app' => 'core',
@@ -36574,6 +36695,67 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'betriebsmittel',
'phrase' => 'btn_printUebernahmebestaetigung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Übernahmebestätigung drucken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Print acceptance confirmation',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'betriebsmittel',
'phrase' => 'btn_editBetriebsmittel',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betriebsmittel bearbeiten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Edit Resource',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'betriebsmittel',
'phrase' => 'btn_deleteBetriebsmittel',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betriebsmittel löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Delete Resource',
'description' => '',
'insertvon' => 'system'
)
)
),
// Betriebsmittel end
array(
'app' => 'core',
'category' => 'uhstat',
@@ -37297,7 +37479,569 @@ array(
'insertvon' => 'system'
)
)
),
// FHC4 Phrases CleanUpTasks End
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'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'geschieden',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'geschieden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'divorced',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'ledig',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'ledig',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'single',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'verheiratet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'verheiratet',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'married',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'verwitwet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'verwitwet',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'widowed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'firma_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Firma Id',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Company Id',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'adresse_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Adresse ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Address ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'kontakt_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Kontakt ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contact ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'standort_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Standort ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Location ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'bankverbindung_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bankverbindung ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Bankdetails ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'studienplan_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Studienplan ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Studyplan ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'prestudent_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'PrestudentIn ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Prestudent ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'notiz_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Notiz ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Notes ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'notizzuordnung_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Notizzuordnung ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Noteassignment ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'extension_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Extension ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Extension ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'type_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Type ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Type ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'betriebsmittel_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betriebsmittel ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Ressource ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'betriebsmittelperson_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betriebsmittelperson ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Ressourceperson ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'dropdownLoading',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Daten werden geladen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Loading',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'error_noInteger',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Nur Eingabe von ganzen Zahlen erlaubt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Error: Only input of whole numbers allowed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'error_maxSem',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Ausbildungssemester nicht zulässig: größer als Höchstsemester',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Error: Semester not allowed: higher than max Semester',
'description' => '',
'insertvon' => 'system'
)
)
),
// FHC4 Phrases CleanUpTasks End
);