aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2017-11-23 14:01:32 +0000
committerStruan Donald <struan@exo.org.uk>2017-11-28 11:00:53 +0000
commita1d8db72e57fe74c02ea7da812ea393ceb9b36c6 (patch)
tree7146ff60d2258cda70f6518b62112f491f414573
parent068dc61ef58b7eab521c9a009f0554fdb98512ed (diff)
display council contacts on council dashboard
Display a list of the email addresses used to contact the council on the council dashboard. Does not display emails if the council has an integration, rejects FMS reports or is currently turned off. Fixes mysociety/fixmystreetforcouncils#941
-rw-r--r--perllib/FixMyStreet/Cobrand/FixMyStreet.pm3
-rw-r--r--t/cobrand/fixmystreet.t26
-rwxr-xr-xtemplates/web/base/reports/index.html54
-rw-r--r--web/cobrands/sass/_dashboard.scss22
4 files changed, 100 insertions, 5 deletions
diff --git a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
index ed9e5bdea..2153ca33b 100644
--- a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
+++ b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
@@ -80,6 +80,9 @@ sub council_dashboard_hook {
$c->detach;
}
+ $c->forward('/admin/fetch_contacts');
+ $c->stash->{display_contacts} = 1;
+
return if $c->user->is_superuser;
my $body = $c->user->from_body || _user_to_body($c);
diff --git a/t/cobrand/fixmystreet.t b/t/cobrand/fixmystreet.t
index eda93e187..4d76e43c6 100644
--- a/t/cobrand/fixmystreet.t
+++ b/t/cobrand/fixmystreet.t
@@ -5,6 +5,12 @@ my $mech = FixMyStreet::TestMech->new;
my $body = $mech->create_body_ok( 2514, 'Birmingham' );
+my $contact = $mech->create_contact_ok(
+ body_id => $body->id,
+ category => 'Traffic lights',
+ email => 'lights@example.com'
+);
+
my $data;
FixMyStreet::override_config {
MAPIT_URL => 'http://mapit.uk/',
@@ -39,7 +45,27 @@ FixMyStreet::override_config {
$mech->get_ok('/about/council-dashboard');
is $mech->uri->path, '/reports/Birmingham/summary';
$mech->content_contains('Top 5 wards');
+ $mech->content_contains('Where we send Birmingham');
+ $mech->content_contains('lights@example.com');
+
+ $body->send_method('Open311');
+ $body->update();
+ $mech->get_ok('/about/council-dashboard');
+ $mech->content_contains('Reports to Birmingham are currently sent directly');
+
+ $body->send_method('Refused');
+ $body->update();
+ $mech->get_ok('/about/council-dashboard');
+ $mech->content_contains('Birmingham currently does not accept');
+
+ $body->send_method('Noop');
+ $body->update();
+ $mech->get_ok('/about/council-dashboard');
+ $mech->content_contains('Reports are currently not being sent');
+ $mech->log_out_ok();
+ $mech->get_ok('/reports');
+ $mech->content_lacks('Where we send Birmingham');
};
END {
diff --git a/templates/web/base/reports/index.html b/templates/web/base/reports/index.html
index 70f4b3929..ff812f113 100755
--- a/templates/web/base/reports/index.html
+++ b/templates/web/base/reports/index.html
@@ -139,4 +139,58 @@
</div>
</div>
+[% IF display_contacts %]
+<div class="dashboard-row">
+ <div class="dashboard-item dashboard-item--12">
+ <h2 class="dashboard-subheading">[% tprintf( loc('Where we send %s reports'), body.name ) %]</h2>
+ [% IF body.send_method == 'Refused' %]
+ <p>
+ [% tprintf( loc('%s currently does not accept reports from FixMyStreet.'), body.name) %]
+ </p>
+
+ <p>
+ [% loc('If you&rsquo;d like to discuss this then <a href="/contact">get in touch</a>.') %]
+ </p>
+ [% ELSIF body.send_method == 'Noop' %]
+ <p>
+ [% tprintf( loc('Reports are currently not being sent to %s.'), body.name ) %]
+ </p>
+ [% ELSIF body.send_method != 'Email' AND body.send_method != '' %]
+ <p>
+ [% tprintf( loc('Reports to %s are currently sent directly into backend services.'), body.name) %]
+ </p>
+ [% ELSE %]
+ <p>
+ [% loc('We currently send all reports to the email addresses below.') %]
+ </p>
+
+ <p>
+ [% loc('Did you know that if you used the approved open standard Open311 you could send reports directly into your own backend services &ndash; and get much more control over what additional information you request?') %]
+ </p>
+
+ <p>
+ [% loc('If that&rsquo;s new to you, <a href="https://www.mysociety.org/2013/01/10/open311-introduced/">take a look at our simple Open311 primer</a> to see what you need to do to get up and running in a few days.') %]
+ </p>
+
+ <p>
+ [% loc('If you would like to change either the categories or the contact emails below then <a href="/contact">get in touch</a>.') %]
+ <p>
+ <table class="dashboard-contacts-table">
+ <tr>
+ <th>[% loc('Category') %]</th>
+ <th>[% loc('Contact') %]</th>
+ </tr>
+ [% WHILE ( cat = live_contacts.next ) %]
+ <tr>
+ <td class="contact-category"><a href="[% c.uri_for( 'body', body_id, cat.category ) %]">[% cat.category_display | html %]</a>
+ </td>
+ <td>[% cat.email | html %]</td>
+ </tr>
+ [% END %]
+ </table>
+ [% END %]
+ </div>
+</div>
+[% END %]
+
[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/web/cobrands/sass/_dashboard.scss b/web/cobrands/sass/_dashboard.scss
index fe35df8e3..396d53d56 100644
--- a/web/cobrands/sass/_dashboard.scss
+++ b/web/cobrands/sass/_dashboard.scss
@@ -184,15 +184,12 @@
}
}
-.dashboard-ranking-table {
+.dashboard-ranking-table,
+.dashboard-contacts-table {
width: 100%;
td {
padding: 0.4em 0.8em;
-
- &:last-child {
- text-align: $right;
- }
}
tbody tr:nth-child(odd) {
@@ -205,3 +202,18 @@
font-weight: bold;
}
}
+
+.dashboard-ranking-table {
+ td {
+ &:last-child {
+ text-align: $right;
+ }
+ }
+}
+
+.dashboard-contacts-table {
+ th {
+ text-align: $left;
+ padding: 0.4em 0.8em;
+ }
+}