, * Andreas Oesterreicher and * Rudolf Hangl . */ require_once('../../vilesci/config.inc.php'); require_once('../../include/functions.inc.php'); $conn = pg_pconnect(CONN_STRING); $user = get_uid(); loadVariables($conn, $user); ?> // *********** Globale Variablen *****************// var MitarbeiterSelectUid=null; //UID des zu selektierenden Mitarbeiters var MitarbeiterTreeLoadDataOnSelect=true; // Gibt an ob die Details beim markieren eines Mitarbeiters geladen werden sollen var MitarbeiterVerwendungTreeDatasource=null; // Datasource des Verwendungstrees var MitarbeiterVerwendungSelectID=null; // ID der Verwendung die nach dem rebuild markiert werden soll var MitarbeiterFunktionTreeDatasource=null; // Datasource des Verwendungstrees var MitarbeiterFunktionSelectVerwendungID=null; // ID der Verwendung der Funktion die nach dem rebuild markiert werden soll var MitarbeiterFunktionSelectStudiengangID=null; // ID des Studiengangs der Funktion die nach dem rebuild markiert werden soll var MitarbeiterEntwicklungsteamTreeDatasource=null; // Datasource des Entwicklungsteamtrees var MitarbeiterEntwicklungsteamSelectMitarbeiterUID=null; // UID des Mitarbeiters des Entwicklugnsteams das nach dem rebuild markiert werden soll var MitarbeiterEntwicklungsteamSelectStudiengangID=null; // ID des Stg des Entwicklungsteams das nach dem rebuild markiert werden soll var MitarbeiterEntwicklungsteamDoubleRefresh=false; // Wenn auf einen Tree der eine leere Datasource enthaelt eine neue Datasource angehaengt wird, dann muss doppelt refresht werden // ********** Observer und Listener ************* // // **** // * Observer fuer Mitarbeiter Tree // * startet Rebuild nachdem das Refresh // * der Datasource fertig ist // **** var MitarbeiterTreeSinkObserver = { onBeginLoad : function(pSink) { }, onInterrupt : function(pSink) {}, onResume : function(pSink) {}, onError : function(pSink, pStatus, pError) {}, onEndLoad : function(pSink) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); document.getElementById('mitarbeiter-tree').builder.rebuild(); } }; // **** // * Nach dem Rebuild wird der Mitarbeiter wieder // * markiert // **** var MitarbeiterTreeListener = { 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(MitarbeiterTreeSelectMitarbeiter,10); } }; // **** // * Observer fuer Mitarbeiter VerwendungTree // * startet Rebuild nachdem das Refresh // * der Datasource fertig ist // **** var MitarbeiterVerwendungTreeSinkObserver = { onBeginLoad : function(pSink) { }, onInterrupt : function(pSink) {}, onResume : function(pSink) {}, onError : function(pSink, pStatus, pError) {}, onEndLoad : function(pSink) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); document.getElementById('mitarbeiter-tree-verwendung').builder.rebuild(); } }; // **** // * Nach dem Rebuild wird der Mitarbeiter wieder // * markiert // **** var MitarbeiterVerwendungTreeListener = { 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(MitarbeiterVerwendungTreeSelect,10); } }; // **** // * Observer fuer Mitarbeiter FunktionTree // * startet Rebuild nachdem das Refresh // * der Datasource fertig ist // **** var MitarbeiterFunktionTreeSinkObserver = { onBeginLoad : function(pSink) { }, onInterrupt : function(pSink) {}, onResume : function(pSink) {}, onError : function(pSink, pStatus, pError) {}, onEndLoad : function(pSink) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); document.getElementById('mitarbeiter-tree-funktion').builder.rebuild(); } }; // **** // * Nach dem Rebuild wird die Funktion wieder // * markiert // **** var MitarbeiterFunktionTreeListener = { 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(MitarbeiterFunktionTreeSelect,10); } }; // **** // * Observer fuer Mitarbeiter EntwicklungsteamTree // * startet Rebuild nachdem das Refresh // * der Datasource fertig ist // **** var MitarbeiterEntwicklungsteamTreeSinkObserver = { onBeginLoad : function(pSink) { }, onInterrupt : function(pSink) {}, onResume : function(pSink) {}, onError : function(pSink, pStatus, pError) {}, onEndLoad : function(pSink) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); document.getElementById('mitarbeiter-tree-entwicklungsteam').builder.rebuild(); } }; // **** // * Nach dem Rebuild wird die Funktion wieder // * markiert // **** var MitarbeiterEntwicklungsteamTreeListener = { 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 if(MitarbeiterEntwicklungsteamDoubleRefresh) { MitarbeiterEntwicklungsteamDoubleRefresh=false; window.setTimeout("MitarbeiterEntwicklungsteamTreeRefresh()",10); } else window.setTimeout(MitarbeiterEntwicklungsteamTreeSelect,10); } }; // ****************** FUNKTIONEN ************************** // // **** // * Wenn der Mitarbeiter Tab markiert wird, dann wird // * automatisch der Mitarbeiter Reiter im linken Tree // * markiert. // **** function MitarbeiterTabSelect() { //Index des Mitarbeiter Tabs ermitteln //Tab markieren } // **** // * Beim Auswaehlen eines Mitarbeiter-Filters werden die Mitarbeiter // * die diesem Filter entsprechen geladen // **** function onMitarbeiterSelect() { var tree=document.getElementById('tree-menu-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 = "rdf/personal.rdf.php"; var attributes="?type=unknown"; if(filter=="") filter="Studiengangsleiter"; if (filter=="Studiengangsleiter") { attributes+="&stgl=true"; } if (filter=="Fachbereichsleiter") { attributes+="&fbl=true"; } if (filter=="Alle") { attributes+="&alle=true"; } if (filter=="Aktive") { attributes+="&aktiv=true"; } if (filter=="FixAngestellte") { attributes+="&fix=true&aktiv=true"; } if (filter=="FixAngestellteAlle") { attributes+="&fix=true"; } if (filter=="Inaktive") { attributes+="&aktiv=false"; } if (filter=="Karenziert") { attributes+="&karenziert=true"; } if (filter=="Ausgeschieden") { attributes+="&ausgeschieden=true"; } if (filter=="FreiAngestellte") { attributes+="&fix=false&aktiv=true"; } if (filter=="FreiAngestellteAlle") { attributes+="&fix=false"; } document.getElementById('mitarbeiter-toolbar-neu').disabled=false; //Timestamp anhaengen da beim Laden von Zwischengespeicherten Dateien kein //Observer Event ausgeloest wird. url+=attributes+'&'+gettimestamp(); //Mitarbeiter Detail Felder deaktivieren MitarbeiterDetailDisableFields(true); netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree=document.getElementById('mitarbeiter-tree'); ///Alte DS entfernen var oldDatasources = tree.database.GetDataSources(); while(oldDatasources.hasMoreElements()) { tree.database.RemoveDataSource(oldDatasources.getNext()); } try { MitarbeiterTreeDatasource.removeXMLSinkObserver(MitarbeiterTreeSinkObserver); tree.builder.removeListener(MitarbeiterTreeListener); } catch(e) {} var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); MitarbeiterTreeDatasource = rdfService.GetDataSource(url); MitarbeiterTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); MitarbeiterTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); tree.database.AddDataSource(MitarbeiterTreeDatasource); MitarbeiterTreeDatasource.addXMLSinkObserver(MitarbeiterTreeSinkObserver); tree.builder.addListener(MitarbeiterTreeListener); } // **** // * Selectiert den Mitarbeiter nachdem der Tree // * rebuildet wurde. // **** function MitarbeiterTreeSelectMitarbeiter() { var tree=document.getElementById('mitarbeiter-tree'); var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln //In der globalen Variable ist der zu selektierende Mitarbeiter gespeichert if(MitarbeiterSelectUid!=null) { for(var i=0;icontent/bildupload.php?person_id='+person_id,'Bild Upload', 'height=10,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes'); } else alert('Es wurde keine Person ausgewaehlt'); } // **** // * Speichert die Mitarbeiterdaten // **** function MitarbeiterSave() { //Daten holen uid = document.getElementById('mitarbeiter-detail-textbox-uid').value; anrede = document.getElementById('mitarbeiter-detail-textbox-anrede').value; titelpre = document.getElementById('mitarbeiter-detail-textbox-titelpre').value; titelpost = document.getElementById('mitarbeiter-detail-textbox-titelpost').value; vorname = document.getElementById('mitarbeiter-detail-textbox-vorname').value; vornamen = document.getElementById('mitarbeiter-detail-textbox-vornamen').value; nachname = document.getElementById('mitarbeiter-detail-textbox-nachname').value; geburtsdatum = document.getElementById('mitarbeiter-detail-textbox-geburtsdatum').value; geburtsort = document.getElementById('mitarbeiter-detail-textbox-geburtsort').value; geburtszeit = document.getElementById('mitarbeiter-detail-textbox-geburtszeit').value; anmerkungen = document.getElementById('mitarbeiter-detail-textbox-anmerkung').value; homepage = document.getElementById('mitarbeiter-detail-textbox-homepage').value; svnr = document.getElementById('mitarbeiter-detail-textbox-svnr').value; ersatzkennzeichen = document.getElementById('mitarbeiter-detail-textbox-ersatzkennzeichen').value; familienstand = document.getElementById('mitarbeiter-detail-menulist-familienstand').value; geschlecht = document.getElementById('mitarbeiter-detail-menulist-geschlecht').value; aktiv = document.getElementById('mitarbeiter-detail-checkbox-aktiv').checked; anzahlderkinder = document.getElementById('mitarbeiter-detail-textbox-anzahlderkinder').value; staatsbuergerschaft = document.getElementById('mitarbeiter-detail-menulist-staatsbuergerschaft').value; geburtsnation = document.getElementById('mitarbeiter-detail-menulist-geburtsnation').value; sprache = document.getElementById('mitarbeiter-detail-menulist-sprache').value; person_id = document.getElementById('mitarbeiter-detail-textbox-person_id').value; //Mitarbeiterdaten kurzbezeichnung = document.getElementById('mitarbeiter-detail-textbox-kurzbezeichnung').value; stundensatz = document.getElementById('mitarbeiter-detail-textbox-stundensatz').value; telefonklappe = document.getElementById('mitarbeiter-detail-textbox-telefonklappe').value; lektor = document.getElementById('mitarbeiter-detail-checkbox-lektor').checked; fixangestellt = document.getElementById('mitarbeiter-detail-checkbox-fixangestellt').checked; ausbildung = document.getElementById('mitarbeiter-detail-menulist-ausbildung').value; anmerkung = document.getElementById('mitarbeiter-detail-textbox-mitarbeiteranmerkung').value; ort_kurzbz = document.getElementById('mitarbeiter-detail-menulist-ort_kurzbz').value; standort_kurzbz = document.getElementById('mitarbeiter-detail-menulist-standort').value; alias = document.getElementById('mitarbeiter-detail-textbox-alias').value; if(geburtsdatum!='' && !CheckDatum(geburtsdatum)) { alert('Geburtsdatum ist ungueltig'); return false; } var url = 'content/mitarbeiter/mitarbeiterDBDML.php'; var req = new phpRequest(url,'',''); req.add('type', 'mitarbeitersave'); req.add('uid', uid); req.add('anrede', anrede); req.add('titelpre', titelpre); req.add('titelpost', titelpost); req.add('vorname', vorname); req.add('vornamen', vornamen); req.add('nachname', nachname); req.add('geburtsdatum', geburtsdatum); req.add('geburtsort', geburtsort); req.add('geburtszeit', geburtszeit); req.add('anmerkungen', anmerkungen); req.add('homepage', homepage); req.add('svnr', svnr); req.add('ersatzkennzeichen', ersatzkennzeichen); req.add('familienstand', familienstand); req.add('geschlecht', geschlecht); req.add('aktiv', aktiv); req.add('anzahlderkinder', anzahlderkinder); req.add('staatsbuergerschaft', staatsbuergerschaft); req.add('geburtsnation', geburtsnation); req.add('sprache', sprache); req.add('kurzbezeichnung', kurzbezeichnung); req.add('stundensatz', stundensatz); req.add('telefonklappe', telefonklappe); req.add('lektor', lektor); req.add('fixangestellt', fixangestellt); req.add('ausbildung', ausbildung); req.add('anmerkung', anmerkung); req.add('ort_kurzbz', ort_kurzbz); req.add('standort_kurzbz', standort_kurzbz); req.add('alias', alias); 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"); MitarbeiterSelectUid=uid; MitarbeiterTreeDatasource.Refresh(false); //non blocking SetStatusBarText('Daten wurden gespeichert'); } } // **** // * Ruft das Formular zum Eintragen des neuen Mitarbeiters auf // **** function MitarbeiterNeu() { window.open('vilesci/personen/import/mitarbeiterimport.php','Mitarbeiter anlegen', 'height=768,width=1024,resizable=yes,status=yes,scrollbars=yes,toolbar=yes,location=yes,menubar=yes'); } // **** // * Exportiert die Daten in ein Excel File // **** function MitarbeiterExport() { var treeMitarbeiter=document.getElementById('mitarbeiter-tree'); var treeMitarbeiterMenu=document.getElementById('tree-menu-mitarbeiter'); var col = treeMitarbeiterMenu.columns ? treeMitarbeiterMenu.columns["tree-menu-mitarbeiter-col-filter"] : "tree-menu-mitarbeiter-col-filter"; var filter=treeMitarbeiterMenu.view.getCellText(treeMitarbeiterMenu.currentIndex,col); cols = treeMitarbeiter.getElementsByTagName('treecol'); var url = "content/statistik/mitarbeiterexport.xls.php"; var attributes="?type=mitarbeiter"; if (filter=="Studiengangsleiter") attributes+="&stgl=true"; if (filter=="Fachbereichsleiter") attributes+="&fbl=true"; if (filter=="Alle") attributes+="&alle=true"; if (filter=="Aktive") attributes+="&aktiv=true"; if (filter=="FixAngestellte") attributes+="&fix=true&aktiv=true"; if (filter=="FixAngestellteAlle") attributes+="&fix=true"; if (filter=="Inaktive") attributes+="&aktiv=false"; if (filter=="Karenziert") attributes+="&karenziert=true"; if (filter=="Ausgeschieden") attributes+="&ausgeschieden=true"; if (filter=="FreiAngestellte") attributes+="&fix=false&aktiv=true"; if (filter=="FreiAngestellteAlle") attributes+="&fix=false"; url+=attributes; spalte=0; for(i in cols) { if(cols[i].hidden==false) { url += "&spalte"+spalte+"="+MitarbeiterDetailgetSpaltenname(cols[i].id); spalte=spalte+1; } } //url+='&spalte0=titelpre&spalte1=vorname&spalte2=vornamen&spalte3=familienname&spalte4=uid'; //alert(url); //window.open(url,"","chrome,status=no, modal, width=400, height=250, centerscreen, resizable"); window.location.href=url; } // **** // * Liefert anhand der ID den Namen der Klassenvariable // **** function MitarbeiterDetailgetSpaltenname(id) { if(id=='mitarbeiter-treecol-anrede') return 'anrede'; if(id=='mitarbeiter-treecol-titelpre') return 'titelpre'; if(id=='mitarbeiter-treecol-vorname') return 'vorname'; if(id=='mitarbeiter-treecol-vornamen') return 'vornamen'; if(id=='mitarbeiter-treecol-nachname') return 'nachname'; if(id=='mitarbeiter-treecol-titelpost') return 'titelpost'; if(id=='mitarbeiter-treecol-personalnummer') return 'personalnummer'; if(id=='mitarbeiter-treecol-geburtsdatum') return 'gebdatum'; if(id=='mitarbeiter-treecol-svnr') return 'svnr'; if(id=='mitarbeiter-treecol-ersatzkennzeichen') return 'ersatzkennzeichen'; if(id=='mitarbeiter-treecol-uid') return 'uid'; if(id=='mitarbeiter-treecol-kurzbz') return 'kurzbz'; if(id=='mitarbeiter-treecol-geschlecht') return 'geschlecht'; if(id=='mitarbeiter-treecol-ort_kurzbz') return 'ort_kurzbz'; if(id=='mitarbeiter-treecol-telefonklappe') return 'telefonklappe'; if(id=='mitarbeiter-treecol-aktiv') return 'aktiv'; if(id=='mitarbeiter-treecol-person_id') return 'person_id'; if(id=='mitarbeiter-treecol-fixangestellt') return 'fixangestellt'; if(id=='mitarbeiter-treecol-lektor') return 'lektor'; } function MitarbeiterSendMail() { mailempfaenger=''; var treeMitarbeiter=document.getElementById('mitarbeiter-tree'); var numRanges = treeMitarbeiter.view.selection.getRangeCount(); var start = new Object(); var end = new Object(); var anzfault=0; //Markierte Datensaetze holen for (var t=0; t1) { if(mailempfaenger!='') mailempfaenger=mailempfaenger+','+treeMitarbeiter.view.getCellText(v,col)+'@technikum-wien.at'; else mailempfaenger='mailto:'+treeMitarbeiter.view.getCellText(v,col)+'@'; } else { anzfault=anzfault+1; } } } if(anzfault!=0) alert(anzfault+' Mitarbeiter konnten nicht hinzugefuegt werden weil keine UID eingetragen ist!'); window.location.href=mailempfaenger; } // ***************** VERWENDUNG ********************** // // **** // * Selectiert die Verwendung nachdem der Tree // * rebuildet wurde. // **** function MitarbeiterVerwendungTreeSelect() { var tree=document.getElementById('mitarbeiter-tree-verwendung'); var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln //In der globalen Variable ist der zu selektierende Verwendung gespeichert if(MitarbeiterVerwendungSelectID!=null) { for(var i=0;icontent/mitarbeiter/mitarbeiterverwendungdialog.xul.php?mitarbeiter_uid="+mitarbeiter_uid+"&bisverwendung_id="+bisverwendung_id,"","chrome, status=no, width=500, height=350, centerscreen, resizable"); } // **** // * Ruft den Dialog zum Eintragen der Verwendungen auf // **** function MitarbeiterVerwendungNeu() { var tree=document.getElementById('mitarbeiter-tree'); //Uid der row holen col = tree.columns ? tree.columns["mitarbeiter-treecol-uid"] : "mitarbeiter-treecol-uid"; mitarbeiter_uid=tree.view.getCellText(tree.currentIndex,col); window.open("content/mitarbeiter/mitarbeiterverwendungdialog.xul.php?mitarbeiter_uid="+mitarbeiter_uid,"","chrome, status=no, width=500, height=350, centerscreen, resizable"); } function MitarbeiterVerwendungSpeichern(document, bisverwendung_id, mitarbeiter_uid, neu) { ba1code = document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart1').value; ba2code = document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart2').value; beschausmasscode = document.getElementById('mitarbeiter-verwendung-detail-menulist-ausmass').value; verwendung_code = document.getElementById('mitarbeiter-verwendung-detail-menulist-verwendung').value; hauptberufcode = document.getElementById('mitarbeiter-verwendung-detail-menulist-hauptberuf').value; hauptberuflich = document.getElementById('mitarbeiter-verwendung-detail-checkbox-hauptberuflich').checked; habilitation = document.getElementById('mitarbeiter-verwendung-detail-checkbox-habilitation').checked; beginn = document.getElementById('mitarbeiter-verwendung-detail-datum-beginn').value; ende = document.getElementById('mitarbeiter-verwendung-detail-datum-ende').value; if(beginn!='' && !CheckDatum(beginn)) { alert('Beginn Datum ist ungueltig'); return false; } if(ende!='' && !CheckDatum(ende)) { alert('Ende Datum ist ungueltig'); return false; } var url = 'content/mitarbeiter/mitarbeiterDBDML.php'; var req = new phpRequest(url,'',''); req.add('type', 'verwendungsave'); req.add('neu', neu); req.add('mitarbeiter_uid', mitarbeiter_uid); req.add('bisverwendung_id', bisverwendung_id); req.add('ba1code', ba1code); req.add('ba2code', ba2code); req.add('beschausmasscode', beschausmasscode); req.add('verwendung_code', verwendung_code); req.add('hauptberufcode', hauptberufcode); req.add('hauptberuflich', hauptberuflich); req.add('habilitation', habilitation); req.add('beginn', beginn); req.add('ende', ende); var response = req.executePOST(); var val = new ParseReturnValue(response) if (!val.dbdml_return) { if(val.dbdml_errormsg=='') alert(response) else alert(val.dbdml_errormsg) return false; } else { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); MitarbeiterVerwendungSelectID = val.dbdml_data; MitarbeiterVerwendungTreeDatasource.Refresh(false); return true; } } // **** // * Loescht eine Bisverwendung // **** function MitarbeiterVerwendungLoeschen() { var tree=document.getElementById('mitarbeiter-tree-verwendung'); if (tree.currentIndex==-1) { alert('Bitte zuerst einen Eintrag auswaehlen'); return false; } //Bisverwendung_id holen col = tree.columns ? tree.columns["mitarbeiter-verwendung-treecol-bisverwendung_id"] : "mitarbeiter-verwendung-treecol-bisverwendung_id"; bisverwendung_id=tree.view.getCellText(tree.currentIndex,col); if(confirm('Diese Verwendung wirklich loeschen?')) { var url = 'content/mitarbeiter/mitarbeiterDBDML.php'; var req = new phpRequest(url,'',''); req.add('type', 'verwendungdelete'); req.add('bisverwendung_id', bisverwendung_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) return false; } else { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); MitarbeiterVerwendungTreeDatasource.Refresh(false); return true; } } } // *********** FUNKTION *************** // // **** // * Selectiert die Funktion nachdem der Tree // * rebuildet wurde. // **** function MitarbeiterFunktionTreeSelect() { var tree=document.getElementById('mitarbeiter-tree-funktion'); var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln //In der globalen Variable ist der zu selektierende Verwendung gespeichert if(MitarbeiterFunktionSelectStudiengangID!=null) { for(var i=0;i