REST Service for POPCORN - ILIAS
alex
2025-07-11 a5dcd68d7f47302abdc6c479269c79edf6d21686
GS-2174
7 files modified
66 ■■■■ changed files
vue/.env 2 ●●●●● patch | view | raw | blame | history
vue/.env.example 2 ●●●●● patch | view | raw | blame | history
vue/.env.production 2 ●●●●● patch | view | raw | blame | history
vue/src/App.vue 1 ●●●● patch | view | raw | blame | history
vue/src/assets/styles.styl 2 ●●●●● patch | view | raw | blame | history
vue/src/lib/api.js 1 ●●●● patch | view | raw | blame | history
vue/src/pages/KursDetail.vue 56 ●●●● patch | view | raw | blame | history
vue/.env
@@ -1,3 +1,5 @@
VITE_API_BASE="/api"
VITE_ILIAS_BASE="http://localhost:8060"
VITE_POPCORN_BASE="http://localhost:3000"
VITE_POPCORN_BASE2="http://localhost:3000"
VITE_ROUTER_BASE=""
vue/.env.example
@@ -1,3 +1,5 @@
VITE_API_BASE="/api"
VITE_ILIAS_BASE="http://localhost:8060"
VITE_POPCORN_BASE="http://localhost:3000"
VITE_POPCORN_BASE2="http://localhost:3000"
VITE_ROUTER_BASE=""
vue/.env.production
@@ -1,3 +1,5 @@
VITE_API_BASE="https://globusfm-dev2.minervis.com/popcorn/api"
VITE_ILIAS_BASE="https://globusfm-dev2.minervis.com"
VITE_POPCORN_BASE="http://localhost:3000"
VITE_POPCORN_BASE2="http://localhost:3000"
VITE_ROUTER_BASE="/popcorn"
vue/src/App.vue
@@ -8,6 +8,7 @@
console.log("import.meta.env.VITE_API_BASE",import.meta.env.VITE_API_BASE)
console.log("import.meta.env.VITE_ILIAS_BASE",import.meta.env.VITE_ILIAS_BASE)
console.log("import.meta.env.VITE_POPCORN_BASE",import.meta.env.VITE_POPCORN_BASE2)
console.log("import.meta.env.VITE_ROUTER_BASE",import.meta.env.VITE_ROUTER_BASE)
const apiToken = ref("")
vue/src/assets/styles.styl
@@ -23,6 +23,8 @@
.ml-1
   margin-left 1em
.text-right
   text-align right
h1
   color #e39300
vue/src/lib/api.js
@@ -18,6 +18,7 @@
export const apiBase = import.meta.env.VITE_API_BASE
export const iliasBase = import.meta.env.VITE_ILIAS_BASE
export const popcornBase = import.meta.env.VITE_POPCORN_BASE2
export const routerBase = import.meta.env.VITE_ROUTER_BASE
/////// KURS ////////////////////////////////////////////////////////////////
vue/src/pages/KursDetail.vue
@@ -2,7 +2,15 @@
import {useRoute} from 'vue-router'
import {onMounted, reactive, ref} from "vue"
import {getKurs, getKursItems, getKursRoles, getKursTn, getKursTnByRole, iliasBase, routerBase} from "../lib/api.js"
import {
   getKurs,
   getKursItems,
   getKursRoles,
   getKursTn,
   getKursTnByRole,
   iliasBase,
   popcornBase,
} from "../lib/api.js"
import LinkExtern from "../components/LinkExtern.vue"
import dayjs from "dayjs"
import KursItems from '../components/KursItems.vue'
@@ -10,16 +18,15 @@
import KursMembers from '../components/KursMembers.vue'
import KursTnByRole from '../components/KursTnByRole.vue'
const route = useRoute()
const kursId = route.params.kursId
document.title = `Kurs ${kursId} | globus-ilias-rest`
const kurs = ref(null)
const kursItems = ref(null)
const kursTn = ref(null)
const kursTnByRolle = ref(null)
const kursRoles = ref(null)
const kursItems = ref([])
const kursTn = ref([])
const kursTnByRolle = ref([])
const kursRoles = ref([])
const error = ref(null)
onMounted(init)
@@ -65,8 +72,9 @@
      <p v-if="error">{{ error }}</p>
      <div class="user" v-if="kurs">
      <div class="kurs" v-if="kurs">
         <div>
         <span>ref_id</span>
         <div>
            <a :href="`${iliasBase}/goto.php?target=${kurs.type}_${kurs.ref_id}`" target="_blank">
@@ -74,15 +82,29 @@
               <LinkExtern />
            </a>
         </div>
         </div>
         <div>
         <span>obj_id</span>
         <div>{{ kurs.obj_id }}</div>
         </div>
         <span style="margin-top: 1em;">title</span>
         <div style="grid-column: span 3; margin-top: 1em">{{ kurs.title }}</div>
         <div class="text-right" style="grid-column: span 2; justify-content: flex-end">
            <a :href="`${popcornBase}/anmeldungen?query=iliasId:${kurs.ref_id}&terminFilter=alle`" target="_blank">
               Search in 🍿
            </a>
         </div>
         <div style="grid-column: span 2">
            <span style="">title</span>
            <div style="">{{ kurs.title }}</div>
         </div>
         <div style="grid-column: span 2;">
         <span>description</span>
         <div style="grid-column: span 3">{{ kurs.description }}</div>
         </div>
      </div>
@@ -123,4 +145,20 @@
   display flex;
   gap 2em
.kurs
   padding 1em
   border 1px solid #aaa
   border-radius .33em
   box-shadow 1px 1px 3px #333 inset, 1px 1px 100px #ddd inset
   display grid;
   grid-template-columns 1fr 1fr 1fr 1fr
   gap 1em
   span
      font-variant small-caps
      color #555
   &>*
      display flex
      gap 1em
</style>