aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2013-05-21 13:02:38 +0100
committerMatthew Somerville <matthew@mysociety.org>2013-05-21 13:02:38 +0100
commit83f861e0c3abc9e030256b149a836b30f4653e18 (patch)
treee5fa238753a630881d7e7d4b16a2b13045a95fec
parent405e702f0b7f1b99946aea0d8ad028c53e5db53a (diff)
Redirect away from incorrect council pages on council sites.
-rw-r--r--notes/cobranding.txt1
-rw-r--r--perllib/FixMyStreet/App/Controller/Reports.pm5
-rw-r--r--perllib/FixMyStreet/Cobrand/Default.pm4
-rw-r--r--perllib/FixMyStreet/Cobrand/UK.pm1
-rw-r--r--perllib/FixMyStreet/Cobrand/UKCouncils.pm20
5 files changed, 26 insertions, 5 deletions
diff --git a/notes/cobranding.txt b/notes/cobranding.txt
index bb6d8f195..3e902abc8 100644
--- a/notes/cobranding.txt
+++ b/notes/cobranding.txt
@@ -15,7 +15,6 @@ NB: this is moderately specific to producing cobrands for UK councils
enter_postcode_text
area_check
base_url
- all_councils_report should return 0
disambiguate_location - see below for details on this
2: create a web/cobrands/examplecom folder and put custom css/images/js in here
diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm
index deb14ea77..7e0cccc7b 100644
--- a/perllib/FixMyStreet/App/Controller/Reports.pm
+++ b/perllib/FixMyStreet/App/Controller/Reports.pm
@@ -47,6 +47,11 @@ sub index : Path : Args(0) {
return 1;
}
+ if ( my $body = $c->cobrand->all_reports_single_body ) {
+ $c->stash->{body} = $body;
+ $c->detach( 'redirect_body' );
+ }
+
# Fetch all areas of the types we're interested in
my @bodies = $c->model('DB::Body')->all;
@bodies = sort { strcoll($a->name, $b->name) } @bodies;
diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm
index 978968ba6..a745088a6 100644
--- a/perllib/FixMyStreet/Cobrand/Default.pm
+++ b/perllib/FixMyStreet/Cobrand/Default.pm
@@ -488,14 +488,14 @@ AREAS pass any extra checks. CONTEXT is where we are on the site.
sub area_check { return ( 1, '' ); }
-=head2 all_councils_report
+=head2 all_reports_single_body
Return a boolean indicating whether the cobrand displays a report of all
councils
=cut
-sub all_councils_report { 1 }
+sub all_reports_single_body { 0 }
=head2 ask_ever_reported
diff --git a/perllib/FixMyStreet/Cobrand/UK.pm b/perllib/FixMyStreet/Cobrand/UK.pm
index ff613ffa8..854eadfe5 100644
--- a/perllib/FixMyStreet/Cobrand/UK.pm
+++ b/perllib/FixMyStreet/Cobrand/UK.pm
@@ -192,6 +192,7 @@ sub reports_body_check {
}
}
+ return;
}
sub council_rss_alert_options {
diff --git a/perllib/FixMyStreet/Cobrand/UKCouncils.pm b/perllib/FixMyStreet/Cobrand/UKCouncils.pm
index 354b1b72a..5531ed048 100644
--- a/perllib/FixMyStreet/Cobrand/UKCouncils.pm
+++ b/perllib/FixMyStreet/Cobrand/UKCouncils.pm
@@ -76,8 +76,24 @@ Please visit <a href=\"$url\">the main FixMyStreet site</a>.";
}
# All reports page only has the one council.
-sub all_councils_report {
- return 0;
+sub all_reports_single_body {
+ my $self = shift;
+ return { name => $self->council_name };
+}
+
+sub reports_body_check {
+ my ( $self, $c, $code ) = @_;
+
+ # First, the normal UK checks
+ $self->SUPER::find_closest( $c, $code );
+
+ # Now we want to make sure we're only on our page.
+ unless ( $self->council_name =~ /^\Q$code\E/ ) {
+ $c->res->redirect( 'http://www.fixmystreet.com' . $c->req->uri->path_query, 301 );
+ $c->detach();
+ }
+
+ return;
}
sub recent_photos {