From a8ff587a9f4a74f227f66331e154540a35da57f2 Mon Sep 17 00:00:00 2001 From: Brian Tofte-Schumacher Date: Wed, 19 Apr 2023 17:13:19 -0400 Subject: [PATCH] [SLAC22-686] Allow users to toggle boolean when overriding caption on lightbox video --- ...form_display.paragraph.video_lightbox.default.yml | 10 +++++++++- ...view_display.paragraph.video_lightbox.default.yml | 2 ++ ...eld.field.paragraph.video_lightbox.field_body.yml | 2 +- web/themes/gesso/includes/media.inc | 4 ++-- web/themes/gesso/includes/paragraph.inc | 12 +++++++----- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/config/sync/core.entity_form_display.paragraph.video_lightbox.default.yml b/config/sync/core.entity_form_display.paragraph.video_lightbox.default.yml index 663cc3180..16a78d0c3 100644 --- a/config/sync/core.entity_form_display.paragraph.video_lightbox.default.yml +++ b/config/sync/core.entity_form_display.paragraph.video_lightbox.default.yml @@ -4,6 +4,7 @@ status: true dependencies: config: - field.field.paragraph.video_lightbox.field_body + - field.field.paragraph.video_lightbox.field_boolean - field.field.paragraph.video_lightbox.field_video - paragraphs.paragraphs_type.video_lightbox module: @@ -18,7 +19,7 @@ mode: default content: field_body: type: text_textarea - weight: 1 + weight: 2 region: content settings: rows: 2 @@ -27,6 +28,13 @@ content: allowed_formats: hide_help: '1' hide_guidelines: '1' + field_boolean: + type: boolean_checkbox + weight: 1 + region: content + settings: + display_label: true + third_party_settings: { } field_video: type: media_library_widget weight: 0 diff --git a/config/sync/core.entity_view_display.paragraph.video_lightbox.default.yml b/config/sync/core.entity_view_display.paragraph.video_lightbox.default.yml index 0cba225c3..b39b72f2a 100644 --- a/config/sync/core.entity_view_display.paragraph.video_lightbox.default.yml +++ b/config/sync/core.entity_view_display.paragraph.video_lightbox.default.yml @@ -4,6 +4,7 @@ status: true dependencies: config: - field.field.paragraph.video_lightbox.field_body + - field.field.paragraph.video_lightbox.field_boolean - field.field.paragraph.video_lightbox.field_video - paragraphs.paragraphs_type.video_lightbox id: paragraph.video_lightbox.default @@ -22,4 +23,5 @@ content: region: content hidden: field_body: true + field_boolean: true search_api_excerpt: true diff --git a/config/sync/field.field.paragraph.video_lightbox.field_body.yml b/config/sync/field.field.paragraph.video_lightbox.field_body.yml index 61f9d9e1f..9a0b6a782 100644 --- a/config/sync/field.field.paragraph.video_lightbox.field_body.yml +++ b/config/sync/field.field.paragraph.video_lightbox.field_body.yml @@ -16,7 +16,7 @@ id: paragraph.video_lightbox.field_body field_name: field_body entity_type: paragraph bundle: video_lightbox -label: 'Override Caption' +label: 'Override Caption Text' description: 'If populated, this caption will be displayed below the lightbox instead of the video''s caption from the media library.' required: false translatable: true diff --git a/web/themes/gesso/includes/media.inc b/web/themes/gesso/includes/media.inc index 6fda1fa01..eeaa550b4 100644 --- a/web/themes/gesso/includes/media.inc +++ b/web/themes/gesso/includes/media.inc @@ -78,11 +78,11 @@ function gesso_preprocess_media(array &$variables) { $variables['lightbox_id'] = $lightbox_id; if (isset($variables['content']['field_thumbnail'][0])) { $variables['content']['field_thumbnail'][0]['#media']->lightbox_id = $lightbox_id; - $variables['content']['field_thumbnail'][0]['#media']->video_caption[] = $video_media->paragraph_override_caption ? $video_media->paragraph_override_caption->view() : $video_media->field_caption->view(); + $variables['content']['field_thumbnail'][0]['#media']->video_caption[] = $video_media->paragraph_override_caption ?: $video_media->field_caption->view(); $variables['content']['field_thumbnail'][0]['#media']->video_caption[] = $video_media->field_credit->view(); } elseif (isset($variables['content']['thumbnail'][0])) { $variables['content']['thumbnail'][0]['#lightbox_id'] = $lightbox_id; - $variables['content']['thumbnail'][0]['#video_caption'][] = $video_media->paragraph_override_caption ? $video_media->paragraph_override_caption->view() : $video_media->field_caption->view(); + $variables['content']['thumbnail'][0]['#video_caption'][] = $video_media->paragraph_override_caption ?: $video_media->field_caption->view(); $variables['content']['thumbnail'][0]['#video_caption'][] = $video_media->field_credit->view(); } // Set the URL to the detail page only if the editor hasn't hidden diff --git a/web/themes/gesso/includes/paragraph.inc b/web/themes/gesso/includes/paragraph.inc index 22ca0c0bb..575bac06b 100644 --- a/web/themes/gesso/includes/paragraph.inc +++ b/web/themes/gesso/includes/paragraph.inc @@ -277,15 +277,17 @@ function gesso_preprocess_paragraph__overlap_image(array &$vars) { * Implements hook_preprocess_paragraph__HOOK(). */ function gesso_preprocess_paragraph__video_lightbox(array &$vars) { - /** @var \Drupal\paragraphs\ParagraphInterface $paragraph */ - $paragraph = !empty($vars['paragraph']) ? $vars['paragraph'] : NULL; + if (isset($vars['paragraph'])) { + /** @var \Drupal\paragraphs\ParagraphInterface $paragraph */ + $paragraph = $vars['paragraph']; - if ($paragraph) { // Add the override caption to the media entity, if it exists. - if ($vars['content']['field_video'][0]['#media']) { + if (isset($vars['content']['field_video'][0]['#media'])) { /** @var \Drupal\Media\entity\Media $media */ $media = $vars['content']['field_video'][0]['#media']; - $media->paragraph_override_caption = !empty($paragraph->field_body[0]) ? $paragraph->field_body : NULL; + if ($paragraph->field_boolean->value) { + $media->paragraph_override_caption = $paragraph->field_body->view() ?? NULL; + } $media->addCacheableDependency($paragraph); $media->addCacheContexts(['url']); }