Ajaxify the country selection on the terms page
authorTom Hughes <tom@compton.nu>
Tue, 27 Apr 2010 09:01:40 +0000 (10:01 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 27 Apr 2010 09:01:40 +0000 (10:01 +0100)
app/controllers/user_controller.rb
app/views/user/_terms.html.erb [new file with mode: 0644]
app/views/user/terms.html.erb
public/stylesheets/common.css

index 603fb2a49aef8a61b0054b907e3bb4f3cd1d1ca5..27d124daeae3423e7bc22a4e1d50235f9b7a00d8 100644 (file)
@@ -25,7 +25,11 @@ class UserController < ApplicationController
     @legale = params[:legale] || OSM.IPToCountry(request.remote_ip) || APP_CONFIG['default_legale']
     @text = OSM.legal_text_for_country(@legale)
 
-    if @user.invalid?
+    if request.xhr?
+      render :update do |page|
+        page.replace_html "contributorTerms", :partial => "terms"
+      end
+    elsif @user.invalid?
       render :action => 'new'
     end
   end
diff --git a/app/views/user/_terms.html.erb b/app/views/user/_terms.html.erb
new file mode 100644 (file)
index 0000000..849f536
--- /dev/null
@@ -0,0 +1,30 @@
+<p id="first"><%= @text['intro'] %></p>
+<ol>
+  <li>
+    <p><%= @text['section_1'] %></p>
+  </li>
+  <li>
+    <p><%= @text['section_2'] %></p>
+  </li>
+  <li>
+    <p><%= @text['section_3'] %></p>
+    <p><%= @text['active_defn_1'] %></p>
+    <p><%= @text['active_defn_2'] %></p>
+  </li>
+  <li>
+    <p><%= @text['section_4'] %></p>
+  </li>
+  <li>
+    <p><%= @text['section_5'] %></p>
+  </li>
+  <li>
+    <p><%= @text['section_6'] %></p>
+    <ol>
+      <li><p><%= @text['section_6_1'] %></p></li>
+      <li><p><%= @text['section_6_2'] %></p></li>
+    </ol>
+  </li>
+  <li>
+    <p id="last"><%= @text['section_7'] %></p>
+  </li>
+</ol>
index daa4396ff00859ae0ea6898ae6571ae5bbc88803..a370d4b48cc6a6b69383dca50c4533d30b352a86 100644 (file)
@@ -4,51 +4,25 @@
 
 <!-- legale is <%= @legale %> -->
 <% form_tag :action => 'terms' do %>
-  <p><%= t 'user.terms.legale_select' %></p>
-  <% [['france', 'FR'], ['italy', 'IT'], ['rest_of_world', 'GB']].each do |name,legale| %>
-    <%= radio_button_tag 'legale', legale, @legale == legale %>
-    <%= label_tag "legale_#{legale}", t('user.terms.legale_names.' + name) %><br/>
-  <% end %>
-  <%= hidden_field_tag('referer', h(params[:referer])) unless params[:referer].nil? %>
-  <%= hidden_field('user', 'email') %>
-  <%= hidden_field('user', 'email_confirmation') %>
-  <%= hidden_field('user', 'display_name') %>
-  <%= hidden_field('user', 'pass_crypt') %>
-  <%= hidden_field('user', 'pass_crypt_confirmation') %>
-  <%= submit_tag(t('user.terms.legale_button')) %>
+  <p>
+    <%= t 'user.terms.legale_select' %>
+    <% [['france', 'FR'], ['italy', 'IT'], ['rest_of_world', 'GB']].each do |name,legale| %>
+      <%=
+        radio_button_tag 'legale', legale, @legale == legale,
+          :onchange => remote_function(
+            :before => update_page do |page|
+              page.replace_html 'contributorTerms', image_tag('searching.gif')
+            end,
+            :url => {:legale => legale}
+          )
+      %>
+      <%= label_tag "legale_#{legale}", t('user.terms.legale_names.' + name) %>
+    <% end %>
+  </p>
 <% end %>
 
 <div id="contributorTerms">
-  <p id="first"><%= @text['intro'] %></p>
-  <ol>
-    <li>
-      <p><%= @text['section_1'] %></p>
-    </li>
-    <li>
-      <p><%= @text['section_2'] %></p>
-    </li>
-    <li>
-      <p><%= @text['section_3'] %></p>
-      <p><%= @text['active_defn_1'] %></p>
-      <p><%= @text['active_defn_2'] %></p>
-    </li>
-    <li>
-      <p><%= @text['section_4'] %></p>
-    </li>
-    <li>
-      <p><%= @text['section_5'] %></p>
-    </li>
-    <li>
-      <p><%= @text['section_6'] %></p>
-      <ol>
-        <li><p><%= @text['section_6_1'] %></p></li>
-        <li><p><%= @text['section_6_2'] %></p></li>
-      </ol>
-    </li>
-    <li>
-      <p id="last"><%= @text['section_7'] %></p>
-    </li>
-  </ol>
+  <%= render :partial => "terms" %>
 </div>
 
 <% form_tag :action => 'save' do %>
index 362e5d619cf9bbb9d705219a877edee741100c44..2c99cf0740b015b0c0b0ef37487192f5d0e23b26 100644 (file)
@@ -562,6 +562,13 @@ div#contributorTerms ol {
   margin-bottom: 0px;
 }
 
+div#contributorTerms img {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  margin-top: 10%;
+}
+
 /* Rules for the account settings page */
 
 #accountForm td {