Commit d3ed5d2963ce38488bbbacaf147cdca9c356f8ce
Committed by
Antonio Terceiro
1 parent
e9c01b00
Exists in
master
and in
29 other branches
ActionItem628: send message in last language useb by user
Showing
5 changed files
with
46 additions
and
0 deletions
Show diff stats
app/controllers/public/account_controller.rb
... | ... | @@ -17,6 +17,7 @@ class AccountController < ApplicationController |
17 | 17 | return unless request.post? |
18 | 18 | self.current_user = User.authenticate(params[:user][:login], params[:user][:password]) if params[:user] |
19 | 19 | if logged_in? |
20 | + self.current_user.person.update_attribute(:last_lang, cookies[:lang]) | |
20 | 21 | if params[:remember_me] == "1" |
21 | 22 | self.current_user.remember_me |
22 | 23 | cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at } |
... | ... | @@ -60,6 +61,7 @@ class AccountController < ApplicationController |
60 | 61 | |
61 | 62 | # action to perform logout from the application |
62 | 63 | def logout |
64 | + self.current_user.person.update_attribute(:last_lang, cookies[:lang]) | |
63 | 65 | self.current_user.forget_me if logged_in? |
64 | 66 | cookies.delete :auth_token |
65 | 67 | reset_session | ... | ... |
app/models/person.rb
... | ... | @@ -12,6 +12,15 @@ class Person < Profile |
12 | 12 | Friendship.find(:all, :conditions => { :friend_id => person.id}).each { |friendship| friendship.destroy } |
13 | 13 | end |
14 | 14 | |
15 | + settings_items :last_lang, :type => :string | |
16 | + def last_lang | |
17 | + if self.data[:last_lang].nil? or self.data[:last_lang].empty? | |
18 | + Noosfero.default_locale | |
19 | + else | |
20 | + self.data[:last_lang] | |
21 | + end | |
22 | + end | |
23 | + | |
15 | 24 | def suggested_friend_groups |
16 | 25 | (friend_groups + [ _('friends'), _('work'), _('school'), _('family') ]).map {|i| i if !i.empty?}.compact.uniq |
17 | 26 | end | ... | ... |
script/task-notifier
1 | 1 | #!/usr/bin/env ruby |
2 | 2 | require File.dirname(__FILE__) + '/../config/environment' |
3 | +include GetText | |
4 | +ActionController::Base.init_gettext 'noosfero' | |
3 | 5 | |
4 | 6 | # when in production set RAILS_ENV to 'production' |
5 | 7 | |
6 | 8 | Person.with_pending_tasks.each do |p| |
9 | + set_locale_all p.last_lang | |
7 | 10 | PendingTaskNotifier.deliver_notification(p) |
8 | 11 | RAILS_DEFAULT_LOGGER.info('deliver notification for ' + p.identifier) |
9 | 12 | end | ... | ... |
test/functional/account_controller_test.rb
... | ... | @@ -279,6 +279,27 @@ class AccountControllerTest < Test::Unit::TestCase |
279 | 279 | assert_redirected_to :controller => 'profile_editor' |
280 | 280 | end |
281 | 281 | |
282 | + should 'save last lang after logout' do | |
283 | + user = create_user('save_lang').person | |
284 | + assert user.update_attribute(:last_lang, 'unknow') | |
285 | + assert_equal 'unknow', user.last_lang | |
286 | + login_as user.identifier | |
287 | + get :logout | |
288 | + user.reload | |
289 | + assert_not_equal 'unknow', user.last_lang | |
290 | + assert_equal @response.cookies[:lang], user.last_lang | |
291 | + end | |
292 | + | |
293 | + should 'save last lang after login' do | |
294 | + user = create_user('save_lang').person | |
295 | + assert user.update_attribute(:last_lang, 'unknow') | |
296 | + assert_equal 'unknow', user.last_lang | |
297 | + | |
298 | + post :login, :user => {:login => 'save_lang', :password => 'save_lang'} | |
299 | + | |
300 | + assert_not_equal 'unknow', Person['save_lang'].last_lang | |
301 | + end | |
302 | + | |
282 | 303 | ################################ |
283 | 304 | # # |
284 | 305 | # Enterprise activation tests # | ... | ... |
test/unit/person_test.rb
... | ... | @@ -376,4 +376,15 @@ class PersonTest < Test::Unit::TestCase |
376 | 376 | assert_equal p.pending_tasks_for_organization(c), c.tasks |
377 | 377 | end |
378 | 378 | |
379 | + should 'has default locale as last lang' do | |
380 | + p = create_user('user_lang_test').person | |
381 | + assert_equal Noosfero.default_locale, p.last_lang | |
382 | + end | |
383 | + | |
384 | + should 'be able to change last lang' do | |
385 | + p = create_user('user_lang_test').person | |
386 | + assert p.update_attribute(:last_lang, 'pt_BR') | |
387 | + assert_equal 'pt_BR', Person['user_lang_test'].last_lang | |
388 | + end | |
389 | + | |
379 | 390 | end | ... | ... |