mirror of
https://github.com/discourse/discourse.git
synced 2024-12-12 16:03:49 +08:00
c58cd697d2
Followup e37fb3042d
* Automatically remove the prefix `Discourse ` from all the plugin titles to avoid repetition
* Remove the :discourse_dev: icon from the author. Consider a "By Discourse" with no labels as official
* We add a `label` metadata to plugin.rb
* Only plugins made by us in `discourse` and `discourse-org` GitHub organizations will show these in the list
* Make the plugin author font size a little smaller
* Make the commit sha look like a link so it's more obvious it goes to the code
Also I added some validation and truncation for plugin metadata
parsing since currently you can put absolutely anything in there
and it will show on the plugin list.
108 lines
1.7 KiB
Ruby
108 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class AdminPluginSerializer < ApplicationSerializer
|
|
attributes :id,
|
|
:name,
|
|
:about,
|
|
:version,
|
|
:url,
|
|
:admin_route,
|
|
:enabled,
|
|
:enabled_setting,
|
|
:has_settings,
|
|
: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 has_settings
|
|
SiteSetting.plugins.values.include?(id)
|
|
end
|
|
|
|
def include_url?
|
|
url.present?
|
|
end
|
|
|
|
def admin_route
|
|
route = object.admin_route
|
|
return unless route
|
|
|
|
ret = route.slice(:location, :label)
|
|
ret[:full_location] = "adminPlugins.#{ret[:location]}"
|
|
ret
|
|
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
|