diff --git a/lib/web/email/email.ex b/lib/web/email/email.ex index c80bd854d..51782d06e 100644 --- a/lib/web/email/email.ex +++ b/lib/web/email/email.ex @@ -18,6 +18,7 @@ defmodule Mobilizon.Web.Email do |> put_header("Reply-To", Config.instance_email_reply_to()) |> maybe_put_date_header() |> maybe_put_message_id() + |> assign(:jsonLDMetadata, nil) |> assign(:instance_name, Config.instance_name()) |> put_html_layout({EmailView, "email.html"}) |> put_text_layout({EmailView, "email.text"}) diff --git a/lib/web/email/event.ex b/lib/web/email/event.ex index dd0a0b1c5..13a627d7c 100644 --- a/lib/web/email/event.ex +++ b/lib/web/email/event.ex @@ -47,6 +47,11 @@ defmodule Mobilizon.Web.Email.Event do title: old_event.title ) + json_ld = + "participation.json" + |> ObjectView.render(%{participant: %Participant{participant | event: event, actor: actor}}) + |> Jason.encode!() + Email.base_email(to: {Actor.display_name(actor), email}, subject: subject) |> assign(:locale, locale) |> assign(:event, event) @@ -54,6 +59,7 @@ defmodule Mobilizon.Web.Email.Event do |> assign(:changes, changes) |> assign(:subject, subject) |> assign(:timezone, timezone) + |> assign(:jsonLDMetadata, json_ld) |> Email.add_event_attachment(event) |> render(:event_updated) end diff --git a/lib/web/email/participation.ex b/lib/web/email/participation.ex index c363c1a9e..5b48205eb 100644 --- a/lib/web/email/participation.ex +++ b/lib/web/email/participation.ex @@ -8,11 +8,11 @@ defmodule Mobilizon.Web.Email.Participation do import Mobilizon.Web.Gettext alias Mobilizon.Actors.Actor - alias Mobilizon.Config + alias Mobilizon.{Config, Events, Users} alias Mobilizon.Events.{Event, Participant} - alias Mobilizon.Users alias Mobilizon.Users.User alias Mobilizon.Web.Email + alias Mobilizon.Web.JsonLD.ObjectView @doc """ Send participation emails to local user @@ -117,6 +117,7 @@ defmodule Mobilizon.Web.Email.Participation do |> assign(:locale, locale) |> assign(:event, event) |> assign(:subject, subject) + |> assign(:jsonLDMetadata, json_ld(participant)) |> Email.add_event_attachment(event) |> render(:event_participation_approved) end @@ -139,7 +140,16 @@ defmodule Mobilizon.Web.Email.Participation do Email.base_email(to: email, subject: subject) |> assign(:locale, locale) |> assign(:participant, participant) + |> assign(:jsonLDMetadata, json_ld(participant)) |> assign(:subject, subject) |> render(:anonymous_participation_confirmation) end + + defp json_ld(participant) do + event = Events.get_event_with_preload!(participant.event_id) + + "participation.json" + |> ObjectView.render(%{participant: %Participant{participant | event: event}}) + |> Jason.encode!() + end end diff --git a/lib/web/templates/email/email.html.heex b/lib/web/templates/email/email.html.heex index e7e34bf0b..e2248ca8d 100644 --- a/lib/web/templates/email/email.html.heex +++ b/lib/web/templates/email/email.html.heex @@ -41,6 +41,9 @@ /* ANDROID CENTER FIX */ div[style*="margin: 16px 0;"] { margin: 0 !important; } + <%= if @jsonLDMetadata do %> + + <% end %>