@coredevs - I've submitted a patch ([url=http://open.silverstripe.com/ticket/2826]2826[/url]) for ModelAdmin but I couldn't set the milestone/version to 2.3. Could someone change it?
The purpose of the patch is to fix a css issue with subclassed ModelAdmin's, resolve the issue around the Link() method and to suggest a couple of further improvements.
At the moment, it looks like you wanted to interrogate director for the correct URL, but it occurred to me that in your _config file, you have to send directives to Director and LeftAndMain to set up your controllers etc.
It would be preferable to encapsulate that logic inside ModelAdmin itself. For example, instead of:
'admin/myadmin' => 'MyAdmin',
you would do:
Since you would keep the panel name and url inside of MyAdmin, and it already knows what class it is, the only other functionality that you might want is the ability to move it around the menu and/or set director priorities.
Consequently, since it is aware of it's url you can return Link() in a CMSMain friendly form.
It's a small change, but it solves the Link() issue, it provides a friendly way to add menu items and director instructions and looks nicer all round.