Commit 68f043f2 authored by Martin Vögeli's avatar Martin Vögeli
Browse files

JS written so far without Git

parent 7167e6ba
# pauljs
Das JavaScript zur Anpassung des Verhaltens von PAUL und RemUI ist einzufügen unter:
Website-Administration > Darstellung > Zusätzliches HTML > Vor dem Schließen von BODY
Direkter Link: https://paul.zhdk.ch/admin/settings.php?section=additionalhtml
Nach Änderungen am Code den Cache löschen: https://paul.zhdk.ch/admin/purgecaches.php
<script type="text/javascript">
// // // // //
// Version 2019/09/19 by Voma
// // // // //
var headers1 = document.getElementsByTagName('h1');
var headers2 = document.getElementsByTagName('h2');
var links = document.getElementsByTagName("a");
var murl = location.href.includes("anna") ? "https://paul.zhdk.ch/anna/" : "https://paul.zhdk.ch/";
var mfaq = location.href.includes("anna") ?
murl+"mod/glossary/showentry.php?courseid=3&eid=1&idnumber=" :
murl+"mod/glossary/showentry.php?courseid=3&eid=129&displayformat=dictionary&idnumber=";
function isCoursePage(){
return location.href.includes(murl+"course/view.php?id=") || location.href.includes(murl+"course/view.php?idnumber=");
}
// Funktioniert nur auf der Kurs-Startseite
function getCourseHome(){
for (var i in links) {
if(typeof links[i].dataset !== "undefined"){
if(links[i].dataset.key == "coursehome"){
return links[i].href;
}
}
}
}
function getSearchParam(param){
var myurl = new URL(location.href);
return (myurl.searchParams.get(param) === null) ? 0 : myurl.searchParams.get(param);
}
// https://stackoverflow.com/questions/4793604/how-to-insert-an-element-after-another-element-in-javascript-without-using-a-lib
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
/* Voma Start: Verbergen des Blogs auf der Startseite */
if(location.href == murl){
for (i=0; i<headers2.length; i++) {
if (headers2[i].innerHTML == "Blog"){
headers2[i].closest("div.container").style.display = "none"; break;
}
}
}
/* Voma Ende: Verbergen des Blogs auf der Startseite */
/* Voma Start: Persönlichen Blog verlinken */
var userid = 1; // guest
for (var i=0; i<links.length; i++) {
if (links[i].href.includes(murl+"user/profile.php?id=")){
userid = links[i].href.split("=")[1];
}
else if (links[i].href == murl+"blog/"){
links[i].href = murl+"blog/index.php?userid=" + userid; break;
}
}
/* Voma Ende: Persönlichen Blog verlinken */
/* Voma Start: Einträge im Nutzermenü auf Englisch ändern */
if(document.documentElement.lang == "en"){
for(var i=0; i<links.length; i++) {
if(links[i].href == murl+"course/edit.php?category=1"){
links[i].innerHTML = links[i].innerHTML.replace(/Neuen Kurs anlegen/g, "Create new course");
}
else if (links[i].href == murl+"course/management.php?categoryid=1"){
links[i].innerHTML = links[i].innerHTML.replace(/Kurse verwalten/g, "Manage course");
}
else if (links[i].href == murl+"user/editadvanced.php?id=-1"){
links[i].innerHTML = links[i].innerHTML.replace(/Accounts für Externe/g, "Accounts for externals");
}
else if (links[i].href == murl+"user/preferences.php"){
links[i].innerHTML = links[i].innerHTML.replace(/Einstellungen/g, "Settings");
}
else if(links[i].href.includes(murl+"login/logout.php")){
break;
}
}
}
/* Voma Ende: Einträge im Nutzermenü auf Englisch ändern */
/* Voma Start: Authentifizierung deaktivieren (Nutzer/in anlegen) */
if(location.href == murl+"user/editadvanced.php?id=-1"){
document.getElementById('id_auth').disabled=true;
}
/* Voma Ende: Authentifizierung deaktivieren (Nutzer/in anlegen) */
/* Voma Start: Aufklappbare Themenblöcke: (De) Aktivitäten -> Inhalte; (En) Activities -> Contents */
/* Überholt? Falls ja, entfernen!
if(location.href.includes("#module-206")){ // &section=1#module-206
for(var i=0; i<links.length; i++) {
if(links[i].innerHTML.includes('Aktivitäten<i class="fa-angle-up float-right"></i>')){
links[i].innerHTML = links[i].innerHTML.replace(/Aktivitäten/g, "Inhalte"); break;
}
if(links[i].innerHTML.includes('Activities<i class="fa-angle-up float-right"></i>')){
links[i].innerHTML = links[i].innerHTML.replace(/Activities/g, "Contents"); break;
}
}
}
*/
/* Voma Ende: Aufklappbare Themenblöcke: (De) Aktivitäten: Inhalte; (En) Activities: Contents */
/* Voma Start: Anzeigen, dass Kurs verborgen ist */
if(isCoursePage()){ // &section=1#module-206
for (var i in links) {
if(typeof links[i].dataset !== "undefined"){
if(links[i].dataset.key == "participants" && links[i].dataset.hidden == 1){
for(var j in headers1){
if(headers1[j].className == "page-title"){
var textHidden = "Für Teilnehmer/innen verborgen";
if(document.documentElement.lang == "en"){
textHidden = "Hidden from students";
}
var linkEdit = getCourseHome().replace(/view/g, "edit");
headers1[j].innerHTML = headers1[j].innerHTML + ' <a class="badge badge-pill mb-10" style="margin-left: 20px !important" href="'+linkEdit+'">'+textHidden+'</a>';
}
}
}
}
}
}
/* Voma Start: Anzeigen, dass Kurs verborgen ist */
/* Voma Start: Fehlermeldung nach dem Erstellen eines Accounts überschreiben / verbergen */
if(location.href == murl+"admin/user.php"){
var para = document.getElementsByTagName("p");
if(para[0].className == "errormessage"){
if(para[0].innerHTML == "Access denied"){
para[0].innerHTML = "Account created :-)";
para[1].style.display = "none";
} else if (para[0].innerHTML == "Kein Zugriff"){
para[0].innerHTML = "Account erstellt :-)";
para[1].style.display = "none";
}
}
}
/* Voma Ende: Fehlermeldung nach dem Erstellen eines Accounts überschreiben / verbergen */
/* Voma Start: Grösse von Vimeo beim Einbetten anpassen */
if(location.href.includes(murl+"mod/url/view.php?id=")){
var iframe = document.getElementsByTagName("iframe");
for(var i=0; i<iframe.length; i++) {
if(iframe[i].src.includes("https://player.vimeo.com/video/")){
iframe[i].width = iframe[i].parentElement.clientWidth;
iframe[i].height = Math.round(0.5625*iframe[i].width);
}
}
}
/* Voma Ende: Grösse von Vimeo beim Einbetten anpassen */
/* Voma Start: Zufälliges Bild in Kursbeschreibung zeigen */
/* Überholt? Falls ja, entfernen!
var divs = document.getElementsByTagName('div');
setTimeout(function(){
var imgs = new Array();
imgs[imgs.length] = murl+"pluginfile.php/66/course/summary/0.png";
imgs[imgs.length] = murl+"pluginfile.php/66/course/summary/1.png";
imgs[imgs.length] = murl+"pluginfile.php/66/course/summary/2.png";
divs = document.getElementsByTagName('div');
var placeholder0 = murl+"theme/image.php/remui/theme/";
var placeholder1 = "1522760156"; // Zeitstempel ändert öfters
var placeholder2 = "/placeholder";
for (var i in divs) {
if (typeof divs[i].style !== 'undefined'){
if (typeof divs[i].style.backgroundImage !== 'undefined'){
if (divs[i].style.backgroundImage.includes(placeholder2)){
placeholder1 = parseInt(divs[i].style.backgroundImage.split(placeholder0)[1]);
var rand = Math.floor(Math.random() * imgs.length);
divs[i].style.backgroundImage = divs[i].style.backgroundImage.replace(placeholder0+placeholder1+placeholder2, imgs[rand]);
}
}
}
}
}, 7676);
*/
/* Voma Ende: Zufälliges Bild in Kursbeschreibung zeigen */
/* Voma Start: Gibt es diese idnumber nicht? Weiterleitung zur Erstellung */
if(location.href.includes("view.php?idnumber=")){
for (var i in divs) {
if(divs[i].dataset.rel == "fatalerror"){
var idnumber = parseInt(getSearchParam("idnumber"));
var mac = getSearchParam("mac");
var abra = murl+"abra/?usr=2&zid="+idnumber+"&mac="+mac;
// var jasc = 'onclick="window.location=this.href; this.parentNode.parentNode.innerHTML=\'<h1>⏳</h1>\';return false;"';
var jasc = 'onclick="window.location=this.href; this.parentNode.parentNode.innerHTML=\'<img src=https://paul.zhdk.ch/pluginfile.php/66/course/summary/paul-wartend.gif />\'; return false;"';
mfaq = mfaq+idnumber;
var msg = "<ul><li><a href='"+abra+"' "+jasc+">Ich will einen neuen PAUL-Kurs erstellen.</a></li>";
msg = msg + "<li><a href='"+mfaq+"'>Ich will einen bestehenden PAUL-Kurs verbinden.</a></li></ul>";
var btn1 = 'Weiter'; var btn2 = 'Abbrechen';
document.title = 'PAUL-Kurs erstellen / verbinden';
if(document.documentElement.lang == "en"){
msg = "<ul><li><a href='"+abra+"' "+jasc+">I want to create a new PAUL course.</a></li>";
msg = msg + "<li><a href='"+mfaq+"'>I want to connect an existing PAUL course.</a></li></ul>";
btn1 = 'Continue'; btn2 = 'Cancel';
document.title = 'Create / connect a new PAUL course';
}
divs[i].innerHTML = msg;
var input = document.getElementsByTagName("button");
for (var i in input) {
if(input[i].innerHTML == btn1){
input[i].innerHTML = btn2;
}
}
}
}
}
/* Voma Start: Gibt es diese idnumber nicht? Weiterleitung zur Erstellung */
/* Voma Start: Kurs-ID in FAQ ersetzten */
if(location.href.includes("idnumber=")){
var idnumber = parseInt(getSearchParam("idnumber"));
document.body.innerHTML = document.body.innerHTML.replace(/XXXXXX/g, idnumber);
}
/* Voma Ende: Kurs-ID in FAQ ersetzten */
/* Voma Start: Eintragen von Id ins Formular für neuen Kurs */
/* if(location.href.includes("edit.php?category=1&idnumber=")){
var idnumber = parseInt(getSearchParam("idnumber"));
document.getElementById("id_idnumber").value = idnumber;
} */
/* Voma Ende: Eintragen von Id ins Formular für neuen Kurs */
/* Voma Start: Icons in Kursbschreibung durch Text ersetzen */
// https://stackoverflow.com/questions/17965956/how-to-get-element-by-class-name
setTimeout(function(){
var fas = [].slice.call(document.getElementsByClassName("fa-key"));
fas = fas.concat([].slice.call(document.getElementsByClassName("fa-sign-in")));
fas = fas.concat([].slice.call(document.getElementsByClassName("fa-unlock-alt")));
for (var i in fas) {
fas[i].innerHTML = fas[i].title + " ";
fas[i].className = "card-text";
}
var enrolmenticons = document.getElementsByClassName("enrolmenticons");
for (var i in enrolmenticons) {
if (typeof enrolmenticons[i].innerHTML !== 'undefined'){
if(enrolmenticons[i].innerHTML.trim() == ""){
if(document.documentElement.lang == "en"){
enrolmenticons[i].innerHTML = '<i class="card-text">Manual enrolments (restricted)</i>';
}else{
enrolmenticons[i].innerHTML = '<i class="card-text">Manuelle Einschreibung (auf Einladung)</i>';
}
}
}
}
}, 1000);
/* Voma Ende: Icons in Kursbschreibung durch Text ersetzen */
/* Voma Start: Kurs-Suche von RemUI flicken */
/* Gefixt? Falls ja, entfernen!
var forms = [document.getElementById("coursesearch") || null];
forms[forms.length] = document.getElementById("coursesearch2") || null;
forms[forms.length] = document.getElementById("coursesearchnavbar") || null;
for (var i in forms) {
if(forms[i]) {
forms[i].action = murl+"course/search.php";
}
}
*/
/* Voma Ende: Kurs-Suche von RemUI flicken */
/* Voma Start: Nutzer/innen (Evento) synchronisieren */
if(location.href.includes("user/index.php?")){
var enrol = "Nutzer/innen einschreiben";
var userrole = "Teilnehmer/innen @Evento";
var userrolesingular = "Teilnehmer/in @Evento";
var sync = userrole+" synchronisieren";
var noroles = "Keine Rollen";
if(document.documentElement.lang == "en"){
enrol = "Enrol users";
sync = "Sync "+userrole;
noroles = "No roles";
}
var input = document.getElementsByTagName("input");
for (var i in input) {
if(input[i].value == enrol){
var el = document.createElement("input");
el.value = sync;
el.className = input[i].className;
el.type = "button";
var id = parseInt(getSearchParam("id"));
el.onclick = function() {location.href=murl+"abra/?usr=2&mid="+id;};
insertAfter(input[i], el);
el = document.createElement("span");
el.innerHTML = " ";
insertAfter(input[i], el);
}
// Keine Rollen bei @Evento überschreiben (Bug?)
var td = document.getElementsByTagName('td');
for(i in td){if(td[i].innerHTML == noroles){td[i].innerHTML = userrolesingular;}}
}
}
/* Voma Ende: Nutzer/innen (Evento) synchronisieren */
/* Wema Start: Maintenance-Info */
/*document.getElementById('site-navbar-collapse').insertAdjacentHTML('beforeend','<div style="font-size: 9px; color: #D71964; padding-top: 1.5715rem;"><strong>Wartungsfenster: </strong>Heute Abend wird PAUL aktualisiert. Dabei kann es kurzfristig zu Unterbrechungen kommen. LG, PAUL</div>');*/
/* Wema Ende: Maintenance-Info */
</script>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment