diff --git a/content/lvplanung/lehrveranstaltungoverlay.js.php b/content/lvplanung/lehrveranstaltungoverlay.js.php index 7b3d79aff..00f90b223 100644 --- a/content/lvplanung/lehrveranstaltungoverlay.js.php +++ b/content/lvplanung/lehrveranstaltungoverlay.js.php @@ -1340,8 +1340,8 @@ function LeMitarbeiterAuswahl() // Reset attributes document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-label-vertragsstatus').setAttribute("style", "font-weight: normal"); document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').setAttribute("tooltiptext", - "Stornieren erst ab Status 'Angenommen' möglich."); - document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').disabled = true + "Stornieren erst nötig, sobald Lektor einen Vertrag hat. (Ab Status 'Bestellt')"); + document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').disabled = true; document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor').disabled = false; document.getElementById('lehrveranstaltung-lektor-tree-popup-label').disabled = false; document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden').disabled= false; @@ -1364,6 +1364,10 @@ function LeMitarbeiterAuswahl() document.getElementById('lehrveranstaltung-lektor-tree-popup-label').setAttribute("tooltiptext", "Änderung nur nach Stornierung des Vertrags möglich."); + // Stornieren ermoeglichen und tooltip entfernen + document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').disabled = false; + document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').setAttribute("tooltiptext", ""); + // Url zum RDF var url = "rdf/vertrag.rdf.php?"+gettimestamp(); // @@ -1438,9 +1442,6 @@ function LeMitarbeiterAuswahl() */ if(letzterStatus == 'akzeptiert') { - document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').disabled = false; - document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-button-vertrag-stornieren').setAttribute("tooltiptext", ""); - // Semesterstunden und Stundensatz disablen document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden').disabled= true; document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-stundensatz').disabled= true; diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index 2d79e1da6..ae0378232 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -1,1393 +1,1394 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -require_once('../../config/vilesci.config.inc.php'); -require_once('../../config/global.config.inc.php'); - -?> -// *********** Globale Variablen *****************// -var StudentProjektarbeitSelectID=null; //Id der Projektarbeit die nach dem Rebuild markiert werden soll -var StudentProjektarbeitTreeDatasource=null; //Datasource des Projektarbeit Trees -var StudentProjektbetreuerTreeDatasource=null; //Datasource des Projektbetreuer Trees -var StudentProjektbetreuerSelectPersonID=null; -var StudentProjektbetreuerSelectProjektarbeitID=null; -var StudentProjektbetreuerSelectBetreuerartKurzbz=null; -vertragsdetails_anzeigen = ; - -// ********** Observer und Listener ************* // - -// **** -// * Observer fuer Projektarbeit Tree -// * startet Rebuild nachdem das Refresh -// * der Datasource fertig ist -// **** -var StudentProjektarbeitTreeSinkObserver = -{ - onBeginLoad : function(pSink) - { - //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst - //zu Problemen kommt - tree = document.getElementById('student-projektarbeit-tree'); - tree.removeEventListener('select', StudentProjektarbeitAuswahl, false); - }, - onInterrupt : function(pSink) {}, - onResume : function(pSink) {}, - onError : function(pSink, pStatus, pError) {}, - onEndLoad : function(pSink) - { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - document.getElementById('student-projektarbeit-tree').builder.rebuild(); - } -}; - -// **** -// * Nach dem Rebuild wird die Projektarbeit wieder -// * markiert -// **** -var StudentProjektarbeitTreeListener = -{ - willRebuild : function(builder) { }, - didRebuild : function(builder) - { - tree = document.getElementById('student-projektarbeit-tree'); - tree.addEventListener('select', StudentProjektarbeitAuswahl, false); - //timeout nur bei Mozilla notwendig da sonst die rows - //noch keine values haben. Ab Seamonkey funktionierts auch - //ohne dem setTimeout - window.setTimeout(StudentProjektarbeitTreeSelectID,10); - } -}; - -// **** -// * Observer fuer Projektbetreuer Tree -// * startet Rebuild nachdem das Refresh -// * der Datasource fertig ist -// **** -var StudentProjektbetreuerTreeSinkObserver = -{ - onBeginLoad : function(pSink) - { - //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst - //zu Problemen kommt - tree = document.getElementById('student-projektbetreuer-tree'); - tree.removeEventListener('select', StudentProjektbetreuerAuswahl, false); - }, - onInterrupt : function(pSink) {}, - onResume : function(pSink) {}, - onError : function(pSink, pStatus, pError) {}, - onEndLoad : function(pSink) - { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - document.getElementById('student-projektbetreuer-tree').builder.rebuild(); - } -}; - -// **** -// * Nach dem Rebuild wird die Projektbetreuer wieder -// * markiert -// **** -var StudentProjektbetreuerTreeListener = -{ - willRebuild : function(builder) { }, - didRebuild : function(builder) - { - tree = document.getElementById('student-projektbetreuer-tree'); - tree.addEventListener('select', StudentProjektbetreuerAuswahl, false); - //timeout nur bei Mozilla notwendig da sonst die rows - //noch keine values haben. Ab Seamonkey funktionierts auch - //ohne dem setTimeout - window.setTimeout(StudentProjektbetreuerTreeSelectID,10); - - if(vertragsdetails_anzeigen) - { - var mindEinVertragExistiert = StudentProjektbetreuer_VertragExistiert(); - - // Wenn für diese Projektarbeit zumindest ein Projektbetreuer einen Vertrag besitzt - if (mindEinVertragExistiert === true) - { - // Entfernen der Bachelorarbeit disablen - document.getElementById('student-projektarbeit-button-loeschen').disabled = true; - - // Tooltip setzen - document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext", - "Projektarbeit kann nurmehr nach Vertragsstorno gelöscht werden."); - } - else { - // Entfernen der Bachelorarbeit enablen - document.getElementById('student-projektarbeit-button-loeschen').disabled = false; - - // Tooltip setzen - document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext", - ""); - - } - } - - } -}; -// ****************** FUNKTIONEN ************************** // - -// **** -// * Laedt die Daten fuer den Projektarbeiten Tree -// **** -function StudentProjektarbeitTreeLoad(uid) -{ - var tree = document.getElementById('student-projektarbeit-tree'); - var url='rdf/projektarbeit.rdf.php?student_uid='+uid+"&"+gettimestamp(); - - //Alte Observer entfernen - try - { - StudentProjektarbeitTreeDatasource.removeXMLSinkObserver(StudentProjektarbeitTreeSinkObserver); - tree.builder.removeListener(StudentProjektarbeitTreeListener); - } - catch(e) - {} - - //Alte DS entfernen - var oldDatasources = tree.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - tree.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - tree.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - StudentProjektarbeitTreeDatasource = rdfService.GetDataSource(url); - StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - tree.database.AddDataSource(StudentProjektarbeitTreeDatasource); - StudentProjektarbeitTreeDatasource.addXMLSinkObserver(StudentProjektarbeitTreeSinkObserver); - tree.builder.addListener(StudentProjektarbeitTreeListener); - - StudentProjektarbeitDisableFields(false); - var vertragsdetails_anzeigen = ; - - // Wenn Vertragsdetails angezeigt werden - if (vertragsdetails_anzeigen) { - //Reset attributes - document.getElementById('student-projektbetreuer-label-vertragsstatus').value = ''; - document.getElementById('student-projektbetreuer-label-vertragsstunden').value = ''; - document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = ''; - document.getElementById('student-projektbetreuer-label-vertrag_id').value = ''; - } -} - -// **** -// * Deaktiviert alle Felder in diesem Tab -// **** -function StudentProjektarbeitDisableAll() -{ - //Tree Leeren - var tree = document.getElementById('student-projektarbeit-tree'); - - //Alte DS entfernen - var oldDatasources = tree.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - tree.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - tree.builder.rebuild(); - - StudentProjektarbeitDisableFields(true); -} - -// **** -// * De-/Aktiviert die ProjektarbeitFelder -// **** -function StudentProjektarbeitDisableFields(val) -{ - document.getElementById('student-projektarbeit-button-neu').disabled=val; - document.getElementById('student-projektarbeit-button-loeschen').disabled=val; - // Tooltip setzen - document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext", - ""); - - if(val) - { - StudentProjektarbeitDetailDisableFields(val); - } -} - -// **** -// * De-/Aktiviert die ProjektarbeitDetailFelder -// **** -function StudentProjektarbeitDetailDisableFields(val) -{ - document.getElementById('student-projektarbeit-button-speichern').disabled=val; - document.getElementById('student-projektarbeit-menulist-projekttyp').disabled=val; - document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').disabled=val; - document.getElementById('student-projektarbeit-menulist-lehreinheit').disabled=val; - document.getElementById('student-projektarbeit-menulist-firma').disabled=val; - document.getElementById('student-projektarbeit-menulist-note').disabled=val; - document.getElementById('student-projektarbeit-textbox-titel').disabled=val; - document.getElementById('student-projektarbeit-textbox-titel_english').disabled=val; - document.getElementById('student-projektarbeit-textbox-punkte').disabled=val; - document.getElementById('student-projektarbeit-datum-beginn').disabled=val; - document.getElementById('student-projektarbeit-datum-ende').disabled=val; - document.getElementById('student-projektarbeit-textbox-faktor').disabled=val; - document.getElementById('student-projektarbeit-checkbox-freigegeben').disabled=val; - document.getElementById('student-projektarbeit-datum-gesperrtbis').disabled=val; - document.getElementById('student-projektarbeit-textbox-stundensatz').disabled=val; - document.getElementById('student-projektarbeit-textbox-gesamtstunden').disabled=val; - document.getElementById('student-projektarbeit-textbox-themenbereich').disabled=val; - document.getElementById('student-projektarbeit-textbox-anmerkung').disabled=val; - document.getElementById('student-projektarbeit-checkbox-final').disabled=val; - - if(val) - StudentProjektarbeitResetFields(); -} - -// **** -// * Wenn in das Gesperrt-Feld ein Wert eingetragen wird, dann wird das Freigegeben Hackerl entfernt -function StudentProjektarbeitGesperrtChanged() -{ - if(document.getElementById('student-projektarbeit-datum-gesperrtbis').value!='') - { - document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false; - } -} - -// **** -// * Resetet die ProjektarbeitDetailFelder -// **** -function StudentProjektarbeitResetFields() -{ - document.getElementById('student-projektarbeit-textbox-titel').value=''; - document.getElementById('student-projektarbeit-textbox-titel_english').value=''; - document.getElementById('student-projektarbeit-textbox-punkte').value='0.0'; - document.getElementById('student-projektarbeit-datum-beginn').value=''; - document.getElementById('student-projektarbeit-datum-ende').value=''; - document.getElementById('student-projektarbeit-textbox-faktor').value='1.0'; - document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true; - document.getElementById('student-projektarbeit-datum-gesperrtbis').value=''; - document.getElementById('student-projektarbeit-textbox-stundensatz').value='80.0'; - document.getElementById('student-projektarbeit-textbox-gesamtstunden').value='3.0'; - document.getElementById('student-projektarbeit-textbox-themenbereich').value=''; - document.getElementById('student-projektarbeit-textbox-anmerkung').value=''; - document.getElementById('student-projektarbeit-menulist-firma').value=''; - document.getElementById('student-projektarbeit-menulist-note').value=''; - document.getElementById('student-projektarbeit-checkbox-final').checked=true; - - var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; - - var url = 'rdf/studiengang.rdf.php?studiengang_kz='+stg_kz+'&'+gettimestamp(); - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. - getService(Components.interfaces.nsIRDFService); - - var dsource = rdfService.GetDataSourceBlocking(url); - var subject = rdfService.GetResource("http://www.technikum-wien.at/studiengang/" + stg_kz); - var predicateNS = "http://www.technikum-wien.at/studiengang/rdf"; - studiengangstyp = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" )); - - if(studiengangstyp=='m') - document.getElementById('student-projektarbeit-menulist-projekttyp').value='Diplom'; - else - document.getElementById('student-projektarbeit-menulist-projekttyp').value='Bachelor'; -} - -// ***** -// * Markiert einen Datensatz im Tree -// ***** -function StudentProjektarbeitTreeSelectID() -{ - var tree=document.getElementById('student-projektarbeit-tree'); - if(tree.view) - var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln - else - return false; - - //In der globalen Variable ist die zu selektierende Eintrag gespeichert - if(StudentProjektarbeitSelectID!=null) - { - for(var i = 0;i < items; i++) - { - //ID der row holen - col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id"; - var id=tree.view.getCellText(i,col); - - //wenn dies die zu selektierende Zeile - if(id == StudentProjektarbeitSelectID) - { - //Zeile markieren - tree.view.selection.select(i); - //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt - tree.treeBoxObject.ensureRowIsVisible(i); - StudentIOSelectID=null; - return true; - } - } - } -} - -// **** -// * Laedt die Daten der Projektarbeit zum Bearbeiten -// **** -function StudentProjektarbeitAuswahl() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var tree = document.getElementById('student-projektarbeit-tree'); - - if (tree.currentIndex==-1) return; - - StudentProjektarbeitDetailDisableFields(false); - StudentProjektbetreuerDetailDisableFields(true); - - //Ausgewaehlte Nr holen - var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-treecol-projektarbeit_id"; - var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); - - //Daten holen - var url = 'rdf/projektarbeit.rdf.php?projektarbeit_id='+projektarbeit_id+'&'+gettimestamp(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. - getService(Components.interfaces.nsIRDFService); - - var dsource = rdfService.GetDataSourceBlocking(url); - - var subject = rdfService.GetResource("http://www.technikum-wien.at/projektarbeit/" + projektarbeit_id); - - var predicateNS = "http://www.technikum-wien.at/projektarbeit/rdf"; - - //Daten holen - - projekttyp_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#projekttyp_kurzbz" )); - titel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel" )); - titel_english = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel_english" )); - lehreinheit_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_id" )); - lehrveranstaltung_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrveranstaltung_id" )); - lehreinheit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_stsem" )); - student_uid = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#student_uid" )); - firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" )); - note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" )); - punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" )); - beginn = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beginn" )); - ende = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ende" )); - faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" )); - freigegeben = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#freigegeben" )); - gesperrtbis = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesperrtbis" )); - stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" )); - themenbereich = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#themenbereich" )); - anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); - gesamtstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesamtstunden" )); - final = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#final" )); - - var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; - - //Lehrveranstaltung DropDown laden - var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); - url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp(); - - //Alte DS entfernen - var oldDatasources = LvDropDown.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - LvDropDown.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - LvDropDown.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - var datasource = rdfService.GetDataSourceBlocking(url); - datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - LvDropDown.database.AddDataSource(datasource); - - LvDropDown.builder.rebuild(); - - // Lehreinheit Drop Down laden - var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit'); - url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+lehreinheit_stsem+"&"+gettimestamp(); - - //Alte DS entfernen - var oldDatasources = LeDropDown.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - LeDropDown.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - LeDropDown.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - var datasource = rdfService.GetDataSourceBlocking(url); - datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - LeDropDown.database.AddDataSource(datasource); - - LeDropDown.builder.rebuild(); - - //Werte setzen - document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id; - document.getElementById('student-projektarbeit-menulist-projekttyp').value=projekttyp_kurzbz; - document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value=lehrveranstaltung_id; - document.getElementById('student-projektarbeit-menulist-lehreinheit').value=lehreinheit_id; - document.getElementById('student-projektarbeit-textbox-titel').value=titel; - document.getElementById('student-projektarbeit-textbox-titel_english').value=titel_english; - document.getElementById('student-projektarbeit-menulist-firma').value=firma_id; - document.getElementById('student-projektarbeit-menulist-note').value=note; - document.getElementById('student-projektarbeit-textbox-punkte').value=punkte; - document.getElementById('student-projektarbeit-datum-beginn').value=beginn; - document.getElementById('student-projektarbeit-datum-ende').value=ende; - document.getElementById('student-projektarbeit-textbox-faktor').value=faktor; - if(freigegeben=='Ja') - document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true; - else - document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false; - document.getElementById('student-projektarbeit-datum-gesperrtbis').value=gesperrtbis; - document.getElementById('student-projektarbeit-textbox-stundensatz').value=stundensatz; - document.getElementById('student-projektarbeit-textbox-gesamtstunden').value=gesamtstunden; - document.getElementById('student-projektarbeit-textbox-themenbereich').value=themenbereich; - document.getElementById('student-projektarbeit-textbox-anmerkung').value=anmerkung; - document.getElementById('student-projektarbeit-checkbox-neu').checked=false; - if(final=='Ja') - document.getElementById('student-projektarbeit-checkbox-final').checked=true; - else - document.getElementById('student-projektarbeit-checkbox-final').checked=false; - - // **** BETREUER **** // - var tree = document.getElementById('student-projektbetreuer-tree'); - var url='rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+"&"+gettimestamp(); - - StudentProjektbetreuerDisableFields(false); - - try - { - StudentProjektbetreuerTreeDatasource.removeXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver); - tree.builder.removeListener(StudentProjektbetreuerTreeListener); - } - catch(e) - {} - - //Alte DS entfernen - var oldDatasources = tree.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - tree.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - tree.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - StudentProjektbetreuerTreeDatasource = rdfService.GetDataSource(url); - StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - tree.database.AddDataSource(StudentProjektbetreuerTreeDatasource); - StudentProjektbetreuerTreeDatasource.addXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver); - tree.builder.addListener(StudentProjektbetreuerTreeListener); - - //Reset attributes - document.getElementById('student-projektbetreuer-label-vertragsstatus').value = ''; - document.getElementById('student-projektbetreuer-label-vertragsstunden').value = ''; - document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = ''; - document.getElementById('student-projektbetreuer-label-vertrag_id').value = ''; -} - -// **** -// * Refresht das Firma DropDown -// **** -function StudentProjektarbeitFirmaRefresh() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var tree = document.getElementById('student-projektarbeit-menulist-firma'); - var url="rdf/firma.rdf.php?optional=true&"+gettimestamp(); - - //Alte DS entfernen - var oldDatasources = tree.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - tree.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - tree.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - var myDatasource = rdfService.GetDataSource(url); - tree.database.AddDataSource(myDatasource); -} - -// **** -// * Speichert die Projektarbeit Daten -// **** -function StudentProjektarbeitSpeichern() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - projektarbeit_id = document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value; - projekttyp_kurzbz = document.getElementById('student-projektarbeit-menulist-projekttyp').value; - lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value; - lehreinheit_id = document.getElementById('student-projektarbeit-menulist-lehreinheit').value; - titel = document.getElementById('student-projektarbeit-textbox-titel').value; - titel_english = document.getElementById('student-projektarbeit-textbox-titel_english').value; - firma_id = document.getElementById('student-projektarbeit-menulist-firma').value; - note = document.getElementById('student-projektarbeit-menulist-note').value; - punkte = document.getElementById('student-projektarbeit-textbox-punkte').value; - beginn = document.getElementById('student-projektarbeit-datum-beginn').value; - ende = document.getElementById('student-projektarbeit-datum-ende').value; - faktor = document.getElementById('student-projektarbeit-textbox-faktor').value; - freigegeben = document.getElementById('student-projektarbeit-checkbox-freigegeben').checked; - gesperrtbis = document.getElementById('student-projektarbeit-datum-gesperrtbis').value; - stundensatz = document.getElementById('student-projektarbeit-textbox-stundensatz').value; - gesamtstunden = document.getElementById('student-projektarbeit-textbox-gesamtstunden').value; - themenbereich = document.getElementById('student-projektarbeit-textbox-themenbereich').value; - anmerkung = document.getElementById('student-projektarbeit-textbox-anmerkung').value; - neu = document.getElementById('student-projektarbeit-checkbox-neu').checked; - final = document.getElementById('student-projektarbeit-checkbox-final').checked; - - student_uid =document.getElementById('student-detail-textbox-uid').value; - studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; - - if(student_uid=='') - { - alert('UID dieser Person konnte nicht ermittelt werden'); - return false; - } - - //Datum pruefen - if(beginn!='' && !CheckDatum(beginn)) - { - alert('Beginn ist ungueltig'); - return false; - } - - if(ende!='' && !CheckDatum(ende)) - { - alert('Ende ist ungueltig'); - return false; - } - - if(gesperrtbis!='' && !CheckDatum(gesperrtbis)) - { - alert('gesperrtbis ist ungueltig'); - return false; - } - - if(lehreinheit_id=='') - { - alert('Bitte eine Lehreinheit Auswaehlen'); - return false; - } - - if(isNaN(gesamtstunden)) - gesamtstunden=0; - - var url = 'content/student/studentDBDML.php'; - var req = new phpRequest(url,'',''); - - req.add('type', 'saveprojektarbeit'); - - req.add('projektarbeit_id', projektarbeit_id); - req.add('projekttyp_kurzbz', projekttyp_kurzbz ); - req.add('titel', titel); - req.add('titel_english', titel_english); - req.add('lehreinheit_id', lehreinheit_id); - req.add('student_uid', student_uid); - req.add('firma_id', firma_id); - req.add('note', note); - req.add('punkte', punkte); - req.add('beginn', ConvertDateToISO(beginn)); - req.add('ende', ConvertDateToISO(ende)); - req.add('faktor', faktor); - req.add('freigegeben', freigegeben); - req.add('gesperrtbis', ConvertDateToISO(gesperrtbis)); - req.add('stundensatz', stundensatz); - req.add('gesamtstunden', gesamtstunden); - req.add('themenbereich', themenbereich); - req.add('anmerkung', anmerkung); - req.add('neu', neu); - req.add('studiengang_kz', studiengang_kz); - req.add('final', final); - - 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 - { - StudentProjektarbeitSelectID=val.dbdml_data; - StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking - SetStatusBarText('Daten wurden gespeichert'); - StudentProjektarbeitDetailDisableFields(true); - } -} - -// **** -// * Aktiviert die Detailfelder zum Neu Anlegen einer Projektarbeit -// **** - -function StudentProjektarbeitNeu() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - document.getElementById('student-projektarbeit-checkbox-neu').checked=true; - document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=''; - StudentProjektarbeitResetFields(); - StudentProjektarbeitDetailDisableFields(false); - StudentProjektbetreuerDisableFields(true); - var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; - - //Lehrveranstaltung DropDown laden - var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); - url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&"+gettimestamp(); - - //Alte DS entfernen - var oldDatasources = LvDropDown.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - LvDropDown.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - LvDropDown.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - var datasource = rdfService.GetDataSourceBlocking(url); - datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - LvDropDown.database.AddDataSource(datasource); - - LvDropDown.builder.rebuild(); -} - -// **** -// * Loescht den markierten Eintrag -// **** -function StudentProjektarbeitLoeschen() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var tree = document.getElementById('student-projektarbeit-tree'); - - studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; - - if (tree.currentIndex==-1) - { - alert('Bitte zuerst einen Eintrag markieren'); - return false; - } - - //Ausgewaehlte Nr holen - var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id"; - var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); - var url = 'content/student/studentDBDML.php'; - - var req = new phpRequest(url,'',''); - - req.add('type', 'deleteprojektarbeit'); - - req.add('projektarbeit_id', projektarbeit_id); - req.add('studiengang_kz', studiengang_kz); - - 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 - { - StudentProjektarbeitSelectID=null; - StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking - SetStatusBarText('Daten wurden geloescht'); - StudentProjektarbeitDetailDisableFields(true); - } -} - -// **** -// * Wenn die Lehrveranstaltung geaendert wird, dann -// * muss das LehreinheitenDropDown neu geladen werden -// **** -function StudentProjektarbeitLVAChange() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value; - studiensemester_kurzbz = getStudiensemester(); - - // Lehreinheit Drop Down laden - var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit'); - url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+studiensemester_kurzbz+"&"+gettimestamp(); - - //Alte DS entfernen - var oldDatasources = LeDropDown.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - LeDropDown.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - LeDropDown.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - var datasource = rdfService.GetDataSourceBlocking(url); - datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - LeDropDown.database.AddDataSource(datasource); - - LeDropDown.selectedIndex=-1; - - LeDropDown.builder.rebuild(); -} - -// ******************* PROJEKTBETREUER ************************* // - -// ***** -// * Markiert eine Zeile im Projektbetreuer Tree -// ***** -function StudentProjektbetreuerTreeSelectID() -{ - var tree=document.getElementById('student-projektbetreuer-tree'); - if(tree.view) - var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln - else - return false; - - - //In der globalen Variable ist die zu selektierende Eintrag gespeichert - if(StudentProjektbetreuerSelectPersonID!=null) - { - for(var i = 0;i < items; i++) - { - //ID der row holen - col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id"; - var projektarbeit_id=tree.view.getCellText(i,col); - col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id"; - var person_id=tree.view.getCellText(i,col); - col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz"; - var betreuerart_kurzbz=tree.view.getCellText(i,col); - - //wenn dies die zu selektierende Zeile - if(person_id == StudentProjektbetreuerSelectPersonID && projektarbeit_id == StudentProjektbetreuerSelectProjektarbeitID && betreuerart_kurzbz == StudentProjektbetreuerSelectBetreuerartKurzbz) - { - //Zeile markieren - tree.view.selection.select(i); - //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt - tree.treeBoxObject.ensureRowIsVisible(i); - StudentIOSelectID=null; - return true; - } - } - } -} - -// ***** -// * Prüft, ob zu einer Projektarbeit zumindest ein Lektor einen Vertrag besitzt -// ***** -function StudentProjektbetreuer_VertragExistiert(){ - - var tree = document.getElementById('student-projektbetreuer-tree'); - - if(tree.view) - var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln - else - return false; - - for(var i = 0;i < items; i++) - { - //ID der row holen - col = tree.columns ? tree.columns["student-projektbetreuer-tree-vertrag_id"] : "student-projektbetreuer-tree-vertrag_id"; - var vertrag_id = tree.view.getCellText(i,col); - - if(vertrag_id != '') - { - return true; - } - } - return false; -} - -// ***** -// * Bei Auswahl eines Betreuers, wird dieser zum Bearbeiten geladen -// ***** -function StudentProjektbetreuerAuswahl() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var tree = document.getElementById('student-projektbetreuer-tree'); - - if (tree.currentIndex==-1) return; - - StudentProjektbetreuerDetailDisableFields(false); - - //Ausgewaehlte Nr holen - var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-treecol-projektarbeit_id"; - var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); - var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-treecol-person_id"; - var person_id=tree.view.getCellText(tree.currentIndex,col); - var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-treecol-betreuerart_kurzbz"; - var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col); - - if(projektarbeit_id=='' || person_id=='' || betreuerart_kurzbz=='') - { - debug('StudentProjektbetreuerAuswahl: Fehler beim Laden'); - return false; - } - - //Daten holen - var url = 'rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+'&person_id='+person_id+'&betreuerart_kurzbz='+betreuerart_kurzbz+'&'+gettimestamp(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. - getService(Components.interfaces.nsIRDFService); - - var dsource = rdfService.GetDataSourceBlocking(url); - - var subject = rdfService.GetResource("http://www.technikum-wien.at/projektbetreuer/" + person_id+'/'+projektarbeit_id+'/'+betreuerart_kurzbz); - - var predicateNS = "http://www.technikum-wien.at/projektbetreuer/rdf"; - - //Daten holen - - note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" )); - faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" )); - name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#name" )); - punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" )); - stunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stunden" )); - stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" )); - betreuerart_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betreuerart_kurzbz" )); - person_nachname = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_nachname" )); - vertrag_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertrag_id" )); - - StudentProjektbetreuerMenulistPersonLoad(document.getElementById('student-projektbetreuer-menulist-person'), person_nachname); - - //Werte setzen - MenulistSelectItemOnValue('student-projektbetreuer-menulist-person', person_id); - document.getElementById('student-projektbetreuer-menulist-note').value=note; - document.getElementById('student-projektbetreuer-textbox-faktor').value=faktor; - document.getElementById('student-projektbetreuer-textbox-name').value=name; - document.getElementById('student-projektbetreuer-textbox-punkte').value=punkte; - document.getElementById('student-projektbetreuer-textbox-stunden').value=stunden; - document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz; - document.getElementById('student-projektbetreuer-menulist-betreuerart').value=betreuerart_kurzbz; - document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value=betreuerart_kurzbz; - document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id; - document.getElementById('student-projektbetreuer-checkbox-neu').checked=false; - - var gesamtkosten = StudentProjektbetreuerGesamtkosten(); - - // Prüfe ob Vertragsdetails angezeigt werden - var vertragsdetails_anzeigen = ; - - // Wenn Vertragsdetails angezeigt werden - if (vertragsdetails_anzeigen) { - //Reset attributes - document.getElementById('student-projektbetreuer-label-vertragsstatus').setAttribute("style", "font-weight: normal"); - document.getElementById('student-projektbetreuer-button-vertrag-stornieren').setAttribute("tooltiptext", - "Stornieren erst ab Status 'Angenommen' möglich."); - document.getElementById('student-projektbetreuer-button-vertrag-stornieren').disabled = true; - document.getElementById('student-projektbetreuer-button-loeschen').disabled = false; - document.getElementById('student-projektbetreuer-menulist-person').disabled = false; - document.getElementById('student-projektbetreuer-textbox-stunden').disabled= false; - document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled= false; - document.getElementById('student-projektbetreuer-textbox-stunden').setAttribute("tooltiptext", ""); - document.getElementById('student-projektbetreuer-textbox-stundensatz').setAttribute("tooltiptext", ""); - document.getElementById('student-projektbetreuer-button-loeschen').setAttribute("tooltiptext", ""); - document.getElementById('student-projektbetreuer-menulist-person').setAttribute("tooltiptext", ""); - - // Wenn es einen Vertrag zum Lehrauftrag gibt - if (vertrag_id != null && vertrag_id != '') - { - // Änderung und Entfernen des Lektors disablen - document.getElementById('student-projektbetreuer-button-loeschen').disabled = true; - document.getElementById('student-projektbetreuer-menulist-person').disabled = true; - - // Tooltip für Blockierung von Aenderung und Entfernen des Lektors - document.getElementById('student-projektbetreuer-button-loeschen').setAttribute("tooltiptext", - "Änderung nur nach Stornierung des Vertrags möglich."); - document.getElementById('student-projektbetreuer-menulist-person').setAttribute("tooltiptext", - "Änderung nur nach Stornierung des Vertrags möglich."); - - // Url zum RDF - var url = "rdf/vertrag.rdf.php?"+gettimestamp(); - - ////RDF laden - var req = new phpRequest(url, '', ''); - req.add('vertrag_id', vertrag_id); - var response = req.execute(); - - // Trick 17 (sonst gibt's ein Permission denied) - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - // XML in Datasource parsen - var dsource = parseRDFString(response, 'http://www.technikum-wien.at/vertrag/liste'); - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. - getService(Components.interfaces.nsIRDFService); - var subject = rdfService.GetResource("http://www.technikum-wien.at/vertrag/" + vertrag_id); - var predicateNS = "http://www.technikum-wien.at/vertrag/rdf"; - - //Daten holen - betrag = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betrag" )); - vertragsdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsdatum" )); - vertragsstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden" )); - vertragsstunden_studiensemester_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden_studiensemester_kurzbz" )); - - // Letzten (aktuellsten) Vertragsstatus laden - var url_letzterStatus = 'content/lvplanung/lehrveranstaltungDBDML.php'; - var req_letzterStatus = new phpRequest(url_letzterStatus,'',''); - - req_letzterStatus.add('type', 'getLastVertragsstatus'); - req_letzterStatus.add('vertrag_id', vertrag_id); - - - var response_letzterStatus = req_letzterStatus.executePOST(); - - var val_letzterStatus = new ParseReturnValue(response_letzterStatus); - - if (!val_letzterStatus.dbdml_return) - { - if(val_letzterStatus.dbdml_errormsg=='') - alert(response_letzterStatus); - else - alert(val_letzterStatus.dbdml_errormsg); - } - else - { - var letzterStatus = val_letzterStatus.dbdml_data; - } - - // Vertragsstatus setzen - // * wenn Gesamtkosten im Lehrauftrag nicht gleich Betrag im Vertrag ist: Status 'geändert' hardcoden - if(gesamtkosten != parseFloat(betrag)) - { - vertragsstatus = 'Geändert'; - document.getElementById('student-projektbetreuer-label-vertragsstatus').setAttribute("style", "font-weight: bold") - } - // * ansonsten Vertragsstatus zeigen - else - { - vertragsstatus = letzterStatus; - } - - // Uppercase status - vertragsstatus = vertragsstatus.charAt(0).toUpperCase() + vertragsstatus.slice(1); - - /** - * Stornierung - * Nur wenn Vertragsstatus 'akzeptiert' ist: - * - button Stornierung aktivieren - * - tooltip ausblenden - * - Felder zur Bearbeitung von LektorInnendaten deaktivieren - */ - if(letzterStatus == 'akzeptiert') - { - document.getElementById('student-projektbetreuer-button-vertrag-stornieren').disabled = false; - document.getElementById('student-projektbetreuer-button-vertrag-stornieren').setAttribute("tooltiptext", ""); - - // Semesterstunden und Stundensatz disablen - document.getElementById('student-projektbetreuer-textbox-stunden').disabled= true; - document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled= true; - - // Tooltip für Semesterstunden und Stundensatz - document.getElementById('student-projektbetreuer-textbox-stunden').setAttribute("tooltiptext", - "Änderung nur nach Stornierung des Vertrags möglich."); - document.getElementById('student-projektbetreuer-textbox-stundensatz').setAttribute("tooltiptext", - "Änderung nur nach Stornierung des Vertrags möglich."); - } - } - // Wenn kein Vertrag vorhanden - else { - vertragsstatus = 'Noch kein Vertrag'; - vertragsstunden = '-'; - vertragsstunden_studiensemester_kurzbz = '-'; - } - - // Felder befüllen - document.getElementById('student-projektbetreuer-label-vertragsstatus').value = vertragsstatus; - document.getElementById('student-projektbetreuer-label-vertragsstunden').value = vertragsstunden; - document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = vertragsstunden_studiensemester_kurzbz; - document.getElementById('student-projektbetreuer-label-vertrag_id').value = vertrag_id; - } -} - -// ***** -// * Berechnet die Projektbetreuungskosten -// ***** -function StudentProjektbetreuerGesamtkosten(){ - var semesterstunden = document.getElementById('student-projektbetreuer-textbox-stunden').value - var stundensatz = document.getElementById('student-projektbetreuer-textbox-stundensatz').value - - if(!isNaN(semesterstunden) && !isNaN(stundensatz)) - gesamtkosten = semesterstunden*stundensatz; - else - gesamtkosten = 0; - - return gesamtkosten; -} - -// **** -// * Storniert einen Vertrag -// **** -function StudentProjektbetreuerVertragStornieren(){ - - var result = confirm("Möchten Sie den Vertrag wirklich stornieren?"); - - if (result == true) { - - var vertrag_id = document.getElementById('student-projektbetreuer-label-vertrag_id').value; - var person_id = document.getElementById('student-projektbetreuer-textbox-person_id').value; - - // Vertrag stornieren - var url_storniert = 'content/lvplanung/lehrveranstaltungDBDML.php'; - var req_storniert = new phpRequest(url_storniert,'',''); - - req_storniert.add('type', 'cancelVertrag'); - req_storniert.add('vertrag_id', vertrag_id); - req_storniert.add('person_id', person_id); - - var response_storniert = req_storniert.executePOST(); - - var val_storniert = new ParseReturnValue(response_storniert); - - if (!val_storniert.dbdml_return) - { - if(val_storniert.dbdml_errormsg=='') - alert(response_storniert); - else - alert(val_storniert.dbdml_errormsg); - } - else - { - // Reiter wieder aufbauen - // Kompletten Aufbau, um wieder alle Projektbetreuer zu ermitteln und prüfen zu können, - // ob zumindesteiner einen Vertrag besitzt. - StudentProjektarbeitAuswahl(); - } - } - -} - -// ***** -// * De-/Aktiviert die Buttons -// ***** -function StudentProjektbetreuerDisableFields(val) -{ - document.getElementById('student-projektbetreuer-button-neu').disabled=val; - document.getElementById('student-projektbetreuer-button-loeschen').disabled=val; - - if(val) - { - tree = document.getElementById('student-projektbetreuer-tree'); - var oldDatasources = tree.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - tree.database.RemoveDataSource(oldDatasources.getNext()); - } - tree.builder.rebuild(); - - StudentProjektbetreuerDetailDisableFields(val); - } -} - -// **** -// * De-/Aktiviert die Detailfelder -// **** -function StudentProjektbetreuerDetailDisableFields(val) -{ - document.getElementById('student-projektbetreuer-menulist-person').disabled=val; - document.getElementById('student-projektbetreuer-menulist-note').disabled=val; - document.getElementById('student-projektbetreuer-menulist-betreuerart').disabled=val; - document.getElementById('student-projektbetreuer-textbox-faktor').disabled=val; - document.getElementById('student-projektbetreuer-textbox-name').disabled=val; - document.getElementById('student-projektbetreuer-textbox-punkte').disabled=val; - document.getElementById('student-projektbetreuer-textbox-stunden').disabled=val; - document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled=val; - document.getElementById('student-projektbetreuer-button-speichern').disabled=val; - document.getElementById('student-projektbetreuer-button-neueperson').disabled=val; - document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val; -} - -// **** -// * Resettet die Detailfelder -// **** -function StudentProjektbetreuerDetailReset() -{ - document.getElementById('student-projektbetreuer-textbox-faktor').value='1'; - document.getElementById('student-projektbetreuer-textbox-name').value=''; - document.getElementById('student-projektbetreuer-menulist-note').value=''; - - document.getElementById('student-projektbetreuer-textbox-punkte').value='0.0'; - - if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Diplom') - { - document.getElementById('student-projektbetreuer-textbox-stunden').value='5.0'; - document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Erstbegutachter'; - } - else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Bachelor') - { - document.getElementById('student-projektbetreuer-textbox-stunden').value='4.0'; - document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter'; - } - else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Praktikum') - { - document.getElementById('student-projektbetreuer-menulist-betreuerart').value='BetreuerPraktik'; - } - else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Projekt') - { - document.getElementById('student-projektbetreuer-menulist-betreuerart').value='BetreuerProjekt'; - } - else - { - document.getElementById('student-projektbetreuer-textbox-stunden').value='0.0'; - document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter'; - } - document.getElementById('student-projektbetreuer-textbox-stundensatz').value='80.0'; - document.getElementById('student-projektbetreuer-menulist-person').value=''; -} - -// **** -// * Laedt dynamisch die Personen fuer das DropDown Menue -// * Es muessen mindestens 3 Zeichen in das DropDown Menue eingegeben werden -// **** -function StudentProjektbetreuerMenulistPersonLoad(menulist, filter) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - if(typeof(filter)=='undefined') - v = menulist.value; - else - v = filter; - - if(v.length>2) - { - var url = 'rdf/person.rdf.php?filter='+encodeURIComponent(v)+'&'+gettimestamp(); - //nurmittitel=& - var oldDatasources = menulist.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - menulist.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - menulist.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - if(typeof(filter)=='undefined') - var datasource = rdfService.GetDataSource(url); - else - var datasource = rdfService.GetDataSourceBlocking(url); - datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - menulist.database.AddDataSource(datasource); - if(typeof(filter)!='undefined') - menulist.builder.rebuild(); - } -} - -// **** -// * Speichert die Projektbetreuer Daten -// **** -function StudentProjektbetreuerSpeichern() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person'); - note = document.getElementById('student-projektbetreuer-menulist-note').value; - faktor = document.getElementById('student-projektbetreuer-textbox-faktor').value; - name = document.getElementById('student-projektbetreuer-textbox-name').value; - punkte = document.getElementById('student-projektbetreuer-textbox-punkte').value; - stunden = document.getElementById('student-projektbetreuer-textbox-stunden').value; - stundensatz = document.getElementById('student-projektbetreuer-textbox-stundensatz').value; - betreuerart_kurzbz = document.getElementById('student-projektbetreuer-menulist-betreuerart').value; - betreuerart_kurzbz_old = document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value; - person_id_old = document.getElementById('student-projektbetreuer-textbox-person_id').value; - neu = document.getElementById('student-projektbetreuer-checkbox-neu').checked; - - studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; - - var tree = document.getElementById('student-projektarbeit-tree'); - - if(person_id=='') - { - alert('Bitte zuerst einen Betreuer auswaehlen'); - return false; - } - - if (tree.currentIndex==-1) - { - alert('Projektarbeit muss ausgewaehlt sein'); - return; - } - var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id"; - var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); - - var url = 'content/student/studentDBDML.php'; - var req = new phpRequest(url,'',''); - - req.add('type', 'saveprojektbetreuer'); - - req.add('person_id', person_id); - req.add('note', note); - req.add('faktor', faktor); - req.add('name', name); - req.add('punkte', punkte); - req.add('stunden', stunden); - req.add('stundensatz', stundensatz); - req.add('betreuerart_kurzbz', betreuerart_kurzbz); - req.add('betreuerart_kurzbz_old', betreuerart_kurzbz_old); - req.add('projektarbeit_id', projektarbeit_id); - req.add('person_id_old', person_id_old); - req.add('neu', neu); - req.add('studiengang_kz', studiengang_kz); - - 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 - { - StudentProjektbetreuerSelectPersonID=person_id; - StudentProjektbetreuerSelectProjektarbeitID=projektarbeit_id; - StudentProjektbetreuerSelectBetreuerartKurzbz=betreuerart_kurzbz; - StudentProjektbetreuerDetailDisableFields(true); - StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking - SetStatusBarText('Daten wurden gespeichert'); - - } -} - -// **** -// * Deaktiviert die Detailfelder um einen Neuen Datensatz zu erstellen -// **** -function StudentProjektbetreuerNeu() -{ - StudentProjektbetreuerDetailReset(); - document.getElementById('student-projektbetreuer-checkbox-neu').checked=true; - StudentProjektbetreuerDetailDisableFields(false); -} - -// **** -// * Loescht einen Projektbetreuer -// **** -function StudentProjektbetreuerLoeschen() -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - var tree = document.getElementById('student-projektbetreuer-tree'); - - if (tree.currentIndex==-1) - { - alert('Projektbetreuer muss ausgewaehlt sein'); - return; - } - var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id"; - var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); - var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id"; - var person_id=tree.view.getCellText(tree.currentIndex,col); - var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz"; - var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col); - - studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; - - var url = 'content/student/studentDBDML.php'; - var req = new phpRequest(url,'',''); - - req.add('type', 'deleteprojektbetreuer'); - - req.add('person_id', person_id); - req.add('projektarbeit_id', projektarbeit_id); - req.add('betreuerart_kurzbz', betreuerart_kurzbz); - req.add('studiengang_kz', studiengang_kz); - - 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 - { - StudentProjektbetreuerSelectPersonID=null; - StudentProjektbetreuerSelectProjektarbeitID=null; - StudentProjektbetreuerSelectBetreuerartKurzbz=null; - StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking - SetStatusBarText('Daten wurden geloescht'); - StudentProjektbetreuerDetailDisableFields(true); - } -} - -function StudentProjektbetreuerLoadMitarbeiterDaten() -{ - person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person'); - - var url = 'content/student/studentDBDML.php'; - var req = new phpRequest(url,'',''); - - req.add('type', 'getstundensatz'); - req.add('person_id', person_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 - { - stundensatz = val.dbdml_data - } - - document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz; -} - -// **** -// * Neuen Projektbetreuer anlegen -// **** -function StudentProjektbetreuerNeuePerson() -{ - window.open('vilesci/personen/personen_anlegen.php','Person anlegen','height=700,width=900,left=300,top=300,hotkeys=0,resizable=yes,status=no,toolbar=no,location=no,menubar=no,dependent=yes'); -} - -// **** -// * Kontaktdaten eines Betreuers Bearbeiten -// **** -function StudentProjektbetreuerKontaktdaten() -{ - person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person'); - if(person_id!='') - window.open('vilesci/personen/kontaktdaten_edit.php?person_id='+person_id,'Kontaktdaten'); - else - alert('Bitte zuerst eine Person auswaehlen'); -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +require_once('../../config/vilesci.config.inc.php'); +require_once('../../config/global.config.inc.php'); + +?> +// *********** Globale Variablen *****************// +var StudentProjektarbeitSelectID=null; //Id der Projektarbeit die nach dem Rebuild markiert werden soll +var StudentProjektarbeitTreeDatasource=null; //Datasource des Projektarbeit Trees +var StudentProjektbetreuerTreeDatasource=null; //Datasource des Projektbetreuer Trees +var StudentProjektbetreuerSelectPersonID=null; +var StudentProjektbetreuerSelectProjektarbeitID=null; +var StudentProjektbetreuerSelectBetreuerartKurzbz=null; +vertragsdetails_anzeigen = ; + +// ********** Observer und Listener ************* // + +// **** +// * Observer fuer Projektarbeit Tree +// * startet Rebuild nachdem das Refresh +// * der Datasource fertig ist +// **** +var StudentProjektarbeitTreeSinkObserver = +{ + onBeginLoad : function(pSink) + { + //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst + //zu Problemen kommt + tree = document.getElementById('student-projektarbeit-tree'); + tree.removeEventListener('select', StudentProjektarbeitAuswahl, false); + }, + onInterrupt : function(pSink) {}, + onResume : function(pSink) {}, + onError : function(pSink, pStatus, pError) {}, + onEndLoad : function(pSink) + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + document.getElementById('student-projektarbeit-tree').builder.rebuild(); + } +}; + +// **** +// * Nach dem Rebuild wird die Projektarbeit wieder +// * markiert +// **** +var StudentProjektarbeitTreeListener = +{ + willRebuild : function(builder) { }, + didRebuild : function(builder) + { + tree = document.getElementById('student-projektarbeit-tree'); + tree.addEventListener('select', StudentProjektarbeitAuswahl, false); + //timeout nur bei Mozilla notwendig da sonst die rows + //noch keine values haben. Ab Seamonkey funktionierts auch + //ohne dem setTimeout + window.setTimeout(StudentProjektarbeitTreeSelectID,10); + } +}; + +// **** +// * Observer fuer Projektbetreuer Tree +// * startet Rebuild nachdem das Refresh +// * der Datasource fertig ist +// **** +var StudentProjektbetreuerTreeSinkObserver = +{ + onBeginLoad : function(pSink) + { + //Eventlistener waehrend des Ladevorganges deaktivieren da es sonst + //zu Problemen kommt + tree = document.getElementById('student-projektbetreuer-tree'); + tree.removeEventListener('select', StudentProjektbetreuerAuswahl, false); + }, + onInterrupt : function(pSink) {}, + onResume : function(pSink) {}, + onError : function(pSink, pStatus, pError) {}, + onEndLoad : function(pSink) + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + document.getElementById('student-projektbetreuer-tree').builder.rebuild(); + } +}; + +// **** +// * Nach dem Rebuild wird die Projektbetreuer wieder +// * markiert +// **** +var StudentProjektbetreuerTreeListener = +{ + willRebuild : function(builder) { }, + didRebuild : function(builder) + { + tree = document.getElementById('student-projektbetreuer-tree'); + tree.addEventListener('select', StudentProjektbetreuerAuswahl, false); + //timeout nur bei Mozilla notwendig da sonst die rows + //noch keine values haben. Ab Seamonkey funktionierts auch + //ohne dem setTimeout + window.setTimeout(StudentProjektbetreuerTreeSelectID,10); + + if(vertragsdetails_anzeigen) + { + var mindEinVertragExistiert = StudentProjektbetreuer_VertragExistiert(); + + // Wenn für diese Projektarbeit zumindest ein Projektbetreuer einen Vertrag besitzt + if (mindEinVertragExistiert === true) + { + // Entfernen der Bachelorarbeit disablen + document.getElementById('student-projektarbeit-button-loeschen').disabled = true; + + // Tooltip setzen + document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext", + "Projektarbeit kann nurmehr nach Vertragsstorno gelöscht werden."); + } + else { + // Entfernen der Bachelorarbeit enablen + document.getElementById('student-projektarbeit-button-loeschen').disabled = false; + + // Tooltip setzen + document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext", + ""); + + } + } + + } +}; +// ****************** FUNKTIONEN ************************** // + +// **** +// * Laedt die Daten fuer den Projektarbeiten Tree +// **** +function StudentProjektarbeitTreeLoad(uid) +{ + var tree = document.getElementById('student-projektarbeit-tree'); + var url='rdf/projektarbeit.rdf.php?student_uid='+uid+"&"+gettimestamp(); + + //Alte Observer entfernen + try + { + StudentProjektarbeitTreeDatasource.removeXMLSinkObserver(StudentProjektarbeitTreeSinkObserver); + tree.builder.removeListener(StudentProjektarbeitTreeListener); + } + catch(e) + {} + + //Alte DS entfernen + var oldDatasources = tree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + tree.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + tree.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + StudentProjektarbeitTreeDatasource = rdfService.GetDataSource(url); + StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + StudentProjektarbeitTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + tree.database.AddDataSource(StudentProjektarbeitTreeDatasource); + StudentProjektarbeitTreeDatasource.addXMLSinkObserver(StudentProjektarbeitTreeSinkObserver); + tree.builder.addListener(StudentProjektarbeitTreeListener); + + StudentProjektarbeitDisableFields(false); + var vertragsdetails_anzeigen = ; + + // Wenn Vertragsdetails angezeigt werden + if (vertragsdetails_anzeigen) { + //Reset attributes + document.getElementById('student-projektbetreuer-label-vertragsstatus').value = ''; + document.getElementById('student-projektbetreuer-label-vertragsstunden').value = ''; + document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = ''; + document.getElementById('student-projektbetreuer-label-vertrag_id').value = ''; + } +} + +// **** +// * Deaktiviert alle Felder in diesem Tab +// **** +function StudentProjektarbeitDisableAll() +{ + //Tree Leeren + var tree = document.getElementById('student-projektarbeit-tree'); + + //Alte DS entfernen + var oldDatasources = tree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + tree.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + tree.builder.rebuild(); + + StudentProjektarbeitDisableFields(true); +} + +// **** +// * De-/Aktiviert die ProjektarbeitFelder +// **** +function StudentProjektarbeitDisableFields(val) +{ + document.getElementById('student-projektarbeit-button-neu').disabled=val; + document.getElementById('student-projektarbeit-button-loeschen').disabled=val; + // Tooltip setzen + document.getElementById('student-projektarbeit-button-loeschen').setAttribute("tooltiptext", + ""); + + if(val) + { + StudentProjektarbeitDetailDisableFields(val); + } +} + +// **** +// * De-/Aktiviert die ProjektarbeitDetailFelder +// **** +function StudentProjektarbeitDetailDisableFields(val) +{ + document.getElementById('student-projektarbeit-button-speichern').disabled=val; + document.getElementById('student-projektarbeit-menulist-projekttyp').disabled=val; + document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').disabled=val; + document.getElementById('student-projektarbeit-menulist-lehreinheit').disabled=val; + document.getElementById('student-projektarbeit-menulist-firma').disabled=val; + document.getElementById('student-projektarbeit-menulist-note').disabled=val; + document.getElementById('student-projektarbeit-textbox-titel').disabled=val; + document.getElementById('student-projektarbeit-textbox-titel_english').disabled=val; + document.getElementById('student-projektarbeit-textbox-punkte').disabled=val; + document.getElementById('student-projektarbeit-datum-beginn').disabled=val; + document.getElementById('student-projektarbeit-datum-ende').disabled=val; + document.getElementById('student-projektarbeit-textbox-faktor').disabled=val; + document.getElementById('student-projektarbeit-checkbox-freigegeben').disabled=val; + document.getElementById('student-projektarbeit-datum-gesperrtbis').disabled=val; + document.getElementById('student-projektarbeit-textbox-stundensatz').disabled=val; + document.getElementById('student-projektarbeit-textbox-gesamtstunden').disabled=val; + document.getElementById('student-projektarbeit-textbox-themenbereich').disabled=val; + document.getElementById('student-projektarbeit-textbox-anmerkung').disabled=val; + document.getElementById('student-projektarbeit-checkbox-final').disabled=val; + + if(val) + StudentProjektarbeitResetFields(); +} + +// **** +// * Wenn in das Gesperrt-Feld ein Wert eingetragen wird, dann wird das Freigegeben Hackerl entfernt +function StudentProjektarbeitGesperrtChanged() +{ + if(document.getElementById('student-projektarbeit-datum-gesperrtbis').value!='') + { + document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false; + } +} + +// **** +// * Resetet die ProjektarbeitDetailFelder +// **** +function StudentProjektarbeitResetFields() +{ + document.getElementById('student-projektarbeit-textbox-titel').value=''; + document.getElementById('student-projektarbeit-textbox-titel_english').value=''; + document.getElementById('student-projektarbeit-textbox-punkte').value='0.0'; + document.getElementById('student-projektarbeit-datum-beginn').value=''; + document.getElementById('student-projektarbeit-datum-ende').value=''; + document.getElementById('student-projektarbeit-textbox-faktor').value='1.0'; + document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true; + document.getElementById('student-projektarbeit-datum-gesperrtbis').value=''; + document.getElementById('student-projektarbeit-textbox-stundensatz').value='80.0'; + document.getElementById('student-projektarbeit-textbox-gesamtstunden').value='3.0'; + document.getElementById('student-projektarbeit-textbox-themenbereich').value=''; + document.getElementById('student-projektarbeit-textbox-anmerkung').value=''; + document.getElementById('student-projektarbeit-menulist-firma').value=''; + document.getElementById('student-projektarbeit-menulist-note').value=''; + document.getElementById('student-projektarbeit-checkbox-final').checked=true; + + var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; + + var url = 'rdf/studiengang.rdf.php?studiengang_kz='+stg_kz+'&'+gettimestamp(); + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + + var dsource = rdfService.GetDataSourceBlocking(url); + var subject = rdfService.GetResource("http://www.technikum-wien.at/studiengang/" + stg_kz); + var predicateNS = "http://www.technikum-wien.at/studiengang/rdf"; + studiengangstyp = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" )); + + if(studiengangstyp=='m') + document.getElementById('student-projektarbeit-menulist-projekttyp').value='Diplom'; + else + document.getElementById('student-projektarbeit-menulist-projekttyp').value='Bachelor'; +} + +// ***** +// * Markiert einen Datensatz im Tree +// ***** +function StudentProjektarbeitTreeSelectID() +{ + var tree=document.getElementById('student-projektarbeit-tree'); + if(tree.view) + var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln + else + return false; + + //In der globalen Variable ist die zu selektierende Eintrag gespeichert + if(StudentProjektarbeitSelectID!=null) + { + for(var i = 0;i < items; i++) + { + //ID der row holen + col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id"; + var id=tree.view.getCellText(i,col); + + //wenn dies die zu selektierende Zeile + if(id == StudentProjektarbeitSelectID) + { + //Zeile markieren + tree.view.selection.select(i); + //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt + tree.treeBoxObject.ensureRowIsVisible(i); + StudentIOSelectID=null; + return true; + } + } + } +} + +// **** +// * Laedt die Daten der Projektarbeit zum Bearbeiten +// **** +function StudentProjektarbeitAuswahl() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var tree = document.getElementById('student-projektarbeit-tree'); + + if (tree.currentIndex==-1) return; + + StudentProjektarbeitDetailDisableFields(false); + StudentProjektbetreuerDetailDisableFields(true); + + //Ausgewaehlte Nr holen + var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-treecol-projektarbeit_id"; + var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); + + //Daten holen + var url = 'rdf/projektarbeit.rdf.php?projektarbeit_id='+projektarbeit_id+'&'+gettimestamp(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + + var dsource = rdfService.GetDataSourceBlocking(url); + + var subject = rdfService.GetResource("http://www.technikum-wien.at/projektarbeit/" + projektarbeit_id); + + var predicateNS = "http://www.technikum-wien.at/projektarbeit/rdf"; + + //Daten holen + + projekttyp_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#projekttyp_kurzbz" )); + titel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel" )); + titel_english = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#titel_english" )); + lehreinheit_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_id" )); + lehrveranstaltung_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrveranstaltung_id" )); + lehreinheit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_stsem" )); + student_uid = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#student_uid" )); + firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" )); + note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" )); + punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" )); + beginn = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beginn" )); + ende = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ende" )); + faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" )); + freigegeben = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#freigegeben" )); + gesperrtbis = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesperrtbis" )); + stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" )); + themenbereich = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#themenbereich" )); + anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); + gesamtstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesamtstunden" )); + final = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#final" )); + + var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; + + //Lehrveranstaltung DropDown laden + var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); + url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp(); + + //Alte DS entfernen + var oldDatasources = LvDropDown.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + LvDropDown.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + LvDropDown.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + var datasource = rdfService.GetDataSourceBlocking(url); + datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + LvDropDown.database.AddDataSource(datasource); + + LvDropDown.builder.rebuild(); + + // Lehreinheit Drop Down laden + var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit'); + url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+lehreinheit_stsem+"&"+gettimestamp(); + + //Alte DS entfernen + var oldDatasources = LeDropDown.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + LeDropDown.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + LeDropDown.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + var datasource = rdfService.GetDataSourceBlocking(url); + datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + LeDropDown.database.AddDataSource(datasource); + + LeDropDown.builder.rebuild(); + + //Werte setzen + document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id; + document.getElementById('student-projektarbeit-menulist-projekttyp').value=projekttyp_kurzbz; + document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value=lehrveranstaltung_id; + document.getElementById('student-projektarbeit-menulist-lehreinheit').value=lehreinheit_id; + document.getElementById('student-projektarbeit-textbox-titel').value=titel; + document.getElementById('student-projektarbeit-textbox-titel_english').value=titel_english; + document.getElementById('student-projektarbeit-menulist-firma').value=firma_id; + document.getElementById('student-projektarbeit-menulist-note').value=note; + document.getElementById('student-projektarbeit-textbox-punkte').value=punkte; + document.getElementById('student-projektarbeit-datum-beginn').value=beginn; + document.getElementById('student-projektarbeit-datum-ende').value=ende; + document.getElementById('student-projektarbeit-textbox-faktor').value=faktor; + if(freigegeben=='Ja') + document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=true; + else + document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false; + document.getElementById('student-projektarbeit-datum-gesperrtbis').value=gesperrtbis; + document.getElementById('student-projektarbeit-textbox-stundensatz').value=stundensatz; + document.getElementById('student-projektarbeit-textbox-gesamtstunden').value=gesamtstunden; + document.getElementById('student-projektarbeit-textbox-themenbereich').value=themenbereich; + document.getElementById('student-projektarbeit-textbox-anmerkung').value=anmerkung; + document.getElementById('student-projektarbeit-checkbox-neu').checked=false; + if(final=='Ja') + document.getElementById('student-projektarbeit-checkbox-final').checked=true; + else + document.getElementById('student-projektarbeit-checkbox-final').checked=false; + + // **** BETREUER **** // + var tree = document.getElementById('student-projektbetreuer-tree'); + var url='rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+"&"+gettimestamp(); + + StudentProjektbetreuerDisableFields(false); + + try + { + StudentProjektbetreuerTreeDatasource.removeXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver); + tree.builder.removeListener(StudentProjektbetreuerTreeListener); + } + catch(e) + {} + + //Alte DS entfernen + var oldDatasources = tree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + tree.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + tree.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + StudentProjektbetreuerTreeDatasource = rdfService.GetDataSource(url); + StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + StudentProjektbetreuerTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + tree.database.AddDataSource(StudentProjektbetreuerTreeDatasource); + StudentProjektbetreuerTreeDatasource.addXMLSinkObserver(StudentProjektbetreuerTreeSinkObserver); + tree.builder.addListener(StudentProjektbetreuerTreeListener); + + //Reset attributes + document.getElementById('student-projektbetreuer-label-vertragsstatus').value = ''; + document.getElementById('student-projektbetreuer-label-vertragsstunden').value = ''; + document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = ''; + document.getElementById('student-projektbetreuer-label-vertrag_id').value = ''; +} + +// **** +// * Refresht das Firma DropDown +// **** +function StudentProjektarbeitFirmaRefresh() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var tree = document.getElementById('student-projektarbeit-menulist-firma'); + var url="rdf/firma.rdf.php?optional=true&"+gettimestamp(); + + //Alte DS entfernen + var oldDatasources = tree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + tree.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + tree.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + var myDatasource = rdfService.GetDataSource(url); + tree.database.AddDataSource(myDatasource); +} + +// **** +// * Speichert die Projektarbeit Daten +// **** +function StudentProjektarbeitSpeichern() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + projektarbeit_id = document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value; + projekttyp_kurzbz = document.getElementById('student-projektarbeit-menulist-projekttyp').value; + lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value; + lehreinheit_id = document.getElementById('student-projektarbeit-menulist-lehreinheit').value; + titel = document.getElementById('student-projektarbeit-textbox-titel').value; + titel_english = document.getElementById('student-projektarbeit-textbox-titel_english').value; + firma_id = document.getElementById('student-projektarbeit-menulist-firma').value; + note = document.getElementById('student-projektarbeit-menulist-note').value; + punkte = document.getElementById('student-projektarbeit-textbox-punkte').value; + beginn = document.getElementById('student-projektarbeit-datum-beginn').value; + ende = document.getElementById('student-projektarbeit-datum-ende').value; + faktor = document.getElementById('student-projektarbeit-textbox-faktor').value; + freigegeben = document.getElementById('student-projektarbeit-checkbox-freigegeben').checked; + gesperrtbis = document.getElementById('student-projektarbeit-datum-gesperrtbis').value; + stundensatz = document.getElementById('student-projektarbeit-textbox-stundensatz').value; + gesamtstunden = document.getElementById('student-projektarbeit-textbox-gesamtstunden').value; + themenbereich = document.getElementById('student-projektarbeit-textbox-themenbereich').value; + anmerkung = document.getElementById('student-projektarbeit-textbox-anmerkung').value; + neu = document.getElementById('student-projektarbeit-checkbox-neu').checked; + final = document.getElementById('student-projektarbeit-checkbox-final').checked; + + student_uid =document.getElementById('student-detail-textbox-uid').value; + studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; + + if(student_uid=='') + { + alert('UID dieser Person konnte nicht ermittelt werden'); + return false; + } + + //Datum pruefen + if(beginn!='' && !CheckDatum(beginn)) + { + alert('Beginn ist ungueltig'); + return false; + } + + if(ende!='' && !CheckDatum(ende)) + { + alert('Ende ist ungueltig'); + return false; + } + + if(gesperrtbis!='' && !CheckDatum(gesperrtbis)) + { + alert('gesperrtbis ist ungueltig'); + return false; + } + + if(lehreinheit_id=='') + { + alert('Bitte eine Lehreinheit Auswaehlen'); + return false; + } + + if(isNaN(gesamtstunden)) + gesamtstunden=0; + + var url = 'content/student/studentDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'saveprojektarbeit'); + + req.add('projektarbeit_id', projektarbeit_id); + req.add('projekttyp_kurzbz', projekttyp_kurzbz ); + req.add('titel', titel); + req.add('titel_english', titel_english); + req.add('lehreinheit_id', lehreinheit_id); + req.add('student_uid', student_uid); + req.add('firma_id', firma_id); + req.add('note', note); + req.add('punkte', punkte); + req.add('beginn', ConvertDateToISO(beginn)); + req.add('ende', ConvertDateToISO(ende)); + req.add('faktor', faktor); + req.add('freigegeben', freigegeben); + req.add('gesperrtbis', ConvertDateToISO(gesperrtbis)); + req.add('stundensatz', stundensatz); + req.add('gesamtstunden', gesamtstunden); + req.add('themenbereich', themenbereich); + req.add('anmerkung', anmerkung); + req.add('neu', neu); + req.add('studiengang_kz', studiengang_kz); + req.add('final', final); + + 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 + { + StudentProjektarbeitSelectID=val.dbdml_data; + StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking + SetStatusBarText('Daten wurden gespeichert'); + StudentProjektarbeitDetailDisableFields(true); + } +} + +// **** +// * Aktiviert die Detailfelder zum Neu Anlegen einer Projektarbeit +// **** + +function StudentProjektarbeitNeu() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + document.getElementById('student-projektarbeit-checkbox-neu').checked=true; + document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=''; + StudentProjektarbeitResetFields(); + StudentProjektarbeitDetailDisableFields(false); + StudentProjektbetreuerDisableFields(true); + var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value; + + //Lehrveranstaltung DropDown laden + var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung'); + url='rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&"+gettimestamp(); + + //Alte DS entfernen + var oldDatasources = LvDropDown.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + LvDropDown.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + LvDropDown.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + var datasource = rdfService.GetDataSourceBlocking(url); + datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + LvDropDown.database.AddDataSource(datasource); + + LvDropDown.builder.rebuild(); +} + +// **** +// * Loescht den markierten Eintrag +// **** +function StudentProjektarbeitLoeschen() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var tree = document.getElementById('student-projektarbeit-tree'); + + studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; + + if (tree.currentIndex==-1) + { + alert('Bitte zuerst einen Eintrag markieren'); + return false; + } + + //Ausgewaehlte Nr holen + var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id"; + var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); + var url = 'content/student/studentDBDML.php'; + + var req = new phpRequest(url,'',''); + + req.add('type', 'deleteprojektarbeit'); + + req.add('projektarbeit_id', projektarbeit_id); + req.add('studiengang_kz', studiengang_kz); + + 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 + { + StudentProjektarbeitSelectID=null; + StudentProjektarbeitTreeDatasource.Refresh(false); //non blocking + SetStatusBarText('Daten wurden geloescht'); + StudentProjektarbeitDetailDisableFields(true); + } +} + +// **** +// * Wenn die Lehrveranstaltung geaendert wird, dann +// * muss das LehreinheitenDropDown neu geladen werden +// **** +function StudentProjektarbeitLVAChange() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + lehrveranstaltung_id = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value; + studiensemester_kurzbz = getStudiensemester(); + + // Lehreinheit Drop Down laden + var LeDropDown = document.getElementById('student-projektarbeit-menulist-lehreinheit'); + url='rdf/lehreinheit.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&studiensemester_kurzbz="+studiensemester_kurzbz+"&"+gettimestamp(); + + //Alte DS entfernen + var oldDatasources = LeDropDown.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + LeDropDown.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + LeDropDown.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + var datasource = rdfService.GetDataSourceBlocking(url); + datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + LeDropDown.database.AddDataSource(datasource); + + LeDropDown.selectedIndex=-1; + + LeDropDown.builder.rebuild(); +} + +// ******************* PROJEKTBETREUER ************************* // + +// ***** +// * Markiert eine Zeile im Projektbetreuer Tree +// ***** +function StudentProjektbetreuerTreeSelectID() +{ + var tree=document.getElementById('student-projektbetreuer-tree'); + if(tree.view) + var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln + else + return false; + + + //In der globalen Variable ist die zu selektierende Eintrag gespeichert + if(StudentProjektbetreuerSelectPersonID!=null) + { + for(var i = 0;i < items; i++) + { + //ID der row holen + col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id"; + var projektarbeit_id=tree.view.getCellText(i,col); + col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id"; + var person_id=tree.view.getCellText(i,col); + col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz"; + var betreuerart_kurzbz=tree.view.getCellText(i,col); + + //wenn dies die zu selektierende Zeile + if(person_id == StudentProjektbetreuerSelectPersonID && projektarbeit_id == StudentProjektbetreuerSelectProjektarbeitID && betreuerart_kurzbz == StudentProjektbetreuerSelectBetreuerartKurzbz) + { + //Zeile markieren + tree.view.selection.select(i); + //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt + tree.treeBoxObject.ensureRowIsVisible(i); + StudentIOSelectID=null; + return true; + } + } + } +} + +// ***** +// * Prüft, ob zu einer Projektarbeit zumindest ein Lektor einen Vertrag besitzt +// ***** +function StudentProjektbetreuer_VertragExistiert(){ + + var tree = document.getElementById('student-projektbetreuer-tree'); + + if(tree.view) + var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln + else + return false; + + for(var i = 0;i < items; i++) + { + //ID der row holen + col = tree.columns ? tree.columns["student-projektbetreuer-tree-vertrag_id"] : "student-projektbetreuer-tree-vertrag_id"; + var vertrag_id = tree.view.getCellText(i,col); + + if(vertrag_id != '') + { + return true; + } + } + return false; +} + +// ***** +// * Bei Auswahl eines Betreuers, wird dieser zum Bearbeiten geladen +// ***** +function StudentProjektbetreuerAuswahl() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var tree = document.getElementById('student-projektbetreuer-tree'); + + if (tree.currentIndex==-1) return; + + StudentProjektbetreuerDetailDisableFields(false); + + //Ausgewaehlte Nr holen + var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-treecol-projektarbeit_id"; + var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); + var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-treecol-person_id"; + var person_id=tree.view.getCellText(tree.currentIndex,col); + var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-treecol-betreuerart_kurzbz"; + var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col); + + if(projektarbeit_id=='' || person_id=='' || betreuerart_kurzbz=='') + { + debug('StudentProjektbetreuerAuswahl: Fehler beim Laden'); + return false; + } + + //Daten holen + var url = 'rdf/projektbetreuer.rdf.php?projektarbeit_id='+projektarbeit_id+'&person_id='+person_id+'&betreuerart_kurzbz='+betreuerart_kurzbz+'&'+gettimestamp(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + + var dsource = rdfService.GetDataSourceBlocking(url); + + var subject = rdfService.GetResource("http://www.technikum-wien.at/projektbetreuer/" + person_id+'/'+projektarbeit_id+'/'+betreuerart_kurzbz); + + var predicateNS = "http://www.technikum-wien.at/projektbetreuer/rdf"; + + //Daten holen + + note = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#note" )); + faktor = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#faktor" )); + name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#name" )); + punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" )); + stunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stunden" )); + stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" )); + betreuerart_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betreuerart_kurzbz" )); + person_nachname = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_nachname" )); + vertrag_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertrag_id" )); + + StudentProjektbetreuerMenulistPersonLoad(document.getElementById('student-projektbetreuer-menulist-person'), person_nachname); + + //Werte setzen + MenulistSelectItemOnValue('student-projektbetreuer-menulist-person', person_id); + document.getElementById('student-projektbetreuer-menulist-note').value=note; + document.getElementById('student-projektbetreuer-textbox-faktor').value=faktor; + document.getElementById('student-projektbetreuer-textbox-name').value=name; + document.getElementById('student-projektbetreuer-textbox-punkte').value=punkte; + document.getElementById('student-projektbetreuer-textbox-stunden').value=stunden; + document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz; + document.getElementById('student-projektbetreuer-menulist-betreuerart').value=betreuerart_kurzbz; + document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value=betreuerart_kurzbz; + document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id; + document.getElementById('student-projektbetreuer-checkbox-neu').checked=false; + + var gesamtkosten = StudentProjektbetreuerGesamtkosten(); + + // Prüfe ob Vertragsdetails angezeigt werden + var vertragsdetails_anzeigen = ; + + // Wenn Vertragsdetails angezeigt werden + if (vertragsdetails_anzeigen) { + //Reset attributes + document.getElementById('student-projektbetreuer-label-vertragsstatus').setAttribute("style", "font-weight: normal"); + document.getElementById('student-projektbetreuer-button-vertrag-stornieren').setAttribute("tooltiptext", + "Stornieren erst nötig, sobald Lektor einen Vertrag hat. (Ab Status 'Bestellt')"); + document.getElementById('student-projektbetreuer-button-vertrag-stornieren').disabled = true; + document.getElementById('student-projektbetreuer-button-loeschen').disabled = false; + document.getElementById('student-projektbetreuer-menulist-person').disabled = false; + document.getElementById('student-projektbetreuer-textbox-stunden').disabled= false; + document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled= false; + document.getElementById('student-projektbetreuer-textbox-stunden').setAttribute("tooltiptext", ""); + document.getElementById('student-projektbetreuer-textbox-stundensatz').setAttribute("tooltiptext", ""); + document.getElementById('student-projektbetreuer-button-loeschen').setAttribute("tooltiptext", ""); + document.getElementById('student-projektbetreuer-menulist-person').setAttribute("tooltiptext", ""); + + // Wenn es einen Vertrag zum Lehrauftrag gibt + if (vertrag_id != null && vertrag_id != '') + { + // Änderung und Entfernen des Lektors disablen + document.getElementById('student-projektbetreuer-button-loeschen').disabled = true; + document.getElementById('student-projektbetreuer-menulist-person').disabled = true; + + // Tooltip für Blockierung von Aenderung und Entfernen des Lektors + document.getElementById('student-projektbetreuer-button-loeschen').setAttribute("tooltiptext", + "Änderung nur nach Stornierung des Vertrags möglich."); + document.getElementById('student-projektbetreuer-menulist-person').setAttribute("tooltiptext", + "Änderung nur nach Stornierung des Vertrags möglich."); + + // Stornieren ermoeglichen und tooltip entfernen + document.getElementById('student-projektbetreuer-button-vertrag-stornieren').disabled = false; + document.getElementById('student-projektbetreuer-button-vertrag-stornieren').setAttribute("tooltiptext", ""); + + // Url zum RDF + var url = "rdf/vertrag.rdf.php?"+gettimestamp(); + + ////RDF laden + var req = new phpRequest(url, '', ''); + req.add('vertrag_id', vertrag_id); + var response = req.execute(); + + // Trick 17 (sonst gibt's ein Permission denied) + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + // XML in Datasource parsen + var dsource = parseRDFString(response, 'http://www.technikum-wien.at/vertrag/liste'); + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + var subject = rdfService.GetResource("http://www.technikum-wien.at/vertrag/" + vertrag_id); + var predicateNS = "http://www.technikum-wien.at/vertrag/rdf"; + + //Daten holen + betrag = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betrag" )); + vertragsdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsdatum" )); + vertragsstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden" )); + vertragsstunden_studiensemester_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden_studiensemester_kurzbz" )); + + // Letzten (aktuellsten) Vertragsstatus laden + var url_letzterStatus = 'content/lvplanung/lehrveranstaltungDBDML.php'; + var req_letzterStatus = new phpRequest(url_letzterStatus,'',''); + + req_letzterStatus.add('type', 'getLastVertragsstatus'); + req_letzterStatus.add('vertrag_id', vertrag_id); + + + var response_letzterStatus = req_letzterStatus.executePOST(); + + var val_letzterStatus = new ParseReturnValue(response_letzterStatus); + + if (!val_letzterStatus.dbdml_return) + { + if(val_letzterStatus.dbdml_errormsg=='') + alert(response_letzterStatus); + else + alert(val_letzterStatus.dbdml_errormsg); + } + else + { + var letzterStatus = val_letzterStatus.dbdml_data; + } + + // Vertragsstatus setzen + // * wenn Gesamtkosten im Lehrauftrag nicht gleich Betrag im Vertrag ist: Status 'geändert' hardcoden + if(gesamtkosten != parseFloat(betrag)) + { + vertragsstatus = 'Geändert'; + document.getElementById('student-projektbetreuer-label-vertragsstatus').setAttribute("style", "font-weight: bold") + } + // * ansonsten Vertragsstatus zeigen + else + { + vertragsstatus = letzterStatus; + } + + // Uppercase status + vertragsstatus = vertragsstatus.charAt(0).toUpperCase() + vertragsstatus.slice(1); + + /** + * Stornierung + * Nur wenn Vertragsstatus 'akzeptiert' ist: + * - button Stornierung aktivieren + * - tooltip ausblenden + * - Felder zur Bearbeitung von LektorInnendaten deaktivieren + */ + if(letzterStatus == 'akzeptiert') + { + // Semesterstunden und Stundensatz disablen + document.getElementById('student-projektbetreuer-textbox-stunden').disabled= true; + document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled= true; + + // Tooltip für Semesterstunden und Stundensatz + document.getElementById('student-projektbetreuer-textbox-stunden').setAttribute("tooltiptext", + "Änderung nur nach Stornierung des Vertrags möglich."); + document.getElementById('student-projektbetreuer-textbox-stundensatz').setAttribute("tooltiptext", + "Änderung nur nach Stornierung des Vertrags möglich."); + } + } + // Wenn kein Vertrag vorhanden + else { + vertragsstatus = 'Noch kein Vertrag'; + vertragsstunden = '-'; + vertragsstunden_studiensemester_kurzbz = '-'; + } + + // Felder befüllen + document.getElementById('student-projektbetreuer-label-vertragsstatus').value = vertragsstatus; + document.getElementById('student-projektbetreuer-label-vertragsstunden').value = vertragsstunden; + document.getElementById('student-projektbetreuer-label-vertragsstunden_studiensemester_kurzbz').value = vertragsstunden_studiensemester_kurzbz; + document.getElementById('student-projektbetreuer-label-vertrag_id').value = vertrag_id; + } +} + +// ***** +// * Berechnet die Projektbetreuungskosten +// ***** +function StudentProjektbetreuerGesamtkosten(){ + var semesterstunden = document.getElementById('student-projektbetreuer-textbox-stunden').value + var stundensatz = document.getElementById('student-projektbetreuer-textbox-stundensatz').value + + if(!isNaN(semesterstunden) && !isNaN(stundensatz)) + gesamtkosten = semesterstunden*stundensatz; + else + gesamtkosten = 0; + + return gesamtkosten; +} + +// **** +// * Storniert einen Vertrag +// **** +function StudentProjektbetreuerVertragStornieren(){ + + var result = confirm("Möchten Sie den Vertrag wirklich stornieren?"); + + if (result == true) { + + var vertrag_id = document.getElementById('student-projektbetreuer-label-vertrag_id').value; + var person_id = document.getElementById('student-projektbetreuer-textbox-person_id').value; + + // Vertrag stornieren + var url_storniert = 'content/lvplanung/lehrveranstaltungDBDML.php'; + var req_storniert = new phpRequest(url_storniert,'',''); + + req_storniert.add('type', 'cancelVertrag'); + req_storniert.add('vertrag_id', vertrag_id); + req_storniert.add('person_id', person_id); + + var response_storniert = req_storniert.executePOST(); + + var val_storniert = new ParseReturnValue(response_storniert); + + if (!val_storniert.dbdml_return) + { + if(val_storniert.dbdml_errormsg=='') + alert(response_storniert); + else + alert(val_storniert.dbdml_errormsg); + } + else + { + // Reiter wieder aufbauen + // Kompletten Aufbau, um wieder alle Projektbetreuer zu ermitteln und prüfen zu können, + // ob zumindesteiner einen Vertrag besitzt. + StudentProjektarbeitAuswahl(); + } + } + +} + +// ***** +// * De-/Aktiviert die Buttons +// ***** +function StudentProjektbetreuerDisableFields(val) +{ + document.getElementById('student-projektbetreuer-button-neu').disabled=val; + document.getElementById('student-projektbetreuer-button-loeschen').disabled=val; + + if(val) + { + tree = document.getElementById('student-projektbetreuer-tree'); + var oldDatasources = tree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + tree.database.RemoveDataSource(oldDatasources.getNext()); + } + tree.builder.rebuild(); + + StudentProjektbetreuerDetailDisableFields(val); + } +} + +// **** +// * De-/Aktiviert die Detailfelder +// **** +function StudentProjektbetreuerDetailDisableFields(val) +{ + document.getElementById('student-projektbetreuer-menulist-person').disabled=val; + document.getElementById('student-projektbetreuer-menulist-note').disabled=val; + document.getElementById('student-projektbetreuer-menulist-betreuerart').disabled=val; + document.getElementById('student-projektbetreuer-textbox-faktor').disabled=val; + document.getElementById('student-projektbetreuer-textbox-name').disabled=val; + document.getElementById('student-projektbetreuer-textbox-punkte').disabled=val; + document.getElementById('student-projektbetreuer-textbox-stunden').disabled=val; + document.getElementById('student-projektbetreuer-textbox-stundensatz').disabled=val; + document.getElementById('student-projektbetreuer-button-speichern').disabled=val; + document.getElementById('student-projektbetreuer-button-neueperson').disabled=val; + document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val; +} + +// **** +// * Resettet die Detailfelder +// **** +function StudentProjektbetreuerDetailReset() +{ + document.getElementById('student-projektbetreuer-textbox-faktor').value='1'; + document.getElementById('student-projektbetreuer-textbox-name').value=''; + document.getElementById('student-projektbetreuer-menulist-note').value=''; + + document.getElementById('student-projektbetreuer-textbox-punkte').value='0.0'; + + if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Diplom') + { + document.getElementById('student-projektbetreuer-textbox-stunden').value='5.0'; + document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Erstbegutachter'; + } + else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Bachelor') + { + document.getElementById('student-projektbetreuer-textbox-stunden').value='4.0'; + document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter'; + } + else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Praktikum') + { + document.getElementById('student-projektbetreuer-menulist-betreuerart').value='BetreuerPraktik'; + } + else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Projekt') + { + document.getElementById('student-projektbetreuer-menulist-betreuerart').value='BetreuerProjekt'; + } + else + { + document.getElementById('student-projektbetreuer-textbox-stunden').value='0.0'; + document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter'; + } + document.getElementById('student-projektbetreuer-textbox-stundensatz').value='80.0'; + document.getElementById('student-projektbetreuer-menulist-person').value=''; +} + +// **** +// * Laedt dynamisch die Personen fuer das DropDown Menue +// * Es muessen mindestens 3 Zeichen in das DropDown Menue eingegeben werden +// **** +function StudentProjektbetreuerMenulistPersonLoad(menulist, filter) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + if(typeof(filter)=='undefined') + v = menulist.value; + else + v = filter; + + if(v.length>2) + { + var url = 'rdf/person.rdf.php?filter='+encodeURIComponent(v)+'&'+gettimestamp(); + //nurmittitel=& + var oldDatasources = menulist.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + menulist.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + menulist.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + if(typeof(filter)=='undefined') + var datasource = rdfService.GetDataSource(url); + else + var datasource = rdfService.GetDataSourceBlocking(url); + datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + menulist.database.AddDataSource(datasource); + if(typeof(filter)!='undefined') + menulist.builder.rebuild(); + } +} + +// **** +// * Speichert die Projektbetreuer Daten +// **** +function StudentProjektbetreuerSpeichern() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person'); + note = document.getElementById('student-projektbetreuer-menulist-note').value; + faktor = document.getElementById('student-projektbetreuer-textbox-faktor').value; + name = document.getElementById('student-projektbetreuer-textbox-name').value; + punkte = document.getElementById('student-projektbetreuer-textbox-punkte').value; + stunden = document.getElementById('student-projektbetreuer-textbox-stunden').value; + stundensatz = document.getElementById('student-projektbetreuer-textbox-stundensatz').value; + betreuerart_kurzbz = document.getElementById('student-projektbetreuer-menulist-betreuerart').value; + betreuerart_kurzbz_old = document.getElementById('student-projektbetreuer-textbox-betreuerart_kurzbz_old').value; + person_id_old = document.getElementById('student-projektbetreuer-textbox-person_id').value; + neu = document.getElementById('student-projektbetreuer-checkbox-neu').checked; + + studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; + + var tree = document.getElementById('student-projektarbeit-tree'); + + if(person_id=='') + { + alert('Bitte zuerst einen Betreuer auswaehlen'); + return false; + } + + if (tree.currentIndex==-1) + { + alert('Projektarbeit muss ausgewaehlt sein'); + return; + } + var col = tree.columns ? tree.columns["student-projektarbeit-tree-projektarbeit_id"] : "student-projektarbeit-tree-projektarbeit_id"; + var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); + + var url = 'content/student/studentDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'saveprojektbetreuer'); + + req.add('person_id', person_id); + req.add('note', note); + req.add('faktor', faktor); + req.add('name', name); + req.add('punkte', punkte); + req.add('stunden', stunden); + req.add('stundensatz', stundensatz); + req.add('betreuerart_kurzbz', betreuerart_kurzbz); + req.add('betreuerart_kurzbz_old', betreuerart_kurzbz_old); + req.add('projektarbeit_id', projektarbeit_id); + req.add('person_id_old', person_id_old); + req.add('neu', neu); + req.add('studiengang_kz', studiengang_kz); + + 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 + { + StudentProjektbetreuerSelectPersonID=person_id; + StudentProjektbetreuerSelectProjektarbeitID=projektarbeit_id; + StudentProjektbetreuerSelectBetreuerartKurzbz=betreuerart_kurzbz; + StudentProjektbetreuerDetailDisableFields(true); + StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking + SetStatusBarText('Daten wurden gespeichert'); + + } +} + +// **** +// * Deaktiviert die Detailfelder um einen Neuen Datensatz zu erstellen +// **** +function StudentProjektbetreuerNeu() +{ + StudentProjektbetreuerDetailReset(); + document.getElementById('student-projektbetreuer-checkbox-neu').checked=true; + StudentProjektbetreuerDetailDisableFields(false); +} + +// **** +// * Loescht einen Projektbetreuer +// **** +function StudentProjektbetreuerLoeschen() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + var tree = document.getElementById('student-projektbetreuer-tree'); + + if (tree.currentIndex==-1) + { + alert('Projektbetreuer muss ausgewaehlt sein'); + return; + } + var col = tree.columns ? tree.columns["student-projektbetreuer-tree-projektarbeit_id"] : "student-projektbetreuer-tree-projektarbeit_id"; + var projektarbeit_id=tree.view.getCellText(tree.currentIndex,col); + var col = tree.columns ? tree.columns["student-projektbetreuer-tree-person_id"] : "student-projektbetreuer-tree-person_id"; + var person_id=tree.view.getCellText(tree.currentIndex,col); + var col = tree.columns ? tree.columns["student-projektbetreuer-tree-betreuerart_kurzbz"] : "student-projektbetreuer-tree-betreuerart_kurzbz"; + var betreuerart_kurzbz=tree.view.getCellText(tree.currentIndex,col); + + studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; + + var url = 'content/student/studentDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'deleteprojektbetreuer'); + + req.add('person_id', person_id); + req.add('projektarbeit_id', projektarbeit_id); + req.add('betreuerart_kurzbz', betreuerart_kurzbz); + req.add('studiengang_kz', studiengang_kz); + + 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 + { + StudentProjektbetreuerSelectPersonID=null; + StudentProjektbetreuerSelectProjektarbeitID=null; + StudentProjektbetreuerSelectBetreuerartKurzbz=null; + StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking + SetStatusBarText('Daten wurden geloescht'); + StudentProjektbetreuerDetailDisableFields(true); + } +} + +function StudentProjektbetreuerLoadMitarbeiterDaten() +{ + person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person'); + + var url = 'content/student/studentDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'getstundensatz'); + req.add('person_id', person_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 + { + stundensatz = val.dbdml_data + } + + document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz; +} + +// **** +// * Neuen Projektbetreuer anlegen +// **** +function StudentProjektbetreuerNeuePerson() +{ + window.open('vilesci/personen/personen_anlegen.php','Person anlegen','height=700,width=900,left=300,top=300,hotkeys=0,resizable=yes,status=no,toolbar=no,location=no,menubar=no,dependent=yes'); +} + +// **** +// * Kontaktdaten eines Betreuers Bearbeiten +// **** +function StudentProjektbetreuerKontaktdaten() +{ + person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person'); + if(person_id!='') + window.open('vilesci/personen/kontaktdaten_edit.php?person_id='+person_id,'Kontaktdaten'); + else + alert('Bitte zuerst eine Person auswaehlen'); +}