mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 22:42:16 +00:00
feature(Studium LvModal): checks whether the lv has stundenplan entries and disables menu option if not/ checks the lvevaluierung information and adds it to the lvmodal information
This commit is contained in:
@@ -17,6 +17,9 @@
|
||||
*/
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
use CI3_Events as Events;
|
||||
|
||||
class Studium extends FHCAPI_Controller
|
||||
{
|
||||
|
||||
@@ -29,6 +32,7 @@ class Studium extends FHCAPI_Controller
|
||||
'getStudienAllSemester'=> self::PERM_LOGGED,
|
||||
'getStudiengaengeForStudienSemester'=> self::PERM_LOGGED,
|
||||
'getStudienplaeneBySemester'=> self::PERM_LOGGED,
|
||||
'getLvEvaluierungInfo'=> self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
@@ -173,6 +177,14 @@ class Studium extends FHCAPI_Controller
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
public function getLvEvaluierungInfo($studiensemester_kurzbz, $lehrveranstaltung_id){
|
||||
$result = [];
|
||||
Events::trigger('lvEvaluierungsInfo', function & () use (&$result) {
|
||||
return $result;
|
||||
},$lehrveranstaltung_id, $studiensemester_kurzbz);
|
||||
$this->terminateWithSuccess($result);
|
||||
}
|
||||
|
||||
public function getStudiengaengeForStudienSemester($studiensemester){
|
||||
$studiengaenge = $this->computeStudiengaenge($studiensemester);
|
||||
$this->terminateWithSuccess($studiengaenge);
|
||||
@@ -259,6 +271,8 @@ class Studium extends FHCAPI_Controller
|
||||
},$lektoren);
|
||||
return $lektoren;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ class Stundenplan extends FHCAPI_Controller
|
||||
'StundenplanEvents' => self::PERM_LOGGED,
|
||||
'getLehreinheitStudiensemester' => self::PERM_LOGGED,
|
||||
'studiensemesterDateInterval' => self::PERM_LOGGED,
|
||||
'getLvStundenplanForStudiensemester' => self::PERM_LOGGED,
|
||||
]);
|
||||
|
||||
$this->load->library('LogLib');
|
||||
@@ -85,11 +86,6 @@ class Stundenplan extends FHCAPI_Controller
|
||||
{
|
||||
$stundenplan_events = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$stundenplan_events = $this->getDataOrTerminateWithError($stundenplan_events);
|
||||
}
|
||||
|
||||
// fetching moodle events
|
||||
$moodle_start_date = new DateTime($start_date);
|
||||
$moodle_start_date = $moodle_start_date->getTimestamp();
|
||||
@@ -154,6 +150,19 @@ class Stundenplan extends FHCAPI_Controller
|
||||
$studiensemester =current($this->getDataOrTerminateWithError($studiensemester));
|
||||
$this->terminateWithSuccess($studiensemester);
|
||||
}
|
||||
|
||||
public function getLvStundenplanForStudiensemester($studiensemester,$lvid){
|
||||
$this->load->library('StundenplanLib');
|
||||
$this->load->model('organisation/Studiensemester_model','StudiensemesterModel');
|
||||
|
||||
$studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz"=>$studiensemester]);
|
||||
$studiensemester_result = current($this->getDataOrTerminateWithError($studiensemester_result));
|
||||
$timespan_start = new DateTime($studiensemester_result->start);
|
||||
$timespan_ende = new DateTime($studiensemester_result->ende);
|
||||
$stundenplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'),date_format($timespan_ende, 'Y-m-d'), $lvid);
|
||||
$this->terminateWithSuccess($stundenplan);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,4 +29,19 @@ export default {
|
||||
}
|
||||
);
|
||||
},
|
||||
getLvStundenplanForStudiensemester: function (studiensemester, lvid) {
|
||||
return this.$fhcApi.get(
|
||||
`/api/frontend/v1/Stundenplan/getLvStundenplanForStudiensemester/${studiensemester}/${lvid}`,
|
||||
{
|
||||
}
|
||||
);
|
||||
},
|
||||
getLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {
|
||||
return this.$fhcApi.get(
|
||||
`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,
|
||||
{
|
||||
}
|
||||
);
|
||||
},
|
||||
|
||||
}
|
||||
@@ -7,6 +7,11 @@ export default {
|
||||
},
|
||||
containerStyles: Array,
|
||||
rowStyles: Array,
|
||||
hasLvStundenplanEintraege: {
|
||||
required:false,
|
||||
default:true,
|
||||
type:Boolean,
|
||||
},
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
@@ -18,6 +23,9 @@ export default {
|
||||
if (!this.c4_link(menuItem) && !menuItem.c4_moodle_links?.length) {
|
||||
return true;
|
||||
}
|
||||
if (menuItem.id == "addon_fhtw_menu_lvplan_lva" && !this.hasLvStundenplanEintraege){
|
||||
return true;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
c4_target: function (menuItem) {
|
||||
|
||||
@@ -33,7 +33,8 @@ export default {
|
||||
result: false,
|
||||
menu: [],
|
||||
isMenuSelected:false,
|
||||
|
||||
hasLvStundenplanEintraege: true,
|
||||
lvEvaluierungMessage: "",
|
||||
}
|
||||
},
|
||||
mixins:[BsModal],
|
||||
@@ -41,6 +42,7 @@ export default {
|
||||
BsModal,
|
||||
LvMenu,
|
||||
},
|
||||
inject: ["studium_studiensemester"],
|
||||
methods:{
|
||||
|
||||
hiddenModal: function(){
|
||||
@@ -58,9 +60,32 @@ export default {
|
||||
} else {
|
||||
this.isMenuSelected = true;
|
||||
}
|
||||
|
||||
// check lv evaluierung info
|
||||
if (this.studium_studiensemester) {
|
||||
this.$fhcApi.factory.studium.getLvEvaluierungInfo(this.studium_studiensemester, this.event.lehreinheit_id ?? this.event.lehrveranstaltung_id)
|
||||
.then(data => data.data)
|
||||
.then(res => {
|
||||
this.lvEvaluierungMessage = res.message;
|
||||
})
|
||||
}
|
||||
|
||||
// check if the lv has stundenplan entries for this studiensemester
|
||||
if (this.studiensemester && this.event) {
|
||||
return this.$fhcApi.factory.studium.getLvStundenplanForStudiensemester(this.studiensemester, this.event.lehreinheit_id ?? this.event.lehrveranstaltung_id)
|
||||
.then(data => data.data)
|
||||
.then(res => {
|
||||
if (Array.isArray(res) && res.length > 0) {
|
||||
this.hasLvStundenplanEintraege = true;
|
||||
} else {
|
||||
this.hasLvStundenplanEintraege = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
},
|
||||
mounted(){
|
||||
mounted(){
|
||||
this.modal = this.$refs.modalContainer;
|
||||
},
|
||||
beforeUnmount(){
|
||||
@@ -68,7 +93,7 @@ export default {
|
||||
},
|
||||
template:/*html*/`
|
||||
<bs-modal :bodyClass="isMenuSelected ? '' : 'px-4 py-5'" @showBsModal="showModal" @hiddenBsModal="hiddenModal" ref="modalContainer" :dialogClass="{'modal-lg': !isMenuSelected, 'modal-fullscreen':isMenuSelected}">
|
||||
|
||||
|
||||
<template #title>
|
||||
<template v-if="titel">
|
||||
<span>{{titel}}</span>
|
||||
@@ -80,8 +105,9 @@ export default {
|
||||
|
||||
</template>
|
||||
<template #default>
|
||||
<div class="mb-4" v-if="lvEvaluierungMessage" v-html="lvEvaluierungMessage"></div>
|
||||
<slot name="content"></slot>
|
||||
<lv-menu v-model:isMenuSelected="isMenuSelected" :preselectedMenu="preselectedMenu" :menu="menu" @hideModal="hide"></lv-menu>
|
||||
<lv-menu v-model:isMenuSelected="isMenuSelected" :hasLvStundenplanEintraege="hasLvStundenplanEintraege" :preselectedMenu="preselectedMenu" :menu="menu" @hideModal="hide"></lv-menu>
|
||||
</template>
|
||||
|
||||
</bs-modal>
|
||||
|
||||
@@ -17,6 +17,15 @@ export default {
|
||||
menu:null,
|
||||
}
|
||||
},
|
||||
provide(){
|
||||
return {
|
||||
studium_studiengang : Vue.computed(()=> this.selectedStudiengang),
|
||||
studium_studiensemester: Vue.computed(() => this.selectedStudiensemester),
|
||||
studium_semester: Vue.computed(() => this.selectedSemester),
|
||||
studium_studienordnung: Vue.computed(() => this.selectedStudienordnung),
|
||||
|
||||
}
|
||||
},
|
||||
components: {
|
||||
LvUebersicht,
|
||||
},
|
||||
@@ -116,10 +125,11 @@ export default {
|
||||
//convert lehrveranstaltung properties for compatibility with Stundenplan LvModal
|
||||
this.selectedLehrveranstaltung.type ="lehreinheit";
|
||||
this.selectedLehrveranstaltung.lehreinheit_id = this.selectedLehrveranstaltung.lehrveranstaltung_id;
|
||||
if(this.selectedLehrveranstaltung)
|
||||
if(this.selectedLehrveranstaltung){
|
||||
Vue.nextTick(()=>{
|
||||
this.$refs.lvUebersicht.show();
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
sortStudienSemester(studienSemester){
|
||||
@@ -196,7 +206,7 @@ export default {
|
||||
this.$fhcApi.factory.studium.getAllStudienSemester(studiensemester, studiengang, semester, studienordnung)
|
||||
.then(data => data.data)
|
||||
.then(res => {
|
||||
this. extractPropertyValues(res);
|
||||
this.extractPropertyValues(res);
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user