Ich bin auf die Idee gestoßen, denjenigen mit Bearbeitungsberechtigungen für Beiträge (TL4±Benutzer) zu ermöglichen, Text auszuwählen und diesen Teil in einen Codeblock umzuwandeln.
Nachdem ich einige Teile des Discourse AI-Plugin-Codes referenziert und mir angesehen habe, welche Daten an den von mir verwendeten Plugin-Outlet übergeben werden, habe ich den Code entwickelt, um den ausgewählten Text zu erhalten und ihn mit quote-share-buttons-before mit Code-Zäunen zu umschließen.
Dann stecke ich fest. Das Checklist-Plugin (irgendwie) macht dies mit einem Argument in der Funktion checklistSyntax namens postDecorator, mit dem sie dann das Modell (ich glaube, es ist das post-Modell?) über .getModel() abrufen können. Wie das übergeben wird, weiß ich nicht, aber ich glaube nicht, dass es in meinem Setup für mich verfügbar ist?
Wenn es sich tatsächlich um das Post-Modell handelt, das im Checklist-Plugin verwendet wird, scheine ich Schwierigkeiten zu haben, die einfache ‘save’-Funktion zu finden, die in
await postModel.save({
raw: newRaw,
edit_reason: i18n("checklist.edit_reason"),
});
in models/post.js existiert, es sei denn, ich verstehe es falsch.
Ich benutze derzeit this.args.outletArgs.data.editPost(this.post) (was, wenn ich mich recht erinnere, in models/topic.js steht, aber korrigieren Sie mich, wenn ich falsch liege), was nur den Composer öffnet, um den Beitrag zu bearbeiten, nicht ihn direkt zu bearbeiten.
Meine Frage ist also: Wie kann ich den Beitrag wie das Checklist-Plugin ohne Aufwand bearbeiten? Gibt es eine Möglichkeit, das zu tun, wenn ich einen Button in einem Outlet anstelle von api.decorateCookedElement platziere, wie es Checklist tut? Vorzugsweise ohne die REST-API zu verwenden?
Mein Repository:
Danke!