diff --git a/application/controllers/api/frontend/v1/stv/Address.php b/application/controllers/api/frontend/v1/stv/Address.php index 324e306f3..d14111e99 100644 --- a/application/controllers/api/frontend/v1/stv/Address.php +++ b/application/controllers/api/frontend/v1/stv/Address.php @@ -31,6 +31,11 @@ class Address extends FHCAPI_Controller 'getNations' => self::PERM_LOGGED, 'getPlaces' => self::PERM_LOGGED ]); + + // Load language phrases + $this->loadPhrases([ + 'ui' + ]); } public function getNations() @@ -53,7 +58,11 @@ class Address extends FHCAPI_Controller $this->form_validation->set_data(['address.plz' => $plz]); - $this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric|less_than[10000]'); + $this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric|less_than[10000]', [ + 'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'PLZ']), + 'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'PLZ']), + 'less_than' => $this->p->t('ui', 'error_fieldLessThan10000', ['field' => 'PLZ']) + ]); if (!$this->form_validation->run()) $this->terminateWithValidationErrors($this->form_validation->error_array()); diff --git a/application/controllers/api/frontend/v1/stv/Prestudent.php b/application/controllers/api/frontend/v1/stv/Prestudent.php index ed48e6d9a..4d0aa5fe1 100644 --- a/application/controllers/api/frontend/v1/stv/Prestudent.php +++ b/application/controllers/api/frontend/v1/stv/Prestudent.php @@ -136,14 +136,19 @@ class Prestudent extends FHCAPI_Controller $update_prestudent = array(); foreach ($array_allowed_props_prestudent as $prop) { - $val = $this->input->post($prop); - if ($val !== null || $prop == 'foerderrelevant') { + $val = $this->input->post($prop, true); + + if ($val !== null || $prop === 'foerderrelevant') { $update_prestudent[$prop] = $val; } - if (($prop == 'zgvdatum' && $val == '') - || ($prop == 'zgvmadatum' && $val == '') - || ($prop == 'zgvdoktordatum' && $val == '') - ) { + + // allowed to be null, but has to be in postparameter + if ( + in_array($prop, ['zgvdatum', 'zgvmadatum', 'zgvdoktordatum', 'zgv_code', 'zgvmas_code', 'zgvdoktor_code']) + && !isset($update_prestudent[$prop]) + && array_key_exists($prop, $_POST) + ) + { $update_prestudent[$prop] = null; } } diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php index 784227ae0..2518e9af9 100644 --- a/application/controllers/api/frontend/v1/stv/Student.php +++ b/application/controllers/api/frontend/v1/stv/Student.php @@ -97,6 +97,15 @@ class Student extends FHCAPI_Controller $this->PrestudentModel->addSelect('v.verband'); $this->PrestudentModel->addSelect('v.gruppe'); $this->PrestudentModel->addSelect('b.alias'); + $this->PrestudentModel->addSelect('p.geburtsnation'); + $this->PrestudentModel->addSelect('p.sprache'); + $this->PrestudentModel->addSelect('p.gebort'); + $this->PrestudentModel->addSelect('p.homepage'); + $this->PrestudentModel->addSelect('p.anmerkung'); + $this->PrestudentModel->addSelect('p.familienstand'); + $this->PrestudentModel->addSelect('p.staatsbuergerschaft'); + $this->PrestudentModel->addSelect('p.matr_nr'); + $this->PrestudentModel->addSelect('p.anrede'); if (defined('ACTIVE_ADDONS') && strpos(ACTIVE_ADDONS, 'bewerbung') !== false) { $this->PrestudentModel->addSelect( @@ -172,6 +181,7 @@ class Student extends FHCAPI_Controller $this->load->model('crm/Student_model', 'StudentModel'); $this->load->model('crm/Prestudent_model', 'PrestudentModel'); $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); + $this->load->model('organisation/Lehrverband_model', 'LehrverbandModel'); $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->library('form_validation'); @@ -186,7 +196,15 @@ class Student extends FHCAPI_Controller $this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'is_valid_date'); - $this->form_validation->set_rules('semester', 'Semester', 'integer'); + $this->form_validation->set_rules('semester', 'Semester', 'integer', [ + 'integer' => $this->p->t('ui', 'error_fieldNotInteger') + ] + ); + + $this->form_validation->set_rules('alias', 'Alias', 'regex_match[/^[-a-z0-9\_\.]*[a-z0-9]{1,}\.[-a-z0-9\_]{1,}$/]', + [ + 'regex_match' => $this->p->t('ui', 'error_fieldInvalidAlias') + ]); $this->load->library('UDFLib'); @@ -298,11 +316,37 @@ class Student extends FHCAPI_Controller // Do Updates if (count($update_lehrverband)) { + $curstudlvb = $this->StudentlehrverbandModel->load([ 'studiensemester_kurzbz' => $studiensemester_kurzbz, 'student_uid' => $uid ]); + $data = $this->getDataOrTerminateWithError($curstudlvb); + $data = current($data); + + $verbandCurrent = $data->verband; + $studiengang_kz = $data->studiengang_kz; + $semesterCurrent = $data->semester; + $gruppeCurrent = $data->gruppe; + + $verband = isset($update_lehrverband['verband']) ? $update_lehrverband['verband'] : $verbandCurrent; + $gruppe = isset($update_lehrverband['gruppe']) ? $update_lehrverband['gruppe'] : $gruppeCurrent; + $semester = isset($update_lehrverband['semester']) ? $update_lehrverband['semester'] : $semesterCurrent; + + //check if existing Lehrverband of new data to avoid Error + $result = $this->LehrverbandModel->loadWhere([ + 'verband' => $verband, + 'gruppe' => $gruppe, + 'semester' => $semester, + 'studiengang_kz' => $studiengang_kz, + ]); + + if(!hasData($result)) + { + $this->terminateWithError($this->p->t('lehre', 'error_noLehrverband'), self::ERROR_TYPE_GENERAL); + } + if(hasData($curstudlvb) && count(getData($curstudlvb)) > 0 ) { $update_lehrverband['updatevon'] = $authuid; diff --git a/public/js/components/Betriebsmittel/Betriebsmittel.js b/public/js/components/Betriebsmittel/Betriebsmittel.js index d197c341e..502ede059 100644 --- a/public/js/components/Betriebsmittel/Betriebsmittel.js +++ b/public/js/components/Betriebsmittel/Betriebsmittel.js @@ -137,8 +137,6 @@ export default { layout: 'fitColumns', layoutColumnsOnNewData: false, height: '550', - selectableRangeMode: 'click', - selectable: true, persistenceID: 'core-betriebsmittel' }, tabulatorEvents: [ @@ -317,6 +315,7 @@ export default { table-only :side-menu="false" reload + :reload-btn-infotext="this.$p.t('table', 'reload')" new-btn-show :new-btn-label="this.$p.t('ui', 'betriebsmittel')" @click:new="actionNewBetriebsmittel" diff --git a/public/js/components/DetailHeader/DetailHeader.js b/public/js/components/DetailHeader/DetailHeader.js index aa0bb549d..5c1573753 100644 --- a/public/js/components/DetailHeader/DetailHeader.js +++ b/public/js/components/DetailHeader/DetailHeader.js @@ -132,8 +132,7 @@ export default {

{{headerData[0].titelpre}} {{headerData[0].vorname}} - {{headerData[0].nachname}} - , + {{headerData[0].nachname}}, {{headerData[0].titelpost}}

diff --git a/public/js/components/Funktionen/Funktionen.js b/public/js/components/Funktionen/Funktionen.js index 0b5a71155..e83eca7e4 100644 --- a/public/js/components/Funktionen/Funktionen.js +++ b/public/js/components/Funktionen/Funktionen.js @@ -444,6 +444,7 @@ export default { table-only :side-menu="false" :reload= "!this.stylePv21" + :reload-btn-infotext="this.$p.t('table', 'reload')" new-btn-show :new-btn-class="this.newBtnStyle" :new-btn-label="this.$p.t('person', 'funktion')" diff --git a/public/js/components/Messages/Details/TableMessages.js b/public/js/components/Messages/Details/TableMessages.js index 8d539983f..5095f4223 100644 --- a/public/js/components/Messages/Details/TableMessages.js +++ b/public/js/components/Messages/Details/TableMessages.js @@ -401,6 +401,7 @@ export default { table-only :side-menu="false" reload + :reload-btn-infotext="this.$p.t('table', 'reload')" new-btn-show :new-btn-label="this.$p.t('global', 'nachricht')" @click:new="actionNewMessage" diff --git a/public/js/components/Notiz/Notiz.js b/public/js/components/Notiz/Notiz.js index 8b37cd6e3..5a3944803 100644 --- a/public/js/components/Notiz/Notiz.js +++ b/public/js/components/Notiz/Notiz.js @@ -82,7 +82,7 @@ export default { field: "text_stripped", width: 250, formatter: "html", - clipContents: true, + //clipContents: true, tooltip:function(e, cell, onRendered){ var el = document.createElement("div"); el.style.backgroundColor = "white"; @@ -178,8 +178,6 @@ export default { layoutColumnsOnNewData: false, //responsiveLayout: "collapse", maxHeight: '200px', - //selectableRangeMode: 'click', - //selectable: true, index: 'notiz_id', persistenceID: 'core-notiz' }, @@ -254,7 +252,7 @@ export default { title: this.$p.t('global', 'text'), width: 250, tooltip: true, - clipContents: true, + //clipContents: true, }); // Force layout recalculation for handling overflow text @@ -1268,6 +1266,7 @@ export default { table-only :side-menu="false" reload + :reload-btn-infotext="this.$p.t('table', 'reload')" new-btn-show :new-btn-label="this.$p.t('global', 'notiz')" @click:new="actionNewNotiz" diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js index a9cae9bc5..e5c4cade1 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js @@ -168,7 +168,6 @@ export default { layoutColumnsOnNewData: false, height: 'auto', minHeight: '200', - selectable: true, index: 'abschlusspruefung_id', persistenceID: 'stv-details-finalexam' }, @@ -542,6 +541,7 @@ export default { table-only :side-menu="false" reload + :reload-btn-infotext="this.$p.t('table', 'reload')" new-btn-show :new-btn-label="this.$p.t('stv', 'tab_finalexam')" @click:new="actionNewAbschlusspruefung" diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js b/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js index 8f32479a9..4c29cec3e 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js @@ -357,6 +357,7 @@ export default { table-only :side-menu="false" reload + :reload-btn-infotext="this.$p.t('table', 'reload')" > diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js b/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js index 7f615f8b5..5bd20e154 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Archiv.js @@ -130,6 +130,7 @@ export default { let editButton = document.createElement('button'); editButton.className = 'btn btn-outline-secondary'; editButton.innerHTML = ''; + editButton.title = this.$p.t('ui', 'bearbeiten'); editButton.addEventListener('click', () => this.$refs.edit.open(cell.getData()) ); @@ -139,6 +140,7 @@ export default { let deleteButton = document.createElement('button'); deleteButton.className = 'btn btn-outline-secondary'; deleteButton.innerHTML = ''; + deleteButton.title = this.$p.t('ui', 'loeschen'); deleteButton.addEventListener('click', evt => { evt.stopPropagation(); this.$fhcAlert @@ -262,6 +264,7 @@ export default { :tabulator-options="tabulatorOptions" :tabulator-events="tabulatorEvents" reload + :reload-btn-infotext="this.$p.t('table', 'reload')" >