aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2018-03-05 14:33:35 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-03-06 17:24:12 +0000
commitfbca1099ba2b83d0f0bedf19d953a50282cc7c21 (patch)
treee963a2c3c6f73a6b7864fdb849a3ff7e02bb3fc0
parente9dfb010c6ad7fdde8dd897455f7cbffde0d9de6 (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.pm8
-rw-r--r--templates/web/base/admin/report-category.html4
-rw-r--r--templates/web/base/report/_inspect.html2
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 _ "_" %]