diff options
author | Struan Donald <struan@exo.org.uk> | 2019-09-19 18:12:46 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2019-09-27 17:43:38 +0100 |
commit | 4668f81a8242e6c00bb68ff8d85b05ab1bcdec8d (patch) | |
tree | f9b8b5a5a3c15ea96b1d9de6a0cce5a83ee7b5a7 | |
parent | 6b01232a4108accdb4bc5f2cbca1044c1b317972 (diff) |
[IsleOfWight] limit filter category on national around page
Only display non triage categories on this because getting the category
expansion to work if we use the triage categories isn't in place and may
not be. This is because when we get the list of reports using
/around/ajax there's no way to know which body it is for so we don't
know how to expand a triage category to the list of 'child' categories.
So, just display the non triage ones for now.
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Around.pm | 7 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/FixMyStreet.pm | 14 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/IsleOfWight.pm | 9 |
3 files changed, 21 insertions, 9 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm index cebc4ed85..ebb3d4839 100644 --- a/perllib/FixMyStreet/App/Controller/Around.pm +++ b/perllib/FixMyStreet/App/Controller/Around.pm @@ -234,11 +234,12 @@ sub check_and_stash_category : Private { my @list_of_names = map { $_->name } values %bodies; my $csv = Text::CSV->new(); $csv->combine(@list_of_names); + $c->stash->{bodies} = \@bodies; $c->{stash}->{list_of_names_as_string} = $csv->string; my $where = { body_id => [ keys %bodies ], }; - my $cobrand_where = $c->cobrand->call_hook('munge_category_where', $where ); + my $cobrand_where = $c->cobrand->call_hook('munge_around_category_where', $where ); if ( $cobrand_where ) { $where = $cobrand_where; } @@ -257,7 +258,7 @@ sub check_and_stash_category : Private { my $categories = [ $c->get_param_list('filter_category', 1) ]; my %valid_categories = map { $_ => 1 } grep { $_ && $categories_mapped{$_} } @$categories; $c->stash->{filter_category} = \%valid_categories; - $c->cobrand->call_hook('munge_filter_category'); + $c->cobrand->call_hook('munge_around_filter_category_list'); } sub map_features : Private { @@ -318,7 +319,7 @@ sub ajax : Path('/ajax') { my %valid_categories = map { $_ => 1 } $c->get_param_list('filter_category', 1); $c->stash->{filter_category} = \%valid_categories; - $c->cobrand->call_hook('munge_filter_category'); + $c->cobrand->call_hook('munge_around_filter_category_list'); $c->forward('map_features', [ { bbox => $c->stash->{bbox} } ]); $c->forward('/reports/ajax', [ 'around/on_map_list_items.html' ]); diff --git a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm index bfa991b09..705b623d4 100644 --- a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm +++ b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm @@ -38,6 +38,20 @@ sub restriction { return {}; } +sub munge_around_category_where { + my ($self, $where) = @_; + + my $user = $self->{c}->user; + my @iow = grep { $_->name eq 'Isle of Wight Council' } @{ $self->{c}->stash->{bodies} }; + return unless @iow; + + # display all the categories on Isle of Wight at the moment as there's no way to + # do the expand bit later as we fetch it using ajax which uses a bounding box so + # can't determine the body + $where->{send_method} = [ { '!=' => 'Triage' }, undef ]; + return $where; +} + sub munge_reports_categories_list { my ($self, $categories) = @_; diff --git a/perllib/FixMyStreet/Cobrand/IsleOfWight.pm b/perllib/FixMyStreet/Cobrand/IsleOfWight.pm index dd4b936d7..b43802d92 100644 --- a/perllib/FixMyStreet/Cobrand/IsleOfWight.pm +++ b/perllib/FixMyStreet/Cobrand/IsleOfWight.pm @@ -123,16 +123,13 @@ sub munge_category_list { @$options = grep { my $c = ($_->{category} || $_->category); $c =~ 'Pick a category' || $seen->{ $c } } @$options; } -sub munge_category_where { +sub munge_around_category_where { my ($self, $where) = @_; my $user = $self->{c}->user; my $b = $self->{c}->model('DB::Body')->for_areas( $self->council_area_id )->first; if ( $user && ( $user->is_superuser || $user->belongs_to_body( $b->id ) ) ) { - $where = { - body_id => $where->{body_id}, - send_method => [ { '!=' => 'Triage' }, undef ], - }; + $where->{send_method} = [ { '!=' => 'Triage' }, undef ]; return $where; } @@ -152,7 +149,7 @@ sub munge_load_and_group_problems { return $problems; } -sub munge_filter_category { +sub munge_around_filter_category_list { my $self = shift; my $c = $self->{c}; |