X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/eb8efa0a4b6e348079ba0686aecae30db4f3f22f..38a610fd316c4d5143c2af2e71f73da6f249ac45:/app/assets/javascripts/site.js diff --git a/app/assets/javascripts/site.js b/app/assets/javascripts/site.js index 0ae8d5a02..311798aa5 100644 --- a/app/assets/javascripts/site.js +++ b/app/assets/javascripts/site.js @@ -1,5 +1,7 @@ //= require jquery //= require jquery_ujs +//= require jquery.autogrowtextarea +//= require jquery.timers /* * Called as the user scrolls/zooms around to aniplate hrefs of the @@ -45,12 +47,13 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,obj var minzoom = match[1]; var name = link.id.replace(/anchor$/, ""); + $(link).off("click.minzoom"); + if (zoom >= minzoom) { - $(link).off("click"); $(link).attr("title", i18n("javascripts.site." + name + "_tooltip")); $(link).removeClass("disabled"); } else { - $(link).click(function () { alert(i18n("javascripts.site." + name + "_zoom_alert")); return false; }); + $(link).on("click.minzoom", function () { alert(i18n("javascripts.site." + name + "_zoom_alert")); return false; }); $(link).attr("title", i18n("javascripts.site." + name + "_disabled_tooltip")); $(link).addClass("disabled"); } @@ -141,23 +144,6 @@ function setArgs(url, args) { return url.replace(/\?.*$/, "") + "?" + queryitems.join("&"); } -/* - * Called to get a CSS property for an element. - */ -function getStyle(el, property) { - var style; - - if (el.currentStyle) { - style = el.currentStyle[property]; - } else if( window.getComputedStyle ) { - style = document.defaultView.getComputedStyle(el,null).getPropertyValue(property); - } else { - style = el.style[property]; - } - - return style; -} - /* * Called to interpolate JavaScript variables in strings using a * similar syntax to rails I18n string interpolation - the only @@ -220,3 +206,64 @@ function makeShortCode(lat, lon, zoom) { } return str; } + +/* + * Click handler to switch a rich text control to preview mode + */ +function previewRichtext(event) { + var editor = $(this).parents(".richtext_container").find("textarea"); + var preview = $(this).parents(".richtext_container").find(".richtext_preview"); + var width = editor.outerWidth() - preview.outerWidth() + preview.innerWidth(); + var minHeight = editor.outerHeight() - preview.outerHeight() + preview.innerHeight(); + + if (preview.contents().length == 0) { + preview.oneTime(500, "loading", function () { + preview.addClass("loading"); + }); + + preview.load(editor.attr("data-preview-url"), { text: editor.val() }, function () { + preview.stopTime("loading"); + preview.removeClass("loading"); + }); + } + + editor.hide(); + preview.width(width); + preview.css("min-height", minHeight + "px"); + preview.show(); + + $(this).siblings(".richtext_doedit").prop("disabled", false); + $(this).prop("disabled", true); + + event.preventDefault(); +} + +/* + * Click handler to switch a rich text control to edit mode + */ +function editRichtext(event) { + var editor = $(this).parents(".richtext_container").find("textarea"); + var preview = $(this).parents(".richtext_container").find(".richtext_preview"); + + preview.hide(); + editor.show(); + + $(this).siblings(".richtext_dopreview").prop("disabled", false); + $(this).prop("disabled", true); + + event.preventDefault(); +} + +/* + * Setup any rich text controls + */ +$(document).ready(function () { + $(".richtext_preview").hide(); + $(".richtext_content textarea").change(function () { + $(this).parents(".richtext_container").find(".richtext_preview").empty(); + }); + $(".richtext_doedit").prop("disabled", true); + $(".richtext_dopreview").prop("disabled", false); + $(".richtext_doedit").click(editRichtext); + $(".richtext_dopreview").click(previewRichtext); +});