Hi Jacques,

extra-index means nothing to the casual viewer, I'm not even sure if that's the 
best name for this (or if this is the best solution).  At the very least though 
this needs to be documented in the xsd if we ever expect it to be used.  
Otherwise it'll end up just being another piece of confusing code that nobody 
understands.

I don't know why we don't just change this:
> String uniqueItemName = menuItem.getModelMenu().getName() + "_" + 
> menuItem.getName() + "_LF_" + UtilMisc.<String> addToBigDecimalInMap(context, 
> "menuUniqueItemIndex", BigDecimal.ONE);
To generate a string that is guaranteed to be unique.  Why does the form xml 
need to supply an "extra-index"?

Thanks
Scott

On 13/03/2014, at 9:37 AM, [email protected] wrote:

> Author: jleroux
> Date: Wed Mar 12 20:37:56 2014
> New Revision: 1576891
> 
> URL: http://svn.apache.org/r1576891
> Log:
> A slightly modified patch from Rong Nguyen for "Render multiMenu problem when 
> linktype="hidden-form"" https://issues.apache.org/jira/browse/OFBIZ-5557
> 
> Scenario:
> 1. Go to Content webapp
> 2. Go to CompDoc menuitem
> 3. Search
> 4. Go to 'Tree' view
> 5. We can not use 'Up' and 'Down' function
> 
> When menu with linktype="hidden-form" was render for each menu, they has the 
> same name for form element, so it cause error.
> My solution is add extra attribute(extra-index) for Menu, and then in menu 
> definition we provide this attribute and the forms with different name will 
> be rendered.
> My implement was tested in this bug for Content webapp
> 
> jleroux: I have simply amended the up and down labels to have them more 
> legible. I'd have preferred to not have all uppercased, but ran out of time 
> for such a trivial change
> 
> Modified:
>    ofbiz/trunk/applications/content/config/ContentUiLabels.xml
>    ofbiz/trunk/applications/content/widget/compdoc/CompDocMenus.xml
>    ofbiz/trunk/framework/widget/dtd/widget-menu.xsd
>    
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java
>    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java
> 
> Modified: ofbiz/trunk/applications/content/config/ContentUiLabels.xml
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/config/ContentUiLabels.xml?rev=1576891&r1=1576890&r2=1576891&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/content/config/ContentUiLabels.xml (original)
> +++ ofbiz/trunk/applications/content/config/ContentUiLabels.xml Wed Mar 12 
> 20:37:56 2014
> @@ -704,15 +704,15 @@
>         <value xml:lang="zh_TW">合成文檔當前範本</value>
>     </property>
>     <property key="ContentCompDocDown">
> -        <value xml:lang="da">vNed</value>
> -        <value xml:lang="en">vDn</value>
> -        <value xml:lang="fr">vBas</value>
> -        <value xml:lang="it">vGiù</value>
> -        <value xml:lang="ja">v下</value>
> -        <value xml:lang="pt">vDn</value>
> -        <value xml:lang="vi">Tải về (vDn)</value>
> -        <value xml:lang="zh">v下</value>
> -        <value xml:lang="zh_TW">v下</value>
> +        <value xml:lang="da">v Ned</value>
> +        <value xml:lang="en">v Dn</value>
> +        <value xml:lang="fr">v Bas</value>
> +        <value xml:lang="it">v Giù</value>
> +        <value xml:lang="ja">v 下</value>
> +        <value xml:lang="pt">v Dn</value>
> +        <value xml:lang="vi">Tải về (v Dn)</value>
> +        <value xml:lang="zh">v 下</value>
> +        <value xml:lang="zh_TW">v 下</value>
>     </property>
>     <property key="ContentCompDocGeneratePDF">
>         <value xml:lang="da">Generer sammensat PDF</value>
> @@ -832,15 +832,15 @@
>         <value xml:lang="zh_TW">合成文檔範本名稱</value>
>     </property>
>     <property key="ContentCompDocUp">
> -        <value xml:lang="da">^Op</value>
> -        <value xml:lang="en">^Up</value>
> -        <value xml:lang="fr">^Haut</value>
> -        <value xml:lang="it">^Sù</value>
> -        <value xml:lang="ja">^上</value>
> -        <value xml:lang="pt">^Cima</value>
> -        <value xml:lang="vi">Tải lên (^Up)</value>
> -        <value xml:lang="zh">^上</value>
> -        <value xml:lang="zh_TW">^上</value>
> +        <value xml:lang="da">^ Op</value>
> +        <value xml:lang="en">^ Up</value>
> +        <value xml:lang="fr">^ Haut</value>
> +        <value xml:lang="it">^ Sù</value>
> +        <value xml:lang="ja">^ 上</value>
> +        <value xml:lang="pt">^ Cima</value>
> +        <value xml:lang="vi">Tải lên (^ Up)</value>
> +        <value xml:lang="zh">^ 上</value>
> +        <value xml:lang="zh_TW">^ 上</value>
>     </property>
>     <property key="ContentCompDocViewInstances">
>         <value xml:lang="da">Se instanser</value>
> 
> Modified: ofbiz/trunk/applications/content/widget/compdoc/CompDocMenus.xml
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/widget/compdoc/CompDocMenus.xml?rev=1576891&r1=1576890&r2=1576891&view=diff
> ==============================================================================
> --- ofbiz/trunk/applications/content/widget/compdoc/CompDocMenus.xml 
> (original)
> +++ ofbiz/trunk/applications/content/widget/compdoc/CompDocMenus.xml Wed Mar 
> 12 20:37:56 2014
> @@ -162,7 +162,7 @@ under the License.
>             -->
>     </menu>
> 
> -    <menu name="childTemplateLine" menu-container-style="button-bar 
> button-style-1" default-menu-item-name="content" 
> selected-menuitem-context-field-name="currentMenuItemName" title="" 
> type="simple">
> +    <menu extra-index="${contentId}" name="childTemplateLine" 
> menu-container-style="button-bar button-style-1" 
> default-menu-item-name="content" 
> selected-menuitem-context-field-name="currentMenuItemName" title="" 
> type="simple">
>         <menu-item name="edit-inplace" title="${contentName} [${contentId}]">
>             <link target="EditChildCompDoc">
>                 <parameter param-name="contentId"/>
> 
> Modified: ofbiz/trunk/framework/widget/dtd/widget-menu.xsd
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-menu.xsd?rev=1576891&r1=1576890&r2=1576891&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/dtd/widget-menu.xsd (original)
> +++ ofbiz/trunk/framework/widget/dtd/widget-menu.xsd Wed Mar 12 20:37:56 2014
> @@ -49,6 +49,7 @@ under the License.
>             <xs:attribute type="xs:string" name="default-tooltip-style" />
>             <xs:attribute type="xs:string" name="default-selected-style" />
>             <xs:attribute type="xs:string" name="default-align-style" />
> +            <xs:attribute type="xs:string" name="extra-index" />
>             <xs:attribute name="orientation" default="horizontal">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:token">
> 
> Modified: 
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java?rev=1576891&r1=1576890&r2=1576891&view=diff
> ==============================================================================
> --- 
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java 
> (original)
> +++ 
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java 
> Wed Mar 12 20:37:56 2014
> @@ -202,6 +202,9 @@ public class MacroMenuRenderer implement
>         parameters.put("text", link.getText(context));
>         parameters.put("targetWindow", link.getTargetWindow(context));
>         String uniqueItemName = menuItem.getModelMenu().getName() + "_" + 
> menuItem.getName() + "_LF_" + UtilMisc.<String> addToBigDecimalInMap(context, 
> "menuUniqueItemIndex", BigDecimal.ONE);
> +        if(menuItem.getModelMenu().getExtraIndex(context) != null){
> +                     uniqueItemName += "_" + 
> menuItem.getModelMenu().getExtraIndex(context);
> +             }
>         parameters.put("uniqueItemName", uniqueItemName);
>         String linkType = "";
>         if (UtilValidate.isNotEmpty(target)) {
> 
> Modified: 
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java?rev=1576891&r1=1576890&r2=1576891&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java 
> (original)
> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java Wed 
> Mar 12 20:37:56 2014
> @@ -73,6 +73,7 @@ public class ModelMenu extends ModelWidg
>     protected String defaultAlign;
>     protected String defaultAlignStyle;
>     protected String fillStyle;
> +    protected FlexibleStringExpander extraIndex;
> 
>     /** This List will contain one copy of each item for each item name in 
> the order
>      * they were encountered in the service, entity, or menu definition; item 
> definitions
> @@ -158,6 +159,7 @@ public class ModelMenu extends ModelWidg
>                 this.defaultAlign = parent.defaultAlign;
>                 this.defaultAlignStyle = parent.defaultAlignStyle;
>                 this.fillStyle = parent.fillStyle;
> +                this.extraIndex = parent.extraIndex;
>                 this.selectedMenuItemContextFieldName = 
> parent.selectedMenuItemContextFieldName;
>                 this.menuContainerStyleExdr = parent.menuContainerStyleExdr;
>                 if (parent.actions != null) {
> @@ -225,6 +227,8 @@ public class ModelMenu extends ModelWidg
>             this.defaultAlignStyle = 
> menuElement.getAttribute("default-align-style");
>         if (this.fillStyle == null || menuElement.hasAttribute("fill-style"))
>             this.fillStyle = menuElement.getAttribute("fill-style");
> +             if (this.extraIndex == null || 
> menuElement.hasAttribute("extra-index"))
> +            this.setExtraIndex(menuElement.getAttribute("extra-index"));
> 
>         // read all actions under the "actions" element
>         Element actionsElement = UtilXml.firstChildElement(menuElement, 
> "actions");
> @@ -659,5 +663,15 @@ public class ModelMenu extends ModelWidg
>     public List<ModelMenuItem> getMenuItemList() {
>         return menuItemList;
>     }
> +     public String getExtraIndex(Map<String, Object> context) {
> +        try {
> +            return extraIndex.expandString(context);
> +        } catch (Exception ex) {
> +            return "";
> +        }
> +    }
> 
> +    public void setExtraIndex(String extraIndex) {
> +        this.extraIndex = FlexibleStringExpander.getInstance(extraIndex);
> +    }
> }
> 
> 

Reply via email to