diff --git a/content/student/studentrolledialog.js.php b/content/student/studentrolledialog.js.php index ef0291fe4..60c247781 100644 --- a/content/student/studentrolledialog.js.php +++ b/content/student/studentrolledialog.js.php @@ -1,155 +1,159 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -require_once('../../config/vilesci.config.inc.php'); - -?> -var StudentRolleStudiensemester_old; -var StudentRolleAusbildungssemester_old; -var StudentRolleStatusgrundDatasource; - -// **** -// * Laedt die Rolle -// **** -function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - if(status_kurzbz!='') - { - document.getElementById('student-rolle-grid-row-textbox').hidden=false; - document.getElementById('student-rolle-grid-row-menulist').hidden=true; - - StudentRolleStudiensemester_old=studiensemester_kurzbz; - StudentRolleAusbildungssemester_old=ausbildungssemester; - - //Daten holen - var url = 'rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+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/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester); - - var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf"; - - //RDF parsen - var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" )); - var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" )); - var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" )); - var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" )); - var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" )); - var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); - var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" )); - var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" )); - var neu = false; - StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id); - } - else - { - StudentRolleStudiensemester_old=''; - StudentRolleAusbildungssemester_old=''; - - document.getElementById('student-rolle-grid-row-textbox').hidden=true; - document.getElementById('student-rolle-grid-row-menulist').hidden=false; - - //Defaultwerte bei Neuem Datensatz - var status_kurzbz = 'Interessent'; - var studiensemester_kurzbz=window.opener.getStudiensemester(); - var ausbildungssemester='1'; - var datum = ''; - var bestaetigt_datum = ''; - var bewerbung_abgeschicktamum = ''; - var orgform_kurzbz = ''; - var studienplan_id = ''; - var anmerkung = ''; - var statusgrund_id = ''; - var rt_stufe = ''; - StudentRolleLoadStatusgrund(status_kurzbz); - } - - document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id; - document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz; - document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz; - document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester; - document.getElementById('student-rolle-datum-datum').value=datum; - document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum; - document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum; - document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz; - MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id); - document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung; - MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id); - MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe); -} - -// **** -// * Speichern der Rolle -// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil -// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt -// * kommt. -// **** -function StudentRolleSpeichern() -{ - if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old)) - window.close(); -} - -function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund'); - url='rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp(); - - try - { - StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver); - } - catch(e) - {} - - //Alte DS entfernen - var oldDatasources = menulistgrund.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - menulistgrund.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - menulistgrund.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url); - StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource); - menulistgrund.builder.rebuild(); -} - -/** - * Wenn das Dropdown fuer den Status geaendert wird, dann - * werden die Statusgruende zu diesem Status geladen - */ -function StudentRolleChangeStatus() -{ - var status = document.getElementById('student-rolle-menulist-status_kurzbz').value; - StudentRolleLoadStatusgrund(status); -} \ No newline at end of file +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +require_once('../../config/vilesci.config.inc.php'); + +?> +var StudentRolleStudiensemester_old; +var StudentRolleAusbildungssemester_old; +var StudentRolleStatusgrundDatasource; + +// **** +// * Laedt die Rolle +// **** +function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + if(status_kurzbz!='') + { + document.getElementById('student-rolle-grid-row-textbox').hidden=false; + document.getElementById('student-rolle-grid-row-menulist').hidden=true; + + StudentRolleStudiensemester_old=studiensemester_kurzbz; + StudentRolleAusbildungssemester_old=ausbildungssemester; + + //Daten holen + var url = 'rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+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/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester); + + var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf"; + + //RDF parsen + var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" )); + var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" )); + var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" )); + var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" )); + var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" )); + var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); + var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" )); + var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" )); + var neu = false; + StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id); + } + else + { + StudentRolleStudiensemester_old=''; + StudentRolleAusbildungssemester_old=''; + + document.getElementById('student-rolle-grid-row-textbox').hidden=true; + document.getElementById('student-rolle-grid-row-menulist').hidden=false; + + //Defaultwerte bei Neuem Datensatz + var status_kurzbz = 'Interessent'; + var studiensemester_kurzbz=window.opener.getStudiensemester(); + var ausbildungssemester='1'; + var datum = ''; + var bestaetigt_datum = ''; + var bewerbung_abgeschicktamum = ''; + var orgform_kurzbz = ''; + var studienplan_id = ''; + var anmerkung = ''; + var statusgrund_id = ''; + var rt_stufe = ''; + StudentRolleLoadStatusgrund(status_kurzbz); + } + + document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id; + document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz; + document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz; + document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester; + document.getElementById('student-rolle-datum-datum').value=datum; + document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum; + document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum; + document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz; + MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id); + document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung; + MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id); + MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe); +} + +// **** +// * Speichern der Rolle +// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil +// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt +// * kommt. +// **** +function StudentRolleSpeichern() +{ + if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old)) + window.close(); +} + +function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund'); + + if (typeof statusgrund_id !== 'undefined') + url='rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp(); + else + url='rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&ts'+gettimestamp(); + + try + { + StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver); + } + catch(e) + {} + + //Alte DS entfernen + var oldDatasources = menulistgrund.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + menulistgrund.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + menulistgrund.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url); + StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource); + menulistgrund.builder.rebuild(); +} + +/** + * Wenn das Dropdown fuer den Status geaendert wird, dann + * werden die Statusgruende zu diesem Status geladen + */ +function StudentRolleChangeStatus() +{ + var status = document.getElementById('student-rolle-menulist-status_kurzbz').value; + StudentRolleLoadStatusgrund(status); +} diff --git a/include/statusgrund.class.php b/include/statusgrund.class.php index aa084b8c6..6b2c12e03 100644 --- a/include/statusgrund.class.php +++ b/include/statusgrund.class.php @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Andreas Oesterreicher , + Manuela Thamer */ require_once('basis_db.class.php'); @@ -30,6 +31,7 @@ class statusgrund extends basis_db public $aktiv = true; // boolean public $bezeichnung_mehrsprachig; // varchar(255)[] public $bezeichnung; // text[] + public $statusgrund_kurzbz; //varchar(32) /** * Konstruktor - Laedt optional einen Statusgrund @@ -71,6 +73,7 @@ class statusgrund extends basis_db $this->aktiv = $this->db_parse_bool($row->aktiv); $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $this->statusgrund_kurzbz = $row->statusgrund_kurzbz; } else { @@ -120,6 +123,7 @@ class statusgrund extends basis_db $obj->aktiv = $this->db_parse_bool($row->aktiv); $obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $obj->statusgrund_kurzbz = $row->statusgrund_kurzbz; $this->result[] = $obj; } @@ -166,6 +170,7 @@ class statusgrund extends basis_db $obj->aktiv = $this->db_parse_bool($row->aktiv); $obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $obj->statusgrund_kurzbz = $row->statusgrund_kurzbz; $this->result[] = $obj; } @@ -179,5 +184,28 @@ class statusgrund extends basis_db return true; } + + /** + * Laedt das Klassenobjekt anhand der kurzbz + * + * @param string $statusgrund_kurzbz Statusgrund zu dem das Objekt geladen werden soll. + * @return object classobject + */ + public function getByStatusgrundKurzbz($statusgrund_kurzbz) + { + $qry = " + SELECT + * + FROM + public.tbl_status_grund + WHERE + statusgrund_kurzbz ='". $statusgrund_kurzbz. "' + "; + + $this->db_query($qry); + + return + $this->db_fetch_object(); + } } ?> diff --git a/vilesci/personen/student_vorrueckung.php b/vilesci/personen/student_vorrueckung.php index 960413c2a..b32ba06ad 100644 --- a/vilesci/personen/student_vorrueckung.php +++ b/vilesci/personen/student_vorrueckung.php @@ -19,6 +19,7 @@ * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > * Rudolf Hangl < rudolf.hangl@technikum-wien.at > * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > + * Manuela Thamer < manuela.thamer@technikum-wien.at > */ /** * Vorrückung aller AKTIVEN Studenten. @@ -32,6 +33,7 @@ require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/lehrverband.class.php'); require_once('../../include/studienordnung.class.php'); require_once('../../include/studienplan.class.php'); +require_once('../../include/statusgrund.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -301,6 +303,16 @@ if (isset($_POST['vorr'])) } } + //auf statusgrund_kurzbz abfragen + $statusgrundObj = new statusgrund($row_status->statusgrund_id); + $statusgrundId = null; + if ($statusgrundObj->statusgrund_kurzbz === "prewiederholer" && $row_status->ausbildungssemester > 1) + { + $s = $row->semester_stlv - 1; + $ausbildungssemester = $row_status->ausbildungssemester - 1; + $statusgrundId = $statusgrundObj->getByStatusgrundKurzbz('wiederholer')->statusgrund_id; + } + $lvb = new lehrverband(); //Lehrverbandgruppe anlegen, wenn noch nicht vorhanden @@ -364,14 +376,15 @@ if (isset($_POST['vorr'])) //Eintragen des neuen Status $sql .= "INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester, datum, insertamum, - insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id) + insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id, statusgrund_id) VALUES (".$db->db_add_param($row->prestudent_id).", ". $db->db_add_param($row_status->status_kurzbz).", ". $db->db_add_param($next_ss).", ". $db->db_add_param($ausbildungssemester).", now(), now(), ". $db->db_add_param($user).", NULL, NULL, NULL, ". $db->db_add_param($row_status->orgform_kurzbz).", ". - $db->db_add_param($studienplan_id).");"; + $db->db_add_param($studienplan_id).", ". + $db->db_add_param($statusgrundId).");"; } if ($sql != '') { @@ -408,7 +421,7 @@ $outp .= ' Studiengang: - '; //Auswahl Studiengang foreach ($studiengang as $stg) @@ -420,7 +433,7 @@ foreach ($studiengang as $stg) $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; $url .= "&studiensemester_kurzbz_zk=$studiensemester_kurzbz_zk"; - $outp .= ""; if (!isset($s[$stg->studiengang_kz])) $s[$stg->studiengang_kz] = new stdClass(); @@ -435,17 +448,12 @@ $outp .= ' $outp .= " Angezeigtes Studiensemester: - \n"; if (isset($ss_arr) && is_array($ss_arr)) { foreach ($ss_arr as $sts) { - if ($studiensemester_kurzbz == $sts) - $sel = " selected "; - else - $sel = ''; - $url = $_SERVER['PHP_SELF']."?stg_kz=$stg_kz"; $url .= "&semester=$semester"; $url .= "&semesterv=$semesterv"; @@ -453,7 +461,7 @@ if (isset($ss_arr) && is_array($ss_arr)) $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; $url .= "&studiensemester_kurzbz_zk=$studiensemester_kurzbz_zk"; - $outp .= ""; + $outp .= ""; } } $outp .= " @@ -493,17 +501,12 @@ $outp .= ' Ausgangs-Studiensemester: - '; if (isset($ss_arr) && is_array($ss_arr)) { foreach ($ss_arr as $sts2) { - if ($studiensemester_kurzbz_akt == $sts2) - $sel2 = " selected "; - else - $sel2 = ''; - $url = $_SERVER['PHP_SELF']."?stg_kz=$stg_kz"; $url .= "&semester=$semester"; $url .= "&semesterv=$semesterv"; @@ -511,7 +514,7 @@ if (isset($ss_arr) && is_array($ss_arr)) $url .= "&studiensemester_kurzbz_akt=$sts2"; $url .= "&studiensemester_kurzb_zk=$studiensemester_kurzbz_zk"; - $outp .= ""; + $outp .= ""; } } $outp .= " @@ -547,7 +550,7 @@ $outp .= 'alle -- $outp .= " Ziel-Studiensemester: - \n"; if (isset($ss_arr) && is_array($ss_arr)) { @@ -565,7 +568,7 @@ if (isset($ss_arr) && is_array($ss_arr)) $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; $url .= "&studiensemester_kurzbz_zk=$sts3"; - $outp .= ""; + $outp .= ""; } } $outp .= " \n @@ -617,11 +620,12 @@ if ($result_std != 0) $row = $db->db_fetch_object($result_std, $i); $qry_status = " SELECT - status_kurzbz, ausbildungssemester, tbl_studienplan.studienplan_id, tbl_studienplan.bezeichnung + tbl_prestudentstatus.status_kurzbz, statusgrund_kurzbz, ausbildungssemester, tbl_studienplan.studienplan_id, tbl_studienplan.bezeichnung FROM public.tbl_prestudentstatus JOIN public.tbl_prestudent USING(prestudent_id) LEFT JOIN lehre.tbl_studienplan USING(studienplan_id) + LEFT JOIN public.tbl_status_grund USING (statusgrund_id) WHERE person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." AND studiengang_kz=".$db->db_add_param($row->studiengang_kz, FHC_INTEGER)." @@ -638,6 +642,7 @@ if ($result_std != 0) if ($row_status = $db->db_fetch_object($result_status)) { $status_kurzbz = $row_status->status_kurzbz; + $statusgrund_kurzbz = $row_status->statusgrund_kurzbz; $ausbildungssemester = $row_status->ausbildungssemester; $studienplan_id = $row_status->studienplan_id; $studienplan_bezeichnung = $row_status->bezeichnung;