| name | moodle-lernsituationen-creator |
| description | Erstellt vollständige Moodle-Kursabschnitte für handlungsorientierte Lernsituationen an berufsbildenden Schulen (BBS) via Moodle MCP Server. Unterstützt beliebig viele Phasen (nicht zwingend 5), verschiedene Lernfeldstrukturen und alle Ausbildungsberufe. Verwende diesen Skill IMMER wenn der Benutzer sagt: "erstelle einen Moodle-Kurs", "baue den Kurs auf", "Moodle-Kurs für die Lernsituation", "lege die LS in Moodle an", "Moodle-Abschnitt erstellen", "Kurs befüllen", oder wenn eine Lernsituation (als Datei oder Text) vorliegt und eine Kurs-ID genannt wird.
|
Skill: Moodle-Lernsituationen-Creator (MCP-Version)
Erstellt einen vollständigen Moodle-Kursabschnitt auf Basis einer Lernsituation.
Nutzt ausschliesslich den Moodle MCP Server – kein Browser, keine Klicks.
Grundprinzipien
Phasenanzahl ist flexibel
Es gibt KEINE feste Anzahl von Phasen. Der Skill analysiert die vorliegende
Lernsituation und erstellt so viele Phasen wie darin beschrieben sind.
Typisch sind 3-6 Phasen – aber es koennen auch 2 oder 8 sein.
Phasen-Design ist frei waehlbar
Phasen muessen NICHT dem FIAE-Schema folgen. Moegliche Phasenmodelle:
- Handlungsorientiert: Informieren / Planen / Durchfuehren / Kontrollieren / Reflektieren
- Projektbasiert: Analyse / Konzept / Implementierung / Test / Abnahme
- Problembasiert: Problem / Hypothese / Experiment / Auswertung
- Eigene Struktur aus der Lernsituation ableiten
Inhalte aus der Lernsituation ableiten
Alle Texte, Aufgaben und Materialien werden AUS DER VORLIEGENDEN LERNSITUATION
abgeleitet. Nicht erfinden, nicht aus Beispielen kopieren.
Verfuegbare MCP-Tools
| Tool | Verwendung |
|---|
moodle_get_sections | Abschnitte eines Kurses lesen |
moodle_get_modules | Aktivitaeten + cmids eines Abschnitts lesen |
moodle_update_section | Abschnittsname + Handlungssituation-Card setzen |
moodle_create_label | Phasen-Header anlegen (direkt auf Kursseite) |
moodle_create_page | Textseite anlegen (nur lesen) |
moodle_create_url | Externen Link anlegen |
moodle_create_assign | Aufgabe anlegen (mit PDF-Button) |
moodle_update_label | Label bearbeiten |
moodle_update_page | Textseite bearbeiten |
moodle_update_assign | Aufgabe bearbeiten |
moodle_update_url | Link bearbeiten |
Workflow
Schritt 1: Lernsituation analysieren
Vor dem ersten API-Aufruf die Lernsituation lesen und notieren:
- Wie viele Phasen gibt es? Wie heissen sie?
- Welche Farbe bekommt jede Phase? (Frei waehlbar, aber konsistent)
- Welche Aktivitaeten gehoeren zu welcher Phase?
- Was muessen SuS NUR LESEN? Was muessen sie ABGEBEN?
Schritt 2: Kursstruktur pruefen
moodle_get_sections(courseid=KURS_ID)
Freien Abschnitt waehlen.
Schritt 3: Abschnitt benennen + Einstiegskarte setzen
moodle_update_section(courseid, sectionnum, name, summary)
Schritt 4: Pro Phase
Fuer jede Phase der Lernsituation:
moodle_create_label – Phasen-Header
- Je nach Inhalt:
moodle_create_page, moodle_create_url, moodle_create_assign
Aktivitaetstypen waehlen
| Situation | Tool |
|---|
| SuS liest nur (Infoblatt, Leitfaden, Anleitung, Codebeispiel) | moodle_create_page |
| SuS fuellt etwas aus / gibt etwas ab / reflektiert | moodle_create_assign |
| Externe Dokumentation, GitHub, MDN, Referenz | moodle_create_url |
| Phasen-Trenner (direkt auf Kursseite sichtbar) | moodle_create_label |
GOLDENE REGEL: Sobald SuS irgendetwas ausfullen, eintragen, ankreuzen
oder hochladen sollen -> IMMER moodle_create_assign, NIEMALS moodle_create_page!
HTML-Vorlagen
Einstiegskarte (fuer moodle_update_section summary)
Ersetze alle [PLATZHALTER] mit echten Inhalten aus der Lernsituation:
<div style="background:linear-gradient(135deg,#1a237e,#283593);border-radius:12px;padding:0;margin-bottom:20px;overflow:hidden;box-shadow:0 4px 15px rgba(0,0,0,0.2);">
<div style="background:rgba(255,255,255,0.1);padding:12px 20px;display:flex;align-items:center;gap:10px;">
<span style="font-size:1.4em;">🎯</span>
<div>
<div style="color:rgba(255,255,255,0.7);font-size:0.75em;font-weight:600;letter-spacing:2px;text-transform:uppercase;">LERNSITUATION [NR] — [FIRMENNAME]</div>
<div style="color:#fff;font-size:1.1em;font-weight:700;">Handlungssituation</div>
</div>
</div>
<div style="background:#fff;margin:0 16px 16px;border-radius:8px;padding:20px;">
<p style="color:#333;line-height:1.7;margin-bottom:16px;">[SITUATIONSBESCHREIBUNG AUS DER LERNSITUATION]</p>
<div style="border-top:2px solid #e8eaf6;padding-top:14px;">
<div style="color:#1a237e;font-size:0.75em;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:10px;">🎯 HANDLUNGSERGEBNISSE</div>
<ul style="margin:0;padding-left:20px;color:#444;line-height:2;">
<li>[ERGEBNIS 1 AUS DER LERNSITUATION]</li>
<li>[ERGEBNIS 2 AUS DER LERNSITUATION]</li>
</ul>
</div>
</div>
</div>
Phasen-Header (fuer moodle_create_label content)
<div style="background:linear-gradient(135deg,[FARBE]dd,[FARBE]);border-radius:10px;padding:16px 20px;margin:10px 0;box-shadow:0 3px 10px rgba(0,0,0,0.15);">
<div style="display:flex;align-items:center;gap:14px;">
<span style="font-size:2em;">[ICON]</span>
<div>
<div style="color:rgba(255,255,255,0.8);font-size:0.7em;font-weight:700;letter-spacing:2px;text-transform:uppercase;">PHASE [NR]</div>
<div style="color:#fff;font-size:1.25em;font-weight:700;">[PHASENNAME]</div>
<div style="color:rgba(255,255,255,0.85);font-size:0.82em;margin-top:3px;">⏳ ca. [ZEIT] Minuten • [SOZIALFORM]</div>
</div>
</div>
</div>
Farben und Icons frei waehlen, aber pro Kurs konsistent halten.
Empfehlungen (nicht verpflichtend):
| Typ | Farbe | Icon |
|---|
| Analyse / Recherche | #1565C0 (Blau) | 🔍 |
| Planung / Konzept | #6A1B9A (Lila) | 📋 |
| Umsetzung / Implementierung | #E65100 (Orange) | ⚙️ |
| Test / Kontrolle | #2E7D32 (Gruen) | ✅ |
| Reflexion / Praesentation | #00695C (Teal) | 💬 |
| Analyse / Problem | #B71C1C (Rot) | 🔎 |
| Dokumentation | #37474F (Grau) | 📄 |
Textseite mit Syntax-Highlighting (fuer moodle_create_page content)
Nur einbinden wenn die Seite tatsaechlich Code enthaelt:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/[SPRACHE].min.js"></script>
<script>document.addEventListener('DOMContentLoaded', function(){ hljs.highlightAll(); });</script>
<div style="font-family:Arial,sans-serif;max-width:900px;margin:0 auto;padding:20px;">
<h2 style="color:[PHASENFARBE];border-bottom:3px solid [PHASENFARBE];padding-bottom:8px;">[TITEL]</h2>
<div style="background:[PHASENFARBE_HELL];border-left:4px solid [PHASENFARBE];padding:16px;border-radius:4px;margin-bottom:24px;">
<strong>Lernziel:</strong> [LERNZIEL AUS DER LERNSITUATION]
</div>
<h3 style="color:[PHASENFARBE];">[ABSCHNITTSTITEL]</h3>
<p>[ERKLAERUNGSTEXT]</p>
<pre><code class="language-[SPRACHE]">// Code hier
</code></pre>
</div>
Verfuegbare Sprachen: cpp, python, javascript, java, bash, ini, json, html, css, sql
Fuer Seiten OHNE Code: highlight.js weglassen, nur den div-Container verwenden.
Aufgabe mit PDF-Button (fuer moodle_create_assign description)
PFLICHT: Jede Aufgabe bekommt PDF-Banner oben und Abgabe-Hinweis unten.
<div style="font-family:Arial,sans-serif;padding:20px;">
<div style="background:linear-gradient(135deg,#1a237e,#283593);border-radius:10px;padding:16px 20px;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;">
<div style="display:flex;align-items:center;gap:12px;">
<span style="font-size:1.8em;">📝</span>
<div>
<div style="color:#fff;font-weight:700;font-size:1em;">Arbeitsblatt zum Ausdrucken oder digital ausfuellen</div>
<div style="color:rgba(255,255,255,0.8);font-size:0.85em;margin-top:2px;">Fuelle das Blatt aus und lade es als PDF oder Foto ueber "Einreichen" hoch.</div>
</div>
</div>
<button onclick="window.print()" style="background:#fff;color:#1a237e;border:none;border-radius:8px;padding:10px 20px;font-weight:700;font-size:0.95em;cursor:pointer;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,0.2);">🖶 Als PDF speichern</button>
</div>
<style>@media print { button, .no-print { display:none !important; } }</style>
<div style="background:[PHASENFARBE_HELL];border-left:4px solid [PHASENFARBE];padding:16px;border-radius:4px;margin-bottom:24px;">
<strong>Arbeitsauftrag:</strong> [AUFGABENSTELLUNG AUS DER LERNSITUATION]
</div>
[AUFGABEN_INHALT]
<div style="background:#E8F5E9;border-left:4px solid #2E7D32;padding:14px 16px;border-radius:4px;margin-top:20px;">
<strong style="color:#2E7D32;">📥 Abgabe:</strong>
<span style="color:#333;"> Klicke auf "Als PDF speichern" (oben), oder mache ein Foto deiner handschriftlichen Loesung. Lade die Datei anschliessend ueber "Einreichen" hoch.</span>
</div>
</div>
Interaktive Elemente in Aufgaben
Texteingabe
<!-- Kurze Antwort -->
<input type="text" style="width:90%;padding:6px;border:1px solid #bbb;border-radius:4px;"
placeholder="[OFFENER HINWEIS WAS EINZUTRAGEN IST – KEINE LOESUNG!]"/>
<!-- Lange Antwort -->
<textarea style="width:100%;border:1px solid #bbb;border-radius:4px;padding:8px;font-family:Arial;font-size:14px;" rows="3"
placeholder="[OFFENER HINWEIS – z.B. 'Beschreibe in eigenen Worten...' – KEINE LOESUNG!]"></textarea>
Checkbox und Radio
<!-- Abhakbare Checkbox (NIEMALS ☐ verwenden – das ist statisch!) -->
<input type="checkbox" style="width:20px;height:20px;cursor:pointer;accent-color:#2E7D32;"/>
<!-- Bewertungsskala (pro Zeile eigenen name-Wert!) -->
<input type="radio" name="bewertung_zeile1" value="1"/> 1
<input type="radio" name="bewertung_zeile1" value="2"/> 2
<input type="radio" name="bewertung_zeile1" value="3"/> 3
PFLICHTREGELN fuer Placeholder-Texte
FALSCH – verrät die Lösung:
placeholder="T = 0,2 Sekunden"
placeholder="delay = 100ms"
placeholder="board = esp32dev"
placeholder="z.B. GET"
placeholder="z.B. arduino"
RICHTIG – gibt nur Hinweis auf Format/Denkrichtung:
placeholder="Berechne T aus der Frequenz..."
placeholder="T/2 ergibt den delay-Wert"
placeholder="Welches Board wird verwendet?"
placeholder="Welche HTTP-Methode liest Daten?"
placeholder="Welches Framework nutzt PlatformIO?"
GOLDENE REGEL fuer Placeholders:
Ein Placeholder darf NIEMALS die gesuchte Antwort enthalten oder direkt darauf hinweisen.
Er darf nur sagen WAS einzutragen ist, nicht WAS die Antwort ist.
Bei Zweifeln: lieber generisch ("Deine Antwort...") als zu konkret.
Tabellen mit Eingabefeldern
<!-- RICHTIG: Nur Anker vorgeben, Inhalte durch SuS erarbeiten -->
<table style="width:100%;border-collapse:collapse;margin-bottom:20px;">
<thead style="background:[PHASENFARBE];color:white;">
<tr>
<th style="padding:10px;">[BEKANNTE SPALTE]</th>
<th style="padding:10px;">[ZU ERARBEITENDE SPALTE 1]</th>
<th style="padding:10px;">[ZU ERARBEITENDE SPALTE 2]</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:10px;border:1px solid #ddd;">[VORGEGEBENER WERT]</td>
<td style="padding:10px;border:1px solid #ddd;">
<input type="text" style="width:90%;padding:4px;border:1px solid #bbb;border-radius:4px;"
placeholder="[HINWEIS WAS ZU BERECHNEN/RECHERCHIEREN IST]"/>
</td>
<td style="padding:10px;border:1px solid #ddd;">
<input type="text" style="width:90%;padding:4px;border:1px solid #bbb;border-radius:4px;"
placeholder="[HINWEIS WAS ZU BERECHNEN/RECHERCHIEREN IST]"/>
</td>
</tr>
</tbody>
</table>
Zeichen-Canvas (fuer Skizzen, Schaltplaene, Diagramme)
Immer wenn SuS etwas zeichnen sollen (Schaltplan, UML, Flussdiagramm, Wireframe,
Netzwerktopologie, Skizze etc.), diesen Canvas einbauen.
NIEMALS einen leeren Kasten oder Platzhalter-Div verwenden.
Parameter anpassen:
- CANVAS_ID: eindeutige ID (z.B. "schaltplan", "uml", "wireframe")
- CANVAS_HOEHE: 200 / 300 / 400 / 500 je nach Bedarf
- PHASENFARBE: Rahmenfarbe der aktuellen Phase
- DATEINAME: z.B. "schaltplan.png", "uml-diagramm.png"
<div id="toolbar_[CANVAS_ID]" style="display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap;">
<button onclick="setTool_[CANVAS_ID]('pen')" id="btn_pen_[CANVAS_ID]"
style="padding:6px 12px;border:2px solid [PHASENFARBE];border-radius:6px;background:[PHASENFARBE];color:#fff;cursor:pointer;font-size:0.85em;">✎ Stift</button>
<button onclick="setTool_[CANVAS_ID]('line')" id="btn_line_[CANVAS_ID]"
style="padding:6px 12px;border:2px solid #555;border-radius:6px;background:#fff;color:#333;cursor:pointer;font-size:0.85em;">⎯ Linie</button>
<button onclick="setTool_[CANVAS_ID]('rect')" id="btn_rect_[CANVAS_ID]"
style="padding:6px 12px;border:2px solid #555;border-radius:6px;background:#fff;color:#333;cursor:pointer;font-size:0.85em;">▭ Rechteck</button>
<button onclick="setTool_[CANVAS_ID]('eraser')" id="btn_eraser_[CANVAS_ID]"
style="padding:6px 12px;border:2px solid #555;border-radius:6px;background:#fff;color:#333;cursor:pointer;font-size:0.85em;">☒ Radierer</button>
<span style="color:#ccc;">|</span>
<label style="font-size:0.85em;color:#555;">Farbe:</label>
<input type="color" id="color_[CANVAS_ID]" value="#000000" style="width:32px;height:28px;border:1px solid #ccc;border-radius:4px;cursor:pointer;padding:2px;">
<label style="font-size:0.85em;color:#555;">Groesse:</label>
<input type="range" id="size_[CANVAS_ID]" min="1" max="20" value="2" style="width:70px;">
<span id="sizelabel_[CANVAS_ID]" style="font-size:0.85em;color:#555;">2px</span>
<span style="color:#ccc;">|</span>
<button onclick="undoCanvas_[CANVAS_ID]()"
style="padding:6px 12px;border:2px solid #1565C0;border-radius:6px;background:#fff;color:#1565C0;cursor:pointer;font-size:0.85em;">↩ Undo</button>
<button onclick="clearCanvas_[CANVAS_ID]()"
style="padding:6px 12px;border:2px solid #e53935;border-radius:6px;background:#fff;color:#e53935;cursor:pointer;font-size:0.85em;">🗑 Leeren</button>
<button onclick="downloadCanvas_[CANVAS_ID]()"
style="padding:6px 12px;border:2px solid #2E7D32;border-radius:6px;background:#2E7D32;color:#fff;cursor:pointer;font-size:0.85em;">📥 Als PNG speichern</button>
</div>
<style>@media print { #toolbar_[CANVAS_ID] { display:none !important; } }</style>
<canvas id="canvas_[CANVAS_ID]" width="900" height="[CANVAS_HOEHE]"
style="border:2px solid [PHASENFARBE];border-radius:8px;cursor:crosshair;background:#fff;width:100%;touch-action:none;display:block;"></canvas>
<script>
(function() {
const canvas = document.getElementById('canvas_[CANVAS_ID]');
const ctx = canvas.getContext('2d');
const FARBE = '[PHASENFARBE]';
let tool = 'pen', drawing = false, startX = 0, startY = 0, lastX = 0, lastY = 0;
let history = [], snapshot = null;
function getPos(e) {
const rect = canvas.getBoundingClientRect();
const sx = canvas.width / rect.width, sy = canvas.height / rect.height;
const src = e.touches ? e.touches[0] : e;
return { x: (src.clientX - rect.left) * sx, y: (src.clientY - rect.top) * sy };
}
function saveHistory() {
history.push(ctx.getImageData(0, 0, canvas.width, canvas.height));
if (history.length > 30) history.shift();
}
function startDraw(e) {
e.preventDefault(); drawing = true;
const p = getPos(e); startX = lastX = p.x; startY = lastY = p.y;
saveHistory();
if (tool === 'line' || tool === 'rect') snapshot = ctx.getImageData(0, 0, canvas.width, canvas.height);
}
function draw(e) {
e.preventDefault(); if (!drawing) return;
const p = getPos(e);
const color = document.getElementById('color_[CANVAS_ID]').value;
const size = parseInt(document.getElementById('size_[CANVAS_ID]').value);
if (tool === 'pen') {
ctx.beginPath(); ctx.moveTo(lastX, lastY); ctx.lineTo(p.x, p.y);
ctx.strokeStyle = color; ctx.lineWidth = size; ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.stroke();
lastX = p.x; lastY = p.y;
} else if (tool === 'eraser') {
ctx.beginPath(); ctx.moveTo(lastX, lastY); ctx.lineTo(p.x, p.y);
ctx.strokeStyle = '#ffffff'; ctx.lineWidth = size * 4; ctx.lineCap = 'round'; ctx.stroke();
lastX = p.x; lastY = p.y;
} else if (tool === 'line') {
ctx.putImageData(snapshot, 0, 0);
ctx.beginPath(); ctx.moveTo(startX, startY); ctx.lineTo(p.x, p.y);
ctx.strokeStyle = color; ctx.lineWidth = size; ctx.lineCap = 'round'; ctx.stroke();
} else if (tool === 'rect') {
ctx.putImageData(snapshot, 0, 0);
ctx.beginPath(); ctx.strokeStyle = color; ctx.lineWidth = size;
ctx.strokeRect(startX, startY, p.x - startX, p.y - startY);
}
}
function stopDraw(e) { e.preventDefault(); drawing = false; snapshot = null; }
canvas.addEventListener('mousedown', startDraw); canvas.addEventListener('mousemove', draw);
canvas.addEventListener('mouseup', stopDraw); canvas.addEventListener('mouseleave', stopDraw);
canvas.addEventListener('touchstart', startDraw, {passive:false});
canvas.addEventListener('touchmove', draw, {passive:false});
canvas.addEventListener('touchend', stopDraw, {passive:false});
document.getElementById('size_[CANVAS_ID]').addEventListener('input', function() {
document.getElementById('sizelabel_[CANVAS_ID]').textContent = this.value + 'px';
});
function updateButtons(active) {
['pen','line','rect','eraser'].forEach(function(t) {
const btn = document.getElementById('btn_' + t + '_[CANVAS_ID]');
if (!btn) return;
btn.style.background = (t === active) ? FARBE : '#fff';
btn.style.color = (t === active) ? '#fff' : '#333';
btn.style.borderColor = (t === active) ? FARBE : '#555';
});
canvas.style.cursor = (active === 'eraser') ? 'cell' : 'crosshair';
}
window['setTool_[CANVAS_ID]'] = function(t) { tool = t; updateButtons(t); };
window['undoCanvas_[CANVAS_ID]'] = function() { if (history.length > 0) ctx.putImageData(history.pop(), 0, 0); };
window['clearCanvas_[CANVAS_ID]'] = function() {
if (confirm('Zeichnung loeschen?')) { saveHistory(); ctx.clearRect(0, 0, canvas.width, canvas.height); }
};
window['downloadCanvas_[CANVAS_ID]'] = function() {
const l = document.createElement('a'); l.download = '[DATEINAME]';
l.href = canvas.toDataURL('image/png'); l.click();
};
updateButtons('pen');
})();
</script>
<p style="font-size:0.85em;color:#666;margin-top:8px;">
💡 Tipp: Stift = Freihand, Linie = gerade Verbindung, Rechteck = Knoeten/Bloecke.
Undo macht bis zu 30 Schritte rueckgaengig. PNG speichern und in Moodle hochladen.
Alternativ: Papier-Skizze fotografieren und als Bild einreichen.
</p>
Mehrere Canvas auf einer Seite: Jede braucht eine eigene CANVAS_ID.
Wichtige technische Hinweise
- KEINE Emojis in Aktivitaetstiteln (name-Feld) – Moodle-DB kein UTF8MB4
Im HTML-Content HTML-Entities verwenden: 🎯 statt 🎯
- Abschnittsnummer ist 0-basiert: Abschnitt 1 = sectionnum: 1
- Nach jedem Tool-Aufruf kurz den Fortschritt berichten
- Codeseiten IMMER mit highlight.js:
- Zeichenaufgaben IMMER mit Canvas, NIEMALS mit leerem Div
Mathematische Formeln (LaTeX / MathJax)
Moodle rendert LaTeX-Formeln automatisch via MathJax. Formeln IMMER in LaTeX-Notation schreiben:
| Darstellung | LaTeX |
|---|
| Inline-Formel | \( f = \frac{1}{T} \) |
| Block-Formel (eigene Zeile) | \[ f = \frac{1}{T} \] |
| Bruch | \frac{Zaehler}{Nenner} |
| Index unten | U_{GPIO} |
| Index oben | cm^2 |
| Multiplikationszeichen | \times |
| Omega | \Omega |
| Einheit mit Abstand | 220\,\Omega oder 1\,\text{Hz} |
Beispiele aus der ESP32-Lernsituation:
\[ f = \frac{1}{T} \qquad T = 2 \times BLINK\_INTERVAL \qquad R = \frac{U_{GPIO} - U_{LED}}{I_{LED}} \]
Die Periodendauer beträgt \( T = 100\,\text{ms} \), also gilt \( f = 10\,\text{Hz} \).
NIEMALS Formeln als Plain-Text schreiben (z.B. f = 1/T oder U_GPIO).
Benennung von Labels und Aktivitaeten (KRITISCH)
Labels (Phasen-Header): IMMER den name-Parameter setzen – er erscheint in der
Kursnavigation und gibt dem Phase-Trenner einen sichtbaren Namen:
moodle_create_label(name="Phase 1 – Informieren & Analysieren", content="...", ...)
Aufgaben, Seiten und Links: NIEMALS einen "Phase x –" Prefix im name-Feld verwenden.
Der Phasenkontext ergibt sich bereits aus dem Label darueber. Kurze, beschreibende Namen:
RICHTIG: name="Analysebogen: ESP32 und Kundenauftrag"
FALSCH: name="Phase 1 – Analysebogen: ESP32 und Kundenauftrag"
RICHTIG: name="Frequenzberechnung und Schaltplan"
FALSCH: name="Phase 2 – Frequenzberechnung und Schaltplan"
Qualitaetspruefung vor dem Erstellen
Fuer jede Aktivitaet pruefen:
-
Textseite oder Aufgabe?
- SuS liest nur → moodle_create_page
- SuS gibt etwas ab → moodle_create_assign