diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2018-03-05 14:33:35 +0000 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2018-03-06 17:24:12 +0000 |
commit | fbca1099ba2b83d0f0bedf19d953a50282cc7c21 (patch) | |
tree | e963a2c3c6f73a6b7864fdb849a3ff7e02bb3fc0 | |
parent | e9dfb010c6ad7fdde8dd897455f7cbffde0d9de6 (diff) |
Remove category_options_copy.
This variable existed to keep a copy of the categories before it was
overwritten by report_edit_location (if a bad location was provided)
calling the variable setup functions again. But really, the function
shouldn't be overwriting the stash, it's only testing the lookup and
so should restore the stash at its end.
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 8 | ||||
-rw-r--r-- | templates/web/base/admin/report-category.html | 4 | ||||
-rw-r--r-- | templates/web/base/report/_inspect.html | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 253840082..795a7a3d8 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -1008,11 +1008,18 @@ sub report_edit_location : Private { my ($lat, $lon) = map { Utils::truncate_coordinate($_) } $problem->latitude, $problem->longitude; if ( $c->stash->{latitude} != $lat || $c->stash->{longitude} != $lon ) { + # The two actions below change the stash, setting things up for e.g. a + # new report. But here we're only doing it in order to check the found + # bodies match; we don't want to overwrite the existing report data if + # this lookup is bad. So let's save the stash and restore it after the + # comparison. + my $safe_stash = { %{$c->stash} }; $c->forward('/council/load_and_check_areas', []); $c->forward('/report/new/setup_categories_and_bodies'); my %allowed_bodies = map { $_ => 1 } @{$problem->bodies_str_ids}; my @new_bodies = @{$c->stash->{bodies_to_list}}; my $bodies_match = grep { exists( $allowed_bodies{$_} ) } @new_bodies; + $c->stash($safe_stash); return unless $bodies_match; $problem->latitude($c->stash->{latitude}); $problem->longitude($c->stash->{longitude}); @@ -1035,7 +1042,6 @@ sub categories_for_point : Private { # Remove the "Pick a category" option shift @{$c->stash->{category_options}} if @{$c->stash->{category_options}}; - $c->stash->{category_options_copy} = $c->stash->{category_options}; $c->stash->{categories_hash} = { map { $_->{name} => 1 } @{$c->stash->{category_options}} }; } diff --git a/templates/web/base/admin/report-category.html b/templates/web/base/admin/report-category.html index a2290089b..2d9ffcdb1 100644 --- a/templates/web/base/admin/report-category.html +++ b/templates/web/base/admin/report-category.html @@ -4,9 +4,9 @@ <option selected value="[% problem.category | html %]">[% (problem.category_display OR '-') | html %]</option> </optgroup> [% END %] - [% IF category_options_copy.size %] + [% IF category_options.size %] <optgroup label="[% loc('Available categories') %]"> - [% FOREACH cat IN category_options_copy %] + [% FOREACH cat IN category_options %] <option value="[% cat.name | html %]"[% ' selected' IF problem.category == cat.name %]>[% cat.value | html %]</option> [% END %] </optgroup> diff --git a/templates/web/base/report/_inspect.html b/templates/web/base/report/_inspect.html index 111e71283..6923dbb1a 100644 --- a/templates/web/base/report/_inspect.html +++ b/templates/web/base/report/_inspect.html @@ -58,7 +58,7 @@ [% INCLUDE 'admin/report-category.html' %] </p> - [% FOREACH category IN category_options_copy %] + [% FOREACH category IN category_options %] [% cat_name = category.name; cat_prefix = cat_name | lower | replace('[^a-z]', ''); cat_prefix = "category_" _ cat_prefix _ "_" %] |