]> git.openstreetmap.org Git - rails.git/blob - app/controllers/preferences/basic_preferences_controller.rb
Move basic preferences controller to preferences module
[rails.git] / app / controllers / preferences / basic_preferences_controller.rb
1 module Preferences
2   class BasicPreferencesController < ApplicationController
3     layout "site"
4
5     before_action :authorize_web
6     before_action :set_locale
7
8     authorize_resource :class => :preferences
9
10     before_action :check_database_readable
11     before_action :check_database_writable, :only => [:update]
12
13     def show; end
14
15     def update
16       current_user.languages = params[:user][:languages].split(",")
17
18       current_user.preferred_editor = if params[:user][:preferred_editor] == "default"
19                                         nil
20                                       else
21                                         params[:user][:preferred_editor]
22                                       end
23
24       success = current_user.save
25
26       if params[:site_color_scheme]
27         site_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "site.color_scheme")
28         success &= site_color_scheme_preference.update(:v => params[:site_color_scheme])
29       end
30
31       if params[:map_color_scheme]
32         map_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "map.color_scheme")
33         success &= map_color_scheme_preference.update(:v => params[:map_color_scheme])
34       end
35
36       if success
37         # Use a partial so that it is rendered during the next page load in the correct language.
38         flash[:notice] = { :partial => "update_success_flash" }
39         redirect_to basic_preferences_path
40       else
41         flash.now[:error] = t ".failure"
42         render :show
43       end
44     end
45   end
46 end