discourse/app/serializers/admin_plugin_serializer.rb

112 lines
1.9 KiB
Ruby

# frozen_string_literal: true
class AdminPluginSerializer < ApplicationSerializer
attributes :id,
:name,
:about,
:version,
:url,
:admin_route,
:enabled,
:enabled_setting,
:has_settings,
:has_only_enabled_setting,
:is_official,
:is_discourse_owned,
:label,
:commit_hash,
:commit_url,
:meta_url,
:authors
def id
object.directory_name
end
def name
object.metadata.name
end
def about
object.metadata.about
end
def version
object.metadata.version
end
def url
object.metadata.url
end
def authors
object.metadata.authors
end
def enabled
object.enabled?
end
def include_enabled_setting?
enabled_setting.present?
end
def enabled_setting
object.enabled_site_setting
end
def plugin_settings
@plugin_settings ||= SiteSetting.plugins.select { |_, v| v == id }
end
def has_settings
plugin_settings.values.any?
end
def has_only_enabled_setting
plugin_settings.keys.length == 1 && plugin_settings.keys.first == enabled_setting
end
def include_url?
url.present?
end
def admin_route
object.full_admin_route
end
def include_admin_route?
admin_route.present?
end
def is_official
Plugin::Metadata::OFFICIAL_PLUGINS.include?(object.name)
end
def include_label?
is_discourse_owned
end
def label
return if !is_discourse_owned
object.metadata.label
end
def is_discourse_owned
object.discourse_owned?
end
def commit_hash
object.commit_hash
end
def commit_url
object.commit_url
end
def meta_url
return if object.metadata.meta_topic_id.blank?
"https://meta.discourse.org/t/#{object.metadata.meta_topic_id}"
end
end