X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/04ff7d4ee81040f152c38ee39ba84491c91a66f3..51d778097f031631a38236e7ab9a37f75a4580dc:/app/assets/javascripts/leaflet.share.js?ds=sidebyside diff --git a/app/assets/javascripts/leaflet.share.js b/app/assets/javascripts/leaflet.share.js index f6ab47cf2..69db10ad7 100644 --- a/app/assets/javascripts/leaflet.share.js +++ b/app/assets/javascripts/leaflet.share.js @@ -10,7 +10,7 @@ L.OSM.share = function (options) { // Link / Embed var $linkSection = $("<div>") - .attr("class", "section share-link") + .attr("class", "share-link p-3 border-bottom border-secondary-subtle") .appendTo($ui); $("<h4>") @@ -23,38 +23,38 @@ L.OSM.share = function (options) { $("<div>") .attr("class", "form-check mb-3") .appendTo($form) - .append( - $("<label>") - .attr("for", "link_marker") - .attr("class", "form-check-label") - .append( - $("<input>") - .attr("id", "link_marker") - .attr("type", "checkbox") - .attr("class", "form-check-input") - .bind("change", toggleMarker)) - .append(I18n.t("javascripts.share.include_marker"))); + .append($("<label>") + .attr("for", "link_marker") + .attr("class", "form-check-label") + .text(I18n.t("javascripts.share.include_marker"))) + .append($("<input>") + .attr("id", "link_marker") + .attr("type", "checkbox") + .attr("class", "form-check-input") + .bind("change", toggleMarker)); - $("<div>") - .attr("class", "share-tabs") + $("<div class='btn-group btn-group-sm mb-2'>") .appendTo($form) - .append($("<a>") - .attr("class", "active") + .append($("<a class='btn btn-primary'>") + .addClass("active") .attr("for", "long_input") .attr("id", "long_link") .text(I18n.t("javascripts.share.long_link"))) - .append($("<a>") + .append($("<a class='btn btn-primary'>") .attr("for", "short_input") .attr("id", "short_link") .text(I18n.t("javascripts.share.short_link"))) - .append($("<a>") + .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"); - $linkSection.find(".share-tabs a") + $(this).siblings("a") .removeClass("active"); $(this).addClass("active"); $linkSection.find(".share-tab") @@ -67,38 +67,44 @@ L.OSM.share = function (options) { $("<div>") .attr("class", "share-tab") - .css("display", "block") .appendTo($form) .append($("<input>") .attr("id", "long_input") .attr("type", "text") + .attr("class", "form-control form-control-sm font-monospace") + .attr("readonly", true) .on("click", select)); $("<div>") .attr("class", "share-tab") + .hide() .appendTo($form) .append($("<input>") .attr("id", "short_input") .attr("type", "text") + .attr("class", "form-control form-control-sm font-monospace") + .attr("readonly", true) .on("click", select)); $("<div>") .attr("class", "share-tab") + .hide() .appendTo($form) .append( $("<textarea>") .attr("id", "embed_html") + .attr("class", "form-control form-control-sm font-monospace") + .attr("readonly", true) .on("click", select)) .append( $("<p>") .attr("class", "text-muted") - .text(I18n.t("javascripts.share.paste_html")) - .appendTo($linkSection)); + .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>") @@ -113,7 +119,7 @@ L.OSM.share = function (options) { // Image var $imageSection = $("<div>") - .attr("class", "section share-image") + .attr("class", "share-image p-3") .appendTo($ui); $("<h4>") @@ -132,46 +138,61 @@ L.OSM.share = function (options) { .attr("method", "post") .appendTo($imageSection); - $("<div>") - .attr("class", "mb-3 form-check") - .appendTo($form) - .append( - $("<label>") - .attr("for", "image_filter") - .attr("class", "form-check-label") - .append( - $("<input>") - .attr("id", "image_filter") - .attr("type", "checkbox") - .attr("class", "form-check-input") - .bind("change", toggleFilter)) - .append(I18n.t("javascripts.share.custom_dimensions"))); - $("<div>") .appendTo($form) - .append( - $("<label>") - .attr("for", "mapnik_format") - .text(I18n.t("javascripts.share.format"))) - .append($("<select>") - .attr("name", "mapnik_format") - .attr("id", "mapnik_format") - .append($("<option>").val("png").text("PNG").prop("selected", true)) - .append($("<option>").val("jpeg").text("JPEG")) - .append($("<option>").val("svg").text("SVG")) - .append($("<option>").val("pdf").text("PDF"))); + .attr("class", "row mb-3") + .append($("<label>") + .attr("for", "mapnik_format") + .attr("class", "col-auto col-form-label") + .text(I18n.t("javascripts.share.format"))) + .append($("<div>") + .attr("class", "col-auto") + .append($("<select>") + .attr("name", "mapnik_format") + .attr("id", "mapnik_format") + .attr("class", "form-select w-auto") + .append($("<option>").val("png").text("PNG").prop("selected", true)) + .append($("<option>").val("jpeg").text("JPEG")) + .append($("<option>").val("svg").text("SVG")) + .append($("<option>").val("pdf").text("PDF")))); $("<div>") .appendTo($form) + .attr("class", "row mb-3") .append($("<label>") .attr("for", "mapnik_scale") + .attr("class", "col-auto col-form-label") .text(I18n.t("javascripts.share.scale"))) - .append("1 : ") - .append($("<input>") - .attr("name", "mapnik_scale") - .attr("id", "mapnik_scale") - .attr("type", "text") - .on("change", update)); + .append($("<div>") + .attr("class", "col-auto") + .append($("<div>") + .attr("class", "input-group flex-nowrap") + .append($("<span>") + .attr("class", "input-group-text") + .text("1 : ")) + .append($("<input>") + .attr("name", "mapnik_scale") + .attr("id", "mapnik_scale") + .attr("type", "text") + .attr("class", "form-control") + .on("change", update)))); + + $("<div>") + .attr("class", "row mb-3") + .appendTo($form) + .append($("<div>") + .attr("class", "col-auto") + .append($("<div>") + .attr("class", "form-check") + .append($("<label>") + .attr("for", "image_filter") + .attr("class", "form-check-label") + .text(I18n.t("javascripts.share.custom_dimensions"))) + .append($("<input>") + .attr("id", "image_filter") + .attr("type", "checkbox") + .attr("class", "form-check-input") + .bind("change", toggleFilter)))); ["minlon", "minlat", "maxlon", "maxlat"].forEach(function (name) { $("<input>") @@ -291,6 +312,7 @@ L.OSM.share = function (options) { } function update() { + var canEmbed = map.getMapBaseLayerId() !== "tracestracktopo"; var bounds = map.getBounds(); $("#link_marker") @@ -316,8 +338,16 @@ 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\" frameborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" src=\"" + + "<iframe width=\"425\" height=\"350\" src=\"" + escapeHTML(OSM.SERVER_PROTOCOL + "://" + OSM.SERVER_URL + "/export/embed.html?" + $.param(params)) + "\" style=\"border: 1px solid black\"></iframe><br/>" + "<small><a href=\"" + escapeHTML(map.getUrl(marker)) + "\">" +