*/ require_once('../../config/vilesci.config.inc.php'); require_once('../../include/functions.inc.php'); $user = get_uid(); ?> // *********** Globale Variablen *****************// var MitarbeiterBuchungSelectBuchung=null; //Buchung die nach dem Refresh markiert werden soll var MitarbeiterBuchungTreeDatasource; //Datasource des BuchungTrees // ********** Observer und Listener ************* // // **** // * Observer fuer Buchung Tree // * startet Rebuild nachdem das Refresh // * der datasource fertig ist // **** var MitarbeiterBuchungTreeSinkObserver = { onBeginLoad : function(pSink) { tree = document.getElementById('mitarbeiter-buchung-tree'); tree.removeEventListener('select', MitarbeiterBuchungAuswahl, false); }, onInterrupt : function(pSink) {}, onResume : function(pSink) {}, onError : function(pSink, pStatus, pError) { debug('Error MitarbeiterBuchungTreeSinkObserver:'+pError+':'+pStatus); }, onEndLoad : function(pSink) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); document.getElementById('mitarbeiter-buchung-tree').builder.rebuild(); } }; // **** // * Nach dem Rebuild wird die Buchung wieder // * markiert // **** var MitarbeiterBuchungTreeListener = { willRebuild : function(builder) { }, didRebuild : function(builder) { tree = document.getElementById('mitarbeiter-buchung-tree'); tree.addEventListener('select', MitarbeiterBuchungAuswahl, false); //timeout nur bei Mozilla notwendig da sonst die rows //noch keine values haben. Ab Seamonkey funktionierts auch //ohne dem setTimeout window.setTimeout(MitarbeiterBuchungTreeSelectBuchung,10); } }; // ****************** FUNKTIONEN ************************** // function MitarbeiterBuchungLoad(person_id) { if(person_id=='') return; netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); // *** Konto *** var menulistkonto = document.getElementById('mitarbeiter-buchung-menulist-konto'); url='rdf/wawi_konto.rdf.php?person_id='+person_id+"&"+gettimestamp(); //Alte DS entfernen var oldDatasources = menulistkonto.database.GetDataSources(); while(oldDatasources.hasMoreElements()) { menulistkonto.database.RemoveDataSource(oldDatasources.getNext()); } //Refresh damit die entfernten DS auch wirklich entfernt werden menulistkonto.builder.rebuild(); var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); var myDatasource = rdfService.GetDataSourceBlocking(url); menulistkonto.database.AddDataSource(myDatasource); menulistkonto.builder.rebuild(); // *** Buchung *** buchungtree = document.getElementById('mitarbeiter-buchung-tree'); url='rdf/wawi_buchung.rdf.php?person_id='+person_id+"&"+gettimestamp(); try { MitarbeiterBuchungTreeDatasource.removeXMLSinkObserver(MitarbeiterBuchungTreeSinkObserver); buchungtree.builder.removeListener(MitarbeiterBuchungTreeListener); } catch(e) {} //Alte DS entfernen var oldDatasources = buchungtree.database.GetDataSources(); while(oldDatasources.hasMoreElements()) { buchungtree.database.RemoveDataSource(oldDatasources.getNext()); } //Refresh damit die entfernten DS auch wirklich entfernt werden buchungtree.builder.rebuild(); var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); MitarbeiterBuchungTreeDatasource = rdfService.GetDataSource(url); MitarbeiterBuchungTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); MitarbeiterBuchungTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); buchungtree.database.AddDataSource(MitarbeiterBuchungTreeDatasource); MitarbeiterBuchungTreeDatasource.addXMLSinkObserver(MitarbeiterBuchungTreeSinkObserver); buchungtree.builder.addListener(MitarbeiterBuchungTreeListener); MitarbeiterBuchungDisableFields(false); } // **** // * Selectiert die Buchung nachdem der Tree // * rebuildet wurde. // **** function MitarbeiterBuchungTreeSelectBuchung() { var tree=document.getElementById('mitarbeiter-buchung-tree'); if(tree.view) var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln else return false; //In der globalen Variable ist die zu selektierende Buchung gespeichert if(MitarbeiterBuchungSelectBuchung!=null) { //Jetzt die wirkliche Anzahl (aller) Zeilen holen items = tree.view.rowCount; for(var i=0;i