From cd9c0bcd06afcf01f9116e3e9af55a61d2816ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 5 Nov 2008 16:04:59 +0000 Subject: [PATCH] =?UTF-8?q?Notenimport=20vom=20Excel=20ist=20nun=20auch=20?= =?UTF-8?q?=C3=BCber=20die=20CIS=20m=C3=B6glich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../benotungstool/lvgesamtnoteeintragen.php | 95 ++++-- .../benotungstool/lvgesamtnoteverwalten.php | 278 ++++++++++++------ include/lvgesamtnote.class.php | 2 +- include/student.class.php | 2 +- 4 files changed, 268 insertions(+), 109 deletions(-) diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php index bfbc1d857..47b66ee34 100755 --- a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php @@ -34,7 +34,9 @@ require_once('../../../../include/datum.class.php'); require_once('../../../../include/legesamtnote.class.php'); require_once('../../../../include/lvgesamtnote.class.php'); require_once('../../../../include/zeugnisnote.class.php'); - +require_once('../../../../include/person.class.php'); +require_once('../../../../include/benutzer.class.php'); +require_once('../../../../include/student.class.php'); if(!$conn = pg_pconnect(CONN_STRING)) die('Fehler beim oeffnen der Datenbankverbindung'); @@ -67,7 +69,7 @@ else //Vars $datum_obj = new datum(); - +$response=''; $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); $uid = (isset($_GET['uid'])?$_GET['uid']:''); @@ -79,7 +81,7 @@ $stsem_obj = new studiensemester($conn); if($stsem=='') $stsem = $stsem_obj->getaktorNext(); -$note = $_REQUEST["note"]; +//$note = $_REQUEST["note"]; if(!$rechte->isBerechtigt('admin',0) && !$rechte->isBerechtigt('admin',$lv_obj->studiengang_kz) && @@ -100,19 +102,27 @@ if(!$rechte->isBerechtigt('admin',0) && } } -// lvgesamtnote für studenten speichern -if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') && ((($note>0) && ($note < 6)) || ($note == 7) || ($note==8)) ){ +function savenote($lvid, $student_uid, $note) +{ + global $conn, $stsem, $user; + $jetzt = date("Y-m-d H:i:s"); + //Ermitteln ob der Student diesem Kurs zugeteilt ist + $qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung WHERE uid='".addslashes($student_uid)."' AND lehrveranstaltung_id='".addslashes($lvid)."'"; + if($result = pg_query($conn, $qry)) + if(pg_num_rows($result)==0) + { + $student = new student($conn); + $student->load($student_uid); + die('Der Student '.$student->nachname.' '.$student->vorname.' ('.trim($student->matrikelnr).') ist dieser Lehrveranstaltung nicht zugeordnet. Die Note wird nicht uebernommen'); + } - $jetzt = date("Y-m-d H:i:s"); - $student_uid = $_REQUEST["student_uid"]; - $lvid = $_REQUEST["lvid"]; $lvgesamtnote = new lvgesamtnote($conn); if (!$lvgesamtnote->load($lvid, $student_uid, $stsem)) { $lvgesamtnote->student_uid = $student_uid; $lvgesamtnote->lehrveranstaltung_id = $lvid; $lvgesamtnote->studiensemester_kurzbz = $stsem; - $lvgesamtnote->note = $_REQUEST["note"]; + $lvgesamtnote->note = $note; $lvgesamtnote->mitarbeiter_uid = $user; $lvgesamtnote->benotungsdatum = $jetzt; $lvgesamtnote->freigabedatum = null; @@ -127,7 +137,7 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') && ((($note>0 } else { - $lvgesamtnote->note = $_REQUEST["note"]; + $lvgesamtnote->note = trim($note); $lvgesamtnote->benotungsdatum = $jetzt; $lvgesamtnote->updateamum = $jetzt; $lvgesamtnote->updatevon = $user; @@ -138,15 +148,64 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') && ((($note>0 $response = "update"; } if (!$lvgesamtnote->save($new)) - echo "".$lvgesamtnote->errormsg.""; + return "".$lvgesamtnote->errormsg.""; else - echo $response; + return $response; } -else - echo "Bitte geben Sie eine Note von 1 - 5 bzw. 7 (nicht beurteilt) oder 8 (teilgenommen) ein!"; - - - - +// lvgesamtnote für studenten speichern +if (isset($_REQUEST["submit"])) +{ + $lvid = $_REQUEST["lvid"]; + if(isset($_REQUEST["student_uid"]) && $_REQUEST["student_uid"] != '') + { + $student_uid = $_REQUEST["student_uid"]; + $note = $_REQUEST["note"]; + if((($note>0) && ($note < 6)) || ($note == 7) || ($note==8)) + $response = savenote($lvid, $student_uid, $note); + else + $response = "Bitte geben Sie eine Note von 1 - 5 bzw. 7 (nicht beurteilt) oder 8 (teilgenommen) ein!"; + + echo $response; + } + else + { + foreach ($_POST as $row=>$val) + { + if(strstr($row, 'matrikelnr_')) + { + $id=substr($row, strlen('matrikelnr_')); + if(isset($_POST['matrikelnr_'.$id]) && isset($_POST['note_'.$id])) + { + $matrikelnummer = $_POST['matrikelnr_'.$id]; + $note = $_POST['note_'.$id]; + + //UID ermitteln + $student = new student($conn); + if(!$student_uid = $student->getUidFromMatrikelnummer($matrikelnummer)) + { + $response.="\nStudent mit der Matrikelnummer ".$matrikelnummer.' existiert nicht'; + continue; + } + if((($note>0) && ($note < 6)) || ($note == 7) || ($note==8)) + { + $val=savenote($lvid, $student_uid, $note); + if($val!='neu' && $val!='update' && $val!='update_f') + $response.=$val; + } + else + { + $student->load($student_uid); + $response .= "\nFehlerhafte Note bei Student $student->nachname $student->vorname. Bitte geben Sie eine Note von 1 - 5 bzw. 7 (nicht beurteilt) oder 8 (teilgenommen) ein!"; + } + } + else + { + $response.="\nFehler bei der Parameteruebergabe"; + } + } + } + echo $response; + } +} ?> diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index 9b727905f..727aa94ed 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -64,20 +64,22 @@ require_once('../../../../include/moodle_course.class.php'); -function getTopOffset(){ - var x,y; + + function getTopOffset() + { + var x,y; if (self.pageYOffset) // all except Explorer { x = self.pageXOffset; @@ -95,57 +97,84 @@ function getTopOffset(){ y = document.body.scrollTop; } return y; - } - - + } + + // ************************************** + // * XMLHttpRequest Objekt erzeugen + // ************************************** var anfrage = null; - function erzeugeAnfrage(){ - try { - anfrage = new XMLHttpRequest(); - } catch (versuchmicrosoft) { - try { - anfrage = new ActiveXObject("Msxml12.XMLHTTP"); - } catch (anderesmicrosoft){ - try { - anfrage = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (fehlschlag){ - anfrage = null; + function erzeugeAnfrage() + { + try + { + anfrage = new XMLHttpRequest(); + } + catch (versuchmicrosoft) + { + try + { + anfrage = new ActiveXObject("Msxml12.XMLHTTP"); + } + catch (anderesmicrosoft) + { + try + { + anfrage = new ActiveXObject("Microsoft.XMLHTTP"); + } + catch (fehlschlag) + { + anfrage = null; } - } } - if (anfrage == null) alert("Fehler beim Erstellen des Anfrageobjekts!"); + if (anfrage == null) + alert("Fehler beim Erstellen des Anfrageobjekts!"); } - - function saveLVNote(uid){ - note = document.getElementById(uid).note.value; - note_orig = document.getElementById(uid).note_orig.value; - if (note == note_orig && note != "") - alert("Note unverändert!"); - else if ((note < 0) || (note > 5 && note != 8 && note != 7)) + + // ****************************************** + // * Note eines Studenten Speichern + // ****************************************** + function saveLVNote(uid) { - alert("Bitte geben Sie eine Note von 1 - 5 bzw. 7 (nicht beurteilt) oder 8 (teilgenommen) ein!"); - document.getElementById(uid).note.value=""; + note = document.getElementById(uid).note.value; + note_orig = document.getElementById(uid).note_orig.value; + //wenn die Note gleich bleibt dann abbrechen + if (note == note_orig && note != "") + { + alert("Note unverändert!"); + return true; + } + else if ((note < 0) || (note > 5 && note != 8 && note != 7)) + { + alert("Bitte geben Sie eine Note von 1 - 5 bzw. 7 (nicht beurteilt) oder 8 (teilgenommen) ein!"); + document.getElementById(uid).note.value=""; + } + else + { + //Request erzeugen und die Note speichern + erzeugeAnfrage(); + stud_uid = uid; + var jetzt = new Date(); + var ts = jetzt.getTime(); + var url= ''; + url += '&submit=1&student_uid='+uid+"¬e="+note+"&"+ts; + anfrage.open("GET", url, true); + anfrage.onreadystatechange = updateSeite; + anfrage.send(null); + document.getElementById(uid).note_orig.value=note; + } } - else - { - erzeugeAnfrage(); - stud_uid = uid; - var jetzt = new Date(); - var ts = jetzt.getTime(); - var url= ''; - url += '&submit=1&student_uid='+uid+"¬e="+note+"&"+ts; - anfrage.open("GET", url, true); - anfrage.onreadystatechange = updateSeite; - anfrage.send(null); - document.getElementById(uid).note_orig.value=note; - } - } - - function updateSeite(){ - if (anfrage.readyState == 4){ - if (anfrage.status == 200) { + + // ***************************************************** + // * Update der Seite nachdem die Note gespeichert wurde + // ***************************************************** + function updateSeite() + { + if (anfrage.readyState == 4) + { + if (anfrage.status == 200) + { uid = stud_uid; var note = document.getElementById(uid).note.value; var resp = anfrage.responseText; @@ -162,42 +191,43 @@ function getTopOffset(){ notenstatus = document.getElementById("status_"+uid); if (resp == "update_f") notenstatus.innerHTML = ""; - } - else - { - alert(resp); - document.getElementById(uid).note.value=""; - } - } else alert("Request status:" + anfrage.status); + } + else + { + alert(resp); + document.getElementById(uid).note.value=""; + } + } + else alert("Request status:" + anfrage.status); } } + // ************************************************* + // * Formular zum Eintragen einer Pruefung erstellen + // ************************************************* function pruefungAnlegen(uid,datum,note,lehreinheit_id) { - var str = "
"; var anlegendiv = document.getElementById("nachpruefung_div"); var y = getTopOffset(); y = y+50; anlegendiv.style.top = y+"px"; - //var anlegendiv = document.getElementById("span_"+uid); - + str += ""; - //if (lehreinheit_id != "") - // str += ""; str += ""; str += ""; str += ""; str += ""; str += ""; - //str += "
X
Prüfung für "+uid+" anlegen:
Lehreinheit:"+lehreinheit_id+"
Datum: [YYYY-MM-DD]
Note:
"; str += ""; - //str = "foo"; anlegendiv.innerHTML = str; anlegendiv.style.visibility = "visible"; } + // ********************************************** + // * Speichern der Pruefung + // ********************************************** function pruefungSpeichern() { var note = document.nachpruefung_form.note.value; @@ -234,9 +264,11 @@ function getTopOffset(){ anfrage.onreadystatechange = updateSeitePruefung; anfrage.send(null); } - } + // *********************************************************** + // * Nach dem Eintragen einer Pruefung die Seite aktualisieren + // *********************************************************** function updateSeitePruefung() { if (anfrage.readyState == 4) @@ -304,37 +336,63 @@ function getTopOffset(){ } // **** - // * Liefert die Daten aus der Zwischenablage + // * Liefert die Daten aus der Zwischenablage fuer IE und Firefox + // * Opera und Safari unterstuetzen dies nicht // **** function getDataFromClipboard() { if (navigator.appName.indexOf('Microsoft') > -1) { + //IE return clipboardData.getData("Text"); } else { - netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); - var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard); - if (!clip) - return false; - var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable); - if (!trans) - return false; + if(!!window.Components) + { + //Firefox, Mozilla, Gecko + try + { + netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); + } + catch(e) + { + alert('Um den Import nutzen zu können müssen sie Ihre Sicherheitseinstellungen ändern!\n Geben Sie hierzu in der Adresszeile ihres Browsers "about:config" ein und setzen sie, in der angezeigten Liste, den Eintrag "signed.applets.codebase_pricipal_support" auf true.'); + } + var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard); + if (!clip) + return false; + var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable); + if (!trans) + return false; + + trans.addDataFlavor("text/unicode"); + + clip.getData(trans,clip.kGlobalClipboard); + var str = new Object(); + var strLength = new Object(); + trans.getTransferData("text/unicode",str,strLength); - trans.addDataFlavor("text/unicode"); - - clip.getData(trans,clip.kGlobalClipboard); - var str = new Object(); - var strLength = new Object(); - trans.getTransferData("text/unicode",str,strLength); - - if (str) str = str.value.QueryInterface(Components.interfaces.nsISupportsString); - if (str) pastetext = str.data.substring(0,strLength.value / 2); - - return pastetext; + if (str) str = str.value.QueryInterface(Components.interfaces.nsISupportsString); + if (str) pastetext = str.data.substring(0,strLength.value / 2); + + return pastetext; + } + else + { + //Safari, Opera, etc + alert("Ihr Browser unterstuetzt diese Funktion nicht. Bitte verwenden Sie Firefox oder IE"); + } } } + + // ******************************************************************************* + // * holt die Daten aus der Zwischenablage parst diese und speichert sie in der DB + // * Ablauf fuer den Import: + // * - die Spalten Matrikelnummer und Note im Excel markieren + // * - in die Zwischenablage kopieren (strg-c) + // * - auf import klicken + // ******************************************************************************* function readNotenAusZwischenablage() { var data = getDataFromClipboard() @@ -342,19 +400,61 @@ function getTopOffset(){ //Reihen ermitteln var rows = data.split("\n"); var i=0; + var params=''; for(row in rows) { zeile = rows[row].split(" "); if(zeile[0]!='' && zeile[1]!='') { - alert('Matrikelnummer:'+zeile[0]+' Note:'+zeile[1]); - //data[]['nummer']=zeile[0]; - //data[]['note']=zeile[1]; + params=params+'&matrikelnr_'+i+'='+zeile[0]+'¬e_'+i+'='+zeile[1]; i++; } } + + if(i>0) + { + erzeugeAnfrage(); + var jetzt = new Date(); + var ts = jetzt.getTime(); + var url= ''; + url += '&submit=1&'+ts; + anfrage.open("POST", url, true); + anfrage.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + anfrage.setRequestHeader("Connection", "close"); + anfrage.onreadystatechange = updateSeiteMatrikelnr; + anfrage.send('test='+params); + } + else + { + alert('Zum Importieren der Noten markieren sie die Spalten Kennzeichen und Note im Excel-File und kopieren sie diese in die zwischenablage. Drücken sie danach diesen Knopf erneut um die Noten zu importieren'); + } } + + // ************************************************************** + // * Seite neu laden nachdem der Request gesendet wurde und ggf + // * Errormsg ausgeben + // ************************************************************** + function updateSeiteMatrikelnr() + { + if (anfrage.readyState == 4) + { + if (anfrage.status == 200) + { + var resp = anfrage.responseText; + if (resp!='') + { + alert(resp); + } + //QuickNDirty + //ToDo: Aktualisierung der geaenderten Felder per JS anstatt reload + //window.location.reload(); + window.location.href=window.location.href; + } + else alert("Request status:" + anfrage.status); + } + } +-->