Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:moodle:moodle_automatische_einschreibung]] 

Moodle und automatische Einschreibung mit der OpenLML

Dieser Abschnitt ist für die Version Moodle 1.9.x. Für Moodle 2.x finden Sie den passenden Artikel unter moodle2_automatische_einschreibung

Mängel

Moodle ist in die paedML bisher noch nicht gut integriert. Es gibt aus meiner Sicht einige Schwächen der Konfiguration, die ich zu beheben versucht habe.

  • Benutzer müssen in Moodle angelegt und verwaltet werden, obwohl diese in der paedML bereits existieren.
  • Ein Lehrerzimmer (ein Kurs nur für Lehrer) muss manuell angelegt und jeder Lehrer dort manuell eingetragen werden, obwohl bereits alle notwendigen Informationen (jeder Lehrer ist Mitglied der Gruppe teachers) in der LML vorhanden ist.
  • Schüler müssen in Kurse / Klassen manuell eingetragen werden, obwohl im LDAP-Baum der paedML die Grupenzugehörigkeit vorhanden ist.
  • Für jeden Lehrer muss ein Kursbereich, in welchem er selbst Kurse anlegen und löschen kann, manuell angelegt werden, obwohl auch hierzu die Voraussetzungen und Informationen bereits vorhanden sind.

Ausweg

Ich habe versucht, die oben angesprochenen Punkte so weit wie möglich auszuräumen. Dabei ist ein Anmeldemodul für Moodle herausgekommen, das in meiner Schule nach ersten Tests zufriedenstellend funktioniert. Bei der komplexen Struktur der Materie kann es natürlich sein, dass jemand anders ganz andere Erfahrungen macht. Ich benutze momentan die Version 5.0.2 der Musterlösung und die entsprechende Moodle-Version (aus dem Gedächtnis 1.9.12…).

LML-Enrolment

Es handelt sich um ein Modul für Moodle, das

  • Lehrer automatisch in Kurse einschreibt, die entsprechend gekennzeichnet sind.
  • Schüler automatisch in Kurse einschreibt, die entsprechend gekennzeichnet sind (es werden Klassen und Projekte der LML unterstützt).
  • Schüler aus mehreren Klassen können in einem Kurs zusammengefasst werden.
  • Einen Kursbereich für jeden Lehrer in einem Kursbereich namens Lehrer bei dessen erstmaliger Anmeldung anlegt.
  • Bei einem speziellen Projekt-Präfix auch Lehrer als Kursteilnehmer zulässt (z.B. für Fachgruppen-Kurse).

Installation

Die Datei enrol_lml.zip enthält die Moduldateien für Moodle (einschließlich Sprachdatei). Kopieren Sie die Datei in das Verzeichnis

/usr/share/moodle/

und packen Sie es dort mit dem Befehl

unzip enrol_lml.zip

aus. Dabei wird das Unterverzeichnis enrol/lml angelegt. Dort befinden sich alle Dateien dieses Moduls.

Test der Installation

Man meldet sich bei Moodle als Administrator(wwwadmin) an und geht zu Administration→Kurse→Einschreibung. Dort ist ein neuer Eintrag namens LML vorhanden.

Einrichtung

Voraussetzung

Voraussetzung für die Nutzung des LML-Moduls ist die Verwendung der LDAP-Authentifizierung.

Einrichtung der LDAP-Authentifizierung

Man meldet sich als Administrator(wwwadmin) an und geht auf die Seite Administration→Nutzer/innen→Authentifizierung. Dort befindet sich der Eintrag LDAP-Server. Diesen wählt man aus.

Ausblendung von Klassenarbeitsbenutzern
Dieser Abschnitt funktioniert für Moodle-Versionen kleiner als 1.9.12 wohl nicht. Falls die angegebene Einstellung nicht funktioniert, bitte die einfache
objectClass: posixAccount

verwenden.

Zunächst muss im Bereich Nutzersuche1) das Feld objectClass verändert werden. Dort darf nicht nur eine Objektklasse sondern auch ein Filterkriterium eingetragen werden. Um die Klassenarbeitsnutzer auszufiltern, trägt man folgendes ein:

objectClass: (&(objectClass=posixAccount)(!(cn=ExamAccount)))
Datenzuordnung

Außerdem folgt der Bereich Datenzuordnung2), in welchem die Zuordnung von LDAP-Daten zu Moodle-Daten festgelegt wird. Entscheidend ist das Feld ID-Nummer.

ID-Nummer: uid
Update lokaler Daten: Bei jedem Login
Update externer Daten: Nie
Sperrwert: Gesperrt

Man speichert die Änderungen und kann jetzt das LML-Modul einrichten.

Weitere nützliche Felder

Folgende Felder sollte man ebenfalls aus dem LDAP-Baum in Moodle übernehmen, damit die Benutzergrunddaten vorhanden sind( die Daten sind immer in der Reihenfolge wie oben, also Feldname3) / Update lokaler Daten / Update externer Daten / Sperrwert):

Vorname: givenName / Bei jedem Login / Nie / Bearbeitbar
Nachname: sn / Bei jedem Login / Nie / Bearbeitbar
E-Mail-Adresse: mail / Beim Anlegen / Nie / Bearbeitbar

E-Mail-Adresse

Die folgenden Anweisungen sind ab paedML 5.0.4 nicht mehr nötig, denn dort ist sophomorix 2.2.20 enthalten.

(Die Einrichtung der E-Mail-Adresse funktioniert erst dann, wenn sophomorix ab Version 2.2.19 verwendet wird 4). Wer vorher die E-Mail-Adresse im LDAP benötigt, kann sich das Skript AddMail2LDAP.sh.zip von Jörg Richter herunterladen. Es muss auf dem Server ausgepackt werden (ich benutze dazu /usr/local/bin) und nach jedem neu anlegen von Benutzern ausgeführt werden. Es übernimmt die Mail-Adresse in den LDAP-Baum.)

Zu füllende Felder

Es ist sinnvoll, zusätzlich zu den obigen Feldern noch die Felder Stadt/Ort und Beschreibung mit irgendetwas zu füllen, da Moodle diese Felder als erforderlich betrachtet. Ich trage einfach in beiden Feldern ebenfalls das LDAP-Feld mail ein (das ist nicht sinnvoll, stellt aber Moodle zufrieden).

Automatische Benutzerübernahme

Es gibt eine Variante, die mit der Version von auth/ldap/auth.php von Moodle funktioniert und für ein Moodle geeignet ist auf dessen Server man administrativen Zuagng hat und eine zweite Variante, die man verwenden muss, falls sich Moodle extern auf einem Server im Internet befindet (z.B. BelWü).

Variante 1 - Administrativer Zugang zum Moodle-Server

Die Übernahme jedes Benutzers aus dem LDAP-Baum geschieht bei dessen Anmeldung. Für die automatische Einschreibung müssen alle Benutzer übernommen werden. Dazu gibt es das Skript ldap_auth_sync_users.php. Dieses Skript wird bei mir einmal täglich ausgeführt, um alle Benutzer zwischen LDAP und Moodle zu synchronisieren. Dieses Skript ist deshalb wichtig, weil nur Moodle-Benutzer automatisch in Kurse eingeschrieben werden können.

Variante 2 - Externes Moodle

Bei einem externen Moodle kann man keinen Cron-Job einrichten, der die Datei ldap_auth_sync_users.php direkt aufruft, da diese Datei nicht über einen Browser aufgerufen werden kann. Die kleine Patch-Datei auth.php.patch.zip rüstet diese Funktion nach. Mit diesem Patch wird die Benutzerübernahme im Rahmen des üblichen Moodle-Cron-Jobs (admin/cron.php) einmal pro Stunde abgearbeitet.

Die Patch-Datei muss auf

/usr/share/moodle/auth/ldap/auth.php

angewendet werden. Dazu dient der Befehl:

cd /usr/share/moodle/auth/ldap
patch auth.php <auth.php.patch

Die Datei auth.php.patch muss vorher in das genannte Verzeichnis kopiert werden.

LML-Modul einrichten

Man meldet sich als Administrator (wwwadmin) an und geht zu Administration→Kurse→Einschreibung. Dort aktiviert man das Modul LML. Dann speichert man die Änderungen. Als nächstes klickt man bei LML auf Bearbeiten. Ich gebe unten die Einträge für meine Schule an. Man muss lediglich unter LML-Server Eintellungen den Eintrag enrol_lml_global_context ändern.

LML-Server Einstellungen
enrol_lml_host_url: ldap://localhost
enrol_lml_version: 3
enrol_lml_bind_dn:
enrol_lml_bind_pw:
enrol_lml_search_sub: Ja
enrol_lml_global_context: dc=linuxmuster,dc=local

Lehrergruppen-Einstellungen
enrol_lml_teachers_context: ou=groups
enrol_lml_teachers_object: posixGroup
enrol_lml_teachers_group_attribute: cn
enrol_lml_teachers_group_name: teachers
enrol_lml_teachers_member_attribute: memberUid
enrol_lml_teachers_course_id: teachers
enrol_lml_teachers_role: student
enrol_lml_prefix_teacher_members: p_teachers_

Lehrer-Kursbereich Einstellungen
enrol_lml_teachers_course_context: Lehrer
enrol_lml_teachers_course_role: coursecreator
lml_teachers_category_autocreate: Ja
lml_teachers_category_autoremove: Nein
enrol_lml_teachers_removed: attic
enrol_lml_teachers_ignore: bib

Schülereinstellungen
enrol_lml_student_groups_contexts: ou=groups
enrol_lml_student_group_object: posixGroup
enrol_lml_student_class_numbers: 5,6,7,8,9,10,11,12
enrol_lml_student_project_prefix: p_
enrol_lml_student_group_attribute: memberUid
enrol_lml_student_role: student
enrol_lml_student_course_id: cn
enrol_lml_student_ignored_groups: teachers,attic

Nun speichert man die Änderungen.

Test der Einrichtung

Man meldet sich als ein Lehrer an. Es sollte automatisch der Kursbereich Lehrer erscheinen. In diesem Kursbereich sollte ein Unterbereich mit dem Benutzernamen dieses Lehrers erscheinen, in welchem der Lehrer Kursverwalter ist.

Man legt in diesem Kursbereich einen Kurs an und gibt für die Kurs-ID die Bezeichnung einer existierenden Klasse an, z.B. 5a. Es ist auch möglich, mehrer Klassen oder Projekte einzutragen, z.B.

Kurs-ID: 5a,5b,5c,5d,5e

für einen Kurs mit allen 5. Klassen.

Man meldet sich als root auf dem Server an und synchronisiert die Eintragungen durch Aufruf von:

php -f /usr/share/moodle/enrol/lml/enrol_lml_sync.php

Es erscheinen einige Meldungen zur Einschreibung5). Dann geht man zurück in Moodle und schaut sich die Teilnehmer des eben erstellten Kurses an. Es sollten alle Schüler der 5a6) eingetragen sein.

Man erstellt einen Kurs Lehrerzimmer und trägt als Kurs-ID teachers ein. Dann führt man wieder das Synchronisationsskript enrol_lml_sync.php aus und kontrolliert, dass alle Lehrer jetzt Mitglieder des Lehrerzimmers sind7).

Nach diesen Tests sollte das LML-Modul funktionieren.

Automatisierung

Das Skript wird automatisch vom Admin-Cron-Skript mit aufgerufen (http://.../admin/cron.php). Da die Abarbeitung bei mir etwa 25s dauert und das Admin-Cron-Skript üblicherweise in 5-Minuten-Intervallen abgearbeitet wird, wird das lml-Skript nur einmal jede Stunde ausgeführt.

Bei der ersten Ausführung sieht in etwa man folgende Zeilen:

Running backups if required...
    Checking backup status...INACTIVE
Backup tasks finished.
Running auth crons if required...
Starting enrolments for lml enrolments plugin...
==Syncing categories
==Syncing teachers
==Syncing students
...
Finished enrolments for lml enrolments plugin.

Bei der nächsten Ausführung innerhalb der gleichen Stunde:

Running backups if required...
    Checking backup status...INACTIVE
Backup tasks finished.
Running auth crons if required...
Cron script completed correctly

Nützliche Anpassungen

Kurse selbst löschen

Bei meinem Moodle ist die Standardeinstellung, dass Kursverwalter Kurse nicht löschen dürfen. Diese Einstellung erfordert von einem Administrator, Kurse in regelmäßigen Abständen zu durchforsten. Ich bin an dieser Stelle für eine Umverteilung der Arbeit auf alle Lehrer.

Dazu meldet man sich als wwwadmin bei Moodle an und sucht die entsprechende Einstellung im Block Nutzerrechte:

Nutzer/innen
-> Zugriffsrechte
-> Rollen verwalten

Dort wählt man die Rolle Kursverwalter/in, um die Rollendetails zu sehen und klickt dort auf Bearbeiten. Im Bereich Kurse lautet die gewünschte Eigenschaft:

Kurse löschen
moodle/course:delete

Hier muss die Einstellung Erlauben lauten. Damit kann jeder Kursverwalter in seinem eigenen Bereich Kurse löschen.

1)
user lookup
2)
Data-Mapping
3)
givenName enthält manchmal fälschlicherweise den Benutzernamen, das war mal ein Fehler beim Benutzer anlegen, der durch einen Lauf von sophomorix-dump-pg2ldap behoben werden kann.
5)
Sollte der obige Befehl fehlschlagen, ist vermutlich die PHP-Version daran schuld. Moodle benötigt im Befehlsfenster die Version PHP5.
6)
bzw. die Schüler/Lehrer der Gruppe, die sie als Kurs-ID eingetragen haben
7)
In normalen Kursen können Lehrer nicht Teilnehmer sein, es sei denn sie gehören zu dem besonderen Projekt-Präfix-Bereich, der unter enrol_lml_prefix_teacher_members eingestellt wird
 [[anwenderwiki:moodle:moodle_automatische_einschreibung]] anwenderwiki/moodle/moodle_automatische_einschreibung.txt · Zuletzt geändert: 2015/09/11 04:33 (Externe Bearbeitung)