Files
FHC-Core/content/planner.overlay.js.php
T
2024-10-17 15:34:00 +02:00

483 lines
17 KiB
PHP

<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>
*/
include('../config/vilesci.config.inc.php');
?>
var datasourceTreeProjekt;
var datasourceTreeProjektphase;
var datasourceTreeProjekttask;
var datasourceTreeDokument;
var datasourceTreeBestellung;
var global_filter = '';
function treeProjektmenueSelect()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree=document.getElementById('tree-projektmenue');
// Wenn auf die Ueberschrift geklickt wird, soll nix passieren
if(tree.currentIndex==-1)
return;
var bezeichnung = getTreeCellText(tree, "treecol-projektmenue-bezeichnung", tree.currentIndex);
var oe=getTreeCellText(tree, "treecol-projektmenue-oe", tree.currentIndex);
var projekt_kurzbz=getTreeCellText(tree, "treecol-projektmenue-projekt_kurzbz", tree.currentIndex);
var projekt_phase=getTreeCellText(tree, "treecol-projektmenue-projekt_phase", tree.currentIndex);
var projekt_phase_id=getTreeCellText(tree, "treecol-projektmenue-projekt_phase_id", tree.currentIndex);
//Neu und Delete Button fuer Projekte und Phasen aktivieren/deaktivieren
if (projekt_kurzbz=='')
{
document.getElementById('toolbarbutton-projekt-neu').disabled=false;
document.getElementById('toolbarbutton-projektphase-neu').disabled=true;
}
else
{
document.getElementById('toolbarbutton-projekt-neu').disabled=true;
document.getElementById('toolbarbutton-projektphase-neu').disabled=false;
}
//Projekte neu laden
try
{
// Wenn eine OE angeklickt wird, den Tab Projekte anzeigen
if(oe!='' && projekt_kurzbz=='' && projekt_phase_id=='')
{
// Wenn der Ressourceauslastung Tab geoeffnet ist
if(document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-ressourceauslastung'))
{
// und dort der Projekttask Tab geoffnet ist, dann die Anzeige dort neu laden
if(document.getElementById('ressource-tabs').selectedItem==document.getElementById('tab-ressource-projekttask'))
{
reloadRessourceTasks();
}
if(document.getElementById('ressource-tabs').selectedItem==document.getElementById('tab-ressource-projektphase'))
{
// wenn der Phasen Karteireiter offen ist werden die Phasen dort neu geladen
reloadRessourcePhasen();
}
}
else
{
// Wenn der Tab Phase oder Tasks ausgewaehlt ist auf die Projekte wechseln
if(document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-projektphase')
|| document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-projekttask'))
{
document.getElementById('tabs-planner-main').selectedItem=document.getElementById('tab-projekte');
}
}
}
var datasource="<?php echo APP_ROOT; ?>rdf/projekt.rdf.php?oe="+oe+"&filter="+global_filter+"&"+gettimestamp();
var treeProjekt=document.getElementById('tree-projekt');
//Alte DS entfernen
var oldDatasources = treeProjekt.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treeProjekt.database.RemoveDataSource(oldDatasources.getNext());
}
try
{
datasourceTreeProjekt.removeXMLSinkObserver(observerTreeProjekt);
treeProjekt.builder.removeListener(listenerTreeProjekt);
}
catch(e)
{}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
datasourceTreeProjekt = rdfService.GetDataSource(datasource);
datasourceTreeProjekt.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
datasourceTreeProjekt.QueryInterface(Components.interfaces.nsIRDFXMLSink);
treeProjekt.database.AddDataSource(datasourceTreeProjekt);
datasourceTreeProjekt.addXMLSinkObserver(observerTreeProjekt);
treeProjekt.builder.addListener(listenerTreeProjekt);
}
catch(e)
{
debug("whoops Projekt load failed with exception: "+e);
}
// Projektphasen neu laden
if(projekt_kurzbz!='')
{
// Wenn ein Projekt angeklickt wird, ggf Karteireiter wechseln
// Wenn der Ressourceauslastung Tab geoeffnet ist
if(document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-ressourceauslastung'))
{
// und dort der Projekttask Tab geoffnet ist, dann die Anzeige dort neu laden
if(document.getElementById('ressource-tabs').selectedItem==document.getElementById('tab-ressource-projekttask'))
{
reloadRessourceTasks();
}
if(document.getElementById('ressource-tabs').selectedItem==document.getElementById('tab-ressource-projektphase'))
{
// wenn der Phasen Karteireiter offen ist werden die Phasen dort neu geladen
reloadRessourcePhasen();
}
}
else
{
// Wenn der Tab Projekte oder Tasks ausgewaehlt ist auf die Phasen wechseln
if(document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-projekte')
|| document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-projekttask'))
{
document.getElementById('tabs-planner-main').selectedItem=document.getElementById('tab-projektphase');
}
}
try
{
var datasources="<?php echo APP_ROOT; ?>rdf/projektphase.rdf.php?"+gettimestamp();
datasources = datasources + "&filterprj=" + encodeURIComponent(projekt_kurzbz);
var ref="http://www.technikum-wien.at/projektphase/"+oe+"/"+projekt_kurzbz;
var treePhase=document.getElementById('tree-projektphase');
//Alte DS entfernen
var oldDatasources = treePhase.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treePhase.database.RemoveDataSource(oldDatasources.getNext());
}
try
{
datasourceTreeProjektphase.removeXMLSinkObserver(observerTreeProjektphase);
treePhase.builder.removeListener(ProjektphaseTreeListener);
}
catch(e)
{}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
datasourceTreeProjektphase = rdfService.GetDataSource(datasources);
datasourceTreeProjektphase.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
datasourceTreeProjektphase.QueryInterface(Components.interfaces.nsIRDFXMLSink);
treePhase.database.AddDataSource(datasourceTreeProjektphase);
datasourceTreeProjektphase.addXMLSinkObserver(observerTreeProjektphase);
treePhase.builder.addListener(ProjektphaseTreeListener);
treePhase.ref=ref;
}
catch(e)
{
debug("whoops Projektphase load failed with exception: "+e);
}
}
// Projekttasks neu laden
if(projekt_phase_id!='')
{
// Wenn eine Phase angeklickt wird, den Task Karteireiter anzeigen wenn projekt oder phasen tab geoeffnet ist
if(document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-projekte')
|| document.getElementById('tabs-planner-main').selectedItem==document.getElementById('tab-projektphase'))
{
document.getElementById('tabs-planner-main').selectedItem=document.getElementById('tab-projekttask');
}
LoadTasks(projekt_phase_id);
}
document.getElementById('projekttask-toolbar-del').disabled=true;
// Dokumente laden
if(projekt_phase_id!='' || projekt_kurzbz!='')
{
document.getElementById('toolbarbutton-projektdokument-neu').disabled=false;
document.getElementById('toolbarbutton-projektdokument-zuweisung').disabled=false;
try
{
if(projekt_phase_id!='')
url = "<?php echo APP_ROOT; ?>rdf/dms.rdf.php?projektphase_id="+projekt_phase_id+"&"+gettimestamp();
else if(projekt_kurzbz!='')
url = "<?php echo APP_ROOT; ?>rdf/dms.rdf.php?projekt_kurzbz="+projekt_kurzbz+"&"+gettimestamp();
var treeDokument=document.getElementById('tree-projektdokument');
//Alte DS entfernen
var oldDatasources = treeDokument.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treeDokument.database.RemoveDataSource(oldDatasources.getNext());
}
try
{
datasourceTreeDokument.removeXMLSinkObserver(DokumentTreeSinkObserver);
treeDokument.builder.removeListener(DokumentTreeListener);
}
catch(e)
{}
treeDokument.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
datasourceTreeDokument = rdfService.GetDataSource(url);
datasourceTreeDokument.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
datasourceTreeDokument.QueryInterface(Components.interfaces.nsIRDFXMLSink);
treeDokument.database.AddDataSource(datasourceTreeDokument);
datasourceTreeDokument.addXMLSinkObserver(DokumentTreeSinkObserver);
treeDokument.builder.addListener(DokumentTreeListener);
}
catch(e)
{
debug("whoops Documents load failed with exception: "+e);
}
// Gantt Chart laden
drawGantt();
}
else
{
document.getElementById('toolbarbutton-projektdokument-neu').disabled=true;
document.getElementById('toolbarbutton-projektdokument-zuweisung').disabled=true;
drawGantt();
}
// Bestellung laden
if(projekt_phase_id=='' && projekt_kurzbz!='')
{
try
{
url = "<?php echo APP_ROOT; ?>rdf/bestellung.rdf.php?projektKurzbz="+projekt_kurzbz+"&"+gettimestamp();
var treeBestellung=document.getElementById('tree-bestellung');
//Alte DS entfernen
var oldDatasources = treeBestellung.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treeBestellung.database.RemoveDataSource(oldDatasources.getNext());
}
try
{
datasourceTreeBestellung.removeXMLSinkObserver(BestellungTreeSinkObserver);
treeBestellung.builder.removeListener(BestellungTreeListener);
}
catch(e)
{}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
datasourceTreeBestellung = rdfService.GetDataSource(url);
datasourceTreeBestellung.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
datasourceTreeBestellung.QueryInterface(Components.interfaces.nsIRDFXMLSink);
treeBestellung.database.AddDataSource(datasourceTreeBestellung);
datasourceTreeBestellung.addXMLSinkObserver(BestellungTreeSinkObserver);
treeBestellung.builder.addListener(BestellungTreeListener);
}
catch(e)
{
debug("whoops bestellung load failed with exception: "+e);
}
}
if(projekt_kurzbz!='')
{
//Neu Button bei Tasks aktivieren
document.getElementById('projekttask-toolbar-neu').disabled=false;
}
else
{
document.getElementById('projekttask-toolbar-neu').disabled=true;
document.getElementById('projekttask-toolbar-del').disabled=true;
}
}
// ****
// * Dialog fuer neue Ressource starten
// ****
function RessourceNeu()
{
// netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); // Trick 17
var tree=document.getElementById('tree-ressourcemenue');
// var oe=getTreeCellText(tree, "treecol-ressourcemenue-oe", tree.currentIndex);
window.open('<?php echo APP_ROOT; ?>content/projekt/ressource.window.xul.php','Neue Ressource anlegen', 'height=384,width=512,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no');
//alert (oe);
}
// *****
// * Refresht den Projektmenue Tree
// *****
function ProjektmenueRefresh(filter)
{
if(global_filter==undefined || global_filter=='')
global_filter='alle';
if(filter==undefined)
filter=global_filter;
global_filter=filter;
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
if(filter=='alle')
url = "<?php echo APP_ROOT; ?>rdf/projektphase.rdf.php?"+gettimestamp();
else
url = "<?php echo APP_ROOT; ?>rdf/projektphase.rdf.php?filter="+global_filter+"&"+gettimestamp();
var treeProjektmenue=document.getElementById('tree-projektmenue');
//Alte DS entfernen
var oldDatasources = treeProjektmenue.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treeProjektmenue.database.RemoveDataSource(oldDatasources.getNext());
}
treeProjektmenue.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
datasourceTreeProjektmenue = rdfService.GetDataSource(url);
datasourceTreeProjektmenue.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
treeProjektmenue.database.AddDataSource(datasourceTreeProjektmenue);
if(global_filter=='aktuell')
SetStatusBarText('Filter: Aktuelle Projekte');
else if(global_filter=='kommende')
SetStatusBarText('Filter: Aktuelle und Kommende Projekte');
else
SetStatusBarText('Filter: Alle Projekte');
}
catch(e)
{
debug("whoops Projektmenue load failed with exception: "+e);
}
ProjektTreeRefresh();
}
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;
}
/***** Drag Observer fuer Tasks verschieben *****/
var projektTaskDDObserver=
{
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/taskID");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
},
onDragExit: function (evt,flavour,session)
{
},
onDragOver: function(evt,flavour,session)
{
},
onDrop: function (evt,dropdata,session)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
dragservice_ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch (e)
{
debug('treeDragDrop: e');
}
var ds = dragservice_ds;
var tree = document.getElementById('tree-projektmenue')
var row = { }
var col = { }
var child = { }
tree.treeBoxObject.getCellAt(evt.pageX, evt.pageY, row, col, child)
col = tree.columns ? tree.columns["treecol-projektmenue-projekt_phase_id"] : "treecol-projektmenue-projekt_phase_id";
projektphaseID=tree.view.getCellText(row.value,col);
if(projektphaseID == '')
{
alert('keine phase ausgewählt!');
return false;
}
var projekttask_id = dropdata.data;
var soapBody = new SOAPObject("changeProjektPhase");
//soapBody.appendChild(new SOAPObject("username")).val('joe');
//soapBody.appendChild(new SOAPObject("passwort")).val('waschl');
soapBody.appendChild(new SOAPObject("projekttask_id")).val(projekttask_id);
soapBody.appendChild(new SOAPObject("projektphase_id")).val(projektphaseID);
var sr = new SOAPRequest("changeProjektPhase",soapBody);
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/projekttask.soap.php?"+gettimestamp();
SOAPClient.SendRequest(sr, clb_changePhaseTask);
}
};
// ****
// * Callback Funktion nach ändern einer Phase
// ****
function clb_changePhaseTask(respObj)
{
try
{
var id = respObj.Body[0].changeProjektPhaseResponse[0].message[0].Text;
}
catch(e)
{
var fehler = respObj.Body[0].Fault[0].faultstring[0].Text;
alert('Fehler: '+fehler);
return;
}
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
document.getElementById('textbox-projekttaskdetail-projekttask_id').value=id;
TaskSelectID=id;
datasourceTreeTask.Refresh(false); //non blocking
TaskTreeRefresh()
SetStatusBarText('Daten wurden gespeichert');
}