mirror of
https://github.com/discourse/discourse.git
synced 2025-06-06 11:54:41 +08:00
DEV: Use default admin routes for plugins with settings (#30941)
This change adds a sidebar link for each plugin that fulfils the following criteria: - Does not have an explicit admin route defined in the plugin. - Has at least one site setting (not including enabled/disabled.) That sidebar link leads to the automatically generated plugin show settings page.
This commit is contained in:
@ -120,7 +120,12 @@ class Plugin::Instance
|
||||
|
||||
def full_admin_route
|
||||
route = self.admin_route
|
||||
return unless route
|
||||
|
||||
if route.blank?
|
||||
return if !any_settings?
|
||||
|
||||
route = default_admin_route
|
||||
end
|
||||
|
||||
route
|
||||
.slice(:location, :label, :use_new_show_route)
|
||||
@ -130,6 +135,14 @@ class Plugin::Instance
|
||||
end
|
||||
end
|
||||
|
||||
def any_settings?
|
||||
return false if !configurable?
|
||||
|
||||
SiteSetting
|
||||
.all_settings(filter_plugin: self.name)
|
||||
.any? { |s| s[:setting] != @enabled_site_setting }
|
||||
end
|
||||
|
||||
def configurable?
|
||||
true
|
||||
end
|
||||
@ -146,7 +159,11 @@ class Plugin::Instance
|
||||
delegate :name, to: :metadata
|
||||
|
||||
def humanized_name
|
||||
(setting_category_name || name).delete_prefix("Discourse ").delete_prefix("discourse-")
|
||||
(setting_category_name || name)
|
||||
.delete_prefix("Discourse ")
|
||||
.delete_prefix("discourse-")
|
||||
.gsub("-", " ")
|
||||
.upcase_first
|
||||
end
|
||||
|
||||
def add_to_serializer(
|
||||
@ -1476,4 +1493,8 @@ class Plugin::Instance
|
||||
def register_permitted_bulk_action_parameter(name)
|
||||
DiscoursePluginRegistry.register_permitted_bulk_action_parameter(name, self)
|
||||
end
|
||||
|
||||
def default_admin_route
|
||||
{ label: "#{name.underscore}.title", location: name, use_new_show_route: true }
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user