Ich möchte einige Markdown-Funktionen für den ersten Beitrag des Themas einschränken, der aus meinem Plugin stammt.
Dies könnte leicht auf der Client-Seite implementiert werden, indem auf das topicFirstPost-Attribut des Composer-Modells zugegriffen wird. Auf der Serverseite in lib/pretty_text.rb und model/post.rb habe ich jedoch festgestellt, dass nur die topic_id an die cook-Methode übergeben wird. Ich könnte möglicherweise das posts_count-Attribut des Themas überprüfen, aber das funktioniert nicht beim erneuten Backen.
Vielleicht sollte ich im Markdown-It-Prozess keinen Zustand verwenden?
Ein anderer Weg, dies zu erreichen, ist die Generierung eines Platzhalters mit Markdown, dann die manuelle Aktualisierung der Vorschau und das Abhören einiger Cook-Post-Processing-Ereignisse auf der Serverseite, aber das könnte zusätzliche Arbeit erfordern.
Ich bevorzuge den ersten Weg, wenn möglich. Vielen Dank für jeden Vorschlag.
@Jagster@pfaffman
Bitte stellen Sie sich vor, das Plugin fügt einige benutzerdefinierte BBCode-Tags hinzu oder umschließt beliebigen Text mit einem benutzerdefinierten HTML-Tag zur späteren Verwendung, z. B. zur Dekoration. Ich möchte nicht, dass es außerhalb des ersten Beitrags (oder basierend auf anderen Bedingungen) wirksam wird, da ich es nicht benötige und es einige Nebenwirkungen haben könnte.
Außerdem habe ich möglicherweise eine mögliche Lösung auf der Serverseite gefunden. Sie umschließt die cook-Methode des Post-Modells. Ich habe sie noch nicht getestet.
class ::Post
# wrap the original cook method to add features option
# see the markdown method in lib/pretty_text.rb
alias_method :original_cook, :cook
def cook(raw, opts = {})
features = {
'feature-name': is_first_post?
}
if opts.has_key?(:features)
opts[:features].merge!(features)
else
opts[:features] = features
end
original_cook(raw, opts)
end
end