X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/e46c82fe3db59ce59206053a26d0207931f2f68a..38e152d784fe0577b07d6f542b44a8d1f5c84371:/app/views/site/index.html.erb diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index 40a7a3fbc..9d883daf9 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -17,11 +17,15 @@
- -
+ + + + +
@@ -40,7 +44,7 @@ <% -if params['mlon'] and params['mlat'] +if params['mlon'] and params['mlat'] marker = true mlon = h(params['mlon']) mlat = h(params['mlat']) @@ -68,7 +72,7 @@ if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat minlat = h(params['minlat']) maxlon = h(params['maxlon']) maxlat = h(params['maxlat']) - box = true if params['box']=="yes" + box = true if params['box']=="yes" object_zoom = false end @@ -80,14 +84,14 @@ if params['lon'] and params['lat'] layers = h(params['layers']) object_zoom = false elsif params['mlon'] and params['mlat'] - lon = h(params['mlon']) + lon = h(params['mlon']) lat = h(params['mlat']) zoom = h(params['zoom'] || '12') layers = h(params['layers']) object_zoom = false elsif cookies.key?("_osm_location") lon,lat,zoom,layers = cookies["_osm_location"].split("|") -elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? +elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? lon = @user.home_lon lat = @user.home_lat zoom = '10' @@ -101,12 +105,12 @@ else maxlon = session[:location][:maxlon] maxlat = session[:location][:maxlat] else - lon = '-0.1' - lat = '51.5' - zoom = h(params['zoom'] || '5') + lon = '-0.1' + lat = '51.5' + zoom = h(params['zoom'] || '5') end - layers = h(params['layers']) + layers = h(params['layers']) end %> @@ -125,7 +129,7 @@ end function mapInit(){ map = createMap("map"); - <% unless OSM_STATUS == :api_offline or OSM_STATUS == :database_offline %> + <% unless STATUS == :api_offline or STATUS == :database_offline %> map.dataLayer = new OpenLayers.Layer("<%= I18n.t 'browse.start_rjs.data_layer_name' %>", { "visibility": false }); map.dataLayer.events.register("visibilitychanged", map.dataLayer, toggleData); map.addLayer(map.dataLayer); @@ -170,7 +174,8 @@ end url += "/full"; <% end %> - addObjectToMap(url, <%= object_zoom %>); + // IE requires Vector layers be initialised on page load, and not under deferred script conditions + Event.observe(window, 'load', function() { addObjectToMap(url, <%= object_zoom %>) }); <% end %> map.events.register("moveend", map, updateLocation); @@ -182,7 +187,7 @@ end function toggleData() { if (map.dataLayer.visibility) { <%= remote_function :url => { :controller => 'browse', :action => 'start' } %> - } else { + } else if (map.dataLayer.active) { closeSidebar(); } } @@ -191,10 +196,20 @@ end return getMapCenter(); } - function setPosition(lat, lon, zoom) { + function getZoom() { + return getMapZoom(); + } + + function setPosition(lat, lon, zoom, min_lon, min_lat, max_lon, max_lat) { var centre = new OpenLayers.LonLat(lon, lat); - setMapCenter(centre, zoom); + if (min_lon && min_lat && max_lon && max_lat) { + var bbox = new OpenLayers.Bounds(min_lon, min_lat, max_lon, max_lat); + + setMapExtent(bbox); + } else { + setMapCenter(centre, zoom); + } if (marker) removeMarkerFromMap(marker); @@ -218,7 +233,7 @@ end updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, objtype, objid); - expiry.setYear(expiry.getFullYear() + 10); + expiry.setYear(expiry.getFullYear() + 10); document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString(); } @@ -230,7 +245,7 @@ end content.style.width = document.documentElement.clientWidth - content.offsetLeft - rightMargin; content.style.height = document.documentElement.clientHeight - content.offsetTop - bottomMargin; } - + function resizeMap() { var centre = map.getCenter(); var zoom = map.getZoom(); @@ -254,11 +269,38 @@ end resizeMap(); } - + + function josmEditHandler(event) { + var extent = getMapExtent(); + var loaded = false; + + $("linkloader").observe("load", function () { loaded = true; }); + $("linkloader").src = "http://127.0.0.1:8111/load_and_zoom?left=" + extent.left + "&top=" + extent.top + "&right=" + extent.right + "&bottom=" + extent.bottom; + + setTimeout(function () { + if (!loaded) alert("<%= t('site.index.josm_failed') %>"); + }, 1000); + + event.stop(); + } + + function installEditHandler() { + $("josmanchor").observe("click", josmEditHandler); + + <% if preferred_editor == "josm" %> + $("editanchor").observe("click", josmEditHandler); + + <% if params[:action] == "edit" %> + josmEditHandler(); + <% end %> + <% end %> + } + mapInit(); - window.onload = handleResize; - window.onresize = handleResize; + Event.observe(window, "load", installEditHandler); + Event.observe(window, "load", handleResize); + Event.observe(window, "resize", handleResize); <% if params['action'] == 'export' %> <%= remote_function :url => { :controller => 'export', :action => 'start' } %>