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
					
				| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user