<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->

<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-menu.xsd">
    
    <menu name="SetupAppBar" title="${uiLabelMap.SetupApp}" extends="CommonAppBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
        <menu-item name="main" title="${uiLabelMap.SetupInitialSetup}">
            <link target="initialsetup"/>
        </menu-item>
        <menu-item name="export" title="${uiLabelMap.PageTitleEntityExportAll}">
            <link target="EntityExportAll"/>
        </menu-item>
    </menu>
    
    <menu name="SetupSubTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml"
        selected-menuitem-context-field-name="tabButtonItemTop">
        <menu-item name="organization" title="${uiLabelMap.SetupOrganization}">
            <condition>
                <not><if-empty field="partyId"/></not>
            </condition>
            <link target="initialsetup"/>
        </menu-item>
        <menu-item name="facility" title="${uiLabelMap.SetupFacility}">
            <condition>
                <not><if-empty field="partyId"/></not>
            </condition>
            <link target="EditFacility">
                <parameter param-name="partyId"/>
            </link>
        </menu-item>
        <menu-item name="productstore" title="${uiLabelMap.SetupProductStore}">
            <condition>
                <not><if-empty field="partyId"/></not>
            </condition>
            <link target="EditProductStore">
                <parameter param-name="partyId"/>
            </link>
        </menu-item>
        <menu-item name="website" title="${uiLabelMap.SetupWebSite}">
            <condition>
                <not><if-empty field="partyId"/></not>
            </condition>
            <link target="EditWebSite">
                <parameter param-name="partyId"/>
            </link>
        </menu-item>
        <menu-item name="firstcustomer" title="${uiLabelMap.SetupFirstCustomer}">
            <condition>
                <not><if-empty field="partyId"/></not>
            </condition>
            <link target="firstcustomer"/>
        </menu-item>
        <menu-item name="firstproduct" title="${uiLabelMap.SetupFirstProduct}">
            <condition>
                <not><if-empty field="partyId"/></not>
            </condition>
            <link target="firstproduct">
                <parameter param-name="partyId"/>
            </link>
        </menu-item>
    </menu>
    
    <menu name="FirstProductTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml"
        default-menu-item-name="productcatalog">
        <menu-item name="productcatalog" title="${uiLabelMap.SetupProductCatalog}">
            <link target="firstproduct">
                <parameter param-name="partyId"/>
            </link>
        </menu-item>
        <menu-item name="productcategory" title="${uiLabelMap.ProductCategory}">
            <link target="EditCategory">
                <parameter param-name="partyId"/>
            </link>
        </menu-item>
        <menu-item name="product" title="${uiLabelMap.ProductProduct}">
            <link target="EditProduct">
                <parameter param-name="partyId"/>
            </link>
        </menu-item>
    </menu>
    
    <menu name="personUpdate">
        <menu-item name="update" title="${uiLabelMap.CommonUpdate}">
            <link target="editperson">
                <parameter param-name="customerPartyId" from-field="customerPartyId"/>
                <parameter param-name="organizationPartyId" from-field="organizationPartyId"/>
            </link>
        </menu-item>
    </menu>
    
    <menu name="groupUpdate">
        <menu-item name="update" title="${uiLabelMap.CommonUpdate}">
            <link target="editpartygroup">
                <parameter param-name="partyId" from-field="organizationPartyId"/>
            </link>
        </menu-item>
    </menu>
</menus>
