<?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="ForumGroupTabBar" extends="CommonTabBarMenu"
        extends-resource="component://common/widget/CommonMenus.xml">
        <menu-item name="forumGroups" title="${uiLabelMap.FormFieldTitle_forumGroups}">
            <link target="findForumGroups"/>
        </menu-item>
        <menu-item name="forums" title="${uiLabelMap.FormFieldTitle_forums}">
            <link target="findForums">
                <parameter param-name="forumGroupId" from-field="parameters.forumGroupId"/>
            </link>
        </menu-item>
        <menu-item name="forums" title="${uiLabelMap.FormFieldTitle_forums}"/>
        <menu-item name="purposes" title="${uiLabelMap.FormFieldTitle_purposes}">
            <link target="forumGroupPurposes">
                <parameter param-name="forumGroupId" from-field="parameters.forumGroupId"/>
            </link>
        </menu-item>
        <menu-item name="purposes" title="${uiLabelMap.FormFieldTitle_purposes}"/>
        <menu-item name="roles" title="${uiLabelMap.FormFieldTitle_roles}">
            <link target="forumGroupRoles">
                <parameter param-name="forumGroupId" from-field="parameters.forumGroupId"/>
            </link>
        </menu-item>
        <menu-item name="roles" title="${uiLabelMap.FormFieldTitle_roles}"/>
    </menu>
    <menu name="ForumTabBar" extends="CommonTabBarMenu"
        extends-resource="component://common/widget/CommonMenus.xml" default-menu-item-name="Survey"/>
    <menu name="ForumMessagesTabBar" extends="CommonTabBarMenu"
        extends-resource="component://common/widget/CommonMenus.xml">
        <menu-item name="forumGroups" title="${uiLabelMap.FormFieldTitle_forumGroups}">
            <link target="findForumGroups"/>
        </menu-item>
        <menu-item name="forums" title="${uiLabelMap.FormFieldTitle_forums}">
            <link target="findForums">
                <parameter param-name="forumGroupId" from-field="parameters.forumGroupId"/>
            </link>
        </menu-item>
        <menu-item name="forums" title="${uiLabelMap.FormFieldTitle_forums}"/>
        <menu-item name="messageList" title="${uiLabelMap.FormFieldTitle_messageList}">
            <link target="findForumMessages">
                <parameter param-name="forumGroupId" from-field="parameters.forumGroupId"/>
                <parameter param-name="forumId" from-field="parameters.forumId"/>
            </link>
        </menu-item>
        <menu-item name="messageThread" title="${uiLabelMap.FormFieldTitle_messageThread}">
            <link target="findForumThreads">
                <parameter param-name="forumGroupId" from-field="parameters.forumGroupId"/>
                <parameter param-name="forumId" from-field="parameters.forumId"/>
            </link>
        </menu-item>
    </menu>
</menus>
