From 389f8f824909d60b7560248465416bd4bed92b6b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 17 Apr 2017 18:16:32 -0400 Subject: [PATCH] Instance helper to replace site title helper (#2038) * Move site title helper to instance helper (name change only) * Remove newline in tag * Add site_hostname helper method to wrap up local_domain value * Use site_hostname helper in places that need local_domain value --- app/helpers/instance_helper.rb | 11 ++++++++ app/helpers/site_title_helper.rb | 7 ----- app/mailers/application_mailer.rb | 1 + app/mailers/user_mailer.rb | 2 ++ app/views/about/more.html.haml | 4 +-- app/views/about/show.html.haml | 6 ++--- app/views/about/terms.en.html.haml | 2 +- app/views/about/terms.no.html.haml | 2 +- app/views/accounts/show.html.haml | 4 +-- app/views/api/oembed/show.json.rabl | 2 +- app/views/api/v1/instances/show.rabl | 2 +- app/views/home/initial_state.json.rabl | 2 +- app/views/layouts/application.html.haml | 2 +- app/views/layouts/mailer.text.erb | 2 +- app/views/layouts/public.html.haml | 2 +- app/views/shared/_landing_strip.html.haml | 2 +- app/views/stream_entries/show.html.haml | 2 +- spec/helpers/instance_helper_spec.rb | 33 +++++++++++++++++++++++ spec/helpers/site_title_helper_spec.rb | 15 ----------- 19 files changed, 64 insertions(+), 39 deletions(-) create mode 100644 app/helpers/instance_helper.rb delete mode 100644 app/helpers/site_title_helper.rb create mode 100644 spec/helpers/instance_helper_spec.rb delete mode 100644 spec/helpers/site_title_helper_spec.rb diff --git a/app/helpers/instance_helper.rb b/app/helpers/instance_helper.rb new file mode 100644 index 00000000000..a1c3c3521f9 --- /dev/null +++ b/app/helpers/instance_helper.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module InstanceHelper + def site_title + Setting.site_title.to_s + end + + def site_hostname + Rails.configuration.x.local_domain + end +end diff --git a/app/helpers/site_title_helper.rb b/app/helpers/site_title_helper.rb deleted file mode 100644 index d2caa920388..00000000000 --- a/app/helpers/site_title_helper.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -module SiteTitleHelper - def site_title - Setting.site_title.to_s - end -end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index 0d9f10a080e..e5dbfeeda91 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -3,4 +3,5 @@ class ApplicationMailer < ActionMailer::Base default from: ENV.fetch('SMTP_FROM_ADDRESS') { 'notifications@localhost' } layout 'mailer' + helper :instance end diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 64ca92a3aca..6abf9c9caff 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -4,6 +4,8 @@ class UserMailer < Devise::Mailer default from: ENV.fetch('SMTP_FROM_ADDRESS') { 'notifications@localhost' } layout 'mailer' + helper :instance + def confirmation_instructions(user, token, _opts = {}) @resource = user @token = token diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml index 418c9824723..84b29912cf6 100644 --- a/app/views/about/more.html.haml +++ b/app/views/about/more.html.haml @@ -1,11 +1,11 @@ - content_for :page_title do - #{Rails.configuration.x.local_domain} + = site_hostname .wrapper.thicc .sidebar-layout .main .panel - %h2= Rails.configuration.x.local_domain + %h2= site_hostname - unless @instance_presenter.site_description.blank? %p= @instance_presenter.site_description.html_safe diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index 60627ab98bf..49ad03557df 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -2,12 +2,12 @@ = javascript_include_tag 'application_public', integrity: true - content_for :page_title do - = Rails.configuration.x.local_domain + = site_hostname - content_for :header_tags do %meta{ property: 'og:site_name', content: site_title }/ %meta{ property: 'og:type', content: 'website' }/ - %meta{ property: 'og:title', content: Rails.configuration.x.local_domain }/ + %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:image', content: asset_url('mastodon_small.jpg') }/ %meta{ property: 'og:image:width', content: '400' }/ @@ -72,7 +72,7 @@ = t 'about.features.api' - unless @instance_presenter.site_description.blank? - %h3= t('about.description_headline', domain: Rails.configuration.x.local_domain) + %h3= t('about.description_headline', domain: site_hostname) %p= @instance_presenter.site_description.html_safe .actions diff --git a/app/views/about/terms.en.html.haml b/app/views/about/terms.en.html.haml index e1766ca163c..7e0fb94c213 100644 --- a/app/views/about/terms.en.html.haml +++ b/app/views/about/terms.en.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - #{Rails.configuration.x.local_domain} Terms of Service and Privacy Policy + #{site_hostname} Terms of Service and Privacy Policy .wrapper %h2 Privacy Policy diff --git a/app/views/about/terms.no.html.haml b/app/views/about/terms.no.html.haml index 32ec57ed19d..46f62950df1 100644 --- a/app/views/about/terms.no.html.haml +++ b/app/views/about/terms.no.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - #{Rails.configuration.x.local_domain} Personvern og villkår for bruk av nettstedet + #{site_hostname} Personvern og villkår for bruk av nettstedet .wrapper %h2 Personvernserklæring diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index 9a70fd16fe0..b01f3c4e3e5 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -7,7 +7,7 @@ %meta{ property: 'og:site_name', content: site_title }/ %meta{ property: 'og:type', content: 'profile' }/ - %meta{ property: 'og:title', content: "#{@account.username} on #{Rails.configuration.x.local_domain}" }/ + %meta{ property: 'og:title', content: "#{@account.username} on #{site_hostname}" }/ %meta{ property: 'og:description', content: @account.note }/ %meta{ property: 'og:image', content: full_asset_url(@account.avatar.url(:original)) }/ %meta{ property: 'og:image:width', content: '120' }/ @@ -18,7 +18,7 @@ = render partial: 'shared/landing_strip', locals: { account: @account } .h-feed - %data.p-name{ value: "#{@account.username} on #{Rails.configuration.x.local_domain}" }/ + %data.p-name{ value: "#{@account.username} on #{site_hostname}" }/ = render 'header', account: @account diff --git a/app/views/api/oembed/show.json.rabl b/app/views/api/oembed/show.json.rabl index 311c02dadd7..11dcec538c5 100644 --- a/app/views/api/oembed/show.json.rabl +++ b/app/views/api/oembed/show.json.rabl @@ -6,7 +6,7 @@ node(:version) { '1.0' } node(:title, &:title) node(:author_name) { |entry| entry.account.display_name.blank? ? entry.account.username : entry.account.display_name } node(:author_url) { |entry| account_url(entry.account) } -node(:provider_name) { Rails.configuration.x.local_domain } +node(:provider_name) { site_hostname } node(:provider_url) { root_url } node(:cache_age) { 86_400 } node(:html) { |entry| "<iframe src=\"#{embed_account_stream_entry_url(entry.account, entry)}\" style=\"width: 100%; overflow: hidden\" frameborder=\"0\" width=\"#{@width}\" height=\"#{@height}\" scrolling=\"no\"></iframe>" } diff --git a/app/views/api/v1/instances/show.rabl b/app/views/api/v1/instances/show.rabl index 88eb08a9e86..f5598fde386 100644 --- a/app/views/api/v1/instances/show.rabl +++ b/app/views/api/v1/instances/show.rabl @@ -1,6 +1,6 @@ object false -node(:uri) { Rails.configuration.x.local_domain } +node(:uri) { site_hostname } node(:title) { Setting.site_title } node(:description) { Setting.site_description } node(:email) { Setting.site_contact_email } diff --git a/app/views/home/initial_state.json.rabl b/app/views/home/initial_state.json.rabl index ce7bfbd44cf..10404938798 100644 --- a/app/views/home/initial_state.json.rabl +++ b/app/views/home/initial_state.json.rabl @@ -5,7 +5,7 @@ node(:meta) do streaming_api_base_url: @streaming_api_base_url, access_token: @token, locale: I18n.locale, - domain: Rails.configuration.x.local_domain, + domain: site_hostname, me: current_account.id, admin: @admin.try(:id), boost_modal: current_account.user.setting_boost_modal, diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index fa5811fd88a..688deaebd52 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -14,7 +14,7 @@ %title< - if content_for?(:page_title) - = yield(:page_title) + = yield(:page_title).strip = ' - ' = site_title diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb index 21bf444c374..cdb284de831 100644 --- a/app/views/layouts/mailer.text.erb +++ b/app/views/layouts/mailer.text.erb @@ -1,5 +1,5 @@ <%= yield %> --- -<%= t('application_mailer.signature', instance: Rails.configuration.x.local_domain) %> +<%= t('application_mailer.signature', instance: site_hostname) %> <%= t('application_mailer.settings', link: settings_preferences_url) %> diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index fdde0a68138..556102f5380 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -4,7 +4,7 @@ - content_for :content do .container= yield .footer - %span.domain= link_to Rails.configuration.x.local_domain, root_path + %span.domain= link_to site_hostname, root_path %span.powered-by = t('generic.powered_by', link: link_to('Mastodon', 'https://github.com/tootsuite/mastodon')).html_safe diff --git a/app/views/shared/_landing_strip.html.haml b/app/views/shared/_landing_strip.html.haml index 3536c5ca8ce..02e694418f3 100644 --- a/app/views/shared/_landing_strip.html.haml +++ b/app/views/shared/_landing_strip.html.haml @@ -1,5 +1,5 @@ .landing-strip = t('landing_strip_html', name: content_tag(:span, display_name(account), class: :emojify), - domain: Rails.configuration.x.local_domain, + domain: site_hostname, sign_up_path: new_user_registration_path) diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml index dea5e9d4080..31efa26c420 100644 --- a/app/views/stream_entries/show.html.haml +++ b/app/views/stream_entries/show.html.haml @@ -4,7 +4,7 @@ %meta{ property: 'og:site_name', content: site_title }/ %meta{ property: 'og:type', content: 'article' }/ - %meta{ property: 'og:title', content: "#{@account.username} on #{Rails.configuration.x.local_domain}" }/ + %meta{ property: 'og:title', content: "#{@account.username} on #{site_hostname}" }/ = render 'stream_entries/og_description', activity: @stream_entry.activity = render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account diff --git a/spec/helpers/instance_helper_spec.rb b/spec/helpers/instance_helper_spec.rb new file mode 100644 index 00000000000..c42ed693886 --- /dev/null +++ b/spec/helpers/instance_helper_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe InstanceHelper do + describe 'site_title' do + it 'Uses the Setting.site_title value when it exists' do + Setting.site_title = 'New site title' + + expect(helper.site_title).to eq 'New site title' + end + + it 'returns empty string when Setting.site_title is nil' do + Setting.site_title = nil + + expect(helper.site_title).to eq '' + end + end + + describe 'site_hostname' do + around(:each) do |example| + before = Rails.configuration.x.local_domain + example.run + Rails.configuration.x.local_domain = before + end + + it 'returns the local domain value' do + Rails.configuration.x.local_domain = 'example.com' + + expect(helper.site_hostname).to eq 'example.com' + end + end +end diff --git a/spec/helpers/site_title_helper_spec.rb b/spec/helpers/site_title_helper_spec.rb deleted file mode 100644 index 8cfd9cba1c8..00000000000 --- a/spec/helpers/site_title_helper_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require "rails_helper" - -describe "site_title" do - it "Uses the Setting.site_title value when it exists" do - Setting.site_title = "New site title" - - expect(helper.site_title).to eq "New site title" - end - - it "returns empty string when Setting.site_title is nil" do - Setting.site_title = nil - - expect(helper.site_title).to eq "" - end -end