DEV: implements register_modifier(:custom_homepage_enabled) (#28657)

This commit will allow plugin developers to enable/disable the custom homepage.

Usage:

```ruby
register_modifier(:custom_homepage_enabled) do |enabled, args|
  true
end 
```

Args might contain request and/or current_user.
This commit is contained in:
Joffrey JAFFEUX 2024-08-30 11:06:07 +02:00 committed by GitHub
parent 361e954c55
commit d81fc1448b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 0 deletions

View File

@ -4,6 +4,16 @@ class HomepageHelper
def self.resolve(request = nil, current_user = nil)
return "custom" if ThemeModifierHelper.new(request: request).custom_homepage
enabled = false
enabled =
DiscoursePluginRegistry.apply_modifier(
:custom_homepage_enabled,
enabled,
request: request,
current_user: current_user,
)
return "custom" if enabled
current_user ? SiteSetting.homepage : SiteSetting.anonymous_homepage
end
end

View File

@ -14,6 +14,15 @@ RSpec.describe HomepageHelper do
expect(HomepageHelper.resolve).to eq("custom")
end
it "returns custom when a plugin modifies the custom_homepage_enabled to true" do
DiscoursePluginRegistry
.expects(:apply_modifier)
.with(:custom_homepage_enabled, false, request: nil, current_user: nil)
.returns(true)
expect(HomepageHelper.resolve).to eq("custom")
end
context "when first item in top menu is not valid for anons" do
it "distinguishes between auth homepage and anon homepage" do
SiteSetting.top_menu = "new|top|latest|unread"