mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-19 16:02:15 +00:00
adds the LvMenu as dropdown options to the MyLV
This commit is contained in:
@@ -9,6 +9,10 @@ export default {
|
||||
type:Array,
|
||||
default:null,
|
||||
},
|
||||
preselectedMenu: {
|
||||
type: Object,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
@@ -44,11 +48,26 @@ export default {
|
||||
|
||||
|
||||
},
|
||||
back: function(){
|
||||
if(this.preselectedMenu){
|
||||
this.$emit('hideModal');
|
||||
}else{
|
||||
this.$emit('update:isMenuSelected', false);
|
||||
}
|
||||
},
|
||||
},
|
||||
watch:{
|
||||
'preselectedMenu': function (newValue) {
|
||||
if (newValue) {
|
||||
this.selectedMenu = newValue;
|
||||
this.$emit("update:isMenuSelected", true);
|
||||
}
|
||||
}
|
||||
},
|
||||
template:/*html*/`
|
||||
<div v-if="selectedMenu" class="d-flex flex-column h-100">
|
||||
<div class="d-flex mb-2">
|
||||
<button v-if="selectedMenu" @click="$emit('update:isMenuSelected', false)" class="btn btn-secondary me-2"><i class="fa fa-chevron-left"></i> Back</button>
|
||||
<button v-if="selectedMenu" @click="back" class="btn btn-secondary me-2"><i class="fa fa-chevron-left"></i> Back</button>
|
||||
<h2>{{selectedMenu.name}}</h2>
|
||||
</div>
|
||||
<iframe class="h-100 w-100" :src="selectedMenu.c4_link" :title="selectedMenu.name"></iframe>
|
||||
|
||||
@@ -7,7 +7,13 @@ export default {
|
||||
type:Object,
|
||||
required:true,
|
||||
default:null,
|
||||
}
|
||||
},
|
||||
// prop used to preselect a menu item and skip the grid overview
|
||||
preselectedMenu: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: null,
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
@@ -28,12 +34,15 @@ export default {
|
||||
this.isMenuSelected = false;
|
||||
},
|
||||
showModal: function(){
|
||||
|
||||
this.$fhcApi.factory.addons.getLvMenu(this.event.lehrveranstaltung_id, this.event.studiensemester_kurzbz).then(res =>{
|
||||
if(res.data){
|
||||
this.menu = res.data;
|
||||
}
|
||||
});
|
||||
if(!this.preselectedMenu){
|
||||
this.$fhcApi.factory.addons.getLvMenu(this.event.lehrveranstaltung_id, this.event.studiensemester_kurzbz).then(res =>{
|
||||
if(res.data){
|
||||
this.menu = res.data;
|
||||
}
|
||||
});
|
||||
}else{
|
||||
this.isMenuSelected = true;
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted(){
|
||||
@@ -47,7 +56,7 @@ export default {
|
||||
|
||||
</template>
|
||||
<template #default>
|
||||
<lv-menu v-model:isMenuSelected="isMenuSelected" :menu="menu"></lv-menu>
|
||||
<lv-menu v-model:isMenuSelected="isMenuSelected" :preselectedMenu="preselectedMenu" :menu="menu" @hideModal="hide"></lv-menu>
|
||||
</template>
|
||||
|
||||
</bs-modal>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import LvPruefungen from "./Lv/Pruefungen.js";
|
||||
import LvInfo from "./Lv/Info.js";
|
||||
import Phrasen from "../../../../../mixins/Phrasen.js";
|
||||
import LvUebersicht from "../../LvUebersicht.js";
|
||||
|
||||
// TODO(chris): L10n
|
||||
|
||||
export default {
|
||||
components:{
|
||||
LvUebersicht,
|
||||
},
|
||||
mixins: [
|
||||
Phrasen
|
||||
],
|
||||
@@ -29,7 +33,9 @@ export default {
|
||||
data: () => {
|
||||
return {
|
||||
pruefungen: null,
|
||||
info: null
|
||||
info: null,
|
||||
menu: null,
|
||||
preselectedMenuItem: null,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -44,6 +50,28 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openLvOption(menuItem){
|
||||
if (menuItem.id == "core_menu_mailanstudierende"){
|
||||
window.location.href = menuItem.c4_link;
|
||||
}else{
|
||||
this.preselectedMenuItem = menuItem;
|
||||
Vue.nextTick(() => {
|
||||
this.$refs.lvUebersicht.show();
|
||||
});
|
||||
}
|
||||
},
|
||||
onShowDropdown(){
|
||||
//load menu
|
||||
this.$fhcApi.factory.addons.getLvMenu(this.lehrveranstaltung_id, this.studien_semester)
|
||||
.then(res => {
|
||||
this.menu = res.data;
|
||||
})
|
||||
.catch((error) => this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
onHideDropdown(){
|
||||
//reset menu
|
||||
this.menu = null;
|
||||
},
|
||||
openPruefungen() {
|
||||
if (!this.pruefungen) {
|
||||
this.pruefungen = true;
|
||||
@@ -71,7 +99,15 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
template: `<div class="mylv-semester-studiengang-lv card">
|
||||
template: /*html*/`<div class="mylv-semester-studiengang-lv card">
|
||||
|
||||
<lv-uebersicht ref="lvUebersicht" :preselectedMenu="preselectedMenuItem" :event="{
|
||||
lehrveranstaltung_id: lehrveranstaltung_id,
|
||||
studiensemester_kurzbz:studien_semester,
|
||||
lehrfach_bez:studien_semester,
|
||||
stg_kurzbzlang:studien_semester,
|
||||
}"/>
|
||||
|
||||
<div v-if="module" class="card-header">
|
||||
{{module}}
|
||||
</div>
|
||||
@@ -80,11 +116,26 @@ export default {
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="row">
|
||||
<a href="#" class="col-auto text-start text-decoration-none" @click.prevent="openPruefungen">
|
||||
<a href="#" class="col text-start text-decoration-none" @click.prevent="openPruefungen">
|
||||
<i class="fa fa-check text-success" v-if="positiv"></i>
|
||||
{{ grade || p.t('lehre/noGrades') }}
|
||||
</a>
|
||||
<div v-if="lvinfo" class="col text-end">
|
||||
<div class="col-auto text-end">
|
||||
<div class="dropdown">
|
||||
<span @[\`show.bs.dropdown\`]="onShowDropdown" @[\`hide.bs.dropdown\`]="onHideDropdown" class="dropdown-toggle" type="button" id="LvOptions" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
{{$p.t('lehre','lvOptions')}}
|
||||
</span>
|
||||
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="LvOptions">
|
||||
<template v-if="menu">
|
||||
<li v-for="menuItem in menu" @click="openLvOption(menuItem)"><span type="button" class="dropdown-item" >{{menuItem.name}}</span></li>
|
||||
</template>
|
||||
<template v-else>
|
||||
<li class="text-center"><i class="fa-solid fa-spinner fa-pulse fa-3x"></i></li>
|
||||
</template>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="lvinfo" class="col-auto text-end">
|
||||
<a class="card-link" href="#" @click.prevent="openInfos">
|
||||
<i class="fa fa-info-circle" aria-hidden="true"></i>
|
||||
</a>
|
||||
|
||||
@@ -61,8 +61,9 @@ export default {
|
||||
},
|
||||
showLvUebersicht: function (event){
|
||||
this.selectedEvent= event;
|
||||
Vue.nextTick(()=>{this.$refs.lvUebersicht.show();});
|
||||
|
||||
Vue.nextTick(()=>{
|
||||
this.$refs.lvUebersicht.show();
|
||||
});
|
||||
},
|
||||
|
||||
selectDay(day) {
|
||||
|
||||
@@ -2684,6 +2684,26 @@ $phrases = array(
|
||||
),
|
||||
|
||||
//**************** CORE/lehre
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'lvOptions',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Lehrveranstaltungsoptionen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Course options',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
|
||||
Reference in New Issue
Block a user