mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-04 05:39:28 +00:00
300 lines
10 KiB
PHP
300 lines
10 KiB
PHP
<?php
|
|
include('../vilesci/config.inc.php');
|
|
require_once('../include/functions.inc.php');
|
|
require_once('../include/fas/functions.inc.php');
|
|
require_once('../include/fas/benutzer.class.php');
|
|
|
|
// Datenbank Verbindung
|
|
if (!$conn = @pg_pconnect(CONN_STRING_FAS))
|
|
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
|
|
|
|
if (!$conn_vilesci = @pg_pconnect(CONN_STRING))
|
|
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
|
|
|
|
$user = get_uid();
|
|
|
|
//Studiensemester_id holen
|
|
$benutzer = new benutzer($conn_vilesci);
|
|
$benutzer->loadVariables($user);
|
|
$stsem = $benutzer->variable->semester_aktuell;
|
|
$stsem_id = getStudiensemesterIdFromName($conn, $stsem);
|
|
|
|
echo "var studiensemester_id=".$stsem_id.";";
|
|
?>
|
|
var sink;
|
|
var MenuMitarbeiterAuswahl=0;
|
|
var treemenuobservedata='';
|
|
/**
|
|
* Observer der aufgerufen wird wenn Refresh des Funktionen-Trees
|
|
* fertig ausgefuehrt wurde.
|
|
*/
|
|
var treefunktionenobserve = {
|
|
onBeginLoad: function(aSink)
|
|
{
|
|
/* Statusbar setzen */
|
|
setStatusBarText('Loading ...');
|
|
/* Progressmeter anzeigen */
|
|
document.getElementById('statusbarpanel-progressmeter').hidden=false;
|
|
},
|
|
onInterrupt: function(aSink) { },
|
|
onResume: function(aSink) { },
|
|
onEndLoad: function(aSink)
|
|
{
|
|
//debug('onEndLoad Funktionen');
|
|
/* Statusbar leeren */
|
|
setStatusBarText('');
|
|
|
|
/* Progressmeter verstecken */
|
|
document.getElementById('statusbarpanel-progressmeter').hidden=true;
|
|
|
|
/* Mitarbeiter Value Changed zuruecksetzen und Speichern Button deaktivieren */
|
|
// MitarbeiterDetailRestore();
|
|
//debug('Starting Rebuild');
|
|
document.getElementById('tree-liste-funktionen').builder.rebuild();
|
|
|
|
},
|
|
onError: function(aSink, aStatus, aErrorMsg)
|
|
{
|
|
alert('Bei der Datenuebertragung ist ein Fehler Aufgetreten. Bitte Versuchen Sie es erneut.');
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Observer der aufgerufen wird wenn Refresh des Mitarbeiter-Trees
|
|
* fertig ausgefuehrt wurde.
|
|
*/
|
|
var treemenuobserve = {
|
|
onBeginLoad: function(aSink)
|
|
{
|
|
/* Statusbar setzen */
|
|
setStatusBarText('Loading ...');
|
|
/* Progressmeter anzeigen */
|
|
document.getElementById('statusbarpanel-progressmeter').hidden=false;
|
|
},
|
|
onInterrupt: function(aSink) { },
|
|
onResume: function(aSink) { },
|
|
onEndLoad: function(aSink)
|
|
{
|
|
//debug('onEndLoad');
|
|
/* Statusbar leeren */
|
|
setStatusBarText('');
|
|
|
|
/* Progressmeter verstecken */
|
|
document.getElementById('statusbarpanel-progressmeter').hidden=true;
|
|
|
|
/* Mitarbeiter Value Changed zuruecksetzen und Speichern Button deaktivieren */
|
|
MitarbeiterDetailRestore();
|
|
|
|
document.getElementById('tree-liste-mitarbeiter').builder.rebuild();
|
|
},
|
|
onError: function(aSink, aStatus, aErrorMsg)
|
|
{
|
|
alert('Bei der Datenuebertragung ist ein Fehler Aufgetreten. Bitte Versuchen Sie es erneut.');
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Observer der aufgerufen wird wenn Rebuild fertig abgearbeitet wurde
|
|
* (Funktioniert mit Moz 1.7.13 nicht richtig -> Seamonkey 1.0.2 funktioniert)
|
|
*/
|
|
var treemenurebuildobserve = {
|
|
willRebuild: function(aSink) { },
|
|
didRebuild: function(aSink)
|
|
{
|
|
//debug('didRebuild:'+treemenuobservedata);
|
|
//wenn treemenuobservedata = refresheintragmerken dann wird der Mitarbeiter wieder markiert
|
|
if(treemenuobservedata=='refresheintragmerken')
|
|
MitarbeiterSelectMitarbeiter();
|
|
treemenuobservedata='';
|
|
treeMitarbeiterReload=true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gibt eine Message auf die Javascript Console aus
|
|
*/
|
|
function debug(msg)
|
|
{
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
|
|
.getService(Components.interfaces.nsIConsoleService);
|
|
consoleService.logStringMessage(msg);
|
|
}
|
|
|
|
/**
|
|
* Beim Auswaehlen eines Mitarbeiter-Filters werden die Mitarbeiter
|
|
* die diesem Filter entsprechen geladen
|
|
*/
|
|
function onMenuMitarbeiterSelect(id)
|
|
{
|
|
//Falls Daten geaendert wurden aber noch nicht gespeichert
|
|
if(treeMitarbeiterDetailChanged)
|
|
{
|
|
if(confirm("Wollen Sie die geänderten Daten speichern?"))
|
|
saveMitarbeiter();
|
|
else
|
|
treeMitarbeiterDetailChanged=false;
|
|
}
|
|
|
|
var tree=document.getElementById(id);
|
|
var content=document.getElementById('tree-liste-mitarbeiter');
|
|
var col = tree.columns ? tree.columns["tree-menu-mitarbeiter-col-filter"] : "tree-menu-mitarbeiter-col-filter";
|
|
var filter=tree.view.getCellText(tree.currentIndex,col);
|
|
var url = "<?php echo APP_ROOT; ?>rdf/fas/mitarbeiter.rdf.php";
|
|
var attributes="?type=unknown&leerzeichencodierung=true";
|
|
|
|
if(filter=="")
|
|
filter="Studiengangsleiter";
|
|
|
|
if (filter=="Studiengangsleiter")
|
|
{
|
|
attributes+="&stgl=true";
|
|
MenuMitarbeiterAuswahl=0;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
|
|
}
|
|
if (filter=="Fachbereichsleiter")
|
|
{
|
|
attributes+="&fbl=true";
|
|
MenuMitarbeiterAuswahl=1;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
|
|
}
|
|
if (filter=="Alle")
|
|
{
|
|
attributes+="&alle=true";
|
|
MenuMitarbeiterAuswahl=2;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
|
|
}
|
|
if (filter=="Aktive")
|
|
{
|
|
attributes+="&aktiv=true";
|
|
MenuMitarbeiterAuswahl=3;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
|
|
}
|
|
if (filter=="FixAngestellte")
|
|
{
|
|
attributes+="&fix=true&aktiv=true";
|
|
MenuMitarbeiterAuswahl=4;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
|
|
}
|
|
if (filter=="FixAngestellteAlle")
|
|
{
|
|
attributes+="&fix=true";
|
|
MenuMitarbeiterAuswahl=5;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
|
|
}
|
|
if (filter=="Inaktive")
|
|
{
|
|
attributes+="&aktiv=false";
|
|
MenuMitarbeiterAuswahl=6;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
|
|
}
|
|
if (filter=="Karenziert")
|
|
{
|
|
attributes+="&karenziert=true";
|
|
MenuMitarbeiterAuswahl=7;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
|
|
}
|
|
if (filter=="Ausgeschieden")
|
|
{
|
|
attributes+="&ausgeschieden=true";
|
|
MenuMitarbeiterAuswahl=8;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=true;
|
|
}
|
|
if (filter=="FreiAngestellte")
|
|
{
|
|
attributes+="&fix=false&aktiv=true";
|
|
MenuMitarbeiterAuswahl=9;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
|
|
}
|
|
if (filter=="FreiAngestellteAlle")
|
|
{
|
|
attributes+="&fix=false";
|
|
MenuMitarbeiterAuswahl=10;
|
|
document.getElementById('toolbar-MitarbeiterEditor-neu').disabled=false;
|
|
}
|
|
//Timestamp anhaengen da beim Laden von Zwischengespeicherten Dateien kein
|
|
//Observer Event ausgeloest wird.
|
|
url+=attributes+'&'+gettimestamp();
|
|
|
|
treeMitarbeiterReload=false;
|
|
//Mitarbeiter Detail Felder deaktivieren
|
|
SetMitarbeiterDetailAktiv(false);
|
|
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
|
|
//Alte Datasources loeschen
|
|
var oldDatasources = content.database.GetDataSources();
|
|
while(oldDatasources.hasMoreElements())
|
|
content.database.RemoveDataSource(oldDatasources.getNext());
|
|
|
|
//Neue Datasource setzen
|
|
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
|
var newDs = rdfService.GetDataSource(url);
|
|
content.database.AddDataSource(newDs);
|
|
|
|
//Sink Observer anhaengen
|
|
sink = newDs.QueryInterface(Components.interfaces.nsIRDFXMLSink);
|
|
sink.addXMLSinkObserver(treemenuobserve);
|
|
}
|
|
|
|
/**
|
|
* Bei Auswahl des Verbandes wird lehreinheiten.rdf
|
|
* fuer die zugehoerige Gruppe/Studiengang geladen
|
|
*/
|
|
function onMenuVerbandSelect()
|
|
{
|
|
tree = document.getElementById('tree-verband');
|
|
|
|
//Studiengang, Gruppe und Ausbildungssemester holen
|
|
var col = tree.columns ? tree.columns["tree-verband-studiengang_id"] : "tree-verband-studiengang_id";
|
|
var studiengang_id=tree.view.getCellText(tree.currentIndex,col);
|
|
col = tree.columns ? tree.columns["tree-verband-gruppe_id"] : "tree-verband-gruppe_id";
|
|
var gruppe_id=tree.view.getCellText(tree.currentIndex,col);
|
|
col = tree.columns ? tree.columns["tree-verband-ausbildungssemester_id"] : "tree-verband-ausbildungssemester_id";
|
|
var ausbildungssemester_id=tree.view.getCellText(tree.currentIndex,col);
|
|
|
|
//Tree fuellen
|
|
lehreinheitentree = document.getElementById('tree-liste-lehreinheiten');
|
|
if(gruppe_id==0)
|
|
url = '<?php echo APP_ROOT; ?>rdf/fas/lehreinheiten.rdf.php?studiengang_id='+studiengang_id;
|
|
else
|
|
url = '<?php echo APP_ROOT; ?>rdf/fas/lehreinheiten.rdf.php?gruppe_id='+gruppe_id;
|
|
|
|
lehreinheitentree.setAttribute('datasources',url);
|
|
document.getElementById('textbox-lehreinheiten-detail-studiengang').value=studiengang_id;
|
|
document.getElementById('textbox-lehreinheiten-ausbildungssemester_id').value=ausbildungssemester_id;
|
|
}
|
|
|
|
/**
|
|
* Parst einen RDF String
|
|
*/
|
|
function parseRDFString(str, url)
|
|
{
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
|
|
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;
|
|
}
|
|
|
|
/**
|
|
* Liefert Wert aus Datasource
|
|
*/
|
|
function getTargetHelper(dsource,subj,predi)
|
|
{
|
|
if (dsource.hasArcOut(subj, predi))
|
|
{
|
|
var target = dsource.GetTarget(subj, predi, true);
|
|
if (target instanceof Components.interfaces.nsIRDFLiteral)
|
|
return target.Value;
|
|
if (target instanceof Components.interfaces.nsIRDFInt) //Fuer Integer Werte
|
|
return target.Value;
|
|
}
|
|
return "";
|
|
}
|