X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/98bfaace9aeba7fb387596cc16b2e661506173c6..0425aeebbcf511b6b3627c5a3ba8f5066c80660b:/app/assets/javascripts/leaflet.share.js diff --git a/app/assets/javascripts/leaflet.share.js b/app/assets/javascripts/leaflet.share.js index c096a92fc..40ba020e6 100644 --- a/app/assets/javascripts/leaflet.share.js +++ b/app/assets/javascripts/leaflet.share.js @@ -8,9 +8,10 @@ L.OSM.share = function (options) { control.onAddPane = function (map, button, $ui) { // Link / Embed + $("#content").addClass("overlay-right-sidebar"); var $linkSection = $("<div>") - .attr("class", "section share-link") + .attr("class", "share-link p-3 border-bottom border-secondary-subtle") .appendTo($ui); $("<h4>") @@ -46,10 +47,13 @@ L.OSM.share = function (options) { .text(I18n.t("javascripts.share.short_link"))) .append($("<a class='btn btn-primary'>") .attr("for", "embed_html") + .attr("id", "embed_link") + .attr("data-bs-title", I18n.t("javascripts.site.embed_html_disabled")) .attr("href", "#") .text(I18n.t("javascripts.share.embed"))) .on("click", "a", function (e) { e.preventDefault(); + if (!$(this).hasClass("btn-primary")) return; var id = "#" + $(this).attr("for"); $(this).siblings("a") .removeClass("active"); @@ -95,13 +99,13 @@ L.OSM.share = function (options) { .on("click", select)) .append( $("<p>") - .attr("class", "text-muted") + .attr("class", "text-body-secondary") .text(I18n.t("javascripts.share.paste_html"))); // Geo URI var $geoUriSection = $("<div>") - .attr("class", "section share-geo-uri") + .attr("class", "share-geo-uri p-3 border-bottom border-secondary-subtle") .appendTo($ui); $("<h4>") @@ -116,7 +120,7 @@ L.OSM.share = function (options) { // Image var $imageSection = $("<div>") - .attr("class", "section share-image") + .attr("class", "share-image p-3") .appendTo($ui); $("<h4>") @@ -125,7 +129,7 @@ L.OSM.share = function (options) { $("<div>") .attr("id", "export-warning") - .attr("class", "text-muted") + .attr("class", "text-body-secondary") .text(I18n.t("javascripts.share.only_standard_layer")) .appendTo($imageSection); @@ -156,6 +160,7 @@ L.OSM.share = function (options) { $("<div>") .appendTo($form) .attr("class", "row mb-3") + .attr("id", "mapnik_scale_row") .append($("<label>") .attr("for", "mapnik_scale") .attr("class", "col-auto col-form-label") @@ -191,7 +196,7 @@ L.OSM.share = function (options) { .attr("class", "form-check-input") .bind("change", toggleFilter)))); - ["minlon", "minlat", "maxlon", "maxlat"].forEach(function (name) { + ["minlon", "minlat", "maxlon", "maxlat", "lat", "lon"].forEach(function (name) { $("<input>") .attr("id", "mapnik_" + name) .attr("name", name) @@ -200,11 +205,33 @@ L.OSM.share = function (options) { }); $("<input>") + .attr("id", "map_format") .attr("name", "format") .attr("value", "mapnik") .attr("type", "hidden") .appendTo($form); + $("<input>") + .attr("id", "map_zoom") + .attr("name", "zoom") + .attr("value", map.getZoom()) + .attr("type", "hidden") + .appendTo($form); + + $("<input>") + .attr("id", "map_width") + .attr("name", "width") + .attr("value", 0) + .attr("type", "hidden") + .appendTo($form); + + $("<input>") + .attr("id", "map_height") + .attr("name", "height") + .attr("value", 0) + .attr("type", "hidden") + .appendTo($form); + var csrf_param = $("meta[name=csrf-param]").attr("content"), csrf_token = $("meta[name=csrf-token]").attr("content"); @@ -215,12 +242,13 @@ L.OSM.share = function (options) { .appendTo($form); var args = { + layer: "<span id=\"mapnik_image_layer\"></span>", width: "<span id=\"mapnik_image_width\"></span>", height: "<span id=\"mapnik_image_height\"></span>" }; $("<p>") - .attr("class", "text-muted") + .attr("class", "text-body-secondary") .html(I18n.t("javascripts.share.image_dimensions", args)) .appendTo($form); @@ -309,6 +337,7 @@ L.OSM.share = function (options) { } function update() { + var canEmbed = map.getMapBaseLayerId() !== "tracestracktopo"; var bounds = map.getBounds(); $("#link_marker") @@ -334,6 +363,14 @@ L.OSM.share = function (options) { params.marker = latLng.lat + "," + latLng.lng; } + $("#embed_link") + .toggleClass("btn-primary", canEmbed) + .toggleClass("btn-secondary", !canEmbed) + .tooltip(canEmbed ? "disable" : "enable"); + if (!canEmbed && $("#embed_link").hasClass("active")) { + $("#long_link").click(); + } + $("#embed_html").val( "<iframe width=\"425\" height=\"350\" src=\"" + escapeHTML(OSM.SERVER_PROTOCOL + "://" + OSM.SERVER_URL + "/export/embed.html?" + $.param(params)) + @@ -368,11 +405,34 @@ L.OSM.share = function (options) { $("#mapnik_scale").val(scale); } - $("#mapnik_image_width").text(Math.round(size.x / scale / 0.00028)); - $("#mapnik_image_height").text(Math.round(size.y / scale / 0.00028)); + const mapWidth = Math.round(size.x / scale / 0.00028); + const mapHeight = Math.round(size.y / scale / 0.00028); + $("#mapnik_image_width").text(mapWidth); + $("#mapnik_image_height").text(mapHeight); + + const layer = map.getMapBaseLayerId(); + const layerKeys = new Map([ + ["mapnik", "standard"], + ["cyclemap", "cycle_map"], + ["transportmap", "transport_map"] + ]); - if (map.getMapBaseLayerId() === "mapnik") { + $("#mapnik_image_layer").text(layerKeys.has(layer) ? I18n.t(`javascripts.map.base.${layerKeys.get(layer)}`) : ""); + $("#map_format").val(layer); + + $("#map_zoom").val(map.getZoom()); + $("#mapnik_lon").val(map.getCenter().lng); + $("#mapnik_lat").val(map.getCenter().lat); + $("#map_width").val(mapWidth); + $("#map_height").val(mapHeight); + + if (["cyclemap", "transportmap"].includes(map.getMapBaseLayerId())) { + $("#export-image").show(); + $("#mapnik_scale_row").hide(); + $("#export-warning").hide(); + } else if (map.getMapBaseLayerId() === "mapnik") { $("#export-image").show(); + $("#mapnik_scale_row").show(); $("#export-warning").hide(); } else { $("#export-image").hide();