From a50a666d1112222b5dec6e505cd470e95b8f8613 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 3 May 2021 16:14:24 +0200 Subject: [PATCH] Added Antragssperre for Noten, that are defined in config array . Added new config file . Added check, if LV was already graded and if grades are defined in configs 'blocking grades array'. If so, Anrechnung is not allowed. . Adapted GUI to process data via JS only Signed-off-by: cris-technikum --- application/config/anrechnung.php | 18 +++++++++ .../lehre/anrechnung/RequestAnrechnung.php | 34 +++++++++++++++- .../lehre/anrechnung/requestAnrechnung.php | 25 +++++++----- .../js/lehre/anrechnung/requestAnrechnung.js | 39 ++++++++++++++++++- system/phrasesupdate.php | 21 +++++++++- 5 files changed, 125 insertions(+), 12 deletions(-) create mode 100644 application/config/anrechnung.php diff --git a/application/config/anrechnung.php b/application/config/anrechnung.php new file mode 100644 index 000000000..9e209e559 --- /dev/null +++ b/application/config/anrechnung.php @@ -0,0 +1,18 @@ +load->helper('url'); $this->load->helper('hlp_sancho_helper'); + // Load configs + $this->load->config('anrechnung'); + // Load language phrases $this->loadPhrases( array( @@ -82,6 +85,9 @@ class requestAnrechnung extends Auth_Controller // $is_expired = self::_checkAntragDeadline($studiensemester_kurzbz); $is_expired = false; + // Check if Lehrveranstaltung was already graded with application blocking grades + $is_blocked = self::_LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id); + // Get Anrechung data $anrechnungData = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id); @@ -91,7 +97,8 @@ class requestAnrechnung extends Auth_Controller $viewData = array( 'antragData' => $antragData, 'anrechnungData' => $anrechnungData, - 'is_expired' => $is_expired + 'is_expired' => $is_expired, + 'is_blocked' => $is_blocked ); $this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData); @@ -299,6 +306,31 @@ class requestAnrechnung extends Auth_Controller return $studiensemester_kurzbz == $actual_ss; } + private function _LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id) + { + // Get Note of Lehrveranstaltung + $this->load->model('education/Lvgesamtnote_model', 'LvgesamtnoteModel'); + $result = $this->LvgesamtnoteModel->load(array( + 'student_uid' => $this->_uid, + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'lehrveranstaltung_id' => $lehrveranstaltung_id + ) + ); + + // If Lehrveranstaltung has Note + if (hasData($result)) + { + $note = getData($result)[0]->note; + + // Check if Note is a blocking grade + if (in_array($note, $this->config->item('grades_blocking_application'))) + { + return true; + } + } + return false; + } + /** * Upload file via DMS library. * diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index 883614cc1..096c17482 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -16,7 +16,8 @@ $this->load->view( 'anerkennungNachgewiesenerKenntnisse', 'antragStellen', 'antragWurdeGestellt', - 'antragBereitsGestellt' + 'antragBereitsGestellt', + 'bearbeitungGesperrt' ), 'ui' => array( 'hilfeZuDieserSeite', @@ -27,6 +28,10 @@ $this->load->view( 'errorBestaetigungFehlt', 'systemfehler' ), + 'anrechnung' => array( + 'deadlineUeberschritten', + 'benotungDerLV' + ), 'person' => array( 'student', 'personenkennzeichen' @@ -237,16 +242,18 @@ $this->load->view(



-
Status: +
Status: status; ?> -
- -
- p->t('global', 'bearbeitungGesperrt'); ?> - anrechnung_id) ? ': ' . $this->p->t('anrechnung', 'deadlineUeberschritten') : ''; ?> -
- +
+
+ +
load->view('lehre/anrechnung/requestAnrechnungImportant'); ?>
diff --git a/public/js/lehre/anrechnung/requestAnrechnung.js b/public/js/lehre/anrechnung/requestAnrechnung.js index ccbf1a18b..fa7d02de8 100644 --- a/public/js/lehre/anrechnung/requestAnrechnung.js +++ b/public/js/lehre/anrechnung/requestAnrechnung.js @@ -18,6 +18,9 @@ $(function(){ // Set chars counter for textarea 'Herkunft der Kenntnisse' requestAnrechnung.setCharsCounter(); + // If Sperregrund exists: display Sperre panel, hide Status panel and disable all form elements + requestAnrechnung.displaySperreIfHasSperregrund(); + $('#requestAnrechnung-form').submit(function(e){ // Avoid form redirecting automatically @@ -85,7 +88,7 @@ var requestAnrechnung = { if (status_kurzbz != '') { // Disable all form elements - $("#requestAnrechnung-form :input").prop("disabled", true); + requestAnrechnung.disableFormFields(); } }, markAsBestaetigtIfAntragIsApplied: function(){ @@ -96,6 +99,40 @@ var requestAnrechnung = { $("#requestAnrechnung-form :input[name='bestaetigung']").prop('checked', true); } }, + disableFormFields(){ + // Disable all form elements + $("#requestAnrechnung-form :input").prop("disabled", true); + }, + displaySperreIfHasSperregrund: function(){ + const anrechnung_id = $('#requestAnrechnung-sperre').data('anrechnung_id'); + const is_expired = $('#requestAnrechnung-sperre').data('expired'); + const is_blocked = $('#requestAnrechnung-sperre').data('blocked'); + + // If Deadline is expired or is blocked by grades of LV, AND not already angerechnet + if ((is_expired || is_blocked) && anrechnung_id == '') + { + // Hide status panel + $('#requestAnrechnung-status').hide(); + + // Show sperre panel + $('#requestAnrechnung-sperre') + .removeClass('hidden') + .html(function(){ + let sperregrund = FHC_PhrasesLib.t('global', 'bearbeitungGesperrt') + ': '; + + if (is_expired) { + sperregrund += FHC_PhrasesLib.t('anrechnung', 'deadlineUeberschritten'); + } + else if (is_blocked){ + sperregrund += FHC_PhrasesLib.t('anrechnung', 'benotungDerLV'); + } + return ""+ sperregrund + ""; + }) + + // Disable all form elements + requestAnrechnung.disableFormFields(); + } + }, initTooltips: function (){ $('[data-toggle="tooltip"]').tooltip({ delay: { "show": 200, "hide": 200 }, diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 3509ea12d..df7ae53f7 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -1474,7 +1474,26 @@ $phrases = array( ) ) ), - + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'benotungDerLV', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Benotung der Lehrveranstaltung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Grading of the course', + 'description' => '', + 'insertvon' => 'system' + ) + ) +), //*************************** CORE/filter array(