71873: GlobalVision - directions [better error handling]
authorJonathan Prykop <jonathan@freeside.biz>
Sat, 24 Sep 2016 02:46:14 +0000 (21:46 -0500)
committerJonathan Prykop <jonathan@freeside.biz>
Sat, 24 Sep 2016 02:46:14 +0000 (21:46 -0500)
FS/FS/Conf.pm
httemplate/elements/coord-links.html
httemplate/elements/google_maps_api_key.html [new file with mode: 0644]
httemplate/view/directions.html
httemplate/view/map.html

index 57761bb..6bfbf98 100644 (file)
@@ -2071,7 +2071,7 @@ and customer address. Include units.',
   {
     'key'         => 'google_maps_api_key',
     'section'     => 'addresses',
-    'description' => 'API key for google maps.  This must be set for map and directions links to appear on customer pages.  See <a href="https://developers.google.com/maps/documentation/javascript/get-api-key">Getting a Google Maps API Key</a>',
+    'description' => 'API key for google maps.  This must be set for map and directions links to work.  See <a href="https://developers.google.com/maps/documentation/javascript/get-api-key" target="_top">Getting a Google Maps API Key</a>',
     'type'        => 'text',
   },
 
index a755791..f27ffd3 100644 (file)
@@ -1,7 +1,5 @@
 <& /elements/init_overlib.html &>
 
-% if ( $apikey ) {
-
 <& /elements/popup_link.html,
      'action'      => $p. 'view/map.html?'. $query,
      'label'       => mt('map'),
@@ -21,8 +19,6 @@
   &>
 % }
 
-% } # end if $apikey
-
 <A HREF="<%$p%>view/kml.cgi?<% $query %>"><% mt('earth') |h %></A>
 
 <%init>
diff --git a/httemplate/elements/google_maps_api_key.html b/httemplate/elements/google_maps_api_key.html
new file mode 100644 (file)
index 0000000..0a4b764
--- /dev/null
@@ -0,0 +1,15 @@
+% if ($opt{'autherror'}) {
+<P STYLE="color: red;">
+There was an authentication error when loading google maps.
+Please check validity of existing key.
+</P>
+% }
+
+<P>In order to display google maps, your site administrator will need to set the
+<B>google_maps_api_key</B> setting under Configuration -> Settings.  Please see the Google Maps
+<a href="https://developers.google.com/maps/documentation/javascript/get-api-key" target="_top">Get
+a Key/Authentication</a> documentation for information on acquiring a key.</P>
+
+<%init>
+my %opt = @_;
+</%init>
index a07df40..f23b7eb 100644 (file)
@@ -1,3 +1,5 @@
+% if ( $apikey ) {
+
 %# the actual page
 <& /elements/header-popup.html, {
      title => '',#$name,
 <div id="directions_panel"></div>
 <div id="map_canvas"></div>
 
+% } else {
+<& /elements/header-popup.html &>
+<& /elements/google_maps_api_key.html &>
+% }
+
 <%def .head>
 % my $lat = $cgi->param('lat');
 % my $lon = $cgi->param('lon');
@@ -38,8 +45,6 @@ body { height: 100%; margin: 0px; padding: 0px }
 }
 </style>
 
-% my $conf = new FS::Conf;
-% my $apikey = $conf->config('google_maps_api_key');
 <script type="text/javascript" src="https://maps.google.com/maps/api/js?v=3&key=<% $apikey %>">
 </script>
 
@@ -69,6 +74,12 @@ function show_route() {
   });
 }
 
+// function name specified by google maps api, special hook for auth errors
+function gm_authFailure () {
+  document.body.innerHTML = 
+<% include('/elements/google_maps_api_key.html', autherror => 1) |js_string%>;
+}
+
 function initialize() {
   var myOptions = {
     zoom: 14,
@@ -88,6 +99,8 @@ function initialize() {
 </%def>
 <%shared>
 my ($lat, $lon, $name, $origin);
+my $conf = new FS::Conf;
+my $apikey = $conf->config('google_maps_api_key');
 </%shared>
 <%init>
 
index d996a33..b3459dc 100644 (file)
@@ -1,3 +1,5 @@
+% if ( $apikey ) {
+
 %# the actual page
 <& /elements/header-popup.html, {
      title => '',#$name,
@@ -9,6 +11,11 @@
 
 <div id="map_canvas"></div>
 
+% } else {
+<& /elements/header-popup.html &>
+<& /elements/google_maps_api_key.html &>
+% }
+
 <%def .head>
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
 
@@ -22,8 +29,6 @@ body { height: 100%; margin: 0px; padding: 0px }
 @media print { #map_canvas { height: 500px; margin: 0; } }
 </style>
 
-% my $conf = new FS::Conf;
-% my $apikey = $conf->config('google_maps_api_key');
 <script type="text/javascript" src="https://maps.google.com/maps/api/js?v=3&key=<% $apikey %>">
 </script>
 
@@ -31,6 +36,13 @@ body { height: 100%; margin: 0px; padding: 0px }
 var lengthLine=0;
 var map;
 
+// function name specified by google maps api, special hook for auth errors
+function gm_authFailure () {
+  document.body.innerHTML = 
+<% include('/elements/google_maps_api_key.html', autherror => 1) |js_string%>;
+}
+
+
 function initialize() {
   var latlng = new google.maps.LatLng(<%$lat%>, <%$lon%>);
   var myOptions = {
@@ -57,6 +69,8 @@ function initialize() {
 </%def>
 <%shared>
 my ($lat, $lon, $name);
+my $conf = new FS::Conf;
+my $apikey = $conf->config('google_maps_api_key');
 </%shared>
 <%init>