aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
authorM Somerville <matthew-github@dracos.co.uk>2020-10-01 11:34:22 +0100
committerM Somerville <matthew-github@dracos.co.uk>2020-10-01 11:35:21 +0100
commit598bb52cb46aaca98e85328d34b58bbcb7581d71 (patch)
tree80999d1c192a4f98c601ce17bc7c6e50da13057d /perllib/FixMyStreet
parent57f4048942a8caaf702f47373fabdfa31932659e (diff)
Move some templating functions to ::Template.
Most of the functions called by them are in that module, so seems easiest to keep them together, plus this fixes lack of Web module import in the Template module.
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/App/View/Web.pm39
-rw-r--r--perllib/FixMyStreet/Cobrand/Zurich.pm3
-rw-r--r--perllib/FixMyStreet/Template.pm50
3 files changed, 53 insertions, 39 deletions
diff --git a/perllib/FixMyStreet/App/View/Web.pm b/perllib/FixMyStreet/App/View/Web.pm
index 41444fdd4..8d3d53d0d 100644
--- a/perllib/FixMyStreet/App/View/Web.pm
+++ b/perllib/FixMyStreet/App/View/Web.pm
@@ -98,16 +98,7 @@ Add some links to some text (and thus HTML-escapes the other text).
sub add_links {
my $text = shift;
- $text = FixMyStreet::Template::conditional_escape($text);
- $text =~ s/\r//g;
- $text =~ s{(?<!["'])(https?://)([^\s]+)}{"<a href=\"$1$2\">$1" . _space_slash($2) . '</a>'}ge;
- return FixMyStreet::Template::SafeString->new($text);
-}
-
-sub _space_slash {
- my $t = shift;
- $t =~ s{/(?!$)}{/ }g;
- return $t;
+ return FixMyStreet::Template::add_links($text);
}
=head2 staff_html_markup_factory
@@ -126,36 +117,10 @@ sub staff_html_markup_factory {
return sub {
my $text = shift;
- return _staff_html_markup($text, $staff);
+ return FixMyStreet::Template::_staff_html_markup($text, $staff);
}
}
-sub _staff_html_markup {
- my ( $text, $staff ) = @_;
- unless ($staff) {
- return FixMyStreet::Template::html_paragraph(add_links($text));
- }
-
- $text = FixMyStreet::Template::sanitize($text);
-
- # Apply Markdown-style italics
- $text =~ s{\*(\S.*?\S)\*}{<i>$1</i>};
-
- # Mark safe so add_links doesn't escape everything.
- $text = FixMyStreet::Template::SafeString->new($text);
-
- $text = add_links($text);
-
- # If the update already has block-level elements then don't wrap
- # individual lines in <p> elements, as we assume the user knows what
- # they're doing.
- unless ($text =~ /<(p|ol|ul)>/) {
- $text = FixMyStreet::Template::html_paragraph($text);
- }
-
- return $text;
-}
-
=head2 escape_js
Used to escape strings that are going to be put inside JavaScript.
diff --git a/perllib/FixMyStreet/Cobrand/Zurich.pm b/perllib/FixMyStreet/Cobrand/Zurich.pm
index 4b893af40..c7b9f70ee 100644
--- a/perllib/FixMyStreet/Cobrand/Zurich.pm
+++ b/perllib/FixMyStreet/Cobrand/Zurich.pm
@@ -10,6 +10,7 @@ use DateTime::Format::Pg;
use Try::Tiny;
use FixMyStreet::Geocode::Zurich;
+use FixMyStreet::Template;
use FixMyStreet::WorkingDays;
use strict;
@@ -178,7 +179,7 @@ sub updates_as_hashref {
$hashref->{update_pp} = $self->prettify_dt( $problem->lastupdate );
if ( $problem->state ne 'external' ) {
- $hashref->{details} = FixMyStreet::App::View::Web::add_links(
+ $hashref->{details} = FixMyStreet::Template::add_links(
$problem->get_extra_metadata('public_response') || '' );
} else {
$hashref->{details} = sprintf( _('Assigned to %s'), $problem->body->name );
diff --git a/perllib/FixMyStreet/Template.pm b/perllib/FixMyStreet/Template.pm
index 35efcc1cf..bc087de9a 100644
--- a/perllib/FixMyStreet/Template.pm
+++ b/perllib/FixMyStreet/Template.pm
@@ -238,7 +238,55 @@ sub email_sanitize_html : Fn('email_sanitize_html') {
my $staff = $extra->{is_superuser} || $extra->{is_body_user};
- return FixMyStreet::App::View::Web::_staff_html_markup($text, $staff);
+ return _staff_html_markup($text, $staff);
+}
+
+sub _staff_html_markup {
+ my ( $text, $staff ) = @_;
+ unless ($staff) {
+ return html_paragraph(add_links($text));
+ }
+
+ $text = sanitize($text);
+
+ # Apply Markdown-style italics
+ $text =~ s{\*(\S.*?\S)\*}{<i>$1</i>};
+
+ # Mark safe so add_links doesn't escape everything.
+ $text = FixMyStreet::Template::SafeString->new($text);
+
+ $text = add_links($text);
+
+ # If the update already has block-level elements then don't wrap
+ # individual lines in <p> elements, as we assume the user knows what
+ # they're doing.
+ unless ($text =~ /<(p|ol|ul)>/) {
+ $text = html_paragraph($text);
+ }
+
+ return $text;
+}
+
+=head2 add_links
+
+ [% text | add_links | html_para %]
+
+Add some links to some text (and thus HTML-escapes the other text).
+
+=cut
+
+sub add_links {
+ my $text = shift;
+ $text = conditional_escape($text);
+ $text =~ s/\r//g;
+ $text =~ s{(?<!["'])(https?://)([^\s]+)}{"<a href=\"$1$2\">$1" . _space_slash($2) . '</a>'}ge;
+ return FixMyStreet::Template::SafeString->new($text);
+}
+
+sub _space_slash {
+ my $t = shift;
+ $t =~ s{/(?!$)}{/ }g;
+ return $t;
}
1;