aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/coaching.js12
-rw-r--r--src/utils-mock.js9
-rw-r--r--src/utils-prod.js14
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);