FEATURE: include post image in OpenGraph image tag

This commit is contained in:
Arpit Jalan 2016-10-31 15:11:33 +05:30
parent e03c1e4cdf
commit 382803cb05
5 changed files with 32 additions and 10 deletions

View File

@ -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
# #

View File

@ -0,0 +1,5 @@
class AddImageUrlToPosts < ActiveRecord::Migration
def change
add_column :posts, :image_url, :string
end
end

View File

@ -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

View File

@ -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

View File

@ -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