From 4a6ccafa2ff1aa79b73459c09236431ed976ae85 Mon Sep 17 00:00:00 2001 From: Wesley Ellis Date: Sat, 22 Apr 2017 11:29:46 -0400 Subject: [PATCH] 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 --- app/views/about/show.html.haml | 1 + app/views/accounts/_og.html.haml | 1 + app/views/accounts/show.html.haml | 2 +- app/views/follower_accounts/index.html.haml | 2 +- app/views/following_accounts/index.html.haml | 2 +- app/views/stream_entries/show.html.haml | 1 + spec/views/about/show.html.haml_spec.rb | 25 +++++++++++++++++++ spec/views/accounts/show.html.haml_spec.rb | 19 ++++++++++++++ .../stream_entries/show.html.haml_spec.rb | 19 ++++++++++++++ 9 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 spec/views/about/show.html.haml_spec.rb diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index 1c928c531a..4c008a06a1 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -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')) }/ diff --git a/app/views/accounts/_og.html.haml b/app/views/accounts/_og.html.haml index b7f019c506..3ad39f391d 100644 --- a/app/views/accounts/_og.html.haml +++ b/app/views/accounts/_og.html.haml @@ -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 }/ diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index 4611155cdd..11f74decf3 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -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 } diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml index 4052967dab..ee62c79ebf 100644 --- a/app/views/follower_accounts/index.html.haml +++ b/app/views/follower_accounts/index.html.haml @@ -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 diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml index 11e730e048..68a0ef8389 100644 --- a/app/views/following_accounts/index.html.haml +++ b/app/views/following_accounts/index.html.haml @@ -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 diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml index 31efa26c42..d01e82af8f 100644 --- a/app/views/stream_entries/show.html.haml +++ b/app/views/stream_entries/show.html.haml @@ -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 diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb new file mode 100644 index 0000000000..686d393fbe --- /dev/null +++ b/spec/views/about/show.html.haml_spec.rb @@ -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{}) + expect(header_tags).to match(%r{}) + expect(header_tags).to match(%r{}) + expect(header_tags).to match(%r{}) + end +end diff --git a/spec/views/accounts/show.html.haml_spec.rb b/spec/views/accounts/show.html.haml_spec.rb index 6ddb2c36de..e9f6493b1c 100644 --- a/spec/views/accounts/show.html.haml_spec.rb +++ b/spec/views/accounts/show.html.haml_spec.rb @@ -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{}) + expect(header_tags).to match(%r{}) + expect(header_tags).to match(%r{}) + expect(header_tags).to match(%r{}) + end end diff --git a/spec/views/stream_entries/show.html.haml_spec.rb b/spec/views/stream_entries/show.html.haml_spec.rb index acc0c39f5b..0dd150524d 100644 --- a/spec/views/stream_entries/show.html.haml_spec.rb +++ b/spec/views/stream_entries/show.html.haml_spec.rb @@ -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{}) + expect(header_tags).to match(%r{}) + expect(header_tags).to match(%r{}) + expect(header_tags).to match(%r{}) + end end