From d5d6432f149a0be581a0d1915fd234fca9479466 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Wed, 23 Mar 2022 15:54:44 +0100 Subject: [PATCH 1/2] modified model added db entry for lehrtyp added db col for template modified vilesci and added webservicerights for autocomplete --- .../education/Lehrveranstaltung_model.php | 45 +++++++ include/lehrveranstaltung.class.php | 116 +++++++++++++++++- system/dbupdate_3.3.php | 55 +++++++++ vilesci/lehre/lehrveranstaltung.php | 11 +- vilesci/lehre/lehrveranstaltung_details.php | 114 +++++++++++++++++ 5 files changed, 335 insertions(+), 6 deletions(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 8517d7f9d..5819af0e5 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -309,4 +309,49 @@ 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) + { + $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) LIKE '%".$this->db_escape($filter)."%' OR + tbl_lehrveranstaltung.bezeichnung LIKE '%".$this->db_escape($filter). "%' OR + 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/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 6cff4c75f..c9b83ae7b 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); @@ -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,74 @@ 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) + { + $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) LIKE '%".$this->db_escape($filter)."%' OR + tbl_lehrveranstaltung.bezeichnung LIKE '%".$this->db_escape($filter). "%' OR + 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/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index c329f5ece..da66e827d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5965,6 +5965,61 @@ if(!$result = @$db->db_query("SELECT behebung_parameter FROM system.tbl_issue LI echo '
Added column behebung_parameter to table system.tbl_issue'; } +// 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'; + } +} + + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; 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..b45ae20da 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,14 @@ Lehrauftrag lehrauftrag?'checked':'').'> + + + + + + Template + + @@ -527,6 +536,7 @@ Lehrveranstaltung - Details + @@ -665,6 +675,110 @@ { $(this).ColorPickerSetColor(this.value); }); + + $('input[name="lehrveranstaltung_template_id"]').each(function() { + var input = $(this), + selItem = null, + lastContent = [], + dname = ""; + function searchIdInLastContent(value) { + for (var i=0; i').attr({ + type: "text", + value: dname + }).blur(function(e) { + var self = $(this), + val = self.val(); + if (!val) { + dname = ""; + input.val(""); + return; + } + if (val == dname) return; + searchIdInLastContent(val); + $.ajax({ + dataType: "json", + url: "../../soap/fhcomplete.php", + data: { + typ: "json", + class: "lehrveranstaltung", + method: "loadTemplateByName", + parameter_0: val + } + }).then(data => { + if (!self.is(':focus') && val === self.val()) { + if (data.return && data.return.label && data.return.id) { + dname = data.return.label; + input.val(data.return.id); + } + self.val(dname); + } + }); + + }).blur().insertAfter(input.attr('type', 'hidden')).autocomplete({ + source: function(request, response) { + $.ajax({ + dataType: "json", + url: "../../soap/fhcomplete.php", + data: { + typ: "json", + class: "lehrveranstaltung", + method: "loadTemplates", + parameter_0: request.term + } + }).then(data => { + response(data.return); + }); + }, + response: function(e, ui) { + lastContent = ui.content; + }, + select: function(e, ui) { + lastContent = [ui.item]; + }, + close: function(e, ui) { + searchIdInLastContent($(this).val()); + } + }); + } + if (input.val()) { + $.ajax({ + dataType: "json", + url: "../../soap/fhcomplete.php", + data: { + typ: "json", + class: "lehrveranstaltung", + method: "load", + parameter_0: input.val() + } + }).then(data => { + if (data.error == "false") { + var tpl = data.result[0]; + dname = tpl.bezeichnung + " [" + tpl.kurzbz + "]"; + initAutocomplete(); + } + }); + } else { + initAutocomplete(); + } + }); + + $('select[name="lehrtyp_kurzbz"]').change(function(e) { + if ($(this).val() == 'tpl') { + $('#lehrveranstaltung_template_id').hide(); + } else { + $('#lehrveranstaltung_template_id').show(); + } + }).change(); });