blob: 0778315f35ded49bd9db64339e86e8bcb6f9cbd3 [file] [log] [blame]
<?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.
-->
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
<screen name="main-decorator">
<!-- The main-decorator screen 'wraps' or 'decorates' all of the screens in the
Example component. It is also decorated - by the GlobalDecorator screen. -->
<section>
<actions>
<!-- base/top/most specific map first, then more common map added for shared labels.
Setting things up this way enables a component to redefine the more common
UI labels. -->
<property-map resource="ExampleUiLabels" map-name="uiLabelMap" global="true"/>
<property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
<!-- The layoutSettings field is a Map that is used to pass variables and layout
information to the GlobalDecorator and any templates that it uses. -->
<set field="layoutSettings.companyName" from-field="uiLabelMap.ExampleCompanyName" global="true"/>
<set field="layoutSettings.companySubtitle" from-field="uiLabelMap.ExampleCompanySubtitle" global="true"/>
<!-- layoutSettings.headerImageUrl can be used to specify an application specific logo; if not set,
then the global layoutSettings.commonHeaderImageUrl (specified in GlobalDecorator) will be used. -->
<!--<set field="layoutSettings.headerImageUrl" value="/images/ofbiz_logo.jpg" global="true"/>-->
<!-- <set field="layoutSettings.headerMiddleBackgroundUrl" value="" global="true"/> -->
<!-- <set field="layoutSettings.headerRightBackgroundUrl" value="" global="true"/> -->
<set field="activeApp" value="example" global="true"/>
<set field="applicationMenuName" value="ExampleAppBar" global="true"/>
<set field="applicationMenuLocation" value="component://example/widget/example/ExampleMenus.xml" global="true"/>
</actions>
<widgets>
<include-screen name="GlobalDecorator" location="component://common/widget/CommonScreens.xml"/>
</widgets>
</section>
</screen>
<screen name="CommonExampleDecorator">
<!-- The CommonExampleDecorator screen decorates a small group of screens that all have
something in common. It is decorated by the main-decorator screen. To see how the
various decorators are combined to build a screen, view the page source of any
Example component screen. HTML comments indicate the start and end points of each
screen and decorator. -->
<section>
<actions>
<set field="headerItem" value="Example"/>
<set field="exampleId" from-field="parameters.exampleId"/>
<entity-one entity-name="Example" value-name="example"/>
</actions>
<widgets>
<decorator-screen name="main-decorator">
<decorator-section name="pre-body">
<section>
<condition>
<and>
<if-has-permission permission="EXAMPLE" action="_VIEW"/>
<not><if-empty field-name="example"/></not>
</and>
</condition>
<widgets>
<include-menu name="EditExample" location="component://example/widget/example/ExampleMenus.xml"/>
</widgets>
</section>
</decorator-section>
<decorator-section name="body">
<section>
<!-- do check for EXAMPLE, _VIEW permission -->
<condition>
<if-has-permission permission="EXAMPLE" action="_VIEW"/>
</condition>
<widgets>
<section>
<condition>
<not><if-empty field-name="example"/></not>
</condition>
<widgets>
<container style="h1"><label>${uiLabelMap.${titleProperty}} ${uiLabelMap.CommonFor} ${example.exampleName} [${exampleId}]</label></container>
<container style="button-bar">
<link target="EditExample" text="${uiLabelMap.ExampleNewExample}" style="buttontext"/>
<link target="ExampleReportHtml?exampleId=${exampleId}" text="${uiLabelMap.CommonPrinterFriendly}" style="buttontext"/>
<link target="ExampleReportPdf?exampleId=${exampleId}" text="${uiLabelMap.CommonPdf}" style="buttontext"/>
</container>
</widgets>
<fail-widgets>
<container style="h1"><label>${uiLabelMap.ExampleNewExample}</label></container>
</fail-widgets>
</section>
<decorator-section-include name="body"/>
</widgets>
<fail-widgets>
<label style="h3">${uiLabelMap.ExampleViewPermissionError}</label>
</fail-widgets>
</section>
</decorator-section>
</decorator-screen>
</widgets>
</section>
</screen>
<screen name="CommonExampleFeatureDecorator">
<section>
<actions>
<set field="headerItem" value="ExampleFeature"/>
<set field="exampleFeatureId" from-field="parameters.exampleFeatureId"/>
<entity-one entity-name="ExampleFeature" value-name="exampleFeature"/>
</actions>
<widgets>
<decorator-screen name="main-decorator" location="${mainDecoratorLocation}">
<decorator-section name="pre-body">
<section>
<condition>
<and>
<if-has-permission permission="EXAMPLE" action="_VIEW"/>
<not><if-empty field-name="exampleFeature"/></not>
</and>
</condition>
<widgets>
<include-menu name="EditExampleFeature" location="component://example/widget/example/ExampleMenus.xml"/>
</widgets>
</section>
</decorator-section>
<decorator-section name="body">
<section>
<!-- do check for EXAMPLE, _VIEW permission -->
<condition>
<if-has-permission permission="EXAMPLE" action="_VIEW"/>
</condition>
<widgets>
<section>
<condition>
<not><if-empty field-name="exampleFeature"/></not>
</condition>
<widgets>
<container style="h1">
<label>${uiLabelMap.${titleProperty}} ${uiLabelMap.CommonFor} ${exampleFeature.description} [${exampleFeatureId}]</label>
</container>
<container style="button-bar">
<link target="EditExampleFeature" text="${uiLabelMap.ExampleNewExampleFeature}" style="buttontext"/>
</container>
</widgets>
<fail-widgets>
<container style="h1"><label>${uiLabelMap.ExampleNewExampleFeature}</label></container>
</fail-widgets>
</section>
<decorator-section-include name="body"/>
</widgets>
<fail-widgets>
<label style="h3">${uiLabelMap.ExampleViewPermissionError}</label>
</fail-widgets>
</section>
</decorator-section>
</decorator-screen>
</widgets>
</section>
</screen>
<screen name="main">
<!-- This is the screen for the Main page in the Example component. A common pattern
in OFBiz is to have each component include a Main page as a starting point for
the user. -->
<section>
<widgets>
<decorator-screen name="main-decorator">
<decorator-section name="body">
<screenlet title="${uiLabelMap.ExampleMainPage}">
<section>
<condition><if-empty field-name="userLogin"/></condition>
<widgets>
<container><label text="${uiLabelMap.ExampleMessage}"/></container>
</widgets>
</section>
<label text="${uiLabelMap.ExampleWelcome}"/>
</screenlet>
</decorator-section>
</decorator-screen>
</widgets>
</section>
</screen>
</screens>