Merge all the user status changing methods into one
authorTom Hughes <tom@compton.nu>
Sat, 1 May 2010 17:28:41 +0000 (18:28 +0100)
committerTom Hughes <tom@compton.nu>
Thu, 6 May 2010 16:18:34 +0000 (17:18 +0100)
app/controllers/user_controller.rb
app/views/user/view.html.erb
config/routes.rb

index 839c94e3aa4521d12f99db54816ba4924f28e450..f24e1ee72c5c96f30d3fd1fad8d9952384b76cd6 100644 (file)
@@ -11,12 +11,12 @@ class UserController < ApplicationController
   before_filter :require_allow_read_prefs, :only => [:api_details]
   before_filter :require_allow_read_gpx, :only => [:api_gpx_files]
   before_filter :require_cookies, :only => [:login, :confirm]
-  before_filter :require_administrator, :only => [:activate, :deactivate, :confirm, :hide, :unhide, :delete]
-  before_filter :lookup_this_user, :only => [:activate, :deactivate, :confirm, :hide, :unhide, :delete]
+  before_filter :require_administrator, :only => [:set_status, :delete]
+  before_filter :lookup_this_user, :only => [:set_status, :delete]
 
   filter_parameter_logging :password, :pass_crypt, :pass_crypt_confirmation
 
-  cache_sweeper :user_sweeper, :only => [:account, :hide, :unhide, :delete]
+  cache_sweeper :user_sweeper, :only => [:account, :set_status, :delete]
 
   def save
     @title = t 'user.new.title'
@@ -314,37 +314,9 @@ class UserController < ApplicationController
   end
 
   ##
-  # activate a user, allowing them to log in
-  def activate
-    @this_user.update_attributes(:status => "active")
-    redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name]
-  end
-
-  ##
-  # deactivate a user, preventing them from logging in
-  def deactivate
-    @this_user.update_attributes(:status => "pending")
-    redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name]
-  end
-
-  ##
-  # confirm a user, overriding any suspension triggered by spam scoring
-  def confirm
-    @this_user.update_attributes(:status => "confirmed")
-    redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name]
-  end
-
-  ##
-  # hide a user, marking them as logically deleted
-  def hide
-    @this_user.update_attributes(:status => "deleted")
-    redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name]
-  end
-
-  ##
-  # unhide a user, clearing the logically deleted flag
-  def unhide
-    @this_user.update_attributes(:status => "active")
+  # sets a user's status
+  def set_status
+    @this_user.update_attributes(:status => params[:status])
     redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name]
   end
 
index b5890fca29164385bf3dc8f843de2712c4f59d05..2aca75f5322f26f75167ed1052b7f6d2b10473b3 100644 (file)
   <% if @user and @user.administrator? %>
     <br/>
     <% if ["active", "confirmed"].include? @this_user.status %>
-      <%= link_to t('user.view.deactivate_user'), {:controller => 'user', :action => 'deactivate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
+      <%= link_to t('user.view.deactivate_user'), {:controller => 'user', :action => 'set_status', :status => 'pending', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
     <% elsif ["pending"].include? @this_user.status %>
-      <%= link_to t('user.view.activate_user'), {:controller => 'user', :action => 'activate', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
+      <%= link_to t('user.view.activate_user'), {:controller => 'user', :action => 'set_status', :status => 'active', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
     <% end %>
     <% if ["active", "suspended"].include? @this_user.status %>
-      <%= link_to t('user.view.confirm_user'), {:controller => 'user', :action => 'confirm', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
+      <%= link_to t('user.view.confirm_user'), {:controller => 'user', :action => 'set_status', :status => 'confirmed', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
     <% end %>
     <% if ["pending", "active", "confirmed", "suspended"].include? @this_user.status %>
-      <%= link_to t('user.view.hide_user'), {:controller => 'user', :action => 'hide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
+      <%= link_to t('user.view.hide_user'), {:controller => 'user', :action => 'set_status', :status => 'deleted', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
     <% else %>
-      <%= link_to t('user.view.unhide_user'), {:controller => 'user', :action => 'unhide', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
+      <%= link_to t('user.view.unhide_user'), {:controller => 'user', :action => 'set_status', :status => 'active', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %> |
     <% end %>
     <%= link_to t('user.view.delete_user'), {:controller => 'user', :action => 'delete', :display_name => @this_user.display_name}, {:confirm => t('user.view.confirm')} %>
   <% end %>
index 9a7231041a4e8fff7f7d784481f4d69f3f37e660..82f4e3a9fb49391f8279cc2a85731abfa48a5d89 100644 (file)
@@ -158,11 +158,7 @@ ActionController::Routing::Routes.draw do |map|
   map.connect '/user/:display_name/diary/:id/hide', :controller => 'diary_entry', :action => 'hide', :id => /\d+/
   map.connect '/user/:display_name/diary/:id/hidecomment/:comment', :controller => 'diary_entry', :action => 'hidecomment', :id => /\d+/, :comment => /\d+/
   map.connect '/user/:display_name/account', :controller => 'user', :action => 'account'
-  map.connect '/user/:display_name/activate', :controller => 'user', :action => 'activate'
-  map.connect '/user/:display_name/deactivate', :controller => 'user', :action => 'deactivate'
-  map.connect '/user/:display_name/confirm', :controller => 'user', :action => 'confirm'
-  map.connect '/user/:display_name/hide', :controller => 'user', :action => 'hide'
-  map.connect '/user/:display_name/unhide', :controller => 'user', :action => 'unhide'
+  map.connect '/user/:display_name/set_status', :controller => 'user', :action => 'set_status'
   map.connect '/user/:display_name/delete', :controller => 'user', :action => 'delete'
   map.connect '/diary/new', :controller => 'diary_entry', :action => 'new'
   map.connect '/diary', :controller => 'diary_entry', :action => 'list'