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