Only add bbox data to the search form while we submit it
authorTom Hughes <tom@compton.nu>
Sun, 22 May 2011 10:08:17 +0000 (11:08 +0100)
committerTom Hughes <tom@compton.nu>
Sun, 22 May 2011 10:10:28 +0000 (11:10 +0100)
Having the bbox attributes on the search form all the time means
that Firefox will incude them in the arguments if you bookmark the
search using "Add a keyword for this search" on the context menu.

app/views/site/_search.html.erb
public/stylesheets/common.css

index f487e8f..8c5bd8b 100644 (file)
@@ -1,9 +1,5 @@
 <script type="text/javascript">
 <!--
-  function startSearch() {
-    updateSidebar("<%= t 'site.sidebar.search_results' %>", "");
-  }
-
   function describeLocation() {
     var args = getArgs($("viewanchor").href);
 
     <% if params[:action] == 'index' %>
     var extent = getMapExtent();
 
-    $("minlon").value = extent.left;
-    $("minlat").value = extent.bottom;
-    $("maxlon").value = extent.right;
-    $("maxlat").value = extent.top;
+    var minlon = document.createElement("input");
+    minlon.type = "hidden";
+    minlon.id = "minlon";
+    minlon.name = "minlon";
+    minlon.value = extent.left;
+    $("search_form").appendChild(minlon);
+
+    var minlat = document.createElement("input");
+    minlat.type = "hidden";
+    minlat.id = "minlat";
+    minlat.name = "minlat";
+    minlat.value = extent.bottom;
+    $("search_form").appendChild(minlat);
+
+    var maxlon = document.createElement("input");
+    maxlon.type = "hidden";
+    maxlon.id = "maxlon";
+    maxlon.name = "maxlon";
+    maxlon.value = extent.left;
+    $("search_form").appendChild(maxlon);
+
+    var maxlat = document.createElement("input");
+    maxlat.type = "hidden";
+    maxlat.id = "maxlat";
+    maxlat.name = "maxlat";
+    maxlat.value = extent.bottom;
+    $("search_form").appendChild(maxlat);
+    <% end %>
+  }
+
+  function startSearch() {
+    updateSidebar("<%= t 'site.sidebar.search_results' %>", "");
+  }
+
+  function endSearch() {
+    <% if params[:action] == 'index' %>
+    $("minlon").remove();
+    $("minlat").remove();
+    $("maxlon").remove();
+    $("maxlat").remove();
     <% end %>
   }
 
   <div class="optionalbox">
     <span class="whereami"><a href="javascript:describeLocation()" title="<%= t 'site.search.where_am_i_title' %>"><%= t 'site.search.where_am_i' %></a></span>
     <h1><%= t 'site.search.search' %></h1>
-    <div class="search_form">
+    <div class="search_container">
     <div id="search_field">
     <% form_remote_tag(:before => "setSearchViewbox()",
                        :loading => "startSearch()",
                        :complete => "endSearch()",
                        :url => { :controller => :geocoder, :action => :search },
-                       :html => { :method => "get", :action => url_for(:action => "index") }) do %>
+                       :html => { :id => "search_form", :method => "get", :action => url_for(:action => "index") }) do %>
       <%= text_field_tag :query, h(params[:query]), :tabindex => "1" %>
-      <% if params[:action] == 'index' %>
-        <%= hidden_field_tag :minlon %>
-        <%= hidden_field_tag :minlat %>
-        <%= hidden_field_tag :maxlon %>
-        <%= hidden_field_tag :maxlat %>
-      <% end %>
       <%= submit_tag t('site.search.submit_text') %>
     <% end %>
     </div>
index 1ea7a5b..a62665e 100644 (file)
@@ -222,7 +222,7 @@ hr {
   float: right;
 }
 
-.search_form {
+.search_container {
   height: 16px;
   padding-bottom: 6px;
 }