Merge branch 'feature-47972/pruefungsverwaltung_ects_angabe'

This commit is contained in:
Andreas Österreicher
2025-10-07 12:53:52 +02:00
19 changed files with 1625 additions and 79 deletions
+173 -34
View File
@@ -382,7 +382,7 @@ function writePruefungsTable(e, data, anmeldung)
} }
else if(new Date() > minimumFrist) else if(new Date() > minimumFrist)
{ {
button = "<p><a href='#' title='<?php echo $p->t('pruefung/anmeldenMoeglichBis'); ?> "+frist+"'><input style='width: 140px; background-color: green;' type='button' value='"+termin+" "+time+"' onclick='openDialog(\""+e.lehrveranstaltung[0].lehrveranstaltung_id+"\", \""+d.pruefungstermin_id+"\", \""+e.lehrveranstaltung[0].bezeichnung.replace("'", "&apos;")+"\", \""+d.von+"\", \""+d.bis+"\");'></a></p>"; button = "<p><a href='#' title='<?php echo $p->t('pruefung/anmeldenMoeglichBis'); ?> "+frist+"'><input style='width: 140px; background-color: green;' type='button' value='"+termin+" "+time+"' onclick='openDialog(\""+e.lehrveranstaltung[0].lehrveranstaltung_id+"\", \""+d.pruefungstermin_id+"\", \""+e.lehrveranstaltung[0].bezeichnung.replace("'", "&apos;")+"\", \""+d.von+"\", \""+d.bis+"\", \""+e.lehrveranstaltung[0].ects +"\");'></a></p>";
} }
} }
else else
@@ -479,13 +479,15 @@ function showPruefungsDetails(prfId, lvId)
* @param {type} lvBezeichnung Bezeichnung der Lehrveranstaltung * @param {type} lvBezeichnung Bezeichnung der Lehrveranstaltung
* @param {type} terminVon Beginn der Prüfung * @param {type} terminVon Beginn der Prüfung
* @param {type} terminBis Ende der Prüfung * @param {type} terminBis Ende der Prüfung
* @param {type} ects der LV
* @returns {undefined} * @returns {undefined}
*/ */
function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis) function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis, ects)
{ {
$("#lehrveranstaltungHidden").val(lehrveranstaltung_id); $("#lehrveranstaltungHidden").val(lehrveranstaltung_id);
$("#terminHidden").val(termin_id); $("#terminHidden").val(termin_id);
$("#lehrveranstaltung").html(lvBezeichnung); $("#lehrveranstaltung").html(lvBezeichnung);
$("#ectsangabe").val(ects);
$.ajax({ $.ajax({
dataType: 'json', dataType: 'json',
@@ -582,6 +584,12 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id)
if($('#prestudent_studiengang').length) if($('#prestudent_studiengang').length)
studiengang_kz = $('#prestudent_studiengang option:selected').val(); studiengang_kz = $('#prestudent_studiengang option:selected').val();
var ects = null;
if ($('#ectsangabe').length)
{
ects = $('#ectsangabe').val();
}
$.ajax({ $.ajax({
dataType: 'json', dataType: 'json',
url: "./pruefungsanmeldung.json.php", url: "./pruefungsanmeldung.json.php",
@@ -593,7 +601,8 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id)
bemerkung: bemerkungen, bemerkung: bemerkungen,
uid: uid, uid: uid,
studienverpflichtung_id: studienverpflichtung_id, studienverpflichtung_id: studienverpflichtung_id,
studiengang_kz: studiengang_kz studiengang_kz: studiengang_kz,
ects: ects
}, },
error: loadError, error: loadError,
success: function(data){ success: function(data){
@@ -804,6 +813,7 @@ function writeAnmeldungen(data, showMessage = true)
var pruefung_id = data.result.anmeldungen[0].pruefung_id; var pruefung_id = data.result.anmeldungen[0].pruefung_id;
var lehrveranstaltung_id = data.result.anmeldungen[0].lehrveranstaltung_id; var lehrveranstaltung_id = data.result.anmeldungen[0].lehrveranstaltung_id;
var ort_kurzbz = data.result.ort_kurzbz; var ort_kurzbz = data.result.ort_kurzbz;
var anderer_raum = data.result.anderer_raum;
var lv_bezeichnung = data.result.lv_bezeichnung; var lv_bezeichnung = data.result.lv_bezeichnung;
var lv_lehrtyp = data.result.lv_lehrtyp; var lv_lehrtyp = data.result.lv_lehrtyp;
var prf_termin = data.result.datum; var prf_termin = data.result.datum;
@@ -816,24 +826,33 @@ function writeAnmeldungen(data, showMessage = true)
count++; count++;
var vorname = d.student.vorname !== "null" ? d.student.vorname : ""; var vorname = d.student.vorname !== "null" ? d.student.vorname : "";
var nachname = d.student.nachname !== "null" ? d.student.nachname : ""; var nachname = d.student.nachname !== "null" ? d.student.nachname : "";
let ects = "";
<?php if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true)): ?>
ects = d.ects !== null ? "(" + d.ects + " ECTS) ": "";
<?php endif; ?>
switch(d.status_kurzbz) switch(d.status_kurzbz)
{ {
case 'angemeldet': case 'angemeldet':
liste += "<li class='ui-state-default' id='"+d.student.uid+"'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span><a href='#' onclick='showKommentar(\""+vorname+"\",\""+nachname+"\", \""+d.pruefungsanmeldung_id+"\", \""+d.kommentar+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"+vorname+" "+nachname+"</a>"; liste += "<li class='ui-state-default' id='"+d.student.uid+"'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span><a href='#' onclick='showKommentar(\""+vorname+"\",\""+nachname+"\", \""+d.pruefungsanmeldung_id+"\", \""+d.kommentar+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"+ects+vorname+" "+nachname+"</a>";
liste += "<div style='width: 3%; text-align: right;'>"+count+"</div><div style='text-align: center; width: 34%;'><input style='vertical-align: top; height: 24px;' type='button' value='<?php echo $p->t('pruefung/bestaetigen'); ?>' onclick='anmeldungBestaetigen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"; liste += "<div style='width: 3%; text-align: right;'>"+count+"</div><div style='text-align: center; width: 34%;'><input style='vertical-align: top; height: 24px;' type='button' value='<?php echo $p->t('pruefung/bestaetigen'); ?>' onclick='anmeldungBestaetigen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>";
liste += "<input style='vertical-align: top; height: 24px; background-color: #dd514c;' type='button' value='X' onclick='anmeldungLoeschen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'></div>"; liste += "<input style='vertical-align: top; height: 24px; background-color: #dd514c;' type='button' value='X' onclick='anmeldungLoeschen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'></div>";
if(d.wuensche !== null) if(d.wuensche !== null)
{ {
liste += "<div class='anmerkungInfo'><a href='#' title='<?php echo $p->t('pruefung/anmerkungDesStudenten'); ?>"+d.wuensche+"'><img style='width: 20px;' src='../../../../skin/images/button_lvinfo.png'></a></div>"; let msg = $('<div>').text(d.wuensche).html();
liste += `<div class='anmerkungInfo'><a href='#' data-msg="${msg}" onclick="openKommentarDialog(this.dataset.msg)"><img style='width: 20px;' src='../../../../skin/images/button_lvinfo.png'></a></div>`;
} }
liste += "</li>"; liste += "</li>";
break; break;
case 'bestaetigt': case 'bestaetigt':
liste += "<li class='ui-state-default' id='"+d.student.uid+"'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span><a href='#' onclick='showKommentar(\""+vorname+"\",\""+nachname+"\", \""+d.pruefungsanmeldung_id+"\", \""+d.kommentar+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"+vorname+" "+nachname+"</a>"; liste += "<li class='ui-state-default' id='"+d.student.uid+"'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span><a href='#' onclick='showKommentar(\""+vorname+"\",\""+nachname+"\", \""+d.pruefungsanmeldung_id+"\", \""+d.kommentar+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"+ects+vorname+" "+nachname+"</a>";
liste += "<div style='width: 2%; text-align: right;'>"+count+"</div><div style='text-align: center; width: 20%;'><a href='#' title='<?php echo $p->t('pruefung/statusAenderungVon'); ?>: "+d.statusupdatevon+"'><?php echo $p->t('pruefung/bestaetigt'); ?></a></div>"; liste += "<div style='width: 2%; text-align: right;'>"+count+"</div><div style='text-align: center; width: 20%;'><a href='#' title='<?php echo $p->t('pruefung/statusAenderungVon'); ?>: "+d.statusupdatevon+"'><?php echo $p->t('pruefung/bestaetigt'); ?></a></div>";
if(d.wuensche !== null) if(d.wuensche !== null)
{ {
liste += "<div class='anmerkungInfo'><a href='#' title='<?php echo $p->t('pruefung/anmerkungDesStudenten'); ?>"+d.wuensche+"'><img style='width: 20px;' src='../../../../skin/images/button_lvinfo.png'></a></div>"; let msg = $('<div>').text(d.wuensche).html();
liste += `<div class='anmerkungInfo'><a href='#' data-msg="${msg}" onclick="openKommentarDialog(this.dataset.msg)"><img style='width: 20px;' src='../../../../skin/images/button_lvinfo.png'></a></div>`;
} }
break; break;
@@ -844,13 +863,14 @@ function writeAnmeldungen(data, showMessage = true)
}); });
liste += "</ul>"; liste += "</ul>";
$("#anmeldung_hinzufuegen").html("<input id='anmeldung_hinzufuegen_uid' type='text' placeholder='StudentIn-UID' /><input type='button' value='<?php echo $p->t('global/hinzufuegen'); ?>' onclick='saveAnmeldung(\""+lehrveranstaltung_id+"\",\""+terminId+"\");'/>"); $("#anmeldung_hinzufuegen").html("<input id='anmeldung_hinzufuegen_uid' type='text' placeholder='StudentIn-UID' /><input type='button' value='<?php echo $p->t('global/hinzufuegen'); ?>' onclick='saveAnmeldung(\""+lehrveranstaltung_id+"\",\""+terminId+"\");'/>");
$("#reihungSpeichernButton").html("<input type='button' value='<?php echo $p->t('pruefung/reihungSpeichern'); ?>' onclick='saveReihung(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'><input type='button' value='<?php echo $p->t('pruefung/alleBestaetigen'); ?>' onclick='alleBestaetigen(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"); $("#reihungSpeichernButton").html("<label for='emails'>E-Mail: <input type='email' id='emails' multiple /> <br /><br />" +
"<input type='button' value='<?php echo $p->t('pruefung/reihungSpeichern'); ?>' onclick='saveReihung(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'><input type='button' value='<?php echo $p->t('pruefung/alleBestaetigen'); ?>' onclick='alleBestaetigen(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>");
$("#lvdaten").html(lv_bezeichnung+" ("+prf_termin+")"); $("#lvdaten").html(lv_bezeichnung+" ("+prf_termin+")");
$("#anmeldeDaten").html(liste); $("#anmeldeDaten").html(liste);
$("#listeDrucken").html(listenLinks); $("#listeDrucken").html(listenLinks);
if(ort_kurzbz !== null) if(ort_kurzbz !== null || anderer_raum !== null)
{ {
$("#raumLink").html("<span><?php echo $p->t('pruefung/pruefungsraum'); ?></span>"+ort_kurzbz); $("#raumLink").html("<span><?php echo $p->t('pruefung/pruefungsraum'); ?></span>"+ (ort_kurzbz ?? anderer_raum));
} }
else else
{ {
@@ -883,11 +903,17 @@ function writeAnmeldungen(data, showMessage = true)
function openRaumDialog(terminId, lehrveranstaltung_id) function openRaumDialog(terminId, lehrveranstaltung_id)
{ {
getRaeume(terminId); getRaeume(terminId);
$("#raum").html('<h2><?php echo $p->t('pruefung/pruefungsraum'); ?></h2><input onChange="changeStateOfRaumDropdown();" type="checkbox" /><span><?php echo $p->t('pruefung/imBuero'); ?></span><br /><span style="font-weight: bold;"><?php echo $p->t('pruefung/raum'); ?>: </span><select id="raeumeDropdown"></select>'); $("#raum").html('<h2><?php echo $p->t('pruefung/pruefungsraum'); ?></h2><div id="raumInfos"><input onChange="changeStateOfRaumDropdown();" type="checkbox" /><span><?php echo $p->t('pruefung/imBuero'); ?></span><br /><span style="font-weight: bold;"><?php echo $p->t('pruefung/raum'); ?>: </span><select id="raeumeDropdown"></select><br /></div><input onChange="changeStateOfRaumInputs();" id="andererRaum" type="checkbox"/><span><?php echo $p->t('pruefung/andererRaum'); ?></span> <input type="text" id="andereRaumInput" placeholder="<?php echo $p->t('pruefung/andererRaum'); ?>"/><br />');
$("#raumSpeichernButton").html("<input type='button' value='<?php echo $p->t('pruefung/raumSpeichern'); ?>' onclick='saveRaum(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'/>"); $("#raumSpeichernButton").html("<input type='button' value='<?php echo $p->t('pruefung/raumSpeichern'); ?>' onclick='saveRaum(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'/>");
$("#raumDialog").dialog("open"); $("#raumDialog").dialog("open");
} }
function openKommentarDialog(text)
{
$('#kommentarimDialog').text(text);
$('#kommentarDialog').dialog('open');
}
/** /**
* speichert die Reihung der Studenten einer Prüfungsanmeldung * speichert die Reihung der Studenten einer Prüfungsanmeldung
* @param {type} terminId ID des Prüfungstermines * @param {type} terminId ID des Prüfungstermines
@@ -1011,6 +1037,30 @@ function anmeldungLoeschen(pruefungsanmeldung_id, termin_id, lehrveranstaltung_i
*/ */
function alleBestaetigen(termin_id, lehrveranstaltung_id) function alleBestaetigen(termin_id, lehrveranstaltung_id)
{ {
const input = $('#emails').val();
let emails = '';
if (input)
{
emails = input.split(",").map(s => s.trim());
const re = /^([\w-+]+(?:\.[\w-+]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,63}(?:\.[a-z]{2})?)$/i;
let valid = true;
$.each(emails, function(index, email)
{
if (re.test(email) === false)
{
alert("<?php echo $p->t('pruefung/bitteEmailAngeben')?>");
valid = false;
return false;
}
});
if (!valid)
return false;
}
$.ajax({ $.ajax({
dataType: 'json', dataType: 'json',
url: "./pruefungsanmeldung.json.php", url: "./pruefungsanmeldung.json.php",
@@ -1018,7 +1068,8 @@ function alleBestaetigen(termin_id, lehrveranstaltung_id)
data: { data: {
method: "alleBestaetigen", method: "alleBestaetigen",
termin_id: termin_id, termin_id: termin_id,
lehrveranstaltung_id: lehrveranstaltung_id lehrveranstaltung_id: lehrveranstaltung_id,
emails: emails
}, },
error: loadError, error: loadError,
success: function(data){ success: function(data){
@@ -1090,15 +1141,12 @@ function loadStudiengaenge()
} }
/** /**
* Lädt alle Prüfungen zu einem Studiengang * Lädt alle Prüfungen zu einem Studiensemester
* @param {type} studiengang_kz Studiengangskennzahl * @param {type} studiensemester Studiensemester
* @returns {undefined} * @returns {undefined}
*/ */
function loadPruefungStudiengang(studiengang_kz, studiensemester) function loadPruefungStudiengang(studiensemester)
{ {
if(studiengang_kz === undefined)
studiengang_kz = $("#select_studiengang option:selected").val();
if(studiensemester === undefined) if(studiensemester === undefined)
studiensemester = $("#filter_studiensemester option:selected").val(); studiensemester = $("#filter_studiensemester option:selected").val();
@@ -1107,8 +1155,7 @@ function loadPruefungStudiengang(studiengang_kz, studiensemester)
url: "./pruefungsanmeldung.json.php", url: "./pruefungsanmeldung.json.php",
type: "POST", type: "POST",
data: { data: {
method: "getPruefungenStudiengang", method: "getPruefungenStudiensemester",
studiengang_kz: studiengang_kz,
studiensemester: studiensemester studiensemester: studiensemester
}, },
error: loadError, error: loadError,
@@ -1118,25 +1165,61 @@ function loadPruefungStudiengang(studiengang_kz, studiensemester)
$("#pruefungenListe").empty(); $("#pruefungenListe").empty();
if(data.result.length > 0) if(data.result.length > 0)
{ {
var liste = ""; $('#table4').show()
data.result.forEach(function(e){ let rows = '';
liste += "<ul><li>"+e.bezeichnung+"<ul>";
try data.result.forEach(function(e)
{ {
e.pruefung[0].termine.forEach(function(d){ let termine = [];
liste += "<li> <a onclick='showAnmeldungen(\""+d.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\");'>"+convertDateTime(d.von)+" "+convertDateTime(d.von, "time")+" - "+convertDateTime(d.bis, "time")+"</a></li>"; if (e.pruefung) {
e.pruefung.forEach(p => {
if (p.termine) {
termine = termine.concat(p.termine);
}
}); });
} }
catch(err)
if (termine.length === 0)
{ {
var errmsg = err.message; rows += `
<tr>
<td></td>
<td>${e.bezeichnung}</td>
<td colspan="5">Keine Termine</td>
</tr>`;
}
else
{
termine.forEach(function(d) {
let vonDate = convertDateTime(d.von);
let vonTime = convertDateTime(d.von, 'time');
let bisTime = convertDateTime(d.bis, 'time');
let onClick = `showAnmeldungen(${d.pruefungstermin_id}, ${e.lehrveranstaltung_id})`;
rows += `
<tr>
<td><input type="checkbox"
class="termin-checkbox"
data-termin-id="${d.pruefungstermin_id}"
data-lv-id="${e.lehrveranstaltung_id}"
data-datum="${vonDate}"
/></td>
<td>${e.studiengang}</td>
<td>${e.bezeichnung}</td>
<td>${vonDate}</td>
<td>${vonTime}</td>
<td>${bisTime}</td>
<td><a onclick="${onClick}"><?php echo $p->t('pruefung/pruefungsbewertungAnmeldungen'); ?></a></td>
</tr>`;
});
} }
liste += "</ul></li></ul>";
}); });
$("#pruefungenListe").append(liste); $("#pruefungenListe").html(rows);
setTablesorter('table4')
} }
else else
{ {
$('#table4').hide()
$("#pruefungenListe").html("<?php echo $p->t('pruefung/keinePruefungenVorhanden'); ?>"); $("#pruefungenListe").html("<?php echo $p->t('pruefung/keinePruefungenVorhanden'); ?>");
} }
} }
@@ -1148,6 +1231,42 @@ function loadPruefungStudiengang(studiengang_kz, studiensemester)
}); });
} }
function terminezusammenlegen(termine, lv_id)
{
if(termine.length <= 1)
return;
$.ajax({
dataType: 'json',
url: "./pruefungsanmeldung.json.php",
type: "POST",
data: {
method: "terminezusammenlegen",
'termine[]': termine,
lv_id: lv_id
},
error: loadError,
success: function(data){
if(data.error === 'false')
{
loadPruefungStudiengang()
$("#anmeldung_hinzufuegen").empty();
$("#lvdaten").empty();
$("#anmeldeDaten").empty();
$("#reihungSpeichernButton").empty();
$("#kommentar").empty();
$("#kommentarSpeichernButton").empty();
$("#raumLink").empty();
$("#listeDrucken").empty();
}
else
{
messageBox("message", data.errormsg, "red", "highlight", 10000);
}
}
});
}
/** /**
* Zeigt das Formularfeld zur Eingabe eines Kommentars in der Anmeldungsverwaltung an. * Zeigt das Formularfeld zur Eingabe eines Kommentars in der Anmeldungsverwaltung an.
* @param {String} vorname Vorname des Studenten * @param {String} vorname Vorname des Studenten
@@ -1241,6 +1360,7 @@ function loadStudiensemester()
data.result.forEach(function(d){ data.result.forEach(function(d){
selectData += "<option "+((d.studiensemester_kurzbz === data.aktSem) ? "selected" : "")+" value='"+d.studiensemester_kurzbz+"'>"+d.studiensemester_kurzbz+"</option>"; selectData += "<option "+((d.studiensemester_kurzbz === data.aktSem) ? "selected" : "")+" value='"+d.studiensemester_kurzbz+"'>"+d.studiensemester_kurzbz+"</option>";
}); });
$('#studiensemester').html(selectData); $('#studiensemester').html(selectData);
loadPruefungsfenster(); loadPruefungsfenster();
loadLehrveranstaltungen(); loadLehrveranstaltungen();
@@ -1540,7 +1660,7 @@ function loadPruefungsDetails(prfId)
if(data.result.length === 0) if(data.result.length === 0)
{ {
messageBox("message", "<?php echo $p->t('pruefung/keinePruefungsfensterGespeichert'); ?>", "red", "highlight", 10000); messageBox("message", "<?php echo $p->t('pruefung/keinePruefungsfensterGespeichert'); ?>", "red", "highlight", 10000);
$("#pruefungsfenster").html("<option value='null'></option>"); $("#pruefungsfenster").html("<option value='null'><?php echo $p->t('pruefung/keinePruefungsfensterGespeichert'); ?></option>");
} }
else else
{ {
@@ -2188,10 +2308,28 @@ function changeStateOfRaumDropdown()
} }
} }
function changeStateOfRaumInputs()
{
if ($("#andererRaum").prop("checked") === true)
{
$("#raumInfos").hide();
}
else
{
$("#raumInfos").show();
}
}
function saveRaum(terminId, lehrveranstaltung_id) function saveRaum(terminId, lehrveranstaltung_id)
{ {
var ort_kurzbz; var ort_kurzbz;
if($("#raum input[type=checkbox]").prop("checked") === true) let anderer_raum = '';
if ($("#andererRaum").prop("checked") === true && $('#andereRaumInput').val() !== '')
{
ort_kurzbz = "";
anderer_raum = $('#andereRaumInput').val();
}
else if($("#raum input[type=checkbox]").prop("checked") === true)
{ {
ort_kurzbz = "buero"; ort_kurzbz = "buero";
} }
@@ -2206,7 +2344,8 @@ function saveRaum(terminId, lehrveranstaltung_id)
data: { data: {
method: "saveRaum", method: "saveRaum",
ort_kurzbz: ort_kurzbz, ort_kurzbz: ort_kurzbz,
terminId: terminId terminId: terminId,
anderer_raum: anderer_raum
}, },
error: loadError error: loadError
}).done(function(data){ }).done(function(data){
@@ -106,9 +106,14 @@ switch($method)
case 'getStudiengaenge': case 'getStudiengaenge':
$data = getStudiengaenge(); $data = getStudiengaenge();
break; break;
case 'getPruefungenStudiengang': case 'getPruefungenStudiensemester':
$studiensemester = filter_input(INPUT_POST,"studiensemester"); $studiensemester = filter_input(INPUT_POST,"studiensemester");
$data = getPruefungenStudiengang($uid, $studiensemester); $data = getPruefungenStudiengangBySemester($studiensemester);
break;
case 'terminezusammenlegen':
$termine = filter_input(INPUT_POST, 'termine', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
$lv_id = filter_input(INPUT_POST, 'lv_id');
$data = terminezusammenlegen($termine, $lv_id);
break; break;
case 'saveKommentar': case 'saveKommentar':
$data = saveKommentar(); $data = saveKommentar();
@@ -120,7 +125,8 @@ switch($method)
case 'saveRaum': case 'saveRaum':
$terminId = $_REQUEST["terminId"]; $terminId = $_REQUEST["terminId"];
$ort_kurzbz = $_REQUEST["ort_kurzbz"]; $ort_kurzbz = $_REQUEST["ort_kurzbz"];
$data = saveRaum($terminId, $ort_kurzbz, $uid); $anderer_raum = $_REQUEST["anderer_raum"];
$data = saveRaum($terminId, $ort_kurzbz, $uid, $anderer_raum);
break; break;
case 'getLvKompatibel': case 'getLvKompatibel':
$lvid = filter_input(INPUT_POST, "lehrveranstaltung_id"); $lvid = filter_input(INPUT_POST, "lehrveranstaltung_id");
@@ -397,6 +403,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$lv_besucht = false; $lv_besucht = false;
$studienverpflichtung_id = filter_input(INPUT_POST, "studienverpflichtung_id"); $studienverpflichtung_id = filter_input(INPUT_POST, "studienverpflichtung_id");
$studiengang_kz = filter_input(INPUT_POST, "studiengang_kz"); $studiengang_kz = filter_input(INPUT_POST, "studiengang_kz");
$ects = filter_input(INPUT_POST, "ects");
//Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben) //Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben)
$maxAnzahlVersuche = 0; $maxAnzahlVersuche = 0;
@@ -731,6 +738,10 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
else else
$anmeldung->anrechnung_id = $anrechnung->anrechnung_id; $anmeldung->anrechnung_id = $anrechnung->anrechnung_id;
if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true))
{
$anmeldung->ects = $ects;
}
if($anmeldung->save(true)) if($anmeldung->save(true))
{ {
$pruefung = new pruefungCis($termin->pruefung_id); $pruefung = new pruefungCis($termin->pruefung_id);
@@ -960,9 +971,13 @@ function alleBestaetigen($uid)
global $p; global $p;
$lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"];
$pruefungstermin_id = $_REQUEST["termin_id"]; $pruefungstermin_id = $_REQUEST["termin_id"];
$emails = $_REQUEST["emails"];
$pruefungstermin = new pruefungstermin($pruefungstermin_id); $pruefungstermin = new pruefungstermin($pruefungstermin_id);
$pruefungsanmeldung = new pruefungsanmeldung(); $pruefungsanmeldung = new pruefungsanmeldung();
$pranmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); $pranmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id);
$mail_benutzer = [];
$mail_inhalt = [];
foreach($pranmeldungen as $a) foreach($pranmeldungen as $a)
{ {
$anmeldung = new pruefungsanmeldung($a->pruefungsanmeldung_id); $anmeldung = new pruefungsanmeldung($a->pruefungsanmeldung_id);
@@ -976,6 +991,13 @@ function alleBestaetigen($uid)
$ma = new mitarbeiter($uid); $ma = new mitarbeiter($uid);
$datum = new datum(); $datum = new datum();
$ort = new ort($termin->ort_kurzbz); $ort = new ort($termin->ort_kurzbz);
$ortbezeichnung = $ort->bezeichnung;
if (is_null($termin->ort_kurzbz) && !is_null($termin->anderer_raum))
{
$ortbezeichnung = $termin->anderer_raum;
}
$pruefung = new pruefungCis($termin->pruefung_id); $pruefung = new pruefungCis($termin->pruefung_id);
$to = $anm->uid."@".DOMAIN; $to = $anm->uid."@".DOMAIN;
@@ -995,17 +1017,66 @@ function alleBestaetigen($uid)
} }
else else
$html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."<br>"; $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."<br>";
$html .= $p->t('pruefung/anmeldungErfolgreich')." ".$ort->bezeichnung."<br>"; $html .= $p->t('pruefung/anmeldungErfolgreich')." ".$ortbezeichnung."<br>";
$html .= "<br>"; $html .= "<br>";
$html .= "<a href='".APP_ROOT."cis/private/lehre/pruefung/pruefungsanmeldung.php'>".$p->t('pruefung/emailBodyLinkZurAnmeldung')."</a><br>"; $html .= "<a href='".APP_ROOT."cis/private/lehre/pruefung/pruefungsanmeldung.php'>".$p->t('pruefung/emailBodyLinkZurAnmeldung')."</a><br>";
$html .= "<br>"; $html .= "<br>";
$mail_benutzer[] = [
'uid' => $anm->uid
];
if (empty($mail_inhalt))
{
$mail_inhalt = array(
'von' => $ma->vorname." ".$ma->nachname,
'lv' => $lv->bezeichnung,
'ort' => $ortbezeichnung,
'datum' => $datum->formatDatum($termin->von, "d.m.Y") . ' ' . $p->t('pruefung/emailBodyUm') . ' ' . (isset($von) ? $von : $datum->formatDatum($termin->von, "H:i")),
'dauer' => $pruefung->einzeln ? ($pruefung->pruefungsintervall . ' ' . $p->t('pruefung/emailBodyMinuten')): '');
}
$mail = new mail($to, $from, $subject,$p->t('pruefung/emailBodyBitteHtmlSicht')); $mail = new mail($to, $from, $subject,$p->t('pruefung/emailBodyBitteHtmlSicht'));
$mail->setHTMLContent($html); $mail->setHTMLContent($html);
$mail->send(); $mail->send();
} }
} }
} }
if (!empty($emails) && !empty($mail_inhalt))
{
foreach ($emails as $email)
{
$from = "noreply@".DOMAIN;
$subject = $p->t('pruefung/emailSubjectAnmeldungBestaetigung');
$html = $p->t('pruefung/sammelemailBody',array($mail_inhalt['lv'], $mail_inhalt['datum'], $mail_inhalt['von']));
if ($mail_inhalt['ort'])
{
$html .= $p->t('pruefung/sammelemailBody2',array($mail_inhalt['ort']));
}
$html .= "<br /><table border='1'>
<thead>
<tr>
<th>UID</th>
</tr>
</thead>
<tbody>";
foreach($mail_benutzer as $benutzer)
{
$html .= "<tr>
<td>" . htmlspecialchars($benutzer['uid']) . "</td>
</tr>";
}
$html .= "</tbody></table><br />";
$mail = new mail($email, $from, $subject, $p->t('pruefung/emailBodyBitteHtmlSicht'));
$mail->setHTMLContent($html);
$mail->send();
}
}
$data['result']=true; $data['result']=true;
$data['error']='false'; $data['error']='false';
$data['errormsg']=''; $data['errormsg']='';
@@ -1032,6 +1103,12 @@ function anmeldungBestaetigen($uid)
$ort = new ort($termin->ort_kurzbz); $ort = new ort($termin->ort_kurzbz);
$pruefung = new pruefungCis($termin->pruefung_id); $pruefung = new pruefungCis($termin->pruefung_id);
$ortbezeichnung = $ort->bezeichnung;
if (is_null($termin->ort_kurzbz) && !is_null($termin->anderer_raum))
{
$ortbezeichnung = $termin->anderer_raum;
}
$to = $anmeldung->uid."@".DOMAIN; $to = $anmeldung->uid."@".DOMAIN;
$from = "noreply@".DOMAIN; $from = "noreply@".DOMAIN;
$subject = $p->t('pruefung/emailSubjectAnmeldungBestaetigung'); $subject = $p->t('pruefung/emailSubjectAnmeldungBestaetigung');
@@ -1049,7 +1126,7 @@ function anmeldungBestaetigen($uid)
} }
else else
$html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."<br>"; $html .= $p->t('pruefung/emailBodyTermin')." ".$datum->formatDatum($termin->von, "d.m.Y")." ".$p->t('pruefung/emailBodyUm')." ".$datum->formatDatum($termin->von, "H:i")."<br>";
$html .= $p->t('pruefung/anmeldungErfolgreich')." ".$ort->bezeichnung."<br>"; $html .= $p->t('pruefung/anmeldungErfolgreich')." ".$ortbezeichnung."<br>";
$html .= "<br>"; $html .= "<br>";
$html .= "<a href='".APP_ROOT."cis/private/lehre/pruefung/pruefungsanmeldung.php'>".$p->t('pruefung/emailBodyLinkZurAnmeldung')."</a><br>"; $html .= "<a href='".APP_ROOT."cis/private/lehre/pruefung/pruefungsanmeldung.php'>".$p->t('pruefung/emailBodyLinkZurAnmeldung')."</a><br>";
$html .= "<br>"; $html .= "<br>";
@@ -1166,6 +1243,258 @@ function getPruefungenStudiengang($uid, $aktStudiensemester)
return $data; return $data;
} }
function getPruefungenStudiengangBySemester($aktStudiensemester)
{
$result = array();
$pruefungen = new pruefungCis();
$pruefungen->getPruefungByStudiensemester($aktStudiensemester);
if(!empty($pruefungen->lehrveranstaltungen))
{
$lehrveranstaltungen = [];
foreach ($pruefungen->lehrveranstaltungen as $prf)
{
$pruefung = new pruefungCis();
$pruefung->load($prf->pruefung_id);
if ($pruefung->storniert)
continue;
$pruefung->getTermineByPruefung();
$lvid = $prf->lehrveranstaltung_id;
if (!isset($lehrveranstaltungen[$lvid]))
{
$lv = new stdClass();
$lehrveranstaltung = new lehrveranstaltung();
$lehrveranstaltung->load($lvid);
$studiengang = new studiengang();
$studiengang->load($lehrveranstaltung->studiengang_kz);
$lv->bezeichnung = $lehrveranstaltung->bezeichnung;
$lv->lehrveranstaltung_id = $lvid;
$lv->studiengang = $studiengang->kuerzel;
$lv->pruefung = [];
$lehrveranstaltungen[$lvid] = $lv;
}
$lehrveranstaltungen[$lvid]->pruefung[] = $pruefung;
}
$result = array_values($lehrveranstaltungen);
}
$data['result']=$result;
$data['error']='false';
$data['errormsg']='';
return $data;
}
function terminezusammenlegen($termine, $lv_id)
{
$result = array();
$alle_termine = array();
$error = false;
$terminkollision = defined('CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION') ? CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION : false;
foreach($termine as $termin)
{
$pruefungstermin = new pruefungstermin();
$pruefungstermin->load($termin);
$pruefung = new pruefungCis();
$pruefung->load($pruefungstermin->pruefung_id);
$pruefung->getLehrveranstaltungenByPruefung();
$lehrveranstaltungen = array_column($pruefung->lehrveranstaltungen, 'lehrveranstaltung_id');
if (!in_array($lv_id, $lehrveranstaltungen))
continue;
$pruefung->lehrveranstaltung_id = $lv_id;
$pruefung->termin = $pruefungstermin;
$alle_termine[] = $pruefung;
}
if (count($alle_termine) >= 1)
{
usort($alle_termine, function($a, $b) {
return strcmp($a->termin->von, $b->termin->von);
});
$first_termin = $alle_termine[0];
$first_mitarbeiter = $first_termin->mitarbeiter_uid;
$first_date = date('Y-m-d', strtotime($first_termin->termin->von));
$first_studiensemester = $first_termin->studiensemester_kurzbz;
$first_sammelklausur = $first_termin->termin->sammelklausur;
$first_ort = $first_termin->termin->ort_kurzbz;
$first_raum = $first_termin->termin->anderer_raum;
$first_lv = $first_termin->lehrveranstaltung_id;
$first_titel = $first_termin->titel;
$max_von = strtotime($first_termin->termin->von);
$max_bis = strtotime($first_termin->termin->bis);
$teilnehmer_min = (int)$first_termin->termin->teilnehmer_min;
$teilnehmer_max = (int)$first_termin->termin->teilnehmer_max;
$prevEnd = $max_bis;
foreach ($alle_termine as $termin)
{
if (date('Y-m-d', strtotime($termin->termin->von)) !== $first_date)
{
$data['errormsg'] = 'Nicht der gleiche Tag!';
$error = true;
}
if ($termin->mitarbeiter_uid !== $first_mitarbeiter)
{
$data['errormsg'] = 'Unterschiedliche Lektoren!';
$error = true;
}
if ($termin->studiensemester_kurzbz !== $first_studiensemester)
{
$data['errormsg'] = 'Unterschiedliche Studiensemester!';
$error = true;
}
if ($termin->termin->sammelklausur !== $first_sammelklausur)
{
$data['errormsg'] = 'Sammelklausur unterschiedlich!';
$error = true;
}
if (!($termin->termin->ort_kurzbz === $first_ort || $first_termin->termin->anderer_raum == $first_raum))
{
$data['errormsg'] = 'Ort/Raum unterschiedlich!';
$error = true;
}
if ($termin->lehrveranstaltung_id !== $first_lv)
{
$data['errormsg'] = 'Lehrveranstaltungen unterscheiden sich!';
$error = true;
}
$start = strtotime($termin->termin->von);
$max_von = min($max_von, $start);
$max_bis = max($max_bis, strtotime($termin->termin->bis));
$teilnehmer_min = min($teilnehmer_min, (int)$termin->termin->teilnehmer_min);
$teilnehmer_max = max($teilnehmer_max, (int)$termin->termin->teilnehmer_max);
if (($start - $prevEnd > 0) && $first_ort)
{
$stunde = new stunde();
$gapStartStr = date('Y-m-d H:i:s', $prevEnd);
$gapEndStr = date('Y-m-d H:i:s', $start);
$gapStartArr = explode(' ', $gapStartStr);
$gapEndArr = explode(' ', $gapEndStr);
$stunden = $stunde->getStunden($gapStartArr[1], $gapEndArr[1]);
$reservierung = new reservierung();
$reserviert = false;
$reservierungs_stunden = $reservierung->getReservierungen($first_ort, $gapStartArr[0]);
$need_stunden = array_diff($stunden, $reservierungs_stunden);
foreach ($need_stunden as $h)
{
if ($reservierung->isReserviert($first_ort, $gapStartArr[0], $h))
$reserviert = true;
}
if (!$terminkollision && $reserviert && !$first_sammelklausur)
{
$error = true;
$data['errormsg'] = 'Kann nicht zusammengelegt werden, da der Raum reserviert ist';
}
else
{
$reservierung->studiengang_kz = "0";
$reservierung->ort_kurzbz = $first_ort;
$reservierung->uid = $first_mitarbeiter;
$reservierung->datum = $gapStartArr[0];
$reservierung->titel = $first_titel;
if (strlen($first_titel) > 10)
{
$reservierung->titel = "Prüfung";
}
$reservierung->beschreibung = "Prüfung";
$reservierung->insertamum = date('Y-m-d G:i:s');
$reservierung->insertvon = get_uid();
$reservierungError = false;
foreach ($need_stunden as $h)
{
$reservierung->stunde = $h;
if (!$reservierungError)
{
if (!$reservierung->save(true))
{
$error = true;
$data['errormsg'] = $reservierung->errormsg;
$reservierungError = true;
}
}
}
}
}
$prevEnd = strtotime($termin->termin->bis);
}
if (!$error)
{
$first_pruefungstermin = new pruefungstermin();
$first_pruefungstermin->load($first_termin->termin->pruefungstermin_id);
$first_pruefungstermin->von = date('Y-m-d H:i:s', $max_von);
$first_pruefungstermin->bis = date('Y-m-d H:i:s', $max_bis);
$first_pruefungstermin->teilnehmer_min = $teilnehmer_min;
$first_pruefungstermin->teilnehmer_max = $teilnehmer_max;
$first_pruefungstermin->save();
$alle_termine = array_slice($alle_termine, 1);
foreach ($alle_termine as $termin)
{
$anmeldung_termin = new pruefungsanmeldung();
$anmeldungen_termine = $anmeldung_termin->getAnmeldungenByTermin($termin->termin->pruefungstermin_id);
if (count($anmeldungen_termine) === 0)
{
$first_pruefungstermin->delete($termin->termin->pruefungstermin_id);
}
$i = 0;
$anmeldungen_termine_count = count($anmeldungen_termine);
foreach ($anmeldungen_termine as $anmeldungtermin)
{
$anmeldung = new pruefungsanmeldung();
$anmeldung->load($anmeldungtermin->pruefungsanmeldung_id);
$old_pruefuengstermin_id = $anmeldung->pruefungstermin_id;
$anmeldung->pruefungstermin_id = $first_termin->termin->pruefungstermin_id;
if ($anmeldung->save(false) && ($i === $anmeldungen_termine_count - 1))
{
$first_pruefungstermin->delete($old_pruefuengstermin_id);
}
$i ++;
}
}
}
}
$data['result']= $result;
$data['error']= $error ? 'true' : 'false';
//$data['errormsg']='';
return $data;
}
/** /**
* *
* @return typespeichert ein Kommentar zu einer Prüfungsanmeldung * @return typespeichert ein Kommentar zu einer Prüfungsanmeldung
@@ -1246,7 +1575,7 @@ function compareRaeume($a, $b)
return strcmp($a->ort_kurzbz, $b->ort_kurzbz); return strcmp($a->ort_kurzbz, $b->ort_kurzbz);
} }
function saveRaum($terminId, $ort_kurzbz, $uid) function saveRaum($terminId, $ort_kurzbz, $uid, $anderer_raum = '')
{ {
$terminkollision = defined('CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION') ? CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION : false; $terminkollision = defined('CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION') ? CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION : false;
$pruefungstermin = new pruefungstermin($terminId); $pruefungstermin = new pruefungstermin($terminId);
@@ -1265,7 +1594,24 @@ function saveRaum($terminId, $ort_kurzbz, $uid)
{ {
$pruefung = new pruefungCis($pruefungstermin->pruefung_id); $pruefung = new pruefungCis($pruefungstermin->pruefung_id);
$mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid);
if($ort_kurzbz === "buero")
if ($ort_kurzbz === "" && $anderer_raum !== "")
{
$pruefungstermin->anderer_raum = $anderer_raum;
if($pruefungstermin->save(false))
{
$data['result']="reserviert";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefungstermin->errormsg;
}
}
else if($ort_kurzbz === "buero")
{ {
$pruefungstermin->ort_kurzbz = $mitarbeiter->ort_kurzbz; $pruefungstermin->ort_kurzbz = $mitarbeiter->ort_kurzbz;
if($pruefungstermin->save(false)) if($pruefungstermin->save(false))
@@ -321,6 +321,20 @@ $studiensemester->getAll();
</td> </td>
</tr> </tr>
<?php endif; ?> <?php endif; ?>
<?php
if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE')
&& CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true):
?>
<tr>
<td style="vertical-align: top; font-weight: bold;">
<?php echo $p->t('pruefung/ects'); ?>:
</td>
<td>
<input type="number" size="3" id="ectsangabe" placeholder="<?php echo $p->t('pruefung/ects'); ?>"/>
</td>
</tr>
<?php endif; ?>
<tr id="studiengang"> <tr id="studiengang">
</tr> </tr>
<tr> <tr>
@@ -235,12 +235,18 @@ $rechte->getBerechtigungen($uid);
<th><?php echo $p->t('global/datum'); ?></th> <th><?php echo $p->t('global/datum'); ?></th>
<th><?php echo $p->t('benotungstool/note'); ?></th> <th><?php echo $p->t('benotungstool/note'); ?></th>
<th><?php echo $p->t('global/anmerkung'); ?></th> <th><?php echo $p->t('global/anmerkung'); ?></th>
<?php
if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true)):
?>
<th><?php echo $p->t('pruefung/ects'); ?></th>
<?php endif; ?>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<?php <?php
$count = 0; $count = 0;
/*@var $anmeldung pruefungsanmeldung */
foreach($anmeldungen as $anmeldung) foreach($anmeldungen as $anmeldung)
{ {
$student = new student($anmeldung->uid); $student = new student($anmeldung->uid);
@@ -269,6 +275,8 @@ $rechte->getBerechtigungen($uid);
echo '<td>'.$date.'</td>'; echo '<td>'.$date.'</td>';
echo '<td></td>'; echo '<td></td>';
echo '<td></td>'; echo '<td></td>';
if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true))
echo '<td>'. $anmeldung->ects .'</td>';
echo '</tr>'; echo '</tr>';
} }
?> ?>
@@ -233,6 +233,11 @@ $rechte->getBerechtigungen($uid);
<th><?php echo $p->t('global/datum'); ?></th> <th><?php echo $p->t('global/datum'); ?></th>
<th><?php echo $p->t('benotungstool/note'); ?></th> <th><?php echo $p->t('benotungstool/note'); ?></th>
<th><?php echo $p->t('global/anmerkung'); ?></th> <th><?php echo $p->t('global/anmerkung'); ?></th>
<?php
if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true)):
?>
<th><?php echo $p->t('pruefung/ects'); ?></th>
<?php endif; ?>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -265,6 +270,8 @@ $rechte->getBerechtigungen($uid);
echo '<td>'.$date.'</td>'; echo '<td>'.$date.'</td>';
echo '<td></td>'; echo '<td></td>';
echo '<td></td>'; echo '<td></td>';
if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true))
echo '<td>'. $anmeldung->ects .'</td>';
echo '</tr>'; echo '</tr>';
} }
?> ?>
@@ -76,7 +76,7 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
width: 850px; width: 850px;
padding: 1.8em 1.5em 1.8em 1em; padding: 1.8em 1.5em 1.8em 1em;
/*border-radius: 25px;*/ /*border-radius: 25px;*/
border: 1px solid #dddddd; /*border: 1px solid #dddddd;*/
/*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/ /*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
} }
@@ -95,7 +95,7 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
#prfWrapper { #prfWrapper {
position: absolute; position: absolute;
height: 70%; height: 70%;
width: 300px; width: 40%;
top: 180px; top: 180px;
padding: 1.8em 1.5em 1.8em 1em; padding: 1.8em 1.5em 1.8em 1em;
/*border-radius: 25px;*/ /*border-radius: 25px;*/
@@ -117,9 +117,9 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
#anmWrapper { #anmWrapper {
position: absolute; position: absolute;
/*top: 45px;*/ /*top: 45px;*/
left: 350px; left: 45%;
top: 180px; top: 180px;
width: 500px; width: 40%;
height: 70%; height: 70%;
padding: 1.8em 1.5em 1.8em 1em; padding: 1.8em 1.5em 1.8em 1em;
/*border-radius: 25px;*/ /*border-radius: 25px;*/
@@ -228,7 +228,6 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
<script> <script>
$(document).ready(function() $(document).ready(function()
{ {
loadStudiengaenge();
$("#filter_studiensemester").css("visibility","visible"); $("#filter_studiensemester").css("visibility","visible");
$("#raumDialog").dialog({ $("#raumDialog").dialog({
@@ -236,17 +235,66 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
autoOpen: false, autoOpen: false,
width: "400px" width: "400px"
}); });
$("#kommentarDialog").dialog({
modal: true,
autoOpen: false,
width: "400px",
buttons: {
Ok: function() {
$(this).dialog('close');
}
}
});
$("#table4").tablesorter({
widgets: ["zebra"],
headers: {
0: { sorter: false },
3: { sorter: 'shortDate',
dateFormat: 'ddmmyyyy' },
4: { sorter: 'time' },
5: { sorter: 'time' }
}
});
$('#zusammenlegen').on('click', function() {
let ausgewaehlte_termine = $('.termin-checkbox:checked');
if (ausgewaehlte_termine.length === 0)
return;
let erster_termin = ausgewaehlte_termine.first();
let erstes_datum = erster_termin.data('datum');
let erste_lvid = erster_termin.data('lv-id');
let termine = [];
ausgewaehlte_termine.each(function() {{
let termin = $(this);
let datum = termin.data('datum');
let lv_id = termin.data('lv-id');
if (erstes_datum !== datum)
return alert("Die ausgewählten Termine liegen nicht am selben Tag und können daher nicht zusammengelegt werden.")
if (erste_lvid !== lv_id)
return alert("Bei den ausgewählten Terminen handelt es sich um unterschiedliche Lehrveranstaltungen, die daher nicht zusammengelegt werden können.")
termine.push(termin.data('termin-id'));
}})
if (termine.length > 0)
{
terminezusammenlegen(termine, erste_lvid);
}
})
loadPruefungStudiengang();
}); });
</script> </script>
<h1><?php echo $p->t('pruefung/anmeldungenVerwalten'); ?></h1> <h1><?php echo $p->t('pruefung/anmeldungenVerwalten'); ?></h1>
<div id='stgWrapper'> <div id='stgWrapper'>
<div id='studiengaenge'>
<div>
<h2><?php echo $p->t('global/studiengang'); ?></h2>
<div id='stgListe'>
</div>
</div>
<div> <div>
<h2><?php echo $p->t('global/studiensemester'); ?></h2> <h2><?php echo $p->t('global/studiensemester'); ?></h2>
<?php <?php
@@ -255,7 +303,6 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
$studiensemester->getPlusMinus(null, 5); $studiensemester->getPlusMinus(null, 5);
foreach($studiensemester->studiensemester as $sem) foreach($studiensemester->studiensemester as $sem)
{ {
/*@var $sem studiensemester */
if ($aktuellesSemester == $sem->studiensemester_kurzbz) if ($aktuellesSemester == $sem->studiensemester_kurzbz)
{ {
echo '<option selected value="'.$sem->studiensemester_kurzbz.'">'.$sem->bezeichnung.'</option>'; echo '<option selected value="'.$sem->studiensemester_kurzbz.'">'.$sem->bezeichnung.'</option>';
@@ -273,9 +320,21 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
<div id='prfWrapper'> <div id='prfWrapper'>
<div id='pruefungen'> <div id='pruefungen'>
<h2><?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?></h2> <h2><?php echo $p->t('pruefung/pruefungPruefungenTitle'); ?></h2>
<ul id="pruefungenListe"> <button id="zusammenlegen">Termine zusammenlegen</button>
<table id="table4" class="tablesorter" style="display:none">
</ul> <thead>
<tr>
<th></th>
<th><?php echo $p->t('global/studiengang'); ?></th>
<th><?php echo $p->t('global/lehrveranstaltung'); ?></th>
<th><?php echo $p->t('global/datum'); ?></th>
<th><?php echo $p->t('global/von'); ?></th>
<th><?php echo $p->t('global/bis'); ?></th>
<th><?php echo $p->t('pruefung/pruefungsbewertungAnmeldungen'); ?></th>
</tr>
</thead>
<tbody id="pruefungenListe"></tbody>
</table>
</div> </div>
</div> </div>
<div id='anmWrapper'> <div id='anmWrapper'>
@@ -311,6 +370,9 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
</div> </div>
</div> </div>
</div> </div>
<div id="kommentarDialog" title="<?php echo $p->t('pruefung/anmerkungDesStudenten'); ?>" style="display:none;">
<div id="kommentarimDialog"></div>
</div>
</div> </div>
<div id="message"></div> <div id="message"></div>
+58 -14
View File
@@ -69,6 +69,8 @@ if(isset($_GET['getAnmeldung']))
$lehrveranstaltung_id=$_GET['lehrveranstaltung_id']; $lehrveranstaltung_id=$_GET['lehrveranstaltung_id'];
$stsem = $_GET['stsem']; $stsem = $_GET['stsem'];
$semester = $_GET['semester'];
$studienplan_id = $_GET['studienplan_id'];
echo $p->t('studienplan/LehrveranstalungWaehlen').' echo $p->t('studienplan/LehrveranstalungWaehlen').'
<form action="'.$_SERVER['PHP_SELF'].'?uid='.$db->convert_html_chars($uid).'" method="POST"> <form action="'.$_SERVER['PHP_SELF'].'?uid='.$db->convert_html_chars($uid).'" method="POST">
@@ -83,6 +85,10 @@ if(isset($_GET['getAnmeldung']))
$datum = new datum(); $datum = new datum();
$kompatibel[]=$lehrveranstaltung_id; $kompatibel[]=$lehrveranstaltung_id;
$kompatibel = array_unique($kompatibel); $kompatibel = array_unique($kompatibel);
$stsem_obj = new studiensemester();
$aktornext = $stsem_obj->getaktorNext();
$lvregel = new lvregel();
foreach($kompatibel as $lvid) foreach($kompatibel as $lvid)
{ {
$lvangebot = new lvangebot(); $lvangebot = new lvangebot();
@@ -95,20 +101,58 @@ if(isset($_GET['getAnmeldung']))
$angebot = $lvangebot->result[0]; $angebot = $lvangebot->result[0];
if($angebot->AnmeldungMoeglich()) if($angebot->AnmeldungMoeglich())
{ {
$anzahl++; $kompatible_lv = $lehrveranstaltung->getStudienplanLehrveranstaltung($lvid, $studienplan_id);
// LV wird angeboten und Anmeldefenster ist offen
$bngruppe = new benutzergruppe(); $lvregelExists = false;
if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem)) $abgeschlossen = false;
$semesterlock = false;
$regelerfuellt = true;
if ($kompatible_lv)
{ {
// User ist noch nicht angemeldet $lvregelExists = $lvregel->exists($kompatible_lv);
echo '<br><input type="radio" value="'.$lvid.'" name="lv"/>'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')'; if($lvregelExists)
{
if($lvregel->isAbgeschlossen($uid, $kompatible_lv))
$abgeschlossen=true;
else
$abgeschlossen=false;
}
if(!$lvregel->checkSemester($kompatible_lv, $semester))
{
$semesterlock=true;
}
else
{
if($stsem === $aktornext)
{
$result = $lvregel->isZugangsberechtigt($uid, $kompatible_lv, $stsem);
if((is_array($result)) && ($result[0] !== true))
{
$regelerfuellt=false;
}
}
}
} }
else
if (!(($lvregelExists && !$abgeschlossen) || $semesterlock || !$regelerfuellt))
{ {
// Bereits angemeldet $anzahl++;
echo '<br><input type="radio" disabled="true" value="'.$lvid.'" name="lv" /><span class="ok">'.$lv->bezeichnung.'</span><img src="../../../skin/images/information.png" title="'.$p->t('studienplan/bereitsAngemeldet').'"/>'; // LV wird angeboten und Anmeldefenster ist offen
$bngruppe = new benutzergruppe();
if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem))
{
// User ist noch nicht angemeldet
echo '<br><input type="radio" value="'.$lvid.'" name="lv"/>'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')';
}
else
{
// Bereits angemeldet
echo '<br><input type="radio" disabled="true" value="'.$lvid.'" name="lv" /><span class="ok">'.$lv->bezeichnung.'</span><img src="../../../skin/images/information.png" title="'.$p->t('studienplan/bereitsAngemeldet').'"/>';
}
} }
} }
/* else /* else
{ {
@@ -170,9 +214,9 @@ echo '
$("#dialog").dialog({ autoOpen: false, width: "auto" }); $("#dialog").dialog({ autoOpen: false, width: "auto" });
}); });
function OpenAnmeldung(lehrveranstaltung_id, stsem) function OpenAnmeldung(lehrveranstaltung_id, stsem, semester, studienplan_id)
{ {
$("#dialog").load("studienplan.php?getAnmeldung=true&lehrveranstaltung_id="+lehrveranstaltung_id+"&stsem="+stsem+"&uid='.$db->convert_html_chars($uid).'"); $("#dialog").load("studienplan.php?getAnmeldung=true&lehrveranstaltung_id="+lehrveranstaltung_id+"&stsem="+stsem+"&semester="+semester+"&studienplan_id="+studienplan_id+"&uid='.$db->convert_html_chars($uid).'");
$("#dialog").dialog("open"); $("#dialog").dialog("open");
} }
</script> </script>
@@ -359,7 +403,7 @@ drawTree($tree,0);
function drawTree($tree, $depth) function drawTree($tree, $depth)
{ {
global $uid, $stsem_arr, $noten_arr, $lvangebot_arr, $aktornext; global $uid, $stsem_arr, $noten_arr, $lvangebot_arr, $aktornext, $studienplan_id;
global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr, $student; global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr, $student;
global $anrechnung; global $anrechnung;
@@ -639,12 +683,12 @@ function drawTree($tree, $depth)
$tdclass[]='angebot'; $tdclass[]='angebot';
if($angemeldet) if($angemeldet)
{ {
$tdinhalt.= '<a href="#" onclick="OpenAnmeldung(\''.$row_tree->lehrveranstaltung_id.'\',\''.$stsem.'\'); return false;"><img src="../../../skin/images/ja.png" title="'.$p->t('studienplan/legendeAngemeldet').'" /></a>'; $tdinhalt.= '<a href="#" onclick="OpenAnmeldung(\''.$row_tree->lehrveranstaltung_id.'\',\''.$stsem.'\',\''.$semester.'\',\''.$studienplan_id.'\'); return false;"><img src="../../../skin/images/ja.png" title="'.$p->t('studienplan/legendeAngemeldet').'" /></a>';
} }
else else
{ {
if($anmeldungmoeglich) if($anmeldungmoeglich)
$tdinhalt.= '<a href="#" onclick="OpenAnmeldung(\''.$row_tree->lehrveranstaltung_id.'\',\''.$stsem.'\'); return false;"><img src="../../../skin/images/anmelden.png" title="'.$p->t('studienplan/anmelden').'" height="15px" /></a>'; $tdinhalt.= '<a href="#" onclick="OpenAnmeldung(\''.$row_tree->lehrveranstaltung_id.'\',\''.$stsem.'\', \''.$semester.'\', \''.$studienplan_id.'\'); return false;"><img src="../../../skin/images/anmelden.png" title="'.$p->t('studienplan/anmelden').'" height="15px" /></a>';
else else
$tdinhalt.= '<span title="'.$anmeldeinformation.'">-</a>'; $tdinhalt.= '<span title="'.$anmeldeinformation.'">-</a>';
+3
View File
@@ -249,6 +249,9 @@ define('CIS_INFOSCREEN_NEWS_ANZEIGEN',false);
//User, welcher für das Anlegen von Anrechnungen bei der Prüfungsanmeldung verwendet wird //User, welcher für das Anlegen von Anrechnungen bei der Prüfungsanmeldung verwendet wird
define('CIS_PRUEFUNGSANMELDUNG_USER','p.pruefungsanmeldung'); define('CIS_PRUEFUNGSANMELDUNG_USER','p.pruefungsanmeldung');
//Gibt an, ob die Studierenden bei der Anmeldung zu einer Prüfung den Ausmas an ECTS angeben können
define('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE', false);
// Anmeldefristen für Prüfungen in Tagen; // Anmeldefristen für Prüfungen in Tagen;
// Wenn nicht definiert: 3 // Wenn nicht definiert: 3
//define('CIS_PRUEFUNGSANMELDUNG_FRIST',3); //define('CIS_PRUEFUNGSANMELDUNG_FRIST',3);
+28
View File
@@ -2861,5 +2861,33 @@ class lehrveranstaltung extends basis_db
return false; return false;
} }
} }
public function getStudienplanLehrveranstaltung($lehrveranstaltung_id, $studienplan_id)
{
$qry = "SELECT studienplan_lehrveranstaltung_id
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id)."
AND tbl_studienplan_lehrveranstaltung.studienplan_id = ".$this->db_add_param($studienplan_id);"";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->studienplan_lehrveranstaltung_id;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der studienplan_lehrveranstaltung_id';
return false;
}
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
}
return null;
}
} }
?> ?>
+32
View File
@@ -464,6 +464,7 @@ class pruefungCis extends basis_db
$obj->anmeldung_von= $row->anmeldung_von; $obj->anmeldung_von= $row->anmeldung_von;
$obj->anmeldung_bis = $row->anmeldung_bis; $obj->anmeldung_bis = $row->anmeldung_bis;
$obj->ort_kurzbz = $row->ort_kurzbz; $obj->ort_kurzbz = $row->ort_kurzbz;
$obj->anderer_raum = $row->anderer_raum;
$obj->sammelklausur = $row->sammelklausur; $obj->sammelklausur = $row->sammelklausur;
array_push($this->termine, $obj); array_push($this->termine, $obj);
} }
@@ -646,6 +647,37 @@ class pruefungCis extends basis_db
return false; return false;
} }
public function getPruefungByStudiensemester($studiensemester_kurzbz)
{
if(empty($studiensemester_kurzbz))
{
$this->errormsg = "Kein Studiensemester übergeben.</br>";
return false;
}
$qry = 'SELECT *
FROM campus.tbl_lehrveranstaltung_pruefung
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN campus.tbl_pruefung USING (pruefung_id)
WHERE tbl_pruefung.studiensemester_kurzbz = ' . $this->db_add_param($studiensemester_kurzbz);
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->lehrveranstaltung_pruefung_id = $row->lehrveranstaltung_pruefung_id;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->pruefung_id = $row->pruefung_id;
$obj->storniert = $row->storniert;
$obj->bezeichnung = $row->bezeichnung;
array_push($this->lehrveranstaltungen, $obj);
}
return true;
}
return false;
}
/** /**
* Lädt alle Prüfung-Lehrveranstaltung Kombinationen * Lädt alle Prüfung-Lehrveranstaltung Kombinationen
* @return boolean true, wenn ok; false, im Fehlerfall * @return boolean true, wenn ok; false, im Fehlerfall
+9 -3
View File
@@ -39,6 +39,7 @@ class pruefungsanmeldung extends basis_db {
public $statusupdatevon; //varchar(32) public $statusupdatevon; //varchar(32)
public $statusupdateamum; //timestamp public $statusupdateamum; //timestamp
public $anrechnung_id; //integer public $anrechnung_id; //integer
public $ects; //integer
public $pruefungstyp_kurzbz; //varchar(32) public $pruefungstyp_kurzbz; //varchar(32)
public $insertamum; // timestamp public $insertamum; // timestamp
@@ -94,7 +95,7 @@ class pruefungsanmeldung extends basis_db {
if($new) if($new)
{ {
$qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id, pruefungstyp_kurzbz) VALUES (' $qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id, pruefungstyp_kurzbz, ects) VALUES ('
. $this->db_add_param($this->uid).', ' . $this->db_add_param($this->uid).', '
. $this->db_add_param($this->pruefungstermin_id).', ' . $this->db_add_param($this->pruefungstermin_id).', '
. $this->db_add_param($this->lehrveranstaltung_id).', ' . $this->db_add_param($this->lehrveranstaltung_id).', '
@@ -103,7 +104,8 @@ class pruefungsanmeldung extends basis_db {
. $this->db_add_param($this->reihung).', ' . $this->db_add_param($this->reihung).', '
. $this->db_add_param($this->kommentar).', ' . $this->db_add_param($this->kommentar).', '
. $this->db_add_param($this->anrechnung_id).', ' . $this->db_add_param($this->anrechnung_id).', '
. $this->db_add_param($this->pruefungstyp_kurzbz).');'; . $this->db_add_param($this->pruefungstyp_kurzbz).', '
. $this->db_add_param($this->ects).');';
} }
else else
{ {
@@ -116,7 +118,8 @@ class pruefungsanmeldung extends basis_db {
. 'reihung='.$this->db_add_param($this->reihung).', ' . 'reihung='.$this->db_add_param($this->reihung).', '
. 'kommentar='.$this->db_add_param($this->kommentar).', ' . 'kommentar='.$this->db_add_param($this->kommentar).', '
. 'anrechnung_id='.$this->db_add_param($this->anrechnung_id).', ' . 'anrechnung_id='.$this->db_add_param($this->anrechnung_id).', '
. 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz) . 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz).', '
. 'ects='.$this->db_add_param($this->ects)
. ' WHERE pruefungsanmeldung_id='.$this->db_add_param($this->pruefungsanmeldung_id).';'; . ' WHERE pruefungsanmeldung_id='.$this->db_add_param($this->pruefungsanmeldung_id).';';
} }
@@ -167,6 +170,7 @@ class pruefungsanmeldung extends basis_db {
$this->statusupdatevon = $row->statusupdatevon; $this->statusupdatevon = $row->statusupdatevon;
$this->anrechnung_id = $row->anrechnung_id; $this->anrechnung_id = $row->anrechnung_id;
$this->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; $this->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
$this->ects = $row->ects;
$this->insertamum = $row->insertamum; $this->insertamum = $row->insertamum;
} }
return true; return true;
@@ -221,6 +225,7 @@ class pruefungsanmeldung extends basis_db {
$anmeldung->statusupdatevon = $row->statusupdatevon; $anmeldung->statusupdatevon = $row->statusupdatevon;
$anmeldung->anrechnung_id = $row->anrechnung_id; $anmeldung->anrechnung_id = $row->anrechnung_id;
$anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
$anmeldung->ects = $row->ects;
array_push($anmeldungen, $anmeldung); array_push($anmeldungen, $anmeldung);
} }
return $anmeldungen; return $anmeldungen;
@@ -280,6 +285,7 @@ class pruefungsanmeldung extends basis_db {
$anmeldung->statusupdatevon = $row->statusupdatevon; $anmeldung->statusupdatevon = $row->statusupdatevon;
$anmeldung->anrechnung_id = $row->anrechnung_id; $anmeldung->anrechnung_id = $row->anrechnung_id;
$anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
$anmeldung->ects = $row->ects;
$anmeldung->datum_anmeldung = $row->datum_anmeldung; $anmeldung->datum_anmeldung = $row->datum_anmeldung;
array_push($anmeldungen, $anmeldung); array_push($anmeldungen, $anmeldung);
} }
+21 -1
View File
@@ -37,6 +37,7 @@ class pruefungstermin extends basis_db{
public $anmeldung_von; //date public $anmeldung_von; //date
public $anmeldung_bis; //date public $anmeldung_bis; //date
public $ort_kurzbz; //varchar(16) public $ort_kurzbz; //varchar(16)
public $anderer_raum; //text
public $sammelklausur; //boolean public $sammelklausur; //boolean
/** /**
@@ -93,6 +94,7 @@ class pruefungstermin extends basis_db{
$this->anmeldung_von= $row->anmeldung_von; $this->anmeldung_von= $row->anmeldung_von;
$this->anmeldung_bis = $row->anmeldung_bis; $this->anmeldung_bis = $row->anmeldung_bis;
$this->ort_kurzbz = $row->ort_kurzbz; $this->ort_kurzbz = $row->ort_kurzbz;
$this->anderer_raum = $row->anderer_raum;
$this->sammelklausur = $row->sammelklausur; $this->sammelklausur = $row->sammelklausur;
} }
return true; return true;
@@ -179,7 +181,8 @@ class pruefungstermin extends basis_db{
. 'teilnehmer_min='.$this->db_add_param($this->teilnehmer_min).', ' . 'teilnehmer_min='.$this->db_add_param($this->teilnehmer_min).', '
. 'anmeldung_von='.$this->db_add_param($this->anmeldung_von).', ' . 'anmeldung_von='.$this->db_add_param($this->anmeldung_von).', '
. 'anmeldung_bis='.$this->db_add_param($this->anmeldung_bis).', ' . 'anmeldung_bis='.$this->db_add_param($this->anmeldung_bis).', '
. 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).' ' . 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).', '
. 'anderer_raum='.$this->db_add_param($this->anderer_raum).' '
. 'WHERE pruefungstermin_id='.$this->db_add_param($this->pruefungstermin_id).';'; . 'WHERE pruefungstermin_id='.$this->db_add_param($this->pruefungstermin_id).';';
} }
@@ -228,6 +231,7 @@ class pruefungstermin extends basis_db{
$obj->anmeldung_von= $row->anmeldung_von; $obj->anmeldung_von= $row->anmeldung_von;
$obj->anmeldung_bis = $row->anmeldung_bis; $obj->anmeldung_bis = $row->anmeldung_bis;
$obj->ort_kurzbz = $row->ort_kurzbz; $obj->ort_kurzbz = $row->ort_kurzbz;
$obj->anderer_raum = $row->anderer_raum;
$obj->sammelklausur = $row->sammelklausur; $obj->sammelklausur = $row->sammelklausur;
array_push($this->result, $obj); array_push($this->result, $obj);
} }
@@ -240,4 +244,20 @@ class pruefungstermin extends basis_db{
} }
} }
public function delete($pruefungstermin_id)
{
$qry = "DELETE FROM campus.tbl_pruefungstermin WHERE pruefungstermin_id=".$this->db_add_param($pruefungstermin_id).";";
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg='Fehler beim Löschen des Eintrages';
return false;
}
}
} }
+32
View File
@@ -322,5 +322,37 @@ class reservierung extends basis_db
} }
} }
public function getReservierungen($ort_kurzbz, $datum)
{
$datum_obj = new Datum();
if(!$datum_obj->checkDatum($datum))
{
$this->errormsg='Datum hat ein ungueltiges Format';
return false;
}
$qry = "SELECT stunde FROM campus.tbl_reservierung
WHERE
ort_kurzbz=".$this->db_add_param($ort_kurzbz)." AND
datum=".$this->db_add_param($datum);
if($this->db_query($qry))
{
$result = array();
while($row = $this->db_fetch_object())
{
$result[] = $row->stunde;
}
}
else
{
$this->errormsg = "Prüfungstypen konnten nicht geladen werden.";
return false;
}
return $result;
}
} }
?> ?>
+12
View File
@@ -57,6 +57,7 @@ $this->phrasen['pruefung/listeOhneNamenDrucken'] = 'Liste ohne Namen drucken';
$this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: '; $this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: ';
$this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort '; $this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort ';
$this->phrasen['pruefung/imBuero'] = ' im Büro'; $this->phrasen['pruefung/imBuero'] = ' im Büro';
$this->phrasen['pruefung/andererRaum'] = 'anderer Raum';
$this->phrasen['pruefung/raum'] = ' Raum'; $this->phrasen['pruefung/raum'] = ' Raum';
$this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern'; $this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern';
$this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.'; $this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.';
@@ -77,6 +78,7 @@ $this->phrasen['pruefung/unbegrenzt'] = 'unbegrenzt';
$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu'; $this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu';
$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl'; $this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl';
$this->phrasen['pruefung/alleBestaetigen'] = 'Alle bestätigen'; $this->phrasen['pruefung/alleBestaetigen'] = 'Alle bestätigen';
$this->phrasen['pruefung/bitteEmailAngeben'] = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.';
// pruefungsbewertung // pruefungsbewertung
$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung'; $this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung';
@@ -95,6 +97,7 @@ $this->phrasen['pruefung/lvVonStudiengang'] = 'Lehrveranstaltungen von Studienga
$this->phrasen['pruefung/lvAlle'] = 'Alle Lehrveranstaltungen'; $this->phrasen['pruefung/lvAlle'] = 'Alle Lehrveranstaltungen';
$this->phrasen['pruefung/anmeldungSpeichern'] = 'Anmeldung speichern'; $this->phrasen['pruefung/anmeldungSpeichern'] = 'Anmeldung speichern';
$this->phrasen['pruefung/studienverpflichtung'] = 'Studienverpflichtung'; $this->phrasen['pruefung/studienverpflichtung'] = 'Studienverpflichtung';
$this->phrasen['pruefung/ects'] = 'ECTS';
// liste // liste
$this->phrasen['pruefung/anmeldungsliste'] = 'Anmeldungsliste'; $this->phrasen['pruefung/anmeldungsliste'] = 'Anmeldungsliste';
@@ -139,6 +142,15 @@ $this->phrasen['pruefung/emailBodyOrt'] = 'Ort:';
$this->phrasen['pruefung/emailBodyLinkZurAnmeldung'] = 'Link zur Anmeldung'; $this->phrasen['pruefung/emailBodyLinkZurAnmeldung'] = 'Link zur Anmeldung';
$this->phrasen['pruefung/emailBodyBitteHtmlSicht'] = 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'; $this->phrasen['pruefung/emailBodyBitteHtmlSicht'] = 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.';
// Sammelmail
$this->phrasen['pruefung/sammelemailBody'] = 'Die Anmeldungen zur Prüfung %s am %s wurde von %s bestätigt. <br />';
$this->phrasen['pruefung/sammelemailBody2'] = 'Ort: %s<br />';
$this->phrasen['pruefung/sammelemailBodyBestaetigt'] = 'Bestätigt von';
$this->phrasen['pruefung/sammelemailBodyPruefung'] = 'Prüfung';
$this->phrasen['pruefung/sammelemailBodyTermin'] = 'Termin';
$this->phrasen['pruefung/sammelemailBodyDauer'] = 'Dauer';
$this->phrasen['pruefung/emailLektorSubjectAnmeldung'] = 'Anmeldung zur Prüfung'; $this->phrasen['pruefung/emailLektorSubjectAnmeldung'] = 'Anmeldung zur Prüfung';
$this->phrasen['pruefung/emailLektorStudentIn'] = 'StudentIn'; $this->phrasen['pruefung/emailLektorStudentIn'] = 'StudentIn';
$this->phrasen['pruefung/emailLektorHatSichZurPruefung'] = 'hat sich zur Prüfung'; $this->phrasen['pruefung/emailLektorHatSichZurPruefung'] = 'hat sich zur Prüfung';
+10
View File
@@ -57,6 +57,7 @@ $this->phrasen['pruefung/listeOhneNamenDrucken'] = 'Liste ohne Namen drucken';
$this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: '; $this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: ';
$this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort '; $this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort ';
$this->phrasen['pruefung/imBuero'] = ' im Büro'; $this->phrasen['pruefung/imBuero'] = ' im Büro';
$this->phrasen['pruefung/andererRaum'] = 'other Room';
$this->phrasen['pruefung/raum'] = ' Raum'; $this->phrasen['pruefung/raum'] = ' Raum';
$this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern'; $this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern';
$this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.'; $this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.';
@@ -77,6 +78,7 @@ $this->phrasen['pruefung/unbegrenzt'] = 'unlimited';
$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu'; $this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu';
$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl'; $this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl';
$this->phrasen['pruefung/alleBestaetigen'] = 'Confirm all'; $this->phrasen['pruefung/alleBestaetigen'] = 'Confirm all';
$this->phrasen['pruefung/bitteEmailAngeben'] = 'Please enter a valid E-Mail Address.';
// pruefungsbewertung // pruefungsbewertung
$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung'; $this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung';
@@ -139,6 +141,14 @@ $this->phrasen['pruefung/emailBodyOrt'] = 'Ort:';
$this->phrasen['pruefung/emailBodyLinkZurAnmeldung'] = 'Link zur Anmeldung'; $this->phrasen['pruefung/emailBodyLinkZurAnmeldung'] = 'Link zur Anmeldung';
$this->phrasen['pruefung/emailBodyBitteHtmlSicht'] = 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'; $this->phrasen['pruefung/emailBodyBitteHtmlSicht'] = 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.';
// Sammelmail
$this->phrasen['pruefung/sammelemailBody'] = 'The exam registrations for %s on %s have been confirmed by %s. <br />';
$this->phrasen['pruefung/sammelemailBody2'] = 'Place: %s<br />';
$this->phrasen['pruefung/sammelemailBodyBestaetigt'] = 'Confirmed by';
$this->phrasen['pruefung/sammelemailBodyPruefung'] = 'Exam';
$this->phrasen['pruefung/sammelemailBodyTermin'] = 'Exam date';
$this->phrasen['pruefung/sammelemailBodyDauer'] = 'Duration';
$this->phrasen['pruefung/emailLektorSubjectAnmeldung'] = 'Anmeldung zur Prüfung'; $this->phrasen['pruefung/emailLektorSubjectAnmeldung'] = 'Anmeldung zur Prüfung';
$this->phrasen['pruefung/emailLektorStudentIn'] = 'StudentIn'; $this->phrasen['pruefung/emailLektorStudentIn'] = 'StudentIn';
$this->phrasen['pruefung/emailLektorHatSichZurPruefung'] = 'hat sich zur Prüfung'; $this->phrasen['pruefung/emailLektorHatSichZurPruefung'] = 'hat sich zur Prüfung';
+3 -2
View File
@@ -83,6 +83,7 @@ require_once('dbupdate_3.4/63436_cis4_iframe_component.php');
require_once('dbupdate_3.4/60882_lehrfaecherverteilung_favorites.php'); require_once('dbupdate_3.4/60882_lehrfaecherverteilung_favorites.php');
require_once('dbupdate_3.4/66982_berufsschule.php'); require_once('dbupdate_3.4/66982_berufsschule.php');
require_once('dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php'); require_once('dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php');
require_once('dbupdate_3.4/47972_pruefungsverwaltung_ects_angabe.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>'; echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -165,8 +166,8 @@ $tabellen=array(
"campus.tbl_paabgabe" => array("paabgabe_id","projektarbeit_id","paabgabetyp_kurzbz","fixtermin","datum","kurzbz","abgabedatum", "insertvon","insertamum","updatevon","updateamum"), "campus.tbl_paabgabe" => array("paabgabe_id","projektarbeit_id","paabgabetyp_kurzbz","fixtermin","datum","kurzbz","abgabedatum", "insertvon","insertamum","updatevon","updateamum"),
"campus.tbl_pruefungsfenster" => array("pruefungsfenster_id","studiensemester_kurzbz","oe_kurzbz","start","ende"), "campus.tbl_pruefungsfenster" => array("pruefungsfenster_id","studiensemester_kurzbz","oe_kurzbz","start","ende"),
"campus.tbl_pruefung" => array("pruefung_id","mitarbeiter_uid","studiensemester_kurzbz","pruefungsfenster_id","pruefungstyp_kurzbz","titel","beschreibung","methode","einzeln","storniert","insertvon","insertamum","updatevon","updateamum","pruefungsintervall"), "campus.tbl_pruefung" => array("pruefung_id","mitarbeiter_uid","studiensemester_kurzbz","pruefungsfenster_id","pruefungstyp_kurzbz","titel","beschreibung","methode","einzeln","storniert","insertvon","insertamum","updatevon","updateamum","pruefungsintervall"),
"campus.tbl_pruefungstermin" => array("pruefungstermin_id","pruefung_id","von","bis","teilnehmer_max","teilnehmer_min","anmeldung_von","anmeldung_bis","ort_kurzbz","sammelklausur"), "campus.tbl_pruefungstermin" => array("pruefungstermin_id","pruefung_id","von","bis","teilnehmer_max","teilnehmer_min","anmeldung_von","anmeldung_bis","ort_kurzbz","sammelklausur", "anderer_raum"),
"campus.tbl_pruefungsanmeldung" => array("pruefungsanmeldung_id","uid","pruefungstermin_id","lehrveranstaltung_id","status_kurzbz","wuensche","reihung","kommentar","statusupdatevon","statusupdateamum","anrechnung_id","pruefungstyp_kurzbz","insertamum"), "campus.tbl_pruefungsanmeldung" => array("pruefungsanmeldung_id","uid","pruefungstermin_id","lehrveranstaltung_id","status_kurzbz","wuensche","reihung","kommentar","statusupdatevon","statusupdateamum","anrechnung_id","pruefungstyp_kurzbz","insertamum", "ects"),
"campus.tbl_pruefungsstatus" => array("status_kurzbz","bezeichnung"), "campus.tbl_pruefungsstatus" => array("status_kurzbz","bezeichnung"),
"campus.tbl_reservierung" => array("reservierung_id","ort_kurzbz","studiengang_kz","uid","stunde","datum","titel","beschreibung","semester","verband","gruppe","gruppe_kurzbz","veranstaltung_id","insertamum","insertvon"), "campus.tbl_reservierung" => array("reservierung_id","ort_kurzbz","studiengang_kz","uid","stunde","datum","titel","beschreibung","semester","verband","gruppe","gruppe_kurzbz","veranstaltung_id","insertamum","insertvon"),
"campus.tbl_studierendenantrag" => array("studierendenantrag_id","prestudent_id","studiensemester_kurzbz","datum","typ","insertamum","insertvon","datum_wiedereinstieg","grund","dms_id"), "campus.tbl_studierendenantrag" => array("studierendenantrag_id","prestudent_id","studiensemester_kurzbz","datum","typ","insertamum","insertvon","datum_wiedereinstieg","grund","dms_id"),
@@ -0,0 +1,22 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
if(!@$db->db_query("SELECT ects FROM campus.tbl_pruefungsanmeldung LIMIT 1"))
{
$qry = 'ALTER TABLE campus.tbl_pruefungsanmeldung ADD COLUMN ects numeric(5,2);';
if(!$db->db_query($qry))
echo '<strong> campus.tbl_pruefungsanmeldung '.$db->db_last_error().'</strong><br>';
else
echo '<br>campus.tbl_pruefungsanmeldung: Neue Spalte ects hinzugefügt';
}
if(!@$db->db_query("SELECT anderer_raum FROM campus.tbl_pruefungstermin LIMIT 1"))
{
$qry = 'ALTER TABLE campus.tbl_pruefungstermin ADD COLUMN anderer_raum text NULL;';
if(!$db->db_query($qry))
echo '<strong> campus.tbl_pruefungstermin '.$db->db_last_error().'</strong><br>';
else
echo '<br>campus.tbl_pruefungstermin: Neue Spalte anderer_raum hinzugefügt';
}
@@ -0,0 +1,759 @@
<?php
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/fachbereich.class.php');
require_once('../../include/lvinfo.class.php');
require_once('../../include/lehrveranstaltung.class.php');
require_once('../../include/organisationsform.class.php');
require_once('../../include/organisationseinheit.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$getKompatibleLVs = filter_input(INPUT_POST, 'getKompatibleLVs', FILTER_VALIDATE_BOOLEAN);
if ($getKompatibleLVs)
{
if (isset($_POST['lv_id']))
{
$lv = new lehrveranstaltung();
$lv->load($_POST['lv_id']);
$kompatibleLvs = $lv->loadLVkompatibel($_POST['lv_id']);
if (is_array($kompatibleLvs) && count($kompatibleLvs) > 0)
{
$result = array();
foreach($kompatibleLvs as $lvId)
{
$lv->load($lvId);
$studiengang = new studiengang();
$studiengang->load($lv->studiengang_kz);
$oe = new organisationseinheit();
$oe->load($lv->oe_kurzbz);
$result[] = array(
"lehrveranstaltung_id" => $lv->lehrveranstaltung_id,
"kurzbz" => $lv->kurzbz,
"bezeichnung" => $lv->bezeichnung,
"ects" => $lv->ects,
"studiengang_kuerzel" => $studiengang->kuerzel,
"oe_bezeichnung" => $oe->bezeichnung
);
}
echo json_encode(["result" => $result]);
exit();
}
echo json_encode(["result" => array()]);
exit();
}
}
if (isset($_REQUEST['autocomplete']) && ($_REQUEST['autocomplete'] === 'From' || $_REQUEST['autocomplete'] === 'To'))
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
{
exit();
}
$qry = "SELECT lehre.tbl_lehrveranstaltung.*
FROM lehre.tbl_lehrveranstaltung
WHERE
lower(bezeichnung) like '%" . $db->db_escape(mb_strtolower($search)) . "%' OR
lehrveranstaltung_id::text like '%" . $db->db_escape(mb_strtolower($search)) . "%' OR
studiengang_kz::text like '%" . $db->db_escape(mb_strtolower($search)) . "%'
ORDER BY lehrveranstaltung_id DESC
LIMIT 10
";
if ($result = $db->db_query($qry))
{
$result_obj = array();
while ($row = $db->db_fetch_object($result))
{
$item['lehrveranstaltung_id'] = html_entity_decode($row->lehrveranstaltung_id);
$item['bezeichnung'] = html_entity_decode($row->bezeichnung);
$item['oe_kurzbz'] = html_entity_decode($row->oe_kurzbz);
$result_obj[] = $item;
}
echo json_encode($result_obj);
}
exit();
}
?><!DOCTYPE html>
<html>
<head>
<title>Lehrveranstaltung Verwaltung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../skin/fhcomplete.css" type="text/css">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../skin/jquery.css" type="text/css"/>
<script type="text/javascript" src="../../vendor/jquery/jquery1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<link rel="stylesheet" href="../../skin/tablesort.css" type="text/css"/>
<style>
.container {
display: flex;
gap: 20px;
width: 100%;
}
.box {
flex: 1;
padding: 20px;
border: 1px solid #333;
text-align: center;
width: 50%;
}
.lvDropdown {
width: 100%;
}
.missing-in-to td {
background-color: #fff3cd !important;
}
.autocomplete {
width: 100%;
box-sizing: border-box;
}
.hidden {
visibility: hidden;
}
</style>
<script>
$(document).ready(function () {
initBox("From");
initBox("To");
searchDropdownCleaner("From")
searchDropdownCleaner("To")
$('#kompatibleLVsUbernehmen').on("click", function() {
let lvidFrom = $('#lvDropdownFrom').val();
let lvidTo = $('#lvDropdownTo').val();
let uebernahmenCheckboxen = $("input[name='lvUebernehmenCheckbox']:checked");
let checkboxenUebernahmeCount = uebernahmenCheckboxen.length;
let lvidautoFrom = $('#autocompleteFrom').data("lv-id");
let lvidautoTo = $('#autocompleteTo').data("lv-id");
if ((!lvidFrom && !lvidautoFrom) || (!lvidTo && !lvidautoTo))
{
alert("Bitte in beiden Dropdowns eine LV auswählen!");
return;
}
lvidTo = lvidTo || lvidautoTo;
if (checkboxenUebernahmeCount === 0)
{
alert("Bitte Kompatible LV´s auswählen die übernommen werden sollen!");
return;
}
let done = 0;
uebernahmenCheckboxen.each(function()
{
saveKompatibleLv(lvidTo, this.value, function() {
done++;
if (done === checkboxenUebernahmeCount)
{
let drodpwonval = $('#lvDropdownTo').val();
let autocompleteval = $('#autocompleteTo').data('lv-id');
if (drodpwonval)
{
$('#lvDropdownTo').trigger('change');
}
else if (autocompleteval)
{
callLoadKompatibleLvs(autocompleteval, 'To');
}
}
});
});
}),
$('#alleLVsMarkieren').on("click", function()
{
let checkboxen = $("#kompatibleLVsFrom tbody tr.missing-in-to").find("input[name='lvUebernehmenCheckbox']");
checkboxen.prop("checked", true);
}),
$('#alleLVsAbwaehlen').on("click", function()
{
let checkboxen = $("#kompatibleLVsFrom tbody").find("input[name='lvUebernehmenCheckbox']");
checkboxen.prop("checked", false);
})
});
function searchDropdownCleaner(side)
{
let search = $("#autocomplete" + side);
let studiengang = $("#stgDropdown" + side);
let oe = $("#oeDropdown" + side);
let semester = $("#semDropdown" + side);
let lvDropdown = $("#lvDropdown" + side);
let dropdowns = [studiengang, oe, semester, lvDropdown];
search.on("input", function() {
if (search.val().trim().length > 0)
{
dropdowns.forEach(element => {
element.closest("tr").addClass("hidden");
});
}
else
{
dropdowns.forEach(element => {
element.closest("tr").removeClass("hidden");
});
}
})
}
function initBox(side)
{
loadSemester(side);
$('#stgDropdown' + side).on("change", function() {
loadSemester(side)
})
$('#oeDropdown' + side).on("change", function() {
loadLehrveranstaltungen(side)
})
$('#semDropdown' + side).on("change", function() {
loadLehrveranstaltungen(side)
})
$('#lvDropdown' + side).on("change", function() {
loadKompatibleLvs(side)
})
$('#kompatibleLVs' + side).data('ts-initialized', false);
$("#autocomplete" + side).autocomplete({
source: "lehrveranstaltung_kompatibel_vergleichen.php?autocomplete=" + side,
minLength: 3,
response: function(event, ui) {
for (let i in ui.content) {
if (ui.content.hasOwnProperty(i))
{
let option = ui.content[i];
option.value = option.bezeichnung + " (" + option.lehrveranstaltung_id + "/" + option.oe_kurzbz + ")";
option.label = option.bezeichnung + " (" + option.lehrveranstaltung_id + "/" + option.oe_kurzbz + ")";
}
}
},
select: function(event, ui) {
callLoadKompatibleLvs(ui.item.lehrveranstaltung_id, side)
$(this).data("lv-id", ui.item.lehrveranstaltung_id);
$("#lvBezeichnung" + side).html(ui.item.bezeichnung + " (ID: " + ui.item.lehrveranstaltung_id + ")");
}
});
}
function sortTable(side)
{
if ($("#kompatibleLVs" + side + " tbody tr").length > 0 && !$('#kompatibleLVs' + side).data('ts-initialized'))
{
$('#kompatibleLVs' + side).tablesorter({
widgets: ["zebra"],
});
}
}
function loadSemester(side)
{
var studiengang_kz = $("#stgDropdown" + side).val();
$.ajax(
{
dataType: "json",
url: "../../soap/studienplan.json.php",
data: {
"method": "getSemesterFromStudiengang",
"studiengang_kz": studiengang_kz
}
}).success(function(data)
{
let html = "";
let result = Array.isArray(data?.result) ? data.result : [];
if (result.length > 0)
{
result.forEach(function(option)
{
html+="<option value='"+ option +"'>Semester "+ option +"</option>";
});
$("#semDropdown" + side).html(html);
}
loadLehrveranstaltungen(side);
});
}
function loadKompatibleLvs(side)
{
let lv_id = $("#lvDropdown" + side).val();
if (lv_id === null)
$("#lvBezeichnung" + side).html("")
else
{
let bezeichnung = $("#lvDropdown" + side + " option:selected").text();
$("#lvBezeichnung" + side).html(bezeichnung);
callLoadKompatibleLvs(lv_id, side)
}
}
function callLoadKompatibleLvs(lv_id, side)
{
$.ajax({
url: "lehrveranstaltung_kompatibel_vergleichen.php",
data: {
'getKompatibleLVs': true,
'lv_id' : lv_id
},
type: "POST",
dataType: "json",
success: function(data)
{
var html = "";
data.result.forEach(function(option)
{
html += "<tr data-lv-id='" + option.lehrveranstaltung_id + "'>" +
"<td>"+ option.lehrveranstaltung_id +"</td>" +
"<td>"+ option.kurzbz +"</td>" +
"<td>"+ option.bezeichnung +"</td>" +
"<td>"+ option.ects +"</td>" +
"<td>"+ option.studiengang_kuerzel +"</td>" +
"<td>"+ option.oe_bezeichnung +"</td>" +
(side === "From" ? "<td><input type='checkbox' name='lvUebernehmenCheckbox' value='" + option.lehrveranstaltung_id + "'></td>" : "") +
"<td>" +
"<a href='#' onclick=\"deleteKompatibleLv('" + lv_id + "', '" + option.lehrveranstaltung_id + "', '" + side + "')\">" +
"<img height='20' src='../../skin/images/false.png' alt='Delete'></a>" +
"</td>" +
"</tr>";
});
$("#kompatibleLVs" + side + " tbody").html(html);
sortTable(side);
markDifferences();
},
error: function(jqXHR, textStatus, errorThrown)
{
}
});
}
function markDifferences() {
let fromVal = $("#lvDropdownFrom").val();
let toVal = $("#lvDropdownTo").val();
let lvidautoFrom = $('#autocompleteFrom').data("lv-id");
let lvidautoTo = $('#autocompleteTo').data("lv-id");
fromVal = fromVal || lvidautoFrom;
toVal = toVal || lvidautoTo;
if (!fromVal || fromVal === "null" || !toVal || toVal === "null")
{
$("#kompatibleLVsFrom tbody tr").removeClass("missing-in-to");
return;
}
$("#kompatibleLVsFrom tbody tr").removeClass("missing-in-to");
$("#kompatibleLVsFrom tbody tr").each(function ()
{
const id = $(this).data("lv-id");
const existsInTo = $("#kompatibleLVsTo tbody tr[data-lv-id='" + id + "']").length > 0;
if (!existsInTo)
{
$(this).addClass("missing-in-to")
}
});
}
function loadLehrveranstaltungen(side)
{
let studiengang_kz = $("#stgDropdown" + side).val();
let semester = $("#semDropdown" + side).val();
let oe_kurzbz = $("#oeDropdown" + side).val();
if(oe_kurzbz === "null")
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
type: "POST",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load_lva",
"parameter_0": studiengang_kz,
"parameter_1": semester,
"parameter_2": "null",
"parameter_3": "null",
"parameter_4": "true"
}
}).success(function(data)
{
let html = "";
let result = Array.isArray(data?.result) ? data.result : [];
if (result.length > 0)
{
result.forEach(function(option)
{
if (option.lehrveranstaltung_id !== null)
html+="<option value='"+ option.lehrveranstaltung_id +"'>"+ option.bezeichnung + " (" + option.lehrveranstaltung_id + "/" + option.oe_kurzbz + ") </option>";
});
$("#lvDropdown" + side).html(html);
}
loadKompatibleLvs(side);
});
}
else
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
type: "POST",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load_lva_oe",
"parameter_0": oe_kurzbz,
"parameter_1": true,
"parameter_2": "null",
"parameter_3": "bezeichnung"
}
}).success(function(data)
{
let html = "";
let result = Array.isArray(data?.result) ? data.result : [];
if (result.length > 0)
{
result.forEach(function(option)
{
if (option.lehrveranstaltung_id !== null)
html+="<option value='"+ option.lehrveranstaltung_id +"'>"+ option.bezeichnung +"</option>";
});
$("#lvDropdown" + side).html(html);
}
loadKompatibleLvs(side);
});
}
}
function loadOrganisationseinheiten(side)
{
$.ajax(
{
dataType: "json",
url: "../../soap/fhcomplete.php",
type: "POST",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "load_lva",
"parameter_0": studiengang_kz,
"parameter_1": semester,
"parameter_2": "null",
"parameter_3": "null",
"parameter_4": "true"
}
}).success(function(data)
{
var html = "";
data.result.forEach(function(option)
{
html+="<option value='"+ option.lehrveranstaltung_id +"'>"+ option.bezeichnung +"</option>";
});
$("#lvDropdown" +side).html(html);
});
}
function saveKompatibleLv(lehrveranstaltung_id, kompatible_id, onComplete)
{
$.ajax(
{
dataType: "json",
url: "../../soap/lehrveranstaltung.json.php",
type: "POST",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "saveKompatibleLehrveranstaltung",
"lehrveranstaltung_id":lehrveranstaltung_id,
"lehrveranstaltung_id_kompatibel": kompatible_id
}
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
if (onComplete)
onComplete();
}).error(function(data)
{
alert(data.responseText);
if (onComplete)
onComplete();
});
}
function deleteKompatibleLv(lehrveranstaltung_id, lehrveranstaltung_id_kompatibel, side)
{
$.ajax(
{
dataType: "json",
url: "../../soap/lehrveranstaltung.json.php",
type: "POST",
data: {
"typ": "json",
"class": "lehrveranstaltung",
"method": "deleteKompatibleLehrveranstaltung",
"lehrveranstaltung_id":lehrveranstaltung_id,
"lehrveranstaltung_id_kompatibel":lehrveranstaltung_id_kompatibel
}
}).success(function(data)
{
if(data.error === "true")
{
alert(data.errormsg);
}
let fromValDropdown = $("#lvDropdownFrom").val();
let toValDropdwon = $("#lvDropdownTo").val();
let lvidautoFrom = $('#autocompleteFrom').data("lv-id");
let lvidautoTo = $('#autocompleteTo').data("lv-id");
let fromVal = fromValDropdown || lvidautoFrom;
let toVal = toValDropdwon || lvidautoTo;
if (fromVal === toVal)
{
if (fromValDropdown)
$('#lvDropdownFrom').trigger('change');
else if (lvidautoFrom)
callLoadKompatibleLvs(fromVal, 'From');
if (toValDropdwon)
$('#lvDropdownTo').trigger('change');
else if (lvidautoFrom)
callLoadKompatibleLvs(toVal, 'To');
}
else
{
let dropdownVal = $("#lvDropdown" + side).val();
let autoVal = $('#autocomplete' + side).data("lv-id");
if (dropdownVal)
{
$('#lvDropdown' + side).trigger('change');
}
else if (autoVal)
{
callLoadKompatibleLvs(autoVal, side);
}
}
}).error(function(data)
{
alert(data.responseText);
});
}
</script>
</head>
<body>
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('lehre/lehrveranstaltung', 'suid'))
die('Sie haben keine Berechtigung fuer diese Seite');
$studiengang = new studiengang();
$studiengang->getAll("kurzbzlang");
$organisationseinheit = new organisationseinheit();
$organisationseinheit->getAll(true, true);
echo "<div class='container'>
<div class='box'>
<div style='padding-top: 1em;'>
<table>
<tr>
<td><b>Suche: </b></td>
<td colspan='3'>
<input type='text' class='autocomplete' id='autocompleteFrom' placeholder='Suche...'/>
</td>
</tr>
<tr>
<td><b>Studiengang: </b></td>
<td>
<select id='stgDropdownFrom' style='margin-right: 1em;'>";
foreach($studiengang->result as $stg)
{
echo "<option value=".$stg->studiengang_kz.">".$stg->kuerzel." - ".$stg->kurzbzlang."</option>";
}
echo "</select>
</td>
<td><b>OE:</b></td>";
echo "<td>
<select id='oeDropdownFrom' style='margin-right: 1em;'>
<option value='null'>-- Keine --</option>";
foreach($organisationseinheit->result as $oe)
{
echo "<option value=".$oe->oe_kurzbz.">".$oe->organisationseinheittyp_kurzbz." ".$oe->bezeichnung."</option>";
}
echo "</select></td>
</tr>
<tr>
<td><b>Semester: </b></td>
<td>
<select id='semDropdownFrom' style='margin-right: 1em;'>
</select>
</td>
</tr>
<tr>
<td><b>Lehrveranstaltungen: </b></td>
<td colspan='3'>
<select class='lvDropdown' id='lvDropdownFrom'></select>
</td>
</tr>
</table>
</div>
Kompatible Lehrveranstaltungen - <span id='lvBezeichnungFrom'></span>
<br />
<br />
<input type='button' id='alleLVsMarkieren' value='Alle fehlenden auswählen'/>
<input type='button' id='alleLVsAbwaehlen' value='Alle abwählen'/>
<table style='width: auto;' class='tablesorter' id='kompatibleLVsFrom'>
<thead>
<tr>
<th>ID</th>
<th>Kurzbezeichnung</th>
<th>Bezeichnung</th>
<th>ECTS</th>
<th>Studiengang</th>
<th>Organisationseiheit</th>
<th>Übernehmen?</th>
<th>Löschen?</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<input type='button' id='kompatibleLVsUbernehmen' value='Übernehmen'/>
</div>
<div class='box'>
<div style='padding-top: 1em;'>
<table>
<tr>
<td><b>Suche: </b></td>
<td colspan='3'>
<input type='text' class='autocomplete' id='autocompleteTo' placeholder='Suche...'/>
</td>
</tr>
<tr>
<td><b>Studiengang: </b></td>
<td>
<select id='stgDropdownTo' style='margin-right: 1em;'>";
foreach($studiengang->result as $stg)
{
echo "<option value=".$stg->studiengang_kz.">".$stg->kuerzel." - ".$stg->kurzbzlang."</option>";
}
echo "</select>
</td>
<td><b>OE:</b></td>";
echo "<td>
<select id='oeDropdownTo' style='margin-right: 1em;'>
<option value='null'>-- Keine --</option>";
foreach($organisationseinheit->result as $oe)
{
echo "<option value=".$oe->oe_kurzbz.">".$oe->organisationseinheittyp_kurzbz." ".$oe->bezeichnung."</option>";
}
echo "</select></td>
</tr>
<tr>
<td><b>Semester: </b></td>
<td>
<select id='semDropdownTo' style='margin-right: 1em;'>
</select>
</td>
</tr>
<tr>
<td><b>Lehrveranstaltungen: </b></td>
<td colspan='3'>
<select class='lvDropdown' id='lvDropdownTo'></select>
</td>
</tr>
</table>
</div>
Kompatible Lehrveranstaltungen - <span id='lvBezeichnungTo'></span>
<table style='width: auto;' class='tablesorter' id='kompatibleLVsTo'>
<thead>
<tr>
<th>ID</th>
<th>Kurzbezeichnung</th>
<th>Bezeichnung</th>
<th>ECTS</th>
<th>Studiengang</th>
<th>Organisationseiheit</th>
<th>Löschen?</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
";
echo "</body>
</html>";
?>
+3 -2
View File
@@ -695,15 +695,16 @@ function loadLVKompatibilitaet(lvid)
}).success(function(data) }).success(function(data)
{ {
var html=''; var html='';
html = html+'<a href="lehrveranstaltung_kompatibel_vergleichen.php" target="_blank">kompatible Lehrveranstaltungen vergleichen</a><br><br>';
html = html+'<a href="lehrveranstaltung_kompatibel.php?lehrveranstaltung_id='+lvid+'&type=edit" target="_blank">kompatible Lehrveranstaltungen hinzufügen</a><br>';
for(i in data.result) for(i in data.result)
{ {
if(data.result[i]) if(data.result[i])
{ {
lvdata = data.result[i]; lvdata = data.result[i];
if(!(lvdata.kurzbz===null && lvdata.bezeichnung===null && lvdata.studiengang_kz===null && lvdata.semester===null)) if(!(lvdata.kurzbz===null && lvdata.bezeichnung===null && lvdata.studiengang_kz===null && lvdata.semester===null))
html = html+'<br>'+lvdata.kurzbz+' - '+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')'; html = html+'<br>'+lvdata.kurzbz+' - '+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')<br>';
} }
html = html+'<br><br><a href="lehrveranstaltung_kompatibel.php?lehrveranstaltung_id='+lvid+'&type=edit" target="_blank">kompatible Lehrveranstaltungen hinzufügen</a>';
} }
$("#tab-kompatibel").html(html); $("#tab-kompatibel").html(html);