(Moodle/mebis) Kurs reparieren

🚑

Wann brauche ich das?

Wenn man in einen mebis Kursraum
  • eigene Skripte,
  • eigene Styles oder auch
  • nicht geschlossene HTML-Tags (Divs, Listen, Tabellenbruchstücke u.v.m.)
einfügt (dies kann bspw. auch durch Einfügen von Inhalten aus formatierten Textdokumenten auch außerhalb des HTML-Bearbeitungsmodus verursacht werden), kann es passieren,
  • dass man anschließend nicht mehr in den Bearbeitungsmodus wechseln kann oder
  • dass Schaltflächen oder Drop-Down-Menüs auch bei eingeschaltetem Bearbeitungsmodus nicht mehr anklickbar sind
oder dass diese schlicht nicht angezeigt werden oder außerhalb des durch Scrollen erreichbaren Bereichs liegen.

Weg 1: Ansicht ohne Stil

A Im Firefox

Im Firefox gelangt man bei eingeschalteter Menüleiste über "Ansicht" > "Webseiten-Stil" > "Kein Stil" zu einer Ansicht, bei der alle CSS-Anpassungen der Seite (also sowohl die zentral vorgegeben als auch die ggf. selbst per "Hack" nachgeladenen) nicht eingesetzt werden. Auch JavaScript wird in dieser reduzierten Ansicht nicht interpretiert, so dass alle Schaltflächen innerhalb des ggf. "zerschossenen" Kursraums wieder normal arbeiten, obwohl sie völlig anders dargestellt werden. Auf diesem Weg kann etwa ein selbst hinzugefügtes, die Kursfunktionalität beeinträchtigendes Textfeld (oder Textblock) wieder gelöscht werden. Anschließend schaltet man die Ansicht wieder zurück auf "Standard-Stil" und der Kurs sollte wieder unbeeinträchtigt funktionieren.
Trotz der zwischenzeitlich geänderten Ansicht werden hierbei z.B. das Kursformat oder das Theme des Kurses nicht geändert. Die Menüleiste (Menu Bar) kann über einen Rechtsklick neben der Adressleiste mit "☒ Menu Bar" eingeblendet werden.

B In Chrome

Mit F12 oder Strg+Umschalt+I werden die Entwicklerwerkzeuge geöffnet. Anschließend wird im Reiter "Elements" das Element <head> markiert und gelöscht. Da sich in diesem im Regelfall alle Stylesheets und auch extern nachgeladene Skripte befinden, erhält man eine - weitgehend - "stillose" Ansicht der Seite. Allerdings kann es bei dieser Variante trotzdem vokommen, dass das im fehlerhaften Textfeld nachgeladene JavaScript oder CSS trotzdem die Seite weiterhin unbearbeitbar macht. Der oben für den Firefox beschriebene Weg ist daher stabiler.

Weg 2: JavaScript deaktivieren

Wenn ein eigenes nachgeladenes JavaScript die Bearbeitung des Kurses verhindert, kann man im Browser auch zwischenzeitlich JavaScript deaktivieren.

A Im Firefox

  1. In einem neuen Tab in der Adresszeile eingeben about:config
  2. Filtern nach dem Schlüssel javascript.enabled
  3. Den Wert auf false statt true (Standard) setzen
  4. Die Kursseite im anderen Tab neu laden und das defekte Textfeld bzw. den betreffenden Textblock löschen
  5. Im about:config Tab den Wert wieder auf den Standardwert true zurücksetzen

B In Chrome

  1. In einem neuen Tab in der Adresszeile eingeben chrome://settings/content/javascript
  2. Auswahl der Option "☒ Websites dürfen nicht JavaScript verwenden"
  3. Die Kursseite im anderen Tab neu laden und das defekte Textfeld bzw. den betreffenden Textblock löschen
  4. Im chrome://settings/content/javascript Tab die Auswahl wieder auf den Standardwert "☒ Websites dürfen JavaScript verwenden" zurücksetzen

Weg 3: Textfeld direkt bearbeiten

Bei dieser Methode muss man zunächst die Aktivitäts-ID des betroffenen Textfelds (oder einer anderen fehlerhaften Aktivität) herausfinden.
  1. Zuerst muss in den Bearbeitungsmodus gewechselt werden
  2. Anschließend führt man auf der Kursseite über dem zu bereinigenden Textfeld einen Rechtsklick durch und wählt "Untersuchen" und wechselt so in den Entwicklerwerkzeugen in den Reiter "Inspektor" (Firefox) bzw. "Elements" (Chrome).
  3. Bei einem Textfeld könnte dieses typischerweise als Listenelement dann z.B. die Aktivitäts-ID "module-31258433" haben, im Screenshot "module-2".
    Diesen Zahlenwert notiert man sich für die spätere Verwendung.
  4. Mit Hilfe des Werkzeugs unten kann dann der Link zum direkten Betreten des Bearbeitungsmodus des Textfelds erzeugt werden.
  5. Im Quelltextbearbeitungsmodus können die fehlerhaften CSS- oder JavaScript-Anweisungen dann entfernt werden. Wenn der Atto oder der TinyMCE verwendet werden, filtern diese ggfs. auch in Kombination mit dem Skript-Protection Filter ohnehin beim nächsten Speichern meist script und style Tags heraus.
vorne ohne Protokoll und hinten ohne angehängten Slash
nur der Zahlenwert, ohne z.B. module- vorangestellt
 
 

Ergänzung 1: Direkt in den Bearbeitungsmodus wechseln

Der einfache Weg wenn der Button noch geladen wird

In den Entwicklerwerkzeugen wird im Reiter "Konsole" (Firefox) bzw. "Console" (Chrome) eingegeben:
$('.singlebutton button[type=submit]').trigger('click');
Dies bewirkt auf einer Kursseite im Wechsel das Ein- bzw. Ausschalten des Bearbeitungsmodus.

Voraussetzung für den komplizierten Weg wenn dieser Button komplett fehlt: Den Sessionkey für direkte Bearbeitungslinks herausfinden

Viele Bearbeitungslinks haben eine regelmäßige Struktur, benötigen aber die von der aktuellen Moodle Sitzung abhängigen Sessionkey (kurz sesskey), im Beispiel unten mit dem Wert e0gnBliNez.
Die Aktivitäts-ID in der Beispieltabelle unten ist 31258433. Wie man diese ermittelt ist oben im Weg 3 beschrieben.
Für die Bearbeitung von Kursen wird die Kurs-ID benötigt, bei den Beispiel-Links in der Tabelle unten 837032.
Diese kann nach Betreten des Kurses oben in der Adresszeile des Browsers ausgelesen werden.
Wenn die Abschnitts-ID analog zur Textfeld-ID im Bearbeitungsmodus ausgelesen wurde, können auch dessen Einstellungen zur direkten Bearbeitung aufgerufen werden. Im Beispiel lautet diese 7298023.
In der JavaScript Konsole eintippen und Enter drücken, dann die Ausgabe davon für den Link oben nutzen:
M.cfg.sesskey

Direktlinks für direkten Funktionsaufruf erzeugen

Passe zunächst die für die gewünschte Aktion benötigten Werte für den eigenen Fall an:
ohne vorangestelltes Protokoll https://
Wie oben im Screenshot aus der JavaScript Konsole
Aus der Adresszeile
Aus dem Inspektor wie im Screenshot bei Weg 3
Kopiere anschließend aus der Tabelle die vollständige Linkvorlage bestehend aus der Basis-URL und dem spezifischen Anteil in einen Texteditor (kein Textverarbeitungsprogramm) oder füge ihn direkt in einem neuen Tab in die Adresszeile des Browser ein und rufe die gewünschte Funktion auf.
Gewünschte Aktion Basis-URL spezifischer Anteil
Kurs Bearbeiten einschalten https://lernplattform.mebis.bayern.de/course/view.php?id=837032&section=0&sesskey=e0gnBliNez &edit=on
Kurs Bearbeiten ausschalten &edit=off
Aktivität Einstellungen Bearbeiten
(entspricht funktional dem in Weg 3 ermittelten Link)
https://lernplattform.mebis.bayern.de/course/mod.php?sesskey=e0gnBliNez&sr=0 &update=31258433
Aktivität Duplizieren &duplicate=31258433
Aktivität löschen (Vorsicht!) &delete=31258433
Aktivität nach rechts schieben https://lernplattform.mebis.bayern.de/course/mod.php?sesskey=e0gnBliNez&sr=0&id=31258433 &indent=1
Aktivität nach links schieben &indent=-1
Aktivität Verbergen &hide=31258433
Aktivität Anzeigen &show=31258433
Abschnitt bearbeiten https://lernplattform.mebis.bayern.de/course/editsection.php?id=7298023&sr=0  

Ergänzung 2: Das Theme wechseln

Um z.B. ausprobieren zu können, wie sich eine eigene CSS-Anpassung in anderen Moodle-Themes verhält, kann man temporär für die Dauer der aktuellen Moodle Sitzung das Theme umschalten (sofern dies in den Admin-Einstellungen allowthemechangeonurl der Moodle Instanz erlaubt ist) durch Anhängen des URL-Parameters
&theme=boost
Durch Eingabe des entsprechenden Werts, z.B. mebis also das Abändern des angehängten Parameters zu &theme=mebis
kann man auch in der laufenden Sitzung wieder zum Ursprungs-Theme zurückkehren.
Häufig verfügbare Themes sind:
  • boost (Core)
  • classic (Core)
  • mebis (mebis Lernplattform)
  • fordson (Plugin theme_fordson)
  • ... und viele weitere, ggfs. den Admin der eigenen Moodle-Instanz fragen
Den Namen des aktuellen Themes kann man in der JavaScript Konsole auslesen als Ausgabe von
M.cfg.theme