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/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 6cff4c75f..342e08487 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,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/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 9e73828d0..d9ce84926 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -6141,6 +6141,61 @@ 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'; + } +} + + // *** 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..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(); });