diff --git a/config/routes.rb b/config/routes.rb index e159fe45a..dcc26fff7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,126 +1,113 @@ ActionController::Routing::Routes.draw do |map| - # The priority is based upon order of creation: first created -> highest priority. - - # Sample of regular route: - # map.connect 'products/:id', :controller => 'catalog', :action => 'view' - # Keep in mind you can assign values other than :controller and :action - - # Sample of named route: - # map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase' - # This route can be invoked with purchase_url(:id => product.id) - - # You can have the root of your site routed by hooking up '' - # -- just remember to delete public/index.html. - # map.connect '', :controller => "welcome" map.oai '/oai_pmh_repository', :controller => 'oai_pmh_repository', :action => 'index' - # Kieran Pilkington, 2008-09-03 - # Got to have these above the default routes or it will error - # when it looks for a contact controller - map.basket_contact ':urlified_name/contact', :controller => "baskets", :action => 'contact' - - # Walter McGinnis, 2007-01-08 - # TODO: DRY this up - map.basket_with_format ':urlified_name/:controller/:action/:id.:format' - map.basket ':urlified_name/:controller/:action/:id' + ### monitoring tools + map.with_options :controller => 'index_page' do |index_page| + # to make sure the rails process is answering + index_page.connect 'uptime.txt', :action => 'uptime' + # to make sure that the db is answering + index_page.connect 'db_uptime.txt', :action => 'db_uptime' + # to make sure that the db is answering + index_page.connect 'zebra_uptime.txt', :action => 'zebra_uptime' + # to make sure that registration is valid + index_page.connect 'validate_kete_net_link.xml', :action => 'validate_kete_net_link' + # for search engines, ask them not to go to certain places + index_page.connect 'robots.txt', :action => 'robots' + end - # Kieran Pilkington, 2008-12-09 - # adding support for basket list feed - map.basket_list_rss ':urlified_name/baskets/rss.:format', :controller => "baskets", :action => 'rss' + # Various RSS feeds not associated with search + map.with_options :action => "rss" do |rss| + rss.basket_list_rss ':urlified_name/baskets/rss.:format', :controller => "baskets" + rss.tags_list_rss ':urlified_name/tags/rss.:format', :controller => "tags" + rss.basket_moderate_rss ':urlified_name/moderate/rss.:format', :controller => "moderate" + rss.basket_moderate_rss ':urlified_name/members/rss.:format', :controller => "members" + end - # Kieran Pilkington, 2008-12-09 - # adding support for tags list feed - map.tags_list_rss ':urlified_name/tags/rss.:format', :controller => "tags", :action => 'rss' + # All search related routes (all, rss, for) + map.with_options :controller => 'search' do |search| + + search.with_options :action => 'all' do |search_all| + search_all.basket_all ':urlified_name/all/:controller_name_for_zoom_class/' + search_all.basket_all_private ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/' + search_all.basket_all_contributed_by ':urlified_name/all/:controller_name_for_zoom_class/contributed_by/user/:contributor/' + search_all.basket_all_private_contributed_by ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/' + search_all.basket_all_of_category ':urlified_name/all/:controller_name_for_zoom_class/of/:extended_field/:limit_to_choice' + search_all.basket_all_private_of_category ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/of/:extended_field/:limit_to_choice' + search_all.basket_all_related_to ':urlified_name/all/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/' + search_all.basket_all_tagged ':urlified_name/all/:controller_name_for_zoom_class/tagged/:tag/' + search_all.basket_all_private_tagged ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/' + end + + search.with_options :action => 'rss' do |search_rss| + search_rss.basket_all_rss ':urlified_name/all/:controller_name_for_zoom_class/rss.xml' + search_rss.basket_all_private_rss ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/rss.xml' + search_rss.basket_all_contributed_by_rss ':urlified_name/all/:controller_name_for_zoom_class/contributed_by/user/:contributor/rss.xml' + search_rss.basket_all_private_contributed_by_rss ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/rss.xml' + search_rss.basket_all_related_to_rss ':urlified_name/all/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/rss.xml' + search_rss.basket_all_tagged_rss ':urlified_name/all/:controller_name_for_zoom_class/tagged/:tag/rss.xml' + search_rss.basket_all_private_tagged_rss ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/rss.xml' + search_rss.basket_search_contributed_by_rss ':urlified_name/search/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug/rss.xml' + search_rss.basket_search_private_contributed_by_rss ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug/rss.xml' + search_rss.basket_search_related_to_rss ':urlified_name/search/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/for/:search_terms_slug/rss.xml' + search_rss.basket_search_tagged_rss ':urlified_name/search/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug/rss.xml' + search_rss.basket_search_private_tagged_rss ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug/rss.xml' + search_rss.basket_search_rss ':urlified_name/search/:controller_name_for_zoom_class/for/:search_terms_slug/rss.xml' + search_rss.basket_search_private_rss ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/for/:search_terms_slug/rss.xml' + end + + search.with_options :action => 'for' do |search_for| + search_for.basket_search_contributed_by ':urlified_name/search/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug' + search_for.basket_search_private_contributed_by ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug' + search_for.basket_search_related_to ':urlified_name/search/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/for/:search_terms_slug' + search_for.basket_search_tagged ':urlified_name/search/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug' + search_for.basket_search_private_tagged ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug' + search_for.basket_search ':urlified_name/search/:controller_name_for_zoom_class/for/:search_terms_slug' + search_for.basket_search_private ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/for/:search_terms_slug' + + search_for.with_options :search_terms => nil do |nil_search_terms| + nil_search_terms.basket_search_contributed_by_empty ':urlified_name/search/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug' + nil_search_terms.basket_search_private_contributed_by_empty ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug' + nil_search_terms.basket_search_related_to_empty ':urlified_name/search/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/for' + nil_search_terms.basket_search_tagged_empty ':urlified_name/search/:controller_name_for_zoom_class/tagged/:tag/for' + nil_search_terms.basket_search_private_tagged_empty ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/for' + nil_search_terms.basket_search_empty ':urlified_name/search/:controller_name_for_zoom_class/for' + nil_search_terms.basket_search_private_empty ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/for' + end + end - # Walter McGinnis, 2007-12-12 - # adding support for moderator feed - map.basket_moderate_rss ':urlified_name/moderate/rss.:format', :controller => "moderate", :action => 'rss' + end - # Walter McGinnis, 2008-05-25 - # adding support for basket members feed - map.basket_moderate_rss ':urlified_name/members/rss.:format', :controller => "members", :action => 'rss' + # active_scaffold routes + ACTIVE_SCAFFOLD_CONTROLLERS.each do |as_controller| + map.resources as_controller.to_sym, :active_scaffold => true + end map.basket_index ':urlified_name', :controller => "index_page", :action => 'index' - - map.basket_all_rss ':urlified_name/all/:controller_name_for_zoom_class/rss.xml', :controller => "search", :action => 'rss' - map.basket_all_private_rss ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/rss.xml', :controller => "search", :action => 'rss' - - map.basket_all ':urlified_name/all/:controller_name_for_zoom_class/', :controller => "search", :action => 'all' - map.basket_all_private ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/', :controller => "search", :action => 'all' - - map.basket_all_contributed_by_rss ':urlified_name/all/:controller_name_for_zoom_class/contributed_by/user/:contributor/rss.xml', :controller => "search", :action => 'rss' - map.basket_all_private_contributed_by_rss ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/rss.xml', :controller => "search", :action => 'rss' - - map.basket_all_contributed_by ':urlified_name/all/:controller_name_for_zoom_class/contributed_by/user/:contributor/', :controller => "search", :action => 'all' - map.basket_all_private_contributed_by ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/', :controller => "search", :action => 'all' - - map.basket_all_of_category ':urlified_name/all/:controller_name_for_zoom_class/of/:extended_field/:limit_to_choice', :controller => "search", :action => 'all' - map.basket_all_private_of_category ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/of/:extended_field/:limit_to_choice', :controller => "search", :action => 'all' - - map.basket_all_related_to_rss ':urlified_name/all/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/rss.xml', :controller => "search", :action => 'rss' - - map.basket_all_related_to ':urlified_name/all/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/', :controller => "search", :action => 'all' - - map.basket_all_tagged_rss ':urlified_name/all/:controller_name_for_zoom_class/tagged/:tag/rss.xml', :controller => "search", :action => 'rss' - map.basket_all_private_tagged_rss ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/rss.xml', :controller => "search", :action => 'rss' - - map.basket_all_tagged ':urlified_name/all/:controller_name_for_zoom_class/tagged/:tag/', :controller => "search", :action => 'all' - map.basket_all_private_tagged ':urlified_name/all/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/', :controller => "search", :action => 'all' - - map.basket_search_contributed_by_rss ':urlified_name/search/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug/rss.xml', :controller => "search", :action => 'rss' - map.basket_search_private_contributed_by_rss ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug/rss.xml', :controller => "search", :action => 'rss' - - map.basket_search_contributed_by ':urlified_name/search/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug', :controller => "search", :action => 'for' - map.basket_search_private_contributed_by ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug', :controller => "search", :action => 'for' - - map.basket_search_contributed_by_empty ':urlified_name/search/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug', :controller => "search", :action => 'for', :search_terms => nil - map.basket_search_private_contributed_by_empty ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/contributed_by/user/:contributor/for/:search_terms_slug', :controller => "search", :action => 'for', :search_terms => nil - - map.basket_search_related_to_rss ':urlified_name/search/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/for/:search_terms_slug/rss.xml', :controller => "search", :action => 'rss' - - map.basket_search_related_to ':urlified_name/search/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/for/:search_terms_slug', :controller => "search", :action => 'for' - - map.basket_search_related_to_empty ':urlified_name/search/:controller_name_for_zoom_class/related_to/:source_controller_singular/:source_item/for', :controller => "search", :action => 'for', :search_terms => nil - - map.basket_search_tagged_rss ':urlified_name/search/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug/rss.xml', :controller => "search", :action => 'rss' - map.basket_search_private_tagged_rss ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug/rss.xml', :controller => "search", :action => 'rss' - - map.basket_search_tagged ':urlified_name/search/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug', :controller => "search", :action => 'for' - map.basket_search_private_tagged ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/for/:search_terms_slug', :controller => "search", :action => 'for' - - map.basket_search_tagged_empty ':urlified_name/search/:controller_name_for_zoom_class/tagged/:tag/for', :controller => "search", :action => 'for', :search_terms => nil - map.basket_search_private_tagged_empty ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/tagged/:tag/for', :controller => "search", :action => 'for', :search_terms => nil - - map.basket_search_rss ':urlified_name/search/:controller_name_for_zoom_class/for/:search_terms_slug/rss.xml', :controller => "search", :action => 'rss' - map.basket_search_private_rss ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/for/:search_terms_slug/rss.xml', :controller => "search", :action => 'rss' - - map.basket_search ':urlified_name/search/:controller_name_for_zoom_class/for/:search_terms_slug', :controller => "search", :action => 'for' - map.basket_search_private ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/for/:search_terms_slug', :controller => "search", :action => 'for' - - map.basket_search_empty ':urlified_name/search/:controller_name_for_zoom_class/for', :controller => "search", :action => 'for', :search_terms => nil - map.basket_search_private_empty ':urlified_name/search/:privacy_type/:controller_name_for_zoom_class/for', :controller => "search", :action => 'for', :search_terms => nil + map.basket_contact ':urlified_name/contact', :controller => "baskets", :action => 'contact' # James Stradling , 2008-04-15 # Map private files to the PrivateFilesController # E.g. /documents/0000/0000/0011/Bio.txt map.private_file '/:type/:a/:b/:c/:filename.*formats', :controller => "private_files", :action => 'show' - # will default to site basket (special case of basket) - # route site to search with DEFAULT_SEARCH_CLASS - # :all is true by default if there are no search_terms - map.connect '/search', :controller => "search" + # Catch everything else + map.basket_with_format ':urlified_name/:controller/:action/:id.:format' + map.basket ':urlified_name/:controller/:action/:id' # Walter McGinnis, 2007-07-13 # if the site isn't configured, we don't setup our full routes - if Object.const_defined?('SystemSetting') and ActiveRecord::Base.connection.table_exists?('system_settings') and SystemSetting.find(:all).size > 0 + skip_configuration = Object.const_defined?(:SKIP_SYSTEM_CONFIGURATION) + is_configured = false + if !skip_configuration && + Object.const_defined?('SystemSetting') && + ActiveRecord::Base.connection.table_exists?('system_settings') && + SystemSetting.find(:all).size > 0 is_configured = eval(SystemSetting.find_by_name('Is Configured').value) - else - is_configured = false end - if is_configured || Object.const_defined?(:SKIP_SYSTEM_CONFIGURATION) + if skip_configuration || is_configured # comment this line and uncomment the next after initial migration - site_basket = Basket.find(1) + site_basket = Basket.find(1) unless skip_configuration # we skip a query here if running integration tests site_urlified_name = !site_basket.nil? ? site_basket.urlified_name : 'site' map.connect '', :controller => "index_page", :urlified_name => site_urlified_name else @@ -128,33 +115,6 @@ map.connect '', :controller => "configure", :urlified_name => 'site' end - # active_scaffold routes - ACTIVE_SCAFFOLD_CONTROLLERS.each do |as_controller| - map.resources as_controller.to_sym, :active_scaffold => true - end - - # Allow downloading Web Service WSDL as a file with an extension - # instead of a file named 'wsdl' - # map.connect ':controller/service.wsdl', :action => 'wsdl' - - # default format route - # map.connect ':controller/:action/:id.:format' - - # Install the default route as the lowest priority. - # map.connect ':controller/:action/:id' - - ### monitoring tools - # to make sure the rails process is answering - map.connect 'uptime.txt', :controller => "index_page", :action => 'uptime' - # to make sure that the db is answering - map.connect 'db_uptime.txt', :controller => "index_page", :action => 'db_uptime' - # to make sure that the db is answering - map.connect 'zebra_uptime.txt', :controller => "index_page", :action => 'zebra_uptime' - # to make sure that registration is valid - map.connect 'validate_kete_net_link.xml', :controller => "index_page", :action => 'validate_kete_net_link' - # for search engines, ask them not to go to certain places - map.connect 'robots.txt', :controller => "index_page", :action => 'robots' - map.connect '*path', :controller => 'application', :action => 'rescue_404' unless ActionController::Base.consider_all_requests_local end