mirror of
https://github.com/discourse/discourse.git
synced 2025-03-21 20:58:55 +08:00
FEATURE: include post image in OpenGraph image tag
This commit is contained in:
parent
e03c1e4cdf
commit
382803cb05
@ -719,6 +719,7 @@ end
|
|||||||
# raw_email :text
|
# raw_email :text
|
||||||
# public_version :integer default(1), not null
|
# public_version :integer default(1), not null
|
||||||
# action_code :string
|
# action_code :string
|
||||||
|
# image_url :string
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
|
5
db/migrate/20161029181306_add_image_url_to_posts.rb
Normal file
5
db/migrate/20161029181306_add_image_url_to_posts.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
class AddImageUrlToPosts < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :posts, :image_url, :string
|
||||||
|
end
|
||||||
|
end
|
@ -84,7 +84,7 @@ class CookedPostProcessor
|
|||||||
convert_to_link!(img)
|
convert_to_link!(img)
|
||||||
end
|
end
|
||||||
|
|
||||||
update_topic_image
|
update_post_image
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_images
|
def extract_images
|
||||||
@ -100,7 +100,7 @@ class CookedPostProcessor
|
|||||||
@doc.css(".quote img")
|
@doc.css(".quote img")
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_images_for_topic
|
def extract_images_for_post
|
||||||
# all image with a src attribute
|
# all image with a src attribute
|
||||||
@doc.css("img[src]") -
|
@doc.css("img[src]") -
|
||||||
# minus, emojis
|
# minus, emojis
|
||||||
@ -285,10 +285,11 @@ class CookedPostProcessor
|
|||||||
span
|
span
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_topic_image
|
def update_post_image
|
||||||
if @post.is_first_post?
|
img = extract_images_for_post.first
|
||||||
img = extract_images_for_topic.first
|
if img["src"].present?
|
||||||
@post.topic.update_column(:image_url, img["src"][0...255]) if img["src"].present?
|
@post.update_column(:image_url, img["src"][0...255]) # post
|
||||||
|
@post.topic.update_column(:image_url, img["src"][0...255]) if @post.is_first_post? # topic
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -180,8 +180,12 @@ class TopicView
|
|||||||
|
|
||||||
def image_url
|
def image_url
|
||||||
if @post_number.present? && @post_number.to_i != 1 && @desired_post.present?
|
if @post_number.present? && @post_number.to_i != 1 && @desired_post.present?
|
||||||
# show poster avatar
|
if @desired_post.image_url.present?
|
||||||
@desired_post.user.avatar_template_url.gsub("{size}", "100") if @desired_post.user
|
@desired_post.image_url
|
||||||
|
elsif @desired_post.user
|
||||||
|
# show poster avatar
|
||||||
|
@desired_post.user.avatar_template_url.gsub("{size}", "100")
|
||||||
|
end
|
||||||
else
|
else
|
||||||
@topic.image_url
|
@topic.image_url
|
||||||
end
|
end
|
||||||
|
@ -242,19 +242,30 @@ describe CookedPostProcessor do
|
|||||||
end
|
end
|
||||||
|
|
||||||
context "topic image" do
|
context "topic image" do
|
||||||
|
|
||||||
let(:topic) { build(:topic, id: 1) }
|
let(:topic) { build(:topic, id: 1) }
|
||||||
let(:post) { Fabricate(:post_with_uploaded_image, topic: topic) }
|
let(:post) { Fabricate(:post_with_uploaded_image, topic: topic) }
|
||||||
let(:cpp) { CookedPostProcessor.new(post) }
|
let(:cpp) { CookedPostProcessor.new(post) }
|
||||||
|
|
||||||
it "adds a topic image if there's one in the post" do
|
it "adds a topic image if there's one in the first post" do
|
||||||
FastImage.stubs(:size)
|
FastImage.stubs(:size)
|
||||||
expect(post.topic.image_url).to eq(nil)
|
expect(post.topic.image_url).to eq(nil)
|
||||||
cpp.post_process_images
|
cpp.post_process_images
|
||||||
post.topic.reload
|
post.topic.reload
|
||||||
expect(post.topic.image_url).to be_present
|
expect(post.topic.image_url).to be_present
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "post image" do
|
||||||
|
let(:reply) { Fabricate(:post_with_uploaded_image, post_number: 2) }
|
||||||
|
let(:cpp) { CookedPostProcessor.new(reply) }
|
||||||
|
|
||||||
|
it "adds a post image if there's one in the post" do
|
||||||
|
FastImage.stubs(:size)
|
||||||
|
expect(reply.image_url).to eq(nil)
|
||||||
|
cpp.post_process_images
|
||||||
|
reply.reload
|
||||||
|
expect(reply.image_url).to be_present
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user