Change the way plugin routes are integrated
|Assignee:||Eric Davis||% Done:|
Plugin's routes can today ( r1977 ) be handled thanks to a hook in the config/routes.rb :
Redmine::Hook.call_hook :routes, :map => mapThe developper has to define his routes in vendor/plugins/redmine_myplugin/init.rb (in the register block) :
class MyRoutes < Redmine::Hook::Listener def routes(context) context[:map].resources :mymodel context[:map].connect 'mypath/:blah', :controller => 'mycontroller' #etc. end end Redmine::Hook.add_listener(MyRoutes)
Maybe it is possible to use Engines system to handle each plugin's routes, with "map.from_plugin" method :
- in config/routes.rb
Rails.plugins.each do |plugin| map.from_plugin plugin.name.to_sym end- in vendor/plugins/redmine_myplugin/routes.rb
resources :mymodel connect 'mypath/:blah', :controller => 'mycontroller'
It has been discussed here in the forum. Maybe it would be easier to use for plugin developpers, but I'm not 100% sure routes overriding will produce the same effect.
#1 Updated by Eric Davis about 9 years ago
- Status changed from New to Closed
- Target version set to 0.8
- % Done changed from 0 to 100
- Resolution set to Fixed
I really like your suggestion and changed the way plugin routing works in r1991. Plugins'
routes.rb are now added automatically to Redmine's routing, including the ability to override Redmine's default routing.
Here's an example I put in a plugin to override the home page with the project list.
# vendor/plugins/redmine_test_plugin/routes.rb map.home '', :controller => 'projects', :action => 'index'