ilscipio/scipio-erp

View on GitHub
framework/webtools/widget/MiscMenus.xml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is subject to the terms and conditions defined in the
files 'LICENSE' and 'NOTICE', which are part of this source
code package.
-->

<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-menu.xsd">

    <!-- Mostly-demo and mostly-testing menus (LayoutDemo) -->
    
    <menu name="LayoutDemoButton" extends="CommonButtonBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
        <menu-item name="Selected" title="${uiLabelMap.CommonSelected}">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="Enabled" title="${uiLabelMap.CommonEnabled}">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
    </menu>

    <!-- SCIPIO: nested menu test -->
    <menu name="LayoutDemoNestedButton" extends="CommonButtonBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
        <actions>
            <script lang="groovy"><![CDATA[
                org.ofbiz.base.util.Debug.logInfo('Test: Hello from LayoutDemoNestedButton menu actions', "LayoutDemoNestedButton.groovy");
            ]]></script>
        </actions>
        <menu-item name="top1" title="Toplevel1">
            <actions>
                <script lang="groovy"><![CDATA[
                    org.ofbiz.base.util.Debug.logInfo('Test: Hello from Toplevel1 menu-item actions', "LayoutDemoNestedButton.groovy");
                ]]></script>
            </actions>
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
            <menu-item name="nested1" title="Nested1">
                <actions>
                    <script lang="groovy"><![CDATA[
                        org.ofbiz.base.util.Debug.logInfo('Test: Hello from Nested1 menu-item actions', "LayoutDemoNestedButton.groovy");
                    ]]></script>
                </actions>
                <link target="${demoTargetUrl}">
                    <parameter param-name="demoParam1"/>
                    <parameter param-name="demoParam2"/>
                    <parameter param-name="demoParam3"/>
                </link>
            </menu-item>
            <menu-item name="nested2" title="Nested2" sub-menu-style="+my-sub-menu" sub-menu-title="My Sub Menu Title">
                <link target="${demoTargetUrl}">
                    <parameter param-name="demoParam1"/>
                    <parameter param-name="demoParam2"/>
                    <parameter param-name="demoParam3"/>
                </link>
                <menu-item name="nestednested1" title="Nestednested1">
                    <link target="${demoTargetUrl}" link-type="hidden-form">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
                <menu-item name="nestednested2" title="Nestednested2">
                    <link target="${demoTargetUrl}">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
                <!-- SCIPIO: This is a sub-dropdown button menu, implemented manually. It's better to use sub-menu-model now (see other menu), but this would be roughly equivalent (in this case). -->
                <menu-item name="nestednested3" sub-menu-style="menu-type-button-dropdown" sub-menu-title="Nestednested3">
                    <menu-item name="nestednestednested1" title="Nestednestednested1" link-style="=${styles.menu_button_dropdown_item}" selected-style="=${styles.menu_button_dropdown_itemactive}">
                        <link target="${demoTargetUrl}">
                            <parameter param-name="demoParam1"/>
                            <parameter param-name="demoParam2"/>
                            <parameter param-name="demoParam3"/>
                        </link>
                    </menu-item>
                    <menu-item name="nestednestednested2" title="Nestednestednested2" link-style="=${styles.menu_button_dropdown_item}" selected-style="=${styles.menu_button_dropdown_itemactive}">
                        <link target="${demoTargetUrl}" link-type="hidden-form">
                            <parameter param-name="demoParam1"/>
                            <parameter param-name="demoParam2"/>
                            <parameter param-name="demoParam3"/>
                        </link>
                    </menu-item>
                </menu-item>
            </menu-item>
            <menu-item name="nested3" title="Nested3"></menu-item>
            <menu-item name="nested4" title="Nested4"></menu-item>
        </menu-item>
        <menu-item name="top2" title="Toplevel2">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="top3" title="Toplevel3">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
                <image src="/images/products/GZ-1000/small.png" />
            </link>
        </menu-item>
    </menu>
    
    <!-- SCIPIO: Just here to demonstrate sub-menu-model local lookup -->
    <menu name="LayoutDemoButtonDropdownMenuModel" extends="CommonButtonDropdownMenu" extends-resource="component://common/widget/CommonMenus.xml"
        default-link-style="+my-dropdown-item-link">
    </menu>
    
    <!-- SCIPIO: button menu with nested button-dropdown test -->
    <menu name="LayoutDemoButton2" menu-container-style="+my-special-button-menu" extends="CommonButtonBarMenu" extends-resource="component://common/widget/CommonMenus.xml" 
        default-widget-style="+my-list-item">
        <menu-item name="top1" title="Toplevel1" widget-style="my-list-item-override-style">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="top2" title="Toplevel2" widget-style="+my-list-item-extra-style">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <!-- SCIPIO: It's now possible to use an inlined sub-menu of different type (with button-dropdown, omit the menu-item title and link and 
            use sub-menu-title instead). sub-menu-model means the default styles will be fetched from the specified menu
            instead of this top-level menu. -->
        <menu-item name="top3">
            <sub-menu model="component://common/widget/CommonMenus.xml#CommonButtonDropdownMenu" title="Sub-menu, as button-dropdown">
                <menu-item name="nestednestednested1" title="Nestednestednested1">
                    <link target="${demoTargetUrl}">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
                <menu-item name="nestednestednested2" title="Nestednestednested2">
                    <link target="${demoTargetUrl}" link-type="hidden-form">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
            </sub-menu>
        </menu-item>
        <!-- SCIPIO: DEPRECATED, OLD SYNTAX, DO NOT USE. ALWAYS USE SUB-MENU ELEMENT FROM NOW ON. -->
        <menu-item name="top3b" sub-menu-model="component://common/widget/CommonMenus.xml#CommonButtonDropdownMenu" sub-menu-title="Sub-menu, as button-dropdown (deprecated)">
            <menu-item name="nestednestednested1" title="Nestednestednested1">
                <link target="${demoTargetUrl}">
                    <parameter param-name="demoParam1"/>
                    <parameter param-name="demoParam2"/>
                    <parameter param-name="demoParam3"/>
                </link>
            </menu-item>
            <menu-item name="nestednestednested2" title="Nestednestednested2">
                <link target="${demoTargetUrl}" link-type="hidden-form">
                    <parameter param-name="demoParam1"/>
                    <parameter param-name="demoParam2"/>
                    <parameter param-name="demoParam3"/>
                </link>
            </menu-item>
        </menu-item>
        <menu-item name="top4" title="Toplevel4" disable-if-empty="nonExistentVar">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="top5">
            <sub-menu id="demo-top5-sub-menu" model="component://webtools/widget/MiscMenus.xml#LayoutDemoButtonDropdownMenuModel" title="Sub-menu, as button-dropdown">
                <menu-item name="nestednestednested1" title="Nestednestednested1">
                    <link target="${demoTargetUrl}">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
                <menu-item name="nestednestednested2" title="Nestednestednested2">
                    <link target="${demoTargetUrl}" link-type="hidden-form">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
            </sub-menu>
        </menu-item>
        <!-- A full menu include. The "full" scope is required to preserve the included menu's style. -->
        <menu-item name="top6"> 
            <sub-menu include="LayoutDemoButtonDropdown" model-scope="full" title="Separate sub-menu, as button-dropdown" />
        </menu-item>
        <!-- Modifies the previous to exclude one of the items and add an extra before -->
        <menu-item name="top7">
            <sub-menu name="LayoutDemoButtonDropdownTest2" include="LayoutDemoButtonDropdown" model-scope="full" title="Separate sub-menu, as button-dropdown, sorted"
                items-sort-mode="displaytext-ignorecase">
                <!-- extra items -->
                <include-elements menu-name="LayoutDemoTest2" recursive="full"/>
                <!-- This menu-ref overrides the sub-menu include (the "include" attribute
                    in the "sub-menu" element above) default behavior. Here we exclude an item. -->
                <include-elements menu-ref="sub-menu-model"><!-- recursive="full" is the default here -->
                    <exclude-item name="Enabled"/>
                </include-elements>
                <!-- demoTestVar1 comes from the actions of LayoutDemoTest2/1 -->
                <menu-item name="TestTest" title="Extra item ${demoTestVar1}">
                    <link target="${demoTargetUrl}" link-type="hidden-form">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
            </sub-menu>
        </menu-item>
        <!-- RARE CASE: Two submenus. technically supported, but usually best avoided. -->
        <menu-item name="top6"> 
            <sub-menu style="+two-sub-menu-first" name="LayoutDemoButtonDropdownTest3" include="LayoutDemoButtonDropdown" model-scope="full" title="Two submenus (1)" />
            <sub-menu style="+two-sub-menu-second" name="LayoutDemoButtonDropdownTest4" include="LayoutDemoButtonDropdown" model-scope="full" title="Two submenus (2)" />
        </menu-item>
    </menu>
    
    <menu name="LayoutDemoButtonDropdown" title="Dropdown button menu" extends="CommonButtonDropdownMenu" extends-resource="component://common/widget/CommonMenus.xml">
        <menu-item name="Selected" title="${uiLabelMap.CommonSelected}">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="Enabled" title="${uiLabelMap.CommonEnabled}">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
    </menu>

    <menu name="LayoutDemoTest1">
        <actions>
            <set field="demoTestVar1" value="demoTestValue1" />
        </actions>
        <menu-item name="DemoTest1" title="Demo Test 1">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="DemoTest2" title="Demo Test 2">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
    </menu>
    
    <menu name="LayoutDemoTest2">
        <include-elements menu-name="LayoutDemoTest1" />
        <menu-item name="DemoTest3" title="Demo Test 3">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
            </link>
        </menu-item>
        <menu-item name="DemoTest4" title="Demo Test 4">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
            </link>
        </menu-item>
    </menu>
    
    <menu name="LayoutDemoButton2NoSubMenus" extends="CommonButtonBarMenu" extends-resource="component://common/widget/CommonMenus.xml"><!-- Excludes sub-menus -->
        <include-elements menu-name="LayoutDemoButton2" sub-menus="none"/>
        <menu-item name="top7">
            <!-- since we specified this sub-menu manually, it should be left alone by the above filter -->
            <sub-menu name="LayoutDemoButtonDropdownTest2" include="LayoutDemoButtonDropdown" model-scope="full" title="Separate sub-menu, as button-dropdown, sorted"
                items-sort-mode="displaytext-ignorecase">
                <!-- extra items -->
                <include-elements menu-name="LayoutDemoTest2" recursive="full"/>
                <!-- This menu-ref overrides the sub-menu include (the "include" attribute
                    in the "sub-menu" element above) default behavior. Here we exclude an item. -->
                <include-elements menu-ref="sub-menu-model"><!-- recursive="full" is the default here -->
                    <exclude-item name="Enabled"/>
                </include-elements>
                <!-- demoTestVar1 comes from the actions of LayoutDemoTest2/1 -->
                <menu-item name="TestTest" title="Extra item ${demoTestVar1}">
                    <link target="${demoTargetUrl}" link-type="hidden-form">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
            </sub-menu>
        </menu-item>
    </menu>
    
    <menu name="LayoutDemoTest3">
        <menu-item name="DemoTest1" title="Demo Test 1">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
            </link>
        </menu-item>
        <menu-item name="DemoTest2" title="Demo Test 2">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
            </link>
            <sub-menu>
                <menu-item name="DemoTestNested1" title="Demo Test Nested 1">
                    <link target="${demoTargetUrl}">
                        <parameter param-name="demoParam1"/>
                    </link>
                    <sub-menu>
                        <menu-item name="DemoTestNestedNested1" title="Demo Test Nested Nested 1">
                            <link target="${demoTargetUrl}">
                                <parameter param-name="demoParam1"/>
                            </link>
                        </menu-item>
                        <menu-item name="DemoTestNestedNested2" title="Demo Test Nested Nested 2">
                            <link target="${demoTargetUrl}">
                                <parameter param-name="demoParam1"/>
                            </link>
                        </menu-item>
                    </sub-menu>
                </menu-item>
                <menu-item name="DemoTestNested2" title="Demo Test Nested 2">
                    <link target="${demoTargetUrl}">
                        <parameter param-name="demoParam1"/>
                    </link>
                </menu-item>
            </sub-menu>
        </menu-item>
        <menu-item name="myMenuPassedVar1" title="${groovy: context.myMenuPassedVar1 ?: 'missing'}">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
            </link>
        </menu-item>
        <menu-item name="myMenuPassedGlobalVar1" title="${groovy: context.myMenuPassedGlobalVar1 ?: 'missing'}">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
            </link>
        </menu-item>
        <menu-item name="myMenuPassedReqAttrib1" title="${groovy: request.getAttribute('myMenuPassedReqAttrib1') ?: 'missing'}">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
            </link>
        </menu-item>
    </menu>
    
    <menu name="WebtoolsPlainSiteMapDemo" selected-menu-context-field-name="activeMainMenu" selected-menuitem-context-field-name="activeMainMenuItem">
        <!-- To achieve this, we can force the scope of all sub-menus to exclude styling using "func" or "none" -->
        <include-menu-items menu-name="WebtoolsAppSideBar" resource="component://webtools/widget/Menus.xml" force-sub-menu-model-scope="none"/>
    </menu> 

    <menu name="WebtoolsPlainSiteMapDemo2">
        <include-menu-items menu-name="WebtoolsAppSideBar" resource="component://webtools/widget/Menus.xml"/>
    </menu> 
    
    <!-- alternate way using weird extends -->
    <menu name="WebtoolsPlainSiteMapDemo3" extends="WebtoolsPlainSiteMapDemo2" force-all-sub-menu-model-scope="func">
        <menu-item name="extraInsertedItem" title="Extra inserted item">
            <!-- here, the model style will be ignored because of force-all-sub-menu-model-scope (model effectively useless).
                to honor its style, use only force-extends-sub-menu-model-scope="none" (or "func") instead-->
            <sub-menu id="demo-top5-sub-menu" model="component://webtools/widget/MiscMenus.xml#LayoutDemoButtonDropdownMenuModel" title="Sub-menu, as button-dropdown">
                <menu-item name="nestednestednested1" title="Nestednestednested1">
                    <link target="${demoTargetUrl}">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
                <menu-item name="nestednestednested2" title="Nestednestednested2">
                    <link target="${demoTargetUrl}" link-type="hidden-form">
                        <parameter param-name="demoParam1"/>
                        <parameter param-name="demoParam2"/>
                        <parameter param-name="demoParam3"/>
                    </link>
                </menu-item>
            </sub-menu>
        </menu-item>
    </menu> 
    
    <menu name="WebtoolsInlineSectionMenuDemo">
        <menu-item name="item1" title="Inline-Section Menu Item 1">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="item2" title="Inline-Section Menu Item 2">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
    </menu> 

    <menu name="WebtoolsMenuActionsDemo1">
        <actions>
            <set field="commonActionField6" value="This value 6 was set in WebtoolsMenuActionsDemo1. [SUCCESS]"/>
            <set field="commonActionField7" value="This value 7 was set in WebtoolsMenuActionsDemo1 but should be overridden... [ERROR]"/>
            <set field="commonActionField8" value="This value 8 was set in WebtoolsMenuActionsDemo1 but should be overridden... [ERROR]"/>
            <set field="commonActionField9" value="This value 9 was set in WebtoolsMenuActionsDemo1 but should be overridden... [ERROR]"/>
        </actions>
    </menu> 
    
    <menu name="WebtoolsMenuActionsDemo2">
        <actions>
            <set field="commonActionField7" value="This value 7 was set in WebtoolsMenuActionsDemo2. [SUCCESS]"/>
            <set field="commonActionField8" value="This value 8 was set in WebtoolsMenuActionsDemo2 but should be overridden... [ERROR]"/>
            <set field="commonActionField9" value="This value 9 was set in WebtoolsMenuActionsDemo2 but should be overridden... [ERROR]"/>
        </actions>
    </menu> 
    
    <menu name="WebtoolsMenuActionsDemo3">
        <actions>
            <set field="commonActionField8" value="This value 8 was set in WebtoolsMenuActionsDemo3. [SUCCESS]"/>
            <set field="commonActionField9" value="This value 9 was set in WebtoolsMenuActionsDemo3 but should be overridden... [ERROR]"/>
        </actions>
    </menu> 
    
    <menu name="WebtoolsMenuActionsDemo4" extends="WebtoolsMenuActionsDemo1">
        <!-- THREE possible ways to include actions here! -->
        <include-actions menu-name="WebtoolsMenuActionsDemo2"/><!-- STATIC, textual include (this is rarely used) -->
        <actions>
            <include-menu-actions name="WebtoolsMenuActionsDemo3"/><!-- DYNAMIC, non-textual include -->
            <set field="commonActionField9" value="This value 9 was set in WebtoolsMenuActionsDemo4. [SUCCESS]"/>
        </actions>
    </menu>
    
    <menu name="TargetedRenderingTestMenu1" id="TargetedRenderingTestMenu1">
        <menu-item name="item1" title="Inline-Section Menu Item 1">
            <link target="${demoTargetUrl}">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
        <menu-item name="item2" title="Inline-Section Menu Item 2">
            <link target="${demoTargetUrl}" link-type="hidden-form">
                <parameter param-name="demoParam1"/>
                <parameter param-name="demoParam2"/>
                <parameter param-name="demoParam3"/>
            </link>
        </menu-item>
    </menu> 

</menus>