correct hack and move to oneboxer

This commit is contained in:
Sam 2015-09-25 20:14:38 +10:00
parent 5a297fe31c
commit 57870b970d
3 changed files with 21 additions and 15 deletions

View File

@ -11,7 +11,7 @@ class PostAnalyzer
def cook(*args)
cooked = PrettyText.cook(*args)
result = Oneboxer.apply(cooked) do |url, _|
result = Oneboxer.apply(cooked, topic_id: @topic_id) do |url, _|
Oneboxer.invalidate(url) if args.last[:invalidate_oneboxes]
Oneboxer.cached_onebox url
end

View File

@ -245,19 +245,7 @@ class CookedPostProcessor
}
# apply oneboxes
Oneboxer.apply(@doc) { |url|
# hack urls to create proper expansions
if url =~ Regexp.new("^#{Discourse.base_url.gsub(".","\\.")}.*$", true)
uri = URI.parse(url) rescue nil
if uri && uri.path
route = Rails.application.routes.recognize_path(uri.path) rescue nil
if route && route[:controller] == 'topics'
url += (url =~ /\?/ ? "&" : "?") + "&source_topic_id=#{@post.topic_id}"
end
end
end
Oneboxer.apply(@doc, topic_id: @post.topic_id) { |url|
Oneboxer.onebox(url, args)
}

View File

@ -76,12 +76,30 @@ module Oneboxer
doc
end
def self.apply(string_or_doc)
def self.append_source_topic_id(url, topic_id)
# hack urls to create proper expansions
if url =~ Regexp.new("^#{Discourse.base_url.gsub(".","\\.")}.*$", true)
uri = URI.parse(url) rescue nil
if uri && uri.path
route = Rails.application.routes.recognize_path(uri.path) rescue nil
if route && route[:controller] == 'topics'
url += (url =~ /\?/ ? "&" : "?") + "source_topic_id=#{topic_id}"
end
end
end
url
end
def self.apply(string_or_doc, args=nil)
doc = string_or_doc
doc = Nokogiri::HTML::fragment(doc) if doc.is_a?(String)
changed = false
Oneboxer.each_onebox_link(doc) do |url, element|
if args && args[:topic_id]
url = append_source_topic_id(url, args[:topic_id])
end
onebox, _preview = yield(url,element)
if onebox
parsed_onebox = Nokogiri::HTML::fragment(onebox)