HowTo: Moodle-Struktur mit Klassen, Kursen, Lehrern vollständig einrichten lassen

Hallo zusammen.

Aus der Krise erwachsen momentan auch sinnvolle Dinge :slight_smile: … vor kurzem hat ja Thomas (@thoschi) sein Script vorgestellt, mit dem er sein Moodle-Enrolment macht. Der entsprechende Thread lief hier und das Script von Thomas ist hier.

Ich habe das Problem an einen Schüler von uns weitergegeben, der sehr gut programmieren kann … und das Ergebnis kann sich echt sehen lassen!
Vielen Dank auch nochmal an dieser Stelle!

Er hat das Script von Thomas (@thoschi) weiterentwickelt und ergänzt. Nun wird folgendes automatisch unter moodle angelegt:

1.) Die gesamte moodle-Struktur wird automatisch angelegt und zwar nach dem schon diskutierten Muster

Schüler
  |-> Klasse 5
       |-> 5a
       |-> 5b
  |-> Klasse 6
       |-> 6a
       |-> 6b
...

Im Moment wollten wir das (in Zeiten der Krise) der Einfachheit halber so haben, dass alles Material für die Schüler gebündelt in einen Kurs kommt, so dass ein Fach pro Thema zu finden ist! Das will vielleicht nicht jeder so haben, aber so ist es für die Schüler im Moment einfacher zu finden. Dieses Verhalten ist aber später einstellbar und änderbar!

2.) Das Script greift auf die Export-Files von Untis zurück, was hier viele einsetzen dürften. Man benötigt also die txt-Files des Stundenplans. Damit werden alle Lehrer und alle Schüler in die richtigen Kurse eingeschrieben.
Alle Lehrer der Klasse werden automatisch als Trainer/Lehrer in den Kurs eingetragen; die entsprechenden Schüler werden als Teilnehmer eingetragen.

3.) Das Script erzeugt für die Jahrgänge 11 bis 12 (bzw 13, der momentan bei uns noch nicht vorhanden ist) ebenfalls automatisch alle Kurse, die es in den exportierten TXT-Files findet (alphabetisch sortiert), und trägt dort ebenfalls den richtigen Lehrer als Kursleiter ein.
Die passenden Schüler kann das Script (noch) nicht in diese Oberstufenkurse eintragen, da diese Informationen weder in den exportierten Files noch im LDAP/AD stecken! Man könnte das aber später nachträglich einbauen, wenn man (zumindest für Niedersachsen) an das Oberstufenprogramm Apollon geht und auch hier einen Export durchführt. Wie andere Bundesländer das machen, weiß ich nicht – aber man könnte sich ja auf ein einheitliches Format einigen…

Vorteile:
Ein User, der sich unter moodle anmeldet, findet nun sofort seine Klassen/Kurse und muss sich nichts mehr mühsam zusammenklicken. Ein Lehrer hat sofort seine richtigen Klassen und Kurse parat und muss zZ nur noch die Oberstufenkurse mit Usern füllen. Alles andere ist aber „ready to fly“. Zudem ist die Struktur einheitlich für alle Jahrgänge angelegt, was die Bedienung vereinfacht.

Das Script ist auf einem moodle 3.8 Testsystem nun mehrfach erfolgreich durchgelaufen und hat die Struktur so erzeugt wie oben genannt. Dennoch ist es noch in einem frühen Stadium und es kann natürlich keine Gewähr übernommen werden, dass es auf bereits laufenden moodle-Instanzen genauso gut funktioniert. Das Script verwendet im Moment unsere Benennung, um Oberstufenkurse finden zu können. Das Muster muss angepasst werden, wenn ihr Kurse auf andere Art und Weise benennt (vgl zB letzter Screenshot)

Zudem lief die Anbindung bei uns noch gegen das LDAP eines linuxmuster-v6 Servers! Wie es mit v7 aussieht, weiß ich im Moment noch nicht, doch das sollte prinzipiell nicht viel anders gehen.

Ich denke, dass dieses Script ein echter Gewinn für die Community ist. Damit ist man wirklich ein gutes Stück vorwärts gekommen, was eine einheitliche Struktur angeht. Als nächstes wäre es toll, wenn Thomas uns nochmal in die Geheimnisse einweihen könnte, wie man das nun auch noch mit der Nextcloud verknüpfen kann. Du meintest ja schon, dass es mit occ lief …

Hier nun der Link zum Projekt – ich hoffe, dass sich viele finden, die es ausprobieren und dann hier berichten, wie es gelaufen ist. Aber nochmal: Zunächst am besten ein frisches moodle hochziehen, wie z.B. den bitnami-Container.

Abschließend noch ein paar Screenshots, damit man sich’s besser vorstellen kann: Alles, was in den folgenden Screenshots zu sehen ist, wurde automatisch angelegt und mit den richtigen Teilnehmern und Kursverwaltern bestückt. Jeder Kurs hat eine eindeutige ID erhalten (so wie von Thomas vorgeschlagen). Somit ist eine Versetzung im neuen Schuljahr machbar; das wird aber vermutlich ein Extra-Script werden.

Gesamtübersicht:


Unter- und Mittelstufe:

Struktur fest vorgegeben:

Oberstufenkurse:
Screenshot_20200406_205043
Alle Bio-Kurse in Jg-11 wurden erzeugt:
Screenshot_20200406_205256
Alle Mathe-Kurse in Jg-12 wurden erzeugt:
Screenshot_20200406_210206
usw usw …
(In Oberstufenkursen sind keine Themen im Kurs voreingestellt!)

Schöne Grüße,
Michael

2 Like

… kurzer Zwischenbericht: Die Struktur ist mittlerweile genauso bei uns angelegt. Das Script hat ganze Arbeit geleistet und lief auch mit unserer bestehenden moodle-3.8-Instanz zusammen.

Es durften natürlich keine alten, noch bestehenden Kurse bereits die gleichen Kursbezeichnungen besitzen, was wir aber relativ schnell durch Umbenennen gelöst haben.

Nochmals ein riesiges Danke! an @thoschi für die ganze Vorarbeit. Die neue Struktur rettet uns gerade durch die Zeit, und es ist nun wirklich gut angelaufen – und das, obwohl moodle auch bei uns vorher eher ein Schattendasein gefristet hat.

Unser Schüler hat in seinem github-Repo mittlerweile diverse Erweiterungen geschrieben (noch im develop-tree). Auch ihm gilt nochmal ein sehr großes Danke! für die nächtelange Arbeit, die weit über das normale Maß hinausging.

Leider hinkt die Doku etwas hinterher aber fest steht, dass man mit der moodle-API wirklich unglaublich zaubern kann. Der eingerichtete API-User kann scriptgesteuert nahezu alles einstellen, was man braucht.

Nicht alles lief anfangs völlig reibungslos. So musste es leider sein, dass wir ganz am Anfang einmal alle User aus dem System entfernten und vom Script neu einrichten ließen. Das hatte ein paar Konsequenzen über die man sich im Klaren sein muss, wie z.B., dass alles, was die User in der alten Struktur gemacht hatten (abgegebene Aufgaben usw) auch gelöscht wurde. Damit konnten wir aber gut leben, da diese Ausfälle sehr gering waren. Man sollte das nur auf dem Schirm haben, wenn man das Script einsetzen will – oder aber gleich einen harten Cut machen und die alte Struktur ganz löschen.

Damit hing auch zusammen, dass diverse User schon ihre eMail-Adresse eingetragen hatten, aber durch die Neueinrichtung wieder alles auf „linux.lokal“ stand. Das ist z.B. eine der Erweiterungen, die im develop-tree liegt: Wir konnten diese eMail Adressen retten: dump erstellt und per API wieder aktualisiert.

Alles in allem ist es super, wenn man eine Struktur vorgibt und man in allen Kursen/Klassenräumen diese identische Struktur vorfindet. Das erleichtert den weniger versierten Kollegen den Einstieg enorm.

Unter’m Strich: Ich kann’s sehr empfehlen – man muss sich aber jemanden ins Boot holen, der sich mit python auskennt!

Schöne Grüße,
Michael

Hallo,

was mir bei der Struktur noch nicht klar ist:
Wie legen da KuK ihre eigenen Kurse an, ohne die von anderen KuK manipulieren zu können?

Oder ist das gar nicht (mehr) vorgesehen?

Wenn ich das an den Screenshots richtig sehe, gibt’s ja für jeden Jahrgang einen Kursbereich, darunter für jedes Fach des Jahrgangs.
Aber was ist dann im Kursbereich des Fachs zu finden?

Wenn dort jeder Lehrer seine Kurse anlegen könnte, gäbe das ja einen ziemlichen Wildwuchs, der sich auf alle auswirkt. :thinking:

Bei uns ist es historisch vom openLML-Enrol-Plugin so, dass es einen Kursbereich Unterricht und darin einen Bereich für jeden Lehrer gibt. In seinem Kursbereich ist jeder Lehrer Kursersteller, kann da also schalten und walten wie er will.

Jeder SuS weiß ja (hoffentlich) bei wem er Mathe, Chemie whatever hat, muss also nur nach Unterricht --> Lehrer xy und wird da fündig.

Die SuS sehen nach Anmeldung aber eh im Menü unter „Meine Kurse“ einfach alle Kurse von allen KuK aufgelistet, in denen sie drin sind.
Der Schüler findet also direkt in seinem Kursmenü z.B. Mathe 10f, Geschichte - Müller, Ch

Die Benennung der Kurse ist bei uns natürlich (noch) nicht einheitlich, weil jeder KuK in seinem Kursbereich seine Kurse eben (noch) benennt wie er es sinnvoll findet.

Das klappt eigentlich trotzdem hervorragend.

Ich sehe momentan noch keinerlei Vorteil, das nach Jahrgangsstufe, Fach und ??? zu sortieren.
Aber vielleicht kann mir das ja jemand erklären :thinking:

Viele Grüße
Steffen

Hi Steffen.

Die Erklärung ist einfach: Wir haben es so gemacht … das Script kann es aber auch ganz anders. Nach div. Überlegungen haben wir uns einfach dafür entschieden, es so zu machen. Die Nachteile sind mir klar – aber die Vorteile (Übersichtlichkeit, nur ein Kurs pro Klasse …) waren für uns ausschlaggebend, es so zu machen. Wer es anders haben will, kann es ja anders anlegen – wie gesagt: An dem Script scheitert das nicht … und da die User sofort eingeschrieben sind, ist es (wie schon oben gesagt) eine echte Alternative zum openLML_enrol-Plugin.

Schöne Grüße,
Michael

Hallo Michael,

ja, zumal das openLML_enrol-Plugin derzeit ja eh nicht mehr tut (zumindest nicht alles), was es mal tat.

Aber für mich ist das bis auf Weiteres eh Jacke wie Hose, denn ohne LDAP-Anbindung … :wink: :face_vomiting:

Nur ein Kurs für jedes Fach in jeder Klassenstufe ist natürlich auch von Vorteil, um mehr kollaborativ und abgestimmt in den Jahrgangsstufen zu arbeiten.

Vielleicht kommt das bei uns auch noch. Derzeit macht bei uns halt in Moodle jeder sein Ding wie auch im Klassenzimmer :closed_lock_with_key:

Viele Grüße
Steffen

So ist es bei uns ja nicht … wäre aber damit auch möglich und ich habe auch lange darüber nachgedacht es so zu machen wie du sagst.

Wir haben es nun aber so, dass eine Klasse genau einen Kurs hat. In dem Kurs befindet sich das Material für alle Fächer aber natürlich unter unterschiedlichen Themen. Dass es eigentlich so nicht gedacht ist, ist mir klar … dennoch ist es so einfacher für die meisten. Und der positive Nebeneffekt ist, dass unser moodle nun nicht mehr aus lauter :lock: Kursen besteht, in denen sich dann nichts tut…

Hallo zusammen,

evtl auch interessant in dem Zusammenhang sind die Kursformate.

Bisher lief das bei uns gut mit dem normalen Themenformat.

Jetzt wurde aber viel hochgeladen, so dass das z.T. unübersichtlich ist. Mit dem Kursformat „Ein-Themen-Format“ bekommt jedes Fach im Kurs eine Seite und man als Tab das Fach oben aus.

Alternativ kann man mittels Plugin „aufklappbare Themen“ realisieren, so dass die Bereiche sich einklappen lassen. Moodle merkt sich sogar den „Klappstatus“ für jeden Benutzer.

Bei uns werden tatsächlich keine Kurse mehr selbst angelegt. Wenn man etwas braucht, erstellt man ein Ticket und das Skript erzeugt den Kurs samt Schülergruppe.

Ein wenig mehr Aufwand. Aber ich weiß, wie unser Moodle vorher aussah und wie es jetzt aussieht. Und absolut niemand an unserer Schule möchte zum alten Zustand zurück :slight_smile:

Viele Grüße
Thomas

Hallo Thomas.

witzig … den gleichen Gedanken hatte ich heute auch :slight_smile:
Was etwas stört: App und Browser sind nicht 1:1 kompatibel … wenn man zuviel mit Plugins oder Nicht-Standard-Einstellungen macht, kommt die App damit nicht klar. Das ist natürlich nicht gut. Sehr negativ ist es mir bei einem eingebundenen youtube-Video aufgefallen: die App konnte das nicht abspielen – wobei das eigentlich kein großes Problem sein sollte. Der Browser zeigt den Link dagegen sofort als embedded Video zum Stream an.

Ich finde den neuen Zustand auch großartig. Es gibt aber mit unserer Struktur nun doch noch ein paar Kleinigkeiten zu beachten: Was tun bei Kursen in der Mittelstufe (Bsp Französisch -> klassenübergreifend). Da müsste nun wieder ein zusätzlicher Kurs her … die Zuordnung der Schüler zu diesem Kurs wäre dem Schulverwaltungsprogramm (bei uns Danis) bekannt; evtl könnte man also auch dort .csv-Dateien exportieren und hier mit einbinden, so dass die Einschreibung der Schüler in diese Kurse auch wieder automatisch funktioniert. Das ist das Killer-Feature … für die Oberstufe fehlt das bei uns zZ noch. Habt ihr das da auch drin?

Schöne Grüße,
Michael

HalloThomas,

das gibt’s hier beim Belwü-Moodle nicht, oder meinst du das nornale Themeformat mit der Einstellung ein Thema pro Seite?
Das nutze ich schon lange, wenn es viele Themen bzw, Abschnitte gibt.

Ich habe auch malmit dem Kachelformat experimentiert. Für unsere SuS und Nutzung mit der App scheint mir das auch recht vielversprechend, da es der Darstellung von Apps am Smartphone näher kommt (was unsere SuS ja alle bestens kennen) und auch viel moderner aussieht - Moodle wird ja immer wieder vorgeworfen, angestaubt, altbacken und wenig modern auszusehen :wink:

Viele Grüße
Steffen

Hi @Michael, @thoschi,
wie wäre es denn hiermit: https://www.heise.de/news/Hackathon-wirfuerschule-soll-Loesungen-fuer-die-hybride-Schule-finden-4770698.html
Ich würde da ja mit Schülern mitmachen, aber ich habe offiziell kein Moodle und keine große Erfahrung mit moodle, aber dein Skript Thomas, das könnte

  • da doch ordentlich dokumentiert werden, wenn da noch was fehlt
  • use-cases aufgestellt werden
    usw.

VG, Tobias

damnit challenge Einreichung war schon vorvorgestern… also schade.

Sooooo, noch eine Ergänzung zu diesem Thread.

Es gibt bei uns nun eine weitere Ausbaustufe (noch nicht im github). Wir haben jetzt ein weiteres Script, mit dem wir das alte Schuljahr per REST-API archivieren können.

Das läuft nun so:
Das alte Schuljahr wird vollständig ins Archiv geschoben (außer Jg. 12 – der läuft ja weiter und wird zum Jg. 13). Dann werden alle Schüler ausgeschrieben; alle Lehrer bleiben jedoch eingeschrieben. Das hat den Vorteil, dass die KuK noch an das alte Material ihrer alten Kurse herankommen können. In allen Kurse wird zudem ein „Kurs-Reset“ angestoßen. Das sorgt dafür, dass alle abgegebenen Aufgaben der Schüler gelöscht werden; zudem werden alle Ankündigungen aus den Foren gelöscht (darüber hatten wir uns zunächst gewundert – man kann das aber durchaus auch als Feature ansehen: Neues Schuljahr --> neue Ankündigungen)

Zusammen mit dem Plugin „Sharing Cart“ ergibt sich nun die Möglichkeit, dass Inhalte aus alten Kursen bei Bedarf sehr bequem in den neuen Kurs kopiert werden können.

Das Script ist natürlich auf unsere Kurse zugeschnitten und sucht gezielt nach unseren Kursbezeichnungen für die Oberstufenkurse. Wer das dennoch einsetzen und für sich anpassen möchte, kann sich aber gerne hier melden …

(Wer das unenrol lieber per Hand machen will – das geht natürlich auch mit moosh:

    Kurse auflisten, die "Kurs" im Namen haben:
    moosh -n course-list "fullname like '%(Kurs%'"

    Alle Teilnehmer (nicht Trainer!) aus Kurs mit ID 519 austragen:
    moosh -n course-reset -s "unenrol_users=5," 519
    Die entsprechenden Ziffern der Rollen stehen in der moodle-Datenbank in der Tabelle mdl_role; bei uns war die Ziffer 5 für Teilnehmer! Ob das überall so ist, weiß ich nicht!

    Alle Teilnehmer aus  allen gelisteten Kursen austragen:
    for i in {519..542}; do moosh -n course-reset -s "unenrol_users=5," $i;  done

)
VG
Michael