diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..70578d9
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,10 @@
+{
+ "name": "ynorth-projects/openy_node_session",
+ "description": "Contains the Open Y Node Session feature.",
+ "type": "drupal-module",
+ "require": {
+ "ymcatwincities/openy": "*"
+ },
+ "license": "GPL-2.0+",
+ "minimum-stability": "dev"
+}
diff --git a/config/install/core.entity_form_display.node.session.default.yml b/config/install/core.entity_form_display.node.session.default.yml
new file mode 100644
index 0000000..4bee5c8
--- /dev/null
+++ b/config/install/core.entity_form_display.node.session.default.yml
@@ -0,0 +1,374 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.session.field_activity_type
+ - field.field.node.session.field_availability
+ - field.field.node.session.field_productid
+ - field.field.node.session.field_session_class
+ - field.field.node.session.field_session_description
+ - field.field.node.session.field_session_exclusions
+ - field.field.node.session.field_session_gender
+ - field.field.node.session.field_session_in_mbrsh
+ - field.field.node.session.field_session_instructor
+ - field.field.node.session.field_session_location
+ - field.field.node.session.field_session_max_age
+ - field.field.node.session.field_session_mbr_price
+ - field.field.node.session.field_session_min_age
+ - field.field.node.session.field_session_nmbr_price
+ - field.field.node.session.field_session_online
+ - field.field.node.session.field_session_plocation
+ - field.field.node.session.field_session_reg_link
+ - field.field.node.session.field_session_room
+ - field.field.node.session.field_session_ticket
+ - field.field.node.session.field_session_time
+ - field.field.node.session.field_wait_list_availability
+ - node.type.session
+# - workflows.workflow.content_workflow
+ module:
+ - content_moderation
+ - datetime_range
+ - field_group
+ - link
+ - paragraphs
+ - path
+ - scheduler
+ - text
+third_party_settings:
+ field_group:
+ group_session_info:
+ children:
+ - field_session_instructor
+ - field_session_description
+ - field_session_gender
+ - field_session_online
+ - field_session_ticket
+ - field_availability
+ - field_wait_list_availability
+ - field_session_min_age
+ - field_session_max_age
+ - field_session_reg_link
+ - field_activity_type
+ parent_name: ''
+ weight: 4
+ format_type: tab
+ format_settings:
+ id: ''
+ classes: ''
+ formatter: closed
+ description: ''
+ required_fields: true
+ label: 'Session Info'
+ region: content
+ group_membership:
+ children:
+ - field_session_in_mbrsh
+ - field_session_mbr_price
+ - field_session_nmbr_price
+ - field_productid
+ parent_name: ''
+ weight: 5
+ format_type: tab
+ format_settings:
+ id: ''
+ classes: ''
+ formatter: closed
+ description: ''
+ required_fields: true
+ label: Membership
+ region: content
+ group_location:
+ children:
+ - field_session_location
+ - field_session_plocation
+ - field_session_room
+ parent_name: ''
+ weight: 3
+ format_type: tab
+ format_settings:
+ id: ''
+ classes: ''
+ formatter: closed
+ description: ''
+ required_fields: true
+ label: Location
+ region: content
+ group_time:
+ children:
+ - field_session_time
+ - field_session_exclusions
+ parent_name: ''
+ weight: 7
+ format_type: tab
+ format_settings:
+ id: ''
+ classes: ''
+ formatter: closed
+ description: ''
+ required_fields: true
+ label: Time
+ region: content
+id: node.session.default
+targetEntityType: node
+bundle: session
+mode: default
+content:
+ addthis:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 13
+ region: content
+ third_party_settings: { }
+ created:
+ type: datetime_timestamp
+ weight: 9
+ settings: { }
+ third_party_settings: { }
+ region: content
+ field_activity_type:
+ weight: 41
+ settings: { }
+ third_party_settings: { }
+ type: options_select
+ region: content
+ field_availability:
+ type: number
+ weight: 16
+ region: content
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ field_productid:
+ type: number
+ weight: 13
+ region: content
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ field_session_class:
+ weight: 1
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ match_limit: 10
+ third_party_settings: { }
+ type: entity_reference_autocomplete
+ region: content
+ field_session_description:
+ weight: 7
+ settings:
+ rows: 5
+ placeholder: ''
+ third_party_settings: { }
+ type: text_textarea
+ region: content
+ field_session_exclusions:
+ weight: 27
+ settings: { }
+ third_party_settings: { }
+ type: daterange_default
+ region: content
+ field_session_gender:
+ weight: 8
+ settings: { }
+ third_party_settings: { }
+ type: options_select
+ region: content
+ field_session_in_mbrsh:
+ weight: 10
+ settings:
+ display_label: true
+ third_party_settings: { }
+ type: boolean_checkbox
+ region: content
+ field_session_instructor:
+ type: string_textfield
+ weight: 15
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ field_session_location:
+ weight: 11
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ match_limit: 10
+ third_party_settings: { }
+ type: entity_reference_autocomplete
+ region: content
+ field_session_max_age:
+ weight: 13
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ type: number
+ region: content
+ field_session_mbr_price:
+ weight: 11
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ type: number
+ region: content
+ field_session_min_age:
+ weight: 12
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ type: number
+ region: content
+ field_session_nmbr_price:
+ weight: 12
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ type: number
+ region: content
+ field_session_online:
+ weight: 9
+ settings:
+ display_label: true
+ third_party_settings: { }
+ type: boolean_checkbox
+ region: content
+ field_session_plocation:
+ weight: 12
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ match_limit: 10
+ third_party_settings: { }
+ type: entity_reference_autocomplete
+ region: content
+ field_session_reg_link:
+ weight: 14
+ settings:
+ placeholder_url: ''
+ placeholder_title: ''
+ third_party_settings: { }
+ type: link_default
+ region: content
+ field_session_room:
+ type: string_textfield
+ weight: 16
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ field_session_ticket:
+ weight: 10
+ settings:
+ display_label: true
+ third_party_settings: { }
+ type: boolean_checkbox
+ region: content
+ field_session_time:
+ type: entity_reference_paragraphs
+ weight: 26
+ settings:
+ title: Paragraph
+ title_plural: Paragraphs
+ edit_mode: closed
+ add_mode: dropdown
+ form_display_mode: default
+ default_paragraph_type: ''
+ third_party_settings: { }
+ region: content
+ field_wait_list_availability:
+ type: number
+ weight: 17
+ region: content
+ settings:
+ placeholder: ''
+ third_party_settings: { }
+ langcode:
+ type: language_select
+ weight: 2
+ region: content
+ settings:
+ include_locked: true
+ third_party_settings: { }
+ moderation_state:
+ type: moderation_state_default
+ weight: 17
+ settings: { }
+ region: content
+ third_party_settings: { }
+ path:
+ type: path
+ weight: 12
+ settings: { }
+ third_party_settings: { }
+ region: content
+ promote:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 10
+ third_party_settings: { }
+ region: content
+ publish_on:
+ type: datetime_timestamp_no_default
+ weight: 14
+ region: content
+ settings: { }
+ third_party_settings: { }
+ redirect:
+ type: string_textfield
+ weight: 16
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ status:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 18
+ third_party_settings: { }
+ region: content
+ sticky:
+ type: boolean_checkbox
+ settings:
+ display_label: true
+ weight: 11
+ third_party_settings: { }
+ region: content
+ title:
+ type: string_textfield
+ weight: 0
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ region: content
+ uid:
+ type: entity_reference_autocomplete
+ weight: 8
+ settings:
+ match_operator: CONTAINS
+ size: 60
+ placeholder: ''
+ match_limit: 10
+ third_party_settings: { }
+ region: content
+ unpublish_on:
+ type: datetime_timestamp_no_default
+ weight: 15
+ region: content
+ settings: { }
+ third_party_settings: { }
+ url_redirects:
+ weight: 50
+ settings: { }
+ third_party_settings: { }
+ region: content
+hidden: { }
diff --git a/config/install/core.entity_form_display.paragraph.session_time.default.yml b/config/install/core.entity_form_display.paragraph.session_time.default.yml
new file mode 100644
index 0000000..5a22708
--- /dev/null
+++ b/config/install/core.entity_form_display.paragraph.session_time.default.yml
@@ -0,0 +1,39 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.paragraph.session_time.field_session_time_date
+ - field.field.paragraph.session_time.field_session_time_days
+ - field.field.paragraph.session_time.field_session_time_override
+ - paragraphs.paragraphs_type.session_time
+ module:
+ - datetime_range
+id: paragraph.session_time.default
+targetEntityType: paragraph
+bundle: session_time
+mode: default
+content:
+ field_session_time_date:
+ weight: 0
+ settings: { }
+ third_party_settings: { }
+ type: daterange_default
+ region: content
+ field_session_time_days:
+ weight: 1
+ settings: { }
+ third_party_settings: { }
+ type: options_buttons
+ region: content
+ field_session_time_override:
+ type: string_textfield
+ weight: 2
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+hidden:
+ created: true
+ status: true
+ uid: true
diff --git a/config/install/core.entity_view_display.node.session.default.yml b/config/install/core.entity_view_display.node.session.default.yml
new file mode 100644
index 0000000..db87fd3
--- /dev/null
+++ b/config/install/core.entity_view_display.node.session.default.yml
@@ -0,0 +1,245 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.node.session.field_activity_type
+ - field.field.node.session.field_availability
+ - field.field.node.session.field_productid
+ - field.field.node.session.field_session_class
+ - field.field.node.session.field_session_description
+ - field.field.node.session.field_session_exclusions
+ - field.field.node.session.field_session_gender
+ - field.field.node.session.field_session_in_mbrsh
+ - field.field.node.session.field_session_instructor
+ - field.field.node.session.field_session_location
+ - field.field.node.session.field_session_max_age
+ - field.field.node.session.field_session_mbr_price
+ - field.field.node.session.field_session_min_age
+ - field.field.node.session.field_session_nmbr_price
+ - field.field.node.session.field_session_online
+ - field.field.node.session.field_session_plocation
+ - field.field.node.session.field_session_reg_link
+ - field.field.node.session.field_session_room
+ - field.field.node.session.field_session_ticket
+ - field.field.node.session.field_session_time
+ - field.field.node.session.field_wait_list_availability
+ - node.type.session
+ module:
+ - datetime_range
+ - entity_reference_revisions
+ - link
+ - options
+ - text
+ - user
+id: node.session.default
+targetEntityType: node
+bundle: session
+mode: default
+content:
+ addthis:
+ label: hidden
+ type: string
+ weight: 100
+ region: content
+ settings:
+ link_to_entity: false
+ third_party_settings: { }
+ field_activity_type:
+ weight: 120
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: list_default
+ region: content
+ field_availability:
+ weight: 118
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_productid:
+ weight: 119
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_session_class:
+ weight: 101
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ type: entity_reference_label
+ region: content
+ field_session_description:
+ weight: 113
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: text_default
+ region: content
+ field_session_exclusions:
+ weight: 114
+ label: above
+ settings:
+ separator: '-'
+ format_type: medium
+ timezone_override: ''
+ third_party_settings: { }
+ type: daterange_default
+ region: content
+ field_session_gender:
+ weight: 104
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: list_default
+ region: content
+ field_session_in_mbrsh:
+ weight: 111
+ label: above
+ settings:
+ format: default
+ format_custom_false: ''
+ format_custom_true: ''
+ third_party_settings: { }
+ type: boolean
+ region: content
+ field_session_instructor:
+ weight: 117
+ label: above
+ settings:
+ link_to_entity: false
+ third_party_settings: { }
+ type: string
+ region: content
+ field_session_location:
+ weight: 102
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ type: entity_reference_label
+ region: content
+ field_session_max_age:
+ weight: 109
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_session_mbr_price:
+ weight: 106
+ label: above
+ settings:
+ thousand_separator: ''
+ decimal_separator: .
+ scale: 2
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_decimal
+ region: content
+ field_session_min_age:
+ weight: 108
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ field_session_nmbr_price:
+ weight: 107
+ label: above
+ settings:
+ thousand_separator: ''
+ decimal_separator: .
+ scale: 2
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_decimal
+ region: content
+ field_session_online:
+ weight: 112
+ label: above
+ settings:
+ format: default
+ format_custom_false: ''
+ format_custom_true: ''
+ third_party_settings: { }
+ type: boolean
+ region: content
+ field_session_plocation:
+ weight: 103
+ label: above
+ settings:
+ link: true
+ third_party_settings: { }
+ type: entity_reference_label
+ region: content
+ field_session_reg_link:
+ weight: 105
+ label: above
+ settings:
+ trim_length: 80
+ url_only: false
+ url_plain: false
+ rel: ''
+ target: ''
+ third_party_settings: { }
+ type: link
+ region: content
+ field_session_room:
+ weight: 116
+ label: above
+ settings:
+ link_to_entity: false
+ third_party_settings: { }
+ type: string
+ region: content
+ field_session_ticket:
+ weight: 110
+ label: above
+ settings:
+ format: default
+ format_custom_false: ''
+ format_custom_true: ''
+ third_party_settings: { }
+ type: boolean
+ region: content
+ field_session_time:
+ type: entity_reference_revisions_entity_view
+ weight: 115
+ label: above
+ settings:
+ view_mode: default
+ link: ''
+ third_party_settings: { }
+ region: content
+ field_wait_list_availability:
+ weight: 119
+ label: above
+ settings:
+ thousand_separator: ''
+ prefix_suffix: true
+ third_party_settings: { }
+ type: number_integer
+ region: content
+ links:
+ weight: 100
+ settings: { }
+ third_party_settings: { }
+ region: content
+hidden:
+ field_session_instructor: true
+ field_session_room: true
+ langcode: true
+ search_api_excerpt: true
diff --git a/config/install/core.entity_view_display.node.session.teaser.yml b/config/install/core.entity_view_display.node.session.teaser.yml
new file mode 100644
index 0000000..90d9ca9
--- /dev/null
+++ b/config/install/core.entity_view_display.node.session.teaser.yml
@@ -0,0 +1,71 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - core.entity_view_mode.node.teaser
+ - field.field.node.session.field_activity_type
+ - field.field.node.session.field_availability
+ - field.field.node.session.field_productid
+ - field.field.node.session.field_session_class
+ - field.field.node.session.field_session_description
+ - field.field.node.session.field_session_exclusions
+ - field.field.node.session.field_session_gender
+ - field.field.node.session.field_session_in_mbrsh
+ - field.field.node.session.field_session_instructor
+ - field.field.node.session.field_session_location
+ - field.field.node.session.field_session_max_age
+ - field.field.node.session.field_session_mbr_price
+ - field.field.node.session.field_session_min_age
+ - field.field.node.session.field_session_nmbr_price
+ - field.field.node.session.field_session_online
+ - field.field.node.session.field_session_plocation
+ - field.field.node.session.field_session_reg_link
+ - field.field.node.session.field_session_room
+ - field.field.node.session.field_session_ticket
+ - field.field.node.session.field_session_time
+ - field.field.node.session.field_wait_list_availability
+ - node.type.session
+ module:
+ - user
+id: node.session.teaser
+targetEntityType: node
+bundle: session
+mode: teaser
+content:
+ addthis:
+ label: hidden
+ type: string
+ weight: 100
+ region: content
+ settings:
+ link_to_entity: false
+ third_party_settings: { }
+ links:
+ weight: 100
+ region: content
+ settings: { }
+ third_party_settings: { }
+hidden:
+ field_activity_type: true
+ field_availability: true
+ field_productid: true
+ field_session_class: true
+ field_session_description: true
+ field_session_exclusions: true
+ field_session_gender: true
+ field_session_in_mbrsh: true
+ field_session_instructor: true
+ field_session_location: true
+ field_session_max_age: true
+ field_session_mbr_price: true
+ field_session_min_age: true
+ field_session_nmbr_price: true
+ field_session_online: true
+ field_session_plocation: true
+ field_session_reg_link: true
+ field_session_room: true
+ field_session_ticket: true
+ field_session_time: true
+ field_wait_list_availability: true
+ langcode: true
+ search_api_excerpt: true
diff --git a/config/install/core.entity_view_display.paragraph.session_time.default.yml b/config/install/core.entity_view_display.paragraph.session_time.default.yml
new file mode 100644
index 0000000..5eec22a
--- /dev/null
+++ b/config/install/core.entity_view_display.paragraph.session_time.default.yml
@@ -0,0 +1,52 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.field.paragraph.session_time.field_session_time_date
+ - field.field.paragraph.session_time.field_session_time_days
+ - field.field.paragraph.session_time.field_session_time_override
+ - paragraphs.paragraphs_type.session_time
+ module:
+ - datetime_range
+ - options
+id: paragraph.session_time.default
+targetEntityType: paragraph
+bundle: session_time
+mode: default
+content:
+ field_session_time_date:
+ weight: 0
+ label: above
+ settings:
+ separator: '-'
+ format_type: medium
+ timezone_override: ''
+ third_party_settings: { }
+ type: daterange_default
+ region: content
+ field_session_time_days:
+ weight: 1
+ label: above
+ settings: { }
+ third_party_settings: { }
+ type: list_default
+ region: content
+ field_session_time_override:
+ type: string
+ weight: 2
+ label: above
+ region: content
+ settings:
+ size: 60
+ placeholder: ''
+ third_party_settings: { }
+ moderation_state:
+ type: moderation_state_default
+ weight: 100
+ settings: { }
+ region: content
+ third_party_settings: { }
+hidden:
+ created: true
+ status: true
+ uid: true
diff --git a/config/install/field.field.node.session.field_activity_type.yml b/config/install/field.field.node.session.field_activity_type.yml
new file mode 100644
index 0000000..5d1485f
--- /dev/null
+++ b/config/install/field.field.node.session.field_activity_type.yml
@@ -0,0 +1,25 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_activity_type
+ - node.type.session
+ module:
+ - datalayer
+ - options
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: field_activity_type
+id: node.session.field_activity_type
+field_name: field_activity_type
+entity_type: node
+bundle: session
+label: 'Activity Type'
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: list_string
diff --git a/config/install/field.field.node.session.field_availability.yml b/config/install/field.field.node.session.field_availability.yml
new file mode 100644
index 0000000..d42f5c1
--- /dev/null
+++ b/config/install/field.field.node.session.field_availability.yml
@@ -0,0 +1,28 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_availability
+ - node.type.session
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: ''
+id: node.session.field_availability
+field_name: field_availability
+entity_type: node
+bundle: session
+label: 'Initial Availability'
+description: 'Availability for the class to book/register. '
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ min: null
+ max: null
+ prefix: ''
+ suffix: ''
+field_type: integer
diff --git a/config/install/field.field.node.session.field_productid.yml b/config/install/field.field.node.session.field_productid.yml
new file mode 100644
index 0000000..541d04b
--- /dev/null
+++ b/config/install/field.field.node.session.field_productid.yml
@@ -0,0 +1,28 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_productid
+ - node.type.session
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: ''
+id: node.session.field_productid
+field_name: field_productid
+entity_type: node
+bundle: session
+label: 'Product ID'
+description: 'ID of the product in external system aka CRM or any other. Used for integration of OpenY with external services.'
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ min: null
+ max: null
+ prefix: ''
+ suffix: ''
+field_type: integer
diff --git a/config/install/field.field.node.session.field_session_class.yml b/config/install/field.field.node.session.field_session_class.yml
new file mode 100644
index 0000000..6c1a3b4
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_class.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_class
+ - node.type.session
+id: node.session.field_session_class
+field_name: field_session_class
+entity_type: node
+bundle: session
+label: Class
+description: 'A reference field for selecting the program subcategory.'
+required: true
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default_no_dep:node'
+ handler_settings:
+ target_bundles: null
+ sort:
+ field: _none
+ auto_create: 0
+ auto_create_bundle: ''
+ target_bundles_no_dep:
+ class: class
+field_type: entity_reference
diff --git a/config/install/field.field.node.session.field_session_description.yml b/config/install/field.field.node.session.field_session_description.yml
new file mode 100644
index 0000000..068b1d9
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_description.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_description
+ - node.type.session
+ module:
+ - text
+id: node.session.field_session_description
+field_name: field_session_description
+entity_type: node
+bundle: session
+label: Description
+description: 'Textarea for the description/body with WYSIWYG, without summary.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: text_long
diff --git a/config/install/field.field.node.session.field_session_exclusions.yml b/config/install/field.field.node.session.field_session_exclusions.yml
new file mode 100644
index 0000000..298568b
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_exclusions.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_exclusions
+ - node.type.session
+ module:
+ - datetime_range
+id: node.session.field_session_exclusions
+field_name: field_session_exclusions
+entity_type: node
+bundle: session
+label: Exclusions
+description: 'A date field that identifies dates that would normally have an instance of the session but won’t. Needs to be able to have multiple exclusions. Supports multiple values. Should be handled by a single date field with ''end date'' option enabled. Its widget should be adjust to not to show period end date, but show period end time (to keep period start/end date equal).'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: daterange
diff --git a/config/install/field.field.node.session.field_session_gender.yml b/config/install/field.field.node.session.field_session_gender.yml
new file mode 100644
index 0000000..493b6d0
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_gender.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_gender
+ - node.type.session
+ module:
+ - options
+id: node.session.field_session_gender
+field_name: field_session_gender
+entity_type: node
+bundle: session
+label: Gender
+description: 'Select List with Gender options: Coed, Male, Female.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: list_string
diff --git a/config/install/field.field.node.session.field_session_in_mbrsh.yml b/config/install/field.field.node.session.field_session_in_mbrsh.yml
new file mode 100644
index 0000000..e84d13e
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_in_mbrsh.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_in_mbrsh
+ - node.type.session
+id: node.session.field_session_in_mbrsh
+field_name: field_session_in_mbrsh
+entity_type: node
+bundle: session
+label: 'In membership'
+description: 'Boolean field that helps determine if the session is included into membership package.'
+required: false
+translatable: true
+default_value:
+ -
+ value: 0
+default_value_callback: ''
+settings:
+ on_label: 'On'
+ off_label: 'Off'
+field_type: boolean
diff --git a/config/install/field.field.node.session.field_session_instructor.yml b/config/install/field.field.node.session.field_session_instructor.yml
new file mode 100644
index 0000000..23a2a32
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_instructor.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_instructor
+ - node.type.session
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: field_session_instructor
+id: node.session.field_session_instructor
+field_name: field_session_instructor
+entity_type: node
+bundle: session
+label: Instructor
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/config/install/field.field.node.session.field_session_location.yml b/config/install/field.field.node.session.field_session_location.yml
new file mode 100644
index 0000000..a205d55
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_location.yml
@@ -0,0 +1,36 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_location
+ - node.type.session
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: field_session_location
+id: node.session.field_session_location
+field_name: field_session_location
+entity_type: node
+bundle: session
+label: Location
+description: 'A reference field for selecting the branch or camp.'
+required: true
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default_no_dep:node'
+ handler_settings:
+ target_bundles: null
+ sort:
+ field: _none
+ auto_create: 0
+ auto_create_bundle: branch
+ target_bundles_no_dep:
+ branch: branch
+ facility: facility
+ subsite_location: subsite_location
+ camp: camp
+field_type: entity_reference
diff --git a/config/install/field.field.node.session.field_session_max_age.yml b/config/install/field.field.node.session.field_session_max_age.yml
new file mode 100644
index 0000000..2cdca57
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_max_age.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_max_age
+ - node.type.session
+id: node.session.field_session_max_age
+field_name: field_session_max_age
+entity_type: node
+bundle: session
+label: 'Max Age'
+description: 'Input field for adding the max age.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ min: null
+ max: null
+ prefix: ''
+ suffix: ''
+field_type: integer
diff --git a/config/install/field.field.node.session.field_session_mbr_price.yml b/config/install/field.field.node.session.field_session_mbr_price.yml
new file mode 100644
index 0000000..21a7900
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_mbr_price.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_mbr_price
+ - node.type.session
+id: node.session.field_session_mbr_price
+field_name: field_session_mbr_price
+entity_type: node
+bundle: session
+label: 'Member price'
+description: 'Input with with the price information for members.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ min: null
+ max: null
+ prefix: $
+ suffix: ''
+field_type: decimal
diff --git a/config/install/field.field.node.session.field_session_min_age.yml b/config/install/field.field.node.session.field_session_min_age.yml
new file mode 100644
index 0000000..7bdc306
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_min_age.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_min_age
+ - node.type.session
+id: node.session.field_session_min_age
+field_name: field_session_min_age
+entity_type: node
+bundle: session
+label: 'Min Age'
+description: 'Input field for adding the min age.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ min: null
+ max: null
+ prefix: ''
+ suffix: ''
+field_type: integer
diff --git a/config/install/field.field.node.session.field_session_nmbr_price.yml b/config/install/field.field.node.session.field_session_nmbr_price.yml
new file mode 100644
index 0000000..725a1a4
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_nmbr_price.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_nmbr_price
+ - node.type.session
+id: node.session.field_session_nmbr_price
+field_name: field_session_nmbr_price
+entity_type: node
+bundle: session
+label: 'Non Member Price'
+description: 'Input with with the price information for members.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ min: null
+ max: null
+ prefix: $
+ suffix: ''
+field_type: decimal
diff --git a/config/install/field.field.node.session.field_session_online.yml b/config/install/field.field.node.session.field_session_online.yml
new file mode 100644
index 0000000..88b0de9
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_online.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_online
+ - node.type.session
+id: node.session.field_session_online
+field_name: field_session_online
+entity_type: node
+bundle: session
+label: 'Online registration'
+description: 'Boolean field that determines if the Register Now button/link gets displayed.'
+required: false
+translatable: true
+default_value:
+ -
+ value: 0
+default_value_callback: ''
+settings:
+ on_label: 'On'
+ off_label: 'Off'
+field_type: boolean
diff --git a/config/install/field.field.node.session.field_session_plocation.yml b/config/install/field.field.node.session.field_session_plocation.yml
new file mode 100644
index 0000000..b511983
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_plocation.yml
@@ -0,0 +1,33 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_plocation
+ - node.type.session
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: field_session_plocation
+id: node.session.field_session_plocation
+field_name: field_session_plocation
+entity_type: node
+bundle: session
+label: 'Physical Location'
+description: 'A reference field for selecting the facility.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default_no_dep:node'
+ handler_settings:
+ target_bundles: null
+ sort:
+ field: _none
+ auto_create: 0
+ auto_create_bundle: ''
+ target_bundles_no_dep:
+ facility: facility
+field_type: entity_reference
diff --git a/config/install/field.field.node.session.field_session_reg_link.yml b/config/install/field.field.node.session.field_session_reg_link.yml
new file mode 100644
index 0000000..6f49622
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_reg_link.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_reg_link
+ - node.type.session
+ module:
+ - link
+id: node.session.field_session_reg_link
+field_name: field_session_reg_link
+entity_type: node
+bundle: session
+label: 'Registration link'
+description: 'A link field with the Registration link Value.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ link_type: 17
+ title: 1
+field_type: link
diff --git a/config/install/field.field.node.session.field_session_room.yml b/config/install/field.field.node.session.field_session_room.yml
new file mode 100644
index 0000000..854906f
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_room.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_room
+ - node.type.session
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: field_session_room
+id: node.session.field_session_room
+field_name: field_session_room
+entity_type: node
+bundle: session
+label: Room
+description: 'Name of the room where the session will be held. Example: "Studio A"'
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/config/install/field.field.node.session.field_session_ticket.yml b/config/install/field.field.node.session.field_session_ticket.yml
new file mode 100644
index 0000000..e0056c4
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_ticket.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_ticket
+ - node.type.session
+id: node.session.field_session_ticket
+field_name: field_session_ticket
+entity_type: node
+bundle: session
+label: 'Ticket required'
+description: 'Checkbox field to indicate that there is a ticket required.'
+required: false
+translatable: true
+default_value:
+ -
+ value: 0
+default_value_callback: ''
+settings:
+ on_label: 'On'
+ off_label: 'Off'
+field_type: boolean
diff --git a/config/install/field.field.node.session.field_session_time.yml b/config/install/field.field.node.session.field_session_time.yml
new file mode 100644
index 0000000..e40e9d1
--- /dev/null
+++ b/config/install/field.field.node.session.field_session_time.yml
@@ -0,0 +1,92 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_session_time
+ - node.type.session
+ - paragraphs.paragraphs_type.session_time
+ module:
+ - entity_reference_revisions
+id: node.session.field_session_time
+field_name: field_session_time
+entity_type: node
+bundle: session
+label: Time
+description: 'Session schedule.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default:paragraph'
+ handler_settings:
+ target_bundles:
+ session_time: session_time
+ target_bundles_drag_drop:
+ banner:
+ weight: 23
+ enabled: false
+ blog_posts_listing:
+ weight: 24
+ enabled: false
+ branch_hours:
+ weight: 25
+ enabled: false
+ camp_menu:
+ weight: 26
+ enabled: false
+ categories_listing:
+ weight: 27
+ enabled: false
+ classes_listing:
+ weight: 28
+ enabled: false
+ classes_listing_filters:
+ weight: 29
+ enabled: false
+ featured_blogs:
+ weight: 30
+ enabled: false
+ featured_content:
+ weight: 31
+ enabled: false
+ gallery:
+ weight: 32
+ enabled: false
+ grid_content:
+ weight: 33
+ enabled: false
+ latest_blog_posts:
+ weight: 34
+ enabled: false
+ latest_blog_posts_branch:
+ weight: 35
+ enabled: false
+ latest_blog_posts_camp:
+ weight: 36
+ enabled: false
+ membership_info:
+ weight: 37
+ enabled: false
+ prgf_location_finder:
+ weight: 38
+ enabled: false
+ promo_card:
+ weight: 39
+ enabled: false
+ session_time:
+ enabled: true
+ weight: 40
+ simple_content:
+ weight: 41
+ enabled: false
+ small_banner:
+ weight: 42
+ enabled: false
+ story_card:
+ weight: 43
+ enabled: false
+ teaser:
+ weight: 44
+ enabled: false
+field_type: entity_reference_revisions
diff --git a/config/install/field.field.node.session.field_wait_list_availability.yml b/config/install/field.field.node.session.field_wait_list_availability.yml
new file mode 100644
index 0000000..89b17e6
--- /dev/null
+++ b/config/install/field.field.node.session.field_wait_list_availability.yml
@@ -0,0 +1,28 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_wait_list_availability
+ - node.type.session
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: ''
+id: node.session.field_wait_list_availability
+field_name: field_wait_list_availability
+entity_type: node
+bundle: session
+label: 'Wait List Availability'
+description: 'Availability for the wait list for registration.'
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ min: null
+ max: null
+ prefix: ''
+ suffix: ''
+field_type: integer
diff --git a/config/install/field.field.paragraph.session_time.field_session_time_date.yml b/config/install/field.field.paragraph.session_time.field_session_time_date.yml
new file mode 100644
index 0000000..b510226
--- /dev/null
+++ b/config/install/field.field.paragraph.session_time.field_session_time_date.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.paragraph.field_session_time_date
+ - paragraphs.paragraphs_type.session_time
+ module:
+ - datetime_range
+id: paragraph.session_time.field_session_time_date
+field_name: field_session_time_date
+entity_type: paragraph
+bundle: session_time
+label: 'Date & Time'
+description: 'For example dates from 01/01/2018 to 01/01/2019 will indicate that this session schedule is going to be displayed only during year 2018.
Time set "from 1:00 PM to 2:00 PM" will indicate that this class is happening at that time.
If you select "Saturday" in the next field, that will mean your class happening "From 1pm to 2pm on every Saturday of 2018".'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: daterange
diff --git a/config/install/field.field.paragraph.session_time.field_session_time_days.yml b/config/install/field.field.paragraph.session_time.field_session_time_days.yml
new file mode 100644
index 0000000..7deae0d
--- /dev/null
+++ b/config/install/field.field.paragraph.session_time.field_session_time_days.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.paragraph.field_session_time_days
+ - paragraphs.paragraphs_type.session_time
+ module:
+ - options
+id: paragraph.session_time.field_session_time_days
+field_name: field_session_time_days
+entity_type: paragraph
+bundle: session_time
+label: Days
+description: 'Indicate on what days your class is repeating during period specified in previous field.'
+required: false
+translatable: true
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: list_string
diff --git a/config/install/field.field.paragraph.session_time.field_session_time_override.yml b/config/install/field.field.paragraph.session_time.field_session_time_override.yml
new file mode 100644
index 0000000..760fcf5
--- /dev/null
+++ b/config/install/field.field.paragraph.session_time.field_session_time_override.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.paragraph.field_session_time_override
+ - paragraphs.paragraphs_type.session_time
+ module:
+ - datalayer
+third_party_settings:
+ datalayer:
+ expose: 0
+ label: field_session_time_override
+id: paragraph.session_time.field_session_time_override
+field_name: field_session_time_override
+entity_type: paragraph
+bundle: session_time
+label: 'Session time override'
+description: 'Override session time to text'
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/config/install/field.storage.node.field_activity_type.yml b/config/install/field.storage.node.field_activity_type.yml
new file mode 100644
index 0000000..8c7dec8
--- /dev/null
+++ b/config/install/field.storage.node.field_activity_type.yml
@@ -0,0 +1,29 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - options
+id: node.field_activity_type
+field_name: field_activity_type
+entity_type: node
+type: list_string
+settings:
+ allowed_values:
+ -
+ value: group
+ label: Group
+ -
+ value: personal
+ label: Personal
+ -
+ value: 'small group training'
+ label: 'Small Group Training'
+ allowed_values_function: ''
+module: options
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_availability.yml b/config/install/field.storage.node.field_availability.yml
new file mode 100644
index 0000000..deedc6e
--- /dev/null
+++ b/config/install/field.storage.node.field_availability.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_availability
+field_name: field_availability
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_productid.yml b/config/install/field.storage.node.field_productid.yml
new file mode 100644
index 0000000..0022f8a
--- /dev/null
+++ b/config/install/field.storage.node.field_productid.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_productid
+field_name: field_productid
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_class.yml b/config/install/field.storage.node.field_session_class.yml
new file mode 100644
index 0000000..72009e5
--- /dev/null
+++ b/config/install/field.storage.node.field_session_class.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_class
+field_name: field_session_class
+entity_type: node
+type: entity_reference
+settings:
+ target_type: node
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_description.yml b/config/install/field.storage.node.field_session_description.yml
new file mode 100644
index 0000000..4370598
--- /dev/null
+++ b/config/install/field.storage.node.field_session_description.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - text
+id: node.field_session_description
+field_name: field_session_description
+entity_type: node
+type: text_long
+settings: { }
+module: text
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_exclusions.yml b/config/install/field.storage.node.field_session_exclusions.yml
new file mode 100644
index 0000000..36c4ade
--- /dev/null
+++ b/config/install/field.storage.node.field_session_exclusions.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - datetime_range
+ - node
+id: node.field_session_exclusions
+field_name: field_session_exclusions
+entity_type: node
+type: daterange
+settings:
+ datetime_type: datetime
+module: datetime_range
+locked: false
+cardinality: -1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_gender.yml b/config/install/field.storage.node.field_session_gender.yml
new file mode 100644
index 0000000..7c1f30f
--- /dev/null
+++ b/config/install/field.storage.node.field_session_gender.yml
@@ -0,0 +1,29 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - options
+id: node.field_session_gender
+field_name: field_session_gender
+entity_type: node
+type: list_string
+settings:
+ allowed_values:
+ -
+ value: coed
+ label: Coed
+ -
+ value: male
+ label: Male
+ -
+ value: female
+ label: Female
+ allowed_values_function: ''
+module: options
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_in_mbrsh.yml b/config/install/field.storage.node.field_session_in_mbrsh.yml
new file mode 100644
index 0000000..cd38e44
--- /dev/null
+++ b/config/install/field.storage.node.field_session_in_mbrsh.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_in_mbrsh
+field_name: field_session_in_mbrsh
+entity_type: node
+type: boolean
+settings: { }
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_instructor.yml b/config/install/field.storage.node.field_session_instructor.yml
new file mode 100644
index 0000000..730344c
--- /dev/null
+++ b/config/install/field.storage.node.field_session_instructor.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_instructor
+field_name: field_session_instructor
+entity_type: node
+type: string
+settings:
+ max_length: 255
+ is_ascii: false
+ case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_location.yml b/config/install/field.storage.node.field_session_location.yml
new file mode 100644
index 0000000..b01bdc7
--- /dev/null
+++ b/config/install/field.storage.node.field_session_location.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_location
+field_name: field_session_location
+entity_type: node
+type: entity_reference
+settings:
+ target_type: node
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_max_age.yml b/config/install/field.storage.node.field_session_max_age.yml
new file mode 100644
index 0000000..698a0bd
--- /dev/null
+++ b/config/install/field.storage.node.field_session_max_age.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_max_age
+field_name: field_session_max_age
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_mbr_price.yml b/config/install/field.storage.node.field_session_mbr_price.yml
new file mode 100644
index 0000000..8559fe4
--- /dev/null
+++ b/config/install/field.storage.node.field_session_mbr_price.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_mbr_price
+field_name: field_session_mbr_price
+entity_type: node
+type: decimal
+settings:
+ precision: 10
+ scale: 2
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_min_age.yml b/config/install/field.storage.node.field_session_min_age.yml
new file mode 100644
index 0000000..c96d904
--- /dev/null
+++ b/config/install/field.storage.node.field_session_min_age.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_min_age
+field_name: field_session_min_age
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_nmbr_price.yml b/config/install/field.storage.node.field_session_nmbr_price.yml
new file mode 100644
index 0000000..675cec8
--- /dev/null
+++ b/config/install/field.storage.node.field_session_nmbr_price.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_nmbr_price
+field_name: field_session_nmbr_price
+entity_type: node
+type: decimal
+settings:
+ precision: 10
+ scale: 2
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_online.yml b/config/install/field.storage.node.field_session_online.yml
new file mode 100644
index 0000000..6f9ee99
--- /dev/null
+++ b/config/install/field.storage.node.field_session_online.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_online
+field_name: field_session_online
+entity_type: node
+type: boolean
+settings: { }
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_plocation.yml b/config/install/field.storage.node.field_session_plocation.yml
new file mode 100644
index 0000000..34b2f2f
--- /dev/null
+++ b/config/install/field.storage.node.field_session_plocation.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_plocation
+field_name: field_session_plocation
+entity_type: node
+type: entity_reference
+settings:
+ target_type: node
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_reg_link.yml b/config/install/field.storage.node.field_session_reg_link.yml
new file mode 100644
index 0000000..789a2ab
--- /dev/null
+++ b/config/install/field.storage.node.field_session_reg_link.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - link
+ - node
+id: node.field_session_reg_link
+field_name: field_session_reg_link
+entity_type: node
+type: link
+settings: { }
+module: link
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_room.yml b/config/install/field.storage.node.field_session_room.yml
new file mode 100644
index 0000000..d7263a9
--- /dev/null
+++ b/config/install/field.storage.node.field_session_room.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_room
+field_name: field_session_room
+entity_type: node
+type: string
+settings:
+ max_length: 255
+ is_ascii: false
+ case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_ticket.yml b/config/install/field.storage.node.field_session_ticket.yml
new file mode 100644
index 0000000..6be4c20
--- /dev/null
+++ b/config/install/field.storage.node.field_session_ticket.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_session_ticket
+field_name: field_session_ticket
+entity_type: node
+type: boolean
+settings: { }
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_session_time.yml b/config/install/field.storage.node.field_session_time.yml
new file mode 100644
index 0000000..f8b8f03
--- /dev/null
+++ b/config/install/field.storage.node.field_session_time.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - entity_reference_revisions
+ - node
+ - paragraphs
+id: node.field_session_time
+field_name: field_session_time
+entity_type: node
+type: entity_reference_revisions
+settings:
+ target_type: paragraph
+module: entity_reference_revisions
+locked: false
+cardinality: -1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.node.field_wait_list_availability.yml b/config/install/field.storage.node.field_wait_list_availability.yml
new file mode 100644
index 0000000..2424e45
--- /dev/null
+++ b/config/install/field.storage.node.field_wait_list_availability.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+id: node.field_wait_list_availability
+field_name: field_wait_list_availability
+entity_type: node
+type: integer
+settings:
+ unsigned: false
+ size: normal
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.paragraph.field_session_time_date.yml b/config/install/field.storage.paragraph.field_session_time_date.yml
new file mode 100644
index 0000000..6879de1
--- /dev/null
+++ b/config/install/field.storage.paragraph.field_session_time_date.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - datetime_range
+ - paragraphs
+id: paragraph.field_session_time_date
+field_name: field_session_time_date
+entity_type: paragraph
+type: daterange
+settings:
+ datetime_type: datetime
+module: datetime_range
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.paragraph.field_session_time_days.yml b/config/install/field.storage.paragraph.field_session_time_days.yml
new file mode 100644
index 0000000..0bf08d7
--- /dev/null
+++ b/config/install/field.storage.paragraph.field_session_time_days.yml
@@ -0,0 +1,41 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - options
+ - paragraphs
+id: paragraph.field_session_time_days
+field_name: field_session_time_days
+entity_type: paragraph
+type: list_string
+settings:
+ allowed_values:
+ -
+ value: sunday
+ label: Sunday
+ -
+ value: monday
+ label: Monday
+ -
+ value: tuesday
+ label: Tuesday
+ -
+ value: wednesday
+ label: Wednesday
+ -
+ value: thursday
+ label: Thursday
+ -
+ value: friday
+ label: Friday
+ -
+ value: saturday
+ label: Saturday
+ allowed_values_function: ''
+module: options
+locked: false
+cardinality: -1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/field.storage.paragraph.field_session_time_override.yml b/config/install/field.storage.paragraph.field_session_time_override.yml
new file mode 100644
index 0000000..5094fc4
--- /dev/null
+++ b/config/install/field.storage.paragraph.field_session_time_override.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - paragraphs
+id: paragraph.field_session_time_override
+field_name: field_session_time_override
+entity_type: paragraph
+type: string
+settings:
+ max_length: 255
+ is_ascii: false
+ case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/config/install/node.type.session.yml b/config/install/node.type.session.yml
new file mode 100644
index 0000000..4571946
--- /dev/null
+++ b/config/install/node.type.session.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - menu_ui
+third_party_settings:
+ menu_ui:
+ available_menus:
+ - main
+ parent: 'main:'
+name: Session
+type: session
+description: 'Session content type is used for adding Sessions on the site.'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: true
diff --git a/config/install/paragraphs.paragraphs_type.session_time.yml b/config/install/paragraphs.paragraphs_type.session_time.yml
new file mode 100644
index 0000000..ad9ec15
--- /dev/null
+++ b/config/install/paragraphs.paragraphs_type.session_time.yml
@@ -0,0 +1,8 @@
+langcode: en
+status: true
+dependencies: { }
+id: session_time
+label: 'Session Time'
+icon_uuid: null
+description: null
+behavior_plugins: { }
diff --git a/config/install/rabbit_hole.behavior_settings.node_type_session.yml b/config/install/rabbit_hole.behavior_settings.node_type_session.yml
new file mode 100644
index 0000000..c1937e9
--- /dev/null
+++ b/config/install/rabbit_hole.behavior_settings.node_type_session.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies:
+ config:
+ - node.type.session
+id: node_type_session
+entity_type_id: node_type
+entity_id: session
+action: page_not_found
+allow_override: 0
+redirect: ''
+redirect_code: 301
+redirect_fallback_action: access_denied
diff --git a/openy_node_session.features.yml b/openy_node_session.features.yml
new file mode 100644
index 0000000..060a98e
--- /dev/null
+++ b/openy_node_session.features.yml
@@ -0,0 +1 @@
+required: true
diff --git a/openy_node_session.info.yml b/openy_node_session.info.yml
new file mode 100644
index 0000000..6ecae03
--- /dev/null
+++ b/openy_node_session.info.yml
@@ -0,0 +1,24 @@
+name: 'Open Y Node Session'
+description: 'Provides a Session content type and related configuration'
+type: module
+package: 'Open Y'
+version: 8.x-1.2
+dependencies:
+ - 'datalayer:datalayer'
+ - 'drupal:content_moderation'
+ - 'drupal:datetime_range'
+ - 'drupal:field'
+ - 'drupal:link'
+ - 'drupal:menu_ui'
+ - 'drupal:node'
+ - 'drupal:options'
+ - 'drupal:path'
+ - 'drupal:text'
+ - 'drupal:user'
+ - 'entity_reference_revisions:entity_reference_revisions'
+ - 'field_group:field_group'
+ - 'openy_node_session:openy_node_session'
+ - 'paragraphs:paragraphs'
+ - 'rabbit_hole:rabbit_hole'
+ - 'scheduler:scheduler'
+core_version_requirement: '^8.9 || ^9'
diff --git a/openy_node_session.install b/openy_node_session.install
new file mode 100644
index 0000000..2121927
--- /dev/null
+++ b/openy_node_session.install
@@ -0,0 +1,328 @@
+setDirectory($config_dir);
+ $config_importer->importConfigs([
+ 'rabbit_hole.behavior_settings.node_type_session',
+ ]);
+ // Update multiple configurations.
+ $configs = [
+ 'core.entity_view_display.paragraph.session_time.default' => [
+ 'content',
+ ],
+ ];
+
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}
+
+/**
+ * Update description for field.
+ */
+function openy_node_session_update_8002() {
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+ // Update multiple configurations.
+ $configs = [
+ 'field.field.node.session.field_session_class' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_description' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_gender' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_in_mbrsh' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_location' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_max_age' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_mbr_price' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_min_age' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_nmbr_price' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_online' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_reg_link' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_ticket' => [
+ 'description',
+ ],
+ 'field.field.node.session.field_session_time' => [
+ 'description',
+ ],
+ ];
+
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}
+
+/**
+ * Update description for fields.
+ */
+function openy_node_session_update_8003() {
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+ // Update multiple configurations.
+ $configs = [
+ 'field.field.paragraph.session_time.field_session_time_date' => [
+ 'description',
+ ],
+ 'field.field.paragraph.session_time.field_session_time_days' => [
+ 'description',
+ ],
+ ];
+
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}
+
+/**
+ * Update Open Y session node feature configs.
+ */
+function openy_node_session_update_8004() {
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+ // Update multiple configurations.
+ $configs = [
+ 'field.field.node.session.field_session_exclusions' => [
+ 'description',
+ ],
+ ];
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}
+
+/**
+ * Update feature configs for Drupal Core upgrade.
+ */
+function openy_node_session_update_8006() {
+ // This is outdated update and exist in next hooks, no need to import config twice.
+}
+
+/**
+ * Update feature configs after entity reference handler update and configs actualization.
+ */
+function _openy_node_session_update_8007() {
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+ // Update multiple configurations.
+ $configs = [
+ 'field.field.node.session.field_session_class' => [
+ 'dependencies',
+ 'settings',
+ ],
+ 'field.field.node.session.field_session_location' => [
+ 'dependencies',
+ 'settings',
+ ],
+ 'field.field.node.session.field_session_plocation' => [
+ 'dependencies',
+ 'settings',
+ ],
+ ];
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}
+
+/**
+ * Add room and instructor fields.
+ */
+function _openy_node_session_update_8008() {
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+
+ // Add two new fields.
+ $config_importer = \Drupal::service('openy_upgrade_tool.importer');
+ $config_importer->setDirectory($config_dir);
+ $config_importer->importConfigs([
+ 'field.field.node.session.field_session_instructor',
+ 'field.field.node.session.field_session_room',
+ 'field.storage.node.field_session_instructor',
+ 'field.storage.node.field_session_room',
+ ]);
+
+ // Update multiple configurations.
+ $configs = [
+ 'core.entity_form_display.node.session.default' =>[
+ 'dependencies',
+ 'field_group',
+ ],
+ 'core.entity_view_display.node.session.default' =>[
+ 'dependencies',
+ 'content',
+ ],
+ 'field.field.node.session.field_session_plocation' =>[],
+ ];
+
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}
+
+/**
+ * Update to get fields from prgreg.
+ */
+function openy_node_session_update_8009() {
+ // This is outdated update and exist in next hooks, no need to import config twice.
+}
+
+/**
+ * Update to get fields from prgreg.
+ */
+function openy_node_session_update_8010() {
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+
+ // Add two new fields.
+ $config_importer = \Drupal::service('openy_upgrade_tool.importer');
+ $config_importer->setDirectory($config_dir);
+ $config_importer->importConfigs([
+ 'core.entity_form_display.node.session.default',
+ 'core.entity_form_display.paragraph.session_time.default',
+ 'core.entity_view_display.node.session.default',
+ 'field.field.node.session.field_session_plocation',
+ 'core.entity_view_display.node.session.teaser',
+ 'field.field.node.session.field_session_room',
+ 'field.field.node.session.field_availability',
+ 'field.field.node.session.field_productid',
+ 'field.field.node.session.field_session_class',
+ 'field.storage.node.field_session_room',
+ 'field.storage.node.field_availability',
+ 'field.storage.node.field_productid',
+ 'field.field.node.session.field_session_instructor',
+ 'field.field.node.session.field_session_location',
+ 'paragraphs.paragraphs_type.session_time',
+ 'field.storage.node.field_session_instructor',
+ ]);
+}
+
+/**
+ * Add new field_activity_type.
+ */
+function openy_node_session_update_8012() {
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+
+ // Add two new fields.
+ $config_importer = \Drupal::service('openy_upgrade_tool.importer');
+ $config_importer->setDirectory($config_dir);
+ $config_importer->importConfigs([
+ 'field.storage.node.field_activity_type',
+ 'field.field.node.session.field_activity_type',
+ 'core.entity_view_display.node.session.default',
+ 'core.entity_form_display.node.session.default',
+ ]);
+}
+
+/**
+ * Add field for override session time.
+ */
+function openy_node_session_update_8013() {
+
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+
+ $config_importer = \Drupal::service('openy_upgrade_tool.importer');
+ $config_importer->setDirectory($config_dir);
+ $config_importer->importConfigs([
+ 'field.storage.paragraph.field_session_time_override',
+ 'field.field.paragraph.session_time.field_session_time_override',
+ ]);
+
+ $configs = [
+ 'core.entity_form_display.paragraph.session_time.default' =>[
+ 'dependencies',
+ 'content',
+ ],
+ 'core.entity_view_display.paragraph.session_time.default' =>[
+ 'dependencies',
+ 'content',
+ ],
+ ];
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}
+
+/**
+ * Add field for Wait List.
+ */
+function openy_node_session_update_8014() {
+
+ $config_dir = drupal_get_path('module', 'openy_node_session') . '/config/install/';
+
+ $config_importer = \Drupal::service('openy_upgrade_tool.importer');
+ $config_importer->setDirectory($config_dir);
+ $config_importer->importConfigs([
+ 'field.storage.node.field_wait_list_availability',
+ 'field.field.node.session.field_wait_list_availability',
+ ]);
+
+ $configs = [
+ 'core.entity_form_display.node.session.default' =>[
+ 'dependencies',
+ 'content',
+ 'third_party_settings',
+ ],
+ 'core.entity_view_display.node.session.default' =>[
+ 'dependencies',
+ 'content',
+ ],
+ ];
+ $config_updater = \Drupal::service('openy_upgrade_tool.param_updater');
+ foreach ($configs as $config_name => $params) {
+ $config = $config_dir . $config_name . '.yml';
+ foreach ($params as $param) {
+ $config_updater->update($config, $config_name, $param);
+ }
+ }
+}