X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/0030c7753740820fab12455dd841cd39c58b6475..fe16fec000e8f26127f656bf68c513f2745b4059:/app/views/site/index.html.erb diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index f4a2abd09..118e82ee2 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -1,7 +1,7 @@ -<% content_for :greeting do %> <% if @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> - <%= link_to_function t('layouts.home'), "setPosition(#{@user.home_lat}, #{@user.home_lon}, 15)", { :title => t('layouts.home_tooltip') } %> | -<% end %> + <% content_for :greeting do %> + <%= link_to_function t('layouts.home'), "setPosition(#{@user.home_lat}, #{@user.home_lon}, 15)", { :title => t('layouts.home_tooltip') } %> | + <% end %> <% end %> <%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> @@ -18,7 +18,7 @@
@@ -44,62 +44,62 @@
<% -if params['mlon'] and params['mlat'] +if params[:mlon] and params[:mlat] marker = true - mlon = h(params['mlon']) - mlat = h(params['mlat']) + mlon = params[:mlon].to_f + mlat = params[:mlat].to_f end -if params['node'] or params['way'] or params['relation'] +if params[:node] or params[:way] or params[:relation] object = true object_zoom = true - if params['node'] + if params[:node] object_type = 'node' - object_id = h(params['node']) - elsif params['way'] + object_id = params[:node].to_i + elsif params[:way] object_type = 'way' - object_id = h(params['way']) - elsif params['relation'] + object_id = params[:way].to_i + elsif params[:relation] object_type = 'relation' - object_id = h(params['relation']) + object_id = params[:relation].to_i end end # Decide on a lat lon to initialise the map with. Various ways of doing this -if params['bbox'] +if params[:bbox] bbox = true - minlon, minlat, maxlon, maxlat = h(params['bbox']).split(",") - layers = h(params['layers']) - box = true if params['box']=="yes" + minlon, minlat, maxlon, maxlat = params[:bbox].split(",").collect { |c| c.to_f } + layers = params[:layers] + box = true if params[:box] == "yes" object_zoom = false -elsif params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat'] +elsif params[:minlon] and params[:minlat] and params[:maxlon] and params[:maxlat] bbox = true - minlon = h(params['minlon']) - minlat = h(params['minlat']) - maxlon = h(params['maxlon']) - maxlat = h(params['maxlat']) - layers = h(params['layers']) - box = true if params['box']=="yes" + minlon = params[:minlon].to_f + minlat = params[:minlat].to_f + maxlon = params[:maxlon].to_f + maxlat = params[:maxlat].to_f + layers = params[:layers] + box = true if params[:box]=="yes" object_zoom = false -elsif params['lon'] and params['lat'] - lon = h(params['lon']) - lat = h(params['lat']) - zoom = h(params['zoom'] || '5') - layers = h(params['layers']) +elsif params[:lon] and params[:lat] + lon = params[:lon].to_f + lat = params[:lat].to_f + zoom = params.fetch(:zoom, 5).to_i + layers = params[:layers] object_zoom = false -elsif params['mlon'] and params['mlat'] - lon = h(params['mlon']) - lat = h(params['mlat']) - zoom = h(params['zoom'] || '12') - layers = h(params['layers']) +elsif params[:mlon] and params[:mlat] + lon = params[:mlon].to_f + lat = params[:mlat].to_f + zoom = params.fetch(:zoom, 12).to_i + layers = 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? lon = @user.home_lon lat = @user.home_lat - zoom = '10' + zoom = 10 else unless STATUS == :database_readonly or STATUS == :database_offline session[:location] = OSM::IPLocation(request.env['REMOTE_ADDR']) unless session[:location] @@ -112,18 +112,18 @@ 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 = params.fetch(:zoom, 5).to_i end - layers = h(params['layers']) + layers = params[:layers] end %> -<%= javascript_include_tag '/openlayers/OpenLayers.js' %> -<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> +<%= javascript_include_tag 'openlayers.js' %> <%= javascript_include_tag 'map.js' %> +<%= javascript_include_tag 'notes.js' %> <%= render :partial => 'resize' %> @@ -145,64 +145,11 @@ end map.dataLayer.events.register("visibilitychanged", map.dataLayer, toggleData); map.addLayer(map.dataLayer); - map.noteLayer = new OpenLayers.Layer.Vector("Notes", { - visibility: false, - projection: new OpenLayers.Projection("EPSG:4326"), - styleMap: new OpenLayers.StyleMap(new OpenLayers.Style({ - graphicWidth: 22, - graphicHeight: 22, - graphicOpacity: 0.7, - graphicXOffset: -11, - graphicYOffset: -11 - }, { - rules: [ - new OpenLayers.Rule({ - filter: new OpenLayers.Filter.Comparison({ - type: OpenLayers.Filter.Comparison.EQUAL_TO, - property: "status", - value: "open" - }), - symbolizer: { - externalGraphic: "<%= image_path 'open_note_marker.png' %>" - } - }), - new OpenLayers.Rule({ - filter: new OpenLayers.Filter.Comparison({ - type: OpenLayers.Filter.Comparison.EQUAL_TO, - property: "status", - value: "closed" - }), - symbolizer: { - externalGraphic: "<%= image_path 'closed_note_marker.png' %>" - } - }) - ] - })), - strategies: [ - new OpenLayers.Strategy.BBOX() - ], - protocol: new OpenLayers.Protocol.HTTP({ - url: "<%= url_for :controller => :note, :action => :list, :format => :json %>", - format: new OpenLayers.Format.GeoJSON(), - callback: noteCallback - }) - }); - map.noteLayer.events.register("featureselected", map, noteSelected); - map.noteLayer.events.register("featureunselected", map, noteUnselected); - map.addLayer(map.noteLayer); - - var noteControl = new OpenLayers.Control.SelectFeature(map.noteLayer, { - autoActivate: true - }); - map.addControl(noteControl); + var noteLayer = addNoteLayer(map, "<%= notes_url :format => 'json' %>", $("#createnoteanchor"), 11); <% if params[:notes] == "yes" -%> - map.noteLayer.setVisibility(true); + noteLayer.setVisibility(true); <% end -%> - - $("createnoteanchor").observe("click", addNote); - - map.events.register("zoomend", map, allowNoteReports); <% end %> <% unless object_zoom %> @@ -212,20 +159,18 @@ end setMapExtent(bbox); <% if box %> - Event.observe(window, "load", function() { addBoxToMap(bbox) }); + $(window).load(function() { addBoxToMap(bbox) }); <% end %> <% else %> var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); var zoom = <%= zoom %>; - <% if params['scale'] and params['scale'].length > 0 then %> - zoom = scaleToZoom(<%= params['scale'].to_f() %>); + <% if params[:scale] and params[:scale].length > 0 then %> + zoom = scaleToZoom(<%= params[:scale].to_f %>); <% end %> setMapCenter(centre, zoom); <% end %> - - updateLocation(); <% end %> <% if !layers.nil? and !layers.empty? %> @@ -243,18 +188,19 @@ end url += "/full"; <% end %> - Event.observe(window, "load", function() { addObjectToMap(url, <%= object_zoom %>) }); + $(window).load(function() { addObjectToMap(url, <%= object_zoom %>) }); <% end %> map.events.register("moveend", map, updateLocation); map.events.register("changelayer", map, updateLocation); + updateLocation(); handleResize(); } function toggleData() { if (map.dataLayer.visibility) { - <%= remote_function :url => { :controller => 'browse', :action => 'start' } %> + $.ajax({ url: "<%= url_for :controller => :browse, :action => :start %>" }); } else if (map.dataLayer.active) { closeSidebar(); } @@ -309,21 +255,21 @@ end 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; + $("#linkloader").load(function () { loaded = true; }); + $("#linkloader").attr("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("<%= escape_javascript(t('site.index.remote_failed')) %>"); + if (!loaded) alert("<%=j t('site.index.remote_failed') %>"); }, 1000); - event.stop(); + return false; } function installEditHandler() { - $("remoteanchor").observe("click", remoteEditHandler); + $("#remoteanchor").click(remoteEditHandler); <% if preferred_editor == "remote" %> - $("editanchor").observe("click", remoteEditHandler); + $("#editanchor").click(remoteEditHandler); <% if params[:action] == "edit" %> remoteEditHandler(); @@ -331,50 +277,11 @@ end <% end %> } - function noteCallback(scope, response) { - for (var f = 0; f < response.features.length; f++) { - var feature = response.features[f]; - } - } - - function noteSelected(o) { - var feature = o.feature; - var location = feature.geometry.getBounds().getCenterLonLat(); - - feature.popup = new OpenLayers.Popup.FramedCloud(feature.attributes.id, - location, null, - "

" + feature.attributes.id + "

", - null, true); - - map.addPopup(feature.popup); -// feature.popup.show(); - } - - function noteUnselected(o) { - var feature = o.feature; - - map.removePopup(feature.popup); - delete feature.popup; - } - - function addNote() { - map.noteLayer.setVisibility(true); - map.noteLayer.addNote(map.getCenter()); - } - - function allowNoteReports() { - if (map.getZoom() > 11) { - $("createnoteanchor").style.visibility = "visible"; - } else { - $("createnoteanchor").style.visibility = "hidden"; - } - } + $(document).ready(mapInit); + $(document).ready(installEditHandler); + $(document).ready(handleResize); - document.observe("dom:loaded", mapInit); - document.observe("dom:loaded", installEditHandler); - document.observe("dom:loaded", handleResize); - - Event.observe(window, "resize", function() { + $(window).resize(function() { var centre = map.getCenter(); var zoom = map.getZoom(); @@ -383,7 +290,19 @@ end map.setCenter(centre, zoom); }); - <% if params['action'] == 'export' %> - <%= remote_function :url => { :controller => 'export', :action => 'start' } %> - <% end %> + $(document).ready(function () { + $("#exportanchor").click(function (e) { + $.ajax({ url: "<%= url_for :controller => :export, :action => :start %>" }); + Event.stop(e); + }); + + <% if params[:action] == 'export' -%> + $.ajax({ url: "<%= url_for :controller => :export, :action => :start %>" }); + <% end -%> + + <% if params[:query] -%> + doSearch("<%= params[:query] %>"); + <% end %> + }); +// -->