Commit c17758fe

mo khan <mo@mokhan.ca>
2013-07-01 17:59:36
move update action from registrations controller to settings controller
1 parent dc83593
app/controllers/passwords_controller.rb
@@ -8,6 +8,8 @@ class PasswordsController < ApplicationController
   def update
     user = current_user
     if user.change_password(params[:user][:password], params[:user][:password_confirmation])
+      sign_in @user, :bypass => true
+      flash[:notice] = "Your password has been updated successfully!"
       render :index
     else
       flash[:error] = t(:passwords_do_not_match)
app/controllers/settings_controller.rb
@@ -2,8 +2,16 @@ class SettingsController < ApplicationController
   before_filter :authenticate_user!
 
   def index
+    @user = current_user
   end
 
   def update
+    @user = current_user
+    @user.interest_ids = params[:user][:interest_ids] ||= []
+    if @user.update_without_password(params[:user])
+      redirect_to settings_path, :notice => 'Your settings have been updated successfully!'
+    else
+      render :index
+    end
   end
 end
app/views/passwords/index.html.erb
@@ -3,7 +3,7 @@
 <div class="row">
   <div class="span12">
     <h3>Change Password</h3>
-    <%= form_for(@user, :url => passwords_path(@user), :html => { :method => :post, :class => "form-horizontal" }) do |f| %>
+    <%= form_for(@user, :url => password_path(@user), :html => { :method => :put, :class => "form-horizontal" }) do |f| %>
       <div class="control-group">
         <%= f.label :password, "New password", :class => "control-label" %>
         <div class="controls">
app/views/settings/index.html.erb
@@ -0,0 +1,86 @@
+<% provide(:title, "My Settings") -%>
+<% content_for :javascript do %>
+<script type="text/javascript" charset="utf-8">
+$(function(){ 
+  DeviseUsers.Edit.initialize(jQuery); 
+});
+</script>
+<% end %>
+
+<%= render :partial => "shared/account_nav" %>
+
+<div class="row">
+  <div class="span12">
+    <h1>My Settings</h1>
+    <%= form_for(@user, :url => setting_path(@user), :html => { :method => :put, :class => "form-horizontal" }) do |f| %>
+      <fieldset>
+        <div class="control-group">
+          <%= f.label :name, :class => "control-label"  %>
+          <div class="controls"> <%= f.text_field :name, :class => "input-xlarge" %> </div>
+        </div>
+        <div class="control-group">
+          <%= f.label :email, :class => "control-label"  %>
+          <div class="controls"> <%= f.email_field :email, :class => "input-xlarge"  %> </div>
+        </div>
+        <div class="control-group">
+          <%= f.label :city, :class => 'control-label' %>
+          <div class="controls"> <%= f.text_field :city, :class => "input-xlarge" %> </div>
+        </div>
+        <div class="control-group">
+          <%= f.label :website, :class => "control-label" %> 
+          <div class="controls"> <%= f.url_field :website, :class => "input-xlarge, url", :placeholder => "http://cakeside.com" %> </div>
+        </div>
+        <div class="control-group">
+          <%= f.label :twitter, "Twitter username @", :class => "control-label" %> 
+          <div class="controls"> <%= f.text_field :twitter, :class => "input-xlarge", :placeholder => "without the @ sign", :maxlength => "255" %> </div>
+        </div>
+        <div class="control-group">
+          <%= f.label :facebook, :class => "control-label" %> 
+          <div class="controls"> <%= f.text_field :facebook, :class => "input-xlarge", :placeholder => "http://www.facebook.com/your_profile", :maxlength => "255" %> </div>
+        </div>
+        <p class="help-block">
+        <strong>Note:</strong> Help us better serve you by checking off what best describes you?
+        </p>
+        <div class="control-group">
+          <label class="control-label">About me:</label>
+          <div class="controls">
+            <% for interest in Interest.all %>
+              <label class="checkbox">
+                <%= check_box_tag "user[interest_ids][]", interest.id, current_user.interests.include?(interest) %>
+                <%= interest.name %>
+              </label>
+            <% end %>
+          </div>
+        </div><!-- /control-group -->
+        <div class="form-actions">
+          <input type="submit" class="btn btn-primary" value="Save changes" />
+          <button type="reset" class="btn">Cancel</button>
+        </div>
+        <%= f.hidden_field :latitude %>
+        <%= f.hidden_field :longitude %>
+      </fieldset>
+    <% end %>
+  </div>
+</div>
+<div id="change-avatar-dialog" class="modal hide fade">
+  <%= form_tag(avatars_path(current_user), :method => "post", :multipart => true) do |f| %>
+    <div class="modal-header">
+      <button type="button" class="close" data-dismiss="modal">x</button>
+      <h3>Change My Picture</h3>
+    </div>
+    <div class="modal-body">
+      <p style="margin-left:auto; margin-right:auto;text-align:center;"> 
+        <%= avatar_for(current_user) %>
+      </p>
+      <p style="margin-left:auto; margin-right:auto;text-align:center;">
+      <%= fields_for Avatar.new do |f| %>
+        <%= f.file_field :avatar, :rel => avatars_path(current_user) %>
+      <% end %>
+      </p>
+    </div>
+    <div class="modal-footer">
+      <input type="submit" class="btn btn-primary" value="Save changes" />
+      <a href="#" class="btn" data-dismiss="modal">Close</a>
+    </div>
+  <% end %>
+</div>
app/views/shared/_account_nav.html.erb
@@ -2,9 +2,8 @@
   <div class="span12">
     <ul class="nav nav-tabs">
       <li><%= link_to "Basic info", settings_path %></li>
-      <li><a href="#">Additional info</a></li>
-      <li><%= link_to "Password", passwords_path %></li>
-      <li><%= link_to "Picture", passwords_path %></li>
+      <li><%= link_to "Password", passwords_path(@user) %></li>
+      <li><%= link_to "Picture", avatar_path(@user, @user) %></li>
     </ul>
   </div>
 </div>
config/routes.rb
@@ -38,13 +38,13 @@ Cake::Application.routes.draw do
   # /users
   devise_for :users, :controllers => {:registrations => 'registrations'}
   devise_for :user, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }
-  resources :avatars, :only => [:create]
 
   # sitemap
   match "/sitemap.xml", :to => "sitemap#index", :defaults => {:format => :xml}
 
   resources :settings, :only => [:index, :update]
   resources :passwords, :only => [:index, :update]
+  resources :avatars, :only => [:show, :create]
 
   ActiveAdmin.routes(self)