]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/site/_potlatch.html.erb
Improve zoom level selection when invoking Potlatch on an object
[rails.git] / app / views / site / _potlatch.html.erb
index 18e1c4cce30eb3ec89b588f749914298ddb35efd..b82a8294456ea4d4c481149f7b77d32aa4fe193c 100644 (file)
@@ -1,5 +1,5 @@
 <div id="map">
-  <%= t 'site.edit.flash_player_required' %>
+  <div id="potlatch"><%= raw t 'site.edit.flash_player_required' %></div>
 </div>
 
 <%= javascript_include_tag 'swfobject.js' %>
@@ -7,9 +7,6 @@
 <% session[:token] = @user.tokens.create.token unless session[:token] and UserToken.find_by_token(session[:token]) %>
 
 <script type="text/javascript" defer="defer">
-  var brokenContentSize = $("content").offsetWidth == 0;
-  var fo = new SWFObject("<%= asset_path("/potlatch/potlatch.swf") %>", "potlatch", "100%", "100%", "6", "#FFFFFF");
-  // 700,600 for fixed size, 100%,100% for resizable
   var changesaved=true;
   var winie=false; if (document.all && window.print) { winie=true; }
   
 
   function markChanged(a) { changesaved=a; }
 
+  function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,object) {
+    updateLinks({ lon: lon, lat: lat }, zoom);
+
+    var hash = OSM.formatHash({ lon: lon, lat: lat, zoom: zoom });
+    if (hash !== location.hash) {
+      location.replace(hash);
+    }
+  }
+
   function doSWF(lat,lon,sc) {
     if (sc < 11) sc = 11;
-    fo.addVariable('winie',winie);
-    fo.addVariable('scale',sc);
-    fo.addVariable('token','<%= session[:token] %>');
-    if (lat) { fo.addVariable('lat',lat); }
-    if (lon) { fo.addVariable('long',lon); }
-    <% if params['gpx']     %>fo.addVariable('gpx'     ,'<%= h(params['gpx']    ) %>');<% end %>
-    <% if params['way']     %>fo.addVariable('way'     ,'<%= h(params['way']    ) %>');<% end %>
-    <% if params['node']    %>fo.addVariable('node'    ,'<%= h(params['node']   ) %>');<% end %>
-    <% if params['tileurl'] %>fo.addVariable('custombg','<%= h(params['tileurl']) %>');<% end %>
-    fo.write("map");
-  }
 
-  doSWF(<%= @lat || 'null' %>,<%= @lon || 'null' %>,<%= @zoom %>);
+    var flashvars = {};
+    flashvars.winie = winie;
+    flashvars.scale = sc;
+    flashvars.token = '<%= session[:token] %>';
+    if (lat) { flashvars.lat = lat; }
+    if (lon) { flashvars.long = lon; }
+    <% if params['gpx']  %>flashvars.gpx = '<%= h(params['gpx']    ) %>';<% end %>
+    <% if params['way']  %>flashvars.way = '<%= h(params['way']    ) %>';<% end %>
+    <% if params['node'] %>flashvars.node = '<%= h(params['node']   ) %>';<% end %>
+    <% if params['tileurl'] %>flashvars.custombg = '<%= h(params['tileurl']) %>';<% end %>
 
-  function setPosition(lat, lon, zoom) {
-    doSWF(lat, lon, zoom || 15);
+    var params = {};
+
+    var attributes = {};
+    attributes.id = "potlatch";
+    attributes.bgcolor = "#FFFFFF";
+
+    swfobject.embedSWF("<%= asset_path("/potlatch/potlatch.swf") %>", "potlatch", "100%", "100%", "6","<%= asset_path("expressInstall.swf") %>", flashvars, params, attributes);
+    // 700,600 for fixed size, 100%,100% for resizable
   }
+
+  var mapParams = OSM.mapParams();
+  <% if @lat && @lon -%>
+    doSWF(<%= @lat %>, <%= @lon %>, mapParams.zoom || <%= @zoom %>);
+  <% else -%>
+    doSWF(mapParams.lat, mapParams.lon, mapParams.zoom || 17);
+  <% end -%>
+
+  $(document).ready(function () {
+    $("body").on("click", "a.set_position", function () {
+      var data = $(this).data();
+
+      doSWF(data.lat, data.lon, data.zoom || 15);
+    });
+  });
 </script>