Commit d3ed5d2963ce38488bbbacaf147cdca9c356f8ce
Committed by
Antonio Terceiro
1 parent
e9c01b00
Exists in
master
and in
23 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 | ... | ... |