]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/site/_search.html.erb
Use link_to and form_tag instead of link_to_remote and form_remote_tag
[rails.git] / app / views / site / _search.html.erb
index b57a1f984f0381308322d9e78ccfb23119000cef..b1e5f448732ccd9b1bd067cd9ef49e3855c2dd4d 100644 (file)
@@ -1,29 +1,68 @@
 <script type="text/javascript">
 <!--
-  function startSearch() {
-    updateSidebar("Search Results", "<p class='search_results_entry'>Searching...<\/p>");
+  function describeLocation() {
+    var args = getArgs($("viewanchor").href);
 
-    $("search_field").style.display = "none";
-    $("search_active").style.display = "inline";
+    <%= remote_function(:loading => "startSearch()",
+                        :url => { :controller => :geocoder, :action => :description },
+                        :with => "'lat=' + args['lat'] + '&lon=' + args['lon'] + '&zoom=' + args['zoom']") %>
   }
 
-  function endSearch() {
-    $("search_field").style.display = "inline";
-    $("search_active").style.display = "none";
+  function setSearchViewbox() {
+    <% if params[:action] == 'index' %>
+    var extent = getMapExtent();
+
+    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 describeLocation() {
-    var position = getPosition();
+  function startSearch() {
+    updateSidebar("<%= t 'site.sidebar.search_results' %>", "");
+  }
 
-    <%= remote_function(:loading => "startSearch()",
-                        :complete => "endSearch()",
-                        :url => { :controller => :geocoder, :action => :description },
-                        :with => "'lat=' + position.lat + '&lon=' + position.lon") %>
+  function endSearch() {
+    <% if params[:action] == 'index' %>
+    $("minlon").remove();
+    $("minlat").remove();
+    $("maxlon").remove();
+    $("maxlat").remove();
+    <% end %>
   }
 
+  document.observe("dom:loaded", function () {
+    $("search_form").observe("ajax:before", setSearchViewbox);
+    $("search_form").observe("ajax:loading", startSearch);
+    $("search_form").observe("ajax:complete", endSearch);
+  });
+
   <% if params[:query] %>
   <%= remote_function(:loading => "startSearch()",
-                      :complete => "endSearch()",
                       :url => { :controller => :geocoder, :action => :search, :query => h(params[:query]) }) %>
   <% end %>
 // -->
 
 <% content_for "optionals" do %>
   <div class="optionalbox">
-    <span class="oboxheader"><%= t 'site.search.search' %></span>
-    <span class="whereami"><a href="javascript:describeLocation()"><%= t 'site.search.where_am_i' %></a></span>
-    <div class="search_form">
+    <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_container">
     <div id="search_field">
-    <% form_remote_tag(:loading => "startSearch()",
-                       :complete => "endSearch()",
-                       :url => { :controller => :geocoder, :action => :search }) do %>
-      <%= text_field_tag :query, h(params[:query]) %>
+    <%= form_tag({ :controller => :geocoder, :action => :search },
+                 { :id => "search_form", :remote => true, :method => "get", :action => url_for(:action => "index") }) do %>
+      <%= text_field_tag :query, h(params[:query]), :tabindex => "1" %>
       <%= submit_tag t('site.search.submit_text') %>
     <% end %>
     </div>
-    <p id="search_active"><%= t 'site.search.searching' %></p>
     </div>
     <p class="search_help">
       <%= t 'site.search.search_help' %>