diff --git a/content/fasDBDML.php b/content/fasDBDML.php index 9010c388d..90f8a8f15 100644 --- a/content/fasDBDML.php +++ b/content/fasDBDML.php @@ -689,7 +689,7 @@ if(!$error) } } } - elseif(isset($_POST['type']) && $_POST['type']=='anwesenheitdelete') + elseif(isset($_POST['type']) && $_POST['type']=='anwesenheittogglemitarbeiter') { if(!$rechte->isBerechtigt('student/anwesenheit')) { @@ -704,25 +704,84 @@ if(!$error) { $lehreinheit_id = $_POST['lehreinheit_id']; $datum = $_POST['datum']; - $anwesenheit = new anwesenheit(); - if($anwesenheit->getAnwesenheitLehreinheit($lehreinheit_id, $datum)) + + if($_POST['setanwesend']=='false') { - $return = true; - $errormsg = ""; - foreach($anwesenheit->result as $row) + // Anwesenheit loeschen + $anwesenheit = new anwesenheit(); + if($anwesenheit->getAnwesenheitLehreinheit($lehreinheit_id, $datum)) { - $aw = new anwesenheit(); - if(!$aw->delete($row->anwesenheit_id)) + $return = true; + $errormsg = ""; + foreach($anwesenheit->result as $row) { - $errormsg.=$aw->errormsg; - $return = false; + $aw = new anwesenheit(); + if(!$aw->delete($row->anwesenheit_id)) + { + $errormsg.=$aw->errormsg; + $return = false; + } } } + else + { + $return = false; + $errormsg = $anwesenheit->errormsg; + } } else { - $return = false; - $errormsg = $anwesenheit->errormsg; + $error = false; + // Anwesenheit bei allen zugeteilten Studierenden setzen + // Teilnehmer ermitteln + $einheiten = 0; + // Anzahl der Einheiten ermitteln + $qry = "SELECT distinct stunde + FROM + lehre.tbl_stundenplan + WHERE + lehreinheit_id=".$db->db_add_param($lehreinheit_id)." + AND datum=".$db->db_add_param($datum).";"; + if($result = $db->db_query($qry)) + { + $einheiten = $db->db_num_rows($result); + } + else + { + $return = false; + $error = true; + $errormsg = 'Fehler beim Ermitteln der Einheiten'; + } + + if(!$error) + { + $qry = "SELECT distinct uid, vorname, nachname, person_id + FROM + campus.vw_student_lehrveranstaltung + JOIN public.tbl_benutzer USING(uid) + JOIN public.tbl_person USING(person_id) WHERE lehreinheit_id=".$db->db_add_param($lehreinheit_id); + + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + $anwesenheit = new anwesenheit(); + $anwesenheit->uid = $row->uid; + $anwesenheit->einheiten = $einheiten; + $anwesenheit->lehreinheit_id = $lehreinheit_id; + $anwesenheit->datum = $datum; + $anwesenheit->anwesend = true; + $anwesenheit->anmerkung; + $anwesenheit->save(); + } + $return = true; + } + else + { + $return = false; + $erorrmsg = 'Fehler beim Ermitteln der Studierenden'; + } + } } } else diff --git a/content/termine.js.php b/content/termine.js.php index 8675cf52f..3bd4a2916 100644 --- a/content/termine.js.php +++ b/content/termine.js.php @@ -42,9 +42,9 @@ function loadTermine(lehreinheit_id, lehrveranstaltung_id, mitarbeiter_uid, stud document.getElementById('termine-tree-popup-toggle-anwesenheit').hidden=false; if(mitarbeiter_uid=='') - document.getElementById('termine-tree-popup-delete-anwesenheit').hidden=true; + document.getElementById('termine-tree-popup-togglemitarbeiter-anwesenheit').hidden=true; else - document.getElementById('termine-tree-popup-delete-anwesenheit').hidden=false; + document.getElementById('termine-tree-popup-togglemitarbeiter-anwesenheit').hidden=false; // Stundenplan Tabelle aus Variablen holen TermineStundenplanTable = getvariable('termin_export_db_stpl_table'); @@ -178,7 +178,7 @@ function TermineToggleAnwesenheit() } } -function TermineDeleteAnwesenheit() +function TermineToggleAnwesenheitMitarbeiter() { if(TermineMitarbeiterUID=='') { @@ -192,9 +192,6 @@ function TermineDeleteAnwesenheit() return; } - if(!confirm('Achtung, beim Löschen der Anwesenheit des Lektors werden auch die Anwesenheiten der Studierenden entfernt. Wollen Sie die Anwesenheit wirklich entfernen?')) - return; - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree = document.getElementById('termine-tree'); @@ -203,14 +200,32 @@ function TermineDeleteAnwesenheit() //Ausgewaehlte Nr holen var datum = getTreeCellText(tree, 'termine-treecol-datum_iso', tree.currentIndex); var lehreinheit_id = getTreeCellText(tree, 'termine-treecol-lehreinheit_id', tree.currentIndex); + var anwesend = getTreeCellText(tree, 'termine-treecol-anwesend', tree.currentIndex); + + if(anwesend=='Ja') + setanwesend=false; + else if(anwesend=='Nein') + setanwesend=true; + else + { + alert('Abbruch -> Anwesenheit ist unbestimmt'); + return; + } + + if(setanwesend == false) + { + if(!confirm('Achtung, beim Löschen der Anwesenheit des Lektors werden auch die Anwesenheiten der Studierenden entfernt. Wollen Sie die Anwesenheit wirklich entfernen?')) + return; + } var url = 'content/fasDBDML.php'; var req = new phpRequest(url,'',''); - req.add('type', 'anwesenheitdelete'); + req.add('type', 'anwesenheittogglemitarbeiter'); req.add('datum', datum); req.add('lehreinheit_id', lehreinheit_id); + req.add('setanwesend', setanwesend); var response = req.executePOST(); @@ -228,4 +243,4 @@ function TermineDeleteAnwesenheit() TermineLoadTree(); SetStatusBarText('Daten wurden gespeichert'); } -} +} \ No newline at end of file diff --git a/content/termine.xul.php b/content/termine.xul.php index 368507c66..dab0b1275 100644 --- a/content/termine.xul.php +++ b/content/termine.xul.php @@ -50,7 +50,7 @@ $student_uid = filter_input(INPUT_GET,'student_uid');