DEV: allow themes to render their own custom homepage (#26291)

This PR adds a theme modifier and route so that custom themes can opt to show their own homepage. See PR description for example usage.
This commit is contained in:
Penar Musaraj
2024-04-02 11:05:08 -04:00
committed by GitHub
parent 7eec13375d
commit 1eb70973a2
22 changed files with 271 additions and 9 deletions

View File

@@ -9,7 +9,7 @@ class HomePageConstraint
return @filter == "finish_installation" if SiteSetting.has_login_hint?
current_user = CurrentUser.lookup_from_env(request.env)
homepage = current_user&.user_option&.homepage || SiteSetting.anonymous_homepage
homepage = current_user&.user_option&.homepage || HomepageHelper.resolve(request, current_user)
homepage == @filter
rescue Discourse::InvalidAccess, Discourse::ReadOnly
false

9
lib/homepage_helper.rb Normal file
View File

@@ -0,0 +1,9 @@
# frozen_string_literal: true
class HomepageHelper
def self.resolve(request = nil, current_user = nil)
return "custom" if ThemeModifierHelper.new(request: request).custom_homepage
current_user ? SiteSetting.homepage : SiteSetting.anonymous_homepage
end
end