From 00cf3a02d5ce93d5fe13b7205ca292807895775e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 23 Mar 2007 14:20:21 +0000 Subject: [PATCH] FAS: - Bei Auswahl eines Lektors werden die LVs zu denen er zugeteilt ist angezeigt. --- content/fasoverlay.js.php | 94 ++++++++++++++----- content/fasoverlay.xul.php | 2 +- content/lvplanung/lehrveranstaltungDBDML.php | 30 +++++- .../lvplanung/lehrveranstaltungoverlay.js.php | 11 +++ .../lehrveranstaltungoverlay.xul.php | 4 +- include/lehreinheit.class.php | 9 +- include/lehrveranstaltung.class.php | 61 ++++++++++++ rdf/lehrveranstaltung_einheiten.rdf.php | 15 ++- 8 files changed, 190 insertions(+), 36 deletions(-) diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php index 02a3799ff..308fe6619 100644 --- a/content/fasoverlay.js.php +++ b/content/fasoverlay.js.php @@ -152,7 +152,7 @@ function auswahlValues() this.lektor_uid=null; } -function onVerbandSelect(evt) +function onVerbandSelect(event) { var contentFrame=document.getElementById('iframeTimeTableWeek'); var tree=document.getElementById('tree-verband'); @@ -160,10 +160,21 @@ function onVerbandSelect(evt) if(tree.currentIndex==-1) return; - //Wenn nicht auf eine der Zeilen gedrueckt wurde (zb Scrollbar) -> beenden - if(evt.target.nodeName!='treechildren') + var row = { }; + var col = { }; + var child = { }; + + tree.treeBoxObject.getCellAt(event.pageX, event.pageY, row, col, child) + + //Wenn es keine Row ist sondern ein Header oder Scrollbar dann abbrechen + if (!col.value) + return false; + + //Wenn eine andere row markiert ist als angeklickt wurde -> beenden. + //Dies kommt vor wenn ein Subtree geoeffnet wird + if(row.value!=tree.currentIndex) return; - + var col; col = tree.columns ? tree.columns["stg_kz"] : "stg_kz"; var stg_kz=tree.view.getCellText(tree.currentIndex,col); @@ -246,6 +257,7 @@ function onVerbandSelect(evt) treeLV.database.AddDataSource(LvTreeDatasource); LvTreeDatasource.addXMLSinkObserver(LvTreeSinkObserver); treeLV.builder.addListener(LvTreeListener); + document.getElementById('lehrveranstaltung-toolbar-lehrauftrag').hidden=true; } catch(e) { @@ -268,31 +280,65 @@ function onOrtSelect() contentFrame.setAttribute('src', url); } -function onLektorSelect() +function onLektorSelect(event) { -/* - var contentFrame=document.getElementById('iframeTimeTableWeek'); - var treeLektor=document.getElementById('tree-lektor'); - if(treeLektor.currentIndex==-1) + var tree=document.getElementById('tree-lektor'); + //Wenn nichts markiert wurde -> beenden + if(tree.currentIndex==-1) return; + + var row = { }; + var col = { }; + var child = { }; - var uid=treeLektor.view.getCellText(treeLektor.currentIndex,"uid"); - if(uid=='') + tree.treeBoxObject.getCellAt(event.pageX, event.pageY, row, col, child) + + //Wenn es keine Row ist sondern ein Header oder Scrollbar dann abbrechen + if (!col.value) + return false; + + //Wenn eine andere row markiert ist als angeklickt wurde -> beenden. + //Dies kommt vor wenn ein Subtree geoeffnet wird + if(row.value!=tree.currentIndex) return; - //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 = "content/timetable-week.xul.php"; - url+=attributes; - if (url) - contentFrame.setAttribute('src', url); - // LVAs - var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung'); - vboxLehrveranstalungPlanung.setAttribute('datasources','../rdf/lehreinheit-lvplan.rdf.php?'+"type=lektor&lektor="+uid); -*/ + col = tree.columns ? tree.columns["uid"] : "uid"; + var uid=tree.view.getCellText(tree.currentIndex,col); + + var stg_idx = tree.view.getParentIndex(tree.currentIndex); + var col = tree.columns ? tree.columns["studiengang_kz"] : "studiengang_kz"; + var stg_kz=tree.view.getCellText(stg_idx,col); + + document.getElementById('LehrveranstaltungEditor').setAttribute('stg_kz',stg_kz); + document.getElementById('LehrveranstaltungEditor').setAttribute('uid',uid); + + // Lehrveranstaltung des Lektors laden + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + try + { + url = 'rdf/lehrveranstaltung_einheiten.rdf.php?stg_kz='+stg_kz+'&uid='+uid+'&'+gettimestamp(); + var treeLV=document.getElementById('lehrveranstaltung-tree'); + + //Alte DS entfernen + var oldDatasources = treeLV.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + treeLV.database.RemoveDataSource(oldDatasources.getNext()); + } + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + LvTreeDatasource = rdfService.GetDataSource(url); + LvTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + LvTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + treeLV.database.AddDataSource(LvTreeDatasource); + LvTreeDatasource.addXMLSinkObserver(LvTreeSinkObserver); + treeLV.builder.addListener(LvTreeListener); + document.getElementById('lehrveranstaltung-toolbar-lehrauftrag').hidden=false; + } + catch(e) + { + debug(e); + } } function loadURL(event) diff --git a/content/fasoverlay.xul.php b/content/fasoverlay.xul.php index 660fd5fbb..fd00bf5dc 100644 --- a/content/fasoverlay.xul.php +++ b/content/fasoverlay.xul.php @@ -98,7 +98,7 @@ echo '';*/ -semesterstunden = '0'; $lem->planstunden = '0'; - $lem->faktor = '1'; $lem->anmerkung = ''; $lem->bismelden = true; $lem->updateamum = date('Y-m-d H:i:s'); @@ -170,7 +169,7 @@ if(!$error) $lem->insertvon = $user; $lem->new=true; - + //Stundensatz aus tbl_mitarbeiter holen $qry = "SELECT stundensatz FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($_POST['mitarbeiter_uid'])."'"; if($result = pg_query($conn, $qry)) { @@ -194,7 +193,32 @@ if(!$error) $return=false; $errormsg='Fehler bei einer Datenbankabfrage:'.pg_errormessage($conn); } - + + //Faktor aus tbl_lehrveranstaltung holen + $qry = "SELECT planfaktor FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE lehreinheit_id='".$_POST['lehreinheit_id']."';"; + if($result = pg_query($conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + if($row->planfaktor!='') + $lem->faktor = $row->planfaktor; + else + $lem->faktor = '0'; + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehrveranstaltung wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Fehler in einer Datenbankabfrage:'.pg_errormessage($conn); + } + if(!$error) { if($lem->save()) diff --git a/content/lvplanung/lehrveranstaltungoverlay.js.php b/content/lvplanung/lehrveranstaltungoverlay.js.php index e96df40c0..11b211d27 100644 --- a/content/lvplanung/lehrveranstaltungoverlay.js.php +++ b/content/lvplanung/lehrveranstaltungoverlay.js.php @@ -170,6 +170,17 @@ function LvDetailMitarbeiterTreeKeyPress(event) LeMitarbeiterDel(); } +// **** +// * Erstellt den Lehrauftrag fuer +// * einen Mitarbeiter +// **** +function LvCreateLehrauftrag() +{ + stg = document.getElementById('LehrveranstaltungEditor').getAttribute('stg_kz'); + uid = document.getElementById('LehrveranstaltungEditor').getAttribute('uid'); + alert('stg:'+stg+' uid:'+uid); +} + // ****************** FUNKTIONEN ************************** // // **** diff --git a/content/lvplanung/lehrveranstaltungoverlay.xul.php b/content/lvplanung/lehrveranstaltungoverlay.xul.php index 8834ba7af..a36fef295 100644 --- a/content/lvplanung/lehrveranstaltungoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungoverlay.xul.php @@ -44,14 +44,14 @@ echo ' - + + diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php index 01522705e..eab5a5575 100644 --- a/include/lehreinheit.class.php +++ b/include/lehreinheit.class.php @@ -199,9 +199,14 @@ class lehreinheit } - function load_lehreinheiten($lehrveranstaltung_id, $studiensemester_kurzbz) + function load_lehreinheiten($lehrveranstaltung_id, $studiensemester_kurzbz, $uid='') { - $qry = "SELECT * FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id='$lehrveranstaltung_id' AND studiensemester_kurzbz='$studiensemester_kurzbz' ORDER BY lehreinheit_id"; + $qry = "SELECT * FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id='$lehrveranstaltung_id' AND studiensemester_kurzbz='$studiensemester_kurzbz' "; + + if($uid!='') + $qry .= " AND lehreinheit_id IN ( SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."')"; + + $qry.= "ORDER BY lehreinheit_id"; if($result = pg_query($this->conn, $qry)) { diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 55c78ac33..f96daf794 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -439,5 +439,66 @@ class lehrveranstaltung { return false; } + + // **************************************************** + // * Laedt die Lehrveranstaltung zu der ein Mitarbeiter + // * in einem Studiensemester zugeordnet ist + // * @param studiengang_kz, uid, studiensemester_kurzbz + // * @return true wenn ok, false wenn Fehler + // **************************************************** + function loadLVAfromMitarbeiter($studiengang_kz, $uid, $studiensemester_kurzbz) + { + if(!is_numeric($studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter WHERE "; + if($studiengang_kz!=0) + $qry.="tbl_lehrveranstaltung.studiengang_kz='".addslashes($studiengang_kz)."' AND "; + + $qry.= "tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheitmitarbeiter.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND + tbl_lehreinheit.studiensemester_kurzbz = '".addslashes($studiensemester_kurzbz)."' AND + tbl_lehreinheitmitarbeiter.mitarbeiter_uid='".addslashes($uid)."';"; + if($result = pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + $lv_obj = new lehrveranstaltung($this->conn, null, null); + + $lv_obj->lehrveranstaltung_id=$row->lehrveranstaltung_id; + $lv_obj->studiengang_kz=$row->studiengang_kz; + $lv_obj->bezeichnung=$row->bezeichnung; + $lv_obj->kurzbz=$row->kurzbz; + $lv_obj->semester=$row->semester; + $lv_obj->ects=$row->ects; + $lv_obj->semesterstunden=$row->semesterstunden; + $lv_obj->anmerkung=$row->anmerkung; + $lv_obj->lehre=($row->lehre=='t'?true:false); + $lv_obj->lehreverzeichnis=$row->lehreverzeichnis; + $lv_obj->aktiv=($row->aktiv=='t'?true:false); + $lv_obj->ext_id=$row->ext_id; + $lv_obj->insertamum=$row->insertamum; + $lv_obj->insertvon=$row->insertvon; + $lv_obj->planfaktor=$row->planfaktor; + $lv_obj->planlektoren=$row->planlektoren; + $lv_obj->planpersonalkosten=$row->planpersonalkosten; + $lv_obj->plankostenprolektor=$row->plankostenprolektor; + $lv_obj->updateamum=$row->updateamum; + $lv_obj->updatevon=$row->updatevon; + $lv_obj->sprache=$row->sprache; + + $this->lehrveranstaltungen[] = $lv_obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Lesen aus der Datenbank'; + return false; + } + } } ?> \ No newline at end of file diff --git a/rdf/lehrveranstaltung_einheiten.rdf.php b/rdf/lehrveranstaltung_einheiten.rdf.php index 12c29ca9e..d5c56b9d3 100644 --- a/rdf/lehrveranstaltung_einheiten.rdf.php +++ b/rdf/lehrveranstaltung_einheiten.rdf.php @@ -60,13 +60,20 @@ $grp=(isset($_GET['grp'])?$_GET['grp']:''); $ver=(isset($_GET['ver'])?$_GET['ver']:''); $sem=(isset($_GET['sem'])?$_GET['sem']:''); $stg_kz=(isset($_GET['stg_kz'])?$_GET['stg_kz']:''); -$lektor=(isset($_GET['lektor'])?$_GET['lektor']:''); - +$uid=(isset($_GET['uid'])?$_GET['uid']:''); loadVariables($conn, $user); + // LVAs holen $lvaDAO=new lehrveranstaltung($conn, null, true); -$lvaDAO->load_lva($stg_kz, $sem); +if($uid!='') +{ + $lvaDAO->loadLVAfromMitarbeiter($stg_kz, $uid, $semester_aktuell); +} +else +{ + $lvaDAO->load_lva($stg_kz, $sem); +} $rdf_url='http://www.technikum-wien.at/lehrveranstaltung_einheiten'; @@ -119,7 +126,7 @@ $rdf_url='http://www.technikum-wien.at/lehrveranstaltung_einheiten'; //zugehoerige LE holen $le = new lehreinheit($conn, null, true); - if(!$le->load_lehreinheiten($row_lva->lehrveranstaltung_id, $semester_aktuell)) + if(!$le->load_lehreinheiten($row_lva->lehrveranstaltung_id, $semester_aktuell, $uid)) echo "Fehler: $le->errormsg"; foreach ($le->lehreinheiten as $row_le)