Quiero limitar algunas características de markdown para la primera publicación del tema, que es de mi plugin.
Podría implementarse fácilmente en el lado del cliente accediendo al atributo topicFirstPost del modelo composer. Sin embargo, en el lado del servidor en lib/pretty_text.rb y model/post.rb, encontré que solo se pasa topic_id al método cook. Podría verificar el atributo posts_count del tema, pero no funcionará al volver a hornear.
¿Quizás no debería usar ningún estado en el proceso de markdown-it?
Otra forma de lograr esto es generar un marcador de posición usando markdown, luego actualizar la vista previa manualmente y escuchar algunos eventos post-proceso de cocción en el lado del servidor, pero eso podría requerir algo de trabajo adicional.
Preferiría la primera forma si es posible. Gracias por cualquier sugerencia.
@Jagster@pfaffman
Por favor, imagina que el plugin añade algunas etiquetas BBCode personalizadas, o envuelve cualquier texto con una etiqueta HTML personalizada para su uso posterior, como la decoración. No quiero que tenga efecto fuera de la primera publicación (o basándose en otras condiciones), ya que no lo necesito y puede causar algunos efectos secundarios.
Además, puede que haya encontrado una posible solución en el lado del servidor. Envuelve el método cook del modelo Post. Aún no lo he probado.
class ::Post
# envuelve el método cook original para añadir la opción de características
# ver el método markdown en 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