From 39667974ef07fb8e6a979bc5473d3258ce3f2683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 12 Sep 2007 07:14:33 +0000 Subject: [PATCH] --- cis/public/kollegium.html | 4 +- content/student/studentoverlay.js.php | 42 +++++++++++++- include/lehreinheit.class.php | 83 +++++++++++++++++++++++---- rdf/konto.rdf.php | 2 +- rdf/student.rdf.php | 2 +- 5 files changed, 117 insertions(+), 16 deletions(-) diff --git a/cis/public/kollegium.html b/cis/public/kollegium.html index a60e11ee0..8c78f0744 100644 --- a/cis/public/kollegium.html +++ b/cis/public/kollegium.html @@ -52,7 +52,7 @@ Woletz Kurt

VertreterInnen der Lehrenden

Maderdonner Otto
-Teschl Susanne
+ Lehner Martin
Sommer Thomas
Paminger Christian
@@ -78,7 +78,7 @@ Horvath Martin
Mischling Barbara
Lowatschek Karl
Steinbrecher Helmut
-N.N.
+Brandl Richard
  diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index 9cc80a5b5..67fe2c4d7 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -44,6 +44,7 @@ var StudentPruefungTreeDatasource; //Datasource des Pruefung Trees var StudentPruefungSelectID=null; //ID der Pruefung die nach dem Refresh markiert werden soll var StudentDetailRolleTreeDatasource=null; //Datasource fuer denn PrestudentRolleTree var StudentAkteTreeDatasource=null; +var doublerebuildkonto='false'; // ********** Observer und Listener ************* // // **** @@ -136,7 +137,7 @@ var StudentKontoTreeListener = //timeout nur bei Mozilla notwendig da sonst die rows //noch keine values haben. Ab Seamonkey funktionierts auch //ohne dem setTimeout - window.setTimeout(StudentKontoTreeSelectBuchung,10); + window.setTimeout(StudentKontoTreeSelectBuchung,10); } }; @@ -1644,6 +1645,40 @@ function StudentKontoTreeSelectBuchung() } } +function StudentKontoLoad() +{ + person_id = document.getElementById('student-detail-textbox-person_id').value; + kontotree = document.getElementById('student-konto-tree'); + filter = document.getElementById('student-konto-button-filter').value; + studienang_kz_prestudent = document.getElementById('student-prestudent-menulist-studiengang_kz').value; + url='rdf/konto.rdf.php?person_id='+person_id+"&filter="+filter+"&studiengang_kz="+studiengang_kz_prestudent+"&"+gettimestamp(); + + //Alte DS entfernen + var oldDatasources = kontotree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + kontotree.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + kontotree.builder.rebuild(); + + try + { + StudentKontoTreeDatasource.removeXMLSinkObserver(StudentKontoTreeSinkObserver); + kontotree.builder.removeListener(StudentKontoTreeListener); + } + catch(e) + {} + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + StudentKontoTreeDatasource = rdfService.GetDataSource(url); + StudentKontoTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + StudentKontoTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + kontotree.database.AddDataSource(StudentKontoTreeDatasource); + StudentKontoTreeDatasource.addXMLSinkObserver(StudentKontoTreeSinkObserver); + kontotree.builder.addListener(StudentKontoTreeListener); +} + // **** // * Wenn eine buchung Ausgewaehlt wird, dann werden // * die Details geladen und angezeigt @@ -1961,7 +1996,10 @@ function StudentKontoGegenbuchung() { //StudentKontoSelectBuchung=val.dbdml_data; StudentKontoSelectBuchung=null; - StudentKontoTreeDatasource.Refresh(false); //non blocking + //StudentKontoTreeDatasource.Refresh(false); //non blocking + //Hier wird der ganze Konto Tree Neu geladen da bei ein + //normales Refresh hier nicht immer funktioniert + StudentKontoLoad(); SetStatusBarText('Daten wurden gespeichert'); } } diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php index a6111921f..7dd77a715 100644 --- a/include/lehreinheit.class.php +++ b/include/lehreinheit.class.php @@ -682,19 +682,82 @@ class lehreinheit } else { - //Gruppenzuteilung, Mitarbeiterzuteilung und Lehreinheit loeschen - $qry = "BEGIN; - DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id'; - DELETE FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id='$lehreinheit_id'; - DELETE FROM lehre.tbl_lehreinheit WHERE lehreinheit_id='$lehreinheit_id'; - COMMIT;"; - if(pg_query($this->conn, $qry)) - return true; - else + pg_query($this->conn, 'BEGIN'); + + //UNDO Befehl zusammenbauen + $undosql=''; + + //LehreinheitMitarbeiter + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id'"; + if($result = pg_query($this->conn, $qry)) { - $this->errormsg = pg_last_error($this->conn); + while($row = pg_fetch_object($result)) + { + $undosql.=" INSERT INTO lehre.tbl_lehreinheitmitarbeiter(lehreinheit_id, mitarbeiter_uid, lehrfunktion_kurzbz, planstunden, stundensatz, faktor, anmerkung, bismelden, updateamum, updatevon, insertamum, insertvon, semesterstunden) + VALUES(".$this->addslashes($row->lehreinheit_id).",".$this->addslashes($row->mitarbeiter_uid).",".$this->addslashes($row->lehrfunktion_kurzbz).",".$this->addslashes($row->planstunden).",".$this->addslashes($row->stundensatz).",".$this->addslashes($row->faktor).",". + $this->addslashes($row->anmerkung).",".($row->bismelden=='t'?'true':'false').",".$this->addslashes($row->updateamum).",".$this->addslashes($row->updatevon).",".$this->addslashes($row->insertamum).",".$this->addslashes($row->insertvon).",".$this->addslashes($row->semesterstunden).");"; + } + } + + //LehreinheitGruppe + $qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id='$lehreinheit_id'"; + if($result = pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + $undosql.=" INSERT INTO lehre.tbl_lehreinheitgruppe(lehreinheitgruppe_id, lehreinheit_id, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, updateamum, updatevon, insertamum, insertvon) + VALUES(".$this->addslashes($row->lehreinheitgruppe_id).",".$this->addslashes($row->lehreinheit_id).",".$this->addslashes($row->studiengang_kz).",'".addslashes($row->semester)."','".addslashes($row->verband)."','".addslashes($row->gruppe)."',". + $this->addslashes($row->gruppe_kurzbz).",".$this->addslashes($row->updateamum).",".$this->addslashes($row->updatevon).",".$this->addslashes($row->insertamum).",".$this->addslashes($row->insertvon).");"; + } + } + + //Lehreinheit + $qry = "SELECT * FROM lehre.tbl_lehreinheit WHERE lehreinheit_id='$lehreinheit_id'"; + if($result = pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + $undosql.=" INSERT INTO lehre.tbl_lehreinheit(lehreinheit_id, lehrveranstaltung_id, studiensemester_kurzbz, lehrfach_id, lehrform_kurzbz, stundenblockung, wochenrythmus, start_kw, raumtyp, raumtypalternativ, sprache, lehre, anmerkung, unr, lvnr, updateamum, updatevon, insertamum, insertvon) + VALUES(".$this->addslashes($row->lehreinheit_id).",".$this->addslashes($row->lehrveranstaltung_id).",".$this->addslashes($row->studiensemester_kurzbz).",".$this->addslashes($row->lehrfach_id).",".$this->addslashes($row->lehrform_kurzbz).",".$this->addslashes($row->stundenblockung).",". + $this->addslashes($row->wochenrythmus).",".$this->addslashes($row->startkw).",".$this->addslashes($row->raumtyp).",".$this->addslashes($row->raumtypalternativ).",".$this->addslashes($row->sprache).",".($row->wochenrythmus=='t'?'true':'false').",". + $this->addslashes($row->anmerkung).",".$this->addslashes($row->unr).",".$this->addslashes($row->lvnr).",".$this->addslashes($row->updateamum).",".$this->addslashes($row->updatevon).",".$this->addslashes($row->insertamum).",".$this->addslashes($row->insertvon).");"; + } + } + + $log = new log($this->conn); + + //Gruppenzuteilung, Mitarbeiterzuteilung und Lehreinheit loeschen + $qry = "DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id'; + DELETE FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id='$lehreinheit_id'; + DELETE FROM lehre.tbl_lehreinheit WHERE lehreinheit_id='$lehreinheit_id';"; + + $log->new = true; + $log->sql = $qry; + $log->sqlundo = $undosql; + $log->executetime = date('Y-m-d H:i:s'); + $log->mitarbeiter_uid = get_uid(); + $log->beschreibung = "Lehreinheit loeschen - $lehreinheit_id"; + + if(!$log->save()) + { + $this->errormsg = 'Fehler beim Schreiben des Log-Eintrages'; + pg_query($this->conn, 'ROLLBACK'); return false; } + else + { + if(pg_query($this->conn, $qry)) + { + pg_query($this->conn, 'COMMIT'); + return true; + } + else + { + pg_query($this->conn, 'ROLLBACK'); + $this->errormsg = pg_last_error($this->conn); + return false; + } + } } } else diff --git a/rdf/konto.rdf.php b/rdf/konto.rdf.php index a45a5e4f5..f16526cf3 100644 --- a/rdf/konto.rdf.php +++ b/rdf/konto.rdf.php @@ -26,7 +26,7 @@ * Window - Preferences - PHPeclipse - PHP - Code Templates */ // header fuer no cache -header("Cache-Control: no-cache, must-revalidate"); +header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0",false); header("Expires Mon, 26 Jul 1997 05:00:00 GMT"); header("Pragma: no-cache"); diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php index 978dc46fe..0e0dca0a5 100644 --- a/rdf/student.rdf.php +++ b/rdf/student.rdf.php @@ -527,7 +527,7 @@ else $studiengbeginn = ''; $studiensemester_kurzbz=''; $qry = "SELECT * FROM public.tbl_prestudentrolle JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE prestudent_id='$student->prestudent_id' ORDER BY datum LIMIT 1"; + WHERE prestudent_id='$student->prestudent_id' AND rolle_kurzbz in('Student','Incoming') ORDER BY datum LIMIT 1"; if($result = pg_query($conn, $qry)) { if($row = pg_fetch_object($result))