]> git.openstreetmap.org Git - rails.git/blob - app/controllers/preferences/basic_preferences_controller.rb
Merge remote-tracking branch 'upstream/pull/6102'
[rails.git] / app / controllers / preferences / basic_preferences_controller.rb
1 module Preferences
2   class BasicPreferencesController < PreferencesController
3     private
4
5     def update_preferences
6       if params[:language] != I18n.locale.to_s
7         matching_languages, other_languages = current_user.languages.partition do |language|
8           Locale.available.preferred(Locale.list([language]), :default => nil).to_s == params[:language]
9         end
10
11         current_user.languages = [params[:language]]
12
13         current_user.languages += (matching_languages - [params[:language]]) + other_languages unless matching_languages.empty?
14       end
15
16       current_user.preferred_editor = if params[:user][:preferred_editor] == "default"
17                                         nil
18                                       else
19                                         params[:user][:preferred_editor]
20                                       end
21
22       success = current_user.save
23
24       if params[:site_color_scheme]
25         site_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "site.color_scheme")
26         success &= site_color_scheme_preference.update(:v => params[:site_color_scheme])
27       end
28
29       if params[:map_color_scheme]
30         map_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "map.color_scheme")
31         success &= map_color_scheme_preference.update(:v => params[:map_color_scheme])
32       end
33
34       success
35     end
36   end
37 end