diff --git a/matterhorn.user.js b/matterhorn.user.js new file mode 100644 index 0000000..772d97a --- /dev/null +++ b/matterhorn.user.js @@ -0,0 +1,40 @@ +// ==UserScript== +// @name Enable Matterhorn Engage Downloads +// @namespace https://mh-engage.ltcc.tuwien.ac.at +// @include https://mh-engage.ltcc.tuwien.ac.at/engage/ui/watch.html?id=* +// @version 1 +// @grant none +// ==/UserScript== + +// Matterhorn Engage supports downloading of streams but it's disabled in the front end. + +// Opencast.download.showLinks() fills #oc_client_downloads with download links during +// page load. The function, however, checks if a certain attribute is set and if yes it +// doesn't show certain links. We disable that check so that it always evaluates to true. +var showLinks = Opencast.download.showLinks.toString(); +showLinks = showLinks.replace("media[i][\"tags\"][\"tag\"].indexOf('engage')", '-1'); +Opencast.download.showLinks = eval('(' + showLinks + ')'); + +// Fix the icon of the download button. +$("").appendTo("head"); + +// Save the state of the download button so we can restore it once it has been removed. +var download_button = null; +$(function () { + download_button = $('#oc_download-button'); +}); + +// #oc_download-button is detached() from an asynchronous AJAX call. +// So we've to readd it once all AJAX calls have been finished. +$(document).ajaxStop(function () { + if ($('#oc_download-button').parent().html() === null) { + $('#oc_player-head-right').append(download_button); + } +});