fixed #10888: Problems with Map adding points
This commit is contained in:
parent
04908891b5
commit
dae7215922
5 changed files with 111 additions and 84 deletions
|
|
@ -19,6 +19,7 @@
|
||||||
- fixed #11126: WebGUI database has varchar fields
|
- fixed #11126: WebGUI database has varchar fields
|
||||||
- fixed #10989: DataForm List: No pagination
|
- fixed #10989: DataForm List: No pagination
|
||||||
- fixed #11128: Thing breaks w/ default value for date field
|
- fixed #11128: Thing breaks w/ default value for date field
|
||||||
|
- fixed #10888: Issues with adding points to Maps
|
||||||
|
|
||||||
7.8.1
|
7.8.1
|
||||||
- mark $session->datetime->time as deprecated and remove its use from core code
|
- mark $session->datetime->time as deprecated and remove its use from core code
|
||||||
|
|
|
||||||
BIN
docs/upgrades/packages-7.8.2/home_map_map-templates.wgpkg
Normal file
BIN
docs/upgrades/packages-7.8.2/home_map_map-templates.wgpkg
Normal file
Binary file not shown.
|
|
@ -312,6 +312,8 @@ sub loadMapApiTags {
|
||||||
my $style = $self->session->style;
|
my $style = $self->session->style;
|
||||||
my $url = $self->session->url;
|
my $url = $self->session->url;
|
||||||
|
|
||||||
|
$style->setLink($url->extras('yui/build/container/assets/skins/sam/container.css'),{type=>'text/css',rel=>'stylesheet'});
|
||||||
|
$style->setLink($url->extras('yui/build/button/assets/skins/sam/button.css'),{type=>'text/css',rel=>'stylesheet'});
|
||||||
$style->setScript("http://www.google.com/jsapi?key=" . $self->get('mapApiKey'),{type=>"text/javascript"});
|
$style->setScript("http://www.google.com/jsapi?key=" . $self->get('mapApiKey'),{type=>"text/javascript"});
|
||||||
$style->setRawHeadTags(<<'ENDHTML');
|
$style->setRawHeadTags(<<'ENDHTML');
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
@ -321,6 +323,10 @@ ENDHTML
|
||||||
$style->setScript('http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js', {type=>"text/javascript"});
|
$style->setScript('http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js', {type=>"text/javascript"});
|
||||||
$style->setScript($url->extras('yui/build/yahoo-dom-event/yahoo-dom-event.js'),{type=>'text/javascript'});
|
$style->setScript($url->extras('yui/build/yahoo-dom-event/yahoo-dom-event.js'),{type=>'text/javascript'});
|
||||||
$style->setScript($url->extras('yui/build/connection/connection-min.js'),{type=>'text/javascript'});
|
$style->setScript($url->extras('yui/build/connection/connection-min.js'),{type=>'text/javascript'});
|
||||||
|
$style->setScript($url->extras('yui/build/dragdrop/dragdrop-min.js'),{type=>'text/javascript'});
|
||||||
|
$style->setScript($url->extras('yui/build/element/element-min.js'),{type=>'text/javascript'});
|
||||||
|
$style->setScript($url->extras('yui/build/button/button-min.js'),{type=>'text/javascript'});
|
||||||
|
$style->setScript($url->extras('yui/build/container/container-min.js'),{type=>'text/javascript'});
|
||||||
$style->setScript($url->extras('yui/build/json/json-min.js'),{type=>'text/javascript'});
|
$style->setScript($url->extras('yui/build/json/json-min.js'),{type=>'text/javascript'});
|
||||||
$style->setScript($url->extras('yui-webgui/build/map/map.js'),{type=>'text/javascript'});
|
$style->setScript($url->extras('yui-webgui/build/map/map.js'),{type=>'text/javascript'});
|
||||||
|
|
||||||
|
|
@ -376,7 +382,7 @@ sub view {
|
||||||
;
|
;
|
||||||
|
|
||||||
# The script to load the map into the container
|
# The script to load the map into the container
|
||||||
$mapHtml .= sprintf <<'ENDHTML', $self->getId, $self->getUrl, $self->get('startLatitude'), $self->get('startLongitude'), $self->get('startZoom');
|
$mapHtml .= sprintf <<'ENDHTML', $self->getId, $self->getUrl, $self->get('startLatitude'), $self->get('startLongitude'), $self->get('startZoom'), $session->url->extras;
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
google.setOnLoadCallback( function() {
|
google.setOnLoadCallback( function() {
|
||||||
var mapId = "%s";
|
var mapId = "%s";
|
||||||
|
|
@ -384,6 +390,7 @@ sub view {
|
||||||
var map = new GMap2( document.getElementById("map_" + mapId) );
|
var map = new GMap2( document.getElementById("map_" + mapId) );
|
||||||
map.setCenter(new GLatLng(%s, %s), %s);
|
map.setCenter(new GLatLng(%s, %s), %s);
|
||||||
map.setUIToDefault();
|
map.setUIToDefault();
|
||||||
|
map.extrasUrl = "%s";
|
||||||
|
|
||||||
var markermanager = new MarkerManager(map, {trackMarkers: true});
|
var markermanager = new MarkerManager(map, {trackMarkers: true});
|
||||||
ENDHTML
|
ENDHTML
|
||||||
|
|
@ -407,7 +414,7 @@ ENDHTML
|
||||||
}
|
}
|
||||||
|
|
||||||
$mapHtml .= <<'ENDHTML';
|
$mapHtml .= <<'ENDHTML';
|
||||||
markermanager.addMarkers( WebGUI.Map.preparePoints(map, markermanager, mapUrl, points), 1 );
|
markermanager.addMarkers( WebGUI.Map.preparePoints(map, markermanager, mapUrl, points), 0 );
|
||||||
ENDHTML
|
ENDHTML
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
BIN
www/extras/yui-webgui/build/map/assets/loading.gif
Normal file
BIN
www/extras/yui-webgui/build/map/assets/loading.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.5 KiB |
183
www/extras/yui-webgui/build/map/map.js
vendored
183
www/extras/yui-webgui/build/map/map.js
vendored
|
|
@ -37,7 +37,9 @@ WebGUI.Map.editPoint
|
||||||
var assetId = '';
|
var assetId = '';
|
||||||
if ( !marker ) {
|
if ( !marker ) {
|
||||||
marker = new GMarker( map.getCenter(), { draggable: true } );
|
marker = new GMarker( map.getCenter(), { draggable: true } );
|
||||||
mgr.addMarker( marker, 1 );
|
marker.infoWin = document.createElement("div");
|
||||||
|
marker.bindInfoWindow( marker.infoWin );
|
||||||
|
mgr.addMarker( marker, 0 );
|
||||||
mgr.refresh();
|
mgr.refresh();
|
||||||
assetId = "new";
|
assetId = "new";
|
||||||
marker.assetId = "new";
|
marker.assetId = "new";
|
||||||
|
|
@ -49,95 +51,112 @@ WebGUI.Map.editPoint
|
||||||
assetId = marker.assetId;
|
assetId = marker.assetId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create a loading dialog
|
||||||
|
var loadingDialog = new YAHOO.widget.Panel("loading", { width:"240px",
|
||||||
|
fixedcenter:true,
|
||||||
|
close:false,
|
||||||
|
draggable:false,
|
||||||
|
zindex:4,
|
||||||
|
modal:true,
|
||||||
|
visible:false
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
loadingDialog.setHeader("Loading, please wait...");
|
||||||
|
loadingDialog.setBody('<img src="' + map.extrasUrl + '/yui-webgui/build/map/assets/loading.gif" />');
|
||||||
|
loadingDialog.render(document.body);
|
||||||
|
|
||||||
// Callback should open the window with the form
|
// Callback should open the window with the form
|
||||||
var callback = function (text, code) {
|
var callback = function (text, code) {
|
||||||
marker.infoWin.innerHTML = text;
|
YAHOO.util.Dom.addClass( document.body, "yui-skin-sam" );
|
||||||
var button = marker.infoWin.getElementsByTagName( "form" )[0].elements["save"];
|
var dialog = new YAHOO.widget.Dialog("editPoint");
|
||||||
marker.openInfoWindow( marker.infoWin );
|
|
||||||
YAHOO.util.Event.addListener( button, "click", function (e) {
|
var handleCancel = function() {
|
||||||
// Closing the info window triggers infowindowbeforeclose
|
if ( marker.assetId == "new" ) {
|
||||||
marker.closeInfoWindow();
|
mgr.removeMarker( marker );
|
||||||
YAHOO.util.Event.stopEvent(e);
|
}
|
||||||
return false;
|
this.cancel();
|
||||||
} );
|
}
|
||||||
GEvent.addListener( marker, "infowindowbeforeclose", function () {
|
|
||||||
WebGUI.Map.editPointSave( map, mgr, mapUrl, marker );
|
var handleSubmit = function() {
|
||||||
});
|
// Add the lat/long to the form
|
||||||
|
var lat = marker.getLatLng().lat();
|
||||||
|
var lng = marker.getLatLng().lng();
|
||||||
|
this.form.elements['latitude'].value = lat;
|
||||||
|
this.form.elements['longitude'].value = lng;
|
||||||
|
|
||||||
|
this.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
var myButtons = [
|
||||||
|
{ text:"Submit", handler:handleSubmit, isDefault:true },
|
||||||
|
{ text:"Cancel", handler:handleCancel }
|
||||||
|
];
|
||||||
|
dialog.cfg.queueProperty("buttons", myButtons);
|
||||||
|
dialog.cfg.queueProperty("constraintoviewport", true);
|
||||||
|
dialog.cfg.queueProperty("fixedcenter", true);
|
||||||
|
dialog.setBody( text );
|
||||||
|
dialog.render(document.body);
|
||||||
|
dialog.show();
|
||||||
|
|
||||||
|
dialog.callback = {
|
||||||
|
upload: function (o) {
|
||||||
|
// Update marker info
|
||||||
|
var point = YAHOO.lang.JSON.parse( o.responseText );
|
||||||
|
marker.assetId = point.assetId;
|
||||||
|
GEvent.clearListeners( marker, "click" );
|
||||||
|
GEvent.clearListeners( marker, "infowindowbeforeclose" );
|
||||||
|
|
||||||
|
// Decode HTML entities because JSON is being returned as text/html
|
||||||
|
// See WebGUI::Asset::Wobject::Map www_ajaxEditPointSave
|
||||||
|
var decoder = document.createElement( "textarea" );
|
||||||
|
decoder.innerHTML = point.content;
|
||||||
|
point.content = decoder.value;
|
||||||
|
|
||||||
|
var infoWin = document.createElement( "div" );
|
||||||
|
infoWin.innerHTML = point.content;
|
||||||
|
marker.infoWin = infoWin;
|
||||||
|
|
||||||
|
if ( point.canEdit ) {
|
||||||
|
var divButton = document.createElement('div');
|
||||||
|
infoWin.appendChild( divButton );
|
||||||
|
|
||||||
|
var editButton = document.createElement("input");
|
||||||
|
editButton.type = "button";
|
||||||
|
editButton.value = "Edit";
|
||||||
|
GEvent.addDomListener( editButton, "click", function () {
|
||||||
|
WebGUI.Map.editPoint( map, mgr, mapUrl, marker );
|
||||||
|
} );
|
||||||
|
divButton.appendChild( editButton );
|
||||||
|
|
||||||
|
var deleteButton = document.createElement("input");
|
||||||
|
deleteButton.type = "button";
|
||||||
|
deleteButton.value = "Delete"; // Replace with i18n
|
||||||
|
GEvent.addDomListener( deleteButton, "click", function () {
|
||||||
|
if ( confirm("Are you sure you want to delete this point?") ) {
|
||||||
|
WebGUI.Map.deletePoint( map, mgr, mapUrl, marker );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
divButton.appendChild( deleteButton );
|
||||||
|
}
|
||||||
|
marker.bindInfoWindow( infoWin );
|
||||||
|
GEvent.addListener( marker, "dragend", function (latlng) {
|
||||||
|
WebGUI.Map.setPointLocation( marker, latlng, mapUrl );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hide the loading dialog
|
||||||
|
loadingDialog.hide();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Show the loading dialog
|
||||||
|
loadingDialog.show();
|
||||||
|
|
||||||
// Get the form
|
// Get the form
|
||||||
GDownloadUrl( mapUrl + '?func=ajaxEditPoint;assetId=' + assetId, callback );
|
GDownloadUrl( mapUrl + '?func=ajaxEditPoint;assetId=' + assetId, callback );
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* WebGUI.Map.editPointSave( map, mgr, mapUrl, marker )
|
|
||||||
* Save the edit form.
|
|
||||||
*/
|
|
||||||
WebGUI.Map.editPointSave
|
|
||||||
= function ( map, mgr, mapUrl, marker ) {
|
|
||||||
var iwin = map.getInfoWindow();
|
|
||||||
var form = iwin.getContentContainers()[0].getElementsByTagName('form')[0];
|
|
||||||
|
|
||||||
// Add the lat/long to the form
|
|
||||||
var lat = marker.getLatLng().lat();
|
|
||||||
var lng = marker.getLatLng().lng();
|
|
||||||
form.elements['latitude'].value = lat;
|
|
||||||
form.elements['longitude'].value = lng;
|
|
||||||
|
|
||||||
// Make ajax request
|
|
||||||
var callback = {
|
|
||||||
upload: function (o) {
|
|
||||||
// Update marker info
|
|
||||||
var point = YAHOO.lang.JSON.parse( o.responseText );
|
|
||||||
marker.assetId = point.assetId;
|
|
||||||
GEvent.clearListeners( marker, "click" );
|
|
||||||
GEvent.clearListeners( marker, "infowindowbeforeclose" );
|
|
||||||
|
|
||||||
// Decode HTML entities because JSON is being returned as text/html
|
|
||||||
// See WebGUI::Asset::Wobject::Map www_ajaxEditPointSave
|
|
||||||
var decoder = document.createElement( "textarea" );
|
|
||||||
decoder.innerHTML = point.content;
|
|
||||||
point.content = decoder.value;
|
|
||||||
|
|
||||||
var infoWin = document.createElement( "div" );
|
|
||||||
infoWin.innerHTML = point.content;
|
|
||||||
marker.infoWin = infoWin;
|
|
||||||
|
|
||||||
if ( point.canEdit ) {
|
|
||||||
var divButton = document.createElement('div');
|
|
||||||
infoWin.appendChild( divButton );
|
|
||||||
|
|
||||||
var editButton = document.createElement("input");
|
|
||||||
editButton.type = "button";
|
|
||||||
editButton.value = "Edit";
|
|
||||||
GEvent.addDomListener( editButton, "click", function () {
|
|
||||||
WebGUI.Map.editPoint( map, mgr, mapUrl, marker );
|
|
||||||
} );
|
|
||||||
divButton.appendChild( editButton );
|
|
||||||
|
|
||||||
var deleteButton = document.createElement("input");
|
|
||||||
deleteButton.type = "button";
|
|
||||||
deleteButton.value = "Delete"; // Replace with i18n
|
|
||||||
GEvent.addDomListener( deleteButton, "click", function () {
|
|
||||||
if ( confirm("Are you sure you want to delete this point?") ) {
|
|
||||||
WebGUI.Map.deletePoint( map, mgr, mapUrl, marker );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
divButton.appendChild( deleteButton );
|
|
||||||
}
|
|
||||||
marker.bindInfoWindow( infoWin );
|
|
||||||
GEvent.addListener( marker, "dragend", function (latlng) {
|
|
||||||
WebGUI.Map.setPointLocation( marker, latlng, mapUrl );
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
// In case our form does not have a file upload in it
|
|
||||||
callback["success"] = callback["upload"];
|
|
||||||
|
|
||||||
YAHOO.util.Connect.setForm( form, 1 );
|
|
||||||
YAHOO.util.Connect.asyncRequest( 'POST', mapUrl, callback );
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebGUI.Map.focusOn( assetId )
|
* WebGUI.Map.focusOn( assetId )
|
||||||
* Pan the appropriate map to view the appropriate map point
|
* Pan the appropriate map to view the appropriate map point
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue