This is a followup to #716612: Overlay is not accessible to screen reader users.

It was concluded there that for some screen reader users, the overlay module may still remain difficult to use, so they should have a clear, quick way to be able to either go to their user profile page and disable it, or disable it immediately.

The patch that @seutje started there basically looked like this:

diff --git modules/overlay/overlay.module modules/overlay/overlay.module
index eb1bb49..4bbba43 100644
--- modules/overlay/overlay.module
+++ modules/overlay/overlay.module
@@ -304,6 +304,10 @@ function overlay_preprocess_html(&$variables) {
     // Add overlay class, so themes can react to being displayed in the overlay.
     $variables['classes_array'][] = 'overlay';
   }
+  global $user;
+  if (overlay_get_mode() != 'none' && $user->uid && isset($user->data['overlay']) && $user->data['overlay'] == 1) {
+    $variables['overlay_disable'] = l(t('Disable the overlay'), 'user/' . $user->uid . '/edit', array('attributes' => array('class' => array('overlay-exclude'))));
+  }
 }
 
 /**
diff --git modules/system/html.tpl.php modules/system/html.tpl.php
index 7ef8fc2..2c254bf 100644
--- modules/system/html.tpl.php
+++ modules/system/html.tpl.php
@@ -47,6 +47,11 @@
   <div id="skip-link">
     <a href="#main-content"><?php print t('Skip to main content'); ?></a>
   </div>
+  <?php
+  if (isset($overlay_disable)) {
+    print '<div class="element-invisible" id="overlay-disable">' . $overlay_disable . '</div>';
+  }
+  ?>
   <?php print $page_top; ?>
   <?php print $page; ?>
   <?php print $page_bottom; ?>

Several people pointed out that we don't want to add overlay code to the system.module though, and suggested putting it in overlay.tpl.instead.

Additionally, my in-depth review was as follows:

  1. It looks to me like the intention is to show this to "overlay users" even on non-overlay pages also (or at least that seems to be the effect), in which case overlay.tpl.php wouldn't work, right? Can overlay module add it to the top of the 'page_top' region via hook_page_alter() maybe? Or can we clarify where we do and don't want this link to appear, to see what would work...
  2. +    print '<div class="element-invisible" id="overlay-disable">' . $overlay_disable . '</div>';
    

    I thought we couldn't use "element-invisible" to contain a link, since it means keyboard users will be able to tab to it but not see it. Probably this needs to use the same mechanism as the "skip to main content" link instead....

  3. +  if (overlay_get_mode() != 'none' && $user->uid && isset($user->data['overlay']) && $user->data['overlay'] == 1) {
    

    This check seems incorrect for a couple reasons - forgetting the first part, shouldn't the rest be more like user_access('access overlay') && (!isset($user->data['overlay']) || $user->data['overlay'])? That is what is used elsewhere. The current patch seems to have the effect that it only appears when the user has already visited and saved their user account page, which kind of defeats the purpose :)

  4. If we're going to do this we really need to discuss the usability. For someone who wants to continue using the overlay it will be annoying to have this on every single page. And for someone who wants to turn the overlay off right away, it will be pretty odd that the effect of clicking this link is to...... take them directly into the overlay.

    The right way to do this is something more like "Disable the administrative overlay (dismiss this message). You can also change this setting later on your user account page."

    Only show the link on user_access('access overlay') && !isset($user->data['overlay']) - i.e., to people who have not made a choice yet. The "disable" and "dismiss" links would have to go to callbacks (or even AJAX) that saved the user account with $user->data['overlay'] explicitly set to TRUE or FALSE.

    This is a little complicated but in my opinion is the only reasonable way to do it.

CommentFileSizeAuthor
#324 drupal_page_not_found.jpg40.48 KBradoeka
#316 black.zip1.39 KBjacine
#296 garland-patch-234.png55.74 KBDavid_Rothstein
#296 garland-patch-248.png47.16 KBDavid_Rothstein
#296 garland-patch-268.png52.82 KBDavid_Rothstein
#293 896364-293.patch13.03 KBeffulgentsia
#279 core-dismiss-overlay.patch13.09 KBjames.elliott
#276 896364-276.patch13.05 KBeffulgentsia
#273 896364-273.patch12.97 KBjacine
#273 seven-blue-button.png286.03 KBjacine
#273 seven-blue-button-wrapped.png256.68 KBjacine
#268 896364-267.patch12.89 KBjacine
#267 seven-disable-message-alignment.png26.9 KBjacine
#267 bartik-disable-message-alignment.png35.14 KBjacine
#262 896364-262.patch12.83 KBeffulgentsia
#253 896364-253.patch12.36 KBjacine
#253 stark-inside-overlay-default-styles.png30.89 KBjacine
#253 stark-outside-overlay-default-styles.png26.69 KBjacine
#253 bartik-inside-overlay-default-styles.png40.65 KBjacine
#253 bartik-outside-overlay-default-styles.png52.17 KBjacine
#253 seven-inside-overlay-styled.png34.55 KBjacine
#253 seven-outside-overlay-styled.png27.33 KBjacine
#249 896364-248.patch12.99 KBjacine
#248 outside-overlay-stark.png134.36 KBjacine
#248 stark-safari.png226.44 KBjacine
#248 stark-ie-6-7-8.png487.11 KBjacine
#248 stark-ff4.png159.17 KBjacine
#248 stark-ff3.6.png181.8 KBjacine
#248 stark-ff2.png136.1 KBjacine
#248 stark-chrome.png148.16 KBjacine
#248 outside-overlay-seven.png110.09 KBjacine
#248 seven-safari.png128.84 KBjacine
#248 seven-ie-6-7-8.png436.04 KBjacine
#248 seven-ff4.png137.3 KBjacine
#248 seven-ff3.6.png155.81 KBjacine
#248 seven-ff2.png157.67 KBjacine
#248 seven-chrome.png123.14 KBjacine
#248 outside-overlay-garland.png125.02 KBjacine
#248 garland-safari.png218.93 KBjacine
#248 garland-ie-6-7-8.png545.35 KBjacine
#248 garland-ff4.png226.18 KBjacine
#248 garland-ff3.6.png240.06 KBjacine
#248 garland-ff2.png183.74 KBjacine
#248 garland-chrome.png190.99 KBjacine
#248 outside-overlay-bartik.png180.1 KBjacine
#248 bartik-safari.png236.12 KBjacine
#248 bartik-ie-6-7-8.png552.01 KBjacine
#248 bartik-ff4.png189.33 KBjacine
#248 bartik-ff3.6.png244.52 KBjacine
#248 bartik-ff2.png161.03 KBjacine
#248 bartik-chrome.png144.98 KBjacine
#240 overlay-disable-links-smushed.png9.54 KBjacine
#234 core-overlay.patch14.14 KBjames.elliott
#222 896364-overlay-222.patch11.63 KBeffulgentsia
#219 896364-overlay-219.patch9.95 KBeffulgentsia
#213 896364-overlay-213.patch7.87 KBDavid_Rothstein
#189 seven-disable-overlay-styles-2.patch2.06 KBJeff Burnz
#189 overlay-disable-message_blue-oneline.png22.67 KBJeff Burnz
#189 overlay-disable-message_blue-wrapping.png17.16 KBJeff Burnz
#187 disable-overlay-message-idea.jpg125.36 KBBojhan
#182 overlay-disable-message_blue.png40.63 KBJeff Burnz
#182 seven-disable-overlay-styles.patch2.19 KBJeff Burnz
#176 896364-overlay-176.patch8.42 KBDavid_Rothstein
#166 overlay-disable-message.png27.45 KBJeff Burnz
#163 896364-overlay-163.patch7.75 KBDavid_Rothstein
#161 896364_patch_20100929_1.patch9.95 KBfrega
#159 896364_patch_20100929.patch10.76 KBfrega
#154 896364_patch_20100928.patch9.9 KBfrega
#144 overlay-message.png46.54 KBDavid_Rothstein
#131 drupal.overlay-dismiss.131.patch4.89 KBsun
#126 896364_overlay_4.patch4.82 KBfrega
#124 896364_patch_4.txt4.82 KBfrega
#113 897638_overlay_4.patch10.22 KBfrega
#97 897638_overlay_3.patch3.89 KBfrega
#93 element-focusable_897638-2.patch2.93 KBmgifford
#93 screen-capture-5.png150.08 KBmgifford
#92 all_admin_pages_open_in_an_overlay_window.png396.14 KBmgifford
#76 drupal.overlay-disable.76.patch2.9 KBsun
#71 drupal.overlay-disable.70.patch2.88 KBsun
#70 896364_overlay_2.patch5.14 KBfrega
#61 896364_overlay.patch7.11 KBfrega
#54 overlay-disablelink.patch4.41 KBcasey
#49 896364_patch_3.txt5.87 KBfrega
#13 890288_overlay_disable_3.patch3.13 KBfrega
#10 890288_overlay_disable_2.patch3.5 KBfrega
#7 890288_overlay_disable.patch3.14 KBfrega

Comments

David_Rothstein’s picture

Title: Screen readers need a clear, quick way to be able to disable the overlay » Screen reader users need a clear, quick way to be able to disable the overlay

Better title - I keep getting reminders in other issues that screen readers are pieces of software, not people :)

David_Rothstein’s picture

Bojhan asked for a little more background here.

The goal here is to give screen reader users (who, depending on which particular screen reader software they are using, may be confused by the overlay interaction) the ability to quickly disable it if they choose to.

Each administrator's user account page already has a setting to turn the overlay on/off for that user, but the concern was that wouldn't be obvious to find.

So the proposal is to make it easier to find by putting text that only screen reader users can read (or, probably, for technical reasons, also which keyboard users can see, although for them it would only appear when they tab to it with the keyboard) at the top of every page of the site.

The code I pasted above adds a link "Disable the overlay" at the top of the page, and clicking it takes you to your user profile page (where you then have to toggle the setting and save the form in order to actually make the overlay disabled).

My review above addresses that approach and makes additional suggestions.

shunting’s picture

Damien Tourmond writes:

Given that everyone at this point wants Drupal 7 out of the door, my speculation is that the overlay will *never* be truly accessible. It is not as much a concern as it seems. People that want to certify sites against WCAG will be able to either (1) disable the overlay and leave it out of scope of the certification or (2) improve the overlay solution (in contrib) and disable the one provided by core.

It would seem, then, that giving the option to disable overlay during installation is really the cleanest solution. And otherwise -- hoping I'm not oversimplifying -- if we force everyone to install it, aren't we placed in the position of telling users with accessibility concerns to disable something through the very interface that is not accessible to them?

Everett Zufelt’s picture

@shunting wrote:

Damien Tourmond writes:

Given that everyone at this point wants Drupal 7 out of the door, my speculation is that the overlay will *never* be truly accessible. It is not as much a concern as it seems. People that want to certify sites against WCAG will be able to either (1) disable the overlay and leave it out of scope of the certification or (2) improve the overlay solution (in contrib) and disable the one provided by core.

This is partly correct. What is missing is a reference to situations where users may be attempting to use a site that was built without accessibility in mind. We are doing our best to ensure that functionality native to Core be natively accessible.

It would seem, then, that giving the option to disable overlay during installation is really the cleanest solution.
And otherwise -- hoping I'm not oversimplifying -- if we force everyone to install it, aren't we placed in the position of telling users with accessibility concerns to disable something through the very interface that is not accessible to them?

I don't think we are doing this.

My recommendation is that the UI to disable the Overlay appear:

1. Only when Overlay is open.
2. At the top of the DOM and at the top of the Overlay segment of the DOM (before the skip link).

This may still cause problems for some screen-reader users, depending on the technology (screen-reader / browser combo) they are using. But, this is the best we can do without disabling the Overlay by default in Core, which is not an option, and which would still not solve the problem for sites where Overlay is enabled.

chx’s picture

Clear, quick... can't we add a fasttoggle like menu path? I have already asked this in the per user overlay toggle patch. Don't forget that we are talking of new users. You click on a "disable overlay" link and met with a sea of checkboxes, text fields and whatnot. Awesome UX!

Bojhan’s picture

@chx If its technically possible, I think we would always favor that kind of approach. Was under the impression that is hard to do.

frega’s picture

StatusFileSize
new3.14 KB

Hi, a first stab at the issue. Patch attached. It displays a "disable overlay"-link early in the html and exposes an additional menu path (as suggested by chx above). All the Javascript-ARIA-Stuff from #716612 has been left out. It does not address comment #4's point that the "disable overlay"-link/UI should only appear when the overlay opens; I don't have a JAWS or similar setup (nor experience :) and have only tested this in lynx and FF w/o CSS.

1) The link text should perhaps be a bit more expansive/comprehensible for new users; maybe: "If you are using a screenreader, you might encounter problems using the administrative overlays. Please click here to disable them.".

2) David_Rothstein wrote: "For someone who wants to continue using the overlay it will be annoying to have this on every single page". To address that, we could show the following text/links for screenreaders only until a choice has been made: "If you are using a screenreader, you might encounter problems using the administrative overlays. Link 1: 'It works fine for me, I want to keep the overlays' and Link 2: 'Deactivate the overlays'". Once a choice has been made these links wouldn't be displayed anymore. That is easily implemented.

cliff’s picture

subcribing

chx’s picture

Hrm, that's not CSRF protected. http://drupal.pastebin.com/0cgEAUgX

frega’s picture

StatusFileSize
new3.5 KB

Updated the patch.
1) Incorporated chx's code (but maintaining 'access arguments' => array('access overlay')).
2) Moved (for the time being) the CSS for the #disable-overlay wrapper into a separate file (overlay.css) because overlay-parent.css is not loaded on pages normally opening in overlays (e.g. /user/1/edit) thus "exposing" the disable link; using class .element-invisible was rejected in #716612 and the only other option seemed to patch all themes (style.css) like in the case of #skip-link. Looking for a more elegant solution - maybe a shared class for #skip-link and #disable-overlay (or all "screenreader" elements?)

webchick’s picture

Status: Active » Needs review

There's a patch; marking "needs review".

chx’s picture

You can get back to my simpler menu callback IMO. drupal_goto handles $_GET['destination'] I believe. Also, we almost never check the return value of user_save...

frega’s picture

Status: Needs review » Active
StatusFileSize
new3.13 KB

Ok, cleaned up overlay_user_disable() as per chx suggestions; kept feedback message and drupal_goto to user edit page / or given destination.

Outstanding points:
1) Finalise wording of the link text (and/or link title) to be more comprehensible for new users (see comment 7 above, point 1)
2) Functionality: display message to screenreaders only until a first choice (keep/disable) has been made? Or show disable link always when overlay active? (see comment 7, point 2)
3) CSS: Can #skip-link and #disable-overlay share a class? Where do we put #disable-overlay-CSS?

yoroy’s picture

Title: Screen reader users need a clear, quick way to be able to disable the overlay » Screen reader users need a clear, quick way to disable the overlay
Status: Active » Needs review

ping testbot

casey’s picture

+      $page['page_top']['disable_overview'] = array(

should be disable_overlay

+      // @todo: There must be a better way than include a css file for just one line, but overlay-parent.css is *not* included on admin pages
+      // and otherwise we'd have to put #disable-overlay (like #skip-link) in all themes css files.
+      // Using a class "element-invisible" apparently is not ok (@see http://drupal.org/node/716612#comment-3383342).
+      drupal_add_css( drupal_get_path('module', 'overlay') . '/overlay.css' ) ;

we could use .invisible-element if we handle #897638: Make .element-invisible work for focusable elements like links first.

Anonymous’s picture

Can we use a key binding? Although I believe people prefer not to have these, if I understand the literature correctly.

And/ or add a explanation to the top.

Pseudocode:

</head><html>
<h1>Site title</h1>

<div id="disable-overlay">
<h2>Accessibility Instructions</h2>
<h3><a href="">Skip to content</a></h3>

<p>Please use the link in the heading above to skip directly to the content.</p>

<h3>General visitor</h3>

<p>Welcome to [site name]. This website has been made accessible according to ... specifics.</p>

<h3>Registered user</h3>

<p>To disable the screen overlay press 'key binding or link'.</p>

(Optional)
<h3>Problems</h3>
<p>If you have any problems navigating the site please contact the site owner [link to contact page].</p>
</div>

Only problem with some of the above is that if people adjust their themes or use an incorrect heading structure, the theme is no longer fully accessible, which could throw people off.

It would give a clear area for people to find information.

Everett Zufelt’s picture

A key binding is an interesting idea. But, since this is likely going to be a one time use thing I'm not sure that it would be that benificial. Also, it is difficult to find a key binding that doesn't conflict with key bindings for the OS / Browser / Assistive technology combos that may be in use.

Anonymous’s picture

But, since this is likely going to be a one time use thing

How about on the registration form?:

----

User name:

User name field

Password:

Password Field

Accessibility

Check box: (default empty) Check this if you want to enable the accessibility administration theme.

Submit button

-------------

Or something to that effect. Then store this in the user settings. Allow the user to change the option in their user profile, in case some one by accident checks the check box?

webchick’s picture

We're not cluttering up areas such as the installer, the user profile form, etc. for options that only affect the 0.0001% of users out there who are Drupal admins, as opposed to end users on a Drupal site. No.

Anonymous’s picture

#19 -1

It would add Drupal to the fore-front of Accessible CMS's implementing a proper accessibility feature.
And Drupal is spending a lot of time making it accessible, which is to be commended.

Sad to hear though that people with bad sight are seen as a demographic small number, and that this would be the basis for a decision.

Speaking as someone with a disability.

Everett Zufelt’s picture

@design_dolphin

I agree that the user registration form is the wrong place to put this option. It is best, usually, to place a control nearest to the feature that it will deactivate. As a simple user I would have absolutely no idea what I was choosing to enable or disable from the registration form.

Speaking as a person with a disability :)

yoroy’s picture

The distinction webchick makes is that between admins and regular users and content creators, not between people with and without a disability. We´re still working on solving the actual issue, too.

Everett Zufelt’s picture

OT:

My experience with other CMSs is limited, but I think that it is safe to say that the Drupal community has put more effort and time into accessibility than any other. Also, since my involvement with Drupal began I have not seen an issue not resolved because the quantity of users affected was marginal. We are doing a great job, the concept of placing the overlay disable link on the user registration form is just a poor design option.

webchick’s picture

Yes, to be clear, my comment was about the ratio between "number of users reading / commenting on / rating stuff / whatever on site X" to "people on site X who will actually see the Overlay". It makes zero sense to expose options to all people that only apply to a tiny, tiny subset of people who are actually affected.

Putting this option on or near the actual Overlay, though, makes a lot of sense, because then the people actually affected by it can make the decision. AFAIK that's what this patch is doing.

chx’s picture

Why redirect to user/X/edit?

Everett Zufelt’s picture

@chx

We have two choices. 1. Provide a toggle that turns overlay off and then modifies the setting in the user profile. 2. Direct the user to their profile page to disable it them self.

1. Is more transparent for the user, and faster.

2. Gives * some * context to the user should they wish to enable again.

I'm quite happy with either approach.

Anonymous’s picture

To be clear, I wasn't pushing that the registration form would be the best option.

@webchick

Thanx for clearing that up. I appreciate it.

chx’s picture

Well context is good. I am OK with the patch, then.

Bojhan’s picture

chx, is good with the patch if Everett is too all we got to fix is the wording "Disable administrative overlay" - is that what we use on user profile to? I feel its handy to refer in this sentence to the user profile, rather then the action?

Everett Zufelt’s picture

@Bojhan

The title of the iframe in which the Overlay content lives is "... dialog" e.g. "People dialog". IMO dialog is more understandable than Overlay (since it maps to desktop applications. I had never heard of an "Overlay" as part of a UI before D7. In another issue I have suggested switching the text for the close button from "Close Overlay" to "Close dialog" to be more consistent with the iframe title.

The problem is that Dialog is likely easier to understand, but Overlay is what we are calling it in D7, and what we call it on the User Profile page.

We also somehow need to communicate that this dialog / overlay thing, that I have the option to disable, is the thing that might be causing me problems accessing administrative tasks on the site.

I'm not sure how to communicate that clearly and concisely.

Everett Zufelt’s picture

If nobody comes up with something better:

This site presents administrative pages in a dialog (Overlay), which may not work properly with all assistive technology. Disable the Overlay from your User ProfileDo not show me this message again

The problem with the second link is that a keyboard only user may be confused. Show me what message? Since the message will likely be hidden with .element-invisible

yoroy’s picture

My suggestion would then be:

Administrative pages are shown in an overlay. Disable the overlay if you have problems accessing administrative pages. (Do not remind me again)

frega’s picture

I'd loved to reroll the patch according to #13, #28 and #31 but am still a little confused :) and have a suggestion myself, hth.

So just to restate #31 for myself: A) We display the following in an ".element-invisible"-div to logged-in users w/ overlay access permissions:
"This site presents administrative pages in a dialog (Overlay), which may not work properly with all assistive technology"
-> Disable the Overlay on your User profile (->user/{x}/edit)
-> Do not show me this message again (disables this information message and reloads the page)

B) Alternative/My suggestion: display the message above only as long as *no explicit choice* to enable (or disable) it has been made and offer following choices:
-> Disable the Overlay (->disable the overlay ->return to current page and provide "context" in the status message instead: "The overlay has been disabled. You can enable it on your user profile [linked to user/{x}/edit]")
-> Keep the Overlay (->explicitly enable the overlay -> return to current page and provide "context" in the status message: "The overlay has been enabled. You can disable it on your user profile [linked to user/{x}/edit]")

But i am happy to adjust the patch according to A) or B) :)

EDIT: Oops, didnt see #32 - I like the wording; does the link take the user profile or does it directly disable the overlay?

Anonymous’s picture

Should the text include letting the user know that they can still use the admin even though the overlay is disabled? (New) users might otherwise get the idea that they can't use the administration?

Everett Zufelt’s picture

@32 with some tweaks

Administrative pages are currently shown in an overlay. Disable the overlay from your User Profile if you have problems accessing administrative pages. (Do not remind me again)

We still need to address how to show the message. .element-invisible is not acceptable for the links, as they are focusable. Also, the second link still doesn't make sense out of the context of the message (which is what a sighted keyboard only user would get if the links alone are shown on focus). Can we make the entire message invisible by default, but show the entire message if either link has focus using a technique similar to that used for skip links?

Everett Zufelt’s picture

@design_dolphin

Does the message in #35 address your concern in #34?

Anonymous’s picture

No, it is confusing.

It should be made clear that the overlay is an extra option/ feature, and not needed for normal administrative navigation. This until the overlay is accessible.

I like the rest of it, but maybe something like:

Administrative pages can be shown in an overlay. This overlay may not yet be accessible with all accessible technology. Disable the overlay from your User Profile if you have problems accessing the administrative pages in the overlay, in order to use the normal administration menu. (Do not remind me again)

Everett Zufelt’s picture

We might even consider having the disable link go directly to the label for the Overlay disable checkbox on the user profile edit page.

Everett Zufelt’s picture

@design_dolphin

I agree that it is necessary to be clear that no admin functionality will be lost. I don't think that we necessarily need to refer to assistive technology.

Anonymous’s picture

Wouldn't #38 have a 'Where am I going' effect? If routing to the top of the user registration form the user would know where they are.

Everett Zufelt’s picture

@design_dolphin

I don't really see a problem with linking to the label for the Overlay checkbox on the profile page. Users know they are going to the user profile page (the link says so). Any drawback of not starting at the top of the page is mitigated by the benefit of landing exactly where you need to be to disable the Overlay.

Anonymous’s picture

So something like?

Administrative pages can be shown in an overlay. If you have problems accessing the administrative pages in the overlay, in order to use the normal administration menu disable the overlay from your User Profile. (Do not remind me again).

I have some qualms about making a distinction between visual and non-visual users. Hence some kind of note that it is being worked on making the overlay accessible, as far as I understand.

It might be nice to add a text somewhere that people can help with getting the overlay accessible, testing it? Wouldn't know what the best place for that text would be though. Somewhere on the drupal.org site, with the message above, or near the registration form.

Anonymous’s picture

#41 o.k. sounds good. I can follow that train of thought.

Bojhan’s picture

Lets get a patch up that does #35 - we need to show the whole message.

I do not share design_dolphin his concerns, we can't afford to clutter this message. The most important thing is to conceive the thing that might be causing trouble can be disabled on the user profile page. All other things will be adding clutter.

I don't know if we can route it directly to the checkbox, it would need a href?

David_Rothstein’s picture

We have two choices. 1. Provide a toggle that turns overlay off and then modifies the setting in the user profile. 2. Direct the user to their profile page to disable it them self.

1. Is more transparent for the user, and faster.

2. Gives * some * context to the user should they wish to enable again.

FYI, one of the reasons I suggested this text originally was that I think it provides both: "Disable the administrative overlay (dismiss this message). You can also change this setting later on your user account page."

You get the convenience of turning it off right away, but the info you need to know where to go to change that again later. I don't see why we need to choose between transparency and context here.

(And also, as stated above, having people who want to turn off the overlay for accessibility reasons have to go into the overlay - where the user account page is - to do it strikes me as at least a little odd....)

Anonymous’s picture

I'm fine with doing it like #45, except that it does not yet make clear that there will still be an administration menu, when you turn the 'administrative overlay' off.

Edit:

Correction: if the user cannot get to the user page if it is on the administrative overlay, then how can they change the setting later? That might be confusing.

yoroy’s picture

Status: Needs review » Needs work

Lets test that with an updated patch :)

Anonymous’s picture

Let's get some concensus then on what the patch should contain. Then one of us can build it, and we can review, and sign it off. :-)

frega’s picture

Status: Needs work » Needs review
StatusFileSize
new5.87 KB

I hope it's not in too bad form to just go ahead and write a patch w/o consensus; had a few minutes at hand to work on patches right now :)

Approach:
A) Single link on top: "Click here if you have problems accessing the administrative pages (opening in Administrative overlays) or you want to dismiss this message" and linking this to B)

B) Page for more details what's happening and why; two links to 1) directly "Disable the overlay" (without *ever* going into an overlay) and 2) "Dismissing the message" (and keeping the overlays on).

Reasoning:
A) keeps the message (relatively) short and avoids another invisible link "appearing" on focus (see #35 above) B) gives more space to flesh out in detail what's going on. Overlays will be possible to disable without opening an overlay (see #45).

Texts certainly need rewriting. I hope this helps :)

yoroy’s picture

Testable patches are a great way to work towards consensus, so thanks for this. Certainly not bad form!

casey’s picture

I think we easily could use one user data variable to store user's overlay preference by using some constants.

/**
 * Current user has not yet set his preference regarding the overlay; the overlay will be used, but an hidden, yet accessible, message is presented that allows the user
 * to easily set his preference.
 */
define('OVERLAY_PREFERENCE_INITIAL', 0);

/**
 * Current user prefers to use the overlay for administrative pages.
 */
define('OVERLAY_PREFERENCE_ENABLED', 1);


/**
 * Current user prefers not to use the overlay for administrative pages.
 */
define('OVERLAY_PREFERENCE_DISABLED', 2);

If we store this value into $user->data['overlay'] we don't need $user->data['overlay_message_dismissed'].

Anonymous’s picture

@frega, I agree with @yoroy. Wanted to avoid 10 people writing a (the same) patch, and wasting the time and energy.

casey’s picture

Assigned: Unassigned » casey

Patch incoming in 15min or so.

casey’s picture

Assigned: Unassigned » casey
StatusFileSize
new4.41 KB

Sorry it was more like an hour.

I didn't really like all the new pages of previous patch.

Attached patch:
- Direct link to account edit page having the "overlay-exclude" class to prevent opening in the overlay.
- The disable message disappears as soon as the user has set his overlay preferences (We could extend the account edit page to reset overlay preferences so the message becomes visible again).
- Disable message/link becomes visible on focus. Not too sure about its looks; tried to keep close to toolbar/overlay style.

casey’s picture

Assigned: casey » Unassigned

Feel free to post new patches

Everett Zufelt’s picture

Assigned: casey » Unassigned

@Casey

Does your patch render the link before or after the skip to link in the DOM? I am thinking that after is better, so that we can set focus to the skip link and this link will be after.

Also, does your patch add this link both to the top of the Overlay and the underlying document?

casey’s picture

After, but only to the parent (underlying) page. You think we need it on both? Thinking about it, you may be right then.

Everett Zufelt’s picture

@Casey

Since we can't really predict how the overlay will work for all AT / Browser combos I'd like to see the disable link at the top of the DOM and the top of the Overlay (both times after Skip to ...) This means that if the user lands in the iframe they will have the link, if they land at the top of the page they will have the link.

Anonymous’s picture

#54 +1
#58 +1

One thing that did come up: How does a first time user register? By looking at it, I think #54 en #58 will cover it. Anyone see any usability problems, and should the first time registration be made clearer, or is it fine like this?

@@ -75,7 +90,7 @@
         '#type' => 'checkbox',
         '#title' => t('Use the overlay for administrative pages.'),
         '#description' => t('Show administrative pages on top of the page you started from.'),

I like the title, but for the description I don't understand the part 'you started from'.

How about?

'Show administrative pages on top of the page.'

or:

'Show administrative pages on top of the page you're on.'

Any thoughts?

Anonymous’s picture

I can't patch from here at the moment, but feel free to do so.

Let's get this bug fixed.

frega’s picture

StatusFileSize
new7.11 KB

Based on casey's patch in #54, tries to address issue raised in #58.

Attached patch:
- Uses template_preprocess_overlay() to insert the $disable_overlay_link into overlay.tpl.php (hook_page_alter wouldn't have gotten us to the 'top')
- Adjustes overlay.tpl.php
- overlay-child.css copies CSS from overlay-parent.css and adds a z-index:101 (to lay on top of e.g. #overlay-title-bar)
- Uses NULL/!isset instead of the constant OVERLAY_PREFERENCE_INITIAL introduced in #54

alexiswatson’s picture

@59: Good point, we would need something that states the context and the functionality, without being too redundant or jargon-heavy. Perhaps something like "Show administrative features on top of the current page" would work?

chx’s picture

Can't we put this long text into the attribute title instead of the link text itself and make the link text shorter (a lot shorter)?

Everett Zufelt’s picture

We can not trust assisitive technology to reliably use the anchor title since:

1. Most don't and,
2. There is no API stating that this is expected behaviour for AT.

sun’s picture

Status: Needs review » Needs work

Here's my initial review. Note that I have tried to remain as ignorant as possible as to what's been going on in this issue, so that I can give it a totally fresh set of eyes. Apologies if any of this was already mentioned above; I'll read the issue once I'm done here.

+++ modules/overlay/overlay.module	9 Sep 2010 17:56:03 -0000
@@ -7,6 +7,16 @@
 /**
+ * Current user prefers not to use the overlay.
+ */
+define('OVERLAY_PREFERENCE_DISABLED', 0);
+
+/**
+ * Current user prefers to use the overlay.
+ */
+define('OVERLAY_PREFERENCE_ENABLED', 1);

Please remove those constants. There is no other state, so it can only ever be 0/1, and that's entirely and sufficiently communicated via 0 and 1.

+++ modules/overlay/overlay.module	9 Sep 2010 17:56:03 -0000
@@ -105,8 +115,8 @@ function overlay_init() {
-  $use_overlay = !isset($user->data['overlay']) || $user->data['overlay'];
...
+  $use_overlay = !isset($user->data['overlay']) || $user->data['overlay'] == OVERLAY_PREFERENCE_ENABLED;

This can be reverted, too - without type-agnostic comparison, the old and the new are identical (in PHP).

+++ modules/overlay/overlay.module	9 Sep 2010 17:56:03 -0000
@@ -254,10 +264,32 @@ function overlay_page_alter(&$page) {
-  if (overlay_get_mode() == 'child') {
+  $mode = overlay_get_mode();
+  if ($mode == 'child') {
...
+  elseif ($mode == 'parent') {

Does Overlay implement other modes than 'child' and 'parent'? If it does not, then we can revert to the old if/else condition.

+++ modules/overlay/overlay.module	9 Sep 2010 17:56:03 -0000
@@ -254,10 +264,32 @@ function overlay_page_alter(&$page) {
+    // If the current user can access the overlay but has not expressed a preference regarding the overlay (or saved his/her profile),
+    // display a "disable overlay" link to the user profile for improved accessibility.

(and elsewhere) All comments should wrap at 80 chars. See http://drupal.org/node/1354 for details.

+++ modules/overlay/overlay.module	9 Sep 2010 17:56:03 -0000
@@ -254,10 +264,32 @@ function overlay_page_alter(&$page) {
+        '#title' => t('If you are having problems accessing administrative pages (which are currently opening in an overlay on top of your website) or if you want to dismiss this message, you can set your overlay preferences on your user account page.'),

(and elsewhere) This link text needs to be shortened to the point - to be improved suggestion:

"Click here If you cannot access the overlay. It can permanently disabled in your account settings."

+++ modules/overlay/overlay.module	9 Sep 2010 17:56:03 -0000
@@ -324,9 +356,27 @@ function overlay_preprocess_maintenance_
+  if (!isset($user->data['overlay']) && user_access('access overlay')) {
+    $variables['disable_overlay_link'] = l(
...
+  }
+  else {
+    $variables['disable_overlay_link'] = FALSE;
+  }

+++ modules/overlay/overlay.tpl.php	9 Sep 2010 17:56:03 -0000
@@ -21,6 +21,7 @@
+<?php if ($disable_overlay_link): ?><div id="overlay-disable-link"><?php print $disable_overlay_link; ?></div><?php endif; ?>

Instead of suddenly using l() here, we should use the same renderable array (ideally, even through a helper function), assign it to the template variables, and use render() in the template.

To do that, FALSE has to become array(), I think.

Powered by Dreditor.

yautja_cetanu’s picture

"Click here If you cannot access the overlay. It can permanently disabled in your account settings."

Would people have a problem understanding what "the overlay" is? The original text talks about "problems accessing administrative pages" and then explains the reason is due to an overlay , hence why they would want to turn it off?

How about?
"The administrative pages open an overlay over your website. Click here If you cannot access the overlay. It can permanently disabled in your account settings."

sun’s picture

"All administrative pages open in an overlay window. Click here If you cannot access them."

After clicking, and only after clicking, we display the following message:

"Disable the overlay permanently in your <a href="@account-url">account settings</a>."

Not sure whether we have a neutral message type anymore. A green/positive status icon would look odd to me, so I'd perhaps go with the 'warning' type.

verbosity’s picture

#67 +1

Everett Zufelt’s picture

@Sun

Can you please explain how we are doing the message switch? Are you suggesting that we dynamically change the message, or that we redirect to a page with the second message?

I think that ideally there would be one message that directs the user to their edit profile page.

** that being said wording of this message is not a sticking point for me. I will give a big +1 to anything that reasonably solves the problem of:

1. Communicate that Overlay exists, what it does, and how to disable it.

2. Provides a way to get to the UI to disable Overlay.

frega’s picture

Status: Needs work » Needs review
StatusFileSize
new5.14 KB

@sun - thanks for the review in #65. I rerolled accordingly (see details below).

Finding the right phrasing seems really tricky; I for sure can't come up w/ anything short & decent :)

I don't yet entirely get what intended plan in #67 is. How would you let the "Disable the overlay permanently in your account settings." show up in an *accessible* way - i.e. respecting tab order (and no JS)? I like the idea though, and suggested in #49 to introduce a dedicated page which could keep the link short "Click here if you are having problems ...". The link takes you to a dedicated page with more illustrating text. On that page we show either a dedicated "disable"-link/menu-callback or a link to the user profile (my patch in #49 went in that direction, but i'd do it *way* simpler now).

EDIT: i think i raise a similar question like Everett in #69 :)

Patch (addressing review in #65)
- constants removed
- keeping the elseif ('child', 'parent' and NULL are possible modes; null value occurs when an admin page [that should normally be a "child"=in the overlay] is opened directly via URL)
- re-wrapped comments
- changed link text to: "Click here if you cannot access the overlay. The overlay (and this message) can be permanently disabled in your account settings."
- introduce a helper function for the renderable array (incl. converting l() to renderable array), adjusted overlay.tpl.ph

sun’s picture

StatusFileSize
new2.88 KB

This should cut it. If we link to the user account edit form (like the previous patch already did), then there's not even a need for a message or any kind of toggle, IMHO.

Everett Zufelt’s picture

Copy of markup for link from the DOM:

<div id="overlay-disable-link"><a title="All administrative pages open in an overlay window. Click here If you cannot access them." class="overlay-exclude element-invisible" href="/user/1/edit?destination=admin/structure#edit-overlay-control">Disable administrative overlay</a></div>

1. The title attribute is an unreliable method of presenting information related to accessibility, since most screen-readers, keyboard only usrs, etc., do not have access to an anchor's title.

2. This appears to work as expected: link appears at top of DOM and top of iFrame, link takes user to profile edit page and lands on Overlay option.

Looks like if we can get the wording on the link correct we are good to go.

chx’s picture

yoroy’s picture

If you have problems accessing administrative pages in this overlay: click here. You can permanently disable the overlay on your user account page.

chx’s picture

So far this is the shortest, by far: You may turn off the administrative overlay and dismiss this message in you account preferences. (based on josiahritchie's , i just changed the "or" to "and")

sun’s picture

StatusFileSize
new2.9 KB

Mixed in Everett's and yoroy's suggestions.

re #75: There's no message any longer, just a link.

Bojhan’s picture

"All administrative pages open in an overlay window. If you cannot access them, disable the administrative overlay in your account settings."

The requirements set by Everett are met?

  • Communicate that overlay exists (check)
  • What it does (check)
  • How to disable it(check)

So RTOTHEBC!

Bojhan’s picture

Status: Needs review » Reviewed & tested by the community
yoroy’s picture

Status: Reviewed & tested by the community » Needs review

Oh I misunderstood, there's only 1 link to show. 'You may' is unnecessary and I don't think we have to explain that the message will disappear either.

"Turn off the administrative overlay in your account preferences."

Hmm, that's rather blunt.

"You can turn off the administrative overlay in your account preferences."

Do we have to specifiy the destination of the link though? Seems more important to give a hint as to why you'd want to disable it:

"Disable the overlay if you have problems accessing administrative pages."

Seems good. Action first and enough context to decide on whether you want to.

yoroy’s picture

Status: Needs review » Reviewed & tested by the community

Oops

Bojhan’s picture

@yoroy Hah, I think we are cross posting, last patch is ok or not?

yoroy’s picture

Yup, sounds good to me

cliff’s picture

Looks good!

David_Rothstein’s picture

Status: Reviewed & tested by the community » Needs work

This issue has taken lots of twists and turns, but it still comes back to the original points...

  • We aren't supposed to put focusable elements (links) inside the element-invisible class, at least not unless #897638: Make .element-invisible work for focusable elements like links is fixed. It says so directly in the documentation of element-invisible:
     * Must not be used for focusable elements (such as links and form elements) as this
     * causes issues for keyboard only or voice recognition users.
    
  • For any screen reader user (or keyboard user, potentially) this text is going to annoyingly appear at the top of every page with no way to turn it off (edit: or at least, no way to turn it off without also turning off the overlay, of course). That seems silly when we can have a "dismiss this message" kind of functionality... I don't understand why that was taken out?
sun’s picture

+++ modules/overlay/overlay.module	14 Sep 2010 18:28:40 -0000
@@ -258,6 +258,42 @@ function overlay_page_alter(&$page) {
+  if ((!isset($user->data['overlay']) || $user->data['overlay']) && user_access('access overlay')) {

I've added the isset() + TRUE condition, because I assumed that an administrator could mistakenly save a user's account, in which case the option would be unintentionally set. To account for both scenarios (no annoying link after configuration), I think we'd have to add a $user->uid == $account->uid check to overlay's hook_user_presave(), so as to not ever save that value in case it wasn't changed by the user himself/herself.

+++ modules/overlay/overlay.module	14 Sep 2010 18:28:40 -0000
@@ -258,6 +258,42 @@ function overlay_page_alter(&$page) {
+          'class' => array('overlay-exclude', 'element-invisible'),

d'oh on the .element-invisible. Looks like it would be a good idea to postpone this issue on the other one then, since duplicating all the CSS that has been added previously really does not make much sense.

Powered by Dreditor.

Everett Zufelt’s picture

1. Didn't realize element-invisible was in use, my bad. This needs to appear on focus.

2. There does need to be a way to make the message disappear (but I do not see this as critical, although others might). The message should only be able to be made to disappear with an explicit action by the user of either disabling the Overlay or disabling the message.

Anonymous’s picture

and suggested in #49 to introduce a dedicated page which could keep the link short "Click here if you are having problems ...". The link takes you to a dedicated page with more illustrating text. On that page we show either a dedicated "disable"-link/menu-callback or a link to the user profile

+1

The link could be short and just say: "Click here if you are having problems with the administrative overlay". This could give the possibility to link to a page, and explain the situation clearly and concisely.

(It would also save time in our breaking our heads, possibly needlessly, in order to get a short link that says it all. As well as providing an accessibility page for people (with just some of the basics). Which may be a good thing for more information to be put on accessibility in Drupal in general, but I digress.)

Otherwise maybe a link?: Trouble with the overlay? Click here for alternative
or something like: Trouble with the administrative overlay? Click here for an accessible version
or something like: Accessibility trouble with the administrative overlay? Click here.

But you better make sure all the navigation is accessible then. Otherwise explain that it is a work in progress, and all input is welcomed. This has to do with expectation levels.

There are limits to how short you can make a link, and still be descriptive, but please prove me wrong. Please keep in mind that the directive is to keep links descriptive.

As I recall this is a temporary solution till the overlay is accessible, please correct me if I am wrong. So let's not spent more time on it than needed.

This topic is going a bit in circles at times. For those replying: Please keep in mind that it must remain clear that a user can use the administration pages without the overlay. A link which says to only turn off the 'administrative overlay', and giving no alternative will leave users undoubtedly confused, and put off.

Keep it rocking! =)

Edit: changed and added link text.

Bojhan’s picture

Status: Needs work » Postponed

@design_dolphin we already decided on the text.

Postponing on
#897638: Make .element-invisible work for focusable elements like links

David_Rothstein’s picture

Please keep in mind that it must remain clear that a user can use the administration pages without the overlay. A link which says to only turn off the 'administrative overlay', and giving no alternative will leave users undoubtedly confused, and put off.

Yes, this is a good point, which the current text does not address; I think people will figure it out, but may indeed stumble on it. Perhaps could be handled just by tweaking it, though. Instead of this:

All administrative pages open in an overlay window. If you cannot access them, disable the administrative overlay in your account settings

maybe something more like this:

'Administrative pages are configured to open in an overlay window. If you cannot access them, disable the administrative overlay in your account settings
Otherwise maybe a link?: Trouble with the overlay? Click here for alternative
or something like: Trouble with the administrative overlay? Click here for an accessible version
or something like: Accessibility trouble with the administrative overlay? Click here.

I think the problem with these goes back to the fact that a lot of people won't understand what "overlay" means.

As I recall this is a temporary solution till the overlay is accessible, please correct me if I am wrong. So let's not spent more time on it than needed.

The accessibility will certainly improve (via the other critical issue), but accessibility isn't a binary thing. At least for some older screen readers, there will still be some issues remaining that may make it difficult for some people to use. I think the unfortunate conclusion was that we'll need this message at least for Drupal 7.

mgifford’s picture

Issue tags: +Accessibility

I completely missed this before @sun pointed me to #897638: Make .element-invisible work for focusable elements like links.

Adding accessibility tag.

Everett Zufelt’s picture

+1 for David's suggestion

Administrative pages are configured to open in an overlay window. If you cannot access them, disable the administrative overlay in your account settings

mgifford’s picture

StatusFileSize
new396.14 KB

This is what the screenshot looks like in Firefox with the text as per the patch applied in #76 & also the patch I rolled up for #897638: Make .element-invisible work for focusable elements like links but both patches need to be changed if we're changing around the name space to use .element-invisible-focusable

mgifford’s picture

Status: Postponed » Needs review
StatusFileSize
new150.08 KB
new2.93 KB

Ok, here's a new patch which goes snugly with #897638: Make .element-invisible work for focusable elements like links and also uses the new text provided by @David_Rothstein.

The attached screen view is in English displayed RTL, so it looks a bit silly.

sun’s picture

Status: Needs review » Needs work

Still needs to address #85.1

mgifford’s picture

So using something like this instead:

+++ modules/overlay/overlay.module 14 Sep 2010 18:28:40 -0000
@@ -258,6 +258,42 @@ function overlay_page_alter(&$page) {
+  if ((!isset($user->data['overlay']) || $user->data['overlay']) && user_access('access overlay') && $user->uid == $account->uid) {

To check the value in "case it wasn't changed by the user himself/herself."

Bojhan’s picture

Since the other issue is going t be committed, can we get a patch up for #84.2? #84.1 is now adressed with the other issue.

Hide message - should be enough, or something like that.

frega’s picture

StatusFileSize
new3.89 KB

Adjusted patch from #93 to incorporate #85.1 (altering hook_user_presave and conditions in _overlay_disable_link).

If other users' preferences shouldn't be altered by anyone but themselves, the form-element for overlay preferences should not appear for anyone but the user him/herself (or be disabled with an explanatory text), IMHO - hence the adjustments in overlay_form_user_profile_form_alter().

Re: #96 - just to clarify, comments #84.2 and #85.1 aren't 100% the same thing: there is no "dismiss"-functionality intended. All hinges on the overlay preference being set - the message disappears thereafter. Consensus seemed (to me) that having two invisible-focussable-accessible links (edit your profile AND dismiss message) is unnecessary and difficult to accomplish in a way that is accessible, "non-confusing" and efficient.

Bojhan’s picture

So how do peopel dimiss the message? I am confused, if it can only be done by disabling the overlay you are creating an issue for those it is accesible.

frega’s picture

Hi Bojhan, the message is dismissed after the user chooses (i.e. saving your profile w/ "Use the overlay for administrative pages." checked) to keep the overlay activated as well as after the user chooses to disable the overlay - i.e. the message is only shown until a choice has explicitly been made (i.e. the user profile saved by the user him/herself).

Bojhan’s picture

I think its obvious thats not what we want? A user having to save his profile, keeping the checbox checked is total magic that will make the message dissapear.

Everett Zufelt’s picture

Since we know that JS is available when this message appears (since the Overlay is loaded), can we use some jQuery goodness to show both links when either has focus?

The first link what we have now, the second link to dismiss the message.

frega’s picture

bojhan, just to be clear: the message will disappear no matter what you choose as your preference - as soon as you save your profile the message will disappear/be dismissed - and only then. It seemed to me to be the emergent consensus (after #54) that an anchored link to the user profile should suffice.

Personally, I'd prefer for this: A) one short link on top ("Having problems accessing administrative pages or want to dismiss this message?") taking you to B) an explanatory page with some text and C) links or a form for enabling/disabling overlay (and/or dismissing the message). Am happy to roll a patch for that (improving on my patch #49 and incorporating some #54 etc.) - but i'm a new to this and certainly don't want to step on anyone's toes/push my approach :)

Briefly why injecting a second "dismissing"-link is, IMHO, is not really a good solution: assuming e.g. a keyboard-only-user - the second link ("Dismiss this message") would become only "visible" once you tab out of the first link ("'Administrative pages are configured to open in an overlay window. If you cannot access them, disable the administrative overlay in your account settings") breaking the "context" of what the user is really dismissing. If that is no concern, we can just add a callback "dismissing" the message - happy to provide a patch for that, too :)

EDIT: @Everett: the link (or links) is also be displayed in the "parent" page not just in the "overlay" therefore we cannot assume JS to be available for a solutions, IMHO.

Bojhan’s picture

I will leave this up for Everett to decide a direction on.

Everett Zufelt’s picture

@frega

Why are we showing the links when JS (and therefore Overlay) are not present? That isn't a major problem, but really makes no sense to me.

My suggestion:

1. Only show the links when Overlay is actually present.

2. Show the link in current patch, and a second dismiss message link.

3. Show both links when either link has focus.

Any technical limitations or usability issues with this approach?

frega’s picture

If we want the links only to show when JS is enabled, we'll have to move stuff to overlay.js. The issue started off in CPH with such an approach, but @seutje mentioned some issues with this approach ("it seems to cause the link to be rly late in the tab order") which drove the solution "server-side". Can have a look at that again tho ... keeping both links visible shouldn't be v. hard w/ jquery (and maybe a bit of css) ...

Everett Zufelt’s picture

@frega

Thanks for the explanation. Would everyone be content with this solution:

1. Links are generated server-side (like they are now).

2. Links are not hidden by default.

3. Links are hidden with jQuery / CSS before page is displayed in browser.

4. Focus on either link displays both links.

5. Only users without JS enabled would see the links without the links receiving focus. This only until they click "dismiss". Of course these users will be confused, since for them admin pages never load in Overlay.

I think that this is optimal, satisfies all requirements, only drawback is (5).

Bojhan’s picture

Won't (5) effect all mobile users without propper JS?

mgifford’s picture

Status: Needs work » Needs review

I want the bot to test #97.

Everett Zufelt’s picture

@bojhan

I think the answer to your question is yes. So, we need to decide if this is an acceptable trade-off.

frega’s picture

I've been able to successfully inject the links via JS in the "parent"-pages; they respect tab order and both links are visible when either is focussed which would solve #104 points 1-3. I've successfully tested keyboard accessibility ("tabbing") in FF3.6 & Chrome5 on Linux, but I'd need help&feedback on other platforms/setups ... i'll post a patch in a few minutes.

sun’s picture

Thanks for #97, @frega! That's exactly what I had in mind.

We have a .js-hide class, but we don't have a .js-show or .no-js-hide class.

sun’s picture

- There should be just one link to the user account edit page. To dismiss the note/link, a user simply saves the user account.

- We should not use JavaScript to inject this note/link, nor to hide it. It slows down page rendering performance for sighted users. Ideally, we'd use a .js-show class, but that's fairly hard to implement, especially in combination with the .element-hidden and .element-invisible classes. If at all, then the only acceptable approach for me would be to render the note/link with .element-hidden by default and use overlay-parent.js to change .element-hidden into .element-invisible.

frega’s picture

StatusFileSize
new10.22 KB

I clearly understand why @bojhan is unhappy with the UX with just one link in #100. On the other hand, having toiled to get the JS-injection and the focus magic working (or working at least in my setup :) I have to agree w/ @sun, that the complexity and performance tradeoff is probably not negligible and maybe not worth it (albeit the sighted users will incur this slow down only until the first time they save their profile) ...

Well, new patch expands/builds on #97 but uses JS to inject links into the "parent" pages. To avoid patching the system-behaviours.css-patch (from #897638: Make .element-invisible work for focusable elements like links) in this patch, I have duplicated some css in overlay-parent.css and overlay-child.css (could be moved to system-behaviours.css in due course). You need to apply that CSS-patch. Hope this helps, otherwise jsut ignore it :)

Patch:
- Adds a second link: "Dismiss message".
- Adds new menu callback (overlay/set/%/%) - enables/disables the overlay directly; please clear menu cache
- Injects the links into the top of the page w/ JS
- Makes both links visible when one of them is focussed w/ JS

Todo:
- Decide: is this worth the hassle?
- Proper accessibility test (keyboard accessibility/tabbing works in my setup FF3.6, Chrome5 - Linux)
- If we do keep two links: Should they not read "Disable overlay, if you have problems with accessing administrative pages" (link to /overlay/set/0/...), "No, I am fine, dismiss this message" (/overlay/set/1/...)
- Provide better "URLs" - overlay/enable overlay/disable and overlay/dismiss instead of a "cryptic" /overlay/set/ and according feedback "You have now enabled the overlay" etc.

sun’s picture

Thanks for working on it. I'm opposed to introduce a giant new page callback that does the same as saving the user account does. We definitely need more custom user settings, and an easy way to toggle every single of them, but implementing this properly is D8 material at this point. We need CSRF protection for such quick toggles. Which leads us directly into the working space of #755584: Built-in support for csrf tokens in links and menu router, which is definitely NOT D7 material anymore.

David_Rothstein’s picture

The patch in #113 already has CSRF protection.

Needs a little cleanup, I think, to put the token in a query parameter instead (that's best practice) and use drupal_valid_token(), but functionally it should work fine - that is not hard to do at all, and definitely doesn't need to wait until the D8 generalization. We have a lot of quick toggle links in core already.

Bojhan’s picture

I don't know what the technical issues here are or what is D8 stuff. Sun states "To dismiss the note/link, a user simply saves the user account." - I have no idea how a user would know that?

mark trapp’s picture

As @Bojhan is pointing to, the current text has no call to action for users that find the overlay usable:

Administrative pages are configured to open in an overlay window. If you cannot access them, disable the administrative overlay in your account settings.

Instead, the only call to action is for a very small subset of users to disable the overlay. Everyone else, should they follow exactly what the message states, would never get rid of the message. That's less than ideal. I think most users are going to expect a "dismiss this message" link when confronted with a system message they can't resolve.

If it's really impossible to add the second link, the current copy needs to be reworded to something like:

Administrative pages are configured to open in an overlay window. You can confirm or disable this functionality in your account settings.

Everett Zufelt’s picture

Having not tested the patch, I have to agree with @bojhan, some performance trade-off (only until the user selects the dismiss link) seems reasonable to me to improve usability.

However, 99% of all users will likely never know that these two (4 really 2 x 2) links exist. So, that kind of throws a wrench in the situation.

I think this would be a good time to sum up where we are and where we need to be. Please provide comment. Particularly, provide comment on what problems exist with proposed solutions.

Summary of problem:

1. Overlay is broken for some users (it is in no way our fault).

2. We cannot detect those who need Overlay disabled, it will have to be disabled by user action.

Requirements for solution:

1. Users must not have to 'find' how to fix the problem that Overlay is creating for them.

2. Clearly communicate that Overlay exists, what it does (how it relates to Administrative pages), and how to disable it.

3. Provide a method to disable Overlay, and a method to permanently dismiss information in 2.

4. Limit interference in user experience for those for whom Overlay causes no problems.

Proposed solutions:

1. Where to generate links?

1.1. Generate two links on server to disable Overlay, and dismiss message about Overlay.

1.2. Generate two links through Javascript to disable Overlay, and dismiss message about Overlay.

2. What action do links perform?

2.1 Links activate menu callback to save user Overlay preferences (enabled or disabled).

2.2 Links take user to profile page where they manually set and save preferences.

3. To whom are links visible?

3.1 Show message to all users by default.

3.2 Hide message (only showing to screen-reader users and when links receive focus).

frega’s picture

Hi Everett, thanks for summarizing the issue. My comments:

#97: falls short of your stated requisites (e.g. two links) and gives little "call to action" or guidance; but is a clean and simple patch.

#113: fullfils your requisites (2 links), but is relatively complex (still needs testing for full accessibility) and duplicates some functionality by introducing a user setting toggle menu callback for the overlay.

We could cut the injection of links via JS from #113, but without an additional menu-callback, we could not and should not have a second link to dismiss the message.

A compromise approach (incorporating #97 and short of #113):
1) Have one slightly longer link: "Administrative pages open in an overlay. If you are having problems opening these pages, want to learn more about the overlays or want to disable this message click here.".
2) The single link goes to admin/help/overlay#acessibility
3) overlay_help is expanded to include a section explaining the accessibility problems and state clearly: "If you want to dismiss the message regarding the overlay or need to disable the overlay, please go to the overlay preference in your [user profile], check or uncheck the overlay preference and press save".

The compromise avoids an additional callback and at the same time allows for a better "call to action" than a single link at the top of every page could; but no "one-click" dismissing or disabling.

Rolling a patch like that is a question of minutes - but i don't want to flood this issue w/ another alternate patch :)

Everett Zufelt’s picture

@frega

I would be happy with what you have proposed. I think the question for some others will be that there are several clicks required to dismiss the link / message.

sun’s picture

Help module is optional and not guaranteed to be enabled. Instead of linking to a help page and from there to the user account edit page, why don't you simply link directly to the user account edit page, also using a fragment/jump target, and put the help text below the checkbox?

Everett Zufelt’s picture

I like @Sun's suggestion. Again, some others might want a menu callback so that the message can be dismissed in one click. I, for what it's worth, do not care if multiple clicks are required to disable overlay, as long as the path is short and clear.

Everett Zufelt’s picture

FYI: update in class name for .element-invisible (focusable) class.

http://drupal.org/node/897638#comment-3468306

frega’s picture

StatusFileSize
new4.82 KB

Liked @sun's suggestion and adjusted #97 accordingly; rerolled the patch to reflect change in #897638: Make .element-invisible work for focusable elements like links (apply this new patch); small wording changes to link at the top:

Administrative pages currently open in overlay windows. If you cannot access them or want to dismiss this message, click here to set your overlay preference.

Patch extends description of the overlay option in the account settings *only* for users that haven't set their preference with this:

Accessibility notice: If you have problems accessing administrative pages opening in overlays, disable the overlays by unchecking this option and saving your profile. To dismiss the message shown at the top of pages to screen reader users, leave the option checked and save your profile.

Please advise on wording; maybe we should always show the first sentence of the accessibility notice and only append the last sentence (dismssising the message) to users that haven't set their preference as they are the only ones seeing it?

@Bojhan and @Everett - is this still too subtle or do you think this will be sufficient?

sun’s picture

Status: Needs review » Needs work

Can you upload a proper .patch?

frega’s picture

Status: Needs work » Needs review
StatusFileSize
new4.82 KB

sorry - proper.patch now attached.

sun’s picture

Thanks!

+++ modules/overlay/overlay.module	20 Sep 2010 18:46:25 -0000
@@ -62,8 +62,11 @@ function overlay_theme() {
+    // Display overlay preference fieldset only if current user can access the
+    // overlay and only on current user's own profile.

"Display Overlay preferences only if the current user can access the overlay and when a user edits the own profile."

+++ modules/overlay/overlay.module	20 Sep 2010 18:46:25 -0000
@@ -62,8 +62,11 @@ function overlay_theme() {
+    if (user_access('access overlay', $account) && $account->uid == $user->uid) {

The faster condition should always come first; i.e., let's flip the conditions.

+++ modules/overlay/overlay.module	20 Sep 2010 18:46:25 -0000
@@ -62,8 +62,11 @@ function overlay_theme() {
         '#type' => 'fieldset',
         '#title' => t('Administrative overlay'),

btw, this fieldset violates UX guidelines - there's only one form element in it.

+++ modules/overlay/overlay.module	20 Sep 2010 18:46:25 -0000
@@ -77,6 +80,14 @@ function overlay_form_user_profile_form_
+      // Provide an extended description for users that have not yet set their
+      // overlay preference explaining how to disable the overlay and how to
+      // dismiss the message shown to screen reader users.
+      if (!isset($user->data['overlay'])) {

I think we should always display this help in the regular description.

+++ modules/overlay/overlay.module	20 Sep 2010 18:46:25 -0000
@@ -77,6 +80,14 @@ function overlay_form_user_profile_form_
+        $form['overlay_control']['overlay']['#description'] .= '<p>' . t('<strong>Accessibility notice:</strong> If you have problems accessing administrative pages opening in overlays, disable the overlays by unchecking this option and saving your profile. To dismiss the message shown at the top of pages to screen reader users, leave the option checked and save your profile.') . '</p>';

1) No paragraphs.

2) We can skip the "Accessibility note" prefix.

3) When appending to the regular description, this can be shortened:

"Disable this option, if you have problems accessing the overlay. Save your profile to dismiss the accessibility message shown at the top of every page."

+++ modules/overlay/overlay.module	20 Sep 2010 18:46:25 -0000
@@ -85,7 +96,9 @@ function overlay_form_user_profile_form_
+  // Only allow user's own overlay preference to be set.

"Prevent someone else from setting the overlay preference for a user."

Powered by Dreditor.

yoroy’s picture

Status: Needs review » Needs work

Good review too, sun. Omit Needless Words. :-)

Everett Zufelt’s picture

Status: Needs work » Needs review

"Disable this option, if you have problems accessing the overlay. Save your profile to dismiss the accessibility message shown at the top of every page."

Confusing, since most people will never see the message.

frega’s picture

Hi sun, thanks for the swift review. I'll rectify the points in the next patch; just to clarify regarding the wording - can we maybe drop the first sentence and alter the '#title' of the checkbox to the following instead:

"Use the overlay to show administrative pages on top of the page you started from."

Description for users not having set preference would be shorter and read then:

"Disable this option, if you have problems accessing the overlay. Save your profile to dismiss the accessibility message shown at the top of every page."

Description for users having set the preference (i.e. having disabled the message shown to screen reader users)

"Disable this option, if you have problems accessing the overlay."

sun’s picture

StatusFileSize
new4.89 KB
mark trapp’s picture

I think the language from #130/#131 needs to be reworked:

  • The wording of the #title should match the wording of the notice:

    Use the overlay to display administrative pages.

    The word overlay means to lay above: there's no need to be redundant.

  • The current wording of the description is pretty awkward: the action most users should take should come first and it reads like Yoda-speak. I propose this instead:

    To dismiss the accessibility message shown on the top of every page, leave this option enabled and save your profile. If you have problems accessing the overlay, disable this option.

    and

    If you have problems accessing the overlay, disable this option.
Bojhan’s picture

Let me try to move this issue a bit, I think we are very close - and we shouldn't worry to much about copy writing. My suggestions

Top title "All administrative pages open in an overlay window. If you cannot access them or want to dismiss this message, see your account settings."

Option description "Disable this option, if you have problems accessing the overlay. Save your profile to dismiss the message shown at the top of every page."

Lets recognize this though :

  • We have two actions in 1 link = usability issue
  • You have to save an unchanged form to disable a message = usability issue
  • The overlay has a wierd presense on the account settings (one fieldset)

Fairly sure we can't fix all those issues, especially the wierd workflow we introduce by having one link just sucks. But we have to get this solved soon and maybe these trade offs are oke? Anyway, I only really wanted to comment on the copywriting.

Jeff Burnz’s picture

Indeed this seems like some pretty heavy trade-offs.

@Mart Trapp & Bojhan - the word "overlay" can be a noun, but is most commonly used as a verb. As a noun it refers to a veneer or an ornamental covering. As a transitive verb is means to superimpose. The module name "Overlay" is a Drualism and cannot be understood as a proper noun outside the Drupalsphere. I really wish we would stop using the word "overlay", its "Overlay". Its usage as a common noun is wrong and very confusing to native English speakers unfamiliar with Drupal.

"overlay window" is not bad, but "a superimposed window" is far more comprehensible.

I think Mark Trapp's version is actually better...

To dismiss the accessibility message shown on the top of every page, leave this option enabled and save your profile. If you have problems accessing the overlay, disable this option.

...however, we must really think twice about using the word "overlay" as a common noun - we're all far to close to this be fully objective about it.

@133 - totally agree, there are some major usability trade-offs here. We really need to try and solve some of these - not least of which the rather strange option to save my user profile to dismiss a message I cannot see.

Bojhan’s picture

I understand that "Overlay" is a druplism, but quite honestly "a superimposed window" sounds horrible and I do not understand why you see it more comprehensible.

The overlay is a concept relatively new on the web, unless we represent it as some kind of giant modal dialog I do not see us coming to an easy solution on this one. Lets not forget the bigger picture, its to get people to simply move on - administrative pages that open in "something" that you can disable if it's not accessible. Untill we test it, it will be hard to know what the word overlay conceives, going with "Overlay" is somewhat oke - as long as its preseeded by administrative pages open in ...

Jeff Burnz’s picture

Well, "superimposed window" was just a silly example, however its more comprehensible because they are familiar words used correctly. I'm certinaly not saying we shold use it!

I think I wasn't clear enough - I really think we should use "the Overlay", so at the very least we have correct grammar. Its better to coin this as a proper noun and run with it everywhere.

Bojhan’s picture

Hah, darn issue queue communication. Oke,

mark trapp’s picture

If it's capitalized on the assumption that—at the point the the word is used—the user doesn't know what it is, it seems like the word should be defined at the time of usage. "The Overlay" is no better than "overlay" or "overlay window" if the user has no idea what "the Overlay" refers to.

But the proper way to reference the window seems like a weird thing to be discussing this late in the development cycle.

My original point was based on the assumption that "overlay" is clearly defined already (either by convention or earlier documentation) by the time the user encounters it in an actionable item, and that trying to sneak in a half-hearted definition of it in the title of an option on the user profile page, after the user has acted on a message that doesn't define what "overlay" refers to, makes for an awkward piece of copy.

I like Bojhan's copy for the notice to disable or dismiss; the title of the option could be changed to match that new notice:

Open all administrative pages in an overlay window.

with a slightly-modified description I originally suggested:

To dismiss the accessibility message shown on the top of every page, leave this option enabled and save your profile. If you have problems accessing the overlay window, disable this option.

The problem is that the description describes a set of actions that is not the same as what the option is for. Ideally, the description should be used to clearly explain what the overlay is, not how the checkbox and saving the form is connected to seemingly unrelated tasks (dismissing the accessibility message or making Drupal accessible).

But the core issue is that it's really awkward that the only way to dismiss the notice is to perform an unrelated task.

frega’s picture

If were are so unhappy with the placement of the overlay preferences on the account settings page (@bojhan: "weird placement", @sun: "violates UX guidelines"), can we move it a separate tab (MENU_LOCAL_TASK) like e.g. the shortcut-module?

This would certainly give us more freedom with the form ... i'll roll a small patch if that seems reasonable and productive to anyone but me :)

sun’s picture

@frega: Absolutely not. A fieldset containing a single form element is already bad, so an entire new page containing a single form element can only be worse.

Let's incorporate Bojhan's suggestions from #133 and be done with this, please.

roper.’s picture

Yeah I definitely think saving an unchanged form in order to make a message (that you can't see..?) go away is very very strange. Especially because a user could easily save their profile for a completely different reason altogether (change their email, contact settings, etc), and that action would disable the message unintentionally. Maybe make it radios..?

* Display administrative pages in an Overlay window
* Disable administrative Overlay windows

And have neither selected by default..?

Also, I realize that the lingo has been a bikeshed-fest, but I'd like to just point out that specifically mentioning accessibility concerns in any of the messages isn't necessary is it? Plenty of people will want to disable them even if they're not experiencing accessibility problems.

edit: Also, there's a typo in the last patch:

+    // Display Overlay preferences only if the current user can access the
+    // overlay and when a user edits the own profile.

Should be "edits their own profile."

Jeff Burnz’s picture

All administrative pages open in an overlay window. If you cannot access them or want to dismiss this message, see your account settings.

Remove the comma in the second sentence, this will read better if its allowed to run on, i.e.:

All administrative pages open in an overlay window. If you cannot access them or want to dismiss this message see your account settings.

Disable this option, if you have problems accessing the overlay. Save your profile to dismiss the message shown at the top of every page.

If the intention is for the 2nd and 3rd phrases to be a description they should be in brackets, else remove the comma and allow this to run on, its does not read correctly (it's grammatically wrong, there should not be a pause here), i.e.:

"Disable this option (if you have problems accessing the overlay). Save your profile to dismiss the message shown at the top of every page."

or...

"Disable this option if you have problems accessing the overlay. Save your profile to dismiss the message shown at the top of every page."
Bojhan’s picture

I think we are all waiting for a patch, mine or jeffs suggestions in #142 will be fine!

David_Rothstein’s picture

Status: Needs review » Needs work
StatusFileSize
new46.54 KB

The recent discussion about the way the overlay setting is displayed as a fieldset on the user account page seems a bit off topic - the issue for that was #659480: Per-user setting for the Overlay, not here.

***

As for the patch, sorry to be a pain, but...

  1. 'Save your profile to dismiss the accessibility message shown at the top of every page.'
    

    As others have mentioned above, this isn't going to make sense to anyone. For the small percentage of users who see that accessibility message, this interaction of saving the profile to dismiss it is really odd, and for everyone else, they won't have a clue what the "accessibility message" refers to.

    I don't understand what was wrong with the solution of having two links, a "dismiss this message" callback, and using JavaScript to force the whole message to be visible when either link gets focus (i.e., something like #113, but simplified)? We don't necessarily need to use JavaScript to actually inject the message on the page (it's fine if the message shows for people who have JS turned off), but binding something simple to the focus event won't hurt performance (especially compared to everything that is already in overlay-parent.js) and is a way cleaner solution.

  2. If you cannot access them or want to dismiss this message, click here to set your overlay preference.
    

    We should avoid phrases like "click here" in general, and especially when a large percentage of the intended audience for this message doesn't use a mouse... :)

  3. +  // Prevent someone else from setting the overlay preference for a user.
    +  if (isset($edit['overlay']) && $account->uid == $user->uid) {
    

    I don't see why we'd want to do this - it is unexpected behavior, and there may be legitimate reasons to edit someone else's overlay settings. If we decouple the "dismiss this message" functionality from the saving of the form, this is no longer necessary.

  4. Visually (when using a keyboard) the accessibility message looks odd to me, and the color contrast isn't so good? (See the attached screenshot.)

If we can get some consensus, I'll try to spend a little time working on this patch. IMO, the only reasonable way to do it is with a separate "dismiss this message" link.

Everett Zufelt’s picture

1. I would agree that two links are better than one, but I can go either way.

2. I am quite happy with everything that David has suggested above.

3. #897638: Make .element-invisible work for focusable elements like links has been committed in case anyone didn't notice.

Bojhan’s picture

@David There is no time, to endlessly discuss and build consensus. Unless you have a patch up its unlikely to get comments on the code direction.

Jeff Burnz’s picture

In the last patch (#131) when I check the option to use the Overlay I am not redirected back into the Overlay when I save my profile. I have to go back to another non-overlay page to re-enter it.

This is assuming I have unchecked the option, then changed my mind and want to re-enable it.

David_Rothstein’s picture

@Bojhan, it's a waste of time to keep writing patches with no clear idea of where we're going. That's what's been happening in this issue so far. Ideally, we first come up with a desired code direction, then write it and get into the specifics.

However, some of the discussion above was the fear that this would be too much JavaScript to run for all users, including users who would never see it. To address that, here's a rough sketch of all the JavaScript I think we'd need in this patch (based off of #113 but not requiring all of it):

var $overlay_disable_link = $('#overlay-disable-link', context);
$overlay_disable_link.addClass('element-invisible');
$('a', $overlay_disable_link)
  .focusin(function () {
    $overlay_disable_link.addClass('element-focusable');
  })
  .focusout(function () {
    $overlay_disable_link.removeClass('element-focusable');
  });

I may not have that right because I haven't tested it nor fully understood the new 'element-focusable' class yet, but that's roughly the idea, and everything else is handled in PHP like in the later patches.

The callback for dismissing the message would also be similar to #113, but perhaps storing this info in a separate user variable to keep things simpler.

Everett Zufelt’s picture

In agreement with David. We need to come to consensus on the solution. I was hoping that my issue summary in #118 would help us get there, but it has only in part.

Everett Zufelt’s picture

I discussed this issue with Bojhan on IRC this morning. We have agreed on the following implementation.

  1. Two links.
    1. "Disable the Overlay on your profile page if you have problems accessing administrative pages"
    2. "Dismiss this message"
  2. Links to appear only when Overlay is present (when Overlay parent and / or Overlay child are loaded
  3. Both links to be visible when either receives focus.
  4. Links to be preceeded by invisible heading "Options for administrative Overlay", we can work on copy.
  5. Disable link to go to Overlay section of profile edit page.
  6. Dismiss link to dismiss message and store setting so that message is not displayed again for user.
  7. Message display setting should be separate from Overlay state setting, so that message is not unintentionally dismissed by saving profile page (as one would do when resetting a password, changing e-mail address).
Bojhan’s picture

I have spoken to Everett about this and I think his sum up is pretty complete. I hope this will bring the discussion out of its stall, its mostly a technical discussion really.

Jeff Burnz’s picture

Is there a show stopping reason why the "Disable Overlay link" cannot be a fast toggle so users never need to deal with their profile page.

- any performance reason why not?
- am I thinking like a sighted person - would this be in fact more problematic for the visually impaired?

The only real problem I see with #150 is that the only users likely to disable this message are the visually impaired - I haven't read the implementations at all in the this thread so I do not know if these links are being added server side or client side - if they are client side this seems like a performance hit to end users who can use the Overlay, server side probably not so bad.

Everett Zufelt’s picture

@Jeff

Nothing show stopping about making the disable link a callback. However, it is nice to give the context of sending the user to the profile page so that they know where the option is should they wish to re-enable.

As far as performance, it is a hit, not sure how much. I'm not too particular, I suppose they cold be in parent and child tpl.php files.

One note I forget to add above, and I will add here for completeness is that the links should appear at the top of bothe the parent and child frames, so that it is more likely that they will be found.

frega’s picture

StatusFileSize
new9.9 KB

As agreed w/ bojhan in IRC this mornign, a patch implementing 6 out of 7 points from #150 (building on #113 and some #131) attached.

Approach taken in point 7 of #150 ("Message display setting should be separate from Overlay state setting") had little support earlier and would - in the vast majority of cases - lead to the message *never* being dismissed, as few sighted users will ever encounter the "Dismiss" message (as pointed out in #152).

Patch introduces a toggle-callback (that i know @sun has been opposed to ...) but i hope this helps to move the issue along nonetheless.

TODO:
- Markup and wording for "invisible heading"
- Wording of status message after dismissing message.

frega’s picture

Status: Needs work » Needs review
Everett Zufelt’s picture

@Frega

Haven't registered a user account on D7 recently, however, isn't the first step in the workflow, after getting registration email, to set and save a password for the account? This means that virtually all users will unintentionally dismiss the message after logging in for the first time. This isn't going to work.

Let me know if I'm just completely wrong, or if we can think of a better method of implementing this.

Thanks again for rerolling.

Jeff Burnz’s picture

I agree with Everett, its not fool-proof enough, even if the user does not have access to the Overlay initially, they might escalate their privileges later on and acquire access, in which case they are immediately stuck.

Everett Zufelt’s picture

Note: A patch is RTBC that removes the ARIA roles from Overlay. Discussion of the patch should be had in the other issue.

http://drupal.org/node/716612#comment-3494762

You might want to apply this patch before rerolling again so that the patch you write is more likely to apply when the other is committed.

frega’s picture

StatusFileSize
new10.76 KB

Everett, you're right: unblocking a (new) user (with 'access overlay' permission) has the user save the profile (implicitly the overlay preferences); this would dismiss the message before the user properly realises what's up.

Rerolled the patch using a separate flag and a dismiss callback. #150 should now be covered. Markup and wording for "invisible heading" still needs work. Includes applied patch from 716612 as advised in #158.

Overall not very happy with this: a) another flag and b) the accessibility message adds but for most users this message will be "unknownable" (if relatively light) bloat on admin pages; I added a dismiss-link to the checkbox description on the profile for sighted users (but who'll use that).

Maybe this calls for a different approach - will find you/bojhan in IRC to discuss it :)

Status: Needs review » Needs work

The last submitted patch, 896364_patch_20100929.patch, failed testing.

frega’s picture

Status: Needs work » Needs review
StatusFileSize
new9.95 KB

rerolled #159 (to heed #158, sorry).

David_Rothstein’s picture

Assigned: Unassigned » David_Rothstein
Status: Needs review » Needs work

Glad that we are all coming around to that consensus - this looks good :)

I think the patch is almost ready. I have some time later today I can dedicate to driving this home, so assigning to myself for now. I will post an updated patch later.

  1. +      // Show link to dismiss message only if overlay is active and current
    +      // user has not yet dismissed it.
    +      if (!isset($user->data['overlay_message_dismissed']) && (!isset($user->data['overlay']) || $user->data['overlay']) ) {
    +        $form['overlay_control']['overlay']['#description'] .= ' ' . l(t('Click here to dismiss the accessibility message shown at the top of every page.'), 'overlay/dismiss-message', array('query' => drupal_get_destination() + array('token' => drupal_get_token('overlay'))));
    +      }
    

    We should remove this from the patch - everyone who needs to see a 'dismiss' message already has it at the top of every page, so I don't see why we would want it on the profile too where it will confuse everyone else?

  2.  function overlay_user_presave(&$edit, $account, $category) {
    -  if (isset($edit['overlay'])) {
    +  global $user;
    +  // Prevent someone else from setting the overlay preference for a user.
    +  if (isset($edit['overlay']) && $account->uid == $user->uid) {
    

    We should remove this too, since with the new patch and separate "overlay_message_dismissed" variable, saving the user account no longer has any unintended consequences. (This is also bad because it can be called via the API, which shouldn't depend on the logged-in $user.)

  3. +    // Show all focusable links if focus is inside accessibility wrapper.
    +    $('#overlay-disable-link', context)
    +      .focusin( function() { $('a.element-focusable', this).addClass('force-visible'); })
    +      .focusout( function() { $('a.element-focusable', this).removeClass('force-visible'); });
    

    I like how this JavaScript is nice and simple. It does seem to contain within it the assumption that all text within the accessibility wrapper is in the form of a link, though (in other words, this would not work correctly if the text said something like You can disable the overlay on your <a href="...">account page</a>) but that assumption is correct for now, and it may be worth it to keep this simple and lightweight. Someone who overrides the message could also override the JavaScript, I suppose.

    I also wonder if instead of adding a new "force-visible" class we couldn't just remove the "element-invisible" one instead? I'd need to test that out.

  4. Other minor fixes not worth listing one-by-one; I'll just do those when I post the patch later :)
David_Rothstein’s picture

Assigned: David_Rothstein » Unassigned
Status: Needs work » Needs review
StatusFileSize
new7.75 KB

Rerolled patch is attached, with the changes listed above, as well as some smaller ones (mostly code style and small bugfixes and that kind of thing). Among the other changes worth mentioning:

  1. The message that you see after you click the "dismiss" link previously said:

    The accessibility message for the administrative Overlay has been dismissed.

    I changed it to this (to make it more direct and actionable and try to remove technical language):

    The message has been dismissed. You can change your overlay settings at any time by visiting your profile page.

  2. I also removed all capitalization of "Overlay" from the patch. (If we want to change that, we'd need to do it consistently everywhere in the module, which really sounds like a different issue.)

STILL NOT DONE:

  1. The visual styling of the message is horrible (and close to unreadable for keyboard users). I am not sure what to do about that; it really seems like we want this to have similar styling as the "Skip link", though.
  2. If you click on the "dismiss" link from inside the overlay you go through a couple weird redirects and wind up on the same page but outside the overlay, which is pretty odd.
  3. I think this text still needs some work:

    Disable the overlay on your profile page if you have problems accessing administrative pages.

    It does not give a clue about what the overlay is; I think we need to borrow a little text from the user account page to explain that, or no one will understand this message.

    I'm also not sure if it should say "profile page" here vs "account page" - we actually aren't consistent with that throughout Drupal, but "account" sounds better to me personally. This is less important.

yoroy’s picture

1. I'd look into re-using the styling for the 'back to the blocks page' link that is shown on the blocks demonstration page

2. sounds like a 'needs work' :)

re: 3. The text doesn't have to explain what the overlay is. It's function is:
"Go look for the Przwalski button over there if you have trouble getting to stuf in here."

We don't need to explain the finer details of the *cause* of the problem. We only need to provide the name of the*fix* that can be obtained elsewhere. Basically: "Go look for this word on that page and flick its switch". That's all.

Bojhan’s picture

Status: Needs review » Needs work

Please avoid working on 3, for now - lets focus on getting all those technicalities out of the way.

Jeff Burnz’s picture

StatusFileSize
new27.45 KB

What about something like:
overlay-disable-message.png

Bojhan’s picture

@jeff Why not go with yoroy's suggestion of using the back to blocks page styling, rather than creating a new one?

Jeff Burnz’s picture

Its not new, its the Skip Nav styling which David suggested in #163. The left aligned/blue background of the blocks page styling doesn't work very well because the Skip Nav appears first, then this message, so its visually jarring to go from one to the other (it actually looks really bad), its much better visual flow if its centered (the colors could change of course, but its still quite visually jarring - which could be a good thing?).

Everett Zufelt’s picture

@Jeff

Can you please provide a description of overlay-disable-message.png?

Thanks

Bojhan’s picture

@jeff I agree that doesn't work very well. Not sure if creating such a intrusive element is favorable - but I'd generally be oke with it, since its a hacky element anyway.

Jeff Burnz’s picture

@Everett:

The links are contained in a box which is very dark gray, which contrasts with both the overlay modal background (semi transparent black) and the overlay page (which is white) - it needs to do this because it can overlap both. The box is centered and has width of 36em, so it can grow if the text size is increased.

There is no border or any other "width adding" styles applied to this box, we can't add any width or height to it or it will show all the time. Instead the links have some padding and margin.

The links are white, to contrast with the dark gray of the containing box and are underlined on focus. Both links are set to display block, so they are not inline, the Dismiss message is therefor on a new line at the bottom.

cliff’s picture

OK, for the wording: Let's lead with the "if" phrase. If it includes me, I get more interested as I keep reading. If it excludes me, I know I can skip the rest of the sentence and find something that does matter. Basic good technical communication.

Following that approach:

If you cannot operate this interface:

  1. Go to [link]your profile[/link].
  2. Find "Overlay."
  3. Disable it.

[link]Close this window[/link].

With this approach, all I need to know about overlay is what I've just read: it's the setting to look for on my profile page and disable if this interface is giving me trouble.

willmoy’s picture

Status: Postponed » Needs work

Just read the thread, plus the ancestor. Quick summary to save others the time: summary in #118, agreed approach in #150, active (and nearly there) patch in #163. 3 outstanding issues listed in #163.

I have tested the patch:
- It works.
- It matches all the requirements in #150 except #150.4 (see below).
- The workflow is not too annoying, although I haven't tested it with a screenreader.
- Only problem is 163.2: we fall out of the overlay after dismissing the message.

Outstanding issues:

163.1 - visual styling. no comment.

163.2 - odd redirects after you click to dismiss the message. This is what happens:
- Dismiss link goes to http://example/overlay/dismiss-message?destination=admin&token=blahblah
- Redirects to http://example/#overlay=admin (with the message saying "You can change your overlay settings at any time by visiting your profile page.") but outside the overlay.
- Redirects to http://example/admin (without the message) again outside the overlay.

This needs to stay within the overlay after the message is dismissed, and the second redirect needs to be stopped.

163.3 - text needs some work. 150.4 stipulated 'Links to be preceeded by invisible heading "Options for administrative Overlay", we can work on copy.' I think this would help. Specifically, it should say: "Accessibility Options..." or "Screenreader options..." The current text, without the accessibility context, makes it sound like there's a problem with drupal/that we've shipped something buggy (I accept there's an argument there, but let's not have it in the UI).

[EDITED to correct what I said about 163.2).

cliff’s picture

@willmoy, on your comment on 163.3, I proposed "If you cannot operate this interface…" because it addresses the accessibility issue directly. Although other patches address the issue of whether people using screen readers can operate the interface, that's not the only accessibility issue. As one example of another accessibility issue, people with attention deficits might find the interface distracting. To work efficiently, they might have to turn overlay off. I'm sure I could think of others; even if I can't that doesn't mean there aren't others.

At the same time, people who don't know what accessibility is won't be wondering what that is, whether it affects them, and how changing a profile setting could improve the situation. (Yes, those people are out there — a friend recently encountered a web developer who said, "How could my site not be accessible? It's online!")

And as for trying to avoid implying "that we've shipped something buggy," I don't think we are implying that. Many people might assume that the problem is that noncompliant browsers won't render the interface properly — and, in fact, that is part of the problem. Briefly stated, this interface has three problems:

  • The standards we're relying on aren't mature.
  • Not all browsers support our techniques. (Older browsers especially have problems.)
  • Not all forms of assistive technology support our techniques. (Older versions especially have problems.)

But even that brief explanation is too much to put on the page. And even if we did state those facts, someone could still infer that the problems resulted from something we did wrong, not from the constantly evolving nature of Web coding and design.

willmoy’s picture

163.2 - redirects.

AFAICT, redirecting the entire page from the overlay (as now) won't do, because it loses anything the user may be doing in the underlying page, which is hard to justify. I'm not sure if it's possible to do the redirects in the overlay but the most elegant solution from the user perspective is probably to call overlay_user_dismiss_message() via AJAX, like overlay_ajax_render_region().

...which I don't have time for right now, sorry.

David_Rothstein’s picture

Status: Needs work » Needs review
StatusFileSize
new8.42 KB

For 163.1: I definitely like Jeff Burnz's screenshot in #166. Was that made with code, or just a mockup for now? :)

---

For 163.2: I've fixed the redirect bug in the attached patch. The "dismiss" link now returns you exactly where you were, regardless of whether you started inside the overlay or out of it. (I agree with @willmoy that an AJAX effect on top of that would be nice, but I don't think it's of critical importance.)

---

For 163.3 (the message wording): While I see what yoroy is saying in #164, the reason I think that might not apply here is that we are showing them this message so early. This is basically the first message people will encounter at the top of every page (in fact, the first message they will encounter after they install Drupal), and they may not have even visited any administrative pages yet at all. So without any context it really will come out of left field.

Something like what Cliff suggests might work though, maybe: "If you have problems accessing administrative pages on this site, disable the overlay on your profile page".

I do think an 'intro sentence' approach wouldn't hurt either:

This site displays administrative pages on top of the page you started from.

-Disable the overlay on your profile page if you have problems accessing administrative pages.
-Dismiss this message.

roper.’s picture

-        '#description' => t('Show administrative pages on top of the page you started from.'),
+        '#description' => t('Show administrative pages on top of the page you started from. Disable this option if you have problems accessing the overlay.'),

I don't think this should change. While mentioning accessibility concerns within the .element-invisible section makes sense because it's designed for screen-readers, the checkbox on the user account page is for everyone, and many people will want to disable the Overlay even if it is perfectly accessible.

There's also a grammatical error here, ending the sentence with a preposition. Should be "Show administrative pages on top of the page from which you started." although I admit that might sound confusing.

That's my only input, I can't actually test the patch ATM. I just wanted to throw this out there again, because while Overlay accessibility is a big part of all this, this particular issue isn't necessarily specific to that user-group. Screen-readers need a direct correlation between the Overlay itself and where to disable it yes, but ALL USERS need a clear way to disable the Overlay.

David_Rothstein’s picture

@roper: There is no grammatical mistake in that sentence. http://www.google.com/search?q=ending+sentence+preposition

I am not sure at what point that "Disable this option if you have problems accessing the overlay" sentence got added to this patch or why. I agree that by the time you get to that screen it might be stating the obvious and could probably be removed.

roper.’s picture

@David_Rothstein: Sorry, I didn't mean to imply that you had added that extra sentence to the description, in fact I was aware that it had been added much earlier. Glad we're in agreement on that point though, I had mentioned it earlier in the issue but it got glossed over.

As for the grammar, I'll cede to you on that point though I didn't see anything in particular when browsing through some of the results of that Google search. I'll leave it alone though, as this issue has been about verbage for far too long. :-P

yoroy’s picture

Status: Needs review » Needs work

I'm uploading a screencast of the different workflows associated with this patch: http://vimeo.com/15544526.

Here's a rough transcript. This is from a freshly installed HEAD with the patch from #176 applied:

- Go to the config page because we want to do some administration
- Tab once for the skip to content, Tab twice for the message this patch introduces.
- The message consists of two parts: 1 link to go to the place where you can disable the overlay. And 2: a link to do nothing but simply hide the message itself

Now lets click that first link, because we really want to disable this overlay thing:

- click
- look for the setting, oh quite nicely jumps to the right position in the page
- lets uncheck that box then and save
- Voila, back at the page where we started from, but now without the overlay. beautiful
- lets tab to double check…
… So far so good.

Now lets check the case of wanting to enable the overlay again via this route:

- Lets say I remember that this setting lives on my profile page, so lets go there
- Check the box to start using the overlay again and save.
- We stay on the profile page, which is ok
- But now: let's directly click a toolbar link for an admin page
- None of them opens in the overlay
- Lets visit another page in the front end first, and then go for an admin page:
- The overlay is used as intended.

So:
- dismiss link works as intended
- workflow for disabling the overlay works well
- the interactoin for re-enabling the overlay is not ideal yet.

Using the same styling as for the skip-link makes perfect sense (would have been nice to make these and the 'blocks demo back link' consistent with eachother but lets pretend I didn't say that and work on the actual critical ;-)

Needs work for:
- add styling
- what's up with the "I'm not opening in the overlay before you hit another page in the front end first" scenario?
- maaaaaybe tweak the wording a bit, but lets not go there yet.

yoroy’s picture

Oh, and another thing: I made the screencast using Chrome. I tried Firefox but tabbing there never got me to show the skip-link nor the overlay message. Instead, the search box in the underlying Bartik page gets focus. This is on a Mac, would be good for someone to double check this: when in overlay, hit the tab key. do you get focus on elements in the overlay or on elements in the underlying page?

Jeff Burnz’s picture

Yoroy suggested using the blocks page message style so I tested with this and its pretty nice actually, I changed the skip link to match so its all consistent.

I am adding a screenshot and a patch for Seven only - we probably should make up some default style to go in Overlay module also, for now I just styled Seven - I also made a short video to show tabbing between the skip link and the disable messages (FF on Win7) - http://bit.ly/cAdV6M

The patch just adds styles - you need the patch in #176.

Following on from what yoroy says about FF in Mac, I have many issues tabbing in IE7 also. For example, when the link is totally unstyled (link in yoroys video) in IE7 when I focus it I can see the background page being pushed down - which is very strange - both the skip link and disable messages appear to be in the wrong layer - no amount of positioning and z-indexing will pull them up above the Overlay background (they are always below the translucent layer and thus pretty borked in IE7).
overlay-disable-message_blue.png

David_Rothstein’s picture

@roper:

Sorry, I didn't mean to imply that you had added that extra sentence to the description, in fact I was aware that it had been added much earlier.

Oh, sure, I understood that - I was just pointing out that not only did I not do it, I don't know why it was done :) Whoever did come up with it should probably speak up and explain or we will just take it out...

@yoroy:

- Check the box to start using the overlay again and save.
- We stay on the profile page, which is ok
- But now: let's directly click a toolbar link for an admin page
- None of them opens in the overlay

That's actually a separate bug (it exists without the patch too) - can you make a separate issue for it and link to it from here? I think I might know what's going on and have a theory for how to fix it, but better to handle separately since we have enough going on over here :)

yoroy’s picture

Agreed! #931730: Enabling 'use overlay' setting on profile page does not immediately use overlay for admin pages I suspect this is more general than this specific checkbox, but there you go :)

Bojhan’s picture

I am very wary of this direction, it is very intrusive and even more so with this patch. Is this really what we want? To me this message should not render the underlaying contents unusable - which the proposed does, this because its overlaying the actual content. Another point is that the styling and shape of this element is not found anywhere else in core, the blue color is - but using a "modal" with a bottom bar for dismissal is not a common element.

I would highly favor if we go for something far less intrusive, for example the "back to blocks admin" styling and shape we have on the blocks demo page. I see the patch already tries to use the blue, but the position and shape is the most important part.

Jeff Burnz’s picture

@Bojhan -I'll keep playing around with it, it quite tricky to position this element correctly and account for toolbar/shortcuts draw states + font size - if we apply positioning to this we'll need to thoroughly test that out in case it gets hidden behind the toolbar etc etc under certain circumstances.

Bojhan’s picture

StatusFileSize
new125.36 KB

A visualization to my idea

pcwick’s picture

I recenlty installed d7-dev for a looksee. I think I would have been confused by the message "Disable the overlay on your profile page if you have problems accessing administrative pages."

From a first encounter frame of reference, I might be mumbling these questions. What is an overlay? Where is the overlay? Is this interface I'm looking at the overlay? Everytime I click on a link, I get this interface... Does that mean I'm having problems accessing the administrative pages? Is there something on the administrative pages I need that I am not getting in this interface which is going to cause me problems?

Its longer, but I think this would be more instructive.

"For alternative access to the administration pages, disable this administrative overlay on your profile page."

This might work.

"For alternative access to the administration pages, disable this overlay on your profile page."

I think "profile page" needs to be a link to the profile page.

I like the look of #187. I'm wondering how desirable and how difficult it would be to have the message appear above the administrative menu until dismissed?

Jeff Burnz’s picture

Working on a new design patch now - #187 is mostly doable but I need to know if we want this to push the content down or live in its own layer, I think it actually looks better if the content is pushed down. The radius styles are not doable because the dismiss message can wrap when the browser width is narrow (also when the font size is very large).

IE7 nightmare report - this is a separate issue altogether - right now when you start tabbing the underlying page gets focus in IE7 (maybe IE8 also, have not tested), this is very serious issue because if you "click" (hit enter) on the skip link you will be taken to the main-content of the underlying page not the overlay page. This is an extremely bad ass situation and can someone else confirm/deny, would be so good if this is an artifact of my system.

Adding two screenshots to show it on one line and wrapping, + a pretty rough patch just for testing. I have removed the full stop on the dismiss message in these screenshots and my font-size is quite large (text re-sized up a few notches in my browser).

Note: this question of whether to push the content down or not is curcial to how this can be styled, its gets somewhat harder to achieve the "all on one line and centered" style if we want it to overlay the page.

overlay-disable-message_blue-oneline.png

overlay-disable-message_blue-wrapping.png

yoroy’s picture

Jeff: I reported something similar in #181: In firefox when I tab, the searchbox in the underlying bartik page gets focus :(

Jeff Burnz’s picture

yoroy - found this issue, seems to be appropriate: #841184: "Skip to main content" link doesn't work correctly in the overlay

Am I right to assume this is totally blocked by #841184 ?

yoroy’s picture

Status: Needs work » Postponed

yep, let's figure out what we can do about #841184: "Skip to main content" link doesn't work correctly in the overlay first. That has to work reliably before we can use the same approach for disabling the overlay. Better figure out if that is fixable at all over there before we continue here.

ksenzee’s picture

Status: Needs work » Needs review

Let's continue work here if possible. The skip link problem is nontrivial -- I've spent several hours on it and gotten nowhere -- but it absolutely has to be fixed. And whatever we come up with for that issue should fix the ordering problem here too. So let's get the toggle links working and styled correctly, and worry about tab order in the other issue.

ksenzee’s picture

Bojhan: Are you 100% sure you hate the styling in #182? Remember this only appears if you're tabbing through the page and the focus is on that link. The second you click or tab outside the links, it disappears again. So it shouldn't render anything unusable at all, which AFAICT is your main concern with it.

The reason I'm leaning toward the style in #182 is that it seems a lot easier to stick in the overlay module and have it apply generically to all themes. And IMO that generic styling is more important than the seven-specific styles. Users will see this message on every page view - not just when overlay is open - so it needs to look good no matter what the theme is.

Jeff Burnz’s picture

The #182 CSS is a lot less fragile than later iterations because it does not rely on being positioned as accurately, its just "near the top" so to speak. Later styles rely on being positioned near pixel perfect to pull off the rounded corner "reverse tab" look, and this could be fragile.

Bojhan’s picture

@ksenzee I am 100% sure its too intrusive. Which is why I favor #189.

Jeff Burnz’s picture

Isn't the whole point to be intrusive at this juncture in a users journey? Whats your proposal, that we be diminutive and hope they don't miss it :P Personally I am not a huge fan of the dialog look an dprefer the reverse tab, it stands out a hell of lot in any regard.

What about pushing content down vs overlaying the content. To me it makes more sense to push it down, this feels more clean and does not obscure anything.

Bojhan’s picture

I think the blue is enough to make it stand out, its quite a unique element in terms of position, color but more importantly in terms of occurrence - it only occurs on the blocks page - making it something you rarely see thus stand out. It has to be important but not necessarily intrusive, its a small nuance but it creates a very different setting to what we design.

I am not sure I follow your last suggestion Jeff? Perhaps an example? I would love to know if the code is good to go, I am not sure why we are holding back the critical on styling.

Jeff Burnz’s picture

Try the patch in #189, that should give you pretty much what you are looking at in 189 screenshots - instead of overlaying the overlay like a dialog would, the message will take up space and thus push the entire page content down to make room for itself.

willmoy’s picture

I'll test the patch in #176 for functionality tonight.

As for the style, "nothing matters very much, and very few things matter at all," or to put it another way, I don't think think the issue should stay critical just for that.

Bojhan’s picture

Why would you not try the last patch?

ksenzee’s picture

Because the patch in #176 is the last one that actually works. The rest are add-ons for styling only.

Bojhan’s picture

/me shuts up

willmoy’s picture

Lol! Bogged down, but will get there in <6 hours.

cliff’s picture

On wording, OK with David Rothstein's wording in #176, except flip the "if" statement in front in the first bullet:

This site displays administrative pages on top of the page you started from.

-If you have problems accessing administrative pages, [link]disable the overlay[/link] on your profile page.
-[link]Dismiss this message[/link].

Trust me — it's clearer with the "if" before the "do." If you need more background, look for Ginny Redish's book on Writing for the Web.

And a preposition is a fine word to end a sentence with. If you think otherwise, look for and read through John McIntyre's blog for many, many screeds against that deeply ingrained grammatical falsehood.

Jeff Burnz’s picture

Just one thing - its much easier to style this is the entire sentence is a link - so the whole thing is focusable, we can't add any width/height to the containing DIV and can only do this on the anchors when they come into focus.

willmoy’s picture

Status: Needs review » Needs work

Score 1: it installs against HEAD.

On IE6, Win XP: register a new user (and new users having the right permissions to see the overlay and toolbar).

- The message appears when I tab

Good news: dismiss works—
- Go to the edit my account page in main window, and change the email address slightly (but without saving)
- Click configuration on the toolbar and that loads in the overlay
- Tab through to dismiss this message
- Something happens (screen flickers, possibly reloaded) and I'm back on the overlay on the config screen, with the message saying it's been dismissed and I can change settings on the overlay page
- The message no longer appears on tabbing through
- Close the configuration page on the overlay and I'm taken back to the view my account page. The edit page is closed and the half-done change are gone. But this is what happens even if I just load the overlay and then close it again, so isn't a bug with this patch.

Good news: disable the overlay works—
- Go to the edit my account page in main window, and change the email address slightly (but without saving)
- Click configuration on the toolbar and that loads in the overlay
- Tab through to 'Disable the overlay...' and press enter
- Taken in the main window to my edit account screen. This is reloaded so that my unsaved change is lost.
- Untick the box and press save.
- Returned to the configuration page outside the overlay. There is a message saying "The changes have been saved."
- Click Home
- Click Configuration on the toolbar, and it loads outside the overlay.

Bad news: turning the overlay back on doesn't have immediate effect—
- After switching off, go into account | edit
- Select use the overlay, save
- Message saying saved
- Click configuation, opens in main window
- Click a few others, stays in main
- Click home, click account | edit, opens in overlay (I could swear it didn't used to, as the notes above say*)
- Close that and configuration opens in the overlay

* So I tried a fresh install with the patch and edit account opened in the overlay. Human error, probably?

Other questions:
1- When you are redirected to the edit account page to unclick the overlay box, whatever the underlying page was is lost. Does that matter? It would annoy me if I were, for example, halfway through editing a node. It's not critical because it's so unusual but it's certainly inelegant.
2- Small thing, but might it be a good idea to modify the account editing page to add a more specific message when it's saved so that the overlay is being disabled, saying that administration pages will no longer appear in the main window?

Other than fixing it so that turning the overlay back on works immediately I think this functionality is ok but it would be good if someone else could think about those two questions.

I haven't looked at the code at all yet.

People are welcome to create users at http://overlay2.fullfact.org/ to test for themselves. Would be good to follow the steps above in other browsers and esp. with a screen reader for usability.

Jeff Burnz’s picture

It would annoy me if I were, for example, halfway through editing a node...

Is there actually a way to do that (am I missing something here), if the Overlay is enabled then it gets used for adding/editing content always doesn't it?

David_Rothstein’s picture

Status: Needs work » Needs review

Bad news: turning the overlay back on doesn't have immediate effect—
- After switching off, go into account | edit
- Select use the overlay, save
- Message saying saved
- Click configuation, opens in main window
- Click a few others, stays in main

That was already discussed (see @yoroy's reviews above) and is a separate issue at #931730: Enabling 'use overlay' setting on profile page does not immediately use overlay for admin pages

David_Rothstein’s picture

1- When you are redirected to the edit account page to unclick the overlay box, whatever the underlying page was is lost. Does that matter? It would annoy me if I were, for example, halfway through editing a node. It's not critical because it's so unusual but it's certainly inelegant.

I believe the idea of not using the overlay in that case was that the person who is clicking that link is doing so in order to disable the overlay (likely for accessibility reasons) so it would be bad to make them go into the overlay to do it :)

An alternative would be to have them able to disable it without actually visiting the profile page, but I believe the discussion above concluded it was better to take them to the actual place in the UI where the overlay setting lives.

effulgentsia’s picture

I just spent a couple hours reading some of this issue's history, and referenced issues. I will spend some time next week trying to help keep this moving.

@David_Rothstein: since #176 is your patch, and from what I can tell, the latest functional one, do you want to re-roll it to include feedback since then, or do you feel that's still the important one to be reviewing?

David_Rothstein’s picture

StatusFileSize
new7.87 KB

Here's a reroll of #176 with the following changes:

  1. The text is switched to lead with an "if" statement, but using the shorter version discussed above (where the whole sentence is a link):

    If you have problems accessing administrative pages on this site, disable the overlay on your profile page.

  2. The accessibility message on the user profile page itself is no longer added, as per #177 and following discussion.
  3. Some small fixes to the JavaScript code style.

Still to do:

  1. The message still seems a bit unclear (although improved by leading with the "if"). If we wanted to try to work on it more:
    • We could look at doing something like #206 but with the first couple of sentences still as a single link?
    • Or, we could make this message have slightly different wording when it's displayed inside the overlay vs outside of it. (The message as currently worded is more confusing outside of the overlay, where you are not even in a position to know if you have problems accessing administrative pages on the site.)
  2. The message heading for screen reader users, currently "Options for the administrative overlay", still looks like it needs some work. I'm not really sure what it should say, though.
  3. We need to merge in the message styling, once we decide between #182 and #189 or something else.
Bojhan’s picture

I think Jeff and me agreed upon #189 just need to clean up some bugs that accompany such style.

Jeff Burnz’s picture

I'm happy with 189, be good if someone else wants to drive that forward, I am very busy the next few weeks.

effulgentsia’s picture

Thanks. I'll re-roll #213 with #189, and post a new summary of the issue (building on the excellent summaries already here, like #150).

Question: Why is it necessary/desired for the message/link to become visible on focus? As I understand the issue, the message/link is for screen reader users using legacy/lame screen readers that are unable to handle any kind of modal dialog. Does the message benefit anyone who is able to see the screen? Sure, people who can see might want to disable the overlay just because they don't like it, and they can do that by disabling the module or by going to their account profile. That's not what this issue is about though. This issue is about addressing the problem that people using some screen readers cannot do that, since both of those steps involve using the overlay by default, so it's a catch-22. The message/link is there to:

1. Notify someone that there might be content that's not being read to them.
2. Give someone a way to edit their account settings outside of the overlay.

So, again, this message must be audible, but why does it ever need to become visible? Just wondering what the motivation is for figuring out how to style it.

David_Rothstein’s picture

I am not the best person to answer, but my understanding is that because the link is focusable, a keyboard user will automatically "land" on it when tabbing through the page.

If they land on it but we don't make it visible, then they have the experience of having hit the tab key but not seeing focus on anything on the screen. Someone described this in another issue as "tabbing into a black hole". Basically they would have to hit tab again (actually, in our case, two more times, since there are two links) in order to move on to the next visible, focusable element on the screen, and that could be a confusing experience.

So basically, showing it to them is a lesser-of-two-evils kind of situation.

Everett Zufelt’s picture

@effulgentsia

The only thing I would add to David's explanation is that there * may * be some keyboard oly users who for some reason (user agent) might not be able to properly use Overlay. This will provided the added benefit to them of an easy path to disable for their account.

I can't necessarily point to users or UAs that might result in this being a problem, but since there has been practically no usability testing of this UI component with keyboard only users it is likely better to err on the side of caution.

effulgentsia’s picture

StatusFileSize
new9.95 KB

This is just a straight combo of #213 and #189. Review coming in next comment.

effulgentsia’s picture

Overall, I think the patch has come a long way. It feels like we're getting close to consensus, and a genuine solution to the accessibility problem without sacrificing usability. Here's some problems I found in my testing:

  • If "access overlay" permission is available to the anonymous role, then the links are still shown, but they don't make any sense, because they try to update the user record. Is it the case that we need to force "access overlay" to be disabled for anonymous, or do we want an alternate link that disables the overlay for the session only?
  • If the user has JS disabled, the links are still there and focusable (and I'm guessing a screen reader would read them). But if JS is disabled, there won't be an overlay. So, should we add a display:none for no js? If so, what's the best practice way of doing that? We have a html.js selector, but no html.no-js selector.

Also:

+++ modules/overlay/overlay-child.js	18 Oct 2010 23:07:29 -0000
@@ -57,6 +57,15 @@ Drupal.behaviors.overlayChild = {
+    ¶
+    // Show all focusable links if focus is inside the accessibility wrapper.
+    $('#overlay-disable-message', context)
+      .focusin(function () {
+        $('a.element-focusable', this).removeClass('element-invisible');
+      })
+      .focusout(function () {
+        $('a.element-focusable', this).addClass('element-invisible');
+      });

I don't understand the code comment. What's an "accessibility wrapper" and why do I want to show all focusable links in it? Perhaps something like: "There are two links within the message that informs people about the overlay and how to disable it. Make sure both links are visible when either one has focus."

+++ modules/overlay/overlay-parent.js	18 Oct 2010 23:07:29 -0000
@@ -25,6 +25,15 @@ Drupal.behaviors.overlayParent = {
+    // Show all focusable links if focus is inside the accessibility wrapper.

See above.

Finally, the changes to Seven's style.css look pretty extensive. But all site pages (including the home page) can be an overlay parent. So that means Bartik, Garland, and all contrib themes are gonna have to do something similar? Yikes! See also #639460: Evaluate CSS of #skip-link, .element-focusable, and upcoming "disable overlay" links for their impact on contrib/custom themes, where I'm worried about that same problem existing for the "Skip to main content" link. Is there any way to put more into core CSS files, and require less theme-specific rules to make a "visible on focus" link visible and legible?

yoroy’s picture

Status: Needs review » Needs work

Thanks for the review. I don't have answers but I can tell this needs work :)

effulgentsia’s picture

Status: Needs work » Needs review
StatusFileSize
new11.63 KB

This includes code to address my concerns from #220 regarding anonymous and no-js access. I don't know if the CSS code added to overlay-parent.css is any good, so please feel free to change that.

Regarding the last paragraph in #220, I escalated #639460: Evaluate CSS of #skip-link, .element-focusable, and upcoming "disable overlay" links for their impact on contrib/custom themes to critical.

See #213 about remaining todos regarding bike-shedding the text. On the one hand, perhaps that's not critical. On the other hand, we need to freeze strings in RC1, so maybe it is.

Bojhan’s picture

I dont think we need to change the text anymore its good + people stop calling it bikeshedding.

babbage’s picture

One minor suggested improvement to the text (despite #223):

If you have problems accessing administrative pages on this site, disable the overlay from your profile page.

The previous text was ambiguous in that it could be interpreted that the overlay was "on your profile page" when in fact it was the control to disable it that was on that page... Using "from" instead of "on" eliminates this minor potential confusion and does not lose any of the previously intended meaning.

yoroy’s picture

The CSS introduces loss of spacing above the page title:

Before:
Only local images are allowed.

After:
Only local images are allowed.

Testing in Safari 5 I have focus in underlying Bartik when in overlay. I do get to the message in overlay in Seven eventually, but that's 21 tabs for skip to content and 22 for this dismissal.

Chrome works immediately. Nice. The overal workflow feels pretty good.

Actually dismissing the message works fine in both browsers.

I can't tab through anything in Firefox, but that may well be me.

FF, Safari, Chroe all show the missing top margin for the page title.

We're not changing the text at this point.

@todo:

- Needs CSS review and work on the title margin
- Needs review of functionality in Firefox and Safari (and IE!)

yoroy’s picture

Status: Needs review » Needs work

Effulgentsia in #222 asks for someone else to improve the CSS part of the patch: needs work for that

yoroy’s picture

Issue tags: +Needs design review

Whatever helps to get the right folks in here :)

effulgentsia’s picture

Nice CSS simplification was achieved for #skip-link in #639460-60: Evaluate CSS of #skip-link, .element-focusable, and upcoming "disable overlay" links for their impact on contrib/custom themes. It would be awesome if someone could see whether something similar could be done for the CSS in this patch, as well as also implement the necessary CSS for Bartik and Garland (#222 contains only CSS for Seven, but all themes can contain the new links added by this issue). Again, we need to make sure to not overwhelm contrib theme developers with an "OMG: I need to implement several dozen lines of complicated CSS, or else my theme isn't accessible" first impression of Drupal 7. To the extent that theme CSS in #222 is just about making it look good, we're fine. But to the extent there's rules that are required for it to be accessible, let's make sure we move those to system files.

Also #841184: "Skip to main content" link doesn't work correctly in the overlay is now RTBC, so we're really quite close on this.

Jeff Burnz’s picture

Yes, I think this should definitely work out of the box (be usable) without themers having to do any work at all - and right now a lot of the usability is tied up in the CSS for Seven (because this was prototyping, but it should not get committed like that).

ksenzee’s picture

I tried pulling the CSS out of Seven and into overlay-parent.css, and I was totally unsuccessful. So we could use a CSS wiz here.

james.elliott’s picture

@ksenzee The hide overlay link that you see when you first tab is the one rendered inside the overlay. So overlay-child.css is the file that the styles should go into. overlay-parent.css stylings don't pass through the iframe insulation to the contained.

I'm going to take a stab at this and should have a patch up shortly.

ksenzee’s picture

James, don't we need to style the hide overlay link on the parent page as well? (Of course, that one can be below the toolbar... blech.)

Jeff Burnz’s picture

I think a relevant question here for the UX team is - do we consider this a type of "core message", in which case it may be legitimate to apply heavy styling like other core messages.

We can go two ways on this - minimal styles in core, just enough to make it usable i.e. probably just a link color, (e.g. white) + hover/focus style (probably underlined), OR treat like a core message and give it everything so in effect themers would do nothing.

Given a choice, as a themer, I'd punt for the latter and treat it like a core message - I just don't want to theme admin stuff anymore in my themes unless I am specifically building an admin theme (in which case I can still override it if I feel the need to, which I doubt I would anyway).

james.elliott’s picture

Status: Needs work » Needs review
StatusFileSize
new14.14 KB

Here is my patch. I think I've addressed all the remaining issues. Any concerns about the specifics to how I handled the core themes should probably be filed as bugs against those themes and outside the scope of this critical issue.

  1. I solved the issue in #225 where the -20px top margin was pulling the page content up
  2. I moved the layout styling from Seven's style.css to overlay-child.css like ksenzee was trying to do in #230
  3. I checked on ksenzee's comment in #232 and found that no hide overlay link is added to the parent frame, so there was no need to style it.
  4. I added default styling for each of the core themes for the disable overlay link. I tried to match the styling of the skip to content link in each theme. For Garland I matched the styling of the RTBC patch here http://drupal.org/node/639460#comment-3640256.
  5. For Jeff Burnz concerns in #235, I've only added layout based CSS properties to overlay-child.css. The global CSS has the bare minimum of styles in it. Color, borders, border radius, and backgrounds are all defined in the themes.

I've not done any cross browser testing other than Chrome, FF 3.6, and IE9 that I always have open on my dev system. So testing is still required.

ksenzee’s picture

This looks super to me, but I defer to the CSS experts. I would love to get Jacine's input on whether there should be some default styling in core. I tend to agree with Jeff that this should be styled by default. If you don't use the keyboard you might not even know these links exist, let alone be moved to style them. But since we're trying to do as little default styling in core as possible, it would be great to hear from more themers.

And I'm still really confused about James's #3. If you just go to the homepage (while logged in as an admin) and start tabbing, you should see these two toggle links appear right after you leave the skip link - even when the overlay isn't open yet. Don't we need to style that as well?

james.elliott’s picture

This is my DOM structure on the home page

http://www.screencast.com/users/james.elliott/folders/Jing/media/906dcb3...

There is no disable overlay link there. Am I trying to work off an outdated patch?

jacine’s picture

Status: Needs review » Needs work

The patch no longer applies, probably since #639460: Evaluate CSS of #skip-link, .element-focusable, and upcoming "disable overlay" links for their impact on contrib/custom themes was committed. I think I managed to apply it correctly though.

I would love to get Jacine's input on whether there should be some default styling in core. I tend to agree with Jeff that this should be styled by default. If you don't use the keyboard you might not even know these links exist, let alone be moved to style them. But since we're trying to do as little default styling in core as possible, it would be great to hear from more themers.

Okay, you asked :)

I was expecting to actually see a message, not for it to be hidden. Once I saw it, I was surprised because it looks really messy in general. I'm really not a fan of this as hidden text. We are literally scattering easter eggs throughout Drupal. I don't understand why we are going out of our way to hide this, instead of just making it a regular message, but 236 comments into the issue, I'll just say that once and move on to what I was called here for (sorry, had to say it).

I absolutely agree 100% this needs to be styled. I don't think it needs to be heavily styled though, and it should not try to mimic a skip-link because it's purpose is completely different. Why are we not just letting this <div> just stack underneath the toolbar (or at the top of the page when there is no toolbar), and setting a background and foreground color? I think we are really overcomplicating this.

Here's a review of the latest patch:

+++ modules/overlay/overlay-child.js	29 Oct 2010 20:55:22 -0000
@@ -57,6 +57,17 @@ Drupal.behaviors.overlayChild = {
+    ¶

whitespace.

+++ modules/overlay/overlay-parent.css	29 Oct 2010 20:55:22 -0000
@@ -37,6 +37,18 @@ html.overlay-open .displace-bottom {
+ * Hide the message about disabling the overlay from users and screen readers

Both are users. How about: "Hide the message about displaying the overlay from all users..."

+++ themes/bartik/css/style.css	29 Oct 2010 20:55:24 -0000
@@ -255,6 +255,23 @@ ul.tips {
+  font-size: small;
+++ themes/bartik/css/style.css	29 Oct 2010 20:55:24 -0000
@@ -255,6 +255,23 @@ ul.tips {
+  border-radius:0 0 10px 10px;
+++ themes/garland/style.css	29 Oct 2010 20:55:24 -0000
@@ -338,6 +338,26 @@ span.form-required {
+  font-size: small;
+  border-radius:0 0 2px 2px;
+++ themes/seven/style.css	29 Oct 2010 20:55:24 -0000
@@ -178,11 +179,43 @@ pre {
+  font-size: small;
+  border-radius:0 0 10px 10px;
+  -moz-border-radius: 0 0 10px 10px;
+  -webkit-border-top-left-radius: 0;
+  -webkit-border-top-right-radius: 0;
+  -webkit-border-bottom-left-radius: 10px;
+  -webkit-border-bottom-right-radius: 10px;
  1. font-size: ems need to be used over small
  2. border-radius:
    • This line should always be last (after -webkit)
    • A space is needed between the property and value.

Also, I really don't see the point of any of the border-radius properties. I can barely see any difference and I think it just makes it messier looking.

Powered by Dreditor.

Everett Zufelt’s picture

I would love to get Jacine's input on whether there should be some default styling in core. I tend to agree with Jeff that this should be styled by default. If you don't use the keyboard you might not even know these links exist, let alone be moved to style them. But since we're trying to do as little default styling in core as possible, it would be great to hear from more themers.

Okay, you asked :)

I was expecting to actually see a message, not for it to be hidden. Once I saw it, I was surprised because it looks really messy in general. I'm really not a fan off this as hidden text. We are literally scattering easter eggs throughout Drupal. I don't understand why we are going out of our way to hide this, instead of just making it a regular message...

Agreed. If you have CSS enabled and are a keyboard only user you might not find this message. if you don't use the keyboard you almost certainly will not see the message (not that this is really that big of a problem).

Jeff Burnz’s picture

In #189 we stepped away from skip link styling to use the blue color used for the block region demonstration page link. With the blue style the border radius will make a lot more sense than it does now.

My personal preference is for the message to push the page content down rather than sit in its own layer on top.

Don't think it makes a lot of difference in this situation to use keyword font sizing or ems, keyword has the distinct advantage of locking the relativity to the browser default as opposed to relying on the theme.

The min-width is set to 700px - how does that par with Overlays overall min-width?

Need a re-roll.

jacine’s picture

StatusFileSize
new9.54 KB

Don't think it makes a lot of difference in this situation to use keyword font sizing or ems, keyword has the distinct advantage of locking the relativity to the browser default as opposed to relying on the theme.

I like consistency and this isn't inconsistent. The patch also sets "small" in some themes and ems in another. I don't really see why relativity to the browser default is more important in this case than with anything else, but it's a pretty minor issue in the scheme of things, so I'll stop complaining about it. :)

So... I think most of us agree that default styling should exist for this, so I suggest we take the "Stark" approach first and have the themes adapt from there.

'#prefix' => '<div id="overlay-disable-message"><h3 class="element-invisible">' . t('Options for the administrative overlay') . '</h3>',

Not sure why this isn't in a theme function, but can we get a class to style against for this that tells us it's focused? We can't easily style the container, i.e. adding padding or borders, without introducing visible issues otherwise. I tried adding a class in the code below, but it doesn't work inside the overlay:

    $('#overlay-disable-message', context)
      .focusin(function () {
        $(this).addClass('overlay-disable-message-focused'); // Any suggestions for a better class name would be appreciated. :)
        $('a.element-focusable', this).removeClass('element-invisible');
      })
      .focusout(function () {
        $(this).removeClass('overlay-disable-message-focused');
        $('a.element-focusable', this).addClass('element-invisible');

      });
  }

Any ideas? :(

Also, this is not desirable:

'#title' => ' ' . t('Dismiss this message.'),

If you choose to style the links with text-decoration: underline, the space looks abnormal (see screenshot). If the space is removed the links are just on top of each other. That space should be added to #prefix, so this doesn't happen:

        '#prefix' => ' ',
        '#title' => t('Dismiss this message.'),
Everett Zufelt’s picture

Title: Screen reader users need a clear, quick way to disable the overlay » Screen reader users and some keyboard only users need a clear, quick way to disable the overlay

#841184-55: "Skip to main content" link doesn't work correctly in the overlay explains that it will likely be desirable for some keyboard only users to disable the Overlay (IE6 / IE7). Right now the ability to do this is on their Account edit page, or invisible in the Overlay (made visible on focus). We're asking people to hopefully find something that is an Easter egg to do what they need to do.

Now, we have done our best to put the links in the best possible place in the DOM, so that it is most easily discoverable, like hiding the Easter egg in a really easy place to find. But, let's not forget it is still hidden.

Edit: Although I have always wanted (as much as I recall) this message to be visible, I was content about it's being hidden, because we were unaware of issues for keyboard only users at that time. This is no longer the case. The purpose behind element-inivisible.element-focusable is * not * to display content to keyboard only users, it is a method of making sure that the focus doesn't get lost in a focus black hole. If there is content that a sighted keyboard only user may need (like the 'show row weights' link on table drag) it needs to be visible.

Jeff Burnz’s picture

Can someone summarize why showing this would be preferable and why showing this would be helpful, I am not clear why this would be the case. I can see this scenario - keyboard user is having many troubles (say IE7 user), they can see this message so keep tabbing in order to get to it, which will happen eventually?

jacine’s picture

Assigned: Unassigned » jacine

Assigning to myself. I figured out the problem JS I was having, so I'm working on a patch.

PS - The current approach (hiding the text on every page) is really growing on me. It provides an opportunity to solve what I consider to be a very annoying issue, which is that the Overlay is completely useless for administering Drupal on iPad/iPhone, and other mobile devices, etc. Using media queries, and overlay classes, it's actually really easy to show this message under very specific circumstances. That makes me happy.

ksenzee’s picture

I think hiding this message for mouse-only users - and possibly showing it on touch-screen devices, as Jacine suggests - is going to serve everyone well, no matter what their circumstances. I have tried and tried to think of accessibility concerns we haven't addressed that will keep sighted admins from using the overlay easily, and outside the touch-screen issue, I can't come up with a single one. Cognitive impairments, limited mobility, color blindness, seizures, low-literacy sighted screenreader users, attention deficit, low-vision high-contrast environments, keyboard-only, mouse-only, mouse+keyboard combination -- none of it should be a problem. If you can see the screen at all, and you're using a browser from anytime this century, you will be fine. Either the overlay will work for you, or it will be patently obvious how to turn it off. For example, some keyboard users will find it inconvenient to use the overlay with IE6 and IE7. Not impossible, mind you; just inconvenient. Those users will see this message loud and clear at the top of every single page.

So I beg you all, please, pretty please, let's not revisit the question of whether these toggle links should be shown to mouse users. We're almost done with a patch that I believe will serve everyone's needs. And when it's done, we'll have finished every single critical issue, and we can release this amazing piece of software.

mark trapp’s picture

The overlay works fine on an iPad/iPhone/iPod Touch (and, likely, Android) with the patch in #878020-15: position:fixed prevents iOS devices from scrolling the Overlay. Displaying the message for them is really not necessary at all.

Jeff Burnz’s picture

I agree with #244 quite strongly, I also have thought long and hard about this which is why I asked for good arguments as to why this is being raised again (showing the message by default). I can't see any real benefit, on the other hand showing this would add cognitive load to all users and be one more thing in the way of getting on with using Drupal. So I would ask also, no bikeshed on this please, lets get on with it and IF over the course of D7 this becomes an issue for some unknown/unforeseen reason then we revisit it in D8, otherwise this is looking good to go bar the shouting over style.

@Jacine - I just now realized why I used small font keyword (I was racking my brain as to why I would not just use ems), it was because the block region demo page link uses small, and I largely cut/paste the styles when I was prototyping.

@240 - this would be hugely helpful for styling these messages, any takers?

Everett Zufelt’s picture

For example, some keyboard users will find it inconvenient to use the overlay with IE6 and IE7. Not impossible, mind you; just inconvenient. Those users will see this message loud and clear at the top of every single page.

Do we have * any * sighted keyboard only users in the community who can test this preposition?

jacine’s picture

Assigned: jacine » Unassigned
Status: Needs work » Needs review
StatusFileSize
new144.98 KB
new161.03 KB
new244.52 KB
new189.33 KB
new552.01 KB
new236.12 KB
new180.1 KB
new190.99 KB
new183.74 KB
new240.06 KB
new226.18 KB
new545.35 KB
new218.93 KB
new125.02 KB
new123.14 KB
new157.67 KB
new155.81 KB
new137.3 KB
new436.04 KB
new128.84 KB
new110.09 KB
new148.16 KB
new136.1 KB
new181.8 KB
new159.17 KB
new487.11 KB
new226.44 KB
new134.36 KB

Ok, Here's a patch and a gazillion screenshots.

I took direction from the screenshots posted above for the default styling. The structure is pretty much the same inside and outside the overlay. The main difference is that inside the overlay it's constrained to 80%. I added wrapper divs to the markup and styled it like a 2-column layout (80% for the profile link, 20% for the dismiss link). Since it's fluid, it works nicely when the window is resized and should work fine for translation. I took screenshots of most browsers where it's wrapping to demonstrate this. In case it's not obvious, when the browser is wider, no wrapping occurs. I also added a class to the wrapper in the JS when links are focused indicating that, because it was need in order to add certain styles, like padding, to the links inside without affecting the page while hidden.

Semi-unrelated, but fixed in this patch, is the following:

--- modules/overlay/overlay-child.css	28 Jul 2010 01:26:00 -0000	1.6
+++ modules/overlay/overlay-child.css	31 Oct 2010 07:02:20 -0000
@@ -7,6 +7,8 @@ html.js {
 html.js body {
   background: transparent !important;
   padding: 20px 0;
+  margin-left: 0;
+  margin-right: 0;
 }

In Stark, for example there are user agent margins being applied to the body (8px). This was being inherited in the overlay, and causing a vertical scroll and the toolbar with to be off.

Other oddities, unrelated to this patch, but worth noting for testers:

- In Seven, in IE6 and IE7, the #skip-link div is causing an extra space at the top, so in the screenshots it's not flushed with the toolbar.
- In Garland (when it's set to the admin and user-facing theme), in IE6, I cannot get the overlay to load.

After having done this, and seeing what these colors look like with all the themes, I'm thinking it's probably be best to leave those colors to the themes to deal with entirely. As of right now, all the non-structrual styles are in system.theme.css. I'm not too keen on them being in there, but I suspect that they will end up in themes, and it beats having to put them in overlay-parent.css and overlay-child.css twice, or having to create another CSS file just for this. This is less of a big deal ATM, those can always be moved around and the theme-specific styling can be done in follow-up issues, as long as we are all good with the rest of it.

Please review :)

jacine’s picture

StatusFileSize
new12.99 KB

Oops, forgot the patch :P

coderintherye’s picture

Well this is pretty big, so I think it will take a few reviewers. I can say that the patch applies cleanly for me on a fresh D7-dev and that I get the behavior of providing the link to disable overlay, as well as the link to dismiss the message, both in hidden divs. I get the divs as expected on Chrome 7.0.517.41 Beta and Firefox 3.6 on Ubuntu 9.x in Bartik and Seven and they both appear as would be expected when tabbing. Patch also runs cleanly through Coder.

Hopefully, I can do some more thorough reviewing tomorrow or others can come in and add their voice. I do agree that we shouldn't bikeshed this issue, and the current behavior is very good.

Bojhan’s picture

From a UX perspective it seems good, it might not look exactly like it did before (not sure why it doesn't) in #189. But that shouldn't hold it up at all from being committed. If we can get a markup review, which is good I think we are ready to roll this in.

plach’s picture

+++ modules/overlay/overlay-child.js	31 Oct 2010 07:02:20 -0000
@@ -57,6 +57,19 @@ Drupal.behaviors.overlayChild = {
     Drupal.overlayChild.attachBehaviors(context, settings);
+    ¶
+    // There are two links within the message that informs people about the

Just gave a quick look to the patch and noticed some trailing whitespaces.

Powered by Dreditor.

jacine’s picture

Ok, I did not realize that the design in #189 was decided upon. It definitely wasn't clear at all from that first patch I tested here, and I guess I got a little lost in this huge issue. Sorry about that.

Here are my issues with #189:

  1. I don't like the "Dismiss this message" button-style link in #189 as a default style. It requires too much special-casing to style. Both Seven and Bartik already provide button styles for links using the class .button. This is a pretty common thing to do in a theme. I see no good reason not to use that class here. If themes provide styles for .button, they'll get the added bonus of it matching out of the box. If not, they'll just get an unstyled link, that will match the links in their theme, which seems fine to me.

    @Bojhan expressed a concern (in IRC) that this might confuse users because it triggers a form submit mental model that isn't appropriate in this case. I don't necessarily agree with this because of what these 2 links actually do:

    1. Links to the profile page.
    2. Actually performs a form-like action which involves saving a preference to your user account to dismiss the message and then provides feedback in the form of a dsm($message).

    As far as I'm concerned #2 looks like a button in #189, and qualifies to actually be a button based on what it does, so I see no need to special case another color button in here that will definitely not match most themes.

    That said, Seven is free to special-case this...

  2. This brings me back to the colors and them not matching outside of Seven. While I think default styling should be provided, I think it should be minimal (i.e. just structure). If not, we end up doing more damage than good IMO.

Here's what the new patch does:

  • It has a container <div> that floats the first link left and the second link right.
  • This <div> gets a class called .overlay-disable-message-focused which is applied via JavaScript when either of the links are focused. This allows the contents of the container to be styled freely without affecting the page while invisible.
  • It is given a background color of white by default.
  • It spans the full width of the page when outside the toolbar.
  • Inside the toolbar it is 80% wide and has rounded corners on the bottom left and right of the container.
  • The dismiss link gets a .button class that is already styled in both Bartik and Seven already.
  • Top margin is applied to the links themselves so there is sufficient space separating the two links when the content wraps.
  • The patch adds styles for Seven in its' style.css file.
  • Fixes the whitespace issue identified by @plach in #252.

In short, it's #189 without the colors and with the "dismiss" message using the .button class instead of special casing it.

How it will be dealt with by themes:

  • The structural styles are provided by default entirely in overlay's CSS files. Nothing is in system.base.css anymore.
  • If the default background color and link colors are not sufficient, this is all that will need to be styled in themes.

This is not my domain, but I'd also recommend going with a much lighter blue for Seven that better matches the other Drupal messages and allows the link to stay it's default color, instead of black because it looks kinda odd to me.

I'm much happier with this approach from a "Markup/CSS" standpoint. I've attached a few screenshots of what this looks like across themes. I'd appreciate feedback on this (yay or nay, with alternative suggestions) before taking a gazillion (cross-browser) screenshots again, because it takes a really long time to do.

Jeff Burnz’s picture

Having themes style this message is rather inconsistent with other messages in core - all warning, error, OK, status reports, block demo link etc etc have core styling and do not rely on the theme. This enforces a consistent UX and frees themers from the tyranny of having to account for back-end stuff. I'm not entirely thrilled we now have to special case for this one system message.

From a usability standpoint I am interested to hear the thinking behind showing these messages outside of the overlay when no overlay page is loaded - this seems rather odd because if I have not used the admin section / overlay then I have no real idea what this means. I did test this on some willing dinner party guests and mostly they shrugged shoulders and moved on (they were able to "muddle through") so maybe not a big deal?

Hitting "Dismiss this message" gave me a 404 error (Seven as admin, Garland as front end theme) - because of this I can't really comment about the "button mental model" concerns, although theoretically I would tend to agree with Bojhan.

Bartik appears to be hiding the skip link in Overlay causing all sorts of hilarity, need to look at that more and open a new issue for Bartik.

Everett Zufelt’s picture

From a usability standpoint I am interested to hear the thinking behind showing these messages outside of the overlay when no overlay page is loaded

I don't really see a need to show the message if the overlay is not in use. That being said, I think it is important to have the message at the top of the DOM and of the Overlay segment of the DOM so that when a UA / AT doesn't properly follow focus the message is still reasonably (?) easy to discover.

Jeff Burnz’s picture

I think it is important to have the message at the top of the DOM and of the Overlay segment of the DOM so that when a UA / AT doesn't properly follow focus the message is still reasonably (?) easy to discover.

Yes, that is what I thought, but only when an overlay page is actually loaded, not all the time.

Everett Zufelt’s picture

Yes, that is what I thought, but only when an overlay page is actually loaded, not all the time.

Agreed.

jacine’s picture

Having themes style this message is rather inconsistent with other messages in core - all warning, error, OK, status reports, block demo link etc etc have core styling and do not rely on the theme. This enforces a consistent UX and frees themers from the tyranny of having to account for back-end stuff. I'm not entirely thrilled we now have to special case for this one system message.

This is not like the other core messages:

  • It's a one shot deal. It's entirely static, doesn't need to hold multiple messages.
  • It doesn't use drupal_set_message(). Applying .messages would likely introduce unwanted margins and padding, icons, etc.
  • It is not remotely in the same location as the ones that use drupal_set_message(). It's not unreasonable to assume the .message styling totally depends on it's container which is totally different in this case.

My main concern is throwing in all sorts of colors on this thing, that will not usually match, and that most themes will need to worry about undoing. It's very clear to me that the proposed design does not look good in all the core themes, and what happens when someone does a theme that has a scheme with deep reds or blue colors? Do you think this pastel blue color is going to work? The worst part is that most themers will never even figure out that it exists.

I'm fine with the way it is in Stark, with this patch, TBH. It has structure and it will inherit my theme's font and link colors. I think that is just fine. No need for my themes to special-case anything. IMO this really does not need to be a Christmas tree with all sorts of flaming colors. It's really not that complicated.

If you don't like what I'm suggesting, can you please suggest something else that takes the concerns I've raised into account? I was asked to come here and provide my input and try to help, and I'm trying, but I really don't know where to go from here.

David_Rothstein’s picture

Jacine's approach (and implementation in the patch) makes a lot of sense to me. The main reason we're providing default visual stying for this message is to make sure it's readable, and to prevent it from being so ugly that it's insulting. But for a message that only a very small percentage of users will ever see (and most of whom will dismiss it soon after seeing it), it's not worth delaying this too long over the visual styling, and it's better to sacrifice a little beauty for a more robust implementation that is likely to be automatically functional across all themes.

That said, looking at the screenshots I am noticing a nitpicking thing which is that the message and "dismiss button" don't seem to be vertically aligned in Bartik or Seven. Just sayin' :)

Also, relying on the "button" styling is a little bit of a hack (is class="button" ever even output by a theme function in core??) but I guess if core themes already have styling for it they are already assuming it as a convention for whatever reason.

I don't really see a need to show the message if the overlay is not in use. That being said, I think it is important to have the message at the top of the DOM and of the Overlay segment of the DOM...

Agreed that would be a lot better for usability. I am guessing that to implement this without opening up a new rathole, we would need to still always output it in the DOM, but have it be display: none by default when the overlay is not open, but then opening the overlay causes that to be removed from the parent window.

+      '#prefix' => '<div id="overlay-disable-message" class="clearfix"><h3 class="element-invisible">' . t('Options for the administrative overlay') . '</h3>',
+      '#suffix' => '</div>',

Agreed with the review above that we should do this via a #theme_wrapper function instead.

+        '#type' => 'link',
+        '#prefix' => ' ',
+        '#title' => t('If you have problems accessing administrative pages on this site, disable the overlay on your profile page.'),

I am not sure what the #prefix accomplishes here?

+++ modules/overlay/overlay-parent.css 29 Oct 2010 20:55:22 -0000
@@ -37,6 +37,18 @@ html.overlay-open .displace-bottom {
+ * Hide the message about disabling the overlay from users and screen readers

Both are users. How about: "Hide the message about displaying the overlay from all users..."

Screen readers are software programs, not users, so I assume that was the reason for referring to them separately in the original code comment. But I agree that simply saying "all users" is a lot better :)

Jeff Burnz’s picture

Status: Needs review » Needs work

@258/@259 ok I'm not going to argue here for the sake of moving on. The style does need work to align things better.

If we can remove the message from the DOM when outside the overlay with display:none; that would at least removes the wtf. I assume we need a little JS magic to insert a class.

Right now the biggest problem seems to be the 404 for the "Dismiss this message" link.

effulgentsia’s picture

Assigned: Unassigned » effulgentsia

Working on some of the feedback above. Will post new patch soon.

effulgentsia’s picture

Assigned: effulgentsia » Unassigned
Status: Needs work » Needs review
StatusFileSize
new12.83 KB

This patch adds a theme function to separate the functionality of overlay_dismiss_message() from its markup. Because of this, it also removes the leading "_" from that function name.

It also changes the CSS in overlay-parent.css to use html.overlay-open instead of html.js to undo the "display:none". This also removes the need for the inline comments, since it's now obvious what the purpose of that is. This should be tested with screen readers, IE6, IE7, and modern browsers to see if it has the desired effect of hiding the parent document's message until the overlay is in-use, while still making it accessible when the overlay is in use (accessible both to screen readers and to keyboard tabbing).

Right now the biggest problem seems to be the 404 for the "Dismiss this message" link.

I couldn't reproduce that. I think you just need to empty your Drupal cache after applying the patch.

Also, relying on the "button" styling is a little bit of a hack (is class="button" ever even output by a theme function in core??) but I guess if core themes already have styling for it they are already assuming it as a convention for whatever reason.

The setupDrawer() function in dashboard.js adds a "button" class to a link. Therefore, I see no problem in theme_overlay_disable_message() doing so. If we think it's good UI for the link to look like a button, I think this is the correct way to do it. I leave it to others to decide if this is good UI, but it makes sense to me, since it is an action link rather than a resource link.

jacine’s picture

@David_Rothstein, thanks for the feedback :)

In my experience, call to action buttons often look the same as form submit buttons, so I style this class and add it wherever it needs to be (more buttons, etc). That's basically the convention in a nutshell.

I am not sure what the #prefix accomplishes here?

It prevents this happening, as I mentioned in #240. Although, @effulgentsia's latest patch makes fixing this easier. :)

If we can remove the message from the DOM when outside the overlay with display:none; that would at least removes the wtf. I assume we need a little JS magic to insert a class.

We don't need an extra class for this. It would actually work just fine with the classes we've got now.

coderintherye’s picture

I also cannot reproduce the 404 on "Dismiss this message" claimed in #254, on both patches in #248 and #262.

@Jeff: Can you give the steps to reproduce? (After clearing your cache)

If we can't reproduce the 404, can we get some consensus on what needs to happen for a pass here? For what it's worth, the patch applied cleanly for me, but I'm not sure from the above what needs to be accomplished concerning theming/UI/design before this gets a pass.

effulgentsia’s picture

To summarize #262:

  • The message starts off styled as "display:none" on the parent frame. Therefore, it should not be read by screen readers, or be reachable via tabbing.
  • When an overlay is opened, the HTML tag of the parent frame gets an "overlay-open" class, and overlay-parent.css's html.overlay-open #overlay-disable-message {display: block;} rule kicks in, making the links in the parent frame (theoretically) available to screen readers and tabbing. Plus, the contents of the overlay includes another copy of those links.
  • On modern browsers, once in the overlay, there is JS code already in HEAD (from #841184: "Skip to main content" link doesn't work correctly in the overlay) to set the parent frame's links to have tabindex=-1, and therefore not part of the tabbing sequence. So, on these browsers, only the links inside the overlay can be reached via tabbing, because the ones in the parent document are "display:none" until the overlay is open, and then "tabindex=-1" once the overlay is open. Note, by "inside the overlay", I mean inside the overlay document's DOM. Visually, they appear below the toolbar.
  • On IE6/IE7, we do not have the above JS code running (because of intractable performance problems), so the user tabs through all of the links in the overlay dom, and then through all of the links on the parent dom. So, these users can end up seeing both sets of links (not at the same time). These are also the most likely sighted users who will want to disable the overlay, since it sucks to have all the parent document's links part of the tabbing sequence.

Based on the above, I have three questions (probably for Everett or someone else familiar with the quirks of different screen readers):

  • Does this work for screen readers? If we only show the links when the overlay is open, I don't fully understand why we have them in the parent document at all. Whatever that reason is, is this use of keeping the parent one's "display:none", followed by CSS that sets "display:block" only once the overlay is opened compatible with it?
  • Is the fact that we have JS code setting tabindex=-1 for the parent dom's links if the user is on a modern browsers a problem, with respect to the above? Some screen readers skip over links with tabindex of -1, do they not? Or is it ok, because these same screen readers will find the ones that are in the overlay's dom?
  • Should we also set tabindex=-1 for the parent dom's links in IE6/IE7 too, to match the other browsers? For performance reasons, we can't do this for EVERY link in the parent dom, but we can do it for these two. If we do so, then we don't need to worry about any styling within overlay-parent.css, and it also means that themes not intended to be used as administrative themes wouldn't need to worry about any styling for these links, since only the ones inside the overlay would ever be visible. But, would this make these links less accessible to the very users who will likely need them?
effulgentsia’s picture

Copying Everett's statement from #255, that is I think relevant to #265, I'm just not sure how:

I think it is important to have the message at the top of the DOM and of the Overlay segment of the DOM so that when a UA / AT doesn't properly follow focus the message is still reasonably (?) easy to discover.

jacine’s picture

Here's an updated patch that does the following:

  • Removes the CSS that applies visual styles in overlay-parent.css, since this will always be hidden and doesn't need styling.
  • Fixes the whitespace issue by rendering each link separately and putting a space in between them.
  • Fixes the vertical alignment issue mentioned in #259

Screenshots of the fixed alignment issue also attached.

EDIT: Whoa, I was previewing and did not submit the form. Hmm.

jacine’s picture

Issue tags: -Usability, -Needs design review, -Accessibility
StatusFileSize
new12.89 KB

Ok, that was totally weird, and scary. I didn't submit that comment. I was only previewing. :s

Anyway, the patch does not remove the styling from overlay-parent.css as I mentioned in the first bullet. I'm still not clear whether that needs to exist or not based on @effulgentsia's summary in #265 and #266.

So, the patch does only this:

  • Fixes the whitespace issue by rendering each link separately and putting a space in between them.
  • Fixes the vertical alignment issue mentioned in #259 (screenshots above).
jacine’s picture

Meh, adding the tags back. Sorry for the SPAM.

Bojhan’s picture

I still don't get the whole design argument on the button (honestly, I don't care at all - I just want D7 out already) but your argument is basically :

1) I don't want to special case it.
2) It might not look good in other themes.
3) Its technically a button.

All of which are technical arguments, not actually design arguments. 1) To me this is a non-argument, because we are already special casing it - would just mean one extra element. 2) We can't help it if people don't style something like this. It not matching with other theme headers is of little concern to me, the same applies to the toolbar which doesn't work well on darker headers. 3) The user does not care what it technically is, if it confuses him/her.

You cannot convince me that from a design perspective this is good, people do not see this as a "button" in the Drupal context (the smashing web article, is not applicable in this context) and will therefor be somewhat thrown off by it showing up like this. Whenever I read something like "sacrificing beauty" for something else, those two words already tell us we are doing it wrong :)

Anyways from a usability perspective, this does not make sense. But I honestly don't really care, if we get to something that looks technically oke - we should just push for commit.

Jeff Burnz’s picture

+1 to what Bojhan said, yeah the button really looks odd in this context, there's no real special casing argument here either, with the button it's being special cased as it is (positioning), the difference in CSS is negligible, its likely a .button class will always need special casing because its not a real input element and not in a form (with the form element wrappers), imo the fact that its NOT an input or button element should raise a flag.

jacine’s picture

Assigned: Unassigned » jacine
Status: Needs review » Needs work

Whatever. Fine I will remove the gray button and give you a blue button for Seven.

It was just a suggestion to avoid adding a completely new design element that does not exist anywhere else in Seven, therefore is not consistent with anything, for a simple one-off message at the 11th hour of the Drupal 7 cycle. It clearly looks and acts like a button to me in #189, but no one else's opinion actually matters...

Standby for a new patch.

jacine’s picture

Assigned: jacine » Unassigned
Status: Needs work » Needs review
StatusFileSize
new256.68 KB
new286.03 KB
new12.97 KB

Here you go.

Everett Zufelt’s picture

• Does this work for screen readers? If we only show the links when the overlay is open, I don't fully understand why we have them in the parent document at all. Whatever that reason is, is this use of keeping the parent one's "display:none", followed by CSS that sets "display:block" only once the overlay
is opened compatible with it?

The point, perhaps a bad call on my part, is to help users be closer to the links when their UA / AT doesn't properly follow the focus being set to the iframe / Overlay child. AFAIK this will work for screen-readers.

• Is the fact that we have JS code setting tabindex=-1 for the parent dom's links if the user is on a modern browsers a problem, with respect to the above? Some screen readers skip over links with tabindex of -1, do they not? Or is it ok, because these same screen readers will find the ones that are in the overlay's dom?

Screen-readers will skip links with tabindex -1, but only when tabbing. Keep in mind that most (AFAIK) screen-reader users don't tab through a web page, they use other reading commands. Again, having the message in the parent is only a hack to assist users when focus is not properly set to the Overlay child.

• Should we also set tabindex=-1 for the parent dom's links in IE6/IE7 too, to match the other browsers? For performance reasons, we can't do this for EVERY link in the parent dom, but we can do it for these two. If we do so, then we don't need to worry about any styling within overlay-parent.css, and it also means that themes not intended to be used as administrative themes wouldn't need to worry bout any styling for these links, since only the ones inside
the overlay would ever be visible. But, would this make these links less accessible to the very users who will likely need them?

Possibly, once again, they are there in case focus isn't properly set to the Overlay child. So, if this happens to a keyboard only user it might be helpful.

effulgentsia’s picture

Assigned: Unassigned » effulgentsia
Status: Needs review » Needs work

Thanks for #274. I'll post another patch soon, based on that feedback.

effulgentsia’s picture

Status: Needs work » Needs review
StatusFileSize
new13.05 KB

This is #273, but modified to make the parent document's message unreachable by tabbing in IE6/IE7 as well. See #265 for more details. I think this significantly improves the experience for theme developers, because it just gives them one message to style, rather than a second one that is only visible in IE6/IE7, and it also means this message is only visible when the theme is an admin theme, which means custom themes for a single site don't have to worry about it at all.

Based on #274, this seems acceptable, since the purpose of the parent document's message is for screen-reader users navigating the document with screen-reader commands that don't follow tab order.

once again, they are there in case focus isn't properly set to the Overlay child. So, if this happens to a keyboard only user it might be helpful.

I don't think this is a problem. Even on IE6/IE7, focus begins in this overlay, so the message in the child will be seen early in the tab cycle. The problem in those browsers is just that after tabbing all of overlay and then the toolbar, instead of cycling back into the overlay, you keep tabbing through all of the parent document. It is at this point, that an IE6/IE7 keyboard-only user will probably:

1) wonder what's up
2) hopefully, remember reading the message that if they're having problems with the overlay, then can disable it
3) hit the browser refresh button (at least that's what i do when i'm on a web page that isn't doing what i think it should be)
4) start hitting tab, and see the message again, and maybe this time, follow the link to disable the overlay

Of course, the above is just a guess. Any real feedback from screen-reader users and keyboard-only users on this patch would be greatly appreciated.

effulgentsia’s picture

Assigned: effulgentsia » Unassigned

Back to the community.

Everett Zufelt’s picture

Patch in #276 sounds reasonable to me.

Related, how does a keyboard only user get to the toolbar from where they land in the Overlay child? The real question is is it apparent how they get to the toolbar, does it make sense? Not looking for a long discussion to derail the issue. If there is a problem I'll open a new bug.

james.elliott’s picture

StatusFileSize
new13.09 KB

@Everett Zufelt: You can tab to the toolbar from the overlay child as you would normally.

Regarding the patch. I have 2 minor issues. Well, 1 minor issue that occurs twice. CSS attributes need to be in alphabetically order.

html.js body {
   background: transparent !important;
   padding: 20px 0;
+  margin-left: 0;
+  margin-right: 0;
 }

and

+#overlay-disable-message a:focus,
+#overlay-disable-message a:active {
+  text-decoration: underline;
+  outline: none;
+}

I rerolled effulgentsia's patch from #276 and only changed the order of those attributes.

I'm also confused as to why we're adding the link to the parent frame and giving it display: none; Why add the links there at all?

KeithH’s picture

The patch seems to work pretty well for me.
I'm using IE 8 if that helps, using JAWS for Windows primarily for testing.
Also as for getting to the admin toolbar it is a heading at level 2 so I just hit h once after logging in and I'm at that heading.
An alturnitive option is to press control-f, type the word toolbar or ever the word "tool" without quotes, and press enter.
That's another way to get there.
Seems extremely clear to me personally how to get to the toolbar.
As for someone that's sighted, they probably drag the mouse and such.
Now if you're just a keyboard-only user without a screen reader program, I have no idea honestly how you might get to the toolbar other than control-f in IE, and finding the text "toolbar" or something.
Any comments on this are appreciated.

KeithH’s picture

By the way, what is the point of this "link placement" discussion?
The longer you developers gripe amungst yourselves the longer you stop the closing of this outstanding bug issue in my personal opinion and thus, keep Drupal 7 on the backburner from finally becoming an RC in the near future (hopefully).
How long are you folks going to continue to argue about the link being in the parent document, and such?
I don't know how many times I've seen similar comments.
Figured I'd just give my two sence here.
In my opinion, you might as well go with what you have. If something doesn't work, you could always update the module later. Once again, that's just my thoughts on this. Sure does not seem like productive development going on here.
Is this some visual issue as far as the link being in the parent document? As for the display none functionality, I thought that was to help screen readers focus the link?
Thanks.

boombatower’s picture

Much agree with #281, lets get something in...then we can unblock release candidate and you can always fix during RC or even after actual release. For those who need to wait for this they can use the tried and true tabs that are implemented in virtually ever browser to keep the page they were on while they do administration...lets worry about something else.

jacine’s picture

Status: Needs review » Reviewed & tested by the community

The patch in #279 is ready as far as I'm concerned.

Andy B’s picture

I use JAWS for Windows 12. I haven't applied any of the patches in this thread, nor have I closely followed it. My question(s) are these:

What exactly does the supposed close overlay link/button supposed to actually do? Does it close the inaccessible version of the overlay and keep the html version open? or does it close the admin pane altogether?

Here is my experience with the overlay:
1. Go to drupal7 beta 2 install and sign in as superuser (user 0).
2. Go to an admin page. admin/build/modules will work.
3. The modules list/admin section opens in a frame (from the current layout, I would think on the bottom of the window?). Can't see, but that's the impression I get based on its placement in the code.
4. The content inside this frame is already accessible. Why mess with the overlay?
5. There is a link that is called "close overlay". When I press enter on it, it closes the frame the modules list was in and returns me to the home page from what it looks like. Since "close overlay" is quite confusing, isn't there a better title for it? Wouldn't be so bad if "close the door..." and "open the door..." (whatever that is?) were removed (or at least called something else). Any ideas? or am I just blowing steam off the wall here?

james.elliott’s picture

@Andy B

This patch adds two links near the top of the tab index when the overlay is opened. These links allow you to either dismiss the links, or to access your user profile page where you can disable usage of the overlay.

Disabling the overlay would mean that a user would see administration pages on their own, as opposed to loaded into an iframe that is positioned in front of a non-admin page.

The "close overlay" link that you mention removes said iframe from the page, leaving you with the underlying non-admin page.

Jeff Burnz’s picture

@Andy B - I'll let Everett comment more here but it looks like Jaws 12 for Windows is working in the Overlay, but as I understand earlier versions and other screen reader software does not, so that is the main reason for the disable overlay links.

ksenzee’s picture

I've just filed an issue about the "Close the drawer" text, which is very confusing for screen reader users: #961292: "Close the drawer" needs a better title for screen readers

Andy B’s picture

Ok. So from what I understand:

1. The patch listed a few comments back will add links to disable the overlay and/or just close it. Is the patch going to be applied to D7-dev soon?
2. Older versions of JAWS (earlier than 12) wont work with the overlay very well. So either upgrade to a newer version of JAWS (12) or/and disable the overlay.

Another question, is the overlay available to anonymous users? If so, do they have a way of turning it off as well?

effulgentsia’s picture

Assigned: Unassigned » effulgentsia
Status: Reviewed & tested by the community » Needs review

This issue is close, but is not yet sufficiently tested to be RTBC. I'm going to summarize everything the latest patch does and why (for people who don't want to read 288 comments to know what's going on), and ksenzee is doing functional testing across screen-readers and browsers. If those tests are all successful, she'll RTBC. Otherwise, she'll indicate what's still needed.

David_Rothstein’s picture

Agreed, this patch is very close but there is no reason to rush it at the end. This issue certainly isn't blocking a release candidate, especially not when webchick has already said there will be at least one more beta before the RC is even considered.

I'm not totally sure I understand what happened between #268 and #273.... I think I might test this out on some real themes to see the difference.

A couple small things looking at the code again:

+ * containing a link to disable the overlay. Nothing is returned for anonymous
+ * users, because the links control per-user settings. Therefore, because some
+ * screen readers are unable to properly read overlay contents, site builders
+ * are discouraged from granting the "access overlay" permission to the
+ * anonymous role. See http://drupal.org/node/896364.

Please, lord, let's not link to this 300-comment issue in the codebase :)

I'm not sure we have to link to anything here, but if we do, seems like #890284: Unauthenticated users cannot disable Overlay might be a more directly relevant issue.

+    $build = array(
+      '#theme' => array('overlay_disable_message'),

Why are we using an array for #theme? It works, I know, but seems non-standard to do that when it is only expected to have one element.

effulgentsia’s picture

Status: Needs review » Needs work

Thanks, David. I'll fix those two, and include a new patch, when I post the summary.

jacine’s picture

I'm not totally sure I understand what happened between #268 and #273.... I think I might test this out on some real themes to see the difference.

It was made clear to me that:

  • The "technical" issues that concern me are not considered valid.
  • No compromise is willing to be made and no alternative for other themes will be proposed to make it fit better across themes, even if that compromise doesn't have to have any effect on the proposed design in #189 for Seven itself.
  • The .button class is just not wanted.

So...

  • I removed the .button class.
  • Styled Seven to match #189.
  • Left all the other themes alone, which means they'll look all look like this. Same as before, but no button style.
effulgentsia’s picture

Assigned: effulgentsia » Unassigned
Status: Needs work » Needs review
StatusFileSize
new13.03 KB

This just implements the two changes from #290.

Issue summary:

Background: none of the below paragraphs and the issues being linked to are required for being able to review this patch, but I'm including them for those who want more background. If you don't want this background, feel free to skip to the bulleted list futher down in this comment.

In #716612: Overlay is not accessible to screen reader users, we came a long way in addressing some of the accessibility problems with Overlay, but we didn't solve all of them. There's a follow-up, #890288: Improve Overlay accessibility by using modal dialogs, to help address some more for modern screen-readers, but it's not clear whether that is possible for D7 without causing negative side effects for older screen-readers, or without a major rewrite of some of Overlay's architecture. We should proceed with the assumption that that issue will not be solved for D7, but will be work for D8. Even if that issue is solved, it is still the case that there are accessibility problems with Overlay on older screen-readers. Unlike browser upgrades, screen-reader upgrades cost a lot of money, so we have to assume that old ones will continue to be in-use for a while.

So despite the excellent work and efforts already done, for accessibility, we must provide a mechanism by which the Overlay can be disabled. One proposal was to either make it disabled by default when Drupal is installed, or else make it an installation setting. This was discussed in #775084: Allow users to opt-out of the overlay during installation for accessibility, but ultimately declined for various reasons. However, in #659480: Per-user setting for the Overlay, we did create a checkbox on the profile edit form for opting out of the overlay. This way, the Overlay module can be enabled, and people who like it can use it, while people who don't like it can turn it off just for themselves.

The per-user setting, however, isn't fully sufficient for solving the accessibility problem, because 1. how would someone who's having accessibility problems with the overlay know that that's what's happening, and that they need to go to their profile page to fix it? and 2. by default, editing your profile is considered an administrative action, and therefore, happens within the overlay.

So, the purpose of this issue is to provide a message whenever the overlay is in-use to solve #1 above, and for this message to include a link for editing your profile outside of the overlay to solve #2 above. Since messages on every page are annoying to people who don't need them, this issue also includes a "Dismiss" link to indicate you never want to see this message again, and styling to make it invisible (since it's primarily for screen-reader users, not for sighted users). However, the invisible links become visible on focus, just like the "Skip to main content" link does, so that keyboard-only users who navigate a web page via the TAB key don't run into a keyboard "black hole", where they press the TAB key and nothing appears to have focus. Therefore, since the links are sometimes visible, they require some styling.

Secondarily, in the course of discovering and fixing #841184: "Skip to main content" link doesn't work correctly in the overlay, we realized that keyboard-only users using IE6 or IE7 will also have some problems using the Overlay. If they tab through all of the overlay contents, and then the toolbar contents, instead of restarting the cycle within the overlay, they will next have to tab through all of the focusable items in the underlying page before focus is returned to the overlay. While this doesn't completely prevent them from being able to use the overlay, it significantly worsens the experience. These users can also benefit from the links added to this patch, and fortuntately, by making the links visible on focus, we also solve this secondary goal.

Ok, on to an explanation of what this patch does:

  • It adds a message containing two links to every page, just below the "Skip to main content" link. The first link says "If you have problems accessing administrative pages on this site, disable the overlay on your profile page." and takes you to your user/UID/edit page, not rendered within an overlay. The second link says "Dismiss this message.", and clicking it refreshes the page without the message, and also sets a flag so that the message is not shown ever again for this user. The message also includes an invisible heading, "Options for the administrative overlay", intended to be read by screen-readers, but never made visible. The message is added only if the user is logged in, the overlay module is enabled, the user has access to it and has not opted out of using it, and has not previously clicked the "Dismiss this message" link.
  • As per above, the message is never shown to an anonymous user. There is a separate issue about anonymous users not being able to opt-out of the overlay, #890284: Unauthenticated users cannot disable Overlay. That, however, has been bumped to D8. All Drupal core install profiles, however, default to the "access overlay" permission not granted to the "anonymous" role. If a website administrator chooses to grant that permission to the anonymous role, we do have an accessibility problem. We may want to open a spin-off issue from #890284: Unauthenticated users cannot disable Overlay to create documentation letting administrators know about this, but that documentation is out of scope for this issue. This patch does include code comments about it. In any case, this is an edge case. Overlay is intended to help with administration, and as such, it makes little sense to enable it for anonymous users.
  • As per the first bullet point, the message is added to every page, so both to the underlying page from which an overlay is opened (the "parent"), and to the page rendered inside the overlay (the "child"). The one in the parent is intended for screen-reader use only, never for sighted users. As per #274, it is helpful when the user is using reading commands that read the document in markup order, rather than in tab order. The one in the child is intended for both screen-reader users and keyboard-only users.
  • The one in the parent starts off with a CSS rule of "display: none", hiding it from screen-readers as well as from visual display. When an overlay is opened, the CSS rule changes to "display: block", exposing it to screen-readers. The links are kept invisible with an "element-invisible" class, and there is also JavaScript code setting their "tabindex" to -1, so that keyboard-only users skip over it when tabbing, and don't fall into a keyboard "black hole". Note, that this tabindex=-1 technique is already what's being used in HEAD, as part of the fix for #841184: "Skip to main content" link doesn't work correctly in the overlay
  • The one in the child has both "element-invisible" and "element-focusable" classes on the links, making them available to screen-readers, and to being seen during keyboard navigation.
  • Because the one in the parent is never made visible, only themes that can appear within an overlay (i.e., themes intended to be used as administration themes) need to worry about styling the message.
  • The one in the child does need to be styled. Overlay-child.css contains the basic rules to make it usable even if the theme implements no other styling for this new element. This can be seen in the following screenshots for when Stark (http://skitch.com/effulgentsia/d6wcq/content-localhost), Garland (http://skitch.com/effulgentsia/d6wc8/content-localhost), and Bartik (http://skitch.com/effulgentsia/d6wmu/content-localhost) are respectively used as the administration theme. Note that this patch includes no new styling for these themes. Themes may, however, choose to improve on this, and this is shown in the screenshot for Seven (http://skitch.com/effulgentsia/d6wka/content-localhost), for which this patch includes extra styling.
effulgentsia’s picture

Re #292: As can be seen from that comment, #293 represents a reluctantly reached compromise between Jacine, Jeff Burnz, and Bojhan (#270) with respect to how to style these links. I think it was critical that this patch include acceptable CSS, both from a visual perspective, and in terms of validating that we're not placing unreasonable requirements that every contrib theme developer implement complicated CSS just to make these links properly accessible and usable, which was a real problem before Jacine stepped in to clean things up (thank you so much, Jacine!). Personally, I thought #268 was fine as well, but I'm also happy to stay out of UI debates as much as possible. If #293 is acceptable to everyone (which it seems to be), let's go with that. Follow-up CSS tweaks can be debated in non-critical follow-up issues.

Andy B’s picture

Ok. Now I understand it. Sounds good. Going to get a copy of D7-dev from cvs and check it out (if the patch has been committed). Will let you know how things go here.

David_Rothstein’s picture

StatusFileSize
new52.82 KB
new47.16 KB
new55.74 KB

Jacine, if you feel that strongly, it seems worth discussing a bit more. It ought to be possible to come up with a compromise.

As you said earlier, it isn't really clear why people who believe it shouldn't be a button think that in the case of Seven, this (the current patch) is OK:
http://skitch.com/effulgentsia/d6wka/content-localhost

But these (from Jacine's earlier patch) represent improper use of buttons:
http://drupal.org/files/issues/seven-disable-message-alignment.png
http://drupal.org/files/issues/bartik-disable-message-alignment.png

All three of them sure do look like buttons to me.

And comparing the Bartik screenshot above to this (from the current patch), the current patch does not provide any hint to the user that the second link ("dismiss this message") is an action but the first link isn't:
http://skitch.com/effulgentsia/d6wmu/content-localhost

So it seems to me like a very reasonable compromise would be to continue to use the special "blue button" styling for Seven (the one that was designed, i.e. the first screenshot above), but for the general case, fall back on the standard button styling that was provided by the theme. That said, the current patch certainly isn't the end of the world; it's just not clear that it's actually the best patch produced so far in this issue.

***

By the way, in trying to understand and help explain how the visual styling evolved, I went and made some screenshots (this should not distract from the issue summary above, but may be useful).

I made the screenshots with Garland, but in doing so treated it as a "typical contrib theme", meaning I removed any changes that these patches happened to add to Garland itself (which the first patch did). Because realistically, we can't expect that any contrib themes are ever going to go out and style this directly. In that case, here's what you get:

  1. The patch in #234 doesn't work because the message is unreadable: http://drupal.org/files/issues/garland-patch-234.png
  2. This led to #248 which had extensive styling for the message (provided by the overlay module itself) and looked like this: http://drupal.org/files/issues/garland-patch-248.png. Note that I purposely used a different Garland color scheme in this screenshot, to show the effect of this on an arbitrary theme that doesn't happen to be blue like the message is. It kind of has the potential to clash :)
  3. So, that is the basis of the decision to "sacrifice beauty" in this issue... Bojhan didn't like that wording, so a better choice might be "sacrifice apparent beauty" :) Because a message that looks good by itself but doesn't look good with different themes doesn't actually look good. Patch #268 then resulted in this, which is a lot nicer: http://drupal.org/files/issues/garland-patch-268.png (In the case of Garland, #268 results in the same screenshot as #293, because Garland doesn't currently implement any button-specific styling; but if it did, they'd be different, similar to the way the Bartik screenshots differ above.)
ksenzee’s picture

I can confirm that this patch works as @effulgentsia describes it in the following browsers. (Please note I'm not a real screen reader user, so the screen reader tests are basic. I don't use lists of links or skip around the document very much. I just listen in markup order and follow links.)

IE6
IE7
IE8/XP (see notes)
IE8/Win7
IE8/Win7 + JAWS 11
IE8/Win7 + NVDA
IE9beta/Win7
IE9beta/Win7 + JAWS 11
IE9beta/Win7 + NVDA

FF3.5/XP
FF3.6/Win7
FF3.6/Win7 + JAWS 11
FF3.6/Win7 + NVDA
FF3.6/Ubuntu

Chrome/Ubuntu

Note: When I was testing in IE8/XP with NVDA, I somehow got turned around and ended up in the underlying page instead of the overlay. That's exactly the situation that this patch is intended to fix, but I haven't managed to do that very often in testing. So I was finally able to test whether or not the toggle links on the parent page show up for screen reader users. And indeed they do, at the very top of the DOM, right where I needed them. And they were still entirely invisible and unreachable without a screen reader. So yay, nice work!

If anyone is able to confirm these tests on a Mac, or using a screen reader on IE6 or IE7, or on any browser using Window-Eyes or VoiceOver, that would be great. But I think the testing we have is sufficient for commit.

ksenzee’s picture

Status: Needs review » Reviewed & tested by the community

Forgot the most important part! RTBC.

mark trapp’s picture

I spent a little time testing this in Mac OS X 10.6 with VoiceOver and everything seems to conform with what the patch intended: the disable overlay/dismiss message comes up just before tabbing into the overlay.

jacine’s picture

Thanks @David_Rothsein & @effulgentsia for the awesome summaries of this issue you've posted.

Jacine, if you feel that strongly, it seems worth discussing a bit more. It ought to be possible to come up with a compromise.

What I feel strongly about is the attitude and tone of some of the replies. They've been largely argumentative and defensive of a specific case that doesn't make sense outside of Seven. There's also been no attempt that I can see to reach a compromise to provide default styling that could work across all themes, which is what Jeff Burnz wanted.

Instead the concerns I raised were deemed invalid (by some) and just met with complaints and comments like "I don't care" and "I'm not going to argue" instead of providing reasons or suggestions other than "I don't like it" and "your concerns are not my concerns," etc. That kind of feedback is useless. It doesn't help us get anything done. Personally, I was more than willing to reach a compromise, but not at the expense of imposing unwanted styles on every theme out there. I was not trying to ram any one solution down peoples throats and personally, I have no clue how to proceed after feedback like that.

I just wish we could all try to work together a little better. No one group's concerns have any more weight than another's and if we are all willing to accept that and understand that there are implications for what we do in these patches beyond a single use case, we'll all be better off.

Because nothing else was suggested, we've got structural markup for other themes and no styles, which is completely fine with me. Can the styling of this still be improved? Sure, but we don't have to and probably should not do that here in this issue. It's not critical.

So, RTBC + 1.

Andy B’s picture

#296, what exactly were the visual references you were making? I want to understand what you are talking about, but screenshots don't help screen reader users. #300, wouldn't it be best to just leave the dismiss/turn off overlay links unstyled so most other themes can use them? Another interesting point about the hidden links:

1. If the links are invisible to everyone and the screen reader user is new to D7, wouldn't they run into issues trying to explain to a sighted person about these invisible links?
2. If the links show up in both places invisible outside the overlay and visible inside the overlay, wouldn't it get confusing for screen reader users who can use the overlay when they see 2 sets of the same thing?

Not really critical things, but would need to be fixed soon.

Everett Zufelt’s picture

@Andy

1. If the links are invisible to everyone and the screen reader user is new to D7, wouldn't they run into issues trying to explain to a sighted person about these invisible links?

Yes, possibly.

2. If the links show up in both places invisible outside the overlay and visible inside the overlay, wouldn't it get confusing for screen reader users who can use the overlay when they see 2 sets of the same thing?

Yes, that being said the fact that two entire pages are loaded in the same window is far more confusing. So, I think that although the two sets of links may add some confusion for some screen-reader users, it is still a good idea to provide two sets so that they are easily discoverable.

yoroy’s picture

Everett if you are ok with the latest patch, it would be good to get your signoff on it, too. The last couple of questions are all relevant but seem to discuss *possible*, non-critical issues we can only really confirm exist with a committed patch. At 300+ comments in, it would be good to defer further refinements to follow-ups.

Jeff Burnz’s picture

Jacine, I am rather sorry if you feel that you have been brow beaten on certain issues, that was not the intention at all. That said this stuff about no compromise is not quite right. I wanted all the style ripped out of Seven and put into core - you vetoed that. I thought the simple white/rounded corners looks fine, thus a compromise was met.

The button patches radically changed the UI/UX. Some disagreed, myself included. I thought it was very late in the game to be introducing this UI pattern - a real looking button in a message - not done anywhere else, and I mean a real looking button, as in all forms the user will look at, but this is not a form, nor is an input element, I had concerns about that and raised them. I think we have the right to disagree when we see something don't agree with. The button class was as much an imposition as the style I wanted in core - I don't want this message inheriting my button styles, so would have to special case it away - that argument could go either way, so I felt there was no real special casing argument that was definitive. My apologies if I was not clear on that in earlier posts.

If there's a reason why my messages seem abrupt its because I'm in a middle of house shift of ten thousand miles (yes, seriously) and have limited time to reply and actually discuss things - my apologies for this, but I really have very little time, however the button styling was the only thing that I really objected to, everything else is well and good.

And yes RTBC, if it hasn't already gone in :)

effulgentsia’s picture

If the links are invisible to everyone and the screen reader user is new to D7, wouldn't they run into issues trying to explain to a sighted person about these invisible links?

The same problem already exists in HEAD with the "Skip to main content" link. I don't fully know the history, but somehow it was decided that in D7, by default, we wanted links that are only intended for screen-reader users to be invisible unless they have focus. This patch continues that pattern. This decision will be revisited for D8. Also, D7 contrib themes can override this decision. For both the "Skip to main content" link, and the links introduced in this patch, their markup can be overridden in theme functions/templates, so a contrib theme can easily remove the "element-invisible" class from the corresponding anchor tags.

Andy B’s picture

A confusing matter for me here. As of 11/03/2010 4:55PM Eastern time [Michigan USA], I took latest from cvs head and decided to take a look at the problem. Well, I don't actually see an overlay anywhere at all by default. No overlay, no frames, no links or buttons to disable it and no links/buttons to throw out the warning about the overlay not possibly working with accessible technology. What happened?

catch’s picture

Andy. If you disabled it, and didn't reinstall from scratch with a new database, then you probably need to re-enable it from your user account.

Jeff Burnz’s picture

@Andy B - the patch has not yet been added to core, it does not get added automatically, if you want to test it you need to apply the latest patch, or wait until it gets committed, else someone might setup a test site where you can test it.

...somehow it was decided that in D7, by default, we wanted links that are only intended for screen-reader users to be invisible unless they have focus.

Thats not quite right, the only links/messages that are invisible and then become visible are those that are useful to both screen reader users and keyboard only users. The other hidden messages are more like labels for unsighted users, that keyboard uses (sighted) do not need.

Andy B’s picture

Ok. I started from a blank database and everything. There isn't any files sitting around that would remember a disabled overlay. This one came straight from cvs with a clean db. really strange. Overlay module is enabled and the use overlay is checked in my profile.

Andy B’s picture

What # was the newest patch in?

catch’s picture

David_Rothstein’s picture

Andy B:

#296, what exactly were the visual references you were making? I want to understand what you are talking about, but screenshots don't help screen reader users.

Apologies, I tried to provide some context along with the screenshots but I didn't provide enough.

Essentially, I was trying to show this progression:

  1. In Garland with the standard color scheme, #234 resulted in the overlay message text being blue, which wound up displayed on top of the overlay's black transparent background and therefore was hard to read due to poor color contrast (other themes could have been worse, depending on whatever the color of their default link text was).
  2. #248 resulted in a nicely styled overlay message entirely themed by the overlay module (the message itself on a light blue background, and the "dismiss this message" link on a darker blue background next to it, both readable). However, this blue color scheme can clash with the color scheme used throughout the theme itself; I used an example of Garland with the "Citrus Blast" color scheme (a lot of yellow in this theme, no blue); other themes could have resulted in an uglier mismatch.
  3. #268 had the overlay module provide a default white background, but inheriting most other things from the theme, so in Garland with the standard color scheme it was blue text on the white background (which is both easy to read and matches the theme's other colors). Since the message link color is inherited from the theme, it should never clash. This patch also had the feature that the "Dismiss this message" link had the theme's default class="button" styling applied to it, but the message itself was just a regular link; so for a theme like Bartik which provides styles for class="button" that make it look like a form submission button, the two links are visually very different from each other.
  4. #293 (the patch that is RTBC) looks the same as #268 in the case of Garland. However, it does not add class="button" to the "Dismiss this message" link, so in Bartik the two links are now both styled like a normal link (the only difference is that one is aligned left and the other aligned right).

Hope that helps.

David_Rothstein’s picture

Actually, writing the above made me realize: If the patch has the overlay module define a default white background for the message but inherit the link color for the theme, it seems like we could run into color contrast problems in some cases (e.g. for a theme that had off-white text on a black background, the default inside this message would then become off-white on white)?

I think at 300+ comments we can defer fixing that until some other issue :) (The theme itself can always override the defaults anyway.) But ideally it seems like if the overlay message inherits the link color from the theme it should also inherit the background color from it...

Everett Zufelt’s picture

Status: Reviewed & tested by the community » Needs work

I think at 300+ comments we can defer fixing that until some other issue :) (The theme itself can always override the defaults anyway.) But ideally it seems like if the overlay message inherits the link color from the theme it should also inherit the background color from it...

I would agree with you if this was an issue of style / preference, or if the message box was visible to themers to notice the problem. But, since in a large number of cases the themers won't know that this message exists (maybe I'm wrong about this?), I think we should tweak the patch to solve this potential problem.

More thorough review of the patch tomorrow, but from following the discussion my initial thought is that we're good to go.

Again, great thanks to everyone who has contributed to this issue.

Andy B’s picture

Ok. #313. Makes sense. I would think that the back-color and color should be inherrited from the theme. Good easy fix. Waiting for a new patch.

jacine’s picture

StatusFileSize
new1.39 KB

Jeff you said:

Having themes style this message is rather inconsistent with other messages in core - all warning, error, OK, status reports, block demo link etc etc have core styling and do not rely on the theme. This enforces a consistent UX and frees themers from the tyranny of having to account for back-end stuff. I'm not entirely thrilled we now have to special case for this one system message.

I explained why I didn't think it was like a core message and reiterated that the proposed colors were my main problem with it. It wasn't a "veto." Then you said:

@258/@259 ok I'm not going to argue here for the sake of moving on. The style does need work to align things better.

Then, you +1 Bojhan's post where he dismissed every single one of my concerns and then just said he doesn't care. I'm not sure how I was supposed to take that as a compromise, but I'm glad that you appear somewhat satisfied. What I meant specifically by compromise was coming up with a better color scheme for other themes. I'm over the button issue, it's fine, really. It was only a suggestion. I just don't find the spatty back and forth stuff that went on helpful. I think it should just be kept to a minimum because it's not necessary to get your point across. That's all, no hard feelings.

Good luck with your move. :)

@David_Rothstein, @Everett & @Andy B:

Actually, writing the above made me realize: If the patch has the overlay module define a default white background for the message but inherit the link color for the theme, it seems like we could run into color contrast problems in some cases (e.g. for a theme that had off-white text on a black background, the default inside this message would then become off-white on white)?

This is only a potential problem only with admin themes, and we cannot fix it without seriously rethinking the CSS in the overlay module, and even then it might not be possible. The colors inside the overlay are inherited from the admin theme, BUT the overlay module:

  • Defines background: transparent on html.js and html.js body in overlay-child.css.
  • This easily overrides what themes usually do: body { background: whatever; color: whatever; }.
  • overlay-child.css also defines #overlay-content { background #fff; }. This selector wraps the entire page content and also overrides what the theme has done.

If you want to see for yourself, try the theme I attached (called "Black") in both of these situations:

  1. With "Black" (attached) as the front end theme and Seven as the admin theme link colors are inherited from the admin theme and everything works as expected. You get a white background and blue links.
  2. With "Black" set to the admin theme, you run into all sorts of problems with overlay module's CSS setting background to white, even though the theme specifies black, none of the links are visible, etc. It's white on white for the entire overlay, not just this message.

Basically the overlay module ruins the themer experience for admin themes. Admin theme creators will have to override all of overlay module's assumptions to make a theme with a background color other than white work properly, so that is completely outside the scope of this issue IMO. I think we could and probably should try to improve the selectors used in the code, however we'd still end up with the same problem: Styling the overlay is not easy, and extra care will need to be taken regardless.

The good news is that there are very few admin themes in contrib-land and of those probably an even fewer number use a dark background. I think it's pretty safe to assume that this potential issue has a very low probability of even being a problem and that the best thing we can do is make contrib theme developers aware of this and tell them how to resolve it.

We simply cannot account for and solve every use case under the sun. I think we have done an excellent job in this issue, covering as many situations as we possibly can.

EDIT: Forgot to note the most important part, that #overlay-content specifies background-color: #fff. Oops.

Everett Zufelt’s picture

Status: Needs work » Reviewed & tested by the community

@Jacine

Thanks for the response, +1 from me on not fixing this in this patch.

Everett Zufelt’s picture

I do not have the time today to do a thorough review. Having followed the discussion and trusting in the testing performed by others I would give this a +1 for RTBC. Anything that may need to be tweaked can be done in follow up issues.

coderintherye’s picture

I would also like to add +1 to RTBC, but solely as someone who has to implement 508 and other accessibility standards and sites and wants to see this get in. If anyone feels there are still blockers can we sum them up very succinctly?

Jeff Burnz’s picture

@Jacine, yes, no hard feelings, you have done a great job here as with everyone else's excellent contributions to this thorny issue.

The good news is that there are very few admin themes in contrib-land and of those probably an even fewer number use a dark background. I think it's pretty safe to assume that this potential issue has a very low probability of even being a problem and that the best thing we can do is make contrib theme developers aware of this and tell them how to resolve it.

Agreed. Actually I think there are none with dark backgrounds, I recall doing a sweep a while back of all the admin themes in contrib and can't recall any with dark backgrounds, except for one which I built for Drupal 6, which I have no intention of dragging over to D7, at all.

Andy B’s picture

If everyone is satisified with the patch, can we commit and move on?

effulgentsia’s picture

"reviewed and tested by the community" means everyone's satisfied with it (or at least no one is dissatisfied enough to set it back to "needs work"), so we can move on.

There are only two people who can commit: Dries and webchick. They will get to this when they get to it. It'll probably be soon, since they watch the critical queue closely, but very few issues go from RTBC (#316) to commit in a matter of hours. Even for criticals, it can take a few days.

Dries/webchick: latest patch and summary is on #293. Conversation since then touched on a couple minor points, but nothing that invalidates that patch.

dries’s picture

Status: Reviewed & tested by the community » Fixed

Welp, longest issue evah! I read up on the issue and I'm glad that we reached this point. Certainly quite a journey. And while there might be some additional tweaking to do, I'm quite happy to commit this patch. Committed to CVS HEAD.

radoeka’s picture

StatusFileSize
new40.48 KB

Don't want to spoil the party, but I believe that the following problem is caused by this issue. Afer clicking on the link with the name 'Dismiss this message' in the sentence: - If you have problems accessing administrative pages on this site, disable the overlay on your profile page. Dismiss this message. - I get a page not found. I have no problems accessing the administrative pages, and want to get rid of link.

This happens by the way after installing beta-3, some minutes ago.

Screenshot attached.

Should a new issue be opened for this problem?

Everett Zufelt’s picture

@radoeka

I do think this should be a new issue, since this issue has 300+ comments. This has been discussed in comments #250, #260, and #262. I was not able to reproduce the error on beta3.

1. Log in as administrative user.

2. Select Create content from Navigation menu

3. Activate the 'Dismiss this message' link in the Overlay options message box.

It worked as expected for me.

radoeka’s picture

I had sweaver (module) active. I disabled that, and logged in and out, restarted the browser did that a couple of times. Switch on sweaver again. The link is gone now. Don't know what made it work.

webchick’s picture

Actually, that's going to happen until the Drupal cache is cleared (by whatever mechanism; running update.php, enabling/disabling modules, etc.), because this patch adds a new menu item. Nothing to be alarmed about.

Status: Fixed » Closed (fixed)
Issue tags: -Usability, -Needs design review, -Accessibility

Automatically closed -- issue fixed for 2 weeks with no activity.