Files
FHC-Core/content/lvplanung/ressourcedialog.js.php
T
oesi c742fc1231 Tempus:
- Kollisionscheck ueberarbeitet
- Kollisionsgrund wird nun im Tooltip angezeigt
- Ressourcenzuordnung zu Stunden
- Option hinzugefuegt um alle Einträge einer Stunde anzuzeigen (zB Incominggruppen)
- Option zum Drop auf bestehende Stunden hinzugefügt (UNR wird automatisch gleichgesetzt)
- Fehler behoben beim Anlegen von Gruppen mit Logins > 16 Zeichen
- Es koennen jetzt mehrere Lektoren definiert werden die nicht kollidieren sollen

Anwesenheitslisten mit Barcode koennen nur fuer alle Studiengaenge auf einmal erstellt werden
2015-05-12 12:28:34 +02:00

393 lines
12 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/global.config.inc.php');
?>
// *********** Globale Variablen *****************//
var RessourceZugeteiltTreeDatasource; //Datasource des RessourceZugeteiltTrees
var RessourceVerplanbarTreeDatasource; //Datasource des RessourceVerplanbarTrees
var RessourceStunden;
var RessourceDatum;
var RessourceStplIDs;
var RessourceZugeteiltTreeDoubleRefresh=false;
var RessourceVerplanbarTreeDoubleRefresh=false;
// ********** Observer und Listener ************* //
// ****
// * Observer fuer RessourceZugeteilt Tree
// * startet Rebuild nachdem das Refresh
// * der datasource fertig ist
// ****
var RessourceZugeteiltTreeSinkObserver =
{
onBeginLoad : function(pSink) {},
onInterrupt : function(pSink) {},
onResume : function(pSink) {},
onError : function(pSink, pStatus, pError) {},
onEndLoad : function(pSink)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
document.getElementById('ressource-zugeteilt-tree').builder.rebuild();
}
};
// ****
// * Nach dem Rebuild wird die Betriebsmittelzuordnung wieder
// * markiert
// ****
var RessourceZugeteiltTreeListener =
{
willRebuild : function(builder) { },
didRebuild : function(builder)
{
if(RessourceZugeteiltTreeDoubleRefresh)
{
// Doppeltes Rebuild damit nach leeren Trees korrekt geladen wird
RessourceZugeteiltTreeDoubleRefresh=false;
window.setTimeout("RessourceZugeteiltTreeRefresh()",10);
}
else
{
window.setTimeout(RessourceZugeteiltTreeSelectZuordnung,10);
}
}
};
// ****
// * Observer fuer RessourceVerplanbar Tree
// * startet Rebuild nachdem das Refresh
// * der datasource fertig ist
// ****
var RessourceVerplanbarTreeSinkObserver =
{
onBeginLoad : function(pSink) {},
onInterrupt : function(pSink) {},
onResume : function(pSink) {},
onError : function(pSink, pStatus, pError) {},
onEndLoad : function(pSink)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
document.getElementById('ressource-verplanbar-tree').builder.rebuild();
}
};
// ****
// * Nach dem Rebuild wird die Betriebsmittelzuordnung wieder
// * markiert
// ****
var RessourceVerplanbarTreeListener =
{
willRebuild : function(builder) { },
didRebuild : function(builder)
{
if(RessourceVerplanbarTreeDoubleRefresh)
{
// Doppeltes Rebuild damit nach leeren Trees korrekt geladen wird
RessourceVerplanbarTreeDoubleRefresh=false;
window.setTimeout("RessourceVerplanbarTreeRefresh()",10);
}
else
{
window.setTimeout(RessourceVerplanbarTreeSelectZuordnung,10);
}
}
};
// ****
// * Laedt die Trees
// ****
function RessourceInit(datum, stunden, stplids)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
RessourceStunden = stunden;
RessourceDatum = datum;
RessourceStplIDs = stplids;
// *** Zugeteilte Betriebsmittel ***
var ressourcezugeteilttree = document.getElementById('ressource-zugeteilt-tree');
// TODO Parameter
url='<?php echo APP_ROOT;?>rdf/stundenplan_betriebsmittel.rdf.php?ts='+gettimestamp();
for(i in stplids)
url = url+'&stundenplan_ids[]='+stplids[i];
//Alte DS entfernen
var oldDatasources = ressourcezugeteilttree.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
ressourcezugeteilttree.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
ressourcezugeteilttree.builder.rebuild();
try
{
RessourceZugeteiltTreeDatasource.removeXMLSinkObserver(RessourceZugeteiltTreeSinkObserver);
ressourcezugeteilttree.builder.removeListener(RessourceZugeteiltTreeListener);
}
catch(e)
{}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
RessourceZugeteiltTreeDatasource = rdfService.GetDataSource(url);
RessourceZugeteiltTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
RessourceZugeteiltTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
ressourcezugeteilttree.database.AddDataSource(RessourceZugeteiltTreeDatasource);
RessourceZugeteiltTreeDatasource.addXMLSinkObserver(RessourceZugeteiltTreeSinkObserver);
ressourcezugeteilttree.builder.addListener(RessourceZugeteiltTreeListener);
// *** Verplanbare Betriebsmittel ***
var ressourceverplanbartree = document.getElementById('ressource-verplanbar-tree');
// TODO Parameter
url='<?php echo APP_ROOT;?>rdf/betriebsmittel.rdf.php?datum='+datum+'&'+gettimestamp();
for(i in stunden)
url = url+'&stunde[]='+stunden[i];
//Alte DS entfernen
var oldDatasources = ressourceverplanbartree.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
ressourceverplanbartree.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
ressourceverplanbartree.builder.rebuild();
try
{
RessourceVerplanbarTreeDatasource.removeXMLSinkObserver(RessourceVerplanbarTreeSinkObserver);
ressourceverplanbartree.builder.removeListener(RessourceVerplanbarTreeDatasource);
}
catch(e)
{}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
RessourceVerplanbarTreeDatasource = rdfService.GetDataSource(url);
RessourceVerplanbarTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
RessourceVerplanbarTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
ressourceverplanbartree.database.AddDataSource(RessourceVerplanbarTreeDatasource);
RessourceVerplanbarTreeDatasource.addXMLSinkObserver(RessourceVerplanbarTreeSinkObserver);
ressourceverplanbartree.builder.addListener(RessourceVerplanbarTreeListener);
}
// Hinzufuegen der Ressourcenzuordnung
function RessourceAdd()
{
var tree = document.getElementById('ressource-verplanbar-tree');
if (tree.currentIndex==-1)
return;
//Ausgewaehlte Nr holen
betriebsmittel_id=getTreeCellText(tree, "ressource-verplanbar-tree-betriebsmittel_id", tree.currentIndex);
var url = '<?php echo APP_ROOT ?>content/tempusDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'addressource');
req.add('betriebsmittel_id', betriebsmittel_id);
for(i in RessourceStplIDs)
req.add('stpl_id[]', RessourceStplIDs[i]);
for(i in RessourceStunden)
req.add('stunden[]', RessourceStunden[i]);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
RessourcenReloadTrees();
}
}
// Entfernen der Ressourcenzuordnung
function RessourceRemove()
{
var tree = document.getElementById('ressource-zugeteilt-tree');
if (tree.currentIndex==-1)
return;
var url = '<?php echo APP_ROOT ?>content/tempusDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'deleteressource');
var start = new Object();
var end = new Object();
var numRanges = tree.view.selection.getRangeCount();
var paramList= '';
var anzahl=0;
for (var t = 0; t < numRanges; t++)
{
tree.view.selection.getRangeAt(t,start,end);
for (var v = start.value; v <= end.value; v++)
{
stundenplan_betriebsmittel_id = getTreeCellText(tree, 'ressource-zugeteilt-tree-stundenplan_betriebsmittel_id', v);
req.add('stundenplan_betriebsmittel_id[]', stundenplan_betriebsmittel_id);
}
}
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
RessourcenReloadTrees();
RessourcenDisableDetails()
}
}
function RessourceZugeteiltTreeRefresh()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
RessourceZugeteiltTreeDatasource.Refresh(false);
}
function RessourceVerplanbarTreeRefresh()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
RessourceVerplanbarTreeDatasource.Refresh(false);
}
function RessourcenReloadTrees()
{
RessourceZugeteiltTreeDoubleRefresh=true;
RessourceVerplanbarTreeDoubleRefresh=true;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
RessourceZugeteiltTreeDatasource.Refresh(false);
RessourceVerplanbarTreeDatasource.Refresh(false);
}
// Speichert die Anmerkung
function RessourceSave()
{
var stundenplan_betriebsmittel_id=document.getElementById('ressource-detail-stundenplan_betriebsmittel_id').value;
var anmerkung = document.getElementById('ressource-detail-anmerkung').value;
var url = '<?php echo APP_ROOT ?>content/tempusDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'saveressource');
req.add('stundenplan_betriebsmittel_id', stundenplan_betriebsmittel_id);
req.add('anmerkung', anmerkung);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
RessourcenReloadTrees();
RessourcenDisableDetails();
}
}
function RessourcenDisableDetails()
{
document.getElementById('ressource-detail-anmerkung').value='';
document.getElementById('ressource-detail-anmerkung').disabled=true;
document.getElementById('ressource-detail-stundenplan_betriebsmittel_id').value='';
document.getElementById('ressource-detail-speichern').disabled=true;
}
/**
* Bei der Auswahl der zugeteilten Ressource wird diese geladen und die Anmerkung angezeigt
*/
function RessourceZugeteiltAuswahl()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree = document.getElementById('ressource-zugeteilt-tree');
if (tree.currentIndex==-1)
return;
//Ausgewaehlte Nr holen
var stundenplan_betriebsmittel_id=getTreeCellText(tree, "ressource-zugeteilt-tree-stundenplan_betriebsmittel_id", tree.currentIndex);
var req = new phpRequest('<?php echo APP_ROOT; ?>rdf/stundenplan_betriebsmittel.rdf.php','','');
req.add('stundenplan_betriebsmittel_id',stundenplan_betriebsmittel_id);
var response = req.execute();
// Datasource holen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/stundenplanbetriebsmittel');
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
getService(Components.interfaces.nsIRDFService);
var subject = rdfService.GetResource("http://www.technikum-wien.at/stundenplanbetriebsmittel/" + stundenplan_betriebsmittel_id);
var predicateNS = "http://www.technikum-wien.at/stundenplanbetriebsmittel/rdf";
//Daten holen
anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
beschreibung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beschreibung" ));
document.getElementById('ressource-detail-anmerkung').disabled=false;
document.getElementById('ressource-detail-speichern').disabled=false;
document.getElementById('ressource-detail-caption').label='Anmerkungen zu '+beschreibung;
document.getElementById('ressource-detail-anmerkung').value=anmerkung;
document.getElementById('ressource-detail-stundenplan_betriebsmittel_id').value=stundenplan_betriebsmittel_id;
}
function RessourceZugeteiltTreeSelectZuordnung()
{
}
function RessourceVerplanbarTreeSelectZuordnung()
{
}