From 169c8960d9c32e35f5a2603c611857757d8b1044 Mon Sep 17 00:00:00 2001 From: Zarino Zappia Date: Tue, 20 Aug 2019 09:45:35 +0100 Subject: Display dummy content in /_dev/email/contact preview --- perllib/FixMyStreet/App/Controller/Develop.pm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'perllib/FixMyStreet/App/Controller/Develop.pm') diff --git a/perllib/FixMyStreet/App/Controller/Develop.pm b/perllib/FixMyStreet/App/Controller/Develop.pm index ae7122fa1..38f0c2437 100755 --- a/perllib/FixMyStreet/App/Controller/Develop.pm +++ b/perllib/FixMyStreet/App/Controller/Develop.pm @@ -115,6 +115,21 @@ sub email_previewer : Path('/_dev/email') : Args(1) { } } elsif ($template eq 'questionnaire') { $vars->{created} = 'N weeks'; + } elsif ($template eq 'contact') { + $vars->{problem} = $c->model('DB::Problem')->search(undef, { rows => 1 } )->first; + $vars->{subject} = 'Please remove my details'; + $vars->{message} = 'I accidentally put my phone number, address, mothers maiden name, and facebook password in my most recent report!! Please remove it!!'; + $vars->{form_name} = $c->user->name; + $vars->{em} = $c->user->email; + $vars->{host} = $c->req->header('HOST'); + $vars->{ip} = $c->req->address; + $vars->{user_agent} = $c->req->user_agent; + $vars->{complaint} = sprintf( + "Complaint about report %d", + $vars->{problem}->id, + ); + $vars->{problem_url} = $c->cobrand->base_url() . '/report/' . $vars->{problem}->id; + $vars->{admin_url} = $c->cobrand->admin_base_url . '/report_edit/' . $vars->{problem}->id; } my $email = $c->construct_email("$template.txt", $vars); -- cgit v1.2.3 From 3c4d48f5fd5f499736f07ac2a5d17c1d4bab6c14 Mon Sep 17 00:00:00 2001 From: Zarino Zappia Date: Tue, 20 Aug 2019 11:16:53 +0100 Subject: Include user admin links in contact form emails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If a message is sent via the contact form, with a stated email address matching a user in the database, the resulting email will now include quick links to: - Admin page for editing the user - Admin page for viewing the user’s reports And if the user has made at least one report, also: - Admin page for the user’s most recent report This should speed up admin email triage considerably. --- perllib/FixMyStreet/App/Controller/Develop.pm | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'perllib/FixMyStreet/App/Controller/Develop.pm') diff --git a/perllib/FixMyStreet/App/Controller/Develop.pm b/perllib/FixMyStreet/App/Controller/Develop.pm index 38f0c2437..e6845ac02 100755 --- a/perllib/FixMyStreet/App/Controller/Develop.pm +++ b/perllib/FixMyStreet/App/Controller/Develop.pm @@ -130,6 +130,16 @@ sub email_previewer : Path('/_dev/email') : Args(1) { ); $vars->{problem_url} = $c->cobrand->base_url() . '/report/' . $vars->{problem}->id; $vars->{admin_url} = $c->cobrand->admin_base_url . '/report_edit/' . $vars->{problem}->id; + $vars->{user_admin_url} = $c->cobrand->admin_base_url . '/users/' . $c->user->id; + $vars->{user_reports_admin_url} = $c->cobrand->admin_base_url . '/reports?search=' . $c->user->email; + my $user_latest_problem = $c->user->problems->search({ + state => [ FixMyStreet::DB::Result::Problem->visible_states() ] + }, { + order_by => { -desc => 'id' } + })->single; + if ( $user_latest_problem ) { + $vars->{user_latest_report_admin_url} = $c->cobrand->admin_base_url . '/report_edit/' . $user_latest_problem->id; + } } my $email = $c->construct_email("$template.txt", $vars); -- cgit v1.2.3 From 3c73315e3b6a9d403b008bb06a6497224f2486c4 Mon Sep 17 00:00:00 2001 From: Zarino Zappia Date: Thu, 22 Aug 2019 10:55:20 +0100 Subject: $user->latest_visible_problem() convenience method --- perllib/FixMyStreet/App/Controller/Develop.pm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'perllib/FixMyStreet/App/Controller/Develop.pm') diff --git a/perllib/FixMyStreet/App/Controller/Develop.pm b/perllib/FixMyStreet/App/Controller/Develop.pm index e6845ac02..d2457a3d7 100755 --- a/perllib/FixMyStreet/App/Controller/Develop.pm +++ b/perllib/FixMyStreet/App/Controller/Develop.pm @@ -132,11 +132,7 @@ sub email_previewer : Path('/_dev/email') : Args(1) { $vars->{admin_url} = $c->cobrand->admin_base_url . '/report_edit/' . $vars->{problem}->id; $vars->{user_admin_url} = $c->cobrand->admin_base_url . '/users/' . $c->user->id; $vars->{user_reports_admin_url} = $c->cobrand->admin_base_url . '/reports?search=' . $c->user->email; - my $user_latest_problem = $c->user->problems->search({ - state => [ FixMyStreet::DB::Result::Problem->visible_states() ] - }, { - order_by => { -desc => 'id' } - })->single; + my $user_latest_problem = $c->user->latest_visible_problem(); if ( $user_latest_problem ) { $vars->{user_latest_report_admin_url} = $c->cobrand->admin_base_url . '/report_edit/' . $user_latest_problem->id; } -- cgit v1.2.3 From 2e9e82dfb57b972d1351ecef86687a0d067598b1 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Wed, 27 Nov 2019 20:15:33 +0000 Subject: Switch to default-escaped in email templates. We add a way to process a template with no auto-escaping, that can be used for the text parts of emails, and mark various HTML output as safe. --- perllib/FixMyStreet/App/Controller/Develop.pm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'perllib/FixMyStreet/App/Controller/Develop.pm') diff --git a/perllib/FixMyStreet/App/Controller/Develop.pm b/perllib/FixMyStreet/App/Controller/Develop.pm index d2457a3d7..6a1c10b22 100755 --- a/perllib/FixMyStreet/App/Controller/Develop.pm +++ b/perllib/FixMyStreet/App/Controller/Develop.pm @@ -142,6 +142,7 @@ sub email_previewer : Path('/_dev/email') : Args(1) { # Look through the Email::MIME email for the text/html part, and any inline # images. Turn the images into data: URIs. + my $text = ''; my $html = ''; my %images; $email->walk_parts(sub { @@ -151,6 +152,8 @@ sub email_previewer : Path('/_dev/email') : Args(1) { (my $cid = $part->header('Content-ID')) =~ s/[<>]//g; (my $ct = $part->content_type) =~ s/;.*//; $images{$cid} = "$ct;base64," . $part->body_raw; + } elsif ($part->content_type =~ m[text/plain]i) { + $text = $part->body_str; } elsif ($part->content_type =~ m[text/html]i) { $html = $part->body_str; } @@ -160,7 +163,12 @@ sub email_previewer : Path('/_dev/email') : Args(1) { $html =~ s/cid:([^"]*)/data:$images{$1}/g; } - $c->response->body($html); + if ($c->get_param('text')) { + $c->response->header(Content_type => 'text/plain'); + $c->response->body($text); + } else { + $c->response->body($html); + } } =item problem_confirm_previewer -- cgit v1.2.3