How to: Menü-Reihenfolge festlegen
Kontext
Die Standard-Sortierung (Namespaces vor Seiten, alphabetisch) passt nicht immer — eine Anleitung soll z. B. „Installation„ vor „Betrieb“ zeigen.
Lösungsüberblick
Eine Order-Seite <ns>:order je Namespace legt die Reihenfolge einer Menü-Ebene fest. Superuser können sie alternativ per Drag & Drop direkt im Menü schreiben lassen.
Umsetzung
Per Hand — Seite <ns>:order anlegen, ein Eintragsname je Zeile (Seitenname oder Name des Unter-Namespace, relativ zum Namespace):
# Kommentare und Leerzeilen werden ignoriert installation zugriff betrieb
Per Drag & Drop (nur Superuser, seit Version 1.6.0 natives HTML5-Drag&Drop statt jQuery UI — der ganze Menüeintrag ist ziehbar, kein eigenes Griff-Symbol mehr nötig): Eintrag innerhalb seiner Ebene an die Zielposition ziehen; beim Loslassen sendet der Browser einen echten Formular-Absende-Vorgang (kein Hintergrund-AJAX mehr) und die Seite lädt mit der neuen Reihenfolge neu — diese neue Position selbst ist die Bestätigung, es gibt kein kurzes Aufleuchten mehr.
Anmerkungen
- Gelistete Einträge führen in Dateireihenfolge, ungelistete folgen dahinter in der Standard-Sortierung; auch die
start-Seite ist umsortierbar. - Sortiert wird nur innerhalb einer Ebene — Drag & Drop verschiebt keine Seiten zwischen Namespaces (der Server leitet die betroffene Ebene aus den gezogenen Einträgen selbst her und lehnt Verschiebungen darüber hinaus ab).
- Schlägt das Speichern fehl, bleibt die zuvor gespeicherte Reihenfolge unverändert (nichts wird geschrieben) und die Zielseite zeigt eine rote Fehlermeldung mit dem Grund; das Menü zeigt nie eine ungespeicherte Reihenfolge.
- Jeder Speichervorgang erzeugt eine normale Wiki-Revision der Order-Seite; manuelle Bearbeitung bleibt jederzeit möglich.
- Die Order-Seite wird beim Lesen bewusst ohne ACL-Prüfung ausgewertet (Sortier-Konfiguration, wirkt für alle gleich) und sollte per
hidepagesaus Indexen ausgeblendet sein; als Menü-Eintrag erscheint sie nie. - Tragen eine Seite und ein Unter-Namespace denselben Namen, teilen sie sich den Order-Eintrag.