diff --git a/application/config/stv.php b/application/config/stv.php index 34a30a96e..639c5d23b 100644 --- a/application/config/stv.php +++ b/application/config/stv.php @@ -60,7 +60,13 @@ $config['tabs'] = ], 'notes' => [ //if true, the count of Messages will be shown in the header of the Tab Messages - 'showCountNotes' => true + 'showCountNotes' => true, + + //if true: section with following fields will be displayed: 'verfasser', 'bearbeiter', 'von', 'bis' and 'erledigt' + 'showErweitert' => false, + + //notizlayout: choose of "classicFas", "twoColumnsFormLeft", twoColumnsFormRight, popupModal" + 'notizLayout' => 'popupModal' ], 'combinePeople' => [ //multitab should only be shown with this length of selection 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; } 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 { - + 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... diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js b/public/js/components/Stv/Studentenverwaltung/Details/Notizen.js index 4acb09156..a0b88bdcf 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 { @@ -23,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 @@ -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" > @@ -49,16 +54,16 @@ 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' + 'verfasser', 'bearbeiter', 'von', 'bis' and 'erledigt'; is now configurable in config/stv.php 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']" 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" >