Voglio limitare alcune funzionalità markdown per il primo post dell’argomento, che proviene dal mio plugin.
Potrebbe essere facilmente implementato sul lato client accedendo all’attributo topicFirstPost del modello composer. Tuttavia, sul lato server in lib/pretty_text.rb e model/post.rb, ho scoperto che solo topic_id viene passato al metodo cook. Potrei eventualmente controllare l’attributo posts_count dell’argomento, ma non funzionerebbe durante il rebaking.
Forse non dovrei usare alcuno stato nel processo markdown-it?
Un altro modo per raggiungere questo obiettivo è generare un segnaposto usando markdown, quindi aggiornare l’anteprima manualmente e ascoltare alcuni eventi post-process cook sul lato server, ma ciò potrebbe richiedere del lavoro aggiuntivo.
Preferirei il primo modo, se possibile. Grazie per qualsiasi suggerimento.
@Jagster@pfaffman
Per favore immagina che il plugin aggiunga alcuni tag BBCode personalizzati o racchiuda qualsiasi testo con un tag HTML personalizzato per un uso successivo, come la decorazione. Non voglio che abbia effetto al di fuori del primo post (o in base ad altre condizioni), poiché non ne ho bisogno e potrebbe causare alcuni effetti collaterali.
Inoltre, potrei aver trovato una possibile soluzione lato server. Racchiude il metodo cook del modello Post. Non l’ho ancora testato.
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