Propchange: ofbiz/trunk/framework/widget/dtd/widget-form-ns.xsd
------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/widget/dtd/widget-form-ns.xsd ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/framework/widget/dtd/widget-form-ns.xsd ------------------------------------------------------------------------------ svn:mime-type = text/xsd Added: ofbiz/trunk/framework/widget/dtd/widget-menu-ns.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-menu-ns.xsd?rev=1746302&view=auto ============================================================================== --- ofbiz/trunk/framework/widget/dtd/widget-menu-ns.xsd (added) +++ ofbiz/trunk/framework/widget/dtd/widget-menu-ns.xsd Tue May 31 16:48:09 2016 @@ -0,0 +1,266 @@ +<?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. +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://ofbiz.apache.org/Widget-Menu" targetNamespace="http://ofbiz.apache.org/Widget-Menu"> + <xs:include schemaLocation="http://ofbiz.apache.org/dtds/widget-common.xsd" /> + <xs:element name="menus"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="menu"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="menu"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" ref="actions" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="menu-item" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute name="type" default="simple"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="simple" /> + <xs:enumeration value="cascade" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="title" /> + <xs:attribute type="xs:string" name="tooltip" /> + <xs:attribute type="xs:string" name="default-entity-name" /> + <xs:attribute type="xs:string" name="default-title-style" /> + <xs:attribute type="xs:string" name="default-widget-style" /> + <xs:attribute type="xs:string" name="default-tooltip-style" /> + <xs:attribute type="xs:string" name="default-selected-style" /> + <xs:attribute type="xs:string" name="default-align-style" /> + <xs:attribute type="xs:string" name="extra-index" /> + <xs:attribute name="orientation" default="horizontal"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="vertical" /> + <xs:enumeration value="horizontal" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="extends" /> + <xs:attribute type="xs:string" name="extends-resource" /> + <xs:attribute type="xs:string" name="default-menu-item-name" /> + <xs:attribute type="xs:string" name="default-associated-content-id" /> + <xs:attribute name="default-hide-if-selected" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="menu-width" /> + <xs:attribute type="xs:string" name="default-cell-width" /> + <xs:attribute type="xs:string" name="default-disabled-title-style" /> + <xs:attribute type="xs:string" name="selected-menuitem-context-field-name" /> + <xs:attribute type="xs:string" name="menu-container-style"> + <xs:annotation> + <xs:documentation>The style of the container that encloses the menu items. This + attribute is ignored when the id attribute is not empty.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="default-align" default="left"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="left" /> + <xs:enumeration value="right" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="fill-style" /> + <xs:attribute type="xs:string" name="default-permission-operation" /> + <xs:attribute type="xs:string" name="default-permission-entity-action" /> + </xs:complexType> + </xs:element> + <xs:element name="menu-item"> + <xs:complexType> + <xs:sequence> + <xs:element name="condition" minOccurs="0"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="ConditionRootType"> + <xs:attribute type="xs:string" name="pass-style"> + <xs:annotation> + <xs:documentation> + If a pass-style provided and the condition passes, the widget-style of + the parent menu-item is set with the pass-style. If no pass-style is given, + the widget-style is not changed. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="disabled-style"> + <xs:annotation> + <xs:documentation> + If a disabled-style provided and the condition fails, the disabled-style of + the parent menu-item is set with the disabled-style and processing is allowed to continue. + If no disabled-style is given, the widget-style is not changed and the menu-item is not rendered. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" ref="actions" /> + <xs:element minOccurs="0" ref="link" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="menu-item" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="title" /> + <xs:attribute type="xs:string" name="parent-portal-page-value"> + <xs:annotation> + <xs:documentation>an expanded value of the parentPortalPageId in the Portal entity, will insert buttons using the portalId as the menuitem name portalPageName as the buttom title</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="tooltip" /> + <xs:attribute type="xs:string" name="title-style" /> + <xs:attribute type="xs:string" name="widget-style" /> + <xs:attribute type="xs:string" name="align-style" /> + <xs:attribute type="xs:string" name="tooltip-style" /> + <xs:attribute type="xs:string" name="selected-style" /> + <xs:attribute type="xs:string" name="position" default="1" /> + <xs:attribute type="xs:string" name="associated-content-id" /> + <xs:attribute type="xs:string" name="hide-if-selected" /> + <xs:attribute type="xs:string" name="cell-width" /> + <xs:attribute type="xs:string" name="disable-if-empty" /> + <xs:attribute type="xs:string" name="disabled-title-style" /> + <xs:attribute type="xs:string" name="target-window" /> + <xs:attribute type="xs:string" name="sub-menu" /> + <xs:attribute name="align"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="left" /> + <xs:enumeration value="right" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="link" type="link"/> + + <xs:element name="actions"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllActions"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="entity-and" substitutionGroup="AllActions"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="field-map" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" /> + <xs:choice minOccurs="0"> + <xs:element ref="limit-range" /> + <xs:element ref="limit-view" /> + <xs:element ref="use-iterator" /> + </xs:choice> + </xs:sequence> + <xs:attribute type="xs:string" name="entity-name" use="required" /> + <xs:attribute name="use-cache" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="filter-by-date" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + <xs:enumeration value="by-name" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="list" use="required" /> + <xs:attribute name="result-set-type" default="scroll"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="forward" /> + <xs:enumeration value="scroll" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="entity-condition" substitutionGroup="AllActions"> + <xs:complexType> + <xs:sequence> + <xs:choice minOccurs="0"> + <xs:element ref="condition-expr" /> + <xs:element ref="condition-list" /> + <xs:element ref="condition-object" /> + </xs:choice> + <xs:element minOccurs="0" ref="having-condition-list" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" /> + <xs:choice minOccurs="0"> + <xs:element ref="limit-range" /> + <xs:element ref="limit-view" /> + <xs:element ref="use-iterator" /> + </xs:choice> + </xs:sequence> + <xs:attribute type="xs:string" name="entity-name" use="required" /> + <xs:attribute name="use-cache" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="filter-by-date" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + <xs:enumeration value="by-name" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="distinct" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="delegator-name" /> + <xs:attribute type="xs:string" name="list" use="required" /> + <xs:attribute name="result-set-type" default="scroll"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="forward" /> + <xs:enumeration value="scroll" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> +</xs:schema> Propchange: ofbiz/trunk/framework/widget/dtd/widget-menu-ns.xsd ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/widget/dtd/widget-menu-ns.xsd ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/framework/widget/dtd/widget-menu-ns.xsd ------------------------------------------------------------------------------ svn:mime-type = text/xsd Added: ofbiz/trunk/framework/widget/dtd/widget-screen-ns.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen-ns.xsd?rev=1746302&view=auto ============================================================================== --- ofbiz/trunk/framework/widget/dtd/widget-screen-ns.xsd (added) +++ ofbiz/trunk/framework/widget/dtd/widget-screen-ns.xsd Tue May 31 16:48:09 2016 @@ -0,0 +1,659 @@ +<?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. +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://ofbiz.apache.org/Widget-Screen" targetNamespace="http://ofbiz.apache.org/Widget-Screen"> + <xs:include schemaLocation="http://ofbiz.apache.org/dtds/widget-common.xsd" /> + <xs:element name="screens"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="screen" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="screen"> + <xs:complexType> + <xs:sequence> + <xs:element ref="section" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="transaction-timeout" use="optional"> + <xs:annotation> + <xs:documentation>Transaction timeout in seconds</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="use-transaction" default="true"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="use-cache" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="section" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:sequence> + <xs:element name="condition" type="ScreenConditionRootType" minOccurs="0" /> + <xs:element minOccurs="0" ref="actions" /> + <xs:element minOccurs="0" ref="widgets" /> + <xs:element minOccurs="0" ref="fail-widgets" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" /> + </xs:complexType> + </xs:element> + + <!-- ================ CONDITIONS ================ --> + + <xs:complexType name="ScreenConditionRootType"> + <xs:choice> + <xs:element ref="and" /> + <xs:element ref="or" /> + <xs:element ref="xor" /> + <xs:element ref="not" /> + <xs:element ref="if-service-permission" /> + <xs:element ref="if-has-permission" /> + <xs:element ref="if-entity-permission" /> + <xs:element ref="if-validate-method" /> + <xs:element ref="if-compare" /> + <xs:element ref="if-compare-field" /> + <xs:element ref="if-regexp" /> + <xs:element ref="if-empty" /> + <xs:element ref="if-empty-section" /> + </xs:choice> + </xs:complexType> + + <xs:element name="if-empty-section" substitutionGroup="AllConditionals"> + <xs:complexType> + <xs:attribute type="xs:string" name="section-name" use="required" /> + </xs:complexType> + </xs:element> + + <!-- ================ ACTIONS ================ --> + + <xs:element name="actions"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllActions" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service" substitutionGroup="AllActions"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="field-map" /> + </xs:sequence> + <xs:attribute type="xs:string" name="service-name" use="required" /> + <xs:attribute type="xs:string" name="result-map" /> + <xs:attribute type="xs:string" name="auto-field-map" default="true"> + <xs:annotation> + <xs:documentation>This can be "true", "false" or the name of a Map in the context to use as the source Map for the service context.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="entity-and" substitutionGroup="AllActions"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="field-map" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" /> + <xs:choice minOccurs="0"> + <xs:element ref="limit-range" /> + <xs:element ref="limit-view" /> + <xs:element ref="use-iterator" /> + </xs:choice> + </xs:sequence> + <xs:attribute type="xs:string" name="entity-name" use="required" /> + <xs:attribute name="use-cache" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="filter-by-date" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + <xs:enumeration value="by-name" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="list" use="required" /> + <xs:attribute name="result-set-type" default="scroll"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="forward" /> + <xs:enumeration value="scroll" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="entity-condition" substitutionGroup="AllActions"> + <xs:complexType> + <xs:sequence> + <xs:choice minOccurs="0"> + <xs:element ref="condition-expr" /> + <xs:element ref="condition-list" /> + <xs:element ref="condition-object" /> + </xs:choice> + <xs:element minOccurs="0" ref="having-condition-list" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" /> + <xs:choice minOccurs="0"> + <xs:element ref="limit-range" /> + <xs:element ref="limit-view" /> + <xs:element ref="use-iterator" /> + </xs:choice> + </xs:sequence> + <xs:attribute type="xs:string" name="entity-name" use="required" /> + <xs:attribute name="use-cache" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="filter-by-date" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + <xs:enumeration value="by-name" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="distinct" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="delegator-name" /> + <xs:attribute type="xs:string" name="list" use="required" /> + <xs:attribute name="result-set-type" default="scroll"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="forward" /> + <xs:enumeration value="scroll" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <!-- ================ WIDGETS ================ --> + + <xs:element name="AllWidgets" abstract="true" /> + <xs:element name="widgets"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="fail-widgets"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="column-container" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="column"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllWidgets" /> + </xs:sequence> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="style" /> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="style" /> + </xs:complexType> + </xs:element> + + <xs:element name="container" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllWidgets" /> + </xs:sequence> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="style" /> + <xs:attribute type="xs:string" name="auto-update-target"> + <xs:annotation> + <xs:documentation>The URL to be called for periodic asynchronous area updates. + Some widget rendering environments support asynchronous updates. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="auto-update-interval"> + <xs:annotation> + <xs:documentation>The auto-update interval, in seconds.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="horizontal-separator" substitutionGroup="AllWidgets"> + <xs:complexType mixed="true"> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="name" /> + <xs:attribute type="xs:string" name="style" /> + </xs:complexType> + </xs:element> + <xs:element name="image" substitutionGroup="AllWidgets"> + <xs:complexType mixed="true"> + <xs:attribute type="xs:string" name="src" /> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="style" /> + <xs:attribute type="xs:string" name="width" /> + <xs:attribute type="xs:string" name="height" /> + <xs:attribute type="xs:string" name="border" /> + <xs:attribute type="xs:string" name="alt" /> + <xs:attribute name="url-mode" default="content"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="ofbiz" /> + <xs:enumeration value="content" /> + <xs:enumeration value="raw" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="label" substitutionGroup="AllWidgets"> + <xs:complexType mixed="true"> + <xs:attribute type="xs:string" name="text" /> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="style" /> + </xs:complexType> + </xs:element> + <xs:element name="link" type="link" substitutionGroup="AllWidgets"/> + + <xs:element name="screenlet" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllWidgets" /> + </xs:sequence> + <xs:attribute type="xs:string" name="title"> + <xs:annotation> + <xs:documentation>Title text to be placed in the screenlet title bar.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="id" type="xs:string" /> + <xs:attribute name="name" type="xs:string" /> + <xs:attribute name="collapsible" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="initially-collapsed" type="xs:string" default="false"> + <xs:annotation> + <xs:documentation>When set to true, screenlet will be collapsed initially. Can be an expanded string to get the value from a variable. Defaults to false.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="save-collapsed" default="true"> + <xs:annotation> + <xs:documentation>When set to true, screenlet collapse status is saved as user preference. Defaults to true.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="padded" default="true"> + <xs:annotation> + <xs:documentation>When set to true, screenlet content will be padded. Defaults to true.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="navigation-menu-name"> + <xs:annotation> + <xs:documentation>Name of the screenlet include-menu sub element that will be used for screenlet navigation.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="navigation-form-name"> + <xs:annotation> + <xs:documentation>Name of the screenlet include-form sub element that will be used for screenlet navigation. The form's pagination menu will be included in the screenlet title bar.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="tab-menu-name"> + <xs:annotation> + <xs:documentation>Name of the screenlet include-menu sub element that will be used for the screenlet tab bar.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + + <!-- ================ WIDGETS - Includers ================ --> + + <xs:element name="content" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="content-id" /> + <xs:attribute type="xs:string" name="dataresource-id" /> + <xs:attribute type="xs:string" name="edit-request" /> + <xs:attribute type="xs:string" name="edit-container-style" default="editWrapper" /> + <xs:attribute type="xs:string" name="enable-edit-name" default="enableEdit" /> + <xs:attribute name="xml-escape" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="width"> + <xs:annotation> + <xs:documentation>Used if non-html content to specify width of iframe.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="height"> + <xs:annotation> + <xs:documentation>Used if non-html content to specify height of iframe.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="border"> + <xs:annotation> + <xs:documentation>Used if non-html content to specify border of iframe.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="decorator-screen" substitutionGroup="AllWidgets"> + <xs:annotation> + <xs:documentation> + Renders the named screen and includes the children of this elements at the point where it finds the decorator-section-include tag. + Note that because of the recursive nature of this tag the share-scope attribute is not availalbe. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="decorator-section" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="location" /> + </xs:complexType> + </xs:element> + <xs:element name="decorator-section"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllWidgets" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + </xs:complexType> + </xs:element> + <xs:element name="decorator-section-include" substitutionGroup="AllWidgets"> + <xs:annotation> + <xs:documentation>This is just a place holder to tell the renderer to include the parent container's contents at this point.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:attribute type="xs:string" name="name" use="required" /> + </xs:complexType> + </xs:element> + <xs:element name="include-form" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="location" use="required" /> + <xs:attribute name="share-scope" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="include-grid" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="location" use="required" /> + <xs:attribute name="share-scope" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="include-menu" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="location" use="required" /> + </xs:complexType> + </xs:element> + <xs:element name="include-screen" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="location" /> + <xs:attribute name="share-scope" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="include-tree" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="location" use="required" /> + <xs:attribute name="share-scope" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="include-portal-page" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute name="conf-mode" default="false"> + <xs:annotation> + <xs:documentation>Show the portal in configuration mode.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="use-private" default="true"> + <xs:annotation> + <xs:documentation>If a derived private PortalPage exists for the actual UserLogin than show the private PortalPage instead of the original.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="sub-content" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:attribute type="xs:string" name="content-id" use="required" /> + <xs:attribute type="xs:string" name="map-key" use="required" /> + <xs:attribute type="xs:string" name="edit-request" /> + <xs:attribute type="xs:string" name="edit-container-style" default="editWrapper" /> + <xs:attribute type="xs:string" name="enable-edit-name" default="enableEdit" /> + <xs:attribute name="xml-escape" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="iterate-section" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="section" /> + </xs:sequence> + <xs:attribute type="xs:string" name="entry" use="required" /> + <xs:attribute type="xs:string" name="list" use="required" /> + <xs:attribute type="xs:string" name="key" /> + <xs:attribute type="xs:string" name="view-size" /> + <xs:attribute type="xs:string" name="paginate-target" /> + <xs:attribute type="xs:string" name="paginate" default="${paginate}"> + <xs:annotation> + <xs:documentation>Indicate if this section is paginated or not, true by default.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + + + <!-- ============== Platform Specific Elements =============== --> + <xs:element name="platform-specific" substitutionGroup="AllWidgets"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" ref="html" /> + <xs:element minOccurs="0" ref="swing" /> + <xs:element minOccurs="0" ref="xsl-fo" /> + <xs:element minOccurs="0" ref="xml" /> + <xs:element minOccurs="0" ref="text" /> + <xs:element minOccurs="0" ref="csv" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- ============== HTML Specific Elements =============== --> + <xs:element name="HtmlWidgets" abstract="true" /> + <xs:element name="html"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="HtmlWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="xsl-fo"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="HtmlWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="xml"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="HtmlWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="xls"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="HtmlWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="text"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="HtmlWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="csv"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="HtmlWidgets" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="html-template" substitutionGroup="HtmlWidgets"> + <xs:complexType> + <xs:attributeGroup ref="attlist.html-template" /> + </xs:complexType> + </xs:element> + <xs:attributeGroup name="attlist.html-template"> + <xs:attribute type="xs:string" name="location" use="required" /> + </xs:attributeGroup> + <xs:element name="html-template-decorator" substitutionGroup="HtmlWidgets"> + <xs:annotation> + <xs:documentation> + We don't really want to encourage the use of the html-template-decorator, should be done on the screen level. + To include the sections in the decorator template just use the "render(sectionName)" method "sections" object, FTL example: ${sections.render("main")}. + For more + efficient use the sections.render(sectionName, writer) method should be used, in FTL this would be in a transform or something. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="html-template-decorator-section" /> + </xs:sequence> + <xs:attribute type="xs:string" name="location" use="required" /> + </xs:complexType> + </xs:element> + <xs:element name="html-template-decorator-section"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllWidgets" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + </xs:complexType> + </xs:element> + <!-- ============== Swing Specific Elements =============== --> + <xs:element name="swing"> + <xs:complexType /> + </xs:element> +</xs:schema> Propchange: ofbiz/trunk/framework/widget/dtd/widget-screen-ns.xsd ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/widget/dtd/widget-screen-ns.xsd ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/framework/widget/dtd/widget-screen-ns.xsd ------------------------------------------------------------------------------ svn:mime-type = text/xsd Added: ofbiz/trunk/framework/widget/dtd/widget-tree-ns.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-tree-ns.xsd?rev=1746302&view=auto ============================================================================== --- ofbiz/trunk/framework/widget/dtd/widget-tree-ns.xsd (added) +++ ofbiz/trunk/framework/widget/dtd/widget-tree-ns.xsd Tue May 31 16:48:09 2016 @@ -0,0 +1,251 @@ +<?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. +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://ofbiz.apache.org/Widget-Tree" targetNamespace="http://ofbiz.apache.org/Widget-Tree"> + <xs:include schemaLocation="http://ofbiz.apache.org/dtds/widget-common.xsd" /> + <xs:element name="trees"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="tree"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="tree"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="node" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="root-node-name" use="required" /> + <xs:attribute name="default-render-style" default="simple"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="simple" /> + <xs:enumeration value="follow-trail" /> + <xs:enumeration value="show-peers" /> + <xs:enumeration value="expand-collapse" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="default-wrap-style" /> + <xs:attribute type="xs:string" name="expand-collapse-request" /> + <xs:attribute type="xs:string" name="trail-name" /> + <xs:attribute type="xs:string" name="open-depth" default="0" /> + <xs:attribute type="xs:string" name="post-trail-open-depth" default="0" /> + <xs:attribute type="xs:string" name="entity-name" /> + <xs:attribute name="force-child-check" default="true"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="node"> + <xs:complexType> + <xs:sequence> + <xs:element name="condition" type="ConditionRootType" minOccurs="0" /> + <xs:choice minOccurs="0"> + <xs:element ref="actions" /> + <xs:element ref="entity-one" /> + <xs:element ref="service" /> + </xs:choice> + <xs:choice minOccurs="0"> + <xs:element ref="include-screen" /> + <xs:element ref="label" /> + <xs:element ref="link" /> + </xs:choice> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="sub-node" /> + </xs:sequence> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="wrap-style" /> + <xs:attribute name="render-style"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="simple" /> + <xs:enumeration value="follow-trail" /> + <xs:enumeration value="show-peers" /> + <xs:enumeration value="expand-collapse" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute type="xs:string" name="entry-name" /> + <xs:attribute type="xs:string" name="entity-name" /> + <xs:attribute type="xs:string" name="join-field-name" /> + </xs:complexType> + </xs:element> + <xs:element name="sub-node"> + <xs:complexType> + <xs:sequence> + <xs:choice> + <xs:element ref="actions" /> + <xs:element ref="entity-and" /> + <xs:element ref="service" /> + <xs:element ref="entity-condition" /> + </xs:choice> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="out-field-map" /> + </xs:sequence> + <xs:attribute type="xs:string" name="node-name" use="required" /> + </xs:complexType> + </xs:element> + <xs:element name="include-screen"> + <xs:complexType> + <xs:attribute type="xs:string" name="name" use="required" /> + <xs:attribute type="xs:string" name="location" use="required" /> + <xs:attribute name="share-scope" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="label"> + <xs:complexType mixed="true"> + <xs:attribute type="xs:string" name="text" /> + <xs:attribute type="xs:string" name="id" /> + <xs:attribute type="xs:string" name="style" /> + </xs:complexType> + </xs:element> + <xs:element name="link" type="link"/> + <xs:element name="actions"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="AllActions"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="service"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="field-map" /> + </xs:sequence> + <xs:attribute type="xs:string" name="service-name" use="required" /> + <xs:attribute type="xs:string" name="result-map" /> + <xs:attribute type="xs:string" name="auto-field-map" default="true"> + <xs:annotation> + <xs:documentation>This can be "true", "false" or the name of a Map in the context to use as the source Map for the service context.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute type="xs:string" name="result-map-list" /> + <xs:attribute type="xs:string" name="result-map-value" /> + <xs:attribute type="xs:string" name="value" /> + </xs:complexType> + </xs:element> + <xs:element name="entity-and"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" ref="field-map" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" /> + </xs:sequence> + <xs:attribute name="entity-name" type="xs:string" use="required" /> + <xs:attribute name="list" type="xs:string" /> + <xs:attribute name="use-cache" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="filter-by-date" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + <xs:enumeration value="by-name" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="result-set-type" default="scroll"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="forward" /> + <xs:enumeration value="scroll" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="entity-condition"> + <xs:complexType> + <xs:sequence> + <xs:choice> + <xs:element ref="condition-expr" /> + <xs:element ref="condition-list" /> + </xs:choice> + <xs:element minOccurs="0" ref="having-condition-list" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" /> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" /> + <xs:choice minOccurs="0"> + <xs:element ref="limit-range" /> + <xs:element ref="limit-view" /> + <xs:element ref="use-iterator" /> + </xs:choice> + </xs:sequence> + <xs:attribute name="entity-name" type="xs:string" use="required" /> + <xs:attribute name="use-cache" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="filter-by-date" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + <xs:enumeration value="by-name" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="distinct" default="false"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="true" /> + <xs:enumeration value="false" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="delegator-name" type="xs:string" /> + <xs:attribute name="list" type="xs:string" /> + <xs:attribute name="result-set-type" default="scroll"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="forward" /> + <xs:enumeration value="scroll" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="out-field-map"> + <xs:complexType> + <xs:attribute type="xs:string" name="field-name" use="required" /> + <xs:attribute type="xs:string" name="to-field-name" /> + </xs:complexType> + </xs:element> +</xs:schema> \ No newline at end of file Propchange: ofbiz/trunk/framework/widget/dtd/widget-tree-ns.xsd ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/widget/dtd/widget-tree-ns.xsd ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/framework/widget/dtd/widget-tree-ns.xsd ------------------------------------------------------------------------------ svn:mime-type = text/xsd Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java?rev=1746302&r1=1746301&r2=1746302&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetFactory.java Tue May 31 16:48:09 2016 @@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentHa import org.ofbiz.base.util.Assert; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilGenerics; +import org.ofbiz.base.util.UtilXml; import org.ofbiz.widget.model.IterateSectionWidget; import org.ofbiz.widget.model.ModelScreen; import org.ofbiz.widget.model.ModelScreenWidget; @@ -69,9 +70,10 @@ public class WidgetFactory { */ public static ModelScreenWidget getModelScreenWidget(ModelScreen modelScreen, Element element) { Assert.notNull("modelScreen", modelScreen, "element", element); - Constructor<? extends ModelScreenWidget> widgetConst = screenWidgets.get(element.getTagName()); + String tagName = UtilXml.getTagNameIgnorePrefix(element); + Constructor<? extends ModelScreenWidget> widgetConst = screenWidgets.get(tagName); if (widgetConst == null) { - throw new IllegalArgumentException("ModelScreenWidget class not found for element " + element.getTagName()); + throw new IllegalArgumentException("ModelScreenWidget class not found for element " + tagName); } try { return widgetConst.newInstance(modelScreen, element); Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/AbstractModelAction.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/AbstractModelAction.java?rev=1746302&r1=1746301&r2=1746302&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/AbstractModelAction.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/AbstractModelAction.java Tue May 31 16:48:09 2016 @@ -91,25 +91,26 @@ public abstract class AbstractModelActio * @return A new <code>ModelAction</code> instance */ public static ModelAction newInstance(ModelWidget modelWidget, Element actionElement) { - if ("set".equals(actionElement.getNodeName())) { + String nodeName = UtilXml.getNodeNameIgnorePrefix(actionElement); + if ("set".equals(nodeName)) { return new SetField(modelWidget, actionElement); - } else if ("property-map".equals(actionElement.getNodeName())) { + } else if ("property-map".equals(nodeName)) { return new PropertyMap(modelWidget, actionElement); - } else if ("property-to-field".equals(actionElement.getNodeName())) { + } else if ("property-to-field".equals(nodeName)) { return new PropertyToField(modelWidget, actionElement); - } else if ("script".equals(actionElement.getNodeName())) { + } else if ("script".equals(nodeName)) { return new Script(modelWidget, actionElement); - } else if ("service".equals(actionElement.getNodeName())) { + } else if ("service".equals(nodeName)) { return new Service(modelWidget, actionElement); - } else if ("entity-one".equals(actionElement.getNodeName())) { + } else if ("entity-one".equals(nodeName)) { return new EntityOne(modelWidget, actionElement); - } else if ("entity-and".equals(actionElement.getNodeName())) { + } else if ("entity-and".equals(nodeName)) { return new EntityAnd(modelWidget, actionElement); - } else if ("entity-condition".equals(actionElement.getNodeName())) { + } else if ("entity-condition".equals(nodeName)) { return new EntityCondition(modelWidget, actionElement); - } else if ("get-related-one".equals(actionElement.getNodeName())) { + } else if ("get-related-one".equals(nodeName)) { return new GetRelatedOne(modelWidget, actionElement); - } else if ("get-related".equals(actionElement.getNodeName())) { + } else if ("get-related".equals(nodeName)) { return new GetRelated(modelWidget, actionElement); } else { throw new IllegalArgumentException("Action element not supported with name: " + actionElement.getNodeName()); Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/FieldInfo.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/FieldInfo.java?rev=1746302&r1=1746301&r2=1746302&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/FieldInfo.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/FieldInfo.java Tue May 31 16:48:09 2016 @@ -26,6 +26,7 @@ import java.util.List; import java.util.Map; import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilXml; import org.ofbiz.widget.renderer.FormStringRenderer; import org.w3c.dom.Element; @@ -135,7 +136,7 @@ public abstract class FieldInfo { /** XML Constructor */ protected FieldInfo(Element element, ModelFormField modelFormField) { this.fieldSource = FieldInfo.SOURCE_EXPLICIT; - this.fieldType = findFieldTypeFromName(element.getTagName()); + this.fieldType = findFieldTypeFromName(UtilXml.getTagNameIgnorePrefix(element)); this.modelFormField = modelFormField; } Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java?rev=1746302&r1=1746301&r2=1746302&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java Tue May 31 16:48:09 2016 @@ -165,7 +165,7 @@ public class ModelFormFieldBuilder { Element childElement = null; List<? extends Element> subElements = UtilXml.childElementList(fieldElement); for (Element subElement : subElements) { - String subElementName = subElement.getTagName(); + String subElementName = UtilXml.getTagNameIgnorePrefix(subElement); if ("on-field-event-update-area".equals(subElementName)) { UpdateArea updateArea = new UpdateArea(subElement); if ("change".equals(updateArea.getEventType())) Modified: ofbiz/trunk/specialpurpose/example/widget/example/ExampleCompoundWidgets.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/widget/example/ExampleCompoundWidgets.xml?rev=1746302&r1=1746301&r2=1746302&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/example/widget/example/ExampleCompoundWidgets.xml (original) +++ ofbiz/trunk/specialpurpose/example/widget/example/ExampleCompoundWidgets.xml Tue May 31 16:48:09 2016 @@ -19,97 +19,103 @@ under the License. --> <!-- This document serves as an example for Compound Screen Widget feature --> -<compound-widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/compound-widgets.xsd"> - - <site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/site-conf.xsd"> - <request-map uri="CompoundWidgets1"> - <security https="true" auth="true"/> - <event type="simple" invoke="CompoundWidgetsFunc" path="component://example/widget/example/ExampleCompoundWidgets.xml"/> - <response name="success" type="view" value="CompoundWidgets1"/> - </request-map> - <request-map uri="CompoundWidgets2"><security https="true" auth="true"/><response name="success" type="view" value="CompoundWidgets2"/></request-map> - - <view-map name="CompoundWidgets1" type="screen" page="component://example/widget/example/ExampleCompoundWidgets.xml#CompoundWidgets1"/> - <view-map name="CompoundWidgets2" type="screen" page="component://example/widget/example/ExampleCompoundWidgets.xml#CompoundWidgets2"/> - </site-conf> - - <menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-menu.xsd"> - <menu name="CompoundWidgetsMenu" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml"> - <menu-item name="Example1" title="${uiLabelMap.ExampleExample} 1"> - <link target="CompoundWidgets1"/> - </menu-item> - <menu-item name="Example2" title="${uiLabelMap.ExampleExample} 2"> - <link target="CompoundWidgets2"/> - </menu-item> - </menu> - </menus> - - <screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd"> - <screen name="CompoundWidgets1"> - <section> - <actions> - <set field="headerItem" value="ExampleCompoundWidgets" /> - <set field="tabButtonItem" value="Example1"/> - </actions> - <widgets> - <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"> - <decorator-section name="pre-body"> - <include-menu name="CompoundWidgetsMenu" location="component://example/widget/example/ExampleCompoundWidgets.xml" /> - </decorator-section> - <decorator-section name="body"> - <section> - <widgets> - <container style="clear" /> - <label>Demo For Compound Screen Widget</label> - <include-form location="component://example/widget/example/ExampleCompoundWidgets.xml" name="CompoundWidgetsForm1"/> - </widgets> - </section> - </decorator-section> - </decorator-screen> - </widgets> - </section> - </screen> +<compound-widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:sc="http://ofbiz.apache.org/Site-Conf" + xmlns:sm="http://ofbiz.apache.org/Simple-Method" + xmlns:wf="http://ofbiz.apache.org/Widget-Form" + xmlns:wt="http://ofbiz.apache.org/Widget-Tree" + xmlns:wm="http://ofbiz.apache.org/Widget-Menu" + xmlns:ws="http://ofbiz.apache.org/Widget-Screen" + xsi:noNamespaceSchemaLocation="../../../../framework/widget/dtd/compound-widgets.xsd"> + + <sc:site-conf> + <sc:request-map uri="CompoundWidgets1"> + <sc:security https="true" auth="true"/> + <sc:event type="simple" invoke="CompoundWidgetsFunc" path="component://example/widget/example/ExampleCompoundWidgets.xml"/> + <sc:response name="success" type="view" value="CompoundWidgets1"/> + </sc:request-map> + <sc:request-map uri="CompoundWidgets2"><sc:security https="true" auth="true"/><sc:response name="success" type="view" value="CompoundWidgets2"/></sc:request-map> + + <sc:view-map name="CompoundWidgets1" type="screen" page="component://example/widget/example/ExampleCompoundWidgets.xml#CompoundWidgets1"/> + <sc:view-map name="CompoundWidgets2" type="screen" page="component://example/widget/example/ExampleCompoundWidgets.xml#CompoundWidgets2"/> + </sc:site-conf> + + <wm:menus> + <wm:menu name="CompoundWidgetsMenu" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml"> + <wm:menu-item name="Example1" title="${uiLabelMap.ExampleExample} 1"> + <wm:link target="CompoundWidgets1"/> + </wm:menu-item> + <wm:menu-item name="Example2" title="${uiLabelMap.ExampleExample} 2"> + <wm:link target="CompoundWidgets2"/> + </wm:menu-item> + </wm:menu> + </wm:menus> + + <ws:screens> + <ws:screen name="CompoundWidgets1"> + <ws:section> + <ws:actions> + <ws:set field="headerItem" value="ExampleCompoundWidgets" /> + <ws:set field="tabButtonItem" value="Example1"/> + </ws:actions> + <ws:widgets> + <ws:decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"> + <ws:decorator-section name="pre-body"> + <ws:include-menu name="CompoundWidgetsMenu" location="component://example/widget/example/ExampleCompoundWidgets.xml" /> + </ws:decorator-section> + <ws:decorator-section name="body"> + <ws:section> + <ws:widgets> + <ws:container style="clear" /> + <ws:label>Demo For Compound Screen Widget</ws:label> + <ws:include-form location="component://example/widget/example/ExampleCompoundWidgets.xml" name="CompoundWidgetsForm1"/> + </ws:widgets> + </ws:section> + </ws:decorator-section> + </ws:decorator-screen> + </ws:widgets> + </ws:section> + </ws:screen> - <screen name="CompoundWidgets2"> - <section> - <actions> - <set field="headerItem" value="ExampleCompoundWidgets" /> - <set field="tabButtonItem" value="Example2"/> - </actions> - <widgets> - <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"> - <decorator-section name="pre-body"> - <include-menu name="CompoundWidgetsMenu" location="component://example/widget/example/ExampleCompoundWidgets.xml" /> - </decorator-section> - <decorator-section name="body"> - <section> - <widgets> - <container style="clear" /> - <label>Demo For Compound Screen Widget</label> - <include-form location="component://example/widget/example/ExampleCompoundWidgets.xml" name="CompoundWidgetsForm2"/> - </widgets> - </section> - </decorator-section> - </decorator-screen> - </widgets> - </section> - </screen> - </screens> - - <forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-form.xsd"> - <form name="CompoundWidgetsForm1"> - <field name="exampleName" title="${uiLabelMap.FormFieldTitle_exampleName} 1" required-field="true"><text /></field> - </form> - - <form name="CompoundWidgetsForm2"> - <field name="exampleName" title="${uiLabelMap.FormFieldTitle_exampleName} 2" required-field="true"><text /></field> - </form> - </forms> - - <simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods.xsd"> - <simple-method method-name="CompoundWidgetsFunc"> - <log message="CompoundWidgetsFunc runs" level="info"/> - </simple-method> - </simple-methods> - + <ws:screen name="CompoundWidgets2"> + <ws:section> + <ws:actions> + <ws:set field="headerItem" value="ExampleCompoundWidgets" /> + <ws:set field="tabButtonItem" value="Example2"/> + </ws:actions> + <ws:widgets> + <ws:decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"> + <ws:decorator-section name="pre-body"> + <ws:include-menu name="CompoundWidgetsMenu" location="component://example/widget/example/ExampleCompoundWidgets.xml" /> + </ws:decorator-section> + <ws:decorator-section name="body"> + <ws:section> + <ws:widgets> + <ws:container style="clear" /> + <ws:label>Demo For Compound Screen Widget</ws:label> + <ws:include-form location="component://example/widget/example/ExampleCompoundWidgets.xml" name="CompoundWidgetsForm2"/> + </ws:widgets> + </ws:section> + </ws:decorator-section> + </ws:decorator-screen> + </ws:widgets> + </ws:section> + </ws:screen> + </ws:screens> + + <wf:forms> + <wf:form name="CompoundWidgetsForm1"> + <wf:field name="exampleName" title="${uiLabelMap.FormFieldTitle_exampleName} 1" required-field="true"><wf:text /></wf:field> + </wf:form> + <wf:form name="CompoundWidgetsForm2"> + <wf:field name="exampleName" title="${uiLabelMap.FormFieldTitle_exampleName} 2" required-field="true"><wf:text /></wf:field> + </wf:form> + </wf:forms> + + <sm:simple-methods> + <sm:simple-method method-name="CompoundWidgetsFunc"> + <sm:log message="CompoundWidgetsFunc runs" sm:level="info"/> + </sm:simple-method> + </sm:simple-methods> + </compound-widgets> |
Free forum by Nabble | Edit this page |