You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2013/12/31 16:23:32 UTC
svn commit: r1554538 - in /ofbiz/branches/release13.07: ./
applications/party/script/org/ofbiz/party/party/
applications/party/webapp/partymgr/party/ framework/common/config/
framework/common/webcommon/includes/ framework/common/widget/
framework/image...
Author: jleroux
Date: Tue Dec 31 15:23:32 2013
New Revision: 1554538
URL: http://svn.apache.org/r1554538
Log:
"Applied fix from trunk for revision: 1554536 "
------------------------------------------------------------------------
r1554536 | jleroux | 2013-12-31 16:22:21 +0100 (mar. 31 déc. 2013) | 10 lignes
This fixes the geolocation in OFBiz, for both Google Maps and OpenLayers. It seems few changes, it took me more time than I thought. I hope this will last few years again, and it should be easier to maintain now.
What I did:
Upgraded from Google Maps API 2 to 3, which also means removing the keys in general.properties. They are no longer needed in API-3 (at least for our demo and local test uses), one worry less!
Refactored Google Maps code in geolocation.ftl: put more things in common, simplified code (the API-3 is better from this POV).
For OpenLayers, due to most browsers now rejecting mixed content (HTTP vs HTTPS), I had to follow their advice and put OpenLayers-2.13.1.js + images and theme(finally not used) in the framework. Not a big deal in term of size but again one more lib to worry about. Anyway geolocation is not vital for OFBiz. I have also added a zoom and navigation widget in maps. Note that IE warns about mixed content, but you can bypass it.
While working on editGeoLocation (in Party) I noticed it does not update the elevation. I found it was possible http://www.daftlogic.com/sandbox-google-maps-find-altitude.htm but I did not implement it, lack of time...
Also I got once a NPE in CallSimpleMapProcessor (when using editGeoLocation) but was unable to reproduce (w/o changes before and after)
------------------------------------------------------------------------
Added:
ofbiz/branches/release13.07/framework/images/webapp/images/OpenLayers-2.13.1.js
- copied unchanged from r1554536, ofbiz/trunk/framework/images/webapp/images/OpenLayers-2.13.1.js
ofbiz/branches/release13.07/framework/images/webapp/images/img/
- copied from r1554536, ofbiz/trunk/framework/images/webapp/images/img/
ofbiz/branches/release13.07/framework/images/webapp/images/theme.openlayer.unused.ootb/
- copied from r1554536, ofbiz/trunk/framework/images/webapp/images/theme.openlayer.unused.ootb/
Modified:
ofbiz/branches/release13.07/ (props changed)
ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml
ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl
ofbiz/branches/release13.07/framework/common/config/general.properties
ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl
ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml
ofbiz/branches/release13.07/specialpurpose/build.xml
ofbiz/branches/release13.07/specialpurpose/component-load.xml
Propchange: ofbiz/branches/release13.07/
------------------------------------------------------------------------------
Merged /ofbiz/trunk:r1554536
Modified: ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
==============================================================================
--- ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml (original)
+++ ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml Tue Dec 31 15:23:32 2013
@@ -134,7 +134,7 @@ under the License.
<result-to-field result-name="geoPointId" field="geoPointId"/>
</call-service>
- <now-timestamp field="nowTimestamp"/>
+ <now field="nowTimestamp"/>
<make-value value-field="partyGeoPoint" entity-name="PartyGeoPoint"/>
<set field="partyGeoPoint.partyId" from-field="parameters.partyId"/>
<set field="partyGeoPoint.geoPointId" from-field="geoPointId"/>
Modified: ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl?rev=1554538&r1=1554537&r2=1554538&view=diff
==============================================================================
--- ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl (original)
+++ ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl Tue Dec 31 15:23:32 2013
@@ -17,95 +17,106 @@ specific language governing permissions
under the License.
-->
-<#assign defaultUrl = "https." + request.getServerName()>
-<#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties", defaultUrl)>
-<script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}" type="text/javascript"></script>
+<script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
<script type="text/javascript">
function load() {
- if (GBrowserIsCompatible()) {
- var map = new GMap2(document.getElementById("map"));
- map.addControl(new GSmallMapControl());
- map.addControl(new GMapTypeControl());
- var center = new GLatLng(${latitude?if_exists}, ${longitude?if_exists});
- map.setCenter(center, 15);
- geocoder = new GClientGeocoder();
- var marker = new GMarker(center, {draggable: true});
+ var geocoder = new google.maps.Geocoder();
+ var center = new google.maps.LatLng(${latitude!38}, ${longitude!15});
+ var map = new google.maps.Map(document.getElementById("map"),
+ { center: center,
+ zoom: 15, // 0=World, 19=max zoom in
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ });
+
+ var marker = new google.maps.Marker({
+ position: center,
+ map: map,
+ draggable: true
+ });
+
+ document.getElementById("lat").value = center.lat().toFixed(5);
+ document.getElementById("lng").value = center.lng().toFixed(5);
+
+ google.maps.event.addListener(marker, "dragend", function() {
+ var point = marker.getPosition();
+ map.panTo(point);
+ document.getElementById("lat").value = point.lat().toFixed(5);
+ document.getElementById("lng").value = point.lng().toFixed(5);
+ });
+
+
+ google.maps.event.addListener(map, "moveend", function() {
+ map.clearOverlays();
+ var center = map.getCenter();
+ var marker = new GMarker(center, {draggable: true});
map.addOverlay(marker);
document.getElementById("lat").value = center.lat().toFixed(5);
document.getElementById("lng").value = center.lng().toFixed(5);
-
- GEvent.addListener(marker, "dragend", function() {
- var point = marker.getPoint();
- map.panTo(point);
- document.getElementById("lat").value = point.lat().toFixed(5);
- document.getElementById("lng").value = point.lng().toFixed(5);
- });
-
- GEvent.addListener(map, "moveend", function() {
- map.clearOverlays();
- var center = map.getCenter();
- var marker = new GMarker(center, {draggable: true});
- map.addOverlay(marker);
- document.getElementById("lat").value = center.lat().toFixed(5);
- document.getElementById("lng").value = center.lng().toFixed(5);
+ });
- GEvent.addListener(marker, "dragend", function() {
- var point =marker.getPoint();
- map.panTo(point);
- document.getElementById("lat").value = point.lat().toFixed(5);
- document.getElementById("lng").value = point.lng().toFixed(5);
- });
- });
- }
+ google.maps.event.addListener(marker, "dragend", function() {
+ var point = marker.getPoint();
+ map.panTo(point);
+ document.getElementById("lat").value = point.lat().toFixed(5);
+ document.getElementById("lng").value = point.lng().toFixed(5);
+ });
}
function showAddress(address) {
- var map = new GMap2(document.getElementById("map"));
- map.addControl(new GSmallMapControl());
- map.addControl(new GMapTypeControl());
+ var map = new google.maps.Map(document.getElementById("map"),
+ { center: new google.maps.LatLng(${latitude!38}, ${longitude!15}),
+ zoom: 15, // 0=World, 19=max zoom in
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ });
+ var geocoder = new google.maps.Geocoder();
if (geocoder) {
- geocoder.getLatLng(
- address,
- function(point) {
- if (!point) {
- alert(address + " not found");
- } else {
- document.getElementById("lat").value = point.lat().toFixed(5);
- document.getElementById("lng").value = point.lng().toFixed(5);
- map.clearOverlays()
- map.setCenter(point, 14);
- var marker = new GMarker(point, {draggable: true});
+ geocoder.geocode({'address': address}, function(result, status) {
+ if (status != google.maps.GeocoderStatus.OK) {
+ showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");
+ } else {
+ var point = result[0].geometry.location;
+ var lat = point.lat().toFixed(5);
+ var lng = point.lng().toFixed(5);
+ document.getElementById("lat").value = lat;
+ document.getElementById("lng").value = lng;
+ //map.clearOverlays()
+ map.setCenter(point, 14);
+
+ var marker = new google.maps.Marker({
+ position: new google.maps.LatLng(lat, lng),
+ map: map,
+ draggable: true
+ });
+
+ google.maps.event.addListener(marker, "dragend", function() {
+ var point = marker.getPosition();
+ map.panTo(point);
+ document.getElementById("lat").value = point.lat().toFixed(5);
+ document.getElementById("lng").value = point.lng().toFixed(5);
+ });
+
+ google.maps.event.addListener(map, "moveend", function() {
+ //map.clearOverlays();
+ var center = map.getCenter();
+ var marker = new google.maps.Marker(center, {draggable: true});
map.addOverlay(marker);
-
- GEvent.addListener(marker, "dragend", function() {
- var pt = marker.getPoint();
- map.panTo(pt);
- document.getElementById("lat").value = pt.lat().toFixed(5);
- document.getElementById("lng").value = pt.lng().toFixed(5);
- });
-
- GEvent.addListener(map, "moveend", function() {
- map.clearOverlays();
- var center = map.getCenter();
- var marker = new GMarker(center, {draggable: true});
- map.addOverlay(marker);
- document.getElementById("lat").value = center.lat().toFixed(5);
- document.getElementById("lng").value = center.lng().toFixed(5);
-
- GEvent.addListener(marker, "dragend", function() {
- var pt = marker.getPoint();
- map.panTo(pt);
- document.getElementById("lat").value = pt.lat().toFixed(5);
- document.getElementById("lng").value = pt.lng().toFixed(5);
- });
- });
- }
- });
+ document.getElementById("lat").value = center.lat().toFixed(5);
+ document.getElementById("lng").value = center.lng().toFixed(5);
+ });
+
+ google.maps.event.addListener(marker, "dragend", function() {
+ var pt = marker.getPoint();
+ map.panTo(pt);
+ document.getElementById("lat").value = pt.lat().toFixed(5);
+ document.getElementById("lng").value = pt.lng().toFixed(5);
+ });
+ }
+ });
}
}
</script>
-<body onload="load()" onunload="GUnload()" >
+<body onload="load()">
<center>
<div align="center" id="map" style="border:1px solid #979797; background-color:#e5e3df; width:500px; height:450px; margin:2em auto;"><br/></div>
<form action="#" onsubmit="showAddress(this.address.value); return false">
@@ -116,7 +127,7 @@ under the License.
<form id="updateMapForm" method="post" action="<@o...@ofbizUrl>">
<input type="hidden" name="partyId" value="${partyId?if_exists}"/>
<input type="hidden" name="geoPointId" value="${geoPointId?if_exists}"/>
- <input type="hidden" name="lat" id="lat"/>
+ <input type="hidden" name="lat" id="lat"/>
<input type="hidden" name="lng" id="lng"/>
<input type="submit" id="createMapButton" class="smallSubmit" value="${uiLabelMap.CommonSubmit}">
</form>
Modified: ofbiz/branches/release13.07/framework/common/config/general.properties
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/config/general.properties?rev=1554538&r1=1554537&r2=1554538&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/common/config/general.properties (original)
+++ ofbiz/branches/release13.07/framework/common/config/general.properties Tue Dec 31 15:23:32 2013
@@ -128,13 +128,6 @@ http.upload.max.size=-1
mail.spam.name=X-Spam-Flag
mail.spam.value=YES
-# -- Google Map key (by domain, see http://code.google.com/intl/en/apis/maps/signup.html, note that it works for http://localhost)
-https.demo-trunk.ofbiz.apache.org=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBTl26GJHIFzHZYG8GNWSTKWDUTxchRLjgT9hY3-DDYk27lvZS84RH4aiQ
-https.demo-stable.ofbiz.apache.org=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBR8L_-1UdAfCE2bleqTaEvMtKARZxSrkTzKktKY2_Znm0TRq2DF4YhGPg
-
-https.localhost=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBQN-clGH2vvMMwJjYtcwF78UzZgEBTN70S6uIgRoAtXRkADNoesbw5etg
-http.localhost=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxR3euHYk9bpwvdF2Qg1EYO1LQitHA
-
# -- Y if you want to display the multi-tenant textbox in the login page and install specify components which related to each tenant
multitenant=N
Modified: ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl?rev=1554538&r1=1554537&r2=1554538&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl (original)
+++ ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl Tue Dec 31 15:23:32 2013
@@ -17,93 +17,111 @@ specific language governing permissions
under the License.
-->
<#if geoChart?has_content>
+ <#-- ================================= Golbal Init ======================================-->
+ <#if geoChart.id?has_content>
+ <#assign id = geoChart.id>
+ <#else>
+ <#assign id = "map_canvas">
+ </#if>
+
+ <#if geoChart.center?has_content>
+ <#assign center = geoChart.center>
+ <#assign zoom = geoChart.center.zoom>
+ <#elseif geoChart.points?has_content>
+ <#assign center = geoChart.points[0]>
+ <#assign zoom = 15> <#-- 0=World, 19=max zoom in -->
+ <#else>
+ <#-- hardcoded in GEOPT_ADDRESS_GOOGLE, simpler -->
+ </#if>
+
+ <#-- ================================= Google Maps Init ======================================-->
<#if geoChart.dataSourceId?has_content>
- <#if geoChart.dataSourceId == "GEOPT_GOOGLE">
- <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;">
+ <#if geoChart.dataSourceId?substring(geoChart.dataSourceId?length-6 , geoChart.dataSourceId?length) == "GOOGLE">
+ <div id="${id}" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;">
<div style="padding:1em; color:gray;">${uiLabelMap.CommonLoading}</div>
</div>
- <#assign defaultUrl = "https." + request.getServerName()>
- <#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties", defaultUrl)>
- <script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}" type="text/javascript"></script>
- <script type="text/javascript"><!--
- if (GBrowserIsCompatible()) {
- var map = new GMap2(document.getElementById("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>"));
- <#if geoChart.center?has_content>
- map.setCenter(new GLatLng(${geoChart.center.lat?c}, ${geoChart.center.lon?c}), ${geoChart.center.zoom});
- <#else>
- <#if geoChart.points?has_content>
- var latlng = [
- <#list geoChart.points as point>
- new GLatLng(${point.lat?c}, ${point.lon?c})<#if point_has_next>,</#if>
- </#list>
- ];
- var latlngbounds = new GLatLngBounds();
- for (var i = 0; i < latlng.length; i++) {
- latlngbounds.extend(latlng[i]);
+ <script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
+ </#if>
+
+ <#-- ================================= Here we go with different types of maps renderer ======================================-->
+ <#if geoChart.dataSourceId == "GEOPT_GOOGLE">
+ <script type="text/javascript">
+ function showAllMarkers(map, points) {
+ if (points.length > 1) {
+ var latlngbounds = new google.maps.LatLngBounds();
+ for (var i = 0; i < latlngs.length; i++) {
+ latlngbounds.extend(latlngs[i]);
+ }
+ map.fitBounds(latlngbounds);
}
- map.setCenter(latlngbounds.getCenter(), Math.min (15, map.getBoundsZoomLevel(latlngbounds)));//reduce bounds zoom level to see all markers
- <#else>
- map.setCenter(new GLatLng(0, 0), 1);
- map.setZoom(15); // 0=World, 19=max zoom in
- </#if>
- </#if>
- <#if geoChart.controlUI?has_content && geoChart.controlUI == "small">
- map.addControl(new GSmallMapControl());
- <#else>
- map.setUIToDefault();
- </#if>
+ }
+
+ var map = new google.maps.Map(document.getElementById("${id}"),
<#if geoChart.points?has_content>
+ { center: new google.maps.LatLng(${center.lat?c}, ${center.lon?c}),
+ zoom: ${zoom},
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ });
+ <#list geoChart.points as point>
+ var marker_${point_index} = new google.maps.Marker({
+ position: new google.maps.LatLng(${point.lat?c}, ${point.lon?c}),
+ map: map
+ });
+ <#if point.link?has_content>
+ var infoWindow = new google.maps.InfoWindow();
+ google.maps.event.addListener(marker_${point_index}, "click", function() {
+ infoWindow.setContent(("<div style=\"width:210px; padding-right:10px;\"><a href=${point.link.url}>${point.link.label}</a></div>"));
+ infoWindow.setPosition(marker_${point_index}.getPosition());
+ infoWindow.open(map);
+ });
+ </#if>
+ </#list>
+ var latlngs = [
<#list geoChart.points as point>
- var marker_${point_index} = new GMarker(new GLatLng(${point.lat?c}, ${point.lon?c}));
- map.addOverlay(marker_${point_index});
- //map.addOverlay(new GMarker(new GLatLng(${point.lat?c}, ${point.lon?c})));
- <#if point.link?has_content>
- GEvent.addListener(marker_${point_index}, "click", function() {
- marker_${point_index}.openInfoWindowHtml("<div style=\"width:210px; padding-right:10px;\"><a href=${point.link.url}>${point.link.label}</a></div>");
- });
- </#if>
+ new google.maps.LatLng(${point.lat?c}, ${point.lon?c})<#if point_has_next>,</#if>
</#list>
+ ];
+ showAllMarkers(map, latlngs);
</#if>
- }
- --></script>
+ </script>
<#elseif geoChart.dataSourceId == "GEOPT_YAHOO">
<#elseif geoChart.dataSourceId == "GEOPT_MICROSOFT">
<#elseif geoChart.dataSourceId == "GEOPT_MAPTP">
<#elseif geoChart.dataSourceId == "GEOPT_ADDRESS_GOOGLE">
- <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width}px; height:${geoChart.height}px; margin:2em auto;">
- <div style="padding:1em; color:gray;">${uiLabelMap.CommonLoading}</div>
- </div>
- <#assign defaultUrl = "https." + request.getServerName()>
- <#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties", defaultUrl)>
- <script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}" type="text/javascript"></script>
- <script type="text/javascript"><!--
- if (GBrowserIsCompatible()) {
- var geocoder = new GClientGeocoder();
- var map = new GMap2(document.getElementById("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>"));
- geocoder.getLatLng("${pointAddress}", function(point) {
- if (!point) { showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");}
- map.setUIToDefault();
- map.setCenter(point, 13);
- map.addOverlay(new GMarker(point));
- map.setZoom(15); // 0=World, 19=max zoom in
+ <script type="text/javascript">
+ var geocoder = new google.maps.Geocoder();
+ var map = new google.maps.Map(document.getElementById("${id}"),
+ { center: new google.maps.LatLng(38, 15),
+ zoom: 15, // 0=World, 19=max zoom in
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ });
+ geocoder.geocode({'address': "${pointAddress}"}, function(result, status) {
+ if (status != google.maps.GeocoderStatus.OK) {
+ showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");
+ } else {
+ var position = result[0].geometry.location;
+ map.setCenter(position);
+ map.fitBounds(result[0].geometry.viewport);
+ var marker = new google.maps.Marker({
+ position: position,
+ map: map
+ });
+ }
});
- }
- --></script>
+ </script>
<#elseif geoChart.dataSourceId == "GEOPT_OSM">
- <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;">
- </div>
- <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
- <script>
- map = new OpenLayers.Map("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>");
+ <div id="${id}" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;"></div>
+ <#-- due to https://github.com/openlayers/openlayers/issues/1025 rather use a local version loaded by framework/common/widget/CommonScreens.xml -->
+ <#-- script src="//www.openlayers.org/api/OpenLayers.js"></script-->
+ <script type="text/javascript">
+ map = new OpenLayers.Map("${id}");
map.addLayer(new OpenLayers.Layer.OSM());
- <#if geoChart.center?has_content>
- var zoom = ${geoChart.center.zoom};
- var center= new OpenLayers.LonLat(${geoChart.center.lon?c},${geoChart.center.lat?c})
+ var zoom = ${zoom};
+ var center= new OpenLayers.LonLat(${center.lon?c},${center.lat?c})
.transform(new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
- map.getProjectionObject() // to Spherical Mercator Projection
- );
- </#if>
- var markers = new OpenLayers.Layer.Markers( "Markers" );
+ map.getProjectionObject() // to Spherical Mercator Projection
+ );
+ var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
<#if geoChart.points?has_content>
<#list geoChart.points as point>
@@ -111,8 +129,12 @@ under the License.
new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject())));
</#list>
</#if>
+ map.addControl(new OpenLayers.Control.PanZoomBar());
+ map.addControl(new OpenLayers.Control.NavToolbar());
+
map.setCenter(center, zoom);
- map.setZoom(15); // 0=World, 19=max zoom in
+ var newBound = markers.getDataExtent();
+ map.zoomToExtent(newBound);
</script>
</#if>
</#if>
Modified: ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml (original)
+++ ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml Tue Dec 31 15:23:32 2013
@@ -153,6 +153,8 @@ under the License.
<set field="layoutSettings.javaScripts[+0]" value="/images/jquery/jquery-1.8.2.min.js" global="true" />
<!-- jQuery CSSs -->
<set field="layoutSettings.styleSheets[+0]" value="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css" global="true" />
+
+ <set field="layoutSettings.javaScripts[]" value="/images/OpenLayers-2.13.1.js" global="true" />
<set field="layoutSettings.javaScripts[]" value="/images/selectall.js" global="true" />
<set field="layoutSettings.javaScripts[]" value="/images/fieldlookup.js" global="true" />
<set field="layoutSettings.javaScripts[]" value="/images/GooglemapMarkers.js" global="true" />
@@ -483,8 +485,7 @@ under the License.
<!-- jQuery CSSs -->
<set field="layoutSettings.styleSheets[+0]" value="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css" global="true"/>
-
-
+ <set field="layoutSettings.javaScripts[]" value="/images/OpenLayers-2.13.1.js" global="true" />
<set field="layoutSettings.javaScripts[]" value="/images/selectall.js" global="true"/>
<set field="layoutSettings.javaScripts[]" value="/images/fieldlookup.js" global="true"/>
<set field="layoutSettings.javaScripts[]" value="/images/GooglemapSimple.js" global="true"/>
Modified: ofbiz/branches/release13.07/specialpurpose/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/specialpurpose/build.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
==============================================================================
--- ofbiz/branches/release13.07/specialpurpose/build.xml (original)
+++ ofbiz/branches/release13.07/specialpurpose/build.xml Tue Dec 31 15:23:32 2013
@@ -21,5 +21,5 @@
<project name="OFBiz Special Purpose Applications Build" default="build" basedir=".">
<import file="../macros.xml"/>
<filelist id="specialpurpose-builds" dir="specialpurpose"
- files="ecommerce/build.xml"/>
+ files="ecommerce/build.xml,pos/build.xml"/>
</project>
Modified: ofbiz/branches/release13.07/specialpurpose/component-load.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/specialpurpose/component-load.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
==============================================================================
--- ofbiz/branches/release13.07/specialpurpose/component-load.xml (original)
+++ ofbiz/branches/release13.07/specialpurpose/component-load.xml Tue Dec 31 15:23:32 2013
@@ -21,4 +21,5 @@ under the License.
<component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd">
<load-component component-location="ecommerce"/>
+ <load-component component-location="pos"/>
</component-loader>
Re: svn commit: r1554538 - in /ofbiz/branches/release13.07: ./
applications/party/script/org/ofbiz/party/party/
applications/party/webapp/partymgr/party/ framework/common/config/
framework/common/webcommon/includes/ framework/common/widget/
framework/image
Posted by Jacques Le Roux <ja...@les7arts.com>.
OK, forgot https://issues.apache.org/jira/browse/OFBIZ-5453
Jacques
On Tuesday, December 31, 2013 7:11 PM jacques.le.roux@les7arts.com wrote
> It seems that geolocation does not work properly in R13.07 (no conflicts) and R12.04 (2 small conflicts handled, R11.04 had too
> much conflicts: not merged) I will check that later
>
> Jacques
>
> On Tuesday, December 31, 2013 4:23 PM jleroux@apache.org wrote
>> Author: jleroux
>> Date: Tue Dec 31 15:23:32 2013
>> New Revision: 1554538
>>
>> URL: http://svn.apache.org/r1554538
>> Log:
>> "Applied fix from trunk for revision: 1554536 "
>> ------------------------------------------------------------------------
>> r1554536 | jleroux | 2013-12-31 16:22:21 +0100 (mar. 31 déc. 2013) | 10 lignes
>>
>> This fixes the geolocation in OFBiz, for both Google Maps and OpenLayers. It seems few changes, it took me more time than I
>> thought. I hope this will last few years again, and it should be easier to maintain now.
>>
>> What I did:
>> Upgraded from Google Maps API 2 to 3, which also means removing the keys in general.properties. They are no longer needed in
>> API-3 (at least for our demo and local test uses), one worry less!
>> Refactored Google Maps code in geolocation.ftl: put more things in common, simplified code (the API-3 is better from this POV).
>>
>> For OpenLayers, due to most browsers now rejecting mixed content (HTTP vs HTTPS), I had to follow their advice and put
>> OpenLayers-2.13.1.js + images and theme(finally not used) in the framework. Not a big deal in term of size but again one more lib
>> to worry about. Anyway geolocation is not vital for OFBiz. I have also added a zoom and navigation widget in maps. Note that IE
>> warns about mixed content, but you can bypass it.
>>
>> While working on editGeoLocation (in Party) I noticed it does not update the elevation. I found it was possible
>> http://www.daftlogic.com/sandbox-google-maps-find-altitude.htm but I did not implement it, lack of time...
>> Also I got once a NPE in CallSimpleMapProcessor (when using editGeoLocation) but was unable to reproduce (w/o changes before and
>> after) ------------------------------------------------------------------------
>>
>>
>> Added:
>> ofbiz/branches/release13.07/framework/images/webapp/images/OpenLayers-2.13.1.js
>> - copied unchanged from r1554536, ofbiz/trunk/framework/images/webapp/images/OpenLayers-2.13.1.js
>> ofbiz/branches/release13.07/framework/images/webapp/images/img/
>> - copied from r1554536, ofbiz/trunk/framework/images/webapp/images/img/
>> ofbiz/branches/release13.07/framework/images/webapp/images/theme.openlayer.unused.ootb/
>> - copied from r1554536, ofbiz/trunk/framework/images/webapp/images/theme.openlayer.unused.ootb/
>> Modified:
>> ofbiz/branches/release13.07/ (props changed)
>> ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml
>> ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl
>> ofbiz/branches/release13.07/framework/common/config/general.properties
>> ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl
>> ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml
>> ofbiz/branches/release13.07/specialpurpose/build.xml
>> ofbiz/branches/release13.07/specialpurpose/component-load.xml
>>
>> Propchange: ofbiz/branches/release13.07/
>> ------------------------------------------------------------------------------
>> Merged /ofbiz/trunk:r1554536
>>
>> Modified: ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
>> ============================================================================== ---
>> ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml (original) +++
>> ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml Tue Dec 31 15:23:32 2013 @@
>> -134,7 +134,7 @@ under the License. <result-to-field result-name="geoPointId" field="geoPointId"/>
>> </call-service>
>>
>> - <now-timestamp field="nowTimestamp"/>
>> + <now field="nowTimestamp"/>
>> <make-value value-field="partyGeoPoint" entity-name="PartyGeoPoint"/>
>> <set field="partyGeoPoint.partyId" from-field="parameters.partyId"/>
>> <set field="partyGeoPoint.geoPointId" from-field="geoPointId"/>
>>
>> Modified: ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl?rev=1554538&r1=1554537&r2=1554538&view=diff
>> ============================================================================== ---
>> ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl (original) +++
>> ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl Tue Dec 31 15:23:32 2013 @@ -17,95
>> +17,106 @@ specific language governing permissions
>> under the License.
>> -->
>>
>> -<#assign defaultUrl = "https." + request.getServerName()>
>> -<#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties", defaultUrl)>
>> -<script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}" type="text/javascript"></script>
>> +<script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
>> <script type="text/javascript">
>> function load() {
>> - if (GBrowserIsCompatible()) {
>> - var map = new GMap2(document.getElementById("map"));
>> - map.addControl(new GSmallMapControl());
>> - map.addControl(new GMapTypeControl());
>> - var center = new GLatLng(${latitude?if_exists}, ${longitude?if_exists});
>> - map.setCenter(center, 15);
>> - geocoder = new GClientGeocoder();
>> - var marker = new GMarker(center, {draggable: true});
>> + var geocoder = new google.maps.Geocoder();
>> + var center = new google.maps.LatLng(${latitude!38}, ${longitude!15});
>> + var map = new google.maps.Map(document.getElementById("map"),
>> + { center: center,
>> + zoom: 15, // 0=World, 19=max zoom in
>> + mapTypeId: google.maps.MapTypeId.ROADMAP
>> + });
>> +
>> + var marker = new google.maps.Marker({
>> + position: center,
>> + map: map,
>> + draggable: true
>> + });
>> +
>> + document.getElementById("lat").value = center.lat().toFixed(5);
>> + document.getElementById("lng").value = center.lng().toFixed(5);
>> +
>> + google.maps.event.addListener(marker, "dragend", function() {
>> + var point = marker.getPosition();
>> + map.panTo(point);
>> + document.getElementById("lat").value = point.lat().toFixed(5);
>> + document.getElementById("lng").value = point.lng().toFixed(5);
>> + });
>> +
>> +
>> + google.maps.event.addListener(map, "moveend", function() {
>> + map.clearOverlays();
>> + var center = map.getCenter();
>> + var marker = new GMarker(center, {draggable: true});
>> map.addOverlay(marker);
>> document.getElementById("lat").value = center.lat().toFixed(5);
>> document.getElementById("lng").value = center.lng().toFixed(5);
>> -
>> - GEvent.addListener(marker, "dragend", function() {
>> - var point = marker.getPoint();
>> - map.panTo(point);
>> - document.getElementById("lat").value = point.lat().toFixed(5);
>> - document.getElementById("lng").value = point.lng().toFixed(5);
>> - });
>> -
>> - GEvent.addListener(map, "moveend", function() {
>> - map.clearOverlays();
>> - var center = map.getCenter();
>> - var marker = new GMarker(center, {draggable: true});
>> - map.addOverlay(marker);
>> - document.getElementById("lat").value = center.lat().toFixed(5);
>> - document.getElementById("lng").value = center.lng().toFixed(5);
>> + });
>>
>> - GEvent.addListener(marker, "dragend", function() {
>> - var point =marker.getPoint();
>> - map.panTo(point);
>> - document.getElementById("lat").value = point.lat().toFixed(5);
>> - document.getElementById("lng").value = point.lng().toFixed(5);
>> - });
>> - });
>> - }
>> + google.maps.event.addListener(marker, "dragend", function() {
>> + var point = marker.getPoint();
>> + map.panTo(point);
>> + document.getElementById("lat").value = point.lat().toFixed(5);
>> + document.getElementById("lng").value = point.lng().toFixed(5);
>> + });
>> }
>>
>> function showAddress(address) {
>> - var map = new GMap2(document.getElementById("map"));
>> - map.addControl(new GSmallMapControl());
>> - map.addControl(new GMapTypeControl());
>> + var map = new google.maps.Map(document.getElementById("map"),
>> + { center: new google.maps.LatLng(${latitude!38}, ${longitude!15}),
>> + zoom: 15, // 0=World, 19=max zoom in
>> + mapTypeId: google.maps.MapTypeId.ROADMAP
>> + });
>> + var geocoder = new google.maps.Geocoder();
>> if (geocoder) {
>> - geocoder.getLatLng(
>> - address,
>> - function(point) {
>> - if (!point) {
>> - alert(address + " not found");
>> - } else {
>> - document.getElementById("lat").value = point.lat().toFixed(5);
>> - document.getElementById("lng").value = point.lng().toFixed(5);
>> - map.clearOverlays()
>> - map.setCenter(point, 14);
>> - var marker = new GMarker(point, {draggable: true});
>> + geocoder.geocode({'address': address}, function(result, status) {
>> + if (status != google.maps.GeocoderStatus.OK) {
>> + showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");
>> + } else {
>> + var point = result[0].geometry.location;
>> + var lat = point.lat().toFixed(5);
>> + var lng = point.lng().toFixed(5);
>> + document.getElementById("lat").value = lat;
>> + document.getElementById("lng").value = lng;
>> + //map.clearOverlays()
>> + map.setCenter(point, 14);
>> +
>> + var marker = new google.maps.Marker({
>> + position: new google.maps.LatLng(lat, lng),
>> + map: map,
>> + draggable: true
>> + });
>> +
>> + google.maps.event.addListener(marker, "dragend", function() {
>> + var point = marker.getPosition();
>> + map.panTo(point);
>> + document.getElementById("lat").value = point.lat().toFixed(5);
>> + document.getElementById("lng").value = point.lng().toFixed(5);
>> + });
>> +
>> + google.maps.event.addListener(map, "moveend", function() {
>> + //map.clearOverlays();
>> + var center = map.getCenter();
>> + var marker = new google.maps.Marker(center, {draggable: true});
>> map.addOverlay(marker);
>> -
>> - GEvent.addListener(marker, "dragend", function() {
>> - var pt = marker.getPoint();
>> - map.panTo(pt);
>> - document.getElementById("lat").value = pt.lat().toFixed(5);
>> - document.getElementById("lng").value = pt.lng().toFixed(5);
>> - });
>> -
>> - GEvent.addListener(map, "moveend", function() {
>> - map.clearOverlays();
>> - var center = map.getCenter();
>> - var marker = new GMarker(center, {draggable: true});
>> - map.addOverlay(marker);
>> - document.getElementById("lat").value = center.lat().toFixed(5);
>> - document.getElementById("lng").value = center.lng().toFixed(5);
>> -
>> - GEvent.addListener(marker, "dragend", function() {
>> - var pt = marker.getPoint();
>> - map.panTo(pt);
>> - document.getElementById("lat").value = pt.lat().toFixed(5);
>> - document.getElementById("lng").value = pt.lng().toFixed(5);
>> - });
>> - });
>> - }
>> - });
>> + document.getElementById("lat").value = center.lat().toFixed(5);
>> + document.getElementById("lng").value = center.lng().toFixed(5);
>> + });
>> +
>> + google.maps.event.addListener(marker, "dragend", function() {
>> + var pt = marker.getPoint();
>> + map.panTo(pt);
>> + document.getElementById("lat").value = pt.lat().toFixed(5);
>> + document.getElementById("lng").value = pt.lng().toFixed(5);
>> + });
>> + }
>> + });
>> }
>> }
>> </script>
>>
>> -<body onload="load()" onunload="GUnload()" >
>> +<body onload="load()">
>> <center>
>> <div align="center" id="map" style="border:1px solid #979797; background-color:#e5e3df; width:500px; height:450px;
>> margin:2em auto;"><br/></div> <form action="#" onsubmit="showAddress(this.address.value); return false">
>> @@ -116,7 +127,7 @@ under the License.
>> <form id="updateMapForm" method="post" action="<@o...@ofbizUrl>">
>> <input type="hidden" name="partyId" value="${partyId?if_exists}"/>
>> <input type="hidden" name="geoPointId" value="${geoPointId?if_exists}"/>
>> - <input type="hidden" name="lat" id="lat"/>
>> + <input type="hidden" name="lat" id="lat"/>
>> <input type="hidden" name="lng" id="lng"/>
>> <input type="submit" id="createMapButton" class="smallSubmit" value="${uiLabelMap.CommonSubmit}">
>> </form>
>>
>> Modified: ofbiz/branches/release13.07/framework/common/config/general.properties
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/config/general.properties?rev=1554538&r1=1554537&r2=1554538&view=diff
>> ============================================================================== ---
>> ofbiz/branches/release13.07/framework/common/config/general.properties (original) +++
>> ofbiz/branches/release13.07/framework/common/config/general.properties Tue Dec 31 15:23:32 2013 @@ -128,13 +128,6 @@
>> http.upload.max.size=-1
>> mail.spam.name=X-Spam-Flag
>> mail.spam.value=YES
>>
>> -# -- Google Map key (by domain, see http://code.google.com/intl/en/apis/maps/signup.html, note that it works for
>> http://localhost)
>> -https.demo-trunk.ofbiz.apache.org=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBTl26GJHIFzHZYG8GNWSTKWDUTxchRLjgT9hY3-DDYk27lvZS84RH4aiQ
>> -https.demo-stable.ofbiz.apache.org=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBR8L_-1UdAfCE2bleqTaEvMtKARZxSrkTzKktKY2_Znm0TRq2DF4YhGPg
>> -
>> -https.localhost=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBQN-clGH2vvMMwJjYtcwF78UzZgEBTN70S6uIgRoAtXRkADNoesbw5etg
>> -http.localhost=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxR3euHYk9bpwvdF2Qg1EYO1LQitHA
>> -
>> # -- Y if you want to display the multi-tenant textbox in the login page and install specify components which related to each
>> tenant
>> multitenant=N
>>
>>
>> Modified: ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl?rev=1554538&r1=1554537&r2=1554538&view=diff
>> ============================================================================== ---
>> ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl (original) +++
>> ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl Tue Dec 31 15:23:32 2013 @@ -17,93 +17,111 @@
>> specific language governing permissions
>> under the License.
>> -->
>> <#if geoChart?has_content>
>> + <#-- ================================= Golbal Init ======================================-->
>> + <#if geoChart.id?has_content>
>> + <#assign id = geoChart.id>
>> + <#else>
>> + <#assign id = "map_canvas">
>> + </#if>
>> +
>> + <#if geoChart.center?has_content>
>> + <#assign center = geoChart.center>
>> + <#assign zoom = geoChart.center.zoom>
>> + <#elseif geoChart.points?has_content>
>> + <#assign center = geoChart.points[0]>
>> + <#assign zoom = 15> <#-- 0=World, 19=max zoom in -->
>> + <#else>
>> + <#-- hardcoded in GEOPT_ADDRESS_GOOGLE, simpler -->
>> + </#if>
>> +
>> + <#-- ================================= Google Maps Init ======================================-->
>> <#if geoChart.dataSourceId?has_content>
>> - <#if geoChart.dataSourceId == "GEOPT_GOOGLE">
>> - <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797;
>> background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;"> + <#if
>> geoChart.dataSourceId?substring(geoChart.dataSourceId?length-6 , geoChart.dataSourceId?length) == "GOOGLE"> + <div
>> id="${id}" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width};
>> height:${geoChart.height}; margin:2em auto;"> <div style="padding:1em; color:gray;">${uiLabelMap.CommonLoading}</div>
>> </div>
>> - <#assign defaultUrl = "https." + request.getServerName()>
>> - <#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties",
>> defaultUrl)>
>> - <script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}"
>> type="text/javascript"></script>
>> - <script type="text/javascript"><!--
>> - if (GBrowserIsCompatible()) {
>> - var map = new GMap2(document.getElementById("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>"));
>> - <#if geoChart.center?has_content>
>> - map.setCenter(new GLatLng(${geoChart.center.lat?c}, ${geoChart.center.lon?c}), ${geoChart.center.zoom});
>> - <#else>
>> - <#if geoChart.points?has_content>
>> - var latlng = [
>> - <#list geoChart.points as point>
>> - new GLatLng(${point.lat?c}, ${point.lon?c})<#if point_has_next>,</#if>
>> - </#list>
>> - ];
>> - var latlngbounds = new GLatLngBounds();
>> - for (var i = 0; i < latlng.length; i++) {
>> - latlngbounds.extend(latlng[i]);
>> + <script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
>> + </#if>
>> +
>> + <#-- ================================= Here we go with different types of maps renderer
>> ======================================--> + <#if geoChart.dataSourceId == "GEOPT_GOOGLE">
>> + <script type="text/javascript">
>> + function showAllMarkers(map, points) {
>> + if (points.length > 1) {
>> + var latlngbounds = new google.maps.LatLngBounds();
>> + for (var i = 0; i < latlngs.length; i++) {
>> + latlngbounds.extend(latlngs[i]);
>> + }
>> + map.fitBounds(latlngbounds);
>> }
>> - map.setCenter(latlngbounds.getCenter(), Math.min (15, map.getBoundsZoomLevel(latlngbounds)));//reduce bounds
>> zoom level to see all markers
>> - <#else>
>> - map.setCenter(new GLatLng(0, 0), 1);
>> - map.setZoom(15); // 0=World, 19=max zoom in
>> - </#if>
>> - </#if>
>> - <#if geoChart.controlUI?has_content && geoChart.controlUI == "small">
>> - map.addControl(new GSmallMapControl());
>> - <#else>
>> - map.setUIToDefault();
>> - </#if>
>> + }
>> +
>> + var map = new google.maps.Map(document.getElementById("${id}"),
>> <#if geoChart.points?has_content>
>> + { center: new google.maps.LatLng(${center.lat?c}, ${center.lon?c}),
>> + zoom: ${zoom},
>> + mapTypeId: google.maps.MapTypeId.ROADMAP
>> + });
>> + <#list geoChart.points as point>
>> + var marker_${point_index} = new google.maps.Marker({
>> + position: new google.maps.LatLng(${point.lat?c}, ${point.lon?c}),
>> + map: map
>> + });
>> + <#if point.link?has_content>
>> + var infoWindow = new google.maps.InfoWindow();
>> + google.maps.event.addListener(marker_${point_index}, "click", function() {
>> + infoWindow.setContent(("<div style=\"width:210px; padding-right:10px;\"><a
>> href=${point.link.url}>${point.link.label}</a></div>")); +
>> infoWindow.setPosition(marker_${point_index}.getPosition()); + infoWindow.open(map);
>> + });
>> + </#if>
>> + </#list>
>> + var latlngs = [
>> <#list geoChart.points as point>
>> - var marker_${point_index} = new GMarker(new GLatLng(${point.lat?c}, ${point.lon?c}));
>> - map.addOverlay(marker_${point_index});
>> - //map.addOverlay(new GMarker(new GLatLng(${point.lat?c}, ${point.lon?c})));
>> - <#if point.link?has_content>
>> - GEvent.addListener(marker_${point_index}, "click", function() {
>> - marker_${point_index}.openInfoWindowHtml("<div style=\"width:210px; padding-right:10px;\"><a
>> href=${point.link.url}>${point.link.label}</a></div>");
>> - });
>> - </#if>
>> + new google.maps.LatLng(${point.lat?c}, ${point.lon?c})<#if point_has_next>,</#if>
>> </#list>
>> + ];
>> + showAllMarkers(map, latlngs);
>> </#if>
>> - }
>> - --></script>
>> + </script>
>> <#elseif geoChart.dataSourceId == "GEOPT_YAHOO">
>> <#elseif geoChart.dataSourceId == "GEOPT_MICROSOFT">
>> <#elseif geoChart.dataSourceId == "GEOPT_MAPTP">
>> <#elseif geoChart.dataSourceId == "GEOPT_ADDRESS_GOOGLE">
>> - <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797;
>> background-color:#e5e3df; width:${geoChart.width}px; height:${geoChart.height}px; margin:2em auto;">
>> - <div style="padding:1em; color:gray;">${uiLabelMap.CommonLoading}</div>
>> - </div>
>> - <#assign defaultUrl = "https." + request.getServerName()>
>> - <#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties",
>> defaultUrl)>
>> - <script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}"
>> type="text/javascript"></script>
>> - <script type="text/javascript"><!--
>> - if (GBrowserIsCompatible()) {
>> - var geocoder = new GClientGeocoder();
>> - var map = new GMap2(document.getElementById("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>"));
>> - geocoder.getLatLng("${pointAddress}", function(point) {
>> - if (!point) { showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");}
>> - map.setUIToDefault();
>> - map.setCenter(point, 13);
>> - map.addOverlay(new GMarker(point));
>> - map.setZoom(15); // 0=World, 19=max zoom in
>> + <script type="text/javascript">
>> + var geocoder = new google.maps.Geocoder();
>> + var map = new google.maps.Map(document.getElementById("${id}"),
>> + { center: new google.maps.LatLng(38, 15),
>> + zoom: 15, // 0=World, 19=max zoom in
>> + mapTypeId: google.maps.MapTypeId.ROADMAP
>> + });
>> + geocoder.geocode({'address': "${pointAddress}"}, function(result, status) {
>> + if (status != google.maps.GeocoderStatus.OK) {
>> + showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");
>> + } else {
>> + var position = result[0].geometry.location;
>> + map.setCenter(position);
>> + map.fitBounds(result[0].geometry.viewport);
>> + var marker = new google.maps.Marker({
>> + position: position,
>> + map: map
>> + });
>> + }
>> });
>> - }
>> - --></script>
>> + </script>
>> <#elseif geoChart.dataSourceId == "GEOPT_OSM">
>> - <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797;
>> background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;">
>> - </div>
>> - <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
>> - <script>
>> - map = new OpenLayers.Map("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>");
>> + <div id="${id}" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width};
>> height:${geoChart.height}; margin:2em auto;"></div> + <#-- due to https://github.com/openlayers/openlayers/issues/1025
>> rather use a local version loaded by framework/common/widget/CommonScreens.xml --> + <#-- script
>> src="//www.openlayers.org/api/OpenLayers.js"></script--> + <script type="text/javascript">
>> + map = new OpenLayers.Map("${id}");
>> map.addLayer(new OpenLayers.Layer.OSM());
>> - <#if geoChart.center?has_content>
>> - var zoom = ${geoChart.center.zoom};
>> - var center= new OpenLayers.LonLat(${geoChart.center.lon?c},${geoChart.center.lat?c})
>> + var zoom = ${zoom};
>> + var center= new OpenLayers.LonLat(${center.lon?c},${center.lat?c})
>> .transform(new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
>> - map.getProjectionObject() // to Spherical Mercator Projection
>> - );
>> - </#if>
>> - var markers = new OpenLayers.Layer.Markers( "Markers" );
>> + map.getProjectionObject() // to Spherical Mercator Projection
>> + );
>> + var markers = new OpenLayers.Layer.Markers("Markers");
>> map.addLayer(markers);
>> <#if geoChart.points?has_content>
>> <#list geoChart.points as point>
>> @@ -111,8 +129,12 @@ under the License.
>> new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject())));
>> </#list>
>> </#if>
>> + map.addControl(new OpenLayers.Control.PanZoomBar());
>> + map.addControl(new OpenLayers.Control.NavToolbar());
>> +
>> map.setCenter(center, zoom);
>> - map.setZoom(15); // 0=World, 19=max zoom in
>> + var newBound = markers.getDataExtent();
>> + map.zoomToExtent(newBound);
>> </script>
>> </#if>
>> </#if>
>>
>> Modified: ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
>> ============================================================================== ---
>> ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml (original) +++
>> ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml Tue Dec 31 15:23:32 2013 @@ -153,6 +153,8 @@ under the
>> License. <set field="layoutSettings.javaScripts[+0]" value="/images/jquery/jquery-1.8.2.min.js" global="true" />
>> <!-- jQuery CSSs -->
>> <set field="layoutSettings.styleSheets[+0]"
>> value="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css" global="true" /> +
>> + <set field="layoutSettings.javaScripts[]" value="/images/OpenLayers-2.13.1.js" global="true" />
>> <set field="layoutSettings.javaScripts[]" value="/images/selectall.js" global="true" />
>> <set field="layoutSettings.javaScripts[]" value="/images/fieldlookup.js" global="true" />
>> <set field="layoutSettings.javaScripts[]" value="/images/GooglemapMarkers.js" global="true" />
>> @@ -483,8 +485,7 @@ under the License.
>> <!-- jQuery CSSs -->
>> <set field="layoutSettings.styleSheets[+0]"
>> value="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css" global="true"/>
>>
>> -
>> -
>> + <set field="layoutSettings.javaScripts[]" value="/images/OpenLayers-2.13.1.js" global="true" />
>> <set field="layoutSettings.javaScripts[]" value="/images/selectall.js" global="true"/>
>> <set field="layoutSettings.javaScripts[]" value="/images/fieldlookup.js" global="true"/>
>> <set field="layoutSettings.javaScripts[]" value="/images/GooglemapSimple.js" global="true"/>
>>
>> Modified: ofbiz/branches/release13.07/specialpurpose/build.xml
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/specialpurpose/build.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
>> ============================================================================== ---
>> ofbiz/branches/release13.07/specialpurpose/build.xml (original) +++ ofbiz/branches/release13.07/specialpurpose/build.xml Tue Dec
>> 31 15:23:32 2013 @@ -21,5 +21,5 @@
>> <project name="OFBiz Special Purpose Applications Build" default="build" basedir=".">
>> <import file="../macros.xml"/>
>> <filelist id="specialpurpose-builds" dir="specialpurpose"
>> - files="ecommerce/build.xml"/>
>> + files="ecommerce/build.xml,pos/build.xml"/>
>> </project>
>>
>> Modified: ofbiz/branches/release13.07/specialpurpose/component-load.xml
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/specialpurpose/component-load.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
>> ============================================================================== ---
>> ofbiz/branches/release13.07/specialpurpose/component-load.xml (original) +++
>> ofbiz/branches/release13.07/specialpurpose/component-load.xml Tue Dec 31 15:23:32 2013 @@ -21,4 +21,5 @@ under the License.
>> <component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd">
>> <load-component component-location="ecommerce"/>
>> + <load-component component-location="pos"/>
>> </component-loader>
Re: svn commit: r1554538 - in /ofbiz/branches/release13.07: ./
applications/party/script/org/ofbiz/party/party/
applications/party/webapp/partymgr/party/ framework/common/config/
framework/common/webcommon/includes/ framework/common/widget/
framework/image
Posted by Jacques Le Roux <ja...@les7arts.com>.
It seems that geolocation does not work properly in R13.07 (no conflicts) and R12.04 (2 small conflicts handled, R11.04 had too much conflicts: not merged)
I will check that later
Jacques
On Tuesday, December 31, 2013 4:23 PM jleroux@apache.org wrote
> Author: jleroux
> Date: Tue Dec 31 15:23:32 2013
> New Revision: 1554538
>
> URL: http://svn.apache.org/r1554538
> Log:
> "Applied fix from trunk for revision: 1554536 "
> ------------------------------------------------------------------------
> r1554536 | jleroux | 2013-12-31 16:22:21 +0100 (mar. 31 déc. 2013) | 10 lignes
>
> This fixes the geolocation in OFBiz, for both Google Maps and OpenLayers. It seems few changes, it took me more time than I
> thought. I hope this will last few years again, and it should be easier to maintain now.
>
> What I did:
> Upgraded from Google Maps API 2 to 3, which also means removing the keys in general.properties. They are no longer needed in
> API-3 (at least for our demo and local test uses), one worry less!
> Refactored Google Maps code in geolocation.ftl: put more things in common, simplified code (the API-3 is better from this POV).
>
> For OpenLayers, due to most browsers now rejecting mixed content (HTTP vs HTTPS), I had to follow their advice and put
> OpenLayers-2.13.1.js + images and theme(finally not used) in the framework. Not a big deal in term of size but again one more lib
> to worry about. Anyway geolocation is not vital for OFBiz. I have also added a zoom and navigation widget in maps. Note that IE
> warns about mixed content, but you can bypass it.
>
> While working on editGeoLocation (in Party) I noticed it does not update the elevation. I found it was possible
> http://www.daftlogic.com/sandbox-google-maps-find-altitude.htm but I did not implement it, lack of time...
> Also I got once a NPE in CallSimpleMapProcessor (when using editGeoLocation) but was unable to reproduce (w/o changes before and
> after) ------------------------------------------------------------------------
>
>
> Added:
> ofbiz/branches/release13.07/framework/images/webapp/images/OpenLayers-2.13.1.js
> - copied unchanged from r1554536, ofbiz/trunk/framework/images/webapp/images/OpenLayers-2.13.1.js
> ofbiz/branches/release13.07/framework/images/webapp/images/img/
> - copied from r1554536, ofbiz/trunk/framework/images/webapp/images/img/
> ofbiz/branches/release13.07/framework/images/webapp/images/theme.openlayer.unused.ootb/
> - copied from r1554536, ofbiz/trunk/framework/images/webapp/images/theme.openlayer.unused.ootb/
> Modified:
> ofbiz/branches/release13.07/ (props changed)
> ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml
> ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl
> ofbiz/branches/release13.07/framework/common/config/general.properties
> ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl
> ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml
> ofbiz/branches/release13.07/specialpurpose/build.xml
> ofbiz/branches/release13.07/specialpurpose/component-load.xml
>
> Propchange: ofbiz/branches/release13.07/
> ------------------------------------------------------------------------------
> Merged /ofbiz/trunk:r1554536
>
> Modified: ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml
> URL:
> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
> ============================================================================== ---
> ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml (original) +++
> ofbiz/branches/release13.07/applications/party/script/org/ofbiz/party/party/PartySimpleEvents.xml Tue Dec 31 15:23:32 2013 @@
> -134,7 +134,7 @@ under the License. <result-to-field result-name="geoPointId" field="geoPointId"/>
> </call-service>
>
> - <now-timestamp field="nowTimestamp"/>
> + <now field="nowTimestamp"/>
> <make-value value-field="partyGeoPoint" entity-name="PartyGeoPoint"/>
> <set field="partyGeoPoint.partyId" from-field="parameters.partyId"/>
> <set field="partyGeoPoint.geoPointId" from-field="geoPointId"/>
>
> Modified: ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl
> URL:
> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl?rev=1554538&r1=1554537&r2=1554538&view=diff
> ============================================================================== ---
> ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl (original) +++
> ofbiz/branches/release13.07/applications/party/webapp/partymgr/party/editGeoLocation.ftl Tue Dec 31 15:23:32 2013 @@ -17,95
> +17,106 @@ specific language governing permissions
> under the License.
> -->
>
> -<#assign defaultUrl = "https." + request.getServerName()>
> -<#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties", defaultUrl)>
> -<script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}" type="text/javascript"></script>
> +<script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
> <script type="text/javascript">
> function load() {
> - if (GBrowserIsCompatible()) {
> - var map = new GMap2(document.getElementById("map"));
> - map.addControl(new GSmallMapControl());
> - map.addControl(new GMapTypeControl());
> - var center = new GLatLng(${latitude?if_exists}, ${longitude?if_exists});
> - map.setCenter(center, 15);
> - geocoder = new GClientGeocoder();
> - var marker = new GMarker(center, {draggable: true});
> + var geocoder = new google.maps.Geocoder();
> + var center = new google.maps.LatLng(${latitude!38}, ${longitude!15});
> + var map = new google.maps.Map(document.getElementById("map"),
> + { center: center,
> + zoom: 15, // 0=World, 19=max zoom in
> + mapTypeId: google.maps.MapTypeId.ROADMAP
> + });
> +
> + var marker = new google.maps.Marker({
> + position: center,
> + map: map,
> + draggable: true
> + });
> +
> + document.getElementById("lat").value = center.lat().toFixed(5);
> + document.getElementById("lng").value = center.lng().toFixed(5);
> +
> + google.maps.event.addListener(marker, "dragend", function() {
> + var point = marker.getPosition();
> + map.panTo(point);
> + document.getElementById("lat").value = point.lat().toFixed(5);
> + document.getElementById("lng").value = point.lng().toFixed(5);
> + });
> +
> +
> + google.maps.event.addListener(map, "moveend", function() {
> + map.clearOverlays();
> + var center = map.getCenter();
> + var marker = new GMarker(center, {draggable: true});
> map.addOverlay(marker);
> document.getElementById("lat").value = center.lat().toFixed(5);
> document.getElementById("lng").value = center.lng().toFixed(5);
> -
> - GEvent.addListener(marker, "dragend", function() {
> - var point = marker.getPoint();
> - map.panTo(point);
> - document.getElementById("lat").value = point.lat().toFixed(5);
> - document.getElementById("lng").value = point.lng().toFixed(5);
> - });
> -
> - GEvent.addListener(map, "moveend", function() {
> - map.clearOverlays();
> - var center = map.getCenter();
> - var marker = new GMarker(center, {draggable: true});
> - map.addOverlay(marker);
> - document.getElementById("lat").value = center.lat().toFixed(5);
> - document.getElementById("lng").value = center.lng().toFixed(5);
> + });
>
> - GEvent.addListener(marker, "dragend", function() {
> - var point =marker.getPoint();
> - map.panTo(point);
> - document.getElementById("lat").value = point.lat().toFixed(5);
> - document.getElementById("lng").value = point.lng().toFixed(5);
> - });
> - });
> - }
> + google.maps.event.addListener(marker, "dragend", function() {
> + var point = marker.getPoint();
> + map.panTo(point);
> + document.getElementById("lat").value = point.lat().toFixed(5);
> + document.getElementById("lng").value = point.lng().toFixed(5);
> + });
> }
>
> function showAddress(address) {
> - var map = new GMap2(document.getElementById("map"));
> - map.addControl(new GSmallMapControl());
> - map.addControl(new GMapTypeControl());
> + var map = new google.maps.Map(document.getElementById("map"),
> + { center: new google.maps.LatLng(${latitude!38}, ${longitude!15}),
> + zoom: 15, // 0=World, 19=max zoom in
> + mapTypeId: google.maps.MapTypeId.ROADMAP
> + });
> + var geocoder = new google.maps.Geocoder();
> if (geocoder) {
> - geocoder.getLatLng(
> - address,
> - function(point) {
> - if (!point) {
> - alert(address + " not found");
> - } else {
> - document.getElementById("lat").value = point.lat().toFixed(5);
> - document.getElementById("lng").value = point.lng().toFixed(5);
> - map.clearOverlays()
> - map.setCenter(point, 14);
> - var marker = new GMarker(point, {draggable: true});
> + geocoder.geocode({'address': address}, function(result, status) {
> + if (status != google.maps.GeocoderStatus.OK) {
> + showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");
> + } else {
> + var point = result[0].geometry.location;
> + var lat = point.lat().toFixed(5);
> + var lng = point.lng().toFixed(5);
> + document.getElementById("lat").value = lat;
> + document.getElementById("lng").value = lng;
> + //map.clearOverlays()
> + map.setCenter(point, 14);
> +
> + var marker = new google.maps.Marker({
> + position: new google.maps.LatLng(lat, lng),
> + map: map,
> + draggable: true
> + });
> +
> + google.maps.event.addListener(marker, "dragend", function() {
> + var point = marker.getPosition();
> + map.panTo(point);
> + document.getElementById("lat").value = point.lat().toFixed(5);
> + document.getElementById("lng").value = point.lng().toFixed(5);
> + });
> +
> + google.maps.event.addListener(map, "moveend", function() {
> + //map.clearOverlays();
> + var center = map.getCenter();
> + var marker = new google.maps.Marker(center, {draggable: true});
> map.addOverlay(marker);
> -
> - GEvent.addListener(marker, "dragend", function() {
> - var pt = marker.getPoint();
> - map.panTo(pt);
> - document.getElementById("lat").value = pt.lat().toFixed(5);
> - document.getElementById("lng").value = pt.lng().toFixed(5);
> - });
> -
> - GEvent.addListener(map, "moveend", function() {
> - map.clearOverlays();
> - var center = map.getCenter();
> - var marker = new GMarker(center, {draggable: true});
> - map.addOverlay(marker);
> - document.getElementById("lat").value = center.lat().toFixed(5);
> - document.getElementById("lng").value = center.lng().toFixed(5);
> -
> - GEvent.addListener(marker, "dragend", function() {
> - var pt = marker.getPoint();
> - map.panTo(pt);
> - document.getElementById("lat").value = pt.lat().toFixed(5);
> - document.getElementById("lng").value = pt.lng().toFixed(5);
> - });
> - });
> - }
> - });
> + document.getElementById("lat").value = center.lat().toFixed(5);
> + document.getElementById("lng").value = center.lng().toFixed(5);
> + });
> +
> + google.maps.event.addListener(marker, "dragend", function() {
> + var pt = marker.getPoint();
> + map.panTo(pt);
> + document.getElementById("lat").value = pt.lat().toFixed(5);
> + document.getElementById("lng").value = pt.lng().toFixed(5);
> + });
> + }
> + });
> }
> }
> </script>
>
> -<body onload="load()" onunload="GUnload()" >
> +<body onload="load()">
> <center>
> <div align="center" id="map" style="border:1px solid #979797; background-color:#e5e3df; width:500px; height:450px;
> margin:2em auto;"><br/></div> <form action="#" onsubmit="showAddress(this.address.value); return false">
> @@ -116,7 +127,7 @@ under the License.
> <form id="updateMapForm" method="post" action="<@o...@ofbizUrl>">
> <input type="hidden" name="partyId" value="${partyId?if_exists}"/>
> <input type="hidden" name="geoPointId" value="${geoPointId?if_exists}"/>
> - <input type="hidden" name="lat" id="lat"/>
> + <input type="hidden" name="lat" id="lat"/>
> <input type="hidden" name="lng" id="lng"/>
> <input type="submit" id="createMapButton" class="smallSubmit" value="${uiLabelMap.CommonSubmit}">
> </form>
>
> Modified: ofbiz/branches/release13.07/framework/common/config/general.properties
> URL:
> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/config/general.properties?rev=1554538&r1=1554537&r2=1554538&view=diff
> ============================================================================== ---
> ofbiz/branches/release13.07/framework/common/config/general.properties (original) +++
> ofbiz/branches/release13.07/framework/common/config/general.properties Tue Dec 31 15:23:32 2013 @@ -128,13 +128,6 @@
> http.upload.max.size=-1
> mail.spam.name=X-Spam-Flag
> mail.spam.value=YES
>
> -# -- Google Map key (by domain, see http://code.google.com/intl/en/apis/maps/signup.html, note that it works for
> http://localhost)
> -https.demo-trunk.ofbiz.apache.org=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBTl26GJHIFzHZYG8GNWSTKWDUTxchRLjgT9hY3-DDYk27lvZS84RH4aiQ
> -https.demo-stable.ofbiz.apache.org=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBR8L_-1UdAfCE2bleqTaEvMtKARZxSrkTzKktKY2_Znm0TRq2DF4YhGPg
> -
> -https.localhost=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBQN-clGH2vvMMwJjYtcwF78UzZgEBTN70S6uIgRoAtXRkADNoesbw5etg
> -http.localhost=ABQIAAAAtt0d8djaYFkk8N5LJVcDSBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxR3euHYk9bpwvdF2Qg1EYO1LQitHA
> -
> # -- Y if you want to display the multi-tenant textbox in the login page and install specify components which related to each
> tenant
> multitenant=N
>
>
> Modified: ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl
> URL:
> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl?rev=1554538&r1=1554537&r2=1554538&view=diff
> ============================================================================== ---
> ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl (original) +++
> ofbiz/branches/release13.07/framework/common/webcommon/includes/geolocation.ftl Tue Dec 31 15:23:32 2013 @@ -17,93 +17,111 @@
> specific language governing permissions
> under the License.
> -->
> <#if geoChart?has_content>
> + <#-- ================================= Golbal Init ======================================-->
> + <#if geoChart.id?has_content>
> + <#assign id = geoChart.id>
> + <#else>
> + <#assign id = "map_canvas">
> + </#if>
> +
> + <#if geoChart.center?has_content>
> + <#assign center = geoChart.center>
> + <#assign zoom = geoChart.center.zoom>
> + <#elseif geoChart.points?has_content>
> + <#assign center = geoChart.points[0]>
> + <#assign zoom = 15> <#-- 0=World, 19=max zoom in -->
> + <#else>
> + <#-- hardcoded in GEOPT_ADDRESS_GOOGLE, simpler -->
> + </#if>
> +
> + <#-- ================================= Google Maps Init ======================================-->
> <#if geoChart.dataSourceId?has_content>
> - <#if geoChart.dataSourceId == "GEOPT_GOOGLE">
> - <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797;
> background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;"> + <#if
> geoChart.dataSourceId?substring(geoChart.dataSourceId?length-6 , geoChart.dataSourceId?length) == "GOOGLE"> + <div
> id="${id}" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width};
> height:${geoChart.height}; margin:2em auto;"> <div style="padding:1em; color:gray;">${uiLabelMap.CommonLoading}</div>
> </div>
> - <#assign defaultUrl = "https." + request.getServerName()>
> - <#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties",
> defaultUrl)>
> - <script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}" type="text/javascript"></script>
> - <script type="text/javascript"><!--
> - if (GBrowserIsCompatible()) {
> - var map = new GMap2(document.getElementById("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>"));
> - <#if geoChart.center?has_content>
> - map.setCenter(new GLatLng(${geoChart.center.lat?c}, ${geoChart.center.lon?c}), ${geoChart.center.zoom});
> - <#else>
> - <#if geoChart.points?has_content>
> - var latlng = [
> - <#list geoChart.points as point>
> - new GLatLng(${point.lat?c}, ${point.lon?c})<#if point_has_next>,</#if>
> - </#list>
> - ];
> - var latlngbounds = new GLatLngBounds();
> - for (var i = 0; i < latlng.length; i++) {
> - latlngbounds.extend(latlng[i]);
> + <script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
> + </#if>
> +
> + <#-- ================================= Here we go with different types of maps renderer
> ======================================--> + <#if geoChart.dataSourceId == "GEOPT_GOOGLE">
> + <script type="text/javascript">
> + function showAllMarkers(map, points) {
> + if (points.length > 1) {
> + var latlngbounds = new google.maps.LatLngBounds();
> + for (var i = 0; i < latlngs.length; i++) {
> + latlngbounds.extend(latlngs[i]);
> + }
> + map.fitBounds(latlngbounds);
> }
> - map.setCenter(latlngbounds.getCenter(), Math.min (15, map.getBoundsZoomLevel(latlngbounds)));//reduce bounds
> zoom level to see all markers
> - <#else>
> - map.setCenter(new GLatLng(0, 0), 1);
> - map.setZoom(15); // 0=World, 19=max zoom in
> - </#if>
> - </#if>
> - <#if geoChart.controlUI?has_content && geoChart.controlUI == "small">
> - map.addControl(new GSmallMapControl());
> - <#else>
> - map.setUIToDefault();
> - </#if>
> + }
> +
> + var map = new google.maps.Map(document.getElementById("${id}"),
> <#if geoChart.points?has_content>
> + { center: new google.maps.LatLng(${center.lat?c}, ${center.lon?c}),
> + zoom: ${zoom},
> + mapTypeId: google.maps.MapTypeId.ROADMAP
> + });
> + <#list geoChart.points as point>
> + var marker_${point_index} = new google.maps.Marker({
> + position: new google.maps.LatLng(${point.lat?c}, ${point.lon?c}),
> + map: map
> + });
> + <#if point.link?has_content>
> + var infoWindow = new google.maps.InfoWindow();
> + google.maps.event.addListener(marker_${point_index}, "click", function() {
> + infoWindow.setContent(("<div style=\"width:210px; padding-right:10px;\"><a
> href=${point.link.url}>${point.link.label}</a></div>")); +
> infoWindow.setPosition(marker_${point_index}.getPosition()); + infoWindow.open(map);
> + });
> + </#if>
> + </#list>
> + var latlngs = [
> <#list geoChart.points as point>
> - var marker_${point_index} = new GMarker(new GLatLng(${point.lat?c}, ${point.lon?c}));
> - map.addOverlay(marker_${point_index});
> - //map.addOverlay(new GMarker(new GLatLng(${point.lat?c}, ${point.lon?c})));
> - <#if point.link?has_content>
> - GEvent.addListener(marker_${point_index}, "click", function() {
> - marker_${point_index}.openInfoWindowHtml("<div style=\"width:210px; padding-right:10px;\"><a
> href=${point.link.url}>${point.link.label}</a></div>");
> - });
> - </#if>
> + new google.maps.LatLng(${point.lat?c}, ${point.lon?c})<#if point_has_next>,</#if>
> </#list>
> + ];
> + showAllMarkers(map, latlngs);
> </#if>
> - }
> - --></script>
> + </script>
> <#elseif geoChart.dataSourceId == "GEOPT_YAHOO">
> <#elseif geoChart.dataSourceId == "GEOPT_MICROSOFT">
> <#elseif geoChart.dataSourceId == "GEOPT_MAPTP">
> <#elseif geoChart.dataSourceId == "GEOPT_ADDRESS_GOOGLE">
> - <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797;
> background-color:#e5e3df; width:${geoChart.width}px; height:${geoChart.height}px; margin:2em auto;">
> - <div style="padding:1em; color:gray;">${uiLabelMap.CommonLoading}</div>
> - </div>
> - <#assign defaultUrl = "https." + request.getServerName()>
> - <#assign defaultGogleMapKey = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("general.properties",
> defaultUrl)>
> - <script src="http://maps.google.com/maps?file=api&v=2&key=${defaultGogleMapKey}" type="text/javascript"></script>
> - <script type="text/javascript"><!--
> - if (GBrowserIsCompatible()) {
> - var geocoder = new GClientGeocoder();
> - var map = new GMap2(document.getElementById("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>"));
> - geocoder.getLatLng("${pointAddress}", function(point) {
> - if (!point) { showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");}
> - map.setUIToDefault();
> - map.setCenter(point, 13);
> - map.addOverlay(new GMarker(point));
> - map.setZoom(15); // 0=World, 19=max zoom in
> + <script type="text/javascript">
> + var geocoder = new google.maps.Geocoder();
> + var map = new google.maps.Map(document.getElementById("${id}"),
> + { center: new google.maps.LatLng(38, 15),
> + zoom: 15, // 0=World, 19=max zoom in
> + mapTypeId: google.maps.MapTypeId.ROADMAP
> + });
> + geocoder.geocode({'address': "${pointAddress}"}, function(result, status) {
> + if (status != google.maps.GeocoderStatus.OK) {
> + showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonAddressNotFound}");
> + } else {
> + var position = result[0].geometry.location;
> + map.setCenter(position);
> + map.fitBounds(result[0].geometry.viewport);
> + var marker = new google.maps.Marker({
> + position: position,
> + map: map
> + });
> + }
> });
> - }
> - --></script>
> + </script>
> <#elseif geoChart.dataSourceId == "GEOPT_OSM">
> - <div id="<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>" style="border:1px solid #979797;
> background-color:#e5e3df; width:${geoChart.width}; height:${geoChart.height}; margin:2em auto;">
> - </div>
> - <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
> - <script>
> - map = new OpenLayers.Map("<#if geoChart.id?has_content>${geoChart.id}<#else>map_canvas</#if>");
> + <div id="${id}" style="border:1px solid #979797; background-color:#e5e3df; width:${geoChart.width};
> height:${geoChart.height}; margin:2em auto;"></div> + <#-- due to https://github.com/openlayers/openlayers/issues/1025
> rather use a local version loaded by framework/common/widget/CommonScreens.xml --> + <#-- script
> src="//www.openlayers.org/api/OpenLayers.js"></script--> + <script type="text/javascript">
> + map = new OpenLayers.Map("${id}");
> map.addLayer(new OpenLayers.Layer.OSM());
> - <#if geoChart.center?has_content>
> - var zoom = ${geoChart.center.zoom};
> - var center= new OpenLayers.LonLat(${geoChart.center.lon?c},${geoChart.center.lat?c})
> + var zoom = ${zoom};
> + var center= new OpenLayers.LonLat(${center.lon?c},${center.lat?c})
> .transform(new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
> - map.getProjectionObject() // to Spherical Mercator Projection
> - );
> - </#if>
> - var markers = new OpenLayers.Layer.Markers( "Markers" );
> + map.getProjectionObject() // to Spherical Mercator Projection
> + );
> + var markers = new OpenLayers.Layer.Markers("Markers");
> map.addLayer(markers);
> <#if geoChart.points?has_content>
> <#list geoChart.points as point>
> @@ -111,8 +129,12 @@ under the License.
> new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject())));
> </#list>
> </#if>
> + map.addControl(new OpenLayers.Control.PanZoomBar());
> + map.addControl(new OpenLayers.Control.NavToolbar());
> +
> map.setCenter(center, zoom);
> - map.setZoom(15); // 0=World, 19=max zoom in
> + var newBound = markers.getDataExtent();
> + map.zoomToExtent(newBound);
> </script>
> </#if>
> </#if>
>
> Modified: ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml
> URL:
> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
> ============================================================================== ---
> ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml (original) +++
> ofbiz/branches/release13.07/framework/common/widget/CommonScreens.xml Tue Dec 31 15:23:32 2013 @@ -153,6 +153,8 @@ under the
> License. <set field="layoutSettings.javaScripts[+0]" value="/images/jquery/jquery-1.8.2.min.js" global="true" />
> <!-- jQuery CSSs -->
> <set field="layoutSettings.styleSheets[+0]"
> value="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css" global="true" /> +
> + <set field="layoutSettings.javaScripts[]" value="/images/OpenLayers-2.13.1.js" global="true" />
> <set field="layoutSettings.javaScripts[]" value="/images/selectall.js" global="true" />
> <set field="layoutSettings.javaScripts[]" value="/images/fieldlookup.js" global="true" />
> <set field="layoutSettings.javaScripts[]" value="/images/GooglemapMarkers.js" global="true" />
> @@ -483,8 +485,7 @@ under the License.
> <!-- jQuery CSSs -->
> <set field="layoutSettings.styleSheets[+0]"
> value="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css" global="true"/>
>
> -
> -
> + <set field="layoutSettings.javaScripts[]" value="/images/OpenLayers-2.13.1.js" global="true" />
> <set field="layoutSettings.javaScripts[]" value="/images/selectall.js" global="true"/>
> <set field="layoutSettings.javaScripts[]" value="/images/fieldlookup.js" global="true"/>
> <set field="layoutSettings.javaScripts[]" value="/images/GooglemapSimple.js" global="true"/>
>
> Modified: ofbiz/branches/release13.07/specialpurpose/build.xml
> URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/specialpurpose/build.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
> ==============================================================================
> --- ofbiz/branches/release13.07/specialpurpose/build.xml (original)
> +++ ofbiz/branches/release13.07/specialpurpose/build.xml Tue Dec 31 15:23:32 2013
> @@ -21,5 +21,5 @@
> <project name="OFBiz Special Purpose Applications Build" default="build" basedir=".">
> <import file="../macros.xml"/>
> <filelist id="specialpurpose-builds" dir="specialpurpose"
> - files="ecommerce/build.xml"/>
> + files="ecommerce/build.xml,pos/build.xml"/>
> </project>
>
> Modified: ofbiz/branches/release13.07/specialpurpose/component-load.xml
> URL:
> http://svn.apache.org/viewvc/ofbiz/branches/release13.07/specialpurpose/component-load.xml?rev=1554538&r1=1554537&r2=1554538&view=diff
> ============================================================================== ---
> ofbiz/branches/release13.07/specialpurpose/component-load.xml (original) +++
> ofbiz/branches/release13.07/specialpurpose/component-load.xml Tue Dec 31 15:23:32 2013 @@ -21,4 +21,5 @@ under the License.
> <component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd">
> <load-component component-location="ecommerce"/>
> + <load-component component-location="pos"/>
> </component-loader>