openstreetmap-website/app/views/site/_potlatch2.html.erb
Tom Hughes 50fafa14f8 Improve zoom level selection when invoking Potlatch on an object
When invoking Potlatch on a node/way/relation object we should
normally have valid location information in the map parameters, so
use any zoom which is there if possible, otherwise fall back to an
object type specific default value.

Fixes #605.
2013-12-03 15:06:34 +00:00

98 lines
3.3 KiB
Text

<div id="map">
<div id="potlatch"><%= raw t 'site.edit.flash_player_required' %></div>
</div>
<%= javascript_include_tag 'swfobject.js' %>
<% if defined? POTLATCH2_KEY %>
<% token = @user.access_token(POTLATCH2_KEY) %>
<% else%>
<script type="text/javascript">alert("<%= t 'site.edit.potlatch2_not_configured' %>")</script>
<% end %>
<% locale = select_locale(Potlatch2::LOCALES.keys).to_s %>
<script type="text/javascript" defer="defer">
var changesaved=true;
window.onbeforeunload=function() {
if (!changesaved) {
return '<%= escape_javascript(t('site.edit.potlatch2_unsaved_changes')) %>';
}
}
function markChanged(a) { changesaved=a; }
function doSWF(lat,lon,zoom) {
var flashvars = {};
if (lat) { flashvars.lat = lat; }
if (lon) { flashvars.lon = lon; }
flashvars.zoom = zoom;
flashvars.assets = "<%= asset_path "potlatch2/assets.zip" %>";
flashvars.font_library = "<%= asset_path "potlatch2/FontLibrary.swf" %>";
flashvars.locale = "<%= Potlatch2::LOCALES[locale] %>";
flashvars.locale_paths = "<%= Potlatch2::LOCALES[locale] %>=<%= asset_path("potlatch2/locales/#{Potlatch2::LOCALES[locale]}.swf") %>";
flashvars.intro_image = "<%= asset_path "help/introduction.jpg" %>";
flashvars.intro_video = "<%= asset_path "help/introduction.mp4" %>";
<% if params['gpx'] %>
flashvars.gpx = '<%= h(params['gpx']) %>';
<% end %>
<% if params['tileurl'] %>
flashvars.tileurl = '<%= h(params['tileurl']) %>';
<% end %>
flashvars.api = "<%= request.protocol + request.host_with_port %>/api/<%= API_VERSION %>/";
flashvars.policy = "<%= request.protocol + request.host_with_port %>/api/crossdomain.xml";
flashvars.connection = "XML";
flashvars.show_help = "once";
flashvars.user_check = "warn";
<% if token %>
flashvars.oauth_token = "<%= token.token %>";
flashvars.oauth_token_secret = "<%= token.secret %>";
flashvars.oauth_consumer_key = "<%= token.client_application.key %>";
flashvars.oauth_consumer_secret = "<%= token.client_application.secret %>";
<% end %>
flashvars.maximise_function = "maximiseMap";
flashvars.minimise_function = "minimiseMap";
flashvars.move_function = "mapMoved";
var params = {};
params.base = "/potlatch2";
var attributes = {};
attributes.id = "potlatch";
attributes.bgcolor = "#FFFFFF";
swfobject.embedSWF("<%= asset_path("potlatch2.swf") %>", "potlatch", "100%", "100%", "10.1.102","<%= asset_path("expressInstall.swf") %>", flashvars, params, attributes);
// 700,600 for fixed size, 100%,100% for resizable
if (lat && lon) {
updateLinks({ lon: lon, lat: lat }, zoom);
}
}
var mapParams = OSM.mapParams();
<% if @lat && @lon -%>
doSWF(<%= @lat %>, <%= @lon %>, mapParams.zoom || <%= @zoom %>);
<% else -%>
doSWF(mapParams.lat, mapParams.lon, mapParams.zoom || 17);
<% end -%>
$("body").on("click", "a.set_position", function (e) {
e.preventDefault();
var data = $(this).data();
$("#potlatch").each(function () {
this.setPosition(data.lat, data.lon, Math.max(data.zoom || 15, 13));
});
});
var mapMoved = $.throttle(250, function(lon, lat, zoom) {
updateLinks({ lon: lon, lat: lat }, zoom);
var hash = OSM.formatHash({ lon: lon, lat: lat, zoom: zoom });
if (hash !== location.hash) {
location.replace(hash);
}
});
</script>