diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module index cc29255..13348a5 100644 --- a/core/modules/overlay/overlay.module +++ b/core/modules/overlay/overlay.module @@ -183,7 +183,9 @@ function overlay_init() { * the supplemental regions of the overlay on the next page request. */ function overlay_exit() { - // Check that we are in an overlay child page. + // Check that we are in an overlay child page. Note that this should never + // return TRUE on a cached page view, since the child mode is not set until + // overlay_init() is called. if (overlay_get_mode() == 'child') { // Load any markup that was stored earlier in the page request, via calls // to overlay_store_rendered_content(). If none was stored, this is not a @@ -546,6 +548,36 @@ function template_preprocess_overlay(&$variables) { } /** + * Preprocess variables for the message about how to disable the overlay. + * + * @param $variables + * An associative array with an 'element' element, which itself is an + * associative array containing: + * - profile_link: The link to this user's account. + * - dismiss_message_link: The link to dismiss the overlay. + * + * @ingroup themeable + */ +function template_preprocess_overlay_disable_message(&$variables) { + $element = $variables['element']; + + // Add CSS classes to hide the links from most sighted users, while keeping + // them accessible to screen-reader users and keyboard-only users. To assist + // screen-reader users, this message appears in both the parent and child + // documents, but only the one in the child document is part of the tab order. + foreach (array('profile_link', 'dismiss_message_link') as $key) { + $element[$key]['#options']['attributes']['class'][] = 'element-invisible'; + if (overlay_get_mode() == 'child') { + $element[$key]['#options']['attributes']['class'][] = 'element-focusable'; + } + } + + // Render the links. + $variables['profile_link'] = drupal_render($element['profile_link']); + $variables['dismiss_link'] = drupal_render($element['dismiss_message_link']); +} + +/** * Implements template_process_HOOK() for overlay.tpl.php * * Places the rendered HTML for the page body into a top level variable. diff --git a/core/modules/overlay/templates/overlay-disable-message.html.twig b/core/modules/overlay/templates/overlay-disable-message.html.twig new file mode 100644 index 0000000..4b9c38a --- /dev/null +++ b/core/modules/overlay/templates/overlay-disable-message.html.twig @@ -0,0 +1,20 @@ +{# +/** + * @file + * Default theme implementation for the message about how to disable the overlay. + * + * Available variables: + * - attributes: An array of element attributes. + * - profile_link: Rendered link. + * - dismiss_link: Rendered link to disable the message. + * + * @see template_preprocess() + * @see template_preprocess_overlay_disable_message() + * + * @ingroup themeable + */ +#} +