Umbau Prüfungsverwaltung zu AJAX; Möglichkeit Prüfungen für alle Lektoren anzulegen

This commit is contained in:
Stefan Puraner
2014-04-09 12:14:20 +00:00
parent 30da21258d
commit 4a47a85d20
5 changed files with 1505 additions and 796 deletions
@@ -0,0 +1,50 @@
<?php
/* Copyright (C) 2014 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Manfred Kindl <kindlm@technikum-wien.at>,
* Stefan Puraner <puraner@technikum-wien.at>
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/basis_db.class.php');
require_once('../../../../include/mitarbeiter.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
if(isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete']=='lektor')
{
$search=trim((isset($_REQUEST['term']) ? $_REQUEST['term']:''));
if (is_null($search) ||$search=='')
exit();
$mitarbeiter = new mitarbeiter();
$searchItems = explode(' ',$search);
if($mitarbeiter->search($search))
{
$result_obj = array();
foreach($mitarbeiter->result as $row)
{
$item['vorname']=html_entity_decode($row->vorname);
$item['nachname']=html_entity_decode($row->nachname);
$item['uid']=html_entity_decode($row->uid);
$result_obj[]=$item;
}
echo json_encode($result_obj);
}
exit;
}
?>
+783 -43
View File
@@ -52,15 +52,25 @@ function setDatePicker(ele)
/**
* Fügt ein neunes Formularfeld für einen zusätzlichen Termin hinzu
* @param {type} inputTag
* @param {type} htmlTag
* @returns {undefined}
*/
function terminHinzufuegen(inputTag)
function terminHinzufuegen(htmlTag)
{
inputTag = (inputTag===undefined ? "" : inputTag);
var count = $("#prfTermin tr").length+1;
$("#prfTermin").append('<tr><td><input type="text" id="termin'+count+'" name="termin'+(inputTag !== "" ? inputTag : "")+'[]"></td><td><input type="time" placeholder="00:00" name="terminBeginn'+(inputTag !== "" ? inputTag : "")+'[]"></td><td><input type="time" placeholder="00:00" name="terminEnde'+(inputTag !== "" ? inputTag : "")+'[]"></td><td><input type="number" placeholder="0" min="0" name="minTeilnehmer'+(inputTag !== "" ? inputTag : "")+'[]"></td><td><input type="number" placeholder="10" min="0" name="maxTeilnehmer'+(inputTag !== "" ? inputTag : "")+'[]"></td></tr>');
setDatePicker();
htmlTag = (htmlTag===undefined ? "input" : htmlTag);
switch(htmlTag)
{
case 'input':
var count = $("#prfTermin tr").length+1;
$("#prfTermin").append('<tr id="row'+count+'"><td><input type="text" id="termin'+count+'" name="termin[]"></td><td><input type="time" id="termin'+count+'Beginn" placeholder="00:00" name="termin'+count+'Beginn[]"></td><td><input type="time" id="termin'+count+'Ende" placeholder="00:00" name="termin'+count+'Ende[]"></td><td><input type="number" id="termin'+count+'min" placeholder="0" min="0" name="termin'+count+'minTeilnehmer[]"></td><td><input type="number" id="termin'+count+'max" placeholder="10" min="0" name="termin'+count+'maxTeilnehmer[]"></td></tr>');
setDatePicker();
break;
case 'span':
var count = $("#prfTermin tr").length+1;
$("#prfTermin").append('<tr id="row'+count+'"><td><span style="visibility: hidden;" id="termin'+count+'Id"></span><span id="termin'+count+'" name="termin[]"></span></td><td><span id="termin'+count+'Beginn" name="termin'+count+'Beginn[]"></span></td><td><span id="termin'+count+'Ende" name="termin'+count+'Ende[]"></span></td><td><span id="termin'+count+'min" name="termin'+count+'minTeilnehmer[]"></span></td><td><span id="termin'+count+'max" name="termin'+count+'maxTeilnehmer[]"></span></td></tr>');
break;
}
}
/**
@@ -104,17 +114,26 @@ function loadPruefungsfenster()
var studiensemester_kurzbz = $("#studiensemester option:selected").val();
$.ajax({
dataType: 'json',
url: "../../../../soap/fhcomplete.php",
url: "./pruefungstermin.json.php",
type: "POST",
data: {
typ: "json",
class: "pruefungsfenster",
method: "getByStudiensemester",
parameter_0: studiensemester_kurzbz
method: "getPruefungsfensterByStudiensemester",
studiensemester_kurzbz: studiensemester_kurzbz
},
error: loadError
}).success(function(data){
writePruefungsfenster(data);
setDatePicker();
if(data.result.length === 0)
{
messageBox("message", "Keine Prüfungsfenster vorhanden", "red", "highlight", 1000);
$("#pruefungsfenster").html("<option value='null'></option>");
}
else
{
writePruefungsfenster(data);
setDatePicker();
}
}).complete(function(){
});
}
@@ -251,7 +270,6 @@ function loadPruefungenGesamt()
}).complete(function(event, xhr, settings){
setTablesorter("table3");
});
}
/**
@@ -541,35 +559,37 @@ function refresh()
* Lädt alle Prüfungen eines Mitarbeiters
* @returns {undefined}
*/
function loadPruefungenMitarbeiter()
{
$.ajax({
dataType: 'json',
url: "./pruefungsanmeldung.json.php",
type: "POST",
data: {
method: "getPruefungMitarbeiter"
},
error: loadError
}).success(function(data){
if(data.error === 'false')
{
var liste = "";
data.result.forEach(function(e){
liste += "<li>"+e.bezeichnung+"<ul>";
e.pruefung.termine.forEach(function(d){
liste += "<li> <a onclick='showAnmeldungen(\""+d.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\");'>"+convertDateTime(d.von)+"</a></li>";
})
liste += "</li></ul>";
});
$("#pruefungenListe").append(liste);
}
else
{
$("#pruefungenListe").html(data.errormsg);
}
});
}
//function loadPruefungenMitarbeiter()
//{
// var uid = $("#mitarbeiter_uid").val();
// $.ajax({
// dataType: 'json',
// url: "./pruefungsanmeldung.json.php",
// type: "POST",
// data: {
// method: "getPruefungMitarbeiter",
// uid: uid
// },
// error: loadError
// }).success(function(data){
// if(data.error === 'false')
// {
// var liste = "";
// data.result.forEach(function(e){
// liste += "<li>"+e.bezeichnung+"<ul>";
// e.pruefung.termine.forEach(function(d){
// liste += "<li> <a onclick='showAnmeldungen(\""+d.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\");'>"+convertDateTime(d.von)+"</a></li>";
// })
// liste += "</li></ul>";
// });
// $("#pruefungenListe").append(liste);
// }
// else
// {
// $("#pruefungenListe").html(data.errormsg);
// }
// });
//}
/**
* Konvertiert einen String im Fromat JJJJ-MM-TT hh:mm:ss zu DD.MM.JJJJ oder HH:MM
@@ -871,3 +891,723 @@ function saveKommentar(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id)
showAnmeldungen(termin_id, lehrveranstaltung_id);
});
}
function loadPruefungstypen(abschluss)
{
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "loadPruefungstypen",
abschluss: abschluss
},
error: loadError
}).success(function(data){
var selectData = "";
data.result.forEach(function(d){
if(d.beschreibung === null)
d.beschreibung = "";
selectData += "<option value='"+d.pruefungstyp_kurzbz+"'>"+d.beschreibung+"</option>";
});
$('#pruefungsTyp').html(selectData);
});
}
function loadStudiensemester()
{
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "loadStudiensemester"
},
error: loadError
}).success(function(data){
var selectData = "";
data.result.forEach(function(d){
selectData += "<option "+((d.studiensemester_kurzbz === data.aktSem) ? "selected" : "")+" value='"+d.studiensemester_kurzbz+"'>"+d.studiensemester_kurzbz+"</option>";
});
$('#studiensemester').html(selectData);
}).complete(function(){
loadPruefungsfenster();
loadLehrveranstaltungen();
});
}
function is_null(variable)
{
if(variable === null)
{
return true;
}
return false;
}
function is_undefined(variable)
{
if(variable === undefined)
{
return true;
}
return false;
}
function is_empty_String(string)
{
if(string.length === 0)
{
return true;
}
return false;
}
function savePruefungstermin()
{
unmarkMissingFormEntry();
var studiensemester_kurzbz = $("#studiensemester").val();
var pruefungsfenster_id = $("#pruefungsfenster").val();
var pruefungstyp_kurzbz = $("#pruefungsTyp").val();
var titel = $("#titel").val();
var beschreibung = $("#beschreibung").val();
var methode = $("#methode").val();
var einzeln = $("#einzeln").prop("checked");
var termine = [];
var lehrveranstaltungen = [];
var error = false;
$("#prfTermin tr").each(function(i,v){
var termin = {};
$(v).find("input").each(function(j, w){
switch (j) {
case 0:
termin.datum = $(w).val();
break;
case 1:
termin.beginn = $(w).val();
break;
case 2:
termin.ende = $(w).val();
break;
case 3:
termin.min = $(w).val();
break;
case 4:
termin.max = $(w).val();
break;
}
});
if(!checkTermin(termin))
{
error = true;
markMissingFormEntry($(v).attr("id"));
}
termine.push(termin);
});
$("#lvDropdowns select").each(function(i,v){
if($(v).val() !== "null")
lehrveranstaltungen.push($(v).val());
});
if(is_null(studiensemester_kurzbz) || is_undefined(studiensemester_kurzbz) || is_empty_String(studiensemester_kurzbz))
{
error = true;
markMissingFormEntry("studiensemester");
}
if(is_null(pruefungsfenster_id) || is_undefined(pruefungsfenster_id) || is_empty_String(pruefungsfenster_id) || (pruefungsfenster_id === "null"))
{
error = true;
markMissingFormEntry("pruefungsfenster");
}
if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert"))
{
error = true;
markMissingFormEntry("pruefungsTyp");
}
if(is_null(titel) || is_undefined(titel) || is_empty_String(titel))
{
error = true;
markMissingFormEntry("titel");
}
if(is_null(beschreibung) || is_undefined(beschreibung) || is_empty_String(beschreibung))
{
error = true;
markMissingFormEntry("beschreibung");
}
if(is_null(methode) || is_undefined(methode) || is_empty_String(methode))
{
error = true;
markMissingFormEntry("methode");
}
//TODO Kommentar entfernen
// if(lehrveranstaltungen.length === 0)
// {
// error = true;
// markMissingFormEntry("lvDropdowns");
// }
if(error)
{
messageBox("message", "Formulardaten sind nicht korrekt.", "red", "highlight", 3000);
}
else
{
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "savePruefungstermin",
studiensemester_kurzbz: studiensemester_kurzbz,
pruefungsfenster_id: pruefungsfenster_id,
pruefungstyp_kurzbz: pruefungstyp_kurzbz,
titel: titel,
beschreibung: beschreibung,
methode: methode,
einzeln: einzeln,
termine: termine,
lehrveranstaltungen: lehrveranstaltungen
},
error: loadError
}).success(function(data){
unmarkMissingFormEntry();
if(data.error === "false")
{
messageBox("message", "Prüfung erfolgreich gespeichert.", "green", "highlight", 1000);
resetPruefungsverwaltung();
}
else
{
messageBox("message", data.errormsg, "red", "highlight", 1000);
}
});
}
}
function markMissingFormEntry(eleId)
{
$("#"+eleId).addClass("missingFormData");
$(".modalOverlay").each(function(i,v){
$(v).removeClass("modalOverlay");
});
}
function unmarkMissingFormEntry()
{
$(".missingFormData").each(function(i, v){
$(v).removeClass("missingFormData");
});
}
function loadLehrveranstaltungen()
{
var studiensemester_kurzbz = $("#studiensemester").val();
var mitarbeiter_uid = $("#mitarbeiter_uid").val();
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "getLehrveranstaltungenByMitarbeiter",
mitarbeiter_uid: mitarbeiter_uid,
studiensemester_kurzbz: studiensemester_kurzbz
},
error: loadError
}).success(function(data){
var selectData = '<option value="null">Lehrveranstaltung auswählen...</option>';
data.result.forEach(function(d){
selectData += '<option value="'+d.lehrveranstaltung_id+'">'+d.studiengang_bezeichnung+' | <b>'+d.bezeichnung+'</b> ('+d.lehrform_kurzbz+')</option>';
});
$("#lvDropdown1").html(selectData);
}).complete(function(){
});
}
function loadPruefungsDetails(prfId)
{
unmarkMissingFormEntry();
$("#modalOverlay").addClass("modalOverlay");
resetLehrveranstaltungen();
var row = $("#row1").clone();
resetTermine();
$("#prfTermine").append(row);
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "loadStudiensemester"
},
error: loadError
}).success(function(data){
var selectData = "";
data.result.forEach(function(d){
selectData += "<option "+((d.studiensemester_kurzbz === data.aktSem) ? "selected" : "")+" value='"+d.studiensemester_kurzbz+"'>"+d.studiensemester_kurzbz+"</option>";
});
$('#studiensemester').html(selectData);
}).complete(function(){
var studiensemester_kurzbz = $("#studiensemester option:selected").val();
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "getPruefungsfensterByStudiensemester",
studiensemester_kurzbz: studiensemester_kurzbz
},
error: loadError
}).success(function(data){
if(data.result.length === 0)
{
messageBox("message", "Keine Prüfungsfenster vorhanden", "red", "highlight", 1000);
$("#pruefungsfenster").html("<option value='null'></option>");
}
else
{
writePruefungsfenster(data);
setDatePicker();
}
}).complete(function(){
var studiensemester_kurzbz = $("#studiensemester").val();
var mitarbeiter_uid = $("#mitarbeiter_uid").val();
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "getLehrveranstaltungenByMitarbeiter",
mitarbeiter_uid: mitarbeiter_uid,
studiensemester_kurzbz: studiensemester_kurzbz
},
error: loadError
}).success(function(data){
var selectData = '<option value="null">Lehrveranstaltung auswählen...</option>';
data.result.forEach(function(d){
selectData += '<option value="'+d.lehrveranstaltung_id+'">'+d.studiengang_bezeichnung+' | <b>'+d.bezeichnung+'</b> ('+d.lehrform_kurzbz+')</option>';
});
$("#lvDropdown1").html(selectData);
}).complete(function(){
$.ajax({
dataType: 'json',
url: "./pruefungsanmeldung.json.php",
type: "POST",
data: {
method: "loadPruefung",
pruefung_id: prfId
},
error: loadError
}).success(function(data){
var copy = $("#lvDropdown1").clone();
$("#lvDropdowns").empty();
$("#lvDropdowns").html(copy);
var result = data.result[0];
$("#titel").val(result.pruefung.titel);
$("#beschreibung").val(result.pruefung.beschreibung);
$("#studiensemester").val(result.pruefung.studiensemester_kurzbz);
$("#pruefungsfenster").val(result.pruefung.pruefungsfenster_id);
$("#pruefungsTyp").val(result.pruefung.pruefungstyp_kurzbz);
$("#methode").val(result.pruefung.methode);
var i = 0;
$("#termin1").closest("tr").remove();
terminHinzufuegen("span");
data.result.forEach(function(d){
i++;
var lv = "<span value='"+d.lehrveranstaltung.lehrveranstaltung_id+"'>"+d.lehrveranstaltung.studiengang.kurzbzlang+" | <b>"+d.lehrveranstaltung.bezeichnung+"</b> ("+d.lehrveranstaltung.lehrform_kurzbz+")</span><a href='#' onclick='deleteLehrveranstaltungFromPruefung(\""+d.lehrveranstaltung.lehrveranstaltung_id+"\", \""+d.pruefung.pruefung_id+"\");'> löschen</a></br>";
$("#lvDropdowns").children().first().before(lv);
var j = 0;
d.pruefung.termine.forEach(function(t){
j++;
if(i===1)
{
var date = convertDateTime(t.von, "date");
var von = convertDateTime(t.von, "time");
var bis = convertDateTime(t.bis, "time");
var min = (t.min === null) ? "" : t.min;
var max = (t.max === null) ? "" : t.max;
$("#termin"+j+"Id").text(t.pruefungstermin_id);
$("#termin"+j).text(date);
$("#termin"+j+"Beginn").text(von);
$("#termin"+j+"Ende").text(bis);
$("#termin"+j+"min").text(min);
$("#termin"+j+"max").text(max);
$("#termin"+j+"Id").closest("tr").append("<td><a href='#' onclick='terminLoeschen(\""+d.pruefung.pruefung_id+"\", \""+t.pruefungstermin_id+"\");'>löschen</a></td>");
terminHinzufuegen("span");
}
});
});
var ele = document.getElementById("lvDropdowns");
// lehrveranstaltungDropdownhinzufuegen(ele, false);
$("#prfTermin tr").last().remove();
if(result.pruefung.einzeln)
{
$("#einzeln").prop("checked", "checked");
}
else
{
$("#einzeln").removeAttr("checked");
}
}).complete(function(){
$("#buttonSave").attr("onclick", "updatePruefung(\""+prfId+"\");");
if($("#buttonStorno").length === 0)
{
$("#buttonSave").after("<input type='button' id='buttonStorno' onclick='stornoPruefung(\""+prfId+"\");' value='Prüfung stornieren'></input>");
}
else
{
$("#buttonStorno").attr("onclick", "stornoPruefung(\""+prfId+"\");");
}
$("#modalOverlay").removeClass("modalOverlay");
});
});
});
});
}
function resetLehrveranstaltungen()
{
$("#lvDropdowns").children().each(function(i,v){
$("#lvDropdown"+(i+2)).next().remove();
$("#lvDropdown"+(i+2)).remove();
});
}
function resetTermine()
{
$("#prfTermin tr").each(function(i,v){
// if(i !== 0)
// {
$(v).remove();
// }
});
}
function updatePruefung(prfId)
{
$("#modalOverlay").addClass("modalOverlay");
//TODO Terminkollisionen überprüfen
unmarkMissingFormEntry();
var studiensemester_kurzbz = $("#studiensemester").val();
var pruefungsfenster_id = $("#pruefungsfenster").val();
var pruefungstyp_kurzbz = $("#pruefungsTyp").val();
var titel = $("#titel").val();
var beschreibung = $("#beschreibung").val();
var methode = $("#methode").val();
var einzeln = $("#einzeln").val();
var termine = [];
var termineNeu = [];
var lehrveranstaltungen = [];
$('#prfTermin tr').has("span").each(function(i,v){
var termin = {};
$(v).find("span").each(function(j, w){
switch (j) {
case 0:
termin.pruefungstermin_id = $(w).text();
break;
case 1:
termin.datum = $(w).text();
break;
case 2:
termin.beginn = $(w).text();
break;
case 3:
termin.ende = $(w).text();
break;
case 4:
termin.min = $(w).text();
break;
case 5:
termin.max = $(w).text();
break;
}
});
if(!checkTermin(termin))
{
error = true;
markMissingFormEntry($(v).attr("id"));
}
termine.push(termin);
});
$('#prfTermin tr').has("input").each(function(i,v){
var termin = {};
$(v).find("input").each(function(j, w){
switch (j) {
case 0:
termin.datum = $(w).val();
break;
case 1:
termin.beginn = $(w).val();
break;
case 2:
termin.ende = $(w).val();
break;
case 3:
termin.min = $(w).val();
break;
case 4:
termin.max = $(w).val();
break;
}
});
termineNeu.push(termin);
});
var error = false;
$("#lvDropdowns select").each(function(i,v){
if($(v).val() !== "null")
lehrveranstaltungen.push($(v).val());
});
if(is_null(studiensemester_kurzbz) || is_undefined(studiensemester_kurzbz) || is_empty_String(studiensemester_kurzbz))
{
error = true;
markMissingFormEntry("studiensemester");
}
if(is_null(pruefungsfenster_id) || is_undefined(pruefungsfenster_id) || is_empty_String(pruefungsfenster_id) || (pruefungsfenster_id === "null"))
{
error = true;
markMissingFormEntry("pruefungsfenster");
}
if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert"))
{
error = true;
markMissingFormEntry("pruefungsTyp");
}
if(is_null(titel) || is_undefined(titel) || is_empty_String(titel))
{
error = true;
markMissingFormEntry("titel");
}
if(is_null(beschreibung) || is_undefined(beschreibung) || is_empty_String(beschreibung))
{
error = true;
markMissingFormEntry("beschreibung");
}
if(is_null(methode) || is_undefined(methode) || is_empty_String(methode))
{
error = true;
markMissingFormEntry("methode");
}
if(lehrveranstaltungen[0] === "null")
{
error = true;
markMissingFormEntry("lvDropdowns");
}
if(error)
{
messageBox("message", "Formulardaten sind nicht korrekt.", "red", "highlight", 3000);
}
else
{
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "updatePruefungstermin",
pruefung_id: prfId,
studiensemester_kurzbz: studiensemester_kurzbz,
pruefungsfenster_id: pruefungsfenster_id,
pruefungstyp_kurzbz: pruefungstyp_kurzbz,
titel: titel,
beschreibung: beschreibung,
methode: methode,
einzeln: einzeln,
termine: termine,
termineNeu: termineNeu,
lehrveranstaltungen: lehrveranstaltungen
},
error: loadError
}).success(function(data){
unmarkMissingFormEntry();
if(data.error === "false")
{
messageBox("message", "Prüfung erfolgreich gespeichert.", "green", "highlight", 1000);
resetPruefungsverwaltung();
}
else
{
messageBox("message", data.errormsg, "red", "highlight", 1000);
}
}).complete(function(){
loadAllPruefungen();
$("#modalOverlay").removeClass("modalOverlay");
});
}
}
function deleteLehrveranstaltungFromPruefung(lvId, pruefung_id)
{
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "deleteLehrveranstaltungFromPruefung",
pruefung_id: pruefung_id,
lehrveranstaltung_id: lvId
},
error: loadError
}).success(function(data){
if(data.error === "false")
{
messageBox("message", "Lehrveranstaltung erfolgreich entfernt", "green", "highlight", 1000);
}
}).complete(function(){
loadPruefungsDetails(pruefung_id);
loadAllPruefungen();
});
}
function stornoPruefung(pruefung_id)
{
$("#modalOverlay").addClass("modalOverlay");
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "stornoPruefung",
pruefung_id: pruefung_id
},
error: loadError
}).success(function(data){
if(data.error === "false")
{
messageBox("message", "Prüfung storniert", "green", "highlight", 1000);
}
}).complete(function(){
loadAllPruefungen();
resetPruefungsverwaltung();
});
}
function terminLoeschen(pruefung_id, pruefungstermin_id)
{
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "deleteTermin",
pruefung_id: pruefung_id,
pruefungstermin_id: pruefungstermin_id
},
error: loadError
}).success(function(data){
if(data.error === "false")
{
messageBox("message", "Termin gelöscht", "green", "highlight", 1000);
}
else
{
messageBox("message", data.errormsg, "red", "highlight", 1000);
}
}).complete(function(){
loadPruefungsDetails(pruefung_id);
loadAllPruefungen();
});
}
function loadAllPruefungen()
{
var uid = $("#mitarbeiter_uid").val();
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "getAllPruefungen",
uid: uid
},
error: loadError
}).success(function(data){
$("#prfTable tbody").first().html("");
var tableRow = "";
data.result.forEach(function(e){
if(e.storniert === false)
{
tableRow = "<tr><td><a href='#' onclick='loadPruefungsDetails(\""+e.pruefung_id+"\")'>"+e.titel+"</a></td>";
tableRow += "<td>"+e.studiensemester_kurzbz+"</td>";
tableRow += "<td>";
e.lehrveranstaltungen.forEach(function(f){
tableRow += f.bezeichnung+"<br/>";
});
tableRow+="</td>";
tableRow+="<td>";
e.termine.forEach(function(f){
tableRow += convertDateTime(f.von, "date")+" von "+convertDateTime(f.von, "time")+" bis "+convertDateTime(f.bis, "time")+"<br/>";
});
tableRow+="</td>";
tableRow += "<td>"+e.methode+"</td>";
tableRow += "<td>"+e.pruefungstyp_kurzbz+"</td>";
tableRow += "<td>"+e.einzeln+"</td>";
tableRow += "<td>"+e.mitarbeiter_uid+"</td>";
tableRow += "<td>"+e.storniert+"</td>";
tableRow += "</tr>";
$("#prfTable tbody").first().append(tableRow);
}
});
}).complete(function(event, xhr, settings){
// $("#prfTable").tablesorter({
// widgets: ["zebra"]
// });
if($("#prfTable")[0].hasInitialized !== true)
{
$("#prfTable").tablesorter({
widgets: ["zebra"],
sortList: [[1,0]]
});
}
else
{
$("#prfTable").trigger("updateAll");
var sorting = [[1,0],[0,0]];
$("#prfTable").trigger("sorton",[sorting]);
}
});
}
function checkTermin(termin)
{
var aktTime = new Date();
var vonTime = stringToDate(termin.datum, termin.beginn);
var bisTime = stringToDate(termin.datum, termin.ende);
if(!(aktTime < vonTime))
{
return false;
}
else if(!(vonTime < bisTime))
{
return false;
}
return true;
}
function stringToDate(datum, time)
{
datum = datum.split(".");
time = time.split(":");
time = new Date(datum[2], (datum[1]-1), datum[0], time[0], time[1]);
return time;
}
function resetPruefungsverwaltung()
{
loadAllPruefungen();
$("#titel").val("");
$("#beschreibung").val("");
loadPruefungstypen("false");
loadStudiensemester();
$("#methode").val("");
resetLehrveranstaltungen();
resetTermine();
$("#modalOverlay").removeClass("modalOverlay");
}
@@ -52,9 +52,9 @@ switch($method)
case 'stornoAnmeldung':
$data = stornoAnmeldung($uid);
break;
case 'getPruefungMitarbeiter':
$data = getPruefungMitarbeiter($uid);
break;
// case 'getPruefungMitarbeiter':
// $data = getPruefungMitarbeiter($uid);
// break;
case 'getAnmeldungenTermin':
$data = getAnmeldungenTermin();
break;
@@ -90,7 +90,6 @@ echo json_encode($data);
function getPruefungByLv($aktStudiensemester = null, $uid = null)
{
$lehrveranstaltungen = new lehrveranstaltung();
//TODO
$lehrveranstaltungen->load_lva_student($uid);
$lvIds = array();
foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs)
@@ -234,10 +233,18 @@ function loadPruefung()
{
$temp = array();
$pruefung->getLehrveranstaltungenByPruefung();
$pruefung->getTermineByPruefung();
$studiengang = new studiengang();
foreach($pruefung->lehrveranstaltungen as $lv)
{
$lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id);
$lehrveranstaltung = $lehrveranstaltung->cleanResult();
$studiengang->load($lehrveranstaltung[0]->studiengang_kz);
$stg = new stdClass();
$stg->bezeichnung = $studiengang->bezeichnung;
$stg->studiengang_kz = $studiengang->studiengang_kz;
$stg->kurzbzlang = $studiengang->kurzbzlang;
$lehrveranstaltung[0]->studiengang = $stg;
$prf = new stdClass();
$prf->lehrveranstaltung = $lehrveranstaltung[0];
$prf->pruefung = $pruefung;
@@ -445,42 +452,41 @@ function stornoAnmeldung($uid = null)
* @param type $uid UID des Lektors/Mitarbeiters
* @return Array
*/
function getPruefungMitarbeiter($uid = null)
{
$lehrveranstaltung = new lehrveranstaltung();
if($uid !== null)
{
//TODO UID
$lehrveranstaltung->getLVByMitarbeiter($uid);
// $lehrveranstaltung->getLVByMitarbeiter("neubauer");
$result = array();
foreach($lehrveranstaltung->lehrveranstaltungen as $lv)
{
$pruefung = new pruefungCis();
$pruefung->getPruefungByLv($lv->lehrveranstaltung_id);
if($pruefung->lehrveranstaltungen[0]->pruefung_id !== null)
{
$pruefung->load($pruefung->lehrveranstaltungen[0]->pruefung_id);
$pruefung->getTermineByPruefung();
$lv->pruefung = $pruefung;
array_push($result, $lv);
}
}
}
if(!empty($result))
{
$data['result']=$result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']="Keine Prüfungen vorhanden.";
}
return $data;
}
//function getPruefungMitarbeiter($uid = null)
//{
// $lehrveranstaltung = new lehrveranstaltung();
// if($uid !== null)
// {
// $lehrveranstaltung->getLVByMitarbeiter($uid);
//// $lehrveranstaltung->getLVByMitarbeiter("neubauer");
// $result = array();
// foreach($lehrveranstaltung->lehrveranstaltungen as $lv)
// {
// $pruefung = new pruefungCis();
// $pruefung->getPruefungByLv($lv->lehrveranstaltung_id);
// if($pruefung->lehrveranstaltungen[0]->pruefung_id !== null)
// {
// $pruefung->load($pruefung->lehrveranstaltungen[0]->pruefung_id);
// $pruefung->getTermineByPruefung();
// $lv->pruefung = $pruefung;
// array_push($result, $lv);
// }
// }
// }
//
// if(!empty($result))
// {
// $data['result']=$result;
// $data['error']='false';
// $data['errormsg']='';
// }
// else
// {
// $data['error']='true';
// $data['errormsg']="Keine Prüfungen vorhanden.";
// }
// return $data;
//}
/**
* Lädt alle Anmeldungen zu einem Prüfungstermin
@@ -0,0 +1,513 @@
<?php
header( 'Expires: -1' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Pragma: no-cache' );
header('Content-Type: text/html;charset=UTF-8');
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/pruefungCis.class.php');
require_once('../../../../include/lehrveranstaltung.class.php');
require_once('../../../../include/benutzerberechtigung.class.php');
require_once('../../../../include/pruefungstermin.class.php');
require_once('../../../../include/datum.class.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/pruefungsfenster.class.php');
require_once('../../../../include/pruefungsanmeldung.class.php');
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
$method = isset($_REQUEST['method'])?$_REQUEST['method']:'';
switch($method)
{
case 'loadPruefungstypen':
$data = loadPruefungstypen("false");
break;
case 'loadStudiensemester':
$studiensemester = new studiensemester();
$aktStudiensemester = $studiensemester->getakt();
$data = loadStudiensemester($aktStudiensemester);
break;
case 'getPruefungsfensterByStudiensemester':
$studiensemester = new studiensemester();
$aktStudiensemester = $studiensemester->getakt();
$studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester;
$data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester);
break;
case 'savePruefungstermin':
$studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null;
$pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null;
$pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null;
$titel = isset($_POST["titel"])?$_POST["titel"]:null;
$beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null;
$methode = isset($_POST["methode"])?$_POST["methode"]:null;
$einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false;
$lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null;
$termine = isset($_POST["termine"])?$_POST["termine"]:null;
$data = savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine);
break;
case 'getLehrveranstaltungenByMitarbeiter':
$mitarbeiter_uid = $_POST["mitarbeiter_uid"];
$studiensemester_kurzbz = $_POST["studiensemester_kurzbz"];
$data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz);
break;
case 'updatePruefungstermin':
$pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null;
$studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null;
$pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null;
$pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null;
$titel = isset($_POST["titel"])?$_POST["titel"]:null;
$beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null;
$methode = isset($_POST["methode"])?$_POST["methode"]:null;
$einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false;
$lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null;
$termine = isset($_POST["termine"])?$_POST["termine"]:null;
$termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null;
$data = updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu);
break;
case 'deleteLehrveranstaltungFromPruefung':
$lvId = $_POST["lehrveranstaltung_id"];
$pruefung_id = $_POST["pruefung_id"];
$data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id);
break;
case 'stornoPruefung':
$pruefung_id = $_REQUEST["pruefung_id"];
$data = stornoPruefung($pruefung_id);
break;
case 'deleteTermin':
$pruefung_id = $_REQUEST["pruefung_id"];
$pruefungstermin_id = $_REQUEST["pruefungstermin_id"];
$data = deleteTermin($pruefung_id, $pruefungstermin_id);
break;
case 'getAllPruefungen':
if($rechte->isBerechtigt('lehre/pruefungsterminAll'))
{
$data = getAllPruefungen($_REQUEST["uid"]);
}
else
{
$data = getAllPruefungen($uid);
}
break;
default:
break;
}
echo json_encode($data);
function loadPruefungstypen($abschluss)
{
$pruefungstermin = new pruefungstermin();
$pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss);
if(!empty($pruefungstypen))
{
$data['result']=$pruefungstypen;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefungstermin->errormsg;
}
return $data;
}
function loadStudiensemester($aktStudiensemester = null)
{
$studiensemester = new studiensemester();
if($studiensemester->getAll())
{
$data['result']=$studiensemester->studiensemester;
if(!is_null($aktStudiensemester))
{
$data['aktSem']=$aktStudiensemester;
}
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$studiensemester->errormsg;
}
return $data;
}
function getPruefungsfensterByStudiensemester($studiensemester_kurzbz)
{
$pruefungsfenster = new pruefungsfenster();
if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz))
{
$data['result']=$pruefungsfenster->result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefungsfenster->errormsg;
}
return $data;
}
function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine)
{
if($lehrveranstaltungen === null)
{
$data['error']='true';
$data['errormsg']="Keine Lehrverantaltung angegeben.";
return $data;
}
$termineArray = array();
foreach ($termine as $key => $t) {
$termin = new stdClass();
$date = $t["datum"];
$beginn = $t["beginn"];
$ende = $t["ende"];
$termin->min = $t["min"];
$termin->max = $t["max"];
$termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn));
$termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende));
if(checkTerminPruefungsfenster($pruefungsfenster_id, $date))
{
if(!(checkCollision($uid, $termin->beginn, $termin->ende)))
{
array_push($termineArray, $termin);
}
else
{
$data['error']='true';
$data['errormsg']="Kollision mit anderem Termin.";
return $data;
}
}
else
{
$data['error']='true';
$data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters.";
return $data;
}
}
$pruefung = new pruefungCis();
$pruefung->termine = $termineArray;
$pruefung->mitarbeiter_uid = $uid;
$pruefung->studiensemester_kurzbz = $studiensemester_kurzbz;
$pruefung->pruefungsfenster_id = $pruefungsfenster_id;
$pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz;
$pruefung->titel = $titel;
$pruefung->beschreibung = $beschreibung;
$pruefung->methode = $methode;
$pruefung->einzeln = $einzeln;
$pruefung->insertvon = $uid;
foreach ($lehrveranstaltungen as $lv) {
if($lv != "null")
{
array_push($pruefung->lehrveranstaltungen, $lv);
}
}
if($pruefung->save(true))
{
$data['result']="true";
$data['error']='false';
$data['errormsg']='';
//TODO Mail-Inhalt fehlt
// foreach ($pruefung->lehrveranstaltungen as $lvId)
// {
// $lv = new lehrveranstaltung($lvId);
// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n"
// . "Die Prüfung kann am "
// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." "
// . "in der Zeit von "
// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis "
// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden.";
// //$text = "test";
// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz);
// $mailto = "";
// foreach ($empfaenger as $e) {
// $mailto .= $e.'@'.DOMAIN.', ';
// }
//
// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text);
// $email->setReplyTo($uid."@".DOMAIN);
//// var_dump($email);
// $email->send();
// }
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)
{
$lehrveranstaltung = new lehrveranstaltung();
if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz))
{
$stg = new studiengang();
foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv)
{
$stg->load($lv->studiengang_kz);
$lv->studiengang_bezeichnung = $stg->kurzbzlang;
}
$data['result']=$lehrveranstaltung->lehrveranstaltungen;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$lehrveranstaltung->errormsg;
}
return $data;
}
function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu)
{
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
$datum = new datum();
$pruefung = new pruefungCis();
$pruefung->load($pruefung_id);
if($termineNeu !== null)
{
$termineNeuArray = array();
foreach ($termineNeu as $key => $t) {
$termin = new stdClass();
$datum = new datum();
$date = $t["datum"];
$beginn = $t["beginn"];
$ende = $t["ende"];
$termin->min = $t["min"];
$termin->max = $t["max"];
$termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn));
$termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende));
if(checkTerminPruefungsfenster($pruefungsfenster_id, $date))
{
if(!(checkCollision($uid, $termin->beginn, $termin->ende)))
{
array_push($termineNeuArray, $termin);
}
else
{
$data['error']='true';
$data['errormsg']="Kollision mit anderem Termin.";
return $data;
}
}
else
{
$data['error']='true';
$data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters.";
return $data;
}
}
foreach ($termineNeuArray as $t)
{
$pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min);
}
}
if($termine !== null)
{
$termineArray = array();
foreach ($termine as $key => $t) {
$termin = new stdClass();
$datum = new datum();
$date = $t["datum"];
$beginn = $t["beginn"];
$ende = $t["ende"];
$termin->pruefungstermin_id = $t["pruefungstermin_id"];
$termin->min = $t["min"];
$termin->max = ($t["max"] === "null") ? NULL : $t["max"];
$termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn));
$termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende));
if(checkTerminPruefungsfenster($pruefungsfenster_id, $date))
{
array_push($termineArray, $termin);
}
else
{
$data['error']='true';
$data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters.";
return $data;
}
}
foreach($termineArray as $key=>$t)
{
$termineArray[$key] = (object) $t;
}
$pruefung->termine = $termineArray;
}
$pruefung->mitarbeiter_uid = $uid;
$pruefung->studiensemester_kurzbz = $studiensemester_kurzbz;
$pruefung->pruefungsfenster_id = $pruefungsfenster_id;
$pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz;
$pruefung->titel = $titel;
$pruefung->beschreibung = $beschreibung;
$pruefung->methode = $methode;
$pruefung->einzeln = $einzeln;
$pruefung->updatevon = $uid;
if($lehrveranstaltungen !== null)
{
foreach ($lehrveranstaltungen as $lv)
{
if($lv != "null")
{
array_push($pruefung->lehrveranstaltungen, $lv);
}
}
}
if($pruefung->save(false))
{
$data['result']="true";
$data['error']='false';
$data['errormsg']='';
//TODO Mail-Inhalt fehlt
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id)
{
$pruefung = new pruefungCis();
$pruefung->load($pruefung_id);
if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id))
{
$data['result']="true";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
function stornoPruefung($pruefung_id)
{
$pruefung = new pruefungCis();
if($pruefung->pruefungStornieren($pruefung_id))
{
$data['result']="true";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
function deleteTermin($pruefung_id, $pruefungstermin_id)
{
$pruefung = new pruefungCis();
$pruefung->load($pruefung_id);
if($pruefung->deleteTerminPruefung($pruefungstermin_id))
{
$data['result']="true";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
function getAllPruefungen($mitarbeiter_uid)
{
//TODO Prüfungen des aktuellen Studiensemesters???
$pruefung = new pruefungCis();
if($pruefung->getAllPruefungen($mitarbeiter_uid))
{
foreach ($pruefung->result as $prf)
{
$prf->getLehrveranstaltungenByPruefung();
foreach($prf->lehrveranstaltungen as $key=>$lv)
{
$temp = new lehrveranstaltung($lv->lehrveranstaltung_id);
$array = $temp->cleanResult();
$prf->lehrveranstaltungen[$key] = $array[0];
}
$prf->getTermineByPruefung();
}
$data['result']=$pruefung->result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefung->errormsg;
}
return $data;
}
function checkTerminPruefungsfenster($pruefungsfenster_id, $datum)
{
$pruefungsfenster = new pruefungsfenster($pruefungsfenster_id);
$date = new datum();
if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum))
{
return true;
}
return false;
}
function checkCollision($uid, $beginn, $ende)
{
$collision = false;
$pruefung = new pruefungCis();
$pruefung->getAllPruefungen($uid);
$datum = new datum();
foreach($pruefung->result as $prf)
{
$prf->getTermineByPruefung();
foreach($prf->termine as $termin)
{
if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende)))
{
$collision = true;
}
}
}
if($collision)
{
return true;
}
return false;
}
?>
@@ -32,7 +32,7 @@ require_once('../../../../include/lehrveranstaltung.class.php');
require_once('../../../../include/pruefungstermin.class.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/pruefungCis.class.php');
require_once('../../../../include/mail.class.php');
require_once('../../../../include/mitarbeiter.class.php');
$uid = get_uid();
$db = new basis_db();
@@ -42,420 +42,6 @@ $rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('lehre/pruefungstermin'))
die('Sie haben keine Berechtigung für diese Seite');
function compareLvIDs($a, $b)
{
if($a->lehrveranstaltung_id == $b->lehrveranstaltung_id)
return 0;
return -1;
}
$studiensemester = new studiensemester();
$studiensemester->getAll();
$studiensemester_kurzbz=null;
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->getAll("start");
$lehrveranstaltung = new lehrveranstaltung();
//TODO
$lehrveranstaltung->getLVByMitarbeiter($uid, $studiensemester->getSemesterFromDatum(date("Y-m-d")));
//$lehrveranstaltung->getLVByMitarbeiter("leutgeb", $studiensemester->getSemesterFromDatum(date("Y-m-d")));
$pruefungstermin = new pruefungstermin();
$pruefungstypen = $pruefungstermin->getAllPruefungstypen();
if(isset($_POST["method"]) && $_POST["method"] == "save")
{
$studiensemester_kurzbz = isset($_POST["studiensemester"])?$_POST["studiensemester"]:null;
$pruefungsfenster_id = isset($_POST["pruefungsfenster"])?$_POST["pruefungsfenster"]:null;
$pruefungstyp_kurzbz = isset($_POST["pruefungsTyp"])?$_POST["pruefungsTyp"]:null;
$titel = isset($_POST["titel"])?$_POST["titel"]:null;
$beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null;
$methode = isset($_POST["methode"])?$_POST["methode"]:null;
$einzeln = isset($_POST["einzelpruefung"])?true:false;
$lehrveranstaltungen = isset($_POST["lv"]) ? $_POST["lv"] : null;
$termine = array();
$error = false;
if($pruefungsfenster_id === "null")
{
$error = true;
echo "Bitte geben Sie ein Prüfungsfenster an.";
}
if(isset($_POST["termin"]))
{
if(!$error)
{
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
$datum = new datum();
}
for($i = 0; $i< sizeof($_POST["termin"]); $i++)
{
if(!$error)
{
$termin = new stdClass();
$datum = new datum();
$date = (isset($_POST["termin"][$i]) && $datum->checkDatum($_POST["termin"][$i])) ? $_POST["termin"][$i] : null;
$beginn = (isset($_POST["terminBeginn"][$i]) && $datum->checkUhrzeit($_POST["terminBeginn"][$i])) ? $_POST["terminBeginn"][$i] : null;
$ende = (isset($_POST["terminEnde"][$i]) && $datum->checkUhrzeit($_POST["terminEnde"][$i])) ? $_POST["terminEnde"][$i] : null;
$termin->min = (isset($_POST["minTeilnehmer"][$i]) && is_numeric($_POST["minTeilnehmer"][$i]) && strlen($_POST["minTeilnehmer"][$i]) > 0) ? $_POST["minTeilnehmer"][$i] : 0;
$termin->max = (isset($_POST["maxTeilnehmer"][$i]) && is_numeric($_POST["maxTeilnehmer"][$i]) && strlen($_POST["maxTeilnehmer"][$i]) > 0) ? $_POST["maxTeilnehmer"][$i] : null;
if($datum == null)
{
echo "Fehler: Ung&uuml;ltiges Datum angegeben.</br>";
$error = true;
}
if($beginn == null)
{
echo "Fehler: Ung&uuml;ltige Beginnzeit angegeben.</br>";
$error = true;
}
if($ende == null)
{
echo "Fehler: Ung&uuml;ltige Endzeit angegeben.</br>";
$error = true;
}
if($termin->min === null)
{
echo "Fehler: Ung&uuml;ltige Mindestteilnehmerzahl angegeben.</br>";
$error = true;
}
if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2))))
{
echo "Endzeit liegt vor der Startzeit!</br>";
$error = true;
}
if(!($termin->min < $termin->max) && $termin->max !== null)
{
echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.</br>";
$error = true;
}
if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date))
{
echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.</br>";
$error = true;
}
$termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn));
$termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende));
array_push($termine, $termin);
}
}
}
if(!$error)
{
$pruefung = new pruefungCis();
$pruefung->termine = $termine;
$pruefung->mitarbeiter_uid = $uid;
$pruefung->studiensemester_kurzbz = $studiensemester_kurzbz;
$pruefung->pruefungsfenster_id = $pruefungsfenster_id;
$pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz;
$pruefung->titel = $titel;
$pruefung->beschreibung = $beschreibung;
$pruefung->methode = $methode;
$pruefung->einzeln = $einzeln;
$pruefung->insertvon = $uid;
if(mb_strlen($pruefung->titel) > 0)
{
if($pruefung->pruefungstyp_kurzbz != "undefiniert")
{
if($lehrveranstaltungen != null && sizeof($lehrveranstaltungen) > 0)
{
$i=0;
foreach ($lehrveranstaltungen as $lv) {
if($lv != "null")
{
array_push($pruefung->lehrveranstaltungen, $lv);
}
}
if($pruefung->save(true))
{
//TODO Mail-Inhalt fehlt
// foreach ($pruefung->lehrveranstaltungen as $lvId)
// {
// $lv = new lehrveranstaltung($lvId);
// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n"
// . "Die Prüfung kann am "
// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." "
// . "in der Zeit von "
// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis "
// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden.";
// //$text = "test";
// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz);
// $mailto = "";
// foreach ($empfaenger as $e) {
// $mailto .= $e.'@'.DOMAIN.', ';
// }
//
// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text);
// $email->setReplyTo($uid."@".DOMAIN);
//// var_dump($email);
// $email->send();
// }
echo "Datensatz erfolgreich gespeichert!";
}
else
{
echo "Fehler: ".$pruefung->errormsg;
}
}
else
{
echo "Bitte Lehrveranstaltungen angeben.";
}
}
else
{
echo "Bitte einen Prüfungstyp auswählen";
}
}
else
{
echo "Bitte einen Titel angeben.";
}
}
}
else if(isset($_POST["method"]) && $_POST["method"] == "update")
{
$studiensemester_kurzbz = isset($_POST["studiensemester"])?$_POST["studiensemester"]:null;
$pruefungsfenster_id = isset($_POST["pruefungsfenster"])?$_POST["pruefungsfenster"]:null;
$pruefungstyp_kurzbz = isset($_POST["pruefungsTyp"])?$_POST["pruefungsTyp"]:null;
$titel = isset($_POST["titel"])?$_POST["titel"]:null;
$beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null;
$methode = isset($_POST["methode"])?$_POST["methode"]:null;
$einzeln = isset($_POST["einzelpruefung"])?true:false;
$lehrveranstaltungen = isset($_POST["lv"]) ? $_POST["lv"] : null;
$termine = array();
$termineNeu = array();
$error = false;
if(!$error)
{
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
$datum = new datum();
}
if(isset($_POST["terminNeu"]))
{
for($i = 0; $i< sizeof($_POST["terminNeu"]); $i++)
{
if(!$error)
{
$termin = new stdClass();
$datum = new datum();
$date = (isset($_POST["terminNeu"][$i]) && $datum->checkDatum($_POST["terminNeu"][$i])) ? $_POST["terminNeu"][$i] : null;
$beginn = (isset($_POST["terminBeginnNeu"][$i]) && $datum->checkUhrzeit($_POST["terminBeginnNeu"][$i])) ? $_POST["terminBeginnNeu"][$i] : null;
$ende = (isset($_POST["terminEndeNeu"][$i]) && $datum->checkUhrzeit($_POST["terminEndeNeu"][$i])) ? $_POST["terminEndeNeu"][$i] : null;
$termin->min = (isset($_POST["minTeilnehmerNeu"][$i]) && is_numeric($_POST["minTeilnehmerNeu"][$i]) && strlen($_POST["minTeilnehmerNeu"][$i]) > 0) ? $_POST["minTeilnehmerNeu"][$i] : 0;
$termin->max = (isset($_POST["maxTeilnehmerNeu"][$i]) && is_numeric($_POST["maxTeilnehmerNeu"][$i]) && strlen($_POST["maxTeilnehmerNeu"][$i]) > 0) ? $_POST["maxTeilnehmerNeu"][$i] : null;
if($datum == null)
{
echo "Fehler: Ung&uuml;ltiges Datum angegeben.</br>";
$error = true;
}
if($beginn == null)
{
echo "Fehler: Ung&uuml;ltige Beginnzeit angegeben.</br>";
$error = true;
}
if($ende == null)
{
echo "Fehler: Ung&uuml;ltige Endzeit angegeben.</br>";
$error = true;
}
if($termin->min === null)
{
echo "Fehler: Ung&uuml;ltige Mindestteilnehmerzahl angegeben.</br>";
$error = true;
}
if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2))))
{
echo "Endzeit liegt vor der Startzeit!</br>";
$error = true;
}
if(!($termin->min < $termin->max) && $termin->max !== null)
{
echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.</br>";
$error = true;
}
if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date))
{
echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.</br>";
$error = true;
}
$termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn));
$termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende));
array_push($termineNeu, $termin);
}
}
}
if(isset($_POST["termin"]))
{
$error = false;
for($i = 0; $i< sizeof($_POST["termin"]); $i++)
{
if(!$error)
{
$termin = new stdClass();
$datum = new datum();
$terminId = (isset($_POST["termin_id"][$i])) ? $_POST["termin_id"][$i] : null;
$date = (isset($_POST["termin"][$i]) && $datum->checkDatum($_POST["termin"][$i])) ? $_POST["termin"][$i] : null;
$beginn = (isset($_POST["terminBeginn"][$i]) && $datum->checkUhrzeit($_POST["terminBeginn"][$i])) ? $_POST["terminBeginn"][$i] : null;
$ende = (isset($_POST["terminEnde"][$i]) && $datum->checkUhrzeit($_POST["terminEnde"][$i])) ? $_POST["terminEnde"][$i] : null;
$termin->min = (isset($_POST["minTeilnehmer"][$i]) && is_numeric($_POST["minTeilnehmer"][$i]) && strlen($_POST["minTeilnehmer"][$i]) > 0) ? $_POST["minTeilnehmer"][$i] : 0;
$termin->max = (isset($_POST["maxTeilnehmer"][$i]) && is_numeric($_POST["maxTeilnehmer"][$i]) && strlen($_POST["maxTeilnehmer"][$i]) > 0) ? $_POST["maxTeilnehmer"][$i] : null;
if($datum == null)
{
echo "Fehler: Ung&uuml;ltiges Datum angegeben.</br>";
$error = true;
}
if($beginn == null)
{
echo "Fehler: Ung&uuml;ltige Beginnzeit angegeben.</br>";
$error = true;
}
if($ende == null)
{
echo "Fehler: Ung&uuml;ltige Endzeit angegeben.</br>";
$error = true;
}
if($termin->min === null)
{
echo "Fehler: Ung&uuml;ltige Mindestteilnehmerzahl angegeben.</br>";
$error = true;
}
if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2))))
{
echo "Endzeit liegt vor der Startzeit!</br>";
$error = true;
}
if(!($termin->min < $termin->max) && $termin->max !== null)
{
echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.</br>";
$error = true;
}
if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date))
{
echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.</br>";
$error = true;
}
$termin->pruefungstermin_id = $terminId;
$termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn));
$termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende));
array_push($termine, $termin);
}
}
}
if(!$error)
{
$pruefung = new pruefungCis();
$pruefung_id = $_POST["id"];
$pruefung->load($pruefung_id);
$pruefung->termine = $termine;
foreach ($termineNeu as $t)
{
$pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min);
}
$pruefung->mitarbeiter_uid = $uid;
$pruefung->studiensemester_kurzbz = $studiensemester_kurzbz;
$pruefung->pruefungsfenster_id = $pruefungsfenster_id;
$pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz;
$pruefung->titel = $titel;
$pruefung->beschreibung = $beschreibung;
$pruefung->methode = $methode;
$pruefung->einzeln = $einzeln;
$pruefung->updatevon = $uid;
if(mb_strlen($pruefung->titel) > 0)
{
if($pruefung->pruefungstyp_kurzbz != "undefiniert")
{
if($lehrveranstaltungen != null && sizeof($lehrveranstaltungen) > 0)
{
$i=0;
foreach ($lehrveranstaltungen as $lv)
{
if($lv != "null")
{
array_push($pruefung->lehrveranstaltungen, $lv);
}
}
if($pruefung->save(false))
{
echo "Datensatz erfolgreich gespeichert!";
}
else
{
echo "Fehler: ".$pruefung->errormsg;
}
}
else
{
echo "Bitte Lehrveranstaltungen angeben.";
}
}
else
{
echo "Bitte einen Prüfungstyp auswählen";
}
}
else
{
echo "Bitte einen Titel angeben.";
}
}
}
else if(isset ($_GET["method"]) && isset ($_GET["action"]) && $_GET["action"] === "deleteTermin")
{
$pruefungstermin_id = $_GET["termin_id"];
$pruefung_id = $_GET["id"];
$pruefung = new pruefungCis();
$pruefung->load($pruefung_id);
$pruefung->deleteTerminPruefung($pruefungstermin_id);
}
else if(isset ($_GET["method"]) && isset ($_GET["action"]) && $_GET["action"] === "deleteLv")
{
$lvId = $_GET["lvId"];
$pruefung_id = $_GET["id"];
$pruefung = new pruefungCis();
$pruefung->load($pruefung_id);
$pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id);
}
else if(isset ($_GET["action"]) && isset ($_GET["action"]) && $_GET["action"] === "storno")
{
$pruefung_id = $_GET["id"];
$pruefung = new pruefungCis();
// $pruefung->load($pruefung_id);
$pruefung->pruefungStornieren($pruefung_id);
header("Location: pruefungstermin_festlegen.php");
}
$pruefungen = new pruefungCis();
$pruefungen->getPruefungByMitarbeiter($uid, $studiensemester_kurzbz);
foreach($pruefungen->result as $tempPrf)
{
$tempPrf->getLehrveranstaltungenByPruefung();
$tempPrf->getTermineByPruefung();
}
?>
<html>
<head>
@@ -463,63 +49,128 @@ foreach($pruefungen->result as $tempPrf)
<title>Prüfungstermin festlegen</title>
<script src="../../../../include/js/datecheck.js"></script>
<script src="../../../../include/js/jquery1.9.min.js"></script>
<script src="../../../../include/js/jquery.tablesorter.min.js"></script>
<script src="./pruefung.js"></script>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
<style type="text/css">
#message {
position: fixed;
top: 0px;
right: 0px;
width: 50%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
#prfDetails, #prfVerwaltung {
margin: 1em;
}
</style>
</head>
<body>
<script>
$(document).ready(function() {
// $("#termin1").datepicker({
// minDate: new Date()
// });
// $("#prfTable").tablesorter({
// widgets: ["zebra"]
// });
loadPruefungsfenster();
var isFormHidden = true;
loadPruefungstypen("false");
loadStudiensemester();
loadAllPruefungen();
$("#lektor").autocomplete({
source: "lektor_autocomplete.php?autocomplete=lektor",
minLength:2,
response: function(event, ui)
{
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
}
},
select: function(event, ui)
{
//Ausgeaehlte Ressource zuweisen und Textfeld wieder leeren
if (ui.item.mitarbeiter_uid=='')
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("student");
}
else
{
$("#mitarbeiter_uid").val(ui.item.uid);
$("#uid").val("lektor");
}
if(isFormHidden)
{
isFormHidden = false;
$("#prfVerwaltung form").slideToggle("slow");
}
loadAllPruefungen();
}
});
});
</script>
<?php
if(!isset($_GET["method"]))
{
?>
<h1>Prüfungen verwalten</h1>
<div>
<form method="post" action="pruefungstermin_festlegen.php">
<div id="prfVerwaltung">
<h1>Prüfungen verwalten</h1>
<table>
<tr>
<?php
if(!$rechte->isBerechtigt('lehre/pruefungsterminAll'))
{
echo '<input id="mitarbeiter_uid" type="hidden" value="'.$uid.'"/>
<script>
$(document).ready(function() {
$("#prfVerwaltung form").attr("style", "display: block");
});
</script>';
}
else
{
echo '<td width="116px">Lektor:</td>';
echo '<td width="250px"><input placeholder="UID" type="text" id="lektor" value="" size="30"/></td>';
echo '<input type="hidden" id="uid" value="" />';
echo '<input type="hidden" id="mitarbeiter_uid" value="" />';
}
?>
</tr>
</table>
<form method="post" action="pruefungstermin_festlegen.php" style="display: none;">
<input type="hidden" name="method" value="save">
<table>
<tr>
<td>Titel:</td>
<td>
<input type="text" name="titel">
<input id='titel' type="text" name="titel" size="30">
</td>
</tr>
<tr>
<td style="vertical-align: top;">Beschreibung:</td>
<td>
<textarea name="beschreibung" rows="5" cols="20"></textarea>
<textarea id='beschreibung' name="beschreibung" rows="5" cols="20"></textarea>
</td>
</tr>
<tr>
<td>Studiensemester:</td>
<td>
<select id="studiensemester" name="studiensemester" onchange="loadPruefungsfenster();" onload="loadPruefungsfenster();">
<?php
$aktuellesSemester = $studiensemester->getSemesterFromDatum(date("Y-m-d"));
foreach ($studiensemester->studiensemester as $result)
{
if($aktuellesSemester == $result->studiensemester_kurzbz)
{
echo '<option selected>'.$result->studiensemester_kurzbz.'</option>';
}
else
{
echo '<option>'.$result->studiensemester_kurzbz.'</option>';
}
}
?>
</select>
</td>
</tr>
@@ -531,47 +182,28 @@ foreach($pruefungen->result as $tempPrf)
</select>
</td>
</tr>
<!-- <tr>
<td>Prüfungsfenster Details:</td>
<td><div id="prfFensterDetails"></div></td>
</tr>-->
<tr>
<td>Prüfungstyp:</td>
<td>
<select name="pruefungsTyp">
<?php
if($pruefungstypen !== false)
{
foreach ($pruefungstypen as $typ) {
echo '<option value="'.$typ->pruefungstyp_kurzbz.'">'.$typ->beschreibung.'</option>';
}
}
?>
<select id='pruefungsTyp' name="pruefungsTyp">
<!-- Daten werden per JavaScript geladen-->
</select>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Methode:</td>
<td><textarea placeholder="Multiple Choice, etc." rows="5" cols="20" name="methode"></textarea></td>
<td><textarea id='methode' placeholder="Multiple Choice, etc." rows="5" cols="20" name="methode"></textarea></td>
</tr>
<tr>
<td>Einzelprüfung:</td>
<td><input type="checkbox" name="einzelpruefung"></td>
<td><input id='einzeln' type="checkbox" name="einzelpruefung"></td>
</tr>
<tr>
<td style="vertical-align: top;">Lehrveranstaltungen:</td>
<td>
<div id="lvDropdowns">
<select id="lvDropdown1" onchange="lehrveranstaltungDropdownhinzufuegen(this, false);" name="lv[]">
<option value="null">Lehrveranstaltung auswählen...</option>
<?php
$studiengang = new studiengang();
foreach($lehrveranstaltung->lehrveranstaltungen as $result)
{
$studiengang->load($result->studiengang_kz);
echo '<option value="'.$result->lehrveranstaltung_id.'">'.$studiengang->kurzbzlang.' | <b>'.$result->bezeichnung.'</b> ('.$result->lehrform_kurzbz.')</option>';
}
?>
<!--Daten werden per JavaScript geladen-->
</select></br>
</div>
</td>
@@ -580,7 +212,7 @@ foreach($pruefungen->result as $tempPrf)
<td style="vertical-align: top;"><a name="termin">Termin:</a></td>
<td>
<div>
<table>
<table width="500px" style="text-align: right;">
<thead>
<tr>
<th>Datum</th>
@@ -588,24 +220,25 @@ foreach($pruefungen->result as $tempPrf)
<th>bis</th>
<th>min. Teilnehmer</th>
<th>max. Teilnehmer</th>
<th></th>
</tr>
</thead>
<tbody id="prfTermin">
<tr>
<tr id="row1">
<td>
<input type="text" id="termin1" name="termin[]">
</td>
<td>
<input type="time" placeholder="00:00" name="terminBeginn[]">
<input type="time" id="termin1Beginn" placeholder="00:00" name="termin1Beginn[]">
</td>
<td>
<input type="time" placeholder="00:00" name="terminEnde[]">
<input type="time" id="termin1Ende" placeholder="00:00" name="termin1Ende[]">
</td>
<td>
<input type="number" placeholder="0" min="0" name="minTeilnehmer[]">
<input type="number" id="termin1min" placeholder="0" min="0" name="termin1minTeilnehmer[]">
</td>
<td>
<input type="number" placeholder="10" min="0" name="maxTeilnehmer[]">
<input type="number" id="termin1max" placeholder="10" min="0" name="termin1maxTeilnehmer[]">
</td>
</tr>
</tbody>
@@ -615,12 +248,12 @@ foreach($pruefungen->result as $tempPrf)
</td>
</tr>
<tr>
<td>&nbsp;</td><td><input type="submit" value="Speichern"></td>
<td>&nbsp;</td><td><input id="buttonSave" type="button" value="Speichern" onclick='savePruefungstermin();'></td>
</tr>
</table>
</form>
</div>
<div>
<div id="prfDetails">
<h2>Prüfungen</h2>
<div style="width: 75%;">
<table class="tablesorter" id="prfTable">
@@ -638,245 +271,12 @@ foreach($pruefungen->result as $tempPrf)
</tr>
</thead>
<tbody>
<?php
foreach ($pruefungen->result as $prf)
{
echo
'<tr '.(($prf->storniert == true) ? "style='text-decoration: line-through'" : "").'>
<td><a href="pruefungstermin_festlegen.php?method=update&id='.$prf->pruefung_id.'&prfFensterId='.$prf->pruefungsfenster_id.'">'.$prf->titel.'</a></td>
<td>'.$prf->studiensemester_kurzbz.'</td>
<td>';
foreach($prf->lehrveranstaltungen as $lv)
{
$lehrveranstaltung = new lehrveranstaltung();
$lehrveranstaltung->load($lv->lehrveranstaltung_id);
echo $lehrveranstaltung->bezeichnung.'</br>';
}
echo '</td>
<td>
<table>
<tbody>';
foreach($prf->termine as $termine)
{
echo '<tr><td>'.date('d.m.Y H:i', strtotime($termine->von))."</td><td>".date('d.m.Y H:i', strtotime($termine->bis)).'</td></tr>';
//date('Y-m-d H:i', strtotime($termine->von));
}
echo '</tbody>
</table>
</td>
<td>'.(($prf->methode == null) ? "keine Methode angegeben" : $prf->methode).'</td>
<td>'.$prf->pruefungstyp_kurzbz.'</td>
<td>'.(($prf->einzeln == true) ? "TRUE" : "FALSE").'</td>
<td>'.$prf->mitarbeiter_uid.'</td>
<td>'.(($prf->storniert == true) ? "TRUE" : "FALSE").'</td>
</tr>';
}
?>
</tbody>
</table>
</div>
</div>
<?php
}
else if ($_GET["method"] == "update")
{
$pruefung_id = isset($_GET["id"]) ? $_GET["id"] : false;
if(is_numeric($pruefung_id))
{
$pruefung = new pruefungCis();
$pruefung->load($pruefung_id);
$pruefung->getLehrveranstaltungenByPruefung();
$pruefung->getTermineByPruefung();
}
else
{
header("Location: pruefungstermin_festlegen.php");
}
?>
<h1>Prüfung bearbeiten</h1>
<div>
<form method="post" action="pruefungstermin_festlegen.php">
<input type="hidden" name="id" value="<?php echo $pruefung->pruefung_id;?>">
<input type="hidden" name="method" value="update">
<table>
<tr>
<td>Titel:</td>
<td>
<input type="text" name="titel" value="<?php echo $pruefung->titel;?>">
</td>
</tr>
<tr>
<td style="vertical-align: top;">Beschreibung:</td>
<td>
<textarea name="beschreibung" rows="5" cols="20"><?php echo $pruefung->beschreibung; ?></textarea>
</td>
</tr>
<tr>
<td>Studiensemester:</td>
<td>
<select id="studiensemester" name="studiensemester" onchange="loadPruefungsfenster();" onload="loadPruefungsfenster();">
<?php
foreach ($studiensemester->studiensemester as $result)
{
if($pruefung->studiensemester_kurzbz == $result->studiensemester_kurzbz)
{
echo '<option selected>'.$result->studiensemester_kurzbz.'</option>';
}
else
{
echo '<option>'.$result->studiensemester_kurzbz.'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td>Prüfungsfenster:</td>
<td>
<select id="pruefungsfenster" name="pruefungsfenster">
<!--Daten werden durch JavaScript geladen-->
</select>
</td>
</tr>
<tr>
<td>Prüfungstyp:</td>
<td>
<select name="pruefungsTyp">
<?php
if($pruefungstypen !== false)
{
foreach ($pruefungstypen as $typ) {
if($typ->pruefungstyp_kurzbz == $pruefung->pruefungstyp_kurzbz)
{
echo '<option selected value="'.$typ->pruefungstyp_kurzbz.'">'.$typ->beschreibung.'</option>';
}
else
{
echo '<option value="'.$typ->pruefungstyp_kurzbz.'">'.$typ->beschreibung.'</option>';
}
}
}
?>
</select>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Methode:</td>
<td><textarea placeholder="Multiple Choice, etc." rows="5" cols="20" name="methode"><?php echo $pruefung->methode; ?></textarea></td>
</tr>
<tr>
<td>Einzelprüfung:</td>
<td><input type="checkbox" <?php echo (($pruefung->einzeln == true) ? " checked ": "") ?> name="einzelpruefung"></td>
</tr>
<tr>
<td style="vertical-align: top;">Lehrveranstaltungen:</td>
<td>
<div id="lvDropdowns">
<?php
$studiengang = new studiengang();
$lv_temp = array();
foreach($pruefung->lehrveranstaltungen as $lv)
{
array_push($lv_temp, $lv->lehrveranstaltung_id);
}
foreach($lehrveranstaltung->lehrveranstaltungen as $result)
{
$studiengang->load($result->studiengang_kz);
if(in_array($result->lehrveranstaltung_id, $lv_temp))
{
echo '<span value="'.$result->lehrveranstaltung_id.'">'.$studiengang->kurzbzlang.' | <b>'.$result->bezeichnung.'</b> ('.$result->lehrform_kurzbz.')</span><a href="pruefungstermin_festlegen.php?method=update&action=deleteLv&lvId='.$result->lehrveranstaltung_id.'&id='.$pruefung_id.'"> löschen</a></br>';
}
}
?>
<div id="lvDropdowns">
<select id="lvDropdown1" onchange="lehrveranstaltungDropdownhinzufuegen(this, false);" name="lv[]">
<option value="null">Lehrveranstaltung auswählen...</option>
<?php
$studiengang = new studiengang();
foreach($lehrveranstaltung->lehrveranstaltungen as $result)
{
$studiengang->load($result->studiengang_kz);
echo '<option value="'.$result->lehrveranstaltung_id.'">'.$studiengang->kurzbzlang.' | <b>'.$result->bezeichnung.'</b> ('.$result->lehrform_kurzbz.')</option>';
}
?>
</select></br>
</div>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><a name="termin">Termin:</a></td>
<td>
<div>
<table>
<thead>
<tr>
<th>Datum</th>
<th>Von</th>
<th>bis</th>
<th>min. Teilnehmer</th>
<th>max. Teilnehmer</th>
<th>Aktion</th>
</tr>
</thead>
<tbody id="prfTermin">
<?php
foreach($pruefung->termine as $prfTermin)
{
echo '<tr>
<input type="hidden" name="termin_id[]" value='.$prfTermin->pruefungstermin_id.'>
<td>
<input type="text" id="termin1" name="termin[]" value="'.date("d.m.Y",strtotime($prfTermin->von)).'">
</td>
<td>
<input type="time" placeholder="00:00" name="terminBeginn[]" value="'.date("H:i",strtotime($prfTermin->von)).'">
</td>
<td>
<input type="time" placeholder="00:00" name="terminEnde[]" value="'.date("H:i",strtotime($prfTermin->bis)).'">
</td>
<td>
<input type="number" placeholder="0" min="0" name="minTeilnehmer[]" value="'.$prfTermin->min.'">
</td>
<td>
<input type="number" placeholder="10" min="0" name="maxTeilnehmer[]" value="'.$prfTermin->max.'">
</td>
<td>
<a href="pruefungstermin_festlegen.php?method=update&action=deleteTermin&termin_id='.$prfTermin->pruefungstermin_id.'&id='.$pruefung->pruefung_id.'">löschen</a>
</td>
</tr>';
}
?>
</tbody>
</table>
</div>
<a href="#termin" onclick="terminHinzufuegen('Neu');">Termin hinzufügen</a>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<a href="pruefungstermin_festlegen.php?action=storno&id=<?php echo $pruefung->pruefung_id; ?>">Prüfung stornieren</a>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" value="Speichern">
<a href="pruefungstermin_festlegen.php"><input type="button" value="Abbrechen"></a>
</td>
</tr>
</table>
</form>
</div>
<?php
}
?>
<div id='message'></div>
<div id="modalOverlay"></div>
</body>
</html>