X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/7b37f4cb62fca5fec3d3d41eacf4601595519c4a..e660e609661edadc1ed5ad49d6e83e936b2f91cd:/app/views/site/index.html.erb diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index 8d0864f01..884896109 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,8 +18,9 @@
@@ -120,8 +121,7 @@ else end %> -<%= javascript_include_tag '/openlayers/OpenLayers.js' %> -<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> +<%= javascript_include_tag 'openlayers.js' %> <%= javascript_include_tag 'map.js' %> <%= render :partial => 'resize' %> @@ -132,6 +132,10 @@ end OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>"); + <% if @user %> + var loginName = "<%= @user.display_name %>" + <% end %> + function mapInit(){ map = createMap("map"); @@ -139,6 +143,65 @@ end 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); + + 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); + + map.noteControl = new OpenLayers.Control.SelectFeature(map.noteLayer, { + autoActivate: true + }); + map.addControl(map.noteControl); + + <% if params[:notes] == "yes" -%> + map.noteLayer.setVisibility(true); + <% end -%> + + $("#createnoteanchor").click(addNote); + + map.events.register("zoomend", map, allowNoteReports); <% end %> <% unless object_zoom %> @@ -148,7 +211,7 @@ 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 %>); @@ -160,8 +223,6 @@ end setMapCenter(centre, zoom); <% end %> - - updateLocation(); <% end %> <% if !layers.nil? and !layers.empty? %> @@ -179,18 +240,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(); } @@ -245,21 +307,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(); @@ -267,11 +329,51 @@ end <% end %> } - document.observe("dom:loaded", mapInit); - document.observe("dom:loaded", installEditHandler); - document.observe("dom:loaded", handleResize); + 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, function (e) { map.noteControl.unselect(feature) } + ); + + map.addPopup(feature.popup); +// feature.popup.show(); + } + + function noteUnselected(o) { + var feature = o.feature; - Event.observe(window, "resize", function() { + 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").show(); + } else { + $("#createnoteanchor").hide(); + } + } + + $(document).ready(mapInit); + $(document).ready(installEditHandler); + $(document).ready(handleResize); + + $(window).resize(function() { var centre = map.getCenter(); var zoom = map.getZoom(); @@ -280,14 +382,18 @@ end map.setCenter(centre, zoom); }); - document.observe("dom:loaded", function () { - $("exportanchor").observe("click", function (e) { - <%= remote_function :url => { :controller => 'export', :action => 'start' } %>; + $(document).ready(function () { + $("#exportanchor").click(function (e) { + $.ajax({ url: "<%= url_for :controller => :export, :action => :start %>" }); Event.stop(e); }); - <% if params[:action] == 'export' %> - <%= remote_function :url => { :controller => 'export', :action => 'start' } %>; + <% if params[:action] == 'export' -%> + $.ajax({ url: "<%= url_for :controller => :export, :action => :start %>" }); + <% end -%> + + <% if params[:query] -%> + doSearch("<%= params[:query] %>"); <% end %> }); // -->