aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
authorHakim Cassimally <hakim@mysociety.org>2015-03-13 12:27:17 +0000
committerHakim Cassimally <hakim@mysociety.org>2015-03-20 16:20:59 +0000
commit10b3a899af00205e46e177509a0b4c13bf746299 (patch)
tree7ab16ee9ebbf4c0494baa93923bca7d747bb1b51 /perllib
parentafe94a2eff801b769e55d5527a1367406810958a (diff)
[Harrogate] show warning banner for NYCC categories
Harrogate asked for NYCC managed issues to be linked to that council's website. We don't prevent the issue from being logged, but do show a warning banner. As this is at Harrogate's request, we only do this for the Harrogate cobrand, not the whole site, using a new cobrand hook `munge_category_list` Unfortunately, categories are currently passed to the template as plain text, e.g. not structured data. As a simple implementation, we append "( NYCC)" to the appropriate category names. JS could then strip the names back in future, if required (though we're not doing this.) Instead we add a jQuery hook to show the most appropriate link provided. See https://github.com/mysociety/FixMyStreet-Commercial/issues/703
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm3
-rw-r--r--perllib/FixMyStreet/Cobrand/Harrogate.pm36
2 files changed, 39 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index ee643a03a..b5a6745b2 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -651,6 +651,9 @@ sub setup_categories_and_bodies : Private {
}
}
+ $c->cobrand->munge_category_list(\@category_options, \@contacts, \%category_extras)
+ if $c->cobrand->can('munge_category_list');
+
if ($c->cobrand->can('hidden_categories')) {
my %hidden_categories = map { $_ => 1 }
$c->cobrand->hidden_categories;
diff --git a/perllib/FixMyStreet/Cobrand/Harrogate.pm b/perllib/FixMyStreet/Cobrand/Harrogate.pm
index 8c0639ee7..4dc041c89 100644
--- a/perllib/FixMyStreet/Cobrand/Harrogate.pm
+++ b/perllib/FixMyStreet/Cobrand/Harrogate.pm
@@ -242,5 +242,41 @@ sub send_questionnaires {
return 0;
}
+sub munge_category_list {
+ my ($self, $categories_ref, $contacts_ref, $extras_ref) = @_;
+
+ # we want to know which contacts *only* belong to NYCC
+ # that's because for shared responsibility, we don't expect
+ # the user to have to figure out which authority to contact.
+
+ # so we start building up the list of both
+ my (%harrogate_contacts, %nycc_contacts);
+
+ my $harrogate_id = $self->council_id; # XXX: note reference to council_id as body id!
+ for my $contact (@$contacts_ref) {
+ my $category = $contact->category;
+ if ($contact->body_id == $harrogate_id) {
+ $harrogate_contacts{$category} = 1;
+ }
+ else {
+ $nycc_contacts{$category}++;
+ }
+ }
+
+ # and then remove any that also have Harrogate involvement
+ delete $nycc_contacts{$_} for keys %harrogate_contacts;
+
+ # here, we simply *mark* the text with (NYCC) at the end, and
+ # the rest will get done in the template with javascript
+ my @categories = map {
+ $nycc_contacts{$_} ?
+ "$_ (NYCC)"
+ : $_
+ } @$categories_ref;
+
+ # replace the entire list with this transformed one
+ @$categories_ref = @categories;
+}
+
1;