FluentUI: Kernbildschirme
Zurück: Komponenten-Referenzen
Drei Bildschirme des DokuWiki-Kerns zeichnet wkfluentui mit seinen eigenen Bausteinen: die Medienverwaltung, das Medien-Popup des Editors und die Kernformulare. Aktionen, Adressen und Berechtigungsprüfungen bleiben die des Kerns; es wechselt nur die Darstellung.
Nicht darunter: das Abonnement (do=subscribe). Es ist auf dieser Installation abgeschaltet ($conf['subscribers'] = 0), der Menüpunkt erscheint nicht. Wer es einschaltet, bekommt den Abo-Bildschirm des Kerns, den der Bausatz nicht zeichnet, und schaltet zugleich den E-Mail-Versand an Abonnenten ein. Vor dem Einschalten muss deshalb die Bausatz-Fassung gebaut und am laufenden Wiki abgenommen werden.
Medienverwaltung (do=media)
Signatur
doku.php?do=media[&ns=…][&image=…][&tab_files=…][&tab_details=…][&list=…][&sort=…]
Übernommen über das Ereignis TPL_ACT_RENDER in action/mediascreen.php; an die Stelle von tpl_media() tritt eine Werkbank.
Zusammenfassung
Die Medienverwaltung als Werkbank: der Namensraumbaum in der Seitenleiste, die Dateien des Namensraums im Inhalt, die gewählte Datei in der Nebenleiste.
Parameter
| Parameter | Werte | Bedeutung |
|---|---|---|
ns | Namensraum | der gezeigte Namensraum |
image | Medien-ID | die gewählte Datei; öffnet die Nebenleiste |
tab_files | files · search | Dateiliste oder Suchergebnis |
tab_details | view · edit · history | Reiter der gewählten Datei: Ansicht, Metadaten, Verlauf |
list | thumbs · rows | Kacheln oder Zeilen |
sort | name · date | Sortierung der Dateiliste |
mediado | searchlist · update · save · restore · diff | Aktion des Kerns: suchen, Datei ersetzen, Metadaten speichern, Version wiederherstellen, zwei Versionen vergleichen |
q | Text | Suchbegriff, mit mediado=searchlist |
rev | Zeitstempel | eine frühere Version der Datei |
first | Zahl | Blättern im Verlauf |
delete | Medien-ID | Löschen, mit dem Sicherheitstoken des Kerns |
wkconfirm | delete | der einzige eigene Parameter: zeigt vor dem Löschen die Rückfrage |
Anmerkungen
- Die Aktionen bleiben beim Kern. Hochladen, Metadaten speichern, Wiederherstellen und Löschen laufen in
lib/exe/mediamanager.php, mit den Token- und Berechtigungsprüfungen des Kerns. Der Bildschirm zeichnet nur. - Die Adressen bleiben die des Kerns. Jeder Verweis entsteht über
media_managerURL(). Ein Lesezeichen auf die alte Medienverwaltung öffnet dasselbe, und der Bildschirm ist ohne JavaScript bedienbar. - Löschen fragt zurück (
confirmPanel()). Eine Datei, die noch auf einer Seite verwendet wird, bietet kein Löschen an und zeigt stattdessen einen Hinweis. - Meldungen des Kerns („hochgeladen“, „gelöscht“) erscheinen im Meldungsbereich der Vorlage über dem Bildschirm.
- Metadaten lassen sich wie im Kern nur für JPEG-Bilder bearbeiten.
- Umbenennen gibt es nicht; der Kern kann Mediendateien nicht umbenennen.
- Baumebenen laden nach:
lib/exe/ajax.php?call=plugin_wkfluentui_medienbaum&ns=…&id=…liefert eine Ebene als HTML und antwortet auf einen Namensraum ohne Leserecht mit 403. Scheitert das Laden, erscheint eine Hinweiszeile, und der nächste Klick auf den Knoten lädt neu. - Rückfall: Fehlt ein benötigter Baustein, zeichnet der Kern seine eigene Medienverwaltung – nie einen halben Bildschirm.
Beispiel
doku.php?do=media&ns=wiki&list=rows&sort=date doku.php?do=media&ns=wiki&image=wiki:dokuwiki-128.png&tab_details=history
Zusammensetzung
workbench() mit auxbarOpen · tree() mit Nachladen · dataGrid() als Kacheln oder Zeilen · fileUploader() mit upload.multiple und upload.doneUrl · propertyGrid() · confirmPanel() · toolbar() · modal()
Medien-Popup des Editors (lib/exe/mediamanager.php)
Signatur
lib/exe/mediamanager.php?ns=…&edid=…[&onselect=…][&einfuegen=…][&uilang=…]
Die Vorlage wkbizway ruft in ihrer mediamanager.php die Methode popup() von action_plugin_wkfluentui_mediascreen auf, nachdem der Kern seine Aktionen ausgeführt hat.
Zusammenfassung
Dieselbe Werkbank wie die Medienverwaltung, im Fenster des Medien-Knopfs der Editor-Werkzeugleiste, mit „Einfügen“ als Befehl.
Parameter
Alle Parameter der Medienverwaltung außer do, dazu:
| Parameter | Werte | Bedeutung |
|---|---|---|
edid | Feld-ID | das Textfeld des Editors, in das eingefügt wird; Vorgabe des Kerns wiki__text |
onselect | Funktionsname | der Rückruf im Editor-Fenster; Vorgabe des Kerns dw_mediamanager_item_select |
einfuegen | Medien-ID | zeigt das Einfügeformular für diese Datei |
uilang | Sprachcode | die Sprache, in der das Popup geöffnet wurde; wird mitgetragen und nie gemerkt |
Anmerkungen
- Eingefügt wird über den Kern.
scripts/mediainsert.jsübergibt die Antworten andw_mediamanager.insert(). Die eingefügte Syntax ist die des Kerns, zum Beispiel{{ :wiki:dokuwiki-128.png?200|}}. - Das Einfügeformular fragt bei JPG-, PNG- und GIF-Bildern nach Verweis, Ausrichtung und Größe, dazu „Fenster offen lassen“. Die Antworten stehen in denselben Cookie-Werten wie beim Kern (
link,align,size,keepopen); das nächste Popup öffnet mit derselben Wahl. Andere Dateien, auch SVG und PDF, werden sofort eingefügt. Bei „nur Verweis“ entfallen Ausrichtung und Größe. - Die Befehle bleiben sichtbar. Die Befehlszeile eines Formulars haftet am unteren Rand des scrollenden Dialogs; das gilt für jedes
modal(). - Der Namensraumbaum bleibt angedockt bis 600px Fensterbreite (
sidebarDocked); das Popup öffnet mit 750×500. - Sprache: Das Popup folgt dem gezeigten Namensraum. Nennt dieser keine Sprache, bleibt es in der Sprache, in der es geöffnet wurde (
uilang). Eine ausdrücklich gewählte Sprache gewinnt immer. Die Regel liegt in wki18n. - Ohne JavaScript kann nichts eingefügt werden; das Formular sagt das in einer eigenen Zeile.
- Ohne Editor – das Fenster wurde allein geöffnet oder der Editor ist geschlossen – erscheint eine Meldung statt eines Skriptfehlers.
- Rückfall: Ohne
wkfluentuizeichnet die Vorlage das Popup des Kerns.
Beispiel
lib/exe/mediamanager.php?ns=sl:wiki:dwe&edid=wiki__text lib/exe/mediamanager.php?ns=wiki&edid=wiki__text&uilang=sl&einfuegen=wiki:dokuwiki-128.png
Zusammensetzung
Die Bausteine der Medienverwaltung, dazu workbench() mit sidebarDocked · modal() · radioGroup() mit layout horizontal · checkbox()
Kernformulare (coreform)
Signatur
helper_plugin_wkfluentui_coreform::render(\dokuwiki\Form\Form $form, ?string $eventName = null, array $opts = []): string
Für ein Formular, dessen Teile in zwei Regionen stehen, dieselbe Arbeit in Schritten: trigger(), formOpen(), elements(), formClose().
Zusammenfassung
Zeichnet ein Form-Objekt des Kerns mit den Feldern und Knöpfen des Bausatzes, ohne die Beiträge anderer Plugins zu verlieren.
Parameter
| Parameter | Typ | Bedeutung |
|---|---|---|
$form | \dokuwiki\Form\Form | das Formular des Kerns |
$eventName | Zeichenkette oder null | der Kurzname wie bei Form::toHTML(), z. B. UpdateProfile; löst FORM_<NAME>_OUTPUT aus. null nur für ein Formular, zu dem nie ein anderes Plugin beitragen konnte |
$opts['class'] | Zeichenkette | zusätzliche Klassen am <form>-Element |
$opts['legends'] | bool | false unterdrückt die Legenden der Fieldsets, wenn der Aufrufer den Abschnitt schon benennt |
$opts['fields'] | Array | Überschreibungen je Feldname, z. B. ['newpass' => ['autocomplete' => 'new-password']] |
$opts['from'], $opts['to'] | Zahl | Bereich der Elemente (to einschließlich); nur über elements() |
Rückgabe: das HTML des Formulars, oder eine leere Zeichenkette, wenn es sich nicht sicher zeichnen lässt – dann fällt der Aufrufer auf den Kern zurück.
Anmerkungen
- Das Ereignis feuert wie im Kern, an derselben Stelle wie in
Form::toHTML(). Was andere Plugins in das Formular hängen – die Zwei-Faktor-Felder vonwkidentityim Profil, die Blog-Felder vonwkblogim Editor – bleibt erhalten. - Ein Element, das die Klasse nicht kennt, zeichnet sich selbst (
Element::toHTML()). Ein Formular verliert so nie ein Feld; es sieht höchstens an dieser Stelle anders aus. - Die Vorbelegung bleibt die des Kerns. Nach einem abgelehnten Absenden stehen die Werte wieder in den Feldern:
toHTML()läuft zuerst, danach liest die Klasse die Attribute. - Auswahlgruppen: Die Legende eines Abschnitts wird der zugängliche Name der Optionsgruppe darin.
- Verbraucher: das Profil (
do=profile, EreignisUpdateProfile), der Editor (do=edit, EreignisEdit, Teile in zwei Regionen) und die Suche (do=search).
Beispiel
$cf = plugin_load('helper', 'wkfluentui_coreform'); $html = $cf->render($form, 'UpdateProfile', [ 'legends' => false, 'fields' => ['oldpass' => ['autocomplete' => 'current-password']], ]);
Zusammensetzung
Eingabefelder: textBox() · passwordBox() · textArea() · comboBox() · checkbox() · radioGroup() · button() · hiddenField()