Remove inline javascript from id views
This commit is contained in:
parent
fe159b2417
commit
293fb99467
4 changed files with 111 additions and 102 deletions
35
app/assets/javascripts/edit/id.js.erb
Normal file
35
app/assets/javascripts/edit/id.js.erb
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
$(document).ready(function () {
|
||||||
|
var id = $("#id-embed");
|
||||||
|
|
||||||
|
if (id.data("key")) {
|
||||||
|
var hashParams = OSM.params(location.hash.substring(1)),
|
||||||
|
mapParams = OSM.mapParams(),
|
||||||
|
params = {};
|
||||||
|
|
||||||
|
if (mapParams.object) {
|
||||||
|
params.id = mapParams.object.type[0] + mapParams.object.id;
|
||||||
|
mapParams = OSM.parseHash(location.hash);
|
||||||
|
if (mapParams.center) {
|
||||||
|
params.map = mapParams.zoom + '/' + mapParams.center.lat + '/' + mapParams.center.lng;
|
||||||
|
}
|
||||||
|
} else if (id.data("lat") && id.data("lon")) {
|
||||||
|
params.map = "16/" + id.data("lat") + "/" + id.data("lon");
|
||||||
|
} else {
|
||||||
|
params.map = (mapParams.zoom || 17) + '/' + mapParams.lat + '/' + mapParams.lon;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hashParams.background) params.background = hashParams.background;
|
||||||
|
if (hashParams.comment) params.comment = hashParams.comment;
|
||||||
|
if (hashParams.offset) params.offset = hashParams.offset;
|
||||||
|
|
||||||
|
if (id.data("gpx")) {
|
||||||
|
params.gpx = id.data("gpx");
|
||||||
|
} else if (hashParams.gpx) {
|
||||||
|
params.gpx = hashParams.gpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
id.attr("src", id.data("url") + "#" + querystring.stringify(params));
|
||||||
|
} else {
|
||||||
|
alert(I18n.t("site.edit.id_not_configured"));
|
||||||
|
}
|
||||||
|
});
|
|
@ -1 +1,56 @@
|
||||||
//= require iD
|
//= require iD
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded", function(e) {
|
||||||
|
var container = document.getElementById("id-container");
|
||||||
|
|
||||||
|
if (typeof iD == 'undefined' || !iD.Detect().support) {
|
||||||
|
container.innerHTML = 'This editor is supported ' +
|
||||||
|
'in Firefox, Chrome, Safari, Opera, Edge, and Internet Explorer 11. ' +
|
||||||
|
'Please upgrade your browser or use Potlatch 2 to edit the map.';
|
||||||
|
container.className = 'unsupported';
|
||||||
|
} else {
|
||||||
|
var id = iD.Context()
|
||||||
|
.embed(true)
|
||||||
|
.assetPath("iD/")
|
||||||
|
.assetMap(container.dataset.assetMap)
|
||||||
|
.locale(container.dataset.locale, container.dataset.localePath)
|
||||||
|
.preauth({
|
||||||
|
urlroot: location.protocol + "//" + location.host,
|
||||||
|
oauth_consumer_key: container.dataset.consumerKey,
|
||||||
|
oauth_secret: container.dataset.consumerSecret,
|
||||||
|
oauth_token: container.dataset.token,
|
||||||
|
oauth_token_secret: container.dataset.tokenSecret
|
||||||
|
});
|
||||||
|
|
||||||
|
id.map().on('move.embed', parent.$.throttle(250, function() {
|
||||||
|
if (id.inIntro()) return;
|
||||||
|
var zoom = ~~id.map().zoom(),
|
||||||
|
center = id.map().center(),
|
||||||
|
llz = { lon: center[0], lat: center[1], zoom: zoom };
|
||||||
|
|
||||||
|
parent.updateLinks(llz, zoom);
|
||||||
|
|
||||||
|
// Manually resolve URL to avoid iframe JS context weirdness.
|
||||||
|
// http://bl.ocks.org/jfirebaugh/5439412
|
||||||
|
var hash = parent.OSM.formatHash(llz);
|
||||||
|
if (hash !== parent.location.hash) {
|
||||||
|
parent.location.replace(parent.location.href.replace(/(#.*|$)/, hash));
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
parent.$("body").on("click", "a.set_position", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var data = parent.$(this).data();
|
||||||
|
|
||||||
|
// 0ms timeout to avoid iframe JS context weirdness.
|
||||||
|
// http://bl.ocks.org/jfirebaugh/5439412
|
||||||
|
setTimeout(function() {
|
||||||
|
id.map().centerZoom(
|
||||||
|
[data.lon, data.lat],
|
||||||
|
Math.max(data.zoom || 15, 13));
|
||||||
|
}, 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
id.ui()(container);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -1,47 +1,10 @@
|
||||||
<% if defined? ID_KEY %>
|
<%= javascript_include_tag "edit/id" %>
|
||||||
<div id="map">
|
|
||||||
<iframe frameBorder="0" id="id-embed" class="id-embed" allowfullscreen></iframe>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
var params = {};
|
|
||||||
|
|
||||||
var mapParams = OSM.mapParams();
|
<div id="map">
|
||||||
if (mapParams.object) {
|
<% data = { :key => ID_KEY } -%>
|
||||||
params.id = mapParams.object.type[0] + mapParams.object.id;
|
<% data[:lat] = @lat if @lat -%>
|
||||||
mapParams = OSM.parseHash(location.hash);
|
<% data[:lon] = @lon if @lon -%>
|
||||||
if (mapParams.center) {
|
<% data[:gpx] = trace_data_url(params[:gpx], :format => :xml) if params[:gpx] -%>
|
||||||
params.map = mapParams.zoom + '/' + mapParams.center.lat + '/' + mapParams.center.lng;
|
<% data[:url] = id_url(:locale => params[:locale]) -%>
|
||||||
}
|
<%= content_tag :iframe, "", :frameBorder => 0, :id => "id-embed", :class => "id-embed", :allowfullscreen => "", :data => data %>
|
||||||
} else {
|
</div>
|
||||||
<% if @lat && @lon -%>
|
|
||||||
params.map = '16/<%= @lat %>/<%= @lon %>';
|
|
||||||
<% else -%>
|
|
||||||
params.map = (mapParams.zoom || 17) + '/' + mapParams.lat + '/' + mapParams.lon;
|
|
||||||
<% end -%>
|
|
||||||
}
|
|
||||||
|
|
||||||
var hashParams = OSM.params(location.hash.substring(1));
|
|
||||||
|
|
||||||
if (hashParams.background) {
|
|
||||||
params.background = hashParams.background;
|
|
||||||
}
|
|
||||||
if (hashParams.comment) {
|
|
||||||
params.comment = hashParams.comment;
|
|
||||||
}
|
|
||||||
if (hashParams.offset) {
|
|
||||||
params.offset = hashParams.offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
<% if params[:gpx] -%>
|
|
||||||
params.gpx = '<%= trace_data_url(params[:gpx], :format => :xml) %>';
|
|
||||||
<% else -%>
|
|
||||||
if (hashParams.gpx) {
|
|
||||||
params.gpx = hashParams.gpx;
|
|
||||||
}
|
|
||||||
<% end -%>
|
|
||||||
|
|
||||||
$('#id-embed').attr('src', '<%= id_url :locale => params[:locale] %>#' + querystring.stringify(params));
|
|
||||||
</script>
|
|
||||||
<% else %>
|
|
||||||
<script type="text/javascript">alert("<%= t 'site.edit.id_not_configured' %>")</script>
|
|
||||||
<% end %>
|
|
||||||
|
|
|
@ -8,61 +8,17 @@
|
||||||
<!-- <![endif]-->
|
<!-- <![endif]-->
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id='id-container'></div>
|
<% data = {} -%>
|
||||||
<script>
|
<% if defined? ID_KEY %>
|
||||||
if (typeof iD == 'undefined' || !iD.Detect().support) {
|
<% token = @user.access_token(ID_KEY) %>
|
||||||
document.getElementById('id-container').innerHTML = 'This editor is supported ' +
|
<% data[:token] = token.token -%>
|
||||||
'in Firefox, Chrome, Safari, Opera, Edge, and Internet Explorer 11. ' +
|
<% data[:token_secret] = token.secret -%>
|
||||||
'Please upgrade your browser or use Potlatch 2 to edit the map.';
|
<% data[:consumer_key] = token.client_application.key -%>
|
||||||
document.getElementById('id-container').className = 'unsupported';
|
<% data[:consumer_secret] = token.client_application.secret -%>
|
||||||
} else {
|
<% end %>
|
||||||
<% locale = ID::LOCALES.preferred(preferred_languages).to_s %>
|
<% data[:locale] = ID::LOCALES.preferred(preferred_languages).to_s -%>
|
||||||
|
<% data[:locale_path] = asset_path("iD/locales/#{data[:locale]}.json") -%>
|
||||||
var id = iD.Context()
|
<% data[:asset_map] = assets("iD").to_json -%>
|
||||||
.embed(true)
|
<%= content_tag :div, "", :id => "id-container", :data => data %>
|
||||||
.assetPath("iD/")
|
|
||||||
.assetMap(<%= assets("iD").to_json.html_safe %>)
|
|
||||||
.locale("<%= locale %>", "<%= asset_path("iD/locales/#{locale}.json") %>")
|
|
||||||
.preauth({
|
|
||||||
<% token = @user.access_token(ID_KEY) %>
|
|
||||||
urlroot: "<%= request.protocol + request.host_with_port %>",
|
|
||||||
oauth_consumer_key: "<%= token.client_application.key %>",
|
|
||||||
oauth_secret: "<%= token.client_application.secret %>",
|
|
||||||
oauth_token: "<%= token.token %>",
|
|
||||||
oauth_token_secret: "<%= token.secret %>"
|
|
||||||
});
|
|
||||||
|
|
||||||
id.map().on('move.embed', parent.$.throttle(250, function() {
|
|
||||||
if (id.inIntro()) return;
|
|
||||||
var zoom = ~~id.map().zoom(),
|
|
||||||
center = id.map().center(),
|
|
||||||
llz = { lon: center[0], lat: center[1], zoom: zoom };
|
|
||||||
|
|
||||||
parent.updateLinks(llz, zoom);
|
|
||||||
|
|
||||||
// Manually resolve URL to avoid iframe JS context weirdness.
|
|
||||||
// http://bl.ocks.org/jfirebaugh/5439412
|
|
||||||
var hash = parent.OSM.formatHash(llz);
|
|
||||||
if (hash !== parent.location.hash) {
|
|
||||||
parent.location.replace(parent.location.href.replace(/(#.*|$)/, hash));
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
parent.$("body").on("click", "a.set_position", function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var data = parent.$(this).data();
|
|
||||||
|
|
||||||
// 0ms timeout to avoid iframe JS context weirdness.
|
|
||||||
// http://bl.ocks.org/jfirebaugh/5439412
|
|
||||||
setTimeout(function() {
|
|
||||||
id.map().centerZoom(
|
|
||||||
[data.lon, data.lat],
|
|
||||||
Math.max(data.zoom || 15, 13));
|
|
||||||
}, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
id.ui()(document.getElementById("id-container"));
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue