# This file defines the contenttypes on the website. See the documentation for
# details: https://docs.bolt.cm/contenttypes/intro

# The Homepage contenttype is a singleton: There can be only one record of this
# contenttype.

homepage:
    name: Homepage
    singular_name: Homepage
    fields:
        title:
            type: text
            class: large
            group: content
            postfix: |
                The 'Homepage' can contain basic information about the website. This title will be
                shown on the homepage of the website, as the name implies. To change the
                <em><strong>name</strong></em> of the site, as is shown in the header, and the tab
                in the webbrowser, edit <code>sitename:</code> in the configuration file.
        image:
            type: image
            placeholder: https://source.unsplash.com/1920x640/?cityscape,landscape,nature/__random__
        teaser:
            type: html
            height: 150px
        content:
            type: html
            height: 300px
        contentlink:
            type: text
            label: Link
            placeholder: 'contenttype/slug or http://example.org/'
            postfix: "Use this to add a link for this Homepage. This could either be an 'internal' link like <tt>page//about</tt>, if you use a contenttype/slug combination. Otherwise use a proper URL, like `http://example.org`."
        slug:
            type: slug
            uses: title
            group: meta
    viewless: true
    singleton: true
    default_status: published
    icon_many: "fa:home"
    icon_one: "fa:home"


# Pages can be used for the more 'static' pages on your site. This content-type
# has a 'templateselect' field, which allows you to override the record_template
# setting for an individual page.
# The taxonomy for this ContentType is defined as 'groups', which is a so-called
# "grouping taxonomy". This way you can easily group sets of pages that logically
# belong together. If your site has a 'services' section, in which you'd like to
# list the different types of services a company provides, you can group these
# together.

pages:
    name: Pages
    singular_name: Page
    fields:
        title:
            type: text
            class: large
            group: content
        slug:
            type: slug
            uses: title
        image:
            type: image
            placeholder: https://source.unsplash.com/1280x768/?business,workplace/__random__
        teaser:
            type: html
            height: 150px
        body:
            type: html
            height: 300px
        template:
            type: templateselect
            filter: '*.twig'
    taxonomy: [ groups ]
    recordsperpage: 20


# Entries can be used for things like 'news' or 'blogpostings'. They have a
# 'teaser', which can be used for a short blurb on listing-pages, allowing
# visitors to click-through to the rest of the entry. It also has fields for an
# image and an optional video.
# A relation is defined to the pages ContentType. This way you can refer to a
# page from your news-item.
# This ContentType defines 'categories' and 'tags' as taxonomies, allowing the
# editor to use both to categorize a specific entry.
# The 'sort' is set to '-datepublish', which means that newer entries will be
# shown above older entries.

entries:
    name: Entries
    singular_name: Entry
    fields:
        title:
            type: text
            class: large
            group: content
        slug:
            type: slug
            uses: title
        teaser:
            type: html
            height: 150px
        body:
            type: html
            height: 300px
        image:
            type: image
            group: media
            placeholder: https://source.unsplash.com/1280x768/?business,workspace,interior/__random__
        video:
            type: video
    relations:
        pages:
          multiple: false
          order: title
          label: Select a page
    taxonomy: [ categories, tags ]
    record_template: entry.twig
    listing_template: listing.twig
    listing_records: 10
    default_status: published
    sort: -datepublish
    recordsperpage: 20


# The 'Showcases' is not particularly useful in most cases, but it does a good
# job of showcasing most of the available fieldtypes. Feel free to delete it, or
# copy some fields to your own ContentTypes.
# Since no templates are defined for this ContentType, the default record_template,
# listing_template, and related settings are used from config.yml

showcases:
    name: Showcases
    slug: showcases
    singular_name: Showcase
    singular_slug: showcase
    fields:
        title:
            type: text
            class: large
            required: true
            pattern: ".{2,255}" # see: http://html5pattern.com/
            error: "The Title field is required, and must contain at least 2 characters"
            group: Text
        slug:
            type: slug
            uses: [ title ]
        html:
            type: html
            height: 150px
        textarea:
            type: textarea
            postfix: "<p><em>This is a plain text area. the contents will not be processed.</em></p>"
        markdown:
            type: markdown
            postfix: "<p><em>This field gets parsed as <a href='https://help.github.com/articles/markdown-basics'>Markdown</a>, when rendered on the site.</em></p>"
        geolocation:
            type: geolocation
            group: Media
        embed:
            type: embed
        video:
            type: video
        image:
            type: image
            attrib: title # Note: retrieve this in your template with {{ record.values.image.title }}
            extensions: [ gif, jpg, png ]
            placeholder: https://source.unsplash.com/1280x768/?animal,koala,kitten,puppy,cute/__random__
        imagelist:
            type: imagelist
        file:
            type: file
            group: files
        filelist:
            type: filelist
        checkbox:
            type: checkbox
            label: "This is a checkbox"
            group: other
        datetime:
            type: datetime
            default: "2000-01-01"
            variant: inline
        date:
            type: date
            default: "first day of last month"
            variant: inline
        integerfield:
            type: integer
            index: true
        floatfield:
            type: float
        selectfield:
            type: select
            values: [ foo, bar, baz ]
        multiselect:
            type: select
            values: [ A-tuin, Donatello, Rafael, Leonardo, Michelangelo, Koopa, Squirtle ]
            multiple: true
            postfix: "Select your favourite turtle(s)."
        selectentry:
            type: select
            values: entries/id,title
            postfix: "Select an entry"
            autocomplete: true
            sort: title
        repeater:
            type: repeater
            group: repeater
            label: Simple repeater example
            icon: fa:repeat
            limit: 3
            prefix: "<p>This allows you to create multiple sets of fields. Use the add button at the bottom to create a new empty set.</p>"
            fields:
                repeattitle:
                    type: text
                repeatimage:
                    type: image
                    extensions: [ gif, jpg, png ]
                repeatcontent:
                    type: html
    relations:
        entries:
            multiple: false
            label: "Choose an entry"
            order: -id
            format: "{{ item.title|escape }} (№ {{ item.id }})"
            postfix: "By selecting an Entry, you're creating a bi-directional relationship to that Entry."
        pages:
            multiple: true
            order: title
            label: Select zero or more pages
    taxonomy: [ categories, tags ]
    show_on_dashboard: true
    default_status: published
    searchable: true
    icon_many: "fa:gift"
    icon_one: "fa:gift"


# The 'Blocks' ContentType is a so-called 'resource ContentType'. This means
# that it can be used to manage smaller pieces of content, like the 'about us'
# text, an 'our address' in the footer, or similar short blurbs of text.
# For more info, see: https://docs.bolt.cm/howto/resource-contenttype

blocks:
    name: Blocks
    singular_name: Block
    fields:
        title:
            type: text
            class: large
            group: "Block"
        slug:
            type: slug
            uses: [ title ]
        content:
            type: html
            height: 150px
        contentlink:
            type: text
            label: Link
            placeholder: 'contenttype/slug or http://example.org/'
            postfix: "Use this to add a link for this Block. This could either be an 'internal' link like <tt>page/about</tt>, if you use a contenttype/slug combination. Otherwise use a proper URL, like `http://example.org`."
        image:
            type: image
            attrib: title
            extensions: [ gif, jpg, png ]
    show_on_dashboard: true
    viewless: true
    default_status: published
    searchable: false
    icon_many: "fa:cubes"
    icon_one: "fa:cube"

# Possible field types:
#
# text - varchar(256) - input type text.
# integer - integer - Input field for integer numbers.
# float - double - Input field for floating numbers, stored as 'Double'.
# geolocation - text (65kb) - Input field for geolocation. Enter an address, and the location is geocoded to latitude/longitude coordinates
# imagelist - text (65kb) - Input type for imagelists. Add multiple images with a description. Useful for image sliders, galleries, etcetera.
# image - varchar(256) - image select/upload widget, stored as filename.
# file - varchar(256) - file select/upload widget, stored as filename.
# filelist - text (65kb) - Input type for a list of files. Including a description.
# video - varchar(256) - Video embed widget, stored as filename.
# html - text (65kb) - wysiwyg element.
# textarea - varchar(32768) - Simple, plain < textarea > field.
# markdown - varchar(32768) - Simple, plain < textarea > field, which is parsed as Markdown text.
# datetime - datetime - date and time selector widget.
# date - datetime - date selector widget.
# select - varchar(256) - select with predefined values
# templateselect - varchar(256) - select with template filenames
# checkbox - integer - checkbox-field which is 1 (checked) or 0 (unchecked)

# Using YAML repeated nodes
#
# YAML allows the defining of "repeated nodes". These allow you to define a 'node'
# with a 'key: &name' and referenced later with '<<: *name'
#
# Bolt allows you to define this with the special entry of '__nodes:' that itself
# won't create a ContentType, but will allow you to use it in actual ContentTypes
# to prevent repeating yourself.
#
# To achieve this, first create a key '__nodes:'
#__nodes:
#    field_defaults: &field_defaults
#        title:
#            type: text
#            class: large
#            group: main
#        slug:
#            type: slug
#            uses: title
#    template_defaults: &template_defaults
#        template:
#            type: templateselect
#            filter: '*.twig'
#            group: meta
#
# Then, as an example, you could create a ContentType with default fields, with
# an additional 'image' field.
#
#contenttype_abc:
#    name: ContentType Abc
#    fields:
#        <<: *field_defaults
#        image:
#            type: image
#            attrib: title
#            extensions: [ gif, jpg, png ]
#        <<: *template_defaults
#    taxonomy: [ chapters ]
#    recordsperpage: 10
#
# Alternatively, or additionally, you then can then create a ContentType with
# default fields, and a 'select' field, and a different 'templateselect' option.
#
#contenttype_xyz:
#    name: ContentType Xyz
#    fields:
#        <<: *field_defaults
#        selectfield:
#            type: select
#            values: [ none, foo, bar ]
#        template:
#            type: templateselect
#            filter: '*_xyz.twig'
#    taxonomy: [ tags ]
#    recordsperpage: 20
