From a2d343619e752f62cb7e3445803e4491696af391 Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 7 Dec 2012 12:30:15 +0100 Subject: using normal requests for user updates except password password requires ajax for secure remote password to work --- users/app/assets/javascripts/users.js.coffee | 5 ++--- users/app/controllers/users_controller.rb | 2 +- users/app/helpers/users_helper.rb | 30 ++++++++++++++++++---------- users/app/views/users/edit.html.haml | 8 ++++---- users/app/views/users/new.html.haml | 2 +- 5 files changed, 28 insertions(+), 19 deletions(-) (limited to 'users') diff --git a/users/app/assets/javascripts/users.js.coffee b/users/app/assets/javascripts/users.js.coffee index 76a6d79..9a2af7a 100644 --- a/users/app/assets/javascripts/users.js.coffee +++ b/users/app/assets/javascripts/users.js.coffee @@ -29,7 +29,6 @@ $(document).ready -> $('#new_user').submit srp.signup $('#new_session').submit preventDefault $('#new_session').submit srp.login - $('.user.form.edit').submit srp.update - $('.user.form.edit').submit preventDefault + $('.user.form.change_password').submit srp.update + $('.user.form.change_password').submit preventDefault $('.user.typeahead').typeahead({source: pollUsers}); - diff --git a/users/app/controllers/users_controller.rb b/users/app/controllers/users_controller.rb index cffc8c6..320ed96 100644 --- a/users/app/controllers/users_controller.rb +++ b/users/app/controllers/users_controller.rb @@ -31,7 +31,7 @@ class UsersController < ApplicationController def update @user.update_attributes(params[:user]) - respond_with @user + respond_with @user, :location => edit_user_path(@user) end def destroy diff --git a/users/app/helpers/users_helper.rb b/users/app/helpers/users_helper.rb index dec8904..5d9eff7 100644 --- a/users/app/helpers/users_helper.rb +++ b/users/app/helpers/users_helper.rb @@ -1,22 +1,32 @@ module UsersHelper - def user_form_with(partial, legend, locals) - user_form do |f| - locals.reverse_merge! :legend => legend, :f => f + def user_form_with(partial, options = {}) + user_form(options) do |f| + options[:f] = f render :partial => partial, :layout => 'legend_and_submit', - :locals => locals + :locals => options end end - def user_form - html_class = 'form-horizontal user form ' - html_class += (@user.new_record? ? 'new' : 'edit') + def user_form(options) simple_form_for @user, - :validate => true, - :format => :json, - :html => {:class => html_class} do |f| + :html => user_form_html_options(options), + :validate => true do |f| yield f end end + + def user_form_html_options(options) + { :class => user_form_html_classes(options).join(" "), + :id => dom_id(@user, options[:legend]) + } + end + + def user_form_html_classes(options) + classes = %W/form-horizontal user form/ + classes << options[:legend] + classes << (@user.new_record? ? 'new' : 'edit') + classes.compact + end end diff --git a/users/app/views/users/edit.html.haml b/users/app/views/users/edit.html.haml index 4192959..b33c19b 100644 --- a/users/app/views/users/edit.html.haml +++ b/users/app/views/users/edit.html.haml @@ -8,9 +8,9 @@ .tab-content .tab-pane.active#account - = user_form_with 'login_field', :change_login - = user_form_with 'password_fields', :change_password + = user_form_with 'login_field', :legend => :change_login + = user_form_with 'password_fields', :legend => :change_password = render 'cancel_account' if @user == current_user .tab-pane#email - = user_form_with 'email_field', :set_email_address - = user_form_with 'email_forward_field', :forward_email + = user_form_with 'email_field', :legend => :set_email_address + = user_form_with 'email_forward_field', :legend => :forward_email diff --git a/users/app/views/users/new.html.haml b/users/app/views/users/new.html.haml index 81588b1..1814847 100644 --- a/users/app/views/users/new.html.haml +++ b/users/app/views/users/new.html.haml @@ -1,3 +1,3 @@ .span8.offset2 %h2=t :signup - = user_form_with 'signup', :signup_message, :with_cancel => true + = user_form_with 'signup', :legend => :signup_message, :with_cancel => true -- cgit v1.2.3