From: Tom Hughes Date: Fri, 12 Jan 2024 18:03:36 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/4472' X-Git-Tag: live~1081 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/6d48655a71908c77b041daae3b4c3631675831ae?hp=574513ae1a047910d282effc58611d86b0401ac3 Merge remote-tracking branch 'upstream/pull/4472' --- diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 8ca186aad..d1ad60b2c 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -44,11 +44,13 @@ class UserMailer < ApplicationMailer def gpx_success(trace, possible_points) with_recipient_locale trace.user do @to_user = trace.user.display_name + @trace_url = show_trace_url(trace.user, trace) @trace_name = trace.name @trace_points = trace.size @trace_description = trace.description @trace_tags = trace.tags @possible_points = possible_points + @my_traces_url = url_for(:controller => "traces", :action => "mine") mail :to => trace.user.email, :subject => t(".subject") diff --git a/app/views/user_mailer/_gpx_description.html.erb b/app/views/user_mailer/_gpx_description.html.erb index 50fcd6960..85b4c7cae 100644 --- a/app/views/user_mailer/_gpx_description.html.erb +++ b/app/views/user_mailer/_gpx_description.html.erb @@ -1,7 +1,8 @@ <% trace_name = tag.strong(@trace_name) %> +<% trace_name = link_to(trace_name, @trace_url) if @trace_url %> <% trace_description = tag.em(@trace_description) %> <% if @trace_tags.length > 0 %> - <% tags = @trace_tags.map(&:tag).join(" ") %> + <% tags = safe_join @trace_tags.map { |trace_tag| tag.em trace_tag.tag }, ", " %> <%= t ".description_with_tags_html", :trace_name => trace_name, :trace_description => trace_description, :tags => tags %> <% else %> <%= t ".description_with_no_tags_html", :trace_name => trace_name, :trace_description => trace_description %> diff --git a/app/views/user_mailer/gpx_success.html.erb b/app/views/user_mailer/gpx_success.html.erb index ad60408bd..4354db20a 100644 --- a/app/views/user_mailer/gpx_success.html.erb +++ b/app/views/user_mailer/gpx_success.html.erb @@ -4,3 +4,7 @@ <%= render :partial => "gpx_description" %> <%= t(".loaded", :trace_points => @trace_points, :count => @possible_points) %>

+ +

+ <%= t ".all_your_traces_html", :url => link_to(@my_traces_url, @my_traces_url) %> +

diff --git a/config/locales/en.yml b/config/locales/en.yml index c9f319dda..3026bb3aa 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1590,6 +1590,7 @@ en: loaded: one: "loaded successfully with %{trace_points} out of a possible %{count} point." other: "loaded successfully with %{trace_points} out of a possible %{count} points." + all_your_traces_html: "All your successfully uploaded GPX traces can be found at %{url}." subject: "[OpenStreetMap] GPX Import success" signup_confirm: subject: "[OpenStreetMap] Welcome to OpenStreetMap" diff --git a/test/mailers/user_mailer_test.rb b/test/mailers/user_mailer_test.rb index 537bb9d0d..751adcd82 100644 --- a/test/mailers/user_mailer_test.rb +++ b/test/mailers/user_mailer_test.rb @@ -15,7 +15,34 @@ class UserMailerTest < ActionMailer::TestCase end email = UserMailer.gpx_success(trace, 100) - assert_match(/one two three/, email.html_part.body.to_s) + assert_match("one, two, three", email.html_part.body.to_s) + end + + def test_gpx_success_all_traces_link + trace = create(:trace) + email = UserMailer.gpx_success(trace, 100) + body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body) + + url = Rails.application.routes.url_helpers.url_for(:controller => "traces", :action => "mine", :host => Settings.server_url, :protocol => Settings.server_protocol) + assert_select body, "a[href='#{url}']" + end + + def test_gpx_success_trace_link + trace = create(:trace) + email = UserMailer.gpx_success(trace, 100) + body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body) + + url = Rails.application.routes.url_helpers.show_trace_url(trace.user, trace, :host => Settings.server_url, :protocol => Settings.server_protocol) + assert_select body, "a[href='#{url}']", :text => trace.name + end + + def test_gpx_failure_no_trace_link + trace = create(:trace) + email = UserMailer.gpx_failure(trace, "some error") + body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body) + + url = Rails.application.routes.url_helpers.show_trace_url(trace.user, trace, :host => Settings.server_url, :protocol => Settings.server_protocol) + assert_select body, "a[href='#{url}']", :count => 0 end def test_html_encoding