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
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.