diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 8517d7f9d..0390613f7 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -309,4 +309,50 @@ class Lehrveranstaltung_model extends DB_Model return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id)); } + + /** + * Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus + * Diese funktion ist für autocomplete gedacht + * + * @param string $filter Suchfilter + * @return \stdClass A return object + */ + public function loadTemplates($filter) + { + $filter = strtolower($filter); + $qry = "SELECT + tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz + FROM + lehre.tbl_lehrveranstaltung + WHERE + tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND ( + CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR + LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR + LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%' + ) + "; + return $this->execQuery($qry); + } + + /** + * Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück + * Diese funktion ist für autocomplete gedacht + * + * @param string $name + * @return \stdClass A return object + */ + public function loadTemplateByName($name) + { + $qry = "SELECT + tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label + FROM + lehre.tbl_lehrveranstaltung + WHERE + tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND ( + CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "' + ) + "; + return $this->execQuery($qry); + } + } diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php index 8bfa169e1..75d60a179 100644 --- a/application/views/system/infocenter/infocenterFreigegebenData.php +++ b/application/views/system/infocenter/infocenterFreigegebenData.php @@ -199,14 +199,15 @@ $query = ' LIMIT 1 ) AS "ReihungstestApplied", ( - SELECT rtp.datum + SELECT CONCAT(rtp.datum, rtp.uhrzeit) FROM public.tbl_prestudentstatus pss JOIN public.tbl_prestudent ps USING(prestudent_id) LEFT JOIN ( SELECT rtp.person_id, rt.studiensemester_kurzbz, rtp.teilgenommen, - rt.datum + rt.datum, + rt.uhrzeit FROM public.tbl_rt_person rtp JOIN tbl_reihungstest rt ON(rtp.rt_id = rt.reihungstest_id) WHERE rt.stufe = 1 @@ -409,13 +410,13 @@ $query = ' $datasetRaw->{'ReihungstestApplied'} = 'Nein'; } - if ($datasetRaw->{'ReihungstestDate'} == null) + if ($datasetRaw->{'ReihungstestDate'} == '') { $datasetRaw->{'ReihungstestDate'} = '-'; } else { - $datasetRaw->{'ReihungstestDate'} = date_format(date_create($datasetRaw->{'ReihungstestDate'}),'Y-m-d'); + $datasetRaw->{'ReihungstestDate'} = date_format(date_create($datasetRaw->{'ReihungstestDate'}),'Y-m-d H:i'); } if ($datasetRaw->{'ZGVNation'} == null) diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 6cff4c75f..16c7ba2fe 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -69,6 +69,7 @@ class lehrveranstaltung extends basis_db public $semester_alternativ; // smallint public $farbe; public $lehrauftrag=true; + public $lehrveranstaltung_template_id; // integer public $studienplan_lehrveranstaltung_id; @@ -158,6 +159,7 @@ class lehrveranstaltung extends basis_db $this->lvnr = $row->lvnr; $this->semester_alternativ = $row->semester_alternativ; $this->farbe = $row->farbe; + $this->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $this->sws = $row->sws; $this->lvs = $row->lvs; @@ -237,6 +239,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); @@ -387,6 +390,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -516,6 +520,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -598,6 +603,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -729,6 +735,25 @@ class lehrveranstaltung extends basis_db $this->errormsg = 'Semesterwochen muss ein eine gueltige ganze Zahl sein'; return false; } + if ($this->lehrveranstaltung_template_id != '') + { + if (!isint($this->lehrveranstaltung_template_id)) { + $this->errormsg = 'Lehrveranstaltung Template Id muss eine gültige ganze Zahl sein'; + return false; + } elseif($this->lehrtyp_kurzbz == 'tpl') { + $this->errormsg = 'Lehrveranstaltung Template Id darf bei Lehrveranstaltungen des Typs "Template" nicht gesetzt werden'; + return false; + } else { + $template = new lehrveranstaltung($this->lehrveranstaltung_template_id); + if ($template->errormsg) { + $this->errormsg = 'Lehrveranstaltung Template: ' . $template->errormsg; + return false; + } elseif ($template->lehrtyp_kurzbz != 'tpl') { + $this->errormsg = 'Lehrveranstaltung Template: Als Lehrtyp muss Template ausgewählt sein'; + return false; + } + } + } $this->errormsg = ''; return true; } @@ -753,7 +778,7 @@ class lehrveranstaltung extends basis_db semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, insertamum, insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort, zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz, - raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe,sws,lvs,alvs,lvps,las,benotung,lvinfo, + raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe, lehrveranstaltung_template_id,sws,lvs,alvs,lvps,las,benotung,lvinfo, lehrauftrag, lehrmodus_kurzbz) VALUES ('. $this->db_add_param($this->studiengang_kz). ', '. $this->db_add_param($this->bezeichnung). ', '. @@ -790,6 +815,7 @@ class lehrveranstaltung extends basis_db $this->db_add_param($this->lvnr).','. $this->db_add_param($this->semester_alternativ).','. $this->db_add_param($this->farbe).','. + $this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).','. $this->db_add_param($this->sws).','. $this->db_add_param($this->lvs).','. $this->db_add_param($this->alvs).','. @@ -846,6 +872,7 @@ class lehrveranstaltung extends basis_db 'lvnr = ' . $this->db_add_param($this->lvnr) . ', ' . 'semester_alternativ = '.$this->db_add_param($this->semester_alternativ).', '. 'farbe = '.$this->db_add_param($this->farbe).', '. + 'lehrveranstaltung_template_id = '.$this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).', '. 'sws = '.$this->db_add_param($this->sws).', '. 'lvs = '.$this->db_add_param($this->lvs).', '. 'alvs = '.$this->db_add_param($this->alvs).', '. @@ -960,6 +987,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -1054,6 +1082,7 @@ class lehrveranstaltung extends basis_db $l->lvnr = $row->lvnr; $l->semester_alternativ = $row->semester_alternativ; $l->farbe = $row->farbe; + $l->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $l->benotung = $this->db_parse_bool($row->benotung); $l->lvinfo = $this->db_parse_bool($row->lvinfo); $l->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -1137,6 +1166,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -1236,6 +1266,7 @@ class lehrveranstaltung extends basis_db $obj->lvnr = $row->lvnr; $obj->semester_alternativ = $row->semester_alternativ; $obj->farbe = $row->farbe; + $obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $obj->stpllv_sort = $row->stpllv_sort; $obj->benotung = $this->db_parse_bool($row->benotung); $obj->lvinfo = $this->db_parse_bool($row->lvinfo); @@ -1309,7 +1340,7 @@ class lehrveranstaltung extends basis_db return $childs; } - /** + /** * Generiert die Subtrees des Lehrveranstaltungstrees */ public function hasChildren($studienplan_lehrveranstaltung_id) @@ -1360,6 +1391,7 @@ class lehrveranstaltung extends basis_db $obj->stpllv_koordinator = $lv->stpllv_koordinator; $obj->oe_kurzbz = $lv->oe_kurzbz; $obj->lvnr = $lv->lvnr; + $obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id; $obj->benotung = $this->db_parse_bool($lv->benotung); $obj->lvinfo =$this->db_parse_bool( $lv->lvinfo); $obj->zeugnis = $this->db_parse_bool($lv->zeugnis); @@ -1385,6 +1417,7 @@ class lehrveranstaltung extends basis_db $obj->stpllv_koordinator = $this->stpllv_koordinator; $obj->oe_kurzbz = $this->oe_kurzbz; $obj->lvnr = $this->lvnr; + $obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id; $obj->benotung = $this->db_parse_bool($this->benotung); $obj->lvinfo =$this->db_parse_bool( $this->lvinfo); $obj->zeugnis = $this->db_parse_bool($this->zeugnis); @@ -1424,6 +1457,7 @@ class lehrveranstaltung extends basis_db $obj->stpllv_pflicht = $lv->stpllv_pflicht; $obj->stpllv_koordinator = $lv->stpllv_koordinator; $obj->lvnr = $lv->lvnr; + $obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id; $obj->stpllv_sort = $lv->stpllv_sort; $obj->oe_kurzbz = $lv->oe_kurzbz; $obj->sws = $lv->sws; @@ -1467,6 +1501,7 @@ class lehrveranstaltung extends basis_db $obj->stpllv_pflicht = $this->stpllv_pflicht; $obj->stpllv_koordinator = $this->stpllv_koordinator; $obj->lvnr = $this->lvnr; + $obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id; $obj->benotung = $this->db_parse_bool($this->benotung); $obj->lvinfo =$this->db_parse_bool( $this->lvinfo); $obj->zeugnis = $this->db_parse_bool($this->zeugnis); @@ -1574,6 +1609,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz; $lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -1660,6 +1696,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz; $lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -1750,7 +1787,7 @@ class lehrveranstaltung extends basis_db * @param $aktiv optional, true wenn nur aktive LVs * @param $lehrtyp optional, gewünschter Lehrtyp */ - public function load_lva_oe($oe_kurzbz, $aktiv=null, $lehrtyp=null, $sort=null, $semester=null) + public function load_lva_oe($oe_kurzbz, $aktiv=null, $lehrtyp=null, $sort=null, $semester=null, $lehrmodus=null) { if (is_null($oe_kurzbz)) @@ -1831,6 +1868,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->oe_kurzbz = $row->oe_kurzbz; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); @@ -1961,6 +1999,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -2088,6 +2127,7 @@ class lehrveranstaltung extends basis_db $lv_obj->lvnr = $row->lvnr; $lv_obj->semester_alternativ = $row->semester_alternativ; $lv_obj->farbe = $row->farbe; + $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -2276,7 +2316,7 @@ class lehrveranstaltung extends basis_db } /** - * Lädt alle Lehrveranstaltungen eine Studienplans + * Lädt alle Lehrveranstaltungen eines Studienplans * Optionale Filterung nach Lehrtyp und Semester * @param type $studienplan_id * @param type $lehrtyp_kurzbz @@ -2358,6 +2398,7 @@ class lehrveranstaltung extends basis_db $obj->lvnr = $row->lvnr; $obj->semester_alternativ = $row->semester_alternativ; $obj->farbe = $row->farbe; + $obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id; $obj->benotung = $this->db_parse_bool($row->benotung); $obj->lvinfo = $this->db_parse_bool($row->lvinfo); $obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); @@ -2665,5 +2706,75 @@ class lehrveranstaltung extends basis_db return false; } } + + /** + * Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus + * Diese funktion ist für autocomplete gedacht + * + * @param string $filter Suchfilter + * @return array + */ + public function loadTemplates($filter) + { + $filter = strtolower($filter); + $qry = "SELECT + tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz + FROM + lehre.tbl_lehrveranstaltung + WHERE + tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND ( + CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR + LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR + LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%' + ) + "; + $lehrveranstaltungen = []; + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $lehrveranstaltungen[] = $row; + } + return $lehrveranstaltungen; + } + else + { + $this->errormsg='Fehler bei Datenbankabfrage'; + return []; + } + } + + /** + * Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück + * Diese funktion ist für autocomplete gedacht + * + * @param string $name + * @return stdClass | null + */ + public function loadTemplateByName($name) + { + $qry = "SELECT + tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label + FROM + lehre.tbl_lehrveranstaltung + WHERE + tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND ( + CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "' + ) + "; + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + return $row; + } + } + else + { + $this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error(); + } + return null; + } + } ?> diff --git a/include/studienplan.class.php b/include/studienplan.class.php index 2b751b2ed..7e9963c0a 100644 --- a/include/studienplan.class.php +++ b/include/studienplan.class.php @@ -27,6 +27,8 @@ */ require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/lehrveranstaltung.class.php'); +require_once(dirname(__FILE__).'/studienordnung.class.php'); class studienplan extends basis_db { @@ -526,6 +528,25 @@ class studienplan extends basis_db public function saveStudienplanLehrveranstaltung() { + $lv = new lehrveranstaltung(); + $lv->load($this->lehrveranstaltung_id); + if ($lv->lehrtyp_kurzbz == 'tpl') { + $lv->lehrtyp_kurzbz = 'lv'; + $sp = new studienplan(); + $sp->loadStudienplan($this->studienplan_id); + $so = new studienordnung(); + $so->loadStudienordnung($sp->studienordnung_id); + $lv->studiengang_kz = $so->studiengang_kz; + $lv->semester = $this->semester; + $lv->lehrveranstaltung_template_id = $this->lehrveranstaltung_id; + if (!$lv->save(true)) { + $this->errormsg = "Fehler beim kopieren des Templates: " . $lv->errormsg; + return false; + } + + $this->lehrveranstaltung_id = $lv->lehrveranstaltung_id; + } + if ($this->new) { //Neuen Datensatz einfuegen diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index df42e3a23..7965a0518 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -6176,6 +6176,60 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } } +// NOTE(chris): Add "Template" to "Lehrtyp" +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_lehrtyp WHERE bezeichnung = 'Template';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO lehre.tbl_lehrtyp(lehrtyp_kurzbz, bezeichnung) VALUES('tpl', 'Template');"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_lehrtyp '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_lehrtyp: Added "Template"'; + } +} + +// NOTE(chris): Add Column "lehrveranstaltung_template_id" in tbl_lehrveranstaltung +if(!$result = @$db->db_query("SELECT lehrveranstaltung_template_id FROM lehre.tbl_lehrveranstaltung LIMIT 1")) +{ + $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lehrveranstaltung_template_id integer; + ALTER TABLE lehre.tbl_lehrveranstaltung ADD CONSTRAINT fk_lehrveranstaltung_template FOREIGN KEY (lehrveranstaltung_template_id) REFERENCES lehre.tbl_lehrveranstaltung (lehrveranstaltung_id) ON DELETE RESTRICT ON UPDATE CASCADE;"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_lehrveranstaltung: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_lehrveranstaltung: Spalte lehrveranstaltung_template_id hinzugefuegt'; +} + +// NOTE(chris): Add Webservice Rights for lehrveranstaltung::loadTemplates +if($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicerecht WHERE berechtigung_kurzbz='soap/studienordnung' AND methode = 'loadTemplates' AND klasse = 'lehrveranstaltung';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, insertamum, insertvon, klasse) VALUES('soap/studienordnung', 'loadTemplates', now(), 'checksystem', 'lehrveranstaltung');"; + + if(!$db->db_query($qry)) + echo 'system.tbl_webservicerecht '.$db->db_last_error().'
'; + else + echo '
system.tbl_webservicerecht: soap/studienordnung/loadTemplates->lehrveranstaltung hinzugefügt'; + } +} + +// NOTE(chris): Add Webservice Rights for lehrveranstaltung::loadTemplateByName +if($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicerecht WHERE berechtigung_kurzbz='soap/studienordnung' AND methode = 'loadTemplateByName' AND klasse = 'lehrveranstaltung';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, insertamum, insertvon, klasse) VALUES('soap/studienordnung', 'loadTemplateByName', now(), 'checksystem', 'lehrveranstaltung');"; + + if(!$db->db_query($qry)) + echo 'system.tbl_webservicerecht '.$db->db_last_error().'
'; + else + echo '
system.tbl_webservicerecht: soap/studienordnung/loadTemplateByName->lehrveranstaltung hinzugefügt'; + } +} + // Add permission for avoiding checks when saving prestudentstatus if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/keine_studstatuspruefung';")) { @@ -6314,7 +6368,7 @@ $tabellen=array( "lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"), "lehre.tbl_lehrmodus" => array("lehrmodus_kurzbz","bezeichnung_mehrsprachig","aktiv"), "lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"), - "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz"), + "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz","lehrveranstaltung_template_id"), "lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"), "lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"), "lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"), diff --git a/vilesci/lehre/lehrveranstaltung.php b/vilesci/lehre/lehrveranstaltung.php index e8df6de86..757861d96 100644 --- a/vilesci/lehre/lehrveranstaltung.php +++ b/vilesci/lehre/lehrveranstaltung.php @@ -727,9 +727,9 @@ echo ' 16: {sorter: false, filter: false}, 19: {sorter: false, filter: false}, 20: {sorter: false, filter: false}, - 21: {sorter: false, filter: false}, 22: {sorter: false, filter: false}, - 23: {sorter: false, filter: false}}, + 23: {sorter: false, filter: false}, + 24: {sorter: false, filter: false}}, widgetOptions : {filter_functions : { // Add select menu to this column 12 : { @@ -1083,7 +1083,8 @@ if ($result_lv!=0) Zeugnis BA/DA Koordinator - LV-Info\n"; + LV-Info + Template\n"; if($write_admin) { @@ -1295,6 +1296,10 @@ if ($result_lv!=0) else echo 'vorhanden'; echo ''; + //Template + echo ""; + echo $db->convert_html_chars($row->lehrveranstaltung_template_id); + echo ''; if($write_admin) { echo ' diff --git a/vilesci/lehre/lehrveranstaltung_details.php b/vilesci/lehre/lehrveranstaltung_details.php index 23ca4ff98..2b3b6a04c 100644 --- a/vilesci/lehre/lehrveranstaltung_details.php +++ b/vilesci/lehre/lehrveranstaltung_details.php @@ -121,6 +121,7 @@ $lv->benotung = isset($_POST['benotung']); $lv->lvinfo = isset($_POST['lvinfo']); $lv->lehrauftrag = isset($_POST['lehrauftrag']); + $lv->lehrveranstaltung_template_id = $lv->lehrtyp_kurzbz == 'tpl' ? '' : $_POST['lehrveranstaltung_template_id']; if(!$lv->save()) $errorstr = "Fehler beim Speichern der Daten: $lv->errormsg"; @@ -436,6 +437,13 @@ Lehrauftrag lehrauftrag?'checked':'').'> + + Template + + + + + @@ -527,6 +535,7 @@ Lehrveranstaltung - Details + @@ -665,6 +674,91 @@ { $(this).ColorPickerSetColor(this.value); }); + + $('input[name="lehrveranstaltung_template_id"]').autocomplete({ + minLength: 2, + source: function(request, response) { + $.ajax({ + dataType: "json", + url: "../../soap/fhcomplete.php", + data: { + typ: "json", + class: "lehrveranstaltung", + method: "loadTemplates", + parameter_0: request.term + } + }).then(data => { + for (var k in data.return) { + data.return[k].value = data.return[k].lehrveranstaltung_id; + data.return[k].name = data.return[k].bezeichnung + " [" + data.return[k].kurzbz + "]"; + data.return[k].label = data.return[k].name + " (" + data.return[k].lehrveranstaltung_id + ")"; + } + response(data.return); + }); + }, + close: function(e, ui) { + $(this).trigger('check.ac-template'); + }, + focus: function(e, ui) { + $(this).removeClass('input_ok input_error').val(ui.item.value).parent().parent().find('.text-template_name').text(ui.item.name); + return false; + }, + select: function(e, ui) { + $(this).addClass('input_ok').val(ui.item.value).parent().parent().find('.text-template_name').text(ui.item.name); + return false; + } + }).focus(function(e) { + $(this).removeClass('input_ok input_error'); + }).blur(function(e) { + $(this).trigger('check.ac-template'); + }).on('check.ac-template', function(e) { + var self = $(this), + val = self.val(); + if (!val) { + self.removeClass('input_ok input_error').parent().parent().find('.text-template_name').text(''); + } else { + $.ajax({ + dataType: "json", + url: "../../soap/fhcomplete.php", + data: { + typ: "json", + class: "lehrveranstaltung", + method: "loadTemplates", + parameter_0: val + }, + success: function(data) { + if (self.val() == val) { + var label = '', + state = '', + item = null; + + for (var k in data.return) { + if (data.return[k].lehrveranstaltung_id == val) { + item = data.return[k]; + break; + } + } + + if (item) { + state = 'input_ok'; + label = item.bezeichnung + " [" + item.kurzbz + "]"; + } else if (val) { + state = 'input_error'; + } + self.removeClass('input_ok input_error').addClass(state).parent().parent().find('.text-template_name').text(label); + } + } + }); + } + }).trigger('check.ac-template'); + + $('select[name="lehrtyp_kurzbz"]').change(function(e) { + if ($(this).val() == 'tpl') { + $('#lehrveranstaltung_template_id').hide(); + } else { + $('#lehrveranstaltung_template_id').show(); + } + }).change(); });