<?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" xmlns="http://ofbiz.apache.org/Widget-Menu" xsi:schemaLocation="http://ofbiz.apache.org/Widget-Menu http://ofbiz.apache.org/dtds/widget-menu.xsd">

    <menu name="SystemInfoNotes">
        <menu-item name="deleteAll" title="${uiLabelMap.CommonDeleteAll}">
            <link target="deleteAllSystemNotes"/>
        </menu-item>
        <menu-item name="createPublicMsg" title="${uiLabelMap.CommonExtCreatePublicMessage}">
            <condition>
                <if-has-permission permission="COMMONEXT_PUBLMSG"/>
            </condition>
            <link target="${parameters._LAST_VIEW_NAME_}">
                <parameter param-name="portalPageId" from-field="parameters.portalPageId"/>
                <parameter param-name="createPublicMsg" value="true"/>
            </link>
        </menu-item>
    </menu>
    
</menus>
