diff options
| -rw-r--r-- | src/coaching.js | 12 | ||||
| -rw-r--r-- | src/utils-mock.js | 9 | ||||
| -rw-r--r-- | src/utils-prod.js | 14 |
3 files changed, 32 insertions, 3 deletions
diff --git a/src/coaching.js b/src/coaching.js index 8b97784..2fd2429 100644 --- a/src/coaching.js +++ b/src/coaching.js @@ -1,10 +1,12 @@ import { fetchStudents } from "./student-ENV.ts"; -import { getName } from "./utils-ENV.js"; +import { getName, getActivityUrl } from "./utils-ENV.js"; let name; async function loadGroup() { + const cockpitUrlPromise = getActivityUrl("Cockpit"); + const students = await fetchStudents(); const graduationPromises = []; document.getElementById("group-content").style.display = "block"; @@ -34,13 +36,17 @@ async function loadGroup() { for (const li of listEntries) { const student = li.student; - if (!student.graduation.coaches.includes(name)) - continue; + if (!student.graduation.coaches.includes(name)) continue; const n = document.createElement("span"); n.classList.add("group-member-name"); n.innerHTML = `${student.name}`; li.appendChild(n); + n.addEventListener("click", async function () { + const cockpitUrl = new URL(await cockpitUrlPromise, window.location.origin); + cockpitUrl.searchParams.append("userToLoad", student.id); + window.location = cockpitUrl; + }); for (const col of ["green", "orange", "red"]) { const s = document.createElement("span"); diff --git a/src/utils-mock.js b/src/utils-mock.js index 7ee3779..5457700 100644 --- a/src/utils-mock.js +++ b/src/utils-mock.js @@ -38,6 +38,15 @@ export function getUserId() { return fetchStudentsMock.filter((s) => s.name === name)[0].id; } +export function getActivityUrl(name) { + switch (name) { + case "Cockpit": + return "cockpit.html"; + default: + return ""; + } +} + export function getCourseId() { return "1337"; } diff --git a/src/utils-prod.js b/src/utils-prod.js index 7af3406..bc5868f 100644 --- a/src/utils-prod.js +++ b/src/utils-prod.js @@ -40,6 +40,20 @@ export function getCourseId() { return String(M.cfg.courseId); } +export async function getActivityUrl(name) { + const courseUrl = `https://lernplattform.bycs.de/course/view.php?id=${getCourseId()}`; + const courseRes = await fetch(courseUrl); + const courseDoc = new DOMParser().parseFromString(await courseRes.text(), "text/html"); + for (const n of courseDoc.querySelectorAll(".activity-name-area")) { + if (n.textContent.includes(name)) { + const match = /id=(\d+)/.exec(n.querySelector(".aalink").href); + return `/mod/page/view.php?id=${match[1]}`; + } + } + + return ""; +} + export function getSesskey() { // M is exported by Moodle return String(M.cfg.sesskey); |
