Neos:
  Fusion:
    defaultContext:
      'Newland.Toubiz.Article': 'Newland\Toubiz\Poi\Neos\Eel\Helper\ArticleHelper'
  Neos:
    fusion:
      autoInclude:
        'Newland.Toubiz.Poi.Neos': true

    userInterface:
      translation:
        autoInclude:
          'Newland.Toubiz.Poi.Neos':
          - 'Models/*'
          - 'NodeTypes/*'
          - 'Views/*'
    nodeTypes:
      groups:
        tour:
          position: 300
          label: 'Newland.Toubiz.Poi.Neos:NodeTypes.Group:groups.toubiz.tour'
          collapsed: true
        poi:
          position: 300
          label: 'Newland.Toubiz.Poi.Neos:NodeTypes.Group:groups.toubiz.poi'
          collapsed: true
        gastronomy:
          position: 300
          label: 'Newland.Toubiz.Poi.Neos:NodeTypes.Group:groups.toubiz.gastronomy'
          collapsed: true
        lodging:
          position: 300
          label: 'Newland.Toubiz.Poi.Neos:NodeTypes.Group:groups.toubiz.lodging'
          collapsed: true
        directMarketer:
          position: 300
          label: 'Newland.Toubiz.Poi.Neos:NodeTypes.Group:groups.toubiz.directMarketer'
          collapsed: true
        congressLocation:
          position: 300
          label: 'Newland.Toubiz.Poi.Neos:NodeTypes.Group:groups.toubiz.congress'
          collapsed: true
        city:
          position: 300
          label: 'Newland.Toubiz.Poi.Neos:NodeTypes.Group:groups.toubiz.city'
          collapsed: true
    modules:
      management:
        submodules:
          'articleModule':
            label: 'Article Statistics'
            controller: 'Newland\Toubiz\Poi\Neos\Controller\ArticleBackendController'
            description: 'Numbers for popular tags, etc.'
            icon: 'map-marker'
Newland:
  NeosCommon:
    linkhandler:
      recordTypes:
        article:
          handler: 'Newland\Toubiz\Poi\Neos\LinkHandler\ArticleLinkHandler'

  Toubiz:
    Poi:
      Neos:
        splitscreen:

          # Default configuration that will be applied if not overridden on a main-type basis.
          default:
            enabled: false
            mapType: 'toursprung'
            toursprungMapStyle:
              - { identifier: terrain_v2 }
              - { identifier: terrain_winter }
            googleMapStyle:
              - { identifier: roadmap }
              - { identifier: hybrid }
            marker:
              icon: circle
              color: white
              backgroundColor: '#444'
            clustering:
              color: white
              backgroundColor: '#444'

          # Main type specific configuration.
          # For a list of all types please refer to the ArticleConstants interface.
          # mainType:
          #   # Attraction
          #   0: { enabled: true }
          #   # Gastronomy
          #   1: { enabled: true }
          #   # Tour
          #   2: { enabled: true }
          #   # Lodging
          #   3: { enabled: true }
          #   # Direct Marketer
          #   4: { enabled: true }
          #   # Congress location
          #   5: { enabled: true }
          #   # City
          #   6: { enabled: true }

        # Detail page by mainType of the article
        detailPage:
          _fallback:
            uriSegment: 'poi/detail'

        map:
          default:
            mapType: 'static-dynamic-switch'
            staticMapType: 'google-maps-static'
            dynamicMapType: 'google-maps'
            zoom: 75

            # The maximum value for width and height for google maps is 640 (which is 1280 with scale=2)
            srcSet:
              - width: 640
                height: 400
                query: '(min-width: 768px)'
              - width: 400
                height: 500
                query: '(max-width: 448px)'
              - width: 512
                height: 640
                query: null

            # Note: This URL must adhere to all of the following restrictions:
            #   - Must be accessible from the public internet.
            #     This means that the URL cannot point to development or preview instance since they
            #     are not accessible from the public internet.
            #   - Must be in PNG format
            #
            #   - If using google maps:
            #       - Must be at max 4096 (64x64 if square) pixels in size
            #       - Not adhering to the constraints will render to default marker icon
            #       - Common pitfalls
            #           - Google seems to not like some transparency encodings, displaying the transparent
            #             sections as white. Default, non optimized png export options from GIMP seem to work fine.
            #
            #   - If using toursprung:
            #       - Must have an appropriate size for the occasion
            #       - Not adhering to the constraints will not render a marker at all
            #       - Common pitfalls
            #           - Toursprung seems to not like some SSL certificates. If your `https://` URL does not work, try
            #             `http://` URLs. Letsencrypt certificates seem to work fine.
            #           - Sometimes toursprung does not follow redirects.
            #
            # NOTE: In order for the static & dynamic map portions to render the icon at the same size relative to
            #       each other, width & height should be set to the physical size of the image. The dimensions only
            #       apply for the dynamic portion of the maps whereas the static portion renders it in physical size.
            markerIcon:
              url: 'https://icons.toubiz.de/png/64x64/map-marker.png'
              width: 40
              height: 56

          mainType:
            2:
              mapType: 'toursprung'

        listItemsPerPage: 10
        gridItemsPerPage: 12
        swiperItems: 11
        displayOptions:
        # copy to theme package and uncomment to hide sections of the template
        # show:
        #   hide:
        #   - source
        #   - spaTownAttributes
        #   - spaTownDescription
        # list:
        #   hide:
        #   - customSetting
        #   - otherCustomSetting

        clientFilter:
        # Copy to theme and adjust as needed. If a value is not set no client filter is applied.
        # "my-site-node-name" is the node name of the site record - _not_ the name of the record.
        # "ClientName" is the client value that is stored in the database for each imported record;
        # see "Newland.Toubiz.Sync.Neos" configuration for client value options.
        # Here, on the site "my-site-node-name" records with mainType "1" will only be selected if
        # client is set to "ClientName". Records with mainType "2" will only be selected if client
        # is set to "OtherClientName".
        # For the site "my-other-site-node-name" records with mainType "1" will not be filtered (but
        # records with mainType "2" will be).
        #
        #  my-site-node-name:
        #    mainType:
        #      values:
        #        1: ClientName
        #        2: OtherClientName
        #  my-other-site-node-name:
        #    mainType:
        #      values:
        #        2: OtherClientName

#        filter:
#          options:
#            difficulty:
#              type: checkboxes
#              searchable: false
#              items:
#                - 'attribute:difficultyRating:1'
#                - 'attribute:difficultyRating:2'
#                - 'attribute:difficultyRating:3'
#            ascentElevation:
#              type: range
#              item: 'attribute:ascentElevation'
#              unit: m
#              disableHeading: true
#            tourLength:
#              type: range
#              item: 'attribute:tourLength'
#              unit: km
#              steps: 0.1
#              factor: 0.001
#              disableHeading: true
#            tourDuration:
#              type: range
#              item: 'attribute:tourDuration'
#              unit: h
#              factor: 0.01667
#              disableHeading: true
#            categories:
#              type: categories
#              mainType: 0
#            typeOfTours:
#              type: checkboxes
#              searchable: false
#              items:
#                - 'attribute:properties:loopTour'
#                - 'attribute:properties:oneWayTour'
#                - 'attribute:properties:multiStageTour'
#                - 'attribute:properties:mountainTopTour'
#            properties:
#              type: checkboxes
#              searchable: false
#              items:
#                - 'attribute:properties:insiderTip' #?
#                - 'attribute:properties:scenic'
#                - 'attribute:properties:dining'
#                - 'attribute:properties:suitableforperambulators'
#                - 'attribute:properties:wheelchairSuitable' #?
#                - 'attribute:labels:top'
#                - 'attribute:properties:mountainRailway'
#                - 'attribute:properties:geology'
#                - 'attribute:properties:suitableforfamilies'
#                - 'attribute:properties:fauna'
#                - 'attribute:properties:flora'
#                - 'attribute:properties:certificateDeutschesWandersiegel'
#                - 'attribute:properties:clearArea'
#                - 'attribute:properties:completelyCableInsured'
#                - 'attribute:properties:culture'
#
#          sections:
#
#            # Attraction
#            0:
#              sections:
#                categories:
#                  fieldSets:
#                    - 'categories'
#
#            # gastronomy
#            1:
#              sections:
#                categories:
#                  fieldSets:
#                    - 'categories'
#
#            # Tours
#            2:
#              sections:
#                categories:
#                  fieldSets:
#                    - 'categories'
#                properties:
#                  fieldSets:
#                    - 'typeOfTours'
#                    - 'properties'
#                difficulty:
#                  fieldSets:
#                    - 'difficulty'
#                    - 'ascentElevation'
#                    - 'tourLength'
#                    - 'tourDuration'
#            # Lodging
#            3:
#              sections:
#                categories:
#                  fieldSets:
#                    - 'categories'
#
#            # Direct marketer: No filters
#            4:
#              sections: []
#
#            # Cities
#            6:
#              sections: []
        linkTargets:
          lists:
            0:
            1:
            2:
            3:
            4:
            5:
            6:
        cityDetails:
          lists:
            topList:
              enabled: true
          weather:
            enabled: true
            mode: 'threeDayTeaser' # TODO Do we need this?
          webcam:
            enabled: true
          links:
            sites:
              default:
                enabled: true
                data:
                  restaurants:
                    labelId: restaurants
                    type: article
                    mainType: 1
                    target: 'settings://Newland.Toubiz.Poi.Neos.linkTargets.lists.1'
                    queryParameters:
                      city: 'city'
                      categories: 'categories'
                      articles: 'articles'
                    queryParameter: 'city'
                    iconClass: food
                  tours:
                    labelId: tours
                    type: article
                    mainType: 2
                    target: 'settings://Newland.Toubiz.Poi.Neos.linkTargets.lists.2'
                    queryParameters:
                      city: 'city'
                      categories: 'categories'
                      articles: 'articles'
                    iconClass: hiking
                  events:
                    labelId: events
                    type: event
                    target: 'settings://Newland.Toubiz.Events.Neos.linkTargets.lists.default'
                    queryParameters:
                      city: 'city'
                      categories: 'categories'
                      articles: 'articles'
                    iconClass: calendar
                  lodgings:
                    labelId: lodgings
                    type: article
                    mainType: 3
                    target: 'settings://Newland.Toubiz.Poi.Neos.linkTargets.lists.3'
                    queryParameters:
                      city: 'city'
                      categories: 'categories'
                      articles: 'articles'
                    iconClass: hotel
                  attractions:
                    labelId: attractions
                    type: article
                    mainType: 0
                    target: 'settings://Newland.Toubiz.Poi.Neos.linkTargets.lists.0'
                    queryParameters:
                      city: 'city'
                      categories: 'categories'
                      articles: 'articles'
                    iconClass: camera
          map:
            enabled: true
        attributes:
          articleTypeFilters:
            #attraction
            0:
              - poiFeatures
            #gastro
            1:
              - typeOfCuisine
              - habitsAndAllergies
              - groups
              - features
              - priceSegment
              - meals
              - families
              - gastroServices
              - excelentCuisine
            #tours
            2:
              - typesOfTourAll
              - properties
              - difficulty
            #lodgings
            3:
            #directMarketers
            4:
              - purchase
              - services
              - distinctions

#          i18n:
#            package: 'Newland.FoobarSitePackage'
#            source: 'View/Attributes'
#          articleTypes:
#            2:
#              - 'attribute:labels:top'
#              - 'attribute:properties:asphalt'
#              - 'attribute:properties:assuredPassages'
#              - 'attribute:properties:certificateDeutschesWandersiegel'
#              - 'attribute:properties:clearArea'
#              - 'attribute:properties:completelyCableInsured'
#              - 'attribute:properties:culture'
#              - 'attribute:properties:dining'

# Region settings:
# `regions.available` provides all regions with their definitions. For a list of zip codes check `Documentation/regions.yml`
# Every region can contain a list of zip codes, or other regions (which can contain yet other regions, etc.).
# `regions.enabled` is the list of regions that are selectable via the region data source. The
# corresponding zip codes are collected recursively. Duplicates or loops are quietly resolved.
#
#        regions:
#          available:
#            konstanz:
#              name: Konstanz
#              contains: zips
#              children:
#                - 78462
#                - 78464
#                - 78465
#                - 78467
#            radolfzell:
#              name: Radolfzell / Singen
#              contains: zips
#              children:
#                - 78315
#                - 78224
#            looptown:
#              name: Endlos-Schleifstadt i.Br.
#              contains: regions
#              children:
#                - looptown
#            bodensee:
#              name: Region Bodensee West
#              contains: regions
#              children:
#                - konstanz
#                - radolfzell
#          enabled:
#            - konstanz
#            - radolfzell

    Search:
      Neos:
        indexers:
          'Newland\Toubiz\Poi\Neos\Search\Indexer\ArticleIndexer':
            enable: true

    Sync:
      Neos:
        configurationProviders:
          'Newland\Toubiz\Poi\Neos\ConfigurationProvider': true

  PageFrameProvider:
    breadcrumb:
      poiDetail:
        provider: 'Newland\Toubiz\Poi\Neos\PageFrame\ArticleBreadcrumbProvider'
