*/ require_once('../../config/vilesci.config.inc.php'); ?> // *********** Globale Variablen *****************// var TaskSelectID=null; //ID des Task Eintrages der nach dem Refresh markiert werden soll var filterErledigt; //Tasks filtern var currentProjektPhaseID; // ********** Observer und Listener ************* // // **** // * Observer fuer LV Tree // * startet Rebuild nachdem das Refresh // * der datasource fertig ist // **** var TaskTreeSinkObserver = { onBeginLoad : function(pSink) {}, onInterrupt : function(pSink) {}, onResume : function(pSink) {}, onError : function(pSink, pStatus, pError) { debug('onerror:'+pError); }, onEndLoad : function(pSink) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); document.getElementById('projekttask-tree').builder.rebuild(); } }; // **** // * Nach dem Rebuild wird die Lehreinheit wieder // * markiert // **** var TaskTreeListener = { willRebuild : function(builder) { }, didRebuild : function(builder) { //timeout nur bei Mozilla notwendig da sonst die rows //noch keine values haben. Ab Seamonkey funktionierts auch //ohne dem setTimeout window.setTimeout(TaskTreeSelectTask,10); // Progressmeter stoppen //document.getElementById('statusbar-progressmeter').setAttribute('mode','determined'); } }; // ****************** FUNKTIONEN ************************** // // **** // * Laedt dynamisch die Tasks // **** function LoadTasks(projekt_phase_id, filter) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); try { // wenn phase übergeben wurde -> setzte globale variable if(projekt_phase_id != null && projekt_phase_id != '' && typeof optional && "undefined") currentProjektPhaseID = projekt_phase_id; // wenn filter übergeben wurde -> setze globale variable if(filter != null && filter != '' && typeof filter != "undefined") filterErledigt = filter; url = "rdf/projekttask.rdf.php?projektphase_id="+currentProjektPhaseID+"&"+gettimestamp(); // überprüfe ob filter gesetzt ist if(filterErledigt != null) url = "rdf/projekttask.rdf.php?projektphase_id="+currentProjektPhaseID+"&filter="+filterErledigt+"&"+gettimestamp(); var treeTask=document.getElementById('projekttask-tree'); //Alte DS entfernen var oldDatasources = treeTask.database.GetDataSources(); while(oldDatasources.hasMoreElements()) { treeTask.database.RemoveDataSource(oldDatasources.getNext()); } try { datasourceTreeTask.removeXMLSinkObserver(TaskTreeSinkObserver); treeTask.builder.removeListener(TaskTreeListener); } catch(e) {} var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); datasourceTreeTask = rdfService.GetDataSource(url); datasourceTreeTask.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); datasourceTreeTask.QueryInterface(Components.interfaces.nsIRDFXMLSink); treeTask.database.AddDataSource(datasourceTreeTask); datasourceTreeTask.addXMLSinkObserver(TaskTreeSinkObserver); treeTask.builder.addListener(TaskTreeListener); } catch(e) { debug("whoops Projekttask load failed with exception: "+e); } } // **** // * Laedt dynamisch die Personen fuer das DropDown Menue // **** function RessourceTaskLoad(menulist, id) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var url = 'rdf/ressource.rdf.php?projekt_phase='+id+'&optional&'+gettimestamp(); //nurmittitel=& var oldDatasources = menulist.database.GetDataSources(); while(oldDatasources.hasMoreElements()) { menulist.database.RemoveDataSource(oldDatasources.getNext()); } //Refresh damit die entfernten DS auch wirklich entfernt werden menulist.builder.rebuild(); var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); //if(typeof(filter)=='undefined') // var datasource = rdfService.GetDataSource(url); //else var datasource = rdfService.GetDataSourceBlocking(url); datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); menulist.database.AddDataSource(datasource); menulist.builder.rebuild(); } // **** // * Asynchroner (Nicht blockierender) Refresh des LV Trees // **** function TaskTreeRefresh() { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); //markierte Lehreinheit global speichern damit diese LE nach dem //refresh wieder markiert werden kann. var tree = document.getElementById('projekttask-tree'); try { TaskSelectID = getTreeCellText(tree, "projekttask-treecol-projekttask_id", tree.currentIndex); } catch(e) { TaskSelectID=null; } datasourceTreeTask.Refresh(false); //non blocking } // **** // * neuen Task anlegen // **** function TaskNeu() { var tasktree=document.getElementById('projekttask-tree'); tasktree.view.selection.clearSelection(); tree = document.getElementById('tree-projektmenue'); //Projektphase_id holen var projektphase_id = getTreeCellText(tree, "treecol-projektmenue-projekt_phase_id", tree.currentIndex); if(projektphase_id=='') { alert('Bitte markieren sie im Projektmenue zuerst eine Projektphase'); return false; } //Details zuruecksetzen TaskDetailReset(); TaskDisableFields(false); document.getElementById('textbox-projekttaskdetail-projektphase_id').value=projektphase_id; document.getElementById('caption-projekttask-detail').label='Neuer Task'; //Detail Tab auswaehlen document.getElementById('projekttask-tabs').selectedItem=document.getElementById('projekttask-tab-detail'); } // **** // * Selectiert die Lektorzuordnung nachdem der Tree // * rebuildet wurde. // **** function TaskTreeSelectTask() { var tree=document.getElementById('projekttask-tree'); var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln //In der globalen Variable ist die zu selektierende ID gespeichert if(TaskSelectID!=null) { for(var i=0;i