From 431f7eed82f16bb2ffc644379b3d4284c8ec2c4b Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Thu, 17 Apr 2014 06:40:43 +0000 Subject: [PATCH] =?UTF-8?q?Pr=C3=BCfungsverwaltung:=20Pr=C3=BCfer=20kann?= =?UTF-8?q?=20Beurteilungen=20eintragen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/pruefung/pruefung.js | 285 ++++--- .../pruefung/pruefungsanmeldung.json.php | 48 +- .../lehre/pruefung/pruefungsanmeldung.php | 6 - .../pruefungsanmeldungen_verwalten.php | 6 +- .../lehre/pruefung/pruefungsbewertung.js | 247 ++++++ .../pruefung/pruefungsbewertung.json.php | 285 +++++++ .../lehre/pruefung/pruefungsbewertung.php | 256 ++++++ .../pruefung/pruefungsfenster_anlegen.php | 3 - .../lehre/pruefung/pruefungstermin.json.php | 97 ++- .../pruefung/pruefungstermin_festlegen.php | 2 +- include/lehrveranstaltung.class.php | 39 +- include/pruefung.class.php | 783 ++++++++++-------- include/pruefungCis.class.php | 5 + 13 files changed, 1516 insertions(+), 546 deletions(-) create mode 100644 cis/private/lehre/pruefung/pruefungsbewertung.js create mode 100644 cis/private/lehre/pruefung/pruefungsbewertung.json.php create mode 100644 cis/private/lehre/pruefung/pruefungsbewertung.php diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index 1fc31dcc0..7516b626f 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -146,7 +146,6 @@ function writePruefungsfenster(data) { var prfFensterId = getUrlVars()["prfFensterId"]; $("#pruefungsfenster").empty(); -// $("#pruefungsfenster").append(""); $.each(data.result, function(i, v) { if(v.oe_kurzbz !== null) @@ -555,42 +554,6 @@ function refresh() loadPruefungenGesamt(); } -/** - * Lädt alle Prüfungen eines Mitarbeiters - * @returns {undefined} - */ -//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 += "
  • "+e.bezeichnung+""; -// }); -// $("#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 * @param {String} string Format: JJJJ-MM-TT hh:mm:ss @@ -643,60 +606,65 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) }, error: loadError }).success(function(data){ - if(data.error === 'false') - { - var terminId = data.result[0].pruefungstermin_id; - var lehrveranstaltung_id = data.result[0].lehrveranstaltung_id; - var liste = ""; - $("#reihungSpeichernButton").html(""); - $("#anmeldeDaten").html(liste); - $(document).tooltip({ - position: { - at: "right center", - my: "left+15 center" - } - }); - } - else - { - messageBox("message", data.errormsg, "red", "highlight", 1000); - } + writeAnmeldungen(data); }).complete(function(event, xhr, settings){ $("#sortable").sortable(); $("#sortable").disableSelection(); }); } +function writeAnmeldungen(data) +{ + if(data.error === 'false') + { + var terminId = data.result[0].pruefungstermin_id; + var lehrveranstaltung_id = data.result[0].lehrveranstaltung_id; + var liste = ""; + $("#reihungSpeichernButton").html(""); + $("#anmeldeDaten").html(liste); + $(document).tooltip({ + position: { + at: "right center", + my: "left+15 center" + } + }); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } +} + /** * speichert die Reihung der Studenten einer Prüfungsanmeldung * @param {type} terminId ID des Prüfungstermines @@ -864,6 +832,16 @@ function loadPruefungStudiengang(studiengang_kz) }); } +/** + * Zeigt das Formularfeld zur Eingabe eines Kommentars in der Anmeldungsverwaltung an. + * @param {String} vorname Vorname des Studenten + * @param {String} nachname Nachname des Studenten + * @param {int} pruefungsanmeldung_id ID der Anmeldung + * @param {String} kommentar Kommentar zur Anmeldung (wenn bereits vorhanden) + * @param {int} termin_id ID des Prüfungstermins + * @param {int} lehrveranstaltung_id ID der Lehrveranstaltung + * @returns {void} + */ function showKommentar(vorname, nachname, pruefungsanmeldung_id, kommentar, termin_id, lehrveranstaltung_id) { if(kommentar === "null") @@ -872,6 +850,13 @@ function showKommentar(vorname, nachname, pruefungsanmeldung_id, kommentar, term $("#kommentarSpeichernButton").html(""); } +/** + * Speichert ein Kommentar zu einer Anmeldung + * @param {int} pruefungsanmeldung_id ID der Anmeldung + * @param {int} termin_id ID des Termins + * @param {int} lehrveranstaltung_id ID der Lehrveranstaltung + * @returns {void} + */ function saveKommentar(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id) { var kommentar = $("#kommentarText").val(); @@ -892,6 +877,11 @@ function saveKommentar(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id) }); } +/** + * lädt alle Prüfungstypen per AJAX aus der Datenbank + * @param {boolean} abschluss + * @returns {void} + */ function loadPruefungstypen(abschluss) { $.ajax({ @@ -914,6 +904,10 @@ function loadPruefungstypen(abschluss) }); } +/** + * Lädt alle Studiensemester per AJAX aus der Datenbank + * @returns {void} + */ function loadStudiensemester() { $.ajax({ @@ -936,6 +930,11 @@ function loadStudiensemester() }); } +/** + * Prüft eine Variable ob diese NULL ist + * @param {type} variable + * @returns {boolean} TRUE, wenn die Variable NULL ist, ansonsten FALSE + */ function is_null(variable) { if(variable === null) @@ -945,6 +944,11 @@ function is_null(variable) return false; } +/** + * Prüft eine Variable ob diese undefined ist + * @param {type} variable + * @returns {boolean} TRUE, wenn die Variable undefined ist, ansonsten FALSE + */ function is_undefined(variable) { if(variable === undefined) @@ -954,6 +958,11 @@ function is_undefined(variable) return false; } +/** + * Prüft einen String ob dieser die Länge 0 hat + * @param {string} string + * @returns {boolean} TRUE, wenn die Länge des Strings 0 ist, ansonsten FALSE + */ function is_empty_String(string) { if(string.length === 0) @@ -963,6 +972,10 @@ function is_empty_String(string) return false; } +/** + * Speichert einen Prüfungstermin + * @returns {void} + */ function savePruefungstermin() { unmarkMissingFormEntry(); @@ -1006,7 +1019,6 @@ function savePruefungstermin() if(!checkMinMaxTeilnehmer(termin.min, termin.max)) { error = true; - console.log("termin"+(i+1)+"min"); markMissingFormEntry("termin"+(i+1)+"min"); markMissingFormEntry("termin"+(i+1)+"max"); } @@ -1056,7 +1068,6 @@ function savePruefungstermin() markMissingFormEntry("lvDropdowns"); } - if(error) { messageBox("message", "Formulardaten sind nicht korrekt.", "red", "highlight", 3000); @@ -1096,6 +1107,12 @@ function savePruefungstermin() } } +/** + * Fügt einem Element die Klasse "missingFormData" hinzu + * CSS-Klasse "missingFormData" wird benötigt + * @param {string} eleId ID des zu markierenden Formularfeldes + * @returns {void} + */ function markMissingFormEntry(eleId) { $("#"+eleId).addClass("missingFormData"); @@ -1104,6 +1121,11 @@ function markMissingFormEntry(eleId) }); } +/** + * Entfernt die Klasse "missingFormData" von einem Element. + * @param {string} eleId ID des Formularfeldes + * @returns {void} + */ function unmarkMissingFormEntry() { $(".missingFormData").each(function(i, v){ @@ -1111,6 +1133,10 @@ function unmarkMissingFormEntry() }); } +/** + * Lädt alle Lehrveranstaltungen eine Mitarbeiters + * @returns {void} + */ function loadLehrveranstaltungen() { var studiensemester_kurzbz = $("#studiensemester").val(); @@ -1136,6 +1162,11 @@ function loadLehrveranstaltungen() }); } +/** + * Lädt die Details zu eine Prüfung + * @param {int} prfId ID der Prüfung + * @returns {void} + */ function loadPruefungsDetails(prfId) { unmarkMissingFormEntry(); @@ -1258,7 +1289,6 @@ function loadPruefungsDetails(prfId) }); }); var ele = document.getElementById("lvDropdowns"); -// lehrveranstaltungDropdownhinzufuegen(ele, false); $("#prfTermin tr").last().remove(); if(result.pruefung.einzeln) { @@ -1285,6 +1315,10 @@ function loadPruefungsDetails(prfId) }); } +/** + * Setzt den Bereich Lehrveranstaltungen in der Anmeldungsverwaltung auf den Ausgangszustand + * @returns {void} + */ function resetLehrveranstaltungen() { $("#lvDropdown1").attr("onchange", "lehrveranstaltungDropdownhinzufuegen(this, false);") @@ -1297,16 +1331,22 @@ function resetLehrveranstaltungen() }); } +/** + * Setzt den Bereich Termine in der Ammeldungsverwaltung auf den Ausgangszustand + * @returns {void} + */ function resetTermine() { $("#prfTermin tr").each(function(i,v){ -// if(i !== 0) -// { - $(v).remove(); -// } + $(v).remove(); }); } +/** + * Aktualisiert die Daten einer Prüfung in der Datenbank + * @param {int} prfId ID der Prüfung + * @returns {void} + */ function updatePruefung(prfId) { $("#modalOverlay").addClass("modalOverlay"); @@ -1464,6 +1504,12 @@ function updatePruefung(prfId) } } +/** + * Löscht eine Lehrveranstaltung von einer Prüfung + * @param {int} lvId ID der Lehrveranstaltung + * @param {int} pruefung_id ID der Prüfung + * @returns {void} + */ function deleteLehrveranstaltungFromPruefung(lvId, pruefung_id) { $.ajax({ @@ -1483,10 +1529,14 @@ function deleteLehrveranstaltungFromPruefung(lvId, pruefung_id) } }).complete(function(){ loadPruefungsDetails(pruefung_id); -// loadAllPruefungen(); }); } +/** + * Storniert eine Prüfung + * @param {int} pruefung_id ID der Prüfung + * @returns {void} + */ function stornoPruefung(pruefung_id) { $("#modalOverlay").addClass("modalOverlay"); @@ -1510,6 +1560,12 @@ function stornoPruefung(pruefung_id) }); } +/** + * Löscht einen Termin + * @param {int} pruefung_id ID der Prüfung + * @param {int} pruefungstermin_id ID des Prüfungstermines + * @returns {undefined} + */ function terminLoeschen(pruefung_id, pruefungstermin_id) { $.ajax({ @@ -1537,6 +1593,10 @@ function terminLoeschen(pruefung_id, pruefungstermin_id) }); } +/** + * Lädt alle Prüfungen + * @returns {void} + */ function loadAllPruefungen() { var uid = $("#mitarbeiter_uid").val(); @@ -1578,9 +1638,6 @@ function loadAllPruefungen() }); }).complete(function(event, xhr, settings){ -// $("#prfTable").tablesorter({ -// widgets: ["zebra"] -// }); if($("#prfTable")[0].hasInitialized !== true) { $("#prfTable").tablesorter({ @@ -1597,6 +1654,12 @@ function loadAllPruefungen() }); } +/** + * Prüft die Daten eines Termins auf deren Richtigkeit + * Prüft ob die Beginnzeit vor der Endzeit liegt und ob beide Daten in der Zukunft liegen. + * @param {Object} termin Object mit den Attributen datum (DD.MM.YYYY), beginn (HH:mm) und ende (HH:mm) + * @returns {Boolean} TRUE, wenn die Daten korrekt sind, ansonsten FALSE + */ function checkTermin(termin) { var aktTime = new Date(); @@ -1614,6 +1677,12 @@ function checkTermin(termin) return true; } +/** + * Formatiert eine Datum von String in eine Date-Objekt + * @param {string} datum Ein Datum als String im Format "DD.MM.YYYY" + * @param {string} time eine Uhrzeit als String im Format " HH:mm:ss" + * @returns {Date} Dateobjekt + */ function stringToDate(datum, time) { datum = datum.split("."); @@ -1622,6 +1691,10 @@ function stringToDate(datum, time) return time; } +/** + * Setzt die Oberfläche der Prüfungsverwaltung auf den Ausgangszustand zurück + * @returns {void} + */ function resetPruefungsverwaltung() { loadAllPruefungen(); @@ -1636,40 +1709,36 @@ function resetPruefungsverwaltung() $("#buttonSave").attr("onclick", "savePruefungstermin();"); } +/** + * Prüft ob eine Zahl "min" kleiner als eine Zahl "max" ist. + * @param {String} min + * @param {String} max + * @returns {Boolean} TRUE, wenn min kleiner als max ist und beide einen positiven Wert haben + */ function checkMinMaxTeilnehmer(min, max) { -// console.log(isNum(min)); -// console.log(isNum(max)); - console.log(parseInt(min)); - min = parseInt(min); - max = parseInt(max); - console.log(min+max); if(((min !== null) && (max !== null)) && ((min !== "") && (max !== ""))) { - console.log(0); + min = parseInt(min); + max = parseInt(max); if(max < min) { - console.log(1); return false; } if(max < 0) { - console.log(2); return false; } if(min < 0) { - console.log(3); return false; } if(isNaN(min)) { - console.log(4); return false; } if(isNaN(max)) { - console.log(5); return false; } } diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 6fff7bc45..7281776bc 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -52,9 +52,6 @@ switch($method) case 'stornoAnmeldung': $data = stornoAnmeldung($uid); break; -// case 'getPruefungMitarbeiter': -// $data = getPruefungMitarbeiter($uid); -// break; case 'getAnmeldungenTermin': $data = getAnmeldungenTermin(); break; @@ -312,14 +309,10 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $anmeldung->uid = $uid; $anmeldung->reihung = $reihung+1; $anmeldung->status_kurzbz = "angemeldet"; - -// $studiensemester_kurbz = $_REQUEST['studiensemester_kurzbz']; - $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); $konto = new konto(); $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); -// $creditpoints = 1.5; if($creditpoints !== false) { if($creditpoints < $lehrveranstaltung->ects) @@ -452,46 +445,7 @@ function stornoAnmeldung($uid = null) return $data; } -/** - * Lädt alle Prüfungen eines Lektors/Mitarbeiters - * @param type $uid UID des Lektors/Mitarbeiters - * @return Array - */ -//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 diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php index cf8bc4fe3..e7036bcd8 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php @@ -36,11 +36,6 @@ $db = new basis_db(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); - -//TODO Berechtigung -//if(!$rechte->isBerechtigt('lehre/pruefungsanmeldung')) -// die('Sie haben keine Berechtigung für diese Seite'); - $lehrveranstaltung = new lehrveranstaltung(); $lehrveranstaltung->load_lva_student($uid); @@ -221,7 +216,6 @@ $benutzer = new student($uid); - diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php index b606c69ab..865bfa74d 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php @@ -31,9 +31,8 @@ $db = new basis_db(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); -//TODO Berechtigung -//if(!$rechte->isBerechtigt('lehre/pruefungsanmeldung')) -// die('Sie haben keine Berechtigung für diese Seite'); +if(!$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) + die('Sie haben keine Berechtigung für diese Seite'); ?> @@ -201,7 +200,6 @@ $rechte->getBerechtigungen($uid);

    Anmeldungen Verwalten

    diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.js b/cis/private/lehre/pruefung/pruefungsbewertung.js new file mode 100644 index 000000000..c53547833 --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungsbewertung.js @@ -0,0 +1,247 @@ +/* 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: Stefan Puraner + */ + +/** + * Error-Behandlung bei Ajax Requests + */ +function loadError(xhr, textStatus, errorThrown) +{ + if(xhr.status==200) + alert('Fehler:'+xhr.responseText); + else + alert('Fehler beim Laden der Daten. ErrorNr:'+xhr.status); +} + +/** + * Lädt alle Prüfungen eines Mitarbeiters + * @returns {undefined} + */ +function loadPruefungenMitarbeiter() +{ + var uid = $("#mitarbeiter_uid").val(); + $.ajax({ + dataType: 'json', + url: "./pruefungsbewertung.json.php", + type: "POST", + data: { + method: "getPruefungMitarbeiter", + mitarbeiter_uid: uid + }, + error: loadError + }).success(function(data){ + $("#pruefungen").find("h2").first().text("Prüfungen ("+uid+")"); + if(data.error === 'false') + { + var liste = ""; + data.result.forEach(function(e){ + liste += "
  • "+e.bezeichnung+""; + }); + $("#pruefungenListe").html(liste); + } + else + { + $("#pruefungenListe").html(data.errormsg); + } + }); +} + +/** + * Lädt die Anmeldungen zu einer Prüfung + * @param {type} pruefungstermin_id ID des Prüfungstermins + * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung + * @returns {undefined} + */ +function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstaltung, datum) +{ + $("#modalOverlay").addClass("modalOverlay"); + $("#anmeldeDaten").empty(); + $("#anmeldungen").children("h2").text("Bewertungen zu "+lehrveranstaltung+" ("+datum+")"); + var noten = ""; + }).complete(function(event, xhr, settings){ + var notenSelect = noten; + $.ajax({ + dataType: 'json', + url: "./pruefungsbewertung.json.php", + type: "POST", + data: { + method: "getAnmeldungenTermin", + pruefungstermin_id: pruefungstermin_id, + lehrveranstaltung_id: lehrveranstaltung_id + }, + error: loadError + }).success(function(data){ + var entry = ""; + if(data.error === "false") + { + data.result.forEach(function(d) + { + if(d.status_kurzbz === "bestaetigt") + { + var datum = d.von.split(" "); + if(d.pruefung.note===null) + { + entry = "
    "+d.student.vorname+" "+d.student.nachname+"
    "+notenSelect+"
    "; + } + else + { + entry = "
    "+d.student.vorname+" "+d.student.nachname+"
    "+notenSelect+"
    "; + } + $("#anmeldeDaten").append(entry); + if(d.pruefung.note!==null) + { + markAsSaved(document.getElementById(d.student.uid).firstChild); + $("#"+d.student.uid).find("select").val(d.pruefung.note); + } + else + { + markAsUnsaved(document.getElementById(d.student.uid).firstChild); + } + } + }); + if(entry === "") + { + entry = "
    Keine Anmeldungen vorhanden.
    "; + $("#anmeldeDaten").html(entry); + } + } + else + { + entry = "
    "+data.errormsg+"
    "; + $("#anmeldeDaten").html(entry); + } + }).complete(function(event, xhr, settings){ + $("#modalOverlay").removeClass("modalOverlay"); + }); + }); +} + +/** + * Speichert eine Beurteilung + * @param {type} ele Element das die Funtkion aufruft + * @param {type} datum + * @param {type} pruefungsanmeldung_id ID der Anmeldung + * @param {type} pruefung_id ID der Prüfung + * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung + * @returns {void} + */ +function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrveranstaltung_id) +{ + var student_uid = $(ele).parent().attr("id"); + var mitarbeiter_uid = $("#mitarbeiter_uid").val(); + var note = $(ele).parent().find("select").val(); + var anmerkung = ""; + + $.ajax({ + dataType: 'json', + url: "./pruefungsbewertung.json.php", + type: "POST", + data: { + method: "saveBeurteilung", + pruefung_id: pruefung_id, + lehrveranstaltung_id: lehrveranstaltung_id, + student_uid: student_uid, + mitarbeiter_uid: mitarbeiter_uid, + note: note, + //TODO Datum der Prüfung oder der Beurteilung????? + datum: datum, + anmerkung: anmerkung, + pruefungsanmeldung_id: pruefungsanmeldung_id + }, + error: loadError + }).success(function(data){ + markAsSaved(ele); + $(ele).attr("onclick", "updateBeurteilung(this,\""+data.result+"\")"); + }).complete(function(event, xhr, settings){ + + }); +} + +/** + * Aktualisiert eine Beurteilung + * @param {type} ele Element das die Funtkion aufruft + * @param {type} pruefung_id ID der Prüfung + * @returns {undefined} + */ +function updateBeurteilung(ele, pruefung_id) +{ + var student_uid = $(ele).parent().attr("id"); + var mitarbeiter_uid = $("#mitarbeiter_uid").val(); + var note = $(ele).parent().find("select").val(); + var anmerkung = ""; + + $.ajax({ + dataType: 'json', + url: "./pruefungsbewertung.json.php", + type: "POST", + data: { + method: "updateBeurteilung", + pruefung_id: pruefung_id, + note: note, + anmerkung: anmerkung + }, + error: loadError + }).success(function(data){ + markAsSaved(ele); + }).complete(function(event, xhr, settings){ + + }); +} + +/** + * Markiert einen Datensatz als gespeichert + * @param {type} ele Element das die Funtkion aufruft + * @returns {undefined} + */ +function markAsSaved(ele) +{ + $(ele).parent().removeClass("unsaved"); + $(ele).parent().addClass("saved"); +} + +/** + * Markiert einen Datensatz als ungespeichert + * @param {type} ele Element das die Funtkion aufruft + * @returns {undefined} + */ +function markAsUnsaved(ele) +{ + $(ele).parent().removeClass("saved"); + $(ele).parent().addClass("unsaved"); +} diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.json.php b/cis/private/lehre/pruefung/pruefungsbewertung.json.php new file mode 100644 index 000000000..aad1b20d6 --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungsbewertung.json.php @@ -0,0 +1,285 @@ +getBerechtigungen($uid); + +$studiensemester = new studiensemester(); +$aktStudiensemester = $studiensemester->getakt(); + +$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; + +switch($method) +{ + case 'getPruefungMitarbeiter': + if($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $data = getPruefungMitarbeiter($mitarbeiter_uid); + break; + case 'getNoten': + $data = getNoten(); + break; + case 'saveBeurteilung': + $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $student_uid = $_REQUEST["student_uid"]; + if($rechte->isBerechtigt('lehre/pruefungsbeurteilungAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $note = $_REQUEST["note"]; + $pruefung_id = $_REQUEST["pruefung_id"]; + $datum = $_REQUEST["datum"]; + $anmerkung = $_REQUEST["anmerkung"]; + $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; + $data = saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $note, $pruefung_id, $datum, $anmerkung, $pruefungsanmeldung_id, $uid); + break; + case 'updateBeurteilung': + $pruefung_id = $_REQUEST["pruefung_id"]; + $note = $_REQUEST["note"]; + $data = updateBeurteilung($pruefung_id, $note, $uid); + break; + case 'loadPruefung': + $pruefung_id=$_REQUEST["pruefung_id"]; + $data = loadPruefung($pruefung_id); + break; + case 'getBeurteilung': + $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; + $data = getBeurteilung($pruefungsanmeldung_id); + break; + case 'getAnmeldungenTermin': + $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $data = getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id); + break; + default: + break; +} + +echo json_encode($data); + +/** + * Lädt alle Prüfungen eines Lektors/Mitarbeiters + * @param type $uid UID des Lektors/Mitarbeiters + * @return Array + */ +function getPruefungMitarbeiter($uid = null) +{ + $lehrveranstaltung = new lehrveranstaltung(); + if($uid !== null) + { + $lehrveranstaltung->getLVByMitarbeiter($uid); + $result = array(); + foreach($lehrveranstaltung->lehrveranstaltungen as $lv) + { + $pruefung = new pruefungCis(); + $pruefung->getPruefungByLv($lv->lehrveranstaltung_id); + if(!empty($pruefung->lehrveranstaltungen)) + { + foreach($pruefung->lehrveranstaltungen as $tempLv) + { + $prf = new pruefungCis($tempLv->pruefung_id); + $prf->getTermineByPruefung(); + $tempLv->pruefung = $prf; + } + $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 Noten per AJAX aus der Datenbank + * @return Array + */ +function getNoten() +{ + $note = new note(); + if($note->getAll()) + { + $data['result']=$note->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$note->errormsg; + } + return $data; +} + +/** + * Speichert eine Beurteilung + * @param int $lehrveranstaltung_id ID der Lehrveranstaltung + * @param String $student_uid UID des Studenten + * @param String $mitarbeiter_uid UID des Lektors + * @param int $note Prüfungsnote + * @param int $pruefung_id ID der Prüfung + * @param String $datum Datum (YYYY-MM-DD) + * @param String $anmerkung Anmerkung zur Beurteilung + * @param int $pruefungsanmeldung_id ID der Anmeldung + * @param String $uid UID des aktuellen Benutzers + * @return Arrray + */ +function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $note, $pruefung_id, $datum, $anmerkung, $pruefungsanmeldung_id, $uid) +{ + $pruefungCis = new pruefungCis($pruefung_id); + $lehrveranstaltung = new lehrveranstaltung(); + $lehreinheiten = $lehrveranstaltung->getLehreinheitenOfLv($lehrveranstaltung_id, $student_uid); + $pruefung = new pruefung(); + $pruefung->new = true; + $pruefung->lehreinheit_id = $lehreinheiten[0]; + $pruefung->student_uid = $student_uid; + $pruefung->mitarbeiter_uid = $mitarbeiter_uid; + $pruefung->note = $note; + $pruefung->pruefungstyp_kurzbz = $pruefungCis->pruefungstyp_kurzbz; + $pruefung->datum = $datum; + $pruefung->anmerkung = $anmerkung; + $pruefung->pruefungsanmeldung_id = $pruefungsanmeldung_id; + $pruefung->insertvon = $uid; + $pruefung->insertamum = date('Y-m-d H:i:s'); + if($pruefung->save()) + { + $data['result']=$pruefung->pruefung_id; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Aktualisiert den Datensatz einer Beurteilung + * @param int $pruefung_id ID der Prüfung + * @param int $note Prüfungsnote + * @param String $uid UID des aktuellen Benutzers + * @return Array + */ +function updateBeurteilung($pruefung_id, $note, $uid) +{ + $pruefung = new pruefung($pruefung_id); + $pruefung->new = FALSE; + $pruefung->note = $note; + $pruefung->updatevon = $uid; + $pruefung->updateamum = date('Y-m-d H:i:s'); + if($pruefung->save()) + { + $data['result']=$pruefung->pruefung_id; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt die Beurteilung zu einer Anmeldung + * @param int $pruefungsanmeldung_id ID einer Anmeldung + * @return Array + */ +function getBeurteilung($pruefungsanmeldung_id) +{ + $pruefung = new pruefung(); + if($pruefung->getPruefungByAnmeldung($pruefungsanmeldung_id)) + { + $data['result']=$pruefung->pruefung_id; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Anmeldungen zu einem Prüfungstermin + * @return Array + */ +function getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id) +{ + $pruefungsanmeldung = new pruefungsanmeldung(); + $anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); + foreach($anmeldungen as $a) + { + $student = new student($a->uid); + $temp = new stdClass(); + $temp->vorname = $student->vorname; + $temp->nachname = $student->nachname; + $temp->uid = $student->uid; + $a->student = $temp; + $pruefung = new pruefung(); + $pruefung->getPruefungByAnmeldung($a->pruefungsanmeldung_id); + $a->pruefung = $pruefung; + } + if(!empty($anmeldungen)) + { + $data['result']=$anmeldungen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + if($pruefungsanmeldung->errormsg !== null) + { + $data['errormsg']=$pruefungsanmeldung->errormsg; + } + else + { + $data['errormsg']= 'Keine Anmeldungen vorhanden'; + } + } + return $data; +} \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.php b/cis/private/lehre/pruefung/pruefungsbewertung.php new file mode 100644 index 000000000..9c9bc8182 --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungsbewertung.php @@ -0,0 +1,256 @@ + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/studiensemester.class.php'); +require_once('../../../../include/datum.class.php'); +require_once('../../../../include/pruefungsfenster.class.php'); +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/mitarbeiter.class.php'); + +$uid = get_uid(); +$db = new basis_db(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +if(!$rechte->isBerechtigt('lehre/pruefungsbeurteilung')) + die('Sie haben keine Berechtigung für diese Seite'); + +?> + + + + Prüfungsbewertung + + + + + + + + + + + + + +
    +

    Prüfungsbewertung

    +
    + isBerechtigt('lehre/pruefungsbeurteilungAdmin')) + { + echo ' + '; + } + else + { + echo 'Lektor: '; + echo ''; + echo ''; + echo ''; + } + ?> +
    +
    +
    +
    +

    Prüfungen

    +
      + +
    +
    +
    +
    +
    +

    Anmeldungen

    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    + + diff --git a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php index f56257033..63a095df7 100644 --- a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php +++ b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php @@ -35,9 +35,6 @@ $db = new basis_db(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); -/** - * TODO - */ if(!$rechte->isBerechtigt('lehre/pruefungsfenster')) die('Sie haben keine Berechtigung für diese Seite'); diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php index 23a6c27de..a04691c76 100644 --- a/cis/private/lehre/pruefung/pruefungstermin.json.php +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -49,7 +49,7 @@ switch($method) $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; $termine = isset($_POST["termine"])?$_POST["termine"]:null; - if($rechte->isBerechtigt('lehre/pruefungsterminAll')) + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) { $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; } @@ -76,7 +76,7 @@ switch($method) $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; $termine = isset($_POST["termine"])?$_POST["termine"]:null; $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; - if($rechte->isBerechtigt('lehre/pruefungsterminAll')) + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) { $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; } @@ -101,7 +101,7 @@ switch($method) $data = deleteTermin($pruefung_id, $pruefungstermin_id); break; case 'getAllPruefungen': - if($rechte->isBerechtigt('lehre/pruefungsterminAll')) + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) { $data = getAllPruefungen($_REQUEST["uid"]); } @@ -116,7 +116,11 @@ switch($method) echo json_encode($data); - +/** + * Lädt alle Prüfungstypen aus der Datenbank + * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht + * @return Array + */ function loadPruefungstypen($abschluss) { $pruefungstermin = new pruefungstermin(); @@ -135,6 +139,11 @@ function loadPruefungstypen($abschluss) return $data; } +/** + * Lädt alle Studiensemester aus der Datenbank + * @param String $aktStudiensemester das Aktuelle Studiensemester + * @return Array + */ function loadStudiensemester($aktStudiensemester = null) { $studiensemester = new studiensemester(); @@ -156,6 +165,11 @@ function loadStudiensemester($aktStudiensemester = null) return $data; } +/** + * Lädt alle Prüfungsfenster eines Studiensemesters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) { $pruefungsfenster = new pruefungsfenster(); @@ -173,6 +187,20 @@ function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) return $data; } +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung + * @return Array + */ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine) { if($lehrveranstaltungen === null) @@ -268,6 +296,12 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id return $data; } +/** + * Lädt alle Lehrveranstaltungen eines Mitarbeiters + * @param int $mitarbeiter_uid UID des Mitarbeiters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) { $lehrveranstaltung = new lehrveranstaltung(); @@ -291,6 +325,21 @@ function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_ return $data; } +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung (bestehende) + * @param type $termineNeu Neu hinzugefügte Termine + * @return Array + */ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu) { $pruefungsfenster = new pruefungsfenster(); @@ -370,11 +419,6 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru $pruefung->termine = $termineArray; } - - - - - $pruefung->mitarbeiter_uid = $uid; $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; $pruefung->pruefungsfenster_id = $pruefungsfenster_id; @@ -410,6 +454,12 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru return $data; } +/** + * Löscht Lehrveranstaltungen von einer Prüfung + * @param int $lvId ID der Lehrveranstaltung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) { $pruefung = new pruefungCis(); @@ -428,6 +478,11 @@ function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) return $data; } +/** + * Storniert eine Prüfung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ function stornoPruefung($pruefung_id) { $pruefung = new pruefungCis(); @@ -445,6 +500,12 @@ function stornoPruefung($pruefung_id) return $data; } +/** + * Löscht einen Termin einer Prüfung + * @param int $pruefung_id ID der Prüfung + * @param int $pruefungstermin_id ID des Termins + * @return Array + */ function deleteTermin($pruefung_id, $pruefungstermin_id) { $pruefung = new pruefungCis(); @@ -463,6 +524,11 @@ function deleteTermin($pruefung_id, $pruefungstermin_id) return $data; } +/** + * Lädt alle Prüfungen eines Mitarbeiters + * @param String $mitarbeiter_uid UID des Mitarbeiters + * @return Array + */ function getAllPruefungen($mitarbeiter_uid) { $pruefung = new pruefungCis(); @@ -491,6 +557,12 @@ function getAllPruefungen($mitarbeiter_uid) return $data; } +/** + * Überprüft ob das angegebene Datum innerhalb eines Prüfungsfensters ist + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $datum + * @return boolean + */ function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) { $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); @@ -502,6 +574,13 @@ function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) return false; } +/** + * Überprüft ob es eine Kollision zu anderen Prüfungen des Mitarbeiters gibt + * @param String $uid UID des Mitarbeiters + * @param String $beginn Beginn des Termins + * @param String $ende Ende des Termins + * @return boolean + */ function checkCollision($uid, $beginn, $ende) { $collision = false; diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php index 69e6572ed..c2624f38a 100644 --- a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php +++ b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php @@ -132,7 +132,7 @@ if(!$rechte->isBerechtigt('lehre/pruefungstermin')) isBerechtigt('lehre/pruefungsterminAll')) + if(!$rechte->isBerechtigt('lehre/pruefungsterminAdmin')) { echo '