Hi Pierre, The same reason that made me pick the (possibly overriden) component name. Jacopo also suggested the webapp name (we miss a part of the thread here, refer to it if needed) But that's not how the HELP is coded at the moment. It uses the component name.
Also to use _WEBAPP_NAME_ (note the _ at end), since it's not in parameters but is a session attribute, we would also need to put it in context in ScreenRenderer.java using something like context.put("webappName", session.getAttribute("_WEBAPP_NAME_") or context.put("webappName", UtilHttp.getApplicationName(request)) I don't see a plus compared to my solution. The only drawback of my solution is that the localDispatcherName *MUST* be named after the component name. But it's the case for all webapps so far. And I don't see a need to change this (very useful) convention. Disclaimer: I did not look yet at how the helpTopic var is used to render the help, just followed the trend. Maybe using the webapp is possible... Jacques Pierre Smits wrote: > Hi Jacques, > > Why not use the '_WEBAPP_NAME' variable. That is already available in the > parameter list. You could even avoid transforming it to upper case. A one > time conversion of the data to the appropriate case would then align the > data. > > Regards, > > Pierre Smits > > *ORRTIZ.COM <http://www.orrtiz.com>* > Services & Solutions for Cloud- > Based Manufacturing, Professional > Services and Retail & Trade > http://www.orrtiz.com > > > On Fri, Sep 13, 2013 at 12:02 PM, Jacques Le Roux < > jacques.le.r...@les7arts.com> wrote: > >> Jacopo Cappellato wrote: >>> is a general issue caused by a wrong design in the generation of help >> links; specifically, the issue is that in >>> >>> <set field="helpTopic" value="${groovy: >> parameters.componentName.toUpperCase() + '_' + >> requestAttributes._CURRENT_VIEW_}"/> >>> >>> the name of the help file is composed using the component name; this is >> a wrong approach and could be solved, for instance, by >>> using the webapp name instead of the component name; >> >> As it is now, it should not be the webapp name but the component name or >> the overriden component name. >> >> We could do it like this (both cases will be covered as long as the >> web.xml file of the overriding webapp is correct) >> >> Index: applications/commonext/widget/CommonScreens.xml >> =================================================================== >> --- applications/commonext/widget/CommonScreens.xml (revision 1522780) >> +++ applications/commonext/widget/CommonScreens.xml (working copy) >> @@ -45,8 +45,7 @@ >> <set field="layoutSettings.middleTopLink2" >> value="${lastSystemInfoNote2.moreInfoUrl}${groovy: if >> (lastSystemInfoNote2&&lastSystemInfoNote2.moreInfoItemName&&lastSystemInfoNote2.moreInfoItemId)"?" >> + lastSystemInfoNote2.moreInfoItemName + "=" + >> lastSystemInfoNote2.moreInfoItemId + "&id=" + >> lastSystemInfoNote2.moreInfoItemId;}"/> >> <set field="layoutSettings.middleTopLink3" >> value="${lastSystemInfoNote3.moreInfoUrl}${groovy: if >> (lastSystemInfoNote3&&lastSystemInfoNote3.moreInfoItemName&&lastSystemInfoNote3.moreInfoItemId)"?" >> + lastSystemInfoNote3.moreInfoItemName + "=" + >> lastSystemInfoNote3.moreInfoItemId + "&id=" + >> lastSystemInfoNote3.moreInfoItemId;}"/> >> <!-- Help link actions --> >> - <!--<set field="helpTopic" value="${groovy: webSiteId + >> '_' + requestAttributes._CURRENT_VIEW_}"/>--> >> - <set field="helpTopic" value="${groovy: >> parameters.componentName.toUpperCase() + '_' + >> requestAttributes._CURRENT_VIEW_}"/> >> + <set field="helpTopic" value="${groovy: >> applicationName.toUpperCase() + '_' + requestAttributes._CURRENT_VIEW_}"/> >> <entity-and list="pageAvail" entity-name="ContentAssoc"> >> <field-map field-name="mapKey" >> from-field="helpTopic"/> >> </entity-and> >> Index: framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java >> =================================================================== >> --- framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java >> (revision 1522780) >> +++ framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java >> (working copy) >> @@ -220,6 +220,8 @@ >> if (servletContext != null) { >> String rootDir = (String) context.get("rootDir"); >> String webSiteId = (String) context.get("webSiteId"); >> + String localDispatcherName = (String) >> servletContext.getAttribute("localDispatcherName"); >> + context.put("applicationName", localDispatcherName); >> String https = (String) context.get("https"); >> if (UtilValidate.isEmpty(rootDir)) { >> rootDir = servletContext.getRealPath("/"); >> >> Thanks for your help Jacopo, I really went on a wrong track, my apologies >> >> >> Jacques