Hinweis: Sie sind auf den Seiten der Moodle 1.9 Dokumentation. Die Dokumentation der aktuellsten Moodle-Version finden Sie hier: Das Skript rolesdebug.php.

Das Skript rolesdebug.php: Unterschied zwischen den Versionen

Aus MoodleDocs
Wechseln zu:Navigation, Suche
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Zum Übersetzen}}
Siehe [[:en:The_rolesdebug.php_roles_debugging_script]]
{{Rollen}}{{Moodle 1.9}}
{{Rollen}}{{Moodle 1.9}}
Das Skript ''rolesdebug.php'' ist ein eigenständiges PHP-Skript, das sehr nützlich für das Debuggen von Problemen im Zusammenhang mit Rollen und Rechten ist. Die Ausgabe des Skripts kann von jedem mit guten Kenntnissen über das [[Rollen und  
Das Skript ''rolesdebug.php'' ist ein eigenständiges PHP-Skript, das sehr nützlich für das Debuggen von Problemen im Zusammenhang mit Rollen und Rechten ist. Die Ausgabe des Skripts kann von jedem mit guten Kenntnissen über das [[Rollen und Rechte|Rollen- und Rechtesystem]] System interpretiert werden. Sollten Sie ein "Rollen-Neuling" sein und Hilfe im Zusammenhang mit Rollen und Rechten benötigen, bitten Sie einen Rollen-Experten, Ihnen bei der Ausführung und Interpretation des Skripts zu helfen. Wenn Ihnen kein Rollen-Experte zur Verfügung steht, posten Sie einen Hilferuf im [http://moodle.org/mod/forum/view.php?id=6826 Roles and Capabilities forum] im Kurs "Using Moodle" auf moodle.org. Wenn Sie das Skript ein paar Mal benutzt haben, sind auch Sie sicher bald ein Experte!
Rechte|Rollen- und Rechtesystem]] System interpretiert werden. Sollten Sie ein "Rollen-Neuling" sein und Hilfe im Zusammenhang mit Rollen und Rechten benötigen, bitten Sie einen Rollen-Experten, Ihnen bei der Ausführung und Interpretation des Skripts zu helfen. Wenn Ihnen kein Rollen-Experte zur Verfügung steht, posten Sie einen Hilferuf im [http://moodle.org/mod/forum/view.php?id=6826 Roles and Capabilities forum] im Kurs "Using Moodle" auf moodle.org. Wenn Sie das Skript ein paar Mal benutzt haben, sind auch Sie sicher bald ein Experte!


Sie können das Skript ''rolesdebug.php'' aus der [http://moodle.org/mod/data/view.php?d=13&rid=1204 Modules and Plugins Datenbank] herunterladen. Zur Installation des Skripts speichern Sie es einfach im Moodle-Hauptverzeichnis (dort wo alle PHP-Skripte von Moodle gespeichert sind) oder in einem beliebigen Unterverzeichnis des Moodle-Hauptverzeichnis.
Sie können das Skript ''rolesdebug.php'' aus der [http://moodle.org/mod/data/view.php?d=13&rid=1204 Modules and Plugins Datenbank] herunterladen. Zur Installation des Skripts speichern Sie es einfach im Moodle-Hauptverzeichnis (dort wo alle PHP-Skripte von Moodle gespeichert sind) oder in einem beliebigen Unterverzeichnis des Moodle-Hauptverzeichnis.
Zeile 58: Zeile 54:
===Schritt 2===
===Schritt 2===


Öffnen Sie ein neues Browser-Fenster. Geben Sie in diesem Fenster die URL des Skripts ''rolesdebug.php''ein. Die Skript-URL müsste ungefähr so aussehen: ''http://ihreseite/moodle/rolesdebug.php''.
Öffnen Sie ein neues Browser-Fenster. Geben Sie in diesem Fenster die URL des Skripts ''rolesdebug.php'' ein. Die Skript-URL müsste ungefähr so aussehen:  
 
http://ihreseite/moodle/rolesdebug.php  
 
Das Skript wird nicht nach einem Login fragen, da Sie bereits eingeloggt sind. Sie werden gebeten, drei Eingaben zu machen:
Das Skript wird nicht nach einem Login fragen, da Sie bereits eingeloggt sind. Sie werden gebeten, drei Eingaben zu machen:
*CAPABILITY (FÄHIGKEIT). Falls Sie nur Ihre Rollenzuweisungen und -änderungen sehen wollen, können Sie dieses Feld leer lassen. Falls Sie ein bestimmtes Recht analysieren möchten, müssen Sie hier den Namen der entsprechenden Fähigkeit eingeben. Wenn Sie also z.B. an der Fähigkeit interessiert sind, die steuert, wie und ob Sie an einem Test teilnehmen können, geben Sie [[Capabilities/mod/quiz:attempt | mod/quiz:attempt]] ein.
*''capability (Fähigkeit)''. Falls Sie nur Ihre Rollenzuweisungen und -änderungen sehen wollen, können Sie dieses Feld leer lassen. Falls Sie ein bestimmtes Recht analysieren möchten, müssen Sie hier den Namen der entsprechenden Fähigkeit eingeben. Wenn Sie also z.B. an der Fähigkeit interessiert sind, die steuert, wie und ob Sie an einem Test teilnehmen können, geben Sie [[Capabilities/mod/quiz:attempt | mod/quiz:attempt]] ein.
*CONTEXT TYPE. Wählen Sie eine der folgenden Angaben aus dem Dropdown-Menü:  
*''context type''. Wählen Sie eine der folgenden Angaben aus dem Auswahlmenü:  
**COURSE (KURS)
**System
**MODULE (MODUL)
**User (Nutzer)
**BLOCK
**Course category (Kursbereich)
**COURSECAT (KURSBEREICH)
**Course (Kurs)
**USER (NUTZER)
**Module (Modul)
**SYSTEM
**Block
*CONTEXT ID. Die Kontext-ID ist eine Nummer am Ende der URL der Seite, die Sie in [[Das_Skript_rolesdebug.php#Schritt 1 | Schritt 1]] gefunden haben. Siehe [[Das_Skript_rolesdebug.php#Wie man die Kontext-ID feststellt | Wie man die Kontext-ID feststellt]].
*''context id''. Die Kontext-ID ist eine Nummer am Ende der URL der Seite, die Sie in [[Das_Skript_rolesdebug.php#Schritt 1 | Schritt 1]] gefunden haben. Siehe [[Das_Skript_rolesdebug.php#Wie man die Kontext-ID feststellt | Wie man die Kontext-ID feststellt]] weiter unten.


MODULE bezeichnet sowohl Lernaktivität als auch Arbeitsmaterial. Es gibt keinen Startseitenkontext. Wenn Sie sich auf den Startseitenkontext beziehen möchten, wählen Sie COURSE (KURS) und eine Kontext-ID 1.
Mit Modul ist entweder eine Lernaktivität oder ein Arbeitsmaterial gemeint. Es gibt keinen Site-Kontext (Kontext der Startseite). Wenn Sie sich auf den Kontext der Startseite beziehen möchten, wählen Sie ''course (Kurs)'' und die Kontext-ID 1.


Ein Beispiel für eine Eingabe:  
'''Beispiel für eine Eingabe''':  
<<hier kommt ein Bild>>
 
[[Bild:sample_input_quiz_attempt.png]]


===Schritt 3===  
===Schritt 3===  
Klicken Sie auf „go“. Rolesdebug.php gibt dann eine Informationsseite aus. Das Hauptelement dieser Seite ist die Tabelle mit der Übersicht aller Rollenzuweisungen und -überschreibungen, die Sie im angegebenen Kontext betreffen.
Klicken Sie auf ''go''. Das Skript ''rolesdebug.php'' gibt dann eine Informationsseite aus. Diese enthält im Wesentlichen eine Tabelle mit der Übersicht aller Rollenzuweisungen und -änderungen, die Sie im angegebenen Kontext betreffen.


==Wie die Ausgabe zu lesen ist==
==Wie man die Ausgabe des Skripts liest==
Unten sehen Sie eine typische Ausgabe für die oben gewählten Parameter.  
Hier sehen Sie eine typische Ausgabe für das Beispiel aus [[Das Skript rolesdebug.php#Schritt 2|Schritt 2]].
Die ersten drei Zeilen der Ausgabe (1) wiederholen zunächst nur Ihre Eingabewerte, die nächsten zwei Zeilen (2) zeigen, wer SIE sind und geben den Namen des Kontexts an, den Sie gewählt haben. Überprüfen Sie diese Zeilen, um sicher zu gehen, dass Sie der sind der Sie glauben und dass Sie den richtigen Kontext angegeben haben.
 
Für jede Ihrer Rollen sehen Sie eine Zeile in der Form alias = role name, wobei
[[Bild:sample_output_quiz_attempt.png]]
role name der tatsächliche Rollenname und
 
alias das Kürzel ist, das in der Tabelle verwendet wird, um sich auf die Rolle zu beziehen
Die ersten drei Zeilen der Ausgabe (1) wiederholen zunächst nur Ihre Eingabewerte, die nächsten zwei Zeilen (2) zeigen, wer SIE sind und geben den Namen des Kontexts an, den Sie gewählt haben. Überprüfen Sie diese Zeilen, um sicher zu gehen, dass Sie der sind, der Sie glauben zu sein und dass Sie den richtigen Kontext angegeben haben.
Im Beispiel bedeutet R7 = user, dass die Rolle User (die Kurzform für Authenticated user) in der Tabelle durch das Alias R7 repräsentiert wird. Die Alias werden verwendet, da die langen Rollenbezeichnungen die Tabelle sehr breit werden ließen und Sie so horizontal scrollen müssten. Durch die Verwendung von Alias passt die Tabelle wahrscheinlich in ein Fenster, so dass Sie alles im Blick haben.  
Für jede Ihrer Rollen sehen Sie eine Zeile in der Form ''alias = role name'', wobei
Dann kommt die Tabelle selbst (4). Weiter unten finden Sie mehr über die Tabelle.
''role name'' der tatsächliche Rollenname und
Falls Sie eine Fähigkeit angegeben haben, können Sie drei Zeilen direkt nach der Tabelle sehen. (5).
''alias'' das Kürzel ist, das in der Tabelle verwendet wird, um sich auf die Rolle zu beziehen.
Die erste Zeile zeigt das berechnete Recht. Der Wert ist entweder A (Allow / Erlaubt) oder P (Prevent / Verhindern).
Im Beispiel bedeutet ''R7 = user'', dass die Rolle ''User'' (die Kurzform für [[Authentifizierter-Nutzer-Rolle|Authentifizierte/r Nutzer/in]]) in der Tabelle durch das Kürzel ''R7'' repräsentiert wird. Die Kürzel werden verwendet, da sonst die Tabelle wegen der langen Rollenbezeichnungen sehr breit wäre.
Die zweite Zeile gibt an, ob Sie alles tun dürfen (Fähigkeit: „Erlaubt alles auszuführen“ moodle/site:doanything ist gegeben). Das ist normalerweise nur der Fall bei Administratoren.
Dann kommt die Tabelle selbst (4), mehr dazu siehe [[Das Skript rolesdebug.php#Wie man die Tabelle liest|unten]].
Die dritte Zeile gibt an, ob Sie „dies tun dürfen“. Wenn Sie Ihnen die Fähigkeit „Erlaubt alles auszuführen“ gegeben wurde, können Sie das natürlich unabhängig vom berechneten Recht.
 
Falls Sie eine Fähigkeit angegeben haben, sehen Sie drei weitere Zeilen direkt unter der Tabelle (5):
*Die erste Zeile zeigt das berechnete Recht. Der Wert ist entweder ''A (Allow / Erlauben)'' oder ''P (Prevent / Unterbinden)''.
*Die zweite Zeile gibt an, ob Sie alles tun dürfen (Fähigkeit: [[Capabilities/moodle/site:doanything | moodle/site:doanything]]). Das ist normalerweise nur für [[Administrator-Rolle|Administrator/innen]] der Fall.
*Die dritte Zeile gibt an, ob Sie ''dies tun dürfen'', d.h. ob Sie die angegebene Fähigkeit haben. Wenn Sie die Fähigkeit ''Erlaubt alles auszuführen'' haben, dann haben Sie natürlich auch die angegebene Fähigkeit unabhängig vom berechneten Recht.


===Wie man die Tabelle liest===
===Wie man die Tabelle liest===
Wenn der Zielkontext N Ebenen tief ist, hat die Tabelle N Zeilen und N Spalten, für jede Kontextebene eine. Im Beispiel gibt es vier Ebenen:  
Wenn der Zielkontext N Ebenen tief ist, hat die Tabelle N Zeilen und N Spalten, für jede Kontext-Ebene eine. Im obigen Beispiel gibt es vier Ebenen:  
 
   System
   System
       |
       |
       |
       |
   Kategorie "A"
   Kursbereich ''A''
       |
       |
       |
       |
   Kurs"cooking"
   Kurs ''cooking''
       |
       |
       |
       |
   Modul "quiz-1" (Test-1)
   Modul ''quiz-1'' (Test-1)
Die Spaltenüberschriften geben die Namen der Kontexte an. Diese werden nach Tiefe sortiert: System, Kategorie A, Kurs cooking, quiz-1 (test-1)
 
Um Platz zu sparen hat die Tabelle keine Zeilenbezeichnungen, da diese den Spaltenüberschriften entsprechen. So würde z.B. Zeile 1 als „System“ und Zeile 4 würde als „quiz-1“ (test-1) bezeichnet werden.
Die Spaltenüberschriften geben die Namen der Kontexte an. Diese werden nach Tiefe sortiert: System, Kursberecih ''A'', Kurs ''cooking'', Modul ''quiz-1'' (Test-1)
Die erste Zeile enthält die Rollenzuweisungen, die auf jeder Kontextebene gemacht wurden. Im Beispiel sieht man, dass R7 (authenticated user) im Systemkontext zugewiesen wurde und im Kurskontext die Rolle R5 (Teilnehmer / Student) Wenn es keine Überschreibungen gibt, (wie in diesem Beispiel) gibt nur Einträge in der Zeile 1.
Um Platz zu sparen, hat die Tabelle keine Zeilenbezeichnungen, da diese den Spaltenüberschriften entsprechen. So würde z.B. Zeile 1 als ''System'' und Zeile 4 würde als ''quiz-1'' (Test-1) bezeichnet werden.
Die Buchstaben N und A in Klammern sind die Werte der Fähigkeiten in den Rollendefinitionen. Die möglichen Werte sind:
 
Die erste Zeile enthält die Rollenzuweisungen, die auf jeder Kontext-Ebene gemacht wurden. Im Beispiel sieht man, dass ''R7'' ([[Authentifizierter-Nutzer-Rolle|Authentifizierte/r Nutzer/in]]) im System-Kontext zugewiesen wurde und im Kurskontext die Rolle ''R5'' ([[Teilnehmer-Rolle|Teilnehmer/in]]). Wenn es keine Rollenänderungen gibt (wie in diesem Beispiel), dann hat die Tabelle nur Einträge in der Zeile 1.
 
Die Buchstaben N und A in Klammern sind die Werte der Rechte für die Fähigkeiten in den Rollendefinitionen. Möglichen Werte sind:
   N - Not set (Nicht gesetzt)
   N - Not set (Nicht gesetzt)
   A – Allow (Erlauben)
   A – Allow (Erlauben)
   P – Prevent (Unterbinden)
   P – Prevent (Unterbinden)
   X – Prohibit (Untersagen)
   X – Prohibit (Untersagen)
„Nicht gesetzt“ bedeutet, dass die Rolle keine Aussage für diese Fähigkeit trifft. Im Beispiel kann man sehen, dass die Teilnehmer/Student Rolle die Teilnahme an Tests (quiz) erlaubt, während die Authenticated User Rolle nichts über das Durchführen von Tests aussagt.
 
Falls Rollenüberschreibungen existieren, gibt es in anderen Zeilen der Tabelle Einträge. Überschreibungen haben das gleiche Format wie Zuweisungen in Zeile 1. Eine Überschreibung wird in der ZEILE des Kontexts gezeigt, in der die Überschreibung vorgenommen wurde und in der Spalte der Zuweisung, die überschrieben wird.  
''Nicht gesetzt'' bedeutet, dass in der Rollendefinition keine Aussage für diese Fähigkeit getroffen wurde. Im Beispiel kann man sehen, dass für die Rolle ''R5'' die Teilnahme an Tests auf ''erlauben'' gesetzt ist, während für die Rolle ''R7'' keine Aussage getroffen wurde (''nicht gesetzt'').
Zur Veranschaulichung überschreiben wir jetzt die Teilnehmer/Student Rolle im Kontext Test (quiz), durch Setzen von „Tests ausprobieren“ (mod/quiz:attempt) auf „Verhindern“. Wenn der Teilnehmer versucht, am Test teilzunehmen, sollte er daran gehindert werden. Wenn das Skript nun ausgeführt wird erhalten wir folgende Ausgabe:  
 
Beachten Sie die nun hinzugefügte R5(P). Das ist die Überschreibung. Sie erscheint in der vierten Zeile, da die Überschreibung im Kontext Test (quiz) vorgenommen wurde und befindet sich in der Kursspalte, da die Teilnehmer/Student Rolle im Kontext Kurs zugewiesen wurde.
Falls Rollenänderungen existieren, gibt es in anderen Zeilen der Tabelle Einträge. Rollenänderungen haben das gleiche Format wie Rollenzuweisungen (siehe Zeile 1). Eine Rollenänderung wird in der Zeile der Tabelle angezeigt, die dem Kontext entspricht, in dem die Rollenänderung vorgenommen wurde und in der Spalte der Zuweisung, die geändert wird.  
Das berechnete Recht ist P (prevent=verhindern), wie angenommen.
 
Zur Veranschaulichung ändern wir jetzt die Rolle ''R5'' ([[Teilnehmer-Rolle|Teilnehmer/in]]) im Modul-Kontext ''quiz-1'' (Test-1): Wir setzen die Fähigkeit [[Capabilities/mod/quiz:attempt | mod/quiz:attempt]] (Test ausprobieren) auf ''Unterbinden''. Wenn der Nutzer in der Rolle ''R5'' jetzt versucht, am Test teilzunehmen, sollte er daran gehindert werden. Lassen wir nun das Skript erneut laufen, liefert es folgende Ausgabe:  
 
[[Bild:sample_output_quiz_attempt_with_override.png]]
 
Beachten Sie den neuen Eintrag ''R5(P)'' in Zeile 4, Spalte ''cooking''. Das ist die Rollenänderung. Sie erscheint in der 4. Zeile, da die Rollenänderung im Modul-Kontext ''quiz-1'' (Test-1) vorgenommen wurde, und in der Spalte des Kurses ''cooking'', da die Teilnehmer-Rolle im Kontext des Kurses ''cooking'' zugewiesen wurde.
Das berechnete Recht ist erwartungsgemäß ''P'' (Prevent / Unterbinden).
 
===Wie Moodle Rechte berechnet===
===Wie Moodle Rechte berechnet===
Für eine vollständige Erklärung wie Rechte berechnet werden, siehe Wie Rechte berechnet werden . Dieser Abschnitt zeigt nur, wie die Berechnung für die hier gegebenen Beispiel funktioniert.
Eine umfassende Erklärung, wie Rechte berechnet werden, finden Sie auf der Seite [[Wie Rechte berechnet werden]]. Dieser Abschnitt zeigt nur, wie die Berechnung für die obigen Beispiele erfolgt.
 
Im ersten Beispiel (in dem wir nur Rollenzuweisungen in Zeile 1 hatten), durchsucht Moodle die Tabelle von rechts nach links. Da das erste Recht, das Moodle findet, 'A' (Allowed=erlaubt) ist, ist das berechnete Recht 'A' (Allowed=erlaubt).
Im ersten Beispiel (in dem wir nur Rollenzuweisungen in Zeile 1 hatten), durchsucht Moodle die Tabelle von rechts nach links. Da das erste Recht, das Moodle findet, 'A' (Allowed=erlaubt) ist, ist das berechnete Recht 'A' (Allowed=erlaubt).
Als die Überschreibung hinzugefügt wurde, durchsuchte Moodle die Tabelle im Zickzack-Muster, wie nachstehend gezeigt. Da das erste Recht, auf das Moodle trifft 'P' (prevent=verhindern) ist, ist das berechnete Recht auch 'P' (prevent=verhindern).  
 
[[Bild:sample_output_quiz_attempt_showing_path.png]]
 
Im zweiten Beispiel (mit Rollenänderung), durchsucht Moodle die Tabelle im Zickzack-Muster von rechts unten nach links oben (siehe Grafik). Das erste Recht, auf das Moodle trifft, ist entscheidend: In unserem Beispiel ist es ''P'' (Prevent / Unterbinden).
 
[[Bild:sample_output_quiz_attempt_with_override_showing_path.png]]
 
==Wie man die Kontext-ID bestimmt==
Nachstehend finden Sie die Regeln für das Bestimmen der Kontext-ID für jeden einzelnen Kontext-Typ.
   
   
==Wie man die Kontext ID bestimmt==
===Kurs-Kontext (Course)===
Nachstehend finden Sie die Regeln für das Bestimmen der Kontext ID für jeden Kontexttyp.
In einem Kurs-Kontext ist die Kontext-ID die Kurs-ID. Die Kurs-ID ist aus der URL ersichtlich, die Sie in der Adresszeile Ihres Browsers sehen, wenn Sie auf der Kursseite sind. Wenn man z.B. auf den Kurs ''Features'' auf [demo.moodle.org demo.moodle.org] geht, sieht dass die Kurs-ID und damit auch die Kontext-ID für diesen Kurs gleich 2 ist.
 
===KURS===
[[Bild:URI_of_course_in_address_bar.png]]
In einem Kurskontext ist die Kontext ID die Kurs-ID. Die Kurs-ID ist aus der URL ersichtlich, die Sie in der Adresszeile Ihres Browsers sehen, wenn Sie auf der Kursseite sind. Wenn man auf den „Features“-Kurs auf demo.moodle.org geht, sieht man folgendes:  
 
Falls Moodle Sie aus irgendeinem Grund nicht in den Kurs lässt, Sie aber einen Link auf den Kurs sehen, bewegen Sie Ihren Mauszeiger über den Link, wie unten gezeigt. Ihr Browser zeigt Ihnen dann unten im Fenster die URL an.
 
[[Bild:URI_of_course_at_bottom_of_browser_window.png]]


Die Kurs-ID und damit auch die Kontext-ID für diesen Kurs ist 2.
Die Startseite einer Moodle-Installation ist auch ein Kurs mit der ID gleich 1.
Falls Moodle Sie aus irgendeinem Grund nicht in den Kurs lässt, Sie aber einen Link auf den Kurs sehen, bewegen Sie Ihren Mauszeiger über den Link, wie unten gezeigt. Ihr Browser zeigt Ihnen nun unten im Fenster die URL an.


Die Startseite einer Moodle Installation ist auch ein Kurs, aber keiner der oben genannten Tricks funktioniert hier. Die Startseiten-ID ist immer 1.
===Modul-Kontext (Module) - Lernaktivität oder Arbeitsmaterial===
In einem Modul-Kontext ist die Kontext-ID die ID der Lernaktivität oder des Arbeitsmaterials. Die ID können Sie aus der URL ablesen, die in der Adresszeile Ihres Browsers erscheint, wenn Sie auf die Lernaktivität bzw. das Arbeitsmaterial klicken, oder unten im Browserfenster, wenn Sie Ihren Mauszeiger über einen Link auf die Aktivität bzw. das Arbeitsmaterial bewegen. Hier einige Beispiele:


===MODUL (Lernaktivität oder Arbeitsmaterial)===
In einem Modul Kontext ist die Kontext-ID die ID der Lernaktivität oder des Arbeitsmaterials. Die ID können Sie aus der URL ablesen, die in der Adresszeile Ihres Browsers erscheint, wenn Sie sich sich Lernaktivität oder Arbeitsmaterial anzeigen lassen, oder unten im Browserfenster wenn Sie Ihren Mauszeiger über einen Link bewegen. Hier einige Beispiele:
   http://demo.moodle.org/mod/choice/view.php?id=25
   http://demo.moodle.org/mod/choice/view.php?id=25
   http://demo.moodle.org/mod/forum/view.php?id=28
   http://demo.moodle.org/mod/forum/view.php?id=28
Zeile 141: Zeile 165:
   http://demo.moodle.org/mod/resource/view.php?id=10
   http://demo.moodle.org/mod/resource/view.php?id=10
   http://demo.moodle.org/mod/resource/view.php?id=48
   http://demo.moodle.org/mod/resource/view.php?id=48
Die Kontext-IDs für diese Module sind 25, 28, 38, 61, 10, and 48.  
 
Die Kontext-IDs für diese Module sind 25, 28, 38, 61, 10 und 48.  
   
   
===BLOCK===  
===Block-Kontext===  
In einem BLOCK Kontext ist die Kontext-ID die „InstanceID“ des Blocks. Um die InstanceID zu erhalten, schalten Sie Bearbeiten ein und bewegen Sie Ihren Mauszeiger über das Augen-Icon im Blocktitel. Lesen Sie jetzt die InstanceID aus der URL unten in Ihrem Browserfenster. Zum Beispiel:  
In einem Block-Kontext ist die Kontext-ID die Instanz-ID des Blocks. Um diese Instanz-ID zu erhalten, schalten Sie die Seite, auf der der Block ist, in den Bearbeitungsmodus (Klick auf Button ''Bearbeiten einschalten'') und bewegen Sie Ihren Mauszeiger über das Augen-Symbol in der Kopfzeile des Blocks. Lesen Sie jetzt die ID aus der URL unten in Ihrem Browserfenster.  
   http://demo.moodle.org/course/view.php?id=28&instanceid=19...
 
Die Kontext-ID für diesen Block ist 19. Beachten Sie das nur ein Nutzer, der Bearbeiten einschalten kann, die InstanceID von Blocks auslesen kann.
'''Beispiel''':  
   http://demo.moodle.org/course/view.php?id=28&instanceid=19
===KURSBEREICH===
 
In einer KURSKATEGORIE Kontext ist die Kontext-ID die Kategorie-ID. Sie können die ID von der URL ablesen, die in der Adresszeile Ihres Browsers erscheint, wenn Sie  sich auf der Kategorieseite befinden. Sollte die Moodle-Installation nur eine Kategorie haben (meistens „Verschiedenes“) ist die ID 1. Wenn es mehr als eine Kategoire gibt, ist es am einfachsten, die Kategorie-ID einer bestimmten Kategorie zu ermitteln, wenn es eine Liste oder Kombi-Liste auf der Startseite (oder einen Kurse-Block) gibt. Dann müssen Sie nur den Mauszeiger über einen der Links bewegen. Zum Beipiel:  
Die Kontext-ID für diesen Block ist gleich 19: instanceid=19. Beachten Sie, dass nur ein Nutzer, der die Seite in den Bearbeitungsmodus schalten darf, die ID des Blocks ermitteln kann.
 
===Kursbereich-Kontext (Course category)===
In einem Kursbereich-Kontext ist die Kontext-ID die Kursbereich-ID. Sie können die ID aus der URL ablesen, die in der Adresszeile Ihres Browsers erscheint, wenn Sie  sich auf der Seite des entsprechenden Kursbereichs befinden. Sollte die Moodle-Installation nur einen Kursbereich haben (meistens heißt dieser Kursbereich ''Verschiedenes''), dann ist die ID gleich 1. Wenn es mehr als einen Kursbereich gibt, ist es am einfachsten, die Kursbereich-ID eines bestimmten Kursbereichs zu ermitteln, wenn Sie es eine Kurs-Liste oder Kombi-Liste auf der Startseite gibt (oder einen Kurse-Block). Dann müssen Sie nur den Mauszeiger über den entsprechenden Kursbereich in der Liste aller Kurse bewegen.  
 
'''Beipiel''':  
   http://mysite/course/category.php?id=3
   http://mysite/course/category.php?id=3
Die Kontext-ID für diese Kategorie ist 3  
Die Kontext-ID für diesen Kursbereich ist gleich 3.
   
   
===NUTZER===  
===Nutzer-Kontext (User)===  
Im NUTZER Kontext ist die Kontext-ID die Nutzer-ID. Sie können die ID aus der URL ablesen, die in der Adresszeile des Browsers erscheint, wenn Sie sich auf einer Nutzerprofilseite befinden, oder indem Sie Ihren Mauszeiger über den Namen eines Nutzers bewegen und die URL unten im Browserfenster verwenden. Zum Beispiel:  
Im Nutzer-Kontext ist die Kontext-ID die Nutzer-ID. Sie können die ID aus der URL ablesen, die in der Adresszeile des Browsers erscheint, wenn Sie sich auf der Profilseite der entsprechenden Person befinden, oder indem Sie Ihren Mauszeiger über den Namen der Person bewegen und die URL unten im Browserfenster ablesen.  
 
'''Beispiel''':  
   http://demo.moodle.org/user/view.php?id=6&course=1
   http://demo.moodle.org/user/view.php?id=6&course=1
Die Kontext-ID für diesen Nutzer ist 6  
Die Kontext-ID für diesen Nutzer ist gleich 6.
   
   
===SYSTEM===  
===System-Kontext===  
Es gibt nur einen SYSTEM Kontext. Seine ID ist 1.  
Es gibt nur einen System-Kontext. Seine ID ist gleich 1.
 
==Das Skript sagt, dass ich darf, aber Moodle lässt mich nicht!==
Wenn das passiert, liegt es daran, dass Moodle das Recht anders berechnet als Sie annehmen. Hier sind drei Beispiele:
*Moodle berechnet das Recht in einem anderen Kontext als dem von Ihnen angegebenen (z.B. berechnet Moodle einige Rechte ausschließlich im System-Kontext oder Nutzer-Kontext).
*Wenn Ihnen eine sogenannte [[Rollen verwalten#Legacy-Rollen|Legacy-Rolle]] zugewisen wurde (d.h. eine Rolle aus einer Moodle-Version vor 1.7), ignoriert Moodle möglicherweise das berechnete Recht. Das gilt insbesondere für die [[Rollen verwalten#Legacy-Rollen|Legacy-Rolle]] ''Gast''. Wenn z.B. die Gast-Rolle geändert wurde, so dass Gäste in Foren Beiträge schreiben dürfen, dann zeigt das Skript ''rolesdebug.php'' an, dass Sie Forumsbeiträge schreiben dürfen, aber Moodle ignoriert dennoch dieses Recht. Wenn Sie einen Entwickler fragen, warum das so ist, erhalten Sie die Antwort ''weil Gäste grundsätzlich keine Forumsbeiträge schreiben dürfen''.
*Mehrere Fähigkeiten müssen auf ''erlauben'' gesetzt sein, damit Sie tatsächlich das tun dürfen, was Sie möchten.


==Rolesdebug sagt, dass ich das darf, aber Moodle lässt mich nicht!==
Wenn also ein solcher Konflikt auftritt (das Skript erlaubt, etwas zu tun, aber Moodle nicht), muss genauer untersucht werden, wo das Problem liegt. Häufig finden Sie die Antwort in der Dokumentation. So gibt die Dokumentation normalerweise an, wenn ein Recht in einem anderen Kontext berechnet wird. In Zweifelsfall kann man direkt im Code nachsehen, was Moodle tatsächlich tut.
Wenn das passiert, liegt es daran, dass Moodle das Recht anders berechnet als Sie annehmen. Hier sind drein Beispiele:
Moodle berechnet das Recht in einem anderen Kontext als der von Ihnen angegebene (Moodle berechnet einige Rechte ausdrücklich im System oder Nutzer-Kontext).
Wenn Ihnen eine sogenannte Legacy Rolle (eine Rolle aus einer alten Moodle Version), z.B. „Gast“ zugewiesen wurde, ignoriert Moodle möglicherweise das berechnete Recht. Z.B. Gast wurde überschrieben, so dass diese Rolle in Foren posten darf, Rolesdebug zeigt an, dass Sie posten können, aber Moodle ignoriert einfach dieses Recht. Wenn Sie einen Entwickler fragen, warum das so ist, kommt die Antwort „weil Gäste nie posten können“.
Sie benötigen zwei oder mehr Rechte, um das auszuführen, was Sie möchten.
Wenn so ein Konflikt auftritt, muss genauer untersucht werden, wo das Problem liegt. Häufig findet sich die Lösung in der Dokumentation. So gibt die Dokumentation normalerweise an, wenn ein Recht in einem anderen Kontext berechnet wird. In anderen Fällen muss man leider wirklich den Code lesen.


[[Category:Rollen]]
[[Category:Rollen]]
[[en:The_rolesdebug.php_roles_debugging_script]]
[[en:The_rolesdebug.php_roles_debugging_script]]

Aktuelle Version vom 18. März 2009, 14:40 Uhr

Moodle1.9

Das Skript rolesdebug.php ist ein eigenständiges PHP-Skript, das sehr nützlich für das Debuggen von Problemen im Zusammenhang mit Rollen und Rechten ist. Die Ausgabe des Skripts kann von jedem mit guten Kenntnissen über das Rollen- und Rechtesystem System interpretiert werden. Sollten Sie ein "Rollen-Neuling" sein und Hilfe im Zusammenhang mit Rollen und Rechten benötigen, bitten Sie einen Rollen-Experten, Ihnen bei der Ausführung und Interpretation des Skripts zu helfen. Wenn Ihnen kein Rollen-Experte zur Verfügung steht, posten Sie einen Hilferuf im Roles and Capabilities forum im Kurs "Using Moodle" auf moodle.org. Wenn Sie das Skript ein paar Mal benutzt haben, sind auch Sie sicher bald ein Experte!

Sie können das Skript rolesdebug.php aus der Modules and Plugins Datenbank herunterladen. Zur Installation des Skripts speichern Sie es einfach im Moodle-Hauptverzeichnis (dort wo alle PHP-Skripte von Moodle gespeichert sind) oder in einem beliebigen Unterverzeichnis des Moodle-Hauptverzeichnis.

Das Skript rolesdebug.php erfordert eine Anmeldung. Es kann also nur ein angemeldeter Moodle-Nutzer das Skript benutzen. Da es sich um ein PHP-Skript handelt, sehen Sie die Ausgabe in Ihrem Browser. Es kann nur von Ihnen eingesehen werden, es sei denn, es schaut Ihnen jemand über die Schulter ;-). Außerdem gibt rolesdebug.php Ihnen nur Informationen über IHRE Rechte. Sie können es also nicht verwenden, um sich über die Rechte eines anderen Nutzers zu informieren (es sei denn, Sie können sich als diese Person einloggen.)

Das Skript rolesdebug.php gibt eine Tabelle mit einer Übersicht über die Rollenzuweisungen und Änderungen von Zugriffsrechten, die Sie in einem angegebenen Kontext betreffen, aus. Anhand dieser Tabelle können Sie sehen, wie Moodle ein Recht für eine gegebene Fähigkeit berechnet. Das Format der Tabelle wird mit vielen Beispielen im Artikel Wie Rechte berechnet werden erläutert.

Das Skript rolesdebug.php liest Rechte-Daten aus der Moodle-Datenbank aus, verändert sie aber in keiner Weise. In dieser Hinsicht ist das Skript vergleichbar mit anderen Debug-Skripts der Moodle-Standardinstallation, wie z.B. der TeX-Debugger.

Wann verwenden Sie das Skript rolesdebug.php?

Ein typische Anwendungsfall ist eine Situation, in der ein "Rollen-Experte" einem "Rollen-Neuling" bei der Lösung eines rollenspezifischen Problems hilft. Ein "Rollen-Experte" ist ein Moodle-Nutzer, der ein gutes Verständnis der im nächsten Abschnitt aufgelisteten grundlegenden Begriffe hat. Ein "Rollen-Neuling" ist ein Moodle-Nutzer, der einfache Anweisungen des "Rollen-Experten" befolgen kann. Während es durchaus vorkommen kann, dass Experte und Neuling sich am gleichen Ort befinden und Nutzerkonten auf der gleichen Moodle-Installation haben, ist das nicht zwingend notwendig. Der Experte müsste dem Neuling helfen können, ohne sich auf der Moodle-Installation des Neulings einzuloggen, indem er mit dem Neuling nur über E-Mail, Messaging oder Forumsbeiträge kommuniziert. Der Neuling könnte z.B ein Nutzer sein, der in einem Forum auf moodle.org gepostet hat, während der Experte ein Moodler ist, der gerne helfen möchte. Sogar wenn Experte und Neuling sich in der gleichen Institution befinden und beide Nutzerkonten auf der gleichen Moodle-Installation haben, kann es sein, dass der Experte nicht in der Lage ist, direkt zu helfen (z.B. indem er sich als der Neuling anmeldet oder sich mit ihm trifft - der Experte könnte z.B. ein sehr eingespannter Moodle-Administrator sein). Auch in diesem Fall hilft das Skript rolesdebug.php.

Hier ist ein typisches Szenario: Angenommen der Neuling ist ein Trainer, der eine Lernaktivität Test angelegt hat, aber aus unbekannten Gründen nicht in der Lage ist, sich die Vorschau des Tests anzusehen. Der Neuling berichtet über sein Problem in einem Forumsbeitrag auf moodle.org. Der Experte (ein hilfsbereiter Moodler ;-)) geht von einem rollenspezifischen Problem aus und bittet den Neuling folgendes zu tun:

  • sich in Moodle einzuloggen, um das Problem zu reproduzieren
  • das Skript rolesdebug.php aufzurufen
  • zwei oder drei Parameter nach Anweisung einzugeben
  • die Ausgabe von rolesdebug.php in einem Forumsbeitrag zu posten. Der Experte sieht sich die Ausgabe an und erkennt sofort das Problem.

Andere Fälle für den Einsatz des Skripts rolesdebug.php sind u.a.:

  • ein Nutzer, der sein eigenes Problem analysiert und löst
  • ein Nutzer, der das Problem eines anderen Nutzers löst, während er als dieser Nutzer eingeloggt ist

Bitte beachten Sie, dass beide Fälle äquivalent sind, da es in beiden Fällen nur einen Akteur gibt (den Experten). Der Einfachheit halber beschreibt der Artikels im folgenden nur diesen Fall und bezieht sich immer auf SIE. Unter Berücksichtigung des Hauptanwendungsfalls sollte eigentlich immer klar sein, wann "Sie" den Experten und wann den Neuling meint.

Grundlegende Begriffe

Die Interpretation der Ausgabe des Skripts rolesdebug.php ist nur mit einem guten Verständnis der unten stehenden Begriffe möglich. Wenn Ihnen einer der Begriffe unklar ist, sollten Sie sich den entsprechenden Artikel durchlesen.

Überblick über die Anwendung des Skripts

Als erstes loggen Sie sich auf Moodle ein und navigieren zu dem Kontext, der Probleme bereitet. Das könnte ein Test sein, den Moodle Sie aus irgendeinem Grund nicht durchführen lässt. Dann gehen Sie, ohne sich auszuloggen, auf die Seite rolesdebug.php (es bietet sich an, dafür einen neuen Browsertab zu verwenden). Geben Sie den relevanten Kontext ein und optional auch den Namen der Fähigkeit, die Sie analysieren möchten. Dann klicken Sie auf den Button Go. Das Skript gibt dann eine Tabelle mit einer Übersicht der Rollenzuweisungen und -überschreibungen aus, die Sie im angegebenen Kontext betreffen. Anhand dieser Tabelle können Sie sehen, warum Moodle Sie den Test nicht durchführen lässt.

Detaillierte Anleitung zur Verwendung des Skripts

Schritt 1

Dieser Schritt erfolgt in Moodle (das Skript selbst wird erst in Schritt 2 verwendet). Loggen Sie sich in Moodle ein und navigieren Sie zu dem Kontext, in dem das Problem auftritt. Dort angekommen, notieren Sie sich die Kontext-ID (diese wird in Schritt 2 benötigt). Wie man die Kontext-ID feststellt, wird später erklärt.

Hinweis: Es ist notwendig, in den Kontext zu navigieren, auch wenn Sie die Kontext-ID schon kennen. Das liegt daran, dass Moodle einige Rechte-Daten erst dann lädt, wenn sie tatsächlich gebraucht werden. Das Navigieren in den jeweiligen Kontext stellt sicher, dass Moodle diese Daten lädt. Wenn also der Zielkontext ein bestimmter Test in einem Kurs ist, dann müssen Sie in diesen Kurs gehen und auf das Test-Icon klicken.

Falls Sie jedoch ein Problem beheben wollen, das mit einer Veränderung der Nutzerpolicy (Nutzereigenschaften) zu tun hat, wie z.B. Website-Administration > Startseite > Einstellungen > Standardrolle für Startseite, müssen Sie sich nach Veränderung der Einstellung zunächst ausloggen und wieder einloggen.

Loggen Sie sich nicht wieder aus!

Schritt 2

Öffnen Sie ein neues Browser-Fenster. Geben Sie in diesem Fenster die URL des Skripts rolesdebug.php ein. Die Skript-URL müsste ungefähr so aussehen:

http://ihreseite/moodle/rolesdebug.php 

Das Skript wird nicht nach einem Login fragen, da Sie bereits eingeloggt sind. Sie werden gebeten, drei Eingaben zu machen:

  • capability (Fähigkeit). Falls Sie nur Ihre Rollenzuweisungen und -änderungen sehen wollen, können Sie dieses Feld leer lassen. Falls Sie ein bestimmtes Recht analysieren möchten, müssen Sie hier den Namen der entsprechenden Fähigkeit eingeben. Wenn Sie also z.B. an der Fähigkeit interessiert sind, die steuert, wie und ob Sie an einem Test teilnehmen können, geben Sie mod/quiz:attempt ein.
  • context type. Wählen Sie eine der folgenden Angaben aus dem Auswahlmenü:
    • System
    • User (Nutzer)
    • Course category (Kursbereich)
    • Course (Kurs)
    • Module (Modul)
    • Block
  • context id. Die Kontext-ID ist eine Nummer am Ende der URL der Seite, die Sie in Schritt 1 gefunden haben. Siehe Wie man die Kontext-ID feststellt weiter unten.

Mit Modul ist entweder eine Lernaktivität oder ein Arbeitsmaterial gemeint. Es gibt keinen Site-Kontext (Kontext der Startseite). Wenn Sie sich auf den Kontext der Startseite beziehen möchten, wählen Sie course (Kurs) und die Kontext-ID 1.

Beispiel für eine Eingabe:

sample input quiz attempt.png

Schritt 3

Klicken Sie auf go. Das Skript rolesdebug.php gibt dann eine Informationsseite aus. Diese enthält im Wesentlichen eine Tabelle mit der Übersicht aller Rollenzuweisungen und -änderungen, die Sie im angegebenen Kontext betreffen.

Wie man die Ausgabe des Skripts liest

Hier sehen Sie eine typische Ausgabe für das Beispiel aus Schritt 2.

sample output quiz attempt.png

Die ersten drei Zeilen der Ausgabe (1) wiederholen zunächst nur Ihre Eingabewerte, die nächsten zwei Zeilen (2) zeigen, wer SIE sind und geben den Namen des Kontexts an, den Sie gewählt haben. Überprüfen Sie diese Zeilen, um sicher zu gehen, dass Sie der sind, der Sie glauben zu sein und dass Sie den richtigen Kontext angegeben haben. Für jede Ihrer Rollen sehen Sie eine Zeile in der Form alias = role name, wobei role name der tatsächliche Rollenname und alias das Kürzel ist, das in der Tabelle verwendet wird, um sich auf die Rolle zu beziehen. Im Beispiel bedeutet R7 = user, dass die Rolle User (die Kurzform für Authentifizierte/r Nutzer/in) in der Tabelle durch das Kürzel R7 repräsentiert wird. Die Kürzel werden verwendet, da sonst die Tabelle wegen der langen Rollenbezeichnungen sehr breit wäre. Dann kommt die Tabelle selbst (4), mehr dazu siehe unten.

Falls Sie eine Fähigkeit angegeben haben, sehen Sie drei weitere Zeilen direkt unter der Tabelle (5):

  • Die erste Zeile zeigt das berechnete Recht. Der Wert ist entweder A (Allow / Erlauben) oder P (Prevent / Unterbinden).
  • Die zweite Zeile gibt an, ob Sie alles tun dürfen (Fähigkeit: moodle/site:doanything). Das ist normalerweise nur für Administrator/innen der Fall.
  • Die dritte Zeile gibt an, ob Sie dies tun dürfen, d.h. ob Sie die angegebene Fähigkeit haben. Wenn Sie die Fähigkeit Erlaubt alles auszuführen haben, dann haben Sie natürlich auch die angegebene Fähigkeit unabhängig vom berechneten Recht.

Wie man die Tabelle liest

Wenn der Zielkontext N Ebenen tief ist, hat die Tabelle N Zeilen und N Spalten, für jede Kontext-Ebene eine. Im obigen Beispiel gibt es vier Ebenen:

  System
     |
     |
  Kursbereich A
     |
     |
  Kurs cooking
     |
     |
  Modul quiz-1 (Test-1)

Die Spaltenüberschriften geben die Namen der Kontexte an. Diese werden nach Tiefe sortiert: System, Kursberecih A, Kurs cooking, Modul quiz-1 (Test-1) Um Platz zu sparen, hat die Tabelle keine Zeilenbezeichnungen, da diese den Spaltenüberschriften entsprechen. So würde z.B. Zeile 1 als System und Zeile 4 würde als quiz-1 (Test-1) bezeichnet werden.

Die erste Zeile enthält die Rollenzuweisungen, die auf jeder Kontext-Ebene gemacht wurden. Im Beispiel sieht man, dass R7 (Authentifizierte/r Nutzer/in) im System-Kontext zugewiesen wurde und im Kurskontext die Rolle R5 (Teilnehmer/in). Wenn es keine Rollenänderungen gibt (wie in diesem Beispiel), dann hat die Tabelle nur Einträge in der Zeile 1.

Die Buchstaben N und A in Klammern sind die Werte der Rechte für die Fähigkeiten in den Rollendefinitionen. Möglichen Werte sind:

  N - Not set (Nicht gesetzt)
  A – Allow (Erlauben)
  P – Prevent (Unterbinden)
  X – Prohibit (Untersagen)

Nicht gesetzt bedeutet, dass in der Rollendefinition keine Aussage für diese Fähigkeit getroffen wurde. Im Beispiel kann man sehen, dass für die Rolle R5 die Teilnahme an Tests auf erlauben gesetzt ist, während für die Rolle R7 keine Aussage getroffen wurde (nicht gesetzt).

Falls Rollenänderungen existieren, gibt es in anderen Zeilen der Tabelle Einträge. Rollenänderungen haben das gleiche Format wie Rollenzuweisungen (siehe Zeile 1). Eine Rollenänderung wird in der Zeile der Tabelle angezeigt, die dem Kontext entspricht, in dem die Rollenänderung vorgenommen wurde und in der Spalte der Zuweisung, die geändert wird.

Zur Veranschaulichung ändern wir jetzt die Rolle R5 (Teilnehmer/in) im Modul-Kontext quiz-1 (Test-1): Wir setzen die Fähigkeit mod/quiz:attempt (Test ausprobieren) auf Unterbinden. Wenn der Nutzer in der Rolle R5 jetzt versucht, am Test teilzunehmen, sollte er daran gehindert werden. Lassen wir nun das Skript erneut laufen, liefert es folgende Ausgabe:

sample output quiz attempt with override.png

Beachten Sie den neuen Eintrag R5(P) in Zeile 4, Spalte cooking. Das ist die Rollenänderung. Sie erscheint in der 4. Zeile, da die Rollenänderung im Modul-Kontext quiz-1 (Test-1) vorgenommen wurde, und in der Spalte des Kurses cooking, da die Teilnehmer-Rolle im Kontext des Kurses cooking zugewiesen wurde. Das berechnete Recht ist erwartungsgemäß P (Prevent / Unterbinden).

Wie Moodle Rechte berechnet

Eine umfassende Erklärung, wie Rechte berechnet werden, finden Sie auf der Seite Wie Rechte berechnet werden. Dieser Abschnitt zeigt nur, wie die Berechnung für die obigen Beispiele erfolgt.

Im ersten Beispiel (in dem wir nur Rollenzuweisungen in Zeile 1 hatten), durchsucht Moodle die Tabelle von rechts nach links. Da das erste Recht, das Moodle findet, 'A' (Allowed=erlaubt) ist, ist das berechnete Recht 'A' (Allowed=erlaubt).

sample output quiz attempt showing path.png

Im zweiten Beispiel (mit Rollenänderung), durchsucht Moodle die Tabelle im Zickzack-Muster von rechts unten nach links oben (siehe Grafik). Das erste Recht, auf das Moodle trifft, ist entscheidend: In unserem Beispiel ist es P (Prevent / Unterbinden).

sample output quiz attempt with override showing path.png

Wie man die Kontext-ID bestimmt

Nachstehend finden Sie die Regeln für das Bestimmen der Kontext-ID für jeden einzelnen Kontext-Typ.

Kurs-Kontext (Course)

In einem Kurs-Kontext ist die Kontext-ID die Kurs-ID. Die Kurs-ID ist aus der URL ersichtlich, die Sie in der Adresszeile Ihres Browsers sehen, wenn Sie auf der Kursseite sind. Wenn man z.B. auf den Kurs Features auf [demo.moodle.org demo.moodle.org] geht, sieht dass die Kurs-ID und damit auch die Kontext-ID für diesen Kurs gleich 2 ist.

URI of course in address bar.png

Falls Moodle Sie aus irgendeinem Grund nicht in den Kurs lässt, Sie aber einen Link auf den Kurs sehen, bewegen Sie Ihren Mauszeiger über den Link, wie unten gezeigt. Ihr Browser zeigt Ihnen dann unten im Fenster die URL an.

URI of course at bottom of browser window.png

Die Startseite einer Moodle-Installation ist auch ein Kurs mit der ID gleich 1.

Modul-Kontext (Module) - Lernaktivität oder Arbeitsmaterial

In einem Modul-Kontext ist die Kontext-ID die ID der Lernaktivität oder des Arbeitsmaterials. Die ID können Sie aus der URL ablesen, die in der Adresszeile Ihres Browsers erscheint, wenn Sie auf die Lernaktivität bzw. das Arbeitsmaterial klicken, oder unten im Browserfenster, wenn Sie Ihren Mauszeiger über einen Link auf die Aktivität bzw. das Arbeitsmaterial bewegen. Hier einige Beispiele:

  http://demo.moodle.org/mod/choice/view.php?id=25
  http://demo.moodle.org/mod/forum/view.php?id=28
  http://demo.moodle.org/mod/lesson/view.php?id=38
  http://demo.moodle.org/mod/quiz/view.php?id=61
  http://demo.moodle.org/mod/resource/view.php?id=10
  http://demo.moodle.org/mod/resource/view.php?id=48

Die Kontext-IDs für diese Module sind 25, 28, 38, 61, 10 und 48.

Block-Kontext

In einem Block-Kontext ist die Kontext-ID die Instanz-ID des Blocks. Um diese Instanz-ID zu erhalten, schalten Sie die Seite, auf der der Block ist, in den Bearbeitungsmodus (Klick auf Button Bearbeiten einschalten) und bewegen Sie Ihren Mauszeiger über das Augen-Symbol in der Kopfzeile des Blocks. Lesen Sie jetzt die ID aus der URL unten in Ihrem Browserfenster.

Beispiel:

  http://demo.moodle.org/course/view.php?id=28&instanceid=19

Die Kontext-ID für diesen Block ist gleich 19: instanceid=19. Beachten Sie, dass nur ein Nutzer, der die Seite in den Bearbeitungsmodus schalten darf, die ID des Blocks ermitteln kann.

Kursbereich-Kontext (Course category)

In einem Kursbereich-Kontext ist die Kontext-ID die Kursbereich-ID. Sie können die ID aus der URL ablesen, die in der Adresszeile Ihres Browsers erscheint, wenn Sie sich auf der Seite des entsprechenden Kursbereichs befinden. Sollte die Moodle-Installation nur einen Kursbereich haben (meistens heißt dieser Kursbereich Verschiedenes), dann ist die ID gleich 1. Wenn es mehr als einen Kursbereich gibt, ist es am einfachsten, die Kursbereich-ID eines bestimmten Kursbereichs zu ermitteln, wenn Sie es eine Kurs-Liste oder Kombi-Liste auf der Startseite gibt (oder einen Kurse-Block). Dann müssen Sie nur den Mauszeiger über den entsprechenden Kursbereich in der Liste aller Kurse bewegen.

Beipiel:

  http://mysite/course/category.php?id=3

Die Kontext-ID für diesen Kursbereich ist gleich 3.

Nutzer-Kontext (User)

Im Nutzer-Kontext ist die Kontext-ID die Nutzer-ID. Sie können die ID aus der URL ablesen, die in der Adresszeile des Browsers erscheint, wenn Sie sich auf der Profilseite der entsprechenden Person befinden, oder indem Sie Ihren Mauszeiger über den Namen der Person bewegen und die URL unten im Browserfenster ablesen.

Beispiel:

  http://demo.moodle.org/user/view.php?id=6&course=1

Die Kontext-ID für diesen Nutzer ist gleich 6.

System-Kontext

Es gibt nur einen System-Kontext. Seine ID ist gleich 1.

Das Skript sagt, dass ich darf, aber Moodle lässt mich nicht!

Wenn das passiert, liegt es daran, dass Moodle das Recht anders berechnet als Sie annehmen. Hier sind drei Beispiele:

  • Moodle berechnet das Recht in einem anderen Kontext als dem von Ihnen angegebenen (z.B. berechnet Moodle einige Rechte ausschließlich im System-Kontext oder Nutzer-Kontext).
  • Wenn Ihnen eine sogenannte Legacy-Rolle zugewisen wurde (d.h. eine Rolle aus einer Moodle-Version vor 1.7), ignoriert Moodle möglicherweise das berechnete Recht. Das gilt insbesondere für die Legacy-Rolle Gast. Wenn z.B. die Gast-Rolle geändert wurde, so dass Gäste in Foren Beiträge schreiben dürfen, dann zeigt das Skript rolesdebug.php an, dass Sie Forumsbeiträge schreiben dürfen, aber Moodle ignoriert dennoch dieses Recht. Wenn Sie einen Entwickler fragen, warum das so ist, erhalten Sie die Antwort weil Gäste grundsätzlich keine Forumsbeiträge schreiben dürfen.
  • Mehrere Fähigkeiten müssen auf erlauben gesetzt sein, damit Sie tatsächlich das tun dürfen, was Sie möchten.

Wenn also ein solcher Konflikt auftritt (das Skript erlaubt, etwas zu tun, aber Moodle nicht), muss genauer untersucht werden, wo das Problem liegt. Häufig finden Sie die Antwort in der Dokumentation. So gibt die Dokumentation normalerweise an, wenn ein Recht in einem anderen Kontext berechnet wird. In Zweifelsfall kann man direkt im Code nachsehen, was Moodle tatsächlich tut.