diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js index d427f8728..3bb4da6fa 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js @@ -355,6 +355,7 @@ export default{ :show-toolbar-student="showToolbarStudent" :show-toolbar-interessent="showToolbarInteressent" :prestudent-ids="prestudentIds" + :max-sem="maxSem" @reload-table="reload" > @@ -369,6 +370,7 @@ export default{ :show-toolbar-student="showToolbarStudent" :show-toolbar-interessent="showToolbarInteressent" :prestudent-ids="prestudentIds" + :max-sem="maxSem" @reload-table="reload" > diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js b/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js index fe3d4a9bb..389f00da8 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js @@ -30,6 +30,10 @@ export default { type: Array, required: true, default: () => [] + }, + maxSem: { + type: Number, + required: true } }, data() { @@ -201,17 +205,35 @@ 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 diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index e6e56fc33..d2ff3f552 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -30907,7 +30907,46 @@ array( ) ) ), - + 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' + ) + ) + ), );