To build an application an appropriate Application Definition is needed. Formed using JSON this Application Definition could be directly put into the Configuration File or within an separate file which is included into the Configuration File then.
Example:
{
"site": {
"template": "my_template",
"title": "My Application",
"summary": "My Application",
"description": "My Application",
"author": "My Corporation"
},
"drivers": ["common", "users", "objects", "search"],
"modules": {
"my_items": {
"driver": "objects",
"default_mode": "list",
"views": {
"details": "my_items_details"
}
}
},
"access": [
{
"scope": [
"*"
],
"allow": [
{
"level": 1
}
]
}
],
"menu": [
{
"title": "My Items",
"link": "my_items",
"icon": "list"
}
]
}
This Application Definition results in a web application named “My Application” (from author “My Corporation”) based on template “my_template” giving one menu item named “My Items” enabling a signed in user to manage a collection named “my_items” including a list, adding or removing items and showing the details of an item using view “my_items_details”.
@base
”string
An Application Definition (or part of it) to be used as the base of the current Application Definition.
{
"@base": "@site1"
}
The Application Definition could be assigned directly as an object (which is not recommended) or as a file to load with the “@
” operator. So "site1
" would load file “site1.json
”.
@include
”string[]
A list of Application Definitions (or parts of it) to be included into the current Application Definition.
{
"@include": [
"@site1",
"@site2"
]
}
Each Application Definition could be assigned directly as an object (which is not recommended) or as a file to load with the “@
” operator. So "site1
" would load file “site1.json
”.
site
”This section is not important for building application intelligence. Everything in this section is only used by templates for visualization.
drivers
”string[]
The list of drivers which should be available to modules within the Application Definition. Drivers which are not given here are not usable by modules within the Application Definition.
modules
”object
The collection of named objects representing the Module Definitions of the current Application Definition.
See “Module Definition”.
menu
” and "menu_guest
"object[]
The list of Menu Items representing the menu of the current Application Definition.
grant
”map(string => string[]), optional
With this map you are able to use groups to grant additional access levels and groups within your application for authorization.
{
"grant": {
"group.sales": [
"group.sales_sub1",
"group.sales_sub2"
]
}
}
This provides the option to define permissions more detailed staying with more general groups.
access
”object[]
The list of Acess Definitions representing the permissions of users for modules within the current Application Definition.
See concept “Authorization”.
sharing
"map(string => object)
Sets the Sharing Definition for modules within the current Application Definition.
enforce | bool | false | If enabled that only data with permitting Sharing tag are retrieved. If not, then data with no Sharing tag are retrieved too. |
ignore_collections | string | “” | Which collections should be ignored in the Sharing check. |
access_db | bool | false | Whether the database should be additionally used for permission checking. |
access_field | bool | true | Whether the database records should be additionally checked for the field `access` to be used for permission checking. |
implicit_contexts | bool | false | Whether the database records should be additionally checked for the fields `ref` and their `ref` connections to build a list of possible context strings to be used for permission checking. |
{
"sharing": {
"enforce": true,
"ignore_collections": ["categories", "types"]
}
}
See concept “Sharing”.