aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App.pm2
-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/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/bristol/maps/bristol.html9
-rw-r--r--templates/web/bromley/maps/bromley.html10
-rw-r--r--templates/web/zurich/maps/zurich.html10
28 files changed, 122 insertions, 110 deletions
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/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/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/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/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 %]