Project

General

Profile

Actions

Feature #2142

closed

Change the way plugin routes are integrated

Added by Jean-Baptiste Barth about 16 years ago. Updated about 15 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Plugin API
Target version:
Start date:
2008-11-07
Due date:
% Done:

100%

Estimated time:
Resolution:
Fixed

Description

Plugin's routes can today ( r1977 ) be handled thanks to a hook in the config/routes.rb :

Redmine::Hook.call_hook :routes, :map => map
The 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.

Actions #1

Updated by Eric Davis about 16 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'
Actions #2

Updated by Eric Davis about 16 years ago

FYI: for documentation, the map object in my example isn't required, this will also work

# vendor/plugins/redmine_test_plugin/routes.rb
home '', :controller => 'projects', :action => 'index'
Actions #3

Updated by Jean-Baptiste Barth about 15 years ago

Just a quick note here since I may not be the only one to miss that : this way to configure routes in plugins has changed with r2887. You should have a look at this thread where Eric explains how to update your plugins.

Actions

Also available in: Atom PDF