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:
		| @@ -6,6 +6,7 @@ | ||||
|  | ||||
| - content_for :header_tags do | ||||
|   %meta{ property: 'og:site_name', content: site_title }/ | ||||
|   %meta{ property: 'og:url', content: about_url }/ | ||||
|   %meta{ property: 'og:type', content: 'website' }/ | ||||
|   %meta{ property: 'og:title', content: site_hostname }/ | ||||
|   %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:title', content: [yield(:page_title).strip.presence, site_title].compact.join(' - ') }/ | ||||
| %meta{ property: 'og:description', content: account.note }/ | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
|   %link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/ | ||||
|  | ||||
|   %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? | ||||
|   = render partial: 'shared/landing_strip', locals: { account: @account } | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|   = t('accounts.people_who_follow', name: display_name(@account)) | ||||
|  | ||||
| - 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 | ||||
|  | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|   = t('accounts.people_followed_by', name: display_name(@account)) | ||||
|  | ||||
| - 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 | ||||
|  | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
|   %meta{ property: 'og:site_name', content: site_title }/ | ||||
|   %meta{ property: 'og:type', content: 'article' }/ | ||||
|   %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_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 | ||||
|   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 | ||||
|   | ||||
| @@ -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.url.to_s).not_to be_empty | ||||
|   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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user