Wire up adoption form
This commit is contained in:
parent
80994fa76b
commit
200e683f91
|
@ -0,0 +1,12 @@
|
|||
class HydrantsController < ApplicationController
|
||||
respond_to :json
|
||||
|
||||
def update
|
||||
@hydrant = Hydrant.find(params[:id])
|
||||
if @hydrant.update_attributes(params[:hydrant])
|
||||
respond_with @hydrant
|
||||
else
|
||||
render(:json => {"errors" => @hydrant.errors})
|
||||
end
|
||||
end
|
||||
end
|
|
@ -18,11 +18,11 @@
|
|||
position: google.maps.ControlPosition.BOTTOM_CENTER
|
||||
},
|
||||
zoom: <%= @zoom %>,
|
||||
zoomControl: false,
|
||||
center: latlng,
|
||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||||
};
|
||||
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
|
||||
comboFormString = '<%= render(:partial => "combo_form").gsub("\n", "") %>';
|
||||
var openInfoWindow;
|
||||
function addMarker(point, color, contentString) {
|
||||
var image = new google.maps.MarkerImage(color,
|
||||
|
@ -42,13 +42,36 @@
|
|||
shadow: shadow
|
||||
});
|
||||
var infoWindow = new google.maps.InfoWindow({
|
||||
content: contentString
|
||||
content: contentString,
|
||||
maxWidth: 350
|
||||
});
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
if(openInfoWindow != undefined) {
|
||||
if(openInfoWindow) {
|
||||
openInfoWindow.close();
|
||||
}
|
||||
infoWindow.open(map, marker);
|
||||
$('.adoption_form').submit(function() {
|
||||
$.post('<%= hydrant_path :format => "json" %>', {
|
||||
'id': $('#hydrant_id').val(),
|
||||
'commit': $('#adoption_form_submit').val(),
|
||||
'utf8': '✓',
|
||||
'authenticity_token': $('input[name="authenticity_token"]').val(),
|
||||
'_method': 'put',
|
||||
'hydrant': {
|
||||
'user_id': $('#hydrant_user_id').val() || <%= user_signed_in? ? current_user.id : false %>,
|
||||
'name': $('#hydrant_name').val()
|
||||
}
|
||||
}, function(data) {
|
||||
image = new google.maps.MarkerImage('/images/markers/green.png',
|
||||
new google.maps.Size(27.0, 37.0),
|
||||
new google.maps.Point(0, 0),
|
||||
new google.maps.Point(13.0, 18.0)
|
||||
);
|
||||
marker.setIcon(image);
|
||||
marker.setAnimation(google.maps.Animation.BOUNCE);
|
||||
});
|
||||
return false;
|
||||
});
|
||||
$('.combo_form').submit(function() {
|
||||
var errors = []
|
||||
if(!/[\w\.%\+\-]+@[\w\-]+\.+[\w]{2,}/.test($('#user_email').val())) {
|
||||
|
@ -80,17 +103,17 @@
|
|||
errors[0].focus();
|
||||
} else {
|
||||
$.post('<%= user_registration_path :format => "json" %>', {
|
||||
'remote' : true,
|
||||
'commit' : $('#user_new_submit').val(),
|
||||
'utf8' : '✓',
|
||||
'user' : {
|
||||
'email' : $('#user_email').val(),
|
||||
'name' : $('#user_name').val(),
|
||||
'organization' : $('#user_organization').val(),
|
||||
'voice_number' : $('#user_voice_number').val(),
|
||||
'sms_number' : $('#user_sms_number').val(),
|
||||
'password' : $('#user_password_confirmation').val(),
|
||||
'password_confirmation' : $('#user_password_confirmation').val()
|
||||
'commit': $('#user_new_submit').val(),
|
||||
'utf8': '✓',
|
||||
'authenticity_token': $('input[name="authenticity_token"]').val(),
|
||||
'user': {
|
||||
'email': $('#user_email').val(),
|
||||
'name': $('#user_name').val(),
|
||||
'organization': $('#user_organization').val(),
|
||||
'voice_number': $('#user_voice_number').val(),
|
||||
'sms_number': $('#user_sms_number').val(),
|
||||
'password': $('#user_password_confirmation').val(),
|
||||
'password_confirmation': $('#user_password_confirmation').val()
|
||||
}
|
||||
}, function(data) {
|
||||
if(data.errors) {
|
||||
|
@ -127,7 +150,9 @@
|
|||
errors[0].focus();
|
||||
} else {
|
||||
$('.combo_form').slideUp();
|
||||
$('.adoption_form').slideDown();
|
||||
$('.adoption_form').slideDown(function() {
|
||||
$('#hydrant_user_id').val(data.user.id);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -144,12 +169,13 @@
|
|||
errors[0].focus();
|
||||
} else {
|
||||
$.post('<%= user_session_path :format => "json" %>', {
|
||||
'remote' : true,
|
||||
'commit' : $('#user_existing_submit').val(),
|
||||
'utf8' : '✓',
|
||||
'user' : {
|
||||
'email' : $('#user_email').val(),
|
||||
'password' : $('#user_password').val()
|
||||
'commit': $('#user_existing_submit').val(),
|
||||
'utf8': '✓',
|
||||
'authenticity_token': $('input[name="authenticity_token"]').val(),
|
||||
'user': {
|
||||
'email': $('#user_email').val(),
|
||||
'password': $('#user_password').val(),
|
||||
'remember_me': $('#user_remember_me').val()
|
||||
}
|
||||
}, function(data) {
|
||||
if(data.errors) {
|
||||
|
@ -158,7 +184,9 @@
|
|||
$('#user_password').addClass('error', 500);
|
||||
} else {
|
||||
$('.combo_form').slideUp();
|
||||
$('.adoption_form').slideDown();
|
||||
$('.adoption_form').slideDown(function() {
|
||||
$('#hydrant_user_id').val(data.user.id);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -167,11 +195,11 @@
|
|||
errors[0].focus();
|
||||
} else {
|
||||
$.post('<%= user_password_path :format => "json" %>', {
|
||||
'remote' : true,
|
||||
'commit' : $('#user_forgot_password_submit').val(),
|
||||
'utf8' : '✓',
|
||||
'user' : {
|
||||
'email' : $('#user_email').val()
|
||||
'commit': $('#user_forgot_password_submit').val(),
|
||||
'utf8': '✓',
|
||||
'authenticity_token': $('input[name="authenticity_token"]').val(),
|
||||
'user': {
|
||||
'email': $('#user_email').val()
|
||||
}
|
||||
}, function(data) {
|
||||
if(data.errors) {
|
||||
|
@ -199,7 +227,7 @@
|
|||
<% if user_signed_in? %>
|
||||
contentString = '<h2>Adopt this Hydrant</h2><%= render(:partial => "adoption_form", :locals => {:hydrant => hydrant}).gsub("\n", "") %>'
|
||||
<% else %>
|
||||
contentString = '<h2>Adopt this Hydrant</h2><%= render(:partial => "combo_form").gsub("\n", "") + render(:partial => "adoption_form", :locals => {:hydrant => hydrant}).gsub("\n", "") %>'
|
||||
contentString = '<h2>Adopt this Hydrant</h2>' + comboFormString + '<%= render(:partial => "adoption_form", :locals => {:hydrant => hydrant}).gsub("\n", "") %>'
|
||||
<% end %>
|
||||
<% end %>
|
||||
addMarker(point, color, contentString);
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
<% style = user_signed_in? ? {} : {:style => "display: none;"}%>
|
||||
<%= form_for hydrant, :html => {:class => "adoption_form"}.merge(style) do |f| %>
|
||||
<%= form_for hydrant, :remote => true, :html => {:class => "adoption_form"}.merge(style) do |f| %>
|
||||
<div id="adoption_fields">
|
||||
<%= f.hidden_field "id" %>
|
||||
<%= f.hidden_field "user_id", :value => (user_signed_in? ? current_user.id : nil) %>
|
||||
<%= f.label "name", "Name your hydrant", :id => "hydrant_name_label" %>
|
||||
<%= f.label "name", "Give your hydrant a name", :id => "hydrant_name_label" %>
|
||||
<%= f.text_field "name", :tabindex => 1 %>
|
||||
<%= f.submit "Adopt!", :tabindex => 2, :id => "user_new_submit" %>
|
||||
<%= f.submit "Adopt!", :tabindex => 2, :id => "adoption_form_submit" %>
|
||||
<p>By adopting this hydrant, you agree to the <%= link_to "Terms of Service", "#", :tabindex => 3 %>.</p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<%= form_for :user, :html => {:class => "combo_form"} do |f| %>
|
||||
<%= form_for :user, :remote => true, :html => {:class => "combo_form"} do |f| %>
|
||||
<div id="common_fields">
|
||||
<%= f.label "email", "Email address", :id => "user_email_label" %>
|
||||
<%= f.text_field "email", :tabindex => 1 %>
|
||||
|
|
Loading…
Reference in New Issue