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 <hainberg@technikum-wien.at>
This commit is contained in:
Cris
2021-05-03 16:14:24 +02:00
committed by cris-technikum
parent d23faa6e96
commit a50a666d11
5 changed files with 125 additions and 12 deletions
+18
View File
@@ -0,0 +1,18 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
// Deadline for Application given as Time-Interval after Semesterstart.
$config['interval_blocking_application'] = 'P1M';
// Lehrveranstaltungen with these grades will be blocked for application
$config['grades_blocking_application'] = array(
5, // nicht genügend
6, // angerechnet
9, // noch nicht eingetragen
13, // nicht erfolgreich absolviert
14, // nicht bestanden,
15, // nicht teilgenommen
18 // unentschuldigt
);
@@ -41,6 +41,9 @@ class requestAnrechnung extends Auth_Controller
$this->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.
*
@@ -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(
<br><br><br><br>
</div>
<div class="col-xs-4">
<div class="alert text-center">Status: <b><span class="text-uppercase" id="requestAnrechnung-status_kurzbz"
<!-- Status panel -->
<div class="alert text-center" id="requestAnrechnung-status">Status: <b><span class="text-uppercase" id="requestAnrechnung-status_kurzbz"
data-status_kurzbz="<?php echo $anrechnungData->status_kurzbz ?>">
<?php echo $anrechnungData->status; ?>
</span></b></div>
<?php if ($is_expired): ?>
<div class="alert alert-warning">
<?php echo $this->p->t('global', 'bearbeitungGesperrt'); ?>
<?php echo $is_expired && empty($antragData->anrechnung_id) ? ': ' . $this->p->t('anrechnung', 'deadlineUeberschritten') : ''; ?>
</div>
<?php endif; ?>
</span></b>
</div>
<!-- Sperregrund panel (hidden by default) -->
<div class="alert alert-danger text-center hidden" id="requestAnrechnung-sperre"
data-anrechnung_id="<?php echo empty($antragData->anrechnung_id) ? '' : $antragData->anrechnung_id; ?>"
data-expired="<?php echo json_encode($is_expired); ?>"
data-blocked="<?php echo json_encode($is_blocked) ?>">
</div>
<br>
<?php $this->load->view('lehre/anrechnung/requestAnrechnungImportant'); ?>
</div>
@@ -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 "<b>"+ sperregrund + "</b>";
})
// Disable all form elements
requestAnrechnung.disableFormFields();
}
},
initTooltips: function (){
$('[data-toggle="tooltip"]').tooltip({
delay: { "show": 200, "hide": 200 },
+20 -1
View File
@@ -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(