routes.rb
391 lines
| 20.8 KiB
| text/x-ruby
|
RubyLexer
/ config / routes.rb
|
r2 | ActionController::Routing::Routes.draw do |map| | ||
# Add your own custom routes here. | ||||
# The priority is based upon order of creation: first created -> highest priority. | ||||
|
r6340 | |||
|
r2 | # Here's a sample route: | ||
# map.connect 'products/:id', :controller => 'catalog', :action => 'view' | ||||
# Keep in mind you can assign values other than :controller and :action | ||||
|
r8042 | map.home '', :controller => 'welcome', :conditions => {:method => :get} | ||
|
r6340 | |||
|
r8244 | map.signin 'login', :controller => 'account', :action => 'login', | ||
:conditions => {:method => [:get, :post]} | ||||
map.signout 'logout', :controller => 'account', :action => 'logout', | ||||
:conditions => {:method => :get} | ||||
map.connect 'account/register', :controller => 'account', :action => 'register', | ||||
:conditions => {:method => [:get, :post]} | ||||
map.connect 'account/lost_password', :controller => 'account', :action => 'lost_password', | ||||
:conditions => {:method => [:get, :post]} | ||||
map.connect 'account/activate', :controller => 'account', :action => 'activate', | ||||
:conditions => {:method => :get} | ||||
|
r6340 | |||
|
r8298 | map.connect 'projects/:id/wiki', :controller => 'wikis', | ||
:action => 'edit', :conditions => {:method => :post} | ||||
map.connect 'projects/:id/wiki/destroy', :controller => 'wikis', | ||||
:action => 'destroy', :conditions => {:method => [:get, :post]} | ||||
|
r6340 | |||
|
r2315 | map.with_options :controller => 'messages' do |messages_routes| | ||
messages_routes.with_options :conditions => {:method => :get} do |messages_views| | ||||
messages_views.connect 'boards/:board_id/topics/new', :action => 'new' | ||||
messages_views.connect 'boards/:board_id/topics/:id', :action => 'show' | ||||
messages_views.connect 'boards/:board_id/topics/:id/edit', :action => 'edit' | ||||
end | ||||
messages_routes.with_options :conditions => {:method => :post} do |messages_actions| | ||||
messages_actions.connect 'boards/:board_id/topics/new', :action => 'new' | ||||
|
r8042 | messages_actions.connect 'boards/:board_id/topics/preview', :action => 'preview' | ||
|
r8379 | messages_actions.connect 'boards/:board_id/topics/quote/:id', :action => 'quote' | ||
|
r2315 | messages_actions.connect 'boards/:board_id/topics/:id/replies', :action => 'reply' | ||
|
r8190 | messages_actions.connect 'boards/:board_id/topics/:id/edit', :action => 'edit' | ||
messages_actions.connect 'boards/:board_id/topics/:id/destroy', :action => 'destroy' | ||||
|
r2315 | end | ||
end | ||||
|
r6340 | |||
|
r3927 | # Misc issue routes. TODO: move into resources | ||
|
r8307 | map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', | ||
:action => 'issues', :conditions => { :method => :get } | ||||
|
r8308 | # TODO: would look nicer as /issues/:id/preview | ||
|
r8766 | map.preview_new_issue '/issues/preview/new/:project_id', :controller => 'previews', | ||
:action => 'issue' | ||||
map.preview_edit_issue '/issues/preview/edit/:id', :controller => 'previews', | ||||
:action => 'issue' | ||||
|
r8309 | map.issues_context_menu '/issues/context_menu', | ||
:controller => 'context_menus', :action => 'issues' | ||||
|
r3920 | map.issue_changes '/issues/changes', :controller => 'journals', :action => 'index' | ||
|
r8253 | map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new', | ||
:id => /\d+/, :conditions => { :method => :post } | ||||
|
r8065 | |||
|
r8253 | map.connect '/journals/diff/:id', :controller => 'journals', :action => 'diff', | ||
:id => /\d+/, :conditions => { :method => :get } | ||||
map.connect '/journals/edit/:id', :controller => 'journals', :action => 'edit', | ||||
:id => /\d+/, :conditions => { :method => [:get, :post] } | ||||
|
r3927 | |||
|
r5156 | map.with_options :controller => 'gantts', :action => 'show' do |gantts_routes| | ||
gantts_routes.connect '/projects/:project_id/issues/gantt' | ||||
|
r5160 | gantts_routes.connect '/projects/:project_id/issues/gantt.:format' | ||
gantts_routes.connect '/issues/gantt.:format' | ||||
|
r5156 | end | ||
|
r6340 | |||
|
r5156 | map.with_options :controller => 'calendars', :action => 'show' do |calendars_routes| | ||
calendars_routes.connect '/projects/:project_id/issues/calendar' | ||||
calendars_routes.connect '/issues/calendar' | ||||
end | ||||
|
r3927 | |||
map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports| | ||||
reports.connect 'projects/:id/issues/report', :action => 'issue_report' | ||||
reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details' | ||||
|
r2315 | end | ||
|
r3822 | |||
|
r8248 | map.connect 'my/account', :controller => 'my', :action => 'account', | ||
:conditions => {:method => [:get, :post]} | ||||
map.connect 'my/page', :controller => 'my', :action => 'page', | ||||
:conditions => {:method => :get} | ||||
# Redirects to my/page | ||||
map.connect 'my', :controller => 'my', :action => 'index', | ||||
:conditions => {:method => :get} | ||||
map.connect 'my/reset_rss_key', :controller => 'my', :action => 'reset_rss_key', | ||||
:conditions => {:method => :post} | ||||
map.connect 'my/reset_api_key', :controller => 'my', :action => 'reset_api_key', | ||||
:conditions => {:method => :post} | ||||
map.connect 'my/password', :controller => 'my', :action => 'password', | ||||
:conditions => {:method => [:get, :post]} | ||||
map.connect 'my/page_layout', :controller => 'my', :action => 'page_layout', | ||||
:conditions => {:method => :get} | ||||
map.connect 'my/add_block', :controller => 'my', :action => 'add_block', | ||||
:conditions => {:method => :post} | ||||
map.connect 'my/remove_block', :controller => 'my', :action => 'remove_block', | ||||
:conditions => {:method => :post} | ||||
map.connect 'my/order_blocks', :controller => 'my', :action => 'order_blocks', | ||||
:conditions => {:method => :post} | ||||
|
r8042 | |||
|
r2315 | map.with_options :controller => 'users' do |users| | ||
|
r8267 | users.user_membership 'users/:id/memberships/:membership_id', | ||
:action => 'edit_membership', | ||||
:conditions => {:method => :put} | ||||
users.connect 'users/:id/memberships/:membership_id', | ||||
:action => 'destroy_membership', | ||||
:conditions => {:method => :delete} | ||||
|
r8322 | users.user_memberships 'users/:id/memberships', | ||
:action => 'edit_membership', | ||||
:conditions => {:method => :post} | ||||
|
r2315 | end | ||
|
r8322 | map.resources :users | ||
|
r3957 | |||
|
r3983 | # For nice "roadmap" in the url for the index action | ||
map.connect 'projects/:project_id/roadmap', :controller => 'versions', :action => 'index' | ||||
|
r4100 | map.preview_news '/news/preview', :controller => 'previews', :action => 'news' | ||
|
r8259 | map.connect 'news/:id/comments', :controller => 'comments', | ||
:action => 'create', :conditions => {:method => :post} | ||||
map.connect 'news/:id/comments/:comment_id', :controller => 'comments', | ||||
:action => 'destroy', :conditions => {:method => :delete} | ||||
|
r4100 | |||
|
r8275 | map.connect 'watchers/new', :controller=> 'watchers', :action => 'new', | ||
|
r8472 | :conditions => {:method => :get} | ||
map.connect 'watchers', :controller=> 'watchers', :action => 'create', | ||||
:conditions => {:method => :post} | ||||
|
r8275 | map.connect 'watchers/destroy', :controller=> 'watchers', :action => 'destroy', | ||
:conditions => {:method => :post} | ||||
map.connect 'watchers/watch', :controller=> 'watchers', :action => 'watch', | ||||
:conditions => {:method => :post} | ||||
map.connect 'watchers/unwatch', :controller=> 'watchers', :action => 'unwatch', | ||||
:conditions => {:method => :post} | ||||
|
r8472 | map.connect 'watchers/autocomplete_for_user', :controller=> 'watchers', :action => 'autocomplete_for_user', | ||
:conditions => {:method => :get} | ||||
|
r8042 | |||
|
r8321 | # TODO: port to be part of the resources route(s) | ||
map.with_options :conditions => {:method => :get} do |project_views| | ||||
project_views.connect 'projects/:id/settings/:tab', | ||||
:controller => 'projects', :action => 'settings' | ||||
project_views.connect 'projects/:project_id/issues/:copy_from/copy', | ||||
:controller => 'issues', :action => 'new' | ||||
end | ||||
|
r3957 | map.resources :projects, :member => { | ||
:copy => [:get, :post], | ||||
:settings => :get, | ||||
:modules => :post, | ||||
:archive => :post, | ||||
:unarchive => :post | ||||
|
r3961 | } do |project| | ||
|
r8450 | project.resource :enumerations, :controller => 'project_enumerations', | ||
|
r8315 | :only => [:update, :destroy] | ||
|
r8075 | # issue form update | ||
|
r8299 | project.issue_form 'issues/new', :controller => 'issues', | ||
|
r8408 | :action => 'new', :conditions => {:method => [:post, :put]} | ||
|
r8320 | project.resources :issues, :only => [:index, :new, :create] do |issues| | ||
|
r8396 | issues.resources :time_entries, :controller => 'timelog', | ||
:collection => {:report => :get} | ||||
|
r8320 | end | ||
|
r8075 | |||
|
r3971 | project.resources :files, :only => [:index, :new, :create] | ||
|
r8318 | project.resources :versions, :shallow => true, | ||
:collection => {:close_completed => :put}, | ||||
:member => {:status_by => :post} | ||||
|
r4100 | project.resources :news, :shallow => true | ||
|
r8396 | project.resources :time_entries, :controller => 'timelog', | ||
:collection => {:report => :get} | ||||
|
r7537 | project.resources :queries, :only => [:new, :create] | ||
|
r7761 | project.resources :issue_categories, :shallow => true | ||
|
r7890 | project.resources :documents, :shallow => true, :member => {:add_attachment => :post} | ||
|
r7900 | project.resources :boards | ||
|
r8528 | project.resources :repositories, :shallow => true, :except => [:index, :show], | ||
:member => {:committers => [:get, :post]} | ||||
|
r8669 | project.resources :memberships, :shallow => true, :controller => 'members', | ||
|
r8678 | :only => [:index, :show, :create, :update, :destroy], | ||
|
r8669 | :collection => {:autocomplete => :get} | ||
|
r4136 | |||
|
r4189 | project.wiki_start_page 'wiki', :controller => 'wiki', :action => 'show', :conditions => {:method => :get} | ||
project.wiki_index 'wiki/index', :controller => 'wiki', :action => 'index', :conditions => {:method => :get} | ||||
|
r4258 | project.wiki_diff 'wiki/:id/diff/:version', :controller => 'wiki', :action => 'diff', :version => nil | ||
|
r4189 | project.wiki_diff 'wiki/:id/diff/:version/vs/:version_from', :controller => 'wiki', :action => 'diff' | ||
project.wiki_annotate 'wiki/:id/annotate/:version', :controller => 'wiki', :action => 'annotate' | ||||
project.resources :wiki, :except => [:new, :create], :member => { | ||||
:rename => [:get, :post], | ||||
:history => :get, | ||||
:preview => :any, | ||||
:protect => :post, | ||||
:add_attachment => :post | ||||
}, :collection => { | ||||
:export => :get, | ||||
:date_index => :get | ||||
} | ||||
|
r3961 | end | ||
|
r3957 | |||
|
r8426 | map.connect 'news', :controller => 'news', :action => 'index' | ||
map.connect 'news.:format', :controller => 'news', :action => 'index' | ||||
|
r8323 | map.resources :queries, :except => [:show] | ||
|
r8321 | map.resources :issues, | ||
|
r8416 | :collection => {:bulk_edit => [:get, :post], :bulk_update => :post} do |issues| | ||
|
r8321 | issues.resources :time_entries, :controller => 'timelog', | ||
:collection => {:report => :get} | ||||
issues.resources :relations, :shallow => true, | ||||
:controller => 'issue_relations', | ||||
:only => [:index, :show, :create, :destroy] | ||||
|
r2315 | end | ||
|
r8321 | # Bulk deletion | ||
map.connect '/issues', :controller => 'issues', :action => 'destroy', | ||||
:conditions => {:method => :delete} | ||||
|
r6340 | |||
|
r8326 | map.connect '/time_entries/destroy', | ||
:controller => 'timelog', :action => 'destroy', | ||||
:conditions => { :method => :delete } | ||||
map.time_entries_context_menu '/time_entries/context_menu', | ||||
:controller => 'context_menus', :action => 'time_entries' | ||||
map.resources :time_entries, :controller => 'timelog', | ||||
:collection => {:report => :get, :bulk_edit => :get, :bulk_update => :post} | ||||
|
r8296 | map.with_options :controller => 'activities', :action => 'index', | ||
:conditions => {:method => :get} do |activity| | ||||
|
r3957 | activity.connect 'projects/:id/activity' | ||
activity.connect 'projects/:id/activity.:format' | ||||
activity.connect 'activity', :id => nil | ||||
activity.connect 'activity.:format', :id => nil | ||||
end | ||||
|
r3983 | |||
|
r2315 | map.with_options :controller => 'repositories' do |repositories| | ||
repositories.with_options :conditions => {:method => :get} do |repository_views| | ||||
|
r8350 | repository_views.connect 'projects/:id/repository', | ||
:action => 'show' | ||||
|
r8598 | |||
repository_views.connect 'projects/:id/repository/:repository_id/statistics', | ||||
:action => 'stats' | ||||
repository_views.connect 'projects/:id/repository/:repository_id/graph', | ||||
:action => 'graph' | ||||
|
r8350 | repository_views.connect 'projects/:id/repository/statistics', | ||
:action => 'stats' | ||||
|
r8530 | repository_views.connect 'projects/:id/repository/graph', | ||
:action => 'graph' | ||||
|
r8598 | |||
repository_views.connect 'projects/:id/repository/:repository_id/revisions', | ||||
|
r8350 | :action => 'revisions' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/revisions.:format', | ||
|
r8350 | :action => 'revisions' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev', | ||
|
r8350 | :action => 'revision' | ||
|
r8657 | repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/issues', | ||
:action => 'add_related_issue', :conditions => {:method => :post} | ||||
repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', | ||||
:action => 'remove_related_issue', :conditions => {:method => :delete} | ||||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/diff', | ||
|
r8350 | :action => 'diff' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/diff.:format', | ||
|
r8350 | :action => 'diff' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/raw/*path', | ||
|
r8530 | :action => 'entry', :format => 'raw' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/:action/*path', | ||
|
r8563 | :requirements => { | ||
:action => /(browse|show|entry|changes|annotate|diff)/, | ||||
:rev => /[a-z0-9\.\-_]+/ | ||||
|
r8564 | } | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/raw/*path', | ||
|
r8350 | :action => 'entry', :format => 'raw' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:repository_id/:action/*path', | ||
|
r8901 | :requirements => { :action => /(browse|entry|changes|annotate|diff)/ } | ||
repository_views.connect 'projects/:id/repository/:repository_id/show/*path', | ||||
:requirements => { :path => /.+/ } | ||||
|
r8530 | |||
|
r8598 | repository_views.connect 'projects/:id/repository/revisions', | ||
|
r8530 | :action => 'revisions' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/revisions.:format', | ||
|
r8530 | :action => 'revisions' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/revisions/:rev', | ||
|
r8530 | :action => 'revision' | ||
|
r8657 | repository_views.connect 'projects/:id/repository/revisions/:rev/issues', | ||
:action => 'add_related_issue', :conditions => {:method => :post} | ||||
repository_views.connect 'projects/:id/repository/revisions/:rev/issues/:issue_id', | ||||
:action => 'remove_related_issue', :conditions => {:method => :delete} | ||||
|
r8598 | repository_views.connect 'projects/:id/repository/revisions/:rev/diff', | ||
|
r8530 | :action => 'diff' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/revisions/:rev/diff.:format', | ||
|
r8350 | :action => 'diff' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/revisions/:rev/raw/*path', | ||
|
r8530 | :action => 'entry', :format => 'raw' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/revisions/:rev/:action/*path', | ||
|
r8563 | :requirements => { | ||
:action => /(browse|show|entry|changes|annotate|diff)/, | ||||
:rev => /[a-z0-9\.\-_]+/ | ||||
|
r8564 | } | ||
|
r8598 | repository_views.connect 'projects/:id/repository/raw/*path', | ||
|
r8530 | :action => 'entry', :format => 'raw' | ||
|
r8598 | repository_views.connect 'projects/:id/repository/:action/*path', | ||
|
r8530 | :requirements => { :action => /(browse|show|entry|changes|annotate|diff)/ } | ||
|
r8598 | |||
|
r8530 | repository_views.connect 'projects/:id/repository/:repository_id', | ||
|
r8350 | :action => 'show' | ||
|
r2315 | end | ||
|
r6340 | |||
|
r8351 | repositories.connect 'projects/:id/repository/revision', | ||
:action => 'revision', | ||||
|
r8283 | :conditions => {:method => [:get, :post]} | ||
|
r2315 | end | ||
|
r8042 | |||
|
r7828 | # additional routes for having the file name at the end of url | ||
|
r8258 | map.connect 'attachments/:id/:filename', :controller => 'attachments', | ||
:action => 'show', :id => /\d+/, :filename => /.*/, | ||||
:conditions => {:method => :get} | ||||
map.connect 'attachments/download/:id/:filename', :controller => 'attachments', | ||||
:action => 'download', :id => /\d+/, :filename => /.*/, | ||||
:conditions => {:method => :get} | ||||
map.connect 'attachments/download/:id', :controller => 'attachments', | ||||
:action => 'download', :id => /\d+/, | ||||
:conditions => {:method => :get} | ||||
|
r8319 | map.resources :attachments, :only => [:show, :destroy] | ||
|
r6340 | |||
|
r7826 | map.resources :groups, :member => {:autocomplete_for_user => :get} | ||
|
r8261 | map.group_users 'groups/:id/users', :controller => 'groups', | ||
:action => 'add_users', :id => /\d+/, | ||||
:conditions => {:method => :post} | ||||
map.group_user 'groups/:id/users/:user_id', :controller => 'groups', | ||||
:action => 'remove_user', :id => /\d+/, | ||||
:conditions => {:method => :delete} | ||||
map.connect 'groups/destroy_membership/:id', :controller => 'groups', | ||||
:action => 'destroy_membership', :id => /\d+/, | ||||
:conditions => {:method => :post} | ||||
map.connect 'groups/edit_membership/:id', :controller => 'groups', | ||||
:action => 'edit_membership', :id => /\d+/, | ||||
:conditions => {:method => :post} | ||||
|
r7826 | |||
|
r7768 | map.resources :trackers, :except => :show | ||
|
r7770 | map.resources :issue_statuses, :except => :show, :collection => {:update_issue_done_ratio => :post} | ||
|
r8024 | map.resources :custom_fields, :except => :show | ||
|
r8025 | map.resources :roles, :except => :show, :collection => {:permissions => [:get, :post]} | ||
|
r8069 | map.resources :enumerations, :except => :show | ||
|
r6340 | |||
|
r8042 | map.connect 'search', :controller => 'search', :action => 'index', :conditions => {:method => :get} | ||
|
r8280 | map.connect 'mail_handler', :controller => 'mail_handler', | ||
:action => 'index', :conditions => {:method => :post} | ||||
|
r8042 | |||
|
r8282 | map.connect 'admin', :controller => 'admin', :action => 'index', | ||
:conditions => {:method => :get} | ||||
map.connect 'admin/projects', :controller => 'admin', :action => 'projects', | ||||
:conditions => {:method => :get} | ||||
map.connect 'admin/plugins', :controller => 'admin', :action => 'plugins', | ||||
:conditions => {:method => :get} | ||||
map.connect 'admin/info', :controller => 'admin', :action => 'info', | ||||
:conditions => {:method => :get} | ||||
map.connect 'admin/test_email', :controller => 'admin', :action => 'test_email', | ||||
:conditions => {:method => :get} | ||||
map.connect 'admin/default_configuration', :controller => 'admin', | ||||
:action => 'default_configuration', :conditions => {:method => :post} | ||||
|
r8042 | |||
|
r9113 | map.resources :auth_sources, :member => {:test_connection => :get} | ||
|
r8042 | |||
|
r8292 | map.connect 'workflows', :controller => 'workflows', | ||
:action => 'index', :conditions => {:method => :get} | ||||
map.connect 'workflows/edit', :controller => 'workflows', | ||||
:action => 'edit', :conditions => {:method => [:get, :post]} | ||||
map.connect 'workflows/copy', :controller => 'workflows', | ||||
:action => 'copy', :conditions => {:method => [:get, :post]} | ||||
|
r8293 | map.connect 'settings', :controller => 'settings', | ||
:action => 'index', :conditions => {:method => :get} | ||||
map.connect 'settings/edit', :controller => 'settings', | ||||
:action => 'edit', :conditions => {:method => [:get, :post]} | ||||
map.connect 'settings/plugin/:id', :controller => 'settings', | ||||
:action => 'plugin', :conditions => {:method => [:get, :post]} | ||||
|
r6340 | |||
|
r2374 | map.with_options :controller => 'sys' do |sys| | ||
|
r8277 | sys.connect 'sys/projects.:format', | ||
:action => 'projects', | ||||
:conditions => {:method => :get} | ||||
sys.connect 'sys/projects/:id/repository.:format', | ||||
:action => 'create_project_repository', | ||||
:conditions => {:method => :post} | ||||
sys.connect 'sys/fetch_changesets', | ||||
:action => 'fetch_changesets', | ||||
:conditions => {:method => :get} | ||||
|
r2374 | end | ||
|
r6340 | |||
|
r8808 | map.connect 'uploads.:format', :controller => 'attachments', :action => 'upload', :conditions => {:method => :post} | ||
|
r8295 | map.connect 'robots.txt', :controller => 'welcome', | ||
:action => 'robots', :conditions => {:method => :get} | ||||
|
r8042 | |||
|
r2381 | # Used for OpenID | ||
map.root :controller => 'account', :action => 'login' | ||||
|
r2 | end | ||