</rng:optional>
</rng:define>
+ <rng:define name="modifiable">
+ <rng:optional>
+ <!-- @modifiers contains a JSON map unifying the various
+ modifier attributes: @readonly, @required, @invisible.
+ Each attribute is a key, mapped to a JSON list representing
+ a condition expressed as an OpenERP `domain` filter
+ Only some of the modifier keys make sense on some
+ elements, for example <filter> and <group> only support
+ `invisible`. -->
+ <rng:attribute name="modifiers"/>
+ </rng:optional>
+ </rng:define>
+
<rng:define name="access_rights">
<rng:optional>
<rng:attribute name="groups"/>
<rng:define name="form">
<rng:element name="form">
<rng:ref name="overload"/>
+ <rng:optional><rng:attribute name="create" /></rng:optional>
+ <rng:optional><rng:attribute name="delete" /></rng:optional>
+ <rng:optional><rng:attribute name="edit" /></rng:optional>
<rng:optional><rng:attribute name="string"/></rng:optional>
<rng:optional><rng:attribute name="type"/></rng:optional>
<rng:optional><rng:attribute name="link"/></rng:optional>
<rng:define name="diagram">
<rng:element name="diagram">
+ <rng:optional><rng:attribute name="create" /></rng:optional>
<rng:optional><rng:attribute name="string"/></rng:optional>
<rng:ref name="node"/>
- <rng:ref name="arrow"/>
+ <rng:ref name="arrow"/>
+ <rng:zeroOrMore>
+ <rng:ref name="label"/>
+ </rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:attribute name="default_group_by" />
</rng:optional>
<rng:optional><rng:attribute name="create" /></rng:optional>
+ <rng:optional><rng:attribute name="delete" /></rng:optional>
+ <rng:optional><rng:attribute name="edit" /></rng:optional>
<rng:optional><rng:attribute name="quick_create" /></rng:optional>
<rng:zeroOrMore>
<rng:ref name="field"/>
<rng:define name="tree">
<rng:element name="tree">
<rng:ref name="overload"/>
+ <rng:optional><rng:attribute name="create" /></rng:optional>
+ <rng:optional><rng:attribute name="delete" /></rng:optional>
+ <rng:optional><rng:attribute name="edit" /></rng:optional>
<rng:optional><rng:attribute name="string"/></rng:optional>
<rng:optional><rng:attribute name="colors"/></rng:optional>
<rng:optional><rng:attribute name="fonts"/></rng:optional>
<rng:element name="label">
<rng:ref name="overload"/>
<rng:ref name="access_rights"/>
+ <rng:ref name="modifiable"/>
+ <rng:optional><rng:attribute name="invisible"/></rng:optional>
<rng:optional><rng:attribute name="align"/></rng:optional>
<rng:optional><rng:attribute name="nolabel"/></rng:optional>
<rng:optional><rng:attribute name="colspan"/></rng:optional>
<rng:value>5years</rng:value>
</rng:choice></rng:attribute>
</rng:optional>
+ <rng:optional><rng:attribute name="create"/></rng:optional>
+ <rng:optional><rng:attribute name="delete"/></rng:optional>
+ <rng:optional><rng:attribute name="edit"/></rng:optional>
<rng:optional><rng:attribute name="color"/></rng:optional>
<rng:optional><rng:attribute name="date_delay"/></rng:optional>
<rng:optional><rng:attribute name="day_length"/></rng:optional>
<rng:element name="page">
<rng:ref name="overload"/>
<rng:ref name="access_rights"/>
+ <rng:ref name="modifiable"/>
<rng:optional><rng:attribute name="string"/></rng:optional>
<rng:optional><rng:attribute name="name"/></rng:optional>
<rng:optional><rng:attribute name="attrs"/></rng:optional>
<rng:element name="separator">
<rng:ref name="overload"/>
<rng:ref name="access_rights"/>
+ <rng:ref name="modifiable"/>
+ <rng:optional><rng:attribute name="invisible"/></rng:optional>
<rng:optional><rng:attribute name="name"/></rng:optional>
<rng:optional><rng:attribute name="colspan"/></rng:optional>
<rng:optional><rng:attribute name="rowspan"/></rng:optional>
<rng:attribute name="name" />
<rng:ref name="overload"/>
<rng:ref name="access_rights"/>
+ <rng:ref name="modifiable"/>
<rng:optional><rng:attribute name="domain_filter"/></rng:optional>
<rng:optional><rng:attribute name="attrs"/></rng:optional>
<rng:optional><rng:attribute name="string"/></rng:optional>
<rng:element name="group">
<rng:ref name="overload"/>
<rng:ref name="access_rights"/>
+ <rng:ref name="modifiable"/>
<rng:optional><rng:attribute name="attrs"/></rng:optional>
<rng:optional><rng:attribute name="colspan"/></rng:optional>
<rng:optional><rng:attribute name="rowspan"/></rng:optional>
<rng:optional><rng:attribute name="width"/></rng:optional>
<rng:optional><rng:attribute name="name"/></rng:optional>
<rng:optional><rng:attribute name="color" /></rng:optional>
+ <rng:optional><rng:attribute name="invisible"/></rng:optional>
<rng:ref name="container"/>
</rng:element>
</rng:define>
<rng:element name="button">
<rng:ref name="overload"/>
<rng:ref name="access_rights"/>
+ <rng:ref name="modifiable"/>
<rng:optional><rng:attribute name="attrs"/></rng:optional>
<rng:optional><rng:attribute name="invisible"/></rng:optional>
<rng:optional><rng:attribute name="name" /></rng:optional>
<rng:element name="filter">
<rng:ref name="overload"/>
<rng:ref name="access_rights"/>
+ <rng:ref name="modifiable"/>
<rng:optional><rng:attribute name="attrs"/></rng:optional>
+ <rng:optional><rng:attribute name="invisible"/></rng:optional>
<rng:optional><rng:attribute name="name" /></rng:optional>
<rng:optional><rng:attribute name="separator" /></rng:optional>
<rng:optional><rng:attribute name="icon" /></rng:optional>