diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb
index b51882fe8d..c1bb2dda9e 100644
--- a/app/controllers/categories_controller.rb
+++ b/app/controllers/categories_controller.rb
@@ -33,7 +33,11 @@ class CategoriesController < ApplicationController
)
@category_list.draft = Draft.get(current_user, Draft::NEW_TOPIC, @category_list.draft_sequence) if current_user
- @title = "#{I18n.t('js.filters.categories.title')} - #{SiteSetting.title}" unless category_options[:is_homepage]
+ if category_options[:is_homepage] && SiteSetting.short_site_description.present?
+ @title = "#{SiteSetting.title} - #{SiteSetting.short_site_description}"
+ elsif !category_options[:is_homepage]
+ @title = "#{I18n.t('js.filters.categories.title')} - #{SiteSetting.title}"
+ end
respond_to do |format|
format.html do
diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb
index a5f297e6b1..d52f1ee4be 100644
--- a/app/controllers/list_controller.rb
+++ b/app/controllers/list_controller.rb
@@ -107,6 +107,8 @@ class ListController < ApplicationController
@title = I18n.t('js.filters.with_topics', filter: filter_title)
end
@title << " - #{SiteSetting.title}"
+ elsif (filter.to_s == current_homepage) && SiteSetting.short_site_description.present?
+ @title = "#{SiteSetting.title} - #{SiteSetting.short_site_description}"
end
end
diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index a75b9d4896..53dbf4945a 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -1193,6 +1193,7 @@ en:
educate_until_posts: "When the user starts typing their first (n) new posts, show the pop-up new user education panel in the composer."
title: "The name of this site, as used in the title tag."
site_description: "Describe this site in one sentence, as used in the meta description tag."
+ short_site_description: "Short description, as used in the title tag on homepage."
contact_email: "Email address of key contact responsible for this site. Used for critical notifications, as well as on the /about contact form for urgent matters."
contact_url: "Contact URL for this site. Used on the /about contact form for urgent matters."
crawl_images: "Retrieve images from remote URLs to insert the correct width and height dimensions."
@@ -4047,6 +4048,9 @@ en:
site_description:
label: "Describe your community in one short sentence"
placeholder: "A place for Jane and her friends to discuss cool stuff"
+ short_site_description:
+ label: "Describe your community in few words"
+ placeholder: "Best community ever"
introduction:
title: "Introduction"
diff --git a/config/site_settings.yml b/config/site_settings.yml
index ace129d451..9fb257110d 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -31,6 +31,8 @@ required:
default: 'Discourse'
site_description:
default: ''
+ short_site_description:
+ default: ''
contact_email:
client: true
default: ''
diff --git a/lib/wizard/builder.rb b/lib/wizard/builder.rb
index 92c6aa9035..02214c7f95 100644
--- a/lib/wizard/builder.rb
+++ b/lib/wizard/builder.rb
@@ -33,12 +33,13 @@ class Wizard
@wizard.append_step('forum-title') do |step|
step.add_field(id: 'title', type: 'text', required: true, value: SiteSetting.title)
step.add_field(id: 'site_description', type: 'text', required: true, value: SiteSetting.site_description)
+ step.add_field(id: 'short_site_description', type: 'text', required: false, value: SiteSetting.short_site_description)
step.on_update do |updater|
updater.ensure_changed(:title)
if updater.errors.blank?
- updater.apply_settings(:title, :site_description)
+ updater.apply_settings(:title, :site_description, :short_site_description)
end
end
end
diff --git a/spec/requests/categories_controller_spec.rb b/spec/requests/categories_controller_spec.rb
index 80c7622f9c..428b876b3e 100644
--- a/spec/requests/categories_controller_spec.rb
+++ b/spec/requests/categories_controller_spec.rb
@@ -37,6 +37,18 @@ describe CategoriesController do
expect(json['topic_list_latest']).to include(%{"more_topics_url":"/latest"})
end
end
+
+ it "Shows correct title if category list is set for homepage" do
+ SiteSetting.top_menu = "categories|latest"
+ get "/"
+
+ expect(response.body).to have_tag "title", text: "Discourse"
+
+ SiteSetting.short_site_description = "Official community"
+ get "/"
+
+ expect(response.body).to have_tag "title", text: "Discourse - Official community"
+ end
end
context 'extensibility event' do
diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb
index d7b0ea2dac..e15ca638d9 100644
--- a/spec/requests/list_controller_spec.rb
+++ b/spec/requests/list_controller_spec.rb
@@ -5,8 +5,10 @@ RSpec.describe ListController do
let(:group) { Fabricate(:group) }
let(:user) { Fabricate(:user) }
let(:post) { Fabricate(:post, user: user) }
+ let(:admin) { Fabricate(:admin) }
before do
+ admin # to skip welcome wizard at home page `/`
SiteSetting.top_menu = 'latest|new|unread|categories'
end
@@ -77,6 +79,17 @@ RSpec.describe ListController do
parsed = JSON.parse(response.body)
expect(parsed["topic_list"]["topics"].length).to eq(1)
end
+
+ it "shows correct title if topic list is set for homepage" do
+ get "/"
+
+ expect(response.body).to have_tag "title", text: "Discourse"
+
+ SiteSetting.short_site_description = "Best community"
+ get "/"
+
+ expect(response.body).to have_tag "title", text: "Discourse - Best community"
+ end
end
describe "categories and X" do