From 7926a2b201665c19ae89516c1ba8d3a5b6f114dd Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 6 Aug 2026 13:26:33 +0200 Subject: [PATCH 1/8] add Tile PrestudentID to FHC Header --- .../js/components/DetailHeader/DetailHeader.js | 17 +++++++++++++++++ .../Stv/Studentenverwaltung/Details.js | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/public/js/components/DetailHeader/DetailHeader.js b/public/js/components/DetailHeader/DetailHeader.js index 2a5987a9b..595586a39 100644 --- a/public/js/components/DetailHeader/DetailHeader.js +++ b/public/js/components/DetailHeader/DetailHeader.js @@ -82,6 +82,9 @@ export default { hasTileGammaSlot() { return !!this.$slots.titleGammaTile }, + hasTileDeltaSlot() { + return !!this.$slots.titleDeltaTile + }, hasTileUIDSlot() { return !!this.$slots.uid }, @@ -490,6 +493,13 @@ export default {
+
+

+
+ + +
+

@@ -610,6 +620,13 @@ export default {
+
+

+
+ + +
+

diff --git a/public/js/components/Stv/Studentenverwaltung/Details.js b/public/js/components/Stv/Studentenverwaltung/Details.js index 799030730..119461b88 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details.js @@ -63,6 +63,10 @@ export default { let tile = this.students[0].matrikelnr != null ? this.students[0].matrikelnr : '-'; return tile; }, + tile_PrestdId(){ + let tile = this.students[0].prestudent_id != null ? this.students[0].prestudent_id : '-'; + return tile; + }, }, watch: { '$p.user_language.value'(n, o) { @@ -150,6 +154,8 @@ export default { + + Date: Tue, 11 Aug 2026 09:48:17 +0200 Subject: [PATCH 2/8] use function getStgAndDetails instead of getStgAndSem --- application/controllers/jobs/AntragJob.php | 2 +- .../education/Studierendenantrag_model.php | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 5b72518d2..8bcb898a9 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -125,7 +125,7 @@ class AntragJob extends JOB_Controller $stgLeitungen[$leitung->uid]['stgs'][] = $antrag->studiengang_kz; } - $result = $this->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); + $result = $this->StudierendenantragModel->getStgAndDetails($antrag->studierendenantrag_id); if (isError($result)) { $this->logError(getError($result)); diff --git a/application/models/education/Studierendenantrag_model.php b/application/models/education/Studierendenantrag_model.php index 40224ffc9..c18d18053 100644 --- a/application/models/education/Studierendenantrag_model.php +++ b/application/models/education/Studierendenantrag_model.php @@ -188,6 +188,7 @@ class Studierendenantrag_model extends DB_Model * Get the studiengang and ausbildungssemester the student was in * for the studiensemester the antrag was committed for * + * * @param integer $antrag_id * * @return stdClass @@ -242,6 +243,28 @@ class Studierendenantrag_model extends DB_Model ); } + /** + * Get the studiengang and the studienplan the student is in + * + * @param integer $antrag_id + * + * @return stdClass + */ + public function getStgAndDetails($antrag_id) + { + $this->addSelect('p.studiengang_kz'); + $this->addSelect('stg.orgform_kurzbz'); + $this->addSelect('stg.bezeichnung'); + $this->addJoin('public.tbl_prestudent p', 'prestudent_id'); + $this->addJoin('public.tbl_studiengang stg', 'studiengang_kz'); + + $this->addLimit(1); + + return $this->load( + $antrag_id + ); + } + public function getStgEmail($antrag_id) { $this->addJoin('public.tbl_prestudent p', 'prestudent_id'); From 30c4e565dd58070fb5d155829b753ae6aee330bc Mon Sep 17 00:00:00 2001 From: chfhtw Date: Tue, 11 Aug 2026 15:08:34 +0200 Subject: [PATCH 3/8] bugfix: sprache index in studentlistlib corrected --- application/libraries/stv/StudentListLib.php | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/application/libraries/stv/StudentListLib.php b/application/libraries/stv/StudentListLib.php index 293d74932..8826b50b8 100644 --- a/application/libraries/stv/StudentListLib.php +++ b/application/libraries/stv/StudentListLib.php @@ -320,16 +320,9 @@ class StudentListLib * @param string studiensemester_kurzbz * */ - protected function addSelectAndJoinForTagsIfConfigured($studiensemester_kurzbz) - { + protected function addSelectAndJoinForTagsIfConfigured($studiensemester_kurzbz) + { if (defined('STV_TAGS_ENABLED') && STV_TAGS_ENABLED) { - - $this->_ci->load->model('system/Sprache_model', 'SpracheModel'); - $this->_ci->SpracheModel->addSelect('index'); - $result = $this->_ci->SpracheModel->loadWhere(array('sprache' => getUserLanguage())); - $language = hasData($result) ? getData($result)[0]->index : 1; - $index_bezeichnung_mehrsprachig = $language - 1; - $this->_ci->load->config('stv'); $tags = $this->_ci->config->item('stv_prestudent_tags'); @@ -351,7 +344,11 @@ class StudentListLib SELECT DISTINCT ON (n.notiz_id) n.notiz_id AS id, nt.typ_kurzbz, - array_to_json(nt.bezeichnung_mehrsprachig)->>". $index_bezeichnung_mehrsprachig . " AS beschreibung, + nt.bezeichnung_mehrsprachig[( + SELECT index + FROM tbl_sprache + WHERE sprache=" . $this->_ci->PrestudentModel->escape(getUserLanguage()) . " + )] AS beschreibung, n.text AS notiz, nt.style, n.erledigt AS done, @@ -387,7 +384,7 @@ class StudentListLib $this->addSelect('tag_data_agg.tags'); $this->addJoin($subQueryTag, 'tag_data_agg.prestudent_id = tbl_prestudent.prestudent_id', 'LEFT'); } - } + } /** * Get alias of a table or select statement From a5257eb934294cf13a3120bd5ccb95e9bccbf294 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 11 Aug 2026 17:50:33 +0200 Subject: [PATCH 4/8] rearange tiles, use placeholder if uid is not set --- .../Stv/Studentenverwaltung/Details.js | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/public/js/components/Stv/Studentenverwaltung/Details.js b/public/js/components/Stv/Studentenverwaltung/Details.js index 119461b88..8cae83e38 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details.js @@ -67,6 +67,10 @@ export default { let tile = this.students[0].prestudent_id != null ? this.students[0].prestudent_id : '-'; return tile; }, + tile_UID(){ + let tile = this.students[0].uid != null ? this.students[0].uid : '-'; + return tile; + }, }, watch: { '$p.user_language.value'(n, o) { @@ -147,15 +151,15 @@ export default { fotoEditable :isLoading="isLoading" > - - - - - - - - - + + + + + + + + + Date: Wed, 12 Aug 2026 10:14:02 +0200 Subject: [PATCH 5/8] Add missing routes for StudVw --- application/config/routes.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/application/config/routes.php b/application/config/routes.php index a58fded36..bb0b0f65e 100644 --- a/application/config/routes.php +++ b/application/config/routes.php @@ -91,11 +91,13 @@ $route['api/frontend/v1/treemenudata/stv/stdsem/(:any)/inout/1/incoming/1'] = 'a $route['api/frontend/v1/treemenudata/stv/stdsem/(:any)/inout/1/outgoing/1'] = 'api/frontend/v1/stv/students/getOutgoing/$1'; $route['api/frontend/v1/treemenudata/stv/stdsem/(:any)/inout/1/shared_studies/1'] = 'api/frontend/v1/stv/students/getGemeinsamestudien/$1'; +$route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/prestudent/1/stdsem/(:any)/:any/1/:any/1/(:any)/1'] = 'api/frontend/v1/stv/students/getPrestudents/$1/$2/$3'; $route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/prestudent/1/stdsem/(:any)/:any/1/(:any)/1'] = 'api/frontend/v1/stv/students/getPrestudents/$1/$2/$3'; $route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/prestudent/1/stdsem/(:any)/(:any)/1'] = 'api/frontend/v1/stv/students/getPrestudents/$1/$2/$3'; $route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/prestudent/1/stdsem/(:any)'] = 'api/frontend/v1/stv/students/getPrestudents/$1/$2'; $route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/prestudent/1'] = 'api/frontend/v1/stv/students/getPrestudents/$1'; +$route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/orgform/(:any)/prestudent/1/stdsem/(:any)/:any/1/:any/1/(:any)/1'] = 'api/frontend/v1/stv/students/getPrestudentsOrgform/$1/$2/$3/$4'; $route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/orgform/(:any)/prestudent/1/stdsem/(:any)/:any/1/(:any)/1'] = 'api/frontend/v1/stv/students/getPrestudentsOrgform/$1/$2/$3/$4'; $route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/orgform/(:any)/prestudent/1/stdsem/(:any)/(:any)/1'] = 'api/frontend/v1/stv/students/getPrestudentsOrgform/$1/$2/$3/$4'; $route['api/frontend/v1/treemenudata/stv/stdsem/:any/stg/(:any)/orgform/(:any)/prestudent/1/stdsem/(:any)'] = 'api/frontend/v1/stv/students/getPrestudentsOrgform/$1/$2/$3'; From ab2a0e93ed5ea941087d731aa35cfa525dc548d4 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 12 Aug 2026 11:38:02 +0200 Subject: [PATCH 6/8] add public/vendor to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 84957a801..7688849af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ documents/ vendor/ +public/vendor /nbproject/ .vscode From 6d5a4531e1b6f52bab1642058f00b3d98249535e Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 12 Aug 2026 16:58:21 +0200 Subject: [PATCH 7/8] use tbl_studentlehrverband.semester instead of tbl_student.semester --- application/libraries/stv/StudentListLib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/libraries/stv/StudentListLib.php b/application/libraries/stv/StudentListLib.php index 8826b50b8..9365ddc9a 100644 --- a/application/libraries/stv/StudentListLib.php +++ b/application/libraries/stv/StudentListLib.php @@ -77,7 +77,7 @@ class StudentListLib CASE WHEN pls.status_kurzbz IN ('Interessent','Aufgenommener','Bewerber','Wartender') THEN pls.ausbildungssemester - ELSE s.semester + ELSE v.semester END AS semester_berechnet "); $this->addSelect( From f846bb221a5e9aeb011ac7490e71107b5a49ee42 Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Fri, 14 Aug 2026 11:47:31 +0200 Subject: [PATCH 8/8] refetching lv menu after a different calendar event is selected --- .../Cis/Renderer/Lehreinheit/modalContent.js | 48 +++++++++++++------ 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/public/js/components/Cis/Renderer/Lehreinheit/modalContent.js b/public/js/components/Cis/Renderer/Lehreinheit/modalContent.js index 738c0c75c..eb8908648 100644 --- a/public/js/components/Cis/Renderer/Lehreinheit/modalContent.js +++ b/public/js/components/Cis/Renderer/Lehreinheit/modalContent.js @@ -51,6 +51,16 @@ export default { return numberPadding(this.event.ende.getHours()) + ":" + numberPadding(this.event.ende.getMinutes()); } }, + watch: { + event: { + async handler() { + if (this.$props.event.type == "lehreinheit") { + await this.getLvMenu(); + } + }, + deep: true, + }, + }, methods: { mehtodNumberPadding: function (number) { return numberPadding(number); @@ -58,21 +68,31 @@ export default { methodFormatDate: function (d) { return formatDate(d); }, + async getLvMenu() { + const semesterResponse = await this.$api.call( + ApiLvPlan.getLehreinheitStudiensemester( + Array.isArray(this.event.lehreinheit_id) + ? this.event.lehreinheit_id[0] + : this.event.lehreinheit_id, + ), + ); + if (semesterResponse.meta.status !== "success") return; + + const studiensemesterKurzbz = semesterResponse.data; + const lvMenuResponse = await this.$api.call( + ApiAddons.getLvMenu( + this.event.lehrveranstaltung_id, + studiensemesterKurzbz, + ), + ); + if (lvMenuResponse.meta.status !== "success") return; + + this.lvMenu = lvMenuResponse.data; + }, }, - created() { - if (this.event.type == 'lehreinheit') { - this.$api - .call(ApiLvPlan.getLehreinheitStudiensemester(Array.isArray(this.event.lehreinheit_id) ? this.event.lehreinheit_id[0] : this.event.lehreinheit_id)) - .then(res => res.data) - .then(studiensemester_kurzbz => this.$api.call( - ApiAddons.getLvMenu( - this.event.lehrveranstaltung_id, - studiensemester_kurzbz - ) - )) - .then(res => { - this.lvMenu = res.data; - }); + async created() { + if (this.$props.event.type == 'lehreinheit') { + await this.getLvMenu(); } }, template: `