Mehrere bearbeitbare Bereiche
Bewirkt, dass sich mehrere Editoren auf einer Seite wie ein einziger verhalten: Nur der Bereich, in dem der Autor arbeitet, zeigt eine Symbolleiste an, und eine Gruppen-API liest und schreibt alle Bereiche gleichzeitig. Verwenden Sie es für ein CMS-Formular mit einem Titel, einer Zusammenfassung und einem Textkörper, die nicht jeweils eine vollständige Symbolleiste enthalten sollten.

"article". Die Symbolleiste zeigt nur den Bereich mit Fokus an, hier Zusammenfassung.Schalten Sie es ein
Die Funktion ist diemultiroot.jsPlugin (auch inplugins/all_plugins.js). Erstellen Sie einen Editor pro Region und geben Sie ihm dasselbemultiRootGroup. Es gibt keinen Knopf.
<label>Title</label><div id="title"><h1>Spring release notes</h1></div>
<label>Summary</label><div id="summary"><p>What changed in the editor this quarter.</p></div>
<label>Body</label><div id="body"><p>The body text goes here.</p></div>
<script>
function root(id, height) {
return new RichTextEditor("#" + id, { multiRootGroup: "article", height: height, toolbar: "basic" });
}
var title = root("title", "110px");
var summary = root("summary", "110px");
var body = root("body", "200px");
</script>
Jede Region ist nach ihrem Element benanntid, also hat diese Gruppe die Wurzelntitle, summaryUndbody. Der erste Stamm beginnt als der aktive.
Optionen
| Option | Standard | Was es bewirkt |
|---|---|---|
multiRootGroup | null(aus) | Editoren mit demselben Gruppennamen bilden einen Multi-Root-Editor. |
multiRootName | des Elementsid, andersroot1, root2… | Der Name des Roots in der Gruppen-API. |
multiRootToolbarHost | null | Ein Element oder eine Element-ID, in die die aktive Symbolleiste verschoben werden soll.Verwenden Sie es nicht in 2.6.12; siehe Wissenswertes. |
Gruppen-API
Jeder Redakteur in der Gruppe bekommt das Gleicheeditor.multiRootObjekt:
| Mitglied | Was es bewirkt |
|---|---|
getRoots() | ["title", "summary", "body"] |
getActive() | Der Name des Roots mit der Symbolleiste, z.B."summary". |
getEditor(name) | Die Editor-Instanz dieses Stammverzeichnisses. |
focusRoot(name) | Macht diese Wurzel aktiv und fokussiert sie. |
getHTML() | Ein Eintrag pro Root, den ein CMS speichert: {"title":"<h1 id=\"spring-release-notes\">Spring release notes</h1>","summary":"<p>What changed in the editor this quarter.</p>","body":"<p>The body text goes here.</p>"} |
setHTML(map) | Lädt jeden in der Karte genannten Stamm; Wurzeln, die nicht auf der Karte sind, bleiben in Ruhe. |
onActiveChange(fn) | Ruft fn({ active, editor }) auf, wenn ein anderer Root aktiv wird. Gibt eine Funktion zurück, die den Listener entfernt. |
getCapabilities() | { sharedToolbar: true, sharedGroupApi: true, perRootUndo: true, sharedUndoStack: false, selectionAcrossRoots: false, sharedCollaborationSession: false, note } |
title.multiRoot.onActiveChange(function (e) {
document.getElementById("where").textContent = "Editing: " + e.active;
});
fetch("/api/article/42", { method: "PUT", body: JSON.stringify(title.multiRoot.getHTML()) });
Verwenden
Wenn Sie auf einen Bereich oder auf etwas anderes klicken, das den Fokus darauf setzt (einschließlich focusRoot()), wird er aktiviert: Die Symbolleiste wird angezeigt und die anderen werden ausgeblendet. Die Schaltflächen der Symbolleiste wirken sich auf diesen Bereich aus. Im Test wurde durch Auswahl des Endes des Körpers und Klicken auf Fett <p>The body text goes h<b>ere.</b></p> in body gespeichert und die anderen Wurzeln unverändert gelassen.
Wissenswertes
- Die Regionen sind separate Editoren. Das Rückgängigmachen funktioniert pro Region, eine Auswahl kann sich nicht über zwei Regionen erstrecken und bei der Zusammenarbeit wird jede Region einzeln synchronisiert.
getCapabilities()besagt dasselbe. - Ausgeblendete Symbolleisten nehmen keinen Platz ein, daher verschiebt sich der Inhalt unten um die Höhe einer Symbolleiste, wenn sich der aktive Bereich ändert.
- Bei einer Fenstergrößenänderung werden in 2.6.12 wieder alle Symbolleisten angezeigt, bis der Autor in einen anderen Bereich wechselt. Der responsive Code des Editors stellt sie wieder her.
multiRootToolbarHostfunktioniert in 2.6.12 nicht. Eine in den Host verschobene Symbolleiste verliert den Stil des Editors (sie wird mit sehr großen Symbolen gerendert) und bereits dorthin verschobene Symbolleisten werden nicht wieder ausgeblendet, sodass sie sich anhäufen, wenn der Autor die Region wechselt. Belassen Sie die Symbolleisten an Ort und Stelle.- Jede Region ist ein normaler Editor mit eigener Konfiguration, daher können verschiedene Regionen unterschiedliche Symbolleisten haben; Stellen Sie für alle den gleichen
multiRootGroupein.
Verwandt: Demo für mehrere Editoren auf einer Seite, HTML abrufen.