diff --git a/config/sync/core.base_field_override.node.guide_landing.promote.yml b/config/sync/core.base_field_override.node.guide_landing.promote.yml new file mode 100644 index 00000000..4f764740 --- /dev/null +++ b/config/sync/core.base_field_override.node.guide_landing.promote.yml @@ -0,0 +1,22 @@ +uuid: 82bbc5f1-7a89-4790-8407-896442a08af3 +langcode: en +status: true +dependencies: + config: + - node.type.guide_landing +id: node.guide_landing.promote +field_name: promote +entity_type: node +bundle: guide_landing +label: 'Promoted to front page' +description: '' +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/sync/core.base_field_override.node.guide_landing.status.yml b/config/sync/core.base_field_override.node.guide_landing.status.yml new file mode 100644 index 00000000..3454579a --- /dev/null +++ b/config/sync/core.base_field_override.node.guide_landing.status.yml @@ -0,0 +1,22 @@ +uuid: 4364e4a5-14f6-47b3-b2e1-ffda3628e995 +langcode: en +status: true +dependencies: + config: + - node.type.guide_landing +id: node.guide_landing.status +field_name: status +entity_type: node +bundle: guide_landing +label: Published +description: '' +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/sync/core.entity_form_display.media.image.default.yml b/config/sync/core.entity_form_display.media.image.default.yml index 2e7e5e2f..c02a39b5 100644 --- a/config/sync/core.entity_form_display.media.image.default.yml +++ b/config/sync/core.entity_form_display.media.image.default.yml @@ -3,11 +3,15 @@ langcode: en status: true dependencies: config: + - field.field.media.image.field_caption + - field.field.media.image.field_credit - field.field.media.image.field_media_image - image.style.thumbnail - media.type.image module: - image + - path + - text id: media.image.default targetEntityType: media bundle: image @@ -15,13 +19,29 @@ mode: default content: created: type: datetime_timestamp - weight: 10 + weight: 5 region: content settings: { } third_party_settings: { } + field_caption: + type: text_textfield + weight: 3 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + field_credit: + type: string_textfield + weight: 2 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } field_media_image: type: image_image - weight: 0 + weight: 1 region: content settings: progress_indicator: throbber @@ -29,7 +49,7 @@ content: third_party_settings: { } name: type: string_textfield - weight: -5 + weight: 0 region: content settings: size: 60 @@ -37,20 +57,20 @@ content: third_party_settings: { } path: type: path - weight: 30 + weight: 6 region: content settings: { } third_party_settings: { } status: type: boolean_checkbox - weight: 100 + weight: 7 region: content settings: display_label: true third_party_settings: { } uid: type: entity_reference_autocomplete - weight: 5 + weight: 4 region: content settings: match_operator: CONTAINS diff --git a/config/sync/core.entity_form_display.media.image.media_library.yml b/config/sync/core.entity_form_display.media.image.media_library.yml index 0ce96d43..fbff1b88 100644 --- a/config/sync/core.entity_form_display.media.image.media_library.yml +++ b/config/sync/core.entity_form_display.media.image.media_library.yml @@ -4,11 +4,14 @@ status: true dependencies: config: - core.entity_form_mode.media.media_library + - field.field.media.image.field_caption + - field.field.media.image.field_credit - field.field.media.image.field_media_image - image.style.thumbnail - media.type.image module: - image + - path id: media.image.media_library targetEntityType: media bundle: image @@ -30,6 +33,8 @@ content: third_party_settings: { } hidden: created: true + field_caption: true + field_credit: true name: true publish_on: true publish_state: true diff --git a/config/sync/core.entity_form_display.node.guide_landing.default.yml b/config/sync/core.entity_form_display.node.guide_landing.default.yml new file mode 100644 index 00000000..908c345f --- /dev/null +++ b/config/sync/core.entity_form_display.node.guide_landing.default.yml @@ -0,0 +1,131 @@ +uuid: 3d3feafc-f9f9-443d-9f05-9d381ad44419 +langcode: en +status: true +dependencies: + config: + - field.field.node.guide_landing.body + - field.field.node.guide_landing.field_bottom_content + - field.field.node.guide_landing.field_glossary + - field.field.node.guide_landing.field_guides + - field.field.node.guide_landing.field_primary_image + - field.field.node.guide_landing.field_summary + - node.type.guide_landing + module: + - content_moderation + - maxlength + - media_library + - path + - text +id: node.guide_landing.default +targetEntityType: node +bundle: guide_landing +mode: default +content: + body: + type: text_textarea_with_summary + weight: 3 + region: content + settings: + rows: 9 + summary_rows: 3 + placeholder: '' + show_summary: false + third_party_settings: { } + created: + type: datetime_timestamp + weight: 8 + region: content + settings: { } + third_party_settings: { } + field_bottom_content: + type: text_textarea + weight: 5 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } + field_glossary: + type: options_select + weight: 6 + region: content + settings: { } + third_party_settings: { } + field_guides: + type: entity_reference_autocomplete + weight: 4 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } + field_primary_image: + type: media_library_widget + weight: 2 + region: content + settings: + media_types: { } + third_party_settings: { } + field_summary: + type: text_textarea + weight: 1 + region: content + settings: + rows: 1 + placeholder: '' + third_party_settings: + maxlength: + maxlength_js: 255 + maxlength_js_label: 'Content limited to @limit characters, remaining: <strong>@remaining</strong>' + maxlength_js_enforce: true + moderation_state: + type: moderation_state_default + weight: 12 + region: content + settings: { } + third_party_settings: { } + path: + type: path + weight: 9 + region: content + settings: { } + third_party_settings: { } + status: + type: boolean_checkbox + weight: 10 + region: content + settings: + display_label: true + third_party_settings: { } + title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + uid: + type: entity_reference_autocomplete + weight: 7 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } + url_redirects: + weight: 11 + region: content + settings: { } + third_party_settings: { } +hidden: + promote: true + publish_on: true + publish_state: true + sticky: true + unpublish_on: true + unpublish_state: true diff --git a/config/sync/core.entity_form_display.node.guide_navigation.default.yml b/config/sync/core.entity_form_display.node.guide_navigation.default.yml index c43647c1..0bd1e092 100644 --- a/config/sync/core.entity_form_display.node.guide_navigation.default.yml +++ b/config/sync/core.entity_form_display.node.guide_navigation.default.yml @@ -4,29 +4,28 @@ status: true dependencies: config: - field.field.node.guide_navigation.field_guide_navigation - - field.field.node.guide_navigation.field_guide_start_page - - field.field.node.guide_navigation.field_parent_guide + - field.field.node.guide_navigation.field_kicker_link + - field.field.node.guide_navigation.field_overview_image - field.field.node.guide_navigation.field_show_in_page_nav - field.field.node.guide_navigation.field_show_next_previous - - field.field.node.guide_navigation.field_show_read_time - node.type.guide_navigation module: - content_moderation - field_group + - link + - media_library - paragraphs third_party_settings: field_group: group_settings: children: - - field_guide_start_page - field_show_next_previous - field_show_read_time - field_show_in_page_nav - - field_parent_guide label: Settings region: content parent_name: '' - weight: 2 + weight: 4 format_type: fieldset format_settings: classes: '' @@ -35,6 +34,37 @@ third_party_settings: label_as_html: false description: '' required_fields: true + group_overview_details: + children: { } + label: 'NOTE: Overview Page' + region: content + parent_name: '' + weight: 2 + format_type: details + format_settings: + classes: '' + show_empty_fields: true + id: '' + label_as_html: false + open: true + description: 'The first Navigation item will be used as the "Overview" page for the guide.' + required_fields: false + group_overview_settings: + children: + - field_overview_image + - field_kicker_link + label: 'Overview Settings' + region: content + parent_name: '' + weight: 1 + format_type: fieldset + format_settings: + classes: '' + show_empty_fields: false + id: '' + label_as_html: false + description: "These elements are used in this guide's header." + required_fields: true id: node.guide_navigation.default targetEntityType: node bundle: guide_navigation @@ -42,7 +72,7 @@ mode: default content: created: type: datetime_timestamp - weight: 5 + weight: 6 region: content settings: { } third_party_settings: { } @@ -64,17 +94,20 @@ content: collapse_edit_all: collapse_edit_all duplicate: duplicate third_party_settings: { } - field_guide_start_page: - type: options_select - weight: 1 + field_kicker_link: + type: link_default + weight: 9 region: content - settings: { } + settings: + placeholder_url: '' + placeholder_title: '' third_party_settings: { } - field_parent_guide: - type: options_select - weight: 5 + field_overview_image: + type: media_library_widget + weight: 8 region: content - settings: { } + settings: + media_types: { } third_party_settings: { } field_show_in_page_nav: type: boolean_checkbox @@ -90,22 +123,15 @@ content: settings: display_label: true third_party_settings: { } - field_show_read_time: - type: boolean_checkbox - weight: 3 - region: content - settings: - display_label: true - third_party_settings: { } moderation_state: type: moderation_state_default - weight: 6 + weight: 7 region: content settings: { } third_party_settings: { } status: type: boolean_checkbox - weight: 7 + weight: 8 region: content settings: display_label: true @@ -120,7 +146,7 @@ content: third_party_settings: { } uid: type: entity_reference_autocomplete - weight: 4 + weight: 5 region: content settings: match_operator: CONTAINS diff --git a/config/sync/core.entity_form_display.node.guides.default.yml b/config/sync/core.entity_form_display.node.guides.default.yml index 8aa57ea5..22ea2a28 100644 --- a/config/sync/core.entity_form_display.node.guides.default.yml +++ b/config/sync/core.entity_form_display.node.guides.default.yml @@ -5,7 +5,6 @@ dependencies: config: - field.field.node.guides.body - field.field.node.guides.field_deck - - field.field.node.guides.field_featured_image - field.field.node.guides.field_glossary - field.field.node.guides.field_guide_nav_ref - field.field.node.guides.field_guide_nav_title @@ -78,13 +77,6 @@ content: maxlength_js: 255 maxlength_js_label: 'Content limited to @limit characters, remaining: <strong>@remaining</strong>' maxlength_js_enforce: true - field_featured_image: - type: media_library_widget - weight: 13 - region: content - settings: - media_types: { } - third_party_settings: { } field_glossary: type: options_select weight: 52 diff --git a/config/sync/core.entity_view_display.media.image.default.yml b/config/sync/core.entity_view_display.media.image.default.yml index 76abc3ee..5af54178 100644 --- a/config/sync/core.entity_view_display.media.image.default.yml +++ b/config/sync/core.entity_view_display.media.image.default.yml @@ -3,16 +3,34 @@ langcode: en status: true dependencies: config: + - field.field.media.image.field_caption + - field.field.media.image.field_credit - field.field.media.image.field_media_image - image.style.large - media.type.image module: - image + - text id: media.image.default targetEntityType: media bundle: image mode: default content: + field_caption: + type: text_default + label: above + settings: { } + third_party_settings: { } + weight: 2 + region: content + field_credit: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 1 + region: content field_media_image: type: image label: hidden diff --git a/config/sync/core.entity_view_display.media.image.media_library.yml b/config/sync/core.entity_view_display.media.image.media_library.yml index 64720c0f..2b5fdf1b 100644 --- a/config/sync/core.entity_view_display.media.image.media_library.yml +++ b/config/sync/core.entity_view_display.media.image.media_library.yml @@ -4,6 +4,8 @@ status: true dependencies: config: - core.entity_view_mode.media.media_library + - field.field.media.image.field_caption + - field.field.media.image.field_credit - field.field.media.image.field_media_image - image.style.medium - media.type.image @@ -27,6 +29,8 @@ content: region: content hidden: created: true + field_caption: true + field_credit: true field_media_image: true name: true uid: true diff --git a/config/sync/core.entity_view_display.media.image.teaser.yml b/config/sync/core.entity_view_display.media.image.teaser.yml index ca497546..832a389c 100644 --- a/config/sync/core.entity_view_display.media.image.teaser.yml +++ b/config/sync/core.entity_view_display.media.image.teaser.yml @@ -4,6 +4,8 @@ status: true dependencies: config: - core.entity_view_mode.media.teaser + - field.field.media.image.field_caption + - field.field.media.image.field_credit - field.field.media.image.field_media_image - image.style.large - media.type.image @@ -27,6 +29,8 @@ content: region: content hidden: created: true + field_caption: true + field_credit: true name: true thumbnail: true uid: true diff --git a/config/sync/core.entity_view_display.node.guide_landing.default.yml b/config/sync/core.entity_view_display.node.guide_landing.default.yml new file mode 100644 index 00000000..04921845 --- /dev/null +++ b/config/sync/core.entity_view_display.node.guide_landing.default.yml @@ -0,0 +1,51 @@ +uuid: 274838c1-a2ff-4814-a099-eebbb3124f5e +langcode: en +status: true +dependencies: + config: + - field.field.node.guide_landing.body + - field.field.node.guide_landing.field_bottom_content + - field.field.node.guide_landing.field_glossary + - field.field.node.guide_landing.field_guides + - field.field.node.guide_landing.field_primary_image + - field.field.node.guide_landing.field_summary + - node.type.guide_landing + module: + - text + - user +id: node.guide_landing.default +targetEntityType: node +bundle: guide_landing +mode: default +content: + body: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 1 + region: content + field_bottom_content: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 3 + region: content + field_guides: + type: entity_reference_label + label: hidden + settings: + link: true + third_party_settings: { } + weight: 2 + region: content + links: + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + field_glossary: true + field_primary_image: true + field_summary: true diff --git a/config/sync/core.entity_view_display.node.guide_landing.teaser.yml b/config/sync/core.entity_view_display.node.guide_landing.teaser.yml new file mode 100644 index 00000000..9e64c577 --- /dev/null +++ b/config/sync/core.entity_view_display.node.guide_landing.teaser.yml @@ -0,0 +1,40 @@ +uuid: 8f2a0099-bbcd-49ef-bf23-ed35a6ff9907 +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - field.field.node.guide_landing.body + - field.field.node.guide_landing.field_bottom_content + - field.field.node.guide_landing.field_glossary + - field.field.node.guide_landing.field_guides + - field.field.node.guide_landing.field_primary_image + - field.field.node.guide_landing.field_summary + - node.type.guide_landing + module: + - text + - user +id: node.guide_landing.teaser +targetEntityType: node +bundle: guide_landing +mode: teaser +content: + body: + type: text_summary_or_trimmed + label: hidden + settings: + trim_length: 600 + third_party_settings: { } + weight: 101 + region: content + links: + settings: { } + third_party_settings: { } + weight: 100 + region: content +hidden: + field_bottom_content: true + field_glossary: true + field_guides: true + field_primary_image: true + field_summary: true diff --git a/config/sync/core.entity_view_display.node.guide_navigation.default.yml b/config/sync/core.entity_view_display.node.guide_navigation.default.yml index 472fc86a..60d5b2bf 100644 --- a/config/sync/core.entity_view_display.node.guide_navigation.default.yml +++ b/config/sync/core.entity_view_display.node.guide_navigation.default.yml @@ -4,14 +4,14 @@ status: true dependencies: config: - field.field.node.guide_navigation.field_guide_navigation - - field.field.node.guide_navigation.field_guide_start_page - - field.field.node.guide_navigation.field_parent_guide + - field.field.node.guide_navigation.field_kicker_link + - field.field.node.guide_navigation.field_overview_image - field.field.node.guide_navigation.field_show_in_page_nav - field.field.node.guide_navigation.field_show_next_previous - - field.field.node.guide_navigation.field_show_read_time - node.type.guide_navigation module: - entity_reference_revisions + - link - user id: node.guide_navigation.default targetEntityType: node @@ -27,21 +27,26 @@ content: third_party_settings: { } weight: 2 region: content - field_guide_start_page: - type: entity_reference_label - label: hidden + field_kicker_link: + type: link + label: above settings: - link: true + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' third_party_settings: { } - weight: 1 + weight: 5 region: content - field_parent_guide: - type: entity_reference_label + field_overview_image: + type: entity_reference_entity_view label: above settings: - link: true + view_mode: default + link: false third_party_settings: { } - weight: 3 + weight: 4 region: content links: settings: { } @@ -51,4 +56,3 @@ content: hidden: field_show_in_page_nav: true field_show_next_previous: true - field_show_read_time: true diff --git a/config/sync/core.entity_view_display.node.guide_navigation.teaser.yml b/config/sync/core.entity_view_display.node.guide_navigation.teaser.yml index aa57ed66..8d5bc8a6 100644 --- a/config/sync/core.entity_view_display.node.guide_navigation.teaser.yml +++ b/config/sync/core.entity_view_display.node.guide_navigation.teaser.yml @@ -5,11 +5,10 @@ dependencies: config: - core.entity_view_mode.node.teaser - field.field.node.guide_navigation.field_guide_navigation - - field.field.node.guide_navigation.field_guide_start_page - - field.field.node.guide_navigation.field_parent_guide + - field.field.node.guide_navigation.field_kicker_link + - field.field.node.guide_navigation.field_overview_image - field.field.node.guide_navigation.field_show_in_page_nav - field.field.node.guide_navigation.field_show_next_previous - - field.field.node.guide_navigation.field_show_read_time - node.type.guide_navigation module: - user @@ -25,8 +24,7 @@ content: region: content hidden: field_guide_navigation: true - field_guide_start_page: true - field_parent_guide: true + field_kicker_link: true + field_overview_image: true field_show_in_page_nav: true field_show_next_previous: true - field_show_read_time: true diff --git a/config/sync/core.entity_view_display.node.guides.default.yml b/config/sync/core.entity_view_display.node.guides.default.yml index 810e3643..64bc1da8 100644 --- a/config/sync/core.entity_view_display.node.guides.default.yml +++ b/config/sync/core.entity_view_display.node.guides.default.yml @@ -5,7 +5,6 @@ dependencies: config: - field.field.node.guides.body - field.field.node.guides.field_deck - - field.field.node.guides.field_featured_image - field.field.node.guides.field_glossary - field.field.node.guides.field_guide_nav_ref - field.field.node.guides.field_guide_nav_title @@ -44,15 +43,6 @@ content: third_party_settings: { } weight: 5 region: content - field_featured_image: - type: entity_reference_entity_view - label: above - settings: - view_mode: default - link: false - third_party_settings: { } - weight: 119 - region: content field_glossary: type: entity_reference_entity_id label: hidden diff --git a/config/sync/core.entity_view_display.node.guides.teaser.yml b/config/sync/core.entity_view_display.node.guides.teaser.yml index 7808c7ca..e3ea62b0 100644 --- a/config/sync/core.entity_view_display.node.guides.teaser.yml +++ b/config/sync/core.entity_view_display.node.guides.teaser.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.node.teaser - field.field.node.guides.body - field.field.node.guides.field_deck - - field.field.node.guides.field_featured_image - field.field.node.guides.field_glossary - field.field.node.guides.field_guide_nav_ref - field.field.node.guides.field_guide_nav_title @@ -46,7 +45,6 @@ content: region: content hidden: field_deck: true - field_featured_image: true field_glossary: true field_guide_nav_ref: true field_guide_nav_title: true diff --git a/config/sync/field.field.media.image.field_caption.yml b/config/sync/field.field.media.image.field_caption.yml new file mode 100644 index 00000000..1b6682c3 --- /dev/null +++ b/config/sync/field.field.media.image.field_caption.yml @@ -0,0 +1,24 @@ +uuid: ef8d5731-1a6d-45e1-851b-3af0ff11e473 +langcode: en +status: true +dependencies: + config: + - field.storage.media.field_caption + - filter.format.single_inline_html + - media.type.image + module: + - text +id: media.image.field_caption +field_name: field_caption +entity_type: media +bundle: image +label: Caption +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + allowed_formats: + - single_inline_html +field_type: text diff --git a/config/sync/field.field.media.image.field_credit.yml b/config/sync/field.field.media.image.field_credit.yml new file mode 100644 index 00000000..976068ac --- /dev/null +++ b/config/sync/field.field.media.image.field_credit.yml @@ -0,0 +1,19 @@ +uuid: 9b7076e8-fb82-487a-a1e5-c81d64f5e746 +langcode: en +status: true +dependencies: + config: + - field.storage.media.field_credit + - media.type.image +id: media.image.field_credit +field_name: field_credit +entity_type: media +bundle: image +label: Credit +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/field.field.node.guide_landing.body.yml b/config/sync/field.field.node.guide_landing.body.yml new file mode 100644 index 00000000..86f9c3e4 --- /dev/null +++ b/config/sync/field.field.node.guide_landing.body.yml @@ -0,0 +1,24 @@ +uuid: 4133a3ed-74a7-4c14-8051-23c8e7e1005d +langcode: en +status: true +dependencies: + config: + - field.storage.node.body + - node.type.guide_landing + module: + - text +id: node.guide_landing.body +field_name: body +entity_type: node +bundle: guide_landing +label: Body +description: '' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: + display_summary: true + required_summary: false + allowed_formats: { } +field_type: text_with_summary diff --git a/config/sync/field.field.node.guide_landing.field_bottom_content.yml b/config/sync/field.field.node.guide_landing.field_bottom_content.yml new file mode 100644 index 00000000..2bc4c31c --- /dev/null +++ b/config/sync/field.field.node.guide_landing.field_bottom_content.yml @@ -0,0 +1,24 @@ +uuid: b6c7ca7b-1a23-4bf4-b250-294b0758c25c +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_bottom_content + - filter.format.html + - node.type.guide_landing + module: + - text +id: node.guide_landing.field_bottom_content +field_name: field_bottom_content +entity_type: node +bundle: guide_landing +label: 'Bottom Content' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + allowed_formats: + - html +field_type: text_long diff --git a/config/sync/field.field.node.guide_landing.field_glossary.yml b/config/sync/field.field.node.guide_landing.field_glossary.yml new file mode 100644 index 00000000..7a4e8cc8 --- /dev/null +++ b/config/sync/field.field.node.guide_landing.field_glossary.yml @@ -0,0 +1,23 @@ +uuid: cb92dfc9-dfbb-425f-8cad-4488ddcdbb0f +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_glossary + - node.type.guide_landing +id: node.guide_landing.field_glossary +field_name: field_glossary +entity_type: node +bundle: guide_landing +label: Glossary +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:taxonomy_vocabulary' + handler_settings: + target_bundles: null + auto_create: false +field_type: entity_reference diff --git a/config/sync/field.field.node.guide_landing.field_guides.yml b/config/sync/field.field.node.guide_landing.field_guides.yml new file mode 100644 index 00000000..71e8d3c6 --- /dev/null +++ b/config/sync/field.field.node.guide_landing.field_guides.yml @@ -0,0 +1,29 @@ +uuid: 707d0d34-88d4-424a-b72d-e031775e598a +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_guides + - node.type.guide_landing + - node.type.guides +id: node.guide_landing.field_guides +field_name: field_guides +entity_type: node +bundle: guide_landing +label: Guides +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:node' + handler_settings: + target_bundles: + guides: guides + sort: + field: title + direction: ASC + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/config/sync/field.field.node.guides.field_featured_image.yml b/config/sync/field.field.node.guide_landing.field_primary_image.yml similarity index 63% rename from config/sync/field.field.node.guides.field_featured_image.yml rename to config/sync/field.field.node.guide_landing.field_primary_image.yml index ec4710e4..902e8631 100644 --- a/config/sync/field.field.node.guides.field_featured_image.yml +++ b/config/sync/field.field.node.guide_landing.field_primary_image.yml @@ -1,16 +1,16 @@ -uuid: 265f6685-7365-42f1-9e3b-12b74b47cffc +uuid: 130fc166-c8d2-400c-b339-1087fdf881ad langcode: en status: true dependencies: config: - - field.storage.node.field_featured_image + - field.storage.node.field_primary_image - media.type.image - - node.type.guides -id: node.guides.field_featured_image -field_name: field_featured_image + - node.type.guide_landing +id: node.guide_landing.field_primary_image +field_name: field_primary_image entity_type: node -bundle: guides -label: 'Featured Image' +bundle: guide_landing +label: 'Primary Image' description: '' required: false translatable: false diff --git a/config/sync/field.field.node.guide_landing.field_summary.yml b/config/sync/field.field.node.guide_landing.field_summary.yml new file mode 100644 index 00000000..490d4c3d --- /dev/null +++ b/config/sync/field.field.node.guide_landing.field_summary.yml @@ -0,0 +1,24 @@ +uuid: d9e9cf02-41f4-46af-9172-741883241320 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_summary + - filter.format.single_inline_html + - node.type.guide_landing + module: + - text +id: node.guide_landing.field_summary +field_name: field_summary +entity_type: node +bundle: guide_landing +label: Summary +description: '1-sentence description that does not repeat the headline' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + allowed_formats: + - single_inline_html +field_type: text_long diff --git a/config/sync/field.field.node.guide_navigation.field_guide_start_page.yml b/config/sync/field.field.node.guide_navigation.field_guide_start_page.yml deleted file mode 100644 index ba6b73f7..00000000 --- a/config/sync/field.field.node.guide_navigation.field_guide_start_page.yml +++ /dev/null @@ -1,25 +0,0 @@ -uuid: e52fac26-5aa5-45b6-a870-c98f5e32b81b -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_guide_start_page - - node.type.guide_navigation -id: node.guide_navigation.field_guide_start_page -field_name: field_guide_start_page -entity_type: node -bundle: guide_navigation -label: 'Start Page' -description: "The guide that will be as the 'Header' for all guides that use this guide navigation." -required: true -translatable: false -default_value: { } -default_value_callback: '' -settings: - handler: views - handler_settings: - view: - view_name: parent_guide_nav_pages_ref - display_name: entity_reference_1 - arguments: { } -field_type: entity_reference diff --git a/config/sync/field.field.node.guide_navigation.field_kicker_link.yml b/config/sync/field.field.node.guide_navigation.field_kicker_link.yml new file mode 100644 index 00000000..21866103 --- /dev/null +++ b/config/sync/field.field.node.guide_navigation.field_kicker_link.yml @@ -0,0 +1,23 @@ +uuid: 39bc296d-7be6-43cb-b6f5-da5e7437b937 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_kicker_link + - node.type.guide_navigation + module: + - link +id: node.guide_navigation.field_kicker_link +field_name: field_kicker_link +entity_type: node +bundle: guide_navigation +label: 'Kicker Link' +description: 'Links the kicker to this page instead of using the default.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: 2 + link_type: 1 +field_type: link diff --git a/config/sync/field.field.node.guide_navigation.field_overview_image.yml b/config/sync/field.field.node.guide_navigation.field_overview_image.yml new file mode 100644 index 00000000..c6ec8366 --- /dev/null +++ b/config/sync/field.field.node.guide_navigation.field_overview_image.yml @@ -0,0 +1,29 @@ +uuid: 00ee266f-d44e-402a-8765-f2b361281f43 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_overview_image + - media.type.image + - node.type.guide_navigation +id: node.guide_navigation.field_overview_image +field_name: field_overview_image +entity_type: node +bundle: guide_navigation +label: 'Overview Image' +description: 'Image to use in the header for all pages in this guide.' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:media' + handler_settings: + target_bundles: + image: image + sort: + field: _none + direction: ASC + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/config/sync/field.field.node.guide_navigation.field_parent_guide.yml b/config/sync/field.field.node.guide_navigation.field_parent_guide.yml deleted file mode 100644 index 0a4bc956..00000000 --- a/config/sync/field.field.node.guide_navigation.field_parent_guide.yml +++ /dev/null @@ -1,25 +0,0 @@ -uuid: 2e9e93c2-3d30-4a49-be9c-3124e243fda8 -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_parent_guide - - node.type.guide_navigation -id: node.guide_navigation.field_parent_guide -field_name: field_parent_guide -entity_type: node -bundle: guide_navigation -label: 'Parent Guide' -description: 'A guide that will be linked to in the header of all guides that use this guide navigation.' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - handler: views - handler_settings: - view: - view_name: parent_guide_nav_pages_ref - display_name: entity_reference_1 - arguments: { } -field_type: entity_reference diff --git a/config/sync/field.field.node.guide_navigation.field_show_read_time.yml b/config/sync/field.field.node.guide_navigation.field_show_read_time.yml deleted file mode 100644 index 69e5b68f..00000000 --- a/config/sync/field.field.node.guide_navigation.field_show_read_time.yml +++ /dev/null @@ -1,21 +0,0 @@ -uuid: d214ed7e-b3f9-43e7-be71-da1197e36d91 -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_show_read_time - - node.type.guide_navigation -id: node.guide_navigation.field_show_read_time -field_name: field_show_read_time -entity_type: node -bundle: guide_navigation -label: 'Show Read Time' -description: 'If selected, the average time to read the current guide will be created and shown.' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - on_label: 'Yes' - off_label: 'No' -field_type: boolean diff --git a/config/sync/field.field.node.guides.field_primary_image.yml b/config/sync/field.field.node.guides.field_primary_image.yml index b1a515d2..0b6c2542 100644 --- a/config/sync/field.field.node.guides.field_primary_image.yml +++ b/config/sync/field.field.node.guides.field_primary_image.yml @@ -11,7 +11,7 @@ field_name: field_primary_image entity_type: node bundle: guides label: 'Primary Image' -description: '' +description: 'Used for the image to use in social media previews. Header image is determined by the selected guide navigation.' required: false translatable: false default_value: { } diff --git a/config/sync/field.storage.media.field_caption.yml b/config/sync/field.storage.media.field_caption.yml new file mode 100644 index 00000000..1f8206ee --- /dev/null +++ b/config/sync/field.storage.media.field_caption.yml @@ -0,0 +1,20 @@ +uuid: 5e94fa92-a03e-4dbf-9e13-b2a7d68aad75 +langcode: en +status: true +dependencies: + module: + - media + - text +id: media.field_caption +field_name: field_caption +entity_type: media +type: text +settings: + max_length: 255 +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.media.field_credit.yml b/config/sync/field.storage.media.field_credit.yml new file mode 100644 index 00000000..48255164 --- /dev/null +++ b/config/sync/field.storage.media.field_credit.yml @@ -0,0 +1,21 @@ +uuid: b3434e09-4d75-4351-98a8-59d063ad81b0 +langcode: en +status: true +dependencies: + module: + - media +id: media.field_credit +field_name: field_credit +entity_type: media +type: string +settings: + max_length: 255 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_bottom_content.yml b/config/sync/field.storage.node.field_bottom_content.yml new file mode 100644 index 00000000..4dc57f6b --- /dev/null +++ b/config/sync/field.storage.node.field_bottom_content.yml @@ -0,0 +1,19 @@ +uuid: 5ca9a89f-2b67-44d3-adc6-8ea622e1f923 +langcode: en +status: true +dependencies: + module: + - node + - text +id: node.field_bottom_content +field_name: field_bottom_content +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/sync/field.storage.node.field_parent_guide.yml b/config/sync/field.storage.node.field_guides.yml similarity index 67% rename from config/sync/field.storage.node.field_parent_guide.yml rename to config/sync/field.storage.node.field_guides.yml index 6f784124..a88ca335 100644 --- a/config/sync/field.storage.node.field_parent_guide.yml +++ b/config/sync/field.storage.node.field_guides.yml @@ -1,18 +1,18 @@ -uuid: 71eab602-c462-4dec-95e7-2c7a234d9915 +uuid: 7f968f58-d14b-4bfc-b186-fa2c83dd2e5c langcode: en status: true dependencies: module: - node -id: node.field_parent_guide -field_name: field_parent_guide +id: node.field_guides +field_name: field_guides entity_type: node type: entity_reference settings: target_type: node module: core locked: false -cardinality: 1 +cardinality: -1 translatable: true indexes: { } persist_with_no_fields: false diff --git a/config/sync/field.storage.node.field_show_read_time.yml b/config/sync/field.storage.node.field_kicker_link.yml similarity index 60% rename from config/sync/field.storage.node.field_show_read_time.yml rename to config/sync/field.storage.node.field_kicker_link.yml index d41e0372..9d0477d8 100644 --- a/config/sync/field.storage.node.field_show_read_time.yml +++ b/config/sync/field.storage.node.field_kicker_link.yml @@ -1,15 +1,16 @@ -uuid: 9b0a6caa-e257-489e-9484-4b3ca7a71479 +uuid: 35d02eeb-4a70-47fe-9091-a6e34bafcc0b langcode: en status: true dependencies: module: + - link - node -id: node.field_show_read_time -field_name: field_show_read_time +id: node.field_kicker_link +field_name: field_kicker_link entity_type: node -type: boolean +type: link settings: { } -module: core +module: link locked: false cardinality: 1 translatable: true diff --git a/config/sync/field.storage.node.field_guide_start_page.yml b/config/sync/field.storage.node.field_overview_image.yml similarity index 63% rename from config/sync/field.storage.node.field_guide_start_page.yml rename to config/sync/field.storage.node.field_overview_image.yml index a152fb0e..41691ab5 100644 --- a/config/sync/field.storage.node.field_guide_start_page.yml +++ b/config/sync/field.storage.node.field_overview_image.yml @@ -1,15 +1,16 @@ -uuid: 018b471d-d699-4ad6-adac-e5e404c49ba9 +uuid: c0ca1c67-5252-4add-8fbf-32a0c7c76d5b langcode: en status: true dependencies: module: + - media - node -id: node.field_guide_start_page -field_name: field_guide_start_page +id: node.field_overview_image +field_name: field_overview_image entity_type: node type: entity_reference settings: - target_type: node + target_type: media module: core locked: false cardinality: 1 diff --git a/config/sync/node.type.guide_landing.yml b/config/sync/node.type.guide_landing.yml new file mode 100644 index 00000000..ffa583ca --- /dev/null +++ b/config/sync/node.type.guide_landing.yml @@ -0,0 +1,32 @@ +uuid: 4034988b-8bc5-43e7-a269-6ad7ba7b7663 +langcode: en +status: true +dependencies: + module: + - menu_ui + - scheduler +third_party_settings: + menu_ui: + available_menus: + - main + parent: 'main:' + scheduler: + expand_fieldset: when_required + fields_display_mode: vertical_tab + publish_enable: false + publish_past_date: error + publish_past_date_created: false + publish_required: false + publish_revision: false + publish_touch: false + show_message_after_update: true + unpublish_enable: false + unpublish_required: false + unpublish_revision: false +name: 'Guide Landing' +type: guide_landing +description: 'A single page that displays a list of related guides.' +help: null +new_revision: true +preview_mode: 1 +display_submitted: false diff --git a/config/sync/node.type.guide_navigation.yml b/config/sync/node.type.guide_navigation.yml index 5a081a56..c05676cc 100644 --- a/config/sync/node.type.guide_navigation.yml +++ b/config/sync/node.type.guide_navigation.yml @@ -24,7 +24,7 @@ third_party_settings: unpublish_revision: false name: 'Guide Navigation' type: guide_navigation -description: null +description: 'Configures navigation between all the pages in a single guide.' help: null new_revision: false preview_mode: 1 diff --git a/config/sync/rabbit_hole.behavior_settings.node_type_guide_landing.yml b/config/sync/rabbit_hole.behavior_settings.node_type_guide_landing.yml new file mode 100644 index 00000000..c4ba4f12 --- /dev/null +++ b/config/sync/rabbit_hole.behavior_settings.node_type_guide_landing.yml @@ -0,0 +1,14 @@ +uuid: fadfe00e-c36b-47d5-8605-2f7bc11e7040 +langcode: en +status: true +dependencies: + config: + - node.type.guide_landing +id: node_type_guide_landing +entity_type_id: node_type +entity_id: guide_landing +action: display_page +allow_override: 1 +redirect: '' +redirect_code: 301 +redirect_fallback_action: access_denied diff --git a/web/modules/custom/default_content_config/content/file/3e9b2949-7b29-4a99-b60b-5844af733b34.yml b/web/modules/custom/default_content_config/content/file/3e9b2949-7b29-4a99-b60b-5844af733b34.yml new file mode 100644 index 00000000..05690ee8 --- /dev/null +++ b/web/modules/custom/default_content_config/content/file/3e9b2949-7b29-4a99-b60b-5844af733b34.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: 3e9b2949-7b29-4a99-b60b-5844af733b34 + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: hcd-intro.png + uri: + - + value: 'public://2025-01/hcd-intro.png' + filemime: + - + value: image/png + filesize: + - + value: 33973 + status: + - + value: true + created: + - + value: 1736461047 diff --git a/web/modules/custom/default_content_config/content/file/afa47317-4ae3-4244-8009-8c970730b9cc.yml b/web/modules/custom/default_content_config/content/file/afa47317-4ae3-4244-8009-8c970730b9cc.yml new file mode 100644 index 00000000..eec63d30 --- /dev/null +++ b/web/modules/custom/default_content_config/content/file/afa47317-4ae3-4244-8009-8c970730b9cc.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: afa47317-4ae3-4244-8009-8c970730b9cc + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: hcd-discovery-operations.png + uri: + - + value: 'public://2025-01/hcd-discovery-operations.png' + filemime: + - + value: image/png + filesize: + - + value: 26024 + status: + - + value: true + created: + - + value: 1736369803 diff --git a/web/modules/custom/default_content_config/content/file/e528b902-79bd-44f2-a16f-3a26cdfbbfd4.yml b/web/modules/custom/default_content_config/content/file/e528b902-79bd-44f2-a16f-3a26cdfbbfd4.yml new file mode 100644 index 00000000..cddc2c13 --- /dev/null +++ b/web/modules/custom/default_content_config/content/file/e528b902-79bd-44f2-a16f-3a26cdfbbfd4.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: e528b902-79bd-44f2-a16f-3a26cdfbbfd4 + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: hcd-guide-landing-resized.jpg + uri: + - + value: 'public://2025-01/hcd-guide-landing-resized.jpg' + filemime: + - + value: image/jpeg + filesize: + - + value: 77359 + status: + - + value: true + created: + - + value: 1736458020 diff --git a/web/modules/custom/default_content_config/content/file/hcd-discovery-operations.png b/web/modules/custom/default_content_config/content/file/hcd-discovery-operations.png new file mode 100644 index 00000000..ffafdd60 Binary files /dev/null and b/web/modules/custom/default_content_config/content/file/hcd-discovery-operations.png differ diff --git a/web/modules/custom/default_content_config/content/file/hcd-guide-landing-resized.jpg b/web/modules/custom/default_content_config/content/file/hcd-guide-landing-resized.jpg new file mode 100644 index 00000000..f85e926f Binary files /dev/null and b/web/modules/custom/default_content_config/content/file/hcd-guide-landing-resized.jpg differ diff --git a/web/modules/custom/default_content_config/content/file/hcd-intro.png b/web/modules/custom/default_content_config/content/file/hcd-intro.png new file mode 100644 index 00000000..0b67e327 Binary files /dev/null and b/web/modules/custom/default_content_config/content/file/hcd-intro.png differ diff --git a/web/modules/custom/default_content_config/content/media/6b9a9ec8-50ea-47ba-8e58-ce2dee0edb8d.yml b/web/modules/custom/default_content_config/content/media/6b9a9ec8-50ea-47ba-8e58-ce2dee0edb8d.yml new file mode 100644 index 00000000..df3ab668 --- /dev/null +++ b/web/modules/custom/default_content_config/content/media/6b9a9ec8-50ea-47ba-8e58-ce2dee0edb8d.yml @@ -0,0 +1,33 @@ +_meta: + version: '1.0' + entity_type: media + uuid: 6b9a9ec8-50ea-47ba-8e58-ce2dee0edb8d + bundle: image + default_langcode: en + depends: + 3e9b2949-7b29-4a99-b60b-5844af733b34: file +default: + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: hcd-intro.png + created: + - + value: 1736461047 + path: + - + alias: '' + langcode: en + pathauto: 0 + field_media_image: + - + entity: 3e9b2949-7b29-4a99-b60b-5844af733b34 + alt: 'A creative design-development team is working on a project together' + title: '' + width: 1200 + height: 630 diff --git a/web/modules/custom/default_content_config/content/media/86452891-0ee7-49db-9753-b677f2522ee1.yml b/web/modules/custom/default_content_config/content/media/86452891-0ee7-49db-9753-b677f2522ee1.yml new file mode 100644 index 00000000..58602211 --- /dev/null +++ b/web/modules/custom/default_content_config/content/media/86452891-0ee7-49db-9753-b677f2522ee1.yml @@ -0,0 +1,36 @@ +_meta: + version: '1.0' + entity_type: media + uuid: 86452891-0ee7-49db-9753-b677f2522ee1 + bundle: image + default_langcode: en + depends: + afa47317-4ae3-4244-8009-8c970730b9cc: file +default: + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: hcd-discovery-operations.png + created: + - + value: 1736369803 + path: + - + alias: '' + langcode: en + pathauto: 0 + field_credit: + - + value: 'Miray Celebi Kaba/DigitalVision Vectors via Getty Images' + field_media_image: + - + entity: afa47317-4ae3-4244-8009-8c970730b9cc + alt: 'Illustration of a man taking a survey and a woman providing a testimonial' + title: '' + width: 1200 + height: 630 diff --git a/web/modules/custom/default_content_config/content/media/b2f35ae8-423f-428b-865d-e420313e7a81.yml b/web/modules/custom/default_content_config/content/media/b2f35ae8-423f-428b-865d-e420313e7a81.yml index abd85a58..4547eee4 100644 --- a/web/modules/custom/default_content_config/content/media/b2f35ae8-423f-428b-865d-e420313e7a81.yml +++ b/web/modules/custom/default_content_config/content/media/b2f35ae8-423f-428b-865d-e420313e7a81.yml @@ -24,6 +24,9 @@ default: alias: '' langcode: en pathauto: 0 + field_credit: + - + value: 'drogatnev/iStock via Getty Images' field_media_image: - entity: 8fa4c601-fddf-498f-a653-135ed1d8afa3 diff --git a/web/modules/custom/default_content_config/content/media/d54f480c-f28b-49c0-a1ef-7d0adf594af6.yml b/web/modules/custom/default_content_config/content/media/d54f480c-f28b-49c0-a1ef-7d0adf594af6.yml new file mode 100644 index 00000000..91a7a2cc --- /dev/null +++ b/web/modules/custom/default_content_config/content/media/d54f480c-f28b-49c0-a1ef-7d0adf594af6.yml @@ -0,0 +1,36 @@ +_meta: + version: '1.0' + entity_type: media + uuid: d54f480c-f28b-49c0-a1ef-7d0adf594af6 + bundle: image + default_langcode: en + depends: + e528b902-79bd-44f2-a16f-3a26cdfbbfd4: file +default: + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: hcd-guide-landing-resized.jpg + created: + - + value: 1736458020 + path: + - + alias: '' + langcode: en + pathauto: 0 + field_credit: + - + value: 'natrot/iStock via Getty Images' + field_media_image: + - + entity: e528b902-79bd-44f2-a16f-3a26cdfbbfd4 + alt: 'Abstract background of colorful pastel colors' + title: '' + width: 1200 + height: 605 diff --git a/web/modules/custom/default_content_config/content/node/1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b.yml b/web/modules/custom/default_content_config/content/node/1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b.yml new file mode 100644 index 00000000..3098aeec --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b.yml @@ -0,0 +1,128 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b + bundle: guide_navigation + default_langcode: en + depends: + baa67bf4-6fa9-40b4-bee3-a51ae80d6269: node + 46f8c803-fe12-458d-beee-d5e0818c5373: node + 66ee7eb5-f84e-40f3-8db9-98e034dc0b31: node + e4f2f38f-24e0-479e-9378-d93836307746: node + c9faf441-8dd2-47a5-bf96-eeb8571f0dc8: node + b743d576-35d5-47bf-9152-f9d59f783a3f: node + 7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72: node + 86452891-0ee7-49db-9753-b677f2522ee1: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Discovery Ops Navigation' + created: + - + value: 1736369848 + promote: + - + value: false + sticky: + - + value: false + path: + - + alias: '' + langcode: en + pathauto: 1 + field_guide_navigation: + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: b80b6823-8a3a-44a6-996c-1b019aa97d1c + bundle: guide_pages + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1736439271 + behavior_settings: + - + value: { } + field_guide_link: + - + entity: baa67bf4-6fa9-40b4-bee3-a51ae80d6269 + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: e2a3dca5-b06d-423b-82e9-d206896b4866 + bundle: guide_pages + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1736369915 + behavior_settings: + - + value: { } + field_guide_link: + - + entity: 46f8c803-fe12-458d-beee-d5e0818c5373 + field_guide_subnav: + - + entity: 66ee7eb5-f84e-40f3-8db9-98e034dc0b31 + - + entity: e4f2f38f-24e0-479e-9378-d93836307746 + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: a5baff65-8777-446e-ac90-89913662000d + bundle: guide_pages + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1736374021 + behavior_settings: + - + value: { } + field_guide_link: + - + entity: c9faf441-8dd2-47a5-bf96-eeb8571f0dc8 + field_guide_subnav: + - + entity: b743d576-35d5-47bf-9152-f9d59f783a3f + field_kicker_link: + - + target_uuid: 7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72 + title: 'HCD Guide Series' + options: { } + field_overview_image: + - + entity: 86452891-0ee7-49db-9753-b677f2522ee1 + field_show_in_page_nav: + - + value: true + field_show_next_previous: + - + value: true diff --git a/web/modules/custom/default_content_config/content/node/258cf431-4a0c-4489-807e-c87087c87cf9.yml b/web/modules/custom/default_content_config/content/node/33dfb1a8-84a2-4184-990b-b8e6e849e8ec.yml similarity index 55% rename from web/modules/custom/default_content_config/content/node/258cf431-4a0c-4489-807e-c87087c87cf9.yml rename to web/modules/custom/default_content_config/content/node/33dfb1a8-84a2-4184-990b-b8e6e849e8ec.yml index 514a0862..35d652c5 100644 --- a/web/modules/custom/default_content_config/content/node/258cf431-4a0c-4489-807e-c87087c87cf9.yml +++ b/web/modules/custom/default_content_config/content/node/33dfb1a8-84a2-4184-990b-b8e6e849e8ec.yml @@ -1,15 +1,15 @@ _meta: version: '1.0' entity_type: node - uuid: 258cf431-4a0c-4489-807e-c87087c87cf9 + uuid: 33dfb1a8-84a2-4184-990b-b8e6e849e8ec bundle: guide_navigation default_langcode: en depends: - 45a32394-3a9a-4481-a9bf-4701e39138ea: node - f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2: node - c4520a54-cd38-4be0-9158-24a61a79599e: node - b9c370f3-b204-4818-800d-660e366ebfea: node 91b1798f-4dec-49d6-bfee-38ed0a4f5e49: node + 446d9608-f2b8-463a-88b1-d6956adf0057: node + 4ac07eca-6b35-43b5-b9a4-b2df9ef82401: node + cc65a1b8-7380-41b2-a81e-45e9bfef56a1: node + cdc07606-1563-4772-9b45-11fa5d99c31a: media default: revision_uid: - @@ -22,10 +22,10 @@ default: target_id: 1 title: - - value: 'Test Guide Nav' + value: 'Web Analytics Guide Navigation' created: - - value: 1734120032 + value: 1736265416 promote: - value: false @@ -36,14 +36,14 @@ default: - alias: '' langcode: en - pathauto: 0 + pathauto: 1 field_guide_navigation: - entity: _meta: version: '1.0' entity_type: paragraph - uuid: 18b88ea3-c9ac-436e-ac79-79a33caea223 + uuid: a6d2f29c-3772-43ae-ba96-e6146c565721 bundle: guide_pages default_langcode: en default: @@ -52,19 +52,19 @@ default: value: true created: - - value: 1734120046 + value: 1736460786 behavior_settings: - value: { } field_guide_link: - - entity: 45a32394-3a9a-4481-a9bf-4701e39138ea + entity: 91b1798f-4dec-49d6-bfee-38ed0a4f5e49 - entity: _meta: version: '1.0' entity_type: paragraph - uuid: 21048a0c-5ff8-43c6-87cd-8fe32802938c + uuid: d37033be-1e3f-4bdf-bced-aebd7caec74f bundle: guide_pages default_langcode: en default: @@ -73,19 +73,19 @@ default: value: true created: - - value: 1734120046 + value: 1736265459 behavior_settings: - value: { } field_guide_link: - - entity: f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2 + entity: 446d9608-f2b8-463a-88b1-d6956adf0057 - entity: _meta: version: '1.0' entity_type: paragraph - uuid: ec229ab5-d55b-4f98-a2b1-ad5a31d63c33 + uuid: c6d61cbf-529b-4d8c-a86b-3e320c669be7 bundle: guide_pages default_langcode: en default: @@ -94,28 +94,40 @@ default: value: true created: - - value: 1734120051 + value: 1736268898 behavior_settings: - value: { } field_guide_link: - - entity: c4520a54-cd38-4be0-9158-24a61a79599e - field_guide_subnav: - - - entity: b9c370f3-b204-4818-800d-660e366ebfea - field_guide_start_page: + entity: 4ac07eca-6b35-43b5-b9a4-b2df9ef82401 - - entity: 91b1798f-4dec-49d6-bfee-38ed0a4f5e49 - field_parent_guide: + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: 24f6de3e-fd1d-4b91-9c41-b0d0704cf4aa + bundle: guide_pages + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1736269307 + behavior_settings: + - + value: { } + field_guide_link: + - + entity: cc65a1b8-7380-41b2-a81e-45e9bfef56a1 + field_overview_image: - - entity: c4520a54-cd38-4be0-9158-24a61a79599e + entity: cdc07606-1563-4772-9b45-11fa5d99c31a field_show_in_page_nav: - - value: true + value: false field_show_next_previous: - value: true - field_show_read_time: - - - value: true diff --git a/web/modules/custom/default_content_config/content/node/3f52ae83-6d5c-409f-adb5-c538c2237612.yml b/web/modules/custom/default_content_config/content/node/3f52ae83-6d5c-409f-adb5-c538c2237612.yml new file mode 100644 index 00000000..6563264a --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/3f52ae83-6d5c-409f-adb5-c538c2237612.yml @@ -0,0 +1,67 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 3f52ae83-6d5c-409f-adb5-c538c2237612 + bundle: guide_navigation + default_langcode: en + depends: + b9c370f3-b204-4818-800d-660e366ebfea: node + d5b7c563-4023-4c09-b3b9-27c5d009ec37: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Site Scanning Program Navigation' + created: + - + value: 1736284291 + promote: + - + value: false + sticky: + - + value: false + path: + - + alias: '' + langcode: en + pathauto: 1 + field_guide_navigation: + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: 2b13f590-df2e-4057-9bf7-73463fc72fe3 + bundle: guide_pages + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1736284314 + behavior_settings: + - + value: { } + field_guide_link: + - + entity: b9c370f3-b204-4818-800d-660e366ebfea + field_overview_image: + - + entity: d5b7c563-4023-4c09-b3b9-27c5d009ec37 + field_show_in_page_nav: + - + value: false + field_show_next_previous: + - + value: true diff --git a/web/modules/custom/default_content_config/content/node/446d9608-f2b8-463a-88b1-d6956adf0057.yml b/web/modules/custom/default_content_config/content/node/446d9608-f2b8-463a-88b1-d6956adf0057.yml new file mode 100644 index 00000000..edd8562e --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/446d9608-f2b8-463a-88b1-d6956adf0057.yml @@ -0,0 +1,69 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 446d9608-f2b8-463a-88b1-d6956adf0057 + bundle: guides + default_langcode: en + depends: + 33dfb1a8-84a2-4184-990b-b8e6e849e8ec: node + cdc07606-1563-4772-9b45-11fa5d99c31a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Create a foundation' + created: + - + value: 1736268583 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/web-analytics-playbook/create-a-foundation-for-your-strategy + langcode: en + pathauto: 0 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<p>Build a solid foundation for your team by defining your website mission, goals, and key performance indicators (KPIs). Then your team can focus on reporting that matters. Don’t rely on pageviews alone; shift your team’s analytics framework to discover rich and meaningful insights that make a difference.</p><p><strong>Checklist:</strong></p><ul><li>Meet with your stakeholders and website management team to discuss the site’s overarching purpose</li><li>Define your target audience(s)</li><li>Define online objectives for your target audience(s)</li><li>Determine which goals your analytics tool can measure</li><li>Create KPIs</li></ul><p><strong>Key Questions:</strong></p><ul><li>Who are our users?</li><li>What are the most important things for our users to achieve?</li><li>How does our site contribute to the organizational mission?</li><li>Which KPIs would denote success at-a-glance?</li><li>Can we capture those KPIs with our tool?</li><li>How can we capture other important metrics?</li><li>What can’t this tool tell us?<br> </li></ul>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 33dfb1a8-84a2-4184-990b-b8e6e849e8ec + field_guide_nav_title: + - + value: Build + field_primary_image: + - + entity: cdc07606-1563-4772-9b45-11fa5d99c31a + field_summary: + - + value: '<p>Before starting, be sure to define your mission, goals, and key performance indicators.</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/44a761c7-41e3-4657-99bc-7248846cd073.yml b/web/modules/custom/default_content_config/content/node/44a761c7-41e3-4657-99bc-7248846cd073.yml new file mode 100644 index 00000000..ffc6db48 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/44a761c7-41e3-4657-99bc-7248846cd073.yml @@ -0,0 +1,73 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 44a761c7-41e3-4657-99bc-7248846cd073 + bundle: guide_navigation + default_langcode: en + depends: + 62fdaf72-5449-4312-a82e-b87b9b406f36: node + 7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72: node + 6b9a9ec8-50ea-47ba-8e58-ce2dee0edb8d: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'HCD Introduction Navigation' + created: + - + value: 1736461014 + promote: + - + value: false + sticky: + - + value: false + path: + - + alias: '' + langcode: en + pathauto: 0 + field_guide_navigation: + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: 53374c24-9ef6-4a91-bea9-1fae9ba2530d + bundle: guide_pages + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1736461023 + behavior_settings: + - + value: { } + field_guide_link: + - + entity: 62fdaf72-5449-4312-a82e-b87b9b406f36 + field_kicker_link: + - + target_uuid: 7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72 + title: 'HCD Guide Series' + options: { } + field_overview_image: + - + entity: 6b9a9ec8-50ea-47ba-8e58-ce2dee0edb8d + field_show_in_page_nav: + - + value: false + field_show_next_previous: + - + value: true diff --git a/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml b/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml index 743f2884..b3ad947a 100644 --- a/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml +++ b/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml @@ -5,8 +5,6 @@ _meta: bundle: guides default_langcode: en depends: - c2eb37c0-02a5-4a36-90bc-a7039449b61b: media - 258cf431-4a0c-4489-807e-c87087c87cf9: node 1e945b0b-bcf5-4df7-9105-6c222eb70c13: media default: revision_uid: @@ -47,12 +45,9 @@ default: - value: '<p>A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow</p>' format: single_inline_html - field_featured_image: - - - entity: c2eb37c0-02a5-4a36-90bc-a7039449b61b field_guide_nav_ref: - - entity: 258cf431-4a0c-4489-807e-c87087c87cf9 + target_id: 75 field_guide_nav_title: - value: 'GUIDE-all fields (Overriden)' diff --git a/web/modules/custom/default_content_config/content/node/46f8c803-fe12-458d-beee-d5e0818c5373.yml b/web/modules/custom/default_content_config/content/node/46f8c803-fe12-458d-beee-d5e0818c5373.yml new file mode 100644 index 00000000..d129a136 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/46f8c803-fe12-458d-beee-d5e0818c5373.yml @@ -0,0 +1,66 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 46f8c803-fe12-458d-beee-d5e0818c5373 + bundle: guides + default_langcode: en + depends: + 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b: node + 86452891-0ee7-49db-9753-b677f2522ee1: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: Framing + created: + - + value: 1736369956 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/framing + langcode: en + pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<p>Our frame of reference largely defines our idea of what is possible. For this reason, creating new solutions and contributing value to systems and organizations often means reframing our perceptions. Narrow thinking limits our ability to generate forward-thinking solutions. Framing and reframing helps us see more options.</p><p>Framing isn’t relevant only in design; it’s a critical sensibility that you can apply across your life. For example, puns are reframes of a word or phrase: the author takes the expected meaning of a word and changes the context to create a comedic effect. As in, “Thanks for explaining the word “many” to me, it means a lot.” More seriously, in recent years the healthcare industry has reframed medical treatment to include prevention as well as intervention. Medical providers used to define care narrowly as a reaction to a specific event. Now, they define healthcare to include both prevention and treatment. An example of this is not only resetting a broken arm in an elderly patient, but also working to prevent osteoporosis so the arm won’t break in the first place.</p><p>The following sections will help you step through constructing a frame that is wide enough to create new solutions, but narrow enough to be realistic about constraints such as skills, personnel, time, and budget. As a rule of thumb, a narrow frame produces more thorough work, while a larger frame might be harder to produce or implement.</p><h2>Framing checklist</h2><p>Use this checklist as you move through this section to ensure you’re set up for success in the framing phase.</p><div style="margin-left:20px;"><input type="checkbox"> Read the <a href="{{< ref " guides="" hcd="" discovery-concepts="">}}"> Plan your project</a> section of the HCD Discovery Concepts Guide. <br><input type="checkbox"> Identify your project leads, and leadership stakeholders. <br><input type="checkbox"> Hold detailed conversations with stakeholders to understand the problem they would like to research. <br><input type="checkbox"> Produce a problem frame statement based on your stakeholder conversations. <br><input type="checkbox"> Get confirmation from leadership and/or stakeholders that your problem frame statement accurately reflects the research goal. <br><input type="checkbox"> Investigate prior research in this area through traditional journals and publications (desk research). <br><input type="checkbox"> Determine the project scale / scope, based on your problem frame statement and research. <br> </div>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b + field_primary_image: + - + entity: 86452891-0ee7-49db-9753-b677f2522ee1 + field_summary: + - + value: '<p>How to define and redefine your frame of reference</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/4ac07eca-6b35-43b5-b9a4-b2df9ef82401.yml b/web/modules/custom/default_content_config/content/node/4ac07eca-6b35-43b5-b9a4-b2df9ef82401.yml new file mode 100644 index 00000000..0df121ef --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/4ac07eca-6b35-43b5-b9a4-b2df9ef82401.yml @@ -0,0 +1,69 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 4ac07eca-6b35-43b5-b9a4-b2df9ef82401 + bundle: guides + default_langcode: en + depends: + 33dfb1a8-84a2-4184-990b-b8e6e849e8ec: node + cdc07606-1563-4772-9b45-11fa5d99c31a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Commit to action' + created: + - + value: 1736269013 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/web-analytics-playbook/commit-to-action + langcode: en + pathauto: 0 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<p>Once you have your strategy, set forth processes to improve your website based on what you find. Many organizations generate reports, but fail to act on the data. Web analytics tools have a reputation for use in advertising or maximizing sales, but most government sites aren’t e-commerce driven. Therefore, use the insights you draw from your analytics tool to structure content, reduce repetition, prioritize work, streamline outreach, improve user experience (UX), etc. Your team may need to coordinate with developer, design, content, and social media teams.</p><p><strong>Checklist:</strong></p><ul><li>Talk with senior leadership about basing action plans on data</li><li>Test and measure improvements (<a href="/node/43" data-entity-type="node" data-entity-uuid="91b1798f-4dec-49d6-bfee-38ed0a4f5e49" data-entity-substitution="canonical">A/B testing</a>)</li><li>Practice storytelling to translate data for leadership (visualization tools)</li></ul><p><strong>Key Questions:</strong></p><ul><li>What do these data tell me about our users?</li><li>What can we do to improve the experience for our target audience(s)?</li><li>What other tools can we use to help us?</li><li>How do we know if our efforts are worthwhile?</li><li>What new internal communication channels can we use to assist us?</li></ul>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 33dfb1a8-84a2-4184-990b-b8e6e849e8ec + field_guide_nav_title: + - + value: Commit + field_primary_image: + - + entity: cdc07606-1563-4772-9b45-11fa5d99c31a + field_summary: + - + value: '<p>Create actionable plans based on data to ensure success.</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/62fdaf72-5449-4312-a82e-b87b9b406f36.yml b/web/modules/custom/default_content_config/content/node/62fdaf72-5449-4312-a82e-b87b9b406f36.yml index 05b0f7ee..5b523563 100644 --- a/web/modules/custom/default_content_config/content/node/62fdaf72-5449-4312-a82e-b87b9b406f36.yml +++ b/web/modules/custom/default_content_config/content/node/62fdaf72-5449-4312-a82e-b87b9b406f36.yml @@ -5,6 +5,7 @@ _meta: bundle: guides default_langcode: en depends: + 44a761c7-41e3-4657-99bc-7248846cd073: node b2f35ae8-423f-428b-865d-e420313e7a81: media default: revision_uid: @@ -36,6 +37,15 @@ default: alias: /guides/introduction-human-centered-design langcode: en pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default body: - value: '<p>Human-centered design (HCD) is a qualitative research method that helps groups solve problems and seek solutions that prioritize customer needs over a system’s needs. It’s also a design and management framework to develop solutions to problems by involving the human perspective in all steps of the problem-solving process. HCD involves four phases of sequential work: discovery, design, delivery, and measurement. HCD is also cyclical. Once a design solution is launched, you should measure its effectiveness against initial and intended aims, and continually tweak it to improve the solution over time. HCD recognizes that people and their needs are dynamic and changing, and so solutions must also adapt to changing needs.</p>' @@ -48,6 +58,9 @@ default: field_glossary: - target_id: hcd_glossary + field_guide_nav_ref: + - + entity: 44a761c7-41e3-4657-99bc-7248846cd073 field_guide_weight: - value: 5 diff --git a/web/modules/custom/default_content_config/content/node/66ee7eb5-f84e-40f3-8db9-98e034dc0b31.yml b/web/modules/custom/default_content_config/content/node/66ee7eb5-f84e-40f3-8db9-98e034dc0b31.yml new file mode 100644 index 00000000..68b3bff7 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/66ee7eb5-f84e-40f3-8db9-98e034dc0b31.yml @@ -0,0 +1,66 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 66ee7eb5-f84e-40f3-8db9-98e034dc0b31 + bundle: guides + default_langcode: en + depends: + 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b: node + 86452891-0ee7-49db-9753-b677f2522ee1: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Desk research' + created: + - + value: 1736370213 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/desk-research + langcode: en + pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<h2 id="start-with-what-s-there">Start with what’s there</h2><p>Where to start is one of the hardest questions to answer when researching a problem. Depending on the type of project, you’ll need to look into a variety of research types to learn what’s been done before. Understanding past research will help you to focus on where you can do new research, and how best to frame that research.</p><p>This process is known as benchmarking. Essentially, it means doing traditional desk-based research to find out what others have discovered in the field you’re investigating. You should also look for research that supports, or does not support, items that you might already know, or think you know, about the subject.</p><p>This process both informs and gives direction to your work. If you know where others have been, you can build off of their work, and contribute to the overall knowledge in this topic through your original research.</p><ul><li><strong>Academic Research</strong> can help you uncover what people have already done in your topic area. Use search engines like Google Scholar or Academia.edu, and publications like the Harvard Business Review, the Stanford Social Innovation Review, and the MIT Technology Review to find projects related to your subject. Read the abstracts of articles that sound interesting, then check those papers’ bibliographies to find additional articles and works.</li><li><strong>Statistical Research</strong> can help you properly frame your area of interest. For example, historical statistics will allow you to understand whether your problem frame should widen out or focus in. Always evaluate the source of your data to maintain data hygiene and fidelity.<ul><li><em>Data hygiene</em> refers to the quality of the data collection and interpretation.</li><li><em>Data fidelity</em> refers to the precision with which the data has been recorded. If the data collection or interpretation is illogical or messy, move on and find better data on which to base your work.</li></ul></li><li><strong>Internal-to-Organization Research</strong> is helpful if your project relates to a program or set of programs already underway in your organization. Look at those programs to see what’s already being done. Talk to the program leaders, review their documents, and, if possible, observe them working in the field. This process will help you frame your approach to avoid duplication of work, and increase your contribution to work already in process.</li><li><strong>External-to-Organization Research</strong> means seeking out and studying existing programs outside of your organization. Look across all sectors: private, non-profit, academic, or other government organizations. Learning what others are developing will help you frame your project in a way that builds on this work. As you notify others of your work, you will also contribute to the community of knowledge on your subject.</li></ul><h2 id="organize-your-research">Organize your research</h2><p>Always properly cite and document desk research sources. Follow the examples below; either print them, or take a screenshot and mark them up digitally.</p><p>Keep all your citations organized and together. Keeping track of research sources means you can quickly and easily find content that you would like to reference or cite in a final report or communication.</p>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b + field_primary_image: + - + entity: 86452891-0ee7-49db-9753-b677f2522ee1 + field_summary: + - + value: '<p>Knowing what others have already discovered means you can contribute new, original thought to an existing knowledge base.</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72.yml b/web/modules/custom/default_content_config/content/node/7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72.yml new file mode 100644 index 00000000..d966f641 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72.yml @@ -0,0 +1,70 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 7ed0eb3a-0a1e-4626-b8f0-8394b19a8f72 + bundle: guide_landing + default_langcode: en + depends: + 62fdaf72-5449-4312-a82e-b87b9b406f36: node + baa67bf4-6fa9-40b4-bee3-a51ae80d6269: node + d54f480c-f28b-49c0-a1ef-7d0adf594af6: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Human-Centered Design Guide Series' + created: + - + value: 1736454603 + promote: + - + value: false + sticky: + - + value: false + path: + - + alias: /guides/hcd + langcode: en + pathauto: 0 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<h1 id="welcome">Welcome!</h1><p>The Human-Centered Design (HCD) Guides are intended to enhance the understanding and practice of human-centered design throughout the federal government. In this guide series, we will explore the four phases of HCD work: <strong>discovery, design, delivery,</strong> and <strong>measurement</strong>.</p><p>You can think of the HCD Guides like a travel series through design. In the same way you can collect travel guides to Kyoto and Tokyo and Nagasaki instead of a single, lengthy all-Japan travel guide, our HCD Guide series provides two volumes for each phase of the HCD process: a concept guide, focusing on why the phase works the way it does, and an operations guide with checklists and frameworks to help with the how of the phase.</p><p><strong>Ready to get started? Check out the guides below!</strong></p>' + format: html + summary: '' + field_bottom_content: + - + value: '<article class="dg-ring" aria-labelledby="add-res"><h2 class="dg-ring__title" id="add-res">Additional Resources</h2><p>If you encounter unfamiliar words or concepts in these guides, you can find definitions and explanations in the <button class="dg-glossary__toggle">glossary</button></p><p>You may also wish to review these additional research methods:</p><ul><li><a href="https://methods.18f.gov/">18F Methods</a></li><li>NYC Civic Service Design Group <a href="https://www1.nyc.gov/assets/servicedesign/">Tools & Tactics</a></li><li>UK Design Group <a href="https://www.designcouncil.org.uk/resources/search">Case Studies</a></li><li>The Book Apart Series, specifically <a href="https://abookapart.com/products/design-for-real-life">Design for Real Life</a> by Eric Meyer & Sara Wachter-Boettcher</li></ul></article>' + format: html + field_glossary: + - + target_id: hcd_glossary + field_guides: + - + entity: 62fdaf72-5449-4312-a82e-b87b9b406f36 + - + entity: baa67bf4-6fa9-40b4-bee3-a51ae80d6269 + field_primary_image: + - + entity: d54f480c-f28b-49c0-a1ef-7d0adf594af6 + field_summary: + - + value: '<p>A series of guides to help you understand and practice human-centered design.</p>' + format: single_inline_html diff --git a/web/modules/custom/default_content_config/content/node/91b1798f-4dec-49d6-bfee-38ed0a4f5e49.yml b/web/modules/custom/default_content_config/content/node/91b1798f-4dec-49d6-bfee-38ed0a4f5e49.yml index 3c0ff00c..b2fc7035 100644 --- a/web/modules/custom/default_content_config/content/node/91b1798f-4dec-49d6-bfee-38ed0a4f5e49.yml +++ b/web/modules/custom/default_content_config/content/node/91b1798f-4dec-49d6-bfee-38ed0a4f5e49.yml @@ -5,8 +5,8 @@ _meta: bundle: guides default_langcode: en depends: + 33dfb1a8-84a2-4184-990b-b8e6e849e8ec: node cdc07606-1563-4772-9b45-11fa5d99c31a: media - 258cf431-4a0c-4489-807e-c87087c87cf9: node default: revision_uid: - @@ -37,24 +37,27 @@ default: alias: /guides/web-analytics-playbook langcode: en pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default body: - - value: '<p>Federal websites vary greatly in content and purpose, but they all share a common objective: to deliver information or services to the public in an efficient, easy, and accessible way.</p><p>Web analytics tools play an integral role in pursuit of that goal. However, if the tool is implemented improperly or the data it collects are analyzed incorrectly, it can derail delivering information or services to the public.</p><p>Use these plays to help strategize how your team can most effectively use web analytics for your website and target audience.</p><p>1. [Create a foundation for your strategy]({{< ref "create-a-foundation-for-your-strategy" >}})</p><p>2. [Commit to action]({{< ref "commit-to-action" >}})</p><p>3. [Implement wisely]({{< ref "implement-wisely" >}})</p><p>4. [Configure your tool’s settings carefully]({{< ref "configure-your-tools-settings-carefully" >}})</p><p>5. [Know what you’re looking for]({{< ref "know-what-youre-looking-for" >}})</p><p>6. [Democratize the data]({{< ref "democratize-the-data" >}})</p><p>7. [Invest in training and support]({{< ref "invest-in-training-and-support" >}})</p><p>8. [Do it continuously]({{< ref "do-it-continuously" >}})</p>' + value: '<p>Federal websites vary greatly in content and purpose, but they all share a common objective: to deliver information or services to the public in an efficient, easy, and accessible way.</p><p>Web analytics tools play an integral role in pursuit of that goal. However, if the tool is implemented improperly or the data it collects are analyzed incorrectly, it can derail delivering information or services to the public.</p><p>Use these plays to help strategize how your team can most effectively use web analytics for your website and target audience.</p><p>1. <a href="/node/76" data-entity-type="node" data-entity-uuid="446d9608-f2b8-463a-88b1-d6956adf0057" data-entity-substitution="canonical">Create a foundation for your strategy</a></p><p>2. <a href="/node/77" data-entity-type="node" data-entity-uuid="4ac07eca-6b35-43b5-b9a4-b2df9ef82401" data-entity-substitution="canonical">Commit to action</a></p><p>3. <a href="/node/78" data-entity-type="node" data-entity-uuid="cc65a1b8-7380-41b2-a81e-45e9bfef56a1" data-entity-substitution="canonical">Implement wisely</a></p><p>4. [Configure your tool’s settings carefully]({{< ref "configure-your-tools-settings-carefully" >}})</p><p>5. [Know what you’re looking for]({{< ref "know-what-youre-looking-for" >}})</p><p>6. [Democratize the data]({{< ref "democratize-the-data" >}})</p><p>7. [Invest in training and support]({{< ref "invest-in-training-and-support" >}})</p><p>8. [Do it continuously]({{< ref "do-it-continuously" >}})</p>' format: html summary: '' field_deck: - value: '<p>Use web analytics to reach your strategic website goals</p>' format: single_inline_html - field_featured_image: - - - entity: cdc07606-1563-4772-9b45-11fa5d99c31a - field_glossary: - - - target_id: hcd_glossary field_guide_nav_ref: - - entity: 258cf431-4a0c-4489-807e-c87087c87cf9 + entity: 33dfb1a8-84a2-4184-990b-b8e6e849e8ec field_guide_weight: - value: 1 diff --git a/web/modules/custom/default_content_config/content/node/95943ed2-cda0-4f06-bfb4-f736417a59bf.yml b/web/modules/custom/default_content_config/content/node/95943ed2-cda0-4f06-bfb4-f736417a59bf.yml new file mode 100644 index 00000000..c0bc724f --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/95943ed2-cda0-4f06-bfb4-f736417a59bf.yml @@ -0,0 +1,67 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 95943ed2-cda0-4f06-bfb4-f736417a59bf + bundle: guide_navigation + default_langcode: en + depends: + c4520a54-cd38-4be0-9158-24a61a79599e: node + b2f35ae8-423f-428b-865d-e420313e7a81: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'DAP Navigation' + created: + - + value: 1736283450 + promote: + - + value: false + sticky: + - + value: false + path: + - + alias: '' + langcode: en + pathauto: 1 + field_guide_navigation: + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: 3023c643-bed1-4eaf-9e4d-116bd944d96f + bundle: guide_pages + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1736460574 + behavior_settings: + - + value: { } + field_guide_link: + - + entity: c4520a54-cd38-4be0-9158-24a61a79599e + field_overview_image: + - + entity: b2f35ae8-423f-428b-865d-e420313e7a81 + field_show_in_page_nav: + - + value: false + field_show_next_previous: + - + value: true diff --git a/web/modules/custom/default_content_config/content/node/b743d576-35d5-47bf-9152-f9d59f783a3f.yml b/web/modules/custom/default_content_config/content/node/b743d576-35d5-47bf-9152-f9d59f783a3f.yml new file mode 100644 index 00000000..afff2472 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/b743d576-35d5-47bf-9152-f9d59f783a3f.yml @@ -0,0 +1,62 @@ +_meta: + version: '1.0' + entity_type: node + uuid: b743d576-35d5-47bf-9152-f9d59f783a3f + bundle: guides + default_langcode: en + depends: + 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b: node +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Roles and responsibilities' + created: + - + value: 1736374102 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/roles-and-responsibilities + langcode: en + pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<h2 id="project-lead">Project Lead</h2><p>Must be HCD-trained and have experience leading HCD projects. For large-scale projects with multiple research teams, this person should have management training as well. Responsibilities include:</p><ul><li>Liaise and communicate with leadership and stakeholders, and relay communications back to the team.</li><li>Lead interviews and/or observations.</li><li>Guide post-interview downloading sessions, daily and weekly synthesis work.</li><li>Lead team through exercises to find insights and opportunities, and communicate results to leadership.</li><li>Ensure that all benchmarking, research, interview notes and photographs, deliverables, and recommendations are organized in an approved location.</li></ul><p><strong>Notes</strong>: On a large project, there may be more than one lead due to specialty knowledge or geographic location. In these cases, the leads are responsible for organizing themselves into a functional unit that can communicate with each other fluidly, consistently communicate to the team and stakeholders, and flex around changes in the project.</p><h2 id="researcher">Researcher</h2><p>Must be HCD trained, or an HCD-trained team member must directly oversee their work. Responsibilities include:</p><ul><li>Select research strategies.</li><li>Lead interviews and/or observations.</li><li>Lead or actively participate in daily, and weekly synthesis sessions.</li></ul><p><strong>Notes</strong>: All core team members should act as researchers. On any project, researchers may wear multiple hats, including recruiting, logistics, conducting interviews, or note-taking.</p><p><strong>Note-taking includes:</strong></p><ul><li>Observing the area & interview subject and documenting interesting things.</li><li>Transcribing notes into digital format.</li><li>Filing notes, photos, and other documentation in the project folder.</li></ul><h2 id="recruiter">Recruiter</h2><p>Responsibilities include:</p><ul><li>Manage and follow up with potential participants and sources of participants.</li><li>Present participant options to the team, noting possible times for research sessions.</li><li>Work with the Logistics Coordinator to book time for interviews, site visits, team travel, and time and sites for synthesis sessions.</li></ul><p><strong>Notes</strong>: This person needs to be outgoing in personality and meticulous in detail. They will need to be comfortable making cold calls and following up with people multiple times.</p><h2 id="logistics-coordinator">Logistics Coordinator</h2><p>Responsibilities include:</p><ul><li>Own the calendar, and gather and record all calendar updates as other team members report schedule changes to interviews, travel, etc.</li><li>Choose a hotel for the team to stay when traveling, including securing space for weekly synthesis sessions.</li><li>Identify transportation options for the team.</li><li>Plan for and coordinate the printing of consent forms and any other required documents for field work.</li><li>Purchase supplies and tools needed before travel.</li><li>Ensure that all team(s) have required supplies.</li></ul><h2 id="local-contact">Local Contact</h2><p>Can be a geographic local contact, a subject matter local contact, or the representative of a local group. Responsibilities include:</p><ul><li>Work with the recruiter to find the local people whose work or community position can best inform the research project frame.</li><li>Help the recruiter gather references.</li><li>Track down local leads when the recruiter cannot.</li><li>Scout and secure synthesis sites that make sense in terms of size of the team, necessary all-day privacy, and distance from team members’ residences or hotels.</li><li>Conduct pre-visit observation (recon) to evaluate interview location options and set time for on-site briefings.</li><li>Coordinate with unions and other required parties prior to site visit.</li><li>Communicate any needs from local power structures, such as local leadership, unions, or bureaucracies, to the Project Lead before the team assembles on site.</li></ul>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b + field_summary: + - + value: '<p>These are general descriptions of each team members’ responsibilities. Treat these as guidelines, not absolutes.</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/b9c370f3-b204-4818-800d-660e366ebfea.yml b/web/modules/custom/default_content_config/content/node/b9c370f3-b204-4818-800d-660e366ebfea.yml index de903952..d4529e89 100644 --- a/web/modules/custom/default_content_config/content/node/b9c370f3-b204-4818-800d-660e366ebfea.yml +++ b/web/modules/custom/default_content_config/content/node/b9c370f3-b204-4818-800d-660e366ebfea.yml @@ -5,7 +5,7 @@ _meta: bundle: guides default_langcode: en depends: - 258cf431-4a0c-4489-807e-c87087c87cf9: node + 3f52ae83-6d5c-409f-adb5-c538c2237612: node d5b7c563-4023-4c09-b3b9-27c5d009ec37: media 58b5051e-356e-4ace-be42-ca090259d6ab: node default: @@ -38,6 +38,15 @@ default: alias: /guides/site-scanning langcode: en pathauto: 0 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default body: - value: '<p><strong>The Site Scanning program</strong> automates a wide range of scans of public federal websites and generates data about website health, policy compliance, and best practices.</p><p>The program is a shared service provided at no cost for federal agencies and the public to use. At its core is the Federal Website Index, a reference dataset listing all public federal .gov sites by agency/department. Daily scans generate over 1.5 million fields of data about 26,000 federal .gov websites, made publicly available via API and bulk download.</p><p><strong>We scan federal domains for:</strong></p><ul><li>The presence of agency websites and subdomains</li><li>Digital Analytics Program participation</li><li>Use of the US Web Design System</li><li>Search engine optimization</li><li>Third party services</li><li>IPv6 compliance</li><li>Other best practices</li></ul><h2>Access the data directly</h2><p>All scan data can be downloaded directly as a <a href="data/">CSV or JSON file</a> or accessed through the <a href="https://open.gsa.gov/api/site-scanning-api/">Site Scanning API</a>.</p><h2>Learn more about the program, the scans, and the underlying data</h2><p>Much deeper program detail can be found in the program''s <a href="https://github.com/gsa/site-scanning-documentation">documentation hub</a>. The major sections include:</p><ul><li><a href="https://github.com/gsa/site-scanning-documentation#about">About the program</a></li><li><a href="https://github.com/gsa/site-scanning-documentation#understanding-the-data">Understanding the data</a></li><li><a href="https://github.com/gsa/site-scanning-documentation#program-management">Program management</a></li></ul><p>The creation of the underlying website index is explained in the separate <a href="https://github.com/GSA/federal-website-index">Federal Website Index repository</a>. It includes links to the original datasets, as well as descriptions of how they are assembled and filtered in order to create the list of URLs that are then scanned.</p><h2>Contact the Site Scanning team</h2><p><strong>Questions?</strong> Email the Site Scanning team at <a href="mailto:site-scanning@gsa.gov">site-scanning@gsa.gov</a>.</p>' @@ -49,7 +58,7 @@ default: format: single_inline_html field_guide_nav_ref: - - entity: 258cf431-4a0c-4489-807e-c87087c87cf9 + entity: 3f52ae83-6d5c-409f-adb5-c538c2237612 field_guide_weight: - value: 3 @@ -65,7 +74,7 @@ default: format: single_inline_html field_summary_box: - - value: true + value: false field_topics: - entity: 58b5051e-356e-4ace-be42-ca090259d6ab diff --git a/web/modules/custom/default_content_config/content/node/baa67bf4-6fa9-40b4-bee3-a51ae80d6269.yml b/web/modules/custom/default_content_config/content/node/baa67bf4-6fa9-40b4-bee3-a51ae80d6269.yml new file mode 100644 index 00000000..381c537d --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/baa67bf4-6fa9-40b4-bee3-a51ae80d6269.yml @@ -0,0 +1,73 @@ +_meta: + version: '1.0' + entity_type: node + uuid: baa67bf4-6fa9-40b4-bee3-a51ae80d6269 + bundle: guides + default_langcode: en + depends: + 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b: node + 86452891-0ee7-49db-9753-b677f2522ee1: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Discover operations guide' + created: + - + value: 1736369533 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/discover-operations-guide + langcode: en + pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<h2>What is human-centered design?</h2><p>Human-centered design (HCD) is a qualitative research method that helps groups solve problems and seek solutions that prioritize customer needs over a system’s needs.</p><p>HCD involves four phases of sequential work: discovery, design, delivery, and measurement. This guide explains the “how-to” behind a successful discovery cycle. It provides step-by-step instruction on the concepts outlined in the [HCD Discovery Concepts Guide]({{< ref "/guides/hcd/discovery-concepts/_index.md" >}}), including how to:</p><ul><li>Understand the practical scale of your project</li><li>Identify the teammates and roles required</li><li>Prepare for and conduct research</li><li>Keep good records of your data</li><li>Synthesize findings as a team, and</li><li>Communicate your findings.</li></ul><p>You can review this [introduction to human-centered design (HCD)]({{< ref "/guides/hcd/introduction/_index.md" >}}) to learn more about HCD principles and practices, and review the basics of the HCD approach. If you’re already familiar with HCD, let’s proceed.</p><h2>What is discovery?</h2><p>When designers say “discovery”, they’re talking about research. This research can take many forms, but it always includes both primary research with the people who are involved in the team’s subject matter, as well as secondary or desk research, which involves reading white papers and articles on the subject.</p><p>Think of HCD discovery as a cycle, instead of a linear process. </p><h2>Operational timeline</h2><p>The HCD process requires many operational steps, some of which overlap in time. This means that you and your team cannot work individually without coordination or looking to the next step, nor can you try to accomplish one step before starting another, because one of two things frequently happens after a research phase is completed:</p><p>1. The team finds both new research and design opportunities to follow.<br>2. The team finds that the problem that they were investigating was slightly off-target, so they need to adjust the research frame to restart discovery.</p><p>Note the concepts, or the “why?” behind the discovery cycle, are explained in the [HCD Discovery Concepts Guide]({{< ref "/guides/hcd/discovery-concepts/_index.md" >}}). We’ll link there as needed throughout this guide, to provide additional context to inform the “why” behind the instructions that follow.</p><h2>Discovery process overview</h2><p>We’ll explain how to complete each step in greater detail below, but first begin by framing your project to identify what you will study. Engage your leadership and recruit your team. Gain approval for staffing, travel, and other expenses.</p><p>Work through the logistics; keep both a detailed and a bird’s-eye view on the overall project schedule, as well as your team members’ schedules. This can be challenging in the rush of gathering and tracking research, but it’s crucial to keep focused and organized as you recruit participants and conduct research.</p><p>Immediately after research wraps up, synthesis begins. Synthesis can be one of the most mentally challenging and tiring parts of the project, but this is where you will see your research come together in patterns. Keep your momentum going by scheduling the synthesis sessions as closely as possible after the end of the research phase.</p><p>Finally, present your discoveries to your stakeholders. This is a crucial piece of the project. If you do not communicate well, then your research, and all your work, could be for naught. Prepare, practice, and follow up on your presentations. <strong>Your work deserves it.</strong><br> </p>' + format: html + summary: '' + field_deck: + - + value: '<p>Step-by-step guidance on how to conduct discovery research</p>' + format: single_inline_html + field_glossary: + - + target_id: hcd_glossary + field_guide_nav_ref: + - + entity: 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b + field_primary_image: + - + entity: 86452891-0ee7-49db-9753-b677f2522ee1 + field_summary: + - + value: '<p>Step-by-step guidance on how to conduct discovery research</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/c4520a54-cd38-4be0-9158-24a61a79599e.yml b/web/modules/custom/default_content_config/content/node/c4520a54-cd38-4be0-9158-24a61a79599e.yml index c414c3a0..295eca6a 100644 --- a/web/modules/custom/default_content_config/content/node/c4520a54-cd38-4be0-9158-24a61a79599e.yml +++ b/web/modules/custom/default_content_config/content/node/c4520a54-cd38-4be0-9158-24a61a79599e.yml @@ -5,7 +5,7 @@ _meta: bundle: guides default_langcode: en depends: - 258cf431-4a0c-4489-807e-c87087c87cf9: node + 95943ed2-cda0-4f06-bfb4-f736417a59bf: node b2f35ae8-423f-428b-865d-e420313e7a81: media ad7aa7a5-33cf-400e-93cf-11820e467111: node 80caaa35-a22b-43ae-a72c-9a714c333a06: node @@ -39,21 +39,27 @@ default: alias: /guides/dap langcode: en pathauto: 0 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default body: - - value: '<h2>What is DAP?</h2><p>The Digital Analytics Program (DAP) helps federal agencies understand how the public finds, accesses, and uses government services online.</p><p>The U.S. General Services Administration (GSA) provides DAP as a shared service, so all federal agencies can use DAP’s web analytics tools, training, and support at no cost.</p><p>DAP uses Google Analytics 360 to measure traffic and engagement across thousands of federal government websites and apps, reporting analytics under a single federal-wide shared account. Google Analytics 360 is the paid, enterprise version of Google Analytics 4 (GA4).</p><h2>Why use DAP?</h2><p>For millions, access to digital services isn’t a luxury — it’s critical. And the public’s experiences using government websites to find unemployment support, file taxes, apply for student loans, or get assistance with housing, childcare, or food can dramatically affect how they feel about the federal government.</p><p>All federal agencies can use DAP to better understand user behavior and improve their public-facing websites and digital services, which will make it easier for the public to access the information and services that they count on each and every day.</p><p>Additionally, <a href="https://digital.gov/resources/delivering-digital-first-public-experience/">M-23-22, Delivering a Digital-First Public Experience</a> requires all federal executive branch agencies to use DAP:</p><embedded-content data-plugin-config="{"text":"Agencies are required to participate in GSA\u2019s government-wide Digital Analytics Program (DAP). Participation in DAP does not pre","cite":"M-23-22, Section III-A, Subsection 6"}" data-plugin-id="ec_shortcodes_card_quote" data-button-id="default"> </embedded-content><h2>Learn more about DAP</h2><ul><li><a href="https://digital.gov/guides/dap/get-started-with-dap/#content-start">Get started with DAP: Use DAP to better understand user behavior</a></li><li><a href="https://digital.gov/guides/dap/make-data-informed-decisions/#content-start">Make data-informed decisions: How to turn the DAP data into actionable insights</a></li><li><a href="https://digital.gov/guides/dap/glossary-of-terms/#content-start">Glossary of terms: Browse DAP terms</a></li><li><a href="https://digital.gov/guides/dap/migration-from-universal-analytics-to-google-analytics-4/#content-start">Migration: Learn about the migration from Universal Analytics to Google Analytics 4</a></li><li><a href="https://digital.gov/guides/dap/gsa-dap-terms-of-service/#content-start">Terms of service: GSA offers DAP subject to your acceptance of these terms</a></li></ul><p><strong>Do you have a question for the DAP team?</strong> Send an email to <a href="mailto:dap@gsa.gov">dap@gsa.gov</a>, and they’ll get back to you.</p>' + value: '<h2>What is DAP?</h2><p>The Digital Analytics Program (DAP) helps federal agencies understand how the public finds, accesses, and uses government services online.</p><p>The U.S. General Services Administration (GSA) provides DAP as a shared service, so all federal agencies can use DAP’s web analytics tools, training, and support at no cost.</p><p>DAP uses Google Analytics 360 to measure traffic and engagement across thousands of federal government websites and apps, reporting analytics under a single federal-wide shared account. Google Analytics 360 is the paid, enterprise version of Google Analytics 4 (GA4).</p><h2>Why use DAP?</h2><p>For millions, access to digital services isn’t a luxury — it’s critical. And the public’s experiences using government websites to find unemployment support, file taxes, apply for student loans, or get assistance with housing, childcare, or food can dramatically affect how they feel about the federal government.</p><p>All federal agencies can use DAP to better understand user behavior and improve their public-facing websites and digital services, which will make it easier for the public to access the information and services that they count on each and every day.</p><p>Additionally, <a href="https://digital.gov/resources/delivering-digital-first-public-experience/">M-23-22, Delivering a Digital-First Public Experience</a> requires all federal executive branch agencies to use DAP:</p><embedded-content data-plugin-config="{"text":"Agencies are required to participate in GSA\u2019s government-wide Digital Analytics Program (DAP). Participation in DAP does not pre","cite":"M-23-22, Section III-A, Subsection 6"}" data-plugin-id="ec_shortcodes_card_quote" data-button-id="default"> </embedded-content><h2>Learn more about DAP</h2><ul><li><a href="https://digital.gov/guides/dap/get-started-with-dap/#content-start">Get started with DAP: Use DAP to better understand user behavior</a></li><li><a href="https://digital.gov/guides/dap/make-data-informed-decisions/#content-start">Make data-informed decisions: How to turn the DAP data into actionable insights</a></li><li><a href="https://digital.gov/guides/dap/glossary-of-terms/#content-start">Glossary of terms: Browse DAP terms</a></li><li><a href="https://digital.gov/guides/dap/migration-from-universal-analytics-to-google-analytics-4/#content-start">Migration: Learn about the migration from Universal Analytics to Google Analytics 4</a></li><li><a href="https://digital.gov/guides/dap/gsa-dap-terms-of-service/#content-start">Terms of service: GSA offers DAP subject to your acceptance of these terms</a></li></ul><div class="box"><strong>Do you have a question for the DAP team?</strong> Send an email to <a href="mailto:dap@gsa.gov">dap@gsa.gov</a>, and they’ll get back to you.</div>' format: html summary: '' field_deck: - value: '<p>A free analytics tool for measuring digital services in the federal government</p>' format: single_inline_html - field_glossary: - - - target_id: hcd_glossary field_guide_nav_ref: - - entity: 258cf431-4a0c-4489-807e-c87087c87cf9 + entity: 95943ed2-cda0-4f06-bfb4-f736417a59bf field_guide_weight: - value: 5 diff --git a/web/modules/custom/default_content_config/content/node/c9faf441-8dd2-47a5-bf96-eeb8571f0dc8.yml b/web/modules/custom/default_content_config/content/node/c9faf441-8dd2-47a5-bf96-eeb8571f0dc8.yml new file mode 100644 index 00000000..dc6b9ce6 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/c9faf441-8dd2-47a5-bf96-eeb8571f0dc8.yml @@ -0,0 +1,62 @@ +_meta: + version: '1.0' + entity_type: node + uuid: c9faf441-8dd2-47a5-bf96-eeb8571f0dc8 + bundle: guides + default_langcode: en + depends: + 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b: node +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Team building' + created: + - + value: 1736373941 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/team-building + langcode: en + pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<h2 id="take-time-and-care-to-build-your-team">Take time and care to build your team</h2><p>First, spend more time than you might think necessary in getting to know who is on the team (if it is a new team) and on crafting and assigning roles and responsibilities. How well a team works together will have a notable effect on the success of the project. See below for detailed guidance on the skills you might need on your team.</p><p>Roles might overlap, and that’s fine. For example, both a recruiter and a researcher need to be comfortable speaking with strangers, but under different circumstances: a recruiter needs to understand the nuance of a cold call, how to explain the project quickly, and “sell” the project. But a researcher needs to be able to slow down a conversation, use silence, and talk about the project without explicitly framing it and directing their interview subject.</p><p>It’s also important to know that each role will have its time to be at the forefront of the project, and then that role will need to recede as the next phase comes to the fore. The Research Lead does not micromanage the Recruiter, just as the Logistics Coordinator does not interrupt the Project Lead during a presentation to leadership or stakeholders.</p><h2 id="team-checklist">Team checklist</h2><p>Use this checklist as you build your team to ensure you’re set up for success:</p><div style="margin-left:20px;"><input type="checkbox"> Read through the team role descriptions <br><input type="checkbox"> Identify potential researchers, recruiters, logistics coordinator, and local contacts <br><input type="checkbox"> Invite each identified person to join the team <br><input type="checkbox"> Get confirmation from each person on their commitment to join the team. <br><input type="checkbox"> Share the team map with all teammates to ensure that everyone understands their role, and the roles of the others.</div>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b + field_summary: + - + value: '<p>Building the right team is critical to the success of your project.</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/cc65a1b8-7380-41b2-a81e-45e9bfef56a1.yml b/web/modules/custom/default_content_config/content/node/cc65a1b8-7380-41b2-a81e-45e9bfef56a1.yml new file mode 100644 index 00000000..9adab568 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/cc65a1b8-7380-41b2-a81e-45e9bfef56a1.yml @@ -0,0 +1,65 @@ +_meta: + version: '1.0' + entity_type: node + uuid: cc65a1b8-7380-41b2-a81e-45e9bfef56a1 + bundle: guides + default_langcode: en + depends: + 33dfb1a8-84a2-4184-990b-b8e6e849e8ec: node +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Implement wisely' + created: + - + value: 1736269216 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/web-analytics-playbook/implement-wisely + langcode: en + pathauto: 0 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<p>In the early days of web analytics, almost all analytics tools had to be deployed via script tags in the site’s HTML. Today, we have many tag management options that allow non-developers to adjust and customize implementations.</p><p>Whether you deploy from HTML or use a tag manager, the key word is flexibility. Don’t get locked into not being able to adjust an event tag because you can’t do anything about the once-per-month release cycle.</p><p><strong>Checklist:</strong></p><ul><li>Study all the possible tools and their options and features</li><li>Choose one</li><li>Study this tool’s options and features</li><li>Decide the best, most flexible way to implement</li><li>If you decide to use a tag manager, consider access permissions and workflows</li><li>Map out communications in case you need an emergency adjustment</li></ul><p><strong>Key Questions:</strong></p><ul><li>Who should be able to change the implementation?</li><li>How can we ensure that alterations can be made on-the-fly, when needed?</li><li>If we use a tag manager, who or what roles should have container publishing permissions?</li><li>What’s the best way to learn how to use a tag management system?</li></ul>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 33dfb1a8-84a2-4184-990b-b8e6e849e8ec + field_guide_nav_title: + - + value: Implement + field_summary: + - + value: '<p>Ensuring that your implementation is flexible is key for web analytics.</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/e4f2f38f-24e0-479e-9378-d93836307746.yml b/web/modules/custom/default_content_config/content/node/e4f2f38f-24e0-479e-9378-d93836307746.yml new file mode 100644 index 00000000..4fcf4798 --- /dev/null +++ b/web/modules/custom/default_content_config/content/node/e4f2f38f-24e0-479e-9378-d93836307746.yml @@ -0,0 +1,62 @@ +_meta: + version: '1.0' + entity_type: node + uuid: e4f2f38f-24e0-479e-9378-d93836307746 + bundle: guides + default_langcode: en + depends: + 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b: node +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: Reframing + created: + - + value: 1736370482 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /guides/reframing + langcode: en + pathauto: 1 + rh_action: + - + value: bundle_default + rh_redirect_response: + - + value: 301 + rh_redirect_fallback_action: + - + value: bundle_default + body: + - + value: '<h2 id="why-reframe-your-problem-">Why reframe your problem?</h2><p>At this point in your project, you’ve learned more about your problem or brief through desk research. This new knowledge typically answers some of your questions, and can let you know if your initial starting point was a little off. Reframing your problem means you can narrow in on a more specific problem frame than you started out with.</p><p>This is good news! Because field research requires resources, reframing your problem frame to a narrower focus can help preserve resources for high-return field research. Good desk research also prevents you and your team from going out into the field and performing exhausting original research, only to find that other people have already covered the ground you thought you discovered.</p><blockquote><p>Framing a design problem or brief is often seen as a preliminary, even pro-forma part of developing solutions. But how we define a problem largely defines its solution, and typically design problems and solutions co-evolve. This iterative framing and reframing of problems is as much a design opportunity as finding solutions." </p><p>-The Lab at OPM"</p></blockquote><p>In this way, effective problem framing helps to:</p><ul><li>Avoid wasting resources on solving the wrong problems</li><li>Expand the range of possible solutions to any given problem</li><li>Maximize creative leverage and innovative potential of HCD</li></ul><h3 id="who-what-why-goal">Who, what, why, goal</h3><p>Clearly articulating the project frame is key to a successful project. Whether your project originates from your own work, or from a project brief from your leadership, it is essential to be able to answer each of these before moving on to the next phase of development:</p><ul><li>Who is this project for?</li><li>What are you trying to understand?</li><li>Why is this a problem?</li><li>What is the goal of the project?</li></ul><p>Work with your team to incorporate their feedback as you answer these questions. Ensure that your answers are precise, coherent and in plain language. This process can help you precisely communicate your idea to others.</p><h3 id="problem-frame-statement">Problem frame statement</h3><p>How you articulate your problem will influence how you approach it, so it’s important to find the right words. Stating your problem in the best possible terms takes creativity and critical thinking.</p><p>Using the phrase “How might we…” is one of the best ways to start a problem frame statement:</p><ul><li>“How” is action-oriented</li><li>“Might” is full of open-ended potential</li><li>“We” is collaborative and inviting.</li></ul><article class="dg-ring" aria-labelledby="fd980506beb979584750fabb271b4cde"><h2 class="dg-ring__title" id="fd980506beb979584750fabb271b4cde">Try it out</h2><p>Referencing these directions, the work done in Desk Research, and the Who, What, Why, and Goal frameworks, try writing your own project frame statement.</p></article>' + format: html + summary: '' + field_guide_nav_ref: + - + entity: 1a8ba304-e37c-4bf4-b8e9-d1ba6f8e780b + field_summary: + - + value: '<p>As you learn more about the problem space, iteratively reframe it, to ensure you’re working within scope, and researching the right problem.</p>' + format: single_inline_html + field_summary_box: + - + value: false diff --git a/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml b/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml index 4e8f1f04..f594fb94 100644 --- a/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml +++ b/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml @@ -4,8 +4,6 @@ _meta: uuid: f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2 bundle: guides default_langcode: en - depends: - 258cf431-4a0c-4489-807e-c87087c87cf9: node default: revision_uid: - @@ -38,7 +36,7 @@ default: pathauto: 1 field_guide_nav_ref: - - entity: 258cf431-4a0c-4489-807e-c87087c87cf9 + target_id: 75 field_summary: - value: '<p>A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow</p>' diff --git a/web/themes/custom/digital_gov/digital_gov.theme b/web/themes/custom/digital_gov/digital_gov.theme index 55c83f2b..0180e9fb 100644 --- a/web/themes/custom/digital_gov/digital_gov.theme +++ b/web/themes/custom/digital_gov/digital_gov.theme @@ -10,6 +10,7 @@ declare(strict_types=1); use Drupal\Core\Datetime\DrupalDateTime; use Drupal\Core\Link; use Drupal\Core\Template\Attribute; +use Drupal\Core\Url; use Drupal\node\Entity\Node; use Drupal\paragraphs\Entity\Paragraph; @@ -56,6 +57,10 @@ function digital_gov_preprocess_node(array &$variables): void { case 'guides': digital_gov_preprocess_node_guides($variables); break; + + case 'guide_landing': + digital_gov_preprocess_node_guide_landing($variables); + break; } } @@ -65,36 +70,51 @@ function digital_gov_preprocess_node(array &$variables): void { function digital_gov_preprocess_node_guides(&$variables): void { $guide = $variables['node']; // Set defaults. - $variables['show_reading_time'] = FALSE; $variables['show_next_previous'] = FALSE; $variables['show_in_page_nav'] = FALSE; $variables['is_guide_overview'] = FALSE; $variables['show_summary_box'] = $guide->get('field_summary_box')[0]->get('value')->getCastedValue(); - if ( - ($nav_nid = (int) $guide->field_guide_nav_ref[0]?->target_id) - && $nav_node = Node::load($nav_nid) - ) { + if ($nav_node = $guide->get('field_guide_nav_ref')->first()?->get('entity')->getTarget()->getValue()) { $links = digital_gov_get_guidenav_links($nav_node, $variables['url']); $variables = array_merge($variables, $links); + if ($overview_image = $nav_node->get('field_overview_image')->first()?->get('entity')->getTarget()->getValue()) { + $media = $overview_image->get('field_media_image')->first(); + $variables['guide_overview_image'] = $media; + + if ($credit = $overview_image->get('field_credit')->first()) { + $variables['guide_overview_credit'] = $credit->view(); + } + + if ($caption = $overview_image->get('field_caption')->first()) { + $variables['guide_overview_caption'] = $caption->view(); + } + } $variables['show_next_previous'] = $nav_node->field_show_next_previous?->value === "1"; - $variables['show_reading_time'] = $nav_node->field_show_read_time?->value === "1"; $variables['show_in_page_nav'] = $nav_node->field_show_in_page_nav?->value === "1"; - $variables['is_guide_overview'] = FALSE; - - if ($links['guide_start_link']) { - $variables['is_guide_overview'] = ($variables['url'] === $links['guide_start_link']->getUrl()->toString()); + if ($links['guide_nav']) { + $variables['is_guide_overview'] = ($variables['url'] === $links['guide_nav'][0]['link']?->getUrl()->toString()); } } +} - if ($variables['show_reading_time']) { - // @todo Fix - where does reading time value come from? - $reading_time = 1; - $variables['reading_time'] = $reading_time . ' minute' . ($reading_time > 1 ? 's' : ''); +/** + * Preprocess function for guide landing nodes. + */ +function digital_gov_preprocess_node_guide_landing(&$variables): void { + if ($hero_image = $variables['node']->get('field_primary_image')->first()->get('entity')->getTarget()->getValue()) { + $media = $hero_image->get('field_media_image')->first(); + $variables['hero_image'] = $media; - } + if ($credit = $hero_image->get('field_credit')->first()) { + $variables['hero_credit'] = $credit->view(); + } + if ($caption = $hero_image->get('field_caption')->first()) { + $variables['hero_caption'] = $caption->view(); + } + } } /** @@ -102,10 +122,19 @@ function digital_gov_preprocess_node_guides(&$variables): void { */ function digital_gov_get_guidenav_links(Node $node, string $current): array { // Anonymous helper for getting node links. - $makeLink = function (Node $page): Link { - // Override the navigation title if set in the node. - return $page->toLink($page->get('field_guide_nav_title')->getString() - ?: $page->label()); + $makeLink = function (Node $page, ?string $override = NULL): Link { + $label = $page->label(); + + // Allow caller to specify the title to use, unless it's been set in the CMS + // Mainly to label the starting page as the Overview page. + if ($node_nav_title = $page->get('field_guide_nav_title')->getString()) { + $label = $node_nav_title; + } + elseif ($override) { + $label = $override; + } + + return $page->toLink($label); }; // The guide_nav is an array that holds items with the following keys @@ -113,26 +142,14 @@ function digital_gov_get_guidenav_links(Node $node, string $current): array { // - 'subnav': an array of Link objects of links if the sidenav is shown. $links['guide_nav'] = []; - if ($start_page = $node->get('field_guide_start_page')->first()->get('entity')->getTarget()->getValue()) { - $links['guide_start_node'] = $start_page; - $links['guide_start_link'] = $makeLink($start_page); - $links['guide_start_link']->setText(\t('Overview')); - - // Assume this is open unless we find out otherwise later. - $links['guide_current_index'] = 0; - if ($featured_image = $start_page->get('field_featured_image')->first()->get('entity')->getTarget()->getValue()) { - $media = $featured_image->get('field_media_image')->first(); - $links['guide_featured_image'] = $media; - } - - $links['guide_nav'][] = ['link' => $links['guide_start_link']]; - } - - if ($parent_guide = $node->get('field_parent_guide')->first()?->get('entity')->getValue()) { - $links['guide_parent_link'] = $makeLink($parent_guide); + if ($kicker_link = $node->get('field_kicker_link')->first()) { + $links['guide_kicker_title'] = $kicker_link->getValue()['title']; + $links['guide_kicker_url'] = Url::fromUri($kicker_link->getValue()['uri']); } if ($node->field_guide_navigation) { + // Track the count separately in case the first item is not published. + $count = 0; // Generate the two-levels of nav links for this guide. foreach ($node->field_guide_navigation as $ref) { // This field points at a paragraph entity. @@ -144,11 +161,15 @@ function digital_gov_get_guidenav_links(Node $node, string $current): array { continue; } + if ($count === 0) { + $links['guide_overview_node'] = $guidePage; + } // Add the link to the navigation. - $link = $makeLink($guidePage); - + $link = $makeLink($guidePage, $count === 0 ? 'Overview' : NULL); $item['link'] = $link; + $count++; + if ($para->field_guide_subnav) { $subNavNodes = $para->get('field_guide_subnav')->referencedEntities(); $subNavNodes = array_filter($subNavNodes, fn(Node $node) => $node->isPublished()); @@ -176,9 +197,7 @@ function digital_gov_get_guidenav_links(Node $node, string $current): array { // Here, figure out the next/previous links. // We need a flat list of all the URLs in the guide nav keyed by URL. $allTheUrls = []; - if ($links['guide_start_link']) { - $allTheUrls[$links['guide_start_link']->getUrl()->toString()] = $links['guide_start_link']; - } + array_walk_recursive( $links['guide_nav'], function ($link) use (&$allTheUrls) { diff --git a/web/themes/custom/digital_gov/templates/field/field--node--body--guides.html.twig b/web/themes/custom/digital_gov/templates/field/field--node--body--guides.html.twig new file mode 100644 index 00000000..cc0ba3b9 --- /dev/null +++ b/web/themes/custom/digital_gov/templates/field/field--node--body--guides.html.twig @@ -0,0 +1,5 @@ +{% for item in items %} +<div class="dg-guide__content-body usa-prose"> + {{ item.content }} +</div> +{% endfor %} diff --git a/web/themes/custom/digital_gov/templates/node/node--guide-landing.html.twig b/web/themes/custom/digital_gov/templates/node/node--guide-landing.html.twig new file mode 100644 index 00000000..c07336a5 --- /dev/null +++ b/web/themes/custom/digital_gov/templates/node/node--guide-landing.html.twig @@ -0,0 +1,66 @@ +<main role="main" id="main-content"> + <header class="dg-landing__hero"> + + {% if hero_image %} + {{ drupal_image(hero_image.target_id, '', {alt: hero_image.alt, class: 'dg-img-flexible'}) }} + {% endif %} + + {# partial "core/img-flexible.html" (dict "Site" .Site "src" Params.image "small" "false") #} + <div class="dg-landing__hero-text"> + <h1>{{ label }}</h1> + <a href="#content-start" class="usa-button usa-button--big" + >Get Started</a + > + </div> + </header> + <article class="dg-landing__body grid-container grid-container-desktop"> + <div> + {{ content|without('field_guides', 'field_bottom_content') }} + </div> + <h2 class="dg-landing__body-featured-resources">Featured Resources</h2> + + [placeholder card view of selected pages] + {{ content.field_guides }} + + {# NOT-MIGRATED + <ul class="usa-card-group" id="content-start"> + {{ range .Pages }} + <li class="usa-card tablet:grid-col-4"> + {{ $image := .Params.image }} + {{ $layout := "no-image" }} + {% if $image %} + {{ $layout = "has-image" }} + {% endif %} + {{ $cardData := (dict + "header" .Title + "body" .Params.summary + "link" (.Permalink | absURL) + "link_title" (print "Explore " (.Title | markdownify | lower)) + "layout" $layout + "site" .Site + "image" $image + ) + }} + {{ partial "core/usa-card.html" (dict "card_data" $cardData) }} + </li> + {% endif %} + </ul> + #} + + {% if (content.field_bottom_content) %} + {{ content.field_bottom_content }} + {% endif %} + + {% if hero_credit or hero_caption %} + {{ include('@digital_gov/partials/attribution.html.twig', { + credit: hero_credit, + caption: hero_caption, + }, with_context: false) }} + {% endif %} + + </article> + + {% if node.field_glossary.target_id %} + {{ drupal_view('glossary_sidebar', 'accordion', node.field_glossary.target_id) }} + {% endif %} +</main> diff --git a/web/themes/custom/digital_gov/templates/node/node--guides.html.twig b/web/themes/custom/digital_gov/templates/node/node--guides.html.twig index e4e18614..6782d03a 100644 --- a/web/themes/custom/digital_gov/templates/node/node--guides.html.twig +++ b/web/themes/custom/digital_gov/templates/node/node--guides.html.twig @@ -65,11 +65,12 @@ #} <main role="main" id="main-content"> <article class="dg-guide"> - {% if (guide_start_node) %} + {% if (guide_overview_node) %} {{ include('@digital_gov/partials/guides/guide-header.html.twig', { - node: guide_start_node, - parent_link: guide_parent_link, - featured_image: guide_featured_image, + node: guide_overview_node, + kicker_title: guide_kicker_title, + kicker_url: guide_kicker_url, + overview_image: guide_overview_image, }, with_context: false) }} {% endif %} diff --git a/web/themes/custom/digital_gov/templates/partials/attribution.html.twig b/web/themes/custom/digital_gov/templates/partials/attribution.html.twig new file mode 100644 index 00000000..8114c36b --- /dev/null +++ b/web/themes/custom/digital_gov/templates/partials/attribution.html.twig @@ -0,0 +1,8 @@ +<p class="dg-attribution"> + Header image credit: + {% if credit %} + {{ credit }} + {% elseif caption %} + {{ caption }} + {% endif %} +</p> diff --git a/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig b/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig index b388df40..446b49f6 100644 --- a/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig +++ b/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig @@ -9,23 +9,16 @@ {{ content.field_summary }} {% endif %} - {% if show_reading_time %} - <p class="dig-read-time"> - Reading time: {{ reading_time }} - </p> - {% endif %} + </div> {% if show_summary_box %} {{ include('@digital_gov/partials/usa-summary-box.html.twig', { containerClass: 'dg-guide-summary', }, with_context: false) }} - {% endif -%} + {% endif %} </div> - <div class="dg-guide__content-body usa-prose"> - {{ content.body }} - </div> - </div> + {{ content.body }} </section> <section class="dg-guide__footer grid-container-desktop"> @@ -68,8 +61,12 @@ </div> {% endif %} - {# NOT-MIGRATED - {{ include("@digital_gov/partials/attribution.html.twig") }} - #} + {% if guide_overview_credit or guide_overview_caption %} + {{ include('@digital_gov/partials/attribution.html.twig', { + credit: guide_overview_credit, + caption: guide_overview_caption, + }, with_context: false) }} + {% endif %} + {{ include('@digital_gov/partials/touchpoints-form.html.twig') }} </section> diff --git a/web/themes/custom/digital_gov/templates/partials/guides/guide-header.html.twig b/web/themes/custom/digital_gov/templates/partials/guides/guide-header.html.twig index 4bf6dbf9..5ca6065d 100644 --- a/web/themes/custom/digital_gov/templates/partials/guides/guide-header.html.twig +++ b/web/themes/custom/digital_gov/templates/partials/guides/guide-header.html.twig @@ -1,9 +1,9 @@ -{% set kicker = node.field_kicker.value ? node.field_kicker.value : 'Digital.gov Guide' %} +{% set kicker = kicker_title ? kicker_title : 'Digital.gov Guide' %} <header class="dg-guide__header grid-container grid-container-desktop"> <div class="dg-guide__header-title"> - {% if parent_link %} - <a class="usa-link kicker" href="{{ parent_link.url }}"> + {% if kicker_url %} + <a class="usa-link kicker" href="{{ kicker_url }}"> {{ kicker }} </a> {% else %} @@ -12,9 +12,8 @@ <h1>{{ node.title.value }}</h1> <div class="deck"> - {{ node.field_deck[0].value }} + {{ node.field_summary[0].value|check_markup('single_inline_html') }} </div> - {# NOT-MIGRATED #} {% if node.field_glossary.value %} <button class="dg-glossary__toggle"> <svg @@ -32,12 +31,9 @@ {% endif %} </div> - {% if featured_image %} + {% if overview_image %} <div class="dg-guide__header-image"> - {{ drupal_image(featured_image.target_id, '', {alt: featured_image.alt}) }} - {# NOT-MIGRATED - partial "core/img-flexible.html" (dict "Site" .Site "src" $uid "small" "false") - #} + {{ drupal_image(overview_image.target_id, '', {alt: overview_image.alt, class: 'dg-img-flexible'}) }} </div> {% endif %} diff --git a/web/themes/custom/digital_gov/templates/partials/guides/guide-menu-bar.html.twig b/web/themes/custom/digital_gov/templates/partials/guides/guide-menu-bar.html.twig index abf1035c..23abc426 100644 --- a/web/themes/custom/digital_gov/templates/partials/guides/guide-menu-bar.html.twig +++ b/web/themes/custom/digital_gov/templates/partials/guides/guide-menu-bar.html.twig @@ -1,88 +1,37 @@ {# Generates a horizontal menu for desktop and a vertical menu for mobile on all guide pages. -Displays an optional glossary sidemenu on the right side if glossary field is present on the guide root _index.md. +Displays an optional glossary sidemenu on the right side if glossary is selected for this node. -$glossary is boolean that checks if the guide root _index.md contains a glossary field + Requires a variable "guide_nav". See digital_gov_get_guidenav_links() in theme preprocess node function. #} -{# NOT - MIGRATED #} -{# $glossary := cond .IsNode .Params.glossary .Parent.Params.glossary #} - -{% set glossary = false %} -<div class="dg-guide__menu-bar"> - {# This is hidden - can we remove? #} - <div class="dg-guide__menu-bar-image-container" hidden> - <a href="{{ path('<front>') }}" title="{{ site_name }} Home"> - <picture class="dg-guide__menu-bar-image"> - <source - srcset="/{{ active_theme_path() }}/static/digitalgov/img/logos/digitalgov-logo.svg" - media="(min-width: 480px)" - /> - <img - src="/{{ active_theme_path() }}/static/digitalgov/img/digit-100.svg" - alt="Digital Gov Logo" - /> - </picture> - </a> - {# NOT - MIGRATED #} - {% if glossary %} - <button title="Show glossary" class="dg-glossary__toggle"> - <svg - class="dg-glossary__toggle-icon" - width="100%" - height="100%" - viewBox="0 0 21 21" - aria-hidden="true" - focusable="false" - > - <path - d="M13.9583 2.99612C13.9583 2.25376 13.5274 1.631 12.9074 1.25803C12.2875 0.885127 11.4706 0.755653 10.6759 0.999207L7.41667 1.99802L4.15746 0.999208C3.36272 0.755654 2.54584 0.885127 1.92596 1.25803C1.30597 1.631 0.875 2.25376 0.875 2.99612V11.6299C0.875 12.5372 1.54014 13.3298 2.50921 13.6268L7.41667 15.1307L12.3241 13.6268C13.2932 13.3298 13.9583 12.5372 13.9583 11.6299V2.99612ZM11.1429 2.17693C11.4882 2.07112 11.8416 2.12807 12.107 2.28774C12.3723 2.44735 12.5417 2.7033 12.5417 2.99612V11.6299C12.5417 11.9855 12.2789 12.3198 11.8571 12.4491L8.125 13.5928V3.10179L11.1429 2.17693ZM2.29167 2.99612C2.29167 2.7033 2.46099 2.44735 2.7263 2.28774C2.99172 2.12808 3.34516 2.07112 3.69046 2.17694L6.70833 3.10179V13.5928L2.97621 12.4491C2.55441 12.3198 2.29167 11.9855 2.29167 11.6299V2.99612Z" - /> - </svg> - </button> - {% endif %} - </div> - <nav class="dg-guide__menu-bar-links" aria-label="Secondary menu bar"> - {% for item in guide_nav %} - {# TODO need to mark a link current if we're in one of its subnavs #} - {{ _self.link_item(item.link, path('<current>')) }} - {% endfor %} - </nav> -</div> - -<div class="usa-accordion guide-mobile-menu"> - <div class="usa-accordion__heading guide-mobile-menu__heading"> - <div class="guide-mobile-menu__image-container"> - <a - class="guide-mobile-menu__image-dg-icon" - href="{{ Site.BaseURL }}" - title="{{ Site.Title }} Home" - > - <picture class="guide-mobile-menu__image"> +{% if guide_nav %} + {% set glossary = false %} + <div class="dg-guide__menu-bar"> + {# This is hidden - can we remove? #} + <div class="dg-guide__menu-bar-image-container" hidden> + <a href="{{ path('<front>') }}" title="{{ site_name }} Home"> + <picture class="dg-guide__menu-bar-image"> <source - srcset="/{{ active_theme_path() }}/static/digitalgov/img/logos/digit-50.png" + srcset="/{{ active_theme_path() }}/static/digitalgov/img/logos/digitalgov-logo.svg" media="(min-width: 480px)" /> <img - class="guide-mobile-menu__image-icon" - src="/{{ active_theme_path() }}/static/digitalgov/img/logos/digit-100.svg" + src="/{{ active_theme_path() }}/static/digitalgov/img/digit-100.svg" alt="Digital Gov Logo" /> </picture> </a> {% if glossary %} - <button - title="Show glossary" - class="dg-glossary__toggle guide-mobile-menu__image-glossary" - > + <button title="Show glossary" class="dg-glossary__toggle"> <svg + class="dg-glossary__toggle-icon" width="100%" height="100%" viewBox="0 0 21 21" aria-hidden="true" focusable="false" - class="dg-glossary__toggle-icon guide-mobile-menu__image-glossary-svg" > <path d="M13.9583 2.99612C13.9583 2.25376 13.5274 1.631 12.9074 1.25803C12.2875 0.885127 11.4706 0.755653 10.6759 0.999207L7.41667 1.99802L4.15746 0.999208C3.36272 0.755654 2.54584 0.885127 1.92596 1.25803C1.30597 1.631 0.875 2.25376 0.875 2.99612V11.6299C0.875 12.5372 1.54014 13.3298 2.50921 13.6268L7.41667 15.1307L12.3241 13.6268C13.2932 13.3298 13.9583 12.5372 13.9583 11.6299V2.99612ZM11.1429 2.17693C11.4882 2.07112 11.8416 2.12807 12.107 2.28774C12.3723 2.44735 12.5417 2.7033 12.5417 2.99612V11.6299C12.5417 11.9855 12.2789 12.3198 11.8571 12.4491L8.125 13.5928V3.10179L11.1429 2.17693ZM2.29167 2.99612C2.29167 2.7033 2.46099 2.44735 2.7263 2.28774C2.99172 2.12808 3.34516 2.07112 3.69046 2.17694L6.70833 3.10179V13.5928L2.97621 12.4491C2.55441 12.3198 2.29167 11.9855 2.29167 11.6299V2.99612Z" @@ -91,27 +40,74 @@ $glossary is boolean that checks if the guide root _index.md contains a glossary </button> {% endif %} </div> - <button - type="button" - class="usa-accordion__button guide-mobile-menu__button" - aria-expanded="false" - aria-controls="a1" - > - <h4 class="guide-mobile-menu__button-header">Sections</h4> - </button> - </div> - <div - id="a1" - class="usa-accordion__content guide-mobile-menu__content usa-prose" - > - <nav class="guide-mobile-menu__nav" aria-label="Secondary menu bar"> + <nav class="dg-guide__menu-bar-links" aria-label="Secondary menu bar"> {% for item in guide_nav %} - {# TODO need to mark a link current if we're in one of its subnavs #} {{ _self.link_item(item.link, path('<current>')) }} {% endfor %} </nav> </div> -</div> + + <div class="usa-accordion guide-mobile-menu"> + <div class="usa-accordion__heading guide-mobile-menu__heading"> + <div class="guide-mobile-menu__image-container"> + <a + class="guide-mobile-menu__image-dg-icon" + href="{{ Site.BaseURL }}" + title="{{ Site.Title }} Home" + > + <picture class="guide-mobile-menu__image"> + <source + srcset="/{{ active_theme_path() }}/static/digitalgov/img/logos/digit-50.png" + media="(min-width: 480px)" + /> + <img + class="guide-mobile-menu__image-icon" + src="/{{ active_theme_path() }}/static/digitalgov/img/logos/digit-100.svg" + alt="Digital Gov Logo" + /> + </picture> + </a> + {% if glossary %} + <button + title="Show glossary" + class="dg-glossary__toggle guide-mobile-menu__image-glossary" + > + <svg + width="100%" + height="100%" + viewBox="0 0 21 21" + aria-hidden="true" + focusable="false" + class="dg-glossary__toggle-icon guide-mobile-menu__image-glossary-svg" + > + <path + d="M13.9583 2.99612C13.9583 2.25376 13.5274 1.631 12.9074 1.25803C12.2875 0.885127 11.4706 0.755653 10.6759 0.999207L7.41667 1.99802L4.15746 0.999208C3.36272 0.755654 2.54584 0.885127 1.92596 1.25803C1.30597 1.631 0.875 2.25376 0.875 2.99612V11.6299C0.875 12.5372 1.54014 13.3298 2.50921 13.6268L7.41667 15.1307L12.3241 13.6268C13.2932 13.3298 13.9583 12.5372 13.9583 11.6299V2.99612ZM11.1429 2.17693C11.4882 2.07112 11.8416 2.12807 12.107 2.28774C12.3723 2.44735 12.5417 2.7033 12.5417 2.99612V11.6299C12.5417 11.9855 12.2789 12.3198 11.8571 12.4491L8.125 13.5928V3.10179L11.1429 2.17693ZM2.29167 2.99612C2.29167 2.7033 2.46099 2.44735 2.7263 2.28774C2.99172 2.12808 3.34516 2.07112 3.69046 2.17694L6.70833 3.10179V13.5928L2.97621 12.4491C2.55441 12.3198 2.29167 11.9855 2.29167 11.6299V2.99612Z" + /> + </svg> + </button> + {% endif %} + </div> + <button + type="button" + class="usa-accordion__button guide-mobile-menu__button" + aria-expanded="false" + aria-controls="a1" + > + <h4 class="guide-mobile-menu__button-header">Sections</h4> + </button> + </div> + <div + id="a1" + class="usa-accordion__content guide-mobile-menu__content usa-prose" + > + <nav class="guide-mobile-menu__nav" aria-label="Secondary menu bar"> + {% for item in guide_nav %} + {{ _self.link_item(item.link, path('<current>')) }} + {% endfor %} + </nav> + </div> + </div> +{% endif %} {% macro link_item(link, current) %} <a