From 72aed768578d40e7955967a5ddb4243ca915f5cf Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Thu, 7 May 2026 14:06:23 +0200 Subject: [PATCH 01/10] added border to compacted events in lv plan for color contrasting --- public/js/components/Calendar/Base/Grid/Line.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/public/js/components/Calendar/Base/Grid/Line.js b/public/js/components/Calendar/Base/Grid/Line.js index 64a71c5f0..1f266d0a1 100644 --- a/public/js/components/Calendar/Base/Grid/Line.js +++ b/public/js/components/Calendar/Base/Grid/Line.js @@ -147,12 +147,13 @@ export default { :style="'grid-' + axisRow + ': ' + event.rows.join('/')" class="d-flex flex-row justify-content-center gap-1 align-items-center" > - + :style="subEvent.farbe ? {'background-color': '#' + subEvent.farbe} : {}" + style="height:10px; width:10px;" + class="border border-dark rounded-circle" + >
Date: Thu, 7 May 2026 14:19:47 +0200 Subject: [PATCH 02/10] made search icons white in both dark and light mode --- public/js/components/searchbar/searchbar.js | 1 + 1 file changed, 1 insertion(+) diff --git a/public/js/components/searchbar/searchbar.js b/public/js/components/searchbar/searchbar.js index e865d525e..81893cc58 100644 --- a/public/js/components/searchbar/searchbar.js +++ b/public/js/components/searchbar/searchbar.js @@ -102,6 +102,7 @@ export default { aria-controls="header-searchbar-collapsible header-options-collapsible header-usermenu-collapsible" aria-expanded="false" class="d-flex flex-row align-items-center ps-3 pe-1" + style="color: white" > From d3ceed32c68c92d66cb8005cb44591e20811a280 Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Thu, 7 May 2026 15:15:50 +0200 Subject: [PATCH 03/10] compacting all events in mobile monthly lv plan --- application/controllers/api/frontend/v1/LvPlan.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/application/controllers/api/frontend/v1/LvPlan.php b/application/controllers/api/frontend/v1/LvPlan.php index 2e8ac52d4..69cbeca54 100644 --- a/application/controllers/api/frontend/v1/LvPlan.php +++ b/application/controllers/api/frontend/v1/LvPlan.php @@ -109,7 +109,7 @@ class LvPlan extends FHCAPI_Controller $lvplanEvents = $this->getDataOrTerminateWithError($result); // fetching moodle events - $moodleEvents = $uid ? [] : $this->fetchMoodleEvents($start_date, $end_date); + $moodleEvents = $this->fetchMoodleEvents($start_date, $end_date, $uid); // fetching ferien events $ferienEvents = $this->fetchFerienEvents($start_date, $end_date, $uid); @@ -406,7 +406,7 @@ class LvPlan extends FHCAPI_Controller */ public function compactibleEventTypes() { - $this->terminateWithSuccess(["lehreinheit", "reservierung"]); + $this->terminateWithSuccess(["lehreinheit", "reservierung", "ferien", "moodle"]); } /** @@ -416,7 +416,7 @@ class LvPlan extends FHCAPI_Controller * @param string $end_date * @return array */ - private function fetchMoodleEvents($start_date, $end_date) + private function fetchMoodleEvents($start_date, $end_date, $uid = null) { $this->load->config('calendar'); @@ -439,7 +439,7 @@ class LvPlan extends FHCAPI_Controller [ 'start_date' => $start->format('c'), 'end_date' => $end->format('c'), - 'username' => getAuthUID() + 'username' => $uid ?? getAuthUID() ] ); From 1d3d067b44de996dc473acc3ab6a7aeb262d7226 Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Thu, 7 May 2026 16:39:07 +0200 Subject: [PATCH 04/10] making isMobile property reactive to window resizing --- public/js/apps/Cis/Cis.js | 24 ++++++++++----------- public/js/apps/Cis/Menu.js | 24 ++++++++++++--------- public/js/components/Cis/Menu.js | 4 ++-- public/js/components/searchbar/searchbar.js | 5 +++++ 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/public/js/apps/Cis/Cis.js b/public/js/apps/Cis/Cis.js index 8a56c16e2..fe2ed8837 100644 --- a/public/js/apps/Cis/Cis.js +++ b/public/js/apps/Cis/Cis.js @@ -252,19 +252,12 @@ const app = Vue.createApp({ name: 'CisApp', data: () => ({ appSideMenuEntries: {}, + windowWidth: 0, }), - components: {}, - computed: { - isMobile() { - const smallScreen = window.matchMedia("(max-width: 767px)").matches; - const touchCapable = ("ontouchstart" in window) || navigator.maxTouchPoints > 0; - return smallScreen;// && touchCapable; - }, - }, provide() { return { // provide injectable & watchable language property language: Vue.computed(() => this.$p.user_language), - isMobile: this.isMobile, + isMobile: Vue.computed(() => this.windowWidth < 767), } }, methods: { @@ -300,14 +293,21 @@ const app = Vue.createApp({ this.$router.push(route); } - } + }, + handleWindowResize() { + this.windowWidth = window.innerWidth; + }, }, - mounted() { + created() { + this.windowWidth = window.innerWidth; + }, + async mounted() { document.addEventListener('click', this.handleClick); - + window.addEventListener("resize", this.handleWindowResize); }, beforeUnmount() { document.removeEventListener('click', this.handleClick); + window.removeEventListener("resize", this.handleWindowResize); }, }); diff --git a/public/js/apps/Cis/Menu.js b/public/js/apps/Cis/Menu.js index 3193b1e3a..ce24489bf 100644 --- a/public/js/apps/Cis/Menu.js +++ b/public/js/apps/Cis/Menu.js @@ -134,26 +134,26 @@ const app = Vue.createApp({ childactions: [] } } - } + }, + windowWidth: 0, }; }, - computed: { - isMobile() { - const smallScreen = window.matchMedia("(max-width: 767px)").matches; - const touchCapable = ("ontouchstart" in window) || navigator.maxTouchPoints > 0; - return smallScreen;// && touchCapable; - }, - }, provide() { return { - isMobile: this.isMobile, + isMobile: Vue.computed(() => this.windowWidth < 767), } }, methods: { searchfunction: function(searchsettings) { return this.$api.call(ApiSearchbar.searchCis(searchsettings)); - } + }, + handleWindowResize() { + this.windowWidth = window.innerWidth; + }, }, + created() { + this.windowWidth = window.innerWidth; + }, async mounted() { const openOtherLvPlanAction = { label: Vue.computed(() => this.$p.t("lehre/stundenplan")), @@ -183,6 +183,10 @@ const app = Vue.createApp({ openOtherLvPlanAction, ); } + window.addEventListener("resize", this.handleWindowResize); + }, + beforeUnmount() { + window.removeEventListener("resize", this.handleWindowResize); }, }); diff --git a/public/js/components/Cis/Menu.js b/public/js/components/Cis/Menu.js index 573e569ec..86ecccaf4 100644 --- a/public/js/components/Cis/Menu.js +++ b/public/js/components/Cis/Menu.js @@ -114,8 +114,8 @@ export default { }, template: /*html*/`
- - - +
+ -
- - -
+ + + +
+
+ + + + +
diff --git a/public/js/components/searchbar/searchbar.js b/public/js/components/searchbar/searchbar.js index de125bd16..2f1667692 100644 --- a/public/js/components/searchbar/searchbar.js +++ b/public/js/components/searchbar/searchbar.js @@ -39,7 +39,7 @@ export default { query: Vue.computed(() => this.lastQuery), }; }, - inject: ["isMobile"], + inject: ["isNarrow"], data: function () { return { searchtimer: null, @@ -56,7 +56,7 @@ export default { abortController: null, settingsDropdown: null, lastQuery: "", - isSearchShownInMobileView: false, + isSearchShownInNarrowView: false, }; }, computed: { @@ -95,30 +95,30 @@ export default { @focusout="searchfocusout" >