From 3aebccbb9def70a31c1d5ab5b74bc94526cd4950 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Fri, 10 Apr 2026 13:01:13 +0200 Subject: [PATCH 01/14] track activeTab in StudVW Details.js and pass it to :default property of fhcTabs instances to attempt to set the last active tab to current, else use the old default tab of route.params.tab --- .../components/Stv/Studentenverwaltung/Details.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/public/js/components/Stv/Studentenverwaltung/Details.js b/public/js/components/Stv/Studentenverwaltung/Details.js index e59492cf5..a03c7f50f 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details.js @@ -15,7 +15,8 @@ export default { data() { return { configStudent: {}, - configStudents: {} + configStudents: {}, + activeTab: null }; }, props: { @@ -74,6 +75,10 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); }, + handleTabChanged(key) { + this.activeTab = key + this.reload() + }, reload() { if (this.$refs.tabs?.$refs?.current?.reload) this.$refs.tabs.$refs.current.reload(); @@ -111,12 +116,12 @@ export default { :useprimevue="true" :modelValue="students[0]" :config="config" - :default="$route.params.tab" + :default="activeTab ?? $route.params.tab" style="flex: 1 1 0%; height: 0%" - @changed="reload" + @changed="handleTabChanged" > - +
Loading... From 0326a01585f5386d8519b93302a8523dd914c29e Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 15 May 2026 14:14:22 +0200 Subject: [PATCH 02/14] disable sendButton, show Spinner and prevent closeModal while sending Message --- .../Messages/Details/NewMessage/Modal.js | 15 ++++++++++++++- .../Messages/Details/NewMessage/NewDiv.js | 15 +++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/public/js/components/Messages/Details/NewMessage/Modal.js b/public/js/components/Messages/Details/NewMessage/Modal.js index b23eebbcd..36ee5f114 100644 --- a/public/js/components/Messages/Details/NewMessage/Modal.js +++ b/public/js/components/Messages/Details/NewMessage/Modal.js @@ -56,6 +56,7 @@ export default { previewText: null, previewBody: "", replyData: null, + isSending: false } }, methods: { @@ -113,6 +114,9 @@ export default { data.append('data', JSON.stringify(this.formData)); data.append('ids', JSON.stringify(this.id)); + //for disabling sendButton and show Spinner + this.isSending = true; + return this.$refs.formMessage .call(ApiMessages.sendMessage(this.typeId, data)) .then(response => { @@ -121,6 +125,7 @@ export default { this.resetForm(); }).catch(this.$fhcAlert.handleSystemError) .finally(() => { + this.isSending = false; //just emit if no multitasking if(this.id.length == 1){ @@ -288,6 +293,9 @@ export default { dialog-class=" modal-dialog-scrollable modal-xl modal-msg" header-class="flex-wrap pb-0" body-class="px-3 py-2" + :backdrop="isSending ? 'static' : true" + :keyboard="!isSending" + :noCloseBtn="isSending" @hidden.bs.modal="resetForm" > @@ -476,7 +484,12 @@ export default { - +
diff --git a/public/js/components/Messages/Details/NewMessage/NewDiv.js b/public/js/components/Messages/Details/NewMessage/NewDiv.js index 00b4e92a8..6a0dfa222 100644 --- a/public/js/components/Messages/Details/NewMessage/NewDiv.js +++ b/public/js/components/Messages/Details/NewMessage/NewDiv.js @@ -55,6 +55,7 @@ export default { previewBody: "", replyData: null, messageSent: false, + isSending: false } }, methods: { @@ -104,16 +105,21 @@ export default { data.append('data', JSON.stringify(this.formData)); data.append('ids', JSON.stringify(this.id)); + //for disabling sendButton and show Spinner + this.isSending = true; + return this.$api .call(ApiMessages.sendMessage(this.typeId, data)) .then(response => { - if(this.openMode == "inSamePage") + if(this.openMode == "inSamePage") { this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSent')); + } this.hideTemplate(); this.resetForm(); this.messageSent = true; }).catch(this.$fhcAlert.handleSystemError) .finally(() => { + this.isSending = false; if(this.openMode == "inSamePage" && this.id.length == 1 ){ this.$emit('reloadTable'); } @@ -413,7 +419,12 @@ export default { - + From 81f0b7a4bfe678021c8579cf0126af0eef74f995 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 7 Jul 2026 16:43:01 +0200 Subject: [PATCH 03/14] make showErweitert configurable --- application/config/stv.php | 3 ++- .../components/Stv/Studentenverwaltung/Details/Notizen.js | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/application/config/stv.php b/application/config/stv.php index 34a30a96e..d62e58674 100644 --- a/application/config/stv.php +++ b/application/config/stv.php @@ -60,7 +60,8 @@ $config['tabs'] = ], 'notes' => [ //if true, the count of Messages will be shown in the header of the Tab Messages - 'showCountNotes' => true + 'showCountNotes' => true, + 'showErweitert' => true, ], 'combinePeople' => [ //multitab should only be shown with this length of selection diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js b/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js index 4acb09156..89ac1bddd 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js @@ -8,7 +8,11 @@ export default { CoreNotiz }, props: { - modelValue: Object + modelValue: Object, + config: { + type: Object, + default: {} + } }, data() { return { @@ -31,6 +35,7 @@ export default { :visibleColumns="['titel','text','verfasser','bearbeiter','dokumente']" @reload="$emit('update:suffix')" tabulator-persistence-id="stv-notiz-20260217" + :show-erweitert="config.showErweitert" > From a4c5f9946f803b22d4c29a4d609ea94a205ade2e Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 7 Jul 2026 16:56:35 +0200 Subject: [PATCH 04/14] change doku --- public/js/components/Stv/Studentenverwaltung/Details/Notizen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js b/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js index 89ac1bddd..d52091cf9 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js @@ -57,7 +57,7 @@ type-id: id to which table the notizdata should be connected... eg. person_id, p notizLayout: "classicFas", "twoColumnsFormLeft", twoColumnsFormRight, popupModal" showErweitert: if true: section with following fields will be displayed: - 'verfasser', 'bearbeiter', 'von', 'bis' + 'verfasser', 'bearbeiter', 'von', 'bis' and 'erledigt'; is now configurable in config/stv.php showDocument: if true: section with documentHandling will be displayed From 26ddd404c00c3845023e50e6ec0855b0dbbd8f5f Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 9 Jul 2026 08:57:17 +0200 Subject: [PATCH 05/14] add geschlecht to dropdown and adapt default according to geschlecht --- .../Details/Abschlusspruefung/Abschlusspruefung.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js index 1c2c53dd7..df9b74c05 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js @@ -434,7 +434,10 @@ export default { } if (!this.formData.akadgrad_id && this.arrAkadGrad.length > 0) { - this.formData.akadgrad_id = this.arrAkadGrad[0].akadgrad_id; + if(this.student.geschlecht == 'w') + this.formData.akadgrad_id = this.arrAkadGrad[1].akadgrad_id; + else + this.formData.akadgrad_id = this.arrAkadGrad[0].akadgrad_id; } }, printDocument(link) { @@ -718,7 +721,7 @@ export default { :key="grad.akadgrad_id" :value="grad.akadgrad_id" > - {{grad.titel}} + {{ grad.titel }} ({{ grad.geschlecht }}) Date: Thu, 9 Jul 2026 11:01:00 +0200 Subject: [PATCH 06/14] make also notizlayout configurable --- application/config/stv.php | 5 +++++ .../components/Stv/Studentenverwaltung/Details/Notizen.js | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/application/config/stv.php b/application/config/stv.php index d62e58674..d1b364c6e 100644 --- a/application/config/stv.php +++ b/application/config/stv.php @@ -61,7 +61,12 @@ $config['tabs'] = 'notes' => [ //if true, the count of Messages will be shown in the header of the Tab Messages 'showCountNotes' => true, + + //if true: section with following fields will be displayed: 'verfasser', 'bearbeiter', 'von', 'bis' and 'erledigt' 'showErweitert' => true, + + //notizlayout: choose of "classicFas", "twoColumnsFormLeft", twoColumnsFormRight, popupModal" + 'notizLayout' => 'popupModal' ], 'combinePeople' => [ //multitab should only be shown with this length of selection diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js b/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js index d52091cf9..a0b88bdcf 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js @@ -27,7 +27,7 @@ export default { class="overflow-hidden" :endpoint="endpoint" ref="formc" - notiz-layout="popupModal" + :notiz-layout="config.notizLayout" type-id="person_id" :id="modelValue.person_id" show-document @@ -54,7 +54,7 @@ ref="formc" type-id: id to which table the notizdata should be connected... eg. person_id, prestudent_id, uid (for mitarbeiter_uid), projekt_kurzbz, projektphase_id, projekttask_id, bestellung_id, lehreinheit_id, anrechnung_id -notizLayout: "classicFas", "twoColumnsFormLeft", twoColumnsFormRight, popupModal" +notizLayout: "classicFas", "twoColumnsFormLeft", twoColumnsFormRight, popupModal"; is now configurable in config/stv.php showErweitert: if true: section with following fields will be displayed: 'verfasser', 'bearbeiter', 'von', 'bis' and 'erledigt'; is now configurable in config/stv.php @@ -63,7 +63,7 @@ showDocument: if true: section with documentHandling will be displayed showTinyMCE: if true: section with WYSIWYG Editor for Text will be displayed -visibleColumns: list, which fields shoult be showed as default in filter component +visibleColumns: list, which fields should be showed as default in filter component fullVersion: :visibleColumns="['titel','text','bearbeiter','verfasser','von','bis','dokumente','erledigt','notiz_id','notizzuordnung_id','id','lastupdate']" From be4db980adcbcdf5dd307b95f36a33e7b860e9ed Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Wed, 29 Jul 2026 11:17:03 +0200 Subject: [PATCH 07/14] fixed issue with displayed locked profile images in other lv plan --- .../api/frontend/v1/OtherLvPlan.php | 86 ++++++++++--------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/application/controllers/api/frontend/v1/OtherLvPlan.php b/application/controllers/api/frontend/v1/OtherLvPlan.php index cad654f12..d3eceae67 100644 --- a/application/controllers/api/frontend/v1/OtherLvPlan.php +++ b/application/controllers/api/frontend/v1/OtherLvPlan.php @@ -17,60 +17,62 @@ */ if (!defined('BASEPATH')) - exit('No direct script access allowed'); + exit('No direct script access allowed'); class OtherLvPlan extends FHCAPI_Controller { - /** - * Object initialization - */ - public function __construct() - { - parent::__construct([ - 'otherLvPlanViewData' => ['basis/other_lv_plan:r'], - ]); + /** + * Object initialization + */ + public function __construct() + { + parent::__construct([ + 'otherLvPlanViewData' => ['basis/other_lv_plan:r'], + ]); - $this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel'); - $this->load->model('person/Benutzer_model', 'BenutzerModel'); + $this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel'); + $this->load->model('person/Benutzer_model', 'BenutzerModel'); - } + } - //------------------------------------------------------------------------------------------------------------------ - // Public methods + //------------------------------------------------------------------------------------------------------------------ + // Public methods - /** - * retrieves viewData for other lv plan view - * @access public - * @param $uid the userID for which the other lv plan is being viewed - */ - public function otherLvPlanViewData($uid) - { - $isMitarbeiterResult = $this->MitarbeiterModel->isMitarbeiter($uid); - $isMitarbeiter = getData($isMitarbeiterResult); - $isStudent = !$isMitarbeiter; + /** + * retrieves viewData for other lv plan view + * @access public + * @param $uid the userID for which the other lv plan is being viewed + */ + public function otherLvPlanViewData($uid) + { + $isMitarbeiterResult = $this->MitarbeiterModel->isMitarbeiter($uid); + $isMitarbeiter = getData($isMitarbeiterResult); + $isStudent = !$isMitarbeiter; - $this->BenutzerModel->addSelect(["foto", "vorname", "nachname"]); - $this->BenutzerModel->addJoin("tbl_person", "person_id"); - $personResult = $this->BenutzerModel->load([$uid]); - $person = hasData($personResult) ? getData($personResult) : null; + $this->BenutzerModel->addSelect(["foto", "foto_sperre", "vorname", "nachname"]); + $this->BenutzerModel->addJoin("tbl_person", "person_id"); + $personResult = $this->BenutzerModel->load([$uid]); + $person = hasData($personResult) ? getData($personResult) : null; - $viewData = [ - "user_data" => [ - "username" => $uid, - "is_student" => $isStudent, - "is_mitarbeiter" => $isMitarbeiter, - "foto" => $person[0]->foto, - "vorname" => $person[0]->vorname, - "nachname" => $person[0]->nachname, - ], - ]; + $photo = $person[0]->foto_sperre ? base64_encode(file_get_contents(DOC_ROOT . 'skin/images/profilbild_dummy.jpg')) : $person[0]->foto; - $this->terminateWithSuccess($viewData); - } + $viewData = [ + "user_data" => [ + "username" => $uid, + "is_student" => $isStudent, + "is_mitarbeiter" => $isMitarbeiter, + "foto" => $photo, + "vorname" => $person[0]->vorname, + "nachname" => $person[0]->nachname, + ], + ]; - // ----------------------------------------------------------------------------------------------------------------- - // Private methods + $this->terminateWithSuccess($viewData); + } + + // ----------------------------------------------------------------------------------------------------------------- + // Private methods } From d1ca6eb988977f240b8eb3e179d5816ca7452c0d Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Wed, 29 Jul 2026 11:28:13 +0200 Subject: [PATCH 08/14] reworked other lv plan view data controller using profil library --- .../controllers/api/frontend/v1/OtherLvPlan.php | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/application/controllers/api/frontend/v1/OtherLvPlan.php b/application/controllers/api/frontend/v1/OtherLvPlan.php index d3eceae67..a48113270 100644 --- a/application/controllers/api/frontend/v1/OtherLvPlan.php +++ b/application/controllers/api/frontend/v1/OtherLvPlan.php @@ -33,6 +33,7 @@ class OtherLvPlan extends FHCAPI_Controller $this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel'); $this->load->model('person/Benutzer_model', 'BenutzerModel'); + $this->load->library('ProfilLib'); } @@ -50,21 +51,17 @@ class OtherLvPlan extends FHCAPI_Controller $isMitarbeiter = getData($isMitarbeiterResult); $isStudent = !$isMitarbeiter; - $this->BenutzerModel->addSelect(["foto", "foto_sperre", "vorname", "nachname"]); - $this->BenutzerModel->addJoin("tbl_person", "person_id"); - $personResult = $this->BenutzerModel->load([$uid]); - $person = hasData($personResult) ? getData($personResult) : null; - - $photo = $person[0]->foto_sperre ? base64_encode(file_get_contents(DOC_ROOT . 'skin/images/profilbild_dummy.jpg')) : $person[0]->foto; + $profileData = $this->profillib->getView($uid); + $profileData = hasData($profileData) ? getData($profileData) : null; $viewData = [ "user_data" => [ "username" => $uid, "is_student" => $isStudent, "is_mitarbeiter" => $isMitarbeiter, - "foto" => $photo, - "vorname" => $person[0]->vorname, - "nachname" => $person[0]->nachname, + "foto" => $profileData->data->foto, + "vorname" => $profileData->data->vorname, + "nachname" => $profileData->data->nachname, ], ]; From 69048f8f48ee0749952924f3b9648be3ef5692f1 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Fri, 31 Jul 2026 09:51:04 +0200 Subject: [PATCH 09/14] bugfix semester calculation between semesters --- application/libraries/StundenplanLib.php | 4 +- .../organisation/Studiensemester_model.php | 76 +++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php index a7bec61ec..5535c6168 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -80,6 +80,7 @@ class StundenplanLib if (isError($semester_range)) return $semester_range; $semester_range = getData($semester_range); + $this->_ci->addMeta('semester_range', $semester_range); $this->sortStudienSemester($semester_range); @@ -784,7 +785,8 @@ class StundenplanLib $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); // gets all studiensemester from the student from start_date to end_date - $semester_range = $this->_ci->StudiensemesterModel->getByDateRange($start_date, $end_date); + //$semester_range = $this->_ci->StudiensemesterModel->getByDateRange($start_date, $end_date); + $semester_range = $this->_ci->StudiensemesterModel->getContainingOrNearestByDateRange($start_date, $end_date); if (isError($semester_range)) return $semester_range; diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index e6492b52e..1b480771f 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -229,6 +229,82 @@ class Studiensemester_model extends DB_Model return $this->execQuery($query, array($date,$date,$date,$date)); } + /** + * Gets all Studiensemester where the range dates are contained + * or the nearest if date is not contained + * @param $from + * @param $to + * @return array|null + */ + public function getContainingOrNearestByDateRange($from, $to) + { + if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d'))) + return success(array()); + + $query = <<db->escape($from)}::date BETWEEN s.start AND s.ende + ORDER BY + s.start DESC + LIMIT 1 + ), + semester_interval_enddate AS ( + SELECT + s.* + FROM + public.tbl_studiensemester s + WHERE + {$this->db->escape($to)}::date BETWEEN s.start AND s.ende + ORDER BY + s.start DESC + LIMIT 1 + ), + nearest_semester_interval_startdate AS ( + SELECT + LEAST(ABS(s.start - {$this->db->escape($from)}::date), ABS(s.ende - {$this->db->escape($from)}::date)) AS mindiff, + s.* + FROM + public.tbl_studiensemester s + WHERE + s.ende < {$this->db->escape($from)}::date + ORDER BY + 1 ASC + LIMIT 1 + ), + nearest_semester_interval_enddate AS ( + SELECT + LEAST(ABS(s.start - {$this->db->escape($to)}::date), ABS(s.ende - {$this->db->escape($to)}::date)) AS mindiff, + s.* + FROM + public.tbl_studiensemester s + WHERE + s.start > {$this->db->escape($to)}::date + ORDER BY + 1 ASC + LIMIT 1 + ) + SELECT + COALESCE( + (SELECT studiensemester_kurzbz FROM semester_interval_startdate), + (SELECT studiensemester_kurzbz FROM nearest_semester_interval_startdate) + ) AS studiensemester_kurzbz + UNION + SELECT + COALESCE( + (SELECT studiensemester_kurzbz FROM semester_interval_enddate), + (SELECT studiensemester_kurzbz FROM nearest_semester_interval_enddate) + ) AS studiensemester_kurzbz + +EOSQL; + + return $this->execReadonlyQuery($query); + } + /** * Gets all Studiensemester between two dates * @param $from From b9d4aefd5e0681569b772b2133b292ebcf5a7625 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Fri, 31 Jul 2026 11:02:46 +0200 Subject: [PATCH 10/14] add meta info --- application/libraries/StundenplanLib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php index 5535c6168..1d88ad0db 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -85,6 +85,7 @@ class StundenplanLib $this->sortStudienSemester($semester_range); $function_error = $this->applyLoadUeberSemesterHaelfte($semester_range); + $this->_ci->addMeta('nach_apply_semester_range', $semester_range); if ($function_error) return $function_error; From 2686aee1583ed4eeae474ddcccdb75c0a50b6bdd Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Mon, 3 Aug 2026 19:30:49 +0200 Subject: [PATCH 11/14] avoid multiple assignments to one variable --- application/controllers/api/frontend/v1/OtherLvPlan.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/controllers/api/frontend/v1/OtherLvPlan.php b/application/controllers/api/frontend/v1/OtherLvPlan.php index a48113270..af075fbc3 100644 --- a/application/controllers/api/frontend/v1/OtherLvPlan.php +++ b/application/controllers/api/frontend/v1/OtherLvPlan.php @@ -51,8 +51,8 @@ class OtherLvPlan extends FHCAPI_Controller $isMitarbeiter = getData($isMitarbeiterResult); $isStudent = !$isMitarbeiter; - $profileData = $this->profillib->getView($uid); - $profileData = hasData($profileData) ? getData($profileData) : null; + $resProfileData = $this->profillib->getView($uid); + $profileData = hasData($resProfileData) ? getData($resProfileData) : null; $viewData = [ "user_data" => [ From ab637ded2621e3d4a96ee0d472554555cdd64e38 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 4 Aug 2026 15:12:17 +0200 Subject: [PATCH 12/14] stv config: change default for notes showErweitert to false --- application/config/stv.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/config/stv.php b/application/config/stv.php index d1b364c6e..639c5d23b 100644 --- a/application/config/stv.php +++ b/application/config/stv.php @@ -63,7 +63,7 @@ $config['tabs'] = 'showCountNotes' => true, //if true: section with following fields will be displayed: 'verfasser', 'bearbeiter', 'von', 'bis' and 'erledigt' - 'showErweitert' => true, + 'showErweitert' => false, //notizlayout: choose of "classicFas", "twoColumnsFormLeft", twoColumnsFormRight, popupModal" 'notizLayout' => 'popupModal' From cfa4dd8b8af6d4d790aaf29c57857659a838157b Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 4 Aug 2026 15:33:36 +0200 Subject: [PATCH 13/14] add padding to filtercomponent tabulator-tableholder to prevent scrollbar covering a row in tables with few rows --- public/css/components/FilterComponent.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/css/components/FilterComponent.css b/public/css/components/FilterComponent.css index 3edf989a6..7779f78fc 100644 --- a/public/css/components/FilterComponent.css +++ b/public/css/components/FilterComponent.css @@ -70,6 +70,10 @@ margin-top: 20px; } +.filter-table-dataset .tabulator-tableholder { + padding-bottom: 16px; +} + .tabulator { font-size: 1rem; } From dd1a5064e41caae93a7c56be3f7ba807cce7363d Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 4 Aug 2026 16:54:53 +0200 Subject: [PATCH 14/14] tabs: add padding to prevent minimal horizontal scrolling --- public/js/components/Tabs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/components/Tabs.js b/public/js/components/Tabs.js index 50a8cf0e7..b0b5aecc1 100644 --- a/public/js/components/Tabs.js +++ b/public/js/components/Tabs.js @@ -219,7 +219,7 @@ export default { :scrollable="true" :lazy="true" :activeIndex="calcActiveIndex" - :pt="{navContainer:{style: 'flex: 0 0 auto;'}, panelContainer:{class: 'overflow-y-scroll p-2', style: 'flex: 1 1 auto;'}}" + :pt="{navContainer:{style: 'flex: 0 0 auto;'}, panelContainer:{class: 'overflow-y-scroll p-2 pe-3', style: 'flex: 1 1 auto;'}}" @tab-click="handleTabClick" >