]> source.dussan.org Git - redmine.git/commitdiff
Adds the "Hide my email address" option on the registration form (#21500).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 13 Dec 2015 15:39:09 +0000 (15:39 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 13 Dec 2015 15:39:09 +0000 (15:39 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@14976 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/account_controller.rb
app/views/account/register.html.erb
test/functional/account_controller_test.rb

index 3c318957b2d2e8e6a25a3b3637629fbf28fb2a2f..a4fad4b5c4d080bedbb9cf53566147fb584f9c3b 100644 (file)
@@ -122,6 +122,7 @@ class AccountController < ApplicationController
       user_params = params[:user] || {}
       @user = User.new
       @user.safe_attributes = user_params
+      @user.pref.attributes = params[:pref] if params[:pref]
       @user.admin = false
       @user.register
       if session[:auth_source_registration]
index f655514a326001203b836246bb6f9d6f11648e8e..0cd0d8cff972c4e7c66069578e8b9012fce98b8e 100644 (file)
 <p><%= f.text_field :firstname, :required => true %></p>
 <p><%= f.text_field :lastname, :required => true %></p>
 <p><%= f.text_field :mail, :required => true %></p>
+<%= labelled_fields_for :pref, @user.pref do |pref_fields| %>
+<p><%= pref_fields.check_box :hide_mail %></p>
+<% end %>
+
 
 <% unless @user.force_default_language? %>
 <p><%= f.select :language, lang_options_for_select %></p>
index 8dfda0f7ab7651e475fc5d7fdb9fd4e76cc5bae5..f308c935f447bb86c6e999402fd28f717c953a64 100644 (file)
@@ -247,6 +247,18 @@ class AccountControllerTest < ActionController::TestCase
     end
   end
 
+  def test_get_register_should_show_hide_mail_preference
+    get :register
+    assert_select 'input[name=?][checked=checked]', 'pref[hide_mail]'
+  end
+
+  def test_get_register_should_show_hide_mail_preference_with_setting_turned_off
+    with_settings :default_users_hide_mail => '0' do
+      get :register
+      assert_select 'input[name=?]:not([checked=checked])', 'pref[hide_mail]'
+    end
+  end
+
   # See integration/account_test.rb for the full test
   def test_post_register_with_registration_on
     with_settings :self_registration => '3' do
@@ -287,6 +299,22 @@ class AccountControllerTest < ActionController::TestCase
     end
   end
 
+  def test_post_register_should_create_user_with_hide_mail_preference
+    with_settings :default_users_hide_mail => '0' do
+      user = new_record(User) do
+        post :register, :user => {
+          :login => 'register',
+          :password => 'secret123', :password_confirmation => 'secret123',
+          :firstname => 'John', :lastname => 'Doe',
+          :mail => 'register@example.com'
+        }, :pref => {
+          :hide_mail => '1'
+        }
+      end
+      assert_equal true, user.pref.hide_mail
+    end
+  end
+
   def test_get_lost_password_should_display_lost_password_form
     get :lost_password
     assert_response :success