diff --git a/content/student/interessentenoverlay.xul.php b/content/student/interessentenoverlay.xul.php
index ca0b0d967..3a0f1c839 100644
--- a/content/student/interessentenoverlay.xul.php
+++ b/content/student/interessentenoverlay.xul.php
@@ -72,61 +72,61 @@ echo '
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#titelpre" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#anrede" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#vorname" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#vornamen" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#nachname" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#titelpost" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#geburtsdatum" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#svnr" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#ersazkennzeichen" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#geschlecht" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#status" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#studiengang_kz" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#prestudent_id" onclick="InteressentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/interessent/rdf#person_id" onclick="InteressentTreeSort()"/>
diff --git a/content/student/interessentoverlay.js.php b/content/student/interessentoverlay.js.php
index ae00972a3..9d0045f56 100644
--- a/content/student/interessentoverlay.js.php
+++ b/content/student/interessentoverlay.js.php
@@ -32,8 +32,9 @@ loadVariables($conn, $user);
var InteressentSelectId=null; //Interessent der nach dem Refresh markiert werden soll
var InteressentDokumentTreeNichtabgegebenDatasource=null; //Datasource fuer Dokumenten tree
var InteressentDokumentTreeAbgegebenDatasource=null; //Datasource fuer Dokumenten tree
-var InteressentDokumentTreeAbgegebenDoubleRefresh=false;
-var InteressentDokumentTreeNichtabgegebenDoubleRefresh=false;
+var InteressentDokumentTreeAbgegebenDoubleRefresh=false; // Wenn true, dann wird der rechte Dokumententree das naechste mal 2 mal hintereinander Refresht
+var InteressentDokumentTreeNichtabgegebenDoubleRefresh=false; // Wenn true, dann wird der linke Dokumententree das naechste mal 2 mal hintereinander Refresht
+var InteressentTreeLoadDataOnSelect=true; //Gibt an ob beim naechsten Select des Interessenten Trees die Daten geladen werden sollen
// ********** Observer und Listener ************* //
@@ -221,10 +222,21 @@ function InteressentTreeSelectInteressent()
}
// ****
-// * Interessent loeschen
+// * Beim Sortieren des Trees wird der markierte Eintrag gespeichert und nach dem sortieren
+// * wieder markiert.
// ****
-function InteressentDelete()
+function InteressentTreeSort()
{
+ var i;
+ var tree=document.getElementById('interessent-tree');
+ if(tree.currentIndex>=0)
+ i = tree.currentIndex;
+ else
+ i = 0;
+ col = tree.columns ? tree.columns["interessent-treecol-prestudent_id"] : "interessent-treecol-prestudent_id";
+ InteressentSelectId = tree.view.getCellText(i,col);
+ InteressentTreeLoadDataOnSelect=false;
+ window.setTimeout("InteressentTreeSelectInteressent()",10);
}
// ****
@@ -381,6 +393,11 @@ function InteressentImageUpload(evt)
// ****
function InteressentAuswahl()
{
+ if(!InteressentTreeLoadDataOnSelect)
+ {
+ InteressentTreeLoadDataOnSelect=true;
+ return true;
+ }
// Trick 17 (sonst gibt's ein Permission denied)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php
index 98e7e405b..c64da118c 100644
--- a/content/student/studentenoverlay.xul.php
+++ b/content/student/studentenoverlay.xul.php
@@ -58,6 +58,7 @@ echo '-->
+
@@ -80,59 +81,59 @@ echo '
+ sort="rdf:http://www.technikum-wien.at/student/rdf#uid" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#titelpre" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#vorname" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#vornamen" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#nachname" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#titelpost" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#geburtsdatum" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#semester" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#verband" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#gruppe" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#studiengang_kz" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#matrikelnummer" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#prestudent_id" onclick="StudentTreeSort()"/>
+ sort="rdf:http://www.technikum-wien.at/student/rdf#person_id" onclick="StudentTreeSort()"/>
diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php
index fae59d6bc..273382557 100644
--- a/content/student/studentoverlay.js.php
+++ b/content/student/studentoverlay.js.php
@@ -31,7 +31,8 @@ loadVariables($conn, $user);
// *********** Globale Variablen *****************//
var StudentSelectUid=null; //Student der nach dem Refresh markiert werden soll
var StudentKontoSelectBuchung=null; //Buchung die nach dem Refresh markiert werden soll
-var StudentKontoTreeDatasource;
+var StudentKontoTreeDatasource; //Datasource des KontoTrees
+var StudentTreeLoadDataOnSelect=true; //Gib an ob beim Selectieren im Tree die Daten geladen werden sollen
// ********** Observer und Listener ************* //
@@ -140,14 +141,6 @@ function StudentTreeRefresh()
{}
}
-// ****
-// * neuen Studenten anlegen
-// ****
-function StudentNeu()
-{
-
-}
-
// ****
// * Selectiert den Studenten nachdem der Tree
// * rebuildet wurde.
@@ -179,6 +172,24 @@ function StudentTreeSelectStudent()
document.getElementById('student-toolbar-label-anzahl').value='Anzahl: '+items;
}
+// ****
+// * Beim Sortieren des Trees wird der markierte Eintrag gespeichert und nach dem sortieren
+// * wieder markiert.
+// ****
+function StudentTreeSort()
+{
+ var i;
+ var tree=document.getElementById('student-tree');
+ if(tree.currentIndex>=0)
+ i = tree.currentIndex;
+ else
+ i = 0;
+ col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
+ StudentSelectUid = tree.view.getCellText(i,col);
+ StudentTreeLoadDataOnSelect=false;
+ window.setTimeout("StudentTreeSelectStudent()",10);
+}
+
// ****
// * Selectiert die Buchung nachdem der Tree
// * rebuildet wurde.
@@ -516,6 +527,11 @@ function StudentImageUpload()
// ****
function StudentAuswahl()
{
+ if(!StudentTreeLoadDataOnSelect)
+ {
+ StudentTreeLoadDataOnSelect=true;
+ return true;
+ }
// Trick 17 (sonst gibt's ein Permission denied)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
@@ -1272,4 +1288,30 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
StudentKontoTreeDatasource.Refresh(false);
return true;
}
+}
+
+// *********** Zeugnis *****************
+
+function StudentCreateZeugnis()
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ tree = document.getElementById('student-tree');
+
+ if (tree.currentIndex==-1) return;
+
+ //Ausgewaehlte UID holen
+ var col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
+ var uid=tree.view.getCellText(tree.currentIndex,col);
+
+ //Studiengang holen
+ var tree_lvb = document.getElementById('tree-verband');
+
+ col = tree_lvb.columns ? tree_lvb.columns["stg_kz"] : "stg_kz";
+ studiengang_kz=tree_lvb.view.getCellText(tree_lvb.currentIndex,col);
+
+ col = tree_lvb.columns ? tree_lvb.columns["sem"] : "sem";
+ semester=tree_lvb.view.getCellText(tree_lvb.currentIndex,col);
+
+ window.open('content/student/zeugnis.php?uid='+uid+'&studiengang_kz='+studiengang_kz+'&semester='+semester,'Zeugnis', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
}
\ No newline at end of file
diff --git a/content/student/zeugnis.php b/content/student/zeugnis.php
new file mode 100644
index 000000000..ee1a38b4b
--- /dev/null
+++ b/content/student/zeugnis.php
@@ -0,0 +1,106 @@
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+/* Erstellt eine Zeugnis im PDF Format
+ *
+ * Erstellt ein XML File Transformiert dieses mit
+ * Hilfe der XSL-FO Vorlage aus der DB und generiert
+ * daraus ein PDF (xslfo2pdf)
+ */
+require_once('../../vilesci/config.inc.php');
+require_once('../../include/functions.inc.php');
+require_once('../../include/benutzerberechtigung.class.php');
+require_once('../../include/xslfo2pdf/xslfo2pdf.php');
+require_once('../../include/lehrveranstaltung.class.php');
+require_once('../../include/vorlage.class.php');
+
+// Datenbank Verbindung
+if (!$conn = @pg_pconnect(CONN_STRING))
+ $error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
+
+$user = get_uid();
+loadVariables($conn, $user);
+//Parameter holen
+if(isset($_GET['uid']))
+ $uid = $_GET['uid'];
+else
+ $uid = null;
+
+if(isset($_GET['studiengang_kz']))
+ $studiengang_kz = $_GET['studiengang_kz'];
+else
+ die('Studiengang_kz muss uebergeben werden');
+
+if(isset($_GET['semester']))
+ $semester = $_GET['semester'];
+else
+ $semester = '';
+
+//Berechtigung pruefen
+$rechte = new benutzerberechtigung($conn);
+$rechte->getBerechtigungen($user);
+
+if(!$rechte->isBerechtigt('admin',$studiengang_kz))
+ die("Keine Berechtigung");
+
+// GENERATE XML
+$lehrveranstaltung = new lehrveranstaltung($conn);
+$xml = $lehrveranstaltung->generateZeugnisXML($uid);
+
+// END GENERATE XML
+
+// Load the XML source
+$xml_doc = new DOMDocument;
+if(!$xml_doc->loadXML($xml))
+ die('unable to load xml');
+
+//XSL aus der DB holen
+
+$vorlage = new vorlage($conn);
+$vorlage->getAktuelleVorlage($studiengang_kz, 'Zeugnis');
+
+// Load the XSL source
+$xsl = new DOMDocument;
+//if(!$xsl->load('../../../../xsl/collection.xsl'))
+if(!$xsl->loadXML($vorlage->text))
+ die('unable to load xsl');
+//echo $vorlage->text;
+
+// Configure the transformer
+$proc = new XSLTProcessor;
+if(!$proc->importStyleSheet($xsl)) // attach the xsl rules
+ echo "Failed to import Style";
+
+$buffer = $proc->transformToXml($xml_doc);
+//in $buffer steht nun das xsl-fo file mit den daten
+
+$buffer = ''.substr($buffer, strpos($buffer,"\n"),strlen($buffer));
+$buffer = html_entity_decode($buffer);
+//echo "buffer: $buffer";
+
+//Pdf erstellen
+$fo2pdf = new XslFo2Pdf();
+if (!$fo2pdf->generatePdf($buffer, 'filename', "D"))
+{
+ echo('Failed to generate PDF');
+}
+
+?>
\ No newline at end of file
diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php
index f96daf794..b051199ef 100644
--- a/include/lehrveranstaltung.class.php
+++ b/include/lehrveranstaltung.class.php
@@ -500,5 +500,26 @@ class lehrveranstaltung
return false;
}
}
+
+ // *****************************************
+ // * Erstellt das XML File fuers Zeugnis
+ // * @param $uid
+ // *****************************************
+ function generateZeugnisXML($uid)
+ {
+ $qry = "SELECT * FROM lehre.tbl_zeugnisnote JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) WHERE student_uid='".addslashes($uid)."' ORDER BY bezeichnung";
+ $xml = '';
+ if($result = pg_query($this->conn, $qry))
+ {
+ while($row = pg_fetch_object($result))
+ {
+ $xml.='
+ '.$row->titel.'
+ ';
+ }
+ }
+ $xml.='';
+ return $xml;
+ }
}
?>
\ No newline at end of file
diff --git a/include/vorlage.class.php b/include/vorlage.class.php
new file mode 100644
index 000000000..9c8053897
--- /dev/null
+++ b/include/vorlage.class.php
@@ -0,0 +1,116 @@
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+
+class vorlage
+{
+ // ErgebnisArray
+ var $result=array();
+ var $num_rows=0;
+ var $errormsg;
+ var $new;
+
+ //Tabellenspalten
+ var $vorlage_kurzbz;
+ var $studiengang_kz;
+ var $version;
+ var $text;
+
+ // *************************************************************************
+ // * Konstruktor - Uebergibt die Connection
+ // * @param $conn Datenbank-Connection
+ // *************************************************************************
+ function vorlage($conn)
+ {
+ $this->conn = $conn;
+ }
+
+ // ***********************************************************
+ // * Laedt Vorschlag mit der uebergebenen ID
+ // * @param $vorlage_kurzbz, studiengang_kz, version
+ // ***********************************************************
+ function load($vorlage_kurzbz, $studiengang_kz, $version)
+ {
+ return false;
+ }
+
+ // ************************************************
+ // * wenn $var '' ist wird NULL zurueckgegeben
+ // * wenn $var !='' ist werden Datenbankkritische
+ // * Zeichen mit Backslash versehen und das Ergbnis
+ // * unter Hochkomma gesetzt.
+ // ************************************************
+ function addslashes($var)
+ {
+ return ($var!=''?"'".addslashes($var)."'":'null');
+ }
+
+ // *******************************************
+ // * Prueft die Variablen vor dem Speichern
+ // * auf Gueltigkeit.
+ // * @return true wenn ok, false im Fehlerfall
+ // *******************************************
+ function validate()
+ {
+ return true;
+ }
+
+ // ******************************************************************
+ // * Speichert die Benutzerdaten in die Datenbank
+ // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt
+ // * ansonsten der Datensatz mit $uid upgedated
+ // * @return true wenn erfolgreich, false im Fehlerfall
+ // ******************************************************************
+ function save()
+ {
+ return false;
+ }
+
+ function getAktuelleVorlage($studiengang_kz, $vorlage_kurzbz)
+ {
+ $qry = "SELECT * FROM public.tbl_vorlagestudiengang WHERE
+ (studiengang_kz=0 OR studiengang_kz='".addslashes($studiengang_kz)."') AND
+ vorlage_kurzbz='".addslashes($vorlage_kurzbz)."' ORDER BY studiengang_kz DESC, version DESC LIMIT 1";
+
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $this->vorlage_kurzbz = $row->vorlage_kurzbz;
+ $this->studiengang_kz = $row->studiengang_kz;
+ $this->version = $row->version;
+ $this->text = $row->text;
+ }
+ else
+ {
+ $this->errormsg = 'Keine Vorlage gefunden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Vorlage';
+ return false;
+ }
+ }
+
+}
+?>