To me extend seems clear but I agree it does conflict with the way that term is used elsewhere in the framework. I don't really like merge though, it doesn't feel like an accurate description of what is happening. Any other ideas anyone?
Either way, I'd document the xsd so no one will be confused for very long. For menus, I think it would need to be similar to this controller approach, the framework will need to know about the extensions beforehand. I haven't really thought much about extending menus at this stage, I'll give it some thought and send any ideas here when they come to me. Regards Scott On 2/05/2010, at 6:04 PM, Bruno Busco wrote: > Thank you Scott for working on this feature. > "plug-in" type extensions will help a lot. > > I agree with you, I prefer the latter solution also. > It simply overrides the entries in a single file with the ones contentained > in a new one. Crystal clear. > > Wouldn't it be better to use the "merge" term instead of the "extend" to > differentiate from the "extension" mechanism that is already in place? > > About the menu widget, I remember we talk about some time ago. > At that time I proposed something like a "merge" feature more than an > extension. > This was because base menu items should be added/modified/deleted in the > plugin file. > There should be also some way to specify in which place the new menu entries > are shown in the existent menu. > > Thank you, > Bruno > > 2010/5/2 Scott Gray <[email protected]> > >> On 1/05/2010, at 12:35 AM, Scott Gray wrote: >> >>> On 30/04/2010, at 1:49 PM, Scott Gray wrote: >>> >>>> What about adding something like the following to ofbiz-component.xml >> schema >>>> <extend-web-app name="order" >>>> include-controller="path/to/controller.xml" >>>> /> >>> >>> Finding the webapp to extend doesn't look so easy, it looks like it would >> need to be something like: >>> <extend-webapp server-name="default-server" mount-point="/ordermgr"> >>> That would be the only way to be sure that you're extending the correct >> webapp. The name attribute is really only informational and does nothing, I >> could for example name every webapp in OFBiz "order" and it would have no >> effect whatsoever. >> >> So I ended up doing two implementations: >> <!-- extends the catalog webapp with the ordermgr's controller from a >> hot-deploy component --> >> >> <extend-webapp server="default-server" mount-point="/catalog"> >> <controller-extension >> location="../../applications/order/webapp/ordermgr/WEB-INF/controller.xml"/> >> </extend-webapp> >> >> and: >> <!-- extends the catalog's controller with the ordermgr's controller >> from a hot-deploy component --> >> >> <extend-controller >> base-location="component://product/webapp/catalog/WEB-INF/controller.xml" >> >> extend-location="component:///order/webapp/ordermgr/WEB-INF/controller.xml"/> >> >> And I prefer the latter for a number of reasons: >> - The former requires that you supply a ServletContext (or server name and >> mount point) when retrieving a ControllerConfig and a number of calling >> methods do not have that information available >> - The latter doesn't depend on the mount point or server name meaning that >> you can change them at will without breaking the extensions >> - The latter allows you to extend controllers that don't have a webapp, for >> example you can extend common-controller.xml and then your extensions will >> be available to everything that includes it. >> - The implementation on the latter feels a lot cleaner >> >> Any thoughts? >> >> Both work and I really like this feature, having the ability to plug >> additional functionality into the base apps so easily seems pretty cool. >> It's a pity I didn't decide to work on this earlier for 10.04. >> >> I think the next step would be to add a similar type of feature for >> extending the menu widget so that you don't have to override >> view-maps/screens to add access to extensions. >> >> Regards >> Scott
smime.p7s
Description: S/MIME cryptographic signature
