Add og:url tags (#2298)
* add og:url to stream_item view * add og:url and text to about/show * add og:url to profile, followers and follows pages
This commit is contained in:
parent
5357329454
commit
a1174a6d7e
9 changed files with 69 additions and 3 deletions
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
- content_for :header_tags do
|
- content_for :header_tags do
|
||||||
%meta{ property: 'og:site_name', content: site_title }/
|
%meta{ property: 'og:site_name', content: site_title }/
|
||||||
|
%meta{ property: 'og:url', content: about_url }/
|
||||||
%meta{ property: 'og:type', content: 'website' }/
|
%meta{ property: 'og:type', content: 'website' }/
|
||||||
%meta{ property: 'og:title', content: site_hostname }/
|
%meta{ property: 'og:title', content: site_hostname }/
|
||||||
%meta{ property: 'og:description', content: strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon')) }/
|
%meta{ property: 'og:description', content: strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon')) }/
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
%meta{ property: 'og:url', content: url }/
|
||||||
%meta{ property: 'og:site_name', content: site_title }/
|
%meta{ property: 'og:site_name', content: site_title }/
|
||||||
%meta{ property: 'og:title', content: [yield(:page_title).strip.presence, site_title].compact.join(' - ') }/
|
%meta{ property: 'og:title', content: [yield(:page_title).strip.presence, site_title].compact.join(' - ') }/
|
||||||
%meta{ property: 'og:description', content: account.note }/
|
%meta{ property: 'og:description', content: account.note }/
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/
|
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/
|
||||||
|
|
||||||
%meta{ property: 'og:type', content: 'profile' }/
|
%meta{ property: 'og:type', content: 'profile' }/
|
||||||
= render 'og', account: @account
|
= render 'og', account: @account, url: account_url(@account, only_path: false)
|
||||||
|
|
||||||
- if show_landing_strip?
|
- if show_landing_strip?
|
||||||
= render partial: 'shared/landing_strip', locals: { account: @account }
|
= render partial: 'shared/landing_strip', locals: { account: @account }
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
= t('accounts.people_who_follow', name: display_name(@account))
|
= t('accounts.people_who_follow', name: display_name(@account))
|
||||||
|
|
||||||
- content_for :header_tags do
|
- content_for :header_tags do
|
||||||
= render 'accounts/og', account: @account
|
= render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false)
|
||||||
|
|
||||||
= render 'accounts/header', account: @account
|
= render 'accounts/header', account: @account
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
= t('accounts.people_followed_by', name: display_name(@account))
|
= t('accounts.people_followed_by', name: display_name(@account))
|
||||||
|
|
||||||
- content_for :header_tags do
|
- content_for :header_tags do
|
||||||
= render 'accounts/og', account: @account
|
= render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false)
|
||||||
|
|
||||||
= render 'accounts/header', account: @account
|
= render 'accounts/header', account: @account
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
%meta{ property: 'og:site_name', content: site_title }/
|
%meta{ property: 'og:site_name', content: site_title }/
|
||||||
%meta{ property: 'og:type', content: 'article' }/
|
%meta{ property: 'og:type', content: 'article' }/
|
||||||
%meta{ property: 'og:title', content: "#{@account.username} on #{site_hostname}" }/
|
%meta{ property: 'og:title', content: "#{@account.username} on #{site_hostname}" }/
|
||||||
|
%meta{ property: 'og:url', content: account_stream_entry_url(@account, @stream_entry) }/
|
||||||
|
|
||||||
= render 'stream_entries/og_description', activity: @stream_entry.activity
|
= render 'stream_entries/og_description', activity: @stream_entry.activity
|
||||||
= render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account
|
= render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account
|
||||||
|
|
25
spec/views/about/show.html.haml_spec.rb
Normal file
25
spec/views/about/show.html.haml_spec.rb
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
$LOAD_PATH << '../lib'
|
||||||
|
require 'tag_manager'
|
||||||
|
|
||||||
|
describe 'about/show.html.haml' do
|
||||||
|
before do
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'has valid open graph tags' do
|
||||||
|
instance_presenter = double(:instance_presenter,
|
||||||
|
site_description: 'something',
|
||||||
|
open_registrations: false,
|
||||||
|
closed_registrations_message: 'yes',
|
||||||
|
)
|
||||||
|
assign(:instance_presenter, instance_presenter)
|
||||||
|
render
|
||||||
|
|
||||||
|
header_tags = view.content_for(:header_tags)
|
||||||
|
|
||||||
|
expect(header_tags).to match(%r{<meta content='.+' property='og:title'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='website' property='og:type'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='.+' property='og:image'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='http://.+' property='og:url'>})
|
||||||
|
end
|
||||||
|
end
|
|
@ -20,4 +20,23 @@ describe 'accounts/show.html.haml' do
|
||||||
|
|
||||||
expect(Nokogiri::HTML(rendered).search('.h-feed .h-entry').size).to eq 3
|
expect(Nokogiri::HTML(rendered).search('.h-feed .h-entry').size).to eq 3
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'has valid opengraph tags' do
|
||||||
|
alice = Fabricate(:account, username: 'alice', display_name: 'Alice')
|
||||||
|
status = Fabricate(:status, account: alice, text: 'Hello World')
|
||||||
|
|
||||||
|
assign(:account, alice)
|
||||||
|
assign(:statuses, alice.statuses)
|
||||||
|
assign(:stream_entry, status.stream_entry)
|
||||||
|
assign(:type, status.stream_entry.activity_type.downcase)
|
||||||
|
|
||||||
|
render
|
||||||
|
|
||||||
|
header_tags = view.content_for(:header_tags)
|
||||||
|
|
||||||
|
expect(header_tags).to match(%r{<meta content='.+' property='og:title'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='profile' property='og:type'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='.+' property='og:image'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='http://.+' property='og:url'>})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -61,4 +61,23 @@ describe 'stream_entries/show.html.haml' do
|
||||||
expect(mf2.entry.in_reply_to.format.author.format.name.to_s).to eq alice.display_name
|
expect(mf2.entry.in_reply_to.format.author.format.name.to_s).to eq alice.display_name
|
||||||
expect(mf2.entry.in_reply_to.format.author.format.url.to_s).not_to be_empty
|
expect(mf2.entry.in_reply_to.format.author.format.url.to_s).not_to be_empty
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'has valid opengraph tags' do
|
||||||
|
alice = Fabricate(:account, username: 'alice', display_name: 'Alice')
|
||||||
|
status = Fabricate(:status, account: alice, text: 'Hello World')
|
||||||
|
|
||||||
|
assign(:status, status)
|
||||||
|
assign(:stream_entry, status.stream_entry)
|
||||||
|
assign(:account, alice)
|
||||||
|
assign(:type, status.stream_entry.activity_type.downcase)
|
||||||
|
|
||||||
|
render
|
||||||
|
|
||||||
|
header_tags = view.content_for(:header_tags)
|
||||||
|
|
||||||
|
expect(header_tags).to match(%r{<meta content='.+' property='og:title'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='article' property='og:type'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='.+' property='og:image'>})
|
||||||
|
expect(header_tags).to match(%r{<meta content='http://.+' property='og:url'>})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue