Reihungstestverwaltung

- Button um Assistenz über Testende zu informieren (vorerst auskommentiert)
- An der FHTW wird bei den Stufen eine Beschreibung eingeblendet
- Minor Usability an Bugfixes
This commit is contained in:
Manfred Kindl
2018-12-10 10:41:47 +01:00
parent 955102b822
commit 280c3ac104
2 changed files with 506 additions and 297 deletions
+247 -38
View File
@@ -52,6 +52,7 @@ require_once('../../include/sprache.class.php');
require_once('../../include/organisationsform.class.php');
require_once('../../include/gruppe.class.php');
require_once('../../include/variable.class.php');
require_once('../../include/mail.class.php');
// "Teilgenommen" und "Punkte" werden immer mit false bzw. 0 gespeichert
@@ -583,6 +584,25 @@ if(isset($_GET['excel']))
<script type="text/javascript">
$(document).ready(function()
{
// Check, ob Räume zugeteilt sind oder max_teilnehmer gesetzt ist, wenn "öffentlich" gesetzt wird
$('#rt_form').submit(function()
{
if ($('#oeffentlich').is(":checked"))
{
if ($('.ort_listitem').length == 0 && $('#max_teilnehmer').val() == '' && $('#ort').val() == '')
confirm('Wenn der Reihungstest "Öffentlich" ist, sollten Räume zugeteilt sein, oder "Max TeilnehmerInnen" gesetzt sein');
}
});
if ($('#oeffentlich').is(":checked") && $('.ort_listitem').length == 0 && $('#max_teilnehmer').val() == '' && $('#ort').val() == '')
{
$('#messageDiv').html('Wenn der Reihungstest "Öffentlich" ist, sollten Räume zugeteilt sein, oder "Max TeilnehmerInnen" gesetzt sein');
}
else
{
$('#messageDiv').html();
}
// Set Anmeldefrist 14 Tage vor Testdatum, wenn Testdatum geändert wird
$('#rt_datum').change(function()
{
@@ -947,7 +967,16 @@ if(isset($_GET['excel']))
display: inline-block;
vertical-align: middle;
}
.listitem
.studienplan_listitem
{
background-color: lightgray;
padding: 0 5px 0 6px;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
vertical-align: middle;
}
.ort_listitem
{
background-color: lightgray;
padding: 0 5px 0 6px;
@@ -983,9 +1012,9 @@ if(isset($_GET['excel']))
.errorMessage
{
color: #721c24;
background-color: #f8d7da;;
background-color: #f8d7da;
padding: .75rem 1.25rem;
border: 1px solid #f5c6cb;;
border: 1px solid #f5c6cb;
}
</style>
</head>
@@ -1062,7 +1091,7 @@ if(isset($_POST['speichern']) || isset($_POST['kopieren']))
$reihungstest->max_teilnehmer = filter_input(INPUT_POST, 'max_teilnehmer', FILTER_VALIDATE_INT);
if ($rechte->isBerechtigt('lehre/reihungstestOeffentlich', $_POST['studiengang_kz'], 'suid'))
{
$reihungstest->oeffentlich = filter_input(INPUT_POST, 'oeffentlich', FILTER_VALIDATE_BOOLEAN);
$reihungstest->oeffentlich = (isset($_POST['oeffentlich']) ? true : false);
}
$reihungstest->stufe = filter_input(INPUT_POST, 'stufe', FILTER_VALIDATE_INT);
$reihungstest->aufnahmegruppe_kurzbz = filter_input(INPUT_POST, 'aufnahmegruppe');
@@ -1397,6 +1426,99 @@ if(isset($_GET['type']) && $_GET['type']=='saveallrtpunkte')
}
}
// Informiert die Studiengangsassistenz über das Ende des Tests
if(isset($_GET['type']) && $_GET['type']=='informAssistance')
{
// Alle Studiengänge holen, bei denen der Bewerber Interessent ist, die Bewerbung abgeschickt hat und bestätigt wurde
// Mail an alle diese Studiengänge senden
$reihungstest = new reihungstest($reihungstest_id);
$reihungstest->getPersonenReihungstest($reihungstest_id);
$preStudentenArray = array();
foreach ($reihungstest->result AS $row)
{
$prestudent = new prestudent();
$prestudent->getPrestudenten($row->person_id);
foreach ($prestudent->result AS $prest)
{
$prestudentrolle = new prestudent();
$prestudentrolle->getLastStatus($prest->prestudent_id, $reihungstest->studiensemester_kurzbz, 'Interessent');
$stg = new studiengang($prest->studiengang_kz);
$hoechtePrestPrio = new prestudent();
$hoechtePrestPrio->getPriorisierungPersonStudiensemester($prest->person_id, $reihungstest->studiensemester_kurzbz, 'priorisierung ASC NULLS LAST');
if ($prestudentrolle->bewerbung_abgeschicktamum != ''
&& $prestudentrolle->bestaetigtam != ''
&& $prestudentrolle->bestaetigtvon != ''
&& $stg->typ == 'b')
{
$preStudentenArray[$prest->studiengang_kz][] = array( 'prestudent_id' => $prest->prestudent_id,
'priorisierung' => $prest->priorisierung,
'hoechstePrio' => $hoechtePrestPrio->priorisierung,
'studiengangHoechstePrio' => $hoechtePrestPrio->studiengang_kz
);
}
}
}
foreach ($preStudentenArray AS $studiengang_kz => $prestudentPrioPair)
{
$empfaenger = getMailEmpfaenger($studiengang_kz);
$mailtext = 'Folgende InteressentInnen für das '.$reihungstest->studiensemester_kurzbz.' haben am Reihungstest '.$datum_obj->convertISODate($reihungstest->datum).' '.$datum_obj->formatDatum($reihungstest->uhrzeit,'H:i').' Uhr teilgenommen';
// Wenn MAIL_DEBUG aktiv ist, zeige auch den Empfänger an
if(defined('MAIL_DEBUG') && MAIL_DEBUG != '')
{
$mailtext .= '<br><br>Empfänger: '.$empfaenger.'<br><br>';
}
$mailtext .= 'Vorname, Nachname, Priorisierung (höchste Prio, Prio in diesem Studiengang)<br>';
foreach ($prestudentPrioPair AS $value)
{
$mailtext .= 'ID:'.$value['prestudent_id'].' Prio:'.$value['priorisierung'].' Studiengang mit der höchsten Priorität: '.$value['studiengangHoechstePrio'].'<br>';
}
$mailtext .= '<br><a href="'.APP_ROOT.'cis/testtool/admin/auswertung.php?reihungstest='.$reihungstest_id.'&studiengang='.$studiengang_kz.'">Link zur Auswertung</a>';
$mailtext = wordwrap($mailtext, 70); // Bricht den Code um, da es sonst zu Anzeigefehlern im Mail kommen kann
$mail = new mail($empfaenger, 'no-reply', 'Reihungstest-Auswertung', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.');
$mail->setHTMLContent($mailtext);
if (!$mail->send())
{
$messageError .= '<p>Fehler beim Senden der Nachricht an: '.$empfaenger.'</p>';
}
else
{
$messageSuccess .= '<p>Nachricht erfolgreich verschickt an: '.$empfaenger.'</p>';
}
}
/*$empfaenger = getMailEmpfaenger($prest->studiengang_kz);
$mailtext = 'Folgende InteressentInnen für das '.$reihungstest->studiensemester_kurzbz.' haben am Reihungstest '.$datum_obj->convertISODate($reihungstest->datum).' '.$datum_obj->formatDatum($reihungstest->uhrzeit,'H:i').' Uhr teilgenommen';
// Wenn MAIL_DEBUG aktiv ist, zeige auch den Empfänger an
if(defined('MAIL_DEBUG') && MAIL_DEBUG != '')
{
$mailtext .= '<br><br>Empfänger: '.$empfaenger.'<br><br>';
}
$mailtext .= 'Vorname, Nachname, Priorisierung (höchste Prio, Prio in diesem Studiengang)';
$mailtext .= '<a href="'.APP_ROOT.'cis/testtool/admin/auswertung.php?reihungstest='.$reihungstest_id.'&studiengang='.$prest->studiengang_kz.'">Link zur Auswertung</a>';
$mailtext = wordwrap($mailtext, 70); // Bricht den Code um, da es sonst zu Anzeigefehlern im Mail kommen kann
$mail = new mail($empfaenger, 'no-reply', 'Reihungstest-Auswertung', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.');
$mail->setHTMLContent($mailtext);
if (!$mail->send())
{
$messageError .= '<p>Fehler beim Senden der Nachricht an: '.$empfaenger.'</p>';
}
else
{
$messageSuccess .= '<p>Nachricht erfolgreich verschickt an: '.$empfaenger.'</p>';
}*/
}
// Verteilt alle BewerberInnen gleichmaessig auf die Raeume
if(isset($_GET['type']) && $_GET['type']=='verteilen')
{
@@ -1874,15 +1996,21 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
<td>
<select name='stufe'>
<option value=''>-- keine Auswahl --</option>
<?php for($i=1; $i<=3; $i++)
<?php
// An der FHTW wird eine Beschreibung neben der Stufe angezeigt
if (defined('DOMAIN') && DOMAIN == 'technikum-wien.at')
{
if($reihungstest->stufe==$i)
$selected = 'selected="selected"';
echo '<option value="1" '.($reihungstest->stufe == 1 ? 'selected' : '').'>1 (Computertest)</option>';
echo '<option value="2" '.($reihungstest->stufe == 2 ? 'selected' : '').'>2 (Interview)</option>';
echo '<option value="3" '.($reihungstest->stufe == 3 ? 'selected' : '').'>3</option>';
}
else
$selected = ''; ?>
<option value="<?php echo $i ?>" <?php echo $selected ?>><?php echo $i ?></option>
<?php } ?>
{
echo '<option value="1" '.($reihungstest->stufe == 1 ? 'selected' : '').'>1</option>';
echo '<option value="2" '.($reihungstest->stufe == 2 ? 'selected' : '').'>2</option>';
echo '<option value="3" '.($reihungstest->stufe == 3 ? 'selected' : '').'>3</option>';
}
?>
</select>
&nbsp;&nbsp;Studiensemester
<select id='studiensemester_dropdown' name='studiensemester_kurzbz'>
@@ -2006,7 +2134,7 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
$studienplan->loadStudienplan($row->studienplan_id);
echo '<tr><td>&nbsp;</td>';
echo '<td class="listitem">'.$studienplan->bezeichnung.' ('.$studienplan->studienplan_id.')</td>';
echo '<td class="studienplan_listitem">'.$studienplan->bezeichnung.' ('.$studienplan->studienplan_id.')</td>';
echo '<td><button type="submit" name="delete_studienplan" value="'.$row->studienplan_id.'"><img src="../../skin/images/delete_x.png" alt="Studienplan entfernen" height="13px"></button></td>';
echo '</tr>';
}
@@ -2043,7 +2171,7 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
$anzeigename = '';
echo '<tr><td>&nbsp;</td>';
echo '<td class="listitem">'.$row->ort_kurzbz.' ('.$orte_array[$row->ort_kurzbz].' Arbeitsplätze';
echo '<td class="ort_listitem">'.$row->ort_kurzbz.' ('.$orte_array[$row->ort_kurzbz].' Arbeitsplätze';
if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0)
echo '*';
echo ')';
@@ -2102,9 +2230,9 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
<tr <?php echo ($rechte->isBerechtigt('lehre/reihungstestOeffentlich', $reihungstest->studiengang_kz, 'suid') ? '' : 'style="display:none"') ?>>
<td class="feldtitel">Öffentlich</td>
<td>
<input type="hidden" name="oeffentlich" value="0">
<input type="checkbox" name="oeffentlich" value="1" <?php echo $reihungstest->oeffentlich ? 'checked="checked"' : '' ?>>
<input id="oeffentlich" type="checkbox" name="oeffentlich" value="1" <?php echo $reihungstest->oeffentlich ? 'checked="checked"' : '' ?>>
(Für Bewerber sichtbar/auswählbar)
<span id="messageDiv" style="color: red;"></span>
</td>
</tr>
<tr>
@@ -2155,14 +2283,15 @@ if($reihungstest_id!='')
{
echo '<a class="buttongreen" href="'.$_SERVER['PHP_SELF'].'?reihungstest_id='.$reihungstest_id.'&excel=true">Excel Export</a>';
echo '<a class="buttongreen" href="'.$_SERVER['PHP_SELF'].'?reihungstest_id='.$reihungstest_id.'&type=saveallrtpunkte">Punkte ins FAS &uuml;bertragen</a>';
echo '<a class="buttongreen" href="#" onclick="SendMail()" id="mailSendButton">Mail an alle senden</a>';
echo '<a class="buttongreen" href="#" onclick="SendMail()" id="mailSendButton">Mail an alle BewerberInnen senden</a>';
}
echo '<a class="buttongreen" href="../../cis/testtool/admin/auswertung.php?'.($reihungstest_id!=''?"reihungstest=$reihungstest_id":'').'" target="_blank">Auswertung</a>';
echo '<a class="buttonorange" href="reihungstest_zusammenlegung.php">Anmeldungen zusammenlegen</a>';
if($rechte->isBerechtigt('basis/testtool', null, 'suid'))
{
echo '<a class="buttonorange" href="reihungstest_administration.php">Administration</a><br>';
echo '<a class="buttonorange" href="reihungstest_administration.php">Administration</a>';
}
//echo '<a class="buttonorange" href="'.$_SERVER['PHP_SELF'].'?reihungstest_id='.$reihungstest_id.'&stg_kz='.$reihungstest->studiengang_kz.'&studiensemester_kurzbz='.$reihungstest->studiensemester_kurzbz.'&type=informAssistance">Assistenz über Testende informieren</a><br>';
echo '</td></tr>';
echo '</td></tr></table>';
if($reihungstest_id!='')
@@ -2320,21 +2449,34 @@ if($reihungstest_id!='')
if($punkteberechnung == 'true')
{
//Daten für Spalte bereits absolvierte Verfahren
$qry = "SELECT
distinct tbl_reihungstest.reihungstest_id,
$qry = " SELECT DISTINCT tbl_reihungstest.reihungstest_id,
tbl_pruefling.pruefling_id,
tbl_prestudent.prestudent_id,
tbl_rt_person.person_id
FROM
public.tbl_rt_person
FROM PUBLIC.tbl_rt_person
JOIN lehre.tbl_studienplan USING (studienplan_id)
JOIN lehre.tbl_studienordnung USING (studienordnung_id)
JOIN public.tbl_prestudent USING(person_id)
JOIN public.tbl_prestudentstatus USING(studienplan_id, prestudent_id)
JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id)
LEFT JOIN testtool.tbl_pruefling using(prestudent_id) WHERE
(tbl_rt_person.anmeldedatum is null OR tbl_rt_person.anmeldedatum<=tbl_reihungstest.datum)
AND tbl_reihungstest.datum >=(SELECT min(begintime)::date FROM testtool.tbl_pruefling_frage WHERE pruefling_id=tbl_pruefling.pruefling_id AND tbl_reihungstest.datum>=begintime-'1 days'::interval) AND (tbl_reihungstest.stufe is null or tbl_reihungstest.stufe=1)
JOIN PUBLIC.tbl_prestudent USING (person_id)
JOIN PUBLIC.tbl_prestudentstatus USING (
studienplan_id,
prestudent_id
)
JOIN PUBLIC.tbl_reihungstest ON (tbl_reihungstest.reihungstest_id = tbl_rt_person.rt_id)
LEFT JOIN testtool.tbl_pruefling using (prestudent_id)
WHERE (
tbl_rt_person.anmeldedatum IS NULL
OR tbl_rt_person.anmeldedatum <= tbl_reihungstest.datum
)
AND tbl_reihungstest.datum >= (
SELECT min(begintime)::DATE
FROM testtool.tbl_pruefling_frage
WHERE pruefling_id = tbl_pruefling.pruefling_id
AND tbl_reihungstest.datum >= begintime - '1 days'::interval
)
AND (
tbl_reihungstest.stufe IS NULL
OR tbl_reihungstest.stufe = 1
)
AND person_id = ".$db->db_add_param($row->person_id, FHC_INTEGER);
if($result = $db->db_query($qry))
@@ -2500,21 +2642,34 @@ if($reihungstest_id!='')
if($punkteberechnung == 'true')
{
//Daten für Spalte bereits absolvierte Verfahren
$qry = "SELECT
distinct tbl_reihungstest.reihungstest_id,
$qry = "SELECT DISTINCT tbl_reihungstest.reihungstest_id,
tbl_pruefling.pruefling_id,
tbl_prestudent.prestudent_id,
tbl_rt_person.person_id
FROM
public.tbl_rt_person
FROM PUBLIC.tbl_rt_person
JOIN lehre.tbl_studienplan USING (studienplan_id)
JOIN lehre.tbl_studienordnung USING (studienordnung_id)
JOIN public.tbl_prestudent USING(person_id)
JOIN public.tbl_prestudentstatus USING(studienplan_id, prestudent_id)
JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id)
LEFT JOIN testtool.tbl_pruefling using(prestudent_id) WHERE
(tbl_rt_person.anmeldedatum is null OR tbl_rt_person.anmeldedatum<=tbl_reihungstest.datum)
AND tbl_reihungstest.datum >=(SELECT min(begintime)::date FROM testtool.tbl_pruefling_frage WHERE pruefling_id=tbl_pruefling.pruefling_id AND tbl_reihungstest.datum>=begintime-'1 days'::interval) AND (tbl_reihungstest.stufe is null or tbl_reihungstest.stufe=1)
JOIN PUBLIC.tbl_prestudent USING (person_id)
JOIN PUBLIC.tbl_prestudentstatus USING (
studienplan_id,
prestudent_id
)
JOIN PUBLIC.tbl_reihungstest ON (tbl_reihungstest.reihungstest_id = tbl_rt_person.rt_id)
LEFT JOIN testtool.tbl_pruefling using (prestudent_id)
WHERE (
tbl_rt_person.anmeldedatum IS NULL
OR tbl_rt_person.anmeldedatum <= tbl_reihungstest.datum
)
AND tbl_reihungstest.datum >= (
SELECT min(begintime)::DATE
FROM testtool.tbl_pruefling_frage
WHERE pruefling_id = tbl_pruefling.pruefling_id
AND tbl_reihungstest.datum >= begintime - '1 days'::interval
)
AND (
tbl_reihungstest.stufe IS NULL
OR tbl_reihungstest.stufe = 1
)
AND person_id = ".$db->db_add_param($row->person_id, FHC_INTEGER);
if($result = $db->db_query($qry))
@@ -2623,7 +2778,61 @@ if($reihungstest_id!='')
echo '</div>';
}
}
} ?>
}
/**
* Liefert die interne Empfangsadresse des Studiengangs fuer den Mailversand.
* Wenn BEWERBERTOOL_MAILEMPFANG gesetzt ist, wird diese genommen,
* sonst diejenige aus BEWERBERTOOL_BEWERBUNG_EMPFAENGER,
* sonst die Mailadresse des Studiengangs
*
* @param integer $studiengang_kz
* @param integer $studienplan_id
* @param string $orgform_kurzbz
* @return string mit den Mailadressen sonst false
*/
function getMailEmpfaenger($studiengang_kz, $studienplan_id = null, $orgform_kurzbz = null)
{
$studiengang = new studiengang($studiengang_kz);
if ($studienplan_id != '')
{
$studienplan = new studienplan();
$studienplan->loadStudienplan($studienplan_id);
}
$empf_array = array();
$empfaenger = '';
if(defined('BEWERBERTOOL_BEWERBUNG_EMPFAENGER'))
$empf_array = unserialize(BEWERBERTOOL_BEWERBUNG_EMPFAENGER);
// Umgehung für FHTW. Ausprogrammiert im Code
if(defined('BEWERBERTOOL_MAILEMPFANG') && BEWERBERTOOL_MAILEMPFANG != '')
{
$empfaenger = BEWERBERTOOL_MAILEMPFANG;
}
elseif(isset($empf_array[$studiengang_kz]))
{
// Pfuschloesung, damit bei BIF Dual die Mail an info.bid geht
if ($studiengang_kz == 257)
{
if ((isset($studienplan) && $studienplan->orgform_kurzbz == 'DUA') ||
($orgform_kurzbz != '' && $orgform_kurzbz == 'DUA'))
$empfaenger = 'info.bid@technikum-wien.at';
}
else
$empfaenger = $empf_array[$studiengang_kz];
}
else
$empfaenger = $studiengang->email;
if ($empfaenger != '')
return $empfaenger;
else
return false;
}
?>
</body>
</html>
@@ -213,7 +213,7 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'studienpla
foreach ($studienordnung->result as $row_status)
$status_arr[$row_status->status_kurzbz] = $row_status->bezeichnung;
if (count($studienplan->result) == 0)
if (count($studienplan->result) == 0 && empty($result_obj))
{
// Wenn für das übergbene Studiensemester kein Studienplan gefunden wird, wird nochmal ohne Studiensemester gesucht
$studienplan->searchStudienplaene($searchItems, $aktiv);
@@ -246,9 +246,9 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'studienpla
else
{
$item['studienplan_id'] = '';
$item['bezeichnung'] = 'Kein passender Studienplan gefunden';
$item['bezeichnung'] = 'Kein passender Studienplan für "' . implode(', ', $searchItems) . '" gefunden';
$item['status'] = '';
$item['disabled'] = false;
$item['disabled'] = true;
$result_obj[] = $item;
}
echo json_encode($result_obj);