Add more metadata elements

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-10-21 17:55:16 +02:00
parent e47f38691d
commit 3b63c2928e
10 changed files with 180 additions and 25 deletions

View File

@@ -1,9 +1,12 @@
defimpl Mobilizon.Service.Metadata, for: Mobilizon.Events.Event do
alias Phoenix.HTML
alias Phoenix.HTML.Tag
alias Mobilizon.Actors.Actor
alias Mobilizon.Addresses.Address
alias Mobilizon.Events.{Event, EventOptions}
alias Mobilizon.Web.Endpoint
alias Mobilizon.Web.JsonLD.ObjectView
alias Mobilizon.Web.Router.Helpers, as: Routes
import Mobilizon.Service.Metadata.Utils,
only: [process_description: 2, strip_tags: 1, datetime_to_string: 2, render_address: 1]
@@ -35,9 +38,64 @@ defimpl Mobilizon.Service.Metadata, for: Mobilizon.Events.Event do
]
end
breadcrumbs =
if event.attributed_to do
[
%{
"@context" => "https://schema.org",
"@type" => "BreadcrumbList",
"itemListElement" => [
%{
"@type" => "ListItem",
"position" => 1,
"name" => Actor.display_name(event.attributed_to),
"item" =>
Endpoint
|> Routes.page_url(
:actor,
Actor.preferred_username_and_domain(event.attributed_to)
)
|> URI.decode()
},
%{
"@type" => "ListItem",
"position" => 2,
"name" => event.title
}
]
}
]
else
[]
end
breadcrumbs =
breadcrumbs ++
[
%{
"@context" => "https://schema.org",
"@type" => "BreadcrumbList",
"itemListElement" => [
%{
"@type" => "ListItem",
"position" => 1,
"name" => "Events",
"item" => "#{Endpoint.url()}/search"
},
%{
"@type" => "ListItem",
"position" => 2,
"name" => event.title
}
]
}
]
tags ++
[
Tag.tag(:meta, property: "twitter:card", content: "summary_large_image"),
~s{<script type="application/ld+json">#{Jason.encode!(breadcrumbs)}</script>}
|> HTML.raw(),
~s{<script type="application/ld+json">#{json(event)}</script>} |> HTML.raw()
]
end