diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php
index 4300137b9..f1074e624 100644
--- a/content/student/studentenoverlay.xul.php
+++ b/content/student/studentenoverlay.xul.php
@@ -35,6 +35,7 @@ echo '';
echo '';
echo '';
+echo '';
?>
@@ -186,6 +187,7 @@ echo '
+
@@ -196,6 +198,7 @@ echo '
+
diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php
index 5c640b491..5f685475c 100644
--- a/content/student/studentoverlay.js.php
+++ b/content/student/studentoverlay.js.php
@@ -42,6 +42,8 @@ var StudentNotenTreeDatasource; //Datasource des Noten Trees
var StudentNotenSelectLehrveranstaltungID=null; //LehreinheitID des Noten Eintrages der nach dem Refresh markiert werden soll
var StudentLvGesamtNotenTreeDatasource; //Datasource des Noten Trees
var StudentLvGesamtNotenSelectLehrveranstaltungID=null; //LehreinheitID des Noten Eintrages der nach dem Refresh markiert werden soll
+var StudentPruefungTreeDatasource; //Datasource des Pruefung Trees
+var StudentPruefungSelectID=null; //ID der Pruefung die nach dem Refresh markiert werden soll
// ********** Observer und Listener ************* //
@@ -252,6 +254,39 @@ var StudentLvGesamtNotenTreeListener =
}
};
+// ****
+// * Observer fuer Pruefung Tree
+// * startet Rebuild nachdem das Refresh
+// * der datasource fertig ist
+// ****
+var StudentPruefungTreeSinkObserver =
+{
+ onBeginLoad : function(pSink) {},
+ onInterrupt : function(pSink) {},
+ onResume : function(pSink) {},
+ onError : function(pSink, pStatus, pError) {},
+ onEndLoad : function(pSink)
+ {
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ document.getElementById('student-pruefung-tree').builder.rebuild();
+ }
+};
+
+// ****
+// * Nach dem Rebuild wird der Eintrag wieder
+// * markiert
+// ****
+var StudentPruefungTreeListener =
+{
+ willRebuild : function(builder) { },
+ didRebuild : function(builder)
+ {
+ //timeout nur bei Mozilla notwendig da sonst die rows
+ //noch keine values haben. Ab Seamonkey funktionierts auch
+ //ohne dem setTimeout
+ window.setTimeout(StudentPruefungTreeSelectID,10);
+ }
+};
// ***************** KEY Events ************************* //
// ****
@@ -1016,8 +1051,38 @@ function StudentAuswahl()
StudentLvGesamtNotenTreeDatasource.addXMLSinkObserver(StudentLvGesamtNotenTreeSinkObserver);
lvgesamtnotentree.builder.addListener(StudentLvGesamtNotenTreeListener);
- // KONTAKTE
+ // ***** KONTAKTE *****
document.getElementById('student-kontakt').setAttribute('src','kontakt.xul.php?person_id='+person_id);
+
+ // ***** Pruefungen *****
+ pruefungtree = document.getElementById('student-pruefung-tree');
+
+ url='rdf/pruefung.rdf.php?student_uid='+uid+"&"+gettimestamp();
+
+ //Alte DS entfernen
+ var oldDatasources = pruefungtree.database.GetDataSources();
+ while(oldDatasources.hasMoreElements())
+ {
+ pruefungtree.database.RemoveDataSource(oldDatasources.getNext());
+ }
+ //Refresh damit die entfernten DS auch wirklich entfernt werden
+ pruefungtree.builder.rebuild();
+
+ try
+ {
+ StudentPruefungTreeDatasource.removeXMLSinkObserver(StudentPruefungTreeSinkObserver);
+ pruefungtree.builder.removeListener(StudentPruefungTreeListener);
+ }
+ catch(e)
+ {}
+
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ StudentPruefungTreeDatasource = rdfService.GetDataSource(url);
+ StudentPruefungTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ StudentPruefungTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
+ pruefungtree.database.AddDataSource(StudentPruefungTreeDatasource);
+ StudentPruefungTreeDatasource.addXMLSinkObserver(StudentPruefungTreeSinkObserver);
+ pruefungtree.builder.addListener(StudentPruefungTreeListener);
}
// ****
@@ -2579,4 +2644,42 @@ function StudentNotenMove()
SetStatusBarText('Daten wurden gespeichert');
StudentNoteDetailDisableFields(true);
}
-}
\ No newline at end of file
+}
+
+// **************** PRUEFUNG ************** //
+
+// ****
+// * Selectiert den Pruefung Eintrag nachdem der Tree
+// * rebuildet wurde.
+// ****
+function StudentPruefungTreeSelectID()
+{
+ var tree=document.getElementById('student-pruefung-tree');
+ if(tree.view)
+ var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
+ else
+ return false;
+
+ //In der globalen Variable ist die zu selektierende Eintrag gespeichert
+ if(StudentPruefungSelectID!=null)
+ {
+ for(var i=0;i,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+
+header("Cache-Control: no-cache");
+header("Cache-Control: post-check=0, pre-check=0",false);
+header("Expires Mon, 26 Jul 1997 05:00:00 GMT");
+header("Pragma: no-cache");
+header("Content-type: application/vnd.mozilla.xul+xml");
+require_once('../../vilesci/config.inc.php');
+echo '';
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/include/pruefung.class.php b/include/pruefung.class.php
index 1dd579d61..c39dc8e6c 100644
--- a/include/pruefung.class.php
+++ b/include/pruefung.class.php
@@ -41,32 +41,37 @@ class pruefung
var $updatevon; // varchar(16)
var $ext_id; // bigint
-
-
+ var $lehrveranstaltung_bezeichnung;
+ var $note_bezeichnung;
+ var $pruefungstyp_beschreibung;
// **************************************************************
// * Konstruktor
// * @param conn Connection zur Datenbank
- // *
+ // * pruefung_id ID der zu ladenden Pruefung
+ // * unicode Wenn true, dann wird das Encoding auf UNICODE
+ // * gesetzt wenn false dann auf LATIN9
// **************************************************************
function pruefung($conn, $pruefung_id=null, $unicode=false)
{
$this->conn = $conn;
- if($unicode)
- $qry = "SET CLIENT_ENCODING TO 'UNICODE';";
- else
- $qry = "SET CLIENT_ENCODING TO 'LATIN9';";
-
- if(!pg_query($conn,$qry))
+ if($unicode!=null)
{
- $this->errormsg = "Encoding konnte nicht gesetzt werden";
- return false;
+ if($unicode)
+ $qry = "SET CLIENT_ENCODING TO 'UNICODE';";
+ else
+ $qry = "SET CLIENT_ENCODING TO 'LATIN9';";
+
+ if(!pg_query($conn,$qry))
+ {
+ $this->errormsg = "Encoding konnte nicht gesetzt werden";
+ return false;
+ }
}
-
- if(is_numeric($pruefung_id))
- $this->load($pruefung_id);
+ if($pruefung_id!=null)
+ $this->load($pruefung_id);
}
// *****************************************************
@@ -152,30 +157,43 @@ class pruefung
return true;
}
- /**
- * Loescht einen Studiengang
- * @param $stg_id ID des zu loeschenden Studienganges
- * @return true wenn ok, false im Fehlerfall
- */
- function delete($stg_id)
+ // ****************************************************
+ // * Loescht eine Pruefung
+ // * @param $preufung_id ID der zu loeschenden Pruefung
+ // * @return true wenn ok, false im Fehlerfall
+ // ****************************************************
+ function delete($pruefung_id)
{
- $this->errormsg = 'Noch nicht implementiert';
- return false;
+ if(!is_numeric($pruefung_id))
+ {
+ $this->errormsg = 'Pruefung_id ist ungueltig';
+ return false;
+ }
+
+ $qry = "DELETE FROM lehre.tbl_pruefung WHERE pruefung_id='$pruefung_id'";
+
+ if(pg_query($this->conn, $qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Loeschen der Pruefung';
+ return false;
+ }
}
+
function addslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
- /**
- * Prueft die Gueltigkeit der Variablen
- * @return true wenn ok, false im Fehlerfall
- */
+
+ // *******************************************
+ // * Prueft die Gueltigkeit der Variablen
+ // * @return true wenn ok, false im Fehlerfall
+ // *******************************************
function checkvars()
- {
- $this->anmerkung = str_replace("'",'´',$this->anmerkung);
- $this->insertvon = str_replace("'",'´',$this->insertvon);
- $this->updatevon = str_replace("'",'´',$this->updatevon);
-
+ {
//Laenge Pruefen
if(strlen($this->anmerkung)>256)
{
@@ -195,10 +213,11 @@ class pruefung
$this->errormsg = '';
return true;
}
- /**
- * Speichert den aktuellen Datensatz
- * @return true wenn ok, false im Fehlerfall
- */
+
+ // *******************************************
+ // * Speichert den aktuellen Datensatz
+ // * @return true wenn ok, false im Fehlerfall
+ // *******************************************
function save()
{
//Gueltigkeit der Variablen pruefen
@@ -209,16 +228,8 @@ class pruefung
if($this->new)
{
- //Pruefen ob pruefung_id gueltig ist
- /*
- if(!is_numeric($this->pruefung_id))
- {
- $this->errormsg = 'pruefung_id ungueltig! ('.$this->pruefung_id.'/'.$this->ext_id.')';
- return false;
- }
- */
//Neuen Datensatz anlegen
- $qry = 'INSERT INTO lehre.tbl_pruefung (lehreinheit_id, student_uid, mitarbeiter_uid, note, pruefungstyp_kurzbz, datum, anmerkung, insertamum, insertvon, updateamum, updatevon, ext_id) VALUES ('.
+ $qry = 'BEGIN;INSERT INTO lehre.tbl_pruefung (lehreinheit_id, student_uid, mitarbeiter_uid, note, pruefungstyp_kurzbz, datum, anmerkung, insertamum, insertvon, updateamum, updatevon, ext_id) VALUES ('.
$this->addslashes($this->lehreinheit_id).', '.
$this->addslashes($this->student_uid).', '.
$this->addslashes($this->mitarbeiter_uid).', '.
@@ -239,7 +250,7 @@ class pruefung
//Pruefen ob pruefung_id gueltig ist
if(!is_numeric($this->pruefung_id))
{
- $this->errormsg = 'pruefung_id ungueltig.';
+ $this->errormsg = 'pruefung_id ist ungueltig.';
return false;
}
@@ -261,6 +272,32 @@ class pruefung
//echo $qry;
if(pg_query($this->conn, $qry))
{
+ if($this->new)
+ {
+ //Sequence auslesen
+ $qry = "SELECT currval('lehre.tbl_pruefung_pruefung_id_seq') as id";
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $this->pruefung_id = $row->id;
+ pg_query($this->conn, 'COMMIT');
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Auslesen der Sequence';
+ pg_query($this->conn, 'ROLLBACK');
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Auslesen der Sequence';
+ pg_query($this->conn, 'ROLLBACK');
+ return false;
+ }
+ }
return true;
}
else
@@ -270,6 +307,53 @@ class pruefung
}
}
-
+ // *****************************************
+ // * Liefert alle Pruefungen eines Studenten
+ // * @param student_uid
+ // * @return true wenn ok, false wenn Fehler
+ // *****************************************
+ function getPruefungen($student_uid)
+ {
+ $qry = "SELECT tbl_pruefung.*, tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung,
+ tbl_note.bezeichnung as note_bezeichnung, tbl_pruefungstyp.beschreibung as typ_beschreibung
+ FROM lehre.tbl_pruefung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_note, lehre.tbl_pruefungstyp
+ WHERE student_uid='".addslashes($student_uid)."'
+ AND tbl_pruefung.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
+ AND tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
+ AND tbl_pruefung.note = tbl_note.note
+ AND tbl_pruefung.pruefungstyp_kurzbz=tbl_pruefungstyp.pruefungstyp_kurzbz
+ ORDER BY datum";
+ if($result = pg_query($this->conn, $qry))
+ {
+ while($row = pg_fetch_object($result))
+ {
+ $obj = new pruefung($this->conn, null, null);
+
+ $obj->pruefung_id = $row->pruefung_id;
+ $obj->lehreinheit_id = $row->lehreinheit_id;
+ $obj->student_uid = $row->student_uid;
+ $obj->mitarbeiter_uid = $row->mitarbeiter_uid;
+ $obj->note = $row->note;
+ $obj->note_bezeichnung = $row->note_bezeichnung;
+ $obj->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
+ $obj->pruefungstyp_beschreibung = $row->typ_beschreibung;
+ $obj->datum = $row->datum;
+ $obj->anmerkung = $row->anmerkung;
+ $obj->insertamum = $row->insertamum;
+ $obj->insertvon = $row->insertvon;
+ $obj->updateamum = $row->updateamum;
+ $obj->updatevon = $row->updatevon;
+ $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
}
?>
\ No newline at end of file
diff --git a/rdf/pruefung.rdf.php b/rdf/pruefung.rdf.php
new file mode 100644
index 000000000..1c67198fe
--- /dev/null
+++ b/rdf/pruefung.rdf.php
@@ -0,0 +1,103 @@
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+// header für no cache
+header("Cache-Control: no-cache");
+header("Cache-Control: post-check=0, pre-check=0",false);
+header("Expires Mon, 26 Jul 1997 05:00:00 GMT");
+header("Pragma: no-cache");
+// content type setzen
+header("Content-type: application/xhtml+xml");
+// xml
+echo '';
+// DAO
+require_once('../vilesci/config.inc.php');
+require_once('../include/pruefung.class.php');
+require_once('../include/datum.class.php');
+
+// Datenbank Verbindung
+if (!$conn = pg_pconnect(CONN_STRING))
+ die('Es konnte keine Verbindung zum Server aufgebaut werden!');
+
+if(isset($_GET['student_uid']))
+ $student_uid = $_GET['student_uid'];
+else
+ $student_uid = '';
+
+if(isset($_GET['pruefung_id']))
+ $pruefung_id = $_GET['pruefung_id'];
+else
+ $pruefung_id = '';
+
+$datum_obj = new datum();
+
+$pruefung = new pruefung($conn, null, true);
+
+$rdf_url='http://www.technikum-wien.at/pruefung';
+
+echo '
+
+
+
+';
+
+if($pruefung_id!='')
+{
+ $pruefung->load($pruefung_id);
+ draw_rdf($pruefung);
+}
+else
+{
+ $pruefung->getPruefungen($student_uid);
+ foreach ($pruefung->result as $row)
+ draw_rdf($row);
+}
+
+function draw_rdf($row)
+{
+ global $rdf_url, $datum_obj;
+
+ echo '
+
+
+ pruefung_id.']]>
+ lehreinheit_id.']]>
+ student_uid.']]>
+ mitarbeiter_uid.']]>
+ note.']]>
+ pruefungstyp_kurzbz.']]>
+ convertISODate($row->datum).']]>
+ datum.']]>
+ anmerkung.']]>
+ note_bezeichnung.']]>
+ lehrveranstaltung_bezeichnung.']]>
+ pruefungstyp_beschreibung.']]>
+
+
+
+ ';
+}
+?>
+
+
\ No newline at end of file