From 69cdb43935cfff92f7fda389962b77e3e9869c10 Mon Sep 17 00:00:00 2001 From: Ivymaster Date: Wed, 27 May 2026 15:17:30 +0200 Subject: [PATCH] WIP: Second feedback alterations --- .../api/frontend/v1/ClassScheduleApi.php | 2 +- .../controllers/lehre/ClassSchedule.php | 1 + .../ClassScheduleCalendarSelector.js | 24 +-- .../ClassSchedule/ClassScheduleOverview.js | 204 ++++++++++-------- .../ClassSchedule/ClassScheduleTypeModal.js | 2 +- .../ClassScheduleValidityPeriodModal.js | 12 +- .../ClassScheduleValidityPeriodPreview.js | 2 +- system/phrasesupdate.php | 20 ++ 8 files changed, 155 insertions(+), 112 deletions(-) diff --git a/application/controllers/api/frontend/v1/ClassScheduleApi.php b/application/controllers/api/frontend/v1/ClassScheduleApi.php index dcfd6f50d..58bcd365c 100644 --- a/application/controllers/api/frontend/v1/ClassScheduleApi.php +++ b/application/controllers/api/frontend/v1/ClassScheduleApi.php @@ -36,7 +36,7 @@ class ClassScheduleApi extends FHCAPI_Controller 'createClassTimeSlotsForValidityPeriod' => array('lehre/unterrichtszeiten_gk:r'), 'updateClassTimeSlotsForValidityPeriod' => array('lehre/unterrichtszeiten_gk:r'), 'deleteClassTimeSlotsForValidityPeriod' => array('lehre/unterrichtszeiten_gk:r'), - 'getAllClassScheduleTypes' => array('lehre/unterrichtszeiten_typ:r'), + 'getAllClassScheduleTypes' => array('lehre/unterrichtszeiten_typ:r', 'lehre/unterrichtszeiten_gk:r'), 'createClassTimeSlotType' => array('lehre/unterrichtszeiten_typ:rw'), 'updateClassTimeSlotType' => array('lehre/unterrichtszeiten_typ:rw'), 'deleteClassTimeSlotType' => array('lehre/unterrichtszeiten_typ:rw'), diff --git a/application/controllers/lehre/ClassSchedule.php b/application/controllers/lehre/ClassSchedule.php index f1581acb3..7be273c56 100644 --- a/application/controllers/lehre/ClassSchedule.php +++ b/application/controllers/lehre/ClassSchedule.php @@ -42,6 +42,7 @@ class ClassSchedule extends Auth_Controller { return $this->load->view('lehre/class_schedule/index.php', [ 'permissions' => [ + 'lehre/unterrichtszeiten_typ_r' => $this->permissionlib->isBerechtigt('lehre/unterrichtszeiten_typ', 's'), 'lehre/unterrichtszeiten_typ_w' => $this->permissionlib->isBerechtigt('lehre/unterrichtszeiten_typ', 'suid'), ], ]); diff --git a/public/js/components/ClassSchedule/ClassScheduleCalendarSelector.js b/public/js/components/ClassSchedule/ClassScheduleCalendarSelector.js index 54c06a86b..e3f3db6c6 100644 --- a/public/js/components/ClassSchedule/ClassScheduleCalendarSelector.js +++ b/public/js/components/ClassSchedule/ClassScheduleCalendarSelector.js @@ -1079,7 +1079,10 @@ export default { let dropzoneElementDataNumber = this.getElementDataNumber(closestPartBody); - if (dropzoneElementDataNumber === null || dropzoneElementDataNumber === undefined) { + if ( + dropzoneElementDataNumber === null || + dropzoneElementDataNumber === undefined + ) { return; } @@ -1350,6 +1353,8 @@ export default { this.currentlyEditedOverlayId = null; }, showOverlayClassTimeTypePopover(overlayId) { + if (this.$props.isPreviewMode) return; + let overlayElement = this.getOverlayElementByOverlayId(overlayId); if (!overlayElement) return; @@ -1827,18 +1832,6 @@ export default {
- - - {{ this.getOverlayClassScheduleTypeTitle('overlay-item-' + index) }} diff --git a/public/js/components/ClassSchedule/ClassScheduleOverview.js b/public/js/components/ClassSchedule/ClassScheduleOverview.js index 36f87d04f..cf89ff122 100644 --- a/public/js/components/ClassSchedule/ClassScheduleOverview.js +++ b/public/js/components/ClassSchedule/ClassScheduleOverview.js @@ -64,6 +64,9 @@ export default { }; }, computed: { + userLanguage() { + return Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language); + }, tabulatorOptions() { const options = { ajaxURL: "dummy", @@ -71,11 +74,17 @@ export default { return await this.getParsedClassTimeSlotValidityPeriodData(); }, ajaxResponse: (url, params, response) => response, - persistenceID: "class_schedule_validity_periods_table", + persistenceID: "class_schedule_validity_periods_table12333451", selectableRows: true, + maxHeight:"100%", columns: [ { - title: this.$p.t("ui", "zeitraum"), + title: this.$capitalize(this.$p.t("ui", "unterrichtszeitenGueltigkeitId")), + field: "unterrichtszeitengueltigkeit_id", + visible: false, + }, + { + title: this.$capitalize(this.$p.t("ui", "zeitraum")), formatter: (cell, formatterParams, onRendered) => { const data = cell.getData(); const validFrom = new Date(data.gueltig_von).toLocaleDateString( @@ -99,17 +108,32 @@ export default { }, }, { - title: this.$p.t("global", "typ"), + title: this.$capitalize(this.$p.t("global", "typ")), field: "unterrichtszeiten_typ_bezeichnung_mehrsprachig", width: 150, + formatter: (cell, formatterParams, onRendered) => { + console.log(cell.getData()) + if (!cell.getData().unterrichtszeiten_typ_bezeichnung_mehrsprachig) { + return "sdsd"; + } + return this.userLanguage?.value === "English" + ? cell.getData().unterrichtszeiten_typ_bezeichnung_mehrsprachig[1] + : cell.getData().unterrichtszeiten_typ_bezeichnung_mehrsprachig[0]; + }, + }, { - title: this.$p.t("lehre", "sem"), + title: this.$capitalize(this.$p.t("lehre", "sem")), field: "ausbildungssemester", width: 150, }, { - title: this.$p.t("global", "actions"), + title: this.$capitalize(this.$p.t("global", "beschreibung")), + field: "anmerkung", + width: 150, + }, + { + title: this.$capitalize(this.$p.t("global", "actions")), field: "actions", minWidth: 150, maxWidth: 150, @@ -299,6 +323,9 @@ export default { }; }); }, + hasLehreUnterrichtszeitenTypRPermission() { + return this.permissions["lehre/unterrichtszeiten_typ_r"] || false; + } }, methods: { async getParsedClassTimeSlotValidityPeriodData() { @@ -324,10 +351,6 @@ export default { if (!period.studienplan_bezeichnung) { period.studienplan_bezeichnung = generalWord; } - period.unterrichtszeiten_typ_bezeichnung_mehrsprachig = - period.unterrichtszeiten_typ_bezeichnung_mehrsprachig[0]?.split( - ":", - )[1]; return { ...period, }; @@ -460,97 +483,100 @@ export default { - - - - + +
`, }; diff --git a/public/js/components/ClassSchedule/ClassScheduleTypeModal.js b/public/js/components/ClassSchedule/ClassScheduleTypeModal.js index cc1c6cae8..731859c90 100644 --- a/public/js/components/ClassSchedule/ClassScheduleTypeModal.js +++ b/public/js/components/ClassSchedule/ClassScheduleTypeModal.js @@ -153,7 +153,7 @@ export default { this.getAllClassScheduleTypes(); }) .catch((error) => { - this.$fhcAlert.handleSystemError(error); + this.$fhcAlert.alertError(this.$p.t("ui", "errorFetchingClassScheduleTimeSlotTypes")); }); }, showClassTimeSlotTypeForm() { diff --git a/public/js/components/ClassSchedule/ClassScheduleValidityPeriodModal.js b/public/js/components/ClassSchedule/ClassScheduleValidityPeriodModal.js index 529743cd4..3ca73a305 100644 --- a/public/js/components/ClassSchedule/ClassScheduleValidityPeriodModal.js +++ b/public/js/components/ClassSchedule/ClassScheduleValidityPeriodModal.js @@ -482,7 +482,7 @@ export default {
@@ -561,7 +561,7 @@ export default { diff --git a/public/js/components/ClassSchedule/ClassScheduleValidityPeriodPreview.js b/public/js/components/ClassSchedule/ClassScheduleValidityPeriodPreview.js index 15f55dae0..9b2b63994 100644 --- a/public/js/components/ClassSchedule/ClassScheduleValidityPeriodPreview.js +++ b/public/js/components/ClassSchedule/ClassScheduleValidityPeriodPreview.js @@ -84,7 +84,7 @@ export default { >
-
+
'core', + 'category' => 'ui', + 'phrase' => 'unterrichtszeitenGueltigkeitId', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Unterrichtszeit Gültigkeitszeitraum Id', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'validity period id', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), );