This commit is contained in:
Christian Paminger
2006-11-27 08:46:23 +00:00
parent 69e7513333
commit 0f0296a02a
570 changed files with 69005 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
AuthName "Technikum-Wien"
AuthType Basic
AuthLDAPURL ldap://pdc1.technikum-wien.at/ou=People,dc=technikum-wien,dc=at?uid?one?objectClass=posixAccount
require group cn=fhadmin,ou=Group,dc=technikum-wien,dc=at
require user trob
require user wahl
require user drabek
require user elgner
require user schaaf
require user kofler
require user esberger
require user kollmitz
require user schmoe
require user trattner
require user naglr
require user patai
require user tw01e061
require user docsek
require user teschl
require user oesi
require user adams
require user weisss
require user moserp
require user moehring
require user skritek
require user kroesl
require user ffe
require user kindlm
require user schmuderm
require user sagmeister
require user masik
require user kubicka
require user lehner
require user schwarzl
require user horauer
require user me
+85
View File
@@ -0,0 +1,85 @@
<?php
/**
* FAS-Synchronisation
*/
include ('../../vilesci/config.inc.php');
$adress='fas_sync@technikum-wien.at, baier@technikum-wien.at';
mail($adress,"FAS Synchro mit VILESCI","BEGIN OF SYNCHRONISATION","From: vilesci@technikum-wien.at");
$conn=pg_connect(CONN_STRING);
$conn_fas=pg_connect(CONN_STRING_FAS);
// Anzahl der Studenten in VILESCI
$sql_query="SELECT count(*) AS anz FROM tbl_student";
//echo $sql_query."<br>";
$result=pg_exec($conn, $sql_query);
$vilesci_anz_std=pg_fetch_result($result,0,'anz');
// Start Studenten Synchro
$sql_query="SELECT DISTINCT uid FROM fas_view_vilesci_abbrecher WHERE uid IS NOT NULL AND uid NOT LIKE '' ORDER BY uid"; // LIMIT 5";
//echo $sql_query."<br>";
flush();
$result=pg_exec($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$text="Dies ist eine automatische eMail!\r\r";
$text.="Es wurde eine Synchronisation mit FAS durchgeführt.\r";
$text.="Anzahl der Ex-Studenten vom FAS-Import: $num_rows \r";
$text.="Anzahl der Studenten in VILESCI: $vilesci_anz_std \r\r";
echo $text.'<BR>';
flush();
$update_error=0;
$anz_update=0;
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($result,$i);
$uid=str_replace(' ','',$row->uid);
// SQL vorbereiten (jeden Studenten vom FAS im vilesci suchen
$sql_query="SELECT uid,titel,vornamen,nachname, semester FROM tbl_person NATURAL JOIN tbl_student WHERE uid LIKE '$uid'";
//echo $sql_query;
$res_std=pg_query($conn, $sql_query);
$num_rows_std=pg_numrows($res_std);
// neue Studenten
if ($num_rows_std>=1)
{
$row_std=pg_fetch_object($res_std);
if ($row_std->semester!=10)
{
$text.="Der Student $row_std->vornamen $row_std->nachname ($row_std->uid) wird verschoben.\r";
$sql_query="UPDATE tbl_student SET semester=10, updateamum=now(), updatevon='auto' WHERE uid LIKE '$uid'";
echo $sql_query.'<BR>';
if(!$res_update=pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
else
$anz_update++;
}
}
}
$text.="$update_error Fehler bei Student-Update!\r";
$text.="$anz_update Studenten wurden ins 10te Semester verschoben.\r";
$text.="\rEND OF SYNCHRONISATION\r";
if (mail($adress,"FAS Synchro mit VILESCI (Ex-Studenten)",$text,"From: vilesci@technikum-wien.at"))
$sendmail=true;
else
$sendmail=false;
?>
<html>
<head>
<title>FAS-Synchro mit VILESCI (Ex-Studenten)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK rel="stylesheet" href="../../include/styles.css" type="text/css">
</head>
<body>
<?php
if ($sendmail)
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
echo $text;
?>
</body>
</html>
+202
View File
@@ -0,0 +1,202 @@
<?php
include ('../../vilesci/config.inc.php');
function clean_string($string)
{
$trans = array("ä" => "ae",
"ö" => "oe",
"ü" => "ue",
"Ä" => "ae",
"Ö" => "oe",
"Ü" => "ue",
"á" => "a",
"à" => "a",
"é" => "e",
"è" => "e",
"ó" => "o",
"ò" => "o",
"í" => "i",
"ì" => "i",
"ú" => "u",
"ù" => "u",
"ß" => "ss",
"´" => "",
"`" => "",
);
$string = strtr($string, $trans);
return $string;
}
$adress='fas_sync@technikum-wien.at';
//mail($adress,"FAS Synchro mit VILESCI (Lektoren)","BEGIN OF SYNCHRONISATION","From: vilesci@technikum-wien.at");
$conn=pg_connect(CONN_STRING);
$conn_fas=pg_connect(CONN_STRING_FAS);
// Anzahl der Mitarbeiter in VILESCI
$sql_query="SELECT count(*) AS anz FROM tbl_mitarbeiter WHERE uid NOT LIKE '\\\\_%'";
//echo $sql_query."<br>";
$result=pg_exec($conn, $sql_query);
$vil_anz_mta=pg_fetch_result($result,0,'anz');
// Start Studenten Synchro
$sql_query="SELECT * FROM vw_vilesci_mitarbeiter_aktiv WHERE uid IS NOT NULL AND uid NOT LIKE ''"; // LIMIT 5";
//echo $sql_query."<br>";
$result=pg_exec($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$text="Dies ist eine automatische eMail!\r\r";
$text.="Es wurde eine Synchronisation mit FAS durchgeführt.\r";
$text.="Anzahl der Mitarbeiter vom FAS-Import: $num_rows \r";
$text.="Anzahl der Mitarbeiter in der VILESCI: $vil_anz_mta \r\r";
$plausi_error=0;
$update_error=0;
$insert_error=0;
$double_error=0;
$anz_update=0;
$anz_insert=0;
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($result,$i);
$row->gebort=substr($row->gebort,0,30);
//$row->titel=substr($row->titel,0,15);
$uid=str_replace(' ','',$row->uid);
// Plausibilitaetscheck
if (strlen($row->titel)>64)
$text.="Der Mitarbeiter $row->titel $row->vornamen $row->nachname ($row->uid) hat einen zu langen Titel.\r";
if (strlen($row->titel)<=64)
{
// SQL vorbereiten (jeden Mitarbeiter vom FAS in VILESCI suchen
$sql_query="SELECT uid,titel,vornamen,nachname,gebdatum,gebort,";
$sql_query.="personalnummer";
$sql_query.=" FROM tbl_person NATURAL JOIN tbl_mitarbeiter WHERE uid LIKE '$uid'";
//echo $sql_query;
$res_std=pg_exec($conn, $sql_query);
$num_rows_std=pg_numrows($res_std);
// neue Lektoren
if ($num_rows_std==0)
{
$text.="Der Lektor $row->vornamen $row->nachname ($row->uid) wird neu angelegt.\r";
// person
$qry="INSERT INTO tbl_person(uid,titel,vornamen, nachname, gebdatum, gebort) ".
"VALUES('$uid','$row->titel','$row->vornamen','$row->nachname','$row->gebdatum','$row->gebort')";
echo $qry.'<BR>';
if(!$res_insert=pg_exec($conn, $qry))
{
$text.=$qry;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
}
//Alias erstellen
$vn = split('[- .,]',strtolower($row->vornamen));
$vn = clean_string($vn[0]);
$nn = split('[- .,]',strtolower($row->nachname));
$nn = clean_string($nn[0]);
$alias = $vn.".".$nn;
$qry = "UPDATE tbl_person set alias='$alias' where uid='$uid'";
if(!$res_insert=pg_exec($conn, $qry))
{
$text.=$qry;
$text.="\rFehler: Alias existiert bereits: $alias";
$insert_error++;
}
// lektor
$sql_query="INSERT INTO tbl_mitarbeiter (uid,personalnummer,kurzbz,lektor,telefonklappe,fixangestellt) ".
"VALUES('$row->uid','$row->persnr','$row->kurzbez',true,'$row->teltw',".($row->fixangestellt?'true':'false').")";
echo $sql_query.'<BR>';
if(!$res_insert=pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
}
else
$anz_insert++;
}
// bestehende Lektoren
elseif ($num_rows_std==1)
{
$update=0;
$row_std=pg_fetch_object($res_std,0);
if ($row->gruppe==NULL)
$row->gruppe=1;
if ($row->titel!=$row_std->titel)
$update=1;
elseif ($row->vornamen!=$row_std->vornamen)
$update=2;
elseif ($row->nachname!=$row_std->nachname)
$update=3;
elseif ($row->gebdatum!=$row_std->gebdatum)
$update=4;
elseif ($row->gebort!=$row_std->gebort)
$update=5;
elseif ($row->persnr!=$row_std->personalnummer)
$update=6;
if ($update)
{
$text.="Der Lektor $row->vornamen $row->nachname ($row->uid) [$update] wird upgedatet.\r";
// person
$sql_query="UPDATE tbl_person SET titel='$row->titel', vornamen='$row->vornamen', ".
" nachname='$row->nachname', gebdatum='$row->gebdatum', gebort='$row->gebort'".
" WHERE uid LIKE '$uid'";
echo $sql_query.'<BR>';
if(!$res_update=pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
$sql_query="UPDATE tbl_mitarbeiter SET personalnummer='$row->persnr',fixangestellt=".($row->fixangestellt?'TRUE':'FALSE');
$sql_query.=" WHERE uid LIKE '$uid'";
echo $sql_query.'<BR>'; // kurzbz='$row->kurzbez',
if(!$res_update=pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
else
$anz_update++;
}
}
// Lektor kommt mehrmals vor ->Warnung
elseif ($num_rows_std>1)
{
$text.="\r!!! Der Lektor $row->vornamen $row->nachname ($row->uid) kommt mehrfach vor!\r";
$double_error++;
}
}
else
$plausi_error++;
}
$text.="\r$plausi_error Fehler beim Plausibilitaetscheck!\r";
$text.="$update_error Fehler bei Lektor-Update!\r";
$text.="$insert_error Fehler bei Lektor-Insert!\r";
$text.="$double_error Lektoren kommen in VileSci doppelt vor!\r\r";
$text.="$anz_update Lektoren wurden upgedatet.\r";
$text.="$anz_insert Lektoren wurden neu angelegt.\r\r";
$text.="\rEND OF SYNCHRONISATION\r";
if (mail($adress,"FAS Synchro mit VileSci (Lektoren)",$text,"From: vilesci@technikum-wien.at"))
$sendmail=true;
else
$sendmail=false;
?>
<html>
<head>
<title>FAS-Synchro mit VileSci (Lektoren)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if ($sendmail)
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
echo $text;
?>
</body>
</html>
+56
View File
@@ -0,0 +1,56 @@
<?php
/***************************************************************
Script zur Feststellung, welche Daten im FAS nicht durchkommen.
***************************************************************/
$adress='pam@technikum-wien.at';
include('../../vilesci/config.inc.php');
$conn=pg_connect($conn_string);
$conn_fas=pg_connect($conn_string_fas);
$headers ="MIME-Version: 1.0\r\n";
$headers.="Content-type: text/html; charset=iso-8859-1\r\n";
$headers.="From: vilesci@technikum-wien.at";
$bgcolor[0]="#CCCCCC";
$bgcolor[1]="#DDDDDD";
$text='<html><head><title>FAS-Synchro mit TEMPUS fehlende Lektoren</title></head>';
$text.='<body>';
// Start Check
//Daten aus vilesci holen
$sql_query="SELECT tbl_person.*,tbl_mitarbeiter.personalnummer,tbl_mitarbeiter.kurzbz,tbl_mitarbeiter.fixangestellt FROM tbl_person join tbl_mitarbeiter using(uid) WHERE uid NOT LIKE '\\\\_%' ORDER BY nachname";
//echo $sql_query."<br>";
$result=pg_exec($conn, $sql_query);
$num_rows=pg_numrows($result);
// Daten aus dem FAS
$sql_query="SELECT * FROM fas_view_lektoren_vilesci";
//echo $sql_query."<br>";
$result_fas=pg_exec($conn_fas, $sql_query);
$fehlend=$num_rows-$num_rows_fas;
$num_rows_fas=pg_numrows($result_fas);
$text.="Dies ist eine automatische eMail!<BR><BR>";
$text.="Es wurde eine Ueberpruefung der Daten in der FAS-View fuer Lektoren durchgeführt.<BR>";
$text.='Anzahl der fehlenden Daten: $fehlend <BR><BR>';
$text.="Folgende Lektoren scheinen in der FAS-View nicht auf";
$text.='<TABLE border="0"><TR bgcolor="#D3DCE3"><TH>uid</TH><TH>Titel</TH><TH>Vornamen</TH><TH>Nachname</TH></TR>';
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($result,$i);
$sql_query="SELECT uid FROM fas_view_lektoren_vilesci WHERE uid LIKE '$row->uid'";
$result_fas=pg_exec($conn_fas, $sql_query);
if (pg_numrows($result_fas)!=1)
$text.='<TR bgcolor="'.$bgcolor[$i%2].'"'."><TD>$row->uid</TD><TD>$row->titel</TD><TD>$row->vornamen</TD><TD>$row->nachname</TD></TR>";
}
$text.='</TABLE></BODY></HTML>';
echo $text;
if (mail($adress,"FAS Synchro mit TEMPUS fehlende Lektoren",$text,$headers))
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
?>
+594
View File
@@ -0,0 +1,594 @@
<?php
include('../../vilesci/config.inc.php');
include('../../include/functions.inc.php');
include('../../include/lehrstunde.class.php');
$conn=pg_connect(CONN_STRING);
$conn_fas=pg_connect(CONN_STRING_FAS);
$adress='fas_sync@technikum-wien.at';
//$adress='pam@technikum-wien.at';
$adress_stpl='stpl@technikum-wien.at';
$adress_fas='pam@technikum-wien.at';
// error log für jeden Studiengang
$error_log=array();
$missing_lehrfaecher=array();
$missing_einheit=array();
$missing_raumtyp=array();
$missing_lehrform=array();
function printLVA($row)
{
return 'lvnr='.$row->lvnr.' '.$row->bezeichnung;
}
function getSemesterWhereClause()
{
global $conn;
$qry="select * from tbl_studiensemester where ende>now()";
$result=pg_exec($conn, $qry);
$where='';
while ($row=pg_fetch_object($result))
{
$where.= ((strlen($where)>0)?' or ':'')."studiensemester_kurzbz='".$row->studiensemester_kurzbz."' ";
}
if (strlen($where)>0) $where=" ($where) ";
return $where;
}
function validate($row)
{
global $error_log,$einheit,$missing_einheit,$missing_raumtyp,$missing_lehrform,$raumtyp,$lehrform;
$valid=true;
if ($row->raumtyp==null)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Raumtyp fehlt';
$valid=false;
}
if ($row->semester>8 || $row->semester<1)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Semester bei '.$row->semester.$row->verband.$row->gruppe.' größer als 8';
$valid=false;
}
if (!($row->verband==null || $row->verband=='' || $row->verband=='A' || $row->verband=='B' || $row->verband=='C' || $row->verband=='D'))
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Verband bei '.$row->semester.$row->verband.$row->gruppe.' außerhalb des gültigen Bereichs (A bis D)';
//print_r($row);
$valid=false;
}
if (!($row->gruppe==null || $row->gruppe=='' || $row->gruppe=='1' || $row->gruppe=='2' || $row->gruppe=='3' || $row->gruppe=='4'))
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Gruppe bei '.$row->semester.$row->verband.$row->gruppe.' außerhalb des gültigen Bereichs (1 bis 4)';
$valid=false;
}
if (!$row->stundenblockung>0) {
$error_log[$row->studiengang_kz][]=printLVA($row).': Stundenblockung ist nicht größer 0';
$valid=false;
}
if (!$row->semesterstunden>0) {
$error_log[$row->studiengang_kz][]=printLVA($row).': Semesterstunden sind nicht größer 0';
$valid=false;
}
if (!$row->wochenrythmus>0)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Wochenrythmus ist nicht größer 0';
$valid=false;
}
if ($row->start_kw<=0 || $row->start_kw>53)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Start-KW außerhalb des gültigen Bereichs (1 bis 53)';
$valid=false;
}
if (strlen($row->einheit_kurzbz)>0 && !isset($einheit[$row->einheit_kurzbz]) && !isset($missing_einheit[$row->einheit_kurzbz]))
{
$missing_einheit[$row->einheit_kurzbz]=1;
}
if (strlen($row->raumtyp)>0 && !isset($raumtyp[$row->raumtyp]) && !isset($missing_raumtyp[$row->raumtyp]))
{
$missing_raumtyp[$row->raumtyp]=1;
$valid=false;
}
if (strlen($row->raumtypalternativ)>0 && !isset($raumtyp[$row->raumtypalternativ]) && !isset($missing_raumtyp[$row->raumtypalternativ])) {
$missing_raumtyp[$row->raumtypalternativ]=1;
}
if (!ereg("^[A-Za-z]{1,5}[0-9]{0,1}$",$row->raumtyp))
{
$error_log[$row->studiengang_kz][]=$row->raumtyp.': Raumtyp bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
if (!ereg("^[A-Za-z]{1,5}[0-9]{0,1}$",$row->raumtypalternativ))
{
$error_log[$row->studiengang_kz][]=$row->raumtypalternativ.': Raumtypalternative bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
if (strlen($row->lehrform)>0 && !isset($lehrform[$row->lehrform]) && !isset($missing_lehrform[$row->lehrform])) {
$missing_lehrform[$row->lehrform]=1;
}
if (!ereg("^[A-Z]{1,5}[0-9]{0,1}$",$row->lehrfach_kurzbz))
{
$error_log[$row->studiengang_kz][]=$row->lehrfach_kurzbz.'-'.$row->lehrform.'/'.$row->studiengang_kz.'-'.$row->semester.': Lehrfach-Kuerzel bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
if (!ereg("^[A-Z]{1,3}$",$row->lehrform))
{
$error_log[$row->studiengang_kz][]=$row->lehrfach_kurzbz.'-'.$row->lehrform.'/'.$row->studiengang_kz.'-'.$row->semester.': Lehrform bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
return $valid;
}
/**
* FAS-Lehrfach auf interne Lehrfach-Nr übersetzen
*/
function getLehrfachNr($kurzbz,$studiengang_kz,$semester,$lehrfach_bezeichnung, $fachbereich_id, $ects, $conn)
{
global $lehrfach;
global $text;
if (isset($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr']))
{
//echo 'Nummer:'.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'].'Bez: '.$lehrfach_bezeichnung.'<BR>';
// Nebenbei die Lehrfachbezeichnung kontrollieren
if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung']!=$lehrfach_bezeichnung)
{
// Update
$qry="UPDATE tbl_lehrfach SET bezeichnung='$lehrfach_bezeichnung' WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
if (!$result=pg_query($conn, $qry))
echo $qry.' fehlgeschlagen!<BR>';
else
{
echo 'Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung'].' auf '.$lehrfach_bezeichnung.' geaendert!<BR>';
$text.='Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung'].' auf '.$lehrfach_bezeichnung.' geaendert!\n';
$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung']=$lehrfach_bezeichnung;
}
}
// Nebenbei die ECTS Punkte kontrollieren
if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects']!=$ects)
{
if ($ects!='') //ereg("[0-9]{1,4}[\.|,][0-9]{0,2}$",$ects)
{
// Update
$qry="UPDATE tbl_lehrfach SET ects='$ects' WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
//echo $qry.'<BR>';
if (!$result=pg_query($conn, $qry))
echo $qry.' fehlgeschlagen!<BR>';
else
{
echo ' Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurden die ECTS-Punkte von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects'].' auf '.$ects.' geaendert!<BR>';
$text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurden die ECTS-Punkte von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects'].' auf '.$ects.' geaendert!\n';
$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects']=$ects;
}
}
else
{
echo 'Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' sind die ECTS-Punkte von '.$ects.' nicht Plausibel!<BR>';
$text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' sind die ECTS-Punkte von '.$ects.' nicht Plausibel!\n';
}
}
// Nebenbei die FachbereichID kontrollieren
if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id']!=$fachbereich_id)
{
// Update
$qry="UPDATE tbl_lehrfach SET fachbereich_id=$fachbereich_id WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
if (!$result=@pg_query($conn, $qry))
echo $qry.' fehlgeschlagen!<BR>';
else
{
echo 'Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde die FachbereichID von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id'].' auf '.$fachbereich_id.' geaendert!<BR>';
$text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde die FachbereichID von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id'].' auf '.$fachbereich_id.' geaendert!\n';
$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id']=$fachbereich_id;
}
}
return $lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
}
//echo 'missing getLehrfachNr: '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.'<br>';
return -1;
}
/*************************
* FAS-Synchronisation
*/
// E-Mails der Studiengänge
$stg_mail=array();
$qry="select studiengang_kz,email,kurzbz from tbl_studiengang";
$result=pg_exec($conn, $qry);
while ($row=pg_fetch_object($result))
{
$stg_mail[$row->studiengang_kz] = $row->email;
$stg_kurzbz[$row->studiengang_kz]=$row->kurzbz;
}
// Anzahl der LVA in VileSci
$sql_query="SELECT count(*) AS anz FROM tbl_lehrveranstaltung";
//echo $sql_query."<br>";
$result=pg_exec($conn, $sql_query);
$vil_anz_lva=pg_fetch_result($result,0,'anz');
// Lehrfächer holen und in Array speichern (Key ist kurzbz + '/' + lehform_kurzbz)
$sql_query="SELECT lehrfach_nr,kurzbz,studiengang_kz,semester, bezeichnung, fachbereich_id, ects FROM tbl_lehrfach";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
{
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['lehrfach_nr'] = $row->lehrfach_nr;
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['fachbereich_id'] = $row->fachbereich_id;
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['lehrfach_bezeichnung'] = $row->bezeichnung;
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['ects'] = $row->ects;
}
//print_r($lehrfach);
// Einheiten holen
$sql_query="SELECT einheit_kurzbz,bezeichnung FROM tbl_einheit";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
$einheit[$row->einheit_kurzbz] = $row->bezeichnung;
// Raumtypen holen
$sql_query="SELECT raumtyp_kurzbz,beschreibung FROM tbl_raumtyp";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
$raumtyp[$row->raumtyp_kurzbz] = $row->beschreibung;
// Lehformen holen
$sql_query="SELECT lehrform_kurzbz,bezeichnung FROM tbl_lehrform";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
$lehrform[$row->lehrform_kurzbz] = $row->bezeichnung;
//print_r($lehrfach);
echo 'FAS-Datenbank wird abgefragt!<BR><i>';
flush();
// Start Lehrveranstaltungen Synchro
$sql_query="SELECT DISTINCT fas_id,trim(lvnr) AS lvnr,trim(unr)::int8 AS unr,einheit_kurzbz,lektor,trim(upper(lehrfach_kurzbz)) AS lehrfach_kurzbz,
trim(upper(lehrform)) AS lehrform, lehrfach_bezeichnung,
studiengang_kz,fachbereich_id,semester,verband,gruppe,raumtyp,raumtypalternativ,
round(semesterstunden) AS semesterstunden,stundenblockung,wochenrythmus,start_kw,anmerkung,studiensemester_kurzbz, ects
FROM fas_view_alle_lehreinheiten_vilesci ".
"where ".getSemesterWhereClause();
//echo $sql_query."</i><br>";
$result=pg_exec($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$text="Dies ist eine automatische eMail!\r\r";
$text.="Es wurde eine Synchronisation mit FAS durchgeführt.\r";
$text.="Anzahl der LVA vom FAS-Import: $num_rows \r";
$text.="Anzahl der LVA in der VileSci: $vil_anz_lva \r\r";
$plausi_error=0;
$update_error=0;
$insert_error=0;
$double_error=0;
$anz_update=0;
$anz_insert=0;
echo $num_rows.' Datensaetze<BR>';
for ($i=0;$i<$num_rows;$i++)
{
if ($i%100==0)
{
echo '-';
flush();
}
$row=pg_fetch_object($result,$i);
// Kennzahl der Studiengangs bei ehemaligen bTec auf TW aendern.
if ($row->studiengang_kz==203)
$row->studiengang_kz=0;
// Lehrfach-Nr übersetzen (-1 wenn nicht vorhanden)
$row->lehrfach_nr=getLehrfachNr($row->lehrfach_kurzbz,$row->studiengang_kz,$row->semester, $row->lehrfach_bezeichnung, $row->fachbereich_id, $row->ects, $conn);
// Einheit vollstaendiger Name
if (count($row->einheit_kurzbz)>0)
$row->einheit_kurzbz=$stg_kurzbz[$row->studiengang_kz].'-'.$row->einheit_kurzbz;
// Plausibilitaetscheck
//if ($row->gruppe==NULL)
// $row->gruppe='1';
//
if (!$row->stundenblockung>0)
$row->stundenblockung=1;
if (!$row->start_kw>0)
$row->start_kw=1;
if (!$row->wochenrythmus>0)
$row->wochenrythmus=1;
if ($row->lehrfach_nr==-1)
{
//$error_log[$row->studiengang_kz][]=printLVA($row).': Lehrfach (Kurzbz='".$row->lehrfach_kurzbz."',Lehrform".$row->lehrform) existiert noch nicht. Stundenplanabteilung wurde benachrichtigt.';
if (!isset($missing_lehrfaecher[$row->lehrfach_kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester])) $missing_lehrfaecher[$row->lehrfach_kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]=1;
$valid=false;
}
if (validate($row) && $row->lehrfach_nr>-1)
{
// SQL vorbereiten (jede LVA vom FAS im VileSci suchen)
$sql_query="SELECT * from tbl_lehrveranstaltung where fas_id=".$row->fas_id;
//echo $sql_query;
$res_lva=pg_query($conn, $sql_query);
$num_rows_lva=pg_numrows($res_lva);
// neue LVA
if ($num_rows_lva==0)
{
$text.="Die LVA fas-id=$row->fas_id lvnr=$row->lvnr unr=$row->unr wird neu angelegt.\r";
$sql_query="INSERT INTO tbl_lehrveranstaltung (lvnr,unr,einheit_kurzbz,lektor,lehrfach_nr,lehrform_kurzbz,";
$sql_query.="studiengang_kz,fachbereich_id,semester,verband,gruppe,raumtyp,".
"raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,studiensemester_kurzbz,fas_id,anmerkung) ".
"VALUES('$row->lvnr'".
",$row->unr,".
(strlen($row->einheit_kurzbz)>0?"'".$row->einheit_kurzbz."'":'NULL').",".
"'$row->lektor',".
"'$row->lehrfach_nr',".
"'$row->lehrform',".
"'$row->studiengang_kz',".
"$row->fachbereich_id,".
"$row->semester,";
if ($row->verband==null)
$sql_query.='NULL,';
else
$sql_query.="'$row->verband',";
if ($row->gruppe==null)
$sql_query.='NULL,';
else
$sql_query.="'$row->gruppe',";
$sql_query.="'$row->raumtyp',".
"'$row->raumtypalternativ',".
"$row->semesterstunden,".
"$row->stundenblockung,".
"$row->wochenrythmus,".
"$row->start_kw,".
"'$row->studiensemester_kurzbz'," .
"$row->fas_id,'$row->anmerkung')";
//echo $sql_query.'<BR>';
if(!$res_insert=@pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\nFehler: ".pg_errormessage($conn)."\n";
$insert_error++;
}
else
$anz_insert++;
}
// bestehende LVA
elseif ($num_rows_lva==1)
{
$update_sql='';
$row_lva=pg_fetch_object($res_lva,0);
//var_dump($row_lva);
//if ($row->gruppe==NULL)
// $row->gruppe=1;
//echo '-'.$row->lvnr.'-'.$row_lva->lvnr.'-<BR>';
if ($row->lvnr!=$row_lva->lvnr)
$update_sql.="lvnr='".$row->lvnr."'";
elseif ($row->unr!=$row_lva->unr)
$update_sql.="unr=".$row->unr;
elseif ($row->einheit_kurzbz!=$row_lva->einheit_kurzbz)
$update_sql.=(strlen($update_sql)>0?',':'').'einheit_kurzbz='.(strlen($row->einheit_kurzbz)>0?"'".$row->einheit_kurzbz."'":'NULL');
elseif ($row->lektor!=$row_lva->lektor)
$update_sql.=(strlen($update_sql)>0?',':'')."lektor='".$row->lektor."'";
elseif ($row->lehrfach_nr!=$row_lva->lehrfach_nr)
$update_sql.=(strlen($update_sql)>0?',':'')."lehrfach_nr=".$row->lehrfach_nr;
elseif ($row->lehrform!=$row_lva->lehrform_kurzbz)
$update_sql.=(strlen($update_sql)>0?',':'')."lehrform_kurzbz='".$row->lehrform."'";
elseif ($row->studiengang_kz!=$row_lva->studiengang_kz)
$update_sql.=(strlen($update_sql)>0?',':'')."studiengang_kz=".$row->studiengang_kz;
elseif ($row->fachbereich_id!=$row_lva->fachbereich_id)
$update_sql.=(strlen($update_sql)>0?',':'')."fachbereich_id=".$row->fachbereich_id;
elseif ($row->semester!=$row_lva->semester)
$update_sql.=(strlen($update_sql)>0?',':'')."semester=".$row->semester;
elseif ($row->verband!=$row_lva->verband)
$update_sql.=(strlen($update_sql)>0?',':'')."verband=".(strlen($row->verband)>0?"'".$row->verband."'":'NULL');
elseif ($row->gruppe!=$row_lva->gruppe)
$update_sql.=(strlen($update_sql)>0?',':'')."gruppe=".(strlen($row->gruppe)>0?"'".$row->gruppe."'":'NULL');
elseif ($row->raumtyp!=$row_lva->raumtyp)
$update_sql.=(strlen($update_sql)>0?',':'')."raumtyp='".$row->raumtyp."'";
elseif ($row->raumtypalternativ!=$row_lva->raumtypalternativ)
$update_sql.=(strlen($update_sql)>0?',':'')."raumtypalternativ='".$row->raumtypalternativ."'";
elseif ($row->semesterstunden!=$row_lva->semesterstunden)
$update_sql.=(strlen($update_sql)>0?',':'')."semesterstunden=".$row->semesterstunden;
elseif ($row->stundenblockung!=$row_lva->stundenblockung)
$update_sql.=(strlen($update_sql)>0?',':'')."stundenblockung=".$row->stundenblockung;
elseif ($row->wochenrythmus!=$row_lva->wochenrythmus)
$update_sql.=(strlen($update_sql)>0?',':'')."wochenrythmus=".$row->wochenrythmus;
elseif ($row->start_kw!=$row_lva->start_kw)
$update_sql.=(strlen($update_sql)>0?',':'')."start_kw=".(strlen($row->start_kw)>0?$row->start_kw:'NULL');
elseif ($row->studiensemester_kurzbz!=$row_lva->studiensemester_kurzbz)
$update_sql.=(strlen($update_sql)>0?',':'')."studiensemester_kurzbz='".$row->studiensemester_kurzbz."'";
elseif ($row->anmerkung!=$row_lva->anmerkung)
$update_sql.=(strlen($update_sql)>0?',':'')."anmerkung='".$row->anmerkung."'";
if (strlen($update_sql)>0)
{
$text.="Die LVA fas-id=$row->fas_id lvnr=$row->lvnr unr=$row->unr wird upgedatet.\r";
$sql_query="UPDATE tbl_lehrveranstaltung SET ".
$update_sql.
" where fas_id=".$row->fas_id;
//echo $sql_query.'<BR>';
if(!$res_update=@pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
else
$anz_update++;
// ****************
// Auch in tbl_stundenplandev updaten
$sql_query="SELECT * FROM tbl_stundenplandev WHERE
lehrveranstaltung_id=$row_lva->lehrveranstaltung_id AND datum>=now()";
//echo $sql_query.'<BR>';
if(!$res_upd_stpl=@pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
}
else
{
if (!pg_query($conn,"BEGIN;"))
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$kollision=false;
while ($row_upd_stpl=pg_fetch_object($res_upd_stpl))
{
// Lehrstunde auf Kollisionen checken
$lehrstunde=new lehrstunde($conn);
//echo '<BR>STPL-ID:'.$row_upd_stpl->stundenplandev_id.'<BR>';
if (!$lehrstunde->load($row_upd_stpl->stundenplandev_id))
echo $lehrstunde->errormsg;
$lehrstunde->lektor_uid=$row->lektor;
if (!$lehrstunde->kollision())
{
if (!$lehrstunde->save('sync_fas_lva'))
echo $lehrstunde->errormsg;
}
else
{
$error_log[$row->studiengang_kz][]=$lehrstunde->errormsg;
$text.="\rKollision: ".$lehrstunde->errormsg."\r";
$kollision=true;
echo "Kollision: ".$lehrstunde->errormsg."<BR>";
}
}
if ($kollision)
{
if (!pg_query($conn,"ROLLBACK;"))
$text.="\rFehler: ".pg_errormessage($conn)."\r";
}
else
if (!pg_query($conn,"COMMIT;"))
$text.="\rFehler: ".pg_errormessage($conn)."\r";
}
}
}
// LVA kommt mehrmals vor ->Warnung
elseif ($num_rows_lva>1)
{
$text.="\r!!! Die LVA fas_id=$row->fas_id kommt mehrfach vor!\r";
$double_error++;
}
}
else
$plausi_error++;
}
// ****************
// Ueberfluessige Datensaetze loeschen
$whereClause=getSemesterWhereClause();
$sql_query="DELETE FROM tbl_lehrveranstaltung WHERE fas_id NOT IN
(SELECT fas_id FROM vw_fas_lehrveranstaltung WHERE $whereClause) AND (fas_id!=0 OR fas_id IS NOT NULL) AND ($whereClause)";
echo $sql_query.'<BR>';
if(!$res_delete=@pg_query($conn, $sql_query))
{
$text.='\n'.$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$text.="\rSolution: DELETE FROM tbl_stundenplandev WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM tbl_lehrveranstaltung WHERE fas_id NOT IN (SELECT fas_id FROM vw_fas_lehrveranstaltung WHERE $whereClause) AND (fas_id!=0 OR fas_id IS NOT NULL) AND ($whereClause))\r";
}
else
{
$anz_delete=pg_numrows($res_delete);
}
//Ausgabe Zusammenfassung
$text.="\n$anz_delete Lehrveranstaltungen wurden geloescht!\n";
$text.="$plausi_error Fehler beim Plausibilitaetscheck!\n";
$text.="$update_error Fehler bei LVA-Update!\n";
$text.="$insert_error Fehler bei LVA-Insert!\n";
$text.="$double_error LVA kommen in VileSci doppelt vor!\n\n";
$text.="$anz_update LVA wurden upgedatet.\n";
$text.="$anz_insert LVA wurden neu angelegt.\n\n";
$text.="\nEND OF SYNCHRONISATION\n";
// Validation error hinzufügen
while(list($k,$v)=each($error_log))
{
$text.="\n\nStudiengang $k:\n";
foreach($v as $txt)
$text.=" $txt\n";
}
// fehlende lehrfächer
$text.="\n\nFehlende Lehrfächer: \n";
while(list($k,$v)=each($missing_lehrfaecher))
{
$text.=" $k\n";
}
// fehlende einheiten
$text.="\n\nFehlende Einheiten: \n";
while(list($k,$v)=each($missing_einheit))
{
$text.=" $k\n";
}
// fehlende raumtypen
$text.="\n\nFehlende Raumtypen: \n";
while(list($k,$v)=each($missing_raumtyp))
{
$text.=" $k\n";
}
// fehlende lehrformen
$text.="\n\nFehlende Lehrformen: \n";
while(list($k,$v)=each($missing_lehrform))
{
$text.=" $k\n";
}
if (mail($adress,"FAS Synchro mit VileSci (Lehrveranstaltungen)",$text,"From: vilesci@technikum-wien.at"))
$sendmail=true;
else
$sendmail=false;
//print "debug: ";print_r($stg_mail);
// Einzelnen Mails an Studiengänge verschicken
reset($error_log);
while(list($k,$v)=each($error_log))
{
echo "<br>Mail an Studiengang $k ".$stg_mail[$k].":<br>";
$stg_text="Dies ist eine automatische Mail!\nFolgende Fehler sind bei der Synchronisation der Lehrveranstaltungen aufgetreten:\n\n";
foreach($v as $txt)
$stg_text.="$txt\n";
echo $stg_text.'<br>';
// Studiengang
if (!mail($stg_mail[$k],"FAS Synchro mit VileSci (Lehrveranstaltungen) $k",$stg_text,"From: vilesci@technikum-wien.at"))
echo "Mail an '".$stg_mail[$k]."' konnte nicht verschickt werden!<br>";
// Stundenplanstelle
echo "<br>Mail an Studiengang $k ($adress_stpl)<br>";
if (!mail($adress_stpl,"FAS Synchro mit VileSci (Lehrveranstaltungen) $k",$stg_text,"From: vilesci@technikum-wien.at"))
echo 'Mail an "'.$adress_stpl.'" konnte nicht verschickt werden!<br>';
}
// Doppelte IDs im FAS prüfen
$sql_query="SELECT count(*) AS anzahl, fas_id FROM fas_view_alle_lehreinheiten_vilesci
GROUP BY fas_id HAVING count(*)>1";
//echo $sql_query."</i><br>";
$result=pg_query($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$mail_text="Folgende $num_rows IDs kommen in der View fas_view_alle_lehreinheiten_vilesci (fas_id) mehrfach vor:\n\n";
$mail_text_false='';
if ($num_rows>0)
while ($row=pg_fetch_object($result))
$mail_text_false.=$row->fas_id.'->'.$row->anzahl."x\n";
$mail_text.=$mail_text_false."\n\nBitte überprüfen die Daten im FAS!!!";
if ($mail_text_false!='')
if (!mail($adress_fas,"FAS Synchro mit VileSci (Lehrveranstaltungen)",$mail_text,"From: vilesci@technikum-wien.at"))
echo "Mail an '".$adress_fas."' konnte nicht verschickt werden!<br>";
else
echo 'Mail wurde verschickt an '.$adress_fas.'!<br>';
?>
<html>
<head>
<title>FAS-Synchro mit VileSci</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if ($sendmail)
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
echo nl2br($text);
?>
</body>
</html>
+233
View File
@@ -0,0 +1,233 @@
<?php
/**
* FAS-Synchronisation
*/
include ('../../vilesci/config.inc.php');
$adress='fas_sync@technikum-wien.at';
function clean_string($string)
{
$trans = array("ä" => "ae",
"ö" => "oe",
"ü" => "ue",
"Ä" => "ae",
"Ö" => "oe",
"Ü" => "ue",
"á" => "a",
"à" => "a",
"é" => "e",
"è" => "e",
"ó" => "o",
"ò" => "o",
"í" => "i",
"ì" => "i",
"ú" => "u",
"ù" => "u",
"ß" => "ss",
"´" => "",
"`" => "",
);
$string = strtr($string, $trans);
return $string;
}
//mail($adress,"FAS Synchro mit VileSci (Studenten)","BEGIN OF SYNCHRONISATION","From: vilesci@technikum-wien.at");
$conn=pg_connect(CONN_STRING);
$conn_fas=pg_connect(CONN_STRING_FAS);
// Anzahl der Studenten in VileSci
$sql_query="SELECT count(*) AS anz FROM tbl_student";
//echo $sql_query."<br>";
$result=pg_exec($conn, $sql_query);
$vilesci_anz_std=pg_fetch_result($result,0,'anz');
// Start Studenten Synchro
$sql_query="SELECT DISTINCT * FROM fas_view_student_vilesci WHERE semester >0 AND semester <9 AND";
$sql_query.=" verband IS NOT NULL AND uid IS NOT NULL AND uid NOT LIKE ''"; // LIMIT 5";
echo $sql_query."<br>";
flush();
$result=pg_exec($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$text="Dies ist eine automatische eMail!\r\r";
$text.="Es wurde eine Synchronisation mit FAS durchgeführt.\r";
$text.="Anzahl der Studenten vom FAS-Import: $num_rows \r";
$text.="Anzahl der Studenten in VileSci: $vilesci_anz_std \r\r";
echo $text.'<BR>';
flush();
$plausi_error=0;
$update_error=0;
$insert_error=0;
$double_error=0;
$anz_update=0;
$anz_insert=0;
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($result,$i);
$row->gebort=substr($row->gebort,0,30);
$row->titel=substr($row->titel,0,15);
$uid=str_replace(' ','',$row->uid);
// Plausibilitaetscheck
if ($row->gruppe==null)
$row->gruppe='1';
if ($row->verband>='A' && $row->verband<='D' && $row->semester<=8 && $row->gruppe>'0' && $row->gruppe<='2')
{
// SQL vorbereiten (jeden Studenten vom FAS im VileSci suchen
$sql_query="SELECT uid,titel,vornamen,nachname,gebdatum,gebort,";
$sql_query.="trim(both ' ' from matrikelnr) AS matrikelnr,";
$sql_query.=" studiengang_kz,semester,verband,gruppe";
$sql_query.=" FROM tbl_person NATURAL JOIN tbl_student WHERE uid LIKE '$uid'";
// echo $sql_query;
$res_std=pg_exec($conn, $sql_query);
$num_rows_std=pg_numrows($res_std);
// neue Studenten
if ($num_rows_std==0)
{
$text.="Der Student $row->vornamen $row->nachname ($row->uid) wird neu angelegt.\r";
// tbl_person
$sql_query="INSERT INTO tbl_person(uid,titel,vornamen, nachname, gebdatum, gebort) ".
"VALUES('$row->uid','$row->titel','$row->vornamen','$row->nachname','$row->gebdatum','$row->gebort')";
echo $sql_query.'<BR>';
flush();
//Alias erstellen
$vn = split('[- .,]',strtolower($row->vornamen));
$vn = clean_string($vn[0]);
$nn = split('[- .,]',strtolower($row->nachname));
$nn = clean_string($nn[0]);
$alias = $vn.".".$nn;
$qry = "UPDATE tbl_person set alias='$alias' where uid='$row->uid'";
if(!$res_insert=pg_exec($conn, $qry))
{
$text.=$qry;
$text.="\rFehler: Alias existiert bereits: $alias";
$insert_error++;
}
// tbl_student
if(!$res_insert=pg_exec($conn, $sql_query))
{
$text.=$qry;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
}
$sql_query="INSERT INTO tbl_student (uid,matrikelnr, studiengang_kz, semester, verband, gruppe) ".
"VALUES('$row->uid','$row->perskz',$row->kennzahl,$row->semester,'$row->verband','$row->gruppe')";
echo $sql_query.'<BR>';
if(!$res_insert=pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
}
else
$anz_insert++;
}
// bestehende Studenten
elseif ($num_rows_std==1)
{
$update=0;
$row_std=pg_fetch_object($res_std,0);
if ($row->gruppe==NULL)
$row->gruppe=1;
if ($row->titel!=$row_std->titel)
$update=1;
elseif ($row->vornamen!=$row_std->vornamen)
$update=2;
elseif ($row->nachname!=$row_std->nachname)
$update=3;
elseif ($row->gebdatum!=$row_std->gebdatum)
$update=4;
elseif ($row->gebort!=$row_std->gebort)
$update=5;
elseif ($row->perskz!=$row_std->matrikelnr)
$update=6;
elseif ($row->semester!=$row_std->semester)
$update=7;
elseif ($row->verband!=$row_std->verband)
$update=8;
elseif ($row->gruppe!=$row_std->gruppe)
$update=9;
elseif ($row->kennzahl!=$row_std->studiengang_kz)
$update=10;
if ($update)
{
$text.="Der Student $row->vornamen $row->nachname ($row->uid) wird upgedatet.\r";
// person
$sql_query="UPDATE tbl_person SET titel='$row->titel', vornamen='$row->vornamen', ".
" nachname='$row->nachname', gebdatum='$row->gebdatum', gebort='$row->gebort'".
" WHERE uid LIKE '$uid'";
echo $sql_query.'<BR>';
if(!$res_update=pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
// student
$sql_query="UPDATE tbl_student SET matrikelnr='$row->perskz', semester=$row->semester";
if ($row->verband==NULL)
$sql_query.=", verband=NULL";
else
$sql_query.=", verband='$row->verband'";
if ($row->gruppe==NULL)
$sql_query.=", gruppe=NULL";
else
$sql_query.=", gruppe='$row->gruppe'";
$sql_query.=", studiengang_kz=".$row->kennzahl;
$sql_query.=", updateamum=now(), updatevon='auto' WHERE uid LIKE '$uid'";
echo $sql_query.'<BR>';
if(!$res_update=pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
else
$anz_update++;
}
}
// Student kommt mehrmals vor ->Warnung
elseif ($num_rows_std>1)
{
$text.="\r!!! Der Student $row->vornamen $row->nachname ($row->uid) kommt mehrfach vor!\r";
$double_error++;
}
}
else
{
$plausi_error++;
$text.="\r!!! Der Student $row->vornamen $row->nachname ($row->uid) STG:$row->kennzahl S:$row->semester V:$row->verband G:$row->gruppe hat nicht plausible Daten!";
}
}
$text.="\r$plausi_error Fehler beim Plausibilitaetscheck!\r";
$text.="$update_error Fehler bei Student-Update!\r";
$text.="$insert_error Fehler bei Student-Insert!\r";
$text.="$double_error Studenten kommen in VileSci doppelt vor!\r\r";
$text.="$anz_update Studenten wurden upgedatet.\r";
$text.="$anz_insert Studenten wurden neu angelegt.\r\r";
$text.="\rEND OF SYNCHRONISATION\r";
if (mail($adress,"FAS Synchro mit VileSci (Studenten)",$text,"From: vilesci@technikum-wien.at"))
$sendmail=true;
else
$sendmail=false;
?>
<html>
<head>
<title>FAS-Synchro mit VileSci (Studenten)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if ($sendmail)
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
echo $text;
?>
</body>
</html>
+48
View File
@@ -0,0 +1,48 @@
<?php
/***************************************************************
Script zur Feststellung, welche Daten im FAS nicht durchkommen.
***************************************************************/
$adress='pam@technikum-wien.at';
include('../../vilesci/config.inc.php');
$conn=pg_connect($conn_string);
$conn_fas=pg_connect($conn_string_fas);
$headers ="MIME-Version: 1.0\r\n";
$headers.="Content-type: text/html; charset=iso-8859-1\r\n";
$headers.="From: vilesci@technikum-wien.at";
$bgcolor[0]="#CCCCCC";
$bgcolor[1]="#DDDDDD";
$text='<html><head><title>FAS-Synchro mit TEMPUS fehlerhafte Studenten</title></head>';
$text.='<body>';
// Start Check
$sql_query="SELECT * FROM fas_view_student_vilesci WHERE uid NOT IN ";
$sql_query.="(SELECT uid FROM fas_view_student_vilesci WHERE semester >0 AND semester <8 AND";
$sql_query.=" verband IS NOT NULL AND uid IS NOT NULL AND uid NOT LIKE '') ORDER BY kennzahl,nachname"; // LIMIT 5";
//echo $sql_query."<br>";
$result=pg_exec($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$num_fields=pg_numfields($result);
$text.="Dies ist eine automatische eMail!<BR><BR>";
$text.="Es wurde eine Ueberpruefung der Daten in der FAS-View fuer Studenten durchgeführt.<BR>";
$text.="Anzahl der fehlerhaften Daten: $num_rows <BR><BR>";
$text.="Folgende Studenten haben fehlerhafte Daten im FAS<BR><BR>";
$text.='<TABLE border="0"><TR><TH>STG_KZ</TH><TH>uid</TH><TH>Titel</TH><TH>Vornamen</TH><TH>Nachname</TH><TH>Matrikelnr</TH>';
$text.='<TH>Semester</TH><TH>Verband</TH><TH>Gruppe</TH></TR>';
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($result,$i);
$text.='<TR bgcolor="'.$bgcolor[$i%2].'"'."><TD>$row->kennzahl</TD><TD>$row->uid</TD><TD>$row->titel</TD><TD>$row->vornamen</TD><TD>$row->nachname</TD><TD>$row->perskz</TD>";
$text.="<TD>$row->semester</TD><TD>$row->verband</TD><TD>$row->gruppe</TD></TR>";
}
$text.='</TABLE></BODY></HTML>';
echo $text;
if (mail($adress,"FAS Synchro mit TEMPUS fehlerhafte Studenten",$text,$headers))
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
?>
+77
View File
@@ -0,0 +1,77 @@
<?php
include("../../vilesci/config.inc.php");
//Connection öffnen
if(!$conn = pg_pconnect(CONN_STRING))
die("Fehler beim oeffnen der DB Connection");
/**
*Schaut nach ob dieser Feedbackeintrag bereits in der Datenbank existiert.
* @param $datum Datum des Eintrages
* $betreff Betreff des Eintrages
* $text Text des Eintrages
* $uid Uid des Eintrages
*/
function isInTab($datum,$betreff,$text,$uid)
{
$sql = "Select * from tbl_feedback where datum='$datum' AND betreff='$betreff' AND text='$text' and uid='$uid'";
$checkresult=pg_exec($sql);
if(pg_num_rows($checkresult)>0)
return true;
return false;
}
$qry = "SELECT * from lehre.tbl_feedback_lehrfach";
$result = pg_exec($conn,$qry);
echo "Uebernahme von tbl_feedback_lehrfach";
flush();
while($row=pg_fetch_object($result))
{
$sql_qry = "Select * from tbl_lehrfach where studiengang_kz =$row->studiengang_kz AND semester=$row->semester AND lehrevz=$lehrfachzuteilung_kurzbz";
$lf_result=pg_exec($conn,$sql_qry);
if($lf_row=pg_fetch_object($conn,$qry))
{
if(!isInTab($row->datum,$row->betreff,$row->text,$row->uid))
{
$insert = "INSERT INTO tbl_feedback(datum,betreff,text,lfnr,uid) VALUES('$row->datum','$row->betreff','$row->text',$lf_row->lehrfach_nr,'$row->uid')";
pg_exec($conn,$insert);
echo "+";
flush();
}
}
else
{
echo "Lehrfachaufloesung nicht moeglich"; //Oder Formular ausgeben
}
}
$qry = "SELECT * from lehre.tbl_feedback_lehrfach";
$result = pg_exec($conn,$qry);
echo "Uebernahme von tbl_feedback_freifach";
flush();
while($row=pg_fetch_object($result))
{
$sql_qry = "Select * from tbl_lehrfach where lehrevz=$lehrfachzuteilung_kurzbz AND studiengang_kz=0 AND semester is null";
$lf_result=pg_exec($conn,$sql_qry);
if($lf_row=pg_fetch_object($conn,$qry))
{
$insert = "INSERT INTO tbl_feedback(datum,betreff,text,lfnr,uid) VALUES('$row->datum','$row->betreff','$row->text',$lf_row->lehrfach_nr,'$row->uid')";
pg_exec($conn,$insert);
echo "+";
flush();
}
else
{
echo "Lehrfachaufloesung nicht moeglich"; //Oder Formular ausgeben
}
}
?>
+406
View File
@@ -0,0 +1,406 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Stundenplan-Synchro (stpldev-stpl)</title>
</head>
<body>
<?php
include('../../vilesci/config.inc.php');
include('../../include/functions.inc.php');
include('../../include/lehrstunde.class.php');
$conn=pg_connect(CONN_STRING);
// Startvariablen setzen
$adress='pam@technikum-wien.at';
$adress_stpl='stpl@technikum-wien.at';
if (isset($_GET['sendmail']))
{
if ($_GET['sendmail']=='true')
$sendmail=(boolean)true;
else
$sendmail=(boolean)false;
}
else
$sendmail=(boolean)true;
$count_del=0;
$count_ins=0;
$count_upd=0;
$count_err=0;
// error log fuer jeden Studiengang
$error_log=array();
// Mails an die Lektoren und Verbaende
$message=array();
// Nachrichten fuer die Stundenplanstelle
$message_stpl='';
// error_log
$message_sync='';
// Mail Headers festlegen
$headers= "MIME-Version: 1.0\r\n";
$headers.="Content-Type: text/html; charset=iso-8859-1\r\n";
// Anfangsdatum festlegen
$datum_begin=date("Y-m-d");
// Endedatum festlegen
$sql_query="SELECT * FROM tbl_studiensemester WHERE ende>=now() ORDER BY start;";
//echo $sql_query.'<BR>';
if (!$result=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
}
else
{
if ($row=pg_fetch_object($result))
$datum_ende=$row->ende;
else
$message_sync.='Kein aktuelles Studiensemester gefunden! '.$sql_query.'<BR>';
}
$message_begin='Dies ist eine automatische Mail!<BR>Es haben sich folgende Aenderungen in Ihrem Stundenplan ergeben:<BR>';
/**************************************************
* Datensaetze holen die neu sind
*/
echo 'Neue Datens&auml;tze werden angelegt.<BR>';flush();
$sql_query="SELECT * FROM vw_stundenplandev WHERE datum>='$datum_begin' AND datum<='$datum_ende' AND
stundenplandev_id NOT IN
(SELECT stundenplan_id FROM tbl_stundenplan WHERE datum>='$datum_begin');";
//echo $sql_query.'<BR>';
if (!$result=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
}
else
{
flush();
while ($row=pg_fetch_object($result))
{
$sql_query='INSERT INTO tbl_stundenplan
(stundenplan_id,unr,uid,datum,stunde,ort_kurzbz,lehrfach_nr,lehrform_kurzbz,studiengang_kz,semester,verband,gruppe,
einheit_kurzbz,titel,anmerkung,fix,updateamum,updatevon,lehrveranstaltung_id) VALUES';
$sql_query.="($row->stundenplandev_id,$row->unr,'$row->uid','$row->datum',$row->stunde,'$row->ort_kurzbz',
$row->lehrfach_nr,'$row->lehrform',$row->studiengang_kz,$row->semester";
if ($row->verband==null)
$sql_query.=',NULL';
else
$sql_query.=",'$row->verband'";
if ($row->gruppe==null)
$sql_query.=',NULL';
else
$sql_query.=",'$row->gruppe'";
if ($row->einheit_kurzbz==null)
$sql_query.=',NULL';
else
$sql_query.=",'$row->einheit_kurzbz'";
$sql_query.=",'$row->titel','$row->anmerkung'";
if ($row->fix=='t')
$sql_query.=',TRUE';
else
$sql_query.=',FALSE';
$sql_query.=",'$row->updateamum','$row->updatevon'";
if ($row->lehrveranstaltung_id==null)
$sql_query.=',NULL';
else
$sql_query.=",$row->lehrveranstaltung_id";
$sql_query.=');';
//echo $sql_query;
if (!$result_insert=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$count_err++;
}
else
{
$count_ins++;
if ($count_ins%10==0)
{
echo '-';
flush();
}
// Mails vorbereiten
// Lektoren
if (substr($row->uid,0,1)!='_')
{
if (!isset($message[$row->uid]->isneu));
{
$message[$row->uid]->isneu=true;
$message[$row->uid]->mailadress=$row->uid.'@technikum-wien.at';
$message[$row->uid]->message=$message_begin.'<BR>Neue Stunden:<BR>
<TABLE><TR><TD>Ort</TD><TD>Verband</TD><TD>Lektor</TD><TD>Datum/Std</TD><TD>Lehrfach</TD></TR>';
}
$message[$row->uid]->message.='<TR><TH>'.$row->ort_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->lektor.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->datum.'/'.$row->stunde.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
}
// Verband
$verband=$row->stg_kurzbz.$row->semester.$row->verband.$row->gruppe;
$verband=trim($verband);
$verband=strtolower($verband);
if (!isset($message[$verband]->isneu));
{
$message[$verband]->isneu=true;
$message[$verband]->mailadress=$verband.'@technikum-wien.at';
$message[$verband]->message=$message_begin.'<BR>Neue Stunden:<BR>
<TABLE><TR><TD>Ort</TD><TD>Verband</TD><TD>Lektor</TD><TD>Datum/Std</TD><TD>Lehrfach</TD></TR>';
}
$message[$verband]->message.='<TR><TH>'.$row->ort_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->lektor.'</TH>';
$message[$verband]->message.='<TH>'.$row->datum.'/'.$row->stunde.'</TH>';
$message[$verband]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
}
}
foreach($message as $msg)
if($msg->isneu)
$msg->message.='</table>';
}
/**************************************************
* Datensaetze holen die alt sind
*/
echo '<BR>Alte Datens&auml;tze werden gel&ouml;scht.<BR>';flush();
$sql_query="SELECT * FROM vw_stundenplan WHERE stundenplan_id NOT IN
(SELECT stundenplandev_id FROM tbl_stundenplandev WHERE datum>='$datum_begin')
AND datum>='$datum_begin';";
if (!$result=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
}
while ($row=pg_fetch_object($result))
{
$sql_query='DELETE FROM tbl_stundenplan WHERE stundenplan_id='.$row->stundenplan_id;
//echo $sql_query.'<BR>';
if (!$result_delete=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$count_err++;
}
else
{
$count_del++;
if ($count_del%10==0)
{
echo '-';
flush();
}
// Mails vorbereiten
// Lektoren
if (substr($row->uid,0,1)!='_')
{
if (!isset($message[$row->uid]->isalt));
{
$message[$row->uid]->isalt=true;
$message[$row->uid]->mailadress=$row->uid.'@technikum-wien.at';
$message[$row->uid]->message.=$message_begin.'<BR>Gel&ouml;eschte Stunden:<BR>
<TABLE><TR><TD>Ort</TD><TD>Verband</TD><TD>Lektor</TD><TD>Datum/Std</TD><TD>Lehrfach</TD></TR>';
}
$message[$row->uid]->message.='<TR><TH>'.$row->ort_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->lektor.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->datum.'/'.$row->stunde.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
}
// Verband
$verband=$row->stg_kurzbz.$row->semester.$row->verband.$row->gruppe;
$verband=trim($verband);
$verband=strtolower($verband);
if (!isset($message[$verband]->isalt));
{
$message[$verband]->isalt=true;
$message[$verband]->mailadress=$verband.'@technikum-wien.at';
$message[$verband]->message.=$message_begin.'<BR>Geaenderte Stunden:<BR>
<TABLE><TR><TD>Ort</TD><TD>Verband</TD><TD>Lektor</TD><TD>Datum/Std</TD><TD>Lehrfach</TD></TR>';
}
$message[$verband]->message.='<TR><TH>'.$row->ort_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->lektor.'</TH>';
$message[$verband]->message.='<TH>'.$row->datum.'/'.$row->stunde.'</TH>';
$message[$verband]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
}
foreach($message as $msg)
if($msg->isalt)
$msg->message.='</table>';
}
/**************************************************
* Datensaetze holen die anders sind
*/
echo '<BR>Datens&auml;tze werden ge&auml;ndert.<BR>';flush();
$sql_query="SELECT vw_stundenplandev.*, vw_stundenplan.datum AS old_datum, vw_stundenplan.stunde AS old_stunde,
vw_stundenplan.ort_kurzbz AS old_ort_kurzbz, vw_stundenplan.lektor AS old_lektor
FROM vw_stundenplandev, vw_stundenplan
WHERE vw_stundenplan.stundenplan_id=vw_stundenplandev.stundenplandev_id AND (
vw_stundenplandev.unr!=vw_stundenplan.unr OR
vw_stundenplandev.uid!=vw_stundenplan.uid OR
vw_stundenplandev.datum!=vw_stundenplan.datum OR
vw_stundenplandev.stunde!=vw_stundenplan.stunde OR
vw_stundenplandev.ort_kurzbz!=vw_stundenplan.ort_kurzbz OR
vw_stundenplandev.lehrfach_nr!=vw_stundenplan.lehrfach_nr OR
vw_stundenplandev.lehrform!=vw_stundenplan.lehrform OR
vw_stundenplandev.studiengang_kz!=vw_stundenplan.studiengang_kz OR
vw_stundenplandev.semester!=vw_stundenplan.semester OR
vw_stundenplandev.verband!=vw_stundenplan.verband OR
vw_stundenplandev.gruppe!=vw_stundenplan.gruppe OR
vw_stundenplandev.einheit_kurzbz!=vw_stundenplan.einheit_kurzbz OR
vw_stundenplandev.titel!=vw_stundenplan.titel OR
vw_stundenplandev.anmerkung!=vw_stundenplan.anmerkung OR
vw_stundenplandev.fix!=vw_stundenplan.fix OR
vw_stundenplandev.lehrveranstaltung_id!=vw_stundenplan.lehrveranstaltung_id )
AND vw_stundenplandev.datum>='$datum_begin';";
//echo $sql_query.'<BR>';
if (!$result=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
}
while ($row=pg_fetch_object($result))
{
// Alten Eintrag aus tbl_stundenplan holen
$sql_query="SELECT * FROM tbl_stundenplandev WHERE stundenplandev_id=$row->stundenplandev_id;";
if (!$result_old=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
}
else
$row_old=pg_fetch_object($result_old);
// Datensaetze aendern
$sql_query="UPDATE tbl_stundenplan SET
unr=$row->unr,uid='$row->uid',datum='$row->datum',stunde=$row->stunde,
ort_kurzbz='$row->ort_kurzbz',lehrfach_nr=$row->lehrfach_nr, lehrform_kurzbz='$row->lehrform',
studiengang_kz=$row->studiengang_kz,semester=$row->semester";
if ($row->verband==null)
$sql_query.=',verband=NULL';
else
$sql_query.=",verband='$row->verband'";
if ($row->gruppe==null)
$sql_query.=',gruppe=NULL';
else
$sql_query.=",gruppe='$row->gruppe'";
if ($row->einheit_kurzbz==null)
$sql_query.=',einheit_kurzbz=NULL';
else
$sql_query.=",einheit_kurzbz='$row->einheit_kurzbz'";
$sql_query.=",titel='$row->titel',anmerkung='$row->anmerkung'";
if ($row->fix=='t')
$sql_query.=',fix=TRUE';
else
$sql_query.=',fix=FALSE';
$sql_query.=",updateamum='$row->updateamum',updatevon='$row->updatevon'";
if ($row->lehrveranstaltung_id==null)
$sql_query.=',lehrveranstaltung_id=NULL';
else
$sql_query.=",lehrveranstaltung_id=$row->lehrveranstaltung_id";
$sql_query.=" WHERE stundenplan_id=$row->stundenplandev_id;";
echo $sql_query.'<BR>';
if (!$result_update=pg_query($conn, $sql_query))
{
echo $sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$message_sync.=$sql_query.' fehlgeschlagen!<BR>'.pg_last_error($conn);
$count_err++;
}
else
{
$count_upd++;
if ($count_upd%10==0)
{
echo '-';
flush();
}
// Mails vorbereiten
// Lektoren
if (substr($row->uid,0,1)!='_')
{
if (!isset($message[$row->uid]->isset));
{
$message[$row->uid]->isset=true;
$message[$row->uid]->mailadress=$row->uid.'@technikum-wien.at';
$message[$row->uid]->message.=$message_begin.'<BR>Ge&auml;nderte Stunden:<BR>
<TABLE><TR><TD>Status</TD><TD>Ort</TD><TD>Verband</TD><TD>Lektor</TD><TD>Datum/Std</TD><TD>Lehrfach</TD></TR>';
}
$message[$row->uid]->message.='<TR><TH>Vorher: </TH><TH>'.$row->old_ort_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->old_lektor.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->old_datum.'/'.$row->old_stunde.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
$message[$row->uid]->message.='<TR><TH>Jetzt: </TH><TH>'.$row->ort_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->lektor.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->datum.'/'.$row->stunde.'</TH>';
$message[$row->uid]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
}
// Verband
$verband=$row->stg_kurzbz.$row->semester.$row->verband.$row->gruppe;
$verband=trim($verband);
$verband=strtolower($verband);
if (!isset($message[$verband]->isset));
{
$message[$verband]->isset=true;
$message[$verband]->mailadress=$verband.'@technikum-wien.at';
$message[$verband]->message.=$message_begin.'<BR>Ge&auml;nderte Stunden:<BR>
<TABLE><TR><TD>Status</TD><TD>Ort</TD><TD>Verband</TD><TD>Lektor</TD><TD>Datum/Std</TD><TD>Lehrfach</TD></TR>';
}
$message[$verband]->message.='<TR><TH>Vorher: </TH><TH>'.$row->old_ort_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->old_lektor.'</TH>';
$message[$verband]->message.='<TH>'.$row->old_datum.'/'.$row->old_stunde.'</TH>';
$message[$verband]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
$message[$verband]->message.='<TR><TH>Jetzt: </TH><TH>'.$row->ort_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->stg_kurzbz.'-'.$row->semester.$row->verband.$row->gruppe.' '.$row->einheit_kurzbz.'</TH>';
$message[$verband]->message.='<TH>'.$row->lektor.'</TH>';
$message[$verband]->message.='<TH>'.$row->datum.'/'.$row->stunde.'</TH>';
$message[$verband]->message.='<TH>'.$row->lehrfach.'-'.$row->lehrform.' ('.$row->lehrfach_bez.')</TH></TR>';
}
foreach($message as $msg)
if($msg->isset)
$msg->message.='</table>';
}
/**************************************************
* Mails an Lektoren und Verbaende schicken
*/
if ($sendmail)
foreach ($message as $msg)
//if (mail('pam@technikum-wien.at',"Stundenplan update",$msg->message,$headers."From: stpl@technikum-wien.at"))
if (mail($msg->mailadress,"Stundenplan update",$msg->message,$headers."From: stpl@technikum-wien.at"))
{
echo 'Mail an '.$msg->mailadress.' wurde verschickt!<BR>';
$message_stpl.='Mail an '.$msg->mailadress.' wurde verschickt!<BR>';
}
else
{
echo 'Mail an '.$msg->mailadress.' konnte nicht verschickt werden!<BR>';
$message_sync.='Mail an '.$msg->mailadress.' konnte ***nicht*** verschickt werden!<BR>';
}
// Mail an Admin
$message_tmp=$count_upd.' Datens&auml;tze wurden ge&auml;ndert.<BR>
'.$count_ins.' Datens&auml;tze wurden hinzugef&uuml;gt.<BR>
'.$count_del.' Datens&auml;tze wurden gel&ouml;scht.<BR>
'.$count_err.' Fehler sind dabei aufgetreten!<BR><BR>';
echo '<BR>'.$message_tmp;
$message_sync='<HTML><BODY>'.$message_tmp.$message_sync.$message_stpl.'</BODY></HTML>';
mail('pam@technikum-wien.at',"Stundenplan update",$message_sync,$headers."From: stpl@technikum-wien.at");
$message_stpl='<HTML><BODY>'.$message_tmp.$message_stpl.'</BODY></HTML>';
mail('stpl@technikum-wien.at',"Stundenplan update",$message_stpl,$headers."From: stpl@technikum-wien.at");
?>
</body>
</html>
+594
View File
@@ -0,0 +1,594 @@
<?php
include('../../vilesci/config.inc.php');
include('../../include/functions.inc.php');
include('../../include/lehrstunde.class.php');
$conn=pg_connect(CONN_STRING);
$conn_fas=pg_connect(CONN_STRING_FAS);
$adress='fas_sync@technikum-wien.at';
//$adress='pam@technikum-wien.at';
$adress_stpl='stpl@technikum-wien.at';
$adress_fas='pam@technikum-wien.at';
// error log für jeden Studiengang
$error_log=array();
$missing_lehrfaecher=array();
$missing_einheit=array();
$missing_raumtyp=array();
$missing_lehrform=array();
function printLVA($row)
{
return 'lvnr='.$row->lvnr.' '.$row->bezeichnung;
}
function getSemesterWhereClause()
{
global $conn;
$qry="select * from tbl_studiensemester where ende>now()";
$result=pg_exec($conn, $qry);
$where='';
while ($row=pg_fetch_object($result))
{
$where.= ((strlen($where)>0)?' or ':'')."studiensemester_kurzbz='".$row->studiensemester_kurzbz."' ";
}
if (strlen($where)>0) $where=" ($where) ";
return $where;
}
function validate($row)
{
global $error_log,$einheit,$missing_einheit,$missing_raumtyp,$missing_lehrform,$raumtyp,$lehrform;
$valid=true;
if ($row->raumtyp==null)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Raumtyp fehlt';
$valid=false;
}
if ($row->semester>8 || $row->semester<1)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Semester bei '.$row->semester.$row->verband.$row->gruppe.' größer als 8';
$valid=false;
}
if (!($row->verband==null || $row->verband=='' || $row->verband=='A' || $row->verband=='B' || $row->verband=='C' || $row->verband=='D'))
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Verband bei '.$row->semester.$row->verband.$row->gruppe.' außerhalb des gültigen Bereichs (A bis D)';
//print_r($row);
$valid=false;
}
if (!($row->gruppe==null || $row->gruppe=='' || $row->gruppe=='1' || $row->gruppe=='2' || $row->gruppe=='3' || $row->gruppe=='4'))
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Gruppe bei '.$row->semester.$row->verband.$row->gruppe.' außerhalb des gültigen Bereichs (1 bis 4)';
$valid=false;
}
if (!$row->stundenblockung>0) {
$error_log[$row->studiengang_kz][]=printLVA($row).': Stundenblockung ist nicht größer 0';
$valid=false;
}
if (!$row->semesterstunden>0) {
$error_log[$row->studiengang_kz][]=printLVA($row).': Semesterstunden sind nicht größer 0';
$valid=false;
}
if (!$row->wochenrythmus>0)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Wochenrythmus ist nicht größer 0';
$valid=false;
}
if ($row->start_kw<=0 || $row->start_kw>53)
{
$error_log[$row->studiengang_kz][]=printLVA($row).': Start-KW außerhalb des gültigen Bereichs (1 bis 53)';
$valid=false;
}
if (strlen($row->einheit_kurzbz)>0 && !isset($einheit[$row->einheit_kurzbz]) && !isset($missing_einheit[$row->einheit_kurzbz]))
{
$missing_einheit[$row->einheit_kurzbz]=1;
}
if (strlen($row->raumtyp)>0 && !isset($raumtyp[$row->raumtyp]) && !isset($missing_raumtyp[$row->raumtyp]))
{
$missing_raumtyp[$row->raumtyp]=1;
$valid=false;
}
if (strlen($row->raumtypalternativ)>0 && !isset($raumtyp[$row->raumtypalternativ]) && !isset($missing_raumtyp[$row->raumtypalternativ])) {
$missing_raumtyp[$row->raumtypalternativ]=1;
}
if (!ereg("^[A-Za-z]{1,5}[0-9]{0,1}$",$row->raumtyp))
{
$error_log[$row->studiengang_kz][]=$row->raumtyp.': Raumtyp bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
if (!ereg("^[A-Za-z]{1,5}[0-9]{0,1}$",$row->raumtypalternativ))
{
$error_log[$row->studiengang_kz][]=$row->raumtypalternativ.': Raumtypalternative bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
if (strlen($row->lehrform)>0 && !isset($lehrform[$row->lehrform]) && !isset($missing_lehrform[$row->lehrform])) {
$missing_lehrform[$row->lehrform]=1;
}
if (!ereg("^[A-Z]{1,5}[0-9]{0,1}$",$row->lehrfach_kurzbz))
{
$error_log[$row->studiengang_kz][]=$row->lehrfach_kurzbz.'-'.$row->lehrform.'/'.$row->studiengang_kz.'-'.$row->semester.': Lehrfach-Kuerzel bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
if (!ereg("^[A-Z]{1,3}$",$row->lehrform))
{
$error_log[$row->studiengang_kz][]=$row->lehrfach_kurzbz.'-'.$row->lehrform.'/'.$row->studiengang_kz.'-'.$row->semester.': Lehrform bei LVNR:'.$row->lvnr.' ist nicht plausibel.';
$valid=false;
}
return $valid;
}
/**
* FAS-Lehrfach auf interne Lehrfach-Nr übersetzen
*/
function getLehrfachNr($kurzbz,$studiengang_kz,$semester,$lehrfach_bezeichnung, $fachbereich_id, $ects, $conn)
{
global $lehrfach;
global $text;
if (isset($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr']))
{
//echo 'Nummer:'.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'].'Bez: '.$lehrfach_bezeichnung.'<BR>';
// Nebenbei die Lehrfachbezeichnung kontrollieren
if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung']!=$lehrfach_bezeichnung)
{
// Update
$qry="UPDATE tbl_lehrfach SET bezeichnung='$lehrfach_bezeichnung' WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
if (!$result=pg_query($conn, $qry))
echo $qry.' fehlgeschlagen!<BR>';
else
{
echo 'Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung'].' auf '.$lehrfach_bezeichnung.' geaendert!<BR>';
$text.='Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung'].' auf '.$lehrfach_bezeichnung.' geaendert!\n';
$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung']=$lehrfach_bezeichnung;
}
}
// Nebenbei die ECTS Punkte kontrollieren
if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects']!=$ects)
{
if ($ects!='') //ereg("[0-9]{1,4}[\.|,][0-9]{0,2}$",$ects)
{
// Update
$qry="UPDATE tbl_lehrfach SET ects='$ects' WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
//echo $qry.'<BR>';
if (!$result=pg_query($conn, $qry))
echo $qry.' fehlgeschlagen!<BR>';
else
{
echo ' Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurden die ECTS-Punkte von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects'].' auf '.$ects.' geaendert!<BR>';
$text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurden die ECTS-Punkte von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects'].' auf '.$ects.' geaendert!\n';
$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects']=$ects;
}
}
else
{
echo 'Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' sind die ECTS-Punkte von '.$ects.' nicht Plausibel!<BR>';
$text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' sind die ECTS-Punkte von '.$ects.' nicht Plausibel!\n';
}
}
// Nebenbei die FachbereichID kontrollieren
if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id']!=$fachbereich_id)
{
// Update
$qry="UPDATE tbl_lehrfach SET fachbereich_id=$fachbereich_id WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
if (!$result=@pg_query($conn, $qry))
echo $qry.' fehlgeschlagen!<BR>';
else
{
echo 'Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde die FachbereichID von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id'].' auf '.$fachbereich_id.' geaendert!<BR>';
$text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde die FachbereichID von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id'].' auf '.$fachbereich_id.' geaendert!\n';
$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id']=$fachbereich_id;
}
}
return $lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'];
}
//echo 'missing getLehrfachNr: '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.'<br>';
return -1;
}
/*************************
* FAS-Synchronisation
*/
// E-Mails der Studiengänge
$stg_mail=array();
$qry="select studiengang_kz,email,kurzbz from tbl_studiengang";
$result=pg_exec($conn, $qry);
while ($row=pg_fetch_object($result))
{
$stg_mail[$row->studiengang_kz] = $row->email;
$stg_kurzbz[$row->studiengang_kz]=$row->kurzbz;
}
// Anzahl der LVA in VileSci
$sql_query="SELECT count(*) AS anz FROM tbl_lehrveranstaltung";
//echo $sql_query."<br>";
$result=pg_exec($conn, $sql_query);
$vil_anz_lva=pg_fetch_result($result,0,'anz');
// Lehrfächer holen und in Array speichern (Key ist kurzbz + '/' + lehform_kurzbz)
$sql_query="SELECT lehrfach_nr,kurzbz,studiengang_kz,semester, bezeichnung, fachbereich_id, ects FROM tbl_lehrfach";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
{
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['lehrfach_nr'] = $row->lehrfach_nr;
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['fachbereich_id'] = $row->fachbereich_id;
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['lehrfach_bezeichnung'] = $row->bezeichnung;
$lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['ects'] = $row->ects;
}
//print_r($lehrfach);
// Einheiten holen
$sql_query="SELECT einheit_kurzbz,bezeichnung FROM tbl_einheit";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
$einheit[$row->einheit_kurzbz] = $row->bezeichnung;
// Raumtypen holen
$sql_query="SELECT raumtyp_kurzbz,beschreibung FROM tbl_raumtyp";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
$raumtyp[$row->raumtyp_kurzbz] = $row->beschreibung;
// Lehformen holen
$sql_query="SELECT lehrform_kurzbz,bezeichnung FROM tbl_lehrform";
$result=pg_exec($conn, $sql_query);
while ($row=pg_fetch_object($result))
$lehrform[$row->lehrform_kurzbz] = $row->bezeichnung;
//print_r($lehrfach);
echo 'FAS-Datenbank wird abgefragt!<BR><i>';
flush();
// Start Lehrveranstaltungen Synchro
$sql_query="SELECT DISTINCT fas_id,trim(lvnr) AS lvnr,trim(unr)::int8 AS unr,einheit_kurzbz,lektor,trim(upper(lehrfach_kurzbz)) AS lehrfach_kurzbz,
trim(upper(lehrform)) AS lehrform, lehrfach_bezeichnung,
studiengang_kz,fachbereich_id,semester,verband,gruppe,raumtyp,raumtypalternativ,
round(semesterstunden) AS semesterstunden,stundenblockung,wochenrythmus,start_kw,anmerkung,studiensemester_kurzbz, ects
FROM fas_view_alle_lehreinheiten_vilesci ".
"where ".getSemesterWhereClause();
//echo $sql_query."</i><br>";
$result=pg_exec($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$text="Dies ist eine automatische eMail!\r\r";
$text.="Es wurde eine Synchronisation mit FAS durchgeführt.\r";
$text.="Anzahl der LVA vom FAS-Import: $num_rows \r";
$text.="Anzahl der LVA in der VileSci: $vil_anz_lva \r\r";
$plausi_error=0;
$update_error=0;
$insert_error=0;
$double_error=0;
$anz_update=0;
$anz_insert=0;
echo $num_rows.' Datensaetze<BR>';
for ($i=0;$i<$num_rows;$i++)
{
if ($i%100==0)
{
echo '-';
flush();
}
$row=pg_fetch_object($result,$i);
// Kennzahl der Studiengangs bei ehemaligen bTec auf TW aendern.
if ($row->studiengang_kz==203)
$row->studiengang_kz=0;
// Lehrfach-Nr übersetzen (-1 wenn nicht vorhanden)
$row->lehrfach_nr=getLehrfachNr($row->lehrfach_kurzbz,$row->studiengang_kz,$row->semester, $row->lehrfach_bezeichnung, $row->fachbereich_id, $row->ects, $conn);
// Einheit vollstaendiger Name
if (count($row->einheit_kurzbz)>0)
$row->einheit_kurzbz=$stg_kurzbz[$row->studiengang_kz].'-'.$row->einheit_kurzbz;
// Plausibilitaetscheck
//if ($row->gruppe==NULL)
// $row->gruppe='1';
//
if (!$row->stundenblockung>0)
$row->stundenblockung=1;
if (!$row->start_kw>0)
$row->start_kw=1;
if (!$row->wochenrythmus>0)
$row->wochenrythmus=1;
if ($row->lehrfach_nr==-1)
{
//$error_log[$row->studiengang_kz][]=printLVA($row).': Lehrfach (Kurzbz='".$row->lehrfach_kurzbz."',Lehrform".$row->lehrform) existiert noch nicht. Stundenplanabteilung wurde benachrichtigt.';
if (!isset($missing_lehrfaecher[$row->lehrfach_kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester])) $missing_lehrfaecher[$row->lehrfach_kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]=1;
$valid=false;
}
if (validate($row) && $row->lehrfach_nr>-1)
{
// SQL vorbereiten (jede LVA vom FAS im VileSci suchen)
$sql_query="SELECT * from tbl_lehrveranstaltung where fas_id=".$row->fas_id;
//echo $sql_query;
$res_lva=pg_query($conn, $sql_query);
$num_rows_lva=pg_numrows($res_lva);
// neue LVA
if ($num_rows_lva==0)
{
$text.="Die LVA fas-id=$row->fas_id lvnr=$row->lvnr unr=$row->unr wird neu angelegt.\r";
$sql_query="INSERT INTO tbl_lehrveranstaltung (lvnr,unr,einheit_kurzbz,lektor,lehrfach_nr,lehrform_kurzbz,";
$sql_query.="studiengang_kz,fachbereich_id,semester,verband,gruppe,raumtyp,".
"raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,studiensemester_kurzbz,fas_id,anmerkung) ".
"VALUES('$row->lvnr'".
",$row->unr,".
(strlen($row->einheit_kurzbz)>0?"'".$row->einheit_kurzbz."'":'NULL').",".
"'$row->lektor',".
"'$row->lehrfach_nr',".
"'$row->lehrform',".
"'$row->studiengang_kz',".
"$row->fachbereich_id,".
"$row->semester,";
if ($row->verband==null)
$sql_query.='NULL,';
else
$sql_query.="'$row->verband',";
if ($row->gruppe==null)
$sql_query.='NULL,';
else
$sql_query.="'$row->gruppe',";
$sql_query.="'$row->raumtyp',".
"'$row->raumtypalternativ',".
"$row->semesterstunden,".
"$row->stundenblockung,".
"$row->wochenrythmus,".
"$row->start_kw,".
"'$row->studiensemester_kurzbz'," .
"$row->fas_id,'$row->anmerkung')";
//echo $sql_query.'<BR>';
if(!$res_insert=@pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\nFehler: ".pg_errormessage($conn)."\n";
$insert_error++;
}
else
$anz_insert++;
}
// bestehende LVA
elseif ($num_rows_lva==1)
{
$update_sql='';
$row_lva=pg_fetch_object($res_lva,0);
//var_dump($row_lva);
//if ($row->gruppe==NULL)
// $row->gruppe=1;
//echo '-'.$row->lvnr.'-'.$row_lva->lvnr.'-<BR>';
if ($row->lvnr!=$row_lva->lvnr)
$update_sql.="lvnr='".$row->lvnr."'";
elseif ($row->unr!=$row_lva->unr)
$update_sql.="unr=".$row->unr;
elseif ($row->einheit_kurzbz!=$row_lva->einheit_kurzbz)
$update_sql.=(strlen($update_sql)>0?',':'').'einheit_kurzbz='.(strlen($row->einheit_kurzbz)>0?"'".$row->einheit_kurzbz."'":'NULL');
elseif ($row->lektor!=$row_lva->lektor)
$update_sql.=(strlen($update_sql)>0?',':'')."lektor='".$row->lektor."'";
elseif ($row->lehrfach_nr!=$row_lva->lehrfach_nr)
$update_sql.=(strlen($update_sql)>0?',':'')."lehrfach_nr=".$row->lehrfach_nr;
elseif ($row->lehrform!=$row_lva->lehrform_kurzbz)
$update_sql.=(strlen($update_sql)>0?',':'')."lehrform_kurzbz='".$row->lehrform."'";
elseif ($row->studiengang_kz!=$row_lva->studiengang_kz)
$update_sql.=(strlen($update_sql)>0?',':'')."studiengang_kz=".$row->studiengang_kz;
elseif ($row->fachbereich_id!=$row_lva->fachbereich_id)
$update_sql.=(strlen($update_sql)>0?',':'')."fachbereich_id=".$row->fachbereich_id;
elseif ($row->semester!=$row_lva->semester)
$update_sql.=(strlen($update_sql)>0?',':'')."semester=".$row->semester;
elseif ($row->verband!=$row_lva->verband)
$update_sql.=(strlen($update_sql)>0?',':'')."verband=".(strlen($row->verband)>0?"'".$row->verband."'":'NULL');
elseif ($row->gruppe!=$row_lva->gruppe)
$update_sql.=(strlen($update_sql)>0?',':'')."gruppe=".(strlen($row->gruppe)>0?"'".$row->gruppe."'":'NULL');
elseif ($row->raumtyp!=$row_lva->raumtyp)
$update_sql.=(strlen($update_sql)>0?',':'')."raumtyp='".$row->raumtyp."'";
elseif ($row->raumtypalternativ!=$row_lva->raumtypalternativ)
$update_sql.=(strlen($update_sql)>0?',':'')."raumtypalternativ='".$row->raumtypalternativ."'";
elseif ($row->semesterstunden!=$row_lva->semesterstunden)
$update_sql.=(strlen($update_sql)>0?',':'')."semesterstunden=".$row->semesterstunden;
elseif ($row->stundenblockung!=$row_lva->stundenblockung)
$update_sql.=(strlen($update_sql)>0?',':'')."stundenblockung=".$row->stundenblockung;
elseif ($row->wochenrythmus!=$row_lva->wochenrythmus)
$update_sql.=(strlen($update_sql)>0?',':'')."wochenrythmus=".$row->wochenrythmus;
elseif ($row->start_kw!=$row_lva->start_kw)
$update_sql.=(strlen($update_sql)>0?',':'')."start_kw=".(strlen($row->start_kw)>0?$row->start_kw:'NULL');
elseif ($row->studiensemester_kurzbz!=$row_lva->studiensemester_kurzbz)
$update_sql.=(strlen($update_sql)>0?',':'')."studiensemester_kurzbz='".$row->studiensemester_kurzbz."'";
elseif ($row->anmerkung!=$row_lva->anmerkung)
$update_sql.=(strlen($update_sql)>0?',':'')."anmerkung='".$row->anmerkung."'";
if (strlen($update_sql)>0)
{
$text.="Die LVA fas-id=$row->fas_id lvnr=$row->lvnr unr=$row->unr wird upgedatet.\r";
$sql_query="UPDATE tbl_lehrveranstaltung SET ".
$update_sql.
" where fas_id=".$row->fas_id;
//echo $sql_query.'<BR>';
if(!$res_update=@pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
else
$anz_update++;
// ****************
// Auch in tbl_stundenplandev updaten
$sql_query="SELECT * FROM tbl_stundenplandev WHERE
lehrveranstaltung_id=$row_lva->lehrveranstaltung_id AND datum>=now()";
//echo $sql_query.'<BR>';
if(!$res_upd_stpl=@pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
}
else
{
if (!pg_query($conn,"BEGIN;"))
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$kollision=false;
while ($row_upd_stpl=pg_fetch_object($res_upd_stpl))
{
// Lehrstunde auf Kollisionen checken
$lehrstunde=new lehrstunde($conn);
//echo '<BR>STPL-ID:'.$row_upd_stpl->stundenplandev_id.'<BR>';
if (!$lehrstunde->load($row_upd_stpl->stundenplandev_id))
echo $lehrstunde->errormsg;
$lehrstunde->lektor_uid=$row->lektor;
if (!$lehrstunde->kollision())
{
if (!$lehrstunde->save('sync_fas_lva'))
echo $lehrstunde->errormsg;
}
else
{
$error_log[$row->studiengang_kz][]=$lehrstunde->errormsg;
$text.="\rKollision: ".$lehrstunde->errormsg."\r";
$kollision=true;
echo "Kollision: ".$lehrstunde->errormsg."<BR>";
}
}
if ($kollision)
{
if (!pg_query($conn,"ROLLBACK;"))
$text.="\rFehler: ".pg_errormessage($conn)."\r";
}
else
if (!pg_query($conn,"COMMIT;"))
$text.="\rFehler: ".pg_errormessage($conn)."\r";
}
}
}
// LVA kommt mehrmals vor ->Warnung
elseif ($num_rows_lva>1)
{
$text.="\r!!! Die LVA fas_id=$row->fas_id kommt mehrfach vor!\r";
$double_error++;
}
}
else
$plausi_error++;
}
// ****************
// Ueberfluessige Datensaetze loeschen
$whereClause=getSemesterWhereClause();
$sql_query="DELETE FROM tbl_lehrveranstaltung WHERE fas_id NOT IN
(SELECT fas_id FROM vw_fas_lehrveranstaltung WHERE $whereClause) AND (fas_id!=0 OR fas_id IS NOT NULL) AND ($whereClause)";
echo $sql_query.'<BR>';
if(!$res_delete=@pg_query($conn, $sql_query))
{
$text.='\n'.$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$text.="\rSolution: DELETE FROM tbl_stundenplandev WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM tbl_lehrveranstaltung WHERE fas_id NOT IN (SELECT fas_id FROM vw_fas_lehrveranstaltung WHERE $whereClause) AND (fas_id!=0 OR fas_id IS NOT NULL) AND ($whereClause))\r";
}
else
{
$anz_delete=pg_numrows($res_delete);
}
//Ausgabe Zusammenfassung
$text.="\n$anz_delete Lehrveranstaltungen wurden geloescht!\n";
$text.="$plausi_error Fehler beim Plausibilitaetscheck!\n";
$text.="$update_error Fehler bei LVA-Update!\n";
$text.="$insert_error Fehler bei LVA-Insert!\n";
$text.="$double_error LVA kommen in VileSci doppelt vor!\n\n";
$text.="$anz_update LVA wurden upgedatet.\n";
$text.="$anz_insert LVA wurden neu angelegt.\n\n";
$text.="\nEND OF SYNCHRONISATION\n";
// Validation error hinzufügen
while(list($k,$v)=each($error_log))
{
$text.="\n\nStudiengang $k:\n";
foreach($v as $txt)
$text.=" $txt\n";
}
// fehlende lehrfächer
$text.="\n\nFehlende Lehrfächer: \n";
while(list($k,$v)=each($missing_lehrfaecher))
{
$text.=" $k\n";
}
// fehlende einheiten
$text.="\n\nFehlende Einheiten: \n";
while(list($k,$v)=each($missing_einheit))
{
$text.=" $k\n";
}
// fehlende raumtypen
$text.="\n\nFehlende Raumtypen: \n";
while(list($k,$v)=each($missing_raumtyp))
{
$text.=" $k\n";
}
// fehlende lehrformen
$text.="\n\nFehlende Lehrformen: \n";
while(list($k,$v)=each($missing_lehrform))
{
$text.=" $k\n";
}
if (mail($adress,"FAS Synchro mit VileSci (Lehrveranstaltungen)",$text,"From: vilesci@technikum-wien.at"))
$sendmail=true;
else
$sendmail=false;
//print "debug: ";print_r($stg_mail);
// Einzelnen Mails an Studiengänge verschicken
reset($error_log);
while(list($k,$v)=each($error_log))
{
echo "<br>Mail an Studiengang $k ".$stg_mail[$k].":<br>";
$stg_text="Dies ist eine automatische Mail!\nFolgende Fehler sind bei der Synchronisation der Lehrveranstaltungen aufgetreten:\n\n";
foreach($v as $txt)
$stg_text.="$txt\n";
echo $stg_text.'<br>';
// Studiengang
if (!mail($stg_mail[$k],"FAS Synchro mit VileSci (Lehrveranstaltungen) $k",$stg_text,"From: vilesci@technikum-wien.at"))
echo "Mail an '".$stg_mail[$k]."' konnte nicht verschickt werden!<br>";
// Stundenplanstelle
echo "<br>Mail an Studiengang $k ($adress_stpl)<br>";
if (!mail($adress_stpl,"FAS Synchro mit VileSci (Lehrveranstaltungen) $k",$stg_text,"From: vilesci@technikum-wien.at"))
echo 'Mail an "'.$adress_stpl.'" konnte nicht verschickt werden!<br>';
}
// Doppelte IDs im FAS prüfen
$sql_query="SELECT count(*) AS anzahl, fas_id FROM fas_view_alle_lehreinheiten_vilesci
GROUP BY fas_id HAVING count(*)>1";
//echo $sql_query."</i><br>";
$result=pg_query($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$mail_text="Folgende $num_rows IDs kommen in der View fas_view_alle_lehreinheiten_vilesci (fas_id) mehrfach vor:\n\n";
$mail_text_false='';
if ($num_rows>0)
while ($row=pg_fetch_object($result))
$mail_text_false.=$row->fas_id.'->'.$row->anzahl."x\n";
$mail_text.=$mail_text_false."\n\nBitte überprüfen die Daten im FAS!!!";
if ($mail_text_false!='')
if (!mail($adress_fas,"FAS Synchro mit VileSci (Lehrveranstaltungen)",$mail_text,"From: vilesci@technikum-wien.at"))
echo "Mail an '".$adress_fas."' konnte nicht verschickt werden!<br>";
else
echo 'Mail wurde verschickt an '.$adress_fas.'!<br>';
?>
<html>
<head>
<title>FAS-Synchro mit VileSci</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if ($sendmail)
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
echo nl2br($text);
?>
</body>
</html>
+360
View File
@@ -0,0 +1,360 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Ben Goodger <ben@netscape.com> (Original Author)
* Pierre Chanial <pierrechanial@netscape.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the NPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
////////////////////////////////////////////////////////////////////////////
// XXX - WARNING - DRAG AND DROP API CHANGE ALERT - XXX
// This file has been extensively modified in a checkin planned for Mozilla
// 0.8, and the API has been modified. DO NOT MODIFY THIS FILE without
// approval from ben@netscape.com, otherwise your changes will be lost.
/**
* XXX - until load is supported in chrome, you also need to include
* these files:
* chrome://global/content/nsTransferable.js
**/
/**
* nsDragAndDrop - a convenience wrapper for nsTransferable, nsITransferable
* and nsIDragService/nsIDragSession.
*
* USAGE INFORMATION: see 'README-nsDragAndDrop.html' in the same source directory
* as this file (typically xpfe/global/resources/content)
*/
var nsDragAndDrop =
{
_mDS: null,
get mDragService()
{
if (!this._mDS)
{
const kDSContractID = "@mozilla.org/widget/dragservice;1";
const kDSIID = Components.interfaces.nsIDragService;
this._mDS = Components.classes[kDSContractID].getService(kDSIID);
}
return this._mDS;
},
/**
* void startDrag (DOMEvent aEvent, Object aDragDropObserver) ;
*
* called when a drag on an element is started.
*
* @param DOMEvent aEvent
* the DOM event fired by the drag init
* @param Object aDragDropObserver
* javascript object of format described above that specifies
* the way in which the element responds to drag events.
**/
startDrag: function (aEvent, aDragDropObserver)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) { alert(e); }
if (!("onDragStart" in aDragDropObserver))
return;
const kDSIID = Components.interfaces.nsIDragService;
var dragAction =
{
action: kDSIID.DRAGDROP_ACTION_COPY + kDSIID.DRAGDROP_ACTION_MOVE + kDSIID.DRAGDROP_ACTION_LINK
};
var transferData =
{
data: null
};
try
{
aDragDropObserver.onDragStart(aEvent, transferData, dragAction);
}
catch (e)
{
return; // not a draggable item, bail!
}
if (!transferData.data)
return;
transferData = transferData.data;
var transArray = Components.classes["@mozilla.org/supports-array;1"]
.createInstance(Components.interfaces.nsISupportsArray);
var region = null;
if (aEvent.originalTarget.localName == "treechildren")
{
// let's build the drag region
var tree = aEvent.originalTarget.parentNode;
try
{
region = Components.classes["@mozilla.org/gfx/region;1"].createInstance(Components.interfaces.nsIScriptableRegion);
region.init();
var obo = tree.treeBoxObject;
var bo = obo.treeBody.boxObject;
var obosel= obo.selection;
var rowX = bo.x;
var rowY = bo.y;
var rowHeight = obo.rowHeight;
var rowWidth = bo.width;
//add a rectangle for each visible selected row
for (var i = obo.getFirstVisibleRow(); i <= obo.getLastVisibleRow(); i ++)
{
if (obosel.isSelected(i))
region.unionRect(rowX, rowY, rowWidth, rowHeight);
rowY = rowY + rowHeight;
}
//and finally, clip the result to be sure we don't spill over...
region.intersectRect(bo.x, bo.y, bo.width, bo.height);
}
catch(ex)
{
dump("Error while building selection region: " + ex + "\n");
region = null;
}
}
var count = 0;
do
{
var trans = nsTransferable.set(transferData._XferID == "TransferData"
? transferData : transferData.dataList[count++]);
transArray.AppendElement(trans.QueryInterface(Components.interfaces.nsISupports));
}
while (transferData._XferID == "TransferDataSet" && count < transferData.dataList.length);
try
{
this.mDragService.invokeDragSession(aEvent.target, transArray, region, dragAction.action);
}
catch(ex)
{
// this could be because the user pressed escape to
// cancel the drag. even if it's not, there's not much
// we can do, so be silent.
}
aEvent.preventBubble();
},
/**
* void dragOver (DOMEvent aEvent, Object aDragDropObserver) ;
*
* called when a drag passes over this element
*
* @param DOMEvent aEvent
* the DOM event fired by passing over the element
* @param Object aDragDropObserver
* javascript object of format described above that specifies
* the way in which the element responds to drag events.
**/
dragOver: function (aEvent, aDragDropObserver)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) { alert(e); }
if (!("onDragOver" in aDragDropObserver))
return;
if (!this.checkCanDrop(aEvent, aDragDropObserver))
return;
var flavourSet = aDragDropObserver.getSupportedFlavours();
for (var flavour in flavourSet.flavourTable)
{
if (this.mDragSession.isDataFlavorSupported(flavour))
{
aDragDropObserver.onDragOver(aEvent,
flavourSet.flavourTable[flavour],
this.mDragSession);
aEvent.preventBubble();
break;
}
}
},
mDragSession: null,
/**
* void drop (DOMEvent aEvent, Object aDragDropObserver) ;
*
* called when the user drops on the element
*
* @param DOMEvent aEvent
* the DOM event fired by the drop
* @param Object aDragDropObserver
* javascript object of format described above that specifies
* the way in which the element responds to drag events.
**/
drop: function (aEvent, aDragDropObserver)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) { alert(e); }
if (!("onDrop" in aDragDropObserver))
return;
if (!this.checkCanDrop(aEvent, aDragDropObserver))
return;
if (this.mDragSession.canDrop) {
var flavourSet = aDragDropObserver.getSupportedFlavours();
var transferData = nsTransferable.get(flavourSet, this.getDragData, true);
// hand over to the client to respond to dropped data
var multiple = "canHandleMultipleItems" in aDragDropObserver && aDragDropObserver.canHandleMultipleItems;
var dropData = multiple ? transferData : transferData.first.first;
aDragDropObserver.onDrop(aEvent, dropData, this.mDragSession);
}
aEvent.preventBubble();
},
/**
* void dragExit (DOMEvent aEvent, Object aDragDropObserver) ;
*
* called when a drag leaves this element
*
* @param DOMEvent aEvent
* the DOM event fired by leaving the element
* @param Object aDragDropObserver
* javascript object of format described above that specifies
* the way in which the element responds to drag events.
**/
dragExit: function (aEvent, aDragDropObserver)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) { alert(e); }
if (!this.checkCanDrop(aEvent, aDragDropObserver))
return;
if ("onDragExit" in aDragDropObserver)
aDragDropObserver.onDragExit(aEvent, this.mDragSession);
},
/**
* void dragEnter (DOMEvent aEvent, Object aDragDropObserver) ;
*
* called when a drag enters in this element
*
* @param DOMEvent aEvent
* the DOM event fired by entering in the element
* @param Object aDragDropObserver
* javascript object of format described above that specifies
* the way in which the element responds to drag events.
**/
dragEnter: function (aEvent, aDragDropObserver)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) { alert(e); }
if (!this.checkCanDrop(aEvent, aDragDropObserver))
return;
if ("onDragEnter" in aDragDropObserver)
aDragDropObserver.onDragEnter(aEvent, this.mDragSession);
},
/**
* nsISupportsArray getDragData (Object aFlavourList)
*
* Creates a nsISupportsArray of all droppable items for the given
* set of supported flavours.
*
* @param FlavourSet aFlavourSet
* formatted flavour list.
**/
getDragData: function (aFlavourSet)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e)
{
alert(e);
}
var supportsArray = Components.classes["@mozilla.org/supports-array;1"]
.createInstance(Components.interfaces.nsISupportsArray);
for (var i = 0; i < nsDragAndDrop.mDragSession.numDropItems; ++i)
{
var trans = nsTransferable.createTransferable();
for (var j = 0; j < aFlavourSet.flavours.length; ++j)
trans.addDataFlavor(aFlavourSet.flavours[j].contentType);
nsDragAndDrop.mDragSession.getData(trans, i);
supportsArray.AppendElement(trans);
}
return supportsArray;
},
/**
* Boolean checkCanDrop (DOMEvent aEvent, Object aDragDropObserver) ;
*
* Sets the canDrop attribute for the drag session.
* returns false if there is no current drag session.
*
* @param DOMEvent aEvent
* the DOM event fired by the drop
* @param Object aDragDropObserver
* javascript object of format described above that specifies
* the way in which the element responds to drag events.
**/
checkCanDrop: function (aEvent, aDragDropObserver)
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) { alert(e); }
if (!this.mDragSession)
this.mDragSession = this.mDragService.getCurrentSession();
if (!this.mDragSession)
return false;
this.mDragSession.canDrop = this.mDragSession.sourceNode != aEvent.target;
if ("canDrop" in aDragDropObserver)
this.mDragSession.canDrop &= aDragDropObserver.canDrop(aEvent, this.mDragSession);
return true;
}
};
+111
View File
@@ -0,0 +1,111 @@
/**************************************************************************
* @brief Funktion draw_week_rdf Stundenplan im RDF-Format
*
* @param datum Datum eines Tages in der angeforderten Woche
*
* @return true oder false
*
*/
function draw_week_rdf()
{
// Stundentafel abfragen
$sql_query="SELECT * FROM tbl_stunde ORDER BY stunde";
if(!$result_stunde=pg_exec($this->conn, $sql_query))
die(pg_last_error($this->conn));
$num_rows_stunde=pg_numrows($result_stunde);
//echo $this->datum;
$rdf_url='http://www.technikum-wien.at/tempus/lehrstunde/';
//RDF Kopf
echo '<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:LEHRSTUNDE="'.$rdf_url.'rdf#">';
// Von Montag bis Samstag
for ($i=1; $i<7; $i++)
{
for ($k=0; $k<$num_rows_stunde; $k++)
{
$j=pg_result($result_stunde,$k,'"stunde"');
if (isset($this->std_plan[$i][$j][0]->lehrfach))
{
// Daten aufbereiten
$kollision=-1;
unset($a_unr);
foreach ($this->std_plan[$i][$j] as $lehrstunde)
$a_unr[]=$lehrstunde->unr;
// Unterrichtsnummer (Kollision?)
$unr=array_unique($a_unr);
$kollision+=count($unr);
foreach ($a_unr as $unr)
foreach ($this->std_plan[$i][$j] as $lehrstunde)
if ($lehrstunde->unr==$unr)
{
// Ausgabe
$lvb=$lehrstunde->stg.'-'.$lehrstunde->sem;
if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='')
{
$lvb.=$lehrstunde->ver;
if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='')
$lvb.=$lehrstunde->grp;
}
echo '<RDF:Description RDF:about="'.$rdf_url.$lehrstunde->stundenplan_id.'" >
<LEHRSTUNDE:stundenplan_id>'.$lehrstunde->stundenplan_id.'</LEHRSTUNDE:stundenplan_id>
<LEHRSTUNDE:lehrverband>'.$lvb.'</LEHRSTUNDE:lehrverband>
<LEHRSTUNDE:stg_kz>'.$lehrstunde->stg_kz.'</LEHRSTUNDE:stg_kz>
<LEHRSTUNDE:stg>'.$lehrstunde->stg.'</LEHRSTUNDE:stg>
<LEHRSTUNDE:sem>'.$lehrstunde->sem.'</LEHRSTUNDE:sem>
<LEHRSTUNDE:ver>'.$lehrstunde->ver.'</LEHRSTUNDE:ver>
<LEHRSTUNDE:grp>'.$lehrstunde->grp.'</LEHRSTUNDE:grp>
<LEHRSTUNDE:einheit>'.$lehrstunde->einheit_kurzbz.'</LEHRSTUNDE:einheit>
<LEHRSTUNDE:datum>'.$lehrstunde->datum.'</LEHRSTUNDE:datum>
<LEHRSTUNDE:stunde>'.$lehrstunde->stunde.'</LEHRSTUNDE:stunde>
<LEHRSTUNDE:tag>'.$i.'</LEHRSTUNDE:tag>
<LEHRSTUNDE:kollision>'.($kollision ? 'true':'false').'</LEHRSTUNDE:kollision>
</RDF:Description>';
}
}
}
}
// Sequenz Von Montag bis Samstag
echo '<RDF:Seq RDF:about="'.$rdf_url.'alle-lehrstunden">';
for ($i=1; $i<7; $i++)
{
for ($k=0; $k<$num_rows_stunde; $k++)
{
$j=pg_result($result_stunde,$k,'"stunde"');
if (isset($this->std_plan[$i][$j][0]->lehrfach))
{
// Daten aufbereiten
unset($a_unr);
foreach ($this->std_plan[$i][$j] as $lehrstunde)
$a_unr[]=$lehrstunde->unr;
// Unterrichtsnummern
$unr=array_unique($a_unr);
foreach ($a_unr as $unr)
{
echo '<RDF:li RDF:resource="'.$rdf_url.$lehrstunde->stundenplan_id.'" />
<RDF:li>
<RDF:Seq RDF:about="'.$rdf_url.$lehrstunde->stundenplan_id.'">';
foreach ($this->std_plan[$i][$j] as $lehrstunde)
if ($lehrstunde->unr==$unr)
{
// Ausgabe
echo '<RDF:li RDF:resource="'.$rdf_url.$lehrstunde->stundenplan_id.'" />';
}
echo '</RDF:Seq>
</RDF:li>';
}
}
}
}
echo '</RDF:Seq>';
echo '</RDF:RDF>';
}
+57
View File
@@ -0,0 +1,57 @@
function lehrstunde(type,stg_kz,sem,ver,grp)
{
this.type=type;
this.stg_kz=stg_kz;
this.sem=sem;
this.ver=ver;
this.grp=grp;
}
var listObserver=
{
onDragStart: function (evt,transferData,action)
{
var elemID=evt.target.getAttribute("elem");
var paramList=evt.target.getAttribute("paramList");
var transferObjekt=new lehrstunde(elemID,paramList,elemID,elemID,elemID);
transferData.data=new TransferData();
//transferData.data.addDataForFlavour("text/unicode",transferObjekt);
transferData.data.addDataForFlavour("text/unicode",paramList);
}
};
var boardObserver=
{
/*canHandleMultipleItems : function()
{
var canHandleMultipleItems=false;
},*/
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("text/unicode");
return flavours;
},
onDragOver: function (evt,flavour,session)
{
},
onDrop: function (evt,dropdata,session)
{
if (dropdata.data!="")
{
var dragElement=document.getElementById(dropdata.data);
var contentFrame=document.getElementById('iframeTimeTableWeek');
var stunde=evt.target.getAttribute("stunde");
var datum=evt.target.getAttribute("datum");
/*//var elem=document.createElement("label");*/
/*evt.target.appendChild(elem); */
var paramList=dragElement.getAttribute("paramList");
/*elem.setAttribute("value",dropdata.data + paramList); */
var url=location.href;//contentFrame.getAttribute('src');
url+=paramList+"&new_stunde="+stunde+"&new_datum="+datum+'&aktion=stplverschieben';
//contentFrame.setAttribute('src', url);
location.href=url;
}
}
};
+173
View File
@@ -0,0 +1,173 @@
<?php
include('../vilesci/config.inc.php');
?>
function lehrstunde(id,idList)
{
this.id=id;
this.idList=idList;
}
var lehrstunden=new Array();
/***** Drag Observer fuer Lehrveranstaltungen *****/
var lvaObserver=
{
onDragStart: function (evt,transferData,action)
{
var idList=evt.target.getAttribute("idList");
var aktion=evt.target.getAttribute("aktion");
aktion+="_set";
var paramList="?aktion="+aktion+"&lva_ids="+idList;
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-lehrveranstaltung",paramList);
//alert("test");
}
};
/***** Drag Observer fuer STPL-Verschiebung *****/
var listObserver=
{
onDragStart: function (evt,transferData,action)
{
var type=evt.target.getAttribute("stpltype");
var dragdatum=evt.target.getAttribute("datum");
var pers_uid=evt.target.getAttribute("pers_uid");
var idList=evt.target.getAttribute("idList");
var stg_kz=evt.target.getAttribute("stg_kz");
var sem=evt.target.getAttribute("sem");
var ver=evt.target.getAttribute("ver");
var grp=evt.target.getAttribute("grp");
var einheit=evt.target.getAttribute("einheit");
var old_ort=evt.target.getAttribute("ort");
var aktion=evt.target.getAttribute("aktion");
aktion+="_set";
var paramList="?dragtype="+type+"&dragdatum="+dragdatum+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit+"&old_ort="+old_ort+idList+"&aktion="+aktion;
//var transferObjekt=new lehrstunde(type,dragdatum,pers_uid,stg_kz,sem,ver,grp,einheit,old_ort,idList);
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-lehrstunde",paramList);
var styleOrig=evt.target.getAttribute("styleOrig");
evt.target.setAttribute("style",styleOrig+"color:red;font-style:italic;");
}
};
/***** Board Observer fuer STPL- und LVA-Verschiebung *****/
var boardObserver=
{
/*canHandleMultipleItems : function()
{
var canHandleMultipleItems=false;
},*/
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/tempus-lehrveranstaltung");
flavours.appendFlavour("application/tempus-lehrstunde");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
var styleNow=evt.target.getAttribute("style");
if (evt.target.tagName=="label")
evt.target.setAttribute("style","background-color:#AAFFAA;");
else
evt.target.setAttribute("style",styleNow+"border:1px dashed black;");
},
onDragExit: function (evt,flavour,session)
{
var styleNow=evt.target.getAttribute("style");
if (evt.target.tagName=="label")
evt.target.setAttribute("style","");
else
evt.target.setAttribute("style",styleNow+"border:1px solid black;");
},
onDragOver: function(evt,flavour,session)
{
// Mehrfachauswahl von Lehrstunden mit CTRL bzw. ALT-Taste
if ((evt.ctrlKey || evt.altKey) && flavour.contentType=="application/tempus-lehrstunde" && evt.target.tagName=="button")
{
var idList=evt.target.getAttribute("idList");
var id=evt.target.getAttribute("id");
var styleOrig=evt.target.getAttribute("styleOrig");
// Ist Element schon vorhanden und an welcher stelle im Array?
var gesetzt=null;
for (var i=0;i<lehrstunden.length;i++)
if (lehrstunden[i].id==id)
gesetzt=i;
// User will Element anhaengen?
if (gesetzt==null && evt.ctrlKey)
{
var ls=new lehrstunde(id,idList);
lehrstunden.push(ls);
evt.target.setAttribute("style",styleOrig+"color:red;font-style:italic;");
}
else
// User will Element entfernen?
if (gesetzt!=null && evt.altKey)
{
// Element aus Array loeschen
if (gesetzt==0)
lehrstunden.shift();
else
if (gesetzt==lehrstunden.length)
lehrstunden.pop();
else
{
var tmpArray=new array();
tmpArray.concat(lehrstunden.slice(0,gesetzt-1));
tmpArray.concat(lehrstunden.slice(gesetzt+1,lehrstunden.length));
lehrstunden=tmpArray;
}
evt.target.setAttribute("style",styleOrig+"color:black;font-style:normal;");
}
}
},
onDrop: function (evt,dropdata,session)
{
if (dropdata.data!="")
{
var stplData=document.getElementById('TimeTableWeekData');
var datum=stplData.getAttribute("datum");
var type=stplData.getAttribute("stpl_type");
var stg_kz=stplData.getAttribute("stg_kz");
var sem=stplData.getAttribute("sem");
var ver=stplData.getAttribute("ver");
var grp=stplData.getAttribute("grp");
var pers_uid=stplData.getAttribute("pers_uid");
var ort=stplData.getAttribute("ort");
var einheit=stplData.getAttribute("einheit");
var stunde=evt.target.getAttribute("stunde");
var new_datum=evt.target.getAttribute("datum");
if (evt.target.tagName=="label")
var new_ort=evt.target.getAttribute("value");
else
if (dropdata.flavour.contentType=="application/tempus-lehrveranstaltung")
var new_ort=ort;
var url="<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=dropdata.data+"&new_stunde="+stunde+"&new_datum="+new_datum;
url+="&type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid;
url+="&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
if (evt.target.tagName=="label" || dropdata.flavour.contentType=="application/tempus-lehrveranstaltung")
url+="&new_ort="+new_ort;
else
url+="&aktion=stpl_move";
url+="&mime="+dropdata.flavour.contentType;
// Mehrfachauswahl anhaengen
for (var i=0;i<lehrstunden.length;i++)
url+=lehrstunden[i].idList.replace(/&/g,"&x"+i);
//var BoxTimeTableWeek=document.getElementById('boxTimeTableWeek');
//var ScrollX=BoxTimeTableWeek.contentWindow.scrollX;
//var ScrollY=BoxTimeTableWeek.contentWindow.scrollY;
//alert('X:'+ScrollX+' Y:'+ScrollY);
//alert(url);
location.href=url;
//BoxTimeTableWeek=document.getElementById('boxTimeTableWeek');
//BoxTimeTableWeek.scrollTo(ScrollX,ScrollY);
}
}
};
+65
View File
@@ -0,0 +1,65 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/einheit.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// Einheiten holen
$einheitenDAO=new einheit($conn);
$einheiten=$einheitenDAO->getAll();
$rdf_url='http://www.technikum-wien.at/tempus/einheiten';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:EINHEIT="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/liste">
<?php
foreach ($einheiten as $einheit)
{
?>
<RDF:li>
<RDF:Description id="<?php echo $einheit->kurzbz; ?>" about="<?php echo $rdf_url.'/'.$einheit->kurzbz; ?>" >
<EINHEIT:kurzbz><?php echo $einheit->kurzbz ?></EINHEIT:kurzbz>
<EINHEIT:stg_kz><?php echo $einheit->stg_kz ?></EINHEIT:stg_kz>
<EINHEIT:stg_kurzbz><?php echo $einheit->stg_kurzbz ?></EINHEIT:stg_kurzbz>
<EINHEIT:bezeichnung><?php echo $einheit->bezeichnung ?></EINHEIT:bezeichnung>
<EINHEIT:semester><?php echo $einheit->semester ?></EINHEIT:semester>
<EINHEIT:typ><?php echo $einheit->typ ?></EINHEIT:typ>
</RDF:Description>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:RDF>
+160
View File
@@ -0,0 +1,160 @@
<?php
/*
* author: Christian Paminger <pam@technikum-wien.at>
* date: 2006-04-22
*/
//error_reporting(E_ALL);
//ini_set('display_errors','1');
include('../vilesci/config.inc.php');
include_once('../include/fas/functions.inc.php');
include_once('../include/fas/person.class.php');
include_once('../include/fas/mitarbeiter.class.php');
include_once('../include/Excel/PEAR.php');
include_once('../include/Excel/BIFFwriter.php');
include_once('../include/Excel/Workbook.php');
include_once('../include/Excel/Format.php');
include_once('../include/Excel/Worksheet.php');
include_once('../include/Excel/Parser.php');
include_once('../include/Excel/OLE.php');
include_once('../include/Excel/PPS.php');
include_once('../include/Excel/Root.php');
include_once('../include/Excel/File.php');
include_once('../include/Excel/Writer.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING_FAS))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
//Parameter holen
if (isset($_GET['mitarbeiter_id']))
$mitarbeiter_id = $_GET['mitarbeiter_id'];
else
$mitarbeiter_id=null;
if (isset($_GET['fix']))
$fix = $_GET['fix'];
else
$fix=null;
if (isset($_GET['stgl']))
$stgl = $_GET['stgl'];
else
$stgl=null;
if (isset($_GET['fbl']))
$fbl = $_GET['fbl'];
else
$fbl=null;
if (isset($_GET['aktiv']))
$aktiv = $_GET['aktiv'];
else
$aktiv=null;
if (isset($_GET['karenziert']))
$karenziert = $_GET['karenziert'];
else
$karenziert=null;
if (isset($_GET['ausgeschieden']))
$ausgeschieden = $_GET['ausgeschieden'];
else
$ausgeschieden=null;
if (isset($_GET['zustelladresse']))
$zustelladresse = $_GET['zustelladresse'];
else
$zustelladresse = null;
//Spalten
$anzSpalten=0;
$varname='spalte'.(string)$anzSpalten;
while (isset($_GET[$varname]))
{
$spalte[$anzSpalten]=$_GET[$varname];
//echo $spalte[$anzSpalten];
$anzSpalten++;
$varname='spalte'.(string)$anzSpalten;
}
$zustelladresse=true;
// Mitarbeiter holen
$mitarbeiterDAO=new mitarbeiter($conn);
$mitarbeiterDAO->getMitarbeiter($mitarbeiter_id, $fix, $stgl, $fbl, $aktiv, $karenziert, $ausgeschieden, $zustelladresse,getStudiensemesterIdFromName($conn, $benutzer->variable->semester_aktuell));
/*
* Create Excel File with Content from Students Examples solved
*/
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// sending HTTP headers
$workbook->send("Mitarbeiter". "_" . date("d_m_Y") . ".xls");
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("Mitarbeiter");
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
$format_title =& $workbook->addFormat();
$format_title->setBold();
// $format_title->setColor('yellow');
// $format_title->setPattern(1);
// $format_title->setFgColor('blue');
// let's merge
$format_title->setAlign('merge');
for ($i=0;$i<$anzSpalten;$i++)
$worksheet->write(0,$i,strtoupper(str_replace('_bezeichnung','',$spalte[$i])), $format_bold);
$worksheet->write(0,$i,"STRASSE", $format_bold);
$worksheet->write(0,$i+1,"PLZ", $format_bold);
$worksheet->write(0,$i+2,"ORT", $format_bold);
// set width of columns
//$worksheet->setColumn(1,4,20); // ersten 3 Spalten auf width=17
//$worksheet->setColumn(0,0,22);
$j=1;
$maxlength = array();
for ($i=0;$i<$anzSpalten;$i++)
$maxlength[$i]=strlen(str_replace('_bezeichnung','',$spalte[$i]));
$maxlength[$i]=strlen('STRASSE');
$maxlength[$i+1]=strlen('PLZ');
$maxlength[$i+2]=strlen('ORT');
foreach ($mitarbeiterDAO->result as $mitarbeiter)
{
for ($i=0;$i<$anzSpalten;$i++)
{
if(strlen($mitarbeiter->$spalte[$i])>$maxlength[$i])
$maxlength[$i] = strlen($mitarbeiter->$spalte[$i]);
$worksheet->write($j,$i, utf8_decode($mitarbeiter->$spalte[$i]));
}
if(strlen($mitarbeiter->zustelladresse_strasse)>$maxlength[$i])
$maxlength[$i]=strlen($mitarbeiter->zustelladresse_strasse);
$worksheet->write($j,$i, utf8_decode($mitarbeiter->zustelladresse_strasse));
if(strlen($mitarbeiter->zustelladresse_plz)>$maxlength[$i+1])
$maxlength[$i+1]=strlen($mitarbeiter->zustelladresse_plz);
$worksheet->write($j,$i+1, utf8_decode($mitarbeiter->zustelladresse_plz));
if(strlen($mitarbeiter->zustelladresse_ort)>$maxlength[$i+2])
$maxlength[$i+2]=strlen($mitarbeiter->zustelladresse_ort);
$worksheet->write($j,$i+2, utf8_decode($mitarbeiter->zustelladresse_ort));
$j++;
}
for ($i=0;$i<$anzSpalten;$i++)
$worksheet->setColumn($i, $i, $maxlength[$i]+2);
$worksheet->setColumn($i, $i, $maxlength[$i]+2);
$worksheet->setColumn($i+1, $i+1, $maxlength[$i+1]+2);
$worksheet->setColumn($i+2, $i+2, $maxlength[$i+2]+2);
$workbook->close();
?>
+83
View File
@@ -0,0 +1,83 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/fachbereich.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// test
$einheit_kurzbz='';
$grp='1';
//$ver='A';
$sem=5;
$stg_kz=145;
/*
$einheit_kurzbz='';
$grp=$_GET['grp'];
$ver=$_GET['ver'];
$sem=$_GET['sem'];
$stg_kz=$_GET['stg_kz']; */
// fachbereiche holen
$fachbereichDAO=new fachbereich($conn);
$fachbereiche=$fachbereichDAO->getAll();
$rdf_url='http://www.technikum-wien.at/tempus/fachbereich';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:FACHBEREICH="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/liste">
<?php
if (is_array($fachbereiche)) {
foreach ($fachbereiche as $fb)
{
?>
<RDF:li>
<RDF:Description id="<?php echo $fb->id; ?>" about="<?php echo $rdf_url.'/'.$fb->id; ?>" >
<FACHBEREICH:id><?php echo $fb->id ?></FACHBEREICH:id>
<FACHBEREICH:kurzbz><?php echo $fb->kurzbz ?></FACHBEREICH:kurzbz>
<FACHBEREICH:bezeichnung><?php echo $fb->bezeichnung ?></FACHBEREICH:bezeichnung>
<FACHBEREICH:farbe><?php echo $fb->farbe ?></FACHBEREICH:farbe>
<FACHBEREICH:studiengang_kz><?php echo $fb->studiengang_kz ?></FACHBEREICH:studiengang_kz>
<FACHBEREICH:studiengang_kurzbz><?php echo $fb->studiengang_kurzbz ?></FACHBEREICH:studiengang_kurzbz>
</RDF:Description>
</RDF:li>
<?php
}
}
?>
</RDF:Seq>
</RDF:RDF>
+144
View File
@@ -0,0 +1,144 @@
<?php
include("../vilesci/config.inc.php");
?>
/**
* Wenn einer der Tabs angeklickt wird wird der zugehoerige Tab
* im anderen Overlay auch geaendert
*/
function tabchange(select)
{
if(select=='lehreinheiten') //Auswahl des Lehreinheiten Tabs
{
document.getElementById('tab-mitarbeiter').selected=false;
document.getElementById('tab-mitarbeiter1').selected=false;
document.getElementById('tab-lehreinheiten').selected=true;
document.getElementById('tab-verband').selected=true;
document.getElementById('tabpanels-main').selectedIndex=1;
document.getElementById('tabpanels-left').selectedIndex=1;
}
else if(select=='mitarbeiter') //Auswahl des Mitarbeiter Tabs
{
document.getElementById('tab-lehreinheiten').selected=false;
document.getElementById('tab-verband').selected=false;
document.getElementById('tab-mitarbeiter').selected=true;
document.getElementById('tab-mitarbeiter1').selected=true;
document.getElementById('tabpanels-main').selectedIndex=0;
document.getElementById('tabpanels-left').selectedIndex=0;
}
}
/**
* Beim schliessen des Fensters wird ueberprueft ob Daten geaendert und noch
* nicht gespeichert wurden.
*/
function closeWindow()
{
//Wenn Daten geaendert wurden
if(treeMitarbeiterDetailChanged)
{
if(confirm("Wollen Sie die geänderten Daten speichern?"))
if(!saveMitarbeiter())
{
//Falls beim Speichern ein Fehler auftritt bleibt das Fenster offen!
return false;
}
else
window.close();
else
window.close();
}
else
window.close();
}
/**
* Wenn das Fenster Fertig geladen ist
*/
function onLoad()
{
//rebuild Listener setzen
document.getElementById('tree-liste-mitarbeiter').builder.addListener(treemenurebuildobserve);
//Eingabefelder deaktivieren
SetMitarbeiterDetailAktiv(false);
//studiengangsleiter als Default setzen
document.getElementById('tree-menu-mitarbeiter1').view.selection.select(6);
}
/**
* Aenderung des Studiensemesters
*/
function studiensemesterChange()
{
var items = document.getElementsByTagName('menuitem');
var stsem='';
//Markiertes Studiensemester holen
for(i in items)
{
if(items[i].id=='menu-properies-studiensemester-name' && items[i].getAttribute("checked")=='true')
stsem = items[i].label;
}
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var param = "type=variablechange";
param = param + "&stsem="+stsem;
//Parameter schicken
httpRequest.send(param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
{
//Statusbar setzen
setStatusBarText("Studiensemester erfolgreich geändert");
document.getElementById("tree-liste-funktionen").builder.refresh();
document.getElementById("statusbarpanel-semester").label = stsem;
MitarbeiterDetailStudiensemester_id = dbdml_errormsg;
}
else
{
alert("Fehler beim Speichern der Daten: "+dbdml_errormsg);
}
return true;
}
+170
View File
@@ -0,0 +1,170 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
include('../vilesci/config.inc.php');
include('../include/functions.inc.php');
include('../include/fas/benutzer.class.php');
// Testumgebung
//if (!isset($REMOTE_USER))
// $REMOTE_USER='pam';
//$uid=$REMOTE_USER;
$user = get_uid();
$error_msg='';
//Variablen laden
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$benutzer = new benutzer($conn);
if(!$benutzer->loadVariables($user))
$error_msg = $benutzer->errormsg;
/*echo '<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>';*/
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/fas.css" type="text/css"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
?>
<!DOCTYPE window >
<window
id="fas"
title="FAS-Online Version 0.4 vom 07. November 2006"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical"
width="800"
height="600"
persist="screenX screenY width height sizemode"
onload="onLoad()" onclose="return closeWindow()"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fas.js.php" />
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<!--
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js"/>
-->
<commandset id="maincommands">
<command id="menu-file-close:command" oncommand="closeWindow();"/>
<command id="menu-properties-studiensemester:command" oncommand="studiensemesterChange();"/>
</commandset>
<keyset id="mainkeys">
<key
id = "menu-file-close:key"
key = "D"
observes = "menu-file-close:command"
modifiers = "accel" />
</keyset>
<toolbox id="main-toolbox">
<menubar id="menu">
<menu id="menu-file" label="Datei" accesskey="D">
<menupopup id="menu-file-popup">
<menuitem
id = "menu-file-close"
key = "menu-file-close:key"
label = "Beenden"
command = "menu-file-close:command"
accesskey = "B"/>
</menupopup>
</menu>
<menu id="menu-properties" label="Einstellungen" accesskey="E">
<menupopup id="menu-properties-popup">
<menu
id = "menu-properies-studiensemester"
label = "Studiensemester">
<menupopup id="menu-properties-popup">
<?php
$stsem_arr = $benutzer->getpossibilities('semester_aktuell');
foreach ($stsem_arr as $stsem)
{
echo "
<menuitem
id = 'menu-properies-studiensemester-name'
label = '$stsem'
type = 'radio'
command = 'menu-properties-studiensemester:command'
checked = ".($benutzer->variable->semester_aktuell==$stsem?"'true' ":"'false'")." />";
}
?>
</menupopup>
</menu>
</menupopup>
</menu>
<!-- <menu id="menu-prefs" label="&menu-prefs:label;" accesskey="&menu-prefs:accesskey;">
<menupopup id="menu-prefs-popup">
<menu id="menu-prefs-stpltable" label="&menu-prefs-stpltable:label;" accesskey="&menu-prefs-stpltable:accesskey;">
<menupopup id="menu-prefs-stpltable-popup">
<menuitem
id ="menu-prefs-stpltable-stundenplan"
type ="radio"
key ="menu-prefs-stpltable-stundenplan:key"
label ="&menu-prefs-stpltable-stundenplan:label;"
command ="menu-prefs-stpltable-stundenplan:command"
accesskey ="&menu-prefs-stpltable-stundenplan:accesskey;"/>
<menuitem
id ="menu-prefs-stpltable-stundenplandev"
type ="radio"
key ="menu-prefs-stpltable-stundenplandev:key"
label ="&menu-prefs-stpltable-stundenplandev:label;"
command ="menu-prefs-stpltable-stundenplandev:command"
accesskey ="&menu-prefs-stpltable-stundenplandev:accesskey;"/>
</menupopup>
</menu>
</menupopup>
</menu>
<menu id="menu-help" label="&menu-help:label;" accesskey="&menu-help:accesskey;">
<menupopup id="menu-about-popup">
<menuitem
id = "menu-help-close"
key = "menu-help-close:key"
label = "&menu-help-close:label;"
command = "menu-help-close:command"
accesskey = "&menu-help-close:accesskey;"/>
</menupopup>
</menu> -->
</menubar>
</toolbox>
<hbox flex="1">
<tabbox id="tabbox-left" orient="vertical" flex="1">
<tabs orient="horizontal">
<tab id="tab-mitarbeiter1" label="Mitarbeiter" oncommand="tabchange('mitarbeiter');"/>
<tab id="tab-verband" label="Verband" oncommand="tabchange('lehreinheiten');"/>
<tab id="tab-ort" label="Ort" />
<!--<tab id="tab-lektor" label="Lektor" />-->
</tabs>
<tabpanels id="tabpanels-left" flex="1" >
<tree id="tree-menu-mitarbeiter1" />
<tree id="tree-verband" />
<!--<tree id="tree-ort" />
<tree id="tree-lektor" />-->
</tabpanels>
</tabbox>
<splitter collapse="before" persist="state">
<grippy />
</splitter>
<vbox id="vbox-main" flex="15" />
</hbox>
<statusbar id="status-bar" persist="collapsed">
<statusbarpanel class="statusbarpanel-iconic" id="logo-icon" />
<statusbarpanel id="statusbarpanel-semester" label="<?php echo $benutzer->variable->semester_aktuell; ?>"/>
<statusbarpanel id="statusbarpanel-db_table" label="<?php echo substr(CONN_STRING_FAS,strpos(CONN_STRING_FAS,'dbname=')+7,strpos(CONN_STRING_FAS,'user=')-strpos(CONN_STRING_FAS,'dbname=')-7); ?>"/>
<statusbarpanel id="statusbarpanel-user" label="<?php echo $user; ?>"/>
<statusbarpanel id="statusbarpanel-text" label="<?php echo htmlspecialchars($error_msg); ?>" flex="4" crop="right" />
<statusbarpanel class="statusbarpanel-iconic" id="example-status" flex="1" />
<statusbarpanel id="statusbarpanel-progressmeter" hidden='true'>
<progressmeter id="identifier" mode="undetermined"/>
</statusbarpanel>
</statusbar>
</window>
+231
View File
@@ -0,0 +1,231 @@
<?php
/**
* Erstellt ein XML File fuer die BIS-Meldung
* Personal
*/
include('../vilesci/config.inc.php');
header("content-type text/xml");
if(!$conn=pg_connect(CONN_STRING_FAS))
die("Connection Problem");
$error='<table><tr><th>Vorname</th><th>Nachname</th><th>PersNr</th><th>Fehlermeldung</th></tr>';
$funktionen='';
$stgleitung='';
$myausmass='<table><tr><th>Vorname</th><th>Nachname</th><th>Ausmass</th></tr>';
$stsem1=9;
$stsem2=8;
$jahr='2005-09-01';
$stsemwhere = "(funktion.studiensemester_fk=$stsem1 OR funktion.studiensemester_fk=$stsem2)";
if(isset($_GET['printerror']) && $_GET['printerror']=='false')
$printerror=false;
else
$printerror=true;
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
?>
<Erhalter>
<ErhKz>005</ErhKz>
<MeldeDatum>1511<?php echo date('Y');?></MeldeDatum>
<PersonalMeldung>
<?php
//$qry = "Select mitarbeiter_pk, vorname, familienname, persnr, gebdat, geschlecht, ausbildung, habilitation,funktion.besonderequalifikation, funktion.beschart1, funktion.beschart2, funktion.ausmass, funktion.verwendung,(select kennzahl from studiengang where studiengang_pk=studiengang_fk) as kennzahl, funktion.sws, funktion.hauptberuflich, funktion.hauptberuf, funktion.entwicklungsteam, funktion.funktion, (Select kennzahl from studiengang where studiengang_pk=funktion.studiengang_fk) as stgkz from person, mitarbeiter, funktion where person_pk=person_fk and mitarbeiter_pk=mitarbeiter_fk AND (studiensemester_fk=9 OR studiensemester_fk=8) AND ausgeschieden='N' and familienname!='Dummy' order by persnr ASC, beschart1 DESC";
//$qry = "Select * from vw_bis_personal";
$qry = "SET CLIENT_ENCODING TO 'UNICODE';SELECT distinct person_pk, mitarbeiter_pk, persnr, vorname, familienname, gebdat, geschlecht, ausbildung, habilitation FROM person, funktion, mitarbeiter where bismelden='J' AND person.person_pk=mitarbeiter.person_fk AND mitarbeiter.mitarbeiter_pk=funktion.mitarbeiter_fk AND $stsemwhere AND familienname!='Dummy' AND (beendigungsdatum>'$jahr' OR beendigungsdatum is null) ORDER BY persnr ASC";
if(!$result=pg_query($conn,$qry))
die("Fehler beim auslesen der Datenbank".$qry);
$aktpers=0;
while($row=pg_fetch_object($result))
{
//Neue Person
//Verwendungsblock hinausschreiben
$aktpers=$row->persnr;
$funktionen='';
$stgleitung='';
echo " <Person>\n";
echo " <PersonalNummer>".sprintf("%015d",$row->persnr)."</PersonalNummer>\n";
//Geburtsdatum
list($y,$m,$d) = explode("-",$row->gebdat);
if(date('Y')-$y<10)
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>Person muss aelter als 10 Jahre sein</td></tr>';
echo " <GeburtsDatum>".$d.$m.$y."</GeburtsDatum>\n";
//Geschlecht
if(!in_array($row->geschlecht,array('M','m','W','w')))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>Geschlecht ist ungueltig</td></tr>';
echo " <Geschlecht>".$row->geschlecht."</Geschlecht>\n";
//Hoechste abgeschlossene Ausbildung
if(!in_array($row->ausbildung,array(1,2,3,4,5,6,7,8,9,10,11)))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>HoechsteAbgeschlosseneAusbildung ist ungueltig</td></tr>';
echo " <HoechsteAbgeschlosseneAusbildung>".$row->ausbildung."</HoechsteAbgeschlosseneAusbildung>\n";
//Habilitation
if(!in_array($row->habilitation,array('J','j','N','n')))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>Habilitation ist ungueltig</td></tr>';
echo " <Habilitation>".$row->habilitation."</Habilitation>\n";
//VERWENDUNG
echo " <Verwendung>\n";
//Beschaeftigungsart1
$qry1 = "Select beschart1 from funktion where mitarbeiter_fk='$row->mitarbeiter_pk' and beschart1 in(1,2,3,4,5,6) AND $stsemwhere";
if(!$result1 = pg_query($conn,$qry1))
$error.= "<br>qry failed: $qry1";
else
if(!$row1 = pg_fetch_object($result1))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>BeschaeftigungsArt1 ist ungueltig</td></tr>';
else
$beschart1 = $row1->beschart1;
echo " <BeschaeftigungsArt1>".$beschart1."</BeschaeftigungsArt1>\n";
//Beschaeftingungsart2
$qry1 = "Select beschart2 from funktion where mitarbeiter_fk='$row->mitarbeiter_pk' and beschart2 in(1,2) AND $stsemwhere";
if(!$result1 = pg_query($conn,$qry1))
$error.= "<tr><td>qry failed: $qry1</td></tr>";
else
if(!$row1 = pg_fetch_object($result1))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>BeschaeftigungsArt2 ist ungueltig</td></tr>';
else
$beschart2 = $row1->beschart2;
echo " <BeschaeftigungsArt2>".$beschart2."</BeschaeftigungsArt2>\n";
//Beschaeftigungsausmass
$qry1 = "Select ausmass from funktion where mitarbeiter_fk='$row->mitarbeiter_pk' and ausmass in(1,2,3,4,5) AND $stsemwhere";
if(!$result1 = pg_query($conn,$qry1))
$error.= "<br>qry failed: $qry1";
else
if(!$row1 = pg_fetch_object($result1))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>Ausmass ist ungueltig</td></tr>';
else
$ausmass = $row1->ausmass;
echo " <BeschaeftigungsAusmass>".$ausmass."</BeschaeftigungsAusmass>\n";
$myausmass .= "<tr><td>$row->vorname</td><td>$row->familienname</td><td>$ausmass</td></tr>";
//Verwendung
$qry1 = "Select verwendung from funktion where mitarbeiter_fk='$row->mitarbeiter_pk' and verwendung in(1,2,3,4,5,6,7,8,9) AND $stsemwhere";
if(!$result1 = pg_query($conn,$qry1))
$error.= "<tr><td>qry failed: $qry1</td></tr>";
else
if(!$row1 = pg_fetch_object($result1))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>Verwendung ist ungueltig</td></tr>';
else
$verwendung = $row1->verwendung;
echo " <VerwendungsCode>".$verwendung."</VerwendungsCode>\n";
//Hauptberuflich / Hauptberuf
$qry1 = "Select hauptberuflich, hauptberuf from funktion where mitarbeiter_fk = '$row->mitarbeiter_pk' and hauptberuflich!='' AND $stsemwhere";
if(!$result1=pg_query($conn,$qry1))
$error.= "<tr><td>qry failed: $qry1</td></tr>";
else
if(!$row1 = pg_fetch_object($result1))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>hauptberuflich/hauptberuf ist ungueltig</td></tr>';
else
{
$hauptberuf = $row1->hauptberuf;
$hauptberuflich = $row1->hauptberuflich;
}
if(($hauptberuflich=='N' || $hauptberuflich=='n') && !in_array($hauptberuf, array(0,1,2,3,4,5,6,7,8,9,10,11,12)))
{
$qry1 = "Select hauptberuf from funktion where mitarbeiter_fk = '$row->mitarbeiter_pk' and hauptberuf in (0,1,2,3,4,5,6,7,8,9,10,11,12) AND $stsemwhere AND hauptberuf is not null limit 1";
if(!$result1 = pg_query($conn,$qry1))
$error.="<tr><td>qry failed: $qry1</td></tr>";
else
if(!$row1=pg_fetch_object($result1))
$error.='<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>hauptberuf ist ungueltig</td></tr>';
else
$hauptberuf = $row1->hauptberuf;
}
//Studiengangsleiter Funktionen zusammenbauen
$qry1 = "Select distinct kennzahl FROM studiengang where studiengang_pk in(Select studiengang_fk from funktion where funktion.funktion=5 AND $stsemwhere AND mitarbeiter_fk='$row->mitarbeiter_pk')";
if(!$result1 = pg_query($conn,$qry1))
$error.= "<tr><td>qry failed: $qry1</td></tr>";
while($row1 = pg_fetch_object($result1))
{
$x = sprintf("%04d",$row1->kennzahl);
$stgleitung.=" <StgLeitung>\n";
$stgleitung.=" <StgKz>".$x."</StgKz>\n";
$stgleitung.=" </StgLeitung>\n";
}
//FUNKTIONEN
$qry1 = "SELECT studiengang_pk, kennzahl, entwicklungsteam, besonderequalifikation FROM funktion, studiengang WHERE mitarbeiter_fk='$row->mitarbeiter_pk' AND $stsemwhere AND studiengang_fk=studiengang_pk";
if($result1 = pg_query($conn,$qry1))
{
$stg = array();
while($row1 = pg_fetch_object($result1))
{
//Wenn noch kein Funktionseintrag fuer diesen Studiengang vorhanden ist
if(!in_array($row1->studiengang_pk,$stg))
{
$stg[] = $row1->studiengang_pk;
$funktion='';
$valid=true;
$x = sprintf("%04d",$row1->kennzahl);
$funktion.= " <Funktion>\n";
$funktion.= " <StgKz>".$x."</StgKz>\n";
//$qry2 = "Select sum(sws) as sws from lehreinheit, mitarbeiterlehreinheit where lehreinheit_pk = lehreinheit_fk and (lehreinheit.studiensemester_fk=$stsem1 or lehreinheit.studiensemester_fk=$stsem2) and mitarbeiter_fk='$row->mitarbeiter_pk'";
$qry2 = "Select sum(semesterwochenstunden) as sws from lehreinheit, mitarbeiter_lehreinheit where studiengang_fk='$row1->studiengang_pk' AND lehreinheit_pk = mitarbeiter_lehreinheit.lehreinheit_fk and (lehreinheit.studiensemester_fk=$stsem1 or lehreinheit.studiensemester_fk=$stsem2) and mitarbeiter_fk='$row->mitarbeiter_pk'";
if(!$row2 = pg_fetch_object(pg_query($conn,$qry2)))
$error.="<br>qry failed: $qry2";
//Semesterwochenstunden
if($row2->sws > 80 || $row2->sws < 0)
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>SWS ist ungueltig:'.$row2->sws.'</td></tr>';
if($row2->sws==0)
$valid=false;
$funktion.= " <SWS>".sprintf("%.2f",$row2->sws)."</SWS>\n";
//Hauptberuflich
if(!in_array($hauptberuflich,array('j','J','n','N')))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>Hauptberuflich ist ungueltig</td></tr>';
$funktion.= " <Hauptberuflich>".$hauptberuflich."</Hauptberuflich>\n";
//Hauptberuf
if($hauptberuflich=='n' || $hauptberuflich=='N')
{
if(!in_array($hauptberuf, array(0,1,2,3,4,5,6,7,8,9,10,11,12)))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.' HauptberufCode ist ungueltig</td></tr>';
$funktion.= " <HauptberufCode>".$hauptberuf."</HauptberufCode>\n";
}
//Mitglied im Entwicklungsteam
if(!in_array($row1->entwicklungsteam, array('J','j','n','N')))
$funktion.= " <Entwicklungsteam>N</Entwicklungsteam>\n";
else
$funktion.= " <Entwicklungsteam>".$row1->entwicklungsteam."</Entwicklungsteam>\n";
//Besondere Qualifikation
if($row1->entwicklungsteam=='J' || $row1->entwicklungsteam=='j')
{
if(!in_array($row1->besonderequalifikation,array(0,1,2,3)))
$error.= '<tr><td>'.$row->vorname.'</td><td>'.$row->familienname.'</td><td>'.$row->persnr.'</td><td>BesondereQualifikationCode ist ungueltig</td></tr>';
$funktion.= " <BesondereQualifikationCode>".$row1->besonderequalifikation."</BesondereQualifikationCode>\n";
}
$funktion.= " </Funktion>\n";
if($valid)
$funktionen .= $funktion;
}
}
}
else
$error.="<tr><td>qry failed: $qry1</td></tr>";
if($aktpers!=0) //Ende einer Person erreicht
{
echo $stgleitung;
echo $funktionen;
echo " </Verwendung>\n";
echo " </Person>\n";
}
}
if($printerror)
{
echo $error.'</table>';
echo $myausmass.'</table>';
}
?>
</PersonalMeldung>
</Erhalter>
+300
View File
@@ -0,0 +1,300 @@
<?php
include('../vilesci/config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/fas/functions.inc.php');
require_once('../include/fas/benutzer.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING_FAS))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
if (!$conn_vilesci = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$user = get_uid();
//Studiensemester_id holen
$benutzer = new benutzer($conn_vilesci);
$benutzer->loadVariables($user);
$stsem = $benutzer->variable->semester_aktuell;
$stsem_id = getStudiensemesterIdFromName($conn, $stsem);
echo "var studiensemester_id=".$stsem_id.";";
?>
var sink;
var MenuMitarbeiterAuswahl=0;
var treemenuobservedata='';
/**
* Observer der aufgerufen wird wenn Refresh des Funktionen-Trees
* fertig ausgefuehrt wurde.
*/
var treefunktionenobserve = {
onBeginLoad: function(aSink)
{
/* Statusbar setzen */
setStatusBarText('Loading ...');
/* Progressmeter anzeigen */
document.getElementById('statusbarpanel-progressmeter').hidden=false;
},
onInterrupt: function(aSink) { },
onResume: function(aSink) { },
onEndLoad: function(aSink)
{
//debug('onEndLoad Funktionen');
/* Statusbar leeren */
setStatusBarText('');
/* Progressmeter verstecken */
document.getElementById('statusbarpanel-progressmeter').hidden=true;
/* Mitarbeiter Value Changed zuruecksetzen und Speichern Button deaktivieren */
// MitarbeiterDetailRestore();
//debug('Starting Rebuild');
document.getElementById('tree-liste-funktionen').builder.rebuild();
},
onError: function(aSink, aStatus, aErrorMsg)
{
alert('Bei der Datenuebertragung ist ein Fehler Aufgetreten. Bitte Versuchen Sie es erneut.');
}
};
/**
* Observer der aufgerufen wird wenn Refresh des Mitarbeiter-Trees
* fertig ausgefuehrt wurde.
*/
var treemenuobserve = {
onBeginLoad: function(aSink)
{
/* Statusbar setzen */
setStatusBarText('Loading ...');
/* Progressmeter anzeigen */
document.getElementById('statusbarpanel-progressmeter').hidden=false;
},
onInterrupt: function(aSink) { },
onResume: function(aSink) { },
onEndLoad: function(aSink)
{
//debug('onEndLoad');
/* Statusbar leeren */
setStatusBarText('');
/* Progressmeter verstecken */
document.getElementById('statusbarpanel-progressmeter').hidden=true;
/* Mitarbeiter Value Changed zuruecksetzen und Speichern Button deaktivieren */
MitarbeiterDetailRestore();
document.getElementById('tree-liste-mitarbeiter').builder.rebuild();
},
onError: function(aSink, aStatus, aErrorMsg)
{
alert('Bei der Datenuebertragung ist ein Fehler Aufgetreten. Bitte Versuchen Sie es erneut.');
}
};
/**
* Observer der aufgerufen wird wenn Rebuild fertig abgearbeitet wurde
* (Funktioniert mit Moz 1.7.13 nicht richtig -> Seamonkey 1.0.2 funktioniert)
*/
var treemenurebuildobserve = {
willRebuild: function(aSink) { },
didRebuild: function(aSink)
{
//debug('didRebuild:'+treemenuobservedata);
//wenn treemenuobservedata = refresheintragmerken dann wird der Mitarbeiter wieder markiert
if(treemenuobservedata=='refresheintragmerken')
MitarbeiterSelectMitarbeiter();
treemenuobservedata='';
treeMitarbeiterReload=true;
}
}
/**
* Gibt eine Message auf die Javascript Console aus
*/
function debug(msg)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
.getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage(msg);
}
/**
* Beim Auswaehlen eines Mitarbeiter-Filters werden die Mitarbeiter
* die diesem Filter entsprechen geladen
*/
function onMenuMitarbeiterSelect(id)
{
//Falls Daten geaendert wurden aber noch nicht gespeichert
if(treeMitarbeiterDetailChanged)
{
if(confirm("Wollen Sie die geänderten Daten speichern?"))
saveMitarbeiter();
else
treeMitarbeiterDetailChanged=false;
}
var tree=document.getElementById(id);
var content=document.getElementById('tree-liste-mitarbeiter');
var col = tree.columns ? tree.columns["tree-menu-mitarbeiter-col-filter"] : "tree-menu-mitarbeiter-col-filter";
var filter=tree.view.getCellText(tree.currentIndex,col);
var url = "<?php echo APP_ROOT; ?>rdf/fas/mitarbeiter.rdf.php";
var attributes="?type=unknown&leerzeichencodierung=true";
if(filter=="")
filter="Studiengangsleiter";
if (filter=="Studiengangsleiter")
{
attributes+="&stgl=true";
MenuMitarbeiterAuswahl=0;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
}
if (filter=="Fachbereichsleiter")
{
attributes+="&fbl=true";
MenuMitarbeiterAuswahl=1;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
}
if (filter=="Alle")
{
attributes+="&alle=true";
MenuMitarbeiterAuswahl=2;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
}
if (filter=="Aktive")
{
attributes+="&aktiv=true";
MenuMitarbeiterAuswahl=3;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
}
if (filter=="FixAngestellte")
{
attributes+="&fix=true&aktiv=true";
MenuMitarbeiterAuswahl=4;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
}
if (filter=="FixAngestellteAlle")
{
attributes+="&fix=true";
MenuMitarbeiterAuswahl=5;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
}
if (filter=="Inaktive")
{
attributes+="&aktiv=false";
MenuMitarbeiterAuswahl=6;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
}
if (filter=="Karenziert")
{
attributes+="&karenziert=true";
MenuMitarbeiterAuswahl=7;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
}
if (filter=="Ausgeschieden")
{
attributes+="&ausgeschieden=true";
MenuMitarbeiterAuswahl=8;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
}
if (filter=="FreiAngestellte")
{
attributes+="&fix=false&aktiv=true";
MenuMitarbeiterAuswahl=9;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
}
if (filter=="FreiAngestellteAlle")
{
attributes+="&fix=false";
MenuMitarbeiterAuswahl=10;
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
}
//Timestamp anhaengen da beim Laden von Zwischengespeicherten Dateien kein
//Observer Event ausgeloest wird.
url+=attributes+'&'+gettimestamp();
treeMitarbeiterReload=false;
//Mitarbeiter Detail Felder deaktivieren
SetMitarbeiterDetailAktiv(false);
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
//Alte Datasources loeschen
var oldDatasources = content.database.GetDataSources();
while(oldDatasources.hasMoreElements())
content.database.RemoveDataSource(oldDatasources.getNext());
//Neue Datasource setzen
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var newDs = rdfService.GetDataSource(url);
content.database.AddDataSource(newDs);
//Sink Observer anhaengen
sink = newDs.QueryInterface(Components.interfaces.nsIRDFXMLSink);
sink.addXMLSinkObserver(treemenuobserve);
}
/**
* Bei Auswahl des Verbandes wird lehreinheiten.rdf
* fuer die zugehoerige Gruppe/Studiengang geladen
*/
function onMenuVerbandSelect()
{
tree = document.getElementById('tree-verband');
//Studiengang, Gruppe und Ausbildungssemester holen
var col = tree.columns ? tree.columns["tree-verband-studiengang_id"] : "tree-verband-studiengang_id";
var studiengang_id=tree.view.getCellText(tree.currentIndex,col);
col = tree.columns ? tree.columns["tree-verband-gruppe_id"] : "tree-verband-gruppe_id";
var gruppe_id=tree.view.getCellText(tree.currentIndex,col);
col = tree.columns ? tree.columns["tree-verband-ausbildungssemester_id"] : "tree-verband-ausbildungssemester_id";
var ausbildungssemester_id=tree.view.getCellText(tree.currentIndex,col);
//Tree fuellen
lehreinheitentree = document.getElementById('tree-liste-lehreinheiten');
if(gruppe_id==0)
url = '<?php echo APP_ROOT; ?>rdf/fas/lehreinheiten.rdf.php?studiengang_id='+studiengang_id;
else
url = '<?php echo APP_ROOT; ?>rdf/fas/lehreinheiten.rdf.php?gruppe_id='+gruppe_id;
lehreinheitentree.setAttribute('datasources',url);
document.getElementById('textbox-lehreinheiten-detail-studiengang').value=studiengang_id;
document.getElementById('textbox-lehreinheiten-ausbildungssemester_id').value=ausbildungssemester_id;
}
/**
* Parst einen RDF String
*/
function parseRDFString(str, url)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var memoryDS = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource);
var ios=Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
baseUri=ios.newURI(url,null,null);
var parser=Components.classes["@mozilla.org/rdf/xml-parser;1"].createInstance(Components.interfaces.nsIRDFXMLParser);
parser.parseString(memoryDS,baseUri,str);
return memoryDS;
}
/**
* Liefert Wert aus Datasource
*/
function getTargetHelper(dsource,subj,predi)
{
if (dsource.hasArcOut(subj, predi))
{
var target = dsource.GetTarget(subj, predi, true);
if (target instanceof Components.interfaces.nsIRDFLiteral)
return target.Value;
if (target instanceof Components.interfaces.nsIRDFInt) //Fuer Integer Werte
return target.Value;
}
return "";
}
+238
View File
@@ -0,0 +1,238 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
include('../vilesci/config.inc.php');
echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiteroverlay.xul.php"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/lehreinheitenoverlay.xul.php"?>';
/*echo '<?xul-overlay href="'.APP_ROOT.'content/studentenoverlay.xul.php"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/lfvtoverlay.xul.php"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/stpl-week-overlay.xul.php"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/stpl-semester-overlay.xul.php"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/fas.css" type="text/css"?>';*/
?>
<!DOCTYPE overlay >
<overlay id="FASOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fasoverlay.js.php" />
<!--
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js"/>
-->
<tree id="tree-menu-mitarbeiter1" onselect="onMenuMitarbeiterSelect('tree-menu-mitarbeiter1');"
seltype="single" hidecolumnpicker="true" flex="1"
>
<treecols>
<treecol id="tree-menu-mitarbeiter-col-name" label="Filter" primary="true" flex="1"/>
<treecol id="tree-menu-mitarbeiter-col-filter" label="ColFilter" hidden="true" flex="1"/>
</treecols>
<treechildren>
<treeitem>
<treerow>
<treecell label="Alle"/>
<treecell label="Alle"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="FixAngestellte"/>
<treecell label="FixAngestellteAlle"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="FreiAngestellte"/>
<treecell label="FreiAngestellteAlle"/>
</treerow>
</treeitem>
<treeitem container="true" open="true">
<treerow>
<treecell label="Aktive"/>
<treecell label="Aktive"/>
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="FixAngestellte"/>
<treecell label="FixAngestellte"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="FreiAngestellte"/>
<treecell label="FreiAngestellte"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Studiengangsleiter"/>
<treecell label="Studiengangsleiter"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Fachbereichsleiter"/>
<treecell label="Fachbereichsleiter"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
<treeitem container="true" open="true">
<treerow>
<treecell label="Inaktive"/>
<treecell label="Inaktive"/>
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="Karenziert"/>
<treecell label="Karenziert"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Ausgeschieden"/>
<treecell label="Ausgeschieden"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</tree>
<tree id="tree-verband" onselect="onMenuVerbandSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
datasources="<?php echo APP_ROOT; ?>rdf/fas/student-verbaende.rdf.php" ref="http://www.technikum-wien.at/gruppen/liste"
>
<treecols>
<treecol id="tree-verband-name" label="Name" flex="2" primary="true"/>
<splitter class="tree-splitter"/>
<treecol id="tree-verband-bezeichnung" label="Bezeichnung" flex="15" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="tree-verband-studiengang_id" label="StudiengangID" flex="15" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="tree-verband-gruppe_id" label="GruppenID" flex="15" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="tree-verband-ausbildungssemester_id" label="AusbildungssemesterID" flex="15" hidden="true"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/gruppen/rdf#name"/>
<treecell label="rdf:http://www.technikum-wien.at/gruppen/rdf#studiengang_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/gruppen/rdf#studiengang_id"/>
<treecell label="rdf:http://www.technikum-wien.at/gruppen/rdf#gruppe_id"/>
<treecell label="rdf:http://www.technikum-wien.at/gruppen/rdf#ausbildungssemester_id"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<tree id="tree-ort" onselect="onOrtSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
datasources="" ref="http://www.technikum-wien.at/tempus/ort/alle-orte">
<treecols>
<treecol id="raumtyp" label="Raumtyp" flex="2" primary="true" />
<splitter class="tree-splitter"/>
<treecol id="ort_kurzbz" label="Raum" flex="4" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="hierarchie" label="HI" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="ort_bezeichnung" label="Bezeichnung" flex="3" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="max_person" label="MaxP" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#raumtyp"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#ort_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#hierarchie"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#ort_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#max_person"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<tree id="tree-lektor" onselect="onLektorSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
datasources="mitarbeiter.rdf.php" ref="http://www.technikum-wien.at/tempus/mitarbeiter/alle">
<treecols>
<treecol id="kurzbz" label="Kuerzel" flex="2" primary="true" />
<splitter class="tree-splitter"/>
<treecol id="nachname" label="Nachname" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="vornamen" label="Vornamen" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="titel" label="Titel" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="uid" label="UID" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#nachname"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#vornamen"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#titel"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#uid"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
-->
<vbox id="vbox-main">
<tabbox id="tabbox-main" flex="3" orient="vertical">
<tabs orient="horizontal">
<tab id="tab-mitarbeiter" label="Mitarbeiter" oncommand="tabchange('mitarbeiter');" />
<tab id="tab-lehreinheiten" label="Lehreinheiten" oncommand="tabchange('lehreinheiten');"/>
<!--<tab id="tab-semester" label="Semesterplan" />
<tab id="tab-studenten" label="Studenten" />-->
<!-- <tab id="tab-lfvt" label="Lehrveranstaltung" /> -->
</tabs>
<tabpanels id="tabpanels-main" flex="1">
<!-- Mitarbeiter -->
<vbox id="MitarbeiterEditor" />
<vbox id="LehreinheitenEditor" />
<!-- Wochenplan -->
<!-- <hbox id="hboxTimeTableWeek" /> -->
<!-- Semesterplan -->
<!-- <vbox id="vboxTimeTableSemester" /> -->
<!-- Studenten -->
<!-- <vbox id="studentenEditor" /> -->
<!-- Lehrfachverteilung -->
<!-- <vbox id="lfvtEditor" /> -->
</tabpanels>
</tabbox>
</vbox>
</overlay>
+237
View File
@@ -0,0 +1,237 @@
<?php
require('../vilesci/config.inc.php');
?>
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
/**
* Wird zu Beginn einer DragnDrop Session aufgerufen.
* Hier werden die Flayvour und die zu uebertragenden Daten
* festgelegt.
*/
function treeDragGesture(event)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
var tree = document.getElementById('tree-liste-lehreinheiten')
var row = { }
var col = { }
var child = { }
//Index der Quell-Row ermitteln
tree.treeBoxObject.getCellAt(event.pageX, event.pageY, row, col, child)
//Wenn es keine Row ist sondern ein Header oder Scrollbar dann das DnD abbrechen
if (!col.value)
return false;
//Lehreinheit_id ermitteln
col = tree.columns ? tree.columns["tree-liste-lehreinheiten-col-lehreinheit_id"] : "tree-liste-lehreinheiten-col-lehreinheit_id";
lehreinheit_id=tree.view.getCellText(row.value,col);
var ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
//Flavour anhaengen
trans.addDataFlavor("lva");
var textWrapper = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
//Daten anhaengen
textWrapper.data = lehreinheit_id;
trans.setTransferData("lva", textWrapper, textWrapper.data.length*2);
var transArray = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
transArray.AppendElement(trans);
// Actually start dragging
ds.invokeDragSession(event.target, transArray, null, ds.DRAGDROP_ACTION_COPY + ds.DRAGDROP_ACTION_MOVE);
event.stopPropagation();
}
/**
* Wird aufgerufen wenn Drag Event von Ausserhalb des eigenen Windows kommt
*/
function treeDragEnter(event)
{
//Not implemented
}
/**
* Drag ueber ein Element
*/
function DragOverContentArea ( event )
{
var validFlavor = false;
var dragSession = null;
var targetNode = event.target
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var dragService = Components.classes["@mozilla.org/widget/dragservice;1"].
getService().QueryInterface(Components.interfaces.nsIDragService);
if( dragService )
{
dragSession = dragService.getCurrentSession();
if( dragSession )
{
if( dragSession.isDataFlavorSupported("moz/toolbaritem") )
validFlavor = true;
else if ( dragSession.isDataFlavorSupported("lva") )
validFlavor = true;
if ( validFlavor )
{
//Style action
//targetNode.style.backgroundColor = "red";
//targetNode.style.color = "red";
//event.originalTarget.style.color = "red";
dragSession.canDrop = true;
event.stopPropagation();
}
}
}
}
function treeDragExit(event)
{
//Not implemented
}
var dragservice_ds;
/**
* Holt die Daten aus der DragSession
*/
function getDragData(aFlavourSet)
{
debug('getdragdata in');
/*try
{
var ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch(e)
{
debug('getDragData() in lehreinheitenDragnDrop.js.php hat folgenden Fehler verursacht: '+e);
}
*/
var ds = dragservice_ds;
var ses = ds.getCurrentSession()
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var supportsArray = Components.classes["@mozilla.org/supports-array;1"]
.createInstance(Components.interfaces.nsISupportsArray);
for (var i = 0; i < ses.numDropItems; ++i)
{
var trans = nsTransferable.createTransferable();
for (var j = 0; j < aFlavourSet.flavours.length; ++j)
trans.addDataFlavor(aFlavourSet.flavours[j].contentType);
ses.getData(trans, i);
supportsArray.AppendElement(trans);
}
debug('getdragdata out');
return supportsArray;
}
/**
* (Wenn gedroppt wird)
* Speichert die Partizipierung
*/
function treeDragDrop(event)
{
event.stopPropagation();
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
try {
dragservice_ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch (e)
{
debug('treeDragDrop: e');
}
debug('treeDragDrop in');
var ds = dragservice_ds;
var ses = ds.getCurrentSession()
var sourceNode = ses.sourceNode
var tree = document.getElementById('tree-liste-lehreinheiten')
var row = { }
var col = { }
var child = { }
tree.treeBoxObject.getCellAt(event.pageX, event.pageY, row, col, child)
if(row.value!=-1) //Drop on Row
{
//Ziel Lehreinheit holen
col = tree.columns ? tree.columns["tree-liste-lehreinheiten-col-lehreinheit_id"] : "tree-liste-lehreinheiten-col-lehreinheit_id";
ziel_lehreinheit_id=tree.view.getCellText(row.value,col);
}
else
ziel_lehreinheit_id=-1; //Drop on Header or empty place
//Quell Lehreinheit holen
var flavourset = new FlavourSet();
flavourset.appendFlavour("lva");
var transferData = nsTransferable.get(flavourset, getDragData, true);
quell_lehreinheit_id=transferData.first.first.data;
if(quell_lehreinheit_id!=ziel_lehreinheit_id)
{
//Pratizipierung Speichern
if(confirm('Wollen Sie diese Lehreinheit wirklich verschieben'))
{
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var param = 'type=lva_partizipierung&ziel_lehreinheit_id='+ziel_lehreinheit_id+'&quell_lehreinheit_id='+quell_lehreinheit_id;
//Parameter schicken
httpRequest.send(param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
default: //passiert hoffentlich nie
alert("Fehler: DragnDrop Request Error");
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
RefreshLehreinheitenTree();
else
alert(dbdml_errormsg);
}
}
else
{
alert('Partizipierung von sich selbst ist nicht moeglich');
}
}
+353
View File
@@ -0,0 +1,353 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
?>
<!DOCTYPE overlay>
<overlay id="LehreinheitenDetailOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<vbox id="LehreinheitenDetailEditor" flex="1" style="overflow:auto">
<textbox id="textbox-lehreinheiten-detail-lehreinheit_id" hidden="true" />
<tabbox id="tabbox-lehreinheitenDetail" flex="3" orient="vertical" hidden="false">
<tabs orient="horizontal">
<tab id="tab-lehreinheiten-daten" label="Daten" />
<tab id="tab-lehreinheiten-lektoren" label="Lektoren" />
</tabs>
<tabpanels id="tabpanels-lehreinheiten-main" flex="1">
<!--Daten-->
<vbox style="margin-top: 5px;">
<textbox id="textbox-lehreinheiten-detail-studiengang" oninput="LehreinheitenDetailValueChange()" hidden="true"/>
<textbox id="textbox-lehreinheiten-detail-studiensemester" oninput="LehreinheitenDetailValueChange()" hidden="true"/>
<textbox id="textbox-lehreinheiten-detail-lehrveranstaltung" oninput="LehreinheitenDetailValueChange()" hidden="true"/>
<textbox id="textbox-lehreinheiten-detail-lehreinheit_fk" oninput="LehreinheitenDetailValueChange()" hidden="true"/>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true"
>
<columns>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="menulist-lehreinheiten-detail-fachbereich" value="Fachbereich:"/>
<menulist id="menulist-lehreinheiten-detail-fachbereich" oncommand="LehreinheitenDetailValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/fachbereich.rdf.php"
ref="http://www.technikum-wien.at/fachbereich/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/fachbereich/rdf#name"
value="rdf:http://www.technikum-wien.at/fachbereich/rdf#fachbereich_id"/>
</menupopup>
</template>
</menulist>
<label align="end" control="menulist-lehreinheiten-detail-ausbildungssemester" value="Ausbildungssemester:"/>
<menulist id="menulist-lehreinheiten-detail-ausbildungssemester" oncommand="LehreinheitenDetailsetGruppenMenulistDatasource();LehreinheitenDetailValueChange();"
datasources="rdf:null"
ref="http://www.technikum-wien.at/ausbildungssemester/liste">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/ausbildungssemester/rdf#name"
value="rdf:http://www.technikum-wien.at/ausbildungssemester/rdf#ausbildungssemester_id"/>
</menupopup>
</template>
</menulist>
<label align="end" control="menulist-lehreinheiten-detail-gruppe" value="Gruppe:"/>
<menulist id="menulist-lehreinheiten-detail-gruppe" oncommand="LehreinheitenDetailValueChange();"
datasources="rdf:null"
ref="http://www.technikum-wien.at/gruppen/liste">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/gruppen/rdf#fullname"
value="rdf:http://www.technikum-wien.at/gruppen/rdf#gruppe_id"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="textbox-lehreinheiten-detail-bezeichnung" value="Bezeichnung: "/>
<textbox id="textbox-lehreinheiten-detail-bezeichnung" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
<label control="textbox-lehreinheiten-detail-kurzbezeichnung" value="Kurzbezeichnung: "/>
<textbox id="textbox-lehreinheiten-detail-kurzbezeichnung" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
<label align="end" control="menulist-lehreinheiten-detail-lehrform" value="Lehrform:"/>
<menulist id="menulist-lehreinheiten-detail-lehrform" oncommand="LehreinheitenDetailValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/lehrform.rdf.php"
ref="http://www.technikum-wien.at/lehrform/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/lehrform/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/lehrform/rdf#lehrform_id"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="textbox-lehreinheiten-detail-nummer" value="Nummer: "/>
<textbox id="textbox-lehreinheiten-detail-nummer" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
<label align="end" control="menulist-lehreinheiten-detail-koordinator" value="Koordinator:"/>
<menulist id="menulist-lehreinheiten-detail-koordinator" oncommand="LehreinheitenDetailValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/mitarbeiter.rdf.php?aktiv=true"
ref="http://www.technikum-wien.at/mitarbeiter/alle">
<template>
<menupopup>
<menuitem value="-1" label="Kein Koordinator" />
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname^ rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname"
value="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#mitarbeiter_id"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname"
/>
</menupopup>
</template>
</menulist>
</row>
</rows>
</grid>
<groupbox>
<caption label="Kosten" />
<vbox flex="1" style="margin: 5px;">
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true"
>
<columns>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label control="textbox-lehreinheiten-detail-sws" value="Semesterwochenstunden: "/>
<textbox id="textbox-lehreinheiten-detail-sws" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
<label control="textbox-lehreinheiten-detail-gesamtstunden" value="Gesamtstunden: "/>
<textbox id="textbox-lehreinheiten-detail-gesamtstunden" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
</row>
<row>
<label control="textbox-lehreinheiten-detail-planlektoren" value="Anzahl der Lektoren: "/>
<hbox><textbox id="textbox-lehreinheiten-detail-planlektoren" maxlength="2" oninput="LehreinheitenDetailValueChange()"/><spacer flex="1"/></hbox>
<label control="textbox-lehreinheiten-detail-plankostenprolektor" value="Kosten pro Lektor: "/>
<textbox id="textbox-lehreinheiten-detail-plankostenprolektor" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
<label control="textbox-lehreinheiten-detail-planfaktor" value="Geplanter Faktor: "/>
<textbox id="textbox-lehreinheiten-detail-planfaktor" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
</row>
</rows>
</grid>
</vbox>
</groupbox>
<groupbox>
<caption label="LV-Planung" />
<vbox flex="1" style="margin: 5px;">
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true"
>
<columns>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="menulist-lehreinheiten-detail-raumtyp" value="Raumtyp:"/>
<menulist id="menulist-lehreinheiten-detail-raumtyp" oncommand="LehreinheitenDetailValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/raumtyp.rdf.php"
ref="http://www.technikum-wien.at/raumtyp/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/raumtyp/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/raumtyp/rdf#raumtyp_id"/>
</menupopup>
</template>
</menulist>
<label align="end" control="menulist-lehreinheiten-detail-raumtypalternativ" value="Raumtyp Alternativ:"/>
<menulist id="menulist-lehreinheiten-detail-raumtypalternativ" oncommand="LehreinheitenDetailValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/raumtyp.rdf.php"
ref="http://www.technikum-wien.at/raumtyp/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/raumtyp/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/raumtyp/rdf#raumtyp_id"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label align="end" control="menulist-lehreinheiten-detail-wochenrythmus" value="Wochenrythmus:"/>
<menulist id="menulist-lehreinheiten-detail-wochenrythmus" oncommand="LehreinheitenDetailValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/wochenrythmus.rdf.php"
ref="http://www.technikum-wien.at/wochenrythmus/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/wochenrythmus/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/wochenrythmus/rdf#wochenrythmus_id"/>
</menupopup>
</template>
</menulist>
<label control="textbox-lehreinheiten-detail-kalenderwoche" value="Kalenderwoche: "/>
<textbox id="textbox-lehreinheiten-detail-kalenderwoche" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
<label control="textbox-lehreinheiten-detail-stundenblockung" value="Stundenblockung: "/>
<textbox id="textbox-lehreinheiten-detail-stundenblockung" maxlength="255" flex="1" oninput="LehreinheitenDetailValueChange()"/>
</row>
</rows>
</grid>
<hbox>
<label control="textbox-lehreinheiten-detail-bemerkungen" value="Bemerkung:"/>
<textbox id="textbox-lehreinheiten-detail-bemerkungen" multiline="true" oninput="LehreinheitenDetailValueChange()" flex="1"/>
</hbox>
</vbox>
</groupbox>
<hbox>
<spacer flex="1"/>
<button label="Abbrechen" oncommand="LehreinheitenTreeAuswahl();"/>
<button label="Speichern" oncommand="LehreinheitenDetailSpeichern()"/>
</hbox>
<spacer flex="5"/>
</vbox>
<!--Lektoren Tab-->
<vbox>
<hbox flex="1" style="padding: 10px">
<vbox width="250">
<hbox flex="1">
<tree id="tree-liste-mitarbeiterlehreinheiten" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/mitarbeiterlehreinheiten/alle"
onselect="MitarbeiterLehreinheitenTreeAuswahl();" flags="dont-build-content"
style="border: 1px solid black;"
>
<treecols>
<treecol id="tree-liste-mitarbeiterlehreinheiten-col-nachname" label="Nachname" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheiten/rdf#nachname" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiterlehreinheiten-col-vorname" label="Vorname" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheiten/rdf#vorname" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiterlehreinheiten-col-mitarbeiter_lehreinheit_id" label="MitarbeiterLehreinheitID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheiten/rdf#mitarbeiter_lehreinheit_id" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheiten/rdf#nachname" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheiten/rdf#vorname" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheiten/rdf#mitarbeiter_lehreinheit_id" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<spacer />
</hbox>
<hbox>
<button label="+" oncommand="MitarbeiterLehreinheitenAdd()" style="max-width: 30px;"/>
<button label="-" oncommand="MitarbeiterLehreinheitenDel()" style="max-width: 30px;"/>
</hbox>
</vbox>
<vbox>
<hbox>
<groupbox>
<caption label="Lektorendaten" />
<vbox flex="1">
<textbox id="textbox-lehreinheiten-detail-lektoren-lehreinheit_id" hidden="true"/>
<textbox id="textbox-lehreinheiten-detail-lektoren-mitarbeiter_lehreinheit_id" hidden="true"/>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true"
>
<columns>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="menulist-lehreinheiten-detail-funktion" value="Funktion:"/>
<menulist id="menulist-lehreinheiten-detail-funktion" disabled="true" oncommand="LehreinheitenDetailLektorValueChanged();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/mitarbeiterlehreinheitenfunktionen.rdf.php"
ref="http://www.technikum-wien.at/mitarbeiterlehreinheitenfunktionen/alle" flex="1">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheitenfunktionen/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheitenfunktionen/rdf#funktion_id"/>
</menupopup>
</template>
</menulist>
<label align="end" control="menulist-lehreinheiten-detail-mitarbeiterauswahl" value="Lektor:"/>
<hbox flex="1">
<menulist id="menulist-lehreinheiten-detail-mitarbeiterauswahl" disabled="true" oncommand="LehreinheitenDetailLektorValueChanged();"
datasources="rdf:*"
ref="http://www.technikum-wien.at/mitarbeiterlehreinheitenauswahl/alle" flex="1">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheitenauswahl/rdf#nachname rdf:http://www.technikum-wien.at/mitarbeiterlehreinheitenauswahl/rdf#vorname"
value="rdf:http://www.technikum-wien.at/mitarbeiterlehreinheitenauswahl/rdf#mitarbeiter_id"/>
</menupopup>
</template>
</menulist>
<button label='+' id="button-lehreinheiten-detail-lektoren-auswahladd" disabled="true" oncommand='OpenMitarbeiterAuswahlDialog()' style="max-width: 30px;"/>
</hbox>
</row>
<row>
<label control="textbox-lehreinheiten-detail-lektoren-kosten" value="Kosten: "/>
<textbox id="textbox-lehreinheiten-detail-lektoren-kosten" disabled="true" maxlength="255" flex="1" oninput="LehreinheitenDetailLektorValueChanged()"/>
<label control="textbox-lehreinheiten-detail-lektoren-gesamtstunden" value="Gesamtstunden: "/>
<textbox id="textbox-lehreinheiten-detail-lektoren-gesamtstunden" disabled="true" maxlength="255" flex="1" oninput="LehreinheitenDetailLektorValueChanged()"/>
</row>
<row>
<label control="textbox-lehreinheiten-detail-lektoren-faktor" value="Faktor: "/>
<textbox id="textbox-lehreinheiten-detail-lektoren-faktor" disabled="true" maxlength="255" flex="1" oninput="LehreinheitenDetailLektorValueChanged()"/>
<label control="textbox-lehreinheiten-detail-lektoren-differenz" value="Differenz: "/>
<textbox id="textbox-lehreinheiten-detail-lektoren-differenz" maxlength="255" flex="1" oninput="LehreinheitenDetailLektorValueChanged()" disabled="true"/>
</row>
</rows>
</grid>
<hbox flex="1">
<spacer flex="1" />
<button label="Speichern" disabled="true" id="button-lehreinheiten-detail-lektoren-save" oncommand="MitarbeiterLehreinheitenZuteilungSave();"/>
</hbox>
</vbox>
</groupbox>
</hbox>
</vbox>
<spacer flex="1" />
</hbox>
</vbox>
</tabpanels>
</tabbox>
</vbox>
</overlay>
@@ -0,0 +1,23 @@
<?php
include("../vilesci/config.inc.php");
?>
function LehreinheitenMitarbeiterHinzufuegen()
{
tree = document.getElementById('tree-liste-lehreinheiten-mitarbeiter');
var idx;
if(tree.currentIndex>=0)
idx = tree.currentIndex;
else
{
alert('Bitte zuerst einen Lektor auswaehlen');
return false;
}
//MitarbeiterLehreinheit_id holen
var col = tree.columns ? tree.columns["tree-liste-lehreinheiten-mitarbeiter-col-mitarbeiter_id"] : "tree-liste-lehreinheiten-mitarbeiter-col-mitarbeiter_id";
var mitarbeiter_id=tree.view.getCellText(idx,col);
window.opener.MitarbeiterLehreinheitAuswahlAdd(mitarbeiter_id);
window.close();
}
@@ -0,0 +1,94 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/fas.css" type="text/css"?>';
?>
<window id="lehreinheiten-mitarbeiter-dialog" title="Mitarbeiter Auswahl"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/lehreinheitenmitarbeiterdialog.js.php" />
<tree id="tree-liste-lehreinheiten-mitarbeiter" seltype="single" hidecolumnpicker="false" flex="1"
datasources="<?php echo APP_ROOT; ?>rdf/fas/mitarbeiter.rdf.php?aktiv=true"
ref="http://www.technikum-wien.at/mitarbeiter/alle"
flags="dont-build-content"
enableColumnDrag="true" style="margin:5px;"
persist="height"
>
<treecols>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-anrede" label="Anrede" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#anrede" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-titelpre" label="Titel(Pre)" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpre" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-vorname" label="Vorname" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-vornamen" label="Vornamen" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vornamen" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-nachname" label="Nachname" flex="2" hidden="false" primary="true"
class="sortDirectionIndicator" sortActive="true" sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-titelpost" label="Titel(Post)" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpost" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-uid" label="UID" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-mitarbeiter_id" label="mitarbeiter_id" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#mitarbeiter_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-mitarbeiter-col-person_id" label="person_id" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#person_id" />
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#anrede" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpre" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vornamen" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpost" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#mitarbeiter_id" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#person_id" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox>
<hbox flex="1">
<spacer flex="1"/>
<button id="button-lehreinheiten-mitarbeiter-auswahl" label="Hinzufuegen" oncommand="LehreinheitenMitarbeiterHinzufuegen();" />
</hbox>
</vbox>
</window>
+30
View File
@@ -0,0 +1,30 @@
<?php
include("../vilesci/config.inc.php");
?>
/**
* Fuegt eine neue Lehreinheit hinzu.
* Wenn das anlegen erfolgreich war, wird das Dialogfenster geschlossen.
*/
function LehreinheitenLVAHinzufuegen()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
//Markierten Eintrag holen
tree = document.getElementById('tree-liste-lehreinheiten-lehrveranstaltung');
var idx;
if(tree.currentIndex>=0)
idx = tree.currentIndex;
else
{
alert('Bitte zuerst einen Lektor auswaehlen');
return false;
}
//LVA_id holen
var col = tree.columns ? tree.columns["tree-liste-lehreinheiten-lehrveranstaltung-col-lehrveranstaltung_id"] : "tree-liste-lehreinheiten-lehrveranstaltung-col-lehrveranstaltung_id";
var lehrveranstaltung_id=tree.view.getCellText(idx,col);
if(window.opener.LehreinheitenNeu1(lehrveranstaltung_id))
window.close();
}
+78
View File
@@ -0,0 +1,78 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>'."\n";
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/fas.css" type="text/css"?>';
if(isset($_GET['stg_id']))
{
$parameter='?studiengang_id='.$_GET['stg_id'];
if(isset($_GET['ausbildungssemester_id']) && $_GET['ausbildungssemester_id']!='0')
$parameter.='&amp;ausbildungssemester_id='.$_GET['ausbildungssemester_id'];
}
else
$parameter='';
?>
<window id="lehreinheiten-mitarbeiter-dialog" title="Mitarbeiter Auswahl"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/lehreinheitenneudialog.js.php" />
<tree id="tree-liste-lehreinheiten-lehrveranstaltung" seltype="single" hidecolumnpicker="false" flex="1"
datasources="<?php echo APP_ROOT; ?>rdf/fas/lehrveranstaltungen.rdf.php<?php echo $parameter; ?>"
ref="http://www.technikum-wien.at/lehrveranstaltung/liste"
flags="dont-build-content"
enableColumnDrag="true" style="margin:5px;"
persist="height"
ondblclick="LehreinheitenLVAHinzufuegen()"
>
<treecols>
<treecol id="tree-liste-lehreinheiten-lehrveranstaltung-col-lehrveranstaltung_id" label="LVA_id" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#lehrveranstaltung_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-lehrveranstaltung-col-name" label="Name" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#name" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-lehrveranstaltung-col-ausbildungssemester" label="Ausbildungssemester" flex="1" hidden="false"
class="sortDirectionIndicator" sortActive="true" sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#ausbildungssemester_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-lehrveranstaltung-col-fachbereich" label="Fachbereich" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#fachbereich_bezeichnung" />
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#lehrveranstaltung_id" />
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#name" />
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#ausbildungssemester_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#fachbereich_bezeichnung" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox>
<hbox flex="1">
<spacer flex="1"/>
<button id="button-lehreinheiten-mitarbeiter-auswahl" label="Hinzufuegen" oncommand="LehreinheitenLVAHinzufuegen();" />
</hbox>
</vbox>
</window>
File diff suppressed because it is too large Load Diff
+204
View File
@@ -0,0 +1,204 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/fas.css" type="text/css"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/lehreinheitendetailoverlay.xul.php"?>';
// rdf:null
?>
<!DOCTYPE overlay>
<overlay id="LehreinheitenOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/lehreinheitenoverlay.js.php" />
<!--
<script src="chrome://global/content/nsTransferable.js"/>
-->
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/lehreinheitenDragnDrop.js.php" />
<vbox id="LehreinheitenEditor" flex="1">
<keyset>
<key id="lehreinheiten-delete-key" keycode="VK_DELETE" oncommand="LehreinheitenDelete();"/>
<key id="lehreinheiten-new-key" modifiers="control" key="N" oncommand="LehreinheitenNeu();"/>
</keyset>
<toolbox>
<toolbar id="toolbar-LehreinheitenEditor">
<toolbarbutton id="toolbar-LehreinheitenEditor-neu" label=" Neu" key="lehreinheiten-new-key" oncommand="LehreinheitenNeu();" image="../skin/images/NeuDokument.png" tooltiptext="Neue Lehreinheit anlegen" />
<toolbarbutton id='toolbar-LehreinheitenEditor-loeschen' label=" Löschen" key="lehreinheiten-delete-key" oncommand="LehreinheitenDelete();" image="../skin/images/DeleteIcon.png" tooltiptext="Lehreinheiten löschen" />
<toolbarbutton label=" Neu Laden" oncommand="RefreshLehreinheitenTree()" image="../skin/images/refresh.png" tooltiptext="Liste neu laden" />
</toolbar>
</toolbox>
<textbox id="textbox-lehreinheiten-ausbildungssemester_id" oninput="LehreinheitenDetailValueChange()" hidden="true"/>
<tree id="tree-liste-lehreinheiten" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/lehreinheiten/liste"
onselect="LehreinheitenTreeAuswahl();" flags="dont-build-content"
enableColumnDrag="true"
ondraggesture="treeDragGesture(event);"
ondragenter="treeDragEnter(event);"
ondragover="return DragOverContentArea(event);"
ondragexit="treeDragExit(event);"
ondragdrop="treeDragDrop(event);"
>
<treecols>
<treecol id="tree-liste-lehreinheiten-col-bezeichnung" label="Bezeichnung" flex="2" hidden="false" primary="true"
class="sortDirectionIndicator" sortActive="true" sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#bezeichnung" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-studiengang" label="Studiengang" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#studiengang_kurzbz" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-studiensemester" label="Studiensemester" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#studiensemester_kurzbz" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-fachbereich" label="Fachbereich" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#fachbereich_bezeichnung" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-ausbildungssemester" label="Ausbildungssemester" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#ausbildungssemester_kurzbz" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-lehrform" label="Lehrform" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#lehrform_kurzbz" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-gruppe" label="Gruppe" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#gruppe_kurzbz" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-nummer" label="Nummer" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#nummer" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-kurzbezeichnung" label="Kurzbezeichnung" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#kurzbezeichnung" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-semesterwochenstunden" label="Semesterwochenstunden" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#semesterwochenstunden" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-gesamtstunden" label="Gesamtstunden" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#gesamtstunden" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-plankostenprolektor" label="Plankosten pro Lektor" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#plankostenprolektor" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-planfaktor" label="Planfaktor" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#planfaktor" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-planlektoren" label="Planlektoren" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#planlektoren" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-raumtyp_bezeichnung" label="Raumtyp" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#raumtyp_bezeichnung" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-raumtypalternativ_bezeichnung" label="Raumtyp Alternativ" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#raumtypalternativ_bezeichnung" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-bemerkungen" label="Bemerkungen" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#bemerkungen" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-wochenrythmus" label="Wochenrythmus" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#wochenrythmus" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-kalenderwoche" label="Kalenderwoche" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#kalenderwoche" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-stundenblockung" label="Stundenblockung" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#stundenblockung" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-koordinator_nachname" label="Koordinator Nachname" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#koordinator_nachname" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-koordinator_vorname" label="Koordinator Vorname" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#koordinator_vorname" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-lehreinheit_id" label="LehreinheitID" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#lehreinheit_id" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-koordinator_id" label="Koordinator_id" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#koordinator_id" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-lehreinheiten-col-gruppe_id" label="Gruppe_id" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#gruppe_id" onclick="LehreinheitenTreeSort()"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem container="true" open="true" uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#studiengang_kurzbz" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#studiensemester_kurzbz" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#fachbereich_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#ausbildungssemester_kurzbz" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#lehrform_kurzbz" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#gruppe_kurzbz" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#nummer" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#kurzbezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#semesterwochenstunden" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#gesamtstunden" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#plankostenprolektor" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#planfaktor" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#planlektoren" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#raumtyp_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#raumtypalternativ_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#bemerkungen" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#wochenrythmus" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#kalenderwoche" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#stundenblockung" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#koordinator_nachname" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#koordinator_vorname" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#lehreinheit_id" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#koordinator_id" />
<treecell label="rdf:http://www.technikum-wien.at/lehreinheiten/rdf#gruppe_id" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<splitter id="lehreinheiten-overlay-splitter" collapse="after" persist="state">
<grippy />
</splitter>
<vbox id="LehreinheitenDetailEditor" persist="height"/>
</vbox>
</overlay>
+69
View File
@@ -0,0 +1,69 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/lehrfach.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// Einheiten holen
$lehrfachDAO=new lehrfach($conn);
$lehrfaecher=$lehrfachDAO->getAll();
$rdf_url='http://www.technikum-wien.at/tempus/lehrfach';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:LEHRFACH="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/liste">
<?php
foreach ($lehrfaecher as $lehrfach)
{
?>
<RDF:li>
<RDF:Description id="<?php echo $lehrfach->lehrfach_nr; ?>" about="<?php echo $rdf_url.'/'.$lehrfach->lehrfach_nr; ?>" >
<LEHRFACH:lehrfach_nr><?php echo $lehrfach->lehrfach_nr ?></LEHRFACH:lehrfach_nr>
<LEHRFACH:bezeichnung><![CDATA[ <?php echo $lehrfach->bezeichnung ?> ]]></LEHRFACH:bezeichnung>
<LEHRFACH:fachbereich_id><?php echo $lehrfach->fachbereich_id ?></LEHRFACH:fachbereich_id>
<LEHRFACH:kurzbz><?php echo $lehrfach->kurzbz ?></LEHRFACH:kurzbz>
<LEHRFACH:lehrelink><?php echo $lehrfach->lehrelink ?></LEHRFACH:lehrelink>
<LEHRFACH:farbe><?php echo $lehrfach->farbe ?></LEHRFACH:farbe>
<LEHRFACH:lehrform_kurzbz><?php echo $lehrfach->lehrform_kurzbz ?></LEHRFACH:lehrform_kurzbz>
<LEHRFACH:aktiv><?php echo $lehrfach->aktiv ?></LEHRFACH:aktiv>
<LEHRFACH:studiengang_kz><?php echo $lehrfach->studiengang_kz ?></LEHRFACH:studiengang_kz>
<LEHRFACH:ects><?php echo $lehrfach->ects ?></LEHRFACH:ects>
</RDF:Description>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:RDF>
+130
View File
@@ -0,0 +1,130 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// header fuer 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
include('../vilesci/config.inc.php');
include('../include/functions.inc.php');
include('../include/lehrstunde.class.php');
function checkID($needle)
{
global $id_list;
//echo "checkID $needle \n";
reset($id_list);
foreach($id_list as $v)
if ($v==$needle)
return true;
return false;
}
$id_list=array();
while(list($k,$v)=each($_GET))
if (strpos($k,'stundenplan_id')!==false)
$id_list[]=$v;
//print_r($id_list);
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
if (isset($_GET[datum]))
$datum=$_GET[datum];
if (isset($_GET[datum_bis]))
$datum_bis=$_GET[datum_bis];
if (isset($_GET[stunde]))
$stunde=$_GET[stunde];
if (isset($_GET[type]))
$type=$_GET[type];
if (isset($_GET[stg_kz]))
$stg_kz=$_GET[stg_kz];
if (isset($_GET[sem]))
$sem=$_GET[sem];
if (isset($_GET[ver]))
$ver=$_GET[ver];
if (isset($_GET[grp]))
$grp=$_GET[grp];
if (isset($_GET[einheit]))
$einheit=$_GET[einheit];
if (isset($_GET[pers_uid]))
$pers_uid=$_GET[pers_uid];
if (isset($_GET[ort_kurzbz]))
$ort_kurzbz=$_GET[ort_kurzbz];
$error_msg='';
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg.='Es konnte keine Verbindung zum Server aufgebaut werden!';
$error_msg.=loadVariables($conn,$REMOTE_USER);
if (!isset($datum_bis))
$datum_bis=date('Y-m-d',(mktime(0,0,1,substr($datum,5,2),substr($datum,8),substr($datum,0,4))+86400));
$lehrstunden=new lehrstunde($conn);
$anz=$lehrstunden->load_lehrstunden($type,$datum,$datum_bis,$pers_uid,$ort_kurzbz,$stg_kz,$sem,$ver,$grp,$einheit,$db_stpl_table);
if ($anz<0)
{
$errormsg=$lehrstunden->errormsg;
echo "Fehler: ".$errormsg;
exit();
}
$rdf_url='http://www.technikum-wien.at/tempus/lehrstunde';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:LEHRSTUNDE="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/alle">
<?php
if (is_array($lehrstunden->lehrstunden))
foreach ($lehrstunden->lehrstunden as $ls)
{
//var_dump($ls);
//echo $ls->stunde.";";
//if ($ls->stunde == $stunde && checkID($ls->stundenplan_id))
//{
?>
<RDF:li>
<RDF:Description id="<?php echo $ls->stundenplan_id; ?>" about="<?php echo $rdf_url.'/'. $ls->stundenplan_id; ?>" >
<LEHRSTUNDE:id><?php echo $ls->stundenplan_id ?></LEHRSTUNDE:id>
<LEHRSTUNDE:datum><?php echo $ls->datum ?></LEHRSTUNDE:datum>
<LEHRSTUNDE:stunde><?php echo $ls->stunde ?></LEHRSTUNDE:stunde>
<LEHRSTUNDE:unr><?php echo $ls->unr ?></LEHRSTUNDE:unr>
<LEHRSTUNDE:ort_kurzbz><?php echo $ls->ort_kurzbz ?></LEHRSTUNDE:ort_kurzbz>
<LEHRSTUNDE:lehrfach><?php echo $ls->lehrfach ?></LEHRSTUNDE:lehrfach>
<LEHRSTUNDE:lehrfach_bez><?php echo $ls->lehrfach_bez ?></LEHRSTUNDE:lehrfach_bez>
<LEHRSTUNDE:lehrform><?php echo $ls->lehrform ?></LEHRSTUNDE:lehrform>
<LEHRSTUNDE:lektor><?php echo $ls->lektor_kurzbz ?></LEHRSTUNDE:lektor>
<LEHRSTUNDE:semester><?php echo $ls->sem ?></LEHRSTUNDE:semester>
<LEHRSTUNDE:verband><?php echo $ls->ver ?></LEHRSTUNDE:verband>
<LEHRSTUNDE:gruppe><?php echo $ls->grp ?></LEHRSTUNDE:gruppe>
<LEHRSTUNDE:einheit><?php echo $ls->einheit_kurzbz ?></LEHRSTUNDE:einheit>
<LEHRSTUNDE:lehrform><?php echo $ls->lehrform ?></LEHRSTUNDE:lehrform>
<LEHRSTUNDE:studiengang><?php echo $ls->studiengang ?></LEHRSTUNDE:studiengang>
<LEHRSTUNDE:farbe><?php echo $ls->farbe ?></LEHRSTUNDE:farbe>
<LEHRSTUNDE:anmerkung><![CDATA[<?php echo $ls->anmerkung ?>]]></LEHRSTUNDE:anmerkung>
</RDF:Description>
</RDF:li>
<?php
//}
}
?>
</RDF:Seq>
</RDF:RDF>
+214
View File
@@ -0,0 +1,214 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// header fuer 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include_once('../vilesci/config.inc.php');
include_once('../include/functions.inc.php');
include_once('../include/lehrveranstaltung.class.php');
include_once('../include/berechtigung.class.php');
// Testumgebung
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
$error_msg='';
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$berechtigung=new berechtigung($conn);
$berechtigung->getBerechtigungen($uid);
$error_msg.=loadVariables($conn,$uid);
if (isset($semester_aktuell))
$studiensemester=$semester_aktuell;
else
echo $error_msg='studiensemester is not set!';
if (isset($_GET['type']))
$type=$_GET['type'];
else
$type='lektor';
if (isset($_GET['stg_kz']))
$stg_kz=$_GET['stg_kz'];
else
$stg_kz=0;
if (isset($_GET['sem']))
$sem=$_GET['sem'];
else
$sem=0;
if (isset($_GET['lektor']))
$lektor=$_GET['lektor'];
else
$lektor=$uid;
if (isset($_GET['ver']))
$ver=$_GET['ver'];
else
$ver=null;
if (isset($_GET['grp']))
$grp=$_GET['grp'];
else
$grp=null;
if (isset($_GET['einheit']))
$einheit_kurzbz=$_GET['einheit'];
else
$einheit_kurzbz=null;
// LVA holen
$lva=array();
$lehrveranstaltung=new lehrveranstaltung($conn);
if (!$error_msg)
$lva=$lehrveranstaltung->getLehrveranstaltungSTPL($db_stpl_table,$studiensemester,$type,$stg_kz,$sem,$lektor,$ver,$grp,$einheit_kurzbz);
$rdf_url='http://www.technikum-wien.at/tempus/lehrveranstaltung/';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:LVA="<?php echo $rdf_url; ?>rdf#">
<RDF:Seq about="<?php echo $rdf_url.'alle'; ?>">
<?php
//var_dump($lva);
//echo $lehrveranstaltung->errormsg;
$anz=count($lva);
if ($anz>0)
foreach ($lva as $l)
{
$lva_ids='';
$lehrverband='';
$lvnr='';
$lektor='';
$einheit='';
$i=0;
// IDs der Lehrveranstaltungen
foreach($l->lehrveranstaltung_id as $lva_id)
$lva_ids.='&amp;lva_id'.$i++.'='.$lva_id;
// Lektoren
$lektor='';
$l->lektor=array_unique($l->lektor);
sort($l->lektor);
foreach($l->lektor as $lv)
$lektor.=$lv.' ';
// Lehrverbaende
$l->lehrverband=array_unique($l->lehrverband);
sort($l->lehrverband);
foreach($l->lehrverband as $lv)
$lehrverband.=$lv.' ';
// LVNRs
foreach($l->lvnr as $lv)
$lvnr.=$lv.' ';
foreach($l->einheit as $lv)
$einheit.=$lv.' ';
// Stundenblockung
$stundenblockung='';
$l->stundenblockung=array_unique($l->stundenblockung);
sort($l->stundenblockung);
foreach($l->stundenblockung as $sb)
$stundenblockung.=$sb.' ';
if (count($l->stundenblockung)>1)
$stundenblockung.=' ?';
// Start KW
$start_kw='';
$l->start_kw=array_unique($l->start_kw);
sort($l->start_kw);
foreach($l->start_kw as $kw)
$start_kw.=$kw.' ';
if (count($l->start_kw)>1)
$start_kw.=' ?';
// Wochenrythmus
$wochenrythmus='';
$l->wochenrythmus=array_unique($l->wochenrythmus);
sort($l->wochenrythmus);
foreach($l->wochenrythmus as $wr)
$wochenrythmus.=$wr.' ';
if (count($l->wochenrythmus)>1)
$wochenrythmus.=' ?';
// Lehrfach
$lehrfach='';
$l->lehrfach=array_unique($l->lehrfach);
sort($l->lehrfach);
foreach($l->lehrfach as $lf)
$lehrfach.=$lf.' ';
if (count($l->lehrfach)>1)
$lehrfach.=' ?';
// Lehrform
$lehrform='';
$l->lehrform=array_unique($l->lehrform);
sort($l->lehrform);
foreach($l->lehrform as $lf)
$lehrform.=$lf.' ';
if (count($l->lehrform)>1)
$lehrform.=' ?';
// Semesterstunden
$semesterstunden='';
$l->semesterstunden=array_unique($l->semesterstunden);
sort($l->semesterstunden);
foreach($l->semesterstunden as $lf)
$semesterstunden.=$lf.' ';
if (count($l->semesterstunden)>1)
$semesterstunden.=' ?';
// Verplant
$verplant='';
$l->verplant=array_unique($l->verplant);
sort($l->verplant);
foreach($l->verplant as $lf)
$verplant.=$lf.' ';
if (count($l->verplant)>1)
$verplant.=' ?';
// Offene Stunden
$offenestunden='';
$l->offenestunden=array_unique($l->offenestunden);
sort($l->offenestunden);
foreach($l->offenestunden as $os)
$offenestunden.=$os.' ';
if (count($l->offenestunden)>1)
$offenestunden.=' ?';
if ($berechtigung->isBerechtigt('lvaVerplanung',$l->stg_kz[0]) || $berechtigung->isBerechtigt('admin',0) || $berechtigung->isBerechtigt('admin',$l->stg_kz[0]))
echo'<RDF:li>
<RDF:Description id="lva'.($anz--).'" about="'.$rdf_url.$l->unr.'">
<LVA:lvnr>'.$lvnr.'</LVA:lvnr>
<LVA:unr>'.$l->unr.'</LVA:unr>
<LVA:einheit>'.$einheit.'</LVA:einheit>
<LVA:lektor>'.$lektor.'</LVA:lektor>
<LVA:lehrfach_nr>'.$l->lehrfach_nr.'</LVA:lehrfach_nr>
<LVA:studiengang_kz>'.$l->studiengang_kz.'</LVA:studiengang_kz>
<LVA:fachbereich_id>'.$l->fachbereich_id.'</LVA:fachbereich_id>
<LVA:semester>'.$l->semester[0].'</LVA:semester>
<LVA:verband>'.$l->verband[0].'</LVA:verband>
<LVA:gruppe>'.$l->gruppe[0].'</LVA:gruppe>
<LVA:einheit>'.$l->einheit[0].'</LVA:einheit>
<LVA:raumtyp>'.$l->raumtyp.'</LVA:raumtyp>
<LVA:raumtypalternativ>'.$l->raumtypalternativ.'</LVA:raumtypalternativ>
<LVA:semesterstunden>'.$semesterstunden.'</LVA:semesterstunden>
<LVA:stundenblockung>'.$stundenblockung.'</LVA:stundenblockung>
<LVA:wochenrythmus>'.$wochenrythmus.'</LVA:wochenrythmus>
<LVA:verplant>'.$verplant.'</LVA:verplant>
<LVA:offenestunden>'.$offenestunden.'</LVA:offenestunden>
<LVA:start_kw>'.$start_kw.'</LVA:start_kw>
<LVA:anmerkung>'.$l->anmerkung[0].'</LVA:anmerkung>
<LVA:studiensemester_kurzbz>'.$l->studiensemester_kurzbz.'</LVA:studiensemester_kurzbz>
<LVA:lehrfach>'.$lehrfach.'</LVA:lehrfach>
<LVA:lehrform>'.$lehrform.'</LVA:lehrform>
<LVA:lehrfach_bez><![CDATA['.$l->lehrfach_bez[0].']]></LVA:lehrfach_bez>
<LVA:lehrfach_farbe>#'.$l->lehrfach_farbe[0].'</LVA:lehrfach_farbe>
<LVA:lva_ids>'.$lva_ids.'</LVA:lva_ids>
<LVA:lehrverband>'.$lehrverband.'</LVA:lehrverband>
</RDF:Description>
</RDF:li>';
}
?>
</RDF:Seq>
</RDF:RDF>
+89
View File
@@ -0,0 +1,89 @@
.stplDetailRow {
margin:0px;
padding:0px;
-moz-binding: url('lfvtbinding.xml.php#stplDetailRow');
}
.stplDetail {
overflow:auto;
margin:0px;
-moz-binding: url('lfvtbinding.xml.php#stplDetail');
}
customMenulist.fachbereich {
-moz-binding: url('lfvtbinding.xml.php#fachbereichListe');
}
customMenulist.lehrform {
-moz-binding: url('lfvtbinding.xml.php#lehrformListe');
}
customMenulist.raumtyp {
-moz-binding: url('lfvtbinding.xml.php#raumtypListe');
}
customMenulist.raum {
-moz-binding: url('lfvtbinding.xml.php#raumListe');
}
customMenulist.studiengang {
-moz-binding: url('lfvtbinding.xml.php#stgListe');
}
customMenulist.lektor {
-moz-binding: url('lfvtbinding.xml.php#lektorenListe');
}
customMenulist.einheit {
-moz-binding: url('lfvtbinding.xml.php#einheitenListe');
}
customMenulist.lehrfach {
-moz-binding: url('lfvtbinding.xml.php#lehrfaecherListe');
}
customMenulist.studiensemester {
-moz-binding: url('lfvtbinding.xml.php#studiensemesterListe');
}
tree.lvaTree {
-moz-binding: url('lfvtbinding.xml.php#lfvtTree');
}
tree treecol {
background-color: #FFFFCC;
border: 1px solid black;
}
tree {
font-size:9pt;
font-family:Arial;
}
box.lvaDetail {
-moz-binding: url('lfvtbinding.xml.php#lfvtDetail');
}
box.studentDetail {
-moz-binding: url('lfvtbinding.xml.php#studentDetail');
}
label,textbox {
font-size:9pt;
font-family:Arial;
}
#gridLFVT > rows > row {padding:2px;vertical-align:bottom;}
treechildren::-moz-tree-row(selected) { background-color: #FFFFAA; }
treechildren::-moz-tree-row(odd) { background-color: #EEEEEE; }
treechildren::-moz-tree-row(odd, selected) { background-color: #FFFFAA; }
treechildren::-moz-tree-row(even, selected) { background-color: #FFFFAA; }
treechildren::-moz-tree-cell-text(selected) { color: #000000; }
treechildren::-moz-tree-cell-text(odd, selected) { color: #000000; }
+135
View File
@@ -0,0 +1,135 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// header fr no cache
header("Cache-Control: 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");
// content type setzen
header("Content-type: application/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/lfvt.class.php');
include_once('../include/functions.inc.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$uid = get_uid();
loadVariables($conn,$uid);
// test
//$einheit_kurzbz='';
//$grp='1';
//$ver='A';
//$sem=5;
//$stg_kz=145;
$einheit_kurzbz=$_GET['einheit'];
$grp=$_GET['grp'];
$ver=$_GET['ver'];
$sem=$_GET['sem'];
$stg_kz=$_GET['stg_kz'];
$lektor=$_GET['lektor'];
// LVAs holen
$lvaDAO=new lfvt($conn);
$lvas=$lvaDAO->getLVAs($einheit_kurzbz, $grp, $ver, $sem, $stg_kz,$lektor,$semester_aktuell);
$rdf_url='http://www.technikum-wien.at/tempus/lva';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:LVA="<?php echo $rdf_url; ?>/rdf#"
>
<?php
if (is_array($lvas))
{
$currentUNR='';
$lastUNR='';
$nextUNR='';
$inSub=false;
for ($i=0;$i<count($lvas);$i++)
{
$lva=$lvas[$i];
$currentUNR=$lva->unr;
$lastUNR=($i>0?$lvas[$i-1]->unr:'');
$nextUNR=($i<(count($lvas)-1)?$lvas[$i+1]->unr:'');
$descr.="
<RDF:Description id=\"".$lva->lehrveranstaltung_id."\" about=\"".$rdf_url.'/'.$lva->lehrveranstaltung_id."\" >
<LVA:lvnr>".$lva->lvnr."</LVA:lvnr>
<LVA:unr>".$lva->unr."</LVA:unr>
<LVA:einheit_kurzbz>".$lva->einheit_kurzbz."</LVA:einheit_kurzbz>
<LVA:lektor>".$lva->lektor."</LVA:lektor>
<LVA:lektorPrettyPrint>".utf8_encode($lva->lektorPrettyPrint)."</LVA:lektorPrettyPrint>
<LVA:lehrfach_nr>".$lva->lehrfach_nr."</LVA:lehrfach_nr>
<LVA:studiengang_kz>".$lva->studiengang_kz."</LVA:studiengang_kz>
<LVA:fachbereich_id>".$lva->fachbereich_id."</LVA:fachbereich_id>
<LVA:semester>".$lva->semester."</LVA:semester>".
(strlen(trim($lva->verband))>0?" <LVA:verband>".$lva->verband."</LVA:verband>":"").
($lva->gruppe>0?" <LVA:gruppe>".$lva->gruppe."</LVA:gruppe>":"")."
<LVA:raumtyp>".$lva->raumtyp."</LVA:raumtyp>
<LVA:raumtypalternativ>".$lva->raumtypalternativ."</LVA:raumtypalternativ>
<LVA:semesterstunden>".$lva->semesterstunden."</LVA:semesterstunden>
<LVA:stundenblockung>".$lva->stundenblockung."</LVA:stundenblockung>
<LVA:wochenrythmus>".$lva->wochenrythmus."</LVA:wochenrythmus>
<LVA:start_kw>".$lva->start_kw."</LVA:start_kw>
<LVA:anmerkung>".$lva->anmerkung."</LVA:anmerkung>
<LVA:studiensemester_kurzbz>".$lva->studiensemester_kurzbz."</LVA:studiensemester_kurzbz>
<LVA:lehrfach><![CDATA[".utf8_encode($lva->lehrfach)."]]></LVA:lehrfach>
<LVA:lehrform>".$lva->lehrform."</LVA:lehrform>
<LVA:dbID>".$lva->lehrveranstaltung_id."</LVA:dbID>
</RDF:Description>";
$subClose=false;
if (($lastUNR!=$currentUNR && $currentUNR==$nextUNR) || count($lvas)==$i) {
$inSub=true;
$hier.="
<!-- ********************************* -->
<RDF:li>
<RDF:Seq about=\"".$rdf_url.'/'.$lva->lehrveranstaltung_id."\" >";
}
if ($nextUNR!=$currentUNR && $inSub) {
$inSub=false;
$subClose=true;
$hier.="
<RDF:li resource=\"".$rdf_url.'/'.$lva->lehrveranstaltung_id."\" />
</RDF:Seq>
</RDF:li>
<!-- ********************************* -->";
}
if (($inSub && $lastUNR==$currentUNR) || (count($lvas)==1) || (!$inSub && $currentUNR!=nextUNR && !$subClose)) {
$hier.="
<RDF:li resource=\"".$rdf_url.'/'.$lva->lehrveranstaltung_id."\" /> <!-- insub -->";
}
}
$hier="
<RDF:Seq about=\"".$rdf_url."/liste\">".$hier."
</RDF:Seq>";
echo $descr;
echo $hier;
//print_r($lvas);
}
?>
</RDF:RDF>
+67
View File
@@ -0,0 +1,67 @@
<?php
// *****************************
// Create/Update/Delete
// der Lehrfachverteilung
// *****************************
include('../vilesci/config.inc.php');
include_once('../include/lfvt.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$lvaDAO=new lfvt($conn);
if ($_GET['do']=='create' || ($_GET['do']=='update')) {
$lvaDAO->lvnr=$_GET['lvnr'];
$lvaDAO->unr=$_GET['unr'];
$lvaDAO->einheit_kurzbz=$_GET['einheit_kurzbz'];
$lvaDAO->lektor=$_GET['lektor'];
$lvaDAO->lehrfach_nr=$_GET['lehrfach_nr'];
$lvaDAO->studiengang_kz=$_GET['studiengang_kz'];
$lvaDAO->fachbereich_id=$_GET['fachbereich_id'];
$lvaDAO->semester=$_GET['semester'];
$lvaDAO->verband=$_GET['verband'];
$lvaDAO->gruppe=$_GET['gruppe'];
$lvaDAO->raumtyp=$_GET['raumtyp'];
if (isset($_GET['raumtypalternativ'])) $lvaDAO->raumtypalternativ=$_GET['raumtypalternativ'];
if (isset($_GET['semesterstunden'])) $lvaDAO->semesterstunden=$_GET['semesterstunden'];
if (isset($_GET['stundenblockung'])) $lvaDAO->stundenblockung=$_GET['stundenblockung'];
if (isset($_GET['wochenrythmus'])) $lvaDAO->wochenrythmus=$_GET['wochenrythmus'];
if (isset($_GET['start_kw'])) $lvaDAO->start_kw=$_GET['start_kw'];
if (isset($_GET['anmerkung'])) $lvaDAO->anmerkung=$_GET['anmerkung'];
if (isset($_GET['studiensemester_kurzbz'])) $lvaDAO->studiensemester_kurzbz=$_GET['studiensemester_kurzbz'];
if (isset($_GET['lehrform'])) $lvaDAO->lehrform=$_GET['lehrform'];
if ($_GET['do']=='create') {
// LVA neu anlegen
$lvaDAO->new=true;
if ($lvaDAO->save()) echo 'ok';
else echo $lvaDAO->errormsg;
//echo "NEU";
} else if ($_GET['do']=='update') {
// LVA aktualisieren
$lvaDAO->lehrveranstaltung_id=$_GET['lehrveranstaltung_id'];
$lvaDAO->new=false;
if ($lvaDAO->save()) echo 'ok';
else echo $lvaDAO->errormsg;
}
} else if ($_GET['do']=='delete') {
// LVA löschen
$lvaDAO->new=false;
$lvaDAO->lehrveranstaltung_id=$_GET['lehrveranstaltung_id'];
if ($lvaDAO->lehrveranstaltung_id>0) {
$lvaDAO->delete();
}
if ($lvaDAO->save()) echo 'ok';
else echo $lvaDAO->errormsg;
}
?>
+968
View File
@@ -0,0 +1,968 @@
<?php
include('../vilesci/config.inc.php');
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml"
>
<binding id="stplDetail">
<content>
<xul:vbox style="margin:0px;padding:0px;" flex="1">
<xul:hbox style="background:#eeeeee;margin:0px;padding:2px" flex="0">
<xul:label value="Details" style="font-size:12pt;font-weight:bold;margin-top:5px;" flex="1" />
<xul:button id="btnLFVTSave" label="speichern" oncommand="parentNode.parentNode.parentNode.saveData();"/>
</xul:hbox>
<xul:grid id="gridLFVT" flex="1" datasources="rdf:null"
ref="http://www.technikum-wien.at/tempus/lva/liste"
style="padding:0px;"
>
<xul:columns >
<xul:column />
</xul:columns>
<xul:rows>
<xul:row>
<xul:box id="stplDetailRow1" class="stplDetailRow" />
</xul:row>
<xul:row>
<xul:box id="stplDetailRow2" class="stplDetailRow" />
</xul:row>
</xul:rows>
</xul:grid>
</xul:vbox>
</content>
</binding>
<binding id="stplDetailRow">
<resources>
<stylesheet src="lfvt.css" />
</resources>
<content>
<xul:grid id="gridLFVT" flex="1" datasources="rdf:null"
ref="http://www.technikum-wien.at/tempus/lva/liste"
style="padding:0px;border:1px solid #000000"
>
<xul:columns >
<xul:column />
<xul:column style="min-width:240px" />
<xul:column />
<xul:column style="min-width:240px" />
</xul:columns>
<xul:rows>
<!-- fehlt hier die eindeutige ID ? -->
<xul:row >
<xul:label value="Datum" />
<xul:textbox id="gridSTPLDatum" maxlength="20" onchange="document.getBindingParent(this).lvnr=this.value"/>
<xul:label value="Stunde" />
<xul:textbox id="gridSTPLStunde" onchange="document.getBindingParent(this).unr=this.value;" />
</xul:row>
<xul:row >
<xul:label value="LVNR" />
<xul:textbox id="gridSTPLLVNR" maxlength="20" onchange="document.getBindingParent(this).lvnr=this.value"/>
<xul:label value="UNR" />
<xul:textbox id="gridSTPLNR" onchange="document.getBindingParent(this).unr=this.value;" />
</xul:row>
<xul:row>
<xul:label value="Einheit" />
<xul:customMenulist id="gridSTPLEinheit" class="einheit" oncommand="document.getBindingParent(this).einheit=document.getAnonymousNodes(this)[0].value" />
<xul:label value="Lektor" />
<xul:customMenulist id="gridSTPLLektor" class="lektor" flex="1" oncommand="document.getBindingParent(this).lektor=document.getAnonymousNodes(this)[0].value" />
</xul:row>
<xul:row>
<xul:label value="Lehrfach" />
<xul:customMenulist id="gridSTPLLehrfach" class="lehrfach" oncommand="document.getBindingParent(this).lehrfach=document.getAnonymousNodes(this)[0].value" />
<xul:label value="Studiengang" />
<!--<xul:menulist id="gridLFVTStudiengang" name="stgListe" class="studiengang" maxwidth="100px" /> -->
<xul:customMenulist id="gridSTPLStudiengang" class="studiengang" oncommand="document.getBindingParent(this).studiengang=document.getAnonymousNodes(this)[0].value" />
</xul:row>
<xul:row>
<xul:label value="Fachbereich" />
<xul:customMenulist id="gridSTPLFachbereich" class="fachbereich" oncommand="document.getBindingParent(this).fachbereich=document.getAnonymousNodes(this)[0].value" />
<xul:label value="Semester" />
<xul:textbox id="gridSTPLSemester" flex="1" onchange="document.getBindingParent(this).semester=this.value" />
</xul:row>
<xul:row>
<xul:label value="Verband" />
<xul:textbox id="gridSTPLVerband" flex="1" onchange="document.getBindingParent(this).verband=this.value" />
<xul:label value="Gruppe" />
<xul:textbox id="gridSTPLGruppe" flex="1" onchange="document.getBindingParent(this).gruppe=this.value" />
</xul:row>
<xul:row>
<xul:label value="Raum" />
<xul:customMenulist id="gridSTPLRaum" class="raum" flex="1" oncommand="document.getBindingParent(this).raumtyp=document.getAnonymousNodes(this)[0].value" />
</xul:row>
</xul:rows>
</xul:grid>
</content>
</binding>
<binding id="lfvtDetail">
<content>
<xul:vbox style="margin:0px;padding:0px;" flex="1">
<xul:hbox style="background:#eeeeee;margin:0px;padding:2px" flex="1">
<xul:label value="Details" style="font-size:12pt;font-weight:bold;margin-top:5px;" flex="1" />
<xul:button id="btnLFVTSave" label="speichern" oncommand="parentNode.parentNode.parentNode.saveData();"/>
</xul:hbox>
<xul:grid id="gridLFVT" flex="1" datasources="rdf:null"
ref="http://www.technikum-wien.at/tempus/lva/liste"
style="padding:5px;"
>
<xul:columns >
<xul:column />
<xul:column style="min-width:240px" />
<xul:column />
<xul:column style="min-width:240px" />
</xul:columns>
<xul:rows>
<!-- fehlt hier die eindeutige ID ? -->
<xul:row >
<xul:label value="LVNR" />
<xul:textbox id="gridLFVTLVNR" maxlength="20" onchange="document.getBindingParent(this).lvnr=this.value"/>
<xul:label value="UNR" />
<xul:textbox id="gridLFVTUNR" onchange="document.getBindingParent(this).unr=this.value;" />
</xul:row>
<xul:row>
<xul:label value="Einheit" />
<xul:customMenulist id="gridLFVTEinheit" class="einheit" oncommand="document.getBindingParent(this).einheit=document.getAnonymousNodes(this)[0].value" />
<xul:label value="Lektor" />
<xul:customMenulist id="gridLFVTLektor" class="lektor" flex="1" oncommand="document.getBindingParent(this).lektor=document.getAnonymousNodes(this)[0].value" />
</xul:row>
<xul:row>
<xul:label value="Lehrfach" />
<xul:customMenulist id="gridLFVTLehrfach" class="lehrfach" oncommand="document.getBindingParent(this).lehrfach=document.getAnonymousNodes(this)[0].value" />
<xul:label value="Studiengang" />
<!-- <xul:menulist id="gridLFVTStudiengang" name="stgListe" class="studiengang" maxwidth="100px" /> -->
<xul:customMenulist id="gridLFVTStudiengang" class="studiengang" oncommand="document.getBindingParent(this).studiengang=document.getAnonymousNodes(this)[0].value" />
</xul:row>
<xul:row>
<xul:label value="Fachbereich" />
<xul:customMenulist id="gridLFVTFachbereich" class="fachbereich" oncommand="document.getBindingParent(this).fachbereich=document.getAnonymousNodes(this)[0].value" />
<xul:label value="Semester" />
<xul:textbox id="gridLFVTSemester" flex="1" onchange="document.getBindingParent(this).semester=this.value" />
</xul:row>
<xul:row>
<xul:label value="Verband" />
<xul:textbox id="gridLFVTVerband" flex="1" onchange="document.getBindingParent(this).verband=this.value" />
<xul:label value="Gruppe" />
<xul:textbox id="gridLFVTGruppe" flex="1" onchange="document.getBindingParent(this).gruppe=this.value" />
</xul:row>
<xul:row>
<xul:label value="Raumtyp" />
<xul:customMenulist id="gridLFVTRaumtyp" class="raumtyp" flex="1" oncommand="document.getBindingParent(this).raumtyp=document.getAnonymousNodes(this)[0].value" />
<xul:label value="Raumtyp alternativ" />
<xul:customMenulist id="gridLFVTRaumtypAlt" class="raumtyp" flex="1" oncommand="document.getBindingParent(this).raumtyp_alt=document.getAnonymousNodes(this)[0].value" />
</xul:row>
<xul:row>
<xul:label value="Semesterstunden" />
<xul:textbox id="gridLFVTSemesterstunden" onchange="document.getBindingParent(this).semesterstunden=this.value"/>
<xul:label value="Stundenblockung" />
<xul:textbox id="gridLFVTStundenblockung" onchange="document.getBindingParent(this).stundenblockung=this.value" />
</xul:row>
<xul:row>
<xul:label value="Wochenrythmus" />
<xul:textbox id="gridLFVTWochenrythmus" onchange="document.getBindingParent(this).wochenrythmus=this.value" />
<xul:label value="Start KW" />
<xul:textbox id="gridLFVTStart_kw" onchange="document.getBindingParent(this).start_kw=this.value" />
</xul:row>
<xul:row>
<xul:label value="Studiensemester" />
<xul:textbox id="gridLFVTStudiensemester" onchange="document.getBindingParent(this).studiensemester=this.value" />
<xul:label value="Anmerkung" />
<xul:textbox id="gridLFVTAnmerkung" onchange="document.getBindingParent(this).anmerkung=this.value" />
<!--
<xul:label value="ECTS" />
<xul:textbox id="gridLFVTECTS" onchange="parentNode.parentNode.parentNode.parentNode.ects=this.value" />
-->
</xul:row>
<xul:row>
<xul:label value="Lehrform" />
<xul:customMenulist id="gridLFVTLehrform" class="lehrform" flex="1" oncommand="document.getBindingParent(this).lehrform=document.getAnonymousNodes(this)[0].value" />
</xul:row>
</xul:rows>
</xul:grid>
</xul:vbox>
</content>
<implementation>
<constructor>
this.gridLFVTLVNR=document.getElementById('gridLFVTLVNR');
this.gridLFVTUNR=document.getElementById('gridLFVTUNR');
this.gridLFVTEinheit=document.getElementById('gridLFVTEinheit');
this.gridLFVTLektor=document.getElementById('gridLFVTLektor');
this.gridLFVTLehrfach=document.getElementById('gridLFVTLehrfach');
this.gridLFVTStudiengang=document.getElementById('gridLFVTStudiengang');
this.gridLFVTFachbereich=document.getElementById('gridLFVTFachbereich');
this.gridLFVTSemester=document.getElementById('gridLFVTSemester');
this.gridLFVTVerband=document.getElementById('gridLFVTVerband');
this.gridLFVTGruppe=document.getElementById('gridLFVTGruppe');
this.gridLFVTRaumtyp=document.getElementById('gridLFVTRaumtyp');
this.gridLFVTRaumtypAlt=document.getElementById('gridLFVTRaumtypAlt');
this.gridLFVTSemesterstunden=document.getElementById('gridLFVTSemesterstunden');
this.gridLFVTStundenblockung=document.getElementById('gridLFVTStundenblockung');
this.gridLFVTWochenrythmus=document.getElementById('gridLFVTWochenrythmus');
this.gridLFVTStart_kw=document.getElementById('gridLFVTStart_kw');
this.gridLFVTAnmerkung=document.getElementById('gridLFVTAnmerkung');
this.gridLFVTStudiensemester=document.getElementById('gridLFVTStudiensemester');
this.gridLFVTLehrform=document.getElementById('gridLFVTLehrform');
<!-- this.gridLFVTECTS=document.getElementById('gridLFVTECTS'); -->
</constructor>
<!-- Grid-Felder -->
<field name="gridLFVTLVNR">null</field>
<field name="gridLFVTUNR">null</field>
<field name="gridLFVTEinheit">null</field>
<field name="gridLFVTLektor">null</field>
<field name="gridLFVTLehrfach">null</field>
<field name="gridLFVTStudiengang">null</field>
<field name="gridLFVTFachbereich">null</field>
<field name="gridLFVTSemester">null</field>
<field name="gridLFVTVerband">null</field>
<field name="gridLFVTGruppe">null</field>
<field name="gridLFVTRaumtyp">null</field>
<field name="gridLFVTRaumtypAlt">null</field>
<field name="gridLFVTSemesterstunden">null</field>
<field name="gridLFVTStundenblockung">null</field>
<field name="gridLFVTWochenrythmus">null</field>
<field name="gridLFVTStart_kw">null</field>
<field name="gridLFVTAnmerkung">null</field>
<field name="gridLFVTStudiensemester">null</field>
<field name="gridLFVTLehrform">null</field>
<!-- <field name="gridLFVTECTS">null</field> -->
<!-- neuer Datensatz -->
<field name="_new">false</field>
<!-- aktuelles Value Objekt der Lehrveranstaltung -->
<field name="currentLVA">null</field>
<!-- neuer Datensatz -->
<property name="isNew" onget="return this._new" onset="this._new=val;return val;" />
<!-- LVA-Felder -->
<property name="lvnr" onget="return this.currentLVA.lvnr;" >
<setter>
if (isNaN(val)) {
alert('LVNR muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.lvnr=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.lvnr=val;
}
return val;
</setter>
</property>
<property name="unr" onget="return this.currentLVA.unr;" >
<setter>
if (isNaN(val)) {
alert('UNR muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.unr=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.unr=val;
}
alert('unr:'+val);
return val;
</setter>
</property>
<!-- einheit -->
<property name="einheit" onget="return this.currentLVA.einheit;" >
<setter>
//alert('property-setter: val='+val);
if (this.currentLVA!=null)
this.currentLVA.einheit=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<!-- lektor -->
<property name="lektor" onget="return this.currentLVA.lektor;" >
<setter>
//alert('property-setter: val='+val);
if (this.currentLVA!=null)
this.currentLVA.lektor=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<!-- lehrfach -->
<property name="lehrfach" onget="return this.currentLVA.lehrfach;" >
<setter>
//alert('property-setter: val='+val);
if (this.currentLVA!=null)
this.currentLVA.lehrfach=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<!-- studiengang -->
<property name="studiengang" onget="return this.currentLVA.studiengang;" >
<setter>
//alert('property-setter: val='+val);
if (this.currentLVA!=null)
this.currentLVA.studiengang=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<!-- fachbereich -->
<property name="fachbereich" onget="return this.currentLVA.fachbereich;" >
<setter>
//alert('fachbereich-setter: val='+val);
if (this.currentLVA!=null)
this.currentLVA.fachbereich=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<!-- raumtyp -->
<property name="raumtyp" onget="return this.currentLVA.raumtyp;" >
<setter>
//alert('property-setter: val='+val);
if (this.currentLVA!=null)
this.currentLVA.raumtyp=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<!-- raumtyp_alt -->
<property name="raumtyp_alt" onget="return this.currentLVA.raumtyp_alt;" >
<setter>
//alert('property-setter: val='+val);
if (this.currentLVA!=null)
this.currentLVA.raumtyp_alt=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<property name="semester" onget="return this.currentLVA.semester;" >
<setter>
if (isNaN(val)) {
alert('Semester muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.unr=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.semester=val;
}
return val;
</setter>
</property>
<property name="verband" onget="return this.currentLVA.verband;" >
<setter>
if (this.currentLVA!=null)
this.currentLVA.verband=val;
}
return val;
</setter>
</property>
<property name="gruppe" onget="return this.currentLVA.gruppe;" >
<setter>
if (isNaN(val)) {
alert('Gruppe muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.gruppe=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.gruppe=val;
}
return val;
</setter>
</property>
<property name="semesterstunden" onget="return this.currentLVA.semesterstunden;" >
<setter>
if (isNaN(val)) {
alert('Semesterstunden muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.semesterstunden=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.semesterstunden=val;
}
return val;
</setter>
</property>
<property name="stundenblockung" onget="return this.currentLVA.stundenblockung;" >
<setter>
if (isNaN(val)) {
alert('Stundenblockung muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.stundenblockung=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.stundenblockung=val;
}
return val;
</setter>
</property>
<property name="wochenrythmus" onget="return this.currentLVA.wochenrythmus;" >
<setter>
if (isNaN(val)) {
alert('Wochenrythmus muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.wochenrythmus=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.wochenrythmus=val;
}
return val;
</setter>
</property>
<property name="start_kw" onget="return this.currentLVA.start_kw;" >
<setter>
if (isNaN(val)) {
alert('start_kw muss eine Zahl sein!');
if (this.currentLVA!=null)
this.currentLVA.start_kw=null;
} else {
if (this.currentLVA!=null)
this.currentLVA.start_kw=val;
}
return val;
</setter>
</property>
<property name="studiensemester" onget="return this.currentLVA.studiensemester;" >
<setter>
// todo: Validation Check
if (this.currentLVA!=null)
this.currentLVA.studiensemester=val;
//this.showCurrentLVA();
return val;
</setter>
</property>
<property name="lehrform" onget="return this.currentLVA.lehrform;" >
<setter>
// todo: Validation Check
if (this.currentLVA!=null)
this.currentLVA.lehrform=val;
return val;
</setter>
</property>
<property name="anmerkung" onget="return this.currentLVA.anmerkung;" >
<setter>
if (this.currentLVA!=null)
this.currentLVA.anmerkung=val;
return val;
</setter>
</property>
<!-- Daten speichern -->
<method name="saveData">
<body><![CDATA[
var req = new phpRequest('lfvtCUD.php','pam','pam');
if (this.isNew) {
req.add('do','create');
} else {
req.add('do','update');
}
req.add('lehrveranstaltung_id',this.currentLVA.id);
if (this.currentLVA.unr!=null) req.add('unr',this.currentLVA.unr);
if (this.currentLVA.lvnr!=null) req.add('lvnr',this.currentLVA.lvnr);
if (this.currentLVA.einheit!=null) req.add('einheit_kurzbz',this.currentLVA.einheit);
if (this.currentLVA.lektor!=null) req.add('lektor',this.currentLVA.lektor);
if (this.currentLVA.lehrfach!=null) req.add('lehrfach_nr',this.currentLVA.lehrfach);
if (this.currentLVA.studiengang!=null) req.add('studiengang_kz',this.currentLVA.studiengang);
if (this.currentLVA.fachbereich!=null) req.add('fachbereich_id',this.currentLVA.fachbereich);
if (this.currentLVA.semester!=null) req.add('semester',this.currentLVA.semester);
if (this.currentLVA.verband!=null) req.add('verband',this.currentLVA.verband);
if (this.currentLVA.gruppe!=null) req.add('gruppe',this.currentLVA.gruppe);
if (this.currentLVA.raumtyp!=null) req.add('raumtyp',this.currentLVA.raumtyp);
if (this.currentLVA.raumtyp_alt!=null) req.add('raumtypalternativ',this.currentLVA.raumtyp_alt);
if (this.currentLVA.semesterstunden!=null) req.add('semesterstunden',this.currentLVA.semesterstunden);
if (this.currentLVA.stundenblockung!=null) req.add('stundenblockung',this.currentLVA.stundenblockung);
if (this.currentLVA.wochenrythmus!=null) req.add('wochenrythmus',this.currentLVA.wochenrythmus);
if (this.currentLVA.start_kw!=null) req.add('start_kw',this.currentLVA.start_kw);
if (this.currentLVA.studiensemester!=null) req.add('studiensemester_kurzbz',this.currentLVA.studiensemester);
if (this.currentLVA.lehrform!=null) req.add('lehrform',this.currentLVA.lehrform);
var response = req.execute();
if (response!='ok') {
alert(response);
} else {
if (this.currentLVA.isNew) this.currentLVA.isNew=false;
}
]]>
</body>
</method>
<method name="showCurrentLVA">
<body>
alert('CurrentLVA: studiensemester='+this.currentLVA.studiensemester+'; einheit='+this.currentLVA.einheit);
</body>
</method>
<!-- Felder zuruecksetzen -->
<method name="reset">
<body><![CDATA[
this.gridLFVTLVNR.value=null;
this.gridLFVTUNR.value=null;
this.gridLFVTEinheit.currentValue=null;
this.gridLFVTLektor.currentValue=null;
this.gridLFVTLehrfach.currentValue=null;
this.gridLFVTStudiengang.currentValue=null;
this.gridLFVTFachbereich.currentValue=null;
this.gridLFVTSemester.value=null;
this.gridLFVTVerband.value=null;
this.gridLFVTGruppe.value=null;
this.gridLFVTRaumtyp.currentValue=null;
this.gridLFVTRaumtypAlt.currentValue=null;
this.gridLFVTSemesterstunden.value=null;
this.gridLFVTStundenblockung.value=null;
this.gridLFVTWochenrythmus.value=null;
this.gridLFVTStart_kw.value=null;
this.gridLFVTAnmerkung.value=null;
this.gridLFVTStudiensemester.value=null;
this.gridLFVTLehrform.value=null;
this.currentLVA=null;
]]>
</body>
</method>
<!-- Value Objekt -->
<method name="setLVA">
<parameter name="lva"/>
<body><![CDATA[
// Value Object
this.currentLVA=lva;
//alert('unr='+this.currentLVA.unr);
// LVNR
this.gridLFVTLVNR.value=this.currentLVA.lvnr;
// UNR
this.gridLFVTUNR.value=this.currentLVA.unr;
// Einheit
this.gridLFVTEinheit.currentValue=this.currentLVA.einheit;
// Lektor setzen
this.gridLFVTLektor.currentValue=this.currentLVA.lektor;
// Lehrfach
this.gridLFVTLehrfach.currentValue=this.currentLVA.lehrfach;
//alert(this.currentLVA.lehrfach);
// Studiengang
this.gridLFVTStudiengang.currentValue=this.currentLVA.studiengang;
//alert('stg='+this.currentLVA.studiengang);
// Fachbereich
this.gridLFVTFachbereich.currentValue=this.currentLVA.fachbereich;
// Semester
this.gridLFVTSemester.value=this.currentLVA.semester;
// Verband
this.gridLFVTVerband.value=this.currentLVA.verband;
// Gruppe
this.gridLFVTGruppe.value=this.currentLVA.gruppe;
// Raumtyp
this.gridLFVTRaumtyp.currentValue=this.currentLVA.raumtyp;
// Raumtyp alternativ
this.gridLFVTRaumtypAlt.currentValue=this.currentLVA.raumtyp_alt;
//alert('alt:'+this.currentLVA.raumtyp_alt);
// semesterstunden
this.gridLFVTSemesterstunden.value=this.currentLVA.semesterstunden;
// stundenblockung
this.gridLFVTStundenblockung.value=this.currentLVA.stundenblockung;
// Wochenrythmus
this.gridLFVTWochenrythmus.value=this.currentLVA.wochenrythmus;
// Start KW
this.gridLFVTStart_kw.value=this.currentLVA.start_kw;
// Studiensemester
this.gridLFVTStudiensemester.value=this.currentLVA.studiensemester;
// Lehrform
this.gridLFVTLehrform.currentValue=this.currentLVA.lehrform;
// ECTS
// ist bei lehrfach
]]>
</body>
</method>
</implementation>
</binding>
<binding id="studentDetail">
<content>
<xul:hbox flex="1">
<xul:grid id="gridStudenten" style="overflow:auto;margin:4px;" flex="1" datasources="rdf:null" ref="http://www.technikum-wien.at/tempus/studenten/liste">
<xul:columns >
<xul:column flex="1"/>
<xul:column flex="5"/>
<xul:column flex="3"/>
</xul:columns>
<xul:rows>
<xul:row>
<xul:label value="UID" />
<xul:textbox id="gridStudentenUID" />
</xul:row>
<xul:row>
<xul:label value="Matrikelnummer" />
<xul:textbox id="gridStudentenMatrikelnummer" onchange="currentStudent.updateData();" />
</xul:row>
<xul:row>
<xul:label value="Titel" />
<xul:textbox id="gridStudentenTitel" />
</xul:row>
<xul:row>
<xul:label value="Vorname" />
<xul:textbox id="gridStudentenVornamen" />
</xul:row>
<xul:row>
<xul:label value="Nachname" />
<xul:textbox id="gridStudentenNachname" />
</xul:row>
<xul:row>
<xul:label value="Geburtsdatum" />
<xul:textbox id="gridStudentenGeburtsdatum" />
</xul:row>
<xul:row>
<xul:label value="Geburtsort" />
<xul:textbox id="gridStudentenGeburtsort" />
</xul:row>
<xul:row>
<xul:label value="Geburtszeit" />
<xul:textbox id="gridStudentenGeburtszeit" />
</xul:row>
<xul:row>
<xul:label value="Homepage" />
<xul:textbox id="gridStudentenHomepage" />
</xul:row>
<xul:row>
<xul:label value="Email" />
<xul:textbox id="gridStudentenEmail" />
</xul:row>
<xul:row>
<xul:label value="Semester" />
<xul:textbox id="gridStudentenSemester" />
<xul:spacer flex="5" />
</xul:row>
<xul:row>
<xul:label value="Verband" />
<xul:textbox id="gridStudentenVerband" />
<xul:spacer flex="5" />
</xul:row>
<xul:row>
<xul:label value="Gruppe" />
<xul:textbox id="gridStudentenGruppe" />
<xul:spacer flex="5" />
</xul:row>
<xul:row>
<xul:label value="Studiengang" />
<xul:customMenulist id="gridStudentenStgBezeichnung" class="studiengang" />
<xul:spacer flex="5" />
</xul:row>
<xul:row>
<xul:label value="Aktiv" />
<xul:checkbox id="gridStudentenAktiv" checked="true" />
<xul:spacer flex="5" />
</xul:row>
</xul:rows>
</xul:grid>
</xul:hbox>
</content>
</binding>
<binding id="lfvtTree">
<content>
<children/>
</content>
</binding>
<!-- DropDownList fuer Fachbereiche -->
<binding id="fachbereichListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist datasources="fachbereich.rdf.php" flex="1"
ref="http://www.technikum-wien.at/tempus/fachbereich/liste" >
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/tempus/fachbereich/rdf#id"
label="rdf:http://www.technikum-wien.at/tempus/fachbereich/rdf#bezeichnung"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
</binding>
<!-- DropDownList fuer Lehrform -->
<binding id="lehrformListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist datasources="../rdf/lehrform.rdf.php" flex="1"
ref="http://www.technikum-wien.at/lehrform/liste" >
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/lehrform/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/lehrform/rdf#kurzbz"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
</binding>
<!-- DropDownList fuer Raumtyp -->
<binding id="raumtypListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist datasources="raumtyp.rdf.php" flex="1"
ref="http://www.technikum-wien.at/tempus/raumtyp/liste" >
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/tempus/raumtyp/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/tempus/raumtyp/rdf#kurzbz"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
</binding>
<!-- DropDownList fuer Orte -->
<binding id="raumListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist datasources="<?php echo APP_ROOT; ?>rdf/ort.rdf.php" flex="1"
ref="http://www.technikum-wien.at/tempus/ort/alle-orte" >
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/tempus/ort/rdf#raumtyp"
label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#raumtyp"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
</binding>
<!-- DropDownList fuer Lektoren -->
<binding id="lektorenListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist datasources="mitarbeiter.rdf.php?lektor=1" flex="1"
ref="http://www.technikum-wien.at/tempus/mitarbeiter/alle" >
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#uid"
label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#kurzbz"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
<!--
<implementation>
<property name="currentValue" onget="return this.getAttribute('currentValue');">
<setter><![CDATA[
this.setAttribute('currentValue',val);
var menulist=document.getAnonymousNodes(this)[0];
// auszuwaehlenden Datensatz suchen (stammt aus original Source Code)
var arr=menulist.menupopup.getElementsByAttribute('value',val);
//alert('anzahl arr='+arr.length+'; val='+val);
if (arr.item(0)) {
menulist.selectedItem=arr[0];
} else {
menulist.selectedIndex=0;
}
return val;
]]>
</setter>
</property>
<property name="selectedIndex"
onget="return document.getAnonymousNodes(this)[0].selectedIndex;"
onset="alert('val='+val);return document.getAnonymousNodes(this)[0].selectedIndex=val;"
/>
</implementation>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].getAttribute('value');" />
</handlers>
-->
</binding>
<!-- DropDownList fuer Einheiten -->
<binding id="einheitenListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist datasources="<?php echo APP_ROOT; ?>rdf/einheiten.rdf.php" flex="1"
ref="http://www.technikum-wien.at/tempus/einheiten/liste"
>
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/tempus/einheiten/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/tempus/einheiten/rdf#kurzbz"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
</binding>
<!-- DropDownList fuer Lehrfaecher -->
<binding id="lehrfaecherListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist datasources="lehrfach.rdf.php" flex="1"
ref="http://www.technikum-wien.at/tempus/lehrfach/liste" >
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/tempus/lehrfach/rdf#lehrfach_nr"
label="rdf:http://www.technikum-wien.at/tempus/lehrfach/rdf#bezeichnung"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
</binding>
<!-- DropDownList fuer Studiengaenge -->
<!--
/ extends="chrome://global/content/bindings/menulist.xml#menulist"
-->
<binding id="stgListe" extends="lfvtbinding.xml.php#customMenulist-base" >
<content>
<xul:menulist id="stg" flex="1" datasources="studiengang.rdf.php"
ref="http://www.technikum-wien.at/tempus/studiengang/liste" >
<xul:template>
<xul:menupopup>
<!--<xul:menuitem value="null" label="-" />-->
<xul:menuitem value="rdf:http://www.technikum-wien.at/tempus/studiengang/rdf#studiengang_kz"
label="rdf:http://www.technikum-wien.at/tempus/studiengang/rdf#bezeichnung"
uri="rdf:*"/>
</xul:menupopup>
</xul:template>
</xul:menulist>
</content>
<handlers>
<handler event="command" action="this.currentValue=document.getAnonymousNodes(this)[0].value;" />
</handlers>
</binding>
<!-- ************************************************************************* -->
<!-- customMenulist-base -->
<!-- - fgt property currentValue hinzu, welcher dem value der internen -->
<!-- Menulist entspricht, auerdem wird durch setzen von currentValue -->
<!-- auch der entsprechende Datensatz selektiert -->
<!-- - forward fr selectedIndex -->
<!-- ************************************************************************* -->
<binding id="customMenulist-base" >
<content />
<implementation>
<property name="currentValue" onget="return this.getAttribute('currentValue');">
<setter><![CDATA[
this.setAttribute('currentValue',val);
var menulist=document.getAnonymousNodes(this)[0];
// auszuwaehlenden Datensatz suchen (stammt aus original Source Code)
var arr=menulist.menupopup.getElementsByAttribute('value',val);
//alert('anzahl arr='+arr.length+'; val='+val);
if (arr.item(0)) {
menulist.selectedItem=arr[0];
} else {
menulist.selectedIndex=0;
}
return val;
]]>
</setter>
</property>
<property name="selectedIndex"
onget="return document.getAnonymousNodes(this)[0].selectedIndex;"
onset="return document.getAnonymousNodes(this)[0].selectedIndex=val;"
/>
</implementation>
</binding>
</bindings>
+506
View File
@@ -0,0 +1,506 @@
function getDropDownValue(obj) {
//var list = document.getElementById(obj.name);
//var selectedText = list.selectedItem.label;
//alert(selectedText);
return obj.name;
}
function listElementHandlers(aObj) {
if(!aObj)
return null;
for(var list in aObj)
if(list.match(/^on/))
dump(list+'\n');
}
/**
* neue LVA anlegen
*/
function lvaNeu() {
var lvaDetail=document.getElementById('lvaDetail');
lvaDetail.reset();
var lva = new Lehrveranstaltung();
lva.studiengang=currentAuswahl.stg_kz;
lva.semester=currentAuswahl.sem;
lva.verband=currentAuswahl.ver;
lva.gruppe=currentAuswahl.grp;
lva.einheit=currentAuswahl.einheit;
lvaDetail.setLVA(lva);
lvaDetail.isNew=true;
//alert('stg_kz='+lva.stg_kz);
}
/**
* neue LVA löschen
*/
function lvaDelete() {
// id holen
var lvaDetail=document.getElementById('lvaDetail');
var id=lvaDetail.currentLVA.id;
var lvnr=lvaDetail.currentLVA.lvnr;
if (confirm('LVA '+lvnr+' wirklich löschen?')) {
var details = document.getElementById('lvaDetail');
details.reset();
var req = new phpRequest('lfvtCUD.php','<?php echo $_SERVER['PHP_AUTH_USER'] ?>','<?php echo $_SERVER['PHP_AUTH_PASSW'] ?>');
req.add('do','delete');
req.add('lehrveranstaltung_id',id);
var response = req.execute();
if (response!='ok') alert(response);
currentLVA_id=id;
// RDF aktualisieren (=Datensatz aus Tree entfernen)
var tree=document.getElementById('treeLFVT');
if (tree.currentIndex==-1) return;
/*
// aus dem RDF loeschen
// Datasource holen
var dsource;
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
var sources=tree.database.GetDataSources();
if (sources.hasMoreElements()){
dsource=sources.getNext();
}
*/
// refresh
/* funktioniert zwar, ist aber unpraktisch, weil langsam und außerdem werden die Aeste vom Tree geschlossen
dsource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Refresh(true);
tree.builder.rebuild( );
return;
*/
/*
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subRes = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/" + id);
var rootSubject = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/liste");
var container = Components.classes["@mozilla.org/rdf/container;1"].
createInstance(Components.interfaces.nsIRDFContainer);
try {
container.Init(dsource, rootSubject);
//alert(container);
//container.AppendElement(christaRes);
}
catch (ex){}
var rdfContainerUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].
getService(Components.interfaces.nsIRDFContainerUtils);
if (rdfContainerUtils.IsContainer(dsource,subRes)) {
alert(' is container');
} else {
// -> partizipierende LVA
// parent suchen
var parent = null;
var arcsIn = dsource.ArcLabelsIn(subRes);
while (arcsIn.hasMoreElements()){
var arc = arcsIn.getNext();
if (arc instanceof Components.interfaces.nsIRDFResource){
if (rdfContainerUtils.IsOrdinalProperty(arc)){
parent = dsource.GetSource(arc, subRes, true);
break;
}
}
}
if (rdfContainerUtils.IsContainer(dsource,parent)) {
alert('parent is container '+parent.Value);
var idx = rdfContainerUtils.indexOf(dsource,parent,subRes);
alert('index='+idx);
var container = Components.classes["@mozilla.org/rdf/container;1"].
createInstance(Components.interfaces.nsIRDFContainer);
try {
container.Init(dsource, parent);
var twoRes = rdfContainerUtils.IndexToOrdinalResource(2);
alert("count="+container.GetCount()+"; twoRes="+twoRes.Value);
// geht nicht bei remote RDF
//container.RemoveElementAt(2,true);
} catch(ex) {alert(ex);}
}
}
//predicate = rdfService.GetResource( "id" ); // RDF.GetResource('http://books.mozdev.org/rdf#chapters');
//object = dsource.GetTarget(rootSubject,predicate,true);
//datasource.Mark(rootSubject,predicate,object,true);
//datasource.Sweep( );
*/
// löscht nur aus dem view!
try {
//alert('currentIndex'+tree.currentIndex);
var selected = tree.treeBoxObject.view.getItemAtIndex(tree.currentIndex);
var cells = selected.getElementsByTagName( "treerow" );
var id = cells[ 0 ].getAttribute( "dbID" );
// ids müssten identisch sein (ist nur ein Sicherheitscheck)
if (id==currentLVA_id) {
var parent = tree.view.getItemAtIndex(tree.currentIndex).parentNode;
parent.removeChild(selected);
}
} catch(e) {
alert(e);
return false;
}
// Datasource holen
var dsource;
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
}
}
/**
* neue LVA als Partizipierung anlegen
*/
function lvaNeuPart() {
// ausgewählte LVA holen
var tree = document.getElementById('treeLFVT');
if (tree.currentIndex==-1) return;
try {
var unr = tree.view.getCellText(tree.currentIndex, "lvaUnr")
//alert('currentIndex'+tree.currentIndex);
// level (0 oder 1?)
var level=tree.view.getLevel(tree.currentIndex);
//alert("unr="+unr+"; level="+tree.view.getLevel(tree.currentIndex));
if (level==1) {
var parent = tree.view.getItemAtIndex(c).parentNode;
parent.addChild();
}
tree.builder.rebuild( );
//parent.removeChild(selected);
} catch(e) {
alert(e);
return false;
}
// unr holen
// Datensatz anlegen
var details = document.getElementById('lvaDetail');
details.reset();
}
function lvaAuswahl() {
var tree = document.getElementById('treeLFVT');
if (tree.currentIndex==-1) return;
try {
//alert('currentIndex'+tree.currentIndex);
var selected = tree.treeBoxObject.view.getItemAtIndex(tree.currentIndex);
var cells = selected.getElementsByTagName( "treerow" );
var id = cells[ 0 ].getAttribute( "dbID" );
//alert(id);
//var parent = tree.view.getItemAtIndex(c).parentNode;
//parent.removeChild(selected);
} catch(e) {
alert(e);
return false;
}
// Datasource holen
var dsource;
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
var sources=tree.database.GetDataSources();
if (sources.hasMoreElements()){
dsource=sources.getNext();
}
/*
// RDF/XML Datasources are all nsIRDFXMLSinks
var sink = dsource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
// Attach the observer to the datasource-as-sink
sink.addXMLSinkObserver(
{
onBeginLoad: function(aSink) { },
onInterrupt: function(aSink) { },
onResume: function(aSink) { }, */
// onEndLoad: function(aSink) { /*tree.builder.rebuild();*/ alert('Refresh done'); },
// onError: function(aSink, aStatus, aErrorMsg) { alert('Error! ' + aErrorMsg); }
// }
//);
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/" + id);
// zum debuggen; zeigt predicates an, die in resource zu finden sind
//var karen = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/176355");
/*
var targets = dsource.ArcLabelsOut(subject);
while (targets.hasMoreElements()){
var predicate = targets.getNext();
if (predicate instanceof Components.interfaces.nsIRDFResource){
var newPredicate = rdfService.GetResource( predicate.Value );
alert(predicate.Value);
}
}*/
/*
var targets = dsource.ArcLabelsOut(karen);
while (targets.hasMoreElements()){
var predicate = targets.getNext();
if (predicate instanceof Components.interfaces.nsIRDFResource){
alert(predicate.Value);
var target = dsource.GetTarget(subject, predicate, true);
if (target instanceof Components.interfaces.nsIRDFResource){
alert("Resource is: " + target.Value);
}
else if (target instanceof Components.interfaces.nsIRDFLiteral){
alert("Literal is: " + target.Value + " predi="+ predicate.Value+ "subject="+subject.Value);
}
}
}*/
//
var predicateNS = "http://www.technikum-wien.at/tempus/lva/rdf";
// debug
var predicate = rdfService.GetResource( predicateNS + "#lvnr" );
//
var lva = new Lehrveranstaltung();
lva.id = getTargetHelper(dsource,subject,rdfService.GetResource( "id" ));
lva.unr = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#unr" ));
lva.lvnr=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lvnr" ));
lva.einheit=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#einheit_kurzbz" ));
lva.lektor=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lektor" ));
lva.lehrfach=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrfach_nr" ));
lva.studiengang=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiengang_kz" ));
lva.fachbereich=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fachbereich_id" ));
lva.semester=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#semester" ));
lva.verband=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#verband" ));
lva.gruppe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gruppe" ));
lva.raumtyp=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#raumtyp" ));
lva.raumtyp_alt=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#raumtyp_alt" ));
lva.semesterstunden=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#semesterstunden" ));
lva.stundenblockung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundenblockung" ));
lva.wochenrythmus=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#wochenrythmus" ));
lva.start_kw=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#start_kw" ));
lva.studiensemester=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiensemester_kurzbz" ));
// ist jetzt beim lehrfach:
//lva.ects=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ects" ));
//student.show();
currentLVA = lva;
//alert("lva.studiengang="+lva.studiengang);
var lvaDetail=document.getElementById('lvaDetail');
lvaDetail.setLVA(lva);
lvaDetail.isNew=false;
/*
if (dsource.hasArcOut(subject, predicate)) {
if (target instanceof Components.interfaces.nsIRDFLiteral) {
alert("Literal is: " + target.Value + " predi="+ predicate.Value+ "subject="+subject.Value);
student.vornamen = target.Value;
student.show();
}
} */
}
function getTargetHelper(dsource,subj,predi) {
if (dsource.hasArcOut(subj, predi)) {
var target = dsource.GetTarget(subj, predi, true);
if (target instanceof Components.interfaces.nsIRDFLiteral) {
return target.Value;
}
}
return "";
}
/**
* Lehrveranstaltung Value Object
*/
function Lehrveranstaltung() {
this.id=null; // =lehrveranstaltung_id
this.lvnr=null;
this.unr=null;
this.einheit=null;
this.lektor=null;
this.lehrfach=null;
this.studiengang=null;
this.fachbereich=null;
this.semester=null;
this.verband=null;
this.gruppe=null;
this.raumtyp=null;
this.raumtyp_alt=null;
this.semesterstunden=null;
this.stundenblockung=null;
this.wochenrythmus=null;
this.start_kw=null;
this.studiensemester=null;
this.ects=null;
// flag, welches angibt, ob Daten verändert wurden
this.dataChanged=false;
}
/**
* Daten aus Formular holen und evt. speichern
*/
Lehrveranstaltung.prototype.updateData = function() {
if (document.getElementById('gridStudentenUID').value!=this.uid) {
this.uid = document.getElementById('gridStudentenUID').value;
this.dataChanged = true;
};
if (document.getElementById('gridStudentenTitel').value!=this.titel) {
this.titel = document.getElementById('gridStudentenTitel').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenVornamen').value!=this.vornamen) {
this.vornamen = document.getElementById('gridStudentenVornamen').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenNachname').value!=this.nachname) {
this.nachname = document.getElementById('gridStudentenNachname').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenMatrikelnummer').value!=this.matrikelnummer) {
this.matrikelnummer = document.getElementById('gridStudentenMatrikelnummer').value;
this.dataChanged = true;
}
//alert(document.getElementById('gridStudentenMatrikelnummer').value);
if (document.getElementById('gridStudentenGeburtsdatum').value!=this.geburtsdatum) {
// todo validation
this.geburtsdatum = document.getElementById('gridStudentenGeburtsdatum').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGeburtsort').value!=this.geburtsort) {
this.geburtsort = document.getElementById('gridStudentenGeburtsort').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGeburtszeit').value!=this.geburtszeit) {
// todo validation
this.geburtszeit = document.getElementById('gridStudentenGeburtszeit').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenHomepage').value!=this.homepage) {
this.homepage = document.getElementById('gridStudentenHomepage').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenEmail').value!=this.email) {
this.email = document.getElementById('gridStudentenEmail').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenSemester').value!=this.semester) {
this.semester = document.getElementById('gridStudentenSemester').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenVerband').value!=this.verband) {
this.verband = document.getElementById('gridStudentenVerband').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGruppe').value!=this.gruppe) {
this.gruppe = document.getElementById('gridStudentenGruppe').value;
this.dataChanged = true;
}
if (!((document.getElementById('gridStudentenAktiv').checked && this.aktiv=='True') ||
(!document.getElementById('gridStudentenAktiv').checked && this.aktiv=='False'))) {
this.aktiv = document.getElementById('gridStudentenAktiv').checked?'True':'False';
this.dataChanged = true;
}
alert(this.dataChanged?'dataChanged':'nix changed');
}
/**
* Student anzeigen
*/
Lehrveranstaltung.prototype.show = function() {
document.getElementById('gridStudentenUID').value = this.uid;
document.getElementById('gridStudentenTitel').value = this.titel;
document.getElementById('gridStudentenVornamen').value = this.vornamen;
document.getElementById('gridStudentenNachname').value = this.nachname;
document.getElementById('gridStudentenMatrikelnummer').value = this.matrikelnummer;
document.getElementById('gridStudentenGeburtsdatum').value = this.geburtsdatum;
document.getElementById('gridStudentenGeburtsort').value = this.geburtsort;
document.getElementById('gridStudentenGeburtszeit').value = this.geburtszeit;
document.getElementById('gridStudentenHomepage').value = this.homepage;
document.getElementById('gridStudentenEmail').value = this.email;
document.getElementById('gridStudentenSemester').value = this.semester;
document.getElementById('gridStudentenVerband').value = this.verband;
document.getElementById('gridStudentenGruppe').value = this.gruppe;
document.getElementById('gridStudentenStgBezeichnung').value = this.stg_bezeichnung;
document.getElementById('gridStudentenAktiv').checked = (this.aktiv=='True'?true:false);
}
+512
View File
@@ -0,0 +1,512 @@
function getDropDownValue(obj) {
//var list = document.getElementById(obj.name);
//var selectedText = list.selectedItem.label;
//alert(selectedText);
return obj.name;
}
function listElementHandlers(aObj) {
if(!aObj)
return null;
for(var list in aObj)
if(list.match(/^on/))
dump(list+'\n');
}
/**
* neue LVA anlegen
*/
function lvaNeu() {
var lvaDetail=document.getElementById('lvaDetail');
lvaDetail.reset();
var lva = new Lehrveranstaltung();
lva.studiengang=currentAuswahl.stg_kz;
lva.semester=currentAuswahl.sem;
lva.verband=currentAuswahl.ver;
lva.gruppe=currentAuswahl.grp;
lva.einheit=currentAuswahl.einheit;
lvaDetail.setLVA(lva);
lvaDetail.isNew=true;
//alert('stg_kz='+lva.stg_kz);
}
/**
* neue LVA löschen
*/
function lvaDelete() {
// id holen
var lvaDetail=document.getElementById('lvaDetail');
var id=lvaDetail.currentLVA.id;
var lvnr=lvaDetail.currentLVA.lvnr;
if (confirm('LVA '+lvnr+' wirklich löschen?')) {
var details = document.getElementById('lvaDetail');
details.reset();
var req = new phpRequest('lfvtCUD.php','pam','pam');
req.add('do','delete');
req.add('lehrveranstaltung_id',id);
var response = req.execute();
if (response!='ok') alert(response);
currentLVA_id=id;
// RDF aktualisieren (=Datensatz aus Tree entfernen)
var tree=document.getElementById('treeLFVT');
if (tree.currentIndex==-1) return;
/*
// aus dem RDF loeschen
// Datasource holen
var dsource;
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
var sources=tree.database.GetDataSources();
if (sources.hasMoreElements()){
dsource=sources.getNext();
}
*/
// refresh
/* funktioniert zwar, ist aber unpraktisch, weil langsam und außerdem werden die Aeste vom Tree geschlossen
dsource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Refresh(true);
tree.builder.rebuild( );
return;
*/
/*
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subRes = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/" + id);
var rootSubject = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/liste");
var container = Components.classes["@mozilla.org/rdf/container;1"].
createInstance(Components.interfaces.nsIRDFContainer);
try {
container.Init(dsource, rootSubject);
//alert(container);
//container.AppendElement(christaRes);
}
catch (ex){}
var rdfContainerUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].
getService(Components.interfaces.nsIRDFContainerUtils);
if (rdfContainerUtils.IsContainer(dsource,subRes)) {
alert(' is container');
} else {
// -> partizipierende LVA
// parent suchen
var parent = null;
var arcsIn = dsource.ArcLabelsIn(subRes);
while (arcsIn.hasMoreElements()){
var arc = arcsIn.getNext();
if (arc instanceof Components.interfaces.nsIRDFResource){
if (rdfContainerUtils.IsOrdinalProperty(arc)){
parent = dsource.GetSource(arc, subRes, true);
break;
}
}
}
if (rdfContainerUtils.IsContainer(dsource,parent)) {
alert('parent is container '+parent.Value);
var idx = rdfContainerUtils.indexOf(dsource,parent,subRes);
alert('index='+idx);
var container = Components.classes["@mozilla.org/rdf/container;1"].
createInstance(Components.interfaces.nsIRDFContainer);
try {
container.Init(dsource, parent);
var twoRes = rdfContainerUtils.IndexToOrdinalResource(2);
alert("count="+container.GetCount()+"; twoRes="+twoRes.Value);
// geht nicht bei remote RDF
//container.RemoveElementAt(2,true);
} catch(ex) {alert(ex);}
}
}
//predicate = rdfService.GetResource( "id" ); // RDF.GetResource('http://books.mozdev.org/rdf#chapters');
//object = dsource.GetTarget(rootSubject,predicate,true);
//datasource.Mark(rootSubject,predicate,object,true);
//datasource.Sweep( );
*/
// löscht nur aus dem view!
try {
//alert('currentIndex'+tree.currentIndex);
var selected = tree.treeBoxObject.view.getItemAtIndex(tree.currentIndex);
var cells = selected.getElementsByTagName( "treerow" );
var id = cells[ 0 ].getAttribute( "dbID" );
// ids müssten identisch sein (ist nur ein Sicherheitscheck)
if (id==currentLVA_id) {
var parent = tree.view.getItemAtIndex(tree.currentIndex).parentNode;
parent.removeChild(selected);
}
} catch(e) {
alert(e);
return false;
}
// Datasource holen
var dsource;
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
}
}
/**
* neue LVA als Partizipierung anlegen
*/
function lvaNeuPart() {
// ausgewählte LVA holen
var tree = document.getElementById('treeLFVT');
if (tree.currentIndex==-1) return;
try {
var unr = tree.view.getCellText(tree.currentIndex, "lvaUnr")
//alert('currentIndex'+tree.currentIndex);
// level (0 oder 1?)
var level=tree.view.getLevel(tree.currentIndex);
//alert("unr="+unr+"; level="+tree.view.getLevel(tree.currentIndex));
if (level==1) {
var parent = tree.view.getItemAtIndex(c).parentNode;
parent.addChild();
}
tree.builder.rebuild( );
//parent.removeChild(selected);
} catch(e) {
alert(e);
return false;
}
// unr holen
// Datensatz anlegen
var details = document.getElementById('lvaDetail');
details.reset();
}
function lvaAuswahl() {
var tree = document.getElementById('treeLFVT');
if (tree.currentIndex==-1) return;
try {
//alert('currentIndex'+tree.currentIndex);
var selected = tree.treeBoxObject.view.getItemAtIndex(tree.currentIndex);
var cells = selected.getElementsByTagName( "treerow" );
var id = cells[ 0 ].getAttribute( "dbID" );
//alert(id);
//var parent = tree.view.getItemAtIndex(c).parentNode;
//parent.removeChild(selected);
} catch(e) {
alert(e);
return false;
}
// Datasource holen
var dsource;
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
var sources=tree.database.GetDataSources();
if (sources.hasMoreElements()){
dsource=sources.getNext();
}
/*
// RDF/XML Datasources are all nsIRDFXMLSinks
var sink = dsource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
// Attach the observer to the datasource-as-sink
sink.addXMLSinkObserver(
{
onBeginLoad: function(aSink) { },
onInterrupt: function(aSink) { },
onResume: function(aSink) { }, */
// onEndLoad: function(aSink) { /*tree.builder.rebuild();*/ alert('Refresh done'); },
// onError: function(aSink, aStatus, aErrorMsg) { alert('Error! ' + aErrorMsg); }
// }
//);
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/" + id);
// zum debuggen; zeigt predicates an, die in resource zu finden sind
//var karen = rdfService.GetResource("http://www.technikum-wien.at/tempus/lva/176355");
/*
var targets = dsource.ArcLabelsOut(subject);
while (targets.hasMoreElements()){
var predicate = targets.getNext();
if (predicate instanceof Components.interfaces.nsIRDFResource){
var newPredicate = rdfService.GetResource( predicate.Value );
alert(predicate.Value);
}
}*/
/*
var targets = dsource.ArcLabelsOut(karen);
while (targets.hasMoreElements()){
var predicate = targets.getNext();
if (predicate instanceof Components.interfaces.nsIRDFResource){
alert(predicate.Value);
var target = dsource.GetTarget(subject, predicate, true);
if (target instanceof Components.interfaces.nsIRDFResource){
alert("Resource is: " + target.Value);
}
else if (target instanceof Components.interfaces.nsIRDFLiteral){
alert("Literal is: " + target.Value + " predi="+ predicate.Value+ "subject="+subject.Value);
}
}
}*/
//
var predicateNS = "http://www.technikum-wien.at/tempus/lva/rdf";
// debug
var predicate = rdfService.GetResource( predicateNS + "#lvnr" );
//
var lva = new Lehrveranstaltung();
lva.id = getTargetHelper(dsource,subject,rdfService.GetResource( "id" ));
lva.unr = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#unr" ));
lva.lvnr=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lvnr" ));
lva.einheit=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#einheit_kurzbz" ));
lva.lektor=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lektor" ));
lva.lehrfach=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrfach_nr" ));
lva.studiengang=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiengang_kz" ));
lva.fachbereich=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fachbereich_id" ));
lva.semester=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#semester" ));
lva.verband=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#verband" ));
lva.gruppe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gruppe" ));
lva.raumtyp=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#raumtyp" ));
lva.raumtyp_alt=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#raumtypalternativ" ));
lva.semesterstunden=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#semesterstunden" ));
lva.stundenblockung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundenblockung" ));
lva.wochenrythmus=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#wochenrythmus" ));
lva.start_kw=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#start_kw" ));
lva.studiensemester=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiensemester_kurzbz" ));
lva.lehrform=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrform" ));
// ist jetzt beim lehrfach:
//lva.ects=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ects" ));
//student.show();
currentLVA = lva;
//alert("lva.studiengang="+lva.studiengang);
var lvaDetail=document.getElementById('lvaDetail');
lvaDetail.setLVA(lva);
lvaDetail.isNew=false;
/*
if (dsource.hasArcOut(subject, predicate)) {
if (target instanceof Components.interfaces.nsIRDFLiteral) {
alert("Literal is: " + target.Value + " predi="+ predicate.Value+ "subject="+subject.Value);
student.vornamen = target.Value;
student.show();
}
} */
}
function getTargetHelper(dsource,subj,predi) {
if (dsource.hasArcOut(subj, predi)) {
var target = dsource.GetTarget(subj, predi, true);
if (target instanceof Components.interfaces.nsIRDFLiteral) {
return target.Value;
}
}
return "";
}
/**
* Lehrveranstaltung Value Object
*/
function Lehrveranstaltung() {
this.id=null; // =lehrveranstaltung_id
this.lvnr=null;
this.unr=null;
this.einheit=null;
this.lektor=null;
this.lehrfach=null;
this.studiengang=null;
this.fachbereich=null;
this.semester=null;
this.verband=null;
this.gruppe=null;
this.raumtyp=null;
this.raumtyp_alt=null;
this.semesterstunden=null;
this.stundenblockung=null;
this.wochenrythmus=null;
this.start_kw=null;
this.studiensemester=null;
this.lehrform=null;
this.ects=null;
// flag, welches angibt, ob Daten verändert wurden
this.dataChanged=false;
}
/**
* Daten aus Formular holen und evt. speichern
*/
Lehrveranstaltung.prototype.updateData = function() {
if (document.getElementById('gridStudentenUID').value!=this.uid) {
this.uid = document.getElementById('gridStudentenUID').value;
this.dataChanged = true;
};
if (document.getElementById('gridStudentenTitel').value!=this.titel) {
this.titel = document.getElementById('gridStudentenTitel').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenVornamen').value!=this.vornamen) {
this.vornamen = document.getElementById('gridStudentenVornamen').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenNachname').value!=this.nachname) {
this.nachname = document.getElementById('gridStudentenNachname').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenMatrikelnummer').value!=this.matrikelnummer) {
this.matrikelnummer = document.getElementById('gridStudentenMatrikelnummer').value;
this.dataChanged = true;
}
//alert(document.getElementById('gridStudentenMatrikelnummer').value);
if (document.getElementById('gridStudentenGeburtsdatum').value!=this.geburtsdatum) {
// todo validation
this.geburtsdatum = document.getElementById('gridStudentenGeburtsdatum').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGeburtsort').value!=this.geburtsort) {
this.geburtsort = document.getElementById('gridStudentenGeburtsort').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGeburtszeit').value!=this.geburtszeit) {
// todo validation
this.geburtszeit = document.getElementById('gridStudentenGeburtszeit').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenHomepage').value!=this.homepage) {
this.homepage = document.getElementById('gridStudentenHomepage').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenEmail').value!=this.email) {
this.email = document.getElementById('gridStudentenEmail').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenSemester').value!=this.semester) {
this.semester = document.getElementById('gridStudentenSemester').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenVerband').value!=this.verband) {
this.verband = document.getElementById('gridStudentenVerband').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGruppe').value!=this.gruppe) {
this.gruppe = document.getElementById('gridStudentenGruppe').value;
this.dataChanged = true;
}
if (document.getElementById('gridLehrform').value!=this.lehrform) {
this.lehrform = document.getElementById('gridLehrform').value;
this.dataChanged = true;
}
if (!((document.getElementById('gridStudentenAktiv').checked && this.aktiv=='True') ||
(!document.getElementById('gridStudentenAktiv').checked && this.aktiv=='False'))) {
this.aktiv = document.getElementById('gridStudentenAktiv').checked?'True':'False';
this.dataChanged = true;
}
alert(this.dataChanged?'dataChanged':'nix changed');
}
/**
* Student anzeigen
*/
Lehrveranstaltung.prototype.show = function() {
document.getElementById('gridStudentenUID').value = this.uid;
document.getElementById('gridStudentenTitel').value = this.titel;
document.getElementById('gridStudentenVornamen').value = this.vornamen;
document.getElementById('gridStudentenNachname').value = this.nachname;
document.getElementById('gridStudentenMatrikelnummer').value = this.matrikelnummer;
document.getElementById('gridStudentenGeburtsdatum').value = this.geburtsdatum;
document.getElementById('gridStudentenGeburtsort').value = this.geburtsort;
document.getElementById('gridStudentenGeburtszeit').value = this.geburtszeit;
document.getElementById('gridStudentenHomepage').value = this.homepage;
document.getElementById('gridStudentenEmail').value = this.email;
document.getElementById('gridStudentenSemester').value = this.semester;
document.getElementById('gridStudentenVerband').value = this.verband;
document.getElementById('gridStudentenGruppe').value = this.gruppe;
document.getElementById('gridStudentenStgBezeichnung').value = this.stg_bezeichnung;
document.getElementById('gridStudentenAktiv').checked = (this.aktiv=='True'?true:false);
}
+142
View File
@@ -0,0 +1,142 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>';
echo "<?xml-stylesheet href=\"".APP_ROOT."content/lfvt.css\" type=\"text/css\" ?>";
?>
<overlay id="LFVTOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/phpRequest.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/lfvtoverlay.js.php" />
<!-- ************************ -->
<!-- * Lehrfachverteilung * -->
<!-- ************************ -->
<vbox id="lfvtEditor" flex="1">
<toolbox>
<toolbar id="nav-toolbar">
<toolbarbutton label="Neue LVA" oncommand="lvaNeu();" />
<toolbarbutton label="Neue LVA-Partizipierung" oncommand="lvaNeuPart();"/>
<toolbarbutton label="Löschen" oncommand="lvaDelete();" />
</toolbar>
</toolbox>
<!-- ************* -->
<!-- * Auswahl * -->
<!-- ************* -->
<!-- Bem.: style="visibility:collapse" versteckt eine Spalte -->
<tree id="treeLFVT" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/tempus/lva/liste"
style="margin:0px;"
onselect="lvaAuswahl(this);"
>
<treecols>
<treecol id="lvaUnr" label="UNR" flex="2" primary="true"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#unr"
/>
<splitter class="tree-splitter"/>
<treecol id="lvaLvnr" label="LVNR" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#lvnr" />
<splitter class="tree-splitter"/>
<treecol id="lvaLehrfach" label="Lehrfach" flex="10" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#lehrfach"/>
<splitter class="tree-splitter"/>
<treecol id="lvaLektor" label="Lektor" flex="5" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#lektorPrettyPrint"/>
<splitter class="tree-splitter"/>
<treecol id="lvaSemester" label="S" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#semester" />
<splitter class="tree-splitter"/>
<treecol id="lvaVerband" label="V" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#verband" />
<splitter class="tree-splitter"/>
<treecol id="lvaGruppe" label="G" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#gruppe"/>
<splitter class="tree-splitter"/>
<treecol id="lvaEinheit" label="Einheit" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lva/rdf#einheit_kurzbz"/>
<splitter class="tree-splitter"/>
<treecol id="lvaRaumtyp" label="R.Typ." flex="5" hidden="true" />
<splitter class="tree-splitter"/>
<treecol id="lvaRaumtypalternativ" label="R.Typ.alt." flex="5" hidden="true" />
<splitter class="tree-splitter"/>
<treecol id="lvaSemesterstunden" label="Semesterstunden" flex="1" hidden="true" />
<splitter class="tree-splitter"/>
<treecol id="lvaStundenblockung" label="Stundenblockung" flex="5" hidden="true" />
<splitter class="tree-splitter"/>
<treecol id="lvaWochenrythmus" label="Wochenrythmus" flex="5" hidden="true" />
<splitter class="tree-splitter"/>
<treecol id="lvaStart_kw" label="Start KW" flex="5" hidden="true" />
<splitter class="tree-splitter"/>
<treecol id="lvaStudiensemester_kurzbz" label="Studiensemester" flex="5" hidden="true" />
<splitter class="tree-splitter"/>
<treecol id="lvaLehrform" label="Lehrform" flex="5" hidden="true" />
</treecols>
<template>
<treechildren flex="1" >
<treeitem uri="rdf:*">
<treerow dbID="rdf:http://www.technikum-wien.at/tempus/lva/rdf#dbID">
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#unr" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#lvnr"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#lehrfach"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#lektorPrettyPrint"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#semester"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#verband"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#gruppe"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#einheit_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#raumtyp"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#raumtypalternativ"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#semesterstunden"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#stundenblockung"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#wochenrythmus"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#start_kw"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#studiensemester_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lva/rdf#lehrform"/>
</treerow>
</treeitem>
</treechildren>
</template>
</tree>
<splitter collapse="after" persist="state">
<grippy />
</splitter>
<!-- ************ -->
<!-- * Detail * -->
<!-- ************ -->
<vbox flex="1" style="overflow:auto;margin:0px;">
<box id="lvaDetail" class="lvaDetail" style="margin:0px;" />
</vbox>
</vbox>
</overlay>
+75
View File
@@ -0,0 +1,75 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/person.class.php');
include_once('../include/mitarbeiter.class.php');
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// test
/*
$einheit_kurzbz='';
$grp='1';
$ver='A';
$sem=3;
$stg_kz=145;
*/
$einheit_kurzbz='';
if (isset($_GET['lektor']))
$lektor=$_GET['lektor'];
else
$lektor=true;
$fixangestellt=$_GET['fixangestellt'];
$stg_kz=$_GET['stg_kz'];
$fachbereich_id=$_GET['fachbereich_id'];
// Mitarbeiter holen
$mitarbeiter=new mitarbeiter($conn);
$ma=$mitarbeiter->getMitarbeiter($lektor,$fixangestellt,$stg_kz,$fachbereich_id);
$rdf_url='http://www.technikum-wien.at/tempus/mitarbeiter/';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:MITARBEITER="<?php echo $rdf_url; ?>rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>alle">
<?php
foreach ($ma as $mitarbeiter)
{
?>
<RDF:li>
<RDF:Description about="<?php echo $rdf_url.$mitarbeiter->uid; ?>" >
<MITARBEITER:uid><?php echo $mitarbeiter->uid; ?></MITARBEITER:uid>
<MITARBEITER:titel><?php echo $mitarbeiter->titel; ?></MITARBEITER:titel>
<MITARBEITER:vornamen><?php echo $mitarbeiter->vornamen; ?></MITARBEITER:vornamen>
<MITARBEITER:nachname><?php echo $mitarbeiter->nachname; ?></MITARBEITER:nachname>
<MITARBEITER:kurzbz><?php echo $mitarbeiter->kurzbz; ?></MITARBEITER:kurzbz>
</RDF:Description>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:RDF>
+196
View File
@@ -0,0 +1,196 @@
<?php
/**
* FAS-Online
* Dialog zum eingeben und bearbeiten der Adressen
*/
include('../vilesci/config.inc.php');
if(isset($_GET['adress_id']) && $_GET['adress_id']!='')
echo "var MitarbeiterDetailAdress_id=".$_GET['adress_id'];
else
echo "var MitarbeiterDetailAdress_id=null";
?>
if(MitarbeiterDetailAdress_id!=null)
{
window.setTimeout("MitarbeiterAdressenBearbeiten()",window.opener.sleep_time/2);
}
/**
* Laedt den zu bearbeitenden Datensatz
*/
function MitarbeiterAdressenBearbeiten()
{
// RDF vom Server holen
// Url zum RDF
var url="<?php echo APP_ROOT; ?>rdf/fas/adressen.rdf.php?adress_id="+MitarbeiterDetailAdress_id;
// Request absetzen
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url, false, '','');
httpRequest.send('');
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status); //404 ErrorCodes etc
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// XML in Datasource parsen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/adressen/alle');
// Trick 17 (sonst gibt's ein Permission denied)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Daten aus RDF auslesen
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/adressen/" + MitarbeiterDetailAdress_id);
var predicateNS = "http://www.technikum-wien.at/adressen/rdf";
//Felder befuellen
person_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#person_id" ));
adresstyp = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#typ" ));
nation = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#nation" ));
strasse = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#strasse" ));
plz = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#plz" ));
gemeinde = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#gemeinde" ));
ort = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#ort" ));
zustelladresse = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#zustelladresse" ));
bismeldeadresse = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#bismeldeadresse" ));
document.getElementById('textbox-mitarbeiter-adressen-person_id').value = person_id;
document.getElementById('menulist-mitarbeiter-adressen-adresstyp').value = adresstyp;
document.getElementById('menulist-mitarbeiter-adressen-nation').value = nation;
document.getElementById('textbox-mitarbeiter-adressen-strasse').value = strasse;
document.getElementById('textbox-mitarbeiter-adressen-plz').value = plz;
document.getElementById('textbox-mitarbeiter-adressen-gemeinde').value = gemeinde;
document.getElementById('textbox-mitarbeiter-adressen-ort').value = ort;
if(zustelladresse == 'Ja')
document.getElementById('checkbox-mitarbeiter-adressen-zustelladresse').checked = true;
else
document.getElementById('checkbox-mitarbeiter-adressen-zustelladresse').checked = false;
if(bismeldeadresse == 'Ja')
document.getElementById('checkbox-mitarbeiter-adressen-bismeldeadresse').checked = true;
else
document.getElementById('checkbox-mitarbeiter-adressen-bismeldeadresse').checked = false;
}
function MitarbeiterAdressenValueChange()
{
}
/**
* Speichert die eingegebene Adresse
*/
function MitarbeiterAdressenSave()
{
//Daten aus den Felder holen
person_id = document.getElementById('textbox-mitarbeiter-adressen-person_id').value;
adresstyp = document.getElementById('menulist-mitarbeiter-adressen-adresstyp').value;
name = document.getElementById('menulist-mitarbeiter-adressen-adresstyp').label;
nation = document.getElementById('menulist-mitarbeiter-adressen-nation').value;
strasse = document.getElementById('textbox-mitarbeiter-adressen-strasse').value;
plz = document.getElementById('textbox-mitarbeiter-adressen-plz').value;
gemeinde = document.getElementById('textbox-mitarbeiter-adressen-gemeinde').value;
ort = document.getElementById('textbox-mitarbeiter-adressen-ort').value;
zustelladresse = document.getElementById('checkbox-mitarbeiter-adressen-zustelladresse').checked;
bismeldeadresse = document.getElementById('checkbox-mitarbeiter-adressen-bismeldeadresse').checked;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
//Parameterliste zusammenbauen
var param = "type=adresse";
if(MitarbeiterDetailAdress_id!=null)
param = param + "&new=false";
else
param = param + "&new=true";
param = param + "&adress_id="+encodeURIComponent(MitarbeiterDetailAdress_id);
param = param + "&person_id="+encodeURIComponent(person_id);
param = param + "&adresstyp="+encodeURIComponent(adresstyp);
param = param + "&name="+encodeURIComponent(name);
param = param + "&nation="+encodeURIComponent(nation);
param = param + "&strasse="+encodeURIComponent(strasse);
param = param + "&plz="+encodeURIComponent(plz);
param = param + "&gemeinde="+encodeURIComponent(gemeinde);
param = param + "&ort="+encodeURIComponent(ort);
param = param + "&zustelladresse="+encodeURIComponent(zustelladresse);
param = param + "&bismeldeadresse="+encodeURIComponent(bismeldeadresse);
//Parameter schicken
httpRequest.send(param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
{
//AdressenTree aktualisieren
//Statusbar setzen
window.opener.setStatusBarText("Adresse erfolgreich gespeichert");
window.opener.document.getElementById("tree-liste-adressen").builder.refresh();
//Fenster schliessen
window.close();
}
else
{
alert("Fehler beim Speichern der Daten: "+dbdml_errormsg);
}
return true;
}
+111
View File
@@ -0,0 +1,111 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
if(isset($_GET['person_id']))
$person_id = $_GET['person_id'];
else
$person_id=null;
if(isset($_GET['adress_id']))
$adress_id=$_GET['adress_id'];
else
$adress_id=null;
// rdf:null
?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<window id="mitarbeiter-adressen-dialog" title="Adressen"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fasoverlay.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/mitarbeiteradressendialog.js.php?adress_id=<?php echo $adress_id;?>" />
<textbox id="textbox-mitarbeiter-adressen-person_id" value="<?php echo $person_id;?>" hidden="true"/>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="menulist-mitarbeiter-adresse-adresstyp" value="Adresstyp:"/>
<menulist id="menulist-mitarbeiter-adressen-adresstyp"
oncommand="MitarbeiterAdressenValueChange();">
<menupopup>
<menuitem label=" --- " value="0"/>
<menuitem label="Firmensitz" value="1"/>
<menuitem label="Hauptwohnsitz" value="2" selected="true"/>
<menuitem label="Nebenwohnsitz" value="3"/>
</menupopup>
</menulist>
</row>
<row>
<label align="end" control="menulist-mitarbeiter-adressen-nation" value="Nation:"/>
<menulist id="menulist-mitarbeiter-adressen-nation" oncommand="MitarbeiterAdressenValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/nation.rdf.php"
ref="http://www.technikum-wien.at/nation/alle" value='A'>
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/nation/rdf#kurztext"
value="rdf:http://www.technikum-wien.at/nation/rdf#code"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-adressen-strasse" value="Strasse:"/>
<textbox id="textbox-mitarbeiter-adressen-strasse" maxlength="255" oninput="MitarbeiterAdressenValueChange()"/>
</row>
<row>
<label align="end" control="menulist-mitarbeiter-adressen-plz" value="Plz:"/>
<hbox><textbox id="textbox-mitarbeiter-adressen-plz" size="10" maxlength="10" oninput="MitarbeiterAdressenValueChange()"/><spacer /></hbox>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-adressen-gemeinde" value="Gemeinde:"/>
<textbox id="textbox-mitarbeiter-adressen-gemeinde" maxlength="255" oninput="MitarbeiterAdressenValueChange()"/>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-adressen-ort" value="Ort:"/>
<textbox id="textbox-mitarbeiter-adressen-ort" maxlength="255" oninput="MitarbeiterAdressenValueChange()"/>
</row>
<row>
<spacer />
<hbox>
<checkbox label="Zustelladresse" id="checkbox-mitarbeiter-adressen-zustelladresse" checked="true" onclick="MitarbeiterAdressenValueChange()"/>
<checkbox label="BIS-Meldeadresse" id="checkbox-mitarbeiter-adressen-bismeldeadresse" checked="true" onclick="MitarbeiterAdressenValueChange()"/>
</hbox>
</row>
</rows>
</grid>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column flex="5"/>
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<spacer />
<button label="OK" oncommand="MitarbeiterAdressenSave()"/>
<button label="Abbrechen" oncommand="window.close()"/>
</row>
</rows>
</grid>
</window>
@@ -0,0 +1,194 @@
<?php
include('../vilesci/config.inc.php');
if(isset($_GET['bankverbindung_id']) && $_GET['bankverbindung_id']!='')
echo "var MitarbeiterDetailBankverbindung_id=".$_GET['bankverbindung_id'];
else
echo "var MitarbeiterDetailBankverbindung_id=null";
?>
if(MitarbeiterDetailBankverbindung_id!=null)
{
window.setTimeout("MitarbeiterBankverbindungBearbeiten()",window.opener.sleep_time/2);
}
/**
* Laedt den zu bearbeitenden Datensatz
*/
function MitarbeiterBankverbindungBearbeiten()
{
// RDF vom Server holen
// Url zum RDF
var url="<?php echo APP_ROOT; ?>rdf/fas/bankverbindungen.rdf.php?bankverbindung_id="+MitarbeiterDetailBankverbindung_id;
// Request absetzen
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url, false, '','');
httpRequest.send('');
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status); //404 ErrorCodes etc
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// XML in Datasource parsen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/bankverbindungen/alle');
// Trick 17 (sonst gibt's ein Permission denied)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Daten aus RDF auslesen
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/bankverbindungen/" + MitarbeiterDetailBankverbindung_id);
var predicateNS = "http://www.technikum-wien.at/bankverbindungen/rdf";
//Felder befuellen
person_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#person_id" ));
name = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#name" ));
anschrift = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#anschrift" ));
blz = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#blz" ));
bic = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#bic" ));
kontonr = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#kontonummer" ));
iban = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#iban" ));
typ = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#typ" ));
verrechnungskonto = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#verrechnungskonto" ));
document.getElementById('textbox-mitarbeiter-bankverbindung-person_id').value = person_id;
document.getElementById('textbox-mitarbeiter-bankverbindung-name').value = name;
document.getElementById('textbox-mitarbeiter-bankverbindung-anschrift').value = anschrift;
document.getElementById('textbox-mitarbeiter-bankverbindung-blz').value = blz;
document.getElementById('textbox-mitarbeiter-bankverbindung-bic').value = bic;
document.getElementById('textbox-mitarbeiter-bankverbindung-kontonr').value = kontonr;
document.getElementById('textbox-mitarbeiter-bankverbindung-iban').value = iban;
document.getElementById('menulist-mitarbeiter-bankverbindung-typ').value = typ;
if(verrechnungskonto=='Ja')
document.getElementById('checkbox-mitarbeiter-bankverbindung-verrechnungskonto').checked=true;
else
document.getElementById('checkbox-mitarbeiter-bankverbindung-verrechnungskonto').checked=false;
}
function MitarbeiterBankverbindungValueChange()
{
}
/**
* Speichert die eingegebene Email
*/
function MitarbeiterBankverbindungSave()
{
//Daten aus den Felder holen
person_id = document.getElementById('textbox-mitarbeiter-bankverbindung-person_id').value;
name = document.getElementById('textbox-mitarbeiter-bankverbindung-name').value;
typ = document.getElementById('menulist-mitarbeiter-bankverbindung-typ').value;
anschrift = document.getElementById('textbox-mitarbeiter-bankverbindung-anschrift').value;
blz = document.getElementById('textbox-mitarbeiter-bankverbindung-blz').value;
bic = document.getElementById('textbox-mitarbeiter-bankverbindung-bic').value;
kontonr = document.getElementById('textbox-mitarbeiter-bankverbindung-kontonr').value;
iban = document.getElementById('textbox-mitarbeiter-bankverbindung-iban').value;
verrechnungskonto = document.getElementById('checkbox-mitarbeiter-bankverbindung-verrechnungskonto').checked;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var param = "type=bankverbindung";
if(MitarbeiterDetailBankverbindung_id!=null)
param = param + "&new=false";
else
param = param + "&new=true";
param = param + "&bankverbindung_id="+encodeURIComponent(MitarbeiterDetailBankverbindung_id);
param = param + "&person_id="+encodeURIComponent(person_id);
param = param + "&name="+encodeURIComponent(name);
param = param + "&typ="+encodeURIComponent(typ);
param = param + "&anschrift="+encodeURIComponent(anschrift);
param = param + "&blz="+encodeURIComponent(blz);
param = param + "&bic="+encodeURIComponent(bic);
param = param + "&kontonr="+encodeURIComponent(kontonr);
param = param + "&iban="+encodeURIComponent(iban);
if(verrechnungskonto)
param = param + "&verrechnungskonto=true";
else
param = param + "&verrechnungskonto=false";
//Parameter schicken
httpRequest.send(param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
{
//BankverbindungenTree aktualisieren
//Statusbar setzen
window.opener.setStatusBarText(dbdml_errormsg);
window.opener.document.getElementById("tree-liste-bankverbindungen").builder.refresh();
window.setTimeout('window.opener.document.getElementById("tree-liste-bankverbindungen").builder.rebuild()',window.opener.sleep_time*2);
//Fenster schliessen
window.close();
}
else
{
alert("Fehler beim Speichern der Daten: "+dbdml_errormsg);
}
return true;
}
@@ -0,0 +1,101 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
if(isset($_GET['person_id']))
$person_id = $_GET['person_id'];
else
$person_id=null;
if(isset($_GET['bankverbindung_id']))
$bankverbindung_id=$_GET['bankverbindung_id'];
else
$bankverbindung_id=null;
// rdf:null
?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<window id="mitarbeiter-bankverbindung-dialog" title="Email"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fasoverlay.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/mitarbeiterbankverbindungdialog.js.php?bankverbindung_id=<?php echo $bankverbindung_id;?>" />
<textbox id="textbox-mitarbeiter-bankverbindung-person_id" value="<?php echo $person_id;?>" hidden="true"/>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="menulist-mitarbeiter-bankverbindung-typ" value="Konto Typ:"/>
<menulist id="menulist-mitarbeiter-bankverbindung-typ"
oncommand="MitarbeiterBankverbindungValueChange();">
<menupopup>
<menuitem label="Privatkonto" value="1" selected="true"/>
<menuitem label="Firmenkonto" value="2"/>
</menupopup>
</menulist>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-bankverbindung-name" value="Bank Bezeichnung:"/>
<textbox id="textbox-mitarbeiter-bankverbindung-name" maxlength="255" oninput="MitarbeiterBankverbindungValueChange()"/>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-bankverbindung-anschrift" value="Bank Anschrift:"/>
<textbox id="textbox-mitarbeiter-bankverbindung-anschrift" maxlength="255" oninput="MitarbeiterBankverbindungValueChange()"/>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-bankverbindung-blz" value="BLZ:"/>
<textbox id="textbox-mitarbeiter-bankverbindung-blz" maxlength="255" oninput="MitarbeiterBankverbindungValueChange()"/>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-bankverbindung-kontonr" value="Kontonummer:"/>
<textbox id="textbox-mitarbeiter-bankverbindung-kontonr" maxlength="255" oninput="MitarbeiterBankverbindungValueChange()"/>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-bankverbindung-bic" value="BIC:"/>
<textbox id="textbox-mitarbeiter-bankverbindung-bic" maxlength="255" oninput="MitarbeiterBankverbindungValueChange()"/>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-bankverbindung-iban" value="IBAN:"/>
<textbox id="textbox-mitarbeiter-bankverbindung-iban" maxlength="255" oninput="MitarbeiterBankverbindungValueChange()"/>
</row>
<row>
<spacer />
<checkbox label="Verrechnungskonto" id="checkbox-mitarbeiter-bankverbindung-verrechnungskonto" checked="true" oncommand="MitarbeiterBankverbindungValueChange()"/>
</row>
</rows>
</grid>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column flex="5"/>
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<spacer />
<button label="OK" oncommand="MitarbeiterBankverbindungSave()"/>
<button label="Abbrechen" oncommand="window.close()"/>
</row>
</rows>
</grid>
</window>
+630
View File
@@ -0,0 +1,630 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/fas.css" type="text/css"?>';
?>
<!DOCTYPE overlay>
<overlay id="MitarbeiterDetailOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<!-- datasources="rdf:null" ref="http://www.technikum-wien.at/mitarbeiter/alle" -->
<vbox id="MitarbeiterDetailEditor" flex="1" style="overflow:auto">
<tabbox id="tabbox-MitarbeiterDetail" flex="3" orient="vertical" hidden="false">
<tabs orient="horizontal">
<tab id="tab-mitarbeiter-person" label="Stammdaten" />
<tab id="tab-mitarbeiter-detail" label="Zusätzliche Daten" />
</tabs>
<tabpanels id="tabpanels-mitarbeiter-main" flex="1">
<vbox>
<groupbox id='groupbox-personendaten'>
<!--PersonenDaten-->
<caption label="Personendaten" />
<textbox id="textbox-mitarbeiter-detail-mitarbeiter_id" hidden="true" />
<textbox id="textbox-mitarbeiter-detail-person_id" hidden="true" />
<textbox id="textbox-mitarbeiter-detail-aktstatus" hidden="true" />
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true"
>
<columns>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="textbox-mitarbeiter-detail-anrede" value="Anrede:"/>
<textbox id="textbox-mitarbeiter-detail-anrede" flex="1" value="" oninput="treeMitarbeiterValueChange()" onchange="MitarbeiterAnredeValueChange()"/>
<label control="textbox-mitarbeiter-detail-titelpre" value="Titel (Pre):"/>
<textbox id="textbox-mitarbeiter-detail-titelpre" flex="1" value="" oninput="treeMitarbeiterValueChange()"/>
<label control="textbox-mitarbeiter-detail-titelpost" value="Titel (Post):"/>
<textbox id="textbox-mitarbeiter-detail-titelpost" flex="1" oninput="treeMitarbeiterValueChange()"/>
<label control="textbox-mitarbeiter-detail-uid" value="UID:"/>
<hbox><textbox id="textbox-mitarbeiter-detail-uid" size="20" maxlength="20" oninput="treeMitarbeiterValueChange()"/><spacer /></hbox>
</row>
<row>
<label control="textbox-mitarbeiter-detail-nachname" value="Nachname:"/>
<textbox id="textbox-mitarbeiter-detail-nachname" class="pflichtfeld" flex="1" oninput="treeMitarbeiterValueChange()"/>
<label control="textbox-mitarbeiter-detail-vorname" value="Vorname:"/>
<textbox id="textbox-mitarbeiter-detail-vorname" class="pflichtfeld" flex="1" oninput="treeMitarbeiterValueChange()"/>
<label control="textbox-mitarbeiter-detail-vornamen" value="Vornamen:"/>
<textbox id="textbox-mitarbeiter-detail-vornamen" flex="1" oninput="treeMitarbeiterValueChange()"/>
<label control="textbox-mitarbeiter-detail-svnr" value="SVNR:" />
<hbox><textbox id="textbox-mitarbeiter-detail-svnr" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()" onchange="MitarbeiterSVNRValueChange()"/><spacer /></hbox>
</row>
<row>
<label control="textbox-mitarbeiter-detail-geburtsort" value="Geburtsort: "/>
<textbox id="textbox-mitarbeiter-detail-geburtsort" maxlength="255" flex="1" oninput="treeMitarbeiterValueChange()"/>
<label control="menulist-mitarbeiter-detail-staatsbuergerschaft" value="Staatsbürgerschaft:"/>
<menulist id="menulist-mitarbeiter-detail-staatsbuergerschaft" oncommand="treeMitarbeiterValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/nation.rdf.php?ohnesperre=true"
ref="http://www.technikum-wien.at/nation/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/nation/rdf#kurztext"
value="rdf:http://www.technikum-wien.at/nation/rdf#code"/>
</menupopup>
</template>
</menulist>
<label control="menulist-mitarbeiter-detail-geburtsnation" value="Geburtsnation:"/>
<menulist id="menulist-mitarbeiter-detail-geburtsnation" oncommand="treeMitarbeiterValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/nation.rdf.php"
ref="http://www.technikum-wien.at/nation/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/nation/rdf#kurztext"
value="rdf:http://www.technikum-wien.at/nation/rdf#code"/>
</menupopup>
</template>
</menulist>
<label control="textbox-mitarbeiter-detail-ersatzkennzeichen" value="Ersatzkennzeichen:"/>
<textbox id="textbox-mitarbeiter-detail-ersatzkennzeichen" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()"/>
</row>
<row>
<label control="textbox-mitarbeiter-detail-geburtsdatum" value="Gebutsdatum:"/>
<hbox><textbox id="textbox-mitarbeiter-detail-geburtsdatum" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()"/><spacer /></hbox>
<label control="button-mitarbeiter-detail-geschlecht" value="Geschlecht:"/>
<button id='button-mitarbeiter-detail-geschlecht' label='maennlich' oncommand="MitarbeiterDetailGeschlechtChange()" class="change" />
<label control="menulist-mitarbeiter-detail-familienstand" value="Familienstand: "/>
<menulist id="menulist-mitarbeiter-detail-familienstand"
oncommand="treeMitarbeiterValueChange();">
<menupopup>
<menuitem label=" --- " value="0"/>
<menuitem label="ledig" value="1" selected="true"/>
<menuitem label="verheiratet" value="2"/>
<menuitem label="geschieden" value="3"/>
<menuitem label="verwitwet" value="4"/>
</menupopup>
</menulist>
<label control="textbox-mitarbeiter-detail-anzahlderkinder" value="Anzahl Kinder:"/>
<hbox><textbox id="textbox-mitarbeiter-detail-anzahlderkinder" size="2" maxlength="2" value="0" oninput="treeMitarbeiterValueChange()"/><spacer /></hbox>
</row>
</rows>
</grid>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" class="style-groupbox"
>
<columns>
<column />
<column flex="2"/>
<column flex="1"/>
<column />
</columns>
<rows>
<row>
<label control="textbox-mitarbeiter-detail-bemerkung" value="Bemerkung:"/>
<textbox id="textbox-mitarbeiter-detail-bemerkung" multiline="true" oninput="treeMitarbeiterValueChange()"/>
<spacer flex="1"/>
<checkbox label="Aktiv" id="checkbox-mitarbeiter-detail-aktiv" checked="true" oncommand="treeMitarbeiterValueChange()"/>
<checkbox label="BIS Melden" id="checkbox-mitarbeiter-detail-bismelden" checked="true" oncommand="treeMitarbeiterValueChange()"/>
</row>
</rows>
</grid>
</groupbox>
<hbox>
<groupbox flex="8">
<caption label="Mitarbeiterdaten" />
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true"
>
<columns>
<column flex="1"/>
<column flex="1"/>
<column flex="1"/>
<column flex="1"/>
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="textbox-mitarbeiter-detail-personal_nr" value="Personalnummer:"/>
<textbox id="textbox-mitarbeiter-detail-personal_nr" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()"/>
<label align="end" control="textbox-mitarbeiter-detail-kurzbezeichnung" value="Kurzbezeichnung:"/>
<hbox>
<textbox id="textbox-mitarbeiter-detail-kurzbezeichnung" class="pflichtfeld" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()"/>
<button id='button-mitarbeiter-detail-gen_kurzbez' label='G' oncommand="MitarbeiterDetailKurzbzGenerate()"/>
</hbox>
<label align="end" control="textbox-mitarbeiter-detail-beginndatum" value="Beginndatum:"/>
<hbox><textbox id="textbox-mitarbeiter-detail-beginndatum" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()"/><spacer /></hbox>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-detail-stundensatz" value="Stundensatz:"/>
<textbox id="textbox-mitarbeiter-detail-stundensatz" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()"/>
<checkbox label="Habilitation" id="checkbox-mitarbeiter-detail-habilitation" checked="false" oncommand="treeMitarbeiterValueChange()"/>
<spacer/>
<checkbox label="ausgeschieden am" id="checkbox-mitarbeiter-detail-ausgeschieden" checked="false" oncommand="treeMitarbeiterValueChange(); MitarbeiterDetailAusgeschiedenChange();"/>
<hbox><textbox id="textbox-mitarbeiter-detail-beendigungsdatum" disabled="true" size="10" maxlength="10" oninput="treeMitarbeiterValueChange()"/><spacer /></hbox>
</row>
</rows>
</grid>
<hbox class="style-groupbox">
<label align="end" control="menulist-mitarbeiter-detail-ausbildung" value="Höchste abgeschlossene Ausbildung:"/>
<menulist id="menulist-mitarbeiter-detail-ausbildung" oncommand="treeMitarbeiterValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/ausbildung.rdf.php"
ref="http://www.technikum-wien.at/ausbildung/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/ausbildung/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/ausbildung/rdf#ausbildung_id"/>
</menupopup>
</template>
</menulist>
</hbox>
</groupbox>
<spacer flex="2" />
<vbox flex="1">
<spacer flex="1"/>
<hbox><button id="button-mitarbeiter-detail-zurueck" flex="1" disabled="true" label="Zurück" oncommand="MitarbeiterDetailZurueck();"/></hbox>
<hbox><button id="button-mitarbeiter-detail-speichern" flex="1" disabled="true" label="Speichern" oncommand="saveMitarbeiter();"/></hbox>
<spacer flex="1"/>
</vbox>
<spacer flex="2" />
</hbox>
<groupbox hidden="false" flex="1">
<caption label="Funktionen" />
<hbox flex="1" class="hbox-tree">
<tree id="tree-liste-funktionen" seltype="multi" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/funktionen/alle"
onselect="" flags="dont-build-content"
enableColumnDrag="true"
ondblclick="MitarbeiterDetailFunktionenBearbeiten()"
>
<treecols>
<treecol id="tree-liste-funktionen-col-funktion_id" label="Funktion_id" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#funktion_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-mitarbeiter_id" label="Mitarbeiter_id" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#mitarbeiter_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-studiensemester_bezeichnung" label="Studiensemester" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#studiensemester_id" />
<splitter class="tree-splitter"/>
<?php /*Wenn die ID nicht angezeigt wird, dann funktioniert das Sortieren von studiensemester_bezeichnung nicht richtig*/ ?>
<treecol id="tree-liste-funktionen-col-studiensemester_id" label="StudiensemesterID" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#studiensemester_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-erhalter_id" label="Erhalter" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#erhalter_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-studiengang_bezeichnung" label="Studiengang" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#studiengang_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-fachbereich_bezeichnung" label="Fachbereich" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#fachbereich_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-name" label="Name" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#name" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-funktion_bezeichnung" label="Funktion" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#funktion_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-beschart1" label="Beschäftigungsart 1" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#beschart1_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-beschart2" label="Beschäftigungsart 2" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#beschart2_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-verwendung" label="Verwendung" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#verwendung_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-hauptberuflich" label="Hauptberuflich" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#hauptberuflich" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-hauptberuf" label="Hauptberuf" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#hauptberuf_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-entwicklungsteam" label="Mitglied im Entwicklungsteam" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#entwicklungsteam" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-besonderequalifikation" label="Besondere Qualifikation" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#besonderequalifikation_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-funktionen-col-ausmass" label="Ausmass" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/funktionen/rdf#ausmass_bezeichnung" />
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#funktion_id" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#mitarbeiter_id" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#studiensemester_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#studiensemester_id" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#erhalter_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#studiengang_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#fachbereich_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#name" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#funktion_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#beschart1_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#beschart2_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#verwendung_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#hauptberuflich" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#hauptberuf_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#entwicklungsteam" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#besonderequalifikation_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/funktionen/rdf#ausmass_bezeichnung" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox>
<button id="button-mitarbeiter-detail-funktionen-neu" disabled="true" label="Neu" oncommand="MitarbeiterDetailFunktionenNeu();"/>
<button id="button-mitarbeiter-detail-funktionen-bearbeiten" disabled="true" label="Bearbeiten" oncommand="MitarbeiterDetailFunktionenBearbeiten();"/>
<button id="button-mitarbeiter-detail-funktionen-loeschen" disabled="true" label="Löschen" oncommand="MitarbeiterDetailFunktionenLoeschen();"/>
<spacer flex="1" />
<button id="button-mitarbeiter-detail-funktionen-alleanzeigen" disabled="true" label="Alle Anzeigen" oncommand="MitarbeiterDetailFunktionenAlleAnzeigen();"/>
</vbox>
</hbox>
</groupbox>
</vbox>
<!-- Seite 2 -->
<vbox>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true"
>
<columns>
<column flex="6"/>
<column flex="1"/>
</columns>
<rows>
<row>
<vbox>
<groupbox hidden="false">
<caption label="Adressen" />
<hbox class="hbox-tree">
<tree id="tree-liste-adressen" seltype="multi" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/adressen/alle"
onselect="" flags="dont-build-content"
enableColumnDrag="true"
>
<treecols>
<treecol id="tree-liste-adressen-col-adresse_id" label="Adresse_id" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#adresse_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-adressen-col-bismeldeadresse" label="BisMeldeAdresse" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#bismeldeadresse" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-adressen-col-gemeinde" label="Gemeinde" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#gemeinde" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-adressen-col-name" label="Name" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#name" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-adressen-col-nation" label="Nation" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#nation" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-adressen-col-plz" label="Plz" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#plz" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-adressen-col-ort" label="Ort" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#ort" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-adressen-col-strasse" label="Strasse" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#strassse" />
<splitter class="tree-splitter"/>
<!-- ist das selbe wie name
<treecol id="tree-liste-adressen-col-typ" label="Typ" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#typ" />
<splitter class="tree-splitter"/>
-->
<treecol id="tree-liste-adressen-col-zustelladresse" label="Zustelladresse" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/adressen/rdf#zustelladresse" />
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#adresse_id" />
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#bismeldeadresse" />
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#gemeinde" />
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#name" />
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#nation" />
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#plz" />
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#ort" />
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#strasse" />
<!--<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#typ" />-->
<treecell label="rdf:http://www.technikum-wien.at/adressen/rdf#zustelladresse" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox>
<button id="button-mitarbeiter-detail-adressen-neu" disabled="true" label="Neu" oncommand="MitarbeiterDetailAdressenNeu();"/>
<button id="button-mitarbeiter-detail-adressen-bearbeiten" disabled="true" label="Bearbeiten" oncommand="MitarbeiterDetailAdressenBearbeiten();"/>
<button id="button-mitarbeiter-detail-adressen-loeschen" disabled="true" label="Löschen" oncommand="MitarbeiterDetailAdressenLoeschen();"/>
</vbox>
</hbox>
</groupbox>
<groupbox hidden="false">
<caption label="Emailadressen" />
<hbox class="hbox-tree">
<tree id="tree-liste-email" seltype="multi" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/email/alle"
onselect="" flags="dont-build-content"
enableColumnDrag="true"
>
<treecols>
<treecol id="tree-liste-email-col-email_id" label="Email_id" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/email/rdf#email_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-email-col-email" label="Email" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/email/rdf#email" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-email-col-name" label="Name" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/email/rdf#name" />
<splitter class="tree-splitter"/>
<!-- ist das gleiche wie name
<treecol id="tree-liste-email-col-typ" label="Typ" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/email/rdf#typ" />
<splitter class="tree-splitter"/>
-->
<treecol id="tree-liste-email-col-zustelladresse" label="Zustelladresse" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/email/rdf#zustelladresse" />
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/email/rdf#email_id" />
<treecell label="rdf:http://www.technikum-wien.at/email/rdf#email" />
<treecell label="rdf:http://www.technikum-wien.at/email/rdf#name" />
<!--<treecell label="rdf:http://www.technikum-wien.at/email/rdf#typ" />-->
<treecell label="rdf:http://www.technikum-wien.at/email/rdf#zustelladresse" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox>
<button id="button-mitarbeiter-detail-email-neu" disabled="true" label="Neu" oncommand="MitarbeiterDetailEmailNeu();"/>
<button id="button-mitarbeiter-detail-email-bearbeiten" disabled="true" label="Bearbeiten" oncommand="MitarbeiterDetailEmailBearbeiten();"/>
<button id="button-mitarbeiter-detail-email-loeschen" disabled="true" label="Löschen" oncommand="MitarbeiterDetailEmailLoeschen();"/>
</vbox>
</hbox>
</groupbox>
<groupbox hidden="false">
<caption label="Telefonnummern" />
<hbox class="hbox-tree">
<tree id="tree-liste-telefonnummern" seltype="multi" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/telefonnummern/alle"
onselect="" flags="dont-build-content"
enableColumnDrag="true"
>
<treecols>
<treecol id="tree-liste-telefonnummern-col-telefonnummer_id" label="Telefonnummer_id" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/telefonnummern/rdf#telefonnummer_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-telefonnummern-col-name" label="Name" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/telefonnummern/rdf#name" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-telefonnummern-col-nummer" label="Nummer" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/telefonnummern/rdf#nummer" />
<!--<splitter class="tree-splitter"/>
<treecol id="tree-liste-telefonnummern-col-typ" label="Typ" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/telefonnummern/rdf#typ" />
-->
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/telefonnummern/rdf#telefonnummer_id" />
<treecell label="rdf:http://www.technikum-wien.at/telefonnummern/rdf#name" />
<treecell label="rdf:http://www.technikum-wien.at/telefonnummern/rdf#nummer" />
<!--<treecell label="rdf:http://www.technikum-wien.at/telefonnummern/rdf#typ" />-->
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox>
<button id="button-mitarbeiter-detail-telefonnummern-neu" disabled="true" label="Neu" oncommand="MitarbeiterDetailTelefonnummernNeu();"/>
<button id="button-mitarbeiter-detail-telefonnummern-bearbeiten" disabled="true" label="Bearbeiten" oncommand="MitarbeiterDetailTelefonnummernBearbeiten();"/>
<button id="button-mitarbeiter-detail-telefonnummern-loeschen" disabled="true" label="Löschen" oncommand="MitarbeiterDetailTelefonnummernLoeschen();"/>
</vbox>
</hbox>
</groupbox>
<groupbox hidden="false">
<caption label="Bankverbindungen" />
<hbox class="hbox-tree">
<tree id="tree-liste-bankverbindungen" seltype="multi" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/bankverbindungen/alle"
onselect="" flags="dont-build-content"
enableColumnDrag="true"
>
<treecols>
<treecol id="tree-liste-bankverbindungen-col-bankverbindung_id" label="Bankverbindung_id" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#bankverbindungen_id" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-name" label="Name" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#name" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-anschrift" label="Anschrift" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#anschrift" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-blz" label="BLZ" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#blz" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-bic" label="BIC" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#bic" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-kontonummer" label="Kontonummer" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#kontonummer" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-iban" label="IBAN" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#iban" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-verrechnungskonto" label="Verrechnungskonto" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#verrechnungskonto" />
<splitter class="tree-splitter"/>
<treecol id="tree-liste-bankverbindungen-col-typ" label="Typ" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#typ_name" />
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#bankverbindung_id" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#name" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#anschrift" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#blz" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#bic" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#kontonummer" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#iban" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#verrechnungskonto" />
<treecell label="rdf:http://www.technikum-wien.at/bankverbindungen/rdf#typ_name" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox>
<button id="button-mitarbeiter-detail-bankverbindungen-neu" disabled="true" label="Neu" oncommand="MitarbeiterDetailBankverbindungenNeu();"/>
<button id="button-mitarbeiter-detail-bankverbindungen-bearbeiten" disabled="true" label="Bearbeiten" oncommand="MitarbeiterDetailBankverbindungenBearbeiten();"/>
<button id="button-mitarbeiter-detail-bankverbindungen-loeschen" disabled="true" label="Löschen" oncommand="MitarbeiterDetailBankverbindungenLoeschen();"/>
</vbox>
</hbox>
</groupbox>
</vbox>
</row>
</rows>
</grid>
</vbox>
</tabpanels>
</tabbox>
</vbox>
</overlay>
+169
View File
@@ -0,0 +1,169 @@
<?php
include('../vilesci/config.inc.php');
if(isset($_GET['email_id']) && $_GET['email_id']!='')
echo "var MitarbeiterDetailEmail_id=".$_GET['email_id'];
else
echo "var MitarbeiterDetailEmail_id=null";
?>
if(MitarbeiterDetailEmail_id!=null)
{
window.setTimeout("MitarbeiterEmailBearbeiten()",window.opener.sleep_time/2);
}
/**
* Laedt den zu bearbeitenden Datensatz
*/
function MitarbeiterEmailBearbeiten()
{
// RDF vom Server holen
// Url zum RDF
var url="<?php echo APP_ROOT; ?>rdf/fas/email.rdf.php?email_id="+MitarbeiterDetailEmail_id;
// Request absetzen
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url, false, '','');
httpRequest.send('');
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status); //404 ErrorCodes etc
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// XML in Datasource parsen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/email/alle');
// Trick 17 (sonst gibt's ein Permission denied)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Daten aus RDF auslesen
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/email/" + MitarbeiterDetailEmail_id);
var predicateNS = "http://www.technikum-wien.at/email/rdf";
//Felder befuellen
person_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#person_id" ));
typ = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#typ" ));
email = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#email" ));
zustelladresse = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#zustelladresse" ));
document.getElementById('textbox-mitarbeiter-email-person_id').value = person_id;
document.getElementById('menulist-mitarbeiter-email-name').value = typ;
document.getElementById('textbox-mitarbeiter-email-email').value = email;
if(zustelladresse == 'Ja')
document.getElementById('checkbox-mitarbeiter-email-zustelladresse').checked = true;
else
document.getElementById('checkbox-mitarbeiter-email-zustelladresse').checked = false;
}
function MitarbeiterEmailValueChange()
{
}
/**
* Speichert die eingegebene Email
*/
function MitarbeiterEmailSave()
{
//Daten aus den Felder holen
person_id = document.getElementById('textbox-mitarbeiter-email-person_id').value;
name = document.getElementById('menulist-mitarbeiter-email-name').label;
typ = document.getElementById('menulist-mitarbeiter-email-name').value;
email = document.getElementById('textbox-mitarbeiter-email-email').value;
zustelladresse = document.getElementById('checkbox-mitarbeiter-email-zustelladresse').checked;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var param = "type=email";
if(MitarbeiterDetailEmail_id!=null)
param = param + "&new=false";
else
param = param + "&new=true";
param = param + "&email_id="+encodeURIComponent(MitarbeiterDetailEmail_id);
param = param + "&person_id="+encodeURIComponent(person_id);
param = param + "&name="+encodeURIComponent(name);
param = param + "&typ="+encodeURIComponent(typ);
param = param + "&email="+encodeURIComponent(email);
param = param + "&zustelladresse="+encodeURIComponent(zustelladresse);
//Parameter schicken
httpRequest.send(param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
{
//AdressenTree aktualisieren
//Statusbar setzen
window.opener.setStatusBarText("Email erfolgreich gespeichert");
window.opener.document.getElementById("tree-liste-email").builder.refresh();
window.setTimeout('window.opener.document.getElementById("tree-liste-email").builder.rebuild()',window.opener.sleep_time);
//Fenster schliessen
window.setTimeout('window.close()',window.opener.sleep_time);
}
else
{
alert("Fehler beim Speichern der Daten: "+dbdml_errormsg);
}
return true;
}
+83
View File
@@ -0,0 +1,83 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
if(isset($_GET['person_id']))
$person_id = $_GET['person_id'];
else
$person_id=null;
if(isset($_GET['email_id']))
$email_id=$_GET['email_id'];
else
$email_id=null;
// rdf:null
?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<window id="mitarbeiter-email-dialog" title="Email"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fasoverlay.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/mitarbeiteremaildialog.js.php?email_id=<?php echo $email_id;?>" />
<textbox id="textbox-mitarbeiter-email-person_id" value="<?php echo $person_id;?>" hidden="true"/>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="menulist-mitarbeiter-email-name" value="Art:"/>
<menulist id="menulist-mitarbeiter-email-name"
oncommand="MitarbeiterEmailValueChange();">
<menupopup>
<menuitem label="Private Emailadresse" value="1" selected="true"/>
<menuitem label="Emailadresse in der Firma" value="2"/>
<menuitem label="Emailadresse an der Fachhochschule" value="3"/>
</menupopup>
</menulist>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-email-email" value="Emailadresse:"/>
<textbox id="textbox-mitarbeiter-email-email" maxlength="255" oninput="MitarbeiterEmailValueChange()"/>
</row>
<row>
<spacer />
<checkbox label="Zustelladresse" id="checkbox-mitarbeiter-email-zustelladresse" checked="true" onclick="MitarbeiterEmailValueChange()"/>
</row>
</rows>
</grid>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column flex="5"/>
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<spacer />
<button label="OK" oncommand="MitarbeiterEmailSave()"/>
<button label="Abbrechen" oncommand="window.close()"/>
</row>
</rows>
</grid>
</window>
+285
View File
@@ -0,0 +1,285 @@
<?php
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");
include("../vilesci/config.inc.php");
if(isset($_GET['funktion_id']) && $_GET['funktion_id']!='' && is_numeric($_GET['funktion_id']))
echo "var MitarbeiterDetailFunktion_id=".$_GET['funktion_id'].";";
else
echo "var MitarbeiterDetailFunktion_id=null;";
?>
function Check()
{
if(MitarbeiterDetailFunktion_id!=null)
window.setTimeout("MitarbeiterFunktionBearbeiten()",window.opener.sleep_time);
else
window.setTimeout("MitarbeiterFunktionDefault()",window.opener.sleep_time);
}
/**
* Setzt die Defaultwerte
*/
function MitarbeiterFunktionDefault()
{
MitarbeiterDetailStudiensemester_id = document.getElementById('textbox-mitarbeiter-funktion-stsem_id').value;
document.getElementById('menulist-mitarbeiter-funktion-fachbereich').value = 2;
document.getElementById('textbox-mitarbeiter-funktion-beschreibung').value = '';
document.getElementById('menulist-mitarbeiter-funktion-funktion').value = 0;
document.getElementById('menulist-mitarbeiter-funktion-beschart1').value = 3;
document.getElementById('menulist-mitarbeiter-funktion-beschart2').value = 2;
document.getElementById('menulist-mitarbeiter-funktion-verwendung').value = 0;
document.getElementById('menulist-mitarbeiter-funktion-hauptberuf').value = 0;
document.getElementById('checkbox-mitarbeiter-funktion-hauptberuflich').checked = false;
document.getElementById('checkbox-mitarbeiter-funktion-entwicklungsteam').checked = false;
document.getElementById('menulist-mitarbeiter-funktion-qualifikation').disabled = true;
document.getElementById('menulist-mitarbeiter-funktion-qualifikation').value = 0;
document.getElementById('menulist-mitarbeiter-funktion-ausmass').value = 1;
document.getElementById('menulist-mitarbeiter-funktion-studiensemester').value = MitarbeiterDetailStudiensemester_id;
}
/**
* Laedt den zu bearbeitenden Datensatz
*/
function MitarbeiterFunktionBearbeiten()
{
// RDF vom Server holen
// Url zum RDF
var url="<?php echo APP_ROOT; ?>rdf/fas/funktionen.rdf.php?funktion_id="+MitarbeiterDetailFunktion_id+'&'+window.opener.gettimestamp();
// Request absetzen
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url, false, '','');
httpRequest.send('');
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status); //404 ErrorCodes etc
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// XML in Datasource parsen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/funktionen/alle');
// Trick 17 (sonst gibt's ein Permission denied)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Daten aus RDF auslesen
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/funktionen/" + MitarbeiterDetailFunktion_id);
var predicateNS = "http://www.technikum-wien.at/funktionen/rdf";
//Felder befuellen
mitarbeiter_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#mitarbeiter_id" ));
studiensemester_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#studiensemester_id" ));
erhalter_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#erhalter_id" ));
studiengang_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#studiengang_id" ));
fachbereich_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#fachbereich_id" ));
name = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#name" ));
funktion = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#funktion" ));
beschart1 = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#beschart1" ));
beschart2 = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#beschart2" ));
verwendung = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#verwendung" ));
hauptberuf = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#hauptberuf" ));
hauptberuflich = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#hauptberuflich" ));
entwicklungsteam = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#entwicklungsteam" ));
qualifikation = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#besonderequalifikation" ));
ausmass = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#ausmass" ));
document.getElementById('textbox-mitarbeiter-funktion-mitarbeiter_id').value = mitarbeiter_id;
document.getElementById('menulist-mitarbeiter-funktion-studiensemester').value = studiensemester_id;
document.getElementById('menulist-mitarbeiter-funktion-erhalter').value = erhalter_id;
document.getElementById('menulist-mitarbeiter-funktion-studiengang').value = studiengang_id;
document.getElementById('menulist-mitarbeiter-funktion-fachbereich').value = fachbereich_id;
document.getElementById('textbox-mitarbeiter-funktion-beschreibung').value = name;
document.getElementById('menulist-mitarbeiter-funktion-funktion').value = funktion;
document.getElementById('menulist-mitarbeiter-funktion-beschart1').value = beschart1;
document.getElementById('menulist-mitarbeiter-funktion-beschart2').value = beschart2;
document.getElementById('menulist-mitarbeiter-funktion-verwendung').value = verwendung;
document.getElementById('menulist-mitarbeiter-funktion-hauptberuf').value = hauptberuf;
if(hauptberuflich=='Ja')
{
document.getElementById('checkbox-mitarbeiter-funktion-hauptberuflich').checked = true;
document.getElementById('menulist-mitarbeiter-funktion-hauptberuf').disabled = true;
}
else
{
document.getElementById('checkbox-mitarbeiter-funktion-hauptberuflich').checked = false;
document.getElementById('menulist-mitarbeiter-funktion-hauptberuf').disabled = false;
}
if(entwicklungsteam=='Ja')
{
document.getElementById('checkbox-mitarbeiter-funktion-entwicklungsteam').checked = true;
document.getElementById('menulist-mitarbeiter-funktion-qualifikation').disabled = false;
}
else
{
document.getElementById('checkbox-mitarbeiter-funktion-entwicklungsteam').checked = false;
document.getElementById('menulist-mitarbeiter-funktion-qualifikation').disabled = true;
}
document.getElementById('menulist-mitarbeiter-funktion-qualifikation').value = qualifikation;
document.getElementById('menulist-mitarbeiter-funktion-ausmass').value = ausmass;
}
function MitarbeiterFunktionValueChange()
{
}
/**
* Speichert die eingegebene Funktion
*/
function MitarbeiterFunktionSave()
{
//Daten aus den Feldern holen
mitarbeiter_id = document.getElementById('textbox-mitarbeiter-funktion-mitarbeiter_id').value;
studiensemester_id = document.getElementById('menulist-mitarbeiter-funktion-studiensemester').value;
erhalter_id = document.getElementById('menulist-mitarbeiter-funktion-erhalter').value;
studiengang_id = document.getElementById('menulist-mitarbeiter-funktion-studiengang').value;
fachbereich_id = document.getElementById('menulist-mitarbeiter-funktion-fachbereich').value;
name = document.getElementById('textbox-mitarbeiter-funktion-beschreibung').value;
funktion = document.getElementById('menulist-mitarbeiter-funktion-funktion').value;
beschart1 = document.getElementById('menulist-mitarbeiter-funktion-beschart1').value;
beschart2 = document.getElementById('menulist-mitarbeiter-funktion-beschart2').value;
verwendung = document.getElementById('menulist-mitarbeiter-funktion-verwendung').value;
hauptberuf = document.getElementById('menulist-mitarbeiter-funktion-hauptberuf').value;
hauptberuflich = document.getElementById('checkbox-mitarbeiter-funktion-hauptberuflich').checked;
entwicklungsteam = document.getElementById('checkbox-mitarbeiter-funktion-entwicklungsteam').checked;
qualifikation = document.getElementById('menulist-mitarbeiter-funktion-qualifikation').value;
ausmass = document.getElementById('menulist-mitarbeiter-funktion-ausmass').value;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var param = "type=funktion";
if(MitarbeiterDetailFunktion_id!=null)
param = param + "&new=false";
else
param = param + "&new=true";
param = param + "&funktion_id="+encodeURIComponent(MitarbeiterDetailFunktion_id);
param = param + "&mitarbeiter_id="+encodeURIComponent(mitarbeiter_id);
param = param + "&studiensemester_id="+encodeURIComponent(studiensemester_id);
param = param + "&erhalter_id="+encodeURIComponent(erhalter_id);
param = param + "&studiengang_id="+encodeURIComponent(studiengang_id);
param = param + "&fachbereich_id="+encodeURIComponent(fachbereich_id);
param = param + "&name="+encodeURIComponent(name);
param = param + "&funktion="+encodeURIComponent(funktion);
param = param + "&beschart1="+encodeURIComponent(beschart1);
param = param + "&beschart2="+encodeURIComponent(beschart2);
param = param + "&verwendung="+encodeURIComponent(verwendung);
param = param + "&hauptberuf="+encodeURIComponent(hauptberuf);
param = param + "&hauptberuflich="+encodeURIComponent(hauptberuflich);
param = param + "&entwicklungsteam="+encodeURIComponent(entwicklungsteam);
param = param + "&qualifikation="+encodeURIComponent(qualifikation);
param = param + "&ausmass="+encodeURIComponent(ausmass);
//Parameter schicken
httpRequest.send(param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
{
//Statusbar setzen
window.opener.setStatusBarText("Funktion erfolgreich gespeichert");
window.opener.document.getElementById("tree-liste-funktionen").builder.refresh();
window.opener.document.getElementById("textbox-mitarbeiter-detail-aktstatus").value = dbdml_errormsg;
//window.opener.refreshtree(true);
//Fenster schliessen
window.close();
}
else
{
alert("Fehler beim Speichern der Daten: "+dbdml_errormsg);
}
return true;
}
function MitarbeiterFunktionHauptberuflichChange()
{
hauptberuflich = document.getElementById("checkbox-mitarbeiter-funktion-hauptberuflich").checked;
if(hauptberuflich)
{
document.getElementById("menulist-mitarbeiter-funktion-hauptberuf").disabled=false;
document.getElementById("menulist-mitarbeiter-funktion-hauptberuf").value=0;
}
else
{
document.getElementById("menulist-mitarbeiter-funktion-hauptberuf").value='';
document.getElementById("menulist-mitarbeiter-funktion-hauptberuf").disabled=true;
}
}
function MitarbeiterFunktionEntwicklungsteamChange()
{
entwicklungsteam = document.getElementById("checkbox-mitarbeiter-funktion-entwicklungsteam").checked;
if(entwicklungsteam)
{
document.getElementById("menulist-mitarbeiter-funktion-qualifikation").disabled=true;
document.getElementById('menulist-mitarbeiter-funktion-qualifikation').value = 0;
}
else
{
document.getElementById("menulist-mitarbeiter-funktion-qualifikation").value='';
document.getElementById("menulist-mitarbeiter-funktion-qualifikation").disabled=false;
}
}
+214
View File
@@ -0,0 +1,214 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
if(isset($_GET['mitarbeiter_id']))
$mitarbeiter_id = $_GET['mitarbeiter_id'];
else
$mitarbeiter_id=null;
if(isset($_GET['funktion_id']))
$funktion_id=$_GET['funktion_id'];
else
$funktion_id=null;
if(isset($_GET['MitarbeiterDetailStudiensemester_id']))
$stsem_id=$_GET['MitarbeiterDetailStudiensemester_id'];
else
$stsem_id=null;
// rdf:null
?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<window id="mitarbeiter-funktion-dialog" title="Email"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="Check()">
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fasoverlay.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/mitarbeiterfunktiondialog.js.php?funktion_id=<?php echo $funktion_id;?>" />
<textbox id="textbox-mitarbeiter-funktion-mitarbeiter_id" value="<?php echo $mitarbeiter_id;?>" hidden="true"/>
<textbox id="textbox-mitarbeiter-funktion-stsem_id" value="<?php echo $stsem_id;?>" hidden="true"/>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label align="end" control="menulist-mitarbeiter-funktion-erhalter" value="Erhalter:"/>
<menulist id="menulist-mitarbeiter-funktion-erhalter"
oncommand="treeFunktionValueChange();">
<menupopup>
<menuitem label="Technikum Wien" value="1"/>
</menupopup>
</menulist>
</row>
<row>
<label control="menulist-mitarbeiter-funktion-studiensemester" value="Studiensemester:"/>
<menulist id="menulist-mitarbeiter-funktion-studiensemester" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/studiensemester.rdf.php"
ref="http://www.technikum-wien.at/studiensemester/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/studiensemester/rdf#kurzbz"
value="rdf:http://www.technikum-wien.at/studiensemester/rdf#studiensemester_id"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="menulist-mitarbeiter-funktion-funktion" value="Funktion:"/>
<menulist id="menulist-mitarbeiter-funktion-funktion" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/funktion_id.rdf.php"
ref="http://www.technikum-wien.at/funktion_id/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/funktion_id/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/funktion_id/rdf#funktion"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="menulist-mitarbeiter-funktion-studiengang" value="Studiengang:"/>
<menulist id="menulist-mitarbeiter-funktion-studiengang" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/studiengang.rdf.php"
ref="http://www.technikum-wien.at/studiengang/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/studiengang/rdf#name"
value="rdf:http://www.technikum-wien.at/studiengang/rdf#studiengang_id"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="menulist-mitarbeiter-funktion-fachbereich" value="Fachbereich:"/>
<menulist id="menulist-mitarbeiter-funktion-fachbereich" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/fachbereich.rdf.php"
ref="http://www.technikum-wien.at/fachbereich/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/fachbereich/rdf#name"
value="rdf:http://www.technikum-wien.at/fachbereich/rdf#fachbereich_id"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="menulist-mitarbeiter-funktion-beschart1" value="Beschäftigungsart 1:"/>
<menulist id="menulist-mitarbeiter-funktion-beschart1" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/beschaeftigungsart1.rdf.php"
ref="http://www.technikum-wien.at/beschaeftigungsart1/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/beschaeftigungsart1/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/beschaeftigungsart1/rdf#ba1code"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="menulist-mitarbeiter-funktion-beschart2" value="Beschäftigungsart 2:"/>
<menulist id="menulist-mitarbeiter-funktion-beschart2"
oncommand="treeFunktionValueChange();">
<menupopup>
<menuitem label="befristet" value="1"/>
<menuitem label="unbefristet" value="2" selected="true"/>
</menupopup>
</menulist>
</row>
<row>
<label align="end" control="menulist-mitarbeiter-funktion-ausmass" value="Ausmass:"/>
<menulist id="menulist-mitarbeiter-funktion-ausmass" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/ausmass.rdf.php"
ref="http://www.technikum-wien.at/ausmass/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/ausmass/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/ausmass/rdf#id"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label control="menulist-mitarbeiter-funktion-verwendung" value="Verwendung:"/>
<menulist id="menulist-mitarbeiter-funktion-verwendung" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/verwendung.rdf.php"
ref="http://www.technikum-wien.at/verwendung/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/verwendung/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/verwendung/rdf#verwendungcode"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<checkbox label="hauptberuflich" id="checkbox-mitarbeiter-funktion-hauptberuflich" checked="false" onclick="MitarbeiterFunktionHauptberuflichChange()"/>
<hbox flex="1">
<label control="menulist-mitarbeiter-funktion-hauptberuf" value="Hauptberuf: "/>
<menulist id="menulist-mitarbeiter-funktion-hauptberuf" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/hauptberuf.rdf.php"
ref="http://www.technikum-wien.at/hauptberuf/alle" flex="1" disabled="false">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/hauptberuf/rdf#bezeichnung"
value ="rdf:http://www.technikum-wien.at/hauptberuf/rdf#hauptberuf_id" />
</menupopup>
</template>
</menulist>
</hbox>
</row>
<row>
<checkbox label="Entwicklungsteam" id="checkbox-mitarbeiter-funktion-entwicklungsteam" checked="false" onclick="MitarbeiterFunktionEntwicklungsteamChange()"/>
<hbox flex="1">
<label control="menulist-mitarbeiter-funktion-qualifikation" value="Qualifikation:"/>
<menulist id="menulist-mitarbeiter-funktion-qualifikation" oncommand="MitarbeiterFunktionValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/qualifikation.rdf.php"
ref="http://www.technikum-wien.at/qualifikation/alle" flex="1" disabled="true">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/qualifikation/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/qualifikation/rdf#qualifikation_id"/>
</menupopup>
</template>
</menulist>
</hbox>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-funktion-beschreibung" value="Beschreibung:"/>
<textbox id="textbox-mitarbeiter-funktion-beschreibung" maxlength="255" oninput="MitarbeiterFunktionValueChange()"/>
</row>
</rows>
</grid>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column flex="5"/>
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<spacer />
<button label="OK" oncommand="MitarbeiterFunktionSave()"/>
<button label="Abbrechen" oncommand="window.close()"/>
</row>
</rows>
</grid>
</window>
File diff suppressed because it is too large Load Diff
+262
View File
@@ -0,0 +1,262 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiterdetailoverlay.xul.php"?>';
// rdf:null
?>
<!DOCTYPE overlay>
<overlay id="MitarbeiterOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/mitarbeiteroverlay.js.php" />
<!--
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fasoverlay.js.php" />
-->
<vbox id="MitarbeiterEditor" flex="1">
<keyset>
<key id="delete-key" keycode="VK_DELETE" oncommand="MitarbeiterDelete();"/>
<key id="delete-key" modifiers="control" key="N" oncommand="MitarbeiterNeu();"/>
</keyset>
<toolbox>
<toolbar id="toolbar-MitarbeiterEditor">
<toolbarbutton id="toolbar-MitarbeiterEditor-neu" label=" Neu" oncommand="MitarbeiterNeu();" image="../skin/images/NeuDokument.png" tooltiptext="Neuen Mitarbeiter anlegen" />
<toolbarbutton id='toolbar-MitarbeiterEditor-loeschen' label=" Löschen" key="delete-key" oncommand="MitarbeiterDelete();" image="../skin/images/DeleteIcon.png" tooltiptext="Mitarbeiter löschen" />
<toolbarbutton label=" Excel" oncommand="MitarbeiterExcelExport();" image="../skin/images/ExcelIcon.png" tooltiptext="Excel-Export" />
<toolbarbutton label=" Neu Laden" oncommand="refreshtree(true);" image="../skin/images/refresh.png" tooltiptext="Liste neu laden" />
</toolbar>
</toolbox>
<popupset>
<popup id="tree-liste-mitarbeiter-popup">
<menuitem label="EMail versenden" oncommand="TreeListeMitarbeiter_sendmail();" />
</popup>
</popupset>
<tree id="tree-liste-mitarbeiter" seltype="multi" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/mitarbeiter/alle"
onselect="TreeListeMitarbeiterAuswahl();" flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
persist="height"
context="tree-liste-mitarbeiter-popup"
>
<treecols>
<treecol id="tree-liste-mitarbeiter-col-anrede" label="Anrede" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#anrede" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-titelpre" label="Titel(Pre)" flex="2" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpre" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-vorname" label="Vorname" flex="2" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-vornamen" label="Vornamen" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vornamen" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-nachname" label="Nachname" flex="2" hidden="false" primary="true"
class="sortDirectionIndicator" sortActive="true" sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-titelpost" label="Titel(Post)" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpost" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-personal_nr" label="PNr" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#personal_nr" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-geburtsdatum" label="Geburtsdatum" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geburtsdatum_iso" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-geburtsdatum_iso" label="Geburtsdatum_ISO" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geburtsdatum_iso" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-svnr" label="SVNR" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#svnr" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-ersatzkennzeichen" label="Ersatzkennzeichen" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#ersatzkennzeichen" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-uid" label="UID" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-kurzbezeichnung" label="Kuerzel" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#kurzbezeichnung" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-geschlecht" label="Geschlecht" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geschlecht" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-staatsbuergerschaft" label="Staatsb." flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#staatsbuergerschaft" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-aktstatus" label="Status" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktstatus_bezeichnung" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-akademischergrad" label="Akademischergrad" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#akademischergrad" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-familienstand" label="Familienstand" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#familienstand_bezeichnung" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-anzahlderkinder" label="Anzahlderkinder" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#anzahlderkinder" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-geburtsnation" label="Geburtsnation" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geburtsnation" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-beginndatum" label="Beginndatum" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#beginndatum" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-bemerkung" label="Bemerkung" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#bemerkung" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-habilitation" label="Habilitation" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#habilitation" onclick="TreeMitarbeiterSort()"/>
<!-- in tabelle funktion
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-mitgliedentwicklungsteam" label="MitgliedEntwicklungsteam" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#mitgliedentwicklungsteam" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-qualifikation" label="Qualifikation" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#qualifikation" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-hauptberuflich" label="Hauptberuflich" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#hauptberuflich" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-hauptberuf" label="Hauptberuf" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#hauptberuf" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-sws" label="SWS" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#sws" onclick="TreeMitarbeiterSort()"/>
-->
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-ausgeschieden" label="Ausgeschieden" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#ausgeschieden" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-beendigungsdatum" label="Beendigungsdatum" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#beendigungsdatum" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-ausbildung" label="Ausbildung" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#ausbildung_bezeichnung" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-stundensatz" label="Stundensatz" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#stundensatz" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-bismelden" label="BIS" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#bismelden" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-aktiv" label="Aktiv" flex="1" hidden="false" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-mitarbeiter_id" label="mitarbeiter_id" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#mitarbeiter_id" onclick="TreeMitarbeiterSort()"/>
<splitter class="tree-splitter"/>
<treecol id="tree-liste-mitarbeiter-col-person_id" label="person_id" flex="1" hidden="true" persist="hidden"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#person_id" onclick="TreeMitarbeiterSort()"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#anrede" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpre" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vornamen" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpost" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#personal_nr" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geburtsdatum" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geburtsdatum_iso" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#svnr" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#ersatzkennzeichen" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#kurzbezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geschlecht" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#staatsbuergerschaft" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktstatus_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#akademischergrad" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#familienstand_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#anzahlderkinder" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#geburtsnation" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#beginndatum" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#bemerkung" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#habilitation" />
<!-- in tabelle funktion
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#mitgliedentwicklungsteam" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#qualifikation" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#hauptberuflich" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#hauptberuf" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#sws" />
-->
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#ausgeschieden" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#beendigungsdatum" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#ausbildung_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#stundensatz" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#bismelden" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#mitarbeiter_id" />
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#person_id" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<splitter id="mitarbeiter-overlay-splitter" collapse="after" persist="state">
<grippy />
</splitter>
<vbox id="MitarbeiterDetailEditor" persist="height"/>
</vbox>
</overlay>
@@ -0,0 +1,159 @@
<?php
include('../vilesci/config.inc.php');
if(isset($_GET['telefonnummer_id']) && $_GET['telefonnummer_id']!='')
echo "var MitarbeiterDetailTelefonnummer_id=".$_GET['telefonnummer_id'];
else
echo "var MitarbeiterDetailTelefonnummer_id=null";
?>
function Check()
{
if(MitarbeiterDetailTelefonnummer_id!=null)
window.setTimeout("MitarbeiterTelefonnummerBearbeiten()",window.opener.sleep_time);
}
/**
* Laedt den zu bearbeitenden Datensatz
*/
function MitarbeiterTelefonnummerBearbeiten()
{
// RDF vom Server holen
// Url zum RDF
var url="<?php echo APP_ROOT; ?>rdf/fas/telefonnummern.rdf.php?telefonnummer_id="+MitarbeiterDetailTelefonnummer_id;
// Request absetzen
var httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url, false, '','');
httpRequest.send('');
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status); //404 ErrorCodes etc
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// XML in Datasource parsen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/telefonnummern/alle');
// Trick 17 (sonst gibt's ein Permission denied)
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Daten aus RDF auslesen
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/telefonnummern/" + MitarbeiterDetailTelefonnummer_id);
var predicateNS = "http://www.technikum-wien.at/telefonnummern/rdf";
//Felder befuellen
person_id = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#person_id" ));
typ = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#typ" ));
nummer = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#nummer" ));
document.getElementById('textbox-mitarbeiter-telefonnummer-person_id').value = person_id;
document.getElementById('menulist-mitarbeiter-telefonnummer-typ').value = typ;
document.getElementById('textbox-mitarbeiter-telefonnummer-nummer').value = nummer;
}
function MitarbeiterTelefonnummerValueChange()
{
}
/**
* Speichert die eingegebene Telefonnummer
*/
function MitarbeiterTelefonnummerSave()
{
//Daten aus den Felder holen
person_id = document.getElementById('textbox-mitarbeiter-telefonnummer-person_id').value;
typ = document.getElementById('menulist-mitarbeiter-telefonnummer-typ').value;
name = document.getElementById('menulist-mitarbeiter-telefonnummer-typ').label;
nummer = document.getElementById('textbox-mitarbeiter-telefonnummer-nummer').value;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var param = "type=telefonnummer";
if(MitarbeiterDetailTelefonnummer_id!=null)
param = param + "&new=false";
else
param = param + "&new=true";
param = param + "&telefonnummer_id="+encodeURIComponent(MitarbeiterDetailTelefonnummer_id);
param = param + "&person_id="+encodeURIComponent(person_id);
param = param + "&name="+encodeURIComponent(name);
param = param + "&typ="+encodeURIComponent(typ);
param = param + "&nummer="+encodeURIComponent(nummer);
//Parameter schicken
httpRequest.send(param);
debug('telefon save param:'+param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
{
//Statusbar setzen
window.opener.setStatusBarText("Telefonnummer erfolgreich gespeichert");
window.opener.document.getElementById("tree-liste-telefonnummern").builder.refresh();
//Fenster schliessen
window.close();
}
else
{
alert("Fehler beim Speichern der Daten: "+dbdml_errormsg);
}
return true;
}
@@ -0,0 +1,84 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
if(isset($_GET['person_id']))
$person_id = $_GET['person_id'];
else
$person_id=null;
if(isset($_GET['telefonnummer_id']))
$telefonnummer_id=$_GET['telefonnummer_id'];
else
$telefonnummer_id=null;
// rdf:null
?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<window id="mitarbeiter-email-dialog" title="Email"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="Check()" >
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/fasoverlay.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/mitarbeitertelefonnummerdialog.js.php?telefonnummer_id=<?php echo $telefonnummer_id;?>" />
<textbox id="textbox-mitarbeiter-telefonnummer-person_id" value="<?php echo $person_id;?>" hidden="true"/>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column />
<column flex="1"/>
</columns>
<rows>
<row>
<label control="menulist-mitarbeiter-telefonnummer-typ" value="Typ:"/>
<menulist id="menulist-mitarbeiter-telefonnummer-typ" oncommand="MitarbeiterTelefonnummerValueChange();"
datasources="<?php echo APP_ROOT; ?>rdf/fas/telefonnummerntyp.rdf.php"
ref="http://www.technikum-wien.at/telefonnummerntyp/alle">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/telefonnummerntyp/rdf#name"
value="rdf:http://www.technikum-wien.at/telefonnummerntyp/rdf#typ"/>
</menupopup>
</template>
</menulist>
</row>
<row>
<label align="end" control="textbox-mitarbeiter-telefonnummer-nummer" value="Telefonnummer:"/>
<textbox id="textbox-mitarbeiter-telefonnummer-nummer" maxlength="255" oninput="MitarbeiterTelefonnummerValueChange()" value="+43-"/>
</row>
<row>
<label align="end" value="Eingabeformat:"/>
<label align="end" value="+43-01-123456"/>
</row>
</rows>
</grid>
<grid align="end" flex="1"
flags="dont-build-content"
enableColumnDrag="true" style="margin:0px;"
>
<columns>
<column flex="5"/>
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<row>
<spacer />
<button label="OK" oncommand="MitarbeiterTelefonnummerSave()"/>
<button label="Abbrechen" oncommand="window.close()"/>
</row>
</rows>
</grid>
</window>
+35
View File
@@ -0,0 +1,35 @@
<?php
// *****************************
// Vorschlag fuer UNR liefern
// *****************************
include('../vilesci/config.inc.php');
$conn = @pg_pconnect(CONN_STRING))
if ($conn) {
$sql="select max(unr) as max_unr from tbl_lehrveranstaltung";
if(!($erg=pg_exec($conn, $sql_query))) {
$this->errormsg=pg_errormessage($conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
} else {
echo 'no connection';
}
?>
+80
View File
@@ -0,0 +1,80 @@
<?php
/*
* Created on 02.12.2004
*
*/
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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// Orte holen
$sql_query="SELECT * FROM (tbl_ort NATURAL JOIN tbl_ortraumtyp) JOIN tbl_raumtyp USING (raumtyp_kurzbz)
WHERE aktiv AND raumtyp_kurzbz!='LM' ORDER BY raumtyp_kurzbz, hierarchie,ort_kurzbz";
if(!$result=pg_query($conn, $sql_query))
$error_msg.=pg_errormessage($conn);
else
$num_rows=@pg_numrows($result);
$rdf_url='http://www.technikum-wien.at/tempus/ort';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ORT="<?php echo $rdf_url; ?>/rdf#"
>
<?php
$descr='';
$sequenz='';
for ($i=0;$i<$num_rows;$i++)
{
$ortLAST=($i>0?pg_fetch_object($result,$i-1):null);
$ort=pg_fetch_object($result,$i);
$ortNEXT=(($i<$num_rows-1)?pg_fetch_object($result,$i+1):null);
$currentTYP=$ort->raumtyp_kurzbz;
$lastTYP=$ortLAST->raumtyp_kurzbz;
$nextTYP=$ortNEXT->raumtyp_kurzbz;
//echo "current:$currentTYP last:$lastTYP next:$nextTYP";
if ($lastTYP!=$currentTYP || $i==0)
$descr.='<RDF:Description RDF:about="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'" >
<ORT:raumtyp>'.$ort->raumtyp_kurzbz.'</ORT:raumtyp>
<ORT:hierarchie></ORT:hierarchie>
<ORT:ort_kurzbz></ORT:ort_kurzbz>
<ORT:ort_bezeichnung></ORT:ort_bezeichnung>
<ORT:max_person></ORT:max_person>
</RDF:Description>';
$descr.='<RDF:Description RDF:about="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'/'.$ort->ort_kurzbz.'" >
<ORT:raumtyp>'.$ort->ort_kurzbz."</ORT:raumtyp>
<ORT:hierarchie>".$ort->hierarchie."</ORT:hierarchie>
<ORT:ort_kurzbz>".$ort->ort_kurzbz."</ORT:ort_kurzbz>
<ORT:ort_bezeichnung>".$ort->bezeichnung."</ORT:ort_bezeichnung>
<ORT:max_person>".$ort->max_person.'</ORT:max_person>
</RDF:Description>'."\n";
if ($lastTYP!=$currentTYP)
$sequenz.='<RDF:li RDF:resource="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'" />
<RDF:li>
<RDF:Seq RDF:about="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'" >'."\n";
if ($nextTYP!=$currentTYP || $i==$num_rows-1)
$sequenz.='<RDF:li RDF:resource="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'/'.$ort->ort_kurzbz.'" />
</RDF:Seq>
</RDF:li>'."\n";
elseif ($lastTYP==$currentTYP || $nextTYP==$currentTYP || $num_rows==1)
$sequenz.='<RDF:li RDF:resource="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'/'.$ort->ort_kurzbz.'" />'."\n";
}
$sequenz='<RDF:Seq about="'.$rdf_url.'/alle-orte">'."\n".$sequenz.'
</RDF:Seq>';
echo $descr;
echo $sequenz;
?>
</RDF:RDF>
+75
View File
@@ -0,0 +1,75 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// ORT holen
if(!($result=pg_query($conn, 'SELECT * FROM (tbl_ort NATURAL JOIN tbl_ortraumtyp)
JOIN tbl_raumtyp USING (raumtyp_kurzbz) WHERE aktiv
ORDER BY raumtyp_kurzbz, hierarchie,ort_kurzbz')))
$error_msg.=pg_errormessage($conn);
else
$num_rows=@pg_numrows($result);
$rdf_url='http://www.technikum-wien.at/tempus/ort';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ORT="<?php echo $rdf_url; ?>/rdf#"
>
<?php
$descr='';
$sequenz='';
for ($i=0;$i<$num_rows;$i++)
{
$ortLAST=($i>0?pg_fetch_object($result,$i-1):null);
$ort=pg_fetch_object($result,$i);
$ortNEXT=(($i<$num_rows-1)?pg_fetch_object($result,$i+1):null);
$currentTYP=$ort->raumtyp_kurzbz;
$lastTYP=$ortLAST->raumtyp_kurzbz;
$nextTYP=$ortNEXT->raumtyp_kurzbz;
//echo "current:$currentTYP last:$lastTYP next:$nextTYP";
$descr.='
<RDF:Description about="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'/'.$ort->ort_kurzbz.'" >
<ORT:raumtyp>'.$ort->raumtyp_kurzbz."</ORT:raumtyp>
<ORT:hierarchie>".$ort->hierarchie."</ORT:hierarchie>
<ORT:ort_kurzbz>".$ort->ort_kurzbz."</ORT:ort_kurzbz>
<ORT:ort_bezeichnung>".$ort->bezeichnung."</ORT:ort_bezeichnung>
<ORT:max_person>".$ort->max_person.'</ORT:max_person>
</RDF:Description>';
if ($lastTYP!=$currentTYP)
$sequenz.='<RDF:li>
<RDF:Seq about="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'" >';
if ($nextTYP!=$currentTYP || $i==$num_rows-1)
$sequenz.='<RDF:li resource="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'/'.$ort->ort_kurzbz.'" />
</RDF:Seq>
</RDF:li>';
if ($lastTYP==$currentTYP || $nextTYP==$currentTYP || $num_rows==1)
$sequenz.='<RDF:li resource="'.$rdf_url.'/'.$ort->raumtyp_kurzbz.'/'.$ort->ort_kurzbz.'" />';
}
$sequenz='<RDF:Seq about="'.$rdf_url.'/alle-orte">'.$sequenz.'
</RDF:Seq>';
echo $descr;
echo $sequenz;
?>
</RDF:RDF>
+58
View File
@@ -0,0 +1,58 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// ORT holen
if(!($result=pg_query($conn, 'SELECT * FROM (tbl_ort NATURAL JOIN tbl_ortraumtyp)
JOIN tbl_raumtyp USING (raumtyp_kurzbz) WHERE aktiv
ORDER BY raumtyp_kurzbz, hierarchie,ort_kurzbz')))
$error_msg.=pg_errormessage($conn);
else
$num_rows=@pg_numrows($result);
$rdf_url='http://www.technikum-wien.at/tempus/ort/';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ORT="<?php echo $rdf_url; ?>rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>alle">
<?php
for ($i=0;$i<$num_rows;$i++)
{
$ort=pg_fetch_object($result,$i);
?>
<RDF:li>
<RDF:Description about="<?php echo $rdf_url.$ort->raumtyp_kurzbz.'/'.$ort->ort_kurzbz; ?>" >
<ORT:raumtyp><?php echo $ort->raumtyp_kurzbz; ?></ORT:raumtyp>
<ORT:hierarchie><?php echo $ort->hierarchie; ?></ORT:hierarchie>
<ORT:ort_kurzbz><?php echo $ort->ort_kurzbz; ?></ORT:ort_kurzbz>
<ORT:ort_bezeichnung><?php echo $ort->bezeichnung; ?></ORT:ort_bezeichnung>
<ORT:max_person><?php echo $ort->max_person; ?></ORT:max_person>
</RDF:Description>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:RDF>
+94
View File
@@ -0,0 +1,94 @@
/**
*
* HTTP Request Klasse
* stammt aus Artikel von phpPatterns (http://www.phppatterns.com/index.php/article/articleview/82/1/2/)
* leicht modifiziert
*/
//Configuration Details
//const SERVER_URL = "/xul/server.php";
// wir uebergeben das als Parameter
//End Configuration
function doLogin() {
var username = document.getElementById('loginUser').value;
var password = document.getElementById('loginPass').value;
req = new phpRequest();
req.add('username',username);
req.add('password',password);
var response = req.execute();
alert(response);
}
//Start phpRequest Object
function phpRequest(server_url,uname,passw) {
this.parms = new Array();
this.parmsIndex = 0;
this.execute = phpRequestExecute;
this.add = phpRequestAdd;
this.server = server_url;
this.uname = uname;
this.passw = passw;
}
function phpRequestAdd(name,value) {
this.parms[this.parmsIndex] = new Pair(name,value);
this.parmsIndex++;
}
function phpRequestExecute() {
var targetURL = this.server;
try {
var httpRequest = new XMLHttpRequest();
}catch (e){
alert('Error creating the connection!');
return;
}
try {
var txt = "?";
for(var i in this.parms) {
txt = txt+'&'+this.parms[i].name+'='+this.parms[i].value;
}
//alert('sende '+txt);
//Two options here, only uncomment one of these
//GET REQUEST
httpRequest.open("GET", targetURL+txt, false, '<?php echo $_SERVER['PHP_AUTH_USER'] ?>','<?php echo $_SERVER['PHP_AUTH_PASSW'] ?>');
//POST REQUEST EXAMPLE
/*
httpRequest.open("POST", targetURL+txt, false, null, null);
httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
*/
httpRequest.send('');
}catch (e){
alert('An error has occured calling the external site: '+e);
return false;
}
switch(httpRequest.readyState) {
case 1,2,3:
alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4:
if(httpRequest.status !=200) {
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
} else {
var response = httpRequest.responseText;
}
break;
}
return response;
}
function Pair(name,value) {
this.name = name;
this.value = value;
}
+61
View File
@@ -0,0 +1,61 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/raumtyp.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// raumtypen holen
$raumtypDAO=new raumtyp($conn);
$raumtypen=$raumtypDAO->getAll();
$rdf_url='http://www.technikum-wien.at/tempus/raumtyp';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:RAUMTYP="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/liste">
<?php
if (is_array($raumtypen)) {
foreach ($raumtypen as $rt)
{
?>
<RDF:li>
<RDF:Description id="<?php echo $rt->kurzbz; ?>" about="<?php echo $rdf_url.'/'.$rt->kurzbz; ?>" >
<RAUMTYP:kurzbz><?php echo $rt->kurzbz ?></RAUMTYP:kurzbz>
<RAUMTYP:beschreibung><?php echo $rt->beschreibung ?></RAUMTYP:beschreibung>
</RDF:Description>
</RDF:li>
<?php
}
}
?>
</RDF:Seq>
</RDF:RDF>
+162
View File
@@ -0,0 +1,162 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>';
echo "<?xml-stylesheet href=\"".APP_ROOT."content/lfvt.css\" type=\"text/css\" ?>";
?>
<!DOCTYPE overlay [
<?php require("../locale/tempus.dtd"); ?>
]>
<overlay id="STPLDetailsOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/studenten.js" />
<!-- ************************* -->
<!-- * Stundenplan Details * -->
<!-- ************************* -->
<vbox id="vboxSTPLDetailsListe">
<!-- ************* -->
<!-- * Auswahl * -->
<!-- ************* -->
<tree id="treeStplDetails" seltype="single" hidecolumnpicker="false" flex="1"
datasources="" ref="http://www.technikum-wien.at/tempus/lehrstunde/liste"
flags="dont-build-content"
enableColumnDrag="true"
style="margin:0px;"
>
<treecols>
<treecol id="stplUNR" label="UNR" flex="2" primary="false"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#unr" />
<splitter class="tree-splitter"/>
<treecol id="stplLektor" label="Lektor" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lektor" />
<splitter class="tree-splitter"/>
<treecol id="stplLehrfachKurzbz" label="Fach" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lehrfach" />
<splitter class="tree-splitter"/>
<treecol id="stplLehrform" label="Form" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lehrform" />
<splitter class="tree-splitter"/>
<treecol id="stplLehrfachBezeichnung" label="Lehrfach" flex="20" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lehrfach_bez" />
<splitter class="tree-splitter"/>
<treecol id="stpl_studiengang" label="Studiengang" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#studiengang" />
<splitter class="tree-splitter"/>
<treecol id="stplSemester" label="S" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#semester" />
<splitter class="tree-splitter"/>
<treecol id="stplVerband" label="V" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#verband" />
<splitter class="tree-splitter"/>
<treecol id="gruppe" label="G" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#gruppe" />
<splitter class="tree-splitter"/>
<treecol id="stpl_einheit" label="Einheit" flex="3" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#einheit" />
<splitter class="tree-splitter"/>
<treecol id="stplOrt" label="Ort" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#ort_kurzbz" />
<splitter class="tree-splitter"/>
<treecol id="stpl_datum" label="Datum" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#datum" />
<splitter class="tree-splitter"/>
<treecol id="stpl_stunde" label="Std" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#stunde" />
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#unr" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lektor" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lehrfach" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lehrform" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#lehrfach_bez" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#studiengang" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#semester" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#verband" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#gruppe" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#einheit" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#ort_kurzbz" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#datum" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/lehrstunde/rdf#stunde" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
<!--
<template>
<rule>
<conditions>
<content uri="?uri" />
<member container="?uri" child="?student" />
</conditions>
<bindings>
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#uid" object="?uid" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#titel" object="?titel" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#vornamen" object="?vornamen" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#nachname" object="?nachname" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#geburtsdatum" object="?geburtsdatum" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#aktiv" object="?aktiv" />
</bindings>
<action>
<treechildren>
<treeitem uri="?student">
<treerow>
<treecell label="?uid" />
<treecell label="?titel" />
<treecell label="?vornamen" />
<treecell label="?nachname" />
<treecell label="?geburtsdatum" />
<treecell label="?aktiv" />
</treerow>
</treeitem>
</treechildren>
</action>
</rule>
</template>
-->
</tree>
</vbox>
</overlay>
+27
View File
@@ -0,0 +1,27 @@
<?php
include('../vilesci/config.inc.php');
?>
// SemesterPlan aktualisieren
function onSTPLSemesterRefresh()
{
// Welche Ansicht ist aktiv?
var semesterplan=document.getElementById('tabpanels-left');
var panelIndex=semesterplan.getAttribute("selectedIndex");
if (panelIndex==0)
onVerbandSelect();
else if (panelIndex==1)
onOrtSelect();
else if (panelIndex==2)
onLektorSelect();
}
// SemesterPlan drucken
function onSTPLSemesterPrint()
{
// Wie ist gerade die Source vom iFrame
var iframeTimeTableSemester=document.getElementById('iframeTimeTableSemester');
var iframeTimeTableSemesterSource=iframeTimeTableSemester.getAttribute("src");
var src=iframeTimeTableSemesterSource.replace("content/timetable-week.xul.php","stdplan/stpl_kalender.php");
var newWindow=window.open(src, "subWindowTimeTableSemester","");
}
+58
View File
@@ -0,0 +1,58 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
include('../vilesci/config.inc.php');
include('../include/functions.inc.php');
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
/*echo '<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';*/
// Testumgebung
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Fehler: Es konnte keine Verbindung zum Server aufgebaut werden!';
//$error_msg.=loadVariables($conn,$REMOTE_USER);
// Stundentafel abfragen
$sql_query="SET datestyle TO ISO;SELECT * FROM tbl_stunde ORDER BY stunde";
if(!$result_stunde=pg_exec($conn, $sql_query))
die(pg_last_error($this->conn));
$num_rows_stunde=pg_numrows($result_stunde);
?>
<!DOCTYPE overlay [
<?php require("../locale/tempus.dtd"); ?>
]>
<overlay id="TempusOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js.php"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/stpl-semester-overlay.js.php"/>
<vbox id="vboxTimeTableSemester" flex="1">
<toolbox>
<toolbar id="toolbarTimeTableSemesterWeek" tbautostretch="always" persist="collapsed">
<separator orient="horizontal" class="thin" />
<toolbarbutton id="toolbarbuttonStplSemesterRefresh"
image="../skin/images/refresh.png"
oncommand="onSTPLSemesterRefresh();"
tooltiptext="Neu Laden"
/>
<toolbarbutton id="toolbarbuttonStplSemesterPrint"
image="../skin/images/drucken.png"
oncommand="onSTPLSemesterPrint();"
tooltiptext="Drucken"
/>
</toolbar>
</toolbox>
<iframe id="iframeTimeTableSemester" name="TimeTableSemester" flex="1"
src="<?php echo APP_ROOT; ?>content/timetable-week.xul.php?semesterplan=true" />
</vbox>
</overlay>
+203
View File
@@ -0,0 +1,203 @@
<?php
include('../vilesci/config.inc.php');
?>
// LVA-Panel aktualisieren
function onLVARefresh()
{
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
//alert (datasources);
vboxLehrveranstalungPlanung.setAttribute('datasources',datasources+"&bla=");
}
function onJumpNow()
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var type=daten.getAttribute("stpl_type");
var stg_kz=daten.getAttribute("stg_kz");
var sem=daten.getAttribute("sem");
var ver=daten.getAttribute("ver");
var grp=daten.getAttribute("grp");
var einheit=daten.getAttribute("einheit");
var ort=daten.getAttribute("ort");
var pers_uid=daten.getAttribute("pers_uid");
var d = new Date();
var datum=0;
//Aktuelles Datum ermitteln
datum = ((d.getDate()+3)*60*60*24)+((d.getMonth())*31*24*60*60)+((d.getFullYear()-1970)*365*24*60*60);
//alert(datum);
var attributes="?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes;
if (url)
contentFrame.setAttribute('src', url);
}
function onJumpDate(wochen)
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var type=daten.getAttribute("stpl_type");
var stg_kz=daten.getAttribute("stg_kz");
var sem=daten.getAttribute("sem");
var ver=daten.getAttribute("ver");
var grp=daten.getAttribute("grp");
var einheit=daten.getAttribute("einheit");
var ort=daten.getAttribute("ort");
var pers_uid=daten.getAttribute("pers_uid");
// neues Datum berechnen. Eine Woche sind 604800 Sekunden.
datum+=(604800*wochen)+1;
var attributes="?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes;
if (url)
contentFrame.setAttribute('src', url);
}
function onJumpDateRel(evt)
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var type=daten.getAttribute("stpl_type");
var stg_kz=daten.getAttribute("stg_kz");
var sem=daten.getAttribute("sem");
var ver=daten.getAttribute("ver");
var grp=daten.getAttribute("grp");
var einheit=daten.getAttribute("einheit");
var ort=daten.getAttribute("ort");
var pers_uid=daten.getAttribute("pers_uid");
var kw=daten.getAttribute("kw");
var KWZiel=evt.target.getAttribute("kw");
var wochen=KWZiel-kw;
// neues Datum berechnen. Eine Woche sind 604800 Sekunden.
datum+=(604800*wochen)+1;
var attributes="?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes;
if (url)
contentFrame.setAttribute('src', url);
}
function onLVAdoStpl(evt)
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var type=daten.getAttribute("stpl_type");
var stg_kz=daten.getAttribute("stg_kz");
var sem=daten.getAttribute("sem");
var ver=daten.getAttribute("ver");
var grp=daten.getAttribute("grp");
var einheit=daten.getAttribute("einheit");
var ort=daten.getAttribute("ort");
var pers_uid=daten.getAttribute("pers_uid");
var aktion=evt.target.getAttribute("aktion");
var doIt=true;
var oneDate=new Date();
if (aktion=='lva_stpl_del_single')
doIt=confirm('Es werden alle Lehrveranstaltungen aus dem Stundenplan dieser Woche geloescht!\nSind Sie sicher?')
else
if (aktion=='lva_stpl_del_multi')
doIt=confirm('Es werden alle Lehrveranstaltungen aus dem Stundenplan ab dieser Woche geloescht!\nSind Sie sicher?')
else
aktion+="_search";
var idList=evt.target.getAttribute("idList");
var attributes="?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
attributes+=idList+"&aktion="+aktion+"&time="+oneDate.getTime();
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes+"&bla=";
//dump(url);
if (url && doIt)
contentFrame.setAttribute('src', url);
}
function onStplSearchRoom(event)
{
//alert ("clickCount="+event.clickCount+" button="+event.button);
if (event.button == 1)
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var daten=document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var type=daten.getAttribute("stpl_type");
var stg_kz=daten.getAttribute("stg_kz");
var sem=daten.getAttribute("sem");
var ver=daten.getAttribute("ver");
var grp=daten.getAttribute("grp");
var einheit=daten.getAttribute("einheit");
var ort=daten.getAttribute("ort");
var pers_uid=daten.getAttribute("pers_uid");
var aktion=event.target.getAttribute("aktion");
aktion+="_single_search";
var idList=event.target.getAttribute("idList");
var attributes="\n?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&einheit="+einheit;
attributes+=idList+"&aktion="+aktion;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes;
//alert(url);
if (url)
location.href=url;
}
}
function onStplDelete(aktion)
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var daten=document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var type=daten.getAttribute("stpl_type");
var stg_kz=daten.getAttribute("stg_kz");
var sem=daten.getAttribute("sem");
var ver=daten.getAttribute("ver");
var grp=daten.getAttribute("grp");
var einheit=daten.getAttribute("einheit");
var ort=daten.getAttribute("ort");
var pers_uid=daten.getAttribute("pers_uid");
var idList=document.popupNode.getAttribute("idList");
var doIt=true;
doIt=confirm('Es werden die gewaehlten Eintraege aus dem Stundenplan geloescht!\nSind Sie sicher?')
var attributes="\n?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&einheit="+einheit;
attributes+=idList+"&aktion="+aktion;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes;
//alert(url);
if (url && doIt)
location.href=url;
}
function onStplDetail(event)
{
var idList=event.target.getAttribute("idList");
var type=event.target.getAttribute("stpltype");
var stg_kz=event.target.getAttribute("stg_kz");
var sem=event.target.getAttribute("sem");
var ver=event.target.getAttribute("ver");
var grp=event.target.getAttribute("grp");
var einheit=event.target.getAttribute("einheit");
var datum=event.target.getAttribute("datum");
var stunde=event.target.getAttribute("stunde");
var pers_uid=event.target.getAttribute("pers_uid");
var ort_kurzbz=event.target.getAttribute("ort_kurzbz");
var attributes="?type="+type+"&datum="+datum+"&stunde="+stunde+"&ort_kurzbz="+ort_kurzbz+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit+"&ort_kurzbz="+ort_kurzbz;
attributes+=idList;
var url = "<?php echo APP_ROOT; ?>content/lehrstunde.rdf.php";
url+=attributes;
//alert(url);
var treeStplDetails=parent.document.getElementById('treeStplDetails');
treeStplDetails.setAttribute('datasources',url);
}
+191
View File
@@ -0,0 +1,191 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
include('../vilesci/config.inc.php');
include('../include/functions.inc.php');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/stpl-details-overlay.xul.php"?>';
/*echo '<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';*/
// Testumgebung
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Fehler: Es konnte keine Verbindung zum Server aufgebaut werden!';
//$error_msg.=loadVariables($conn,$REMOTE_USER);
// Stundentafel abfragen
$sql_query="SET datestyle TO ISO;SELECT * FROM tbl_stunde ORDER BY stunde";
if(!$result_stunde=pg_exec($conn, $sql_query))
die(pg_last_error($this->conn));
$num_rows_stunde=pg_numrows($result_stunde);
?>
<!DOCTYPE overlay [
<?php require("../locale/tempus.dtd"); ?>
]>
<overlay id="TempusOverlaySTPLWeek"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js.php"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/stpl-week-overlay.js.php"/>
<hbox id="hboxTimeTableWeek">
<vbox id="vboxTimeTableWeek" flex="30">
<toolbox>
<toolbar id="toolbarTimeTableJumpWeek" tbautostretch="always" persist="collapsed">
<toolbarbutton id="toolbarbuttonJumpWeekMoreLeft"
tooltiptext="16 Wochen zur??ck"
image="../skin/images/moremoreleft.png"
oncommand="onJumpDate(-16);"
/>
<toolbarbutton id="toolbarbuttonJumpWeekMoreLeft"
tooltiptext="4 Wochen zur??ck"
image="../skin/images/moreleft.png"
oncommand="onJumpDate(-4);"
/>
<toolbarbutton id="toolbarbuttonJumpWeekLeft"
tooltiptext="1 Woche zur??ck"
image="../skin/images/left.png"
oncommand="onJumpDate(-1);"
/>
<toolbarbutton id="toolbarbuttonJumpWeekNow"
tooltiptext="zur aktuellen KW"
label="KW"
oncommand="onJumpNow();"
/>
<toolbarbutton id="toolbarbuttonJumpWeekRight"
tooltiptext="1 Woche vor"
image="../skin/images/right.png"
oncommand="onJumpDate(+1);"
/>
<toolbarbutton id="toolbarbuttonJumpWeekMoreRight"
tooltiptext="4 Wochen vor"
image="../skin/images/moreright.png"
oncommand="onJumpDate(+4);"
/>
<toolbarbutton id="toolbarbuttonJumpWeekMoreRight"
tooltiptext="16 Wochen vor"
image="../skin/images/moremoreright.png"
oncommand="onJumpDate(+16);"
/>
<separator orient="horizontal" class="thin" />
<toolbarbutton id="toolbarbuttonStplWeekRefresh"
tooltiptext="Neu laden"
image="../skin/images/refresh.png"
oncommand="onJumpDate(0);"
/>
</toolbar>
</toolbox>
<iframe id="iframeTimeTableWeek" name="TimeTableWeek" flex="5"
src="<?php echo APP_ROOT; ?>content/timetable-week.xul.php" />
<splitter collapse="after" persist="state">
<grippy />
</splitter>
<vbox id="vboxSTPLDetailsListe" flex="2" />
</vbox>
<splitter collapse="after" persist="state">
<grippy />
</splitter>
<vbox style="margin:0px;" flex="1">
<toolbox>
<toolbar id="toolbarTimeTableLeftWeek" tbautostretch="always" persist="collapsed">
<toolbarbutton id="toolbarbuttonStplWeekRefresh"
image="../skin/images/refresh.png"
oncommand="onLVARefresh();"
tooltiptext="Neu laden"
/>
</toolbar>
</toolbox>
<vbox id="vboxLehrveranstalungPlanung" style="overflow:auto;margin:0px;" flex="1"
datasources="lehrveranstaltung.rdf.php"
ref="http://www.technikum-wien.at/tempus/lehrveranstaltung/alle">
<template>
<rule>
<grid uri="rdf:*" class="lvaStundenplan">
<columns>
<column style="background-color:lightblue; border:1px solid black" />
<column style="background-color:lightblue; border:1px solid black" />
</columns>
<rows>
<row style="background-color:lightgreen; border:1px solid black">
<hbox>
<toolbarbutton
image="../skin/images/lvaSingle.png"
ondraggesture="nsDragAndDrop.startDrag(event,lvaObserver);"
oncommand="onLVAdoStpl(event);"
idList="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lva_ids"
aktion="lva_single"
tooltiptext="Vorschlag/Setzen Block"
/>
<toolbarbutton
image="../skin/images/lvaMulti.png"
onclick="onLVAdoStpl(event);"
idList="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lva_ids"
aktion="lva_multi"
ondraggesture="nsDragAndDrop.startDrag(event,lvaObserver)"
tooltiptext="Vorschlag/Setzen MultiWeek"
/>
</hbox>
<hbox>
<toolbarbutton
image="../skin/images/lvaSingleDel.png"
onclick="onLVAdoStpl(event);"
idList="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lva_ids"
aktion="lva_stpl_del_single"
tooltiptext="Löschen SingleWeek"
/>
<toolbarbutton
image="../skin/images/lvaMultiDel.png"
onclick="onLVAdoStpl(event);"
idList="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lva_ids"
aktion="lva_stpl_del_multi"
tooltiptext="Löschen MultiWeek"
/>
</hbox>
</row>
<row style="background-color^: rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lehrfach_farbe^;">
<label value="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lehrfach rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lehrform"
tooltiptext="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lehrfach_bez" />
<label align="right" value="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#raumtyp"
tooltiptext="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#raumtypalternativ" />
</row>
<row>
<label value="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lehrverband"
tooltiptext="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#anmerkung" />
<toolbarbutton
label="KW: rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#start_kw "
tooltiptext="Zu KW rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#start_kw springen"
onclick="onJumpDateRel(event);"
kw="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#start_kw"
/>
</row>
<row>
<label value="rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#lektor" />
<label value="WR: rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#wochenrythmus"
tooltiptext="Wochenrythmus"/>
</row>
<row>
<label value="Offen: rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#offenestunden h"
tooltiptext="Stunden: rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#verplant / rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#semesterstunden" />
<label value="Block: rdf:http://www.technikum-wien.at/tempus/lehrveranstaltung/rdf#stundenblockung"
tooltiptext="Stundenblockung" />
</row>
</rows>
</grid>
</rule>
</template>
</vbox>
</vbox>
</hbox>
</overlay>
+200
View File
@@ -0,0 +1,200 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
include('../vilesci/config.inc.php');
include('../include/berechtigung.class.php');
$rdf_url='http://www.tempus-student-verbaende.at/';
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// Berechtigungen ermitteln
$berechtigung=new berechtigung($conn);
$berechtigung->getBerechtigungen($uid);
$berechtigt_studiengang=$berechtigung->getStgKz();
$stg_kz_query='';
if ($berechtigt_studiengang[0]!=0 && count($berechtigt_studiengang)>0)
{
foreach ($berechtigt_studiengang as $b_stg)
$stg_kz_query.=' OR studiengang_kz='.$b_stg;
$stg_kz_query='AND ('.substr($stg_kz_query,3).')';
}
$sql_query="SELECT studiengang_kz, bezeichnung, kurzbz FROM tbl_studiengang WHERE studiengang_kz>=0 $stg_kz_query ORDER BY bezeichnung";
//echo $sql_query;
if(!$result_stg=pg_query($conn, $sql_query))
$error_msg.=pg_errormessage($conn);
else
$num_rows_stg=@pg_numrows($result_stg);
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:VERBAND="<?php echo $rdf_url; ?>rdf#"
>
<?php
for ($i=0;$i<$num_rows_stg;$i++)
{
$row_stg=@pg_fetch_object($result_stg, $i);
?>
<RDF:Description RDF:about="<?php echo $rdf_url.$row_stg->kurzbz; ?>" >
<VERBAND:name><?php echo $row_stg->kurzbz.' - '.$row_stg->bezeichnung; ?></VERBAND:name>
<VERBAND:stg><?php echo $row_stg->kurzbz; ?></VERBAND:stg>
<VERBAND:stg_kz><?php echo $row_stg->studiengang_kz; ?></VERBAND:stg_kz>
</RDF:Description>
<?php
$sql_query="SELECT DISTINCT semester FROM tbl_student WHERE studiengang_kz=$row_stg->studiengang_kz ORDER BY semester";
if(!($result_sem=pg_query($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows_sem=pg_numrows($result_sem);
for ($j=0; $j<$num_rows_sem; $j++)
{
$row_sem=pg_fetch_object($result_sem, $j);
?>
<RDF:Description RDF:about="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester; ?>">
<VERBAND:name><?php echo $row_stg->kurzbz.'-'.$row_sem->semester; ?></VERBAND:name>
<VERBAND:stg><?php echo $row_stg->kurzbz; ?></VERBAND:stg>
<VERBAND:stg_kz><?php echo $row_stg->studiengang_kz; ?></VERBAND:stg_kz>
<VERBAND:sem><?php echo $row_sem->semester; ?></VERBAND:sem>
</RDF:Description>
<?php
$sql_query="SELECT DISTINCT verband FROM tbl_student WHERE verband!=' ' AND studiengang_kz=$row_stg->studiengang_kz AND semester=$row_sem->semester ORDER BY verband";
if(!($result_ver=pg_exec($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows_ver=pg_numrows($result_ver);
for ($k=0; $k<$num_rows_ver; $k++)
{
$row_ver=pg_fetch_object($result_ver, $k);
?>
<RDF:Description RDF:about="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester.'/'.$row_ver->verband; ?>">
<VERBAND:name><?php echo $row_stg->kurzbz.'-'.$row_sem->semester.$row_ver->verband; ?></VERBAND:name>
<VERBAND:stg><?php echo $row_stg->kurzbz; ?></VERBAND:stg>
<VERBAND:stg_kz><?php echo $row_stg->studiengang_kz; ?></VERBAND:stg_kz>
<VERBAND:sem><?php echo $row_sem->semester; ?></VERBAND:sem>
<VERBAND:ver><?php echo $row_ver->verband; ?></VERBAND:ver>
</RDF:Description>
<?php
$sql_query="SELECT DISTINCT gruppe FROM tbl_student WHERE studiengang_kz=$row_stg->studiengang_kz AND semester=$row_sem->semester AND verband='$row_ver->verband' ORDER BY gruppe";
if(!($result_grp=pg_exec($conn, $sql_query))) die(pg_errormessage($conn));
$num_rows_grp=pg_numrows($result_grp);
for ($l=0; $l<$num_rows_grp; $l++)
{
$row_grp=pg_fetch_object($result_grp, $l);
?>
<RDF:Description RDF:about="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester.'/'.$row_ver->verband.'/'.$row_grp->gruppe; ?>">
<VERBAND:name><?php echo $row_stg->kurzbz.'-'.$row_sem->semester.$row_ver->verband.$row_grp->gruppe; ?></VERBAND:name>
<VERBAND:stg><?php echo $row_stg->kurzbz; ?></VERBAND:stg>
<VERBAND:stg_kz><?php echo $row_stg->studiengang_kz; ?></VERBAND:stg_kz>
<VERBAND:sem><?php echo $row_sem->semester; ?></VERBAND:sem>
<VERBAND:ver><?php echo $row_ver->verband; ?></VERBAND:ver>
<VERBAND:grp><?php echo $row_grp->gruppe; ?></VERBAND:grp>
</RDF:Description>
<?php
}
}
$sql_query="SELECT bezeichnung, einheit_kurzbz FROM tbl_einheit WHERE studiengang_kz=$row_stg->studiengang_kz AND semester=$row_sem->semester ORDER BY bezeichnung";
//echo $sql_query;
if(!($result_einh=pg_exec($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows_einh=pg_numrows($result_einh);
for ($m=0; $m<$num_rows_einh; $m++)
{
$row_einh=pg_fetch_object($result_einh, $m);
?>
<RDF:Description RDF:about="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester.'/'.$row_einh->einheit_kurzbz; ?>">
<VERBAND:name><?php echo $row_einh->einheit_kurzbz.'-'.$row_einh->bezeichnung; ?></VERBAND:name>
<VERBAND:stg><?php echo $row_stg->kurzbz; ?></VERBAND:stg>
<VERBAND:stg_kz><?php echo $row_stg->studiengang_kz; ?></VERBAND:stg_kz>
<VERBAND:sem><?php echo $row_sem->semester; ?></VERBAND:sem>
<VERBAND:einheit><?php echo $row_einh->einheit_kurzbz; ?></VERBAND:einheit>
</RDF:Description>
<?php
}
}
}
?>
<RDF:Seq RDF:about="<?php echo $rdf_url.'alle-verbaende'; ?>">
<?php
for ($i=0;$i<$num_rows_stg;$i++)
{
$row_stg=@pg_fetch_object($result_stg, $i);
?>
<RDF:li RDF:resource="<?php echo $rdf_url.$row_stg->kurzbz; ?>" />
<RDF:li>
<RDF:Seq RDF:about="<?php echo $rdf_url.$row_stg->kurzbz; ?>">
<?php
$sql_query="SELECT DISTINCT semester FROM tbl_student WHERE studiengang_kz=$row_stg->studiengang_kz ORDER BY semester";
if(!($result_sem=pg_query($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows_sem=pg_numrows($result_sem);
for ($j=0; $j<$num_rows_sem; $j++)
{
$row_sem=pg_fetch_object($result_sem, $j);
?>
<RDF:li RDF:resource="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester; ?>" />
<RDF:li>
<RDF:Seq RDF:about="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester; ?>">
<?php
$sql_query="SELECT DISTINCT verband FROM tbl_student WHERE verband!=' ' AND studiengang_kz=$row_stg->studiengang_kz AND semester=$row_sem->semester ORDER BY verband";
if(!($result_ver=pg_exec($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows_ver=pg_numrows($result_ver);
for ($k=0; $k<$num_rows_ver; $k++)
{
$row_ver=pg_fetch_object($result_ver, $k);
?>
<RDF:li RDF:resource="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester.'/'.$row_ver->verband; ?>" />
<RDF:li>
<RDF:Seq RDF:about="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester.'/'.$row_ver->verband; ?>">
<?php
$sql_query="SELECT DISTINCT gruppe FROM tbl_student WHERE studiengang_kz=$row_stg->studiengang_kz AND semester=$row_sem->semester AND verband='$row_ver->verband' ORDER BY gruppe";
if(!($result_grp=pg_exec($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows_grp=pg_numrows($result_grp);
for ($l=0; $l<$num_rows_grp; $l++)
{
$row_grp=pg_fetch_object($result_grp, $l);
?>
<RDF:li RDF:resource="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester.'/'.$row_ver->verband.'/'.$row_grp->gruppe; ?>" />
<?php
}
?>
</RDF:Seq>
</RDF:li>
<?php
}
$sql_query="SELECT bezeichnung, einheit_kurzbz FROM tbl_einheit WHERE studiengang_kz=$row_stg->studiengang_kz AND semester=$row_sem->semester ORDER BY bezeichnung";
//echo $sql_query;
if(!($result_einh=pg_exec($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows_einh=pg_numrows($result_einh);
for ($m=0; $m<$num_rows_einh; $m++)
{
$row_einh=pg_fetch_object($result_einh, $m);
?>
<RDF:li RDF:resource="<?php echo $rdf_url.$row_stg->kurzbz.'/'.$row_sem->semester.'/'.$row_einh->einheit_kurzbz; ?>" />
<?php
}
?>
</RDF:Seq>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:RDF>
+205
View File
@@ -0,0 +1,205 @@
// aktueller Student, der angezeigt wird
var currentStudent;
function studentAuswahl() {
var tree = document.getElementById('treeStudenten');
var items = tree.selectedItems;
//alert(tree.view.getCellText(tree.currentIndex,"uid"));
// Datasource holen
var dsource;
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
var sources=tree.database.GetDataSources();
if (sources.hasMoreElements()){
dsource=sources.getNext();
}
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/tempus/studenten/" + tree.view.getCellText(tree.currentIndex,"uid"));
// zum debuggen; zeigt predicates an, die in resource zu finden sind
/*
var targets = dsource.ArcLabelsOut(subject);
while (targets.hasMoreElements()){
var predicate = targets.getNext();
if (predicate instanceof Components.interfaces.nsIRDFResource){
var target = dsource.GetTarget(subject, predicate, true);
if (target instanceof Components.interfaces.nsIRDFResource){
alert("Resource is: " + target.Value);
}
else if (target instanceof Components.interfaces.nsIRDFLiteral){
alert("Literal is: " + target.Value + " predi="+ predicate.Value+ "subject="+subject.Value);
}
}
}
*/
//
var predicateNS = "http://www.technikum-wien.at/tempus/studenten/rdf";
//var predicate = rdfService.GetResource( predicateNS + "#vornamen" );
//var target = dsource.GetTarget(subject, predicate, true);
var student = new Student();
student.uid = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#uid" ));
student.titel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel" ));
student.vornamen = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vornamen" ));
student.nachname = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#nachname" ));
student.geburtsdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#geburtsdatum" ));
student.geburtsort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#geburtsort" ));
student.geburtszeit = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#geburtszeit" ));
student.homepage = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#homepage" ));
student.email = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#email" ));
student.matrikelnummer = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#matrikelnummer" ));
student.semester = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#semester" ));
student.verband = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#verband" ));
student.gruppe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gruppe" ));
student.studiengang_kz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studiengang_kz" ));
student.stg_bezeichnung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stg_bezeichnung" ));
student.aktiv = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aktiv" ));
student.show();
currentStudent = student;
/*
if (dsource.hasArcOut(subject, predicate)) {
if (target instanceof Components.interfaces.nsIRDFLiteral) {
alert("Literal is: " + target.Value + " predi="+ predicate.Value+ "subject="+subject.Value);
student.vornamen = target.Value;
student.show();
}
} */
document.getElementById('std-label-anzahl').value="Anzahl: "+tree.view.rowCount;
}
function getTargetHelper(dsource,subj,predi) {
if (dsource.hasArcOut(subj, predi)) {
var target = dsource.GetTarget(subj, predi, true);
if (target instanceof Components.interfaces.nsIRDFLiteral) {
return target.Value;
}
}
return "";
}
/**
* Student Value Object
*/
function Student() {
this.uid=null;
this.matrikelnummer=null;
this.titel=null;
this.vornamen=null;
this.nachname=null;
this.geburtsdatum=null;
this.geburtsort=null;
this.geburtszeit=null;
this.homepage=null;
this.email=null;
this.semester=null;
this.verband=null;
this.gruppe=null;
this.stg_bezeichnung=null;
this.studiengang_kz=null;
this.aktiv=null;
// flag, welches angibt, ob Daten verändert wurden
this.dataChanged=false;
}
/**
* Daten aus Formular holen und evt. speichern
*/
Student.prototype.updateData = function() {
if (document.getElementById('gridStudentenUID').value!=this.uid) {
this.uid = document.getElementById('gridStudentenUID').value;
this.dataChanged = true;
};
if (document.getElementById('gridStudentenTitel').value!=this.titel) {
this.titel = document.getElementById('gridStudentenTitel').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenVornamen').value!=this.vornamen) {
this.vornamen = document.getElementById('gridStudentenVornamen').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenNachname').value!=this.nachname) {
this.nachname = document.getElementById('gridStudentenNachname').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenMatrikelnummer').value!=this.matrikelnummer) {
this.matrikelnummer = document.getElementById('gridStudentenMatrikelnummer').value;
this.dataChanged = true;
}
//alert(document.getElementById('gridStudentenMatrikelnummer').value);
if (document.getElementById('gridStudentenGeburtsdatum').value!=this.geburtsdatum) {
// todo validation
this.geburtsdatum = document.getElementById('gridStudentenGeburtsdatum').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGeburtsort').value!=this.geburtsort) {
this.geburtsort = document.getElementById('gridStudentenGeburtsort').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGeburtszeit').value!=this.geburtszeit) {
// todo validation
this.geburtszeit = document.getElementById('gridStudentenGeburtszeit').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenHomepage').value!=this.homepage) {
this.homepage = document.getElementById('gridStudentenHomepage').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenEmail').value!=this.email) {
this.email = document.getElementById('gridStudentenEmail').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenSemester').value!=this.semester) {
this.semester = document.getElementById('gridStudentenSemester').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenVerband').value!=this.verband) {
this.verband = document.getElementById('gridStudentenVerband').value;
this.dataChanged = true;
}
if (document.getElementById('gridStudentenGruppe').value!=this.gruppe) {
this.gruppe = document.getElementById('gridStudentenGruppe').value;
this.dataChanged = true;
}
if (!((document.getElementById('gridStudentenAktiv').checked && this.aktiv=='True') ||
(!document.getElementById('gridStudentenAktiv').checked && this.aktiv=='False'))) {
this.aktiv = document.getElementById('gridStudentenAktiv').checked?'True':'False';
this.dataChanged = true;
}
alert(this.dataChanged?'dataChanged':'nix changed');
}
/**
* Student anzeigen
*/
Student.prototype.show = function() {
document.getElementById('gridStudentenUID').value = this.uid;
document.getElementById('gridStudentenTitel').value = this.titel;
document.getElementById('gridStudentenVornamen').value = this.vornamen;
document.getElementById('gridStudentenNachname').value = this.nachname;
document.getElementById('gridStudentenMatrikelnummer').value = this.matrikelnummer;
document.getElementById('gridStudentenGeburtsdatum').value = this.geburtsdatum;
document.getElementById('gridStudentenGeburtsort').value = this.geburtsort;
document.getElementById('gridStudentenGeburtszeit').value = this.geburtszeit;
document.getElementById('gridStudentenHomepage').value = this.homepage;
document.getElementById('gridStudentenEmail').value = this.email;
document.getElementById('gridStudentenSemester').value = this.semester;
document.getElementById('gridStudentenVerband').value = this.verband;
document.getElementById('gridStudentenGruppe').value = this.gruppe;
document.getElementById('gridStudentenStgBezeichnung').value = this.stg_bezeichnung;
document.getElementById('gridStudentenAktiv').checked = (this.aktiv=='True'?true:false);
}
+92
View File
@@ -0,0 +1,92 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/person.class.php');
include_once('../include/student.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// test
/*
$einheit_kurzbz='';
$grp='1';
$ver='A';
$sem=3;
$stg_kz=145;
*/
$einheit_kurzbz=$_GET['einheit'];
$grp=$_GET['grp'];
$ver=$_GET['ver'];
$sem=$_GET['sem'];
$stg_kz=$_GET['stg_kz'];
// Studenten holen
$studentenDAO=new student($conn);
$studenten=$studentenDAO->getStudents($einheit_kurzbz, $grp, $ver, $sem,$stg_kz);
$rdf_url='http://www.technikum-wien.at/tempus/studenten';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:STUDENT="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/liste">
<?php
foreach ($studenten as $student)
{
?>
<RDF:li>
<RDF:Description id="<?php echo $student->uid; ?>" about="<?php echo $rdf_url.'/'.$student->uid; ?>" >
<STUDENT:uid><?php echo $student->uid ?></STUDENT:uid>
<STUDENT:titel><?php echo $student->titel ?></STUDENT:titel>
<STUDENT:vornamen><?php echo $student->vornamen ?></STUDENT:vornamen>
<STUDENT:nachname><?php echo $student->nachname ?></STUDENT:nachname>
<STUDENT:matrikelnummer><?php echo $student->matrikelnr ?></STUDENT:matrikelnummer>
<STUDENT:geburtsdatum><?php echo $student->gebdatum ?></STUDENT:geburtsdatum>
<STUDENT:email><?php echo $student->email ?></STUDENT:email>
<STUDENT:homepage><?php echo $student->homepage ?></STUDENT:homepage>
<STUDENT:aktiv><?php echo ($student->aktiv?'True':'False') ?></STUDENT:aktiv>
<STUDENT:gebort><?php echo $student->gebort ?></STUDENT:gebort>
<STUDENT:gebzeit><?php echo $student->gebzeit ?></STUDENT:gebzeit>
<STUDENT:foto><?php echo $student->foto ?></STUDENT:foto>
<STUDENT:anmerkungen><?php echo $student->anmerkungen ?></STUDENT:anmerkungen>
<STUDENT:updateamum><?php echo $student->updateamum ?></STUDENT:updateamum>
<STUDENT:updatevon><?php echo $student->updatevon ?></STUDENT:updatevon>
<STUDENT:gruppe><?php echo $student->gruppe ?></STUDENT:gruppe>
<STUDENT:verband><?php echo $student->verband ?></STUDENT:verband>
<STUDENT:semester><?php echo $student->semester ?></STUDENT:semester>
<STUDENT:studiengang_kz><?php echo $student->studiengang_kz ?></STUDENT:studiengang_kz>
<STUDENT:stg_bezeichnung><?php echo $student->stg_bezeichnung ?></STUDENT:stg_bezeichnung>
</RDF:Description>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:RDF>
+166
View File
@@ -0,0 +1,166 @@
<?php
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");
include('../vilesci/config.inc.php');
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>';
echo "<?xml-stylesheet href=\"".APP_ROOT."content/lfvt.css\" type=\"text/css\" ?>";
?>
<!DOCTYPE overlay >
<overlay id="StudentenOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/studenten.js" />
<!-- *************** -->
<!-- * Studenten * -->
<!-- *************** -->
<vbox id="studentenEditor">
<hbox>
<toolbox>
<toolbar id="studentenToolbar">
<toolbarbutton label="Neu"/>
<toolbarbutton label="Speichern"/>
<toolbarbutton label="Löschen"/>
</toolbar>
</toolbox>
<spacer flex="1"/>
<label id="std-label-anzahl" />
</hbox>
<!-- ************* -->
<!-- * Auswahl * -->
<!-- ************* -->
<tree id="treeStudenten" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/tempus/studenten/liste"
onselect="studentAuswahl();"
flags="dont-build-content"
enableColumnDrag="true"
style="margin:0px;"
>
<treecols>
<treecol id="uid" label="UID" flex="1" primary="false"
class="sortDirectionIndicator"
sortActive="true"
sortDirection="ascending"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#uid" />
<splitter class="tree-splitter"/>
<treecol id="titel" label="Titel" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#titel" />
<splitter class="tree-splitter"/>
<treecol id="vornamen" label="Vornamen" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#vornamen" />
<splitter class="tree-splitter"/>
<treecol id="nachname" label="Nachname" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#nachname" />
<splitter class="tree-splitter"/>
<treecol id="geburtsdatum" label="Geburtsdatum" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#geburtsdatum" />
<splitter class="tree-splitter"/>
<treecol id="semester" label="Sem." flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#semester" />
<splitter class="tree-splitter"/>
<treecol id="verband" label="Verb." flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#verband" />
<splitter class="tree-splitter"/>
<treecol id="gruppe" label="Grp." flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#gruppe" />
<splitter class="tree-splitter"/>
<treecol id="stg_bezeichnung" label="Studiengang" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#stg_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="matrikelnummer" label="Matrikelnummer" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#matrikelnummer" />
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#uid" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#titel" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#vornamen" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#nachname" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#geburtsdatum" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#semester" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#verband" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#gruppe" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#stg_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/tempus/studenten/rdf#matrikelnummer" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
<!--
<template>
<rule>
<conditions>
<content uri="?uri" />
<member container="?uri" child="?student" />
</conditions>
<bindings>
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#uid" object="?uid" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#titel" object="?titel" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#vornamen" object="?vornamen" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#nachname" object="?nachname" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#geburtsdatum" object="?geburtsdatum" />
<binding subject="?student" predicate="http://www.technikum-wien.at/tempus/studenten/rdf#aktiv" object="?aktiv" />
</bindings>
<action>
<treechildren>
<treeitem uri="?student">
<treerow>
<treecell label="?uid" />
<treecell label="?titel" />
<treecell label="?vornamen" />
<treecell label="?nachname" />
<treecell label="?geburtsdatum" />
<treecell label="?aktiv" />
</treerow>
</treeitem>
</treechildren>
</action>
</rule>
</template>
-->
</tree>
<splitter collapse="after" persist="state">
<grippy />
</splitter>
<!-- ************ -->
<!-- * Detail * -->
<!-- ************ -->
<vbox flex="1" style="overflow:auto;margin:0px;">
<label value="Details" style="font-size:12pt;font-weight:bold;background:#eeeeee;margin:0px;padding:5px;" />
<box class="studentDetail" style="margin-top:10px;" />
</vbox>
</vbox>
</overlay>
+66
View File
@@ -0,0 +1,66 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/studiengang.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// raumtypen holen
$studiengangDAO=new studiengang($conn);
$studiengaenge=$studiengangDAO->getAll();
$rdf_url='http://www.technikum-wien.at/tempus/studiengang';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:STUDIENGANG="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/liste">
<?php
if (is_array($studiengaenge)) {
foreach ($studiengaenge as $sg)
{
?>
<RDF:li>
<RDF:Description id="<?php echo $sg->studiengang_kz; ?>" about="<?php echo $rdf_url.'/'.$sg->studiengang_kz; ?>" >
<STUDIENGANG:studiengang_kz><?php echo $sg->studiengang_kz ?></STUDIENGANG:studiengang_kz>
<STUDIENGANG:kurzbz><?php echo $sg->kurzbz ?></STUDIENGANG:kurzbz>
<STUDIENGANG:kurzbzlang><?php echo $sg->kurzbzlang ?></STUDIENGANG:kurzbzlang>
<STUDIENGANG:bezeichnung><?php echo $sg->bezeichnung ?></STUDIENGANG:bezeichnung>
<STUDIENGANG:max_semester><?php echo $sg->max_semester ?></STUDIENGANG:max_semester>
<STUDIENGANG:typ><?php echo $sg->typ ?></STUDIENGANG:typ>
<STUDIENGANG:farbe><?php echo $sg->farbe ?></STUDIENGANG:farbe>
<STUDIENGANG:email><?php echo $sg->email ?></STUDIENGANG:email>
</RDF:Description>
</RDF:li>
<?php
}
}
?>
</RDF:Seq>
</RDF:RDF>
+60
View File
@@ -0,0 +1,60 @@
<?php
/*
* Created on 02.12.2004
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
// 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/vnd.mozilla.xul+xml");
// xml
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
// DAO
include('../vilesci/config.inc.php');
include_once('../include/studiensemester.class.php');
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
// studiensemester holen
$studiensemesterDAO=new studiensemester($conn);
$studiensemesterAll=$studiensemesterDAO->getAll();
$rdf_url='http://www.technikum-wien.at/tempus/studiensemester';
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:STUDIENSEMESTER="<?php echo $rdf_url; ?>/rdf#"
>
<RDF:Seq about="<?php echo $rdf_url ?>/liste">
<?php
foreach ($studiensemesterAll as $ss)
{
?>
<RDF:li>
<RDF:Description id="<?php echo $ss->kurzbz; ?>" about="<?php echo $rdf_url.'/'.$ss->kurzbz; ?>" >
<STUDIENSEMESTER:kurzbz><?php echo $ss->kurzbz ?></STUDIENSEMESTER:kurzbz>
<STUDIENSEMESTER:start><![CDATA[ <?php echo $ss->start ?> ]]></STUDIENSEMESTER:start>
<STUDIENSEMESTER:ende><?php echo $ss->ende ?></STUDIENSEMESTER:ende>
</RDF:Description>
</RDF:li>
<?php
}
?>
</RDF:Seq>
</RDF:RDF>
+100
View File
@@ -0,0 +1,100 @@
<?php
include('../vilesci/config.inc.php');
?>
function closeWindow()
{
window.close();
}
function onLoad()
{
//window.close();
}
function loadRightFrame()
{
}
function loadURL(event)
{
var contentFrame = document.getElementById('contentFrame');
var url = event.target.getAttribute('value');
if (url) contentFrame.setAttribute('src', url);
}
function stpltableChange(db_stpl_table)
{
//alert(db_stpl_table);
}
function studiensemesterChange()
{
var items = document.getElementsByTagName('menuitem');
var stsem='';
for(i in items)
{
if(items[i].id=='menu-properies-studiensemester-name' && items[i].getAttribute("checked")=='true')
stsem = items[i].label;
}
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var httpRequest = new XMLHttpRequest();
var url = "<?php echo APP_ROOT; ?>rdf/fas/db_dml.rdf.php";
httpRequest.open("POST", url, false, '','');
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var param = "type=variablechange";
param = param + "&stsem="+stsem;
//Parameter schicken
httpRequest.send(param);
// Bei status 4 ist sendung Ok
switch(httpRequest.readyState)
{
case 1,2,3: alert('Bad Ready State: '+httpRequest.status);
return false;
break;
case 4: if(httpRequest.status !=200)
{
alert('The server respond with a bad status code: '+httpRequest.status);
return false;
}
else
{
var response = httpRequest.responseText;
}
break;
}
// Returnwerte aus RDF abfragen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/dbdml');
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/dbdml/0");
var predicateNS = "http://www.technikum-wien.at/dbdml/rdf";
var dbdml_return = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#return" ));
var dbdml_errormsg = getTargetHelper(dsource, subject, rdfService.GetResource( predicateNS + "#errormsg" ));
if(dbdml_return=='true')
{
//Statusbar setzen
document.getElementById("statusbarpanel-text").label = "Studiensemester erfolgreich geändert";
document.getElementById("statusbarpanel-semester").label = stsem;
//MitarbeiterDetailStudiensemester_id = dbdml_errormsg;
}
else
{
alert("Fehler beim Speichern der Daten: "+dbdml_errormsg);
}
return true;
}
+158
View File
@@ -0,0 +1,158 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
include('../vilesci/config.inc.php');
include('../include/functions.inc.php');
include('../include/fas/benutzer.class.php');
// Testumgebung
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
$error_msg='';
//Variablen laden
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$error_msg.=loadVariables($conn,$REMOTE_USER);
$benutzer = new benutzer($conn);
if(!$benutzer->loadVariables($uid))
$error_msg = $benutzer->errormsg;
/*echo '<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>';*/
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/tempusoverlay.xul.php"?>';
?>
<!DOCTYPE window [
<?php require("../locale/de-AT/tempus.dtd"); ?>
]>
<window
id="tempus"
title="&window.title; &window.version;"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical"
width="800"
height="600"
persist="screenX screenY width height sizemode"
onload="onLoad()"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/tempus.js.php" />
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js"/>
<commandset id="maincommands">
<command id="menu-file-close:command" oncommand="closeWindow();"/>
<command id="menu-properties-studiensemester:command" oncommand="studiensemesterChange();"/>
<command id="menu-prefs-stpltable-stundenplan:command" oncommand="stpltableChange('stundenplan');"/>
<command id="menu-prefs-stpltable-stundenplandev:command" oncommand="stpltableChange('stundenplandev');"/>
</commandset>
<keyset id="mainkeys">
<key
id = "menu-file-close:key"
key = "&menu-file-close:key;"
observes = "menu-file-close:command"
modifiers = "accel" />
</keyset>
<toolbox id="main-toolbox">
<menubar id="menu">
<menu id="menu-file" label="&menu-file:label;" accesskey="&menu-file:accesskey;">
<menupopup id="menu-file-popup">
<menuitem
id = "menu-file-close"
key = "menu-file-close:key"
label = "&menu-file-close:label;"
command = "menu-file-close:command"
accesskey = "&menu-file-close:accesskey;"/>
</menupopup>
</menu>
<menu id="menu-prefs" label="&menu-prefs:label;" accesskey="&menu-prefs:accesskey;">
<menupopup id="menu-prefs-popup">
<menu id="menu-prefs-stpltable" label="&menu-prefs-stpltable:label;" accesskey="&menu-prefs-stpltable:accesskey;">
<menupopup id="menu-prefs-stpltable-popup">
<menuitem
id ="menu-prefs-stpltable-stundenplan"
type ="radio"
key ="menu-prefs-stpltable-stundenplan:key"
label ="&menu-prefs-stpltable-stundenplan:label;"
command ="menu-prefs-stpltable-stundenplan:command"
accesskey ="&menu-prefs-stpltable-stundenplan:accesskey;"/>
<menuitem
id ="menu-prefs-stpltable-stundenplandev"
type ="radio"
key ="menu-prefs-stpltable-stundenplandev:key"
label ="&menu-prefs-stpltable-stundenplandev:label;"
command ="menu-prefs-stpltable-stundenplandev:command"
accesskey ="&menu-prefs-stpltable-stundenplandev:accesskey;"/>
</menupopup>
</menu>
<menu
id = "menu-properies-studiensemester"
label = "Studiensemester">
<menupopup id="menu-properties-popup">
<?php
$stsem_arr = $benutzer->getpossibilities('semester_aktuell');
foreach ($stsem_arr as $stsem)
{
echo "
<menuitem
id = 'menu-properies-studiensemester-name'
label = '$stsem'
type = 'radio'
command = 'menu-properties-studiensemester:command'
checked = ".($benutzer->variable->semester_aktuell==$stsem?"'true' ":"'false'")." />";
}
?>
</menupopup>
</menu>
</menupopup>
</menu>
<menu id="menu-help" label="&menu-help:label;" accesskey="&menu-help:accesskey;">
<menupopup id="menu-about-popup">
<menuitem
id = "menu-help-close"
key = "menu-help-close:key"
label = "&menu-help-close:label;"
command = "menu-help-close:command"
accesskey = "&menu-help-close:accesskey;"/>
</menupopup>
</menu>
</menubar>
</toolbox>
<hbox flex="1">
<tabbox id="tabbox-left" orient="vertical" flex="1">
<tabs orient="horizontal">
<tab id="tab-verband" label="Verband" />
<tab id="tab-ort" label="Ort" />
<tab id="tab-lektor" label="Lektor" />
</tabs>
<tabpanels id="tabpanels-left" flex="1">
<tree id="tree-verband" />
<tree id="tree-ort" />
<tree id="tree-lektor" />
</tabpanels>
</tabbox>
<splitter collapse="before" persist="state">
<grippy />
</splitter>
<vbox id="vbox-main" flex="15" />
</hbox>
<statusbar id="status-bar" persist="collapsed">
<statusbarpanel class="statusbarpanel-iconic" id="logo-icon" />
<statusbarpanel id="statusbarpanel-semester" label="<?php echo $semester_aktuell; ?>"/>
<statusbarpanel id="statusbarpanel-db_table" label="<?php echo $db_stpl_table; ?>"/>
<statusbarpanel id="statusbarpanel-text" label="<?php echo htmlspecialchars($error_msg); ?>" flex="4" crop="right" />
<statusbarpanel class="statusbarpanel-iconic" id="example-status" flex="1" />
</statusbar>
</window>
+207
View File
@@ -0,0 +1,207 @@
<?php
include('../vilesci/config.inc.php');
?>
var currentAuswahl=new auswahlValues();
function auswahlValues()
{
this.stg_kz=null;
this.sem=null;
this.ver=null;
this.grp=null;
this.einheit=null;
this.lektor_uid=null;
}
function onVerbandSelect()
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var tree=document.getElementById('tree-verband');
var stg_kz=tree.view.getCellText(tree.currentIndex,"stg_kz");
var sem=tree.view.getCellText(tree.currentIndex,"sem");
var ver=tree.view.getCellText(tree.currentIndex,"ver");
var grp=tree.view.getCellText(tree.currentIndex,"grp");
var einheit=tree.view.getCellText(tree.currentIndex,"einheit");
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var attributes="&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
if (einheit!=null && einheit!=0 &einheit!='')
var type="?type=einheit";
else
var type="?type=verband";
url+=type+attributes+"&datum="+datum;
if (url)
contentFrame.setAttribute('src', url);
currentAuswahl.stg_kz=stg_kz;
currentAuswahl.sem=sem;
currentAuswahl.ver=ver;
currentAuswahl.grp=grp;
currentAuswahl.einheit=einheit;
// Semesterplan
var semesterplan=document.getElementById('tabpanels-main');
var panelIndex=semesterplan.getAttribute("selectedIndex");
if (panelIndex==1)
{
var contentFrame=document.getElementById('iframeTimeTableSemester');
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
if (einheit!=null && einheit!=0 &einheit!='')
var type="?type=einheit";
else
var type="?type=verband";
url+=type+attributes+"&semesterplan=true";
if (url)
contentFrame.setAttribute('src', url);
}
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
var attribute='lehrveranstaltung.rdf.php'+type+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
vboxLehrveranstalungPlanung.setAttribute('datasources',attribute);
// Studenten
var treeStudenten=document.getElementById('treeStudenten');
attribute="<?php echo APP_ROOT; ?>rdf/student.rdf.php?"+"stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit;
treeStudenten.setAttribute('datasources',attribute);
// LFVT
var req = new phpRequest('lfvt.rdf.php','pam','pam');
req.add('stg_kz',stg_kz);
req.add('sem',sem);
req.add('ver',ver);
req.add('grp',grp);
req.add('einheit',einheit);
var response = req.execute();
// http error handling ist in phpRequest
// SQL-Error werden derzeit noch nicht behandelt!
//if (response!='ok') alert(response);
// XML in Datasource parsen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/tempus/lva/liste');
var treeLFVT=document.getElementById('treeLFVT');
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
// alte datenquellen entfernen
var sources=treeLFVT.database.GetDataSources();
while (sources.hasMoreElements()){
treeLFVT.database.RemoveDataSource(sources.getNext());
}
// neue Datenquelle setzen
treeLFVT.database.AddDataSource(dsource);
treeLFVT.builder.rebuild();
//treeLFVT.setAttribute('datasources','lfvt.rdf.php?'+"stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit);
//alert('lfvt.rdf.php?'+"stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit);
}
function onOrtSelect()
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var treeOrt=document.getElementById('tree-ort');
var ort=treeOrt.view.getCellText(treeOrt.currentIndex,"ort_kurzbz");
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var attributes="?type=ort&ort="+ort+"&datum="+datum;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes;
if (url)
contentFrame.setAttribute('src', url);
}
function onLektorSelect()
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var treeLektor=document.getElementById('tree-lektor');
var uid=treeLektor.view.getCellText(treeLektor.currentIndex,"uid");
//var treeVerband=document.getElementById('tree-verband');
//var stg_kz=treeVerband.view.getCellText(treeVerband.currentIndex,"stg_kz");
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
var datum=parseInt(daten.getAttribute("datum"));
var attributes="?type=lektor&pers_uid="+uid+"&datum="+datum;
var url = "<?php echo APP_ROOT; ?>content/timetable-week.xul.php";
url+=attributes;
if (url)
contentFrame.setAttribute('src', url);
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
vboxLehrveranstalungPlanung.setAttribute('datasources','lehrveranstaltung.rdf.php?'+"type=lektor&lektor="+uid);
// LFVT
var req = new phpRequest('lfvt.rdf.php','pam','pam');
req.add('lektor',uid);
var response = req.execute();
// http error handling ist in phpRequest
// SQL-Error werden derzeit noch nicht behandelt!
//if (response!='ok') alert(response);
// XML in Datasource parsen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/tempus/lva/liste');
var treeLFVT=document.getElementById('treeLFVT');
// Trick 17 (sonst gibt's ein Permission denied)
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
// alte datenquellen entfernen
var sources=treeLFVT.database.GetDataSources();
while (sources.hasMoreElements()){
treeLFVT.database.RemoveDataSource(sources.getNext());
}
// neue Datenquelle setzen
treeLFVT.database.AddDataSource(dsource);
treeLFVT.builder.rebuild();
}
function loadURL(event)
{
var contentFrame = document.getElementById('contentFrame');
var url = event.target.getAttribute('value');
if (url) contentFrame.setAttribute('src', url);
};
function parseRDFString(str, url)
{
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert(e);
return;
}
var memoryDS = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource);
var ios=Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
baseUri=ios.newURI(url,null,null);
var parser=Components.classes["@mozilla.org/rdf/xml-parser;1"].createInstance(Components.interfaces.nsIRDFXMLParser);
parser.parseString(memoryDS,baseUri,str);
return memoryDS;
}
+153
View File
@@ -0,0 +1,153 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
include('../vilesci/config.inc.php');
echo '<?xul-overlay href="'.APP_ROOT.'content/studentenoverlay.xul.php"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/lfvtoverlay.xul.php"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/stpl-week-overlay.xul.php"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/stpl-semester-overlay.xul.php"?>';
/*echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';*/
?>
<!DOCTYPE overlay [
<?php require("../locale/tempus.dtd"); ?>
]>
<overlay id="TempusOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/tempusoverlay.js.php" />
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js"/>
<tree id="tree-verband" onselect="onVerbandSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
datasources="student-verbaende.rdf.php" ref="http://www.tempus-student-verbaende.at/alle-verbaende"
>
<treecols>
<treecol id="bez" label="Bezeichnung" flex="15" primary="true" />
<splitter class="tree-splitter"/>
<treecol id="stg" label="STG" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="stg_kz" label="KZ" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="sem" label="Sem" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="ver" label="Ver" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="grp" label="Grp" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="einheit" label="Einheit" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.tempus-student-verbaende.at/rdf#name"/>
<treecell label="rdf:http://www.tempus-student-verbaende.at/rdf#stg"/>
<treecell label="rdf:http://www.tempus-student-verbaende.at/rdf#stg_kz"/>
<treecell label="rdf:http://www.tempus-student-verbaende.at/rdf#sem"/>
<treecell label="rdf:http://www.tempus-student-verbaende.at/rdf#ver"/>
<treecell label="rdf:http://www.tempus-student-verbaende.at/rdf#grp"/>
<treecell label="rdf:http://www.tempus-student-verbaende.at/rdf#einheit"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<tree id="tree-ort" onselect="onOrtSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
datasources="../rdf/ort.rdf.php" ref="http://www.technikum-wien.at/tempus/ort/alle-orte">
<treecols>
<treecol id="raumtyp" label="Raumtyp" flex="2" primary="true" />
<splitter class="tree-splitter"/>
<treecol id="ort_kurzbz" label="Raum" flex="4" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="hierarchie" label="HI" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="ort_bezeichnung" label="Bezeichnung" flex="3" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="max_person" label="MaxP" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#raumtyp"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#ort_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#hierarchie"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#ort_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/ort/rdf#max_person"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<tree id="tree-lektor" onselect="onLektorSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
datasources="mitarbeiter.rdf.php" ref="http://www.technikum-wien.at/tempus/mitarbeiter/alle">
<treecols>
<treecol id="kurzbz" label="Kuerzel" flex="2" primary="true" />
<splitter class="tree-splitter"/>
<treecol id="nachname" label="Nachname" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="vornamen" label="Vornamen" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="titel" label="Titel" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="uid" label="UID" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#nachname"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#vornamen"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#titel"/>
<treecell label="rdf:http://www.technikum-wien.at/tempus/mitarbeiter/rdf#uid"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox id="vbox-main">
<tabbox id="tabbox-main" flex="3" orient="vertical">
<tabs orient="horizontal">
<tab id="tab-week" label="Wochenplan" />
<tab id="tab-semester" label="Semesterplan" />
<tab id="tab-studenten" label="Studenten" />
<tab id="tab-lfvt" label="Lehrveranstaltung" />
</tabs>
<tabpanels id="tabpanels-main" flex="1">
<!-- Wochenplan -->
<hbox id="hboxTimeTableWeek" />
<!-- Semesterplan -->
<vbox id="vboxTimeTableSemester" />
<!-- Studenten -->
<vbox id="studentenEditor" />
<!-- Lehrfachverteilung -->
<vbox id="lfvtEditor" />
</tabpanels>
</tabbox>
</vbox>
</overlay>
+462
View File
@@ -0,0 +1,462 @@
<?php
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>';
include('../vilesci/config.inc.php');
include('../include/globals.inc.php');
include('../include/functions.inc.php');
include('../include/berechtigung.class.php');
include('../include/lehrveranstaltung.class.php');
include('../include/zeitwunsch.class.php');
include('../include/stundenplan.class.php');
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
//echo $_SERVER[REQUEST_URI];
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
$error_msg='';
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg.='Es konnte keine Verbindung zum Server aufgebaut werden!';
// Benutzerdefinierte Variablen laden
$error_msg.=loadVariables($conn,$uid);
if (!isset($ignore_kollision))
$ignore_kollision=(boolean)false;
elseif ($ignore_kollision=='false')
$ignore_kollision=(boolean)false;
else
$ignore_kollision=(boolean)true;
//var_dump($ignore_kollision);
// Bezeichnungen fuer Tabellen und Views
$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table;
// Variablen uebernehmen
if (isset($_GET[aktion]))
$aktion=$_GET[aktion];
if (isset($_GET[semesterplan]))
$semesterplan=$_GET[semesterplan];
else
$semesterplan=false;
if (isset($_GET[new_stunde]))
$new_stunde=$_GET[new_stunde];
if (isset($_GET[new_datum]))
$new_datum=$_GET[new_datum];
if (isset($_GET[old_ort]))
$old_ort=$_GET[old_ort];
if (isset($_GET[new_ort]))
$new_ort=$_GET[new_ort];
if (isset($_GET[ort]))
$ort=$_GET[ort];
if (isset($_GET[datum]))
$datum=$_GET[datum];
if (isset($_GET[type]))
$type=$_GET[type];
if (isset($_GET[stg_kz]))
$stg_kz=$_GET[stg_kz];
if (isset($_GET[sem]))
$sem=$_GET[sem];
if (isset($_GET[ver]))
$ver=$_GET[ver];
if (isset($_GET[grp]))
$grp=$_GET[grp];
if (isset($_GET[pers_uid]))
$pers_uid=$_GET[pers_uid];
if (isset($_GET[einheit]))
$einheit_kurzbz=$_GET[einheit];
if (isset($_GET[semester_aktuell]))
$semester_aktuell=$_GET[semester_aktuell];
if (!isset($semester_aktuell) && $semesterplan)
$error_msg.='Studien-Semester ist nicht gesetzt!';
?>
<!DOCTYPE page SYSTEM "chrome://tempus/locale/tempus.dtd">
<window id="windowTimeTableWeek"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js.php"/>
<?php
if (isset($semesterplan) && $semesterplan)
echo '<script type="application/x-javascript" src="'.APP_ROOT.'content/stpl-semester-overlay.js.php"/>';
else
echo '<script type="application/x-javascript" src="'.APP_ROOT.'content/stpl-week-overlay.js.php"/>';
?>
<vbox id="boxTimeTableWeek" flex="5" style="overflow:auto;">
<?php
// Authentifizierung
/*if ($uid=check_student($REMOTE_USER, $conn))
$user='student';
elseif ($uid=check_lektor($REMOTE_USER, $conn))
$user='lektor';
else
die("Cannot set usertype!");*/
// User bestimmen
if (!isset($type))
$type='lektor';
if (!isset($pers_uid))
$pers_uid=$uid;
// Datums Format
if(!$result=pg_query($conn, "SET datestyle TO ISO;"))
$error_msg=pg_last_error($conn);
// ****************************************************************************
// Variablen fuer Aktionen setzen
if ($aktion=='lva_single_search' || $aktion=='lva_single_set'
|| $aktion=='lva_multi_search' || $aktion=='lva_multi_set'
|| $aktion=='lva_stpl_del_multi' || $aktion=='lva_stpl_del_single')
{
$i=0;
$name_lva_id='lva_id'.$i;
while ($i<100 && isset($_GET[$name_lva_id]))
{
$lva_id[$i]=$_GET[$name_lva_id];
//$error_msg.=$lva_id[$i];
$name_lva_id='lva_id'.++$i;
}
}
if ($aktion=='stpl_move' || $aktion=='stpl_single_search' || $aktion=='stpl_set' || $aktion=='stpl_delete_single')
{
$i=0;
$name_stpl_id='stundenplan_id'.$i;
while ($i<100 && isset($_GET[$name_stpl_id]))
{
$stpl_id[]=$_GET[$name_stpl_id];
//echo $stpl_id[$i];
$name_stpl_id='stundenplan_id'.++$i;
}
// Mehrfachauswahl uebernehmen
$j=0;
$name_stpl_idx='x'.$j.'stundenplan_id0';
while ($j<100 && isset($_GET[$name_stpl_idx]))
{
$i=0;
$name_stpl_id='x'.$j.'stundenplan_id'.$i;
while ($i<100 && isset($_GET[$name_stpl_id]))
{
$stpl_idx[]=$_GET[$name_stpl_id];
$name_stpl_id='x'.$j.'stundenplan_id'.++$i;
}
$name_stpl_idx='x'.++$j.'stundenplan_id0';
}
}
// ****************************************************************************
// Aktionen durchfuehren
$error_msg.=db_query($conn,'BEGIN;');
// *************** Stunden verschieben ****************************************
if ($aktion=='stpl_move' || $aktion=='stpl_set')
{
foreach ($stpl_id as $stundenplan_id)
{
$lehrstunde=new lehrstunde($conn);
$lehrstunde->load($stundenplan_id,$db_stpl_table);
$diffStunde=$new_stunde-$lehrstunde->stunde;
$lehrstunde->datum=$new_datum;
$lehrstunde->stunde=$new_stunde;
if ($ort!=$old_ort)
$lehrstunde->ort_kurzbz=$ort;
if ($aktion=='stpl_set')
$lehrstunde->ort_kurzbz=$new_ort;
$kollision=$lehrstunde->kollision($db_stpl_table);
if ($kollision)
$error_msg.=$lehrstunde->errormsg;
if (!$kollision || $ignore_kollision)
{
$lehrstunde->save($uid,$db_stpl_table);
$error_msg.=$lehrstunde->errormsg;
}
}
// Mehrfachauswahl
if (isset($stpl_idx))
foreach ($stpl_idx as $stundenplan_id)
{
$lehrstunde=new lehrstunde($conn);
$lehrstunde->load($stundenplan_id,$db_stpl_table);
$lehrstunde->datum=$new_datum;
$lehrstunde->stunde+=$diffStunde;
if ($ort!=$old_ort)
$lehrstunde->ort_kurzbz=$ort;
if ($aktion=='stpl_set')
$lehrstunde->ort_kurzbz=$new_ort;
$kollision=$lehrstunde->kollision($db_stpl_table);
if ($kollision)
$error_msg.=$lehrstunde->errormsg;
if (!$kollision || $ignore_kollision)
{
$lehrstunde->save($uid,$db_stpl_table);
$error_msg.=$lehrstunde->errormsg;
}
}
}
// ****************** STPL Delete *******************************
elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block')
{
$lehrstunde=new lehrstunde($conn);
foreach ($stpl_id as $stundenplan_id)
{
$lehrstunde->delete($stundenplan_id,$db_stpl_table);
$error_msg.=$lehrstunde->errormsg;
}
}
// ******************** Lehrveranstaltung setzen ******************************
elseif ($aktion=='lva_single_set')
{
$anz_lvas=count($lva_id);
for ($i=0;$i<$anz_lvas;$i++)
{
$lva[$i]=new lehrveranstaltung($conn,$lva_id[$i]);
//$error_msg.='test'.$lva_id[$i].($lva[$i]->errormsg).($lva[$i]->stundenblockung);
for ($j=0;$j<$lva[$i]->stundenblockung && $error_msg=='';$j++)
if (!$lva[$i]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
$error_msg.=$lva[$i]->errormsg;
}
for ($i=0;$i<$anz_lvas && $error_msg=='';$i++)
{
//$lva[$i]=new lehrveranstaltung($lva_id[$i]);
//$error_msg.='Blockung'.$lva[$i]->stundenblockung.var_dump($lva);
//$error_msg.='Datum:'.$new_datum.' Std:'.($new_stunde+$j).$new_ort.$db_stpl_table.$uid;
for ($j=0;$j<$lva[$i]->stundenblockung;$j++)
if (!$lva[$i]->save_stpl($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table,$uid))
$error_msg.='fehler'.$lva[$i]->errormsg;
//else
// $error_msg.='test'.$anz_lvas;
}
//$error_msg.='test';
}
//******************* Multi Verplanung ***************
elseif ($aktion=='lva_multi_set')
{
// Ferien holen
$ferien=new ferien($conn);
if ($type=='verband')
$ferien->getAll($stg_kz);
else
$ferien->getAll(0);
// Ende holen
$result_semester=@pg_query($conn,"SELECT start,ende FROM tbl_studiensemester WHERE studiensemester_kurzbz='$semester_aktuell';");
if (pg_numrows($result_semester)>0)
$ende=pg_result($result_semester,0,'ende');
else
$error_msg.='Fatal Error: Ende Datum ist nicht gesetzt!';
//echo '<label>'.$ende.'</label>';
$ende=mktime(0,0,1,substr($ende,5,2),substr($ende,8,2),substr($ende,0,4));
$anz_lvas=count($lva_id);
// Arrays intitialisieren
$wochenrythmus=array();
$verplant=array();
$block=array();
$wochenrythmus=array();
$semesterstunden=array();
$offenestunden=array();
// LVAs holen
$sql_query='SELECT * FROM '.$lva_stpl_view.' WHERE';
$lvas='';
foreach ($lva_id as $id)
$lvas.=' OR lehrveranstaltung_id='.$id;
$lvas=substr($lvas,3);
$sql_query.=$lvas;
if(!$result_lva=pg_exec($conn, $sql_query))
$error_msg.=pg_last_error($conn);
$num_rows_lva=pg_numrows($result_lva);
// Daten aufbereiten
for ($i=0;$i<$num_rows_lva;$i++)
{
$row=pg_fetch_object($result_lva,$i);
$verplant[]=$row->verplant;
$block[]=$row->stundenblockung;
$wochenrythmus[]=$row->wochenrythmus;
$semesterstunden[]=$row->semesterstunden;
$offenestunden[]=$row->semesterstunden-$row->verplant;
}
// Variablen eindeutig?
// Offene Stunden
$os=$offenestunden[0];
$offenestunden=array_unique($offenestunden);
if (count($offenestunden)==1)
$offenestunden=$os;
else
$error_msg.='Offene Stunden sind nicht eindeutig!';
//$error_msg.='Offene Stunden='.$offenestunden;
/*// Verplante Stunden
$verplant=array_unique($verplant);
if (count($verplant)==1)
$verplant=$verplant[0];
else
$error_msg.='Verplante Stunden sind nicht eindeutig!';
//Semesterstunden
$semesterstunden=array_unique($semesterstunden);
if (count($semesterstunden)==1)
$semesterstunden=$semesterstunden[0];
else
$error_msg.='Semesterstunden sind nicht eindeutig!';*/
//Blockung
$blk=$block[0];
$block=array_unique($block);
if (count($block)==1)
$block=$blk;
else
$error_msg.='Blockung ist nicht eindeutig!';
//Wochenrythmus
$wr=$wochenrythmus[0];
$wochenrythmus=array_unique($wochenrythmus);
if (count($wochenrythmus)==1)
$wochenrythmus=$wr;
else
$error_msg.='Wochenrythmus ist nicht eindeutig!';
$count=0;
$rest=$offenestunden;
if ($rest<=0)
$error_msg.='Es sind bereits alle Stunden verplant!'.$rest;
if ($error_msg=='')
{
$d=mktime(0,0,1,substr($new_datum,5,2),substr($new_datum,8),substr($new_datum,0,4));
while ($rest>0 && $d<$ende)
{
if ($rest<$block && $rest>0)
$block=$rest;
//LVAs holen und pruefen ob moeglich
for ($i=0;$i<$anz_lvas;$i++)
{
$lva[$i]=new lehrveranstaltung($conn,$lva_id[$i]);
for ($j=0;$j<$block;$j++)
if (!$lva[$i]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
$error_msg.=$lva[$i]->errormsg;
}
// LVAs setzen
for ($i=0;$i<$anz_lvas && $error_msg=='';$i++)
for ($j=0;$j<$block;$j++)
if (!$lva[$i]->save_stpl($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table,$uid))
$error_msg.=$lva[$i]->errormsg;
$d=jump_week($d,$wochenrythmus);
while ($ferien->isferien($d))
$d=jump_week($d,$wochenrythmus);
// Es kann sein, dass die Zeitumstellung (1 Stunde) Probleme macht
// Falls 23 Uhr eine Stunde nach vor
$new_datum=date('Y-m-d',$d);
$rest-=$block;
}
}
}
// Lehrveranstaltungen aus dem Stundenplan loeschen
elseif ($aktion=='lva_stpl_del_multi' || $aktion=='lva_stpl_del_single')
{
$result_semester=@pg_query($conn,"SELECT start,ende FROM tbl_studiensemester WHERE studiensemester_kurzbz='$semester_aktuell';");
if (pg_numrows($result_semester)>0)
{
$start=date('Y-m-d',$datum);
if ($aktion=='lva_stpl_del_multi')
$ende=pg_result($result_semester,0,'ende');
else
$ende=date('Y-m-d',jump_week($datum,1));
$anz_lvas=count($lva_id);
$sql_query_lvaid='';
$sql_query='DELETE FROM '.TABLE_BEGIN.$db_stpl_table.' WHERE (';
for ($i=0;$i<$anz_lvas;$i++)
$sql_query_lvaid.=' OR lehrveranstaltung_id='.$lva_id[$i];
$sql_query_lvaid=substr($sql_query_lvaid,3);
$sql_query.=$sql_query_lvaid;
$sql_query.=") AND datum>='$start' AND datum<'$ende'";
if(!$result_lva_del=pg_query($conn, $sql_query))
$error_msg.=pg_last_error($conn);
}
else
$error_msg.='Studiensemester '.$semester_aktuell.' konnte nicht gefunden werden!';
}
if ($error_msg=='')
$error_msg.=@db_query($conn,'COMMIT;');
else
$error_msg.=@db_query($conn,'ROLLBACK;');
// Stundenplan erstellen
$stdplan=new stundenplan($type,$conn);
if (!isset($datum))
$datum=mktime();
if (!isset($semesterplan) || !$semesterplan)
$begin=$ende=$datum;
else
{
$result_semester=@pg_query($conn,"SELECT start,ende FROM tbl_studiensemester WHERE studiensemester_kurzbz='$semester_aktuell';");
if (pg_numrows($result_semester)>0)
{
$begin=strtotime(pg_result($result_semester,0,'start'));
$ende=strtotime(pg_result($result_semester,0,'ende'));
}
else
$error_msg.='Studiensemester '.$semester_aktuell.' konnte nicht gefunden werden!';
}
// Benutzergruppe
$stdplan->user=$user;
// aktueller Benutzer
$stdplan->user_uid=$uid;
// Zeitwuensche laden falls benoetigt
$zeitwunsch=null;
if ($type=='lektor' || $aktion=='lva_single_search' || $aktion=='lva_multi_search')
{
$wunsch=new zeitwunsch($conn);
if ($type=='lektor')
if ($wunsch->loadPerson($pers_uid))
$zeitwunsch=$wunsch->zeitwunsch;
if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
if ($wunsch->loadLVA($lva_id))
$zeitwunsch=$wunsch->zeitwunsch;
}
// Zusaetzliche Daten laden
if (! $stdplan->load_data($type,$pers_uid,$ort,$stg_kz,$sem,$ver,$grp,$einheit_kurzbz) && $error_msg!='')
$error_msg.=$stdplan->errormsg;
//echo 'load_data'.$error_msg;
// Stundenplan einer Woche laden
if (! $stdplan->load_week($datum,$db_stpl_table))
$error_msg.=$stdplan->errormsg;
while ($begin<=$ende)
{
$stdplan->init_stdplan();
$datum=$begin;
$begin+=604800; // eine Woche
//echo '<label>'.date("Y-m-d - D",$datum).$datum.'</label>';
// Stundenplan einer Woche laden
if (! $stdplan->load_week($datum,$db_stpl_table))
$error_msg.=$stdplan->errormsg;
//echo 'load_week'.$error_msg;
if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
if (! $stdplan->load_lva_search($datum,$lva_id,$db_stpl_table, $aktion))
$error_msg.=$stdplan->errormsg;
else
$error_msg.=$stdplan->errormsg;
//echo 'load_lva_search'.$error_msg;
if ($aktion=='stpl_single_search')
if (! $stdplan->load_stpl_search($datum,$stpl_id,$db_stpl_table))
$error_msg.=$stdplan->errormsg;
//echo 'load_stpl_search'.$error_msg;
// Stundenplan der Woche drucken
$stdplan->draw_week_xul($semesterplan,$uid,$zeitwunsch);
}
//echo $error_msg;.$_SERVER["REQUEST_URI"]
?>
</vbox>
<label id="TimeTableWeekErrors"><?php echo htmlspecialchars($error_msg); ?></label>
<script type="application/x-javascript">
<?php
if ($error_msg!='')
echo "alert('$error_msg');";
?>
top.document.getElementById("statusbarpanel-text").setAttribute("label","<?php echo htmlspecialchars($PHP_SELF.$error_msg); ?>");
</script>
</window>
+101
View File
@@ -0,0 +1,101 @@
<?php
// 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");
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
//echo '<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>';
include('../vilesci/config.inc.php');
include('../include/functions.inc.php');
include('../include/lehrstunde.class.php');
include('../include/stundenplan.class.php');
// Testumgebung
if (!isset($REMOTE_USER))
$REMOTE_USER='pam';
$uid=$REMOTE_USER;
// Variablen uebernehmen
if (isset($_GET[aktion]))
$aktion=$_GET[aktion];
if (isset($_GET[new_stunde]))
$new_stunde=$_GET[new_stunde];
if (isset($_GET[new_datum]))
$new_datum=$_GET[new_datum];
if (isset($_GET[type]))
$type=$_GET[type];
if (isset($_GET[ort_kurzbz]))
$ort_kurzbz=$_GET[ort_kurzbz];
else
$ort_kurzbz='EDV6.08';
$i=0;
$name_stpl_id='stundenplan_id'.$i;
while ($i<100 && isset($_GET[$name_stpl_id]))
{
$stpl_id[]=$_GET[$name_stpl_id];
//echo $stpl_id[$i];
$name_stpl_id='stundenplan_id'.++$i;
}
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$error_msg.=loadVariables($conn,$REMOTE_USER);
// Authentifizierung
if ($uid=check_student($REMOTE_USER, $conn))
$user='student';
elseif ($uid=check_lektor($REMOTE_USER, $conn))
$user='lektor';
else
die("Cannot set usertype!");
// User bestimmen
if (!isset($type))
$type=$user;
if (!isset($pers_uid))
$pers_uid=$uid;
// Datums Format
$erg_std=pg_query($conn, "SET datestyle TO ISO;")
or die(pg_last_error($conn));
// Aktionen durchfuehren
if ($aktion=='stplverschieben')
{
foreach ($stpl_id as $stundenplan_id)
{
$lehrstunde=new lehrstunde($conn);
$lehrstunde->load($stundenplan_id,$db_stpl_table);
$lehrstunde->datum=$new_datum;
$lehrstunde->stunde=$new_stunde;
$lehrstunde->save($db_stpl_table);
}
}
// Stundenplan abfragen
$stdplan=new stundenplan($type,$conn);
if (!isset($datum))
$datum=mktime();
// Benutzergruppe
$stdplan->user=$user;
// aktueller Benutzer
$stdplan->user_uid=$uid;
// Zusaetzliche Daten laden
if (! $stdplan->load_data($type,$pers_uid,$ort_kurzbz,$stg_kz,$sem,$ver,$grp,$einheit_kurzbz,$db_table) )
die($stdplan->errormsg);
// Stundenplan einer Woche laden
if (! $stdplan->load_week($datum,$db_stpl_table))
die($stdplan->errormsg);
// Kopfbereich drucken
// Stundenplan der Woche in RDF drucken
$stdplan->draw_week_rdf();
?>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

+123
View File
@@ -0,0 +1,123 @@
<?php
/**
* author: maximilian schremser <max@technikum-wien.at>
* date:
* title: Authorization.class.php
* manual: $auth = new Authorization($uid, $course_id, $semester, $lesson);
*
* Tries to login a user as a student, if fails, it tries
* to login as a teacher.
* returns 0 for student
* 1 for teacher
* -1 on error
* holt den firstname, lastname, uid und id des Benutzers
*/
class Authorization
{
var $firstname;
var $lastname;
var $id;
var $uid;
var $stg_id;
var $semester;
var $verband;
var $gruppe;
var $isLector;
var $module;
var $lehrfach;
var $date;
var $session;
var $birthday;
function Authorization($uid ="", $course_id = 0, $semester = 0, $lesson = "",$conn="")
{
$this->isLector = -1;
$this->module = 0;
if ($uid == "oesi" || $uid == "kates")
{
$this->uid = $uid;
$this->stg_id = $course_id;
$this->lehrfach = $lesson;
$this->semester = $semester;
$this->isLector = 1;
return $this->isLector;
}
// try to looon as a student
$sql = "SELECT * ".
"FROM tbl_student JOIN tbl_person USING (uid) WHERE
uid = '$uid' AND studiengang_kz = $course_id
AND semester >= $semester";
$rs = new pgRS($conn,$sql);
if ($rs->num > 0)
{
$this->firstname = $rs->arr[0]["vornamen"];
$this->lastname = $rs->arr[0]["nachname"];
//$this->id = $rs->arr[0]["id"];
$this->uid = $uid;
$this->stg_id = $rs->arr[0]["studiengang_kz"];
$this->semester = $rs->arr[0]["semester"];
$this->verband = $rs->arr[0]["verband"];
$this->gruppe = $rs->arr[0]["gruppe"];
$this->birthday = $rs->arr[0]["gebdatum"];
$this->isLector = 0;
}
else
{
/* oesi 17-01-2005
$sql = "SELECT * FROM lehre.tbl_lehrfachzuteilung JOIN tbl_person ON
(lektor_uid = uid) WHERE lektor_uid = '$uid' AND
lehrfachzuteilung_kurzbz = '$lesson' AND
semester = $semester AND studiengang_kz = $course_id LIMIT 1";
*/
$sql = "SELECT * FROM tbl_lehrveranstaltung, tbl_lehrfach, tbl_person WHERE
tbl_lehrveranstaltung.lehrfach_nr=tbl_lehrfach.lehrfach_nr AND
tbl_person.uid=lektor AND lektor='$uid' AND
tbl_lehrfach.studiengang_kz=$course_id AND
tbl_lehrfach.semester=$semester AND lehrevz='$lesson' LIMIT 1";
$rs = new pgRS($conn,$sql);
if ($rs->num > 0)
{
$this->firstname = $rs->arr[0]["vornamen"];
$this->lastname = $rs->arr[0]["nachname"];
$this->birthday = $rs->arr[0]["gebdatum"];
$this->uid = $uid;
$this->stg_id = $course_id;
$this->lehrfach = $lesson;
$this->semester = $semester;
$this->isLector = 1;
}
else
{
//$sql = "SELECT DISTINCT tbl_person.uid FROM public.tbl_person, lehre.tbl_lehrfachzuteilung WHERE tbl_person.uid='$uid' AND tbl_lehrfachzuteilung.lektor_uid=tbl_person.uid AND studiengang_kz='$course_id' UNION SELECT DISTINCT tbl_person.uid FROM public.tbl_person, public.tbl_personfunktion WHERE tbl_person.uid='$uid' AND tbl_personfunktion.uid=tbl_person.uid AND studiengang_kz='$course_id' LIMIT 1";
$sql = "SELECT vornamen, nachname, gebdatum FROM public.tbl_person, tbl_lehrveranstaltung
WHERE tbl_person.uid='$uid' AND tbl_lehrveranstaltung.lektor=tbl_person.uid AND
studiengang_kz='$course_id'
UNION
SELECT vornamen, nachname, gebdatum FROM public.tbl_person, public.tbl_personfunktion
WHERE tbl_person.uid='$uid' AND tbl_personfunktion.uid=tbl_person.uid AND
studiengang_kz='$course_id' LIMIT 1";
$rs = new pgRS($conn,$sql);
if ($rs->num > 0)
{
$this->firstname = $rs->arr[0]["vornamen"];
$this->lastname = $rs->arr[0]["nachname"];
$this->birthday = $rs->arr[0]["gebdatum"];
$this->uid = $uid;
$this->stg_id = $course_id;
$this->lehrfach = $lesson;
$this->semester = $semester;
$this->isLector = 1;
}
}
}
return $this->isLector;
}
}
?>
+237
View File
@@ -0,0 +1,237 @@
<?php
/*
* Module written/ported by Xavier Noguer <xnoguer@php.net>
*
* The majority of this is _NOT_ my code. I simply ported it from the
* PERL Spreadsheet::WriteExcel module.
*
* The author of the Spreadsheet::WriteExcel module is John McNamara
* <jmcnamara@cpan.org>
*
* I _DO_ maintain this code, and John McNamara has nothing to do with the
* porting of this code to PHP. Any questions directly related to this
* class library should be directed to me.
*
* License Information:
*
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@php.net
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* Class for writing Excel BIFF records.
*
* From "MICROSOFT EXCEL BINARY FILE FORMAT" by Mark O'Brien (Microsoft Corporation):
*
* BIFF (BInary File Format) is the file format in which Excel documents are
* saved on disk. A BIFF file is a complete description of an Excel document.
* BIFF files consist of sequences of variable-length records. There are many
* different types of BIFF records. For example, one record type describes a
* formula entered into a cell; one describes the size and location of a
* window into a document; another describes a picture format.
*
* @author Xavier Noguer <xnoguer@php.net>
* @category FileFormats
* @package Spreadsheet_Excel_Writer
*/
class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
{
/**
* The BIFF/Excel version (5).
* @var integer
*/
var $_BIFF_version = 0x0500;
/**
* The byte order of this architecture. 0 => little endian, 1 => big endian
* @var integer
*/
var $_byte_order;
/**
* The string containing the data of the BIFF stream
* @var string
*/
var $_data;
/**
* The size of the data in bytes. Should be the same as strlen($this->_data)
* @var integer
*/
var $_datasize;
/**
* The maximun length for a BIFF record. See _addContinue()
* @var integer
* @see _addContinue()
*/
var $_limit;
/**
* Constructor
*
* @access public
*/
function Spreadsheet_Excel_Writer_BIFFwriter()
{
$this->_byte_order = '';
$this->_data = '';
$this->_datasize = 0;
$this->_limit = 2080;
// Set the byte order
$this->_setByteOrder();
}
/**
* Determine the byte order and store it as class data to avoid
* recalculating it for each call to new().
*
* @access private
*/
function _setByteOrder()
{
// Check if "pack" gives the required IEEE 64bit float
$teststr = pack("d", 1.2345);
$number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F);
if ($number == $teststr) {
$byte_order = 0; // Little Endian
} elseif ($number == strrev($teststr)){
$byte_order = 1; // Big Endian
} else {
// Give up. I'll fix this in a later version.
return $this->raiseError("Required floating point format ".
"not supported on this platform.");
}
$this->_byte_order = $byte_order;
}
/**
* General storage function
*
* @param string $data binary data to prepend
* @access private
*/
function _prepend($data)
{
if (strlen($data) > $this->_limit) {
$data = $this->_addContinue($data);
}
$this->_data = $data.$this->_data;
$this->_datasize += strlen($data);
}
/**
* General storage function
*
* @param string $data binary data to append
* @access private
*/
function _append($data)
{
if (strlen($data) > $this->_limit) {
$data = $this->_addContinue($data);
}
$this->_data = $this->_data.$data;
$this->_datasize += strlen($data);
}
/**
* Writes Excel BOF record to indicate the beginning of a stream or
* sub-stream in the BIFF file.
*
* @param integer $type Type of BIFF file to write: 0x0005 Workbook,
* 0x0010 Worksheet.
* @access private
*/
function _storeBof($type)
{
$record = 0x0809; // Record identifier
// According to the SDK $build and $year should be set to zero.
// However, this throws a warning in Excel 5. So, use magic numbers.
if ($this->_BIFF_version == 0x0500) {
$length = 0x0008;
$unknown = '';
$build = 0x096C;
$year = 0x07C9;
} elseif ($this->_BIFF_version == 0x0600) {
$length = 0x0010;
$unknown = pack("VV", 0x00000041, 0x00000006); //unknown last 8 bytes for BIFF8
$build = 0x0DBB;
$year = 0x07CC;
}
$version = $this->_BIFF_version;
$header = pack("vv", $record, $length);
$data = pack("vvvv", $version, $type, $build, $year);
$this->_prepend($header . $data . $unknown);
}
/**
* Writes Excel EOF record to indicate the end of a BIFF stream.
*
* @access private
*/
function _storeEof()
{
$record = 0x000A; // Record identifier
$length = 0x0000; // Number of bytes to follow
$header = pack("vv", $record, $length);
$this->_append($header);
}
/**
* Excel limits the size of BIFF records. In Excel 5 the limit is 2084 bytes. In
* Excel 97 the limit is 8228 bytes. Records that are longer than these limits
* must be split up into CONTINUE blocks.
*
* This function takes a long BIFF record and inserts CONTINUE records as
* necessary.
*
* @param string $data The original binary data to be written
* @return string A very convenient string of continue blocks
* @access private
*/
function _addContinue($data)
{
$limit = $this->_limit;
$record = 0x003C; // Record identifier
// The first 2080/8224 bytes remain intact. However, we have to change
// the length field of the record.
$tmp = substr($data, 0, 2).pack("v", $limit-4).substr($data, 4, $limit - 4);
$header = pack("vv", $record, $limit); // Headers for continue records
// Retrieve chunks of 2080/8224 bytes +4 for the header.
$data_length = strlen($data);
for ($i = $limit; $i < ($data_length - $limit); $i += $limit) {
$tmp .= $header;
$tmp .= substr($data, $i, $limit);
}
// Retrieve the last chunk of data
$header = pack("vv", $record, strlen($data) - $i);
$tmp .= $header;
$tmp .= substr($data, $i, strlen($data) - $i);
return $tmp;
}
}
?>
+113
View File
@@ -0,0 +1,113 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: File.php,v 1.8 2003/12/12 21:10:10 xnoguer Exp $
/**
* Class for creating File PPS's for OLE containers
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE_PPS_File extends OLE_PPS
{
/**
* The temporary dir for storing the OLE file
* @var string
*/
var $_tmp_dir;
/**
* The constructor
*
* @access public
* @param string $name The name of the file (in Unicode)
* @see OLE::Asc2Ucs()
*/
function OLE_PPS_File($name)
{
$this->_tmp_dir = '';
$this->OLE_PPS(
null,
$name,
OLE_PPS_TYPE_FILE,
null,
null,
null,
null,
null,
'',
array());
}
/**
* Sets the temp dir used for storing the OLE file
*
* @access public
* @param string $dir The dir to be used as temp dir
* @return true if given dir is valid, false otherwise
*/
function setTempDir($dir)
{
if (is_dir($dir)) {
$this->_tmp_dir = $dir;
return true;
}
return false;
}
/**
* Initialization method. Has to be called right after OLE_PPS_File().
*
* @access public
* @return mixed true on success. PEAR_Error on failure
*/
function init()
{
$this->_tmp_filename = tempnam($this->_tmp_dir, "OLE_PPS_File");
$fh = @fopen($this->_tmp_filename, "w+b");
if ($fh == false) {
return $this->raiseError("Can't create temporary file");
}
$this->_PPS_FILE = $fh;
if ($this->_PPS_FILE) {
fseek($this->_PPS_FILE, 0);
}
}
/**
* Append data to PPS
*
* @access public
* @param string $data The data to append
*/
function append($data)
{
if ($this->_PPS_FILE) {
fwrite($this->_PPS_FILE, $data);
}
else {
$this->_data .= $data;
}
}
}
?>
File diff suppressed because it is too large Load Diff
+408
View File
@@ -0,0 +1,408 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: OLE.php,v 1.7 2003/08/21 15:15:40 xnoguer Exp $
/**
* Constants for OLE package
*/
define('OLE_PPS_TYPE_ROOT', 5);
define('OLE_PPS_TYPE_DIR', 1);
define('OLE_PPS_TYPE_FILE', 2);
define('OLE_DATA_SIZE_SMALL', 0x1000);
define('OLE_LONG_INT_SIZE', 4);
define('OLE_PPS_SIZE', 0x80);
/**
* OLE package base class.
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE extends PEAR
{
/**
* The file handle for reading an OLE container
* @var resource
*/
var $_file_handle;
/**
* Array of PPS's found on the OLE container
* @var array
*/
var $_list;
/**
* Creates a new OLE object
* Remember to use ampersand when creating an OLE object ($my_ole =& new OLE();)
* @access public
*/
function OLE()
{
$this->_list = array();
}
/**
* Reads an OLE container from the contents of the file given.
*
* @acces public
* @param string $file
* @return mixed true on success, PEAR_Error on failure
*/
function read($file)
{
/* consider storing offsets as constants */
$big_block_size_offset = 30;
$iBdbCnt_offset = 44;
$bd_start_offset = 68;
$fh = @fopen($file, "r");
if ($fh == false) {
return $this->raiseError("Can't open file $file");
}
$this->_file_handle = $fh;
/* begin reading OLE attributes */
fseek($fh, 0);
$signature = fread($fh, 8);
if ("\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1" != $signature) {
return $this->raiseError("File doesn't seem to be an OLE container.");
}
fseek($fh, $big_block_size_offset);
$packed_array = unpack("v", fread($fh, 2));
$big_block_size = pow(2, $packed_array['']);
$packed_array = unpack("v", fread($fh, 2));
$small_block_size = pow(2, $packed_array['']);
$i1stBdL = ($big_block_size - 0x4C) / OLE_LONG_INT_SIZE;
fseek($fh, $iBdbCnt_offset);
$packed_array = unpack("V", fread($fh, 4));
$iBdbCnt = $packed_array[''];
$packed_array = unpack("V", fread($fh, 4));
$pps_wk_start = $packed_array[''];
fseek($fh, $bd_start_offset);
$packed_array = unpack("V", fread($fh, 4));
$bd_start = $packed_array[''];
$packed_array = unpack("V", fread($fh, 4));
$bd_count = $packed_array[''];
$packed_array = unpack("V", fread($fh, 4));
$iAll = $packed_array['']; // this may be wrong
/* create OLE_PPS objects from */
$ret = $this->_readPpsWks($pps_wk_start, $big_block_size);
if (PEAR::isError($ret)) {
return $ret;
}
return true;
}
/**
* Destructor (using PEAR)
* Just closes the file handle on the OLE file.
*
* @access private
*/
function _OLE()
{
fclose($this->_file_handle);
}
/**
* Gets information about all PPS's on the OLE container from the PPS WK's
* creates an OLE_PPS object for each one.
*
* @access private
* @param integer $pps_wk_start Position inside the OLE file where PPS WK's start
* @param integer $big_block_size Size of big blobks in the OLE file
* @return mixed true on success, PEAR_Error on failure
*/
function _readPpsWks($pps_wk_start, $big_block_size)
{
$pointer = ($pps_wk_start + 1) * $big_block_size;
while (1)
{
fseek($this->_file_handle, $pointer);
$pps_wk = fread($this->_file_handle, OLE_PPS_SIZE);
if (strlen($pps_wk) != OLE_PPS_SIZE) {
break; // Excel likes to add a trailing byte sometimes
//return $this->raiseError("PPS at $pointer seems too short: ".strlen($pps_wk));
}
$name_length = unpack("c", substr($pps_wk, 64, 2)); // FIXME (2 bytes??)
$name_length = $name_length[''] - 2;
$name = substr($pps_wk, 0, $name_length);
$type = unpack("c", substr($pps_wk, 66, 1));
if (($type[''] != OLE_PPS_TYPE_ROOT) and
($type[''] != OLE_PPS_TYPE_DIR) and
($type[''] != OLE_PPS_TYPE_FILE))
{
return $this->raiseError("PPS at $pointer has unknown type: {$type['']}");
}
$prev = unpack("V", substr($pps_wk, 68, 4));
$next = unpack("V", substr($pps_wk, 72, 4));
$dir = unpack("V", substr($pps_wk, 76, 4));
// there is no magic number, it can take different values.
//$magic = unpack("V", strrev(substr($pps_wk, 92, 4)));
$time_1st = substr($pps_wk, 100, 8);
$time_2nd = substr($pps_wk, 108, 8);
$start_block = unpack("V", substr($pps_wk, 116, 4));
$size = unpack("V", substr($pps_wk, 120, 4));
// _data member will point to position in file!!
// OLE_PPS object is created with an empty children array!!
$this->_list[] = new OLE_PPS(null, '', $type[''], $prev[''], $next[''],
$dir[''], OLE::OLE2LocalDate($time_1st),
OLE::OLE2LocalDate($time_2nd),
($start_block[''] + 1) * $big_block_size, array());
// give it a size
$this->_list[count($this->_list) - 1]->Size = $size[''];
// check if the PPS tree (starting from root) is complete
if ($this->_ppsTreeComplete(0)) {
break;
}
$pointer += OLE_PPS_SIZE;
}
}
/**
* It checks whether the PPS tree is complete (all PPS's read)
* starting with the given PPS (not necessarily root)
*
* @access private
* @param integer $index The index of the PPS from which we are checking
* @return boolean Whether the PPS tree for the given PPS is complete
*/
function _ppsTreeComplete($index)
{
if ($this->_list[$index]->NextPps != -1) {
if (!isset($this->_list[$this->_list[$index]->NextPps])) {
return false;
}
else {
return $this->_ppsTreeComplete($this->_list[$index]->NextPps);
}
}
if ($this->_list[$index]->DirPps != -1) {
if (!isset($this->_list[$this->_list[$index]->DirPps])) {
return false;
}
else {
return $this->_ppsTreeComplete($this->_list[$index]->DirPps);
}
}
return true;
}
/**
* Checks whether a PPS is a File PPS or not.
* If there is no PPS for the index given, it will return false.
*
* @access public
* @param integer $index The index for the PPS
* @return bool true if it's a File PPS, false otherwise
*/
function isFile($index)
{
if (isset($this->_list[$index])) {
return ($this->_list[$index]->Type == OLE_PPS_TYPE_FILE);
}
return false;
}
/**
* Checks whether a PPS is a Root PPS or not.
* If there is no PPS for the index given, it will return false.
*
* @access public
* @param integer $index The index for the PPS.
* @return bool true if it's a Root PPS, false otherwise
*/
function isRoot($index)
{
if (isset($this->_list[$index])) {
return ($this->_list[$index]->Type == OLE_PPS_TYPE_ROOT);
}
return false;
}
/**
* Gives the total number of PPS's found in the OLE container.
*
* @access public
* @return integer The total number of PPS's found in the OLE container
*/
function ppsTotal()
{
return count($this->_list);
}
/**
* Gets data from a PPS
* If there is no PPS for the index given, it will return an empty string.
*
* @access public
* @param integer $index The index for the PPS
* @param integer $position The position from which to start reading
* (relative to the PPS)
* @param integer $length The amount of bytes to read (at most)
* @return string The binary string containing the data requested
*/
function getData($index, $position, $length)
{
// if position is not valid return empty string
if (!isset($this->_list[$index]) or ($position >= $this->_list[$index]->Size) or ($position < 0)) {
return '';
}
// Beware!!! _data member is actually a position
fseek($this->_file_handle, $this->_list[$index]->_data + $position);
return fread($this->_file_handle, $length);
}
/**
* Gets the data length from a PPS
* If there is no PPS for the index given, it will return 0.
*
* @access public
* @param integer $index The index for the PPS
* @return integer The amount of bytes in data the PPS has
*/
function getDataLength($index)
{
if (isset($this->_list[$index])) {
return $this->_list[$index]->Size;
}
return 0;
}
/**
* Utility function to transform ASCII text to Unicode
*
* @access public
* @static
* @param string $ascii The ASCII string to transform
* @return string The string in Unicode
*/
function Asc2Ucs($ascii)
{
$rawname = '';
for ($i = 0; $i < strlen($ascii); $i++) {
$rawname .= $ascii{$i}."\x00";
}
return $rawname;
}
/**
* Utility function
* Returns a string for the OLE container with the date given
*
* @access public
* @static
* @param integer $date A timestamp
* @return string The string for the OLE container
*/
function LocalDate2OLE($date = null)
{
if (!isset($date)) {
return "\x00\x00\x00\x00\x00\x00\x00\x00";
}
// factor used for separating numbers into 4 bytes parts
$factor = pow(2,32);
// days from 1-1-1601 until the beggining of UNIX era
$days = 134774;
// calculate seconds
$big_date = $days*24*3600 + gmmktime(date("H",$date),date("i",$date),date("s",$date),
date("m",$date),date("d",$date),date("Y",$date));
// multiply just to make MS happy
$big_date *= 10000000;
$high_part = floor($big_date/$factor);
// lower 4 bytes
$low_part = floor((($big_date/$factor) - $high_part)*$factor);
// Make HEX string
$res = '';
for ($i=0; $i<4; $i++)
{
$hex = $low_part % 0x100;
$res .= pack('c', $hex);
$low_part /= 0x100;
}
for ($i=0; $i<4; $i++)
{
$hex = $high_part % 0x100;
$res .= pack('c', $hex);
$high_part /= 0x100;
}
return $res;
}
/**
* Returns a timestamp from an OLE container's date
*
* @access public
* @static
* @param integer $string A binary string with the encoded date
* @return string The timestamp corresponding to the string
*/
function OLE2LocalDate($string)
{
if (strlen($string) != 8) {
return new PEAR_Error("Expecting 8 byte string");
}
// factor used for separating numbers into 4 bytes parts
$factor = pow(2,32);
$high_part = 0;
for ($i=0; $i<4; $i++)
{
$al = unpack('C', $string{(7 - $i)});
$high_part += $al[''];
if ($i < 3) {
$high_part *= 0x100;
}
}
$low_part = 0;
for ($i=4; $i<8; $i++)
{
$al = unpack('C', $string{(7 - $i)});
$low_part += $al[''];
if ($i < 7) {
$low_part *= 0x100;
}
}
$big_date = ($high_part*$factor) + $low_part;
// translate to seconds
$big_date /= 10000000;
// days from 1-1-1601 until the beggining of UNIX era
$days = 134774;
// translate to seconds from beggining of UNIX era
$big_date -= $days*24*3600;
return floor($big_date);
}
}
?>
File diff suppressed because it is too large Load Diff
+217
View File
@@ -0,0 +1,217 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: PPS.php,v 1.5 2003/12/14 18:12:28 xnoguer Exp $
/**
* Class for creating PPS's for OLE containers
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE_PPS extends PEAR
{
/**
* The PPS index
* @var integer
*/
var $No;
/**
* The PPS name (in Unicode)
* @var string
*/
var $Name;
/**
* The PPS type. Dir, Root or File
* @var integer
*/
var $Type;
/**
* The index of the previous PPS
* @var integer
*/
var $PrevPps;
/**
* The index of the next PPS
* @var integer
*/
var $NextPps;
/**
* The index of it's first child if this is a Dir or Root PPS
* @var integer
*/
var $DirPps;
/**
* A timestamp
* @var integer
*/
var $Time1st;
/**
* A timestamp
* @var integer
*/
var $Time2nd;
/**
* Starting block (small or big) for this PPS's data inside the container
* @var integer
*/
var $_StartBlock;
/**
* The size of the PPS's data (in bytes)
* @var integer
*/
var $Size;
/**
* The PPS's data (only used if it's not using a temporary file)
* @var string
*/
var $_data;
/**
* Array of child PPS's (only used by Root and Dir PPS's)
* @var array
*/
var $children = array();
/**
* The constructor
*
* @access public
* @param integer $No The PPS index
* @param string $name The PPS name (in Unicode)
* @param integer $type The PPS type. Dir, Root or File
* @param integer $prev The index of the previous PPS
* @param integer $next The index of the next PPS
* @param integer $dir The index of it's first child if this is a Dir or Root PPS
* @param integer $time_1st A timestamp
* @param integer $time_2nd A timestamp
* @param array $children Array containing children PPS for this PPS
*/
function OLE_PPS($No, $name, $type, $prev, $next, $dir, $time_1st, $time_2nd, $data, $children)
{
$this->No = $No;
$this->Name = $name;
$this->Type = $type;
$this->PrevPps = $prev;
$this->NextPps = $next;
$this->DirPps = $dir;
$this->Time1st = $time_1st;
$this->Time2nd = $time_2nd;
$this->_data = $data;
$this->children = $children;
if ($data != '') {
$this->Size = strlen($data);
}
else {
$this->Size = 0;
}
}
/**
* Returns the amount of data saved for this PPS
*
* @access private
* @return integer The amount of data (in bytes)
*/
function _DataLen()
{
if (!isset($this->_data)) {
return 0;
}
if (isset($this->_PPS_FILE))
{
fseek($this->_PPS_FILE, 0);
$stats = fstat($this->_PPS_FILE);
return $stats[7];
}
else {
return strlen($this->_data);
}
}
/**
* Returns a string with the PPS's WK (What is a WK?)
*
* @access private
* @return string The binary string
*/
function _getPpsWk()
{
$ret = $this->Name;
for ($i = 0; $i < (64 - strlen($this->Name)); $i++) {
$ret .= "\x00";
}
$ret .= pack("v", strlen($this->Name) + 2) // 66
. pack("c", $this->Type) // 67
. pack("c", 0x00) //UK // 68
. pack("V", $this->PrevPps) //Prev // 72
. pack("V", $this->NextPps) //Next // 76
. pack("V", $this->DirPps) //Dir // 80
. "\x00\x09\x02\x00" // 84
. "\x00\x00\x00\x00" // 88
. "\xc0\x00\x00\x00" // 92
. "\x00\x00\x00\x46" // 96 // Seems to be ok only for Root
. "\x00\x00\x00\x00" // 100
. OLE::LocalDate2OLE($this->Time1st) // 108
. OLE::LocalDate2OLE($this->Time2nd) // 116
. pack("V", isset($this->_StartBlock)?
$this->_StartBlock:0) // 120
. pack("V", $this->Size) // 124
. pack("V", 0); // 128
return $ret;
}
/**
* Updates index and pointers to previous, next and children PPS's for this
* PPS. I don't think it'll work with Dir PPS's.
*
* @access private
* @param array &$pps_array Reference to the array of PPS's for the whole OLE
* container
* @return integer The index for this PPS
*/
function _savePpsSetPnt(&$pps_array)
{
$pps_array[count($pps_array)] = &$this;
$this->No = count($pps_array) - 1;
$this->PrevPps = 0xFFFFFFFF;
$this->NextPps = 0xFFFFFFFF;
if (count($this->children) > 0) {
$this->DirPps = $this->children[0]->_savePpsSetPnt($pps_array);
}
else {
$this->DirPps = 0xFFFFFFFF;
}
return $this->No;
}
}
?>
File diff suppressed because it is too large Load Diff
+518
View File
@@ -0,0 +1,518 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: Root.php,v 1.7 2003/12/12 21:10:10 xnoguer Exp $
/**
* Class for creating Root PPS's for OLE containers
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE_PPS_Root extends OLE_PPS
{
/**
* The temporary dir for storing the OLE file
* @var string
*/
var $_tmp_dir;
/**
* Constructor
*
* @access public
* @param integer $time_1st A timestamp
* @param integer $time_2nd A timestamp
*/
function OLE_PPS_Root($time_1st, $time_2nd, $raChild)
{
$this->_tmp_dir = '';
$this->OLE_PPS(
null,
OLE::Asc2Ucs('Root Entry'),
OLE_PPS_TYPE_ROOT,
null,
null,
null,
$time_1st,
$time_2nd,
null,
$raChild);
}
/**
* Sets the temp dir used for storing the OLE file
*
* @access public
* @param string $dir The dir to be used as temp dir
* @return true if given dir is valid, false otherwise
*/
function setTempDir($dir)
{
if (is_dir($dir)) {
$this->_tmp_dir = $dir;
return true;
}
return false;
}
/**
* Method for saving the whole OLE container (including files).
* In fact, if called with an empty argument (or '-'), it saves to a
* temporary file and then outputs it's contents to stdout.
*
* @param string $filename The name of the file where to save the OLE container
* @access public
* @return mixed true on success, PEAR_Error on failure
*/
function save($filename)
{
// Initial Setting for saving
$this->_BIG_BLOCK_SIZE = pow(2,
((isset($this->_BIG_BLOCK_SIZE))? $this->_adjust2($this->_BIG_BLOCK_SIZE) : 9));
$this->_SMALL_BLOCK_SIZE= pow(2,
((isset($this->_SMALL_BLOCK_SIZE))? $this->_adjust2($this->_SMALL_BLOCK_SIZE): 6));
// Open temp file if we are sending output to stdout
if (($filename == '-') or ($filename == ''))
{
$this->_tmp_filename = tempnam($this->_tmp_dir, "OLE_PPS_Root");
$this->_FILEH_ = @fopen($this->_tmp_filename,"w+b");
if ($this->_FILEH_ == false) {
return $this->raiseError("Can't create temporary file.");
}
}
else
{
$this->_FILEH_ = @fopen($filename, "wb");
if ($this->_FILEH_ == false) {
return $this->raiseError("Can't open $filename. It may be in use or protected.");
}
}
// Make an array of PPS's (for Save)
$aList = array();
$this->_savePpsSetPnt($aList);
// calculate values for header
list($iSBDcnt, $iBBcnt, $iPPScnt) = $this->_calcSize($aList); //, $rhInfo);
// Save Header
$this->_saveHeader($iSBDcnt, $iBBcnt, $iPPScnt);
// Make Small Data string (write SBD)
$this->_data = $this->_makeSmallData($aList);
// Write BB
$this->_saveBigData($iSBDcnt, $aList);
// Write PPS
$this->_savePps($aList);
// Write Big Block Depot and BDList and Adding Header informations
$this->_saveBbd($iSBDcnt, $iBBcnt, $iPPScnt);
// Close File, send it to stdout if necessary
if(($filename == '-') or ($filename == ''))
{
fseek($this->_FILEH_, 0);
fpassthru($this->_FILEH_);
@fclose($this->_FILEH_);
// Delete the temporary file.
@unlink($this->_tmp_filename);
}
else {
@fclose($this->_FILEH_);
}
return true;
}
/**
* Calculate some numbers
*
* @access private
* @param array $raList Reference to an array of PPS's
* @return array The array of numbers
*/
function _calcSize(&$raList)
{
// Calculate Basic Setting
list($iSBDcnt, $iBBcnt, $iPPScnt) = array(0,0,0);
$iSmallLen = 0;
$iSBcnt = 0;
for ($i = 0; $i < count($raList); $i++) {
if($raList[$i]->Type == OLE_PPS_TYPE_FILE) {
$raList[$i]->Size = $raList[$i]->_DataLen();
if($raList[$i]->Size < OLE_DATA_SIZE_SMALL) {
$iSBcnt += floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE)
+ (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0);
}
else {
$iBBcnt += (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) +
(($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0));
}
}
}
$iSmallLen = $iSBcnt * $this->_SMALL_BLOCK_SIZE;
$iSlCnt = floor($this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE);
$iSBDcnt = floor($iSBcnt / $iSlCnt) + (($iSBcnt % $iSlCnt)? 1:0);
$iBBcnt += (floor($iSmallLen / $this->_BIG_BLOCK_SIZE) +
(( $iSmallLen % $this->_BIG_BLOCK_SIZE)? 1: 0));
$iCnt = count($raList);
$iBdCnt = $this->_BIG_BLOCK_SIZE / OLE_PPS_SIZE;
$iPPScnt = (floor($iCnt/$iBdCnt) + (($iCnt % $iBdCnt)? 1: 0));
return array($iSBDcnt, $iBBcnt, $iPPScnt);
}
/**
* Helper function for caculating a magic value for block sizes
*
* @access private
* @param integer $i2 The argument
* @see save()
* @return integer
*/
function _adjust2($i2)
{
$iWk = log($i2)/log(2);
return ($iWk > floor($iWk))? floor($iWk)+1:$iWk;
}
/**
* Save OLE header
*
* @access private
* @param integer $iSBDcnt
* @param integer $iBBcnt
* @param integer $iPPScnt
*/
function _saveHeader($iSBDcnt, $iBBcnt, $iPPScnt)
{
$FILE = $this->_FILEH_;
// Calculate Basic Setting
$iBlCnt = $this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE;
$i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / OLE_LONG_INT_SIZE;
$iBdExL = 0;
$iAll = $iBBcnt + $iPPScnt + $iSBDcnt;
$iAllW = $iAll;
$iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0);
$iBdCnt = floor(($iAll + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0);
// Calculate BD count
if ($iBdCnt >$i1stBdL)
{
while (1)
{
$iBdExL++;
$iAllW++;
$iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0);
$iBdCnt = floor(($iAllW + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0);
if ($iBdCnt <= ($iBdExL*$iBlCnt+ $i1stBdL)) {
break;
}
}
}
// Save Header
fwrite($FILE,
"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1"
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. pack("v", 0x3b)
. pack("v", 0x03)
. pack("v", -2)
. pack("v", 9)
. pack("v", 6)
. pack("v", 0)
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. pack("V", $iBdCnt)
. pack("V", $iBBcnt+$iSBDcnt) //ROOT START
. pack("V", 0)
. pack("V", 0x1000)
. pack("V", 0) //Small Block Depot
. pack("V", 1)
);
// Extra BDList Start, Count
if ($iBdCnt < $i1stBdL)
{
fwrite($FILE,
pack("V", -2). // Extra BDList Start
pack("V", 0) // Extra BDList Count
);
}
else
{
fwrite($FILE, pack("V", $iAll+$iBdCnt) . pack("V", $iBdExL));
}
// BDList
for ($i=0; $i<$i1stBdL and $i < $iBdCnt; $i++) {
fwrite($FILE, pack("V", $iAll+$i));
}
if ($i < $i1stBdL)
{
for ($j = 0; $j < ($i1stBdL-$i); $j++) {
fwrite($FILE, (pack("V", -1)));
}
}
}
/**
* Saving big data (PPS's with data bigger than OLE_DATA_SIZE_SMALL)
*
* @access private
* @param integer $iStBlk
* @param array &$raList Reference to array of PPS's
*/
function _saveBigData($iStBlk, &$raList)
{
$FILE = $this->_FILEH_;
// cycle through PPS's
for ($i = 0; $i < count($raList); $i++)
{
if($raList[$i]->Type != OLE_PPS_TYPE_DIR)
{
$raList[$i]->Size = $raList[$i]->_DataLen();
if(($raList[$i]->Size >= OLE_DATA_SIZE_SMALL) or
(($raList[$i]->Type == OLE_PPS_TYPE_ROOT) and isset($raList[$i]->_data)))
{
// Write Data
if(isset($raList[$i]->_PPS_FILE))
{
$iLen = 0;
fseek($raList[$i]->_PPS_FILE, 0); // To The Top
while($sBuff = fread($raList[$i]->_PPS_FILE, 4096))
{
$iLen += strlen($sBuff);
fwrite($FILE, $sBuff);
}
}
else {
fwrite($FILE, $raList[$i]->_data);
}
if ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)
{
for ($j = 0; $j < ($this->_BIG_BLOCK_SIZE - ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)); $j++) {
fwrite($FILE, "\x00");
}
}
// Set For PPS
$raList[$i]->_StartBlock = $iStBlk;
$iStBlk +=
(floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) +
(($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0));
}
// Close file for each PPS, and unlink it
if (isset($raList[$i]->_PPS_FILE))
{
@fclose($raList[$i]->_PPS_FILE);
$raList[$i]->_PPS_FILE = null;
@unlink($raList[$i]->_tmp_filename);
}
}
}
}
/**
* get small data (PPS's with data smaller than OLE_DATA_SIZE_SMALL)
*
* @access private
* @param array &$raList Reference to array of PPS's
*/
function _makeSmallData(&$raList)
{
$sRes = '';
$FILE = $this->_FILEH_;
$iSmBlk = 0;
for ($i = 0; $i < count($raList); $i++)
{
// Make SBD, small data string
if ($raList[$i]->Type == OLE_PPS_TYPE_FILE)
{
if ($raList[$i]->Size <= 0) {
continue;
}
if ($raList[$i]->Size < OLE_DATA_SIZE_SMALL)
{
$iSmbCnt = floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE)
+ (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0);
// Add to SBD
for ($j = 0; $j < ($iSmbCnt-1); $j++) {
fwrite($FILE, pack("V", $j+$iSmBlk+1));
}
fwrite($FILE, pack("V", -2));
// Add to Data String(this will be written for RootEntry)
if ($raList[$i]->_PPS_FILE)
{
fseek($raList[$i]->_PPS_FILE, 0); // To The Top
while ($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) {
$sRes .= $sBuff;
}
}
else {
$sRes .= $raList[$i]->_data;
}
if($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)
{
for ($j = 0; $j < ($this->_SMALL_BLOCK_SIZE - ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)); $j++) {
$sRes .= "\x00";
}
}
// Set for PPS
$raList[$i]->_StartBlock = $iSmBlk;
$iSmBlk += $iSmbCnt;
}
}
}
$iSbCnt = floor($this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE);
if($iSmBlk % $iSbCnt)
{
for ($i = 0; $i < ($iSbCnt - ($iSmBlk % $iSbCnt)); $i++) {
fwrite($FILE, pack("V", -1));
}
}
return $sRes;
}
/**
* Saves all the PPS's WKs
*
* @access private
* @param array $raList Reference to an array with all PPS's
*/
function _savePps(&$raList)
{
// Save each PPS WK
for ($i = 0; $i < count($raList); $i++) {
fwrite($this->_FILEH_, $raList[$i]->_getPpsWk());
}
// Adjust for Block
$iCnt = count($raList);
$iBCnt = $this->_BIG_BLOCK_SIZE / OLE_PPS_SIZE;
if ($iCnt % $iBCnt)
{
for ($i = 0; $i < (($iBCnt - ($iCnt % $iBCnt)) * OLE_PPS_SIZE); $i++) {
fwrite($this->_FILEH_, "\x00");
}
}
}
/**
* Saving Big Block Depot
*
* @access private
* @param integer $iSbdSize
* @param integer $iBsize
* @param integer $iPpsCnt
*/
function _saveBbd($iSbdSize, $iBsize, $iPpsCnt)
{
$FILE = $this->_FILEH_;
// Calculate Basic Setting
$iBbCnt = $this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE;
$i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / OLE_LONG_INT_SIZE;
$iBdExL = 0;
$iAll = $iBsize + $iPpsCnt + $iSbdSize;
$iAllW = $iAll;
$iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0);
$iBdCnt = floor(($iAll + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0);
// Calculate BD count
if ($iBdCnt >$i1stBdL)
{
while (1)
{
$iBdExL++;
$iAllW++;
$iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0);
$iBdCnt = floor(($iAllW + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0);
if ($iBdCnt <= ($iBdExL*$iBbCnt+ $i1stBdL)) {
break;
}
}
}
// Making BD
// Set for SBD
if ($iSbdSize > 0)
{
for ($i = 0; $i<($iSbdSize-1); $i++) {
fwrite($FILE, pack("V", $i+1));
}
fwrite($FILE, pack("V", -2));
}
// Set for B
for ($i = 0; $i<($iBsize-1); $i++) {
fwrite($FILE, pack("V", $i+$iSbdSize+1));
}
fwrite($FILE, pack("V", -2));
// Set for PPS
for ($i = 0; $i<($iPpsCnt-1); $i++) {
fwrite($FILE, pack("V", $i+$iSbdSize+$iBsize+1));
}
fwrite($FILE, pack("V", -2));
// Set for BBD itself ( 0xFFFFFFFD : BBD)
for ($i=0; $i<$iBdCnt;$i++) {
fwrite($FILE, pack("V", 0xFFFFFFFD));
}
// Set for ExtraBDList
for ($i=0; $i<$iBdExL;$i++) {
fwrite($FILE, pack("V", 0xFFFFFFFC));
}
// Adjust for Block
if (($iAllW + $iBdCnt) % $iBbCnt)
{
for ($i = 0; $i < ($iBbCnt - (($iAllW + $iBdCnt) % $iBbCnt)); $i++) {
fwrite($FILE, pack("V", -1));
}
}
// Extra BDList
if ($iBdCnt > $i1stBdL)
{
$iN=0;
$iNb=0;
for ($i=$i1stBdL;$i<$iBdCnt; $i++, $iN++)
{
if ($iN>=($iBbCnt-1))
{
$iN = 0;
$iNb++;
fwrite($FILE, pack("V", $iAll+$iBdCnt+$iNb));
}
fwrite($FILE, pack("V", $iBsize+$iSbdSize+$iPpsCnt+$i));
}
if (($iBdCnt-$i1stBdL) % ($iBbCnt-1))
{
for ($i = 0; $i < (($iBbCnt-1) - (($iBdCnt-$i1stBdL) % ($iBbCnt-1))); $i++) {
fwrite($FILE, pack("V", -1));
}
}
fwrite($FILE, pack("V", -2));
}
}
}
?>
+229
View File
@@ -0,0 +1,229 @@
<?php
/*
* Module written by Herman Kuiper <herman@ozuzo.net>
*
* License Information:
*
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Possible operator types
/*
FIXME: change prefixes
*/
define("OP_BETWEEN", 0x00);
define("OP_NOTBETWEEN", 0x01);
define("OP_EQUAL", 0x02);
define("OP_NOTEQUAL", 0x03);
define("OP_GT", 0x04);
define("OP_LT", 0x05);
define("OP_GTE", 0x06);
define("OP_LTE", 0x07);
/**
* Baseclass for generating Excel DV records (validations)
*
* @author Herman Kuiper
* @category FileFormats
* @package Spreadsheet_Excel_Writer
*/
class Spreadsheet_Excel_Writer_Validator
{
var $_type;
var $_style;
var $_fixedList;
var $_blank;
var $_incell;
var $_showprompt;
var $_showerror;
var $_title_prompt;
var $_descr_prompt;
var $_title_error;
var $_descr_error;
var $_operator;
var $_formula1;
var $_formula2;
/**
* The parser from the workbook. Used to parse validation formulas also
* @var Spreadsheet_Excel_Writer_Parser
*/
var $_parser;
function Spreadsheet_Excel_Writer_Validator(&$parser)
{
$this->_parser = $parser;
$this->_type = 0x01; // FIXME: add method for setting datatype
$this->_style = 0x00;
$this->_fixedList = false;
$this->_blank = false;
$this->_incell = false;
$this->_showprompt = false;
$this->_showerror = true;
$this->_title_prompt = "\x00";
$this->_descr_prompt = "\x00";
$this->_title_error = "\x00";
$this->_descr_error = "\x00";
$this->_operator = 0x00; // default is equal
$this->_formula1 = '';
$this->_formula2 = '';
}
function setPrompt($promptTitle = "\x00", $promptDescription = "\x00", $showPrompt = true)
{
$this->_showprompt = $showPrompt;
$this->_title_prompt = $promptTitle;
$this->_descr_prompt = $promptDescription;
}
function setError($errorTitle = "\x00", $errorDescription = "\x00", $showError = true)
{
$this->_showerror = $showError;
$this->_title_error = $errorTitle;
$this->_descr_error = $errorDescription;
}
function allowBlank()
{
$this->_blank = true;
}
function onInvalidStop()
{
$this->_style = 0x00;
}
function onInvalidWarn()
{
$this->_style = 0x01;
}
function onInvalidInfo()
{
$this->_style = 0x02;
}
function setFormula1($formula)
{
// Parse the formula using the parser in Parser.php
$error = $this->_parser->parse($formula);
if (PEAR::isError($error)) {
return $this->_formula1;
}
$this->_formula1 = $this->_parser->toReversePolish();
if (PEAR::isError($this->_formula1)) {
return $this->_formula1;
}
return true;
}
function setFormula2($formula)
{
// Parse the formula using the parser in Parser.php
$error = $this->_parser->parse($formula);
if (PEAR::isError($error)) {
return $this->_formula2;
}
$this->_formula2 = $this->_parser->toReversePolish();
if (PEAR::isError($this->_formula2)) {
return $this->_formula2;
}
return true;
}
function _getOptions()
{
$options = $this->_type;
$options |= $this->_style << 3;
if ($this->_fixedList) {
$options |= 0x80;
}
if ($this->_blank) {
$options |= 0x100;
}
if (!$this->_incell) {
$options |= 0x200;
}
if ($this->_showprompt) {
$options |= 0x40000;
}
if ($this->_showerror) {
$options |= 0x80000;
}
$options |= $this->_operator << 20;
return $options;
}
function _getData()
{
$title_prompt_len = strlen($this->_title_prompt);
$descr_prompt_len = strlen($this->_descr_prompt);
$title_error_len = strlen($this->_title_error);
$descr_error_len = strlen($this->_descr_error);
$formula1_size = strlen($this->_formula1);
$formula2_size = strlen($this->_formula2);
$data = pack("V", $this->_getOptions());
$data .= pack("vC", $title_prompt_len, 0x00) . $this->_title_prompt;
$data .= pack("vC", $title_error_len, 0x00) . $this->_title_error;
$data .= pack("vC", $descr_prompt_len, 0x00) . $this->_descr_prompt;
$data .= pack("vC", $descr_error_len, 0x00) . $this->_descr_error;
$data .= pack("vv", $formula1_size, 0x0000) . $this->_formula1;
$data .= pack("vv", $formula2_size, 0x0000) . $this->_formula2;
return $data;
}
}
/*class Spreadsheet_Excel_Writer_Validation_List extends Spreadsheet_Excel_Writer_Validation
{
function Spreadsheet_Excel_Writer_Validation_list()
{
parent::Spreadsheet_Excel_Writer_Validation();
$this->_type = 0x03;
}
function setList($source, $incell = true)
{
$this->_incell = $incell;
$this->_fixedList = true;
$source = implode("\x00", $source);
$this->_formula1 = pack("CCC", 0x17, strlen($source), 0x0c) . $source;
}
function setRow($row, $col1, $col2, $incell = true)
{
$this->_incell = $incell;
//$this->_formula1 = ...;
}
function setCol($col, $row1, $row2, $incell = true)
{
$this->_incell = $incell;
//$this->_formula1 = ...;
}
}*/
?>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+103
View File
@@ -0,0 +1,103 @@
<?php
/*
* Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
*
* PERL Spreadsheet::WriteExcel module.
*
* The author of the Spreadsheet::WriteExcel module is John McNamara
* <jmcnamara@cpan.org>
*
* I _DO_ maintain this code, and John McNamara has nothing to do with the
* porting of this code to PHP. Any questions directly related to this
* class library should be directed to me.
*
* License Information:
*
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* Class for writing Excel Spreadsheets. This class should change COMPLETELY.
*
* @author Xavier Noguer <xnoguer@rezebra.com>
* @category FileFormats
* @package Spreadsheet_Excel_Writer
*/
class Spreadsheet_Excel_Writer extends Spreadsheet_Excel_Writer_Workbook
{
/**
* The constructor. It just creates a Workbook
*
* @param string $filename The optional filename for the Workbook.
* @return Spreadsheet_Excel_Writer_Workbook The Workbook created
*/
function Spreadsheet_Excel_Writer($filename = '')
{
$this->_filename = $filename;
$this->Spreadsheet_Excel_Writer_Workbook($filename);
}
/**
* Send HTTP headers for the Excel file.
*
* @param string $filename The filename to use for HTTP headers
* @access public
*/
function send($filename)
{
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
}
/**
* Utility function for writing formulas
* Converts a cell's coordinates to the A1 format.
*
* @access public
* @static
* @param integer $row Row for the cell to convert (0-indexed).
* @param integer $col Column for the cell to convert (0-indexed).
* @return string The cell identifier in A1 format
*/
function rowcolToCell($row, $col)
{
if ($col > 255) { //maximum column value exceeded
return new PEAR_Error("Maximum column value exceeded: $col");
}
$int = (int)($col / 26);
$frac = $col % 26;
$chr1 = '';
if ($int > 0) {
$chr1 = chr(ord('A') + $int - 1);
}
$chr2 = chr(ord('A') + $frac);
$row++;
return $chr1 . $chr2 . $row;
}
}
?>
+321
View File
@@ -0,0 +1,321 @@
<?php
/**
* Klasse fuer Berechtigungen der User
* @author Christian Paminger
* @version 1.0
* @updated 11-Feb-2004
*/
class berechtigung
{
/**
* interne userberechtigung_id (Zaehler aus DB)
* @var integer
*/
var $userberechtigung_id;
/**
* @var integer
*/
var $studiengang_kz;
/**
* @var integer
*/
var $fachbereich_id;
/**
* @var string
*/
var $berechtigung_kurzbz;
/**
* @var string
*/
var $uid;
/**
* @var string
*/
var $studiensemester_kurzbz;
/**
* @var integer
*/
var $start;
/**
* @var integer
*/
var $ende;
/**
* @var integer
*/
var $starttimestamp;
/**
* @var integer
*/
var $endetimestamp;
/**
* @var string
*/
var $art;
/**
* @var array
*/
var $berechtigungen=array();
/**
* @var string
*/
var $conn;
/**
* @var boolean
*/
var $new;
function berechtigung($conn)
{
$this->conn=$conn;
$this->new=true;
}
/**
* Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($id)
{
// Berechtigung holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id";
//echo $sql_query;
if(!($erg=pg_exec($this->conn, $sql_query)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1)
{
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->userberechtigung_id=$row->userberechtigung_id;
$this->studiengang_kz=$row->studiengang_kz;
$this->fachbereich_id=$row->fachbereich_id;
$this->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$this->uid=$row->uid;
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$this->start=$row->start;
$this->ende=$row->ende;
$this->art=$row->art;
$this->new=false;
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function save()
{
// Connection holen
if (is_null($conn=$this->getConnection()))
{
return false;
}
// Daten zur Person speichern
if (!person::save()) {
$this->errormsg.="Daten zur LVA konnten nicht gespeichert werden.";
return false;
}
if ($this->new) {
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
"lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,".
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,anmerkung)".
"values(".
"'".$this->lvnr."',".
"'".$this->unr."',".
"'".$this->einheit_kurzbz."',".
"'".$this->lektor."',".
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
(strlen($this->semester)>0?$this->semester:NULL).",".
"'".$this->verband."',".
"'".$this->gruppe."',".
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",".
")";
} else
{
$qry="UPDATE tbl_lehrveranstaltung ".
"SET lvnr='".$this->lvnr."',".
"unr='".$this->unr."',".
"einheit_kurzbz='".$this->einheit_kurzbz."',".
"lektor='".$this->lehrfach_nr."',".
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
"semester=".(strlen($this->semester)>0?$this->semester:NULL).",".
"verband='".$this->verband."',".
"gruppe='".$this->gruppe."',".
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
}
//echo "<br>".$qry;
if(!@pg_query($conn, $qry))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
return true;
}
/**
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
* Fehlermeldung liegt in errormsg.
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
* @param string $uid UserID
* @return variabel Array mit LVA; <b>false</b> bei Fehler
*/
function getBerechtigungen($uid)
{
// Berechtigungen holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (start<now() OR start IS NULL) AND (ende>now() OR ende IS NULL)";
//echo $sql_query;
if(!$erg=@pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
//$num_rows=pg_numrows($erg);
while($row=pg_fetch_object($erg))
{
$b=new berechtigung($this->conn);
$b->userberechtigung_id=$row->userberechtigung_id;
$b->studiengang_kz=$row->studiengang_kz;
$b->fachbereich_id=$row->fachbereich_id;
$b->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$b->uid=$row->uid;
$b->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$b->start=$row->start;
if ($row->start!=null)
$b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4));
else
$b->starttimestamp=null;
$b->ende=$row->ende;
if ($row->ende!=null)
$b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4));
else
$b->endetimestamp=null;
$b->art=$row->art;
$this->berechtigungen[]=$b;
}
return true;
}
function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null, $fachbereich_id=null)
{
$timestamp=time();
foreach ($this->berechtigungen as $b)
{
//Fachbereichsberechtigung
if($fachbereich_id!=null)
{
//Wenn Fachbereichs oder Adminberechtigung
if(($berechtigung == $b->berechtigung_kurzbz || $b->berechtigung_kurzbz == 'admin') && ($b->fachbereich_id==$fachbereich_id || $b->fachbereich_id=='0'))
{
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
}
}
//Wenn Berechtigung fuer Bestimmte Klasse vorhanden ist
if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null && $fachbereich_id==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
//Wenn Berechtigung fuer Bestimmten Studiengang vorhanden ist
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null && $b->fachbereich_id==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
//Wenn Berechtigung mit Studiengang und der richtigen BerechtigungsArt (suid) vorhanden ist
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0)
&& strstr($b->art,$art))
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
}
return false;
}
/**
* Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck.
* Optional wird auf Berechtigung eingeschraenkt.
* Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0.
*/
function getStgKz($berechtigung=null)
{
$studiengang_kz=array();
$timestamp=time();
foreach ($this->berechtigungen as $b)
if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
if($b->fachbereich_id==null)
$studiengang_kz[]=$b->studiengang_kz;
$studiengang_kz=array_unique($studiengang_kz);
sort($studiengang_kz);
return $studiengang_kz;
}
function getFbKz($berechtigung=null)
{
$fachbereichs_kz=array();
$timestamp=time();
foreach($this->berechtigungen as $b)
{
if(($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
&& (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null)))
{
if($b->fachbereich_id!='' && !in_array($b->fachbereich_id,$fachbereichs_kz))
$fachbereichs_kz[] = $b->fachbereich_id;
}
}
sort($fachbereichs_kz);
return $fachbereichs_kz;
}
}
?>
+515
View File
@@ -0,0 +1,515 @@
<?php
/**
* @author: maximilian schremser
* @date: 2004-10-24
* globale funktionen für verschiedene anwendungen auf der cis.technikum-wien.at
*/
function get_active_status($auth) {
$course_id = $auth->stg_id;
$term_id = $auth->semester;
$sql = "SELECT distinct verband, gruppe FROM tbl_student WHERE (studiengang_kz = $course_id) AND (semester = $term_id) ORDER BY verband,gruppe";
$rs = new pgRS($sql);
$count_verband = $rs->num;
$verbands = $rs->arr;
for ($rt = $count_verband-1; $rt >= 0; $rt--) {
$verband = $verbands[$rt]["verband"] . $verbands[$rt]["gruppe"];
if ($verbands[$rt]["verband"] == $auth->verband &&
$verbands[$rt]["gruppe"] == $auth->gruppe)
return pow(2,$rt);
}
return 0;
} // eof function get_active_status
//get_lf_bezeichnung holt die Studiengang Bezeichnung und die Lehrfach
// bezeichnung für das aktuelle Lehrfach.
function get_lf_bezeichnung($course_id, $term_id, $lesson)
{
$sql = "SELECT lf.bezeichnung, kurzbzlang FROM lehre.tbl_lehrfachzuteilung lf
JOIN tbl_studiengang USING(studiengang_kz) WHERE lf.studiengang_kz = $course_id
AND lf.lehrfachzuteilung_kurzbz = '$lesson' AND lf.semester = $term_id LIMIT 1";
$rs = new pgRS($sql);
$ret[0] = $rs->arr[0]["kurzbzlang"];
$ret[1] = $rs->arr[0]["bezeichnung"];
return $ret;
}
// Die Freigabe für die Verbände für den Studienbrief berechnen
// Um die Freigeschaltenen Studienbriefe zu berechnen.
function sum($points = array()) {
$p = 0;
for ($i = 0; $i < count($points); $i++)
{
$p+= $points[$i];
}
return $p;
} /* eof sum() */
// erstellen des aktuellen studienjahres
function get_studienjahr($i = -1) {
if ($i != -1) {
$stj = date("Y")+$i;
$stj .= "/";
$stj .= sprintf("%02d", date("y")+$i+1);
} else if ( date("n") >= 7)
$stj = date("Y") . "/" . date("y", mktime(0,0,0,1,1,date("Y")+1));
else
$stj = date("Y")-1 . "/" . date("y");
return $stj;
}
function get_needed_term_id($term_id = 0, $stj = "") {
if ($stj == "")
$stj = get_studienjahr();
$needed_term_id = $term_id + ((date("Y") - substr($stj,0,4))*2);
if ((date("n") >= 8 || date("n") < 3))
if ($term_id%2==0)
$needed_term_id--;
else
$needed_term_id++;
if ((date("n") < 8 || date("n") >= 3))
if ($term_id%2!= 0)
$needed_term_id--;
return $needed_term_id;
}
// berechnet die notwendige Semester_ID zum Anzeigen der
// Studenten im Kreuzerltool
function get_needed_term_id2($term_id = 0, $stj = "") {
// im WS sollen noch Studenten vom letzten SS sichtbar sein
if ((date("n") >= 8 || date("n") < 2)) {
if ($term_id%2==0)
$term_id++;
}
// im SS sollen noch die Studenten vom WS sichtbar sein
else {
if ($term_id%2==1) {
$term_id++;
}
}
return $term_id;
}
// zurückrechnen auf die studenten im jetzigen semester
// studienpunkte sind nur für die eigene person sichtbar
function get_old_studienjahr() {
if (date("n") >= 7 && $term_id%2 == 1) {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2);
}
else if (date("n") >= 7 && $term_id%2 == 0) {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2)-1;
}
else if (date("n") < 7 && $term_id%2 == 1) {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2);
}
else {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2);
}
$studienjahr .= "/" . date("y", mktime(0,0,0,1,1,$studienjahr+1));
}
// write out the menu for kreuzerltool (campus/lehre/effort
function write_menu($menu, $course_id, $lesson, $term_id, $module = "", $stj = 0) {
if ($stj == 0)
$stj = get_studienjahr();
print "
<form method=\"post\" action=\"#page\">
<table border=0 cellpadding=1 cellspacing=0 width=600>
<tr>
<td>
<table border=0 width=100% cellpadding=0 cellspacing=0 width=600>
<tr>
<td width=50%>
<li type=square><a href=\"result_effort.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Kreuzerlliste Statistik</a></li>
</td>
<td>
<li type=square><a href=\"show_list.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Anwesenheits-
und <br>&nbsp;&nbsp;&nbsp;&Uuml;bersichtstabelle</a></li></td></tr>
<tr>
<td>
<li type=square><a href=\"create_stb.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Kreuzerllisten anlegen <br>&nbsp;&nbsp;&nbsp;und verwalten</a></li></td>
<td>
<li type=square><a href=\"edit_list.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Studentenpunkte <br>&nbsp;&nbsp;&nbsp;&nbsp;verwalten</a></li></td></tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
<tr>
<td width=200 class=light valign=middle height=19>&nbsp;
$menu</td>
<td align=right class=light>Studienjahr: <select name=stj size=1 onChange=document.location.href='$PHP_SELF?course_id=$course_id&short=$lesson&term_id=$term_id&module=$module&stj='+document.forms[0].stj.options[document.forms[0].stj.options.selectedIndex].value;>";
$k = 0;
// einfügen eines neuen Studienjahres ab 1.Juli bis 31.Dezember
if (date("n") >= 7) {
$d = date("Y") . "/" . date("y", mktime(0,0,0,1,1,date("Y")+1));
echo "<option value='$d'";
if ($d == $stj)
echo "selected";
echo ">$d</option>";
}
// vergangene Studienjahre seit 2003/04
for ($i = date("y")+0, $j = date("Y")-1; $i >= 3, $j >= 2002; $i--,$j--)
{
$nextYear = $i;
$year = $j;
// add a spacing 0
if ($nextYear < 10)
$nextYear = "0$nextYear";
echo "<option value=\"$year/$nextYear\"";
echo ($stj == ($year."/".$nextYear))?"selected":"";
echo ">$year/$nextYear</option>";
}
print <<<EOF
</select></td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
</table></td></tr>
</table></td>
</tr></table>
</form>
EOF;
}
/**
* @params inputString - the String to be formatted
* @return the formatted String
*/
function format($inputString) {
$inputString = stripslashes($inputString);
return str_replace("\n", "<br>",$inputString);
}
function get_lectors($course_id, $term_id, $short) {
if ($course_id && $term_id && $short) {
$sql = "SELECT DISTINCT on (bezeichnung,nachname) bezeichnung, studiengang_kz, semester, vornamen, nachname, email, uid FROM lehre.tbl_lehrfachzuteilung JOIN tbl_person ON uid = lektor_uid WHERE studiengang_kz='$course_id' AND semester='$term_id' AND lehrfachzuteilung_kurzbz = '$short' AND tbl_person.aktiv=TRUE ORDER BY bezeichnung, nachname";
//$sql_query = "SELECT DISTINCT ON(uid), vornamen, nachname,
// titel FROM lehre.tbl_lehrfachzuteilung, tbl_person,
//tbl_mitarbeiter WHERE tbl_person.uid =
//lehre.tbl_lehrfachzuteilung.lektor_uid AND
//lehre.tbl_lehrfachzuteilung.studiengang_kz='$course_id'
//AND lehre.tbl_lehrfachzuteilung.semester='$term_id'
//AND LOWER(lehre.tbl_lehrfachzuteilung.lehrfachzuteilung_kurzbz)='$short'
//AND lehre.tbl_lehrfachzuteilung.aktiv = true
//ORDER BY nachname";
$result_lectors = new pgRS($sql);
}
$num_rows_lectors = $result_lectors->num;
$row_email = array();
$row_vornamen = array();
$row_nachname = array();
$row_titel = array();
for($i = 0; $i < $num_rows_lectors; $i++)
{
$row_email[] = $result_lectors->arr[$i]["emailtw"];
$row_vornamen[] = $result_lectors->arr[$i]["vornamen"];
$row_nachname[] = $result_lectors->arr[$i]["nachname"];
$row_titel[] = $result_lectors->arr[$i]["titel"];
}
$ret = "";
for ($i = 0; $i < count($row_email); $i++)
{
$ret .= "$row_titel[$i] $row_vornamen[$i] $row_nachname[$i]";
if ($i < count($row_email)-1)
$ret .= ", ";
}
return $ret;
}
function get_person($bezeichnung, $course_id) {
$sql = "SELECT titel, vornamen, nachname, bezeichnung FROM tbl_funktion, public.tbl_person JOIN tbl_personfunktion ON (tbl_personfunktion.uid = tbl_person.uid) WHERE tbl_personfunktion.funktion_kurzbz = tbl_funktion.funktion_kurzbz AND bezeichnung='$bezeichnung' AND tbl_personfunktion.studiengang_kz='$course_id'";
$rs = new pgRS($sql);
$arr = $rs->arr[0];
$ret = $arr["titel"]." " . $arr["vornamen"]." " . $arr["nachname"];
return $ret;
}
function create_version($user, $info_data) {
$id = 0;
$info_id = 0;
$version_id = 0;
$ects_points = $info_data["ects_credits"];
$learning_language = $info_data["sprache"];
$wochenstunden = $info_data["hours"];
$course_id = $info_data["course_id"];
$term_id = $info_data["term_id"];
$short = $info_data["short"];
$studienjahr = $info_data["studienjahr"];
$fachbereich = $info_data["fachbereich"];
$fachbereichsleiter = $info_data["fachbereichsleiter"];
$fachbereichskoordinator = $info_data["fachbereichskoordinator"];
$lehrender = $info_data["lehrender"];
$sql = "INSERT INTO lv_infos (ects_credits,
sprache, hours, studienjahr, fachbereich,
fachbereichsleiter, fachbereichskoordinator, lehrender) VALUES
($ects_points, $learning_language,
$wochenstunden, '$studienjahr',
'$fachbereich', '$fachbereichsleiter',
'$fachbereichskoordinator', '$lehrender')";
$rs = new myRS($sql);
$info_id = $rs->iid;
if ($info_id) {
$sql = "SELECT max(version) as version FROM lv_versions
WHERE studiengang_kz = $course_id AND
short = '$short' AND term_id = $term_id";
$rs = new myRS($sql);
$max_version = $rs->arr[0]["version"];
$sql ="INSERT INTO lv_versions (studiengang_kz, term_id,
short, lector_uid, version,
status, info_id, date_created, date_modified)
VALUES ($course_id, $term_id, '$short',
'$user', " . ($max_version +1).", 0,$info_id," .time() .", " . time().")";
$rs = new myRS($sql);
$version_id = $rs->iid;
}
return array($version_id, $info_id);
} // eof create_version
function get_version($version_id) {
$sql = "SELECT * FROM lv_versions v, lv_infos i
WHERE v.id = $version_id AND v.info_id = i.id";
$rs = new myRS($sql);
return array(
$rs->arr[0]["ects_credits"]/10,
$rs->arr[0]["sprache"],
$rs->arr[0]["hours"]/10,
$rs->arr[0]["info_id"],
$rs->arr[0]["content_de_id"],
$rs->arr[0]["content_en_id"],
$rs->arr[0]["date_created"],
$rs->arr[0]["date_modified"],
$rs->arr[0]["studienjahr"],
$rs->arr[0]["fachbereich"],
$rs->arr[0]["fachbereichsleiter"],
$rs->arr[0]["fachbereichskoordinator"],
$rs->arr[0]["lehrender"],
$rs->arr[0]["studiengang_kz"],
$rs->arr[0]["term_id"],
$rs->arr[0]["short"]
);
} // eof get_version
// updates the record with info_id in lv_infos
function update_version($user, $info_data) {
$id = 0;
$version_id = 0;
$ects_points = $info_data["ects_credits"];
$learning_language = $info_data["sprache"];
$wochenstunden = $info_data["hours"];
$info_id = $info_data["info_id"];
$studienjahr = $info_data["studienjahr"];
$fachbereich = $info_data["fachbereich"];
$fachbereichsleiter = $info_data["fachbereichsleiter"];
$fachbereichskoordinator = $info_data["fachbereichskoordinator"];
$lehrender = $info_data["lehrender"];
$version_id = $info_data["version_id"];
$sql = "UPDATE lv_infos SET ects_credits = $ects_points,
sprache = $learning_language,
hours = $wochenstunden,
studienjahr = '$studienjahr',
fachbereich = '$fachbereich',
fachbereichsleiter = '$fachbereichsleiter',
fachbereichskoordinator = '$fachbereichskoordinator',
lehrender = '$lehrender'
WHERE id = $info_id";
$rs = new myRS($sql);
$sql = "UPDATE lv_versions SET date_modified = " .time() .
" WHERE id = $version_id";
$rs = new myRS($sql);
} // eof update_version
// saves a version to be displayed in LV infos freigeben
function save_version($version_id) {
$sql = "UPDATE lv_versions SET status = 1 WHERE id = $version_id";
$rs = new myRS($sql);
}
// inserts a record into lv_content_$lang and
// update lv_versions.content_$lang_id
function create_content($lang, $version_id, $info_data) {
$arr_values = array_values($info_data);
$keys = join(", ", array_keys($info_data));
for ($i = 0; $i < count($arr_values)-1;$i++) {
$values .= "'" . $arr_values[$i] . "', ";
}
$values .= "'" . $arr_values[count($arr_values)-1] ."'";
$sql = "INSERT INTO lv_content_$lang ($keys) VALUES ($values)";
$rs = new myRS($sql);
$content_id = $rs->iid;
$sql = "UPDATE lv_versions SET content_" . $lang . "_id =
$content_id WHERE id = $version_id";
$rs = new myRS($sql);
return $content_id;
} // eof create_content
// update_content updates the table lv_content_$lang
function update_content($lang, $id, $info_data) {
$sql = "UPDATE lv_content_$lang SET ";
$keys = array_keys($info_data);
$values = array_values($info_data);
for ($i = 0; $i < count($values); $i++) {
$sql .= $keys[$i] ." = '" . $values[$i] . "'";
if ($i < count($values)-1) $sql .= ", ";
}
$sql .= " WHERE id = $id";
$rs = new myRS($sql);
} // eof update_content
function get_content($lang, $content_id, $fields) {
$sql = "SELECT " . join (", ", $fields) . " FROM
lv_content_$lang WHERE id = $content_id";
$rs = new myRS($sql);
return $rs->arr[0];
} // eof get_content
function write_log($lektor_uid, $action) {
$sql = "INSERT INTO lv_log (lektor_uid, action, datum)" .
" VALUES ('$lektor_uid', '$action', " . time() .")";
$rs = new myRS($sql);
return 1;
}
/*****************************************************************************
* function write_ects_menu($menu = 0, $course_id, $term_id, $short, $lang) {
*
* if ($menu == 1) $menu_name = "LV-Infos anzeigen";
*
* print <<<EOF
* <form method="get" action="view_$lang.php?menu=$menu" name="foo">
<input type="hidden" name="course_id" value="$course_id" />
<input type="hidden" name="term_id" value="$term_id" />
<input type="hidden" name="menu" value="$menu" />
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width=20>&nbsp;</td>
<td width="357"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="view_$lang.php?menu=1&course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - anzeigen</a>
</font></td>
<td width="396"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="edit.php?menu=2&course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - erstellen / bearbeiten</a>
</font></td>
<td width="280"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="publish.php?course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - freigeben</a></td>
<td width="280"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="index.php?menu=5&course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - Feedback</a></td>
</tr>
<tr>
<td width=20>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
EOF;
if ($menu_name) {
print <<<EOF
<tr>
<td width="100%" class="inner"><a name="page"></a>
<table border=0 cellpadding=0 cellspacing=0 width="100%">
<tr>
<td width=400><font face="Arial, Helvetica, sans-serif" size="2" color="#000000">
&nbsp;$menu_name
</font></td>
<td width="50%" align="center">
Lehrfach: <select name="short" size="1" onChange="document.foo.submit();" >
<option value="">Bitte Lehrfach auswählen</option>
EOF;
if ($course_id && $term_id) {
$sql = "SELECT DISTINCT bezeichnung, lehrfachzuteilung_kurzbz FROM lehre.tbl_lehrfachzuteilung WHERE studiengang_kz=$course_id AND semester=$term_id ORDER BY bezeichnung";
$rs = new pgRS($sql);
for ($i = 0; $i < $rs->num; $i++) {
echo "<option value='" . $rs->arr[$i]["lehrfachzuteilung_kurzbz"] .
"' ";
if ($short==$rs->arr[$i]["lehrfachzuteilung_kurzbz"])
echo " selected";
echo ">";
echo $rs->arr[$i]["bezeichnung"];
echo "</option>";
}
}
echo '</select></td>
<td align="right" class="inner" valign="middle" width=300>';
if ($menu != 2) {
if ($lang == "" || $lang!="en") {
* echo "[Deutsch]";
* } else {
* echo "<a class=Item2 href='view_de.php?course_id=$course_id&short=$short&term_id=$term_id&menu=$menu&lang=de'>[Deutsch]</a>";
* }
* if ($lang == "en") {
* echo "[English]";
* } else {
* echo "<a class=Item2 href='view_en.php?course_id=$course_id&short=$short&term_id=$term_id&menu=$menu&lang=en'>[English]</a>";
* }
* } // eof menu=2
* echo '</td>
* </tr></table></td>
* </tr>';
* }
* echo '<tr>
* <td width="100%" align="center">&nbsp;</td></tr></table></form>';
* }
***************************************************************************/
// write a menu for a quicker navigation in the ects - course contents program
function write_ects_quick_menu($course_id, $term_id, $short, $p, $version_id = 0, $info_id = 0, $content_de_id = 0, $content_en_id = 0) {
if ($p > 0) {
print '<table style="border:1px solid black"><tr><th>Schnellnavigation</th></tr><tr><td valign=top>
<!-- MENU FUER NAVIGATION //-->';
static $headlines = array("", "Allgemeine Infos", "Inhalte DE", "Prüfung DE", "Inhalte EN", "Prüfung EN", "Beenden");
for ($i = 1; $i < count($headlines); $i++) {
echo "
$i <a href=\"edit_$i.php?menu=2&course_id=$course_id&term_id=$term_id&short=$short&version_id=$version_id&info_id=$info_id&content_de_id=$content_de_id&content_en_id=$content_en_id&quick=1\">";
if ($i==$p) echo "<b>";
echo $headlines[$i];
if ($i==$p) echo "</b>";
echo "</a><br>";
}
}
}
// this function returns the dictionary entry for the keyword in the
// given language
function dict($lang = "de", $key = "") {
static $dictionary = array (
"back" => array("de" => "Zurück", "en" => "Back"),
"LVInfos" => array("de" => "LV - Informationen", "en" => "Course Description"),
"allCourses" => array("de" => "Alle Studiengänge", "en" => "All Courses"),
"availCourses" => array("de" => "Vorhandene Lehrfächer in ", "en" => "Available Courses in "),
"term" => array("de" => "Semester", "en" => "term"),
"noinfo" => array("de" => "Keine Informationenen verfügbar", "en" => "No course information available")
);
return $dictionary[$key][$lang];
}
?>
+110
View File
@@ -0,0 +1,110 @@
<?php
/*
$Header: /Pfad/Kodierrichtlinien.tex,v 1.2 2004/02/29 17:05:38 pam Exp $
$Log: Kodierrichtlinien.tex,v $
Revision 1.2 2004/02/29 17:05:38 pam
Fehler in Umlauten beseitigt.
*/
/**
* @class ects_sync
*
* @author Andreas Österreicher
*
* @date 30.9.2005
*
* @version $Revision: 1.2 $
*
* @brief Enthält Methoden für die ECTS Syncronisation
*/
class ects_sync
{
var $erg;
var $connection;
/********************************************************************
* @brief Konstruktor
*
* @param $conn Connection zur DB
********************************************************************/
function ects_sync($conn)
{
$this->connection=$conn;
}
/********************************************************************
* @brief Überprüft ob der Fachbereich existiert
*
* @param $fachb Fachbereichsbezeichnung
********************************************************************/
function check_fachbereich($fachb)
{
$sql_query = "SELECT * FROM tbl_fachbereich where bezeichnung='$fachb' OR kurzbz='$fachb'";
$result = pg_exec($this->connection, $sql_query);
if($row=pg_fetch_object($result))
$this->erg = $row->fachbereich_id;
else
return false;
return true;
}
/********************************************************************
* @brief Überprüft ob der Studiengang existiert
*
* @param $stg Studiengangs Kurzzeichen
********************************************************************/
function check_studiengang($stg)
{
$sql_query = "SELECT * FROM tbl_studiengang where studiengang_kz = $stg";
$result = pg_exec($this->connection, $sql_query);
if(pg_numrows($result)>0)
$this->erg = $stg;
else
return false;
return true;
}
/********************************************************************
* @brief Überprüft ob das Lehrfach existiert
*
* @param $lehrf LehrfachsKurzbz
* $stg Studiengang
* $sem Semester
********************************************************************/
function check_lehrfach($lehrf, $stg, $sem)
{
$sql_query = "SELECT * FROM tbl_lehrfach where kurzbz = upper('$lehrf') AND studiengang_kz=$stg AND semester=$sem";
$result = pg_exec($this->connection, $sql_query);
if($row=pg_fetch_object($result))
$this->erg = $row->lehrfach_nr;
else
return false;
return true;
}
/********************************************************************
* @brief Überprüft das Semester
*
* @param $sem Semster
********************************************************************/
function check_semester($sem)
{
if(is_numeric($sem) AND $sem<10)
$this->erg = $sem;
else
return false;
return true;
}
}
?>
+315
View File
@@ -0,0 +1,315 @@
<?php
/**
* Eine Einheit fasst mehrere Studenten zusammen. Die Besonderheit ist,
* dass die Studenten aus unterschiedlichen Studiengaengen stammen koennen.
* Das wird z.B. für die Freifaecher benoetigt.
* @author Christian Paminger, Werner Masik (werner@gefi.at)
* @version 1.0
* @created 22-Okt-2004 11:50:18
* @updated 28.10.2004 (WM)
*/
class einheit
{
/**
* @var string
*/
var $kurzbz;
/**
* @var integer
*/
var $stg_kz;
/**
* @var string nur zur info beim Suchergebnis, wird nicht gespeichert
*/
var $stg_kurzbz;
/**
* @var string
*/
var $bezeichnung;
/**
* @var integer
*/
var $semester;
/**
* @var integer
*/
var $typ;
/**
* @var string
*/
var $mailgrp_kurzbz;
/**
* @var string
*/
var $errormsg;
/**
* @var DB-Resource
*/
var $conn;
function einheit($conn,$kurzbz='')
{
$this->conn = $conn;
if (strlen($kurzbz)>0)
{
$this->kurzbz=$kurzbz;
$this->load();
}
}
/**
* Speichert die Einheit in der Datenbank. Bei Fehler ist der Rueckgabewert
* 'false' und die Fehlermeldung steht in 'errormsg'. INSERT oder DELETE wird
* durch 'new' bestimmt.
* @param string $kurzbz_new Kurzbezeichnung ist optional
* @return boolean true=ok, false=fehler
*/
function save($kurzbz_new='')
{
if (is_null($this->conn))
{
return false;
}
if (strlen($this->kurzbz)==0)
{
$this->errormsg="<i>kurzbz</i> nicht gesetzt";
return false;
}
if ($this->new)
{
if (is_numeric($this->semester)) $semester=$this->semester;
else $semester='NULL';
if (is_numeric($this->typ)) $typ=$this->typ;
else $typ='NULL';
if(!strlen($this->mailgrp_kurzbz)>0)
$this->mailgrp_kurzbz='NULL';
$qry="insert into tbl_einheit(einheit_kurzbz,studiengang_kz,bezeichnung,semester,typ,mailgrp_kurzbz) ".
"values('".$this->kurzbz."','".$this->stg_kz."','".$this->bezeichnung."',$semester,$typ,$this->mailgrp_kurzbz)";
} else
{
if (is_numeric($this->semester)) $semester='semester='.$this->semester;
else $semester='semester=NULL';
if (is_numeric($this->typ)) $typ='typ='.$this->typ;
else $typ='NULL';
if(!strlen($this->mailgrp_kurzbz)>0)
$this->mailgrp_kurzbz='mailgrp_kurzbz=NULL';
else
$this->mailgrp_kurzbz="mailgrp_kurzbz='$this->mailgrp_kurzbz'";
$qry="update tbl_einheit set studiengang_kz=".$this->stg_kz.",bezeichnung='".$this->bezeichnung."',".
"$semester,$typ,".$this->mailgrp_kurzbz.",einheit_kurzbz='".(strlen($kurzbz_new)>0?$kurzbz_new:$this->kurzbz)."' ".
"where einheit_kurzbz='".$this->kurzbz."'";
}
//echo $qry;
if(!($erg=pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function load($kurzbz='')
{
// optional: kurzbz setzen
if (strlen($uid)>0)
$this->kurzbz=$kurzbz;
// uid vorhanden?
if (strlen($this->kurzbz)==0) {
$this->errormsg='<i>einheit_kurzbz</i> nicht gesetzt';
return false;
}
if (is_null($this->conn)) {
return false;
}
$qry="select einheit_kurzbz,studiengang_kz,bezeichnung,semester,typ, mailgrp_kurzbz ".
"from tbl_einheit ".
"where einheit_kurzbz='".$this->kurzbz."'";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1) {
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->stg_kz=$row->studiengang_kz;
$this->bezeichnung=$row->bezeichnung;
$this->semester=$row->semester;
$this->typ=$row->typ;
$this->mailgrp_kurzbz=$row->mailgrp_kurzbz;
return true;
}
/**
* Loescht die Funktion aus der Datenbank. Bei Fehler ist der Rueckgabewert
* 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function delete()
{
if (is_null($this->conn)) {
return false;
}
$qry="delete from tbl_einheit where einheit_kurzbz='".$this->kurzbz."'";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
function addStudent($uid) {
if (is_null($this->conn)) {
return false;
}
$qry="insert into tbl_einheitstudent(einheit_kurzbz,uid,updateamum,updatevon) ".
"values('".$this->kurzbz."','".$uid."',now(),'".$_SERVER['PHP_AUTH_USER']."')";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
function deleteStudent($uid) {
if (is_null($this->conn)) {
return false;
}
$qry="delete from tbl_einheitstudent ".
"where einheit_kurzbz='".$this->kurzbz."' and uid='$uid'";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* Alle Einheiten zurueckgeben
* @return array Array der einheiten
*/
function getAll($studiengang_kz='')
{
if (is_null($this->conn)) {
return false;
}
if (strlen($studiengang_kz)>0)
{
$where=" where tbl_einheit.studiengang_kz='".$studiengang_kz."' ";
} else
{
$where="";
}
$qry="select tbl_einheit.*,tbl_studiengang.kurzbz from tbl_einheit join tbl_studiengang using(studiengang_kz) ".
"$where order by einheit_kurzbz;";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new einheit($this->conn);
$l->kurzbz=$row->einheit_kurzbz;
$l->stg_kz=$row->studiengang_kz;
$l->stg_kurzbz=$row->kurzbz;
$l->bezeichnung=$row->bezeichnung;
$l->semester=$row->semester;
$l->typ=$row->typ;
$l->mailgrp_kurzbz=$row->mailgrp_kurzbz;
$result[]=$l;
}
return $result;
}
/**
* Liste aller Studenten zurueckgeben
* @param string $studiengang_kz optional
* @return array Array mit allen Studenten, false bei fehler
*/
function getStudenten($studiengang_kz='')
{
if (is_null($this->conn)) {
return false;
}
if (strlen($studiengang_kz)>0)
{
$where=" and tbl_einheit.studiengang_kz='".$studiengang_kz."' ";
} else
{
$where="";
}
$qry="select einheit_kurzbz,uid ".
"from tbl_einheitstudent join tbl_student using(uid) join tbl_person using(uid) ".
" join tbl_einheit using (einheit_kurzbz) ".
"where einheit_kurzbz='".$this->kurzbz."' $where ".
"order by upper(tbl_person.nachname),upper(tbl_person.vornamen)";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new student($this->conn,$row->uid);
$result[]=$l;
}
return $result;
}
/**
* Liefert die Anzahl der Studenten in einer Einheit
* @param string kurzbzlang
* @return anzahl der Studenten
*/
function countStudenten($einheit_kurzbz)
{
$qry = "Select count(*) as anzahl from tbl_einheitstudent where einheit_kurzbz='$einheit_kurzbz'";
if($result=pg_query($this->conn,$qry))
{
if($row=pg_fetch_object($result))
return $row->anzahl;
else
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
}
else
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
}
}
?>
+92
View File
@@ -0,0 +1,92 @@
<?php
class fachbereich
{
/**
* @var integer
*/
var $id;
/**
* @var string
*/
var $kurzbz;
/**
* @var string
*/
var $bezeichnung;
/**
* @var string;
*/
var $farbe;
/**
* @var integer
*/
var $studiengang_kz;
/**
* @var boolean default true
*/
var $boolean = true;
/**
*
* @var studiengang_kurzbz
*/
var $studiengang_kurzbz;
/**
* @var string
*/
var $errormsg;
/**
* @var resource
*/
var $conn;
function fachbereich($conn)
{
$this->conn = $conn;
}
/**
* Alle Fachbereiche zurückgeben
* @return array mit Fachbereichen oder false=fehler
*/
function getAll()
{
if (is_null($this->conn))
{
return false;
}
$qry = "select fachbereich_id,tbl_fachbereich.kurzbz,tbl_fachbereich.bezeichnung,tbl_fachbereich.farbe,tbl_fachbereich.studiengang_kz,".
"tbl_studiengang.kurzbz as studiengang_kurzbz ".
"from tbl_fachbereich join tbl_studiengang using(studiengang_kz) ".
"order by tbl_Fachbereich.kurzbz";
//echo $qry;
if (!($erg = pg_exec($this->conn, $qry)))
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
$result = array();
$num_rows = pg_numrows($erg);
for ($i = 0; $i < $num_rows; $i ++)
{
// Record holen
$row = pg_fetch_object($erg, $i);
// Instanz erzeugen
$fb = new fachbereich($this->conn);
$fb->id = $row->fachbereich_id;
$fb->kurzbz = $row->kurzbz;
$fb->bezeichnung = $row->bezeichnung;
$fb->farbe = $row->farbe;
$fb->studiengang_kz = $row->studiengang_kz;
$fb->studiengang_kurzbz = $row->studiengang_kurzbz;
// in array speichern
$result[] = $fb;
}
return $result;
}
}
?>
+355
View File
@@ -0,0 +1,355 @@
<?php
/**
* Klasse Adresse (FAS-Online)
* @create 13-03-2006
*/
class adresse
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var adresse Objekt
//Tabellenspalten
var $adresse_id; // @var integer
var $bismeldeadresse; // @var boolean
var $gemeinde; // @var string
var $name; // @var string
var $nation; // @var string
var $ort; // @var string
var $person_id; // @var integer
var $plz; // @var string
var $strasse; // @var string
var $typ; // @var integer
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
var $zustelladresse; // @var boolean
/**
* Konstruktor
* @param $conn Connection
* $adress_id ID der Adresse die geladen werden soll (Default=null)
*/
function adresse($conn,$adress_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($adress_id != null)
$this->load($adress_id);
}
/**
* Laedt die Funktion mit der ID $adress_id
* @param $adress_id ID der zu ladenden Funktion
* @return true wenn ok, false im Fehlerfall
*/
function load($adress_id)
{
//Pruefen ob adress_id eine gueltige Zahl ist
if(!is_numeric($adress_id) || $adress_id == '')
{
$this->errormsg = 'Adress_id muss eine Zahl sein';
return false;
}
//Daten aus der Datenbank lesen
$qry = "SELECT * FROM adresse WHERE adresse_pk=$adress_id";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = pg_fetch_object($res))
{
$this->adresse_id = $row->adresse_pk;
$this->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false);
$this->gemeinde = $row->gemeinde;
$this->name = $row->name;
$this->nation = $row->nation;
$this->ort = $row->ort;
$this->person_id = $row->person_fk;
$this->plz = $row->plz;
$this->strasse = $row->strasse;
$this->typ = $row->typ;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
$this->zustelladresse = ($row->zustelladresse=='J'?true:false);
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Laedt alle adressen zu der Person die uebergeben wird
* @param $pers_id ID der Person zu der die Adressen geladen werden sollen
* @return true wenn ok, false im Fehlerfall
*/
function load_pers($pers_id)
{
//Pruefen ob pers_id eine gueltige Zahl ist
if(!is_numeric($pers_id) || $pers_id == '')
{
$this->errormsg = 'person_id muss eine gueltige Zahl sein';
return false;
}
//Lesen der Daten aus der Datenbank
$qry = "SELECT * FROM adresse WHERE person_fk=$pers_id";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$adr_obj = new adresse($this->conn);
$adr_obj->adresse_id = $row->adresse_pk;
$adr_obj->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false);
$adr_obj->gemeinde = $row->gemeinde;
$adr_obj->name = $row->name;
$adr_obj->nation = $row->nation;
$adr_obj->ort = $row->ort;
$adr_obj->person_id = $row->person_fk;
$adr_obj->plz = $row->plz;
$adr_obj->strasse = $row->strasse;
$adr_obj->typ = $row->typ;
$adr_obj->updateamum = $row->creationdate;
$adr_obj->updatevon = $row->creationuser;
$adr_obj->zustelladresse = ($row->zustelladresse=='J'?true:false);
$this->result[] = $adr_obj;
}
return true;
}
/**
* Laedt alle Adressen aus der Datenbank
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM adresse";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$adr_obj = new adresse($this->conn);
$adr_obj->adresse_id = $row->adresse_pk;
$adr_obj->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false);
$adr_obj->gemeinde = $row->gemeinde;
$adr_obj->name = $row->name;
$adr_obj->nation = $row->nation;
$adr_obj->ort = $row->ort;
$adr_obj->person_id = $row->person_fk;
$adr_obj->plz = $row->plz;
$adr_obj->strasse = $row->strasse;
$adr_obj->typ = $row->typ;
$adr_obj->updateamum = $row->creationdate;
$adr_obj->updatevon = $row->creationuser;
$adr_obj->zustelladresse = ($row->zustelladresse=='J'?true:false);
$this->result[] = $adr_obj;
}
return true;
}
/**
* Prueft die Variablen auf gueltigkeit
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
//Zahlenfelder pruefen
$this->errormsg='Ein Zahlenfeld enthaelt ungueltige Zeichen';
if(!is_numeric($this->person_id))
{
$this->errormsg='Person_id enthaelt ungueltige Zeichen:'.$this->person_id;
return false;
}
if(!is_numeric($this->typ))
{
$this->errormsg='Typ enthaelt ungueltige Zeichen';
return false;
}
//Gesamtlaenge pruefen
$this->errormsg='Eine der Gesamtlaengen wurde ueberschritten';
if(strlen($this->name)>255)
{
$this->errormsg = 'Name darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->strasse)>255)
{
$this->errormsg = 'Strasse darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->plz)>10)
{
$this->errormsg = 'Plz darf nicht länger als 10 Zeichen sein';
return false;
}
if(strlen($this->ort)>255)
{
$this->errormsg = 'Ort darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->nation)>3)
{
$this->errormsg = 'Nation darf nicht länger als 3 Zeichen sein';
return false;
}
if(strlen($this->gemeinde)>255)
{
$this->errormsg = 'Gemeinde darf nicht länger als 255 Zeichen sein';
return false;
}
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz in die Datenbank
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
* andernfalls wird der Datensatz mit der ID in $adresse_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
//Variablen pruefen
if(!$this->checkvars())
return false;
if($this->new)
{
//Neuen Datensatz einfuegen
//naechste ID aus der Sequence holen
$qry="SELECT nextval('adresse_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn,$qry)))
{
$this->errormsg = 'Fehler beim auslesen der Sequence';
return false;
}
$this->adresse_id = $row->id;
$qry="INSERT INTO adresse (adresse_pk, person_fk, name, strasse, plz, typ, ort, nation, creationdate, creationuser,".
" gemeinde, bismeldeadresse, zustelladresse) VALUES(".
" $this->adresse_id, $this->person_id, '$this->name', '$this->strasse', '$this->plz', $this->typ, '$this->ort',".
" '$this->nation', now(), $this->updatevon, '$this->gemeinde', '".($this->bismeldeadresse?'J':'N')."',".
" '".($this->zustelladresse?'J':'N')."');";
}
else
{
//Updaten des bestehenden Datensatzes
//Pruefen ob adresse_id eine gueltige Zahl ist
if(!is_numeric($this->adresse_id))
{
$this->errormsg = 'adresse_id muss eine gueltige Zahl sein';
return false;
}
$qry="UPDATE adresse SET person_fk='$this->person_id', name='$this->name', strasse='$this->strasse', plz='$this->plz',".
" typ='$this->typ', ort='$this->ort', nation='$this->nation', gemeinde='$this->gemeinde',".
" bismeldeadresse='".($this->bismeldeadresse?'J':'N')."', zustelladresse='".($this->zustelladresse?'J':'N')."'".
" WHERE adresse_pk='$this->adresse_id'";
}
if(pg_query($this->conn,$qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Loescht den Datenensatz mit der ID die uebergeben wird
* @param $adress_id ID die geloescht werden soll
* @return true wenn ok, false im Fehlerfall
*/
function delete($adress_id)
{
//Pruefen ob adresse_id eine gueltige Zahl ist
if(!is_numeric($adress_id) || $adress_id == '')
{
$this->errormsg = 'adresse_id muss eine gueltige Zahl sein';
return false;
}
//loeschen des Datensatzes
$qry="DELETE FROM adresse WHERE adresse_pk=$adress_id;";
if(pg_query($this->conn,$qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim loeschen der Daten';
return false;
}
}
}
?>
+182
View File
@@ -0,0 +1,182 @@
<?php
/**
* Klasse ausbildungssemester (FAS-Online)
* @create 15-03-2006
*/
class ausbildungssemester
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var ausbildungssemester Objekt
var $ausbildungssemester_id; // @var integer
var $studiengang_id; // @var integer
var $name; // @var string
var $personenstatus; // @var integer
var $semester; // @var integer
var $updatevon=0; // @var timestamp
var $updateamum; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $ausbildungssemester_id ID des zu ladenden Datensatzes
*/
function ausbildungssemester($conn, $ausbildungssemester_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($ausbildungssemester_id != null)
$this->load($ausbildungssemester_id);
}
/**
* Laedt einen Datensatz aus der Datenbank
* @param $ausbildungssemester_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function load($ausbildungssemester_id)
{
if(!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == '')
{
$this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM ausbildungssemester WHERE ausbildungssemester_pk = '$ausbildungssemester_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
if($row=pg_fetch_object($res))
{
$this->ausbildungssemester_id = $row->ausbildungssemester_pk;
$this->studiengang_id = $row->studiengang_fk;
$this->semester = $row->semester;
$this->name = $row->name;
$this->personenstatus = $row->personenstatus;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
return true;
}
/**
* Liefert alle ausbildungssemester zu einem Studiengang
* @param $studiengang_id Studiengang_id des Ausbildungssemesters
* @return true wenn ok, false im Fehlerfall
*/
function load_stg($studiengang_id)
{
if(!is_numeric($studiengang_id) || $studiengang_id == '')
{
$this->errormsg = 'studiengang_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM ausbildungssemester WHERE studiengang_fk = '$studiengang_id' order by semester";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
while($row = pg_fetch_object($res))
{
$ausb_obj = new ausbildungssemester($this->conn);
$ausb_obj->ausbildungssemester_id = $row->ausbildungssemester_pk;
$ausb_obj->studiengang_id = $row->studiengang_fk;
$ausb_obj->semester = $row->semester;
$ausb_obj->name = $row->name;
$ausb_obj->personenstatus = $row->personenstatus;
$ausb_obj->updateamum = $row->creationdate;
$ausb_obj->updatevon = $row->creationuser;
$this->result[] = $ausb_obj;
}
return true;
}
/**
* Liefert alle Ausbildungssemester
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM ausbildungssemester;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
while($row = pg_fetch_object($res))
{
$ausb_obj = new ausbildungssemester($this->conn);
$ausb_obj->ausbildungssemester_id = $row->ausbildungssemester_pk;
$ausb_obj->studiengang_id = $row->studiengang_fk;
$ausb_obj->semester = $row->semester;
$ausb_obj->name = $row->name;
$ausb_obj->personenstatus = $row->personenstatus;
$ausb_obj->updateamum = $row->creationdate;
$ausb_obj->updatevon = $row->creationuser;
$this->result[] = $ausb_obj;
}
return true;
}
/**
* Checkt die Variablen vor dem Speichern
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
if(!checkvars())
return false;
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Loescht den Datensatz mit der ID die uebergeben wurde
* @param $ausbildungssemester_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($ausbildungssemester_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
}
?>
+340
View File
@@ -0,0 +1,340 @@
<?php
/**
* Klasse bankverbindung (FAS-Online)
* @create 07-03-2006
*/
class bankverbindung
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var bankverbindung Objekt
//Tabellenspalten
var $bankverbindung_id; // @var integer
var $person_id; // @var integer
var $name; // @var string
var $anschrift; // @var string
var $blz; // @var string
var $bic; // @var string
var $kontonr; // @var string
var $iban; // @var string
var $typ; // @var integer
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $bank_id Zu ladende ID (Default=null)
*/
function bankverbindung($conn, $bank_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($bank_id != null)
$this->load($bank_id);
}
/**
* Prueft die gueltigkeit der Variablen
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
//Gesamtlaenge pruefen
$this->errormsg = 'Eine der Maximiallaengen wurde ueberschritten';
if(strlen($this->name)>255)
{
$this->errormsg = 'Name darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->anschrift)>255)
{
$this->errormsg = 'Anschrift darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->blz)>15)
{
$this->errormsg = 'BLZ darf nicht länger als 15 Zeichen sein';
return false;
}
if(strlen($this->bic)>15)
{
$this->errormsg = 'BIC darf nicht länger als 15 Zeichen sein';
return false;
}
if(strlen($this->kontonr)>25)
{
$this->errormsg = 'KontoNr darf nicht länger als 25 Zeichen sein';
return false;
}
if(strlen($this->iban)>25)
{
$this->errormsg = 'IBAN darf nicht länger als 25 Zeichen sein';
return false;
}
//Zahlenwerte ueberpruefen
$this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen';
if(!is_numeric($this->person_id)) return false;
if(!is_numeric($this->typ)) return false;
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
* andernfalls wird der Datensatz mit der ID in $bankverbindung_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
//Gueltigkeit der Variablen pruefen
if(!$this->checkvars())
return false;
if($this->new)
{
//Neuen Datensatz einfuegen
//Naechste ID aus der Sequence holen
$qry = "SELECT nextval('bankverbindung_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim auslesen der Sequence';
return false;
}
$this->bankverbindung_id = $row->id;
$qry = "INSERT INTO bankverbindung (bankverbindung_pk, person_fk, name, anschrift, blz, bic,".
" kontonr, iban, typ, creationdate, creationuser) VALUES(".
" '$this->bankverbindung_id', '$this->person_id', '$this->name', '$this->anschrift',".
" '$this->blz', '$this->bic', '$this->kontonr', '$this->iban', '$this->typ', now(), $this->updatevon);";
}
else
{
//Datensatz Updaten
//ID pruefen
if(!is_numeric($this->bankverbindung_id))
{
$this->errormsg = 'bankverbindung_id muss eine Zahl sein';
return false;
}
$qry="UPDATE bankverbindung SET person_fk='$this->person_id', name='$this->name',".
" anschrift='$this->anschrift', blz='$this->blz', bic='$this->bic',".
" kontonr='$this->kontonr', iban='$this->iban', typ='$this->typ'".
" WHERE bankverbindung_pk=$this->bankverbindung_id";
}
if(pg_query($this->conn, $qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Loescht den Datensatz mit der uebergebenen ID
* @param $bank_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($bank_id)
{
if(!is_numeric($bank_id) || $bank_id == '')
{
$this->errormsg = 'bank_id muss eine Zahl sein';
return false;
}
$qry="DELETE FROM bankverbindung WHERE bankverbindung_pk=$bank_id";
if(!pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim loeschen der Daten';
return false;
}
else
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
}
/**
* Liefert die Bankverbindung mit der uebergebenen ID
* @param $bank_id ID der bankverbindung
* @return true wenn ok, false im Fehlerfall
*/
function load($bank_id)
{
if(!is_numeric($bank_id) || $bank_id == '')
{
$this->errormsg = 'bank_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM bankverbindung WHERE bankverbindung_pk=$bank_id";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = pg_fetch_object($res))
{
$this->bankverbindung_id = $row->bankverbindung_pk;
$this->person_id = $row->person_fk;
$this->name = $row->name;
$this->anschrift = $row->anschrift;
$this->blz = $row->blz;
$this->bic = $row->bic;
$this->kontonr = $row->kontonr;
$this->iban = $row->iban;
$this->typ = $row->typ;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Liefert alle Bankverbindungen der Person die uebergeben wird
* @param $pers_id ID der Person
* @return true wenn ok, false im Fehlerfall
*/
function load_pers($pers_id)
{
if(!is_numeric($pers_id) || $pers_id == '')
{
$this->errormsg = 'pers_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM bankverbindung WHERE person_fk=$pers_id";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$bank_obj = new bankverbindung($this->conn);
$bank_obj->bankverbindung_id = $row->bankverbindung_pk;
$bank_obj->person_id = $row->person_fk;
$bank_obj->name = $row->name;
$bank_obj->anschrift = $row->anschrift;
$bank_obj->blz = $row->blz;
$bank_obj->bic = $row->bic;
$bank_obj->kontonr = $row->kontonr;
$bank_obj->iban = $row->iban;
$bank_obj->typ = $row->typ;
$bank_obj->updateamum = $row->creationdate;
$bank_obj->updatevon = $row->creationuser;
$this->result[] = $bank_obj;
}
return true;
}
/**
* Liefert alle Bankverbindungen
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM bankverbindung";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$bank_obj = new bankverbindung($this->conn);
$bank_obj->bankverbindung_id = $row->bankverbindung_pk;
$bank_obj->person_id = $row->person_fk;
$bank_obj->name = $row->name;
$bank_obj->anschrift = $row->anschrift;
$bank_obj->blz = $row->blz;
$bank_obj->bic = $row->bic;
$bank_obj->kontonr = $row->kontonr;
$bank_obj->iban = $row->iban;
$bank_obj->typ = $row->typ;
$bank_obj->updateamum = $row->creationdate;
$bank_obj->updatevon = $row->creationuser;
$this->result[] = $bank_obj;
}
return true;
}
function getTypBezeichnung($id)
{
switch($id)
{
case 1: return 'Privatkonto';
case 2: return 'Firmenkonto';
default: return '';
}
}
}
?>
+386
View File
@@ -0,0 +1,386 @@
<?php
/**
* Klasse fuer Berechtigungen der User
* @author Christian Paminger
* @version 1.0
* @updated 11-Feb-2004
*/
class benutzer
{
/**
* interne userberechtigung_id (Zaehler aus DB)
* @var integer
*/
var $userberechtigung_id;
/**
* @var integer
*/
var $studiengang_kz;
/**
* @var integer
*/
var $fachbereich_id;
/**
* @var string
*/
var $berechtigung_kurzbz;
/**
* @var string
*/
var $uid;
/**
* @var string
*/
var $studiensemester_kurzbz;
/**
* @var integer
*/
var $start;
/**
* @var integer
*/
var $ende;
/**
* @var integer
*/
var $starttimestamp;
/**
* @var integer
*/
var $endetimestamp;
/**
* @var string
*/
var $art;
/**
* @var array
*/
var $berechtigungen=array();
/**
* @var string
*/
var $variable;
var $conn; //Vilesci Connection
/**
* @var boolean
*/
var $new;
var $errormsg;
function benutzer($conn)
{
$this->conn=$conn;
$this->new=true;
}
/**
* Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($id)
{
// Berechtigung holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id";
//echo $sql_query;
if(!($erg=pg_exec($this->conn, $sql_query)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1)
{
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->userberechtigung_id=$row->userberechtigung_id;
$this->studiengang_kz=$row->studiengang_kz;
$this->fachbereich_id=$row->fachbereich_id;
$this->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$this->uid=$row->uid;
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$this->start=$row->start;
$this->ende=$row->ende;
$this->art=$row->art;
$this->new=false;
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function save()
{
/*
// Connection holen
if (is_null($conn=$this->getConnection()))
{
return false;
}
// Daten zur Person speichern
if (!person::save()) {
$this->errormsg.="Daten zur LVA konnten nicht gespeichert werden.";
return false;
}
if ($this->new) {
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
"lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,".
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,anmerkung)".
"values(".
"'".$this->lvnr."',".
"'".$this->unr."',".
"'".$this->einheit_kurzbz."',".
"'".$this->lektor."',".
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
(strlen($this->semester)>0?$this->semester:NULL).",".
"'".$this->verband."',".
"'".$this->gruppe."',".
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",".
")";
} else
{
$qry="UPDATE tbl_lehrveranstaltung ".
"SET lvnr='".$this->lvnr."',".
"unr='".$this->unr."',".
"einheit_kurzbz='".$this->einheit_kurzbz."',".
"lektor='".$this->lehrfach_nr."',".
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
"semester=".(strlen($this->semester)>0?$this->semester:NULL).",".
"verband='".$this->verband."',".
"gruppe='".$this->gruppe."',".
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
}
//echo "<br>".$qry;
if(!@pg_query($conn, $qry))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
return true;
*/
}
/**
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
* Fehlermeldung liegt in errormsg.
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
* @param string $uid UserID
* @return variabel Array mit LVA; <b>false</b> bei Fehler
*/
function getBerechtigungen($uid)
{
// Berechtigungen holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (start<now() OR start IS NULL) AND (ende>now() OR ende IS NULL)";
//echo $sql_query;
if(!$erg=@pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
//$num_rows=pg_numrows($erg);
while($row=pg_fetch_object($erg))
{
$b=new berechtigung($this->conn);
$b->userberechtigung_id=$row->userberechtigung_id;
$b->studiengang_kz=$row->studiengang_kz;
$b->fachbereich_id=$row->fachbereich_id;
$b->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$b->uid=$row->uid;
$b->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$b->start=$row->start;
if ($row->start!=null)
$b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4));
else
$b->starttimestamp=null;
$b->ende=$row->ende;
if ($row->ende!=null)
$b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4));
else
$b->endetimestamp=null;
$b->art=$row->art;
$this->berechtigungen[]=$b;
}
return true;
}
function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null)
{
$timestamp=time();
foreach ($this->berechtigungen as $b)
{
if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0)
&& strstr($b->art,$art))
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
}
return false;
}
/**
* Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck.
* Optional wird auf Berechtigung eingeschraenkt.
* Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0.
*/
function getStgKz($berechtigung=null)
{
$studiengang_kz=array();
$timestamp=time();
foreach ($this->berechtigungen as $b)
if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
$studiengang_kz[]=$b->studiengang_kz;
$studiengang_kz=array_unique($studiengang_kz);
sort($studiengang_kz);
return $studiengang_kz;
}
/**
* Setzt die Studiensemester Variable
*/
function setVariableStudiensemester($user,$stsem)
{
//Vorhandende Variable aendern
$qry = "Update tbl_variable SET wert='$stsem' WHERE uid='$user' AND name='semester_aktuell'";
if($result = pg_query($this->conn,$qry))
{
if(pg_affected_rows($result)==0)
{
//Falls Variable nicht vorhanden ist eine neue anlegen
$qry = "INSERT INTO tbl_variable(uid, name, wert) values('$user', 'semester_aktuell', '$stsem')";
if(pg_query($this->conn,$qry))
return true;
else
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
}
else
return true;
}
else
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
}
function getpossibilities($variable)
{
$ret = array();
switch($variable)
{
case 'semester_aktuell':
$qry = "Select * from tbl_studiensemester order by start";
if($result = pg_query($this->conn,$qry))
{
while($row=pg_fetch_object($result))
$ret[] = $row->studiensemester_kurzbz;
}
break;
}
return $ret;
}
function loadVariables($user)
{
if(!($result=@pg_query($this->conn, "SELECT * FROM tbl_variable WHERE uid='$user'")))
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
else
$num_rows=@pg_numrows($result);
while($row=pg_fetch_object($result))
{
$this->variable->{$row->name}=$row->wert;
}
if (!isset($this->variable->semester_aktuell))
{
if(!($result=@pg_query($this->conn, 'SELECT * FROM tbl_studiensemester WHERE ende>now() ORDER BY start LIMIT 1')))
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
else
{
$num_rows=@pg_numrows($result);
if ($num_rows>0)
{
$row=pg_fetch_object($result);
$this->variable->semester_aktuell=$row->studiensemester_kurzbz;
}
}
}
if (!isset($this->variable->db_stpl_table))
$this->variable->db_stpl_table='stundenplan';
if (!isset($this->variable->fas_id))
$this->variable->fas_id=0;
if (!isset($this->variable->sleep_time))
$this->variable->sleep_time=300;
return true;
}
}
?>

Some files were not shown because too many files have changed in this diff Show More