aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--conf/general.yml-example2
-rw-r--r--perllib/FixMyStreet/App.pm2
-rw-r--r--perllib/FixMyStreet/App/Controller/Offline.pm4
-rw-r--r--perllib/FixMyStreet/Cobrand/Angus.pm2
-rw-r--r--perllib/FixMyStreet/Map.pm4
-rw-r--r--perllib/FixMyStreet/Map/Angus.pm18
-rw-r--r--perllib/FixMyStreet/Map/Bing.pm6
-rw-r--r--perllib/FixMyStreet/Map/Bristol.pm7
-rw-r--r--perllib/FixMyStreet/Map/Bromley.pm8
-rw-r--r--perllib/FixMyStreet/Map/FMS.pm7
-rw-r--r--perllib/FixMyStreet/Map/Google.pm5
-rw-r--r--perllib/FixMyStreet/Map/GoogleOL.pm12
-rw-r--r--perllib/FixMyStreet/Map/OSM.pm6
-rw-r--r--perllib/FixMyStreet/Map/OSM/MapQuest.pm2
-rw-r--r--perllib/FixMyStreet/Map/OSM/StreetView.pm6
-rw-r--r--perllib/FixMyStreet/Map/OSM/TonerLite.pm7
-rw-r--r--perllib/FixMyStreet/Map/Zurich.pm7
-rw-r--r--t/map/tests.t29
-rw-r--r--templates/web/angus/maps/fms.html11
-rw-r--r--templates/web/base/admin/report_edit.html4
-rw-r--r--templates/web/base/alert/index.html3
-rw-r--r--templates/web/base/around/index.html3
-rw-r--r--templates/web/base/around/lookup_by_ref.html3
-rw-r--r--templates/web/base/common_header_tags.html18
-rw-r--r--templates/web/base/common_scripts.html77
-rw-r--r--templates/web/base/front/javascript.html12
-rw-r--r--templates/web/base/header.html5
-rw-r--r--templates/web/base/index.html5
-rw-r--r--templates/web/base/maps/bing.html8
-rw-r--r--templates/web/base/maps/fms.html6
-rw-r--r--templates/web/base/maps/google-ol.html14
-rw-r--r--templates/web/base/maps/google.html6
-rw-r--r--templates/web/base/maps/mapquest-attribution.html8
-rw-r--r--templates/web/base/maps/osm-streetview.html8
-rw-r--r--templates/web/base/maps/osm-toner-lite.html9
-rw-r--r--templates/web/base/maps/osm.html5
-rw-r--r--templates/web/base/report/_inspect.html2
-rw-r--r--templates/web/base/report/photo-js.html3
-rw-r--r--templates/web/bristol/maps/bristol.html9
-rw-r--r--templates/web/bromley/maps/bromley.html10
-rw-r--r--templates/web/fixmystreet.com/about/professional.html720
-rw-r--r--templates/web/fixmystreet.com/footer_extra_js.html21
-rw-r--r--templates/web/fixmystreet.com/front/javascript.html12
-rw-r--r--templates/web/fixmystreet.com/header_extra.html12
-rw-r--r--templates/web/zurich/admin/report_edit-sdm.html4
-rw-r--r--templates/web/zurich/admin/report_edit.html4
-rw-r--r--templates/web/zurich/maps/zurich.html10
-rwxr-xr-xtemplates/web/zurich/reports/index.html4
-rw-r--r--web/cobrands/fixmystreet-uk-councils/js.js3
-rw-r--r--web/cobrands/fixmystreet.com/fmsforcouncils.scss716
-rw-r--r--web/cobrands/fixmystreet.com/front.js38
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/all-yellow.jpgbin55211 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.pngbin2177 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.pngbin2246 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/barnet.jpgbin35681 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.pngbin3070 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/bristol.jpgbin33251 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.pngbin2640 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.pngbin267724 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/download-icon.pngbin1135 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.pngbin2892 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.pngbin2460 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/hart.pngbin105483 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/highway.jpgbin51113 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/iphone.pngbin96848 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.pngbin3194 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/responsive.pngbin65329 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpgbin48091 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.pngbin3058 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/street-crossing.jpgbin30623 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/street-scene.jpgbin69991 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/street-sunset.jpgbin35518 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/test-device-mockup.pngbin1387896 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.pngbin5303 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpgbin87063 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.pngbin2587 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/zurich.jpgbin42037 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/tile-y.jpgbin44538 -> 26539 bytes
-rw-r--r--web/cobrands/fixmystreet.com/js.js73
-rw-r--r--web/cobrands/fixmystreet.com/layout.scss3
-rw-r--r--web/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js13
-rw-r--r--web/cobrands/fixmystreet/admin.js2
-rw-r--r--web/cobrands/fixmystreet/fixmystreet.js57
-rw-r--r--web/cobrands/fixmystreet/front.js12
-rw-r--r--web/cobrands/fixmystreet/prefetch-polyfill.js28
-rw-r--r--web/cobrands/fixmystreet/staff.js3
-rw-r--r--web/cobrands/sass/_base.scss10
-rw-r--r--web/cobrands/sass/_layout.scss3
-rw-r--r--web/js/front.js13
-rw-r--r--web/js/geolocation.js42
-rw-r--r--web/vendor/yepnope.js1
111 files changed, 397 insertions, 1790 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d5b4e22ca..1d68459a5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@
- SVG assets for core elements like button icons and map controls #1888
- Remove unneeded 2x PNG fallback images.
- Individual cobrands can disable social login #1890
+ - Improve performance of various pages, especially front. #1903
- Bugfixes
- Shortlist menu item always remains a link #1855
- Fix encoded entities in RSS output. #1859
diff --git a/conf/general.yml-example b/conf/general.yml-example
index 72b5fbaa3..d205061ef 100644
--- a/conf/general.yml-example
+++ b/conf/general.yml-example
@@ -48,11 +48,9 @@ STAGING_SITE: 1
# this to 1 if you want a staging site to route reports as normal.
# - skip_checks: Manual testing of multiple cobrands can be made easier by
# skipping some checks they have in them, if this variable is set.
-# - enable_appcache: Whether the appcache should be active.
STAGING_FLAGS:
send_reports: 0
skip_checks: 0
- enable_appcache: 0
# What to use as front page/alert example places placeholder
# Defaults to High Street, Main Street
diff --git a/perllib/FixMyStreet/App.pm b/perllib/FixMyStreet/App.pm
index a0477ca40..1eb197e38 100644
--- a/perllib/FixMyStreet/App.pm
+++ b/perllib/FixMyStreet/App.pm
@@ -212,6 +212,8 @@ sub setup_request {
Memcached::set_namespace( FixMyStreet->config('FMS_DB_NAME') . ":" );
FixMyStreet::Map::set_map_class( $cobrand->map_type || $c->get_param('map_override') );
+ # All pages need this, either loading it or prefetching it
+ $c->stash->{map_js} = FixMyStreet::Map::map_javascript();
unless ( FixMyStreet->config('MAPIT_URL') ) {
my $port = $c->req->uri->port;
diff --git a/perllib/FixMyStreet/App/Controller/Offline.pm b/perllib/FixMyStreet/App/Controller/Offline.pm
index dceccc81f..7b17bb569 100644
--- a/perllib/FixMyStreet/App/Controller/Offline.pm
+++ b/perllib/FixMyStreet/App/Controller/Offline.pm
@@ -11,7 +11,6 @@ FixMyStreet::App::Controller::Offline - Catalyst Controller
=head1 DESCRIPTION
Offline pages Catalyst Controller.
-On staging site, appcache only for people who want it.
=head1 METHODS
@@ -19,8 +18,7 @@ On staging site, appcache only for people who want it.
sub have_appcache : Private {
my ($self, $c) = @_;
- return $c->user_exists && $c->user->has_body_permission_to('planned_reports')
- && !FixMyStreet->staging_flag('enable_appcache', 0);
+ return $c->user_exists && $c->user->has_body_permission_to('planned_reports');
}
sub manifest : Path("/offline/appcache.manifest") {
diff --git a/perllib/FixMyStreet/Cobrand/Angus.pm b/perllib/FixMyStreet/Cobrand/Angus.pm
index 51a3da56a..056101574 100644
--- a/perllib/FixMyStreet/Cobrand/Angus.pm
+++ b/perllib/FixMyStreet/Cobrand/Angus.pm
@@ -24,6 +24,8 @@ sub example_places {
return ( 'DD8 3AP', "Canmore Street" );
}
+sub map_type { 'Angus' }
+
sub default_show_name { 0 }
sub disambiguate_location {
diff --git a/perllib/FixMyStreet/Map.pm b/perllib/FixMyStreet/Map.pm
index e0e3c3128..0c75ab891 100644
--- a/perllib/FixMyStreet/Map.pm
+++ b/perllib/FixMyStreet/Map.pm
@@ -67,6 +67,10 @@ sub display_map {
return $map_class->display_map(@_);
}
+sub map_javascript {
+ $map_class->map_javascript;
+}
+
sub map_features {
my ( $c, %p ) = @_;
diff --git a/perllib/FixMyStreet/Map/Angus.pm b/perllib/FixMyStreet/Map/Angus.pm
new file mode 100644
index 000000000..98f5373c1
--- /dev/null
+++ b/perllib/FixMyStreet/Map/Angus.pm
@@ -0,0 +1,18 @@
+# FixMyStreet:Map::Angus
+# More JavaScript, for street assets
+
+package FixMyStreet::Map::Angus;
+use base 'FixMyStreet::Map::FMS';
+
+use strict;
+
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.angus.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-bing-ol.js',
+ '/js/map-fms.js',
+ '/cobrands/fixmystreet/assets.js',
+ '/cobrands/angus/js.js',
+] }
+
+1;
diff --git a/perllib/FixMyStreet/Map/Bing.pm b/perllib/FixMyStreet/Map/Bing.pm
index e62406349..68c9fea32 100644
--- a/perllib/FixMyStreet/Map/Bing.pm
+++ b/perllib/FixMyStreet/Map/Bing.pm
@@ -8,7 +8,11 @@ use strict;
sub map_type { '' }
-sub map_template { 'bing' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.fixmystreet.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-bing-ol.js',
+] }
sub copyright { '' }
diff --git a/perllib/FixMyStreet/Map/Bristol.pm b/perllib/FixMyStreet/Map/Bristol.pm
index 0e3079b0b..a75bb5eb9 100644
--- a/perllib/FixMyStreet/Map/Bristol.pm
+++ b/perllib/FixMyStreet/Map/Bristol.pm
@@ -58,6 +58,13 @@ sub copyright {
sub map_template { 'bristol' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.bristol.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-wmts-base.js',
+ '/js/map-wmts-bristol.js',
+] }
+
# Reproject a WGS84 lat/lon into BNG easting/northing
sub reproject_from_latlon($$$) {
my ($self, $lat, $lon) = @_;
diff --git a/perllib/FixMyStreet/Map/Bromley.pm b/perllib/FixMyStreet/Map/Bromley.pm
index 0cd36a2ac..1310c2a5a 100644
--- a/perllib/FixMyStreet/Map/Bromley.pm
+++ b/perllib/FixMyStreet/Map/Bromley.pm
@@ -9,7 +9,13 @@ use base 'FixMyStreet::Map::FMS';
use strict;
-sub map_template { 'bromley' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.fixmystreet.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-bing-ol.js',
+ '/js/map-fms.js',
+ '/cobrands/bromley/map.js',
+] }
sub map_tile_base {
'-', "https://%sfix.bromley.gov.uk/tilma/%d/%d/%d.png";
diff --git a/perllib/FixMyStreet/Map/FMS.pm b/perllib/FixMyStreet/Map/FMS.pm
index c38f8baca..13c7f9d87 100644
--- a/perllib/FixMyStreet/Map/FMS.pm
+++ b/perllib/FixMyStreet/Map/FMS.pm
@@ -11,6 +11,13 @@ use strict;
sub map_template { 'fms' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.fixmystreet.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-bing-ol.js',
+ '/js/map-fms.js',
+] }
+
sub map_tile_base {
'-', "//%stilma.mysociety.org/sv/%d/%d/%d.png";
}
diff --git a/perllib/FixMyStreet/Map/Google.pm b/perllib/FixMyStreet/Map/Google.pm
index 8ddf4f4e9..f40eff167 100644
--- a/perllib/FixMyStreet/Map/Google.pm
+++ b/perllib/FixMyStreet/Map/Google.pm
@@ -13,6 +13,11 @@ use Utils;
use constant ZOOM_LEVELS => 6;
use constant MIN_ZOOM_LEVEL => 13;
+sub map_javascript { [
+ "http://maps.googleapis.com/maps/api/js?sensor=false",
+ '/js/map-google.js',
+] }
+
# display_map C PARAMS
# PARAMS include:
# latitude, longitude for the centre point of the map
diff --git a/perllib/FixMyStreet/Map/GoogleOL.pm b/perllib/FixMyStreet/Map/GoogleOL.pm
index 55032d707..44d0e77e7 100644
--- a/perllib/FixMyStreet/Map/GoogleOL.pm
+++ b/perllib/FixMyStreet/Map/GoogleOL.pm
@@ -13,4 +13,16 @@ sub map_type { '' }
sub map_template { 'google-ol' }
+sub map_javascript {
+ my $google_maps_url = "https://maps.googleapis.com/maps/api/js?v=3";
+ my $key = FixMyStreet->config('GOOGLE_MAPS_API_KEY');
+ $google_maps_url .= "&key=$key" if $key;
+ [
+ $google_maps_url,
+ '/vendor/OpenLayers/OpenLayers.google.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-google-ol.js',
+ ]
+}
+
1;
diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm
index 76af99d36..47d6eeee7 100644
--- a/perllib/FixMyStreet/Map/OSM.pm
+++ b/perllib/FixMyStreet/Map/OSM.pm
@@ -18,6 +18,12 @@ sub map_type { 'OpenLayers.Layer.OSM.Mapnik' }
sub map_template { 'osm' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.fixmystreet.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-OpenStreetMap.js',
+] }
+
sub map_tiles {
my ( $self, %params ) = @_;
my ( $x, $y, $z ) = ( $params{x_tile}, $params{y_tile}, $params{zoom_act} );
diff --git a/perllib/FixMyStreet/Map/OSM/MapQuest.pm b/perllib/FixMyStreet/Map/OSM/MapQuest.pm
index ac80e61b5..8b24e1ba2 100644
--- a/perllib/FixMyStreet/Map/OSM/MapQuest.pm
+++ b/perllib/FixMyStreet/Map/OSM/MapQuest.pm
@@ -11,8 +11,6 @@ use strict;
sub map_type { 'OpenLayers.Layer.OSM.MapQuestOpen' }
-sub map_template { 'mapquest-attribution' }
-
sub map_tiles {
my ( $self, %params ) = @_;
my ( $x, $y, $z ) = ( $params{x_tile}, $params{y_tile}, $params{zoom_act} );
diff --git a/perllib/FixMyStreet/Map/OSM/StreetView.pm b/perllib/FixMyStreet/Map/OSM/StreetView.pm
index 12fbdb19d..3281faa35 100644
--- a/perllib/FixMyStreet/Map/OSM/StreetView.pm
+++ b/perllib/FixMyStreet/Map/OSM/StreetView.pm
@@ -11,7 +11,11 @@ use strict;
sub map_type { '' }
-sub map_template { 'osm-streetview' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.fixmystreet.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-streetview.js',
+] }
sub base_tile_url {
return 'os.openstreetmap.org/sv';
diff --git a/perllib/FixMyStreet/Map/OSM/TonerLite.pm b/perllib/FixMyStreet/Map/OSM/TonerLite.pm
index b0d12c453..b50611f3d 100644
--- a/perllib/FixMyStreet/Map/OSM/TonerLite.pm
+++ b/perllib/FixMyStreet/Map/OSM/TonerLite.pm
@@ -16,7 +16,12 @@ use strict;
sub map_type { 'OpenLayers.Layer.Stamen' }
-sub map_template { 'osm-toner-lite' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.fixmystreet.js',
+ "https://stamen-maps.a.ssl.fastly.net/js/tile.stamen.js?v1.3.0",
+ '/js/map-OpenLayers.js',
+ '/js/map-toner-lite.js',
+] }
sub copyright {
'Map tiles by <a href="http://stamen.com">Stamen Design</a>, under <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>. Data by <a href="http://openstreetmap.org">OpenStreetMap</a>, under <a href="http://www.openstreetmap.org/copyright">ODbL</a>.'
diff --git a/perllib/FixMyStreet/Map/Zurich.pm b/perllib/FixMyStreet/Map/Zurich.pm
index b9d6e3297..8b4a3d931 100644
--- a/perllib/FixMyStreet/Map/Zurich.pm
+++ b/perllib/FixMyStreet/Map/Zurich.pm
@@ -65,6 +65,13 @@ sub copyright {
sub map_template { 'zurich' }
+sub map_javascript { [
+ '/vendor/OpenLayers/OpenLayers.zurich.js',
+ '/js/OpenLayers.Projection.CH1903Plus.js',
+ '/js/map-OpenLayers.js',
+ '/js/map-wmts-base.js',
+ '/js/map-wmts-zurich.js',
+] }
# Reproject a WGS84 lat/lon into Swiss easting/northing
sub reproject_from_latlon($$$) {
diff --git a/t/map/tests.t b/t/map/tests.t
new file mode 100644
index 000000000..f34ccfa6d
--- /dev/null
+++ b/t/map/tests.t
@@ -0,0 +1,29 @@
+use FixMyStreet::Map;
+use Test::More;
+
+my $requires = {
+ 'Angus' => 'angus/js.js',
+ 'Bing' => 'map-bing-ol.js',
+ 'Bristol' => 'map-wmts-bristol.js',
+ 'Bromley' => 'bromley/map.js',
+ 'FMS' => 'map-fms.js',
+ 'Google' => 'map-google.js',
+ 'GoogleOL' => 'map-google-ol.js',
+ 'OSM' => 'OpenStreetMap.js',
+ 'CycleMap' => 'OpenStreetMap.js',
+ 'MapQuest' => 'OpenStreetMap.js',
+ 'StreetView' => 'map-streetview.js',
+ 'TonerLite' => 'map-toner-lite.js',
+ 'Zurich' => 'map-wmts-zurich.js',
+};
+
+foreach (FixMyStreet::Map->maps) {
+ next if /WMTSBase/; # Only its subclasses have JS
+ my $js = $_->map_javascript;
+ my $test_file = $js->[-1];
+ s/.*:://;
+ isnt $requires->{$_}, undef, "$_ requires present";
+ like $test_file, qr/$requires->{$_}/, "$_ JS okay";
+}
+
+done_testing();
diff --git a/templates/web/angus/maps/fms.html b/templates/web/angus/maps/fms.html
deleted file mode 100644
index 61c56f121..000000000
--- a/templates/web/angus/maps/fms.html
+++ /dev/null
@@ -1,11 +0,0 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.angus.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-bing-ol.js'),
- version('/js/map-fms.js'),
- version('/cobrands/fixmystreet/assets.js'),
- version('/cobrands/angus/js.js'),
-];
-map_html = INCLUDE maps/openlayers.html include_key = 1
-%]
diff --git a/templates/web/base/admin/report_edit.html b/templates/web/base/admin/report_edit.html
index c58b2d605..ff99bb907 100644
--- a/templates/web/base/admin/report_edit.html
+++ b/templates/web/base/admin/report_edit.html
@@ -1,8 +1,8 @@
[%
PROCESS "maps/${map.type}.html" admin = 1;
+ SET bodyclass = 'mappage with-notes';
INCLUDE 'admin/header.html'
- title = tprintf(loc('Editing problem %d'), problem.id ),
- bodyclass = 'mappage with-notes';
+ title = tprintf(loc('Editing problem %d'), problem.id );
PROCESS 'admin/report_blocks.html'
-%]
diff --git a/templates/web/base/alert/index.html b/templates/web/base/alert/index.html
index 38ed6f6f5..1442e6bdc 100644
--- a/templates/web/base/alert/index.html
+++ b/templates/web/base/alert/index.html
@@ -1,4 +1,5 @@
-[% INCLUDE 'header.html', title = loc('Local RSS feeds and email alerts'), bodyclass = 'fullwidthpage' %]
+[% SET bodyclass = 'alertpage fullwidthpage' %]
+[% INCLUDE 'header.html', title = loc('Local RSS feeds and email alerts') %]
<h1>[% loc('Local RSS feeds and email alerts') %]</h1>
diff --git a/templates/web/base/around/index.html b/templates/web/base/around/index.html
index f2be5575c..8f6af6225 100644
--- a/templates/web/base/around/index.html
+++ b/templates/web/base/around/index.html
@@ -1,5 +1,6 @@
[% pre_container_extra = INCLUDE 'around/postcode_form.html' %]
-[% INCLUDE 'header.html', title = loc('Reporting a problem'), bodyclass = 'frontpage fullwidthpage' %]
+[% SET bodyclass = 'frontpage fullwidthpage' ~%]
+[% INCLUDE 'header.html', title = loc('Reporting a problem') %]
[%
# NOTE ON PARTIAL REPORTS:
diff --git a/templates/web/base/around/lookup_by_ref.html b/templates/web/base/around/lookup_by_ref.html
index 5c08a7ceb..747354c1e 100644
--- a/templates/web/base/around/lookup_by_ref.html
+++ b/templates/web/base/around/lookup_by_ref.html
@@ -1,5 +1,6 @@
[% pre_container_extra = INCLUDE 'around/postcode_form.html', pc = ref %]
-[% INCLUDE 'header.html', title = loc('Reporting a problem'), bodyclass = 'frontpage fullwidthpage' %]
+[% SET bodyclass = 'frontpage fullwidthpage' ~%]
+[% INCLUDE 'header.html', title = loc('Reporting a problem') %]
[% IF matching_reports %]
<p>[% loc('We found more than one match for that problem reference:') %]</p>
diff --git a/templates/web/base/common_header_tags.html b/templates/web/base/common_header_tags.html
index 321e45649..f65f1e336 100644
--- a/templates/web/base/common_header_tags.html
+++ b/templates/web/base/common_header_tags.html
@@ -33,3 +33,21 @@
[% "$title :: " | html IF title %]
[% site_name -%]
</title>
+
+[% IF bodyclass.match('frontpage') %]
+ <link rel="prefetch" href="[% version('/js/validation_rules.js') %]">
+ [%~ IF NOT c.user_exists OR NOT (c.user.from_body OR c.user.is_superuser) %]
+ <link rel="prefetch" href="[% version('/jslib/jquery-1.7.2.min.js') %]">
+ [%~ END %]
+ <link rel="prefetch" href="[% version('/js/jquery.multi-select.js') %]">
+ <link rel="prefetch" href="[% version('/vendor/jquery.validate.min.js') %]">
+ <link rel="prefetch" href="[% version('/cobrands/fixmystreet/fixmystreet.js') %]">
+[% END %]
+[% IF NOT bodyclass.match('mappage') %]
+ [% FOR script IN map_js %]
+ <link rel="prefetch" href="[% IF script.match('^/'); version(script); ELSE; script; END %]">
+ [% END %]
+ <link rel="prefetch" href="[% version('/cobrands/fixmystreet/map.js') %]">
+ <link rel="prefetch" href="[% version('/vendor/dropzone.min.js') %]">
+ <link rel="prefetch" href="[% version('/vendor/fancybox/jquery.fancybox-1.3.4.pack.js') %]">
+[% END %]
diff --git a/templates/web/base/common_scripts.html b/templates/web/base/common_scripts.html
index 057ecfd67..c6225e8fa 100644
--- a/templates/web/base/common_scripts.html
+++ b/templates/web/base/common_scripts.html
@@ -7,28 +7,75 @@ scripts = [];
scripts.push(
start _ "/js/translation_strings." _ lang_code _ ".js?" _ Math.int( date.now / 3600 ),
- version('/jslib/jquery-1.7.2.min.js'),
- version('/js/validation_rules.js'),
- version('/vendor/jquery.validate.min.js'),
- version('/vendor/dropzone.min.js'),
- version('/js/jquery.multi-select.js'),
- version('/cobrands/fixmystreet/fixmystreet.js'),
);
-IF c.user_exists AND (c.user.from_body OR c.user.is_superuser);
+SET jquery_loaded = 0;
+SET geolocation_loaded = 0;
+IF bodyclass.match('frontpage');
+ SET geolocation_loaded = 1;
scripts.push(
- version('/cobrands/fixmystreet/staff.js')
+ version('/js/front.js'),
+ version('/js/geolocation.js'),
+ );
+ELSIF bodyclass.match('alertpage');
+ SET geolocation_loaded = 1;
+ scripts.push(
+ version('/js/geolocation.js'),
+ );
+ELSE;
+ SET jquery_loaded = 1;
+ scripts.push(
+ version('/js/validation_rules.js'),
+ version('/jslib/jquery-1.7.2.min.js'),
+ version('/js/jquery.multi-select.js'),
+ version('/vendor/jquery.validate.min.js'),
+ version('/cobrands/fixmystreet/fixmystreet.js'),
);
END;
-FOR script IN map_js;
+FOR script IN extra_js;
scripts.push(script);
END;
-scripts.push(
- version('/cobrands/fixmystreet/map.js'),
- version('/cobrands/fixmystreet/offline.js'),
-);
+IF c.user_exists AND (c.user.from_body OR c.user.is_superuser);
+ IF NOT geolocation_loaded;
+ scripts.push(
+ version('/js/geolocation.js'),
+ );
+ END;
+ IF NOT jquery_loaded;
+ scripts.push(
+ version('/jslib/jquery-1.7.2.min.js'),
+ );
+ END;
+ scripts.push(
+ version('/cobrands/fixmystreet/staff.js')
+ );
+ IF c.user.has_body_permission_to('planned_reports');
+ scripts.push(
+ version('/cobrands/fixmystreet/offline.js'),
+ );
+ END;
+END;
+
+IF bodyclass.match('mappage');
+ FOR script IN map_js;
+ IF script.match('^/');
+ scripts.push(version(script));
+ ELSE;
+ scripts.push(script);
+ END;
+ END;
+ scripts.push(
+ version('/cobrands/fixmystreet/map.js'),
+ version('/vendor/dropzone.min.js'),
+ version('/vendor/fancybox/jquery.fancybox-1.3.4.pack.js'),
+ );
+ELSE;
+ scripts.push(
+ version('/cobrands/fixmystreet/prefetch-polyfill.js'),
+ );
+END;
IF admin;
scripts.push(
@@ -37,10 +84,6 @@ IF admin;
);
END;
-FOR script IN extra_js;
- scripts.push(script);
-END;
-
TRY;
PROCESS 'footer_extra_js.html';
CATCH file;
diff --git a/templates/web/base/front/javascript.html b/templates/web/base/front/javascript.html
deleted file mode 100644
index 69eb626f7..000000000
--- a/templates/web/base/front/javascript.html
+++ /dev/null
@@ -1,12 +0,0 @@
-[%
-# Assume using OpenStreetMap maps
-map_js = [
- version('/vendor/yepnope.js'),
- [ version('/cobrands/fixmystreet/front.js'), {
- id = 'script_front',
- 'data-scripts' = version('/vendor/OpenLayers/OpenLayers.fixmystreet.js') _ ',' _
- version('/js/map-OpenLayers.js') _ ',' _
- version('/js/map-OpenStreetMap.js')
- } ],
-]
-%]
diff --git a/templates/web/base/header.html b/templates/web/base/header.html
index 37c81f454..faba02519 100644
--- a/templates/web/base/header.html
+++ b/templates/web/base/header.html
@@ -21,11 +21,6 @@
[% INCLUDE 'header_opengraph.html' %]
[% INCLUDE 'header/css.html' %]
[% INCLUDE 'common_header_tags.html' %]
-
- [% IF c.req.uri.host == 'osm.fixmystreet.com' %]
- <link rel="canonical" href="https://www.fixmystreet.com[% c.req.uri.path_query %]">
- [% END %]
-
[% TRY %][% PROCESS 'header_extra.html' %][% CATCH file %][% END %]
</head>
diff --git a/templates/web/base/index.html b/templates/web/base/index.html
index 92c6b1eed..620c1a2be 100644
--- a/templates/web/base/index.html
+++ b/templates/web/base/index.html
@@ -1,7 +1,6 @@
-[% PROCESS 'front/javascript.html' %]
-
[% pre_container_extra = PROCESS 'around/postcode_form.html' %]
-[% INCLUDE 'header.html', title = '', bodyclass = 'frontpage fullwidthpage' inline_css = 1 %]
+[% SET bodyclass = 'frontpage fullwidthpage' %]
+[% INCLUDE 'header.html', title = '', inline_css = 1 %]
[% IF error %]
<p class="form-error">[% error %]</p>
diff --git a/templates/web/base/maps/bing.html b/templates/web/base/maps/bing.html
deleted file mode 100644
index df45eced5..000000000
--- a/templates/web/base/maps/bing.html
+++ /dev/null
@@ -1,8 +0,0 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.fixmystreet.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-bing-ol.js'),
-];
-map_html = INCLUDE maps/openlayers.html
-%]
diff --git a/templates/web/base/maps/fms.html b/templates/web/base/maps/fms.html
index ff5b4eab6..286ecc8ff 100644
--- a/templates/web/base/maps/fms.html
+++ b/templates/web/base/maps/fms.html
@@ -1,9 +1,3 @@
[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.fixmystreet.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-bing-ol.js'),
- version('/js/map-fms.js'),
-];
map_html = INCLUDE maps/openlayers.html include_key = 1
%]
diff --git a/templates/web/base/maps/google-ol.html b/templates/web/base/maps/google-ol.html
index d88043403..3cd21fab3 100644
--- a/templates/web/base/maps/google-ol.html
+++ b/templates/web/base/maps/google-ol.html
@@ -1,17 +1,3 @@
-[%
-google_maps_url = "https://maps.googleapis.com/maps/api/js?v=3";
-IF c.config.GOOGLE_MAPS_API_KEY;
- google_maps_url = google_maps_url _ "&amp;key=" _ c.config.GOOGLE_MAPS_API_KEY;
-END;
-
-map_js = [
- google_maps_url,
- version('/vendor/OpenLayers/OpenLayers.google.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-google-ol.js'),
-]
-%]
-
[% map_sub_links = BLOCK %]
<a class="hidden-nojs" id="map_layer_toggle" href="">[% loc('Satellite') %]</a>
[% END %]
diff --git a/templates/web/base/maps/google.html b/templates/web/base/maps/google.html
index ec9885a04..e8c07b113 100644
--- a/templates/web/base/maps/google.html
+++ b/templates/web/base/maps/google.html
@@ -6,12 +6,6 @@
color: #000;
}
</style>
-[%
-map_js = [
- "http://maps.googleapis.com/maps/api/js?sensor=false",
- version('/js/map-google.js'),
-]
-%]
[% map_html = BLOCK %]
<script nonce="[% csp_nonce %]">
diff --git a/templates/web/base/maps/mapquest-attribution.html b/templates/web/base/maps/mapquest-attribution.html
deleted file mode 100644
index 43d6106a5..000000000
--- a/templates/web/base/maps/mapquest-attribution.html
+++ /dev/null
@@ -1,8 +0,0 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.fixmystreet.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-OpenStreetMap.js'),
-];
-map_html = INCLUDE maps/openlayers.html
-%]
diff --git a/templates/web/base/maps/osm-streetview.html b/templates/web/base/maps/osm-streetview.html
deleted file mode 100644
index f68f53039..000000000
--- a/templates/web/base/maps/osm-streetview.html
+++ /dev/null
@@ -1,8 +0,0 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.fixmystreet.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-streetview.js'),
-];
-map_html = INCLUDE maps/openlayers.html
-%]
diff --git a/templates/web/base/maps/osm-toner-lite.html b/templates/web/base/maps/osm-toner-lite.html
deleted file mode 100644
index 22b6636c5..000000000
--- a/templates/web/base/maps/osm-toner-lite.html
+++ /dev/null
@@ -1,9 +0,0 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.fixmystreet.js'),
- "https://stamen-maps.a.ssl.fastly.net/js/tile.stamen.js?v1.3.0",
- version('/js/map-OpenLayers.js'),
- version('/js/map-toner-lite.js'),
-];
-map_html = INCLUDE maps/openlayers.html
-%]
diff --git a/templates/web/base/maps/osm.html b/templates/web/base/maps/osm.html
index 43d6106a5..51c3ad388 100644
--- a/templates/web/base/maps/osm.html
+++ b/templates/web/base/maps/osm.html
@@ -1,8 +1,3 @@
[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.fixmystreet.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-OpenStreetMap.js'),
-];
map_html = INCLUDE maps/openlayers.html
%]
diff --git a/templates/web/base/report/_inspect.html b/templates/web/base/report/_inspect.html
index e4e3ac9e6..5088332ce 100644
--- a/templates/web/base/report/_inspect.html
+++ b/templates/web/base/report/_inspect.html
@@ -44,7 +44,7 @@
<a target="_blank" href="https://www.google.com/maps/dir/Current+Location/[% problem.latitude %],[% problem.longitude %]" class="btn btn--block btn--navigate">[% loc('Navigate to this problem') %]</a>
</p>
<p>
- <a href="#" class="btn btn--block btn--geolocate" id="geolocate_link">[% loc('Set to my current location') %]</a>
+ <a href="#" class="btn btn--block btn--geolocate">[% loc('Set to my current location') %]</a>
</p>
</div>
diff --git a/templates/web/base/report/photo-js.html b/templates/web/base/report/photo-js.html
index 8c8c91669..6f3dd55d1 100644
--- a/templates/web/base/report/photo-js.html
+++ b/templates/web/base/report/photo-js.html
@@ -1,6 +1,3 @@
[% extra_css = BLOCK %]
<link rel="stylesheet" href="[% version('/vendor/fancybox/jquery.fancybox-1.3.4.css') %]">
[% END %]
-[% extra_js = [
- version('/vendor/fancybox/jquery.fancybox-1.3.4.pack.js')
-] %]
diff --git a/templates/web/bristol/maps/bristol.html b/templates/web/bristol/maps/bristol.html
index f13ea4d32..1dcc82635 100644
--- a/templates/web/bristol/maps/bristol.html
+++ b/templates/web/bristol/maps/bristol.html
@@ -1,12 +1,3 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.bristol.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-wmts-base.js'),
- version('/js/map-wmts-bristol.js'),
-]
-%]
-
[% map_html = BLOCK %]
[% INCLUDE maps/openlayers.html %]
[% INCLUDE maps/wmts_config.html %]
diff --git a/templates/web/bromley/maps/bromley.html b/templates/web/bromley/maps/bromley.html
deleted file mode 100644
index 71a150f5a..000000000
--- a/templates/web/bromley/maps/bromley.html
+++ /dev/null
@@ -1,10 +0,0 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.fixmystreet.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-bing-ol.js'),
- version('/js/map-fms.js'),
- version('/cobrands/bromley/map.js'),
-];
-map_html = INCLUDE maps/openlayers.html include_key = 1
-%]
diff --git a/templates/web/fixmystreet.com/about/professional.html b/templates/web/fixmystreet.com/about/professional.html
deleted file mode 100644
index 0978d19bc..000000000
--- a/templates/web/fixmystreet.com/about/professional.html
+++ /dev/null
@@ -1,720 +0,0 @@
-[% extra_css = BLOCK %]
- <link rel="stylesheet" href="[% version('/cobrands/fixmystreet.com/fmsforcouncils.css') %]">
- <link href="https://fonts.googleapis.com/css?family=Rubik:400,500" rel="stylesheet">
-[% END %]
-
-[% INCLUDE header.html
- title = 'FixMyStreet Professional', bodyclass = 'fms-for-councils fullwidthpage'
-%]
-
-<div class="fixed-container">
- <div class="council-header">
- <h1 class="councils-logo">FixMyStreet Professional</h1>
- </div>
- <div class="councils-hero">
- <div class="councils-hero__presentation">
- <div class="councils-content-wrapper">
- <h2 class="councils-hero__title">FixMyStreet Professional: street reporting service for councils</h2>
- <img class="councils-hero__product" src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png') %]" alt="">
- </div>
- </div>
- <div class="councils-hero__subtitle">
- <p class="councils-hero__subtitle__primary">Integrate FixMyStreet with any council system for smooth end-to-end report fulfilment</p>
- <p class="councils-hero__subtitle__secondary">Residents, staff and contractors love FixMyStreet for its easy-use interfaces.
- If you’re the budget-holder, you’ll love its sensible pricing, too.</p>
- </div>
- <div class="councils-hero__demo-access">
- <h2>Try FixMyStreet Professional right now, on our demo site</h2>
- <form action="/contact/submit" method="post" class="councils-hero__demo-access__form js-fms-pro-demo-form">
- <div class="form-group">
- <label for="demo-name">Name</label>
- <span class="required">required</span>
- <input type="text" name="name" id="demo-name" required>
- </div>
- <div class="form-group">
- <label for="demo-email">Contact email</label>
- <span class="required">required</span>
- <input type="email" name="em" id="demo-email" required>
- <p class="form-note">Ending in .gov.uk</p>
- </div>
- <div class="form-group">
- <label for="demo-phone">Contact phone number</label>
- <input type="text" name="extra.phone" id="demo-phone">
- </div>
- <div class="form-group">
- <label for="demo-job">Job title</label>
- <input type="text" name="extra.job_title" id="demo-job">
- </div>
- <div class="form-group submit-group">
- <input type="hidden" name="extra.referer" value="[% c.req.headers.referer | html %]">
- <input type="hidden" name="subject" value="Demo site request">
- <input type="hidden" name="message" value="This visitor was sent a link to demo.fixmystreet.com">
- <input type="hidden" name="recipient" value="bettercities">
- <input type="hidden" name="dest" value="from_council">
- <input type="hidden" name="success_url" value="https://demo.fixmystreet.com">
- <input type="submit" value="Let me in" class="btn">
- </div>
- </form>
- </div>
- </div>
- <div class="councils-sales councils-sales--benefits">
- <div class="councils-content-wrapper">
- <h2>Benefits</h2>
- <div class="councils-sales__grid">
- <div class="councils-features__feature">
- <h3>Increase efficiency</h3>
- <p>Route problems to the correct person, team, authority or contractor based on location, category and priority.</p>
- </div>
- <div class="councils-features__feature">
- <h3>Minimise duplication</h3>
- <p>An open and transparent approach to local issue reporting that reduces incidents of repeat and duplicate reports.</p>
- </div>
- <div class="councils-features__feature">
- <h3>Streamline your process</h3>
- <p>The first case-management service designed with councils, for councils. Streamline your process from customer service, through inspection to instruction and resolution.</p>
- </div>
- <div class="councils-features__feature">
- <h3>Stay flexible</h3>
- <p>Open standards compliant for complete customer flexibility: support the landscape of service providers to further increase your reach.</p>
- </div>
- <div class="councils-features__feature">
- <h3>Work with your existing services</h3>
- <p>Support for your existing mapping, asset, customer and case management services ensures that your solution works for your current processes and systems.</p>
- </div>
- <div class="councils-features__feature">
- <h3>Expand your reach</h3>
- <p>Reports made within your boundaries are published to FixMyStreet.com’s one million visitors a year.</p>
- </div>
- </div>
- </div>
- </div>
-
- <div class="councils-pricing">
- <div class="councils-content-wrapper">
- <h2>Plans</h2>
- <div class="councils-pricing__grid">
-
- <table class="pricing-table">
- <caption class="visuallyhidden">Pricing and feature information for all FixMyStreet Pro tiers</caption>
- <thead>
- <tr>
- <th scope="col" class="blank">
- <span class="visuallyhidden">Features</span>
- </th>
- <th scope="col">
- <span class="pricing-table__tier-name">Driveway</span>
- </th>
- <th scope="col">
- <span class="pricing-table__tier-name">Crescent</span>
- </th>
- <th scope="col">
- <span class="pricing-table__tier-name">Boulevard</span>
- </th>
- <th scope="col">
- <span class="pricing-table__tier-name">Avenue</span>
- </th>
- </tr>
- </thead>
-
- <tbody>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Define problem categories and email contacts
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Dashboards
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">None</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- 1 customisable dashboard
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- Customisable dashboards for up to 3 teams
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- Customisable dashboards for up to 3 teams
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- FixMyStreet at your domain, with your branding
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- System integrations (eg: CONFIRM, Salesforce, Mayrise)
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">None</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">None</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- Up to 2 integrations
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- Up to 4 integrations
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Inspector specific views
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">None</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">None</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">None</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Moderate reports
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- De-duplicate reports
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Customer services agents can report on customer’s behalf
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Training
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- Training workshop for up to 12 staff
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- Training workshop for up to 40 staff
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- AddressBase integration
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Roadworks.org planned works integration
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Add asset locations
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Offline functionality
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Custom map tiles
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Custom geocoder
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr>
- <th scope="row">
- <span class="pricing-table__feature-name">
- Add adopted roads
- </span>
- </th>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--no">No</i>
- </span>
- </td>
- <td>
- <span class="pricing-table__feature-value">
- <i class="boolean-icon boolean-icon--yes">Yes</i>
- </span>
- </td>
- </tr>
- <tr class="pricing-table__prices">
- <td>
- <span class="pricing-table__price">Price</span>
- </td>
- <td>
- <span class="pricing-table__price">Free</span>
- </td>
- <td>
- <span class="pricing-table__price">£7500</span>
- </td>
- <td>
- <span class="pricing-table__price">£20000</span>
- </td>
- <td>
- <span class="pricing-table__price">£35000</span>
- </td>
- </tr>
- </tbody>
-
- </table>
-
- </div>
- </div>
- </div>
-
- <div class="councils-clients">
- <h2>Clients</h2>
- <div class="councils-clients__grid">
- <div class="councils-clients__client">
- <a href="https://fixmystreet.bristol.gov.uk/">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png') %]" alt="Bristol City Council">
- </a>
- </div>
- <div class="councils-clients__client">
- <a href="https://fix.angus.gov.uk/">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png') %]" alt="Angus Council">
- </a>
- </div>
- <div class="councils-clients__client">
- <a href="https://fixmystreet.oxfordshire.gov.uk/">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png') %]" alt="Oxfordshire County Council">
- </a>
- </div>
- <div class="councils-clients__client">
- <a href="https://hart.fixmystreet.com/">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png') %]" alt="Hart District Council">
- </a>
- </div>
- <div class="councils-clients__client">
- <a href="https://fix.bromley.gov.uk/">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png') %]" alt="Bromley Council">
- </a>
- </div>
- <div class="councils-clients__client">
- <a href="https://www.zueriwieneu.ch/">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png') %]" alt="Stadt Z&uuml;rich">
- </a>
- </div>
- <div class="councils-clients__client">
- <a href="https://greenwich.fixmystreet.com/">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png') %]" alt="Royal Borough of Greenwich">
- </a>
- </div>
- </div>
- </div>
-
- <div class="screenshot-of-themes">
- <div class="councils-content-wrapper">
- <img src="[% version('/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpg') %]" alt="">
- </div>
- </div>
-
- <div class="councils-sales councils-sales--features">
- <div class="councils-content-wrapper">
- <h2>Features</h2>
- <div class="councils-sales__grid">
- <div class="councils-features__feature">
- <div class="councils-features__screenshot"></div>
- <h3>Map-centric problem reporting</h3>
- <p>Handle any type of location-specific report within the nominated
- county, borough or city; including geolocation and images. </p>
- </div>
- <div class="councils-features__feature">
- <div class="councils-features__screenshot"></div>
- <h3>Mobile ready</h3>
- <p>Companion mobile application for Android and iOS, so your customers
- can report issues on the go and FixMyStreet is designed for optimal
- display on desktop, tablet and mobile browsers.</p>
- </div>
- <div class="councils-features__feature">
- <div class="councils-features__screenshot"></div>
- <h3>Our experience, your brand</h3>
- <p>White-labelled product, branded to complement your existing services.
- Extend your reach to over a million visitors on the nation’s most
- popular local issues service, FixMyStreet.com.</p>
- </div>
- <div class="councils-features__feature">
- <div class="councils-features__screenshot"></div>
- <h3>End-to-end case management</h3>
- <p>A complete case management solution for customer services,
- inspection and maintenance teams. Support for industry standard
- mapping, asset, works and applications including Salesforce, Mayrise
- and Confirm®.</p>
- </div>
- <div class="councils-features__feature">
- <div class="councils-features__screenshot"></div>
- <h3>Inspection service</h3>
- <p>Mobile optimised, offline capable planning, markup and instructing
- service for your inspection teams.</p>
- </div>
- <div class="councils-features__feature">
- <div class="councils-features__screenshot"></div>
- <h3>Customised reporting</h3>
- <p>Supports category-specific report content and data, to help you
- collect the details you need. Track service levels, highlight
- bottlenecks and monitor contracts with area dashboards.</p>
- </div>
- </div>
- </div>
- </div>
-<div class="council-order" id="order">
- <div class="councils-content-wrapper">
- <h2>Contact</h2>
- <form action="/contact/submit" method="post">
- <div class="council-order__form">
- <div class="form-group">
- <p>Use any address ending in .gov.uk to verify that you are making contact from a council within the UK.</p>
- <p>We’ll get right back to you to find out more about your needs.</p>
- <p>If you are contacting FixMyStreet for any other reason, please see our <a href="/contact">main contact page</a>.</p>
- </div>
- <div class="form-group">
- <label for="name">Name</label>
- <span class="required">required</span>
- <input type="text" name="name" id="name" required>
- </div>
- <div class="form-group">
- <label for="email">Contact email</label>
- <span class="required">required</span>
- <input type="email" name="em" id="email" required>
- <p class="form-note">Ending in .gov.uk</p>
- </div>
- <div class="form-group">
- <label for="extra.phone">Contact phone number</label>
- <span class="required required--optional">optional</span>
- <input type="text" name="extra.phone" id="extra.phone">
- </div>
- <div class="form-group">
- <label for="email-newsletter" class="checkbox-label"> <input type="checkbox" name="extra.newsletter" value="Sign me up to the Better Cities newsletter" id="email-newsletter" class="checkbox-input"> Sign up for the Better Cities newsletter for news and insights on smarter technology for councils.</label>
- </div>
- <div class="form-group submit-group">
- <input type="hidden" name="extra.referer" value="[% c.req.headers.referer | html %]">
- <input type="hidden" name="subject" value="Councils submission">
- <input type="hidden" name="recipient" value="enquiries">
- <input type="hidden" name="dest" value="from_council">
- <input type="submit" value="Send">
- </div>
- </div>
- </form>
- </div>
- <div class="council-order__screenshot">
- </div>
-</div>
-
-
-
- </div>
-
-
-[% INCLUDE footer.html %]
diff --git a/templates/web/fixmystreet.com/footer_extra_js.html b/templates/web/fixmystreet.com/footer_extra_js.html
index d5ed1543d..cb1b78743 100644
--- a/templates/web/fixmystreet.com/footer_extra_js.html
+++ b/templates/web/fixmystreet.com/footer_extra_js.html
@@ -1,5 +1,16 @@
-[% scripts.push(
- version('/vendor/OpenLayers.Projection.OrdnanceSurvey.js'),
- version('/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js'),
- version('/cobrands/fixmystreet.com/js.js'),
-) %]
+[%
+IF bodyclass.match('mappage');
+ scripts.push(
+ version('/vendor/OpenLayers.Projection.OrdnanceSurvey.js'),
+ );
+END;
+IF bodyclass.match('frontpage');
+ scripts.push(
+ version('/cobrands/fixmystreet.com/front.js'),
+ );
+ELSIF NOT bodyclass.match('alertpage');
+ scripts.push(
+ version('/cobrands/fixmystreet.com/js.js'),
+ );
+END;
+%]
diff --git a/templates/web/fixmystreet.com/front/javascript.html b/templates/web/fixmystreet.com/front/javascript.html
deleted file mode 100644
index 4bf586b70..000000000
--- a/templates/web/fixmystreet.com/front/javascript.html
+++ /dev/null
@@ -1,12 +0,0 @@
-[%
-map_js = [
- version('/vendor/yepnope.js'),
- [ version('/cobrands/fixmystreet/front.js'), {
- id = "script_front",
- 'data-scripts' = version('/vendor/OpenLayers/OpenLayers.fixmystreet.js') _ ',' _
- version('/js/map-OpenLayers.js') _ ',' _
- version('/js/map-bing-ol.js') _ ',' _
- version('/js/map-fms.js')
- } ],
-]
-%]
diff --git a/templates/web/fixmystreet.com/header_extra.html b/templates/web/fixmystreet.com/header_extra.html
index dc0f86693..74280a6f9 100644
--- a/templates/web/fixmystreet.com/header_extra.html
+++ b/templates/web/fixmystreet.com/header_extra.html
@@ -1,3 +1,15 @@
+[% IF NOT bodyclass.match('mappage') %]
+<link rel="prefetch" href="[% version('/vendor/OpenLayers.Projection.OrdnanceSurvey.js') %]">
+[% END %]
+
+[% IF bodyclass.match('frontpage') %]
+<link rel="prefetch" href="[% version('/cobrands/fixmystreet.com/js.js') %]">
+[% END %]
+
+[% IF c.req.uri.host == 'osm.fixmystreet.com' %]
+ <link rel="canonical" href="https://www.fixmystreet.com[% c.req.uri.path_query %]">
+[% END %]
+
<meta name='theme-color' content='#ffd000'>
<link rel="Shortcut Icon" type="image/x-icon" href="/cobrands/fixmystreet.com/favicon.ico">
diff --git a/templates/web/zurich/admin/report_edit-sdm.html b/templates/web/zurich/admin/report_edit-sdm.html
index 9f5433d8b..07fc9ad36 100644
--- a/templates/web/zurich/admin/report_edit-sdm.html
+++ b/templates/web/zurich/admin/report_edit-sdm.html
@@ -1,9 +1,9 @@
[%
PROCESS "report/photo-js.html";
PROCESS "maps/zurich.html";
+ SET bodyclass = 'mappage';
PROCESS 'admin/header.html'
- title = tprintf(loc('Editing problem %d'), problem.id ),
- bodyclass = 'mappage';
+ title = tprintf(loc('Editing problem %d'), problem.id );
PROCESS 'admin/report_blocks.html'
-%]
diff --git a/templates/web/zurich/admin/report_edit.html b/templates/web/zurich/admin/report_edit.html
index aa5029eb7..7e88fab30 100644
--- a/templates/web/zurich/admin/report_edit.html
+++ b/templates/web/zurich/admin/report_edit.html
@@ -1,9 +1,9 @@
[%
PROCESS "report/photo-js.html";
PROCESS "maps/zurich.html";
+ SET bodyclass = 'mappage';
INCLUDE 'admin/header.html'
- title = tprintf(loc('Editing problem %d'), problem.id ),
- bodyclass = 'mappage';
+ title = tprintf(loc('Editing problem %d'), problem.id );
PROCESS 'admin/report_blocks.html'
-%]
diff --git a/templates/web/zurich/maps/zurich.html b/templates/web/zurich/maps/zurich.html
index a9499f657..4000e1e52 100644
--- a/templates/web/zurich/maps/zurich.html
+++ b/templates/web/zurich/maps/zurich.html
@@ -1,13 +1,3 @@
-[%
-map_js = [
- version('/vendor/OpenLayers/OpenLayers.zurich.js'),
- version('/js/OpenLayers.Projection.CH1903Plus.js'),
- version('/js/map-OpenLayers.js'),
- version('/js/map-wmts-base.js'),
- version('/js/map-wmts-zurich.js'),
-]
-%]
-
[% map_sub_links = BLOCK %]
<a class="hidden-nojs" id="map_layer_toggle" href="">Stadtplan</a>
[% END %]
diff --git a/templates/web/zurich/reports/index.html b/templates/web/zurich/reports/index.html
index 8bec64c86..1389c666c 100755
--- a/templates/web/zurich/reports/index.html
+++ b/templates/web/zurich/reports/index.html
@@ -1,8 +1,8 @@
[%
PROCESS "maps/${map.type}.html";
+ SET bodyclass = 'mappage';
INCLUDE 'header.html',
- title = loc('Summary reports'),
- bodyclass = 'mappage';
+ title = loc('Summary reports');
%]
[% map_html %]
</div>
diff --git a/web/cobrands/fixmystreet-uk-councils/js.js b/web/cobrands/fixmystreet-uk-councils/js.js
index 6066db9c5..7c4f7a9ed 100644
--- a/web/cobrands/fixmystreet-uk-councils/js.js
+++ b/web/cobrands/fixmystreet-uk-councils/js.js
@@ -1,4 +1,7 @@
(function(){
+ if (!jQuery.validator) {
+ return;
+ }
var validNamePat = /\ba\s*n+on+((y|o)mo?u?s)?(ly)?\b/i;
function valid_name(value, element) {
return this.optional(element) || value.length > 5 && value.match( /\S/ ) && value.match( /\s/ ) && !value.match( validNamePat );
diff --git a/web/cobrands/fixmystreet.com/fmsforcouncils.scss b/web/cobrands/fixmystreet.com/fmsforcouncils.scss
index 0e7c6a281..ce4828416 100644
--- a/web/cobrands/fixmystreet.com/fmsforcouncils.scss
+++ b/web/cobrands/fixmystreet.com/fmsforcouncils.scss
@@ -60,16 +60,6 @@ $fms-pink: #E65376;
overflow: hidden;
}
- .councils-content-wrapper {
- max-width: 66em;
- margin: 0 auto;
- padding: 0 1.5em;
- @media (min-width: 60em) {
- padding: 0 3em;
- }
-
- }
-
.councils-logo {
background-image: url('images/fms-for-councils/fms-fc-logo.svg');
background-size: 260px 68px;
@@ -86,62 +76,6 @@ $fms-pink: #E65376;
padding-bottom: 2em;
}
- .councils-hero__presentation {
- background-color: #FED876;
- padding-top: 1em;
- padding-bottom: 3em;
- margin-bottom: 175px;
- }
-
- .councils-hero__title {
- text-align: center;
- font-weight: 500;
- margin-left: auto;
- margin-right: auto;
- font-size: 1.35em;
- margin-bottom: -150px;
- max-width: 23em;
- @media (min-width: 44em) {
- font-size: 2.5em
- }
- }
-
- .councils-hero__product {
- position: relative;
- bottom: -170px;
- max-width: 800px;
- margin: 0 auto;
- text-align: center;
- display: block;
- width: 100%;
- @media (min-width: 44em) {
- bottom: -200px;
- }
- }
-
- .councils-hero__subtitle {
- max-width: 40em;
- margin-left: auto;
- margin-right: auto;
- font-size: 1.125em;
- line-height: 1.5em;
- text-align: center;
- padding: 0 1em;
- @media (min-width: 44em) {
- font-size: 1.3125em;
- line-height: 1.5em;
- }
- }
-
- .councils-hero__subtitle__primary {
- font-size: 1.35em;
- line-height: 1.35em;
- }
-
- .councils-hero__subtitle__secondary {
- color: #777;
- }
-
.councils-hero__demo-access {
background-color: $fms-pink;
border-radius: 3px;
@@ -205,580 +139,6 @@ $fms-pink: #E65376;
}
}
- .councils-sales {
- padding: 2em 0 5em;
- .councils-content-wrapper {
- max-width: 58em;
- }
- }
-
- .councils-sales__grid {
- .flex & {
- @include flex-container();
- @include flex-wrap(wrap);
- @include justify-content(space-between);
- }
- .no-js &,
- .no-flex & {
- @include clearfix();
- }
-
- }
-
- .councils-features__feature {
- width: 100%;
- .no-js &,
- .no-flex & {
- float: left;
- }
- @media (min-width: 44em) {
- width: 47%;
- .no-js &,
- .no-flex & {
- margin-right: 3%;
- }
- }
- h3 {
- font-weight: normal;
- margin-bottom: 0.25em;
- }
- p {
- color: #777;
- font-size: 0.875em;
- }
- }
-
- .councils-sales--benefits {
- background-color: #F7F6F5;
- border-bottom: 1px solid #e9e9e9;
- padding-top: 5em;
-
- h2 {
- font-size: 2.5em;
- text-align: center;
- color: $fms-pink;
- }
- p {
- color: #666;
- }
- }
-
- .councils-sales--features {
- border-top: 1px solid #e9e9e9;
- padding-top: 2em;
- h2 {
- font-size: 2.5em;
- text-align: center;
- color: $fms-pink;
- }
-}
-
- .councils-features__thumb {
- height: 63px;
- width: 63px;
- background-size: cover;
- background-color: transparent;
- background-repeat: no-repeat;
- float: left;
- margin-top: 18px;
- }
-
- .councils-features__thumb--authority {
- background-image: url('images/fms-for-councils/authority.svg');
- }
-
- .councils-features__thumb--automated-instruction {
- background-image: url('images/fms-for-councils/automated-instruction.svg');
- }
-
- .councils-features__thumb--brand {
- background-image: url('images/fms-for-councils/brand.svg');
- }
-
- .councils-features__thumb--customise {
- background-image: url('images/fms-for-councils/customise.svg');
- }
-
- .councils-features__thumb--dashboard {
- background-image: url('images/fms-for-councils/dashboard.svg');
- }
-
- .councils-features__thumb--end-to-end {
- background-image: url('images/fms-for-councils/end-to-end.svg');
- }
-
- .councils-features__thumb--inspection {
- background-image: url('images/fms-for-councils/inspection.svg');
- }
-
- .councils-features__thumb--integrated {
- background-image: url('images/fms-for-councils/integrated.svg');
- }
-
- .councils-features__thumb--intelligent-routing {
- background-image: url('images/fms-for-councils/intelligent-routing.svg');
- }
-
- .councils-features__thumb--open-standards {
- background-image: url('images/fms-for-councils/open-standards.svg');
- }
-
- .councils-features__thumb--map-centric {
- background-image: url('images/fms-for-councils/map-centric.svg');
- }
-
- .councils-features__thumb--mobile-app {
- background-image: url('images/fms-for-councils/mobile-app.svg');
- }
-
- .councils-features__thumb--responsive-web {
- background-image: url('images/fms-for-councils/responsive-web.svg');
- }
-
- .councils-features__thumb--syncronised {
- background-image: url('images/fms-for-councils/syncronised.svg');
- }
-
- .order-now-button {
- background-color: $fms-pink;
- color: #fff;
- border: 0;
- text-transform: none;
- padding: 0.6em 1.5em;
- text-align: center;
- display: block;
- margin: 2em auto 0;
- border-radius: 3px;
- max-width: 5em;
- &:hover,
- &:active,
- &:focus {
- background-color: desaturate(darken($fms-pink, 10%), 10%);
- text-decoration: none;
- }
- }
-
- .councils-clients {
- background-color: #FED876;
- padding: 1em 0 2.5em;
- h2 {
- font-size: 2.5em;
- text-align: center;
- color: #333;
- }
- }
-
- .councils-clients__grid {
- .flex & {
- @include flex-container();
- @include justify-content(space-around);
- @include flex-align(center);
- @include flex-wrap(wrap);
- }
- .no-js &,
- .no-flex & {
- @include clearfix();
- }
- margin: 0 2%;
- @media (min-width: 44em) {
- flex-wrap: nowrap;
- }
- }
-
- .councils-clients__client {
- text-align: left;
- .no-js &,
- .no-flex & {
- float: left;
- width: 50%;
- @media (min-width: 44em) {
- width: 20%;
- }
- }
- }
-
-
- .screenshot-of-themes {
- background-color: #FED876;
- }
-
- .councils-compatibility {
- background-color: $fms-pink;
- padding: 0.5em 0 2.5em;
- a {
- color: #fff;
- opacity: 0.8;
- }
- h2, h3 {
- color: #fff;
- }
- h2 {
- margin-top: 1em;
- margin-bottom: 0.25em;
- }
- h3 {
- font-size: 0.875em;
- }
- ul {
- list-style: none outside none;
- padding: 0;
- margin: 0;
- li {
- list-style: none outside none;
- font-size: 0.875em;
- }
- }
- }
-
- .councils-compatibility__grid {
- .flex & {
- @include flex-container();
- @include flex-wrap(wrap);
- @include justify-content(flex-start);
- }
-
- .no-js &,
- .no-flex & {
- @include clearfix();
- }
-
- @media (min-width: 44em) {
- flex-wrap: nowrap;
- }
- }
-
- .councils-compatibility__item {
- width: 100%;
- .no-js &,
- .no-flex & {
- float: left;
- }
- @media (min-width: 44em) {
- width: 25%;
- .no-js &,
- .no-flex & {
- margin-right: 3%;
- }
- }
- }
-
- .split-list {
- @include flex-container();
- @include justify-content(flex-start);
- @include flex-align(flex-start);
- @include flex-direction(row);
- @include flex-wrap(wrap);
-
- li {
- width: 50%;
- -webkit-flex-grow: 1;
- -ms-flex-grow: 1;
- flex-grow: 1;
- }
- }
-
- .councils-compatibility__item--wide {
- width: 100%;
- .no-js &,
- .no-flex & {
- float: left;
- }
- @media (min-width: 44em) {
- width: 50%;
- .no-js &,
- .no-flex & {
- margin-right: 3%;
- }
- }
- }
-
- .councils-pricing {
- padding: 2em 0;
- margin-bottom: 3em;
- h2 {
- font-size: 2.5em;
- text-align: center;
- color: #FEC32B;
- }
- }
-
- .pricing-table {
- th, td {
- text-align: left;
- font-weight: normal;
- vertical-align: middle;
- border: 1px solid #e9e9e9;
- }
-
- th {
- background-color: #F7F6F5;
-
- &.blank {
- background-color: transparent;
- border: none;
- }
- }
-
- th[scope="row"] {
- @media (min-width: 44em) {
- width: 30%;
- }
- }
-
- td {
- width: 15%;
- line-height: 1.5em;
- }
-
- span {
- display: inline-block;
- padding: 0.666em 1em;
- box-sizing: border-box;
- }
- }
-
- .pricing-table__tier-name {
- font-weight: 500;
- font-size: 1.25em;
- }
-
- .pricing-table__feature-name {
- text-align: left;
- font-size: 0.875em;
- }
-
- .pricing-table__feature-value {
- font-size: 0.875em;
- line-height: 1.4em;
- width: 100%;
- }
-
- .pricing-table__show-more {
- td {
- border: none;
- padding: 2em 1em;
- text-align: center;
- }
-
- .button {
- display: inline-block;
- padding: 0.6em 1.5em;
- text-align: center;
-
- border-radius: 3px;
- border: none;
- background-color: #F7F6F5;
- color: #333;
- font-size: 0.875em;
- line-height: 1.5em;
- font-weight: normal;
-
- &:hover,
- &:active,
- &:focus {
- text-decoration: none;
- background-color: #FED876;
- }
- }
- }
-
- .pricing-table__prices {
- td {
- background-color: $fms-pink;
- color: #fff;
- border-color: darken($fms-pink, 10%);
- }
- }
-
- .pricing-table__price {
- font-weight: 500;
- font-size: 1.25em;
- }
-
- .boolean-icon {
- margin: 0 auto;
- display: inline-block;
- font-style: normal;
- width: 24px;
- height: 24px;
- background-image: url('images/fms-for-councils/boolean-no.svg');
- background-repeat: no-repeat;
- background-position: center;
- text-indent: 100%;
- white-space: nowrap;
- overflow: hidden;
- }
-
- .boolean-icon--no {
- background-image: url('images/fms-for-councils/boolean-no.svg');
- }
-
- .boolean-icon--yes {
- background-image: url('images/fms-for-councils/boolean-yes.svg');
- }
-
- // Verticalise the table on narrow screens
- @media (max-width: 54em) {
- .pricing-table {
- &,
- tr,
- th,
- th[scope="row"],
- td,
- tbody,
- span {
- display: block;
- width: auto;
- }
-
- thead {
- display: none;
- }
-
- th,
- td {
- @include clearfix();
- border: none;
- }
-
- tr {
- border: 1px solid #e9e9e9;
- }
-
- .pricing-table__show-more tr {
- border: none;
- }
-
- tr + tr {
- border-top: none;
- }
-
- td[data-tier-name] {
- &:before {
- content: attr(data-tier-name);
- display: block;
- font-size: 0.875em;
- line-height: 1.4em;
- color: darken(#FEC32B, 15%);
- float: left;
- padding: 0.666em 1em;
- width: 5em;
- }
- }
-
- // Collapse padding between "rows" of a feature
- td + td .pricing-table__feature-value,
- td + td[data-tier-name]:before {
- padding-top: 0;
- }
-
- .boolean-icon {
- margin: -0.33em 0;
- }
- }
- }
-
- .council-case-studies {
- margin-bottom: 3em;
- border-top: 1px solid #e9e9e9;
- background-color: #60B6C7;
- padding: 2em 0;
- h2 {
- text-align: center;
- color: #fff;
- margin-bottom: 1.5em;
- }
- }
-
- .council-case-studies__grid {
- .flex & {
- @include flex-container();
- @include justify-content(space-around);
- @include flex-wrap(wrap);
- @include flex-align(center);
- }
- .no-js &,
- .no-flex & {
- @include clearfix();
- }
- @media (min-width: 44em) {
- @include flex-wrap(nowrap);
- @include justify-content(space-between);
- }
- margin: 0 3.3334%;
- }
-
- .council-case-studies__grid-item {
- width: 100%;
- max-width: 380px;
- .no-js &,
- .no-flex & {
- float: left;
- margin: 0 auto;
- }
- @media (min-width: 44em) {
- width: 31%;
- .no-js &,
- .no-flex & {
- margin-right: 2%;
- max-width: none;
- }
- }
- }
-
- .council-case-studies__case-study {
- background-repeat: no-repeat;
- background-size: cover;
- background-position: center;
- a {
- display: block;
- color: #fff;
- font-size: 1.25em;
- display: block;
- background-color: rgba(0,0,0,0.3);
- padding: 5em 2em;
- text-align: center;
- margin-bottom: 1em;
- @media (min-width: 30em) {
- margin-bottom: 4em;
- padding: 3em 2em;
- }
- @media (min-width: 48em) {
- padding: 5em 2em;
- }
- &:hover,
- &:active,
- &:focus {
- text-decoration: none;
- background-color: rgba(0,0,0,0.1);
- text-shadow: 0 2px 1px rgba(0,0,0,0.8);
- }
- }
- }
-
- .council-case-studies__case-study--bristol {
- background-image: url('images/fms-for-councils/bristol.jpg');
- }
-
- .council-case-studies__case-study--zurich {
- background-image: url('images/fms-for-councils/zurich.jpg');
- }
-
- .council-case-studies__case-study--barnet {
- background-image: url('images/fms-for-councils/barnet.jpg');
- }
-
- .radio-as-buttons {
- label {
- margin-right: 0.5em;
- margin-top: 0;
- font-size: 0.875em;
- }
- input {
- margin-right: 1em;
- }
- }
-
.checkbox-label {
margin-left: 25px;
}
@@ -794,60 +154,6 @@ $fms-pink: #E65376;
color: #777;
}
- .council-order {
- position: relative;
- background-color: #F7F6F5;
- border: 1px solid #e9e9e9;
- border-left: 0;
- border-right: 0;
- padding: 4em 0;
- h2 {
- color: $fms-pink;
- font-size: 2.5em;
- }
- }
-
- .council-order__form {
- max-width: 48em;
- padding-bottom: 3em;
- position: relative;
- z-index: 1;
- label {
- font-weight: normal;
- }
- textarea {
- height: 10em;
- }
- textarea,
- input[type="text"],
- input[type="tel"],
- input[type="email"] {
- border: 1px solid #ccc;
- width: 100%;
- padding: 0.5em;
- border-radius: 3px;
- font-size: 1em;
- box-sizing: border-box;
- @media (min-width: 44em) {
- max-width: 27em;
- }
- }
- input[type="submit"] {
- background-image: none;
- background-color: $fms-pink;
- color: #fff;
- border: 0;
- text-transform: none;
- padding: 0.6em 1.5em;
- font-family: 'Rubik', sans-serif;
- &:hover,
- &:active,
- &:focus {
- background-color: desaturate(darken($fms-pink, 10%), 10%);
- }
- }
- }
-
.form-group {
position: relative;
@media (min-width: 44em) {
@@ -874,28 +180,6 @@ $fms-pink: #E65376;
}
}
- .council-order__screenshot {
- display: none;
- @media (min-width: 44em) {
- display: block;
- background-image: url('images/fms-for-councils/window-mockup.jpg');
- background-repeat: no-repeat;
- background-position: top left;
- background-size: cover;
- height: 750px;
- position: absolute;
- z-index: 0;
- right: 0;
- width: 500px;
- bottom: 50px;
- }
- @media (min-width: 82em) {
- width: 748px;
- right: 46px;
- }
-
- }
-
.credits {
color: #777;
border-top: 1px solid #e9e9e9;
diff --git a/web/cobrands/fixmystreet.com/front.js b/web/cobrands/fixmystreet.com/front.js
new file mode 100644
index 000000000..f544fb657
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/front.js
@@ -0,0 +1,38 @@
+(function(){
+ if (!document.querySelector) { return; }
+ if ( -1 !== navigator.userAgent.indexOf('Google Page Speed')) { return; }
+ if (document.cookie.indexOf('has_seen_country_message') !== -1) { return; }
+
+ /* Front page banner for other countries */
+ var request = new XMLHttpRequest();
+ request.open('GET', 'https://gaze.mysociety.org/gaze-rest?f=get_country_from_ip', true);
+ request.onreadystatechange = function() {
+ if (this.readyState === 4) {
+ if (this.status >= 200 && this.status < 400) {
+ var data = this.responseText;
+ if ( data && data != 'GB\n' ) {
+ var banner = document.createElement('div');
+ banner.className = 'top_banner top_banner--country';
+ var close = document.createElement('a');
+ close.className = 'top_banner__close';
+ close.innerHTML = 'Close';
+ close.href = '#';
+ close.onclick = function(e) {
+ document.querySelector('.top_banner--country').style.display = 'none';
+ var t = new Date(); t.setFullYear(t.getFullYear() + 1);
+ document.cookie = 'has_seen_country_message=1; path=/; expires=' + t.toUTCString();
+ };
+ var p = document.createElement('p');
+ p.innerHTML = 'This site is for reporting <strong>problems in the UK</strong>. There are FixMyStreet sites <a href="http://fixmystreet.org/sites/">all over the world</a>, or you could set up your own using the <a href="http://fixmystreet.org/">FixMyStreet Platform</a>.';
+ banner.appendChild(close);
+ banner.appendChild(p);
+ document.body.insertBefore(banner, document.body.firstChild);
+ document.querySelector('.top_banner--country').style.display = 'block';
+ }
+ }
+ }
+ };
+ request.send();
+ request = null;
+
+})();
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/all-yellow.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/all-yellow.jpg
deleted file mode 100644
index e56ab32d2..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/all-yellow.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png
deleted file mode 100644
index 74b5c7345..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg
deleted file mode 100644
index 7d32cfb71..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>authority</title><g fill="#E65376" fill-rule="evenodd"><path d="M54.214 57.693h-4.29v-4.26h-3.06v4.26h-4.29v-25.74l11.64 2.62v23.12zm-36.892-37.67l21.928-3.41v41.08h-8.382v-8.32h-5.163v8.32h-8.383v-37.67zm39.487 9.6l-13.27-3.25c-.327-.08-.653-.09-.966-.05v-10.6c.713-.58 1.116-1.5.965-2.47-.227-1.45-1.59-2.45-3.038-2.22l-25.25 3.93c-1.453.22-2.445 1.58-2.22 3.03.107.69.466 1.26.966 1.66v39.7c0 .92.743 1.66 1.662 1.66h40.217c.917 0 1.66-.74 1.66-1.66v-24.87c.588-.35 1.045-.92 1.22-1.64.35-1.43-.522-2.87-1.948-3.22z"/><path d="M25.705 26.403h5.163v-5.03h-5.163M25.705 35.503h5.163v-5.03h-5.163M25.705 44.603h5.163v-5.03h-5.163M46.864 39.433h3.06v-2.98h-3.06M46.864 44.823h3.06v-2.98h-3.06M46.864 50.213h3.06v-2.98h-3.06"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg
deleted file mode 100644
index 3cc613005..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>automated-instruction</title><g fill="#E65376" fill-rule="evenodd"><path d="M47.666 27.09c-1.9 0-3.44-1.54-3.44-3.44s1.54-3.44 3.44-3.44 3.44 1.54 3.44 3.44-1.54 3.44-3.44 3.44zm10.816-5.19l-2.878-.76c-.152-.48-.348-.94-.58-1.38l1.504-2.58c.477-.88.683-1.79 0-2.47-.683-.69-1.646-.47-2.475 0l-2.62 1.52c-.422-.21-.863-.4-1.323-.54l-.775-2.94c-.29-.96-.785-1.75-1.75-1.75-.968 0-1.493.84-1.752 1.75l-.79 3c-.43.15-.84.32-1.234.53l-2.695-1.57c-.885-.48-1.792-.69-2.474 0-.684.68-.464 1.64 0 2.47l1.594 2.73c-.19.38-.358.77-.49 1.18l-3.058.81c-.963.29-1.75.78-1.75 1.75s.834 1.49 1.75 1.75l3.058.81c.132.4.298.8.49 1.18l-1.593 2.73c-.477.88-.684 1.79 0 2.47.683.69 1.645.47 2.475 0l2.694-1.57c.392.21.804.38 1.232.53l.79 3c.29.96.785 1.75 1.752 1.75.966 0 1.492-.84 1.75-1.75l.776-2.94c.46-.14.9-.33 1.323-.54l2.62 1.52c.886.48 1.792.69 2.475 0 .684-.68.464-1.64 0-2.47l-1.503-2.58c.232-.44.428-.9.58-1.38l2.877-.76c.963-.29 1.752-.78 1.752-1.75s-.836-1.49-1.752-1.75z"/><path d="M27.5 48.78c-2.76 0-4.998-2.24-4.998-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm14.752-6.75l-2.922-.77c-.087-.41-.197-.82-.326-1.21l2.146-2.13c.692-.73 1.127-1.56.642-2.39-.484-.84-1.47-.88-2.392-.64l-2.927.79c-.278-.3-.57-.6-.877-.87l.798-2.93c.23-.98.195-1.91-.643-2.39-.836-.49-1.707-.03-2.39.64l-2.128 2.14c-.395-.12-.798-.23-1.21-.32l-.77-2.92c-.29-.97-.784-1.75-1.75-1.75-.967 0-1.492.83-1.75 1.75l-.77 2.92c-.412.09-.815.2-1.21.32l-2.13-2.14c-.733-.69-1.553-1.13-2.39-.64-.84.48-.876 1.47-.642 2.39l.8 2.93c-.31.27-.602.56-.88.87l-2.927-.79c-.98-.24-1.908-.2-2.39.64-.485.83-.024 1.71.64 2.39l2.144 2.13c-.128.39-.238.8-.325 1.21l-2.92.77c-.964.29-1.752.78-1.752 1.75 0 .96.835 1.49 1.75 1.75l2.922.77c.087.41.197.81.325 1.21l-2.145 2.13c-.69.73-1.124 1.55-.64 2.39.483.84 1.468.87 2.39.64l2.928-.8c.278.31.57.6.878.88l-.798 2.93c-.23.98-.197 1.91.64 2.39.84.48 1.71.02 2.392-.64l2.13-2.15c.394.13.798.24 1.21.33l.77 2.92c.288.96.783 1.75 1.75 1.75.966 0 1.49-.84 1.75-1.75l.77-2.92c.412-.09.816-.2 1.21-.33l2.13 2.15c.73.69 1.553 1.12 2.39.64.838-.48.874-1.47.642-2.39l-.798-2.93c.307-.28.6-.57.877-.88l2.927.8c.98.23 1.908.2 2.392-.64.485-.84.023-1.71-.642-2.39l-2.146-2.13c.13-.4.24-.8.326-1.21l2.922-.77c.963-.29 1.75-.79 1.75-1.75 0-.97-.834-1.49-1.75-1.75z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.png
deleted file mode 100644
index 1a2fc0f56..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet.jpg
deleted file mode 100644
index f25f0418d..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg
deleted file mode 100644
index 3e5743da8..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Artboard</title><path d="M5 10h14v4H5z" fill="#EFECEA" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg
deleted file mode 100644
index fa532daeb..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Artboard Copy</title><g fill="#FED876" fill-rule="evenodd"><path d="M7 16.763L18.764 5l2.828 2.828L9.83 19.592z"/><path d="M6.828 11l5.02 5.02-2.827 2.83L4 13.828z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg
deleted file mode 100644
index 92edb9b78..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>brand</title><g fill="#E65376" fill-rule="evenodd"><path d="M27.308 28.975c-.42-.42-1.097-.45-1.554-.07l-1.388 1.18c-9.047 7.56-12.396 8.32-12.4 8.32-.427.07-.78.37-.91.78-.133.41-.025.86.28 1.17l2.065 2.07c.358.35.903.43 1.346.2l3.55-1.85-2.267 2.83c-.37.45-.332 1.11.082 1.53l1.722 1.72c.347.34.874.43 1.315.22l2.786-1.35-1.36 2.77c-.218.44-.13.97.217 1.32l.888.88c.393.4 1.01.45 1.467.14l3.127-2.18-1.998 3.43c-.262.45-.187 1.02.182 1.39l.82.82c.42.42 1.09.45 1.545.08l4.002-3.31-2.515 5.17c-.213.44-.125.97.222 1.32l2.21 2.2c.298.3.737.4 1.144.28.403-.12.71-.47.797-.88.004-.02.488-2.18 4.54-7.64l5.1-6.04c.385-.45.358-1.13-.066-1.55l-14.95-14.95M51.68 17.025c.7-.7 1.83-.7 2.528 0 .696.7.696 1.83 0 2.53-.7.69-1.83.69-2.528 0-.7-.7-.7-1.83 0-2.53zm-5.478 13.9l11.9-7.48c2.844-2.84 2.844-7.47 0-10.32-2.844-2.84-7.473-2.84-10.353.04l-7.41 11.81s-1.575 2.13-2.882 1.82l-1.817-1.82c-2.115-2.11-4.145-1.33-4.965-.59l-1.236 1.23c-.45.45-.45 1.18 0 1.63l14.413 14.41c.45.45 1.175.45 1.624 0l1.276-1.27c.704-.78 1.478-2.82-.635-4.93l-1.69-1.69c-.275-1.19 1.456-2.59 1.774-2.84z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg
deleted file mode 100644
index 01cc7f83e..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>bringyourown</title><g fill="#E65376" fill-rule="evenodd"><path d="M58.325 56.036H54.18c-.957 0-1.728.773-1.728 1.727 0 .954.77 1.727 1.728 1.727h4.145c.952 0 1.725-.773 1.725-1.727 0-.954-.773-1.727-1.725-1.727M47.96 56.036H43.82c-.956 0-1.73.773-1.73 1.727 0 .954.774 1.727 1.73 1.727h4.143c.956 0 1.73-.773 1.73-1.727 0-.954-.774-1.727-1.73-1.727M27.236 56.036H23.09c-.952 0-1.725.773-1.725 1.727 0 .954.773 1.727 1.726 1.727h4.146c.955 0 1.727-.773 1.727-1.727 0-.954-.772-1.727-1.727-1.727M16.873 56.036H12.73c-.954 0-1.73.773-1.73 1.727 0 .954.776 1.727 1.73 1.727h4.143c.954 0 1.727-.773 1.727-1.727 0-.954-.773-1.727-1.727-1.727M25.127 41.04v-4.135c2.596 1.472 6.656 2.23 10.687 2.23 4.033 0 8.092-.76 10.688-2.23v4.135c0 1.146-3.984 3.24-10.507 3.28-.127-.038-.642-.04-.76-.01-6.28-.12-10.108-2.147-10.108-3.27zm21.375-23.96c0 1.16-4.055 3.283-10.688 3.283-6.63 0-10.687-2.124-10.687-3.282 0-1.157 4.058-3.282 10.687-3.282 6.633 0 10.688 2.125 10.688 3.283zM25.127 28.92c2.596 1.47 6.656 2.23 10.687 2.23 4.033 0 8.092-.76 10.688-2.232v4.135c0 1.158-4.055 3.283-10.688 3.283-6.63 0-10.687-2.125-10.687-3.283V28.92zm0-7.988c2.596 1.472 6.656 2.23 10.687 2.23 4.033 0 8.092-.76 10.688-2.23v4.134c0 1.158-4.055 3.284-10.688 3.284-6.63 0-10.687-2.126-10.687-3.284v-4.134zM37 55.352v-8.254c6.294-.232 12.302-2.303 12.302-6.058V17.132l-.002-.018.002-.033c0-3.99-6.784-6.08-13.488-6.08-6.7 0-13.484 2.09-13.484 6.08v23.96c0 3.67 5.74 5.73 11.872 6.038v8.274c-.834.485-1.402 1.378-1.402 2.41 0 1.544 1.257 2.8 2.8 2.8 1.545 0 2.802-1.256 2.802-2.8 0-1.032-.568-1.925-1.4-2.41z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png
deleted file mode 100644
index 27c05d66f..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol.jpg
deleted file mode 100644
index 9db9ce8e0..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png
deleted file mode 100644
index 4cd1c60a4..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg
deleted file mode 100644
index 354ebb025..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>customise</title><g fill="#E65376" fill-rule="evenodd"><path d="M54.846 58.906l-5.28-7.96 3.102-2.06 5.282 7.95-3.104 2.07zm-23.733-35.75l-5.35-8.05 3.104-2.06 5.35 8.05-3.104 2.06zm28.808 33.37l-6.198-9.33-.002-.01-17.527-26.39h-.004-.002l-6.268-9.44c-.246-.38-.81-.47-1.218-.2l-4.614 3.06c-.422.28-.554.81-.297 1.2l6.265 9.43c.002 0 .004 0 .005.01h.002l17.536 26.41s.003 0 .005.01l6.19 9.32c.148.22.403.36.683.36.19 0 .375-.06.535-.17l4.614-3.06c.42-.28.553-.8.297-1.2zM24.984 33.536c.065 0 .13-.02.183-.06.106-.08.152-.21.113-.34l-.993-3.24 2.73-2.05c.106-.08.15-.22.11-.34-.04-.13-.157-.21-.288-.22l-3.43-.07-1.124-3.2c-.044-.12-.16-.21-.293-.21-.13 0-.247.09-.29.21l-1.126 3.2-3.428.07c-.133.01-.25.09-.29.22-.04.12.004.26.11.34l2.73 2.05-.993 3.24c-.038.13.007.26.113.34.107.08.25.08.358 0l2.815-1.93 2.816 1.93c.053.04.112.06.174.06M29.335 39.356l-2.295-.05-.754-2.14c-.028-.08-.107-.14-.194-.14-.088 0-.166.06-.195.14l-.753 2.14-2.296.05c-.087 0-.165.06-.192.14-.027.09.003.18.072.23l1.827 1.37-.664 2.17c-.024.09.007.18.078.23.07.05.168.05.24 0l1.884-1.29 1.884 1.29c.036.03.077.04.117.04.044 0 .086-.01.123-.04.07-.05.1-.14.076-.23l-.665-2.17 1.828-1.37c.07-.05.1-.14.073-.23-.028-.08-.105-.14-.193-.14M16.795 35.306l-1.645-.03-.54-1.54c-.02-.06-.078-.1-.14-.1-.063 0-.12.04-.14.1l-.54 1.54-1.645.03c-.063 0-.12.05-.138.1-.02.06.002.13.052.17l1.31.98-.478 1.56c-.018.06.003.12.055.16.05.04.12.04.17 0l1.353-.92 1.35.92c.027.02.056.03.085.03.03 0 .062-.01.088-.03.05-.04.072-.1.054-.16l-.477-1.56 1.31-.98c.052-.04.073-.11.054-.17-.02-.05-.076-.1-.14-.1"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg
deleted file mode 100644
index 84d98dd45..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>dashboard</title><path d="M13.844 23.23h-1.472c-.758 0-1.372-.61-1.372-1.37 0-.75.614-1.37 1.372-1.37h1.473C14.4 19.04 15.803 18 17.447 18c1.643 0 3.047 1.04 3.602 2.49h.913c.555-1.45 1.958-2.49 3.603-2.49 1.643 0 3.047 1.04 3.6 2.49h.917c.555-1.45 1.957-2.49 3.602-2.49 1.644 0 3.047 1.04 3.602 2.49h21.995c.757 0 1.37.62 1.37 1.37 0 .76-.613 1.37-1.37 1.37H37.287c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.048-1.04-3.602-2.49h-.915c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.914c-.556 1.45-1.96 2.49-3.603 2.49-1.644 0-3.05-1.04-3.603-2.49zM59.282 34.7c.757 0 1.37.61 1.37 1.37 0 .76-.613 1.37-1.37 1.37h-9.816c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.913c-.555 1.45-1.958 2.49-3.603 2.49-1.643 0-3.048-1.04-3.602-2.49H21.05c-.556 1.45-1.96 2.49-3.603 2.49-1.644 0-3.05-1.04-3.603-2.49h-1.472c-.758 0-1.372-.61-1.372-1.37 0-.76.614-1.37 1.372-1.37h1.473c.553-1.45 1.958-2.49 3.602-2.49 1.643 0 3.047 1.04 3.602 2.49H34.14c.555-1.45 1.96-2.49 3.602-2.49 1.645 0 3.048 1.04 3.602 2.49h.915c.555-1.45 1.96-2.49 3.604-2.49 1.644 0 3.047 1.04 3.6 2.49h9.818zm-1.697 14.21h1.697c.757 0 1.37.61 1.37 1.37 0 .76-.613 1.37-1.37 1.37h-1.697c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.914c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.913c-.555 1.45-1.958 2.49-3.603 2.49-1.643 0-3.048-1.04-3.602-2.49h-21.77c-.758 0-1.372-.61-1.372-1.37 0-.76.614-1.37 1.372-1.37h21.77c.555-1.45 1.96-2.49 3.602-2.49 1.645 0 3.048 1.04 3.602 2.49h.915c.555-1.45 1.96-2.49 3.604-2.49 1.644 0 3.047 1.04 3.6 2.49h.916c.554-1.45 1.958-2.49 3.603-2.49 1.644 0 3.047 1.04 3.602 2.49z" fill="#E65376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png
deleted file mode 100644
index f58fe121a..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/download-icon.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/download-icon.png
deleted file mode 100644
index 2bd373f70..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/download-icon.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg
deleted file mode 100644
index 85243faeb..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>end-to-end</title><g fill="#E65376" fill-rule="evenodd"><path d="M51.637 44.288l-11.567 1.84c-.382.06-.698.33-.818.7-.12.36-.022.77.252 1.04l2.712 2.71c-4.223 1.11-8.826.3-12.516-2.49-1.06-.8-2.565-.59-3.364.47-.8 1.06-.59 2.56.468 3.36 3.5 2.65 7.617 3.96 11.727 3.96 2.54 0 5.075-.52 7.463-1.52l3.244 3.25c.197.19.46.3.728.3.108 0 .215-.02.32-.05.367-.12.637-.44.698-.82l1.833-11.57c.052-.32-.056-.65-.29-.89-.232-.23-.562-.34-.89-.29M50.006 20.738l1.12-4.45c.097-.38-.028-.78-.32-1.03-.29-.26-.7-.33-1.06-.18l-10.87 4.35c-.307.13-.536.39-.616.71-.08.32-.004.66.208.91l7.505 8.99c.198.24.488.37.79.37.075 0 .154-.01.23-.03.377-.08.674-.37.768-.75l.938-3.71c3.074 3.03 4.74 7.33 4.294 11.86-.13 1.32.835 2.5 2.156 2.63.08.01.16.01.237.01 1.22 0 2.267-.93 2.39-2.17.684-6.97-2.384-13.53-7.77-17.51M29.044 31.778c-.264-.29-.665-.4-1.037-.3l-3.692 1.04c1.102-4.22 4.053-7.82 8.27-9.68 1.216-.53 1.77-1.95 1.235-3.16-.534-1.22-1.952-1.77-3.166-1.24-6.48 2.85-10.705 8.81-11.483 15.52l-4.417 1.24c-.374.1-.657.41-.733.79-.076.38.068.77.37 1.01l9.19 7.26c.182.15.407.23.636.23.093 0 .187-.02.28-.04.315-.09.572-.33.686-.64l4.07-10.98c.133-.36.053-.77-.208-1.05"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png
deleted file mode 100644
index 0f202c7e7..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png
deleted file mode 100644
index 376623469..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/hart.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/hart.png
deleted file mode 100644
index 362df3dc8..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/hart.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/highway.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/highway.jpg
deleted file mode 100644
index 98f53617b..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/highway.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg
deleted file mode 100644
index 6c9b6c0fa..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>inspection</title><g fill="#E65376" fill-rule="evenodd"><path d="M39.66 54.65l-2.232 2.2-4.06-4.01c-.323-.32-.742-.48-1.16-.48-.42 0-.84.16-1.16.48l-4.06 4.01-4.06-4.01c-.644-.63-1.677-.63-2.32 0l-3.904 3.86-2.4-2.38V15.3H39.66v1.6c1.168.42 2.276.96 3.3 1.63v-4.88c0-.91-.737-1.65-1.65-1.65H12.652c-.91 0-1.652.74-1.652 1.65v41.36c0 .45.178.87.492 1.18l4.05 4c.645.64 1.677.64 2.323 0l3.903-3.86 4.058 4.01c.645.64 1.678.64 2.322 0l4.06-4.01 4.06 4.01c.322.32.74.48 1.16.48.42 0 .838-.16 1.16-.48l3.884-3.83c.313-.31.49-.73.49-1.17v-9.95c-1.026.66-2.134 1.22-3.302 1.63v7.63"/><path d="M39.66 40.65c-1.558.97-3.39 1.53-5.36 1.54-3.436-.01-6.464-1.71-8.317-4.31h9.857c.91 0 1.65-.74 1.65-1.65 0-.91-.74-1.65-1.65-1.65H24.558c-.042 0-.082.01-.125.01-.225-.84-.358-1.72-.36-2.63.002-.93.138-1.82.37-2.68.04.01.075.02.115.02H35.84c.91 0 1.65-.74 1.65-1.65 0-.92-.74-1.66-1.65-1.66h-9.826c1.855-2.57 4.87-4.25 8.287-4.26 1.97.01 3.802.57 5.36 1.53 1.337.83 2.467 1.95 3.3 3.28.988 1.57 1.568 3.43 1.572 5.42-.004 1.99-.584 3.85-1.57 5.42-.835 1.33-1.965 2.45-3.302 3.27zm7.993-8.69c0-4.07-1.825-7.7-4.692-10.15-.985-.84-2.094-1.54-3.3-2.07-1.64-.72-3.452-1.13-5.36-1.13-3.378 0-6.455 1.27-8.806 3.34h-6.832c-.365 0-.66.29-.66.66 0 .36.295.66.66.66h5.522c-1.254 1.46-2.193 3.19-2.727 5.09h-2.795c-.365 0-.66.3-.66.66 0 .31.204.55.48.63.057.02.117.04.18.04h2.5c-.128.74-.208 1.49-.208 2.27 0 1.01.12 1.99.333 2.93h-2.625c-.025 0-.048.01-.074.01-.328.04-.586.31-.586.65 0 .36.295.66.66.66h2.994c.665 1.98 1.774 3.76 3.22 5.2h-6.214c-.365 0-.66.3-.66.66 0 .36.295.66.66.66h7.778c2.207 1.61 4.92 2.58 7.86 2.58 1.908 0 3.72-.41 5.36-1.13 1.206-.53 2.315-1.23 3.3-2.07 2.868-2.45 4.693-6.09 4.693-10.15zM59.687 51.88l-11.68-11.69-.04-.04c-1.236 2.06-2.916 3.82-4.92 5.14l.03.03L54.66 56.91c1.147 1.14 3.025 1.14 4.17-.01l.857-.85c1.148-1.15 1.148-3.03 0-4.17"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg
deleted file mode 100644
index 9fdf394a5..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>integrated</title><path d="M54.917 19.475c-1.983 0-3.59-1.598-3.59-3.587 0-1.977 1.607-3.587 3.59-3.587 1.983 0 3.59 1.61 3.59 3.588 0 1.99-1.607 3.587-3.59 3.587zm-18.91 0c-1.983 0-3.59-1.598-3.59-3.587 0-1.977 1.607-3.587 3.59-3.587 1.982 0 3.588 1.61 3.588 3.588 0 1.99-1.606 3.587-3.588 3.587zm-18.91 0c-1.98 0-3.59-1.598-3.59-3.587 0-1.977 1.61-3.587 3.59-3.587 1.984 0 3.588 1.61 3.588 3.588 0 1.99-1.604 3.587-3.59 3.587zm18.91 25.203c4.21 0 7.63 3.433 7.63 7.636 0 4.214-3.42 7.635-7.63 7.635s-7.63-3.422-7.63-7.636c0-4.203 3.42-7.636 7.63-7.636zm-16.86-16.704c0 .9.274 1.468.82 1.682.55.224 1.187.33 1.916.33 1.26 0 2.414-.13 3.457-.39 1.044-.272 2.098-.402 3.158-.402 2.355 0 4.094.343 5.22 1.018 1.13.675 1.857 1.49 2.19 2.462h.2c.33-.97 1.062-1.787 2.186-2.462 1.128-.675 2.87-1.018 5.222-1.018 1.093 0 2.12.13 3.085.402.96.26 1.954.39 2.984.39.86 0 1.624-.106 2.286-.33.664-.214.997-.782.997-1.682 0-.532.115-1.04.346-1.527.232-.473.78-.722 1.64-.722.5 0 .906.12 1.22.355.312.237.555.52.722.876.164.356.28.734.347 1.15.066.4.1.792.1 1.135 0 1.292-.325 2.357-.97 3.21-.647.852-1.486 1.503-2.513 1.953-1.028.46-2.172.722-3.43.793-1.26.07-2.504-.024-3.73-.284-2.52-.533-4.54-.52-6.07.023-1.523.533-2.283 1.54-2.283 3.007 0 .675-.22 1.208-.65 1.598-.427.403-.96.592-1.59.592-.63 0-1.16-.19-1.59-.592-.432-.39-.647-.923-.647-1.598 0-1.468-.763-2.474-2.287-3.007-1.525-.544-3.55-.556-6.067-.023-1.23.26-2.472.355-3.732.284-1.258-.07-2.404-.332-3.43-.793-1.027-.45-1.866-1.1-2.512-1.954-.647-.853-.968-1.918-.968-3.21 0-.342.032-.733.096-1.135.068-.415.184-.793.35-1.15.166-.354.397-.638.698-.875.298-.236.694-.355 1.19-.355.897 0 1.46.25 1.692.722.233.486.347.995.347 1.527z" fill="#E95376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg
deleted file mode 100644
index ce9a3dc5b..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>intelligent-routing</title><g fill="#E65376" fill-rule="evenodd"><path d="M31.97 61.13h7.047v-6.3H31.97M35.494 24.19c-2.43 0-4.397-1.91-4.397-4.26 0-2.35 1.968-4.25 4.397-4.25 2.43 0 4.397 1.9 4.397 4.25s-1.967 4.26-4.396 4.26zm0 11.89c-2.43 0-4.397-1.9-4.397-4.25s1.968-4.26 4.397-4.26c2.43 0 4.397 1.91 4.397 4.26 0 2.35-1.967 4.25-4.396 4.25zm0 11.9c-2.43 0-4.397-1.91-4.397-4.26 0-2.35 1.968-4.26 4.397-4.26 2.43 0 4.397 1.91 4.397 4.26 0 2.35-1.967 4.26-4.396 4.26zM54.23 25.19c0-.38-.31-.69-.693-.69-.045 0-.084.01-.126.02-.053-.01-.107-.02-.164-.02h-7.15l.237-5.63c4.694-1.22 7.898-3.94 7.898-7.17 0-.39-.31-.7-.693-.7-.045 0-.084.02-.126.03-.053-.02-.107-.03-.164-.03H17.694c-.086 0-.167.02-.244.05-.025.01-.046.02-.07.04-.05.02-.096.05-.138.09l-.06.06c-.038.04-.07.09-.097.14-.01.02-.026.04-.034.06 0 .01-.006.01-.008.02-.027.07-.038.15-.04.23 0 0-.002 0-.002.01 0 3.18 3.094 5.85 7.652 7.1l.24 5.7h-7.198c-.086 0-.167.02-.244.04-.025.01-.046.03-.07.04-.05.02-.096.05-.138.09l-.06.06c-.038.04-.07.09-.097.14-.01.02-.026.04-.034.06 0 .01-.006.02-.008.02-.027.08-.038.15-.04.23l-.002.01c0 3.31 3.35 6.09 8.228 7.26l.192 4.54h-7.032c-.085 0-.167.02-.244.05l-.07.03c-.05.03-.096.06-.14.1-.02.02-.04.03-.057.05-.04.05-.07.1-.098.15-.012.02-.026.04-.035.06-.003.01-.007.01-.01.02-.026.07-.038.15-.04.22v.01c0 3.28 3.275 6.03 8.06 7.22l.14 3.36c0 2.41 1.967 4.38 4.382 4.38H40.71c2.416 0 4.382-1.97 4.38-4.35l.14-3.33c4.92-1.16 8.307-3.94 8.307-7.28 0-.38-.31-.69-.695-.69-.044 0-.083.02-.126.03-.053-.02-.107-.03-.164-.03h-6.985l.19-4.49c5.007-1.14 8.474-3.94 8.474-7.31z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/iphone.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/iphone.png
deleted file mode 100644
index 68557a2a2..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/iphone.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg
deleted file mode 100644
index c4f39ac40..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>map-centric</title><g fill="#E65376" fill-rule="evenodd"><path d="M59.06 13.376l-10.12-2.333c-.363-.083-.745-.044-1.086.11L35.997 16.58l-10.91-4.55c-.406-.167-.86-.174-1.268-.015L12.08 16.59c-.652.253-1.08.88-1.08 1.58V50.38c0 .56.275 1.085.738 1.4.46.316 1.05.383 1.57.18l11.106-4.327 10.96 4.573c.21.085.432.13.654.13.24 0 .482-.052.706-.154l.88-.402-1.505-3.04-.113.05-10.91-4.55c-.208-.086-.43-.13-.653-.13-.208 0-.417.04-.615.115L14.39 47.9V19.33l10.024-3.908 10.96 4.572c.438.182.93.174 1.36-.023l12.007-5.493 8.244 1.9V45.11l-1.598-.367-.806 1.63c-.127.286-.266.567-.418.842l-.026.054-.295.596 4.46 1.027c.502.116 1.03-.004 1.435-.326.404-.32.64-.81.64-1.326V15.03c0-.79-.545-1.475-1.315-1.654"/><path d="M23.756 19.79v20.44c0 .376.304.68.678.68.374 0 .68-.304.68-.68V19.79c0-.375-.306-.68-.68-.68-.374 0-.678.305-.678.68M35.35 23.747v10.287c0 .375.304.678.678.678.374 0 .68-.303.68-.678V23.747c0-.375-.306-.68-.68-.68-.374 0-.68.305-.68.68M49.464 30.76V18.34c0-.375-.304-.68-.68-.68-.374 0-.677.305-.677.68V30.76c0 .375.303.68.678.68.375 0 .68-.305.68-.68M44.76 44.436c-1.862 0-3.372-1.51-3.372-3.37s1.51-3.37 3.37-3.37c1.863 0 3.37 1.51 3.37 3.37s-1.507 3.37-3.37 3.37zm0-10.402c-4.43 0-8.023 3.592-8.023 8.02 0 1.462.4 2.83 1.08 4.01h-.006l.767 1.548 6.18 12.49 6.366-12.863.582-1.175h-.008c.356-.615.63-1.283.816-1.984.17-.648.268-1.326.268-2.026 0-4.428-3.593-8.02-8.02-8.02z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg
deleted file mode 100644
index 5623cc577..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><title>Group 2 Copy</title><g fill="#333" fill-rule="evenodd"><path d="M32 18c0-7.732-6.268-14-14-14S4 10.268 4 18s6.268 14 14 14 14-6.268 14-14zM0 18C0 8.06 8.06 0 18 0s18 8.06 18 18-8.06 18-18 18S0 27.94 0 18z"/><path d="M10.5 16c-1.105 0-2 .895-2 2s.895 2 2 2h15c1.105 0 2-.895 2-2s-.895-2-2-2h-15z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg
deleted file mode 100644
index 31b4ade23..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>mobile-app</title><path d="M23.665 52.772H48.54V15.958H23.665v36.814zm12.438 8.418c-1.64 0-2.964-1.325-2.964-2.96 0-1.637 1.324-2.964 2.963-2.964 1.64 0 2.963 1.327 2.963 2.963 0 1.635-1.324 2.96-2.963 2.96zM25.243 8c-2.715 0-4.936 2.222-4.936 4.936v46.108c0 2.715 2.22 4.935 4.937 4.935H46.96c2.717 0 4.938-2.22 4.938-4.936V12.936c0-2.714-2.22-4.936-4.937-4.936H25.245zm5.585 36.968l6.928-7.077c.033-.03.056-.073.087-.106.563.14 1.142.236 1.747.236 2.03.006 3.87-.805 5.203-2.12 1.333-1.316 2.16-3.136 2.167-5.148.004-.642-.105-1.256-.262-1.855l-3.87 3.818-4.28-.918-.9-4.252 3.88-3.82c-.606-.168-1.234-.286-1.894-.287-4.057-.01-7.358 3.237-7.37 7.267-.003.855.17 1.663.44 2.426L25.68 40.3s5.148 4.675 5.148 4.668z" fill="#E65376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg
deleted file mode 100644
index 4960b48d4..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>open-standards</title><path d="M29.087 50.594c.156-.008.34-.035.495-.103l5.21-2.31c.57.305 1.084.7 1.518 1.16l-6.193 2.764H27.5c-1.33 0-2.322-.162-2.953-.482-.506-.256-.746-.586-.766-1.063l5.307.034zm-7.927-4.572c0-.163.05-.35.142-.55.99.415 2.285.616 3.938.616h1.783c.17 0 .337-.037.492-.105l5.112-2.295c.796.244 1.515.714 2.146 1.4L28.8 47.73h-3.746c-1.39 0-2.425-.165-3.073-.49-.56-.298-.82-.685-.82-1.218zm9.616 10.584c-1.065 0-1.856-.172-2.352-.512-.36-.248-.57-.6-.63-1.068h2.654c.17 0 .336-.037.49-.106l4.776-2.132c.564.46 1.015.933 1.373 1.445l.006.008-5.244 2.366h-1.074zm7.67.107l1.698-.76c.303-.134.537-.39.645-.704.108-.316.08-.662-.076-.956-.588-1.11-1.306-2.05-2.142-2.81l.82-.386c.31-.144.54-.418.64-.746.097-.328.05-.682-.132-.973-.656-1.06-1.36-1.91-2.105-2.547.274-.14.486-.38.59-.67.113-.318.087-.666-.07-.964-.677-1.28-1.543-2.283-2.583-2.995.172-.142.303-.33.376-.546.104-.312.077-.65-.075-.94-1.527-2.915-3.872-4.39-6.97-4.39-.626 0-1.317.092-2.046.272-.67.153-1.41.402-2.322.78l-1.34.02c-.476.005-.904.292-1.09.73-.186.437-.096.944.23 1.29l.468.502c.24.256.582.4.93.38l1.294-.06c.138-.005.273-.033.4-.087.93-.38 1.645-.64 2.237-.817.643-.173 1.157-.263 1.525-.263 1.292 0 2.34.493 3.18 1.504l-5.874 2.65-2.113-.024c-1.322 0-2.405-.428-3.315-1.308-.907-.87-1.348-1.91-1.348-3.17 0-.84.268-2.065 2.574-2.976 1.872-.734 4.73-1.104 8.495-1.104h.632c.682-.024 1.208-.536 1.208-1.202 0-.076-.007-.153-.022-.227l-.005-.13c0-2.95-.982-6.08-2.922-9.298-.002-.006-.005-.013-.01-.02l-.46-.79c-.77-1.274-1.16-2.474-1.16-3.564 0-1.013.268-1.87.797-2.548.444-.567 1.088-1.034 1.922-1.397l1.28 5.947c.045.213.15.41.3.57l7.154 7.614c1.314 1.645 2.197 2.78 2.77 3.563 2.42 3.403 3.396 3.852 3.71 3.996.31.142 1.23.573 5.582.595.72 2.112 1.084 4.29 1.084 6.477 0 1.855-.328 3.803-.978 5.795h-4.295c-.373 0-.723.172-.95.466-1.906 2.458-4.2 4.423-7.21 6.178l-.93.04zm15.46-21.27c-.192-.435-.623-.714-1.097-.714h-3.83c-.858 0-1.493-.136-1.85-.4-.272-.197-.872-.804-2.194-2.595l-1.01-1.334c-1.283-1.706-1.98-2.606-2.445-3.146l-6.617-7.043-1.643-7.274c-.07-.314-.265-.588-.54-.758-.274-.17-.604-.22-.918-.144l-.383.094c-4.068.955-6.13 3.408-6.13 7.29 0 1.4.634 3.297 1.964 5.838l.565.98c.915 1.794 1.537 3.66 1.852 5.554h-.283c-3.626 0-6.598.63-8.845 1.88C18.178 34.98 17 36.754 17 38.938c0 1.754.6 3.313 1.832 4.754-.446.8-.67 1.582-.67 2.33 0 1.055.293 1.94.867 2.623.48.594 1.165 1.05 2.032 1.358-.02.253-.03.464-.03.635 0 2.39 1.333 3.837 3.866 4.206-.006.07-.008.133-.008.192 0 1.987 1.022 4.355 5.886 4.355h1.402c.19 0 .375-.042.544-.128l.977-.495c1.55.415 2.95.624 4.16.624.44 0 1.08-.034 1.962-.104.14-.013.277-.05.406-.108 2.863-1.328 5.56-3.41 8.012-6.187h4.732c.496 0 .94-.304 1.12-.765 1.09-2.797 1.64-5.618 1.64-8.387 0-2.853-.614-5.677-1.825-8.396z" fill="#E65376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png
deleted file mode 100644
index 0b479791a..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg
deleted file mode 100644
index c1dba62f8..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><title>Group 2 Copy</title><g fill="#333" fill-rule="evenodd"><path d="M32 18c0-7.732-6.268-14-14-14S4 10.268 4 18s6.268 14 14 14 14-6.268 14-14zM0 18C0 8.06 8.06 0 18 0s18 8.06 18 18-8.06 18-18 18S0 27.94 0 18z"/><path d="M16 25.5c0 1.105.895 2 2 2s2-.895 2-2v-15c0-1.105-.895-2-2-2s-2 .895-2 2v15z"/><path d="M10.5 16c-1.105 0-2 .895-2 2s.895 2 2 2h15c1.105 0 2-.895 2-2s-.895-2-2-2h-15z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg
deleted file mode 100644
index ff685af03..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>responsive-web</title><g fill="#E65376" fill-rule="evenodd"><path d="M19.96 27.453c-.126-.12-.296-.18-.51-.18-.22 0-.402.06-.537.18-.133.118-.202.25-.202.4v3.115c0 .386.038.745.11 1.077.075.333.203.62.384.862.18.243.423.432.727.567.304.136.682.203 1.134.203.467 0 .85-.085 1.15-.252.3-.168.54-.396.722-.684.172.29.406.517.7.685.297.167.687.252 1.17.252.452 0 .828-.067 1.128-.203.3-.135.54-.324.72-.567.18-.24.308-.53.382-.862.075-.332.11-.69.11-1.077v-3.116c0-.148-.066-.28-.197-.4-.132-.12-.313-.178-.542-.178-.206 0-.373.06-.5.18-.128.117-.19.25-.19.398v3.165c0 .45-.082.784-.245.998-.165.215-.43.32-.79.32-.37 0-.632-.105-.788-.32-.155-.214-.235-.547-.235-.998V27.84c0-.18-.077-.32-.233-.42-.155-.096-.315-.146-.48-.146-.073 0-.153.014-.24.043-.087.03-.167.066-.24.11-.073.047-.136.1-.184.168-.05.064-.075.135-.075.208v3.214c0 .45-.078.784-.234.998-.156.215-.42.32-.787.32-.37 0-.637-.105-.795-.32-.16-.214-.24-.547-.24-.998v-3.165c0-.148-.065-.28-.19-.4M36.332 27.274c-.205 0-.372.06-.5.18-.125.117-.19.25-.19.398v3.165c0 .45-.08.784-.245.998-.164.215-.427.32-.788.32-.37 0-.633-.105-.79-.32-.155-.214-.234-.547-.234-.998V27.84c0-.18-.077-.32-.233-.42-.155-.096-.316-.146-.482-.146-.073 0-.15.014-.238.043-.086.03-.166.066-.24.11-.073.047-.135.1-.184.168-.05.064-.075.135-.075.208v3.214c0 .45-.077.784-.233.998-.156.215-.42.32-.787.32-.37 0-.635-.105-.796-.32-.16-.214-.24-.547-.24-.998v-3.165c0-.148-.064-.28-.19-.4-.13-.12-.298-.178-.512-.178-.222 0-.4.06-.535.18-.136.117-.204.25-.204.398v3.116c0 .386.037.745.11 1.077.074.333.202.62.382.862.182.243.424.432.727.567.304.136.68.203 1.134.203.466 0 .85-.085 1.15-.252.3-.168.54-.396.72-.684.173.29.408.517.702.685.295.167.686.252 1.17.252.45 0 .827-.067 1.127-.203.298-.135.538-.324.72-.567.18-.24.308-.53.382-.862.073-.332.11-.69.11-1.077v-3.116c0-.148-.067-.28-.2-.4-.128-.12-.31-.178-.54-.178M39.812 27.453c-.127-.12-.297-.18-.51-.18-.223 0-.4.06-.537.18-.135.118-.203.25-.203.4v3.115c0 .386.037.745.11 1.077.073.333.2.62.383.862.18.243.42.432.726.567.305.136.682.203 1.135.203.466 0 .85-.085 1.15-.252.3-.168.54-.396.72-.684.173.29.408.517.704.685.293.167.683.252 1.168.252.45 0 .827-.067 1.126-.203.3-.135.54-.324.72-.567.18-.24.31-.53.38-.862.077-.332.114-.69.114-1.077v-3.116c0-.148-.066-.28-.2-.4-.13-.12-.31-.178-.54-.178-.204 0-.372.06-.5.18-.126.117-.19.25-.19.398v3.165c0 .45-.08.784-.246.998-.164.215-.427.32-.788.32-.37 0-.63-.105-.788-.32-.155-.214-.233-.547-.233-.998V27.84c0-.18-.08-.32-.235-.42-.155-.096-.317-.146-.48-.146-.073 0-.153.014-.242.043-.085.03-.164.066-.237.11-.076.047-.137.1-.186.168-.05.064-.074.135-.074.208v3.214c0 .45-.08.784-.236.998-.154.215-.418.32-.786.32-.37 0-.634-.105-.794-.32-.16-.214-.242-.547-.242-.998v-3.165c0-.148-.06-.28-.19-.4M48.482 32.347c-.145.124-.216.264-.216.42v.307c0 .155.07.296.216.42.142.122.34.183.583.183.222 0 .406-.06.55-.184.14-.123.214-.264.214-.42v-.307c0-.155-.074-.295-.215-.42-.144-.122-.328-.183-.55-.183-.244 0-.44.06-.583.184M51.63 24.776v11.4c0 .276.225.5.5.5.278 0 .5-.224.5-.5v-11.4c0-.276-.222-.5-.5-.5-.275 0-.5.224-.5.5M46.248 48.754l2.656-.524c.185-.036.335-.175.385-.358.05-.182-.01-.377-.15-.504l-10.744-9.653c-.158-.143-.39-.168-.576-.065-.187.103-.287.313-.25.523l2.454 14.067c.03.184.163.334.34.39.174.056.374.01.505-.123l2.124-2.128 2.655 4.66c.068.122.183.208.32.24.037.01.075.013.113.013.1 0 .197-.03.28-.085l2.723-1.835c.114-.077.192-.197.214-.333.023-.135-.012-.274-.095-.383l-2.957-3.903M58.76 39.907H45.326l4.007 3.6h9.43c.993 0 1.8-.806 1.8-1.8s-.807-1.8-1.8-1.8"/><path d="M14.6 39.907V20.6h44.16c.995 0 1.8-.806 1.8-1.8s-.805-1.8-1.8-1.8H12.8c-.994 0-1.8.806-1.8 1.8v22.907c0 .994.806 1.8 1.8 1.8h22.655l-.628-3.6H14.6"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive.png
deleted file mode 100644
index dc7468397..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpg
deleted file mode 100644
index 21744f3cd..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.png
deleted file mode 100644
index 7b4d36a67..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/street-crossing.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/street-crossing.jpg
deleted file mode 100644
index 296db5f3b..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/street-crossing.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/street-scene.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/street-scene.jpg
deleted file mode 100644
index 9c13bbaa8..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/street-scene.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/street-sunset.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/street-sunset.jpg
deleted file mode 100644
index 0f0bb1800..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/street-sunset.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg
deleted file mode 100644
index f95a20865..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>syncronised</title><g fill="#E65376" fill-rule="evenodd"><path d="M58.505 43.558l-9.476-6.89c-.314-.22-.73-.26-1.074-.08-.345.18-.562.53-.562.92v4.48h-30.99c-1.328 0-2.404 1.07-2.404 2.4 0 1.33 1.076 2.4 2.403 2.4h30.99v4.48c0 .39.218.74.563.92.148.07.308.11.468.11.213 0 .426-.06.605-.19l9.475-6.89c.266-.19.423-.5.423-.83 0-.33-.157-.64-.423-.83M14.425 28.748l9.476 6.88c.18.13.392.2.607.2.158 0 .318-.04.466-.11.345-.18.562-.53.562-.92v-4.48h30.99c1.33 0 2.403-1.08 2.403-2.41 0-1.32-1.074-2.4-2.402-2.4h-30.99v-4.48c0-.38-.218-.74-.563-.92-.344-.17-.76-.14-1.072.09l-9.475 6.88c-.267.2-.425.51-.425.83 0 .33.158.64.425.84"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/test-device-mockup.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/test-device-mockup.png
deleted file mode 100644
index 55f1b156f..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/test-device-mockup.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.png
deleted file mode 100644
index 69c189581..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpg
deleted file mode 100644
index 86345b7e4..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png
deleted file mode 100644
index efdaf2fe8..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich.jpg
deleted file mode 100644
index 3f064d5d4..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/tile-y.jpg b/web/cobrands/fixmystreet.com/images/tile-y.jpg
index 3c8383714..80243e0d9 100644
--- a/web/cobrands/fixmystreet.com/images/tile-y.jpg
+++ b/web/cobrands/fixmystreet.com/images/tile-y.jpg
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/js.js b/web/cobrands/fixmystreet.com/js.js
index 5aecd820e..9ecb8b8c2 100644
--- a/web/cobrands/fixmystreet.com/js.js
+++ b/web/cobrands/fixmystreet.com/js.js
@@ -1,4 +1,7 @@
(function(){
+ if (!jQuery.validator) {
+ return;
+ }
var validNamePat = /\ba\s*n+on+((y|o)mo?u?s)?(ly)?\b/i;
function valid_name_factory(single) {
return function(value, element) {
@@ -8,73 +11,3 @@
jQuery.validator.addMethod('validName', valid_name_factory(0), translation_strings.name.required);
jQuery.validator.addMethod('validNameU', valid_name_factory(1), translation_strings.name.required);
})();
-
-$(function(){
-
- /* Front page banner for other countries */
-
- $('.top_banner__close').live('click', function() {
- $('.top_banner--country').hide();
- $.cookie('has_seen_country_message', 1, {expires: 365, path: '/'});
- });
-
- if ( $('body.frontpage').length && -1 == navigator.userAgent.indexOf('Google Page Speed')) {
- if (!$.cookie('has_seen_country_message')) {
- $.ajax({
- url: 'https://gaze.mysociety.org/gaze-rest?f=get_country_from_ip',
- success: function(data) {
- if ( data && data != 'GB\n' ) {
- var banner = '<div class="top_banner top_banner--country"><a href="#" class="top_banner__close">Close</a> <p>This site is for reporting <strong>problems in the UK</strong>. There are FixMyStreet sites <a href="http://www.fixmystreet.org/sites/">all over the world</a>, or you could set up your own using the <a href="http://www.fixmystreet.org/">FixMyStreet Platform</a>.</p></div>';
- $('body').prepend(banner);
- $('.top_banner--country').slideDown('slow');
- }
- }
- });
- }
- }
-
-});
-
-$(function(){
- // "Fold out" additional rows in pricing grid
- $('.js-extra-features').each(function(){
- var $t3 = $(this);
- var $t2 = $('<tbody>');
- var cols = $t3.find('tr').eq(0).children().length;
-
- $t2.addClass('pricing-table__show-more');
- $t2.html('<tr><td colspan="' + cols + '"><button class="button">Compare more features</button></td></tr>');
- $t2.on('click', '.button', function(){
- $t3.toggle();
- });
-
- $t2.insertBefore($t3);
- $t3.hide();
- });
-
- // Add tier names to cells, to be displayed on narrow screens
- $('.pricing-table thead th').each(function(){
- var $table = $(this).parents('.pricing-table');
- var colIndex = $(this).prevAll().length;
-
- // Ignore first column
- if (colIndex > 0) {
- var tierName = $(this).text();
- $table.find('tbody tr').each(function(){
- $(this).children().eq(colIndex).attr('data-tier-name', tierName);
- });
- }
- });
-
- // Hide the demo access form behind a button, to save space on initial page load
- $('.js-fms-pro-demo-form').each(function(){
- var $form = $(this);
- var $revealBtn = $('<button>').addClass('btn').text('Request access').on('click', function(){
- $form.slideDown(250, function(){
- $form.find('input[type="text"], input[type="text"]').eq(0).focus();
- });
- $(this).remove();
- }).insertAfter($form);
- $form.hide();
- });
-});
diff --git a/web/cobrands/fixmystreet.com/layout.scss b/web/cobrands/fixmystreet.com/layout.scss
index 46ff83274..e42dbacf7 100644
--- a/web/cobrands/fixmystreet.com/layout.scss
+++ b/web/cobrands/fixmystreet.com/layout.scss
@@ -160,6 +160,9 @@ body.fullwidthpage {
background-size: 22px 34px;
}
}
+ a#geolocate_link.loading {
+ background: url("/cobrands/fixmystreet/images/spinner-yellow.gif") 100% 33% no-repeat
+ }
}
}
diff --git a/web/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js b/web/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js
deleted file mode 100644
index 3fa82b82b..000000000
--- a/web/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-
-(function(factory){if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else if(typeof exports==='object'){factory(require('jquery'));}else{factory(jQuery);}}(function($){var pluses=/\+/g;function encode(s){return config.raw?s:encodeURIComponent(s);}
-function decode(s){return config.raw?s:decodeURIComponent(s);}
-function stringifyCookieValue(value){return encode(config.json?JSON.stringify(value):String(value));}
-function parseCookieValue(s){if(s.indexOf('"')===0){s=s.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,'\\');}
-try{s=decodeURIComponent(s.replace(pluses,' '));return config.json?JSON.parse(s):s;}catch(e){}}
-function read(s,converter){var value=config.raw?s:parseCookieValue(s);return $.isFunction(converter)?converter(value):value;}
-var config=$.cookie=function(key,value,options){if(value!==undefined&&!$.isFunction(value)){options=$.extend({},config.defaults,options);if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setTime(+t+days*864e+5);}
-return(document.cookie=[encode(key),'=',stringifyCookieValue(value),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));}
-var result=key?undefined:{};var cookies=document.cookie?document.cookie.split('; '):[];for(var i=0,l=cookies.length;i<l;i++){var parts=cookies[i].split('=');var name=decode(parts.shift());var cookie=parts.join('=');if(key&&key===name){result=read(cookie,value);break;}
-if(!key&&(cookie=read(cookie))!==undefined){result[name]=cookie;}}
-return result;};config.defaults={};$.removeCookie=function(key,options){if($.cookie(key)===undefined){return false;}
-$.cookie(key,'',$.extend({},options,{expires:-1}));return!$.cookie(key);};})); \ No newline at end of file
diff --git a/web/cobrands/fixmystreet/admin.js b/web/cobrands/fixmystreet/admin.js
index 2af950b28..3ed2d8ec5 100644
--- a/web/cobrands/fixmystreet/admin.js
+++ b/web/cobrands/fixmystreet/admin.js
@@ -48,8 +48,6 @@ $(function(){
}
});
- $("select.js-multiple[multiple]").make_multi();
-
// on a body's page, hide/show deleted contact categories
var $table_with_deleted_contacts = $('table tr.is-deleted td.contact-category').closest('table');
if ($table_with_deleted_contacts.length == 1) {
diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js
index 4d996387e..55c4b2e43 100644
--- a/web/cobrands/fixmystreet/fixmystreet.js
+++ b/web/cobrands/fixmystreet/fixmystreet.js
@@ -205,40 +205,6 @@ fixmystreet.resize_to = {
}
};
-fixmystreet.geolocate = {
- setup: function(success_callback) {
- $('#geolocate_link').click(function(e) {
- var $link = $(this);
- e.preventDefault();
- // Spinny thing!
- if ($('.mobile').length) {
- $link.append(' <img src="/cobrands/fixmystreet/images/spinner-black.gif" alt="" align="bottom">');
- } else {
- var spincolor = $('<span>').css("color","white").css("color") === $('#front-main').css("background-color") ? 'white' : 'yellow';
- $link.append(' <img src="/cobrands/fixmystreet/images/spinner-' + spincolor + '.gif" alt="" align="bottom">');
- }
- navigator.geolocation.getCurrentPosition(function(pos) {
- $link.find('img').remove();
- success_callback(pos);
- }, function(err) {
- $link.find('img').remove();
- if (err.code === 1) { // User said no
- $link.html(translation_strings.geolocation_declined);
- } else if (err.code === 2) { // No position
- $link.html(translation_strings.geolocation_no_position);
- } else if (err.code === 3) { // Too long
- $link.html(translation_strings.geolocation_no_result);
- } else { // Unknown
- $link.html(translation_strings.geolocation_unknown);
- }
- }, {
- enableHighAccuracy: true,
- timeout: 10000
- });
- });
- }
-};
-
fixmystreet.update_list_item_buttons = function($list) {
if (!$list) {
return;
@@ -303,8 +269,10 @@ $.extend(fixmystreet.set_up, {
form_validation: function() {
// FIXME - needs to use translated string
- jQuery.validator.addMethod('validCategory', function(value, element) {
- return this.optional(element) || value != '-- Pick a category --'; }, translation_strings.category );
+ if (jQuery.validator) {
+ jQuery.validator.addMethod('validCategory', function(value, element) {
+ return this.optional(element) || value != '-- Pick a category --'; }, translation_strings.category );
+ }
var submitted = false;
@@ -408,20 +376,6 @@ $.extend(fixmystreet.set_up, {
});
},
- report_geolocation: function() {
- if ('geolocation' in navigator) {
- fixmystreet.geolocate.setup(function(pos) {
- var latitude = pos.coords.latitude.toFixed(6);
- var longitude = pos.coords.longitude.toFixed(6);
- var page = $('#geolocate_link').attr('href');
- var coords = 'latitude=' + latitude + ';longitude=' + longitude;
- location.href = page + (page.indexOf('?') > -1 ? ';' : '?') + coords;
- });
- } else {
- $('#geolocate_link').hide();
- }
- },
-
category_change: function() {
// Deal with changes to report category.
@@ -602,8 +556,7 @@ $.extend(fixmystreet.set_up, {
// to refresh the map when the filter inputs are changed.
$(".report-list-filters [type=submit]").hide();
- $('#statuses').make_multi();
- $('#filter_categories').make_multi();
+ $('.js-multiple').make_multi();
},
mobile_ui_tweaks: function() {
diff --git a/web/cobrands/fixmystreet/front.js b/web/cobrands/fixmystreet/front.js
deleted file mode 100644
index a5e3bac98..000000000
--- a/web/cobrands/fixmystreet/front.js
+++ /dev/null
@@ -1,12 +0,0 @@
-yepnope.addPrefix( 'preload', function ( resource ) {
- resource.noexec = true;
- return resource;
-});
-
-(function(){
- var scripts = document.getElementById('script_front').getAttribute('data-scripts').split(',');
- for (var i=0; i<scripts.length; i++) {
- scripts[i] = 'preload!' + scripts[i];
- }
- yepnope({ load: scripts });
-})();
diff --git a/web/cobrands/fixmystreet/prefetch-polyfill.js b/web/cobrands/fixmystreet/prefetch-polyfill.js
new file mode 100644
index 000000000..a8b0f3dbf
--- /dev/null
+++ b/web/cobrands/fixmystreet/prefetch-polyfill.js
@@ -0,0 +1,28 @@
+(function(){
+ function has_prefetch() {
+ // IE11 + Edge support prefetch, but do not support relList.supports, sigh
+ var ua = navigator.userAgent;
+ if (ua.indexOf('Edge/') > -1 || ua.indexOf('Trident/7') > -1) {
+ return true;
+ }
+ // e.g. Firefox + Chrome will pass this test, and Safari will fail.
+ var l = document.createElement("link"),
+ rl = l.relList;
+ if (rl && rl.supports) {
+ return rl.supports('prefetch');
+ }
+ }
+
+ // If we don't support the <link rel="prefetch">s in the header, manually
+ // prefetch them by storing them in images.
+ if (!has_prefetch()) {
+ var links = document.getElementsByTagName('link'),
+ llen = links.length;
+ for (var x = 0; x < llen; x++) {
+ var link = links[x];
+ if (link.nodeName === "LINK" && link.rel && link.rel === 'prefetch') {
+ (new Image()).src = link.href;
+ }
+ }
+ }
+})();
diff --git a/web/cobrands/fixmystreet/staff.js b/web/cobrands/fixmystreet/staff.js
index ffc529250..f1e07ed6b 100644
--- a/web/cobrands/fixmystreet/staff.js
+++ b/web/cobrands/fixmystreet/staff.js
@@ -314,7 +314,8 @@ $.extend(fixmystreet.set_up, {
}
if ('geolocation' in navigator) {
- fixmystreet.geolocate.setup(function(pos) {
+ var el = document.querySelector('.btn--geolocate');
+ fixmystreet.geolocate(el, function(pos) {
var latlon = new OpenLayers.LonLat(pos.coords.longitude, pos.coords.latitude);
var bng = latlon.clone().transform(
new OpenLayers.Projection("EPSG:4326"),
diff --git a/web/cobrands/sass/_base.scss b/web/cobrands/sass/_base.scss
index 106694650..a65bd7ca0 100644
--- a/web/cobrands/sass/_base.scss
+++ b/web/cobrands/sass/_base.scss
@@ -1975,11 +1975,21 @@ label .muted {
background:#2a2a2a;
}
}
+ a#geolocate_link.loading {
+ background: #1a1a1a url("/cobrands/fixmystreet/images/spinner-black.gif") 100% 50% no-repeat;
+ border-right: solid 0.5em #1a1a1a;
+ padding-right: 1.5em;
+ }
}
.no-js #geolocate_link {
display: none !important;
}
+a#geolocate_link.loading, .btn--geolocate.loading {
+ background: url("/cobrands/fixmystreet/images/spinner-white.gif") 100% 50% no-repeat;
+ padding-right: 1.5em;
+}
+
#front-howto {
#front_stats {
display:table;
diff --git a/web/cobrands/sass/_layout.scss b/web/cobrands/sass/_layout.scss
index 746beb5ce..65934f3b9 100644
--- a/web/cobrands/sass/_layout.scss
+++ b/web/cobrands/sass/_layout.scss
@@ -909,6 +909,9 @@ textarea.form-error {
background:none;
}
}
+ a#geolocate_link.loading {
+ border-right: none;
+ }
}
.ie7 #front-main {
#postcodeForm {
diff --git a/web/js/front.js b/web/js/front.js
new file mode 100644
index 000000000..d2c814490
--- /dev/null
+++ b/web/js/front.js
@@ -0,0 +1,13 @@
+document.getElementById('pc').focus();
+
+(function(){
+ var around_forms = document.querySelectorAll('form[action*="around"]');
+ for (var i=0; i<around_forms.length; i++) {
+ var form = around_forms[i];
+ var el = document.createElement('input');
+ el.type = 'hidden';
+ el.name = 'js';
+ el.value = 1;
+ form.insertBefore(el, form.firstChild);
+ }
+})();
diff --git a/web/js/geolocation.js b/web/js/geolocation.js
new file mode 100644
index 000000000..5ff9fe9dc
--- /dev/null
+++ b/web/js/geolocation.js
@@ -0,0 +1,42 @@
+var fixmystreet = fixmystreet || {};
+
+fixmystreet.geolocate = function(element, success_callback) {
+ element.addEventListener('click', function(e) {
+ var link = this;
+ e.preventDefault();
+ link.className += ' loading';
+ navigator.geolocation.getCurrentPosition(function(pos) {
+ link.className = link.className.replace(/loading/, ' ');
+ success_callback(pos);
+ }, function(err) {
+ link.className = link.className.replace(/loading/, ' ');
+ if (err.code === 1) { // User said no
+ link.innerHTML = translation_strings.geolocation_declined;
+ } else if (err.code === 2) { // No position
+ link.innerHTML = translation_strings.geolocation_no_position;
+ } else if (err.code === 3) { // Too long
+ link.innerHTML = translation_strings.geolocation_no_result;
+ } else { // Unknown
+ link.innerHTML = translation_strings.geolocation_unknown;
+ }
+ }, {
+ enableHighAccuracy: true,
+ timeout: 10000
+ });
+ });
+};
+
+(function(){
+ var link = document.getElementById('geolocate_link');
+ if (!link) { return; }
+ if ('geolocation' in navigator) {
+ fixmystreet.geolocate(link, function(pos) {
+ var latitude = pos.coords.latitude.toFixed(6);
+ var longitude = pos.coords.longitude.toFixed(6);
+ var coords = 'latitude=' + latitude + ';longitude=' + longitude;
+ location.href = link.href + (link.href.indexOf('?') > -1 ? ';' : '?') + coords;
+ });
+ } else {
+ link.style.display = 'none';
+ }
+})();
diff --git a/web/vendor/yepnope.js b/web/vendor/yepnope.js
deleted file mode 100644
index d48d17427..000000000
--- a/web/vendor/yepnope.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(e,t,n){function r(e){return"[object Function]"==y.call(e)}function o(e){return"string"==typeof e}function a(){}function i(e){return!e||"loaded"==e||"complete"==e||"uninitialized"==e}function c(){var e=v.shift();g=1,e?e.t?m(function(){("c"==e.t?f.injectCss:f.injectJs)(e.s,0,e.a,e.x,e.e,1)},0):(e(),c()):g=0}function l(e,n,r,o,a,l,s){function u(t){if(!p&&i(d.readyState)&&(b.r=p=1,!g&&c(),d.onload=d.onreadystatechange=null,t)){"img"!=e&&m(function(){C.removeChild(d)},50);for(var r in M[n])M[n].hasOwnProperty(r)&&M[n][r].onload()}}var s=s||f.errorTimeout,d=t.createElement(e),p=0,y=0,b={t:r,s:n,e:a,a:l,x:s};1===M[n]&&(y=1,M[n]=[]),"object"==e?d.data=n:(d.src=n,d.type=e),d.width=d.height="0",d.onerror=d.onload=d.onreadystatechange=function(){u.call(this,y)},v.splice(o,0,b),"img"!=e&&(y||2===M[n]?(C.insertBefore(d,E?null:h),m(u,s)):M[n].push(d))}function s(e,t,n,r,a){return g=0,t=t||"j",o(e)?l("c"==t?w:S,e,t,this.i++,n,r,a):(v.splice(this.i++,0,e),1==v.length&&c()),this}function u(){var e=f;return e.loader={load:s,i:0},e}var d,f,p=t.documentElement,m=e.setTimeout,h=t.getElementsByTagName("script")[0],y={}.toString,v=[],g=0,b="MozAppearance"in p.style,E=b&&!!t.createRange().compareNode,C=E?p:h.parentNode,p=e.opera&&"[object Opera]"==y.call(e.opera),p=!!t.attachEvent&&!p,S=b?"object":p?"script":"img",w=p?"script":S,j=Array.isArray||function(e){return"[object Array]"==y.call(e)},F=[],M={},N={timeout:function(e,t){return t.length&&(e.timeout=t[0]),e}};f=function(e){function t(e){var t,n,r,e=e.split("!"),o=F.length,a=e.pop(),i=e.length,a={url:a,origUrl:a,prefixes:e};for(n=0;i>n;n++)r=e[n].split("="),(t=N[r.shift()])&&(a=t(a,r));for(n=0;o>n;n++)a=F[n](a);return a}function i(e,o,a,i,c){var l=t(e),s=l.autoCallback;l.url.split(".").pop().split("?").shift(),l.bypass||(o&&(o=r(o)?o:o[e]||o[i]||o[e.split("/").pop().split("?")[0]]),l.instead?l.instead(e,o,a,i,c):(M[l.url]?l.noexec=!0:M[l.url]=1,a.load(l.url,l.forceCSS||!l.forceJS&&"css"==l.url.split(".").pop().split("?").shift()?"c":n,l.noexec,l.attrs,l.timeout),(r(o)||r(s))&&a.load(function(){u(),o&&o(l.origUrl,c,i),s&&s(l.origUrl,c,i),M[l.url]=2})))}function c(e,t){function n(e,n){if(e){if(o(e))n||(d=function(){var e=[].slice.call(arguments);f.apply(this,e),p()}),i(e,d,t,0,s);else if(Object(e)===e)for(l in c=function(){var t,n=0;for(t in e)e.hasOwnProperty(t)&&n++;return n}(),e)e.hasOwnProperty(l)&&(!n&&!--c&&(r(d)?d=function(){var e=[].slice.call(arguments);f.apply(this,e),p()}:d[l]=function(e){return function(){var t=[].slice.call(arguments);e&&e.apply(this,t),p()}}(f[l])),i(e[l],d,t,l,s))}else!n&&p()}var c,l,s=!!e.test,u=e.load||e.both,d=e.callback||a,f=d,p=e.complete||a;n(s?e.yep:e.nope,!!u),u&&n(u)}var l,s,d=this.yepnope.loader;if(o(e))i(e,0,d,0);else if(j(e))for(l=0;l<e.length;l++)s=e[l],o(s)?i(s,0,d,0):j(s)?f(s):Object(s)===s&&c(s,d);else Object(e)===e&&c(e,d)},f.addPrefix=function(e,t){N[e]=t},f.addFilter=function(e){F.push(e)},f.errorTimeout=1e4,null==t.readyState&&t.addEventListener&&(t.readyState="loading",t.addEventListener("DOMContentLoaded",d=function(){t.removeEventListener("DOMContentLoaded",d,0),t.readyState="complete"},0)),e.yepnope=u(),e.yepnope.executeStack=c,e.yepnope.injectJs=function(e,n,r,o,l,s){var u,d,p=t.createElement("script"),o=o||f.errorTimeout;p.src=e;for(d in r)p.setAttribute(d,r[d]);n=s?c:n||a,p.onreadystatechange=p.onload=function(){!u&&i(p.readyState)&&(u=1,n(),p.onload=p.onreadystatechange=null)},m(function(){u||(u=1,n(1))},o),l?p.onload():h.parentNode.insertBefore(p,h)},e.yepnope.injectCss=function(e,n,r,o,i,l){var s,o=t.createElement("link"),n=l?c:n||a;o.href=e,o.rel="stylesheet",o.type="text/css";for(s in r)o.setAttribute(s,r[s]);i||(h.parentNode.insertBefore(o,h),m(n,0))}})(this,document);