class GovukPublishingComponents::Presenters::OrganisationSchema
Attributes
page[R]
Public Class Methods
new(page)
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 6 def initialize(page) @page = page end
Public Instance Methods
structured_data()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 10 def structured_data # http://schema.org/GovernmentOrganization { "@context" => "http://schema.org", "@type" => "GovernmentOrganization", "mainEntityOfPage" => { "@type" => "WebPage", "@id" => page.canonical_url, }, "name" => page.title, "description" => page.description || page.body, } .merge(members) .merge(parent_organisations) .merge(sub_organisations) .merge(search_action) end
Private Instance Methods
linked_org(url)
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 113 def linked_org(url) { "@context" => "http://schema.org", "@type" => "GovernmentOrganization", "sameAs" => url, } end
members()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 30 def members return {} unless ministers.present? members = ministers_with_grouped_roles.map do |person, roles| person.merge("hasOccupation" => roles) end { "member" => members, } end
minister_url(minister)
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 78 def minister_url(minister) "#{website_root}#{minister['href']}" end
ministers()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 42 def ministers page.content_item.dig("details", "ordered_ministers") || [] end
ministers_with_grouped_roles()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 46 def ministers_with_grouped_roles ministers.each_with_object({}) do |minister, grouped| person_schema = person_schema_for_minister(minister) if grouped.key? person_schema grouped[person_schema] << role_for_minister(minister) else grouped[person_schema] = [role_for_minister(minister)] end end end
organisation_facet_params()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 134 def organisation_facet_params { organisations: [slug] } end
parent_organisations()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 90 def parent_organisations related_organisations("ordered_parent_organisations", "parentOrganization") end
person_schema_for_minister(minister)
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 58 def person_schema_for_minister(minister) { "@type" => "Person", "honorificPrefix" => minister["name_prefix"], "image" => minister.dig("image", "url"), "name" => minister["name"], "url" => minister_url(minister), } end
role_for_minister(minister)
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 68 def role_for_minister(minister) return {} unless minister["role"].present? { "@type" => "Role", "name" => minister["role"], "url" => role_url(minister), } end
role_url(minister)
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 82 def role_url(minister) "#{website_root}#{minister['role_href']}" end
search_action()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 121 def search_action PotentialSearchActionSchema.new(organisation_facet_params, search_description).structured_data end
search_description()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 130 def search_description I18n.t(:all_content_search_description, scope: %i[components organisation_schema], organisation: page.title) end
slug()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 125 def slug uri = URI.parse(page.canonical_url) File.basename(uri.path) end
sub_organisations()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 94 def sub_organisations related_organisations("ordered_child_organisations", "subOrganization") end
website_root()
click to toggle source
# File lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb, line 86 def website_root @website_root ||= Plek.new.website_root end