@@ -21,13 +21,10 @@ defmodule Mobilizon.Web.Email.Activity do
|
||||
) do
|
||||
locale = Keyword.get(options, :locale, "en")
|
||||
single_activity = Keyword.get(options, :single_activity, false)
|
||||
recap = Keyword.get(options, :recap, false)
|
||||
Gettext.put_locale(locale)
|
||||
|
||||
subject =
|
||||
gettext(
|
||||
"Activity notification for %{instance}",
|
||||
instance: Config.instance_name()
|
||||
)
|
||||
subject = get_subject(recap)
|
||||
|
||||
chunked_activities = chunk_activities(activities)
|
||||
|
||||
@@ -37,6 +34,7 @@ defmodule Mobilizon.Web.Email.Activity do
|
||||
|> assign(:activities, chunked_activities)
|
||||
|> assign(:total_number_activities, length(activities))
|
||||
|> assign(:single_activity, single_activity)
|
||||
|> assign(:recap, recap)
|
||||
|> render(:email_direct_activity)
|
||||
end
|
||||
|
||||
@@ -94,4 +92,38 @@ defmodule Mobilizon.Web.Email.Activity do
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
@spec get_subject(atom() | false) :: String.t()
|
||||
defp get_subject(recap) do
|
||||
if recap do
|
||||
case recap do
|
||||
:one_hour ->
|
||||
dgettext(
|
||||
"activity",
|
||||
"Activity notification for %{instance}",
|
||||
instance: Config.instance_name()
|
||||
)
|
||||
|
||||
:one_day ->
|
||||
dgettext(
|
||||
"activity",
|
||||
"Daily activity recap for %{instance}",
|
||||
instance: Config.instance_name()
|
||||
)
|
||||
|
||||
:one_week ->
|
||||
dgettext(
|
||||
"activity",
|
||||
"Weekly activity recap for %{instance}",
|
||||
instance: Config.instance_name()
|
||||
)
|
||||
end
|
||||
else
|
||||
dgettext(
|
||||
"activity",
|
||||
"Activity notification for %{instance}",
|
||||
instance: Config.instance_name()
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,73 +1,4 @@
|
||||
<%= case @activity.subject do %>
|
||||
<% :discussion_created -> %>
|
||||
<%=
|
||||
dgettext("activity", "%{profile} created the discussion %{discussion}.",
|
||||
%{
|
||||
profile: "<b>#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}</b>",
|
||||
discussion: "<a href=\"#{
|
||||
page_url(
|
||||
Mobilizon.Web.Endpoint,
|
||||
:discussion,
|
||||
Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]
|
||||
) |> URI.decode()}\">
|
||||
#{@activity.subject_params["discussion_title"]}
|
||||
</a>"
|
||||
}
|
||||
) |> raw %>
|
||||
<% :discussion_replied -> %>
|
||||
<%=
|
||||
dgettext("activity", "%{profile} replied to the discussion %{discussion}.",
|
||||
%{
|
||||
profile: "<b>#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}</b>",
|
||||
discussion: "<a href=\"#{
|
||||
page_url(
|
||||
Mobilizon.Web.Endpoint,
|
||||
:discussion,
|
||||
Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]
|
||||
) |> URI.decode()}\">
|
||||
#{@activity.subject_params["discussion_title"]}
|
||||
</a>"
|
||||
}
|
||||
) |> raw %>
|
||||
<% :discussion_renamed -> %>
|
||||
<%=
|
||||
dgettext("activity", "%{profile} renamed the discussion %{discussion}.",
|
||||
%{
|
||||
profile: "<b>#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}</b>",
|
||||
discussion: "<a href=\"#{
|
||||
page_url(
|
||||
Mobilizon.Web.Endpoint,
|
||||
:discussion,
|
||||
Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]
|
||||
) |> URI.decode()}\">
|
||||
#{@activity.subject_params["discussion_title"]}
|
||||
</a>"
|
||||
}
|
||||
) |> raw %>
|
||||
<% :discussion_archived -> %>
|
||||
<%=
|
||||
dgettext("activity", "%{profile} archived the discussion %{discussion}.",
|
||||
%{
|
||||
profile: "<b>#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}</b>",
|
||||
discussion: "<a href=\"#{
|
||||
page_url(
|
||||
Mobilizon.Web.Endpoint,
|
||||
:discussion,
|
||||
Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]
|
||||
) |> URI.decode()}\">
|
||||
#{@activity.subject_params["discussion_title"]}
|
||||
</a>"
|
||||
}
|
||||
) |> raw %>
|
||||
<% :discussion_deleted -> %>
|
||||
<%=
|
||||
dgettext("activity", "%{profile} deleted the discussion %{discussion}.",
|
||||
%{
|
||||
profile: "<b>#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}</b>",
|
||||
discussion: "<b>#{@activity.subject_params["discussion_title"]}</b>"
|
||||
}
|
||||
) |> raw %>
|
||||
|
||||
<% :event_comment_mention -> %>
|
||||
<%=
|
||||
dgettext("activity", "%{profile} mentionned you in a comment under event %{event}.",
|
||||
|
||||
@@ -22,19 +22,19 @@
|
||||
discussion: @activity.subject_params["discussion_title"]
|
||||
}
|
||||
) %>
|
||||
<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_deleted -> %><%= dgettext("activity", "%{profile} deleted the discussion %{discussion}.",
|
||||
<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_deleted -> %><%= dgettext("activity", "%{profile} deleted the discussion %{discussion}.",
|
||||
%{
|
||||
profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author),
|
||||
discussion: @activity.subject_params["discussion_title"]
|
||||
}
|
||||
) %>
|
||||
<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :event_comment_mention -> %><%= dgettext("activity", "%{profile} mentionned you in a comment under %{event}.",
|
||||
<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :event_comment_mention -> %><%= dgettext("activity", "%{profile} mentionned you in a comment under event %{event}.",
|
||||
%{
|
||||
profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author),
|
||||
event: @activity.subject_params["event_title"]
|
||||
}
|
||||
) %>
|
||||
<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :participation_event_comment -> %><%= dgettext("activity", "%{profile} has posted an announcement under event %{event}.",
|
||||
<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :participation_event_comment -> %><%= dgettext("activity", "%{profile} has posted an announcement under event %{event}.",
|
||||
%{
|
||||
profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author),
|
||||
event: @activity.subject_params["event_title"]
|
||||
|
||||
@@ -110,11 +110,11 @@
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;" >
|
||||
<!-- HEADLINE -->
|
||||
<tr>
|
||||
<td bgcolor="#757199" align="center" style="padding: 30px 30px 30px 30px; border-radius: 4px 4px 4px 4px; color: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
|
||||
<h2 style="font-size: 20px; font-weight: 400; color: #3A384C; margin: 0;">
|
||||
<td bgcolor="#474467" align="center" style="padding: 30px 30px 30px 30px; border-radius: 4px 4px 4px 4px; color: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
|
||||
<h2 style="font-size: 20px; font-weight: 400; color: #FFFFFF; margin: 0;">
|
||||
<%= gettext "Need help? Is something not working as expected?" %>
|
||||
</h2>
|
||||
<p style="margin: 0;"><a href="https://framacolibri.org/c/mobilizon/test-mobilizon" target="_blank" style="color: #474467;">
|
||||
<p style="margin: 0;"><a href="https://framacolibri.org/c/mobilizon/test-mobilizon" target="_blank" style="color: #FFFFFF;">
|
||||
<%= gettext "Ask the community on Framacolibri" %>
|
||||
</a></p>
|
||||
</td>
|
||||
@@ -140,7 +140,7 @@
|
||||
<tr>
|
||||
<td bgcolor="#ECEBF2" align="center" style="padding: 30px 30px 30px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 18px;" >
|
||||
<p style="margin: 0;">
|
||||
<%= gettext("<b>%{instance}</b> is powered by Mobilizon.", instance: @instance[:name]) |> raw %>
|
||||
<%= gettext("<b>%{instance}</b> is powered by Mobilizon.", instance: @instance[:name]) |> raw %><br />
|
||||
<a href="https://joinmobilizon.org"><%= gettext "Learn more about Mobilizon here!" %></a>
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -35,7 +35,16 @@
|
||||
<tr>
|
||||
<td bgcolor="#ffffff" align="left" style="padding: 20px 5% 0px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;" >
|
||||
<p style="margin: 0;">
|
||||
<%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %>
|
||||
<%= case @recap do %>
|
||||
<% :one_day -> %>
|
||||
<% dgettext("activity", "Here's your daily activity recap") %>
|
||||
<% :one_week -> %>
|
||||
<% dgettext("activity", "Here's your weekly activity recap") %>
|
||||
<% :one_hour -> %>
|
||||
<%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %>
|
||||
<% false -> %>
|
||||
<%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %>
|
||||
<% end %>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -108,7 +117,9 @@
|
||||
<% end %>
|
||||
</p>
|
||||
<%= unless @single_activity do %>
|
||||
<em><%= datetime_relative(activity.inserted_at, @locale) %></em>
|
||||
<em>
|
||||
<%= datetime_to_string(activity.inserted_at, @locale, :short) %>
|
||||
</em>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
@@ -141,7 +152,7 @@
|
||||
<tr>
|
||||
<td bgcolor="#ffffff" align="left" style="padding: 20px 30px 40px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 20px;" >
|
||||
<p style="margin: 0">
|
||||
<%= dgettext "activity", "Don't want to receive activity notifications? You may change frequency or disable them in your settings." %>
|
||||
<%= dgettext("activity", "Don't want to receive activity notifications? You may change frequency or disable them in %{tag_start}your settings%{tag_end}.", %{tag_start: "<a href=\"#{Mobilizon.Web.Endpoint.url()}/settings/notifications\">", tag_end: "</a>"}) |> raw %>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<%= @subject %>
|
||||
|
||||
==
|
||||
<%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %>
|
||||
<%= case @recap do %><% :one_day -> %><% dgettext("activity", "Here's your daily activity recap") %>
|
||||
<% :one_week -> %><% dgettext("activity", "Here's your weekly activity recap") %>
|
||||
<% :one_hour -> %><%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %>
|
||||
<% false -> %><%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %>
|
||||
<% end %>
|
||||
|
||||
<%= for {_, group_activities} <- @activities do %>
|
||||
|
||||
@@ -13,11 +17,12 @@
|
||||
<%= for activity <- Enum.take(group_activities, 5) do %>
|
||||
* <%= case activity.type do %><% :discussion -> %><%= render("activity/_discussion_activity_item.text", activity: activity) %><% :event -> %><%= render("activity/_event_activity_item.text", activity: activity) %><% :group -> %><%= render("activity/_group_activity_item.text", activity: activity) %>
|
||||
<% :member -> %><%= render("activity/_member_activity_item.text", activity: activity) %><% :post -> %><%= render("activity/_post_activity_item.text", activity: activity) %><% :resource -> %><%= render("activity/_resource_activity_item.text", activity: activity) %><% :comment -> %><%= render("activity/_comment_activity_item.text", activity: activity) %><% end %>
|
||||
<%= unless @single_activity do %><%= datetime_relative(activity.inserted_at, @locale) %><% end %>
|
||||
<%= unless @single_activity do %><%= datetime_to_string(activity.inserted_at, @locale, :short) %><% end %>
|
||||
<% end %>
|
||||
<%= if length(group_activities) > 5 do %>
|
||||
<%= dngettext "activity", "View one more activity", "View %{count} more activities", length(group_activities) - 5, %{count: length(group_activities) - 5} %>
|
||||
<%= page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)) |> URI.decode() %>/timeline
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= dgettext("activity", "Don't want to receive activity notifications? You may change frequency or disable them in your settings.") %>
|
||||
<%= dgettext("activity", "Don't want to receive activity notifications? You may change frequency or disable them in your settings.") %>
|
||||
<% "#{Mobilizon.Web.Endpoint.url()}/settings/notifications" %>
|
||||
Reference in New Issue
Block a user