diff --git a/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs b/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs
index ff01c95..65c9288 100644
--- a/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs
+++ b/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs
@@ -97,7 +97,8 @@ public partial class ClassTeacherCasesViewModel : ObservableObject
var names = vorgang.StudentIds.Select(id => nameById.GetValueOrDefault(id, ""))
.Where(n => n != "");
var item = new VorgangItem(vorgang, string.Join(", ", names), LinkDocumentation,
- UnlinkDocumentation, RemoveClassRegisterEntry) { IsRevealed = revealedIds.Contains(vorgang.Id) };
+ UnlinkDocumentation, RemoveClassRegisterEntry, EditDocumentation)
+ { IsRevealed = revealedIds.Contains(vorgang.Id) };
var linkedIds = vorgang.DocumentationIds.ToHashSet();
foreach (var doc in allDocs.Where(d => linkedIds.Contains(d.Id)))
@@ -169,6 +170,19 @@ public partial class ClassTeacherCasesViewModel : ObservableObject
await LoadInternal();
}
+ /// Öffnet eine verknüpfte oder noch verknüpfbare Dokumentation im vollen Bearbeiten-Dialog, ohne
+ /// den Vorgänge-Tab zu verlassen (Nutzer-Feedback: bisher musste man dafür zum Nachlesen in den
+ /// Schülerdatensatz wechseln). Reine Bearbeitung der Dokumentation selbst — welche Vorgänge sie
+ /// verlinken, ändert sich dadurch nicht.
+ private async Task EditDocumentation(DocumentationItem doc)
+ {
+ if (OnEditDocumentation is null) return;
+ var result = await OnEditDocumentation(doc.Model.StudentId, _rosterStudentOptions, doc.Model);
+ if (result is null) return;
+ _documentation.Save(result);
+ await LoadInternal();
+ }
+
/// Dokumentation der Vorgangs-Schüler*innen, die noch nicht mit diesem Vorgang verknüpft ist —
/// reine, ohne Repository-Zugriff testbare Filterlogik (gleiches Muster wie
/// ).
diff --git a/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs b/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs
index b6de0a5..7cbf8b2 100644
--- a/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs
+++ b/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs
@@ -58,6 +58,7 @@ public partial class VorgangItem : ObservableObject
private readonly Func _onLink;
private readonly Func _onUnlink;
private readonly Func _onRemoveClassRegisterEntry;
+ private readonly Func _onEditDocumentation;
public Vorgang Model { get; }
public string StudentNames { get; }
@@ -79,7 +80,8 @@ public partial class VorgangItem : ObservableObject
public VorgangItem(Vorgang model, string studentNames,
Func onLink,
Func onUnlink,
- Func onRemoveClassRegisterEntry)
+ Func onRemoveClassRegisterEntry,
+ Func onEditDocumentation)
{
Model = model;
StudentNames = studentNames;
@@ -87,10 +89,19 @@ public partial class VorgangItem : ObservableObject
_onLink = onLink;
_onUnlink = onUnlink;
_onRemoveClassRegisterEntry = onRemoveClassRegisterEntry;
+ _onEditDocumentation = onEditDocumentation;
}
[RelayCommand] private void Reveal() => IsRevealed = !IsRevealed;
+ /// Öffnet den vollen Dokumentations-Dialog zum Nachlesen/Bearbeiten, ohne den Vorgänge-Tab zu
+ /// verlassen (Nutzer-Feedback: bisher musste man dafür in den Schülerdatensatz wechseln).
+ [RelayCommand]
+ private async Task EditDocumentation(DocumentationItem? doc)
+ {
+ if (doc is not null) await _onEditDocumentation(doc);
+ }
+
[RelayCommand]
private async Task Link(DocumentationItem? doc)
{
diff --git a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml
index ab53b82..e8f73f0 100644
--- a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml
+++ b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml
@@ -99,7 +99,7 @@
-
+
@@ -111,7 +111,13 @@
-
@@ -132,7 +138,7 @@
-
+
@@ -144,7 +150,11 @@
-
+
diff --git a/TODO.md b/TODO.md
index 1a6284c..f6eed98 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1887,6 +1887,16 @@ eigenen Unterricht abfragt und deshalb mit den regulären Lehrkraft-Rechten funk
einen neuen anlegen). `ClassTeacherDetailsViewModel` bekommt dafür `ClassTeacherCasesViewModel`
per Konstruktor-Injection (Geschwister-VM-Zugriff für reine Datenabfragen statt Func-Hook, da
keine UI im Spiel ist).
+ - **Nachtrag:** Nutzer-Feedback — verknüpfte Dokumentation ließ sich nur als kurze Karte sehen,
+ zum Nachlesen musste man in den Schülerdatensatz wechseln. Statt eines neuen Seitenpanels
+ (`DockPanel`/`Dock="Right"`) oder eines eigenen Lese-Fensters wird der bereits vorhandene
+ `DocumentationDialog` wiederverwendet: "Bearbeiten"-Button an jedem verknüpften bzw. noch
+ verknüpfbaren Eintrag (nur sichtbar nach `IsRevealed`, gleiche Vertraulichkeits-Gate-Konvention
+ wie im Gruppen-Tab) öffnet ihn zum vollständigen Lesen/Bearbeiten, ohne den Vorgänge-Tab zu
+ verlassen. `VorgangItem` bekam dafür einen weiteren Callback (`onEditDocumentation`, gleiches
+ Konstruktor-Callback-Muster wie `onLink`/`onUnlink`), `ClassTeacherCasesViewModel.EditDocumentation`
+ speichert das Ergebnis direkt über `IDocumentationRepository`, unabhängig davon, welche Vorgänge
+ den Eintrag verlinken.
**Bewusst zurückgestellt ("Runde 2", Nutzer-Wunsch):** dass ein bearbeiteter/geschlossener Vorgang
automatisch den `PatternScore` dämpft, sowie Trend-Indikatoren ("bewegt sich wieder in die
falsche Richtung", z.B. Fehlzeiten oder Konflikt-Einträge nehmen erneut zu) — reines Anlegen/