diff --git a/cis/menu.html b/cis/menu.html index 1e8c921e4..d4658ec1d 100644 --- a/cis/menu.html +++ b/cis/menu.html @@ -419,10 +419,10 @@    Jahresplan - + diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 837e1feca..af99a0bc0 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -50,6 +50,8 @@ require_once('../../include/zeugnisnote.class.php'); require_once('../../include/lvgesamtnote.class.php'); require_once('../../include/pruefung.class.php'); require_once('../../include/abschlusspruefung.class.php'); +require_once('../../include/projektarbeit.class.php'); +require_once('../../include/projektbetreuer.class.php'); $user = get_uid(); @@ -1500,6 +1502,164 @@ if(!$error) $errormsg = 'Fehlerhafte Parameteruebergabe'; } } + elseif(isset($_POST['type']) && $_POST['type']=='saveprojektarbeit') // **** Projektarbeit **** // + { + $projektarbeit = new projektarbeit($conn, null, true); + + if($_POST['neu']=='false') + { + if($projektarbeit->load($_POST['projektarbeit_id'])) + { + $projektarbeit->new = false; + } + else + { + $error = true; + $return = false; + $errormsg = $projektarbeit->errormsg; + } + } + else + { + $projektarbeit->new = true; + $projektarbeit->insertamum = date('Y-m-d H:i:s'); + $projektarbeit->insertvon = $user; + } + + $projektarbeit->projekttyp_kurzbz = $_POST['projekttyp_kurzbz']; + $projektarbeit->titel = $_POST['titel']; + $projektarbeit->lehreinheit_id = $_POST['lehreinheit_id']; + $projektarbeit->student_uid = $_POST['student_uid']; + $projektarbeit->firma_id = $_POST['firma_id']; + $projektarbeit->note = $_POST['note']; + $projektarbeit->punkte = str_replace(',','.',$_POST['punkte']); + $projektarbeit->beginn = $_POST['beginn']; + $projektarbeit->ende = $_POST['ende']; + $projektarbeit->faktor = str_replace(',','.',$_POST['faktor']); + $projektarbeit->freigegeben = ($_POST['freigegeben']=='true'?true:false); + $projektarbeit->gesperrtbis = $_POST['gesperrtbis']; + $projektarbeit->stundensatz = str_replace(',','.',$_POST['stundensatz']); + $projektarbeit->gesamtstunden = $_POST['gesamtstunden']; + $projektarbeit->themenbereich = $_POST['themenbereich']; + $projektarbeit->anmerkung = $_POST['anmerkung']; + $projektarbeit->updateamum = date('Y-m-d H:i:s'); + $projektarbeit->updatevon = $user; + + if(!$error) + { + if($projektarbeit->save()) + { + $return = true; + $data = $projektarbeit->projektarbeit_id; + } + else + { + $return = false; + $errormsg = $projektarbeit->errormsg; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='deleteprojektarbeit') + { + //Loescht einen Projektarbeit Eintrag + if(isset($_POST['projektarbeit_id']) && is_numeric($_POST['projektarbeit_id'])) + { + $projektarbeit = new projektarbeit($conn); + + if($projektarbeit->delete($_POST['projektarbeit_id'])) + { + $return = true; + } + else + { + $errormsg = $projektarbeit->errormsg; + $return = false; + } + } + else + { + $return = false; + $errormsg = 'Fehlerhafte Parameteruebergabe'; + } + } + elseif(isset($_POST['type']) && $_POST['type']=='saveprojektbetreuer') // **** Projektbetreuer **** // + { + $projektbetreuer = new projektbetreuer($conn, null, null, true); + + if($_POST['neu']=='false') + { + if($projektbetreuer->load($_POST['person_id_old'], $_POST['projektarbeit_id'])) + { + $projektbetreuer->new = false; + } + else + { + $error = true; + $return = false; + $errormsg = $projektbetreuer->errormsg; + } + } + else + { + if($projektbetreuer->load($_POST['person_id'], $_POST['projektarbeit_id'])) + { + $error = true; + $errormsg = 'Dieser Betreuer ist bereits zugeteilt'; + } + $projektbetreuer->new = true; + $projektbetreuer->insertamum = date('Y-m-d H:i:s'); + $projektbetreuer->insertvon = $user; + } + + $projektbetreuer->person_id = $_POST['person_id']; + $projektbetreuer->person_id_old = $_POST['person_id_old']; + $projektbetreuer->projektarbeit_id = $_POST['projektarbeit_id']; + $projektbetreuer->note = $_POST['note']; + $projektbetreuer->faktor = str_replace(',','.', $_POST['faktor']); + $projektbetreuer->name = $_POST['name']; + $projektbetreuer->punkte = str_replace(',','.', $_POST['punkte']); + $projektbetreuer->stunden = str_replace(',','.', $_POST['stunden']); + $projektbetreuer->stundensatz = str_replace(',','.', $_POST['stundensatz']); + $projektbetreuer->betreuerart_kurzbz = $_POST['betreuerart_kurzbz']; + $projektbetreuer->updateamum = date('Y-m-d H:i:s'); + $projektbetreuer->updatevon = $user; + + if(!$error) + { + if($projektbetreuer->save()) + { + $return = true; + } + else + { + $return = false; + $errormsg = $projektbetreuer->errormsg; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='deleteprojektbetreuer') + { + //Loescht einen Projektbetreuer Eintrag + if(isset($_POST['person_id']) && is_numeric($_POST['person_id'])) + { + $projektbetreuer = new projektbetreuer($conn, null, null, true); + + if($projektbetreuer->delete($_POST['person_id'], $_POST['projektarbeit_id'])) + { + $return = true; + } + else + { + $errormsg = $projektbetreuer->errormsg; + $return = false; + } + } + else + { + $return = false; + $errormsg = 'Fehlerhafte Parameteruebergabe'; + } + } else { $return = false; diff --git a/content/student/studentabschlusspruefung.js.php b/content/student/studentabschlusspruefung.js.php index e402eb30e..4ffd9503f 100644 --- a/content/student/studentabschlusspruefung.js.php +++ b/content/student/studentabschlusspruefung.js.php @@ -397,7 +397,7 @@ function StudentAbschlusspruefungSpeichern() if(sponsion!='' && !CheckDatum(sponsion)) { - alert('Datum ist ungueltig'); + alert('Sponsionsdatum ist ungueltig'); return false; } diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index fef86f64e..392e20110 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -37,6 +37,7 @@ echo ''; echo ''; echo ''; +echo ''; ?> @@ -190,6 +191,7 @@ echo ' + @@ -202,6 +204,7 @@ echo ' + diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index c5ba342e6..a1e46cb79 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -1137,6 +1137,11 @@ function StudentAuswahl() // ****** Abschlusspruefung ******** // StudentAbschlusspruefungDetailDisableFields(true); StudentAbschlusspruefungTreeLoad(uid); + + // ****** Projektarbeit ********* // + StudentProjektarbeitDetailDisableFields(true); + StudentProjektbetreuerDisableFields(true); + StudentProjektarbeitTreeLoad(uid); } // **** diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php new file mode 100644 index 000000000..baeca8068 --- /dev/null +++ b/content/student/studentprojektarbeit.js.php @@ -0,0 +1,861 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +require_once('../../vilesci/config.inc.php'); +require_once('../../include/functions.inc.php'); + +$conn = pg_pconnect(CONN_STRING); + +$user = get_uid(); +loadVariables($conn, $user); +?> +// *********** Globale Variablen *****************// +var 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; +// ********** Observer und Listener ************* // + +// **** +// * Observer fuer Projektarbeit Tree +// * startet Rebuild nachdem das Refresh +// * der Datasource fertig ist +// **** +var StudentProjektarbeitTreeSinkObserver = +{ + onBeginLoad : function(pSink) {}, + 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) + { + //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) {}, + 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) + { + //timeout nur bei Mozilla notwendig da sonst die rows + //noch keine values haben. Ab Seamonkey funktionierts auch + //ohne dem setTimeout + window.setTimeout(StudentProjektbetreuerTreeSelectID,10); + } +}; +// ****************** 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 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); +} + +// **** +// * De-/Aktiviert die ProjektarbeitFelder +// **** +function StudentProjektarbeitDisableFields(val) +{ + document.getElementById('student-projektarbeit-button-neu').disabled=val; + document.getElementById('student-projektarbeit-button-loeschen').disabled=val; + + 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-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; + + if(val) + StudentProjektarbeitResetFields(); +} + +// **** +// * Resetet die ProjektarbeitDetailFelder +// **** +function StudentProjektarbeitResetFields() +{ + document.getElementById('student-projektarbeit-textbox-titel').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='0.0'; + document.getElementById('student-projektarbeit-checkbox-freigegeben').checked=false; + document.getElementById('student-projektarbeit-datum-gesperrtbis').value=''; + document.getElementById('student-projektarbeit-textbox-stundensatz').value='0.0'; + document.getElementById('student-projektarbeit-textbox-gesamtstunden').value='0.0'; + document.getElementById('student-projektarbeit-textbox-themenbereich').value=''; + document.getElementById('student-projektarbeit-textbox-anmerkung').value=''; +} + +// ***** +// * 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;i2) + { + var url = 'rdf/person.rdf.php?filter='+v+'&'+gettimestamp(); + + 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; + person_id_old = document.getElementById('student-projektbetreuer-textbox-person_id').value; + neu = document.getElementById('student-projektbetreuer-checkbox-neu').checked; + + var tree = document.getElementById('student-projektarbeit-tree'); + + 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('projektarbeit_id', projektarbeit_id); + req.add('person_id_old', person_id_old); + req.add('neu', neu); + + 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; + StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking + SetStatusBarText('Daten wurden gespeichert'); + StudentProjektbetreuerDetailDisableFields(true); + } +} + +// **** +// * 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 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); + + 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; + StudentProjektbetreuerTreeDatasource.Refresh(false); //non blocking + SetStatusBarText('Daten wurden geloescht'); + StudentProjektbetreuerDetailDisableFields(true); + } +} \ No newline at end of file diff --git a/content/student/studentprojektarbeitoverlay.xul.php b/content/student/studentprojektarbeitoverlay.xul.php index 9002847ce..b4564ad6c 100644 --- a/content/student/studentprojektarbeitoverlay.xul.php +++ b/content/student/studentprojektarbeitoverlay.xul.php @@ -34,164 +34,448 @@ echo ''; xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > + +