Fix resizing of the map area in RTL layouts

This commit is contained in:
Tom Hughes 2011-07-02 16:19:47 +01:00
parent aca299ecee
commit 599843c72d
3 changed files with 63 additions and 72 deletions

View file

@ -0,0 +1,41 @@
<script type="text/javascript">
var brokenContentSize = $("content").offsetWidth == 0;
function resizeContent() {
var content = $("content");
var leftMargin = parseInt(getStyle(content, "left"));
var rightMargin = parseInt(getStyle(content, "right"));
var bottomMargin = parseInt(getStyle(content, "bottom"));
<% if t('html.dir') == "ltr" -%>
content.style.width = document.documentElement.clientWidth - content.offsetLeft - rightMargin;
<% else -%>
content.style.width = document.documentElement.clientWidth - content.offsetRight - leftMargin;
<% end -%>
content.style.height = document.documentElement.clientHeight - content.offsetTop - bottomMargin;
}
function resizeMap() {
var sidebar_width = $("sidebar").offsetWidth;
if (sidebar_width > 0) {
sidebar_width = sidebar_width + 5
}
<% if t('html.dir') == "ltr" -%>
$("map").style.left = (sidebar_width) + "px";
<% else -%>
$("map").style.right = (sidebar_width) + "px";
<% end -%>
$("map").style.width = ($("content").offsetWidth - sidebar_width) + "px";
$("map").style.height = ($("content").offsetHeight - 2) + "px";
}
function handleResize() {
if (brokenContentSize) {
resizeContent();
}
resizeMap();
}
</script>

View file

@ -18,46 +18,22 @@
<%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> <%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %>
<%= render :partial => 'search' %> <%= render :partial => 'search' %>
<%= render :partial => 'resize' %>
<%= render :partial => preferred_editor %> <%= render :partial => preferred_editor %>
<script type="text/javascript" defer="defer"> <script type="text/javascript" defer="defer">
function resizeContent() {
var content = $("content");
var rightMargin = parseInt(getStyle(content, "right"));
var bottomMargin = parseInt(getStyle(content, "bottom"));
content.style.width = document.documentElement.clientWidth - content.offsetLeft - rightMargin;
content.style.height = document.documentElement.clientHeight - content.offsetTop - bottomMargin;
}
function resizeMap() {
var sidebar_width = $("sidebar").offsetWidth;
if (sidebar_width > 0) {
sidebar_width = sidebar_width + 5
}
$("map").style.left = (sidebar_width) + "px";
$("map").style.width = ($("content").offsetWidth - sidebar_width) + "px";
$("map").style.height = ($("content").offsetHeight - 2) + "px";
}
function handleResize() {
if (brokenContentSize) {
resizeContent();
}
resizeMap();
}
function maximiseMap() { function maximiseMap() {
$("left").style.display = "none"; $("left").style.display = "none";
$("greeting").style.display = "none"; $("greeting").style.display = "none";
$("tabnav").style.display = "none"; $("tabnav").style.display = "none";
$("content").style.top = "10px"; $("content").style.top = "10px";
<% if t('html.dir') == "ltr" -%>
$("content").style.left = "10px"; $("content").style.left = "10px";
<% else -%>
$("content").style.right = "10px";
<% end -%>
handleResize(); handleResize();
} }
@ -68,14 +44,18 @@
$("tabnav").style.display = ""; $("tabnav").style.display = "";
$("content").style.top = "35px"; $("content").style.top = "35px";
<% if t('html.dir') == "ltr" -%>
$("content").style.left = "192px"; $("content").style.left = "192px";
<% else -%>
$("content").style.right = "192px";
<% end -%>
handleResize(); handleResize();
} }
handleResize(); handleResize();
window.onload = handleResize; Event.observe(window, "load", handleResize);
window.onresize = handleResize; Event.observe(window, "resize", handleResize);
</script> </script>
<% end %> <% end %>

View file

@ -118,9 +118,9 @@ end
<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> <%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
<%= javascript_include_tag 'map.js' %> <%= javascript_include_tag 'map.js' %>
<%= render :partial => 'resize' %>
<script type="text/javascript" defer="defer"> <script type="text/javascript" defer="defer">
<!--
var brokenContentSize = $("content").offsetWidth == 0;
var marker; var marker;
var map; var map;
@ -237,43 +237,6 @@ end
document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString(); document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString();
} }
function resizeContent() {
var content = $("content");
var rightMargin = parseInt(getStyle(content, "right"));
var bottomMargin = parseInt(getStyle(content, "bottom"));
content.style.width = document.documentElement.clientWidth - content.offsetLeft - rightMargin;
content.style.height = document.documentElement.clientHeight - content.offsetTop - bottomMargin;
}
function resizeMap() {
var centre = map.getCenter();
var zoom = map.getZoom();
var sidebar_width = $("sidebar").offsetWidth;
if (sidebar_width > 0) {
sidebar_width = sidebar_width + 5
}
<% if t('html.dir') == "ltr" -%>
$("map").style.left = (sidebar_width) + "px";
<% else -%>
$("map").style.right = (sidebar_width) + "px";
<% end -%>
$("map").style.width = ($("content").offsetWidth - sidebar_width) + "px";
$("map").style.height = ($("content").offsetHeight - 2) + "px";
map.setCenter(centre, zoom);
}
function handleResize() {
if (brokenContentSize) {
resizeContent();
}
resizeMap();
}
function remoteEditHandler(event) { function remoteEditHandler(event) {
var extent = getMapExtent(); var extent = getMapExtent();
var loaded = false; var loaded = false;
@ -304,10 +267,17 @@ end
Event.observe(window, "load", installEditHandler); Event.observe(window, "load", installEditHandler);
Event.observe(window, "load", handleResize); Event.observe(window, "load", handleResize);
Event.observe(window, "resize", handleResize);
Event.observe(window, "resize", function() {
var centre = map.getCenter();
var zoom = map.getZoom();
handleResize();
map.setCenter(centre, zoom);
});
<% if params['action'] == 'export' %> <% if params['action'] == 'export' %>
<%= remote_function :url => { :controller => 'export', :action => 'start' } %> <%= remote_function :url => { :controller => 'export', :action => 'start' } %>
<% end %> <% end %>
// -->
</script> </script>