I've made another significant refactor to VuFind 2 in order to resolve the VUFIND-605 ticket.

This refactoring decouples tab rendering from the record driver object.  Now, instead of having the record driver tell VuFind which tabs to render, this is instead controlled by a setting in the module.config.php (recorddriver_tabs) which associates record driver classes and tab names (for use in URLs) with tab services (for loading tab-specific logic).  Each tab has a corresponding plugin, as described here:


This makes it easier to add/disable/rename tabs and to share tab functionality between otherwise unrelated record drivers without duplicating code.

There's still room for some more refactoring -- I believe that it may make sense to move some of the work currently done at the view level for certain tabs inside the tab classes.  This may make multi-theme maintenance less complicated and result in lighter-weight view templates.

For the moment, I haven't touched any functionality or templates -- I've just moved the pieces around to support this new mechanism.  I wanted to get this in place as a prerequisite for some of the collections functionality that needs to be ported from the 1.x collections branch into 2.0.

Comments/questions/concerns are always welcome.