Kunden-/Lieferantenstammdaten: Maps-Link mit Firmenadresse als Routing-Ausgang
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 25 Jun 2014 07:57:43 +0000 (09:57 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 25 Jun 2014 07:58:20 +0000 (09:58 +0200)
SL/Controller/CustomerVendor.pm
js/kivi.CustomerVendor.js
templates/webpages/customer_vendor/tabs/billing.html

index f16ce6f..af109e9 100644 (file)
@@ -880,4 +880,15 @@ sub normalize_name {
   $self->{cv}->name($name);
 }
 
+sub home_address_for_google_maps {
+  my ($self)  = @_;
+
+  my $address = $::instance_conf->get_address // '';
+  $address    =~ s{^\s+|\s+$|\r+}{}g;
+  $address    =~ s{\n+}{,}g;
+  $address    =~ s{\s+}{ }g;
+
+  return $address;
+}
+
 1;
index bfef730..1cb08db 100644 (file)
@@ -77,7 +77,7 @@ namespace('kivi.CustomerVendor', function(ns) {
     '#country'
   ];
 
-  this.MapWidget = function(prefix)
+  this.MapWidget = function(prefix, source_address)
   {
     var $mapSearchElements = [];
     var $widgetWrapper;
@@ -117,7 +117,9 @@ namespace('kivi.CustomerVendor', function(ns) {
           searchString += stmt;
       }
 
-      var url = 'https://maps.google.com/maps?q='+ encodeURIComponent(searchString);
+      source_address = source_address || '';
+      var query      = source_address != '' ? 'saddr=' + encodeURIComponent(source_address) + '&daddr=' : 'q=';
+      var url        = 'https://maps.google.com/maps?' + query + encodeURIComponent(searchString);
 
       window.open(url, '_blank');
       window.focus();
index 5ac49dd..82ff5f2 100644 (file)
@@ -2,6 +2,7 @@
 [%- USE HTML %]
 [%- USE LxERP %]
 [%- USE L %]
+[%- USE JavaScript -%]
 
 <div id="billing">
   <table width="100%">
@@ -88,7 +89,7 @@
         [% L.input_tag('cv.street', SELF.cv.street, size = 35) %]
         <span id="billing_map"></span>
         <script type="text/javascript">
-          billingMapWidget = new kivi.CustomerVendor.MapWidget('cv_');
+          billingMapWidget = new kivi.CustomerVendor.MapWidget('cv_', '[% JavaScript.escape(SELF.home_address_for_google_maps) %]');
           $(function() {
             billingMapWidget.render($('#billing_map'));
           });