##// END OF EJS Templates
Adds missing route to project search....
Jean-Philippe Lang -
r9237:d2cb9d5289e4
parent child
Show More
@@ -1,395 +1,396
1 ActionController::Routing::Routes.draw do |map|
1 ActionController::Routing::Routes.draw do |map|
2 # Add your own custom routes here.
2 # Add your own custom routes here.
3 # The priority is based upon order of creation: first created -> highest priority.
3 # The priority is based upon order of creation: first created -> highest priority.
4
4
5 # Here's a sample route:
5 # Here's a sample route:
6 # map.connect 'products/:id', :controller => 'catalog', :action => 'view'
6 # map.connect 'products/:id', :controller => 'catalog', :action => 'view'
7 # Keep in mind you can assign values other than :controller and :action
7 # Keep in mind you can assign values other than :controller and :action
8
8
9 map.home '', :controller => 'welcome', :conditions => {:method => :get}
9 map.home '', :controller => 'welcome', :conditions => {:method => :get}
10
10
11 map.signin 'login', :controller => 'account', :action => 'login',
11 map.signin 'login', :controller => 'account', :action => 'login',
12 :conditions => {:method => [:get, :post]}
12 :conditions => {:method => [:get, :post]}
13 map.signout 'logout', :controller => 'account', :action => 'logout',
13 map.signout 'logout', :controller => 'account', :action => 'logout',
14 :conditions => {:method => :get}
14 :conditions => {:method => :get}
15 map.connect 'account/register', :controller => 'account', :action => 'register',
15 map.connect 'account/register', :controller => 'account', :action => 'register',
16 :conditions => {:method => [:get, :post]}
16 :conditions => {:method => [:get, :post]}
17 map.connect 'account/lost_password', :controller => 'account', :action => 'lost_password',
17 map.connect 'account/lost_password', :controller => 'account', :action => 'lost_password',
18 :conditions => {:method => [:get, :post]}
18 :conditions => {:method => [:get, :post]}
19 map.connect 'account/activate', :controller => 'account', :action => 'activate',
19 map.connect 'account/activate', :controller => 'account', :action => 'activate',
20 :conditions => {:method => :get}
20 :conditions => {:method => :get}
21
21
22 map.connect 'projects/:id/wiki', :controller => 'wikis',
22 map.connect 'projects/:id/wiki', :controller => 'wikis',
23 :action => 'edit', :conditions => {:method => :post}
23 :action => 'edit', :conditions => {:method => :post}
24 map.connect 'projects/:id/wiki/destroy', :controller => 'wikis',
24 map.connect 'projects/:id/wiki/destroy', :controller => 'wikis',
25 :action => 'destroy', :conditions => {:method => [:get, :post]}
25 :action => 'destroy', :conditions => {:method => [:get, :post]}
26
26
27 map.with_options :controller => 'messages' do |messages_routes|
27 map.with_options :controller => 'messages' do |messages_routes|
28 messages_routes.with_options :conditions => {:method => :get} do |messages_views|
28 messages_routes.with_options :conditions => {:method => :get} do |messages_views|
29 messages_views.connect 'boards/:board_id/topics/new', :action => 'new'
29 messages_views.connect 'boards/:board_id/topics/new', :action => 'new'
30 messages_views.connect 'boards/:board_id/topics/:id', :action => 'show'
30 messages_views.connect 'boards/:board_id/topics/:id', :action => 'show'
31 messages_views.connect 'boards/:board_id/topics/:id/edit', :action => 'edit'
31 messages_views.connect 'boards/:board_id/topics/:id/edit', :action => 'edit'
32 end
32 end
33 messages_routes.with_options :conditions => {:method => :post} do |messages_actions|
33 messages_routes.with_options :conditions => {:method => :post} do |messages_actions|
34 messages_actions.connect 'boards/:board_id/topics/new', :action => 'new'
34 messages_actions.connect 'boards/:board_id/topics/new', :action => 'new'
35 messages_actions.connect 'boards/:board_id/topics/preview', :action => 'preview'
35 messages_actions.connect 'boards/:board_id/topics/preview', :action => 'preview'
36 messages_actions.connect 'boards/:board_id/topics/quote/:id', :action => 'quote'
36 messages_actions.connect 'boards/:board_id/topics/quote/:id', :action => 'quote'
37 messages_actions.connect 'boards/:board_id/topics/:id/replies', :action => 'reply'
37 messages_actions.connect 'boards/:board_id/topics/:id/replies', :action => 'reply'
38 messages_actions.connect 'boards/:board_id/topics/:id/edit', :action => 'edit'
38 messages_actions.connect 'boards/:board_id/topics/:id/edit', :action => 'edit'
39 messages_actions.connect 'boards/:board_id/topics/:id/destroy', :action => 'destroy'
39 messages_actions.connect 'boards/:board_id/topics/:id/destroy', :action => 'destroy'
40 end
40 end
41 end
41 end
42
42
43 # Misc issue routes. TODO: move into resources
43 # Misc issue routes. TODO: move into resources
44 map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes',
44 map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes',
45 :action => 'issues', :conditions => { :method => :get }
45 :action => 'issues', :conditions => { :method => :get }
46 # TODO: would look nicer as /issues/:id/preview
46 # TODO: would look nicer as /issues/:id/preview
47 map.preview_new_issue '/issues/preview/new/:project_id', :controller => 'previews',
47 map.preview_new_issue '/issues/preview/new/:project_id', :controller => 'previews',
48 :action => 'issue'
48 :action => 'issue'
49 map.preview_edit_issue '/issues/preview/edit/:id', :controller => 'previews',
49 map.preview_edit_issue '/issues/preview/edit/:id', :controller => 'previews',
50 :action => 'issue'
50 :action => 'issue'
51 map.issues_context_menu '/issues/context_menu',
51 map.issues_context_menu '/issues/context_menu',
52 :controller => 'context_menus', :action => 'issues'
52 :controller => 'context_menus', :action => 'issues'
53
53
54 map.issue_changes '/issues/changes', :controller => 'journals', :action => 'index'
54 map.issue_changes '/issues/changes', :controller => 'journals', :action => 'index'
55 map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new',
55 map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new',
56 :id => /\d+/, :conditions => { :method => :post }
56 :id => /\d+/, :conditions => { :method => :post }
57
57
58 map.connect '/journals/diff/:id', :controller => 'journals', :action => 'diff',
58 map.connect '/journals/diff/:id', :controller => 'journals', :action => 'diff',
59 :id => /\d+/, :conditions => { :method => :get }
59 :id => /\d+/, :conditions => { :method => :get }
60 map.connect '/journals/edit/:id', :controller => 'journals', :action => 'edit',
60 map.connect '/journals/edit/:id', :controller => 'journals', :action => 'edit',
61 :id => /\d+/, :conditions => { :method => [:get, :post] }
61 :id => /\d+/, :conditions => { :method => [:get, :post] }
62
62
63 map.with_options :controller => 'gantts', :action => 'show' do |gantts_routes|
63 map.with_options :controller => 'gantts', :action => 'show' do |gantts_routes|
64 gantts_routes.connect '/projects/:project_id/issues/gantt'
64 gantts_routes.connect '/projects/:project_id/issues/gantt'
65 gantts_routes.connect '/projects/:project_id/issues/gantt.:format'
65 gantts_routes.connect '/projects/:project_id/issues/gantt.:format'
66 gantts_routes.connect '/issues/gantt.:format'
66 gantts_routes.connect '/issues/gantt.:format'
67 end
67 end
68
68
69 map.with_options :controller => 'calendars', :action => 'show' do |calendars_routes|
69 map.with_options :controller => 'calendars', :action => 'show' do |calendars_routes|
70 calendars_routes.connect '/projects/:project_id/issues/calendar'
70 calendars_routes.connect '/projects/:project_id/issues/calendar'
71 calendars_routes.connect '/issues/calendar'
71 calendars_routes.connect '/issues/calendar'
72 end
72 end
73
73
74 map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports|
74 map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports|
75 reports.connect 'projects/:id/issues/report', :action => 'issue_report'
75 reports.connect 'projects/:id/issues/report', :action => 'issue_report'
76 reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details'
76 reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details'
77 end
77 end
78
78
79 map.connect 'my/account', :controller => 'my', :action => 'account',
79 map.connect 'my/account', :controller => 'my', :action => 'account',
80 :conditions => {:method => [:get, :post]}
80 :conditions => {:method => [:get, :post]}
81 map.connect 'my/page', :controller => 'my', :action => 'page',
81 map.connect 'my/page', :controller => 'my', :action => 'page',
82 :conditions => {:method => :get}
82 :conditions => {:method => :get}
83 # Redirects to my/page
83 # Redirects to my/page
84 map.connect 'my', :controller => 'my', :action => 'index',
84 map.connect 'my', :controller => 'my', :action => 'index',
85 :conditions => {:method => :get}
85 :conditions => {:method => :get}
86 map.connect 'my/reset_rss_key', :controller => 'my', :action => 'reset_rss_key',
86 map.connect 'my/reset_rss_key', :controller => 'my', :action => 'reset_rss_key',
87 :conditions => {:method => :post}
87 :conditions => {:method => :post}
88 map.connect 'my/reset_api_key', :controller => 'my', :action => 'reset_api_key',
88 map.connect 'my/reset_api_key', :controller => 'my', :action => 'reset_api_key',
89 :conditions => {:method => :post}
89 :conditions => {:method => :post}
90 map.connect 'my/password', :controller => 'my', :action => 'password',
90 map.connect 'my/password', :controller => 'my', :action => 'password',
91 :conditions => {:method => [:get, :post]}
91 :conditions => {:method => [:get, :post]}
92 map.connect 'my/page_layout', :controller => 'my', :action => 'page_layout',
92 map.connect 'my/page_layout', :controller => 'my', :action => 'page_layout',
93 :conditions => {:method => :get}
93 :conditions => {:method => :get}
94 map.connect 'my/add_block', :controller => 'my', :action => 'add_block',
94 map.connect 'my/add_block', :controller => 'my', :action => 'add_block',
95 :conditions => {:method => :post}
95 :conditions => {:method => :post}
96 map.connect 'my/remove_block', :controller => 'my', :action => 'remove_block',
96 map.connect 'my/remove_block', :controller => 'my', :action => 'remove_block',
97 :conditions => {:method => :post}
97 :conditions => {:method => :post}
98 map.connect 'my/order_blocks', :controller => 'my', :action => 'order_blocks',
98 map.connect 'my/order_blocks', :controller => 'my', :action => 'order_blocks',
99 :conditions => {:method => :post}
99 :conditions => {:method => :post}
100
100
101 map.with_options :controller => 'users' do |users|
101 map.with_options :controller => 'users' do |users|
102 users.user_membership 'users/:id/memberships/:membership_id',
102 users.user_membership 'users/:id/memberships/:membership_id',
103 :action => 'edit_membership',
103 :action => 'edit_membership',
104 :conditions => {:method => :put}
104 :conditions => {:method => :put}
105 users.connect 'users/:id/memberships/:membership_id',
105 users.connect 'users/:id/memberships/:membership_id',
106 :action => 'destroy_membership',
106 :action => 'destroy_membership',
107 :conditions => {:method => :delete}
107 :conditions => {:method => :delete}
108 users.user_memberships 'users/:id/memberships',
108 users.user_memberships 'users/:id/memberships',
109 :action => 'edit_membership',
109 :action => 'edit_membership',
110 :conditions => {:method => :post}
110 :conditions => {:method => :post}
111 end
111 end
112 map.resources :users
112 map.resources :users
113
113
114 # For nice "roadmap" in the url for the index action
114 # For nice "roadmap" in the url for the index action
115 map.connect 'projects/:project_id/roadmap', :controller => 'versions', :action => 'index'
115 map.connect 'projects/:project_id/roadmap', :controller => 'versions', :action => 'index'
116
116
117 map.preview_news '/news/preview', :controller => 'previews', :action => 'news'
117 map.preview_news '/news/preview', :controller => 'previews', :action => 'news'
118 map.connect 'news/:id/comments', :controller => 'comments',
118 map.connect 'news/:id/comments', :controller => 'comments',
119 :action => 'create', :conditions => {:method => :post}
119 :action => 'create', :conditions => {:method => :post}
120 map.connect 'news/:id/comments/:comment_id', :controller => 'comments',
120 map.connect 'news/:id/comments/:comment_id', :controller => 'comments',
121 :action => 'destroy', :conditions => {:method => :delete}
121 :action => 'destroy', :conditions => {:method => :delete}
122
122
123 map.connect 'watchers/new', :controller=> 'watchers', :action => 'new',
123 map.connect 'watchers/new', :controller=> 'watchers', :action => 'new',
124 :conditions => {:method => :get}
124 :conditions => {:method => :get}
125 map.connect 'watchers', :controller=> 'watchers', :action => 'create',
125 map.connect 'watchers', :controller=> 'watchers', :action => 'create',
126 :conditions => {:method => :post}
126 :conditions => {:method => :post}
127 map.connect 'watchers/append', :controller=> 'watchers', :action => 'append',
127 map.connect 'watchers/append', :controller=> 'watchers', :action => 'append',
128 :conditions => {:method => :post}
128 :conditions => {:method => :post}
129 map.connect 'watchers/destroy', :controller=> 'watchers', :action => 'destroy',
129 map.connect 'watchers/destroy', :controller=> 'watchers', :action => 'destroy',
130 :conditions => {:method => :post}
130 :conditions => {:method => :post}
131 map.connect 'watchers/watch', :controller=> 'watchers', :action => 'watch',
131 map.connect 'watchers/watch', :controller=> 'watchers', :action => 'watch',
132 :conditions => {:method => :post}
132 :conditions => {:method => :post}
133 map.connect 'watchers/unwatch', :controller=> 'watchers', :action => 'unwatch',
133 map.connect 'watchers/unwatch', :controller=> 'watchers', :action => 'unwatch',
134 :conditions => {:method => :post}
134 :conditions => {:method => :post}
135 map.connect 'watchers/autocomplete_for_user', :controller=> 'watchers', :action => 'autocomplete_for_user',
135 map.connect 'watchers/autocomplete_for_user', :controller=> 'watchers', :action => 'autocomplete_for_user',
136 :conditions => {:method => :get}
136 :conditions => {:method => :get}
137
137
138 # TODO: port to be part of the resources route(s)
138 # TODO: port to be part of the resources route(s)
139 map.with_options :conditions => {:method => :get} do |project_views|
139 map.with_options :conditions => {:method => :get} do |project_views|
140 project_views.connect 'projects/:id/settings/:tab',
140 project_views.connect 'projects/:id/settings/:tab',
141 :controller => 'projects', :action => 'settings'
141 :controller => 'projects', :action => 'settings'
142 project_views.connect 'projects/:project_id/issues/:copy_from/copy',
142 project_views.connect 'projects/:project_id/issues/:copy_from/copy',
143 :controller => 'issues', :action => 'new'
143 :controller => 'issues', :action => 'new'
144 end
144 end
145
145
146 map.resources :projects, :member => {
146 map.resources :projects, :member => {
147 :copy => [:get, :post],
147 :copy => [:get, :post],
148 :settings => :get,
148 :settings => :get,
149 :modules => :post,
149 :modules => :post,
150 :archive => :post,
150 :archive => :post,
151 :unarchive => :post
151 :unarchive => :post
152 } do |project|
152 } do |project|
153 project.resource :enumerations, :controller => 'project_enumerations',
153 project.resource :enumerations, :controller => 'project_enumerations',
154 :only => [:update, :destroy]
154 :only => [:update, :destroy]
155 # issue form update
155 # issue form update
156 project.issue_form 'issues/new', :controller => 'issues',
156 project.issue_form 'issues/new', :controller => 'issues',
157 :action => 'new', :conditions => {:method => [:post, :put]}
157 :action => 'new', :conditions => {:method => [:post, :put]}
158 project.resources :issues, :only => [:index, :new, :create] do |issues|
158 project.resources :issues, :only => [:index, :new, :create] do |issues|
159 issues.resources :time_entries, :controller => 'timelog',
159 issues.resources :time_entries, :controller => 'timelog',
160 :collection => {:report => :get}
160 :collection => {:report => :get}
161 end
161 end
162
162
163 project.resources :files, :only => [:index, :new, :create]
163 project.resources :files, :only => [:index, :new, :create]
164 project.resources :versions, :shallow => true,
164 project.resources :versions, :shallow => true,
165 :collection => {:close_completed => :put},
165 :collection => {:close_completed => :put},
166 :member => {:status_by => :post}
166 :member => {:status_by => :post}
167 project.resources :news, :shallow => true
167 project.resources :news, :shallow => true
168 project.resources :time_entries, :controller => 'timelog',
168 project.resources :time_entries, :controller => 'timelog',
169 :collection => {:report => :get}
169 :collection => {:report => :get}
170 project.resources :queries, :only => [:new, :create]
170 project.resources :queries, :only => [:new, :create]
171 project.resources :issue_categories, :shallow => true
171 project.resources :issue_categories, :shallow => true
172 project.resources :documents, :shallow => true, :member => {:add_attachment => :post}
172 project.resources :documents, :shallow => true, :member => {:add_attachment => :post}
173 project.resources :boards
173 project.resources :boards
174 project.resources :repositories, :shallow => true, :except => [:index, :show],
174 project.resources :repositories, :shallow => true, :except => [:index, :show],
175 :member => {:committers => [:get, :post]}
175 :member => {:committers => [:get, :post]}
176 project.resources :memberships, :shallow => true, :controller => 'members',
176 project.resources :memberships, :shallow => true, :controller => 'members',
177 :only => [:index, :show, :create, :update, :destroy],
177 :only => [:index, :show, :create, :update, :destroy],
178 :collection => {:autocomplete => :get}
178 :collection => {:autocomplete => :get}
179
179
180 project.wiki_start_page 'wiki', :controller => 'wiki', :action => 'show', :conditions => {:method => :get}
180 project.wiki_start_page 'wiki', :controller => 'wiki', :action => 'show', :conditions => {:method => :get}
181 project.wiki_index 'wiki/index', :controller => 'wiki', :action => 'index', :conditions => {:method => :get}
181 project.wiki_index 'wiki/index', :controller => 'wiki', :action => 'index', :conditions => {:method => :get}
182 project.wiki_diff 'wiki/:id/diff/:version', :controller => 'wiki', :action => 'diff', :version => nil
182 project.wiki_diff 'wiki/:id/diff/:version', :controller => 'wiki', :action => 'diff', :version => nil
183 project.wiki_diff 'wiki/:id/diff/:version/vs/:version_from', :controller => 'wiki', :action => 'diff'
183 project.wiki_diff 'wiki/:id/diff/:version/vs/:version_from', :controller => 'wiki', :action => 'diff'
184 project.wiki_annotate 'wiki/:id/annotate/:version', :controller => 'wiki', :action => 'annotate'
184 project.wiki_annotate 'wiki/:id/annotate/:version', :controller => 'wiki', :action => 'annotate'
185 project.resources :wiki, :except => [:new, :create], :member => {
185 project.resources :wiki, :except => [:new, :create], :member => {
186 :rename => [:get, :post],
186 :rename => [:get, :post],
187 :history => :get,
187 :history => :get,
188 :preview => :any,
188 :preview => :any,
189 :protect => :post,
189 :protect => :post,
190 :add_attachment => :post
190 :add_attachment => :post
191 }, :collection => {
191 }, :collection => {
192 :export => :get,
192 :export => :get,
193 :date_index => :get
193 :date_index => :get
194 }
194 }
195 end
195 end
196
196
197 map.connect 'news', :controller => 'news', :action => 'index'
197 map.connect 'news', :controller => 'news', :action => 'index'
198 map.connect 'news.:format', :controller => 'news', :action => 'index'
198 map.connect 'news.:format', :controller => 'news', :action => 'index'
199
199
200 map.resources :queries, :except => [:show]
200 map.resources :queries, :except => [:show]
201 map.resources :issues,
201 map.resources :issues,
202 :collection => {:bulk_edit => [:get, :post], :bulk_update => :post} do |issues|
202 :collection => {:bulk_edit => [:get, :post], :bulk_update => :post} do |issues|
203 issues.resources :time_entries, :controller => 'timelog',
203 issues.resources :time_entries, :controller => 'timelog',
204 :collection => {:report => :get}
204 :collection => {:report => :get}
205 issues.resources :relations, :shallow => true,
205 issues.resources :relations, :shallow => true,
206 :controller => 'issue_relations',
206 :controller => 'issue_relations',
207 :only => [:index, :show, :create, :destroy]
207 :only => [:index, :show, :create, :destroy]
208 end
208 end
209 # Bulk deletion
209 # Bulk deletion
210 map.connect '/issues', :controller => 'issues', :action => 'destroy',
210 map.connect '/issues', :controller => 'issues', :action => 'destroy',
211 :conditions => {:method => :delete}
211 :conditions => {:method => :delete}
212
212
213 map.connect '/time_entries/destroy',
213 map.connect '/time_entries/destroy',
214 :controller => 'timelog', :action => 'destroy',
214 :controller => 'timelog', :action => 'destroy',
215 :conditions => { :method => :delete }
215 :conditions => { :method => :delete }
216 map.time_entries_context_menu '/time_entries/context_menu',
216 map.time_entries_context_menu '/time_entries/context_menu',
217 :controller => 'context_menus', :action => 'time_entries'
217 :controller => 'context_menus', :action => 'time_entries'
218
218
219 map.resources :time_entries, :controller => 'timelog',
219 map.resources :time_entries, :controller => 'timelog',
220 :collection => {:report => :get, :bulk_edit => :get, :bulk_update => :post}
220 :collection => {:report => :get, :bulk_edit => :get, :bulk_update => :post}
221
221
222 map.with_options :controller => 'activities', :action => 'index',
222 map.with_options :controller => 'activities', :action => 'index',
223 :conditions => {:method => :get} do |activity|
223 :conditions => {:method => :get} do |activity|
224 activity.connect 'projects/:id/activity'
224 activity.connect 'projects/:id/activity'
225 activity.connect 'projects/:id/activity.:format'
225 activity.connect 'projects/:id/activity.:format'
226 activity.connect 'activity', :id => nil
226 activity.connect 'activity', :id => nil
227 activity.connect 'activity.:format', :id => nil
227 activity.connect 'activity.:format', :id => nil
228 end
228 end
229
229
230 map.with_options :controller => 'repositories' do |repositories|
230 map.with_options :controller => 'repositories' do |repositories|
231 repositories.with_options :conditions => {:method => :get} do |repository_views|
231 repositories.with_options :conditions => {:method => :get} do |repository_views|
232 repository_views.connect 'projects/:id/repository',
232 repository_views.connect 'projects/:id/repository',
233 :action => 'show'
233 :action => 'show'
234
234
235 repository_views.connect 'projects/:id/repository/:repository_id/statistics',
235 repository_views.connect 'projects/:id/repository/:repository_id/statistics',
236 :action => 'stats'
236 :action => 'stats'
237 repository_views.connect 'projects/:id/repository/:repository_id/graph',
237 repository_views.connect 'projects/:id/repository/:repository_id/graph',
238 :action => 'graph'
238 :action => 'graph'
239
239
240 repository_views.connect 'projects/:id/repository/statistics',
240 repository_views.connect 'projects/:id/repository/statistics',
241 :action => 'stats'
241 :action => 'stats'
242 repository_views.connect 'projects/:id/repository/graph',
242 repository_views.connect 'projects/:id/repository/graph',
243 :action => 'graph'
243 :action => 'graph'
244
244
245 repository_views.connect 'projects/:id/repository/:repository_id/revisions',
245 repository_views.connect 'projects/:id/repository/:repository_id/revisions',
246 :action => 'revisions'
246 :action => 'revisions'
247 repository_views.connect 'projects/:id/repository/:repository_id/revisions.:format',
247 repository_views.connect 'projects/:id/repository/:repository_id/revisions.:format',
248 :action => 'revisions'
248 :action => 'revisions'
249 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev',
249 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev',
250 :action => 'revision'
250 :action => 'revision'
251 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/issues',
251 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/issues',
252 :action => 'add_related_issue', :conditions => {:method => :post}
252 :action => 'add_related_issue', :conditions => {:method => :post}
253 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id',
253 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id',
254 :action => 'remove_related_issue', :conditions => {:method => :delete}
254 :action => 'remove_related_issue', :conditions => {:method => :delete}
255 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/diff',
255 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/diff',
256 :action => 'diff'
256 :action => 'diff'
257 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/diff.:format',
257 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/diff.:format',
258 :action => 'diff'
258 :action => 'diff'
259 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/raw/*path',
259 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/raw/*path',
260 :action => 'entry', :format => 'raw'
260 :action => 'entry', :format => 'raw'
261 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/:action/*path',
261 repository_views.connect 'projects/:id/repository/:repository_id/revisions/:rev/:action/*path',
262 :requirements => {
262 :requirements => {
263 :action => /(browse|show|entry|changes|annotate|diff)/,
263 :action => /(browse|show|entry|changes|annotate|diff)/,
264 :rev => /[a-z0-9\.\-_]+/
264 :rev => /[a-z0-9\.\-_]+/
265 }
265 }
266 repository_views.connect 'projects/:id/repository/:repository_id/raw/*path',
266 repository_views.connect 'projects/:id/repository/:repository_id/raw/*path',
267 :action => 'entry', :format => 'raw'
267 :action => 'entry', :format => 'raw'
268 repository_views.connect 'projects/:id/repository/:repository_id/:action/*path',
268 repository_views.connect 'projects/:id/repository/:repository_id/:action/*path',
269 :requirements => { :action => /(browse|entry|changes|annotate|diff)/ }
269 :requirements => { :action => /(browse|entry|changes|annotate|diff)/ }
270 repository_views.connect 'projects/:id/repository/:repository_id/show/*path',
270 repository_views.connect 'projects/:id/repository/:repository_id/show/*path',
271 :requirements => { :path => /.+/ }
271 :requirements => { :path => /.+/ }
272
272
273 repository_views.connect 'projects/:id/repository/:repository_id/revision',
273 repository_views.connect 'projects/:id/repository/:repository_id/revision',
274 :action => 'revision'
274 :action => 'revision'
275
275
276 repository_views.connect 'projects/:id/repository/revisions',
276 repository_views.connect 'projects/:id/repository/revisions',
277 :action => 'revisions'
277 :action => 'revisions'
278 repository_views.connect 'projects/:id/repository/revisions.:format',
278 repository_views.connect 'projects/:id/repository/revisions.:format',
279 :action => 'revisions'
279 :action => 'revisions'
280 repository_views.connect 'projects/:id/repository/revisions/:rev',
280 repository_views.connect 'projects/:id/repository/revisions/:rev',
281 :action => 'revision'
281 :action => 'revision'
282 repository_views.connect 'projects/:id/repository/revisions/:rev/issues',
282 repository_views.connect 'projects/:id/repository/revisions/:rev/issues',
283 :action => 'add_related_issue', :conditions => {:method => :post}
283 :action => 'add_related_issue', :conditions => {:method => :post}
284 repository_views.connect 'projects/:id/repository/revisions/:rev/issues/:issue_id',
284 repository_views.connect 'projects/:id/repository/revisions/:rev/issues/:issue_id',
285 :action => 'remove_related_issue', :conditions => {:method => :delete}
285 :action => 'remove_related_issue', :conditions => {:method => :delete}
286 repository_views.connect 'projects/:id/repository/revisions/:rev/diff',
286 repository_views.connect 'projects/:id/repository/revisions/:rev/diff',
287 :action => 'diff'
287 :action => 'diff'
288 repository_views.connect 'projects/:id/repository/revisions/:rev/diff.:format',
288 repository_views.connect 'projects/:id/repository/revisions/:rev/diff.:format',
289 :action => 'diff'
289 :action => 'diff'
290 repository_views.connect 'projects/:id/repository/revisions/:rev/raw/*path',
290 repository_views.connect 'projects/:id/repository/revisions/:rev/raw/*path',
291 :action => 'entry', :format => 'raw'
291 :action => 'entry', :format => 'raw'
292 repository_views.connect 'projects/:id/repository/revisions/:rev/:action/*path',
292 repository_views.connect 'projects/:id/repository/revisions/:rev/:action/*path',
293 :requirements => {
293 :requirements => {
294 :action => /(browse|show|entry|changes|annotate|diff)/,
294 :action => /(browse|show|entry|changes|annotate|diff)/,
295 :rev => /[a-z0-9\.\-_]+/
295 :rev => /[a-z0-9\.\-_]+/
296 }
296 }
297 repository_views.connect 'projects/:id/repository/raw/*path',
297 repository_views.connect 'projects/:id/repository/raw/*path',
298 :action => 'entry', :format => 'raw'
298 :action => 'entry', :format => 'raw'
299 repository_views.connect 'projects/:id/repository/:action/*path',
299 repository_views.connect 'projects/:id/repository/:action/*path',
300 :requirements => { :action => /(browse|show|entry|changes|annotate|diff)/ }
300 :requirements => { :action => /(browse|show|entry|changes|annotate|diff)/ }
301
301
302 repository_views.connect 'projects/:id/repository/revision',
302 repository_views.connect 'projects/:id/repository/revision',
303 :action => 'revision'
303 :action => 'revision'
304
304
305 repository_views.connect 'projects/:id/repository/:repository_id',
305 repository_views.connect 'projects/:id/repository/:repository_id',
306 :action => 'show'
306 :action => 'show'
307 end
307 end
308 end
308 end
309
309
310 # additional routes for having the file name at the end of url
310 # additional routes for having the file name at the end of url
311 map.connect 'attachments/:id/:filename', :controller => 'attachments',
311 map.connect 'attachments/:id/:filename', :controller => 'attachments',
312 :action => 'show', :id => /\d+/, :filename => /.*/,
312 :action => 'show', :id => /\d+/, :filename => /.*/,
313 :conditions => {:method => :get}
313 :conditions => {:method => :get}
314 map.connect 'attachments/download/:id/:filename', :controller => 'attachments',
314 map.connect 'attachments/download/:id/:filename', :controller => 'attachments',
315 :action => 'download', :id => /\d+/, :filename => /.*/,
315 :action => 'download', :id => /\d+/, :filename => /.*/,
316 :conditions => {:method => :get}
316 :conditions => {:method => :get}
317 map.connect 'attachments/download/:id', :controller => 'attachments',
317 map.connect 'attachments/download/:id', :controller => 'attachments',
318 :action => 'download', :id => /\d+/,
318 :action => 'download', :id => /\d+/,
319 :conditions => {:method => :get}
319 :conditions => {:method => :get}
320 map.resources :attachments, :only => [:show, :destroy]
320 map.resources :attachments, :only => [:show, :destroy]
321
321
322 map.resources :groups, :member => {:autocomplete_for_user => :get}
322 map.resources :groups, :member => {:autocomplete_for_user => :get}
323 map.group_users 'groups/:id/users', :controller => 'groups',
323 map.group_users 'groups/:id/users', :controller => 'groups',
324 :action => 'add_users', :id => /\d+/,
324 :action => 'add_users', :id => /\d+/,
325 :conditions => {:method => :post}
325 :conditions => {:method => :post}
326 map.group_user 'groups/:id/users/:user_id', :controller => 'groups',
326 map.group_user 'groups/:id/users/:user_id', :controller => 'groups',
327 :action => 'remove_user', :id => /\d+/,
327 :action => 'remove_user', :id => /\d+/,
328 :conditions => {:method => :delete}
328 :conditions => {:method => :delete}
329 map.connect 'groups/destroy_membership/:id', :controller => 'groups',
329 map.connect 'groups/destroy_membership/:id', :controller => 'groups',
330 :action => 'destroy_membership', :id => /\d+/,
330 :action => 'destroy_membership', :id => /\d+/,
331 :conditions => {:method => :post}
331 :conditions => {:method => :post}
332 map.connect 'groups/edit_membership/:id', :controller => 'groups',
332 map.connect 'groups/edit_membership/:id', :controller => 'groups',
333 :action => 'edit_membership', :id => /\d+/,
333 :action => 'edit_membership', :id => /\d+/,
334 :conditions => {:method => :post}
334 :conditions => {:method => :post}
335
335
336 map.resources :trackers, :except => :show
336 map.resources :trackers, :except => :show
337 map.resources :issue_statuses, :except => :show, :collection => {:update_issue_done_ratio => :post}
337 map.resources :issue_statuses, :except => :show, :collection => {:update_issue_done_ratio => :post}
338 map.resources :custom_fields, :except => :show
338 map.resources :custom_fields, :except => :show
339 map.resources :roles, :except => :show, :collection => {:permissions => [:get, :post]}
339 map.resources :roles, :except => :show, :collection => {:permissions => [:get, :post]}
340 map.resources :enumerations, :except => :show
340 map.resources :enumerations, :except => :show
341
341
342 map.connect 'projects/:id/search', :controller => 'search', :action => 'index', :conditions => {:method => :get}
342 map.connect 'search', :controller => 'search', :action => 'index', :conditions => {:method => :get}
343 map.connect 'search', :controller => 'search', :action => 'index', :conditions => {:method => :get}
343
344
344 map.connect 'mail_handler', :controller => 'mail_handler',
345 map.connect 'mail_handler', :controller => 'mail_handler',
345 :action => 'index', :conditions => {:method => :post}
346 :action => 'index', :conditions => {:method => :post}
346
347
347 map.connect 'admin', :controller => 'admin', :action => 'index',
348 map.connect 'admin', :controller => 'admin', :action => 'index',
348 :conditions => {:method => :get}
349 :conditions => {:method => :get}
349 map.connect 'admin/projects', :controller => 'admin', :action => 'projects',
350 map.connect 'admin/projects', :controller => 'admin', :action => 'projects',
350 :conditions => {:method => :get}
351 :conditions => {:method => :get}
351 map.connect 'admin/plugins', :controller => 'admin', :action => 'plugins',
352 map.connect 'admin/plugins', :controller => 'admin', :action => 'plugins',
352 :conditions => {:method => :get}
353 :conditions => {:method => :get}
353 map.connect 'admin/info', :controller => 'admin', :action => 'info',
354 map.connect 'admin/info', :controller => 'admin', :action => 'info',
354 :conditions => {:method => :get}
355 :conditions => {:method => :get}
355 map.connect 'admin/test_email', :controller => 'admin', :action => 'test_email',
356 map.connect 'admin/test_email', :controller => 'admin', :action => 'test_email',
356 :conditions => {:method => :get}
357 :conditions => {:method => :get}
357 map.connect 'admin/default_configuration', :controller => 'admin',
358 map.connect 'admin/default_configuration', :controller => 'admin',
358 :action => 'default_configuration', :conditions => {:method => :post}
359 :action => 'default_configuration', :conditions => {:method => :post}
359
360
360 map.resources :auth_sources, :member => {:test_connection => :get}
361 map.resources :auth_sources, :member => {:test_connection => :get}
361
362
362 map.connect 'workflows', :controller => 'workflows',
363 map.connect 'workflows', :controller => 'workflows',
363 :action => 'index', :conditions => {:method => :get}
364 :action => 'index', :conditions => {:method => :get}
364 map.connect 'workflows/edit', :controller => 'workflows',
365 map.connect 'workflows/edit', :controller => 'workflows',
365 :action => 'edit', :conditions => {:method => [:get, :post]}
366 :action => 'edit', :conditions => {:method => [:get, :post]}
366 map.connect 'workflows/copy', :controller => 'workflows',
367 map.connect 'workflows/copy', :controller => 'workflows',
367 :action => 'copy', :conditions => {:method => [:get, :post]}
368 :action => 'copy', :conditions => {:method => [:get, :post]}
368
369
369 map.connect 'settings', :controller => 'settings',
370 map.connect 'settings', :controller => 'settings',
370 :action => 'index', :conditions => {:method => :get}
371 :action => 'index', :conditions => {:method => :get}
371 map.connect 'settings/edit', :controller => 'settings',
372 map.connect 'settings/edit', :controller => 'settings',
372 :action => 'edit', :conditions => {:method => [:get, :post]}
373 :action => 'edit', :conditions => {:method => [:get, :post]}
373 map.connect 'settings/plugin/:id', :controller => 'settings',
374 map.connect 'settings/plugin/:id', :controller => 'settings',
374 :action => 'plugin', :conditions => {:method => [:get, :post]}
375 :action => 'plugin', :conditions => {:method => [:get, :post]}
375
376
376 map.with_options :controller => 'sys' do |sys|
377 map.with_options :controller => 'sys' do |sys|
377 sys.connect 'sys/projects.:format',
378 sys.connect 'sys/projects.:format',
378 :action => 'projects',
379 :action => 'projects',
379 :conditions => {:method => :get}
380 :conditions => {:method => :get}
380 sys.connect 'sys/projects/:id/repository.:format',
381 sys.connect 'sys/projects/:id/repository.:format',
381 :action => 'create_project_repository',
382 :action => 'create_project_repository',
382 :conditions => {:method => :post}
383 :conditions => {:method => :post}
383 sys.connect 'sys/fetch_changesets',
384 sys.connect 'sys/fetch_changesets',
384 :action => 'fetch_changesets',
385 :action => 'fetch_changesets',
385 :conditions => {:method => :get}
386 :conditions => {:method => :get}
386 end
387 end
387
388
388 map.connect 'uploads.:format', :controller => 'attachments', :action => 'upload', :conditions => {:method => :post}
389 map.connect 'uploads.:format', :controller => 'attachments', :action => 'upload', :conditions => {:method => :post}
389
390
390 map.connect 'robots.txt', :controller => 'welcome',
391 map.connect 'robots.txt', :controller => 'welcome',
391 :action => 'robots', :conditions => {:method => :get}
392 :action => 'robots', :conditions => {:method => :get}
392
393
393 # Used for OpenID
394 # Used for OpenID
394 map.root :controller => 'account', :action => 'login'
395 map.root :controller => 'account', :action => 'login'
395 end
396 end
@@ -1,56 +1,66
1 require File.expand_path('../../test_helper', __FILE__)
1 require File.expand_path('../../test_helper', __FILE__)
2
2
3 class LayoutTest < ActionController::IntegrationTest
3 class LayoutTest < ActionController::IntegrationTest
4 fixtures :projects, :trackers, :issue_statuses, :issues,
4 fixtures :projects, :trackers, :issue_statuses, :issues,
5 :enumerations, :users, :issue_categories,
5 :enumerations, :users, :issue_categories,
6 :projects_trackers,
6 :projects_trackers,
7 :roles,
7 :roles,
8 :member_roles,
8 :member_roles,
9 :members,
9 :members,
10 :enabled_modules,
10 :enabled_modules,
11 :workflows
11 :workflows
12
12
13 test "browsing to a missing page should render the base layout" do
13 test "browsing to a missing page should render the base layout" do
14 get "/users/100000000"
14 get "/users/100000000"
15
15
16 assert_response :not_found
16 assert_response :not_found
17
17
18 # UsersController uses the admin layout by default
18 # UsersController uses the admin layout by default
19 assert_select "#admin-menu", :count => 0
19 assert_select "#admin-menu", :count => 0
20 end
20 end
21
21
22 test "browsing to an unauthorized page should render the base layout" do
22 test "browsing to an unauthorized page should render the base layout" do
23 change_user_password('miscuser9', 'test')
23 change_user_password('miscuser9', 'test')
24
24
25 log_user('miscuser9','test')
25 log_user('miscuser9','test')
26
26
27 get "/admin"
27 get "/admin"
28 assert_response :forbidden
28 assert_response :forbidden
29 assert_select "#admin-menu", :count => 0
29 assert_select "#admin-menu", :count => 0
30 end
30 end
31
31
32 def test_top_menu_and_search_not_visible_when_login_required
32 def test_top_menu_and_search_not_visible_when_login_required
33 with_settings :login_required => '1' do
33 with_settings :login_required => '1' do
34 get '/'
34 get '/'
35 assert_select "#top-menu > ul", 0
35 assert_select "#top-menu > ul", 0
36 assert_select "#quick-search", 0
36 assert_select "#quick-search", 0
37 end
37 end
38 end
38 end
39
39
40 def test_top_menu_and_search_visible_when_login_not_required
40 def test_top_menu_and_search_visible_when_login_not_required
41 with_settings :login_required => '0' do
41 with_settings :login_required => '0' do
42 get '/'
42 get '/'
43 assert_select "#top-menu > ul"
43 assert_select "#top-menu > ul"
44 assert_select "#quick-search"
44 assert_select "#quick-search"
45 end
45 end
46 end
46 end
47
47
48 def test_wiki_formatter_header_tags
48 def test_wiki_formatter_header_tags
49 Role.anonymous.add_permission! :add_issues
49 Role.anonymous.add_permission! :add_issues
50
50
51 get '/projects/ecookbook/issues/new'
51 get '/projects/ecookbook/issues/new'
52 assert_tag :script,
52 assert_tag :script,
53 :attributes => {:src => %r{^/javascripts/jstoolbar/textile.js}},
53 :attributes => {:src => %r{^/javascripts/jstoolbar/textile.js}},
54 :parent => {:tag => 'head'}
54 :parent => {:tag => 'head'}
55 end
55 end
56
57 def test_search_field_outside_project_should_link_to_global_search
58 get '/'
59 assert_select 'div#quick-search form[action=/search]'
60 end
61
62 def test_search_field_inside_project_should_link_to_project_search
63 get '/projects/ecookbook'
64 assert_select 'div#quick-search form[action=/projects/ecookbook/search]'
65 end
56 end
66 end
@@ -1,27 +1,31
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../../test_helper', __FILE__)
18 require File.expand_path('../../../test_helper', __FILE__)
19
19
20 class RoutingSearchTest < ActionController::IntegrationTest
20 class RoutingSearchTest < ActionController::IntegrationTest
21 def test_search
21 def test_search
22 assert_routing(
22 assert_routing(
23 { :method => 'get', :path => "/search" },
23 { :method => 'get', :path => "/search" },
24 { :controller => 'search', :action => 'index' }
24 { :controller => 'search', :action => 'index' }
25 )
25 )
26 assert_routing(
27 { :method => 'get', :path => "/projects/foo/search" },
28 { :controller => 'search', :action => 'index', :id => 'foo' }
29 )
26 end
30 end
27 end
31 end
General Comments 0
You need to be logged in to leave comments. Login now