---

top_level_page: admin_boxes
pages:
    - fields
    - key
    - multiple_edit
    - pick_items
    - plugin_setting
    - site_setting
    - slider
    - tabs
    - upload
    - validation
    - values
    
    
 #   - admin_boxes
 #   - edit_mode
 #   - fields
 #   - visible_if
 #   - multiple_edit
 #   - picked_items
 #   - plugin_setting
 #   - pressed
 #   - site_setting
 #   - slider
 #   - snippet
 #   - tabs
 #   - type
 #   - validation
 #   - values
 #   - _picked_items
 #   - _value


common_definitions:
    stringy: &stringy
        - number
        - string
    booly: &booly
        - boolean
        - string
    variable: &variable
        - boolean
        - number
        - string
        - "null"
    ord: &ord
        type: *stringy
        description: >
            This controls the order in which elements are drawn on the screen.
            
            If not set, it defaults to the order the CMS finds them in.
            
            From version 7.3 onwards, if you are inserting elements into another module's TUIX,
            you can use syntax of the form "name_of_other_element.001"
            to place an element after the named element in the order.
    copy_of: &copy_of
        type: string
        description: >
            You can enter the code-name of another element (this must be element with the same
            parent element) to copy the properties from.
            
            Any other properties you set will override the copied properties.
            
            If the element that you are attempting to copy is missing, unset, or not yet loaded,
            then your element will be removed.
            
            This works from version 8.0 onwards.
    hidden: &hidden
        type: boolean
        description: >
            The hidden property hides elements from view when <code>true</code>.
    visible_if: &visible_if
        type:
            - string
            - object
        description: >
            A snippet of JavaScript code to be evaluated.
            
            From version 7.5 onwards, to avoid using an inefficent eval(), you can also call a function
            by using an object of the form:
                lib.methodName => arg1, arg2, arg3, ...
            
            The visible_if property hides elements from view if the code provided does not evaluate to <code>true</code>.
            
            See https://zenar.io/visibility-in-tuix for examples.


$schema: 'http://json-schema.org/draft-04/schema#'
title: Admin Box Schema

type: object
additionalProperties:
    title: Admin Box
    type: object
    required:
        - key
        - tabs
    properties:
        title:
            type: string
            description: >
                The title for the Admin Box
                If you do not specify this property the title bar will be hidden from view.
        
        title_for_existing_records:
            type: string
            description: >
                If you set this property, it will be used instead of the title when editing an existing record.
                
                (The toolkit will consider that you are editing an existing record if the $box['key']['id']
                 variable is set.)
                
                You can also use merge fields, e.g.: Editing the animal "[[details/name]]".
                
                
                This works from version 7.2 onwards.
                
                As of version 8.7, you can also include variables from the key.
        
        key:
            type: object
            properties:
                id:
                    type: *variable
                    modified_by_cms: true
                    description: >
                        The id key for this Admin Box.
                        
                        If opening an Admin Box from Organizer, this should match up with the
                        id of an Item in the current Panel. If you open the Admin Box using an
                        Item Button in Organizer, this will be automatically populated.
                        
                        If you are saving a newly created Item, you should populate the id
                        yourself as soon as you know what it is.
                openNextMode:
                    type: boolean
                    description: >
                        Set this to true if you want to edit multiple items one after the other.
                        
                        This will cause the "Skip to next", "Save & next" and "Save & close" buttons
                        to appear at the bottom instead of the "save" button.
                        
                        This works from version 9.3 onwards.
                nextIds:
                    type: string
                    description: >
                        If you want to edit multiple items one after the other, place the id of the
                        first item to edit in the id variable, and the ids of subsequent items in a
                        comma-separated list in this variable.
                        
                        When the user presses the "Skip to next" or "Save & next" button, the current
                        id will be deleted, the nextIds will be placed back into the id variable,
                        and your fillAdminBox() method will be called again.
                        
                        This works from version 9.3 onwards.
            additionalProperties:
                type: *variable
                description: >
                    A variable or meta-information that you define about this Admin Box.
            description: >
                The key of an Admin Box lets you receive and/or store meta-information and variables.
        
        identifier:
            type: object
            properties:
                css_class:
                    type: string
                    description: >
                        A CSS class name, which should be used to define an icon.
                label:
                    type: string
                    description: >
                        You can use this to set a label next to the id.
                value:
                    type: *stringy
                    description: >
                        The value of the id to show.
                        
                        Defaults to the $box['key']['id'] variable if not set.
                    default: (Defaults to the $box['key']['id'] variable)
            description: >
                This adds a green box at the top left with the current id.
                
                
                This works from version 7.2 onwards.
        
        last_updated:
            type: string
            description: >
                This adds a bit of text in italics at the top right, just under the tabs.
                
                This works from version 8.6 onwards.
        
        configure:
            type: object
            properties:
                link:
                    type: string
                    description: >
                        A href for the link.
                tooltip:
                    type: string
                    description: >
                        A tooltip for the link.
            description: >
                This adds a link at the bottom left, which will be styled as a cogwheel.
        
        tab:
            type: *stringy
            modified_by_cms: true
            description: >
                The code-name of the current tab that's being displayed.
                
                It defaults to the first tab in the Admin Box, but this can be overridden
                by the developer who opened this Admin Box.
            default: (the first tab of the Admin Box)
        
        switchToTab:
            type: *stringy
            modified_by_cms: true
            description: >
                Set this property to request to switch to another tab in the Admin Box.
                
                If the user clicks on a tab, this property will be set to the code-name of the tab
                they just clicked on.
                
                Note: if there were any validation errors on the current tab,
                the switch will be cancelled and the current tab will be remain in view.
                
                
                This works from version 7.7 onwards.
        
        disable_selecting_tab_from_url:
            type: boolean
            description: >
                This allows you to disable the feature where a FAB can be opened on a specific
                tab by requesting it in the URL.
                
                You would want to do this if you are making a multi-step wizard, and
                want to make sure that users always start on step 1 when the wizard
                is opened.
                
                This works from version 9.0 onwards.
        
        hide_tab_bar:
            type: boolean
            description: >
                If you set this property, the tab bar will not be visible.
                If you only have one tab, you may wish to hide the tab bar to reduce
                clutter and/or to gain a little bit of extra space.
        
        max_height:
            type: integer
            description: >
                Include this property to set a maximum height (in pixels) for the box.
            default: (the height of the screen)
        
        shake:
            type: boolean
            modified_by_cms: true
            description: >
                If there are errors on a tab, the CMS will give the Admin Box a little
                shake when the Admin tries to submit it.
                However if you wish to specifically enable or disable the shaking, you can
                set this property.
                The CMS will clear this property and go back to its default behaviour every time
                the Admin Box is validated and formatted.
        
        css_class:
            type: string
            description: A CSS class name to add to the outer wrapper of the Admin Box.
        
        save_button_message:
            type: string
            description: >
                The message on the save button.
            default: Save
        
        cancel_button_message:
            type: string
            description: >
                Including this property will add a "cancel" button with the specified message at
                the bottom next to the "save" button.
                Pressing this button is exactly the same as pressing the close button at the top
                right of the box.
        
        error_on_form_message:
            type: string
            description: >
                A message to display at the top of the screen when there is an error
                attached to a specific field on the form.
                
                A generic message will be used if one isn't provided here.
                
                This works from version 8.0 onwards.
        
        save_and_continue_button_message:
            type: string
            description: >
                Including this property will add a "Save and Continue" button to the Admin Box.
                This button acts in the same way as the save button, except that it does
                not close the Admin Box afterwards.
                
                This means that the Admin Box may be saved more than one time, and it also
                means that an Admin Box may start out creating a new thing, but then switch
                to editing an existing thing.
                
                The "Save and Continue" option probably works best when an Admin is
                editing something that already exists. You can enable it when in "Create"
                mode, but you will probably need to reformat the Admin Box when the Admin
                first saves and the thing you are creating is saved in the database.
                
                If the change between creating a new thing and editing an existing thing
                is too drastic, or will cause problems, you should not enable the "Save
                and Continue" option in "Create" mode.
        
        extra_button_html:
            type: string
            description: >
                You can use this property to add some extra html after the save button.
                
                
                This works from version 7.1 onwards.
        
        download:
            type: boolean
            html_description: |
                <p>You can set this for your Admin Box to offer a file download upon completion.</p>
                <p>Setting the <code>download</code> property for an Admin Box will cause the CMS to call your <code>adminBoxDownload()</code> method as well as your <code>saveAdminBox()</code> method when the Admin Box is saved.</p>
                <p>You should handle this request by outputting the appropriate headers and then outputting a file.</p>
                
        
        popout_message:
            type: string
            description: >
                A message to display after saving.
                
                You can use all of the features from https://zenar.io/customising-popout-messages-in-admin-mode
                in order to customise the message.
                
                Note: this will clash with the <code>popout_message</code> property in Organizer;
                you can use one or the other, but not both at the same time.
        
        toast:
            type: object
            description: >
                This will cause the panel to display a "toaster" at the top right when the admin box is displayed,
                or after the admin box is saved.
                
                The toastr library is used;
                you can see https://github.com/CodeSeven/toastr for more information.
            properties:
                message:
                    type: string
                    description: >
                        A message for the toast.
                title:
                    type: string
                    description: >
                        An optional title for the toast.
                
                message_type:
                    enum:
                        - error
                        - warning
                        - info
                        - success
                    default: info
                    description: >
                        The type of message. A different styling will be applied for each different type.
                
                options:
                    additionalProperties:
                        type: *variable
                        description: >
                            Any additional options to pass to the toastr library.
        
        confirm:
            type: object
            dependencies_if_true:
                show:
                    - message
                    - button_message
                    - cancel_button_message
            properties:
                show:
                    type: boolean
                    description: >
                        The confirmation will only be shown if this is set.
                message:
                    type: string
                    description: >
                        A message to show.
                html:
                    type: boolean
                    description: >
                        If this is set, the message will not be html-escaped.
                button_message:
                    type: string
                    description: >
                        A message for the confirm button
                cancel_button_message:
                    type: string
                    description: >
                        A message for the cancel button
                        
                        As of version 8.7 this is optional, and will default to "Cancel"
                        (translated into the local language if translations are enabled) if not set.
                message_type:
                    enum:
                        - none
                        - error
                        - warning
                        - question
                        - success
                    default: none
                    description: >
                        The type of message. A different styling will be applied for each different type.

            description: >
                Use this property to display a confirmation prompt before saving.
                If show is set to true, you must provide the message, button_message and cancel_button_message attributes.
        
        tabs:
            type: object
            description: >
                Admin Boxes are divided up into sections called "Tabs".
                
                Your Admin Box must have at least one tab, but can have multiple tabs.
                
                To place fields on your Admin Box, you must create at least one tab to put them on.
            
            additionalProperties:
                type: object
                required:
                    - label
                    - fields
                properties:
                    ord: *ord
                    copy_of: *copy_of
                    label:
                        type: string
                        description: >
                            A label to display on the tab's link.
                    
                    parent:
                        type: string
                        description: >
                            Enter the code-name of another tab here to make your tab appear
                            under the named tab as a dropdown.
                        
                            There's a limit of 2 levels; you can't have a dropdown inside another dropdown.
                            
                            
                            This works from version 7.3 onwards.
                    
                    in_use:
                        type: boolean
                        description: >
                            The "in use" flagging feature.
                            
                            This is used in combination with the parent propety.
                            If you set it to true, the UI will flag to the admin that there is something set on this tab.
                            If you set it to false, the UI will flag to the admin that there is nothingthing set on this tab.
                            Leave it null/undefined to disable the feature.
                            
                            This works from 9.6 onwards.
                    
                    hidden: *hidden
                    visible_if: *visible_if
                    hide_when_children_are_not_visible:
                        type: boolean
                        description: >
                            If you set this property, the button will be hidden when it has no
                            visible children.
                            
                            
                            This works from version 7.3 onwards.
                    
                    errors:
                        type: object
                        html_description: |
                            <p>You can set errors&nbsp;using your <code>validateAdminBox()</code> method to show that there are errors on a tab.</p>
                            <p>If edit mode is enabled for a tab, an Admin will not be able to leave that tab or save the Admin Box whilst there are errors on that tab.</p>
                            <p>The CMS will automatically initialise the <code>errors</code> property to an empty array each time the tab is validated. This means that any errors from a previous validation will be cleared and must be re-added if the error is still present.</p>
                        additionalProperties:
                            type: string
                            description: >
                                An error message to show.
                    notices:
                        type: object
                        html_description: |
                            <p>Notices display like errors, but do not have any special functionality.&nbsp;If visible, they are displayed one after the other just below the error messages on a tab.</p>
                            <p>The CMS never automatically sets or removes them, and a notice will not stop an Admin from leaving a tab or saving.</p>
                        additionalProperties:
                            type: object
                            required:
                                - type
                            dependencies_if_true:
                                show:
                                    - message
                            properties:
                                show:
                                    type: boolean
                                    description: >
                                        The notice will only be shown if this is set.
                                        
                                        From version 8.4 onwards, you can also use the visible_if property to control whether the notice is displayed,
                                        however the show property must still be set to true otherwise the notice will not display.
                                visible_if: *visible_if
                                message:
                                    type: string
                                    description: >
                                        A message to show.
                                type:
                                    enum:
                                        - error
                                        - warning
                                        - question
                                        - information
                                        - success
                                    description: >
                                        The type of notice. A different styling will be applied for each different type.
                                html:
                                    type: boolean
                                    description: >
                                        If this is set, the message will not be html-escaped.
                    
                    show_errors_after_field:
                        type: string
                        description: >
                            If you don't want the error messages displaying at the top of the tab,
                            you can set the name of a field here to display them below that field.
                            Note: the field after must start on a new line.
                    disable_autofocus:
                        type: boolean
                        description: >
                            When a tab is displayed/redrawn/formatted, the CMS will try to focus on the
                            first field on that tab.
                            This is usually convenient, but can cause problems for tabs with scrollbars
                            as the browser will scroll to show the focused field.
                            You can disable this automatic focusing by setting this property.
                    
                    edit_mode:
                        type: object
                        description: >
                            The edit mode property controls whether the fields on a tab can be edited by an administrator.
                        properties:
                            enabled:
                                type: boolean
                                description: >
                                    Whether this tab can be edited.
                            on:
                                type: boolean
                                modified_by_cms: true
                                description: >
                                    The CMS will automatically set this property when this tab is in edit mode.
                            use_view_and_edit_mode:
                                type: boolean
                                description: >
                                    Set this property if you wish the user to first press an "edit" button
                                    before they can start editing a tab.
                                default: true
                            #enable_revert:
                            #    type: boolean
                            #    description: >
                            #        Include this property to show the "Undo Changes" button when using the
                            #        always_on property.
                            #
                            #        If this property is not defined, then the CMS will automatically enable this
                            #        option if the $box['key']['id'] variable is set.
                            #    default: (intelligent default)
                            format_on_edit:
                                type: boolean
                                description: >
                                    If this property is set, the Admin Box will be submitted to the server and
                                    reformatted if the "Edit" button is pressed.
                            format_on_cancel_edit:
                                type: boolean
                                description: >
                                    If this property is set, the Admin Box will be submitted to the server and
                                    reformatted if the "Cancel" button is pressed.
                            #format_on_revert:
                            #    type: boolean
                            #    description: >
                            #        If this property is set, the Admin Box will be submitted to the server and
                            #        reformatted if the "Revert" button is pressed.
                            validate_on_edit:
                                type: boolean
                                description: >
                                    If this property is set, the Admin Box will be submitted to the server and
                                    validated if the "Edit" button is pressed.
                            validate_on_cancel_edit:
                                type: boolean
                                description: >
                                    If this property is set, the Admin Box will be submitted to the server and
                                    validated if the "Cancel" button is pressed.
                            #validate_on_revert:
                            #    type: boolean
                            #    description: >
                            #        If this property is set, the Admin Box will be submitted to the server and
                            #        validated if the "Revert" button is pressed.
                    
                    fields:
                        type: object
                        description: >
                            An array of fields on the tab.
                            
                            (If you do not set any fields on a tab, it will be empty.)
                        
                        additionalProperties:
                            type: object
                            oneOf:
                                -
                                    required:
                                        - type
                                -
                                    required:
                                        - pick_items
                                -
                                    required:
                                        - image
                                -
                                    required:
                                        - snippet
                                -
                                    required:
                                        - upload
                                -
                                    required:
                                        - captcha
                            
                            #Note: it's legal for pick_items and upload to appear together
                            #There's a small hack in the devTools.validate() function to add this exception.
                            
                            forbidden_if_true:
                                full_width:
                                    - label
                                    - row_class
                                same_row:
                                    - indent_level
                                    - label
                                    - legend
                                    - row_class
                            properties:
                                ord: *ord
                                copy_of: *copy_of
                                hidden: *hidden
                                visible_if: *visible_if
                                
                                hide_if_empty:
                                    type: boolean
                                    description: >
                                        Hide this field if its value is empty. (Best used for read-only fields.)
                                        
                                        This works from version 8.6 onwards.
                                hide_with_previous_field:
                                    type: boolean
                                    description: >
                                        Hide this field if the last field was hidden.
                                        
                                        This works from version 7.5 onwards.
                                hide_with_previous_previous_field:
                                    type: boolean
                                    description: >
                                        Hide this field if the field before last was hidden.
                                        
                                        This works from version 7.7 onwards.
                                hide_if_previous_field_is_not_hidden:
                                    type: boolean
                                    description: >
                                        Hide this field if the last field was not hidden.
                                        
                                        This works from version 7.5 onwards.
                                hide_if_previous_previous_field_is_not_hidden:
                                    type: boolean
                                    description: >
                                        Hide this field if the field before last was not hidden.
                                        
                                        This works from version 7.7 onwards.
                                hide_with_previous_indented_field:
                                    type: boolean
                                    description: >
                                        Hide this field if the last field on the same indent was hidden.
                                        
                                        This works from version 7.5 onwards.
                                hide_with_previous_indented_fields:
                                    type: boolean
                                    description: >
                                        Hide this field if all of the previous field on the same indent have been hidden.
                                        
                                        This works from version 7.7 onwards.
                                hide_with_previous_outdented_field:
                                    type: boolean
                                    description: >
                                        Hide this field if the last field on a lesser indent was hidden.
                                        
                                        This works from version 7.5 onwards.
                                hide_if_previous_value_is:
                                    description: >
                                        Hide this field if value of the last field equals the value you enter.
                                        You can also provide an array of values, or an object with values as keys.
                                        
                                        This works from version 8.6 onwards.
                                hide_if_previous_outdented_value_is:
                                    description: >
                                        Hide this field if value of the last field on a lower indent equals the value you enter.
                                        You can also provide an array of values, or an object with values as keys.
                                        
                                        This works from version 8.6 onwards.
                                hide_if_previous_value_isnt:
                                    description: >
                                        Hide this field if value of the last field does not equal the value you enter.
                                        You can also provide an array of values, or an object with values as keys.
                                        
                                        This works from version 7.5 onwards.
                                hide_if_previous_outdented_value_isnt:
                                    description: >
                                        Hide this field if value of the last field on a lower indent does not equal the value you enter.
                                        You can also provide an array of values, or an object with values as keys.
                                        
                                        This works from version 7.5 onwards.
                                
                                
                                
                                
                                
                                readonly:
                                    type: boolean
                                    description: >
                                        Causes a field to always be drawn as a read-only field, even if
                                        edit mode is enabled.
                                        
                                        This works from version 7.5 onwards.
                                        
                                        Before version 7.5 this property was called "read_only".
                                        This name still works as a deprecated alias.
                                
                                readonly_if:
                                    type: string
                                    description: >
                                        A snippet of JavaScript code to be evaluated.
            
                                        Adding the readonly_if property causes a field to be read-only
                                        if the code snippet evaluates to <code>true</code>.
                                        
                                        This works from version 8.0 onwards.
                                
                                show_as_a_label_when_readonly:
                                    type: boolean
                                    description: >
                                        Causes a field to be drawn as label, rather than a disabled field,
                                        if it is readonly.
                                        
                                        This works from version 7.5 onwards.
                                
                                show_as_a_span_when_readonly:
                                    type: boolean
                                    description: >
                                        Causes a field to be drawn as span, rather than a disabled field,
                                        if it is readonly.
                                        
                                        This works from version 8.0 onwards.
                                
                                show_as_a_label:
                                    type: boolean
                                    description: >
                                        Shortcut to setting the readonly and show_as_a_label_when_readonly properties.
                                        
                                        This works from version 8.0 onwards.
                                
                                show_as_a_span:
                                    type: boolean
                                    description: >
                                        Shortcut to setting the readonly and show_as_a_span_when_readonly properties.
                                        
                                        This works from version 8.0 onwards.
                                
                                hide_when_readonly:
                                    type: boolean
                                    description: >
                                        Causes a field to be hidden,
                                        if it is readonly.
                                        
                                        This works from version 8.0 onwards.
                                
                                css_class:
                                    type: string
                                    description: >
                                        This property allows you to place a CSS class name on the field.
                                        
                                        This works from version 7.4 onwards.
                                label:
                                    type: string
                                    description: >
                                        A label for the field. Won't be HTML escaped.
                                label_class:
                                    type: string
                                    description: >
                                        This property allows you to place a CSS class name on the field's label.
                                        
                                        
                                        This works from version 7.0.6 onwards.
                                full_width:
                                    type: boolean
                                    description: >
                                        This property will make the field full width, i.e. taking up both table columns.
                                same_row:
                                    type: boolean
                                    description: >
                                        This will place the current field directly after the previous field, without drawing
                                        any HTML from the microtemplate.
                                        
                                        To turn the microtemplate's HTML off for a section of the form and use your own HTML instead,
                                        you can set this property on multiple fields, and then use the pre_field_html and post_field_html
                                        properties to add your own HTML.
                                        For example, you could place several fields in a table-layout using table, tr, th and td tags
                                        instead of the usual HTML from the microtemplate.
                                
                                indent:
                                    type: number
                                    description: >
                                        Setting this property will add the zenario_indent_level CSS class name to the field.
                                        
                                        
                                        This works from version 7.1 onwards.
                                        
                                grouping:
                                    type: string
                                    description: >
                                        Use this property to place this field inside a grouping.
                                        You need to enter the codename of the grouping that you wish this field
                                        appear in.
                                        
                                        To create a grouping, you can make a field with <code>type: grouping</code>
                                        
                                        
                                        This works from version 7.1 onwards.
                                        
                                group_with_previous_field:
                                    type: boolean
                                    description: >
                                        Set this property to put this field in the same grouping as whatever field was just before it.
                                        
                                        Note - this is calculated *before* the fields are sorted by ordinal,
                                        and works using the order that the fields appear in your yaml file.
                                        
                                        
                                        This works from version 7.6 onwards.
                                
                                legend:
                                    type: string
                                    description: >
                                        This adds a legend above a field. Best used on the first field in a grouping. Won't be HTML escaped.
                                        
                                        
                                        This works from version 7.1 onwards.
                                
                                pre_field_html:
                                    type: string
                                    description: >
                                        Some HTML code to be placed just before the field and the field's label.
                                pre_field_post_label_html:
                                    type: string
                                    description: >
                                        Some HTML code to be placed just before the field, but after the field's label.
                                        Does not work for checkbox or radio-type fields, where the label is after the field.
                                        
                                        This works from version 9.2 onwards.
                                post_field_label:
                                    type: string
                                    description: >
                                        Adds a label after the field.
                                post_field_html:
                                    type: string
                                    description: >
                                        Some HTML code to be placed just after the field.
                                
                                pre_field_text:
                                    type: string
                                    description: >
                                        Some plain text to be placed just before the field.
                                        Works in a similar way to the pre_field_html property, except when using a FEA plugin the text you enter here will be translated.
                                        
                                        This works from version 9.4 onwards.
                                post_field_text:
                                    type: string
                                    description: >
                                        Some plain text to be placed just before the field.
                                        Works in a similar way to the pre_field_html property, except when using a FEA plugin the text you enter here will be translated.
                                        
                                        This works from version 9.4 onwards.
                                
                                side_note:
                                    type: string
                                    description: >
                                        Places a piece of text to the side of the field in italics.
                                        
                                        This only works for fields that do not have the full_width or
                                        same_row properties set.
                                        
                                        Won't be HTML escaped.
                                note_below:
                                    type: string
                                    description: >
                                        Places a piece of text below the field in italics.
                                        Won't be HTML escaped.
                                
                                show_plain_note_below:
                                    type: boolean
                                    description: >
                                        If this property is set, the note_below will be displayed as plain text.
                                
                                notices_above:
                                    type: object
                                    description: >
                                        This allows you to display one or more messages above the field.
                                        
                                        This works from 9.4 onwards.
                                    additionalProperties: &notices
                                        type: object
                                        required:
                                            - type
                                        properties:
                                            hidden: *hidden
                                            visible_if: *visible_if
                                            type:
                                                enum:
                                                    - error
                                                    - warning
                                                    - question
                                                    - information
                                                    - success
                                                description: >
                                                    The type of notice. A different styling will be applied for each different type.
                                            size:
                                                enum:
                                                    - small
                                                    - large
                                                description: >
                                                    The size of the icon to show. Can be small or large. Defaults to small if not set.
                                            message:
                                                type: string
                                                description: >
                                                    A message to show.
                                            html:
                                                type: boolean
                                                description: >
                                                    If this is set, the message will not be html-escaped.
                                notices_below:
                                    type: object
                                    description: >
                                        This allows you to display one or more messages below the field.
                                        
                                        This works from 9.4 onwards.
                                    additionalProperties: *notices
                                
                                show_phrase_icon:
                                    type: boolean
                                    description: >
                                        This will show a "phrase" icon next to this field.
                                        You should set this for fields that will be translated.
                                
                                show_copy_text_button:
                                    type: boolean
                                    description: >
                                        This will show a "copy" icon next to this field.
                                        When clicked, the value of the field will be placed into the
                                        user's clipboard.
                                        Only works on browsers that support copy/paste.
                                
                                type:
                                    enum:
                                        - button
                                        - checkbox
                                        - checkboxes
                                        - code_editor
                                        - color_picker
                                        - colour_picker
                                        - currency
                                        - date
                                        - datetime
                                        - editor
                                        - grouping
                                        - hidden
                                        - password
                                        - multiselect
                                        - radio
                                        - radios
                                        - select
                                        - submit
                                        - text
                                        - textarea
                                        - toggle
                                        - url
                                    description: >
                                        The type of field to draw.
                                    
                                
                                hide_clear_button:
                                    type: boolean
                                    description: >
                                        This can be used for <code>type: date</code> fields.
                                        
                                        If set, it will hide the "x" button next to the date field that
                                        lets users clear the date entered.
                                        
                                        Note: this is just a visual hint, and isn't a secure way of preventing
                                        users from submitting an empty string.
                                        
                                        
                                        This works from version 8.6 onwards.
                                
                                change_month_and_year:
                                    type: boolean
                                    description: >
                                        This can be used for <code>type: date</code> fields.

                                        If set, the year and month selectors will be displayed in the datepicker
                                        for easy navigation.


                                        This works from version 9.2 onwards.
                                
                                year_range:
                                    type: string
                                    description: >
                                        This can be used for <code>type: date</code> fields.

                                        If set, the year picker will display years from a specific range.

                                        Accepted formats:
                                        <code>"c-15:c+2"</code>, to display a dynamic range for currently displayed year -15 and +2.
                                        <code>"-2:+10"</code>, to display a fixed range for today's year -2 and +10.
                                        <code>"1950:2030"</code>, to display a fixed range.
                                        <code>"1950:-2"</code>, for a combination of a fixed starting year and the current year -2.

                                        If not set, the default value will be "c-15:c+2".


                                        This works from version 9.2 onwards.
                                
                                no_past_dates:
                                    type: boolean
                                    description: >
                                        This can be used for <code>type: date</code> fields.

                                        If set, the date picker will not allow past dates to be selected.


                                        This works from version 9.5 onwards.
                                allow_typing_in_date_field:
                                    type: boolean
                                    description: >
                                        This can be used for <code>type: date</code> fields.

                                        If set, the datepicker field will no longer be read-only,
                                        and the admin/user will be able to type in it.
                                        
                                        The field will accept dates which follow the "Organizer date format" setting,
                                        set in "Date and time" site settings.


                                        This works from version 9.2 onwards.
                                show_date_format_as_placeholder:
                                    type: boolean
                                    description: >
                                        This can be used for <code>type: date</code> fields.

                                        If enabled, some placeholder text will be added to the field to give the
                                        user a clue as to what the required date format is.


                                        This works from version 9.5 onwards.

                                name:
                                    type: string
                                    default: (defaults to the code name/id)
                                    description: >
                                        The name property is used for <code>type: radio</code> fields.
                                        
                                        
                                        If you have multiple <code>type: radio</code> fields on one tab, you can bind them together into
                                        a radiogroup by giving them all the same name, e.g. <code>name: my_radiogroup</code>.
                                        
                                        
                                        This works from version 7.1 onwards.
                                
                                upload:
                                    type: object
                                    description: >
                                        This type of field lets an administrator upload files from their computer.
                                        
                                    properties:
                                        accept:
                                            type: string
                                            description: >
                                                A list of file extensions or mime-types to accept, e.g.:
                                                image/*,image/jpeg,.jpg
                                                
                                                Defaults to the extensions property if not set.
                                        extensions:
                                            type: object
                                            additionalProperties:
                                                type: *variable
                                                description: >
                                                    An extension of file to accept
                                            description: >
                                                A list of file extensions to accept from Dropbox, e.g.:
                                                .gif,.jpg,.png
                                                
                                                Defaults to the accept property if not set.
                                        
                                        multi:
                                            type: boolean
                                            description: >
                                                Whether to allow multiple file-selection.
                                        drag_and_drop:
                                            type: boolean
                                            description: >
                                                Whether to allow drag-and-drop uploads for browsers that support HTML 5.
                                        
                                                Note: only one field on a tab may use a drag-and-drop upload.
                                        reorder_items:
                                            type: boolean
                                            description: >
                                                Setting this property will allow the administrator reorder the selected items by dragging/dropping.
                                                
                                                Otherwise items will be displayed in alphabetical order.
                                        
                                        upload_phrase:
                                            type: string
                                            default: 'Upload...'
                                            description: >
                                                The text for the Upload button.
                                        dropbox_phrase:
                                            type: string
                                            default: 'Choose from Dropbox...'
                                            description: >
                                                The text for the Choose from Dropbox button.
                                        
                                        usage:
                                            type: string
                                            description: >
                                                The value for the `usage` column when adding the image(s) to the 'files' table.

                                                If not specified, the fallback value 'image' will be used.

                                                This works from version 9.2 onwards.
                                        location:
                                            type: string
                                            description: >
                                                Whether to store the file(s) in the database, or docstore folder.

                                                Possible values: 'db', 'docstore'.
                                                
                                                If not specified, the file will be stored in the database.

                                                This works from version 9.2 onwards.
                                        
                                        uploaded_ids:
                                            type: object
                                            additionalProperties:
                                                type: number
                                                description: >
                                                    The ID of the uploaded file
                                            description: >
                                                If you create a file upload as a site setting or a plugin setting, the common features
                                                module will automatically call the ze\file::getPathOfUploadInCacheDir() and ze\file::addToDatabase()
                                                functions to put the uploaded file(s) into the database and convert the filepath into a file ID.
                                                The filepaths and their corresponding file IDs will be stored in this lookup array, just in case
                                                you need to know what the old/new values are.
                                
                                pick_items: &pick_items
                                    type: object
                                    description: >
                                        This type of field lets an administrator pick items from Organizer and have their id
                                        stored in the field.
                                    required:
                                        - path
                                    properties:
                                        path:
                                            type: string
                                            description: >
                                                The path of the panel in Organizer that you wish to show.
                                                
                                                You may enter either a tag path or a navigation path, but if you enter a
                                                navigation path you cannot leave the min_path and target_path properties unset.
                                        target_path:
                                            type: string
                                            description: >
                                                The tag path of the panel in Organizer where the "Choose" button should be shown.
                                                
                                                If you enter a navigation path it will be converted to a tag path for you.
                                        min_path:
                                            type: string
                                            description: >
                                                You must enter the tag path of a panel to act as a barrier to navigation.
                                                
                                                If the disallow_refiners_looping_on_min_path property is set,
                                                the back button will never not be shown on this panel.
                                                
                                                If the disallow_refiners_looping_on_min_path property is not set,
                                                the back button will not be shown on this panel if it were to navigate
                                                away from the panel.
                                                Refiners that "loop", going from and to the same panel over and over again,
                                                will still show the back button.
                                                
                                                If you enter a navigation path it will be converted to a tag path for you.
                                        max_path:
                                            type:
                                                - string
                                                - boolean
                                            default: (defaults to the target_path property)
                                            description: >
                                                You can enter the path of a panel to act as a barrier to navigation.
                                                
                                                This works like a limit; the Admin will not be able to navigate away from this
                                                panel except by pressing the back button.
                                                
                                                If you enter a navigation path it will be converted to a tag path for you.
                                                
                                                If you don't want to use a limit you can also set this property to false to disable it.
                                        disallow_refiners_looping_on_min_path:
                                            type: boolean
                                            description: >
                                                This modifies the logic for how the min_path property works with refiners.
                                        
                                        one_to_one_choose_phrase:
                                            type: string
                                            default: Choose
                                            description: >
                                                A phrase for the choose button.
                                        
                                        multiple_select:
                                            type: boolean
                                            description: >
                                                Setting this option will allow an Admin to pick multiple values.
                                                They will be stored as comma-separated values.
                                        one_to_many_choose_phrase:
                                            type: string
                                            default: (defaults to the one_to_one_choose_phrase property)
                                            description: >
                                                A phrase for the choose button then multiple items are selected.
                                        
                                        select_phrase:
                                            type: string
                                            default: Select...
                                            description: >
                                                The text for the Select button. Has a default value if not set.
                                        nothing_selected_phrase:
                                            type: string
                                            default: Nothing selected
                                            description: >
                                                Text to show in place of a name if nothing is selected.
                                        
                                        hide_info_button:
                                            type: boolean
                                            description: >
                                                This hides the blue "i" button from each selected item.
                                                
                                                This works from version 7.3 onwards.
                                        
                                        enable_type_ahead_search:
                                            type: boolean
                                            description: >
                                                Set this to true to enable the typeahead search.
                                                
                                                Note: for backwards compatability reasons, this property
                                                defaults to true for the admin box toolkit.
                                        
                                        add_conductor_vars_to_type_ahead_search:
                                            type: boolean
                                            description: >
                                                If an FAB is opened from a conductor, and the admin opens the settings
                                                from the front-end, you can set this option to pass the conductor
                                                variables on to the AJAX request for the type-ahead search.
                                                
                                                (If an item was already selected when the FAB was opened, the variables
                                                 will also be passed on in the AJAX request to look up the item's name.)
                                                
                                                This only works for FABs that have the slotName variable in their key,
                                                and are opened from the front-end.
                                                
                                                This works from version 8.9 onwards.
                                        
                                        hide_select_button:
                                            type: boolean
                                            description: >
                                                This hides the select button from the interface in the
                                                admin box toolkit.
                                                
                                                Note: this property does not disable the type-ahead search.
                                        
                                        info_button_path:
                                            type: string
                                            description: >
                                                You can set this property to specify the navigation path used to show the
                                                item when the user clicks the info button.
                                                
                                                (If you don't set this, it defaults to the path property.)
                                                
                                                This works from version 8.5 onwards.
                                        
                                        allow_typing_anything:
                                            type: boolean
                                            description: >
                                                Allow the user to type anything into the box.
                                                This is useful if you wish to have a type-ahead that helps users pick
                                                existing things, but also be able to create something new by typing a
                                                name that doesn't yet exist.
                                                
                                                This works from version 7.5 onwards.
                                        
                                        picked_item_microtemplate:
                                            type: string
                                            description: >
                                                Set this to override the microtemplate used to display the picked items.
                                                
                                                This works from version 8.2 onwards.
                                        dropdown_item_microtemplate:
                                            type: string
                                            description: >
                                                Set this to override the microtemplate used to display the items in the
                                                dropdown for the typeahead.
                                                
                                                This works from version 8.2 onwards.
                                        
                                        #In 7.3 the "hide_remove_button" property does nothing
                                        #hide_remove_button:
                                        #    type: boolean
                                        #    description: >
                                        #        This hides the remove button from the interface.
                                        
                                        visible_if_for_all_selected_items:
                                            type: string
                                            description: >
                                                A snippet of JavaScript code to be evaluated; if it's true for an item then that item is be pickable.
                                        
                                        disabled_if_for_all_selected_items:
                                            type: string
                                            description: >
                                                A snippet of JavaScript code to be evaluated; if it's false for an item then that item is be pickable.
                                        
                                        traits:
                                            type: object
                                            additionalProperties:
                                                type: *variable
                                            description: >
                                                Only allow items with all the listed traits to be picked.
                                                
                                                Warning: this feature is deprecated!
                                        without_traits:
                                            type: object
                                            additionalProperties:
                                                type: *variable
                                            description: >
                                                Only allow items without any of the listed traits to be picked.
                                                
                                                Warning: this feature is deprecated!
                                        with_columns_set:
                                            type: object
                                            additionalProperties:
                                                type: *variable
                                            description: >
                                                Only allow items with the listed columns set to be picked.
                                        without_columns_set:
                                            type: object
                                            additionalProperties:
                                                type: *variable
                                            description: >
                                                Only allow items where the listed columns are empty to be picked.
                                        
                                        reorder_items:
                                            type: boolean
                                            description: >
                                                Setting this property will allow the administrator reorder the selected items by dragging/dropping.
                                                
                                                Otherwise items will be displayed in alphabetical order.
                                
                                
                                
                                captcha:
                                    type: object
                                    description: >
                                        Set this property to add a Google ReCAPTURE to a TUIX form.
                                        
                                        This will only work properly if the ReCAPTURE library is already included on the
                                        page, and the sitekey and secret key are set correctly in the site settings.
                                        
                                        When the user correctly completes the CAPTURE, their successful responce will be stored
                                        in this field's value.
                                        
                                        Any unsuccessful responces, or responces that are not verified, will be stripped out.
                                        So if you see a value in this field in your PHP code, then you can be sure that the
                                        CAPTURE was successfully completed.
                                    properties:
                                        theme:
                                            enum:
                                                - dark
                                                - light
                                            description: >
                                                The color theme, defaults to light.
                                        size:
                                            enum:
                                                - compact
                                                - normal
                                            description: >
                                                The size, defaults to normal.
                                        tabindex:
                                            type: integer
                                    
                                
                                
                                snippet:
                                    type: object
                                    description: >
                                        This lets you add some static html to your Admin Box.
                                    properties:
                                        html:
                                            type: string
                                            description: >
                                                Some HTML code to display
                                        
                                        microtemplate:
                                            type: string
                                            description: >
                                                This allows you to enter a microtemplate (this can either be the code for the template,
                                                or the name of a pre-defined template), that will be run on the client
                                                and display HTML.
                                                
                                                This works from version 8.0 onwards.
                                        
                                        hr:
                                            type: boolean
                                            description: >
                                                Set this to add a <hr> tag.
                                                
                                                This works from version 7.7 onwards.
                                        hr_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <hr> tag.
                                                
                                                This works from version 7.7 onwards.
                                        hr_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <hr> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h1:
                                            type: string
                                            description: >
                                                Some text to display as a <h1> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h1_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <h1> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h1_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <h1> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h2:
                                            type: string
                                            description: >
                                                Some text to display as a <h2> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h2_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <h2> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h2_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <h2> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h3:
                                            type: string
                                            description: >
                                                Some text to display as a <h3> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h3_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <h3> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h3_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <h3> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h4:
                                            type: string
                                            description: >
                                                Some text to display as a <h4> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h4_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <h4> tag.
                                                
                                                This works from version 7.7 onwards.
                                        h4_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <h4> tag.
                                                
                                                This works from version 7.7 onwards.
                                        label:
                                            type: string
                                            description: >
                                                Some text to display as a label.
                                                
                                                This works from version 7.3 onwards.
                                        label_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <label> tag.
                                                
                                                This works from version 7.5 onwards.
                                        label_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <label> tag.
                                                
                                                This works from version 7.7 onwards.
                                        div:
                                            type: string
                                            description: >
                                                Some text to display as a <div> tag.
                                                
                                                This works from version 8.0 onwards.
                                        div_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <div> tag.
                                                
                                                This works from version 8.0 onwards.
                                        div_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <div> tag.
                                                
                                                This works from version 8.0 onwards.
                                        p:
                                            type: string
                                            description: >
                                                Some text to display as a <p> tag.
                                                
                                                This works from version 8.0 onwards.
                                        p_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <p> tag.
                                                
                                                This works from version 8.0 onwards.
                                        p_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <p> tag.
                                                
                                                This works from version 8.0 onwards.
                                        span:
                                            type: string
                                            description: >
                                                Some text to display as a <span> tag.
                                                
                                                This works from version 8.0 onwards.
                                        span_class:
                                            type: string
                                            description: >
                                                A CSS class to add around the <span> tag.
                                                
                                                This works from version 8.0 onwards.
                                        span_style:
                                            type: string
                                            description: >
                                                Inline styles to add to the <span> tag.
                                                
                                                This works from version 8.0 onwards.
                                        
                                        url:
                                            type: string
                                            description: >
                                                A URL (either relative or absolute) to retrieve some HTML from via AJAX.
                                        cache:
                                            type: boolean
                                            description: >
                                                Whether the AJAX request should be cached.
                                                
                                                If not set, the url will be requested each time the tab is redrawn.
                                        
                                        #Removed as of 7.7, please use the hr/hr_style properties instead
                                        #separator:
                                        #    type:
                                        #        - object
                                        #    description: >
                                        #        Setting this property lets you add a <hr> property.
                                        #    required:
                                        #        - style
                                        #    properties:
                                        #        style:
                                        #            type: string
                                        #            description: >
                                        #                Any inline styles you wish to add to your <hr> property.
                                        
                                        show_split_values_from:
                                            type: string
                                            description: >
                                                This can be used to draw the second part of a "type: radios" field
                                                that was split up by using the  "split_values_if_selected"
                                                property on one or more of its fields.
                                                
                                                If no values were split, then this field will be auto-hidden.
                                                
                                                This works from version 7.4 onwards.
                                image:
                                    type: object
                                    description: >
                                        This lets you add an image in the middle of your form, by setting a width, height and URL.
                                        
                                        This works from version 9.2 onwards.
                                    properties:
                                        url:
                                            type: string
                                            description: >
                                                A URL (either relative or absolute) to the image.
                                        width:
                                            type: integer
                                            description: >
                                                The width to display the image at.
                                        height:
                                            type: integer
                                            description: >
                                                The height to display the image at.
                                
                                image_crop_tool:
                                    type: object
                                    description: >
                                        The image crop tool lets you show an image and display a tool that lets the user
                                        select an area of the image.
                                        
                                        This is powered by the Responsive Cropper Jquery Plugin from https://github.com/aewebsolutions/rcrop
                                        
                                        This works from version 9.2 onwards.
                                
                                use_button_tag:
                                    type: boolean
                                    description: >
                                        Use a <button> tag rather than an <input> tag for buttons
                                        
                                        This works from version 7.6 onwards.
                                
                                icon_left:
                                    type: string
                                    description: >
                                        This places a <i></> tag to the left of a <button> with the specified CSS class name(s).
                                        Used for adding font-based icons to buttons, e.g. Font Awesome.
                                        
                                        This works from version 7.6 onwards.
                                icon_right:
                                    type: string
                                    description: >
                                        This places a <i></> tag to the right of a <button> with the specified CSS class name(s).
                                        Used for adding font-based icons to buttons, e.g. Font Awesome.
                                        
                                        This works from version 7.6 onwards.
                                
                                
                                value:
                                    type: *variable
                                    description: >
                                        The intial value of the field. You should set this in your TUIX file or
                                        in your <code>fillAdminBox()</code> method.
                                        
                                        You can use the <code>$values</code> array to set and retrieve the values of your fields
                                        without worrying about the difference between value and current_value.
                                current_value:
                                    type: *variable
                                    modified_by_cms: true
                                    description: >
                                        If edit mode is enabled, the CMS will store the current value of the field here.
                                        
                                        You can use the <code>$values</code> array to set and retrieve the values of your fields
                                        without worrying about the difference between value and current_value.
                                selected_option:
                                    modified_by_cms: true
                                    description: >
                                        Select lists and radio-groups work off a list of values.
                                        
                                        If the user selects a value, the CMS will place a shortcut to the selected value
                                        in the selected_option property, to help you write your visible_if conditions in JavaScript.
                                        
                                        This is only available in JavaScript, you will not see it in PHP.
                                        
                                        This works from version 7.5 onwards.
                                
                                redraw_onchange:
                                    type: boolean
                                    description: >
                                        If set, the current tab will be redrawn on the client whenever an Admin changes this field.
                                        
                                        Note: in the case of text fields, this won't trigger until the Admin un-focuses the field.
                                
                                redraw_immediately_onchange:
                                    type: boolean
                                    description: >
                                        If this property is set on a text field, the current tab will be redrawn on the client whenever
                                        an Admin changes this field.
                                        
                                        This happens immediately; the system won't wait for the un-focus event.
                                        
                                        However to prevent framerate/performance issues, this will only trigger when the field is first
                                        changed from (or back to) its original value. Further modifications to the value of the field
                                        won't retrigger the change.
                                        
                                        This works from version 8.0 onwards.
                                
                                validate_onchange:
                                    type: boolean
                                    description: >
                                        If set, the contents of the Admin Box will be sent to the server to your
                                        <code>validateAdminBox()</code> method whenever an Admin changes this field.
                                        
                                        Note: your <code>formatAdminBox()</code> method will also be called.
                                
                                format_onchange:
                                    type: boolean
                                    description: >
                                        If set, the contents of the Admin Box will be sent to the server to your
                                        <code>formatAdminBox()</code> method whenever an Admin changes this field.
                                
                                format_on_toggle_on:
                                    type: boolean
                                    description: >
                                        This property for "type: toggle" buttons will call your
                                        <code>formatAdminBox()</code> method, but only when the toggle is turned on.
                                        
                                        This works from version 7.7 onwards.
                                
                                format_on_toggle_off:
                                    type: boolean
                                    description: >
                                        This property for "type: toggle" buttons will call your
                                        <code>formatAdminBox()</code> method, but only when the toggle is turned off.
                                        
                                        This works from version 7.7 onwards.
                                
                                validation:
                                    type: object
                                    description: >
                                        Some quick-to-use validation-logic for fields.
                                    properties:
                                        required:
                                            type: *booly
                                            description: >
                                                An error message to display if a value is not entered for this field.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        required_if_not_hidden:
                                            type: *booly
                                            description: >
                                                A shortcut to setting both the required and only_validate_when_not_hidden properties.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        email:
                                            type: *booly
                                            description: >
                                                An error message to display if a valid email address is not entered for this
                                                field.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        emails:
                                            type: *booly
                                            description: >
                                                An error message to display if a comma-separated list of valid email addresses
                                                are not entered for this field.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        no_spaces:
                                            type: *booly
                                            description: >
                                                An error message to display if any spaces are entered for this field.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        no_commas:
                                            type: *booly
                                            description: >
                                                An error message to display if any commas are entered for this field.
                                                
                                                You can enter a value of true to highlight the field in red without a message.
                                        
                                                This works from version 8.2 onwards.
                                        no_special_characters:
                                            type: *booly
                                            description: >
                                                An error message to display if any special characters or multilingual characters are entered.
                                                This works from version 7.7 onwards.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        numeric:
                                            type: *booly
                                            description: >
                                                An error message to display if a numeric value is not entered for this field.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        non_zero_number:
                                            type: *booly
                                            description: >
                                                An error message to display if the number entered is zero.
                                                
                                                This works from version 9.5 onwards.
                                        positive_number:
                                            type: *booly
                                            description: >
                                                An error message to display if the number entered is not positive.
                                                
                                                This works from version 9.5 onwards.
                                        integer_number:
                                            type: *booly
                                            description: >
                                                An error message to display if the number entered is not an integer.
                                                
                                                This works from version 9.5 onwards.
                                        screen_name:
                                            type: *booly
                                            description: >
                                                An error message to display if a valid Screen Name is not entered for this
                                                field.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        ascii_only:
                                            type: *booly
                                            description: >
                                                An error message to display if a non-ascii character is entered for this
                                                field.
                                                This works from version 9.0 onwards.
                                                
                                                You can enter a value of true to highlight the field in red without a message.
                                        mobile_number:
                                            type: *booly
                                            description: >
                                                An error message to display if an invalid mobile number is entered.
                                                
                                                You can enter a value of true to highlight the field in red without a message.
                                                
                                                This works from version 8.4 onwards.
                                        
                                        #New rules for image validation in 7.0.5 and 7.0.7
                                        must_be_image:
                                            type: *booly
                                            description: >
                                                An error message to display in a file picker if a .gif, .jpg or .png file is not chosen.
                                                This works from version 7.0.7 onwards.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        
                                        must_be_image_or_svg:
                                            type: *booly
                                            description: >
                                                An error message to display in a file picker if a .gif, .jpg, .png or .svg file is not chosen.
                                                This works from version 7.0.7 onwards.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        
                                        must_be_gif_or_png:
                                            type: *booly
                                            description: >
                                                An error message to display in a file picker if a .gif or .png file is not chosen.
                                                This works from version 7.0.5 onwards.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        
                                        must_be_gif_ico_or_png:
                                            type: *booly
                                            description: >
                                                An error message to display in a file picker if a .gif, .ico or .png file is not chosen.
                                                This works from version 7.0.7 onwards.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        
                                        must_be_ico:
                                            type: *booly
                                            description: >
                                                An error message to display in a file picker if a .ico file is not chosen.
                                                This works from version 7.0.5 onwards.
                                                
                                                From version 8 onwards, you can enter a value of true to highlight the field in red without a message.
                                        
                                        
                                        unique_a: &unique
                                            type: *booly
                                            description: >
                                                Add this property to two or more fields on the same tab to check that the user
                                                enters different values into each field.
                                                If the same value is entered twice, this error message will be displayed.
                                                
                                                You can enter a value of true to highlight the field in red without a message.
                                                
                                                This works from version 8.1 onwards.
                                        
                                        unique_b: *unique
                                        unique_c: *unique
                                                
                                                
                                        non_present:
                                            type: object
                                            description: >
                                                You can use this to check whether something already exists in a table, and raise an error if so.
                                                
                                                This works from version 8.0 onwards.
                                            properties:
                                                table:
                                                    type: string
                                                    description: >
                                                        The name of the table (excluding the DB_PREFIX).
                                                        
                                                        You can use mergefields such as [[EXAMPLE_MODULE_4_PREFIX]] if you need to use a module's table.
                                                column:
                                                    type: string
                                                    description: >
                                                        The column name to look for the value in.
                                                ids:
                                                    type: object
                                                    description: >
                                                        Any extra filters you wish to add to the exists check.
                                                        The format is the same as the $ids variable in the ze\row::exists() function.
                                                message:
                                                    type: *booly
                                                    description: >
                                                        An error message to display if a match is found.
                                                        
                                                        You can use the name of the columns and any variables you placed in the ids object
                                                        as merge-fields in the message.
                                                        
                                                        You can enter a value of true to highlight the field in red without a message.
                                        
                                        
                                        only_validate_when_saving:
                                            type: boolean
                                            description: >
                                                Add this property to only run the above checks when saving.
                                                If this property is not set, the validation will also be applied when the admin switches between tabs.
                                                
                                                This works from version 8.0 onwards.
                                        
                                        only_validate_when_not_hidden:
                                            type: boolean
                                            description: >
                                                Don't apply any validation if the field was hidden using the <code>hidden</code> or <code>visible_if</code> properties.
                                                
                                                Note: <code>visible_if</code> is a client-side check; you should not rely on <code>only_validate_when_not_hidden</code>
                                                for security decisions as it can be manipulated by the client.
                                                
                                                This works from version 8.0 onwards.
                                
                                onoff:
                                    type: boolean
                                    description: >
                                        You can set this property to turn a checkbox into an on/off toggle.
                                        
                                        This uses code from https://proto.io/freebies/onoff/.
                                        
                                        Note that this option will add the HTML, but the styles needed may not
                                        be present. If they're not there, you may need to add them!
                                        
                                        This works from version 9.0 onwards.
                                        
                                        
                                        From 9.4 onwards there is an experimental feature where you can use this
                                        option for a select list as well.
                                        
                                        For this to work, your select list must have only two values visible:
                                          - The "on" value in the first position
                                          - The "off" value in the second position
                                        
                                        If this requirement is not met the select list will be displayed as a normal
                                        select list.
                                        
                                indeterminate:
                                    type: boolean
                                    description: >
                                        You can set this to true to set the indeterminate property of a checkbox-type field.
                                        
                                        When the admin clicks on the checkbox, it will automatically remove this property.
                                        
                                        
                                        This works from version 7.0.6 onwards.
                                indeterminates:
                                    type: object
                                    additionalProperties:
                                        type: boolean
                                    description: >
                                        Where you have a checkboxes-type field, you can use this to set the indeterminate property
                                        for each checkbox individually.
                                        To do this, enter the id of each value into this object.
                                        
                                        When the admin clicks on a checkbox, it will automatically remove the property.
                                        
                                        
                                        This works from version 7.0.6 onwards.
                                
                                multiple_edit:
                                    type: object
                                    description: >
                                        If this property is set, a checkbox will appear next to a field that becomes checked
                                        when the administrator makes changes.
                                        
                                        It's deprecated and you should avoid using it.
                                    properties:
                                        _changed:
                                            type: boolean
                                            modified_by_cms: true
                                            description: >
                                                This property indicates whether an Admin has changed the value of a field.
                                        changed:
                                            type: boolean
                                            description: >
                                                Setting this property marks a field as being initially changed.
                                                This allows for the original value of a field to be different than the default
                                                value.
                                        original_value:
                                            type: *variable
                                            description: >
                                                If you set the <code>changed</code> property, you should provide the original value of the
                                                field here.
                                            
                                        select_list:
                                            #This needs to be changed if using docson as it glitches out here
                                            type:
                                                - boolean
                                                - object
                                            properties:
                                                not_changed_label:
                                                    type: string
                                                    default: Not changed
                                                    description: >
                                                        The text of the "not changed" select list option.
                                                changed_label:
                                                    type: string
                                                    default: Not changed
                                                    description: >
                                                        The text of the "changed" select list option.
                                        hide_ui:
                                            type: boolean
                                            description: >
                                                Setting this property will keep the <code>multiple_edit</code> logic intact, but not show the
                                                checkbox to the Admin.
                                        warn_when_abandoning_changes:
                                            type: boolean
                                            description: >
                                                Setting this option will warn the Admin if they change a field but then try to
                                                abandon their changes.
                                
                                is_admin_permission:
                                    type: boolean
                                    static: true
                                    description: >
                                        This is used for fields on the permissions tab of the "zenario_admin" admin box,
                                        to flag that they are permissions.
                                        
                                        
                                        This property must be written in your .yaml file.
                                        It can't be changed in php.
                                
                                plugin_setting:
                                    type: object
                                    static: true
                                    description: >
                                        If this Admin Box defines your module's plugin settings, you will need to set this
                                        property for each field you wish to be loaded and saved.
                                        
                                        You can have fields without this property if you wish, but these will not be loaded or saved.
                                        
                                        
                                        This property must be written in your .yaml file.
                                        It can't be changed in php.
                                    required:
                                        - name
                                    properties:
                                        name:
                                            type: string
                                            static: true
                                            description: >
                                                The name of this plugin setting in the database.
                                                
                                                This value is read when your Module is installed or a database update for your Module is applied.
                                                If you change it you will need to increment your Module's revision number.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        value:
                                            type: *variable
                                            static: true
                                            description: >
                                                The default value for this Plugin Setting.
                                                
                                                This value is read when your Module is installed or a database update for your Module is applied.
                                                If you change it you will need to increment your Module's revision number.
                                                
                                                As a helpful shortcut, if you do not provide it here the CMS will read the <code>value</code>
                                                property from the field itself.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        
                                        dont_save_default_value:
                                            type: boolean
                                            description: >
                                                If the value of this field is equal to its default value, don't save it into the database.
                                        
                                        
                                                This works from version 7.3 onwards.
                                        
                                        save_when_field_is_hidden:
                                            type: boolean
                                            description: >
                                                Most plugin settings are not saved into the database if their fields were hidden in the FAB.
                                                Set this option if you do want to save the value of a hidden field.
                                                
                                                Note: if the tab is hidden, the plugin setting will never be saved, regardless of this option.
                                                
                                        
                                                This works from version 9.6 onwards.
                                        
                                        is_searchable_content:
                                            type: boolean
                                            static: true
                                            description: >
                                                This property marks that this setting should be considered as Content, and the value
                                                will be searchable (e.g. using a Search Results Plugin).
                                                
                                                This only applies for version controlled plugins, as the search always ignores plugins in the library.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        
                                        is_email_address:
                                            type: boolean
                                            description: >
                                                Marks this field as an email address field when marked as true for a plugin setting.
                                                If it contains an email address it'll show in the Plugin emails organizer panel.
                                        
                                        translate:
                                            type: boolean
                                            static: true
                                            description: >
                                                This property marks that this setting contains text that should be translated when translating
                                                into a different language.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        
                                        foreign_key_to:
                                            enum:
                                                - category
                                                - categories
                                                - content
                                                - email_template
                                                - file
                                                - files
                                                - menu_section
                                            static: true
                                            description: >
                                                You can include this property to indicate that your Plugin references something else
                                                in the CMS.
                                                
                                                Possible values are:
                                                    • category,
                                                    • categories (a comma-separated list of Categories),
                                                    • content (a Content Item),
                                                    • email_template,
                                                    • file (an inline file),
                                                    • files (a comma-separated list of inline files),
                                                    • menu_section (a section in the Menu).
                                                
                                                Some Modules may add other values that you can use here.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        dangling_cross_references:
                                            enum:
                                                - keep
                                                - remove
                                                - delete_instance
                                            static: true
                                            default: remove
                                            description: >
                                                What to do with dangling cross-references, if the foreign key referenced is
                                                deleted.
                                                
                                                Possible values are:
                                                    • keep
                                                        This option will do nothing, leaving the dangling cross-reference.
                                                    • remove
                                                        This option will cause this setting's value to be deleted.
                                                        In the case of a comma-separated list of Categories, the value will
                                                        stay but the deleted Category will be removed from the list.
                                                    • delete_instance
                                                        This option will cause the Plugin to be automatically deleted.
                                                        
                                                        If this setting is being used for a Nested Plugin, only the Nested
                                                        Plugin will be deleted and not the entire Nest.
                                                        
                                                        Before version 6.0.6, this option only worked for Content Items.
                                                        From 6.0.6, it works for the category, email_template and menu_section
                                                        options as well.
                                                        It doesn't work with comma-separated list of Categories, or files.
                                                
                                                Note: if an Admin exports a Content Item as HTML and then imports it,
                                                this will break the reference, and this option will do nothing.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        advanced_inline_styles:
                                            type: boolean
                                            description: >
                                                Set this to true if you have a WYSIWYG Editor and want to allow advanced inline styles.
                                                
                                                This isn't needed if you have an editor with restricted options that just lets the admin
                                                enter text, however if you allow images or other content we recommend you enable this.
                                                
                                                This works from version 9.6 onwards.
                                
                                site_setting:
                                    type: object
                                    static: true
                                    description: >
                                        If this Admin Box defines your module's site settings, you will need to set this
                                        property for each field you wish to be loaded and saved.
                                        
                                        You can have fields without this property if you wish, but these will not be loaded or saved.
                                        
                                        
                                        This property must be written in your .yaml file.
                                        It can't be changed in php.
                                    required:
                                        - name
                                    properties:
                                        name:
                                            type: string
                                            static: true
                                            description: >
                                                The code-name of this Site Setting.
                                                
                                                This value is read when your Module is installed or a database update for your Module is applied.
                                                If you change it you will need to increment your Module's revision number.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        value:
                                            type: *variable
                                            static: true
                                            description: >
                                                The default value for this Site Setting.
                                                
                                                This value is read when your Module is installed or a database update for your Module is applied.
                                                If you change it you will need to increment your Module's revision number.
                                                
                                                As a helpful shortcut, if you do not provide it here the CMS will read the <code>value</code>
                                                property from the field itself.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        encrypt:
                                            type: boolean
                                            description: >
                                                Set this to true to request that this setting be encrypted.
                                                E.g. if this is a password or something else sensitive.
                                                
                                                The value will only actually be encrypted if encryption is available for a site,
                                                otherwise it will still be stored as plain-text.
                                                
                                                This works from version 7.6 onwards.
                                        secret:
                                            type: boolean
                                            description: >
                                                Set this to true to request that this setting be secret.
                                                E.g. if this is a password or something else sensitive.
                                                
                                                Secret settings are still available to be accessed from your PHP code
                                                but are unavilable in "lower" security environments such as Twig code.
                                                
                                                This works from version 8.6 onwards.
                                        protect_from_database_restore:
                                            type: boolean
                                            description: >
                                                Set this to true to flag that this setting should not be changed
                                                upon a site reset or a database restore.
                                                
                                                For example, you might have a staging site that needs to be the same as
                                                a live site, except for a few config options such as MQTT server or email
                                                debug mode that should stay set to their dev settings.
                                                
                                                Note: this feature only works when using the CMS tool to restore a backup.
                                                
                                                This works from version 8.7 onwards.
                                        advanced_inline_styles:
                                            type: boolean
                                            description: >
                                                Set this to true if you have a WYSIWYG Editor and want to allow advanced inline styles.
                                                
                                                This isn't needed if you have an editor with restricted options that just lets the admin
                                                enter text, however if you allow images or other content we recommend you enable this.
                                                
                                                This works from version 9.6 onwards.
                                
                                admin_setting:
                                    type: object
                                    static: true
                                    description: >
                                        When you are adding fields to the Administrator FAB ("zenario_admin") then you
                                        can declare them as admin settings to have them loaded and saved.
                                        
                                        You can have fields without this property if you wish, but these will not be loaded or saved.
                                        
                                        
                                        This property must be written in your .yaml file.
                                        It can't be changed in php.
                                    required:
                                        - name
                                    properties:
                                        name:
                                            type: string
                                            static: true
                                            description: >
                                                The code-name of this admin setting.
                                                
                                                This value is read when your Module is installed or a database update for your Module is applied.
                                                If you change it you will need to increment your Module's revision number.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                        value:
                                            type: *variable
                                            static: true
                                            description: >
                                                The default value for this admin setting.
                                                
                                                This value is read when your Module is installed or a database update for your Module is applied.
                                                If you change it you will need to increment your Module's revision number.
                                                
                                                As a helpful shortcut, if you do not provide it here the CMS will read the <code>value</code>
                                                property from the field itself.
                                                
                                                
                                                This property must be written in your .yaml file.
                                                It can't be changed in php.
                                
                                values:
                                    type:
                                        - string
                                        - object
                                    description: >
                                        Use this property to define a List of Values for <code>checkboxes</code>, <code>radios</code> or <code>select</code>-type fields.
                                        
                                        From 7.0.5 onwards, you can use this property for a text field to add a jQuery autocomplete.
                                        
                                        From 7.0.7 onwards, you can enter the code-name of lov.
                                    additionalProperties: &lovValues
                                        #This needs to be changed if using docson as it glitches out here
                                        type:
                                            - string
                                            - object
                                        properties:
                                            label:
                                                type:
                                                    - number
                                                    - string
                                                description: >
                                                    The display value
                                            ord: &ord
                                            hidden: *hidden
                                            visible_if: *visible_if
                                            
                                            parent:
                                                type: *stringy
                                                description: >
                                                    This is used for hierarchical checkboxes, radiogroups and select lists.
                                                    You can enter the key/saved value of another value here to create a parent/child relationship.
                                                    
                                                    From version 7.0.6 onwards you can also use this for values in select lists.
                                            
                                            hide_when_children_are_not_visible:
                                                type: boolean
                                                description: >
                                                    This is used for hierarchical select lists.
                                                    
                                                    Use this to hide the parent if it has no child values
                                                    
                                                    This works from version 7.5 onwards.
                                            
                                            pre_field_html:
                                                type: string
                                                description: >
                                                    Some HTML code to be placed just before this option. (Doesn't apply to select list values.)
                                            post_field_html:
                                                type: string
                                                description: >
                                                    Some HTML code to be placed just after this option. (Doesn't apply to select list values.)
                                            note_below:
                                                type: string
                                                description: >
                                                    Places a piece of text below this option in italics. (Doesn't apply to select list values.)
                                                    Won't be HTML escaped.
                                            
                                            disabled:
                                                type: boolean
                                                description: >
                                                    Makes a select list or radio-group option disabled
                                            disabled_if:
                                                type: string
                                                description: >
                                                    A snippet of JavaScript code to be evaluated.
            
                                                    Options will be disabled/unselectable if the code provided does not evaluate to <code>true</code>.
            
                                                    See https://zenar.io/visibility-in-tuix for examples.
                                            
                                            
                                            split_values_if_selected:
                                                type: boolean
                                                description: >
                                                    Use this to split a "type: radios" field into two parts, and to sandwich conditional fields inbetween the values.
                                                    
                                                    If a "split_values_if_selected" field is selected, it the toolkit will delay the drawing the remaining values
                                                    until it seems a snippet with the show_split_values_from property set to this field's code name.
                                                    
                                                    This works from version 7.4 onwards.
                                            
                                            hide_unselected_values_when_readonly:
                                                type: boolean
                                                description: >
                                                    If a "type: checkboxes" or "type: radios" field is readonly, don't draw any unselected values.
                                                    
                                                    This works from version 7.7 onwards.
                                            
                                            display_as_text_when_readonly:
                                                type: boolean
                                                description: >
                                                    If a "type: checkboxes" or "type: radios" field is readonly, don't draw any unselected values
                                                    or the form elements. Instead just display as text.
                                                    
                                                    If nothing is selected then the field's empty_value property will be displayed.
                                                    
                                                    This works from version 8.0 onwards.
                                            
                                            label_class:
                                                type: string
                                                description: >
                                                    This property allows you to place a CSS class name on a checkbox
                                                    or radio's label.
                                                    
                                                    This works from version 8.0 onwards.
                                            
                                            icon_class:
                                                type: string
                                                description: >
                                                    If you set this property, an empty <span> will appear inside the label
                                                    with the specified CSS class name.
                                                    
                                                    This works from version 9.3 onwards.
                                            
                                            tooltip:
                                                type: string
                                                description: >
                                                    This adds a (?) mark symbol after a checkbox
                                                    or radio's label, with a tooltip displayed when the user
                                                    hovers their mouse cursor over the (?) mark symbol.
                                    
                                                    This works from version 9.4 onwards.
                                            
                                            accesskey:
                                                type: *stringy
                                                description: Sets the accesskey HTML attribute on a checkbox or radio option.
                                            class:
                                                type: string
                                                description: Sets the class HTML attribute on a checkbox or radio option.
                                            dir:
                                                type: string
                                                description: Sets the dir HTML attribute on a checkbox or radio option.
                                            onblur:
                                                type: string
                                                description: Sets the onblur HTML attribute on a checkbox or radio option.
                                            onchange:
                                                type: string
                                                description: Sets the onchange HTML attribute on a checkbox or radio option.
                                            onclick:
                                                type: string
                                                description: Sets the onclick HTML attribute on a checkbox or radio option.
                                            ondblclick:
                                                type: string
                                                description: Sets the ondblclick HTML attribute on a checkbox or radio option.
                                            onfocus:
                                                type: string
                                                description: Sets the onfocus HTML attribute on a checkbox or radio option.
                                            onkeydown:
                                                type: string
                                                description: Sets the onkeydown HTML attribute on a checkbox or radio option.
                                            onkeypress:
                                                type: string
                                                description: Sets the onkeypress HTML attribute on a checkbox or radio option.
                                            onkeyup:
                                                type: string
                                                description: Sets the onkeyup HTML attribute on a checkbox or radio option.
                                            onpaste:
                                                type: string
                                                description: Sets the onpaste HTML attribute on a checkbox or radio option.
                                            oninput:
                                                type: string
                                                description: Sets the oninput HTML attribute on a checkbox or radio option.
                                            onmousedown:
                                                type: string
                                                description: Sets the onmousedown HTML attribute on a checkbox or radio option.
                                            onmousemove:
                                                type: string
                                                description: Sets the onmousemove HTML attribute on a checkbox or radio option.
                                            onmouseout:
                                                type: string
                                                description: Sets the onmouseout HTML attribute on a checkbox or radio option.
                                            onmouseover:
                                                type: string
                                                description: Sets the onmouseover HTML attribute on a checkbox or radio option.
                                            onmouseup:
                                                type: string
                                                description: Sets the onmouseup HTML attribute on a checkbox or radio option.
                                            onselect:
                                                type: string
                                                description: Sets the onselect HTML attribute on a checkbox or radio option.
                                            style:
                                                type: string
                                                description: Sets the style HTML attribute on a checkbox or radio option.
                                            tabindex:
                                                type: number
                                                description: Sets the tabindex HTML attribute on a checkbox or radio option.
                                            title:
                                                type: *stringy
                                                description: Sets the title HTML attribute on a checkbox or radio option.
                                
                                values_visible_if:
                                    type: string
                                    description: >
                                        A shortcut to setting the visible_if property on every value for a select list/checkboxes/radios field.
                                        
                                        This works from version 8.1 onwards.
                                values_disabled_if:
                                    type: string
                                    description: >
                                        A shortcut to setting the disabled_if property on every value for a select list.
                                        
                                        This works from version 8.1 onwards.
                                
                                no_values_message:
                                    type: string
                                    description: >
                                        If a type: checkboxes or a type: radios field has no values, this message will be displayed instead.
                                        
                                        This works from version 7.6 onwards.
                                
                                checking_child_checks_parents:
                                    type: boolean
                                    description: >
                                        This property only applies to hierarchical checkboxes.
                                        
                                        It will ensure that any parent checkboxes are checked if one of their children is checked.
                                
                                autocomplete_min_length:
                                    type: number
                                    description: >
                                        If you use the values property above to add a jQuery autocomplete to a text field, you can
                                        use this property to set the minimum length.
                                        
                                        Defaults to 0 if not set.
                                        
                                        This works from version 7.3 onwards.
                                
                                cols:
                                    type: number
                                    default: 1
                                    description: >
                                        On a pick items, checkboxes, radio group or multiselect field, this property
                                        set the number of columns to display the values in.
                                        The default is just to use one column.
                                        
                                        On a textarea field, this property sets the number of columns on the textarea.
                                        The default is to use the default width from the stylesheet.
                                
                                cols_at_top_level:
                                    type: number
                                    description: >
                                        When using hierarchical checkboxes or radio groups, this property lets you
                                        specifically set the number of columns at the top level.
                                        
                                        Defaults to the cols property if not set.
                                        
                                        This works from version 8.0 onwards.
                                
                                empty_value:
                                    type: string
                                    description: >
                                        This property only applies to select lists.
                                        
                                        Setting this adds an empty option at the top of the Select List with the specified label.
                                        
                                        Creating an empty value makes it clear when the value in the a Select List
                                        is empty, and stops the first value being automatically selected when
                                        editing.
                                
                                show_empty_value_at_end:
                                    type: boolean
                                    description: >
                                        If this is set, the empty option above will be shown at the end of the list and not the beginning.
                                        
                                        
                                        This works from version 7.7 onwards.
                                
                                tag_colors:
                                    type: object
                                    description: >
                                        This property allows you to colour and tag the labels of a multiple checkboxes,
                                        pick items or radios-type field.
                                        
                                        If set, it needs to be an array of values (as keys) to colour names (as values).
                                        Any missing values will default to blue.
                                        
                                        
                                        This works from version 7.0.6 onwards.
                                    additionalProperties:
                                        enum:
                                            - blue
                                            - red
                                            - green
                                            - orange
                                            - yellow
                                            - violet
                                            - grey
                                        default: blue
                                
                                slider:
                                    type: object
                                    description: >
                                        Using this property, you can put a jQueryUI-powered slider next to a field.
                                    properties:
                                        min:
                                            type: number
                                            default: 0
                                            description: >
                                                The smallest possible value.
                                        max:
                                            type: number
                                            default: 100
                                            description: >
                                                The largest possible value.
                                        step:
                                            type: number
                                            default: 1
                                            description: >
                                                The step-size.
                                        orientation:
                                            enum:
                                                - horizontal
                                                - vertical
                                            default: horizontal
                                            description: >
                                                The orientation; horizontal works best.
                                        range:
                                            enum:
                                                - min
                                                - max
                                            description: >
                                                This adds some styling, either before or after the slider,
                                                to indicate that this is a minimum or a maximum.
                                        before_field:
                                            type: boolean
                                            description: >
                                                Set this property to place the slider before the field rather than after.
                                        class:
                                            type: string
                                            description: >
                                                A CSS class to add to the slider.
                                        style:
                                            type: string
                                            description: >
                                                Inline styles to add to the slider.
                                
                                spinner:
                                    type: object
                                    description: >
                                        Using this property, you can put a jQueryUI-powered spinner after a text field.
                                        See https://jqueryui.com/spinner/ for more info.
                                        
                                        This works from version 9.4 onwards.
                                    properties:
                                        min:
                                            type: number
                                            default: 0
                                            description: >
                                                The smallest possible value.
                                        max:
                                            type: number
                                            default: 100
                                            description: >
                                                The largest possible value.
                                        step:
                                            type: number
                                            default: 1
                                            description: >
                                                The step-size.
                                        incremental:
                                            type: boolean
                                            description: >
                                                When set to true, the stepping delta will increase when spun incessantly. 
                                        page:
                                            type: number
                                            default: 0
                                            description: >
                                                The number of steps to take when paging via the pageUp/pageDown methods.
                                        numberFormat:
                                            type: string
                                        units:
                                            type: string
                                            description: >
                                                This will add a label just after the value, intended to be for displaying
                                                the units of the field.
                                    
                                pressed:
                                    type: boolean
                                    modified_by_cms: true
                                    html_description: |
                                        <p>There are two types of button field available in the Admin Box toolkit (submit buttons and toggle buttons), which can be pressed by an Administrator. If an&nbsp;Administrator presses a button then the <code>pressed</code> boolean property will be set to true.</p>
                                        <h2>Submit Buttons</h2>
                                        <p>The 'submit' type buttons act as if they always have the <code>validate_onchange</code> property set; when they are pressed&nbsp;the client will change the value of the <code>pressed</code> property to true, then call the validation function.</p>
                                        <p>When the field is next redrawn after the validation, the client then automatically unsets the <code>pressed</code> property.</p>
                                        <p>Be aware that this will only ever submit your admin box for validation,and never for saving.The 'save' button at the bottom of the box should be used to submit for saving.</p>
                                        <h2>Toggle Buttons</h2>
                                        <p>For 'toggle' type buttons, the client will toggle the value of <code>pressed</code> between false and true each time the Admin presses this button.</p>
                                        <p>Before Zenario&nbsp;version 6.0.4,&nbsp;'toggle' type buttons acted as if they always had the&nbsp;<code>format_onchange</code> property set; when they were pressed the client changed the value of the <code>pressed</code> property, then called the format function.</p>
                                        <p>From version 6.0.4 and onwards, you must add either the&nbsp;<code>redraw_onchange</code>,&nbsp;<code>format_onchange</code>,&nbsp;<code>validate_onchange</code> or <code>quick_validate_onchange</code> properties to make a&nbsp;<code>span</code>'toggle' type button to do something when the Admin presses it.</span></p>
                                        <h2>PHP Good Practice</h2>
                                        <p>As the value of the <code>pressed</code> may not be set in PHP, you should check it using <code>!empty()</code>, <code>isset()</code>, <code>arrayKey()</code>, <code>issetArrayKey()</code> or a similar function to avoid a PHP warning.</p>
                                can_be_pressed_in_view_mode:
                                    type: boolean
                                    description: >
                                        Setting this property allows a submit or toggle button to be pressed in view
                                        mode.
                                
                                language:
                                    type: string
                                    description: >
                                        If you create a code_editor type field, you can set the language to enable syntax-highlighting.
                                        
                                        E.g. html, css, javascript, twig...
                                        
                                        You can also enter a filename to auto-detect the language from the extension.
                                        
                                        The Ace Editor (http://ace.c9.io/) is used to power these fields, and the language can be any
                                        language that Ace supports.
                                
                                wrap_text:
                                    type: boolean
                                    description: >
                                        Enable text wrapping for a code_editor type field.
                                
                                code_editor_options:
                                    type: object
                                    description: >
                                        If you're using a code editor field, you can use this to pass extra options to the editor.
                                        
                                        This works from version 8.6 onwards.
                                
                                tall_as_possible:
                                    type: boolean
                                    description: >
                                        Set this property to make a textarea or code_editor type field in a FAB
                                        as tall as possible, given the height of the admin's browser and the
                                        other fields on the current tab.
                                        
                                        You may only use this on one field per tab.
                                        
                                        This works from version 8.0 onwards.
                                        
                                        From version 9.6 onwards this will now work for WYSIWYG Editor type fields as well.
                                
                                color_picker_options:
                                    type: object
                                    description: >
                                        If you create a color_picker type field, which are implemented using the spectrum library,
                                        you can pass an options object using this property.
                                        
                                        See http://bgrins.github.io/spectrum/ for the available options.
                                
                                colour_picker_options:
                                    type: object
                                    description: >
                                        Alias of color_picker_options. (But note you can't use both.)
                                
                                allow_negative_numbers:
                                    type: boolean
                                    description: >
                                        Whether to allow negative numbers in numeric field.
                                        (Fields count as "numeric" if you set the "numeric" validation option, or the field type
                                         is set to "currency".)
                                
                                decimal_places:
                                    type: boolean
                                    description: >
                                        Set this to limit the number of decimal places in a numeric field.
                                        (Fields count as "numeric" if you set the "numeric" validation option, or the field type
                                         is set to "currency".)
                                        
                                        The only accepted values are 0, 1, 2, 3 and 4.
                                        
                                        The default is no limit.
                                        Note: this is different than entering a "0".
                                
                                insert_image_button:
                                    type:
                                        - boolean
                                        - object
                                    description: >
                                        Setting this property lets you add an "insert image" button to a HTML editor.
                                        
                                        You can either let the Admin type out the URL, or you can provide a Organizer picker to let
                                        them choose an image from Organizer.
                                        
                                        The syntax for the picker is similar to that for a pick items field, except that you must ensure
                                        that the id of an image from the files table is selected.
                                    required:
                                        - pick_items
                                    properties:
                                        pick_items: *pick_items
                                insert_link_button:
                                    type:
                                        - boolean
                                        - object
                                    description: >
                                        Setting this property lets you add an "insert link" button to a HTML editor.
                                        
                                        You can either let the Admin type out the URL, or you can provide a Organizer picker to let
                                        them choose a content item from Organizer.
                                        
                                        The syntax for the picker is similar to that for a pick items field, except that you must ensure
                                        that a content item is selected.
                                    properties:
                                        pick_items: *pick_items
                                
                                editor_type:
                                    type: string
                                    description: >
                                        An option to pass to TinyMCE.
                                    description: >
                                        Defines the type of TinyMCE editor that is shown. Depending on the context of where the editor
                                        is being used, different toolbars and/or menus may be shown. See editor definitions in zenario/js/form.js.
                                        
                                        
                                        Possible values: <code>full_featured</code>, <code>description_editor</code>, <code>summary_editor</code>,
                                        <code>phrase_editor</code>, <code>email_editor</code>, <code>readonly</code>.
                                        
                                        
                                        If no editor type is specified, the default value will be <code>summary_editor</code>.
                                        
                                        
                                        This works from version 9.5 onwards. The list of possible values was revised in version 9.7.
                                editor_options:
                                    type: object
                                    additionalProperties:
                                        type: *variable
                                        description: >
                                            An option to pass to TinyMCE.
                                    description: >
                                        The HTML editor fields are implemented using the TinyMCE library.
                                        If you need to set any custom options then you can pass them in here.
                                        
                                        Some intelligent defaults are set, depending on whether the field is
                                        readonly, and whether the insert_image_button or insert_link_button
                                        properties are set.
                                        
                                        
                                return_key_presses_button:
                                    type: *stringy
                                    description: >
                                        This property takes the name of a button on this tab - ideally a toggle or
                                        submit type field.
                                        
                                        If an Admin presses the return key on their keyboard, the CMS will simulate
                                        a click on the named button.
                                    
                                enable_microtemplates_in_properties:
                                    type: boolean
                                    description: >
                                        If enabled, this experimental feature lets you use microtemplates
                                        to dynamically set some properties each time the field is displayed.
                                        
                                        E.g. this would let you set the post_field_html using JavaScript.
                                        
                                        You cannot use this for certain properties, such as value or current_value
                                        that can take user-entered data.
                                        
                                        This works from version 7.3 onwards.
                                
                                hide_in_dataset_editor:
                                    type: boolean
                                    description: >
                                        Do not show a field in the dataset editor.
                                
                                allow_admin_to_change_visibility:
                                    type: boolean
                                    description: >
                                        Allows admins to set a system fields visibility in the dataset editor.
                                        Without this property the visibility will be readonly.
                                        
                                        Should only be set on fields that don't have any advanced logic to change
                                        visibility.
                                
                                        This works from version 7.3 onwards.
                                
                                allow_admin_to_change_export:
                                    type: boolean
                                    description: >
                                        Allows admins to set the "include in export" option for a dataset field that would not normally have it enabled.
                                        
                                        This works from version 7.7 onwards.
                                style:
                                    type: string
                                    description: >
                                        Adds an inline style to the field (and also applies to code and html editors).
                                        For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                
                                row_style:
                                    type: string
                                    description: >
                                        Adds an inline style to this field's row.
                                        (Does not work for fields with the same_row property.)
                                
                                        This works from version 7.7 onwards.
                                
                                row_class:
                                    type: string
                                    description: >
                                        This property allows you to place a CSS class name on a row.
                                        
                                grouping_style:
                                    type: string
                                    description: >
                                        Adds an inline style to a <code>type: grouping</code> field.
                                        
                                        This works from version 7.7 onwards.
                                grouping_css_class:
                                    type: string
                                    description: >
                                        This lets you add a CSS class for a <code>type: grouping</code> field.
                                        
                                        This works from version 7.7 onwards.
                                start_new_grouping_wrapper:
                                    type: boolean
                                    description: >
                                        When you have more than one grouping next to each other, they'll be wrapped
                                        by a <x-zenario-grouping-wrapper> HTML element.
                                        
                                        If you have multiple groupings next to each other, but want to close the current
                                        <x-zenario-grouping-wrapper> tag and open a new one such that different groupings
                                        are wrapped in different wrappers, set this property to true.
                                        
                                        This works from version 9.4 onwards.
                                grouping_wrapper_style:
                                    type: string
                                    description: >
                                        Sets an inline style on the <x-zenario-grouping-wrapper> HTML element.
                                        
                                        Only has an effect if the <x-zenario-grouping-wrapper> is being opened;
                                        i.e. this is the very first grouping in a series of groupings, or the
                                        start_new_grouping_wrapper has been set to true.
                                        
                                        This works from version 9.4 onwards.
                                grouping_wrapper_css_class:
                                    type: string
                                    description: >
                                        This lets you add a CSS class on the <x-zenario-grouping-wrapper> HTML element.
                                        
                                        Only has an effect if the <x-zenario-grouping-wrapper> is being opened;
                                        i.e. this is the very first grouping in a series of groupings, or the
                                        start_new_grouping_wrapper has been set to true.
                                        
                                        This works from version 9.4 onwards.
                                grouping_wrapper_icon_class:
                                    type: string
                                    description: >
                                        If you set this property, an empty <div> will appear inside the
                                        <x-zenario-grouping-wrapper> HTML element with the specified CSS class name.
                                        
                                        You can use this to style an icon.
                                    
                                        This works from version 9.4 onwards.
                                grouping_wrapper_record_count:
                                    type: string
                                    description: >
                                        If you've added an icon using the grouping_wrapper_icon_class property, you can
                                        set this to add a record count inside it.
                                    
                                        This works from version 9.4 onwards.
                                pre_grouping_html:
                                    type: string
                                    description: >
                                        Some HTML code to be placed just before the <fieldset> for this grouping is opened.
                                        
                                        This works from version 9.4 onwards.
                                post_grouping_html:
                                    type: string
                                    description: >
                                        Some HTML code to be placed just after the <fieldset> for this grouping is closed.
                                        
                                        This works from version 9.4 onwards.

                                
                                
                                dont_trim:
                                    type: boolean
                                    description: |
                                        From version 7.3 onwards, the CMS will automatically trim() the values of fields when they are
                                        validated or saved.
                                        
                                        Set this property to true to disable this.
                                
                                maxlength:
                                    type: integer
                                    description: |
                                        Sets a maxlength on a text field. (This doesn't work with code or html editors.)
                                        
                                        From version 7.3 onwards the CMS will automatically apply a substr() when the field is saved.
                                
                                tooltip:
                                    type: string
                                    description: >
                                        This adds a (?) mark symbol after the field, with a tooltip displayed when the user
                                        hovers their mouse cursor over the (?) mark symbol.
                                        
                                        This works from version 8.2 onwards.
                                
                                error_on_form_message:
                                    type: string
                                    description: >
                                        If there is an error on the form, display this message just above this field.
                                        (Does not work for fields with the same_row property.)
                                        
                                        This works in FEA forms, from version 8.0 onwards.
                                
                                
                                rows:
                                    type: integer
                                    description: Sets the rows HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                size:
                                    type: integer
                                    description: Sets the size HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                accesskey:
                                    type: *stringy
                                    description: Sets the accesskey HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                class:
                                    type: string
                                    description: Sets the class HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                dir:
                                    type: string
                                    description: Sets the dir HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                tabindex:
                                    type: integer
                                    description: Sets the tabindex HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                title:
                                    type: string
                                    description: Sets the title HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onblur:
                                    type: string
                                    description: Sets the onblur HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onchange:
                                    type: string
                                    description: Sets the onchange HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onclick:
                                    type: string
                                    description: Sets the onclick HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                ondblclick:
                                    type: string
                                    description: Sets the ondblclick HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onfocus:
                                    type: string
                                    description: Sets the onfocus HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onmousedown:
                                    type: string
                                    description: Sets the onmousedown HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onmousemove:
                                    type: string
                                    description: Sets the onmousemove HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onmouseout:
                                    type: string
                                    description: Sets the onmouseout HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onmouseover:
                                    type: string
                                    description: Sets the onmouseover HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onmouseup:
                                    type: string
                                    description: Sets the onmouseup HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onkeydown:
                                    type: string
                                    description: Sets the onkeydown HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onkeypress:
                                    type: string
                                    description: Sets the onkeypress HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onkeyup:
                                    type: string
                                    description: Sets the onkeyup HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                onselect:
                                    type: string
                                    description: Sets the onselect HTML attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                
                                autocomplete:
                                    type: string
                                    description: Sets the autocomplete HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                autofocus:
                                    type: string
                                    description: Sets the autofocus HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                max:
                                    type: string
                                    description: Sets the max HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                min:
                                    type: string
                                    description: Sets the min HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                pattern:
                                    type: string
                                    description: Sets the pattern HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                placeholder:
                                    type: string
                                    description: Sets the placeholder HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                required:
                                    type: string
                                    description: Sets the required HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                step:
                                    type: string
                                    description: Sets the step HTML 5 attribute (doesn't apply to code or html editors). For multiple checkboxes/radiogroups, this will apply to each checkbox/radio option, unless overwritten.
                                                
                            forbidden_if_true:
                                pick_items:
                                    - checking_child_checks_parents
                                    - name
                                    - empty_value
                                    - slider
                                    - pressed
                                    - can_be_pressed_in_view_mode
                                    - insert_image_button
                                    - cols
                                    - rows
                                    - size
                                    - maxlength
                                    - accesskey
                                    - class
                                    - dir
                                    - tabindex
                                    - title
                                    - onblur
                                    - onchange
                                    - onclick
                                    - ondblclick
                                    - onfocus
                                    - oninput
                                    - onpaste
                                    - onmousedown
                                    - onmousemove
                                    - onmouseout
                                    - onmouseover
                                    - onmouseup
                                    - onkeydown
                                    - onkeypress
                                    - onkeyup
                                    - onselect
                                snippet:
                                    - readonly
                                    - value
                                    - current_value
                                    - values
                                    - validation
                                    - multiple_edit
                                    - plugin_setting
                                    - site_setting
                                    - format_onchange
                                    - validate_onchange
                                    - redraw_onchange
                                    - checking_child_checks_parents
                                    - name
                                    - empty_value
                                    - slider
                                    - pressed
                                    - can_be_pressed_in_view_mode
                                    - insert_image_button
                                    - cols
                                    - rows
                                    - size
                                    - maxlength
                                    - accesskey
                                    - class
                                    - dir
                                    - tabindex
                                    - title
                                    - onblur
                                    - onchange
                                    - onclick
                                    - ondblclick
                                    - onfocus
                                    - oninput
                                    - onpaste
                                    - onmousedown
                                    - onmousemove
                                    - onmouseout
                                    - onmouseover
                                    - onmouseup
                                    - onkeydown
                                    - onkeypress
                                    - onkeyup
                                    - onselect
        
        
        lovs:
            type: object
            additionalProperties:
                type: object
                additionalProperties: *lovValues
            description: >
                From 7.0.7 onwards, instead of defining a list of values against each field,
                you can define lists of values here and just enter the code-name for each field.
        
        go_to_url:
            type: string
            description: >
                    This property is used in the installer. If set, the installer will close
                    and navigate to the specified path or URL.
        
        module_class_name:
            type: string
            description: >
                    When defining your module's plugin settings, you will need to set this
                    property in your .yaml file to indicate that the tabs and fields inside this file
                    are only for your module.
        
        setting_group:
            type: string
            description: >
                    When defining your module's site settings, you will need to set this
                    property in your .yaml file to indicate that the tabs and fields inside this file
                    are only for a specific settings group.
        
        missing_items_warning:
            type: string
            description: >
                The form toolkit will not display selected values for checkboxes, radios or select lists
                that are not in the provided LOV.
                
                It will also not save these values.
                
                If you want to enable a warning when this is about to happen, you can enable it by adding
                some text to this property, e.g. "Warning: ID [[items]] missing, save settings to clean up."
                
                This works from version 8.8 onwards.
        
        always_sync_this_data_between_client_and_server:
            type: object
            description: >
                This object, and any child objects and properties, will always be synced between the client
                and the server.
                
                To help make TUIX forms and applications secure, and to make it harder for a developer to
                unwittingly introduce security vulnerabilities in their code, only a few TUIX properties
                that have a specific purpose can be synced between the client and the server.
                
                This object is provided as a free-for-all exception, so anyone making a custom application
                can add anything they need synced in here.
        
        never_sync_this_data_between_client_and_server:
            type: object
            description: >
                This object, and any child objects and properties, will never be synced between the client
                and the server.
                
                This object allows you to send slightly larger data streams from the server to the client,
                on a one-time-only basis.
                
                Anything in here won't be saved in the cache/fabs/ directory, and won't be between the client
                and the server.
                
                This is an exception to how TUIX forms and FABs usually work, where a copy of the TUIX
                sent to the client is kept on the server, and the two are kept in sync.
                
                Any data that is large, or does not need to be kept in sync between the client and the server,
                should be put in here.
                
                This works from version 9.4 onwards.
                
            
                                            
        
