From eb8c3213dfb3628ba3a9cbd737ff463e1841b716 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Tue, 19 Aug 2025 07:37:33 +0200 Subject: [PATCH 01/12] - ects angabe bei der anmeldung - tablesorter hinzugefuegt - pruefungsort anderer raum moeglich (text) - pruefungsanmeldungen nur noch studiensemester dropdown - kompatible lvs vergleichen --- cis/private/lehre/pruefung/pruefung.js.php | 119 ++- .../pruefung/pruefungsanmeldung.json.php | 78 +- .../lehre/pruefung/pruefungsanmeldung.php | 14 + .../pruefung/pruefungsanmeldungen_liste.php | 10 +- .../pruefungsanmeldungen_liste_ohne_namen.php | 7 + .../pruefungsanmeldungen_verwalten.php | 59 +- config/global.config-default.inc.php | 3 + include/pruefungCis.class.php | 32 + include/pruefungsanmeldung.class.php | 12 +- include/pruefungstermin.class.php | 6 +- locale/de-AT/pruefung.php | 2 + locale/en-US/pruefung.php | 1 + system/dbupdate_3.4.php | 6 +- .../47972_pruefungsverwaltung_ects_angabe.php | 22 + ...hrveranstaltung_kompatibel_vergleichen.php | 682 ++++++++++++++++++ vilesci/lehre/studienordnung.js | 5 +- 16 files changed, 1006 insertions(+), 52 deletions(-) create mode 100644 system/dbupdate_3.4/47972_pruefungsverwaltung_ects_angabe.php create mode 100644 vilesci/lehre/lehrveranstaltung_kompatibel_vergleichen.php diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php index 4142e413c..f2fc2dc7e 100644 --- a/cis/private/lehre/pruefung/pruefung.js.php +++ b/cis/private/lehre/pruefung/pruefung.js.php @@ -382,7 +382,7 @@ function writePruefungsTable(e, data, anmeldung) } else if(new Date() > minimumFrist) { - button = "

"+frist+"'>

"; + button = "

"+frist+"'>

"; } } else @@ -479,13 +479,15 @@ function showPruefungsDetails(prfId, lvId) * @param {type} lvBezeichnung Bezeichnung der Lehrveranstaltung * @param {type} terminVon Beginn der Prüfung * @param {type} terminBis Ende der Prüfung + * @param {type} ects der LV * @returns {undefined} */ -function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis) +function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis, ects) { $("#lehrveranstaltungHidden").val(lehrveranstaltung_id); $("#terminHidden").val(termin_id); $("#lehrveranstaltung").html(lvBezeichnung); + $("#ectsangabe").val(ects); $.ajax({ dataType: 'json', @@ -582,6 +584,12 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) if($('#prestudent_studiengang').length) studiengang_kz = $('#prestudent_studiengang option:selected').val(); + var ects = null; + if ($('#ectsangabe').length) + { + ects = $('#ectsangabe').val(); + } + $.ajax({ dataType: 'json', url: "./pruefungsanmeldung.json.php", @@ -593,7 +601,8 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) bemerkung: bemerkungen, uid: uid, studienverpflichtung_id: studienverpflichtung_id, - studiengang_kz: studiengang_kz + studiengang_kz: studiengang_kz, + ects: ects }, error: loadError, success: function(data){ @@ -804,6 +813,7 @@ function writeAnmeldungen(data, showMessage = true) var pruefung_id = data.result.anmeldungen[0].pruefung_id; var lehrveranstaltung_id = data.result.anmeldungen[0].lehrveranstaltung_id; var ort_kurzbz = data.result.ort_kurzbz; + var anderer_raum = data.result.anderer_raum; var lv_bezeichnung = data.result.lv_bezeichnung; var lv_lehrtyp = data.result.lv_lehrtyp; var prf_termin = data.result.datum; @@ -816,24 +826,33 @@ function writeAnmeldungen(data, showMessage = true) count++; var vorname = d.student.vorname !== "null" ? d.student.vorname : ""; var nachname = d.student.nachname !== "null" ? d.student.nachname : ""; + + let ects = ""; + + ects = d.ects !== null ? "(" + d.ects + " ECTS) ": ""; + + + switch(d.status_kurzbz) { case 'angemeldet': - liste += "
  • "+vorname+" "+nachname+""; + liste += "
  • "+ects+vorname+" "+nachname+""; liste += "
    "+count+"
    ' onclick='anmeldungBestaetigen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"; liste += "
    "; if(d.wuensche !== null) { - liste += ""; + let msg = $('
    ').text(d.wuensche).html(); + liste += `
    `; } liste += "
  • "; break; case 'bestaetigt': - liste += "
  • "+vorname+" "+nachname+""; + liste += "
  • "+ects+vorname+" "+nachname+""; liste += "
    "+count+"
    : "+d.statusupdatevon+"'>t('pruefung/bestaetigt'); ?>
    "; if(d.wuensche !== null) { - liste += ""; + let msg = $('
    ').text(d.wuensche).html(); + liste += `
    `; } break; @@ -848,9 +867,9 @@ function writeAnmeldungen(data, showMessage = true) $("#lvdaten").html(lv_bezeichnung+" ("+prf_termin+")"); $("#anmeldeDaten").html(liste); $("#listeDrucken").html(listenLinks); - if(ort_kurzbz !== null) + if(ort_kurzbz !== null || anderer_raum !== null) { - $("#raumLink").html("t('pruefung/pruefungsraum'); ?>"+ort_kurzbz); + $("#raumLink").html("t('pruefung/pruefungsraum'); ?>"+ (ort_kurzbz ?? anderer_raum)); } else { @@ -883,11 +902,17 @@ function writeAnmeldungen(data, showMessage = true) function openRaumDialog(terminId, lehrveranstaltung_id) { getRaeume(terminId); - $("#raum").html('

    t('pruefung/pruefungsraum'); ?>

    t('pruefung/imBuero'); ?>
    t('pruefung/raum'); ?>: '); + $("#raum").html('

    t('pruefung/pruefungsraum'); ?>

    t('pruefung/imBuero'); ?>
    t('pruefung/raum'); ?>:
    t('pruefung/andererRaum'); ?>
    '); $("#raumSpeichernButton").html("' onclick='saveRaum(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'/>"); $("#raumDialog").dialog("open"); } +function openKommentarDialog(text) +{ + $('#kommentarimDialog').text(text); + $('#kommentarDialog').dialog('open'); +} + /** * speichert die Reihung der Studenten einer Prüfungsanmeldung * @param {type} terminId ID des Prüfungstermines @@ -1118,25 +1143,49 @@ function loadPruefungStudiengang(studiengang_kz, studiensemester) $("#pruefungenListe").empty(); if(data.result.length > 0) { - var liste = ""; - data.result.forEach(function(e){ - liste += "
    • "+e.bezeichnung+"
        "; - try + $('#table4').show() + let rows = ''; + + data.result.forEach(function(e) + { + let termine = e?.pruefung[0]?.termine || []; + + if (termine.length === 0) { - e.pruefung[0].termine.forEach(function(d){ - liste += "
      • "+convertDateTime(d.von)+" "+convertDateTime(d.von, "time")+" - "+convertDateTime(d.bis, "time")+"
      • "; + rows += ` + + + ${e.bezeichnung} + Keine Termine + `; + } + else + { + termine.forEach(function(d) { + let vonDate = convertDateTime(d.von); + let vonTime = convertDateTime(d.von, 'time'); + let bisTime = convertDateTime(d.bis, 'time'); + let onClick = `showAnmeldungen(${d.pruefungstermin_id}, ${e.lehrveranstaltung_id})`; + + rows += ` + + + ${e.studiengang} + ${e.bezeichnung} + ${vonDate} + ${vonTime} + ${bisTime} + t('pruefung/pruefungsbewertungAnmeldungen'); ?> + `; }); } - catch(err) - { - var errmsg = err.message; - } - liste += "
    "; }); - $("#pruefungenListe").append(liste); + $("#pruefungenListe").html(rows); + setTablesorter('table4') } else { + $('#table4').hide() $("#pruefungenListe").html("t('pruefung/keinePruefungenVorhanden'); ?>"); } } @@ -1241,6 +1290,7 @@ function loadStudiensemester() data.result.forEach(function(d){ selectData += ""; }); + $('#studiensemester').html(selectData); loadPruefungsfenster(); loadLehrveranstaltungen(); @@ -1540,7 +1590,7 @@ function loadPruefungsDetails(prfId) if(data.result.length === 0) { messageBox("message", "t('pruefung/keinePruefungsfensterGespeichert'); ?>", "red", "highlight", 10000); - $("#pruefungsfenster").html(""); + $("#pruefungsfenster").html(""); } else { @@ -2188,10 +2238,28 @@ function changeStateOfRaumDropdown() } } +function changeStateOfRaumInputs() +{ + if ($("#andererRaum").prop("checked") === true) + { + $("#raumInfos").hide(); + } + else + { + $("#raumInfos").show(); + } +} + function saveRaum(terminId, lehrveranstaltung_id) { var ort_kurzbz; - if($("#raum input[type=checkbox]").prop("checked") === true) + let anderer_raum = ''; + if ($("#andererRaum").prop("checked") === true && $('#andereRaumInput').val() !== '') + { + ort_kurzbz = ""; + anderer_raum = $('#andereRaumInput').val(); + } + else if($("#raum input[type=checkbox]").prop("checked") === true) { ort_kurzbz = "buero"; } @@ -2206,7 +2274,8 @@ function saveRaum(terminId, lehrveranstaltung_id) data: { method: "saveRaum", ort_kurzbz: ort_kurzbz, - terminId: terminId + terminId: terminId, + anderer_raum: anderer_raum }, error: loadError }).done(function(data){ diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 6757cf391..54c064d14 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -108,7 +108,7 @@ switch($method) break; case 'getPruefungenStudiengang': $studiensemester = filter_input(INPUT_POST,"studiensemester"); - $data = getPruefungenStudiengang($uid, $studiensemester); + $data = getPruefungenStudiengangBySemester($studiensemester); break; case 'saveKommentar': $data = saveKommentar(); @@ -120,7 +120,8 @@ switch($method) case 'saveRaum': $terminId = $_REQUEST["terminId"]; $ort_kurzbz = $_REQUEST["ort_kurzbz"]; - $data = saveRaum($terminId, $ort_kurzbz, $uid); + $anderer_raum = $_REQUEST["anderer_raum"]; + $data = saveRaum($terminId, $ort_kurzbz, $uid, $anderer_raum); break; case 'getLvKompatibel': $lvid = filter_input(INPUT_POST, "lehrveranstaltung_id"); @@ -397,6 +398,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $lv_besucht = false; $studienverpflichtung_id = filter_input(INPUT_POST, "studienverpflichtung_id"); $studiengang_kz = filter_input(INPUT_POST, "studiengang_kz"); + $ects = filter_input(INPUT_POST, "ects"); //Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben) $maxAnzahlVersuche = 0; @@ -731,6 +733,10 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) else $anmeldung->anrechnung_id = $anrechnung->anrechnung_id; + if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true)) + { + $anmeldung->ects = $ects; + } if($anmeldung->save(true)) { $pruefung = new pruefungCis($termin->pruefung_id); @@ -1166,6 +1172,53 @@ function getPruefungenStudiengang($uid, $aktStudiensemester) return $data; } +function getPruefungenStudiengangBySemester($aktStudiensemester) +{ + $result = array(); + $pruefungen = new pruefungCis(); + $pruefungen->getPruefungByStudiensemester($aktStudiensemester); + + if((!empty($pruefungen->lehrveranstaltungen))) + { + $lehrveranstaltungen = []; + foreach ($pruefungen->lehrveranstaltungen as $prf) + { + $pruefung = new pruefungCis(); + $pruefung->load($prf->pruefung_id); + + if ($pruefung->storniert) + continue; + + $pruefung->getTermineByPruefung(); + + $lvid = $prf->lehrveranstaltung_id; + + if (!isset($lehrveranstaltungen[$lvid])) + { + $lv = new stdClass(); + $lehrveranstaltung = new lehrveranstaltung(); + $lehrveranstaltung->load($lvid); + + $studiengang = new studiengang(); + $studiengang->load($lehrveranstaltung->studiengang_kz); + + $lv->bezeichnung = $lehrveranstaltung->bezeichnung; + $lv->lehrveranstaltung_id = $lvid; + $lv->studiengang = $studiengang->kuerzel; + $lv->pruefung = []; + $lehrveranstaltungen[$lvid] = $lv; + } + + $lehrveranstaltungen[$lvid]->pruefung[] = $pruefung; + } + $result = array_values($lehrveranstaltungen); + } + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + return $data; +} + /** * * @return typespeichert ein Kommentar zu einer Prüfungsanmeldung @@ -1246,7 +1299,7 @@ function compareRaeume($a, $b) return strcmp($a->ort_kurzbz, $b->ort_kurzbz); } -function saveRaum($terminId, $ort_kurzbz, $uid) +function saveRaum($terminId, $ort_kurzbz, $uid, $anderer_raum = '') { $terminkollision = defined('CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION') ? CIS_PRUEFUNGSANMELDUNG_ERLAUBE_TERMINKOLLISION : false; $pruefungstermin = new pruefungstermin($terminId); @@ -1265,7 +1318,24 @@ function saveRaum($terminId, $ort_kurzbz, $uid) { $pruefung = new pruefungCis($pruefungstermin->pruefung_id); $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); - if($ort_kurzbz === "buero") + + if ($ort_kurzbz === "" && $anderer_raum !== "") + { + $pruefungstermin->anderer_raum = $anderer_raum; + + if($pruefungstermin->save(false)) + { + $data['result']="reserviert"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + } + else if($ort_kurzbz === "buero") { $pruefungstermin->ort_kurzbz = $mitarbeiter->ort_kurzbz; if($pruefungstermin->save(false)) diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php index c969c51aa..837e0c227 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php @@ -321,6 +321,20 @@ $studiensemester->getAll(); + + + + + t('pruefung/ects'); ?>: + + + + + + diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php index 39ec68ad4..91c2ea084 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php @@ -235,12 +235,18 @@ $rechte->getBerechtigungen($uid); t('global/datum'); ?> t('benotungstool/note'); ?> t('global/anmerkung'); ?> + + + t('pruefung/ects'); ?> + + uid); @@ -269,6 +275,8 @@ $rechte->getBerechtigungen($uid); echo ''.$date.''; echo ''; echo ''; + if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true)) + echo ''. $anmeldung->ects .''; echo ''; } ?> diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste_ohne_namen.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste_ohne_namen.php index 207ba4dd7..414ebdf15 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste_ohne_namen.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste_ohne_namen.php @@ -233,6 +233,11 @@ $rechte->getBerechtigungen($uid); t('global/datum'); ?> t('benotungstool/note'); ?> t('global/anmerkung'); ?> + + t('pruefung/ects'); ?> + @@ -265,6 +270,8 @@ $rechte->getBerechtigungen($uid); echo ''.$date.''; echo ''; echo ''; + if (defined('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE') && (CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE === true)) + echo ''. $anmeldung->ects .''; echo ''; } ?> diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php index 22bca21cc..dd38950b1 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php @@ -95,7 +95,7 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung #prfWrapper { position: absolute; height: 70%; - width: 300px; + width: 40%; top: 180px; padding: 1.8em 1.5em 1.8em 1em; /*border-radius: 25px;*/ @@ -117,9 +117,9 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung #anmWrapper { position: absolute; /*top: 45px;*/ - left: 350px; + left: 45%; top: 180px; - width: 500px; + width: 40%; height: 70%; padding: 1.8em 1.5em 1.8em 1em; /*border-radius: 25px;*/ @@ -228,7 +228,6 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung

    t('pruefung/anmeldungenVerwalten'); ?>

    -
    -
    -

    t('global/studiengang'); ?>

    -
    -
    -

    t('global/studiensemester'); ?>

    result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung $studiensemester->getPlusMinus(null, 5); foreach($studiensemester->studiensemester as $sem) { - /*@var $sem studiensemester */ if ($aktuellesSemester == $sem->studiensemester_kurzbz) { echo ''; @@ -273,9 +290,20 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung

    t('pruefung/pruefungPruefungenTitle'); ?>

    -
      - -
    + + + + + + + + + + + + + +
    @@ -311,6 +339,9 @@ if (empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldung
    +
    diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 8cfc36bfb..89b02a8ce 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -263,6 +263,9 @@ define('CIS_SAALPLAN_ALLERAEUME_OPTION', false); //Legt fest ob Bestätigungsmails über eine Anmelung zu einer Prüfung an eine einzelne Person erfolgt oder an den jeweiligen Lektor. (Leerstring für jeweiligen Lektor | uid); define('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG',""); +//Gibt an, ob die Studierenden bei der Anmeldung zu einer Prüfung den Ausmas an ECTS angeben können +define('CIS_PRUEFUNGSANMELDUNG_ECTS_ANGABE', false); + // Username fuer STIP Schnittstelle define('STIP_USER_NAME','stipendienstelle'); // Passwort fuer STIP Schnittstelle diff --git a/include/pruefungCis.class.php b/include/pruefungCis.class.php index ec402ed5d..29b0c425d 100644 --- a/include/pruefungCis.class.php +++ b/include/pruefungCis.class.php @@ -464,6 +464,7 @@ class pruefungCis extends basis_db $obj->anmeldung_von= $row->anmeldung_von; $obj->anmeldung_bis = $row->anmeldung_bis; $obj->ort_kurzbz = $row->ort_kurzbz; + $obj->anderer_raum = $row->anderer_raum; $obj->sammelklausur = $row->sammelklausur; array_push($this->termine, $obj); } @@ -646,6 +647,37 @@ class pruefungCis extends basis_db return false; } + public function getPruefungByStudiensemester($studiensemester_kurzbz) + { + if(empty($studiensemester_kurzbz)) + { + $this->errormsg = "Kein Studiensemester übergeben.
    "; + return false; + } + + $qry = 'SELECT * + FROM campus.tbl_lehrveranstaltung_pruefung + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN campus.tbl_pruefung USING (pruefung_id) + WHERE tbl_pruefung.studiensemester_kurzbz = ' . $this->db_add_param($studiensemester_kurzbz); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new stdClass(); + $obj->lehrveranstaltung_pruefung_id = $row->lehrveranstaltung_pruefung_id; + $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $obj->pruefung_id = $row->pruefung_id; + $obj->storniert = $row->storniert; + $obj->bezeichnung = $row->bezeichnung; + array_push($this->lehrveranstaltungen, $obj); + } + return true; + } + return false; + } + /** * Lädt alle Prüfung-Lehrveranstaltung Kombinationen * @return boolean true, wenn ok; false, im Fehlerfall diff --git a/include/pruefungsanmeldung.class.php b/include/pruefungsanmeldung.class.php index e4fbec506..c23b0212b 100644 --- a/include/pruefungsanmeldung.class.php +++ b/include/pruefungsanmeldung.class.php @@ -39,6 +39,7 @@ class pruefungsanmeldung extends basis_db { public $statusupdatevon; //varchar(32) public $statusupdateamum; //timestamp public $anrechnung_id; //integer + public $ects; //integer public $pruefungstyp_kurzbz; //varchar(32) public $insertamum; // timestamp @@ -94,7 +95,7 @@ class pruefungsanmeldung extends basis_db { if($new) { - $qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id, pruefungstyp_kurzbz) VALUES (' + $qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id, pruefungstyp_kurzbz, ects) VALUES (' . $this->db_add_param($this->uid).', ' . $this->db_add_param($this->pruefungstermin_id).', ' . $this->db_add_param($this->lehrveranstaltung_id).', ' @@ -103,7 +104,8 @@ class pruefungsanmeldung extends basis_db { . $this->db_add_param($this->reihung).', ' . $this->db_add_param($this->kommentar).', ' . $this->db_add_param($this->anrechnung_id).', ' - . $this->db_add_param($this->pruefungstyp_kurzbz).');'; + . $this->db_add_param($this->pruefungstyp_kurzbz).', ' + . $this->db_add_param($this->ects).');'; } else { @@ -116,7 +118,8 @@ class pruefungsanmeldung extends basis_db { . 'reihung='.$this->db_add_param($this->reihung).', ' . 'kommentar='.$this->db_add_param($this->kommentar).', ' . 'anrechnung_id='.$this->db_add_param($this->anrechnung_id).', ' - . 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz) + . 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz).', ' + . 'ects='.$this->db_add_param($this->ects) . ' WHERE pruefungsanmeldung_id='.$this->db_add_param($this->pruefungsanmeldung_id).';'; } @@ -167,6 +170,7 @@ class pruefungsanmeldung extends basis_db { $this->statusupdatevon = $row->statusupdatevon; $this->anrechnung_id = $row->anrechnung_id; $this->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; + $this->ects = $row->ects; $this->insertamum = $row->insertamum; } return true; @@ -221,6 +225,7 @@ class pruefungsanmeldung extends basis_db { $anmeldung->statusupdatevon = $row->statusupdatevon; $anmeldung->anrechnung_id = $row->anrechnung_id; $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; + $anmeldung->ects = $row->ects; array_push($anmeldungen, $anmeldung); } return $anmeldungen; @@ -280,6 +285,7 @@ class pruefungsanmeldung extends basis_db { $anmeldung->statusupdatevon = $row->statusupdatevon; $anmeldung->anrechnung_id = $row->anrechnung_id; $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; + $anmeldung->ects = $row->ects; $anmeldung->datum_anmeldung = $row->datum_anmeldung; array_push($anmeldungen, $anmeldung); } diff --git a/include/pruefungstermin.class.php b/include/pruefungstermin.class.php index 74222cceb..c7eb0b085 100644 --- a/include/pruefungstermin.class.php +++ b/include/pruefungstermin.class.php @@ -37,6 +37,7 @@ class pruefungstermin extends basis_db{ public $anmeldung_von; //date public $anmeldung_bis; //date public $ort_kurzbz; //varchar(16) + public $anderer_raum; //text public $sammelklausur; //boolean /** @@ -93,6 +94,7 @@ class pruefungstermin extends basis_db{ $this->anmeldung_von= $row->anmeldung_von; $this->anmeldung_bis = $row->anmeldung_bis; $this->ort_kurzbz = $row->ort_kurzbz; + $this->anderer_raum = $row->anderer_raum; $this->sammelklausur = $row->sammelklausur; } return true; @@ -179,7 +181,8 @@ class pruefungstermin extends basis_db{ . 'teilnehmer_min='.$this->db_add_param($this->teilnehmer_min).', ' . 'anmeldung_von='.$this->db_add_param($this->anmeldung_von).', ' . 'anmeldung_bis='.$this->db_add_param($this->anmeldung_bis).', ' - . 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).' ' + . 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).', ' + . 'anderer_raum='.$this->db_add_param($this->anderer_raum).' ' . 'WHERE pruefungstermin_id='.$this->db_add_param($this->pruefungstermin_id).';'; } @@ -228,6 +231,7 @@ class pruefungstermin extends basis_db{ $obj->anmeldung_von= $row->anmeldung_von; $obj->anmeldung_bis = $row->anmeldung_bis; $obj->ort_kurzbz = $row->ort_kurzbz; + $obj->anderer_raum = $row->anderer_raum; $obj->sammelklausur = $row->sammelklausur; array_push($this->result, $obj); } diff --git a/locale/de-AT/pruefung.php b/locale/de-AT/pruefung.php index 93b7039e0..9e75fa89e 100644 --- a/locale/de-AT/pruefung.php +++ b/locale/de-AT/pruefung.php @@ -57,6 +57,7 @@ $this->phrasen['pruefung/listeOhneNamenDrucken'] = 'Liste ohne Namen drucken'; $this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: '; $this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort '; $this->phrasen['pruefung/imBuero'] = ' im Büro'; +$this->phrasen['pruefung/andererRaum'] = 'anderer Raum'; $this->phrasen['pruefung/raum'] = ' Raum'; $this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern'; $this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.'; @@ -95,6 +96,7 @@ $this->phrasen['pruefung/lvVonStudiengang'] = 'Lehrveranstaltungen von Studienga $this->phrasen['pruefung/lvAlle'] = 'Alle Lehrveranstaltungen'; $this->phrasen['pruefung/anmeldungSpeichern'] = 'Anmeldung speichern'; $this->phrasen['pruefung/studienverpflichtung'] = 'Studienverpflichtung'; +$this->phrasen['pruefung/ects'] = 'ECTS'; // liste $this->phrasen['pruefung/anmeldungsliste'] = 'Anmeldungsliste'; diff --git a/locale/en-US/pruefung.php b/locale/en-US/pruefung.php index cd5175c13..7b0cec97e 100644 --- a/locale/en-US/pruefung.php +++ b/locale/en-US/pruefung.php @@ -57,6 +57,7 @@ $this->phrasen['pruefung/listeOhneNamenDrucken'] = 'Liste ohne Namen drucken'; $this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: '; $this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort '; $this->phrasen['pruefung/imBuero'] = ' im Büro'; +$this->phrasen['pruefung/andererRaum'] = 'other Room'; $this->phrasen['pruefung/raum'] = ' Raum'; $this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern'; $this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.'; diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index cf2f40ca8..3a743f065 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -77,6 +77,8 @@ require_once('dbupdate_3.4/55614_perm_verwaltetoe.php'); require_once('dbupdate_3.4/25999_C4_dashboard.php'); require_once('dbupdate_3.4/61730_Dashboard_Anpassungen.php'); require_once('dbupdate_3.4/40128_search.php'); +require_once('dbupdate_3.4/60882_lehrfaecherverteilung_favorites.php'); +require_once('dbupdate_3.4/47972_pruefungsverwaltung_ects_angabe.php'); // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; @@ -159,8 +161,8 @@ $tabellen=array( "campus.tbl_paabgabe" => array("paabgabe_id","projektarbeit_id","paabgabetyp_kurzbz","fixtermin","datum","kurzbz","abgabedatum", "insertvon","insertamum","updatevon","updateamum"), "campus.tbl_pruefungsfenster" => array("pruefungsfenster_id","studiensemester_kurzbz","oe_kurzbz","start","ende"), "campus.tbl_pruefung" => array("pruefung_id","mitarbeiter_uid","studiensemester_kurzbz","pruefungsfenster_id","pruefungstyp_kurzbz","titel","beschreibung","methode","einzeln","storniert","insertvon","insertamum","updatevon","updateamum","pruefungsintervall"), - "campus.tbl_pruefungstermin" => array("pruefungstermin_id","pruefung_id","von","bis","teilnehmer_max","teilnehmer_min","anmeldung_von","anmeldung_bis","ort_kurzbz","sammelklausur"), - "campus.tbl_pruefungsanmeldung" => array("pruefungsanmeldung_id","uid","pruefungstermin_id","lehrveranstaltung_id","status_kurzbz","wuensche","reihung","kommentar","statusupdatevon","statusupdateamum","anrechnung_id","pruefungstyp_kurzbz","insertamum"), + "campus.tbl_pruefungstermin" => array("pruefungstermin_id","pruefung_id","von","bis","teilnehmer_max","teilnehmer_min","anmeldung_von","anmeldung_bis","ort_kurzbz","sammelklausur", "anderer_raum"), + "campus.tbl_pruefungsanmeldung" => array("pruefungsanmeldung_id","uid","pruefungstermin_id","lehrveranstaltung_id","status_kurzbz","wuensche","reihung","kommentar","statusupdatevon","statusupdateamum","anrechnung_id","pruefungstyp_kurzbz","insertamum", "ects"), "campus.tbl_pruefungsstatus" => array("status_kurzbz","bezeichnung"), "campus.tbl_reservierung" => array("reservierung_id","ort_kurzbz","studiengang_kz","uid","stunde","datum","titel","beschreibung","semester","verband","gruppe","gruppe_kurzbz","veranstaltung_id","insertamum","insertvon"), "campus.tbl_studierendenantrag" => array("studierendenantrag_id","prestudent_id","studiensemester_kurzbz","datum","typ","insertamum","insertvon","datum_wiedereinstieg","grund","dms_id"), diff --git a/system/dbupdate_3.4/47972_pruefungsverwaltung_ects_angabe.php b/system/dbupdate_3.4/47972_pruefungsverwaltung_ects_angabe.php new file mode 100644 index 000000000..7b961fa3d --- /dev/null +++ b/system/dbupdate_3.4/47972_pruefungsverwaltung_ects_angabe.php @@ -0,0 +1,22 @@ +db_query("SELECT ects FROM campus.tbl_pruefungsanmeldung LIMIT 1")) +{ + $qry = 'ALTER TABLE campus.tbl_pruefungsanmeldung ADD COLUMN ects numeric(5,2);'; + + if(!$db->db_query($qry)) + echo ' campus.tbl_pruefungsanmeldung '.$db->db_last_error().'
    '; + else + echo '
    campus.tbl_pruefungsanmeldung: Neue Spalte ects hinzugefügt'; +} + +if(!@$db->db_query("SELECT anderer_raum FROM campus.tbl_pruefungstermin LIMIT 1")) +{ + $qry = 'ALTER TABLE campus.tbl_pruefungstermin ADD COLUMN anderer_raum text NULL;'; + + if(!$db->db_query($qry)) + echo ' campus.tbl_pruefungstermin '.$db->db_last_error().'
    '; + else + echo '
    campus.tbl_pruefungstermin: Neue Spalte anderer_raum hinzugefügt'; +} diff --git a/vilesci/lehre/lehrveranstaltung_kompatibel_vergleichen.php b/vilesci/lehre/lehrveranstaltung_kompatibel_vergleichen.php new file mode 100644 index 000000000..94e1af155 --- /dev/null +++ b/vilesci/lehre/lehrveranstaltung_kompatibel_vergleichen.php @@ -0,0 +1,682 @@ +load($_POST['lv_id']); + + $kompatibleLvs = $lv->loadLVkompatibel($_POST['lv_id']); + if (is_array($kompatibleLvs) && count($kompatibleLvs) > 0) + { + $result = array(); + foreach($kompatibleLvs as $lvId) + { + $lv->load($lvId); + $studiengang = new studiengang(); + $studiengang->load($lv->studiengang_kz); + $oe = new organisationseinheit(); + $oe->load($lv->oe_kurzbz); + + + $result[] = array( + "lehrveranstaltung_id" => $lv->lehrveranstaltung_id, + "kurzbz" => $lv->kurzbz, + "bezeichnung" => $lv->bezeichnung, + "ects" => $lv->ects, + "studiengang_kuerzel" => $studiengang->kuerzel, + "oe_bezeichnung" => $oe->bezeichnung + ); + } + echo json_encode(["result" => $result]); + exit(); + } + echo json_encode(["result" => array()]); + exit(); + } +} + +if (isset($_REQUEST['autocomplete']) && ($_REQUEST['autocomplete'] === 'From' || $_REQUEST['autocomplete'] === 'To')) +{ + $search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : '')); + if (is_null($search) || $search == '') + { + exit(); + } + + $qry = "SELECT lehre.tbl_lehrveranstaltung.* + FROM lehre.tbl_lehrveranstaltung + WHERE + lower(bezeichnung) like '%" . $db->db_escape(mb_strtolower($search)) . "%' OR + lehrveranstaltung_id::text like '%" . $db->db_escape(mb_strtolower($search)) . "%' OR + studiengang_kz::text like '%" . $db->db_escape(mb_strtolower($search)) . "%' + ORDER BY lehrveranstaltung_id DESC + LIMIT 10 + "; + + if ($result = $db->db_query($qry)) + { + $result_obj = array(); + while ($row = $db->db_fetch_object($result)) + { + $item['lehrveranstaltung_id'] = html_entity_decode($row->lehrveranstaltung_id); + $item['bezeichnung'] = html_entity_decode($row->bezeichnung); + $item['oe_kurzbz'] = html_entity_decode($row->oe_kurzbz); + $result_obj[] = $item; + } + echo json_encode($result_obj); + } + exit(); +} +?> + + + Lehrveranstaltung Verwaltung + + + + + + + + + + + + + + +getBerechtigungen($user); + +if(!$rechte->isBerechtigt('lehre/lehrveranstaltung', 'suid')) + die('Sie haben keine Berechtigung fuer diese Seite'); + +$studiengang = new studiengang(); +$studiengang->getAll("kurzbzlang"); + +$organisationseinheit = new organisationseinheit(); +$organisationseinheit->getAll(true, true); + +echo "
    +
    +
    + + + + + + + + + "; + echo " + + + + + + + + + + +
    Suche: + +
    Studiengang: + + OE: +
    Semester: + +
    Lehrveranstaltungen: + +
    +
    + Kompatible Lehrveranstaltungen - + + + + + + + + + + + + + + + + +
    IDKurzbezeichnungBezeichnungECTSStudiengangOrganisationseiheitÜbernehmen?Löschen?
    + + + +
    +
    +
    + + + + + + + + + + "; + echo " + + + + + + + + + + +
    Suche: + +
    Studiengang: + + OE: +
    Semester: + +
    Lehrveranstaltungen: + +
    +
    + Kompatible Lehrveranstaltungen - + + + + + + + + + + + + + + +
    IDKurzbezeichnungBezeichnungECTSStudiengangOrganisationseiheitLöschen?
    +
    +"; + + +echo " + "; + +?> diff --git a/vilesci/lehre/studienordnung.js b/vilesci/lehre/studienordnung.js index 54fa9e81b..bf7ff34e7 100644 --- a/vilesci/lehre/studienordnung.js +++ b/vilesci/lehre/studienordnung.js @@ -695,15 +695,16 @@ function loadLVKompatibilitaet(lvid) }).success(function(data) { var html=''; + html = html+'kompatible Lehrveranstaltungen vergleichen

    '; + html = html+'kompatible Lehrveranstaltungen hinzufügen
    '; for(i in data.result) { if(data.result[i]) { lvdata = data.result[i]; if(!(lvdata.kurzbz===null && lvdata.bezeichnung===null && lvdata.studiengang_kz===null && lvdata.semester===null)) - html = html+'
    '+lvdata.kurzbz+' - '+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')'; + html = html+'
    '+lvdata.kurzbz+' - '+lvdata.bezeichnung+' (Studiengang '+lvdata.studiengang_kz+', Semester '+lvdata.semester+')
    '; } - html = html+'

    kompatible Lehrveranstaltungen hinzufügen'; } $("#tab-kompatibel").html(html); From e79b7a525f7864d6bd2724e0f1f64e494eb6a3ba Mon Sep 17 00:00:00 2001 From: ma0048 Date: Tue, 26 Aug 2025 11:41:10 +0200 Subject: [PATCH 02/12] pruefung bestaetigen bestaetigungsmail schicken ermoeglicht --- cis/private/lehre/pruefung/pruefung.js.php | 58 ++++++++++++--- .../pruefung/pruefungsanmeldung.json.php | 74 ++++++++++++++++++- .../pruefungsanmeldungen_verwalten.php | 22 +++--- locale/de-AT/pruefung.php | 10 +++ locale/en-US/pruefung.php | 9 +++ 5 files changed, 145 insertions(+), 28 deletions(-) diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php index f2fc2dc7e..73b808d14 100644 --- a/cis/private/lehre/pruefung/pruefung.js.php +++ b/cis/private/lehre/pruefung/pruefung.js.php @@ -863,7 +863,8 @@ function writeAnmeldungen(data, showMessage = true) }); liste += ""; $("#anmeldung_hinzufuegen").html("' onclick='saveAnmeldung(\""+lehrveranstaltung_id+"\",\""+terminId+"\");'/>"); - $("#reihungSpeichernButton").html("' onclick='saveReihung(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>' onclick='alleBestaetigen(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"); + $("#reihungSpeichernButton").html("