123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- title: '{{ component.flex_name|capitalize }}'
- description: '{{ component.flex_name|capitalize }}'
- type: flex-objects
- # Flex Configuration
- config:
- # Administration Configuration
- admin:
- # Admin router (optional)
- router:
- path: '/{{ component.flex_name|lower|underscorize }}'
- # Admin menu (optional)
- menu:
- list:
- route: '/{{ component.flex_name|lower|underscorize }}'
- title: '{{ component.flex_name|capitalize }}'
- icon: fa-address-card-o
- # Authorization to collection admin
- authorize: ['admin.{{ component.flex_name|lower|underscorize }}.list', 'admin.super']
- # Priority -10 .. 10 (highest goes up)
- priority: 2
- # Admin template type / folder
- template: default
- # Permissions
- permissions:
- # Primary permissions
- admin.{{ component.flex_name|lower|underscorize }}:
- type: crudpl
- label: '{{ component.flex_name|capitalize }}'
- # List view
- list:
- title: name
- fields:
- published:
- field:
- type: toggle
- label: Published
- width: 8
- name:
- link: edit
- description:
- # Edit View
- edit:
- title:
- template: '{{ object.name }}'
- # Preview View
- preview:
- enabled: false
- route:
- #template: '/plugins/flex-objects/directory:contacts'
- # Data Export
- export:
- enabled: true
- method: 'jsonSerialize'
- formatter:
- class: 'Grav\Framework\File\Formatter\YamlFormatter'
- filename: '{{ component.flex_name|lower|underscorize }}'
- # Site Configuration
- site:
- templates:
- collection:
- # Lookup for the template layout files for collections of objects
- paths:
- - 'flex/{TYPE}/collection/{LAYOUT}{EXT}'
- object:
- # Lookup for the template layout files for objects
- paths:
- - 'flex/{TYPE}/object/{LAYOUT}{EXT}'
- defaults:
- # Default template {TYPE}; overridden by filename of this blueprint if template folder exists
- type: '{{ component.flex_name|lower|underscorize }}'
- # Default template {LAYOUT}; can be overridden in render calls (usually Twig in templates)
- layout: default
- # Data Configuration
- data:
- # Object class to be used, allowing custom methods for the object
- object: 'Grav\Plugin\{{ component.name|camelize }}\Flex\Types\{{ component.flex_name|camelize }}\{{ component.flex_name|camelize }}Object'
- # Collection class to be used, allowing custom methods for the collections
- collection: 'Grav\Plugin\{{ component.name|camelize }}\Flex\Types\{{ component.flex_name|camelize }}\{{ component.flex_name|camelize }}Collection'
- # Index class to be used, works as a quick database-like lookup index
- index: 'Grav\Common\Flex\Types\Generic\GenericIndex'
- storage:
- # Storage class, use single file storage (does not support images and assets)
- class: 'Grav\Framework\Flex\Storage\{{ component.flex_storage|capitalize }}Storage'
- options:
- formatter:
- # File formatter class, in this case the file is stored in markdown
- class: 'Grav\Framework\File\Formatter\JsonFormatter'
- # JSON file where all the objects will be stored
- folder: user-data://{{ component.flex_name|underscorize }}
- search:
- # Search options
- options:
- contains: 1
- # Fields to be searched
- fields:
- - name
- - description
- form:
- validation: loose
- fields:
- published:
- type: toggle
- label: Published
- highlight: 1
- default: 1
- options:
- 1: PLUGIN_ADMIN.YES
- 0: PLUGIN_ADMIN.NO
- validate:
- type: bool
- required: true
- name:
- type: text
- label: Name
- validate:
- required: true
- description:
- type: text
- label: Description
- validate:
- required: true
|