// ==UserScript==
// @name Moodle Show Calendar Course Info
// @match https://www.moodle.tum.de/my/
// @grant none
// @version 1.0
// @namespace xarantolus
// @author xarantolus
// @description Show course names in the "current deadlines" view on the start page of Moodle
// ==/UserScript==
function getCourseID(courseURL) {
let params = new URLSearchParams((new URL(courseURL)).search);
return params.get("course") || params.get("id");
}
function annotateCalendarEvents() {
let courseInfo = [...document.querySelectorAll("a[href*=course\\/view\\.php\\?id]")];
let calendarEvents = [...document.querySelectorAll("a[href*=calendar\\/view\\.php]")].filter(e => e.href.includes("course="));
for (let evt of calendarEvents) {
let courseID = getCourseID(evt.href);
let courseTitle = courseInfo.find(x => x.title && x.href.endsWith(courseID))?.title?.trim()
if (!courseTitle) continue;
// Yep, injections could be possible, but I don't care
evt.insertAdjacentHTML("beforebegin", "" + courseTitle + "
");
}
console.log(courseInfo);
}
annotateCalendarEvents();