diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index bbec0a4..cbc894d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -13,10 +13,11 @@ after_filter :store_location def set_locale - # session data takes precedence - if session[:locale] - # if locales data is present in the session use it - I18n.locale = session[:locale] + # parameter from url takes precedence + if params[:locale] + # if locales data is present in the parameter from url use it + # TODO we need to error to the user that locale is missing, it can be THE CASE because there can be a missmatch between locales files and db + I18n.locale = params[:locale] elsif false # TODO # if user has set preferred language use it elsif false # TODO @@ -27,6 +28,11 @@ end end + # Added setting for passing local params across pages + def default_url_options(options = {}) + { locale: I18n.locale }.merge options + end + def store_location # store last url - this is needed for post-login redirect to whatever the user last visited. if (request.fullpath != "/users/sign_in" && \ diff --git a/app/controllers/locales_controller.rb b/app/controllers/locales_controller.rb deleted file mode 100644 index 72f5aed..0000000 --- a/app/controllers/locales_controller.rb +++ /dev/null @@ -1,10 +0,0 @@ -class LocalesController < ApplicationController - - def change_session_locale - if params[:locale] - session[:locale] = params[:locale] - redirect_to :back - end - end - -end \ No newline at end of file diff --git a/app/views/layouts/_dmponline_navigation.html.erb b/app/views/layouts/_dmponline_navigation.html.erb index 507bbf6..67d4b16 100644 --- a/app/views/layouts/_dmponline_navigation.html.erb +++ b/app/views/layouts/_dmponline_navigation.html.erb @@ -91,8 +91,12 @@ <% Language.all.order("name ASC").each do |language|%> -
  • - <%= link_to language.name, :controller => 'locales', :action => 'change_session_locale', :locale => language.name %> + <% if I18n.locale == language.name %> +
  • + <% else %> +
  • + <% end %> + <%= link_to language.name, locale: language.name %>
  • <% end %> <%end%> diff --git a/config/routes.rb b/config/routes.rb index d02e796..bceac25 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,234 +1,231 @@ DMPonline4::Application.routes.draw do - - - devise_for :users, :controllers => {:registrations => "registrations", :confirmations => 'confirmations', :passwords => 'passwords', :sessions => 'sessions', :omniauth_callbacks => 'users/omniauth_callbacks'} do - get "/users/sign_out", :to => "devise/sessions#destroy" - end - resources :contacts, :controllers => {:contacts => 'contacts'} - - # WAYFless access point - use query param idp - get 'auth/shibboleth' => 'users/omniauth_shibboleth_request#redirect', :as => 'user_omniauth_shibboleth' - get 'auth/shibboleth/assoc' => 'users/omniauth_shibboleth_request#associate', :as => 'user_shibboleth_assoc' - - # You can have the root of your site routed with "root" - # just remember to delete public/index.html. - root :to => 'home#index' - - ActiveAdmin.routes(self) - get "about_us" => 'static_pages#about_us', :as => "about_us" get "help" => 'static_pages#help', :as => "help" get "news" => 'static_pages#news', :as => "news" get "terms" => 'static_pages#termsuse', :as => "terms" get "existing_users" => 'existing_users#index', :as => "existing_users" + devise_for :users, :controllers => {:registrations => "registrations", :confirmations => 'confirmations', :passwords => 'passwords', :sessions => 'sessions', :omniauth_callbacks => 'users/omniauth_callbacks'} do + get "/users/sign_out", :to => "devise/sessions#destroy" + end + + # WAYFless access point - use query param idp + get 'auth/shibboleth' => 'users/omniauth_shibboleth_request#redirect', :as => 'user_omniauth_shibboleth' + get 'auth/shibboleth/assoc' => 'users/omniauth_shibboleth_request#associate', :as => 'user_shibboleth_assoc' + + ActiveAdmin.routes(self) #organisation admin area get "org/admin/users" => 'organisation_users#admin_index', :as => "org/admin/users" - # locales session setting route - get '/set-locales/:locale', :controller => 'locales', :action => 'change_session_locale' + # You can have the root of your site routed with "root" + # just remember to delete public/index.html. + root :to => 'home#index' + get '/:locale' => 'home#index', :as => 'locale_root' - resources :organisations, :path => 'org/admin' do - member do - get 'children' - get 'templates' - get 'admin_show' - get 'admin_edit' - put 'admin_update' + scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do + resources :contacts, :controllers => {:contacts => 'contacts'} + resources :organisations, :path => 'org/admin' do + member do + get 'children' + get 'templates' + get 'admin_show' + get 'admin_edit' + put 'admin_update' + end end - end - resources :guidances, :path => 'org/admin/guidance' do - member do - get 'admin_show' - get 'admin_index' - get 'admin_edit' - get 'admin_new' - delete 'admin_destroy' - post 'admin_create' - put 'admin_update' + resources :guidances, :path => 'org/admin/guidance' do + member do + get 'admin_show' + get 'admin_index' + get 'admin_edit' + get 'admin_new' + delete 'admin_destroy' + post 'admin_create' + put 'admin_update' - get 'update_phases', :as => 'update_phases' - get 'update_versions', :as => 'update_versions' - get 'update_sections', :as => 'update_sections' - get 'update_questions', :as => 'update_questions' + get 'update_phases', :as => 'update_phases' + get 'update_versions', :as => 'update_versions' + get 'update_sections', :as => 'update_sections' + get 'update_questions', :as => 'update_questions' + end end - end - resources :guidance_groups, :path => 'org/admin/guidancegroup' do - member do - get 'admin_show' - get 'admin_new' - get 'admin_edit' - delete 'admin_destroy' - post 'admin_create' - put 'admin_update' + resources :guidance_groups, :path => 'org/admin/guidancegroup' do + member do + get 'admin_show' + get 'admin_new' + get 'admin_edit' + delete 'admin_destroy' + post 'admin_create' + put 'admin_update' + end end - end - resource :organisation + resource :organisation - #resources :splash_logs + #resources :splash_logs - resources :dmptemplates, :path => 'org/admin/templates' do - member do - get 'admin_index' - get 'admin_template' - get 'admin_new' - get 'admin_addphase' - get 'admin_phase' - get 'admin_previewphase' - get 'admin_cloneversion' - delete 'admin_destroy' - delete 'admin_destroyversion' - delete 'admin_destroyphase' - delete 'admin_destroysection' - delete 'admin_destroyquestion' - delete 'admin_destroysuggestedanswer' - post 'admin_create' - post 'admin_createphase' - post 'admin_createsection' - post 'admin_createquestion' - post 'admin_createsuggestedanswer' - put 'admin_update' - put 'admin_updatephase' - put 'admin_updateversion' - put 'admin_updatesection' - put 'admin_updatequestion' - put 'admin_updatesuggestedanswer' + resources :dmptemplates, :path => 'org/admin/templates' do + member do + get 'admin_index' + get 'admin_template' + get 'admin_new' + get 'admin_addphase' + get 'admin_phase' + get 'admin_previewphase' + get 'admin_cloneversion' + delete 'admin_destroy' + delete 'admin_destroyversion' + delete 'admin_destroyphase' + delete 'admin_destroysection' + delete 'admin_destroyquestion' + delete 'admin_destroysuggestedanswer' + post 'admin_create' + post 'admin_createphase' + post 'admin_createsection' + post 'admin_createquestion' + post 'admin_createsuggestedanswer' + put 'admin_update' + put 'admin_updatephase' + put 'admin_updateversion' + put 'admin_updatesection' + put 'admin_updatequestion' + put 'admin_updatesuggestedanswer' + end end - end - resources :phases - resources :versions - resources :sections - resources :questions - resources :question_themes + resources :phases + resources :versions + resources :sections + resources :questions + resources :question_themes - resources :themes + resources :themes - resources :answers - resources :plan_sections - resources :comments do - member do - put 'archive' + resources :answers + resources :plan_sections + resources :comments do + member do + put 'archive' + end end - end - resources :projects do - resources :plans do + resources :projects do + resources :plans do + member do + get 'status' + get 'locked' + get 'answer' + get 'edit' + post 'delete_recent_locks' + post 'lock_section' + post 'unlock_section' + post 'unlock_all_sections' + get 'export' + get 'warning' + get 'section_answers' + end + end + member do - get 'status' - get 'locked' - get 'answer' - get 'edit' - post 'delete_recent_locks' - post 'lock_section' - post 'unlock_section' - post 'unlock_all_sections' + get 'share' get 'export' - get 'warning' - get 'section_answers' + post 'invite' + post 'create' end - end - - member do - get 'share' - get 'export' - post 'invite' - post 'create' - end - collection do - get 'possible_templates' - get 'possible_guidance' - end - end - - - resources :project_partners - resources :project_groups - - resources :users - resources :user_statuses - resources :user_types - - resources :user_role_types - resources :user_org_roles - - - resources :organisation_types - resources :pages - - resources :file_types - resources :file_uploads - - namespace :settings do - resource :projects - resources :plans - end - - namespace :api, defaults: { format: :json } do - namespace :v0 do - resources :guidance_groups, only: [ :index, :show ] - resources :guidances, only: [ :index, :show ] - resources :plans, only: :create, controller: "projects", path: "plans" + collection do + get 'possible_templates' + get 'possible_guidance' end + end + + + resources :project_partners + resources :project_groups + + resources :users + resources :user_statuses + resources :user_types + + resources :user_role_types + resources :user_org_roles + + + resources :organisation_types + resources :pages + + resources :file_types + resources :file_uploads + + namespace :settings do + resource :projects + resources :plans + end + + namespace :api, defaults: { format: :json } do + namespace :v0 do + resources :guidance_groups, only: [ :index, :show ] + resources :guidances, only: [ :index, :show ] + resources :plans, only: :create, controller: "projects", path: "plans" + end + end + + get '/api' => redirect('/swagger/dist/index.html?url=/apidocs/api-docs.json') + + # The priority is based upon order of creation: + # first created -> highest priority. + + # Sample of regular route: + # match 'products/:id' => 'catalog#view' + # Keep in mind you can assign values other than :controller and :action + + # Sample of named route: + # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase + # This route can be invoked with purchase_url(:id => product.id) + + # Sample resource route (maps HTTP verbs to controller actions automatically): + # resources :products + + # Sample resource route with options: + # resources :products do + # member do + # get 'short' + # post 'toggle' + # end + # + # collection do + # get 'sold' + # end + # end + + # Sample resource route with sub-resources: + # resources :products do + # resources :comments, :sales + # resource :seller + # end + + # Sample resource route with more complex sub-resources + # resources :products do + # resources :comments + # resources :sales do + # get 'recent', :on => :collection + # end + # end + + # Sample resource route within a namespace: + # namespace :admin do + # # Directs /admin/products/* to Admin::ProductsController + # # (app/controllers/admin/products_controller.rb) + # resources :products + # end + + + # See how all your routes lay out with "rake routes" + + # This is a legacy wild controller route that's not recommended for RESTful applications. + # Note: This route will make all actions in every controller accessible via GET requests. + # match ':controller(/:action(/:id))(.:format)' end - - get '/api' => redirect('/swagger/dist/index.html?url=/apidocs/api-docs.json') - - # The priority is based upon order of creation: - # first created -> highest priority. - - # Sample of regular route: - # match 'products/:id' => 'catalog#view' - # Keep in mind you can assign values other than :controller and :action - - # Sample of named route: - # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase - # This route can be invoked with purchase_url(:id => product.id) - - # Sample resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Sample resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Sample resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Sample resource route with more complex sub-resources - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', :on => :collection - # end - # end - - # Sample resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end - - - # See how all your routes lay out with "rake routes" - - # This is a legacy wild controller route that's not recommended for RESTful applications. - # Note: This route will make all actions in every controller accessible via GET requests. - # match ':controller(/:action(/:id))(.:format)' end