WoltLab/WCF — pull request #547 by Gravatronics (2012-03-20 17:40:59+00:00)
Title: Enhances route system

This pull request introduces **major** changes to the route system though the changes in the other currently existing packages are minimal.

1. Routes can have static parts which allows routes like `pages/{pageID}-{pageTitle}` or `{boardID}-{boardTitle}/threads/{threadID}-{threadTitle}`.
2. The `IRouteController` interface is more flexible and its method returns all needed parts to build a link. This way, also other parts than just `title` and `id` can be in the route schema.
3. The link handlers argument `object` has been renamed to `controllerObject` to avoid possible naming conflicts and now can be directly used as controller if the used route has a static controller or the object delivers a controller itself via `getRouteComponentValues()`. If the object should deliver a controller but the link controller has a controller itself given, the explicitly given controller is used (c.f. `User` objects have a default `User` controller which is used in the frontend, for the backend the links have an explicit `controller='UserEdit'`.

If this pull request should be merged, I can open pull requests for the other public packages, the changes are already waiting in their branches.

In general three things have to be changed in other packages with this pull request:

1. You have to update namespaces, since routes have their own namespace now.
2. You have to update the objects which implement the `IRouteController` interface.
3. You have to update own route definitions.