Fix resizing of the map area in RTL layouts
This commit is contained in:
parent
aca299ecee
commit
599843c72d
3 changed files with 63 additions and 72 deletions
41
app/views/site/_resize.html.erb
Normal file
41
app/views/site/_resize.html.erb
Normal 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>
|
|
@ -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 %>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue