wiki-grav/plugins/devtools/components/plugin/flex/blueprints/flex-objects/plugin.yaml.twig
2023-02-19 15:13:01 +01:00

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