Index: lams_tool_gmap/conf/hibernate/mappings/org/lamsfoundation/lams/tool/gmap/model/GmapMarker.hbm.xml =================================================================== diff -u -r0ce24288a7982f962e62e74d254133cee8016f0a -r4125a04e76b7cafc0a7d4fe906affec3d45aa06b --- lams_tool_gmap/conf/hibernate/mappings/org/lamsfoundation/lams/tool/gmap/model/GmapMarker.hbm.xml (.../GmapMarker.hbm.xml) (revision 0ce24288a7982f962e62e74d254133cee8016f0a) +++ lams_tool_gmap/conf/hibernate/mappings/org/lamsfoundation/lams/tool/gmap/model/GmapMarker.hbm.xml (.../GmapMarker.hbm.xml) (revision 4125a04e76b7cafc0a7d4fe906affec3d45aa06b) @@ -47,6 +47,7 @@ update="true" insert="true" column="info_window_message" + length="65535" /> + + + + Index: lams_tool_gmap/web/includes/javascript/authoring.js =================================================================== diff -u -r97ded6a90b089fe5e01c48c02f952e8b09d5a911 -r4125a04e76b7cafc0a7d4fe906affec3d45aa06b --- lams_tool_gmap/web/includes/javascript/authoring.js (.../authoring.js) (revision 97ded6a90b089fe5e01c48c02f952e8b09d5a911) +++ lams_tool_gmap/web/includes/javascript/authoring.js (.../authoring.js) (revision 4125a04e76b7cafc0a7d4fe906affec3d45aa06b) @@ -3,6 +3,7 @@ var map; var markers; var geocoder = null; +var currUser; function init() { // open the current tab var tag = document.getElementById("currentTab"); Index: lams_tool_gmap/web/includes/javascript/mapFunctions.js =================================================================== diff -u -r97ded6a90b089fe5e01c48c02f952e8b09d5a911 -r4125a04e76b7cafc0a7d4fe906affec3d45aa06b --- lams_tool_gmap/web/includes/javascript/mapFunctions.js (.../mapFunctions.js) (revision 97ded6a90b089fe5e01c48c02f952e8b09d5a911) +++ lams_tool_gmap/web/includes/javascript/mapFunctions.js (.../mapFunctions.js) (revision 4125a04e76b7cafc0a7d4fe906affec3d45aa06b) @@ -1,9 +1,15 @@ - // add a marker at the given point -function addMarker(point, infoMessage, title, uid, isSaved) +function addMarker(point, infoMessage, title, uid, isSaved, editAble, createdBy) { map.closeInfoWindow(); - var marker = new GMarker(point, {draggable: true}) + var marker; + + if(editAble) {marker = new GMarker(point, {draggable: true});} + else {marker = new GMarker(point, {draggable: false})}; + + marker.editAble = editAble; + marker.createdBy = createdBy; + map.addOverlay(marker); GEvent.addListener(marker, "dragstart", function() { @@ -12,7 +18,6 @@ GEvent.addListener(marker, "dragend", function() { if (marker.state == "unchanged") {marker.state = "update";} - //serialiseMarkers(); updateMarkerInfoWindowHtml(marker); }); @@ -32,37 +37,27 @@ { marker.infoMessage = ""; } - - //marker.title = "Marker #" + markers.length; marker.title = title; + - //sideBar(marker.infoMessage, markers.length); - - // set the state of the marker marker.editingOn = !isSaved; marker.uid = uid; if (isSaved){marker.state = "unchanged";} else {marker.state="unsaved";} - marker.sideBarLinkPrefix = ""; + marker.sideBarLinkPrefix = "Remove" ; marker.editLink = "Edit"; - marker.saveLink = "Save"; + marker.saveLink = "Save"; marker.cancelLink = "Cancel"; updateMarkerInfoWindowHtml(marker); markers[markers.length] = marker; } -// Add a new marker to the center of the map -function addMarkerToCenter() -{ - var bounds = map.getBounds(); - var point = bounds.getCenter(); - addMarker(point, "", "", -1, false); -} + function refreshSideBar() { var sideBarText = ""; @@ -71,39 +66,12 @@ { if (markers[i].state != "remove") { - sideBarText += markers[i].sideBarLinkPrefix + markers[i].title+"
"; + sideBarText += markers[i].sideBarLinkPrefix + " title='" + markers[i].createdBy + "' >" + markers[i].title+"
"; } } document.getElementById("sidebar").innerHTML = sideBarText; } - -function test() -{ - serialiseMarkers(); - alert(document.authoringForm.markersXML.value); -} - -function removeMarker(x) -{ - var ans = confirm(confirmDelete); - if (ans) - { - try{map.removeOverlay(markers[x]);} - catch (e){} - markers[x].state = "remove"; - refreshSideBar(); - //serialiseMarkers(); - } -} - -function editMarker(x) -{ - markers[x].editingOn = true; - updateMarkerInfoWindowHtml(markers[x]); - openInfoWindow(x); -} - function cancelEditMarkerInfo(x) { if (markers[x].state == "unsaved") @@ -118,52 +86,6 @@ } } -function updateMarkerInfoWindowHtml(markerIn) -{ - markerIn.locationMessage = ""; - markerIn.locationMessage += "Latitude: " + markerIn.getPoint().lat() + "
"; - markerIn.locationMessage += "Longitude: " + markerIn.getPoint().lng() + "

"; - markerIn.locationMessage += "
"; - markerIn.infoWindowHtml = markerIn.locationMessage; - - if (markerIn.state == "unchanged") - { - markerIn.setImage(webAppUrl + "/images/blue_Marker.png"); - } - else if (markerIn.state == "update" || markerIn.state == "save") - { - markerIn.setImage(webAppUrl + "/images/paleblue_Marker.png"); - } - else if (markerIn.state == "unsaved") - { - markerIn.setImage(webAppUrl + "/images/red_Marker.png"); - } - - if (markerIn.editingOn) - { - markerIn.linksBar = "
" + markerIn.saveLink + " " + markerIn.cancelLink; - - //markerIn.inputForm = "New Info Window Text:
"; - //markerIn.inputForm += "
"; - //markerIn.infoWindowTextarea = "New Info Window Text:
"; - markerIn.inputForm = "Title:

"; - markerIn.inputForm += "New Info Window Text:
"; - //markerIn.inputForm = "" + markerIn.infoWindowTextarea; - markerIn.infoWindowHtml += markerIn.inputForm + markerIn.linksBar; - } - else - { - markerIn.linksBar = "
" + markerIn.removeLink + " " + markerIn.editLink; - markerIn.inputForm = ""; - markerIn.infoWindowHtml += markerIn.infoMessage + "
" + markerIn.inputForm + markerIn.linksBar; - } -} - function openInfoWindow(x) { markers[x].openInfoWindowHtml(markers[x].infoWindowHtml); @@ -196,150 +118,71 @@ function fitMapMarkers() { - var bounds = new GLatLngBounds(); - for (var i=0; i< markers.length; i++) { - bounds.extend(markers[i].getPoint()); - } - map.setZoom(map.getBoundsZoomLevel(bounds)); - //map.setCenter(bounds.getCenter()); - map.panTo(bounds.getCenter()); - -} - -function saveMarkerInfo(x) -{ - if (markers[x] != null) + var bounds = new GLatLngBounds(); + for (var i=0; i< markers.length; i++) { - var title= trim(document.getElementById("markerTitle").value); - if (title==null || title == "") + if (markers[i].state != "remove") { - alert(errorMissingTitle); - return false; + bounds.extend(markers[i].getPoint()); } - else - { - - var info=document.getElementById("infoWindow").value; - markers[x].title = title; - markers[x].infoMessage = info; - markers[x].editingOn = false; - - // change the state to update if it is a pre-existing marker - if (markers[x].state == "unchanged") {markers[x].state = "update";} - else (markers[x].state ="save"); - - //markers[x].isSaved = persistMarker(markers[x], "createMarker"); - updateMarkerInfoWindowHtml(markers[x]); - refreshSideBar(); - } } + var zoom = map.getBoundsZoomLevel(bounds) - 1; + if (zoom > 15) {zoom = 15;} + map.setZoom(zoom); + map.panTo(bounds.getCenter()); + } function trim(x) { return x.replace(/^\s+|\s+$/g, '') } -/* -function getAjaxObject() +function updateMarkerInfoWindowHtml(markerIn) { - var req=null; - if ( window.XMLHttpRequest ) {req = new XMLHttpRequest();} - else {req = new ActiveXObject("MSXML2.XMLHTTP");} - return req; -} -*/ - -/* -function persistMarker(marker, method) -{ - var ajax = getAjaxObject(); - var result = null; - ajax.onreadystatechange = function() - { - if(ajax.readyState == 4) - { - result = ajax.responseText; - } + if (markerIn.state == "unchanged") + { + markerIn.setImage(webAppUrl + "/images/blue_Marker.png"); } - - var url = webAppUrl + "/marker.do?" + - "&method=" + method + - "&toolContentID=" + toolContentID + - "&latitude=" + marker.getPoint().lat() + - "&longitude=" + marker.getPoint().lng() + - "&infoMessage=" + marker.infoMessage; - - try - { - ajax.open("GET",url,false); - ajax.send(null); - - if (result=="success") - { - alert("yay!"); - return true; - } - else - { - //TODO: handle marker save failure - alert("boo!"); - return false; - } + else if (markerIn.state == "update" || markerIn.state == "save") + { + markerIn.setImage(webAppUrl + "/images/paleblue_Marker.png"); } - catch(e) + else if (markerIn.state == "unsaved") { - return e; - //alert("An error occurred: " + e); + markerIn.setImage(webAppUrl + "/images/red_Marker.png"); } -}*/ - - -function serialiseMarkers() -{ - var xmlString = ''; - var i =0; - for (;i'; - xmlString += markerString; - } + markerIn.linksBar = "
" + markerIn.saveLink + " " + markerIn.cancelLink; + markerIn.inputForm = "Title:

"; + markerIn.inputForm += "New Info Window Text:
"; + markerIn.markerMetaData = ""; + markerIn.markerMetaData += "Latitude-Longitude: (" + markerIn.getPoint().lat() + "-" + markerIn.getPoint().lng() +")"; + markerIn.markerMetaData += ""; + markerIn.infoWindowHtml = markerIn.inputForm + "
" +markerIn.markerMetaData + markerIn.linksBar; } - xmlString += "
" - //document.authoringForm.markersXML.value=xmlString; - document.getElementById("markersXML").value=xmlString; + else + { + markerIn.linksBar = "" + if (markerIn.editAble) + { + markerIn.linksBar = "
" + markerIn.removeLink + " " + markerIn.editLink; + } + markerIn.markerMetaData = ""; + markerIn.markerMetaData += "Created By: " + markerIn.createdBy + "
"; + markerIn.markerMetaData += "Latitude-Longitude: (" + markerIn.getPoint().lat() + "-" + markerIn.getPoint().lng() +")"; + markerIn.markerMetaData += "
"; + markerIn.infoWindowHtml = "" + "

" + markerIn.title + "

" + markerIn.infoMessage.replace(/\n/g, "
") + "
"+ markerIn.markerMetaData + markerIn.linksBar; + } } -// TODO: This method should only be included for the authoring pages, put them in another file -function saveMapState() -{ - document.getElementById("mapZoom").value=map.getZoom(); - document.getElementById("mapCenterLatitude").value=map.getCenter().lat(); - document.getElementById("mapCenterLongitude").value=map.getCenter().lng(); - var mapTypeName = map.getCurrentMapType().getName(); - var mapType = ""; - if (mapTypeName == "Satellite"){ mapType = "G_SATELLITE_MAP"; } - else if (mapTypeName == "Hybrid") { mapType = "G_HYBRID_MAP"; } - else if (mapTypeName == "Terrain") { mapType = "G_PHYSICAL_MAP"; } - else { mapType = "G_NORMAL_MAP"; } - document.getElementById("mapType").value=mapType; -} - \ No newline at end of file Index: lams_tool_gmap/web/includes/javascript/mapFunctionsAuthoring.js =================================================================== diff -u --- lams_tool_gmap/web/includes/javascript/mapFunctionsAuthoring.js (revision 0) +++ lams_tool_gmap/web/includes/javascript/mapFunctionsAuthoring.js (revision 4125a04e76b7cafc0a7d4fe906affec3d45aa06b) @@ -0,0 +1,114 @@ +// Add a new marker to the center of the map +function addMarkerToCenter() +{ + var bounds = map.getBounds(); + var point = bounds.getCenter(); + addMarker(point, "", "", -1, false, true, currUser); +} + + +function test() +{ + serialiseMarkers(); + alert(document.authoringForm.markersXML.value); +} + +function removeMarker(x) +{ + var ans = confirm(confirmDelete); + if (ans) + { + try{map.removeOverlay(markers[x]);} + catch (e){} + markers[x].state = "remove"; + refreshSideBar(); + //serialiseMarkers(); + } +} + +function editMarker(x) +{ + markers[x].editingOn = true; + updateMarkerInfoWindowHtml(markers[x]); + openInfoWindow(x); +} + +function saveMarkerInfo(x) +{ + if (markers[x] != null) + { + var title= trim(document.getElementById("markerTitle").value); + if (title==null || title == "") + { + alert(errorMissingTitle); + } + else + { + + var info=document.getElementById("infoWindow").value; + markers[x].title = title; + markers[x].infoMessage = info; + markers[x].editingOn = false; + + // change the state to update if it is a pre-existing marker + if (markers[x].state == "unchanged") {markers[x].state = "update";} + else (markers[x].state ="save"); + + updateMarkerInfoWindowHtml(markers[x]); + refreshSideBar(); + openInfoWindow(x); + } + } +} + + + + +function serialiseMarkers() +{ + var xmlString = ''; + var i =0; + + for (;i'; + xmlString += markerString; + } + } + xmlString += "" + //document.authoringForm.markersXML.value=xmlString; + document.getElementById("markersXML").value=xmlString; + return true; +} + +// TODO: This method should only be included for the authoring pages, put them in another file +function saveMapState() +{ + document.getElementById("mapZoom").value=map.getZoom(); + document.getElementById("mapCenterLatitude").value=map.getCenter().lat(); + document.getElementById("mapCenterLongitude").value=map.getCenter().lng(); + var mapTypeName = map.getCurrentMapType().getName(); + var mapType = ""; + if (mapTypeName == "Satellite"){ mapType = "G_SATELLITE_MAP"; } + else if (mapTypeName == "Hybrid") { mapType = "G_HYBRID_MAP"; } + else if (mapTypeName == "Terrain") { mapType = "G_PHYSICAL_MAP"; } + else { mapType = "G_NORMAL_MAP"; } + document.getElementById("mapType").value=mapType; +} \ No newline at end of file Index: lams_tool_gmap/web/includes/javascript/mapFunctionsLearning.js =================================================================== diff -u --- lams_tool_gmap/web/includes/javascript/mapFunctionsLearning.js (revision 0) +++ lams_tool_gmap/web/includes/javascript/mapFunctionsLearning.js (revision 4125a04e76b7cafc0a7d4fe906affec3d45aa06b) @@ -0,0 +1,92 @@ +// Add a new marker to the center of the map +function addMarkerToCenter() +{ + if (limitMarkers) + { + if (userMarkerCount == markerLimit) + { + alert("You have reached the marker limit, you cannot add any more"); + return; + } + } + var bounds = map.getBounds(); + var point = bounds.getCenter(); + addMarker(point, "", "", -1, false, true, currUser); + userMarkerCount ++; +} + +function removeMarker(x) +{ + var ans = confirm(confirmDelete); + if (ans) + { + try{map.removeOverlay(markers[x]);} + catch (e){} + markers[x].state = "remove"; + refreshSideBar(); + userMarkerCount --; + //serialiseMarkers(); + } +} + +function editMarker(x) +{ + markers[x].editingOn = true; + updateMarkerInfoWindowHtml(markers[x]); + openInfoWindow(x); +} + +function saveMarkerInfo(x) +{ + if (markers[x] != null) + { + var title= trim(document.getElementById("markerTitle").value); + if (title==null || title == "") + { + alert(errorMissingTitle); + return false; + } + else + { + + var info=document.getElementById("infoWindow").value; + markers[x].title = title; + markers[x].infoMessage = info; + markers[x].editingOn = false; + + // change the state to update if it is a pre-existing marker + if (markers[x].state == "unchanged") {markers[x].state = "update";} + else (markers[x].state ="save"); + + updateMarkerInfoWindowHtml(markers[x]); + refreshSideBar(); + openInfoWindow(x); + } + } +} + + +function serialiseMarkers() +{ + var xmlString = ''; + var i =0; + + for (;i'; + xmlString += markerString; + } + } + xmlString += "" + document.getElementById("markersXML").value=xmlString; +} + Index: lams_tool_gmap/web/pages/authoring/basic.jsp =================================================================== diff -u -r97ded6a90b089fe5e01c48c02f952e8b09d5a911 -r4125a04e76b7cafc0a7d4fe906affec3d45aa06b --- lams_tool_gmap/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 97ded6a90b089fe5e01c48c02f952e8b09d5a911) +++ lams_tool_gmap/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 4125a04e76b7cafc0a7d4fe906affec3d45aa06b) @@ -60,6 +60,7 @@ Index: lams_tool_gmap/web/pages/authoring/headItems.jsp =================================================================== diff -u -r97ded6a90b089fe5e01c48c02f952e8b09d5a911 -r4125a04e76b7cafc0a7d4fe906affec3d45aa06b --- lams_tool_gmap/web/pages/authoring/headItems.jsp (.../headItems.jsp) (revision 97ded6a90b089fe5e01c48c02f952e8b09d5a911) +++ lams_tool_gmap/web/pages/authoring/headItems.jsp (.../headItems.jsp) (revision 4125a04e76b7cafc0a7d4fe906affec3d45aa06b) @@ -6,6 +6,7 @@ +