]> source.dussan.org Git - redmine.git/commitdiff
Fixed that locking and unlocking a user resets the email notification checkbox (...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 13 May 2013 16:38:08 +0000 (16:38 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 13 May 2013 16:38:08 +0000 (16:38 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11839 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/my_controller.rb
app/controllers/users_controller.rb
app/models/mailer.rb
app/models/user_preference.rb
app/views/users/_mail_notifications.html.erb
test/functional/admin_controller_test.rb
test/functional/users_controller_test.rb
test/unit/mailer_test.rb

index 84f5b20ca671a4a47627fe277fb6264301efa849..92853067bbb125605560ab94e99762beb4d69155 100644 (file)
@@ -53,7 +53,6 @@ class MyController < ApplicationController
     if request.post?
       @user.safe_attributes = params[:user]
       @user.pref.attributes = params[:pref]
-      @user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
       if @user.save
         @user.pref.save
         @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
index 2cc43919ca415c60ce584cf66ac15a8d7cf4f4b0..5dd154dc07684b61f7f92afd4c1c1a3caf414bde 100644 (file)
@@ -93,7 +93,6 @@ class UsersController < ApplicationController
 
     if @user.save
       @user.pref.attributes = params[:pref]
-      @user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
       @user.pref.save
       @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
 
@@ -139,7 +138,6 @@ class UsersController < ApplicationController
     was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE])
     # TODO: Similar to My#account
     @user.pref.attributes = params[:pref]
-    @user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
 
     if @user.save
       @user.pref.save
index 7166025c2ed78d7daf4814eecfdd33456bd7db2a..c12195a02d52812e20e819d2b7c6f83082ab4b36 100644 (file)
@@ -390,7 +390,7 @@ class Mailer < ActionMailer::Base
 
     # Removes the author from the recipients and cc
     # if he doesn't want to receive notifications about what he does
-    if @author && @author.logged? && @author.pref[:no_self_notified]
+    if @author && @author.logged? && @author.pref.no_self_notified
       headers[:to].delete(@author.mail) if headers[:to].is_a?(Array)
       headers[:cc].delete(@author.mail) if headers[:cc].is_a?(Array)
     end
index 56cbe763a1aac1358b8eff6f8553de16155694dc..37d114ab5b355d228950a0b9f8cd1a170313a564 100644 (file)
@@ -56,4 +56,7 @@ class UserPreference < ActiveRecord::Base
 
   def warn_on_leaving_unsaved; self[:warn_on_leaving_unsaved] || '1'; end
   def warn_on_leaving_unsaved=(value); self[:warn_on_leaving_unsaved]=value; end
+
+  def no_self_notified; (self[:no_self_notified] == true || self[:no_self_notified] == '1'); end
+  def no_self_notified=(value); self[:no_self_notified]=value; end
 end
index 179f6749a65c2e96f4cc687327b5cf4af595cada..a31f6304babae88a3f6dd65e85753773ef015aa0 100644 (file)
       end %>
   <p><em class="info"><%= l(:text_user_mail_option) %></em></p>
 <% end %>
+
+<%= fields_for :pref, @user.pref do |pref_fields| %>
 <p>
-  <label>
-    <%= l(:label_user_mail_no_self_notified) %>
-    <%= check_box_tag 'no_self_notified', 1, @user.pref[:no_self_notified] %>
-  </label>
+  <%= pref_fields.check_box :no_self_notified %>
+  <label for="pref_no_self_notified"><%= l(:label_user_mail_no_self_notified) %></label>
 </p>
+<% end %>
index 48f3aad55abae68ed9c6aebe837f5c4b26dc2e4e..794775c0c5e8473e1f60860e37c105f9fd05a131 100644 (file)
@@ -83,7 +83,7 @@ class AdminControllerTest < ActionController::TestCase
 
   def test_test_email
     user = User.find(1)
-    user.pref[:no_self_notified] = '1'
+    user.pref.no_self_notified = '1'
     user.pref.save!
     ActionMailer::Base.deliveries.clear
 
index 65aa2d7c0885fade87abaabc6b70bd485d60597d..bf8f444af833a3b34e879ca93185b6a9f93bcf3d 100644 (file)
@@ -380,6 +380,18 @@ class UsersControllerTest < ActionController::TestCase
     assert_equal [1, 2], u.notified_projects_ids.sort
   end
 
+  def test_update_status_should_not_update_attributes
+    user = User.find(2)
+    user.pref[:no_self_notified] = '1'
+    user.pref.save
+
+    put :update, :id => 2, :user => {:status => 3}
+    assert_response 302
+    user = User.find(2)
+    assert_equal 3, user.status
+    assert_equal '1', user.pref[:no_self_notified]
+  end
+
   def test_destroy
     assert_difference 'User.count', -1 do
       delete :destroy, :id => 2
index 7c4406297b5e606afba9c76d72535b5c1d1b444f..c1b6ba6ac976d472a58babe21d51930f9dbf5146 100644 (file)
@@ -215,14 +215,14 @@ class MailerTest < ActiveSupport::TestCase
     # Remove members except news author
     news.project.memberships.each {|m| m.destroy unless m.user == user}
 
-    user.pref[:no_self_notified] = false
+    user.pref.no_self_notified = false
     user.pref.save
     User.current = user
     Mailer.news_added(news.reload).deliver
     assert_equal 1, last_email.bcc.size
 
     # nobody to notify
-    user.pref[:no_self_notified] = true
+    user.pref.no_self_notified = true
     user.pref.save
     User.current = user
     ActionMailer::Base.deliveries.clear
@@ -296,7 +296,7 @@ class MailerTest < ActiveSupport::TestCase
     issue = Issue.find(1)
     user = User.find(9)
     # minimal email notification options
-    user.pref[:no_self_notified] = '1'
+    user.pref.no_self_notified = '1'
     user.pref.save
     user.mail_notification = false
     user.save