diff --git a/CHANGELOG.md b/CHANGELOG.md index 336515567..27f75aa38 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ - **[CIS]** LVPlan Export für Excel - **[FAS]** Termine Karteireiter im FAS zeigt die Anmerkung aus dem LVPlan an - **[CIS]** Onlinebewerbungstool greift auf mehrsprachige Statusbezeichnungen zu. +- **[CIS]** Config-Einträge für die Tabellenspalten beim Eintragen der Gesamtnote hinzugefügt. +- **[CIS]** Prüfungsverwaltung: Config-Eintrag hinzugefügt um die Accordion-Elemente ein- und auszublenden. ### Changed - **[FAS]** Dokumente Menü im FAS neu sortiert um den Lebenszyklus des Studierenden abzubilden @@ -18,6 +20,8 @@ - **[CIS]** LVPlan Begrenzung der 4er Blockung aufgehoben. - **[CIS]** Im Menü 'Zeitsperren' Link zu Resturlaubsübersicht entfernt. Falls benötigt Verlinkung über CMS möglich. - **[CORE]** Removed NOT NULL constraint on 'verfasser\_uid' from public.tbl\_notiz +- **[CIS]** Studienplanansicht: Wenn eine LV nicht benotet ist, aber eine kompatible LV mit vorhandener Anrechnung benotet ist wird diese Note angezeigt. +- **[FAS]** Die RDF-Schnittstelle für das Zeugnis prüft bei Anrechnungen ob, die ECTS-Punkte übereinstimmen und wählt bei ungleichen Werten jene der angerechneten LV. ### Updateinfo - **[FAS]** Für Lehraufträge muss eine Unoconv-Vorlage erstellt werden, da der für xsl-fo notwendige Seitenumbruch-Tag aus dem RDF entfernt wurde. diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index be64329c4..ebbcad0a6 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -841,9 +841,15 @@ echo " ".$p->t('global/uid')." ".$p->t('global/nachname')." - ".$p->t('global/vorname')." - ".($grade_from_moodle?''.$p->t('benotungstool/moodleNote').'':''.$p->t('benotungstool/leNoten').' (LE-ID)')." - ".$p->t('benotungstool/punkte').' / '.$p->t('benotungstool/note')." + ".$p->t('global/vorname').""; + + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + echo "".($grade_from_moodle?''.$p->t('benotungstool/moodleNote').'':''.$p->t('benotungstool/leNoten').' (LE-ID)').""; + } + + + echo "".$p->t('benotungstool/punkte').' / '.$p->t('benotungstool/note')." ".$p->t('benotungstool/lvNote')."
@@ -854,26 +860,38 @@ echo "
- ".$p->t('benotungstool/zeugnisnote')." - ".$p->t('benotungstool/nachpruefung').""; + ".$p->t('benotungstool/zeugnisnote').""; + + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2) + { + echo "".$p->t('benotungstool/nachpruefung').""; + } if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3) { echo "".$p->t('benotungstool/nachpruefung2').""; } + if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF) + { + echo "".$p->t('benotungstool/kommissionellePruefung').""; + } echo " - ".$p->t('benotungstool/kommissionellePruefung')." + -   - - - - - - - -
".$p->t('global/datum')."".$p->t('benotungstool/note')."
- "; +  "; + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2) + { + echo " + + + + + + +
".$p->t('global/datum')."".$p->t('benotungstool/note')."
+ "; + } + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3) { echo " @@ -886,66 +904,73 @@ echo " "; } - echo " - - - - - - - -
".$p->t('global/datum')."".$p->t('benotungstool/note')."
- + + if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF) + { + echo " + + + + + + + +
".$p->t('global/datum')."".$p->t('benotungstool/note')."
+ "; + } + echo " "; + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + if($grade_from_moodle) + { + flush(); + ob_flush(); - if($grade_from_moodle) - { - flush(); - ob_flush(); + $moodle24 = new moodle24_course(); + $moodle24->loadNoten($lvid, $stsem); - $moodle24 = new moodle24_course(); - $moodle24->loadNoten($lvid, $stsem); + $moodle24_course_bezeichnung=array(); - $moodle24_course_bezeichnung=array(); + if(count($moodle24->result)>0) + { + // Bezeichnungen der Moodlekurse laden + foreach($moodle24->result as $obj) + { + if(!isset($moodle24_course_bezeichnung[$obj->mdl_course_id])) + { + $moodle24course = new moodle24_course(); + $moodle24course->load($obj->mdl_course_id); - if(count($moodle24->result)>0) - { - // Bezeichnungen der Moodlekurse laden - foreach($moodle24->result as $obj) - { - if(!isset($moodle24_course_bezeichnung[$obj->mdl_course_id])) - { - $moodle24course = new moodle24_course(); - $moodle24course->load($obj->mdl_course_id); + $moodle24_course_bezeichnung[$obj->mdl_course_id]=$moodle24course->mdl_shortname; + } - $moodle24_course_bezeichnung[$obj->mdl_course_id]=$moodle24course->mdl_shortname; - } + if(!isset($moodle24_course_gewicht[$obj->mdl_course_id])) + { + $mdl_obj = new moodle24_course(); + $mdl_lehreinheiten=$mdl_obj->getLeFromCourse($obj->mdl_course_id); - if(!isset($moodle24_course_gewicht[$obj->mdl_course_id])) - { - $mdl_obj = new moodle24_course(); - $mdl_lehreinheiten=$mdl_obj->getLeFromCourse($obj->mdl_course_id); + foreach($mdl_lehreinheiten as $row_mdl_lehreinheit) + { + if($row_mdl_lehreinheit!='') + { + $lehreinheit_gewicht_obj = new lehreinheit(); + $lehreinheit_gewicht_obj->load($row_mdl_lehreinheit); - foreach($mdl_lehreinheiten as $row_mdl_lehreinheit) - { - if($row_mdl_lehreinheit!='') - { - $lehreinheit_gewicht_obj = new lehreinheit(); - $lehreinheit_gewicht_obj->load($row_mdl_lehreinheit); - - if($lehreinheit_gewicht_obj->gewicht!='') - { - $moodle24_course_gewicht[$obj->mdl_course_id]=$lehreinheit_gewicht_obj->gewicht; - break; - } - } - } - } - } - } - } + if($lehreinheit_gewicht_obj->gewicht!='') + { + $moodle24_course_gewicht[$obj->mdl_course_id]=$lehreinheit_gewicht_obj->gewicht; + break; + } + } + } + } + } + } + } + } // studentenquery $qry_stud = "SELECT @@ -979,7 +1004,9 @@ echo " $note_le_gewichtet=0; $gewichtsumme=0; $note=0; - if($grade_from_moodle) + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + if($grade_from_moodle) { //Moodle 1.9 @@ -1040,7 +1067,6 @@ echo " $title.=$key."=>".$value."\r\n"; } - $note_les_str .= "".$note." (".$mdl_shortname.") "; } } // ende If Richtiger User @@ -1134,10 +1160,11 @@ echo " $title='Gewichtung: '.$l->gewicht; else $title=''; - $note_les_str .= ''.$legesamtnote->note.' ('.$l->lehreinheit_id.') '; - } - } + $note_les_str .= ''.$legesamtnote->note.' ('.$l->lehreinheit_id.') '; + } + } } + } if ($lvgesamtnote = new lvgesamtnote($lvid,$row_stud->prestudent_id,$stsem)) { @@ -1191,8 +1218,10 @@ echo " else $znote = null; - - echo "".$note_les_str." "; + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + echo "".$note_les_str." "; + } if (key_exists($row_stud->uid,$studpruef_arr)) $hide = "style='display:none;visibility:hidden;'"; @@ -1276,43 +1305,46 @@ echo " if(isset($noten_array[$znote]) && $noten_array[$znote]['positiv']==false) $summe_ng++; - // Pruefung 2. Termin - if (key_exists($row_stud->uid, $studpruef_arr)) + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2) { - echo ""; - echo ""; - echo ""; - $le_id_arr = array(); - $le_id_arr = array_keys($studpruef_arr[$row_stud->uid]); - foreach ($le_id_arr as $le_id_stud) - { - $pr_note = $studpruef_arr[$row_stud->uid][$le_id_stud]["note"]; - $pr_punkte = $studpruef_arr[$row_stud->uid][$le_id_stud]["punkte"]; - $pr_datum = $studpruef_arr[$row_stud->uid][$le_id_stud]["datum"]; - $pr_le_id = $le_id_stud; + // Pruefung 2. Termin + if (key_exists($row_stud->uid, $studpruef_arr)) + { + echo ""; - } - else - { - if (!is_null($note_lv) || !is_null($znote)) - echo ""; - else - echo ""; - } + echo ' + + + '; + } + echo "
"; + echo ""; + echo ""; + $le_id_arr = array(); + $le_id_arr = array_keys($studpruef_arr[$row_stud->uid]); + foreach ($le_id_arr as $le_id_stud) + { + $pr_note = $studpruef_arr[$row_stud->uid][$le_id_stud]["note"]; + $pr_punkte = $studpruef_arr[$row_stud->uid][$le_id_stud]["punkte"]; + $pr_datum = $studpruef_arr[$row_stud->uid][$le_id_stud]["datum"]; + $pr_le_id = $le_id_stud; - if($pr_punkte!='') - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; - else - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; + if($pr_punkte!='') + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; + else + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; - echo ' - - - '; - } - echo "
'.$pr_datum.''.$pr_notenbezeichnung.' -
"; - echo "
"; - echo "
'.$pr_datum.''.$pr_notenbezeichnung.' +
"; + echo "
"; + echo ""; + } + else + { + if (!is_null($note_lv) || !is_null($znote)) + echo ""; + else + echo ""; + } + } if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3) { @@ -1355,39 +1387,42 @@ echo " } } - // komm Pruefung - if (key_exists($row_stud->uid,$studpruef_komm)) + if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF) { - echo ""; - echo ""; - echo ""; - $le_id_arr = array(); - $le_id_arr = array_keys($studpruef_komm[$row_stud->uid]); - foreach ($le_id_arr as $le_id_stud) - { - $pr_note = $studpruef_komm[$row_stud->uid][$le_id_stud]["note"]; - $pr_punkte = $studpruef_komm[$row_stud->uid][$le_id_stud]["punkte"]; - $pr_datum = $studpruef_komm[$row_stud->uid][$le_id_stud]["datum"]; - $pr_le_id = $le_id_stud; + // komm Pruefung + if (key_exists($row_stud->uid,$studpruef_komm)) + { + echo ""; - } - else - { - echo ""; - } + echo ' + + + '; + } + echo "
"; + echo ""; + echo ""; + $le_id_arr = array(); + $le_id_arr = array_keys($studpruef_komm[$row_stud->uid]); + foreach ($le_id_arr as $le_id_stud) + { + $pr_note = $studpruef_komm[$row_stud->uid][$le_id_stud]["note"]; + $pr_punkte = $studpruef_komm[$row_stud->uid][$le_id_stud]["punkte"]; + $pr_datum = $studpruef_komm[$row_stud->uid][$le_id_stud]["datum"]; + $pr_le_id = $le_id_stud; - if($pr_punkte!='') - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; - else - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; + if($pr_punkte!='') + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; + else + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; - echo ' - - - '; - } - echo "
'.$pr_datum.''.$pr_notenbezeichnung.'
"; - echo "
"; - echo "
'.$pr_datum.''.$pr_notenbezeichnung.'
"; + echo "
"; + echo ""; + } + else + { + echo ""; + } + } echo ""; $i++; @@ -1398,12 +1433,27 @@ echo " echo " Σ - $summe_stud - - $summe_ng - $summe_t2 - $summe_t3 - $summe_komm + $summe_stud"; + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && (!CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)) + { + echo ""; + } + else + { + echo ""; + } + echo "$summe_ng"; + + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2): ?> + "'>$summe_t2; + + "'>$summe_t3"; + + "'>$summe_komm + diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index 7bf642a69..c2902f28d 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -589,6 +589,8 @@ function resetForm() */ function setTablesorter(tableId) { + if($("#"+tableId).length != 0) + { if($("#"+tableId)[0].hasInitialized !== true) { $("#"+tableId).tablesorter({ @@ -602,6 +604,7 @@ function setTablesorter(tableId) var sorting = [[1,0],[0,0]]; $("#"+tableId).trigger("sorton",[sorting]); } + } } /** @@ -688,7 +691,6 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) function writeAnmeldungen(data) { - console.log(data); if(data.error === 'false') { var terminId = data.result.anmeldungen[0].pruefungstermin_id; diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php index 8b3b30898..8d2b5fd9e 100755 --- a/cis/private/lehre/pruefung/pruefung.js.php +++ b/cis/private/lehre/pruefung/pruefung.js.php @@ -635,19 +635,22 @@ function resetForm() */ function setTablesorter(tableId) { - if($("#"+tableId)[0].hasInitialized !== true) - { - $("#"+tableId).tablesorter({ - widgets: ["zebra"], - sortList: [[1,0]] - }); - } - else - { - $("#"+tableId).trigger("updateAll"); - var sorting = [[1,0],[0,0]]; - $("#"+tableId).trigger("sorton",[sorting]); - } + if($("#"+tableId).length != 0) + { + if($("#"+tableId)[0].hasInitialized !== true) + { + $("#"+tableId).tablesorter({ + widgets: ["zebra"], + sortList: [[1,0]] + }); + } + else + { + $("#"+tableId).trigger("updateAll"); + var sorting = [[1,0],[0,0]]; + $("#"+tableId).trigger("sorton",[sorting]); + } + } } /** @@ -734,7 +737,6 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) function writeAnmeldungen(data) { - console.log(data); if(data.error === 'false') { var terminId = data.result.anmeldungen[0].pruefungstermin_id; diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 5b7d9fe1a..3163cff44 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -490,34 +490,50 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) foreach($pruefung->result as $prf) { - $note = new note($prf->note); - if($note->note === $noteCode_uef) + $pruefung = new pruefungCis(); + $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]); + $anmeldung = new pruefungsanmeldung(); + $anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $anmeldung->pruefungstermin_id = $_REQUEST["termin_id"]; + $anmeldung->wuensche = $_REQUEST["bemerkung"]; + $anmeldung->uid = $uid; + $anmeldung->reihung = $reihung+1; + $anmeldung->status_kurzbz = "angemeldet"; + $anmeldung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); + + $konto = new konto(); + $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); + + if($creditpoints !== false) { - $pruefungsanmeldung = new pruefungsanmeldung($prf->pruefungsanmeldung_id); - $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id); - $pf = new pruefungCis($pruefungstermin->pruefung_id); - $pruefungsfenster = new pruefungsfenster($pf->pruefungsfenster_id); - $studiensemester = new studiensemester(); - $stdsem = $studiensemester->getaktorNext(); - $i=0; - while($i<2) + if($creditpoints < $lehrveranstaltung->ects) { - if($stdsem === $pruefungsfenster->studiensemester_kurzbz) + $pruefungsanmeldung = new pruefungsanmeldung($prf->pruefungsanmeldung_id); + $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id); + $pf = new pruefungCis($pruefungstermin->pruefung_id); + $pruefungsfenster = new pruefungsfenster($pf->pruefungsfenster_id); + $studiensemester = new studiensemester(); + $stdsem = $studiensemester->getaktorNext(); + $i=0; + while($i<2) + { + if($stdsem === $pruefungsfenster->studiensemester_kurzbz) + { + $anmeldung_moeglich = false; + } + $stdsem = $studiensemester->getPreviousFrom($stdsem); + $i++; + } + } + else + { + if($note->positiv === FALSE && $anzahlPruefungen >= $maxAnzahlVersuche) { $anmeldung_moeglich = false; } - $stdsem = $studiensemester->getPreviousFrom($stdsem); - $i++; } } - else - { - if($note->positiv === FALSE && $anzahlPruefungen >= $maxAnzahlVersuche) - { - $anmeldung_moeglich = false; - } - } - } if($anmeldung_moeglich) { @@ -577,15 +593,29 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $data['errormsg']=$p->t('pruefung/anmeldungAufgrundVonSperreNichtMoeglich'); return $data; } + } + else + { + $data['error']='true'; + $data['errormsg']=$p->t('pruefung/anmeldungAufgrundVonSperreNichtMoeglich'); + return $data; + } - $anrechnung = new anrechnung(); - $lv_komp = new lehrveranstaltung($studienverpflichtung_id); - $person = new person(); - $person->getPersonFromBenutzer($uid); - $prestudent = new prestudent(); - $prestudent->getPrestudenten($person->person_id); + $anrechnung = new anrechnung(); + $lv_komp = new lehrveranstaltung($studienverpflichtung_id); + $person = new person(); + $person->getPersonFromBenutzer($uid); + $prestudent = new prestudent(); + $prestudent->getPrestudenten($person->person_id); + $studiensemester = new studiensemester(); + $stdsem = $studiensemester->getaktorNext(); + if ($aktStudiensemester) + $stdsem = $aktStudiensemester; - if(count($prestudent->result) > 0) + if(count($prestudent->result) > 0) + { + $prestudent_id = ""; + foreach($prestudent->result as $ps) { $prestudent_id = ""; foreach($prestudent->result as $ps) @@ -663,6 +693,75 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $data['error']='true'; $data['errormsg']=$p->t('pruefung/prestudentNichtGefunden'); } + } + } + if($prestudent_id != "") + { + $anrechungSaveResult = false; + if(!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG') || CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true) + { + if($lv_komp->lehrveranstaltung_id != null && ($lv_komp->lehrveranstaltung_id != $lehrveranstaltung->lehrveranstaltung_id)) + { + $anrechnung->lehrveranstaltung_id = $lv_komp->lehrveranstaltung_id; + $anrechnung->lehrveranstaltung_id_kompatibel = $lehrveranstaltung->lehrveranstaltung_id; + $anrechnung->prestudent_id = $prestudent_id; + $anrechnung->begruendung_id = "2"; + $anrechnung->genehmigt_von = CIS_PRUEFUNGSANMELDUNG_USER; + $anrechnung->new = true; + $anrechungSaveResult = $anrechnung->save(); + } + else + { + $anrechungSaveResult = true; + } + } + else + { + $anrechungSaveResult = true; + } + + if($anrechungSaveResult) + { + if($anrechnung->anrechnung_id == "") + $anmeldung->anrechnung_id = null; + else + $anmeldung->anrechnung_id = $anrechnung->anrechnung_id; + + if($anmeldung->save(true)) + { + $pruefung = new pruefungCis($termin->pruefung_id); + if(defined('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG') && (CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG !== "")) + $to = CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG."@".DOMAIN; + else + $to = $pruefung->mitarbeiter_uid."@".DOMAIN; + $from = "noreply@".DOMAIN; + $subject = $p->t('pruefung/emailLektorSubjectAnmeldung'); + $mail = new mail($to, $from, $subject, $p->t('pruefung/emailBodyBitteHtmlSicht')); + + $student = new student($uid); + $datum = new datum(); + + $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); + + $html = $p->t('pruefung/emailLektorStudentIn')." ".$student->vorname." ".$student->nachname." ".$p->t('pruefung/emailLektorHatSichZurPruefung')." ".$lv->bezeichnung." ".$p->t('pruefung/emailLektorAm')." ".$datum->formatDatum($termin->von, "m.d.Y")." ".$p->t('pruefung/emailLektorVon')." ".$datum->formatDatum($termin->von,"h:i")." ".$p->t('pruefung/emailLektorUhrBis')." ".$datum->formatDatum($termin->bis,"h:i")." ".$p->t('pruefung/emailLektorUhrAngemeldet'); + $mail->setHTMLContent($html); + $mail->send(); + + $data['result'] = $p->t('pruefung/anmeldungErfolgreich'); + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } + } + else + { + $data['error']='true'; + $data['errormsg']=$anrechnung->errormsg; + } } else { diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php index 32a8472fc..ca11163de 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php @@ -231,6 +231,7 @@ $studiensemester->getAll(); +

t('pruefung/lvVonStudiengang'); ?>

@@ -247,6 +248,7 @@ $studiensemester->getAll();
+

t('pruefung/lvAlle'); ?>

diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php index e1c612282..849c37cdc 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php @@ -67,7 +67,7 @@ $rechte->getBerechtigungen($uid); min-height: 297mm; padding: 20mm; margin: 10mm auto; - border: 1px #D3D3D3 solid; + border: 1px #ffffff solid; border-radius: 5px; background: white; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); @@ -76,7 +76,7 @@ $rechte->getBerechtigungen($uid); #subpage { padding: 10mm; - border: 1px black solid; + border: 1px white solid; height: 256mm; outline: 20mm } diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.js.php b/cis/private/lehre/pruefung/pruefungsbewertung.js.php old mode 100644 new mode 100755 index e6369eb97..f5871cd9c --- a/cis/private/lehre/pruefung/pruefungsbewertung.js.php +++ b/cis/private/lehre/pruefung/pruefungsbewertung.js.php @@ -96,8 +96,8 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt { $("#modalOverlay").addClass("modalOverlay"); $("#anmeldeDaten").empty(); - $("#anmeldungen").children("h2").text("Bewertungen zu "+lehrveranstaltung+" ("+datum+")"); - var noten = ""; $.ajax({ dataType: 'json', url: "./pruefungsbewertung.json.php", @@ -138,15 +138,15 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt data.result.forEach(function(d) { if(d.status_kurzbz === "bestaetigt") - { - var datum = d.von.split(" "); + { + var datum = d.von.split(" "); if(d.pruefung.note===null) { - entry = "
"+d.student.vorname+" "+d.student.nachname+"
"+notenSelect+"
"; + entry = "
"+d.student.vorname+" "+d.student.nachname+"
"+notenSelect+"'/>
' />
"; } else { - entry = "
"+d.student.vorname+" "+d.student.nachname+"
"+notenSelect+"
"; + entry = "
"+d.student.vorname+" "+d.student.nachname+"
"+notenSelect+"'/>
' value='"+d.pruefung.anmerkung+"' />
"; } $("#anmeldeDaten").append(entry); if(d.pruefung.note!==null) @@ -199,7 +199,7 @@ function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrver return false; } var anmerkung = $("#note_anmerkung_"+student_uid).val(); - + $.ajax({ dataType: 'json', url: "./pruefungsbewertung.json.php", @@ -229,7 +229,7 @@ function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrver $(ele).parent().find("select").val(null); } }).complete(function(event, xhr, settings){ - + }); } @@ -270,8 +270,8 @@ function updateBeurteilung(ele, pruefung_id) { messageBox("message",data.errormsg, "red", "highlight", 1000); } - - + + }).complete(function(event, xhr, settings){ }); diff --git a/cis/private/lvplan/stpl_kalender.php b/cis/private/lvplan/stpl_kalender.php index 47258eab2..bae1b5795 100644 --- a/cis/private/lvplan/stpl_kalender.php +++ b/cis/private/lvplan/stpl_kalender.php @@ -231,7 +231,8 @@ if(!isset($begin) || !isset($ende)) } } -if($ende-$begin>31536000) + +if($ende-$begin>34560000) // = 400 Tage { die($p->t('lvplan/datumsbereichZuGross')."!"); } diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index a927fd359..93b32a7b7 100755 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -433,19 +433,6 @@ if(isset($prestudent_id)) } echo ''; - - - - - - - - - - - - - function drawTree($tree, $depth) { global $uid, $stsem_arr, $noten_arr, $lvangebot_arr; @@ -557,12 +544,12 @@ echo ' $lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel; if(isset($noten_arr[$lv])) { - $positiv=false; - foreach($noten_arr[$lv] as $note) - { - if($note_pruef_arr[$note]->positiv) - $positiv=true; - } + $positiv=false; + foreach($noten_arr[$lv] as $note) + { + if($note_pruef_arr[$note]->positiv) + $positiv=true; + } $found = true; } else diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index 0ec57fc77..84d4613fe 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -215,6 +215,9 @@ define('CIS_PRUEFUNGSANMELDUNG_USER','p.pruefungsanmeldung'); // Soll für die Prüfungsanmeldungen eine Anrechnung erstellt werden define('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG', true); +//Gibt an, ob der Bereich zur Anmeldung zu Pruefungen des gesamten Studiengangs angezeigt werden soll +define('CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG', true); + //Gibt an, wie viele Semester aus der Vergangenheit unter Meine LV angezeigt werden define('CIS_MEINELV_ANZAHL_SEMESTER_PAST', 3); diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 01925ac08..75a31a31c 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -59,9 +59,20 @@ define('CIS_GESAMTNOTE_UEBERSCHREIBEN',true); // Gewichtung der Lehreinheiten bei Noteneintragung true|false define('CIS_GESAMTNOTE_GEWICHTUNG', true); +// Bei Gesamtnote eine zusaetzliche Spalte fuer den 2. Termin anzeigen +define('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2',true); + // Bei Gesamtnote eine zusaetzliche Spalte fuer den 3. Termin anzeigen define('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3',true); +// Bei Gesamtnote eine zusaetzliche Spalte fuer die kommissionelle Pruefung anlegen +define('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF', true); + +// Bei Gesamtnote eine zusaetzliche Spalte fuer die kommissionelle Pruefung anlegen +define('CIS_GESAMTNOTE_PRUEFUNG_MOODLE_NOTE', true); + +// Bei Gesamtnote die Spalte fuer die Quelle der Noten anzeigen (Moodle oder LE) +define('CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE', true); // Gibt an ob im FAS bei den Lehrveranstaltungsnoten ein zusaetzliches Formular angezeigt wird um // Vertraege fuer Pruefungshonorare anzulegen diff --git a/content/pdfExport.php b/content/pdfExport.php index 042892976..11fac9918 100755 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -71,7 +71,7 @@ else $xsl_stg_kz=$_GET['stg_kz']; else { - // Werden UIDs uebergeben, wird die Vorlage des Studiengangs genommen + // Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen // in dem der 1. Studierende in der Liste ist if(isset($_GET['uid']) && $_GET['uid']!='') { @@ -86,6 +86,19 @@ else $xsl_stg_kz=$student_obj->studiengang_kz; } } + elseif(isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='') + { + if(strstr($_GET['prestudent_id'],';')) + $prestudent_ids = explode(';',$_GET['prestudent_id']); + else + $prestudent_ids[1] = $_GET['prestudent_id']; + + $prestudent_obj = new prestudent(); + if($prestudent_obj->load($prestudent_ids[1])) + { + $xsl_stg_kz=$prestudent_obj->studiengang_kz; + } + } } } if(isset($_GET['xsl_oe_kurzbz'])) @@ -666,7 +679,7 @@ else // Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den // Styleanweisungen und ebenfalls zum Zip hinzugefuegt - if(isset($_GET['style_xsl'])) + if(isset($_GET['style_xsl']) || $vorlage->style!='') { //Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet if($vorlage->style!='') diff --git a/include/dokument_export.class.php b/include/dokument_export.class.php index f60f94c3e..89ccfea65 100644 --- a/include/dokument_export.class.php +++ b/include/dokument_export.class.php @@ -291,6 +291,9 @@ class dokument_export if($download) { + if(headers_sent()) + exit('Header wurden bereits gesendet -> Abbruch'); + switch($this->outputformat) { case 'pdf': @@ -310,6 +313,8 @@ class dokument_export header('Content-Disposition: attachment; filename="'.$this->filename.'.odt"'); header('Content-Length: '.$fsize); break; + default: + exit('Outputformat is not defined'); } while (!feof($handle)) @@ -389,5 +394,11 @@ class dokument_export } return $_xml_data->asXML(); } + + public function getXML() + { + $this->xml_data->formatOutput=true; + return $this->xml_data->saveXML(); + } } ?> diff --git a/include/jahresplan.class.php b/include/jahresplan.class.php index 9977730b8..a3bff5f29 100644 --- a/include/jahresplan.class.php +++ b/include/jahresplan.class.php @@ -548,8 +548,10 @@ class jahresplan extends basis_db $qry.=", to_char(tbl_veranstaltung.start, 'Q') as \"start_quartal\" "; $qry.=", to_char(tbl_veranstaltung.ende, 'Q') as \"ende_quartal\" "; - $qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.start) as \"start_timestamp\" "; - $qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.ende) as \"ende_timestamp\" "; + $qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.start::TIMESTAMP WITHOUT TIME +ZONE at time zone 'CEST' ) as \"start_timestamp\" "; + $qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.ende::TIMESTAMP WITHOUT TIME +ZONE at time zone 'CEST' ) as \"ende_timestamp\" "; $qry.=", to_char(tbl_veranstaltung.start, 'DD.MM.YYYY') as \"start_datum\" "; diff --git a/include/prestudent.class.php b/include/prestudent.class.php index 7d8f6505a..8c4080d41 100755 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -1784,7 +1784,9 @@ class prestudent extends person if($stg_obj->typ=='m') { - $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus + $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus, + (Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)." + AND status_kurzbz='Bewerber') as anmerkung FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) @@ -1810,7 +1812,9 @@ class prestudent extends person } else { - $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus + $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus, + (Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)." + AND status_kurzbz='Bewerber') as anmerkung FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) diff --git a/locale/de-AT/pruefung.php b/locale/de-AT/pruefung.php index be9bb41c7..fbf7ab6a3 100755 --- a/locale/de-AT/pruefung.php +++ b/locale/de-AT/pruefung.php @@ -73,6 +73,8 @@ $this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Lehrveranstaltung erfolgreic $this->phrasen['pruefung/pruefungStorniert'] = 'Prüfung storniert'; $this->phrasen['pruefung/terminGeloescht'] = 'Termin gelöscht'; $this->phrasen['pruefung/unbegrenzt'] = 'unbegrenzt'; +$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu'; +$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl'; // pruefungsbewertung $this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung'; diff --git a/locale/en-US/pruefung.php b/locale/en-US/pruefung.php index 9c7eb8343..ca32086a8 100755 --- a/locale/en-US/pruefung.php +++ b/locale/en-US/pruefung.php @@ -73,6 +73,8 @@ $this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Lehrveranstaltung erfolgreic $this->phrasen['pruefung/pruefungStorniert'] = 'Prüfung storniert'; $this->phrasen['pruefung/terminGeloescht'] = 'Termin gelöscht'; $this->phrasen['pruefung/unbegrenzt'] = 'unlimited'; +$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu'; +$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl'; // pruefungsbewertung $this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung'; diff --git a/locale/it-IT/pruefung.php b/locale/it-IT/pruefung.php index e61d6c8f4..90b7a7ad7 100755 --- a/locale/it-IT/pruefung.php +++ b/locale/it-IT/pruefung.php @@ -46,7 +46,7 @@ $this->phrasen['pruefung/anmeldenMoeglichBis'] = 'Possibilità di iscrizione ent $this->phrasen['pruefung/stornoNichtMehrMoeglich'] = 'Non è più possibile annullare l’iscrizione.'; $this->phrasen['pruefung/zurLvAnmeldung'] = 'iscriversi al corso'; $this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Scegliere prima l’esame.'; -$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'inserito da docente'; +$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'iscrizione da segreteria'; $this->phrasen['pruefung/bestaetigen'] = 'Confermare'; $this->phrasen['pruefung/anmerkungDesStudenten'] = 'Osservazioni dello studente:
'; $this->phrasen['pruefung/bestaetigt'] = 'confermato'; @@ -73,6 +73,9 @@ $this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Insegnamento tolto con succe $this->phrasen['pruefung/pruefungStorniert'] = 'Esame cancellato'; $this->phrasen['pruefung/terminGeloescht'] = 'Appello eliminato'; $this->phrasen['pruefung/unbegrenzt'] = ''; +$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu'; +$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl'; + // pruefungsbewertung $this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Voti d’esame'; $this->phrasen['pruefung/pruefungsbewertungAnmeldungen'] = 'Iscrizioni'; @@ -102,7 +105,7 @@ $this->phrasen['pruefung/keineLvAngegeben'] = 'Nessun corso definito.'; $this->phrasen['pruefung/kollisionMitAnderemTermin'] = 'Date sovrapposte.'; $this->phrasen['pruefung/terminNichtInDerVergangenheit'] = 'La data dell’appello non è nel passato.'; $this->phrasen['pruefung/keineLehreinheitenVorhanden'] = 'Nessun corso disponibile.'; -$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna registrazione disponibile.'; +$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna studente iscritto.'; // anmeldungen Verwalten $this->phrasen['pruefung/anmeldungenVerwaltenTitle'] = 'Gestione delle prenotazioni degli appelli'; diff --git a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php index 4ed1acee2..7151176b5 100755 --- a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php +++ b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php @@ -297,6 +297,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $stg = new studiengang(); $stg->load($lvstg); + + $xml .= " ".$stg_oe_obj->bezeichnung.""; $xml .= " ".$stg->bezeichnung.""; $xml .= " ".$stg->typ.""; $xml .= " ".sprintf('%04s',$lvstg).""; @@ -312,7 +314,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= " ".$lehrform_kurzbz.""; $xml .= " ".$lehrform_bezeichnung.""; $xml .= " ".($sws==0?'':number_format(sprintf('%.1F',$sws),1)).""; - $xml .= " ".number_format($ects,1).""; + $xml .= " ".$leiter_titel." ".$leiter_vorname." ".$leiter_nachname.($leiter_titelpost!=''?', '.$leiter_titelpost:'').""; $xml .= " "; $xml .= " "; @@ -324,6 +326,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") } $xml .= " "; + $anrechnung = new anrechnung(); $anrechnung->getAnrechnungPrestudent($student->prestudent_id, null, $lehrveranstaltung_id); @@ -336,6 +339,17 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= $anrechnung->result[0]->lehrveranstaltung_bez; } $xml .= ""; + + if($lehrveranstaltung_id_kompatibel != "") + { + $lv = new lehrveranstaltung($lehrveranstaltung_id_kompatibel); + if(($lv->ects !== $ects) && ($lv->ects != "") && ($lv->ects != null)) + { + $ects = $lv->ects; + } + } + + $xml .= " ".number_format($ects,1).""; $lehrveranstaltung->loadLehrveranstaltungStudienplan($studienplan_id); diff --git a/rdf/zeugnis.rdf.php b/rdf/zeugnis.rdf.php index 314d741e4..92678e227 100644 --- a/rdf/zeugnis.rdf.php +++ b/rdf/zeugnis.rdf.php @@ -34,6 +34,7 @@ require_once('../include/datum.class.php'); require_once('../include/note.class.php'); require_once('../include/studiengang.class.php'); require_once('../include/mitarbeiter.class.php'); +require_once('../include/anrechnung.class.php'); require_once('../include/studiensemester.class.php'); $datum = new datum(); @@ -374,6 +375,19 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= " ".($row->semesterstunden==0?'':number_format(sprintf('%.1F',$row->semesterstunden/$wochen),1)).""; $ectspunkte=''; + + $anrechnung = new anrechnung(); + $anrechnung->getAnrechnungPrestudent($prestudent_id_arr[$i], null, $row->lehrveranstaltung_id); + + if($anrechnung->result != null) + { + $lv = new lehrveranstaltung($anrechnung->result[0]->lehrveranstaltung_id); + if(($lv->ects !== $row->ects) && ($lv->ects != "") && ($lv->ects != null)) + { + $row->ects = $lv->ects; + } + } + if($row->ects==0 || $row->ects=='') $ectspunkte=''; else @@ -406,4 +420,3 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") echo $xml; } ?> - diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php index 68587d571..8260a4b81 100644 --- a/system/mlists/mlists_generate.php +++ b/system/mlists/mlists_generate.php @@ -234,6 +234,7 @@ $error_msg=''; // ************************************************************** // Studiengangsleiter-Verteiler abgleichen + // Es werden auch StellvertreterInnen hinzugefügt $mlist_name='tw_stgl'; setGeneriert($mlist_name); // Personen holen die nicht mehr in den Verteiler gehoeren @@ -248,9 +249,10 @@ $error_msg=''; JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) JOIN public.tbl_benutzerfunktion USING(uid) JOIN public.tbl_studiengang USING(oe_kurzbz) - WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg') AND + WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()))"; + (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) + AND tbl_studiengang.aktiv=true)"; if(!($result = $db->db_query($sql_query))) $error_msg.=$db->db_last_error(); while($row=$db->db_fetch_object($result)) @@ -263,7 +265,7 @@ $error_msg=''; } // Personen holen die nicht im Verteiler sind echo '
'; - $sql_query="SELECT mitarbeiter_uid AS uid + $sql_query="SELECT DISTINCT mitarbeiter_uid AS uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) @@ -271,10 +273,11 @@ $error_msg=''; JOIN public.tbl_studiengang USING(oe_kurzbz) WHERE tbl_benutzer.aktiv AND - (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg') AND + (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND - mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))"; + mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name')) + AND tbl_studiengang.aktiv=true"; if(!($result = $db->db_query($sql_query))) $error_msg.=$db->db_last_error(); while($row=$db->db_fetch_object($result)) @@ -1703,6 +1706,42 @@ $error_msg=''; $error_msg.=$db->db_last_error().' '.$sql_querys; } + $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; + if(!($result_oe = $db->db_query($sql_query))) + $error_msg.=$db->db_last_error().' '.$sql_query; + // Personen holen die nicht im Verteiler sind + while($row_oe = $db->db_fetch_object($result_oe)) + { + $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')"; + if(!$db->db_query($sql_query)) + { + $error_msg.=$db->db_last_error().$sql_query; + } + } + + // ************************************************************** + // Alle MA mit Funktion Leitung oder stvLeitung oder gfLtg + $mlist_name='TW_LEITUNG'; + + $grp = new gruppe(); + setGeneriert($mlist_name); + + // Personen holen die nicht mehr in den Verteiler gehoeren + echo '
'.$mlist_name.' wird abgeglichen!'; + flush(); + + $sql_query = "SELECT DISTINCT uid FROM tbl_person JOIN tbl_benutzer + USING (person_id) JOIN tbl_benutzerfunktion USING (uid) + WHERE funktion_kurzbz in('Leitung','stvLtg','gLtg') + AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) + AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; + + $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)"; + if(!$db->db_query($sql_querys)) + { + $error_msg.=$db->db_last_error().' '.$sql_querys; + } + $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; if(!($result_oe = $db->db_query($sql_query))) $error_msg.=$db->db_last_error().' '.$sql_query; diff --git a/vilesci/personen/aliquote_reduktion.php b/vilesci/personen/aliquote_reduktion.php index be9094b7d..dd2f86df2 100644 --- a/vilesci/personen/aliquote_reduktion.php +++ b/vilesci/personen/aliquote_reduktion.php @@ -74,6 +74,7 @@ aqr.studiengaenge = []; aqr.studiensemester = []; aqr.studienplaetze = []; + aqr.zgvElems = []; aqr.actualSequence = 1; SERVICE_TARGET = "aliquote_reduktion.json.php"; @@ -112,6 +113,12 @@ if(!confirm("Es wurden zu viel Studenten gewählt!")) return; } + else + { + if(!confirm("Sind Sie sicher, dass Sie die ausgewählten Personen aufnehmen wollen?")) + return; + } + var prestudent_ids = []; aqr.studenten.forEach(function(i) @@ -190,7 +197,7 @@ aqr.studenten=res; aqr.studenten.forEach(function(i) { - if(i.laststatus=='Wartender'||i.laststatus=='Bewerber') + if((i.laststatus=='Wartender'||i.laststatus=='Bewerber') && i.rt_gesamtpunkte !== null && i.rt_gesamtpunkte > 0) i.applicant = true; else if(i.laststatus=='Student'||i.laststatus=='Aufgenommener') i.selected=true; @@ -212,12 +219,12 @@ return ret; } - aqr.getAcceptedCount = function() + aqr.getAcceptedCount = function(zgvGruppe) { var ret = 0; aqr.studenten.forEach(function(i) { - if(i.laststatus=='Student'||i.laststatus=='Aufgenommener') + if((i.laststatus=='Student'||i.laststatus=='Aufgenommener') && (zgvGruppe === undefined || zgvGruppe === i.bezeichnung)) ret++; }); return ret; @@ -225,24 +232,60 @@ aqr.doPreselection = function() { - if(parseInt(aqr.selectedStudienplatz.apz) >= 0) + aqr.zgvElems = []; + if(parseInt(aqr.selectedStudienplatz.apz) >= 0) // we only preselect, if we have an APZ { aqr.studenten.sort(sortStudentenRTP); var zgvs = aqr.getZGVArray(); var neededStudentsCount = aqr.selectedStudienplatz.apz - aqr.getAcceptedCount(); - var perZGV = parseInt(neededStudentsCount / zgvs.length); + var perZGV = aqr.studenten.length; var zgvElems = []; + var allApplicants = []; + + aqr.studenten.forEach(function(j) + { + if(j.applicant) + allApplicants.push(j); + }); + + var applicantCount = aqr.selectedStudienplatz.apz; + if(applicantCount > allApplicants.length) + applicantCount = allApplicants.length; + zgvs.forEach(function(i) { - zgvElems.push({name:i,needed:perZGV}); + var applicantsFromZGV = []; + aqr.studenten.forEach(function(j) + { + if(j.applicant && j.bezeichnung === i) + applicantsFromZGV.push(j); + }); + + // calculate the aliquote reduction for every ZGV + var percent = applicantsFromZGV.length / allApplicants.length * 100; + var neededFromZGV = (applicantCount / 100 * percent) - aqr.getAcceptedCount(i); + + if(neededFromZGV < 0) + neededFromZGV = 0; + + zgvElems.push({name:i, needed:neededFromZGV, percent:percent, accepted: aqr.getAcceptedCount(i), neededSum: (applicantCount / 100 * percent)}); }); - var residual = perZGV * zgvs.length; + aqr.zgvElems = JSON.parse(JSON.stringify(zgvElems)); + + // calculate the already distributed students + var residual = 0; + zgvElems.forEach(function(i) + { + residual += i.needed; + }); + + // calculate the difference from needed to already distributed var resDiff = neededStudentsCount - residual; // distribute the remaining places on the present ZGVs - while(resDiff > 0) + while(resDiff > 0 && zgvElems.length > 0/*if there are no zgvs(to prevent a deadlock)*/) { zgvElems.forEach(function(i) { @@ -276,7 +319,7 @@ { var beginNeeded = needed; - //distribute the remainig applicants to the present ZGVs + //distribute the applicants to the present ZGVs for(var i=0; i < zgvElems.length; i++) { for(var j in aqr.studenten) @@ -284,9 +327,11 @@ if( aqr.studenten[j].laststatus!='Abgewiesener' && aqr.studenten[j].laststatus!='Abbrecher' - && zgvElems[i].needed > 0 + && parseInt(zgvElems[i].needed) > 0 && aqr.studenten[j].bezeichnung == zgvElems[i].name - && !aqr.studenten[j].seqPlace) + && !aqr.studenten[j].seqPlace + && !aqr.studenten[j].selected + && aqr.studenten[j].applicant) { aqr.setSequence(aqr.studenten[j]); zgvElems[i].needed --; @@ -303,7 +348,7 @@ //distribute the rest of the applicants, WITH a ZGV group for(var j in aqr.studenten) { - if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung) + if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant) { aqr.setSequence(aqr.studenten[j]); if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber')) @@ -316,7 +361,7 @@ //distribute the rest of the applicants, WITHOUT a ZGV group for(var j in aqr.studenten) { - if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung) + if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant) { aqr.setSequence(aqr.studenten[j]); if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber')) @@ -403,6 +448,7 @@ + @@ -418,6 +464,7 @@ +
Reihung RT Gesamt InterviewbogenAnmerkung/Prio Status {{aqr.choosenStuds}}/{{aqr.selectedStudienplatz.apz}} {{aqr.choosenStuds}}/Keine APZ{{stud.seqPlace}} {{stud.rt_gesamtpunkte}} {{stud.interviewbogen?'vorhanden':'nicht vorhanden'}}{{stud.anmerkung}} {{stud.laststatus}} @@ -429,8 +476,36 @@ +

ZGV Informationen

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameProzentInsgesamt benötigtBereits aufgenommenNoch benötigte Personen
{{zgv.name}}{{zgv.percent | number: 2}}%{{zgv.neededSum | parseInt}}{{zgv.accepted}}{{zgv.needed | parseInt}}
Gesamt{{aqr.selectedStudienplatz.apz}}{{aqr.getAcceptedCount()}}{{aqr.selectedStudienplatz.apz - aqr.getAcceptedCount()}}
-

Bereits aufgenommene

+

Restliche Studenten

@@ -441,6 +516,7 @@ + @@ -455,6 +531,7 @@ +
Reihung RT Gesamt InterviewbogenAnmerkung/Prio Status
{{stud.seqPlace}} {{stud.rt_gesamtpunkte}} {{stud.interviewbogen?'vorhanden':'nicht vorhanden'}}{{stud.anmerkung}} {{stud.laststatus}}