ActionController::Routing::Routes.draw do |map| # Connect for single and multiple project installations def multiconnect(obj, path = '', options = {}) name = options.delete(:route_name) || 'connect' obj.send(name, PROJECT_ROUTE + path, options) obj.send(name, path, options) end map.home '', :controller => 'projects', :action => 'index' map.project PROJECT_ROUTE, :controller => 'project_area', :action => 'guide', :project_name => nil map.admin 'admin', :controller => 'admin/dashboard' map.namespace :admin do |admin| admin.resources :projects, :member => [:delete], :collection => [:validate_path_of, :preview_project_info, :markup_reference] do |projects| projects.resources :milestones, :collection => [:sort, :preview_milestone_info, :markup_reference] projects.resources :reports, :collection => [:sort, :update_filter_selector] projects.resources :ticket_properties, :collection => [:sort] do |property_types| property_types.resources :values, :controller => 'ticket_property_values', :collection => [:sort] end end admin.resources :repositories, :collection => [:validate] admin.resources :users admin.resources :groups admin.tasks 'tasks', :controller => 'tasks' admin.setup 'setup', :controller => 'setup' admin.extensions 'extensions', :controller => 'extensions' end map.with_options :controller => 'login' do |omap| omap.login 'login', :action => 'login' omap.logout 'logout', :action => 'logout' end map.with_options :controller => 'account' do |omap| omap.account 'account', :action => 'account' omap.registration 'register', :action => 'register' omap.reset_password 'reset_password', :action => 'reset_password' omap.activation 'account/activate/:login/:code', :action => 'activate', :login => nil, :code => nil end map.with_options :controller => 'rss' do |omap| multiconnect omap, 'rss/:category', :action => 'feed' end map.with_options :controller => 'browse' do |omap| multiconnect omap, 'browse/*path', :action => 'browse' multiconnect omap, 'file/*path', :action => 'file' multiconnect omap, 'revisions/*path', :action => 'revisions' multiconnect omap, 'diff/*path', :action => 'visual_diff' end map.with_options :controller => 'changesets' do |omap| multiconnect omap, 'changesets/', :action => 'changesets' multiconnect omap, 'changeset/:revision', :action => 'changeset' end map.with_options :controller => 'tickets' do |omap| multiconnect omap, 'ticket/:id', :action => 'show' multiconnect omap, 'tickets/report/:report', :action => 'index' multiconnect omap, 'tickets/attachment/:id/:mode/:filename', :action => 'attachment', :requirements => {:filename => /.+/} end map.with_options :controller => 'admin/ticket_properties' do |omap| omap.connect 'admin/ticket_properties/edit_global/:type/:id', :action => 'edit_global' omap.connect 'admin/ticket_properties/delete_global/:type/:id', :action => 'delete_global' end multiconnect map, ':controller/:action/:id.:format' multiconnect map, ':controller/:action/:id' map.connect ':project_name/', :controller => 'project_area', :action => 'guide' end