133 lines
4.5 KiB
Twig
133 lines
4.5 KiB
Twig
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
|