mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
40392d3cb9
Übersicht angezeigt
483 lines
17 KiB
PHP
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');
|
|
}
|