]> source.dussan.org Git - redmine.git/commitdiff
Refactor: move method to model
authorEric Davis <edavis@littlestreamsoftware.com>
Tue, 28 Sep 2010 22:13:11 +0000 (22:13 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Tue, 28 Sep 2010 22:13:11 +0000 (22:13 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4224 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/my_controller.rb
app/controllers/users_controller.rb
app/models/user.rb

index e430cab0e5fc41ed73d4df538b236dc842f84199..46747b33464b4aa06a1586ad2dacfd29446952b3 100644 (file)
@@ -66,13 +66,7 @@ class MyController < ApplicationController
         return
       end
     end
-    @notification_options = User::MAIL_NOTIFICATION_OPTIONS
-    # Only users that belong to more than 1 project can select projects for which they are notified
-    # Note that @user.membership.size would fail since AR ignores
-    # :include association option when doing a count
-    if @user.memberships.length < 1
-      @notification_options.delete_if {|option| option.first == :selected}
-    end
+    @notification_options = @user.valid_notification_options
     @notification_option = @user.mail_notification #? ? 'all' : (@user.notified_projects_ids.empty? ? 'none' : 'selected')    
   end
 
index fb7a0e10d83340708217f4cb3a299655a44664ac..3fb11103d665b00efde2c2270a8bb7ed251b0304 100644 (file)
@@ -77,14 +77,6 @@ class UsersController < ApplicationController
 
     @user = User.new(:language => Setting.default_language)
     @auth_sources = AuthSource.find(:all)
-
-    # TODO: Similar to My#account
-    # Only users that belong to more than 1 project can select projects for which they are notified
-    # Note that @user.membership.size would fail since AR ignores
-    # :include association option when doing a count
-    if @user.memberships.length < 1
-      @notification_options.delete_if {|option| option.first == :selected}
-    end
   end
   
   verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
@@ -121,14 +113,7 @@ class UsersController < ApplicationController
 
   def edit
     @user = User.find(params[:id])
-    # TODO: Similar to My#account
-    @notification_options = User::MAIL_NOTIFICATION_OPTIONS
-    # Only users that belong to more than 1 project can select projects for which they are notified
-    # Note that @user.membership.size would fail since AR ignores
-    # :include association option when doing a count
-    if @user.memberships.length < 1
-      @notification_options.delete_if {|option| option.first == :selected}
-    end
+    @notification_options = @user.valid_notification_options
     @notification_option = @user.mail_notification
 
     if request.post?
index 481c832b4b9e14fc4655f96557c7c03ae67dd098..638e5f7bddbbe74789fe38c050e736fba1ebeed5 100644 (file)
@@ -259,6 +259,17 @@ class User < Principal
     notified_projects_ids
   end
 
+  # Only users that belong to more than 1 project can select projects for which they are notified
+  def valid_notification_options
+    # Note that @user.membership.size would fail since AR ignores
+    # :include association option when doing a count
+    if memberships.length < 1
+      MAIL_NOTIFICATION_OPTIONS.delete_if {|option| option.first == :selected}
+    else
+      MAIL_NOTIFICATION_OPTIONS
+    end
+  end
+
   # Find a user account by matching the exact login and then a case-insensitive
   # version.  Exact matches will be given priority.
   def self.find_by_login(login)