mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: postprocessing ignored cook method
This commit is contained in:
@@ -5,7 +5,6 @@ require_dependency 'enum'
|
||||
require_dependency 'post_analyzer'
|
||||
require_dependency 'validators/post_validator'
|
||||
require_dependency 'plugin/filter'
|
||||
require_dependency 'email_cook'
|
||||
|
||||
require 'archetype'
|
||||
require 'digest/sha1'
|
||||
@@ -231,37 +230,32 @@ class Post < ActiveRecord::Base
|
||||
!add_nofollow?
|
||||
end
|
||||
|
||||
def cook(*args)
|
||||
def cook(raw, opts = {})
|
||||
# For some posts, for example those imported via RSS, we support raw HTML. In that
|
||||
# case we can skip the rendering pipeline.
|
||||
return raw if cook_method == Post.cook_methods[:raw_html]
|
||||
|
||||
cooked =
|
||||
if cook_method == Post.cook_methods[:email]
|
||||
EmailCook.new(raw).cook
|
||||
else
|
||||
cloned = args.dup
|
||||
cloned[1] ||= {}
|
||||
options = opts.dup
|
||||
options[:cook_method] = cook_method
|
||||
|
||||
post_user = self.user
|
||||
cloned[1][:user_id] = post_user.id if post_user
|
||||
post_user = self.user
|
||||
options[:user_id] = post_user.id if post_user
|
||||
|
||||
if add_nofollow?
|
||||
post_analyzer.cook(*args)
|
||||
else
|
||||
# At trust level 3, we don't apply nofollow to links
|
||||
cloned[1][:omit_nofollow] = true
|
||||
post_analyzer.cook(*cloned)
|
||||
end
|
||||
end
|
||||
if add_nofollow?
|
||||
cooked = post_analyzer.cook(raw, options)
|
||||
else
|
||||
# At trust level 3, we don't apply nofollow to links
|
||||
options[:omit_nofollow] = true
|
||||
cooked = post_analyzer.cook(raw, options)
|
||||
end
|
||||
|
||||
new_cooked = Plugin::Filter.apply(:after_post_cook, self, cooked)
|
||||
|
||||
if post_type == Post.types[:regular]
|
||||
if new_cooked != cooked && new_cooked.blank?
|
||||
Rails.logger.debug("Plugin is blanking out post: #{self.url}\nraw: #{self.raw}")
|
||||
Rails.logger.debug("Plugin is blanking out post: #{self.url}\nraw: #{raw}")
|
||||
elsif new_cooked.blank?
|
||||
Rails.logger.debug("Blank post detected post: #{self.url}\nraw: #{self.raw}")
|
||||
Rails.logger.debug("Blank post detected post: #{self.url}\nraw: #{raw}")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
require_dependency 'oneboxer'
|
||||
require_dependency 'email_cook'
|
||||
|
||||
class PostAnalyzer
|
||||
|
||||
@@ -13,12 +14,19 @@ class PostAnalyzer
|
||||
end
|
||||
|
||||
# What we use to cook posts
|
||||
def cook(*args)
|
||||
cooked = PrettyText.cook(*args)
|
||||
def cook(raw, opts = {})
|
||||
cook_method = opts[:cook_method]
|
||||
return raw if cook_method == Post.cook_methods[:raw_html]
|
||||
|
||||
if cook_method == Post.cook_methods[:email]
|
||||
cooked = EmailCook.new(raw).cook
|
||||
else
|
||||
cooked = PrettyText.cook(raw, opts)
|
||||
end
|
||||
|
||||
result = Oneboxer.apply(cooked, topic_id: @topic_id) do |url, _|
|
||||
@found_oneboxes = true
|
||||
Oneboxer.invalidate(url) if args.last[:invalidate_oneboxes]
|
||||
Oneboxer.invalidate(url) if opts[:invalidate_oneboxes]
|
||||
Oneboxer.cached_onebox(url)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user