Download & Extend

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

Project:Drupal core
Version:7.x-dev
Component:overlay.module
Category:bug report
Priority:critical
Assigned:Unassigned
Status:closed (fixed)
Issue tags:accessibility, Needs design review, Usability

Issue Summary

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.

Comments

#1

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 :)

#2

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.

#3

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?

#4

@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.

#5

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!

#6

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

#7

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.

AttachmentSizeStatusTest resultOperations
890288_overlay_disable.patch3.14 KBIdlePASSED: [[SimpleTest]]: [MySQL] 23,318 pass(es).View details

#8

subcribing

#9

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

#10

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?)

AttachmentSizeStatusTest resultOperations
890288_overlay_disable_2.patch3.5 KBIdlePASSED: [[SimpleTest]]: [MySQL] 23,327 pass(es).View details

#11

Status:active» needs review

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

#12

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...

#13

Status:needs review» active

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?

AttachmentSizeStatusTest resultOperations
890288_overlay_disable_3.patch3.13 KBIdlePASSED: [[SimpleTest]]: [MySQL] 23,320 pass(es).View details

#14

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

#15

+      $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.

#16

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.

#17

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.

#18

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?

#19

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.

#20

#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.

#21

@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 :)

#22

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.

#23

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.

#24

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.

#25

Why redirect to user/X/edit?

#26

@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.

#27

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.

#28

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

#29

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?

#30

@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.

#31

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

#32

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)

#33

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?

#34

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?

#35

@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?

#36

@design_dolphin

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

#37

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)

#38

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

#39

@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.

#40

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.

#41

@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.

#42

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.

#43

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

#44

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?

#45

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....)

#46

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.

#47

Status:needs review» needs work

Lets test that with an updated patch :)

#48

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. :-)

#49

Status:needs work» needs review

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 :)

AttachmentSizeStatusTest resultOperations
896364_patch_3.txt5.87 KBIgnored: Check issue status.NoneNone

#50

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

#51

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'].

#52

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

#53

Assigned to:Anonymous» casey

Patch incoming in 15min or so.

#54

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.

AttachmentSizeStatusTest resultOperations
overlay-disablelink.patch4.41 KBIdlePASSED: [[SimpleTest]]: [MySQL] 23,307 pass(es).View details

#55

Assigned to:casey» Anonymous

Feel free to post new patches

#56

@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?

#57

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

#58

@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.

#59

#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?

#60

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

Let's get this bug fixed.

#61

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

AttachmentSizeStatusTest resultOperations
896364_overlay.patch7.11 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,638 pass(es).View details

#62

@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?

#63

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)?

#64

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.

#65

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.

#66

"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."

#67

"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.

#68

#67 +1

#69

@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.

#70

Status:needs work» needs review

@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

AttachmentSizeStatusTest resultOperations
896364_overlay_2.patch5.14 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,778 pass(es).View details

#71

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.

AttachmentSizeStatusTest resultOperations
drupal.overlay-disable.70.patch2.88 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,825 pass(es).View details

#72

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.

#73

#74

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

#75

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")

#76

Mixed in Everett's and yoroy's suggestions.

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

AttachmentSizeStatusTest resultOperations
drupal.overlay-disable.76.patch2.9 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,769 pass(es).View details

#77

"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!

#78

Status:needs review» reviewed & tested by the community

#79

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.

#80

Status:needs review» reviewed & tested by the community

Oops

#81

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

#82

Yup, sounds good to me

#83

Looks good!

#84

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?

#85

+++ 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.

#86

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.

#87

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.

#88

Status:needs work» postponed

@design_dolphin we already decided on the text.

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

#89

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.

#90

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.

#91

+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

#92

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

AttachmentSizeStatusTest resultOperations
all_admin_pages_open_in_an_overlay_window.png396.14 KBIgnored: Check issue status.NoneNone

#93

Status:postponed» needs review

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.

AttachmentSizeStatusTest resultOperations
element-focusable_897638-2.patch2.93 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,787 pass(es).View details
screen-capture-5.png150.08 KBIgnored: Check issue status.NoneNone

#94

Status:needs review» needs work

Still needs to address #85.1

#95

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."

#96

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.

#97

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.

AttachmentSizeStatusTest resultOperations
897638_overlay_3.patch3.89 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,786 pass(es).View details

#98

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.

#99

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).

#100

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.

#101

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.

#102

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.

#103

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

#104

@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?

#105

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) ...

#106

@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).

#107

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

#108

Status:needs work» needs review

I want the bot to test #97.

#109

@bojhan

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

#110

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.

#111

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.

#112

- 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.

#113

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.

AttachmentSizeStatusTest resultOperations
897638_overlay_4.patch10.22 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,800 pass(es).View details

#114

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.

#115

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.

#116

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?

#117

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.

#118

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).

#119

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 :)

#120

@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.

#121

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?

#122

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.

#123

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

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

#124

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?

AttachmentSizeStatusTest resultOperations
896364_patch_4.txt4.82 KBIgnored: Check issue status.NoneNone

#125

Status:needs review» needs work

Can you upload a proper .patch?

#126

Status:needs work» needs review

sorry - proper.patch now attached.

AttachmentSizeStatusTest resultOperations
896364_overlay_4.patch4.82 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,820 pass(es).View details

#127

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.

#128

Status:needs review» needs work

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

#129

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.

#130

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."

#131

AttachmentSizeStatusTest resultOperations
drupal.overlay-dismiss.131.patch4.89 KBIdlePASSED: [[SimpleTest]]: [MySQL] 24,811 pass(es).View details

#132

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.

#133

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.

#134

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.

#135

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 ...

#136

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.

#137

Hah, darn issue queue communication. Oke,

#138

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.

#139

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 :)

#140

@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.

#141

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."

#142

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."

#143

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

#144

Status:needs review» needs work

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.

AttachmentSizeStatusTest resultOperations
overlay-message.png46.54 KBIgnored: Check issue status.NoneNone

#145

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.

#146

@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.

#147

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.

#148

@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.

#149

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.

#150

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).

#151

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.

#152

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.

#153

@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.

#154

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.

AttachmentSizeStatusTest resultOperations
896364_patch_20100928.patch9.9 KBIdlePASSED: [[SimpleTest]]: [MySQL] 25,303 pass(es).View details

#155

Status:needs work» needs review

#156

@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.

#157

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.

#158

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.

#159

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 :)

AttachmentSizeStatusTest resultOperations
896364_patch_20100929.patch10.76 KBIdleFAILED: [[SimpleTest]]: [MySQL] Unable to apply patch 896364_patch_20100929_0.patch.View details

#160

Status:needs review» needs work

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

#161

Status:needs work» needs review

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

AttachmentSizeStatusTest resultOperations
896364_patch_20100929_1.patch9.95 KBIdlePASSED: [[SimpleTest]]: [MySQL] 25,300 pass(es).View details

#162

Assigned to:Anonymous» 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 :)

#163

Assigned to:David_Rothstein» Anonymous
Status:needs work» needs review

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.

AttachmentSizeStatusTest resultOperations
896364-overlay-163.patch7.75 KBIdlePASSED: [[SimpleTest]]: [MySQL] 25,303 pass(es).View details

#164

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.

#165

Status:needs review» needs work

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

#166

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

AttachmentSizeStatusTest resultOperations
overlay-disable-message.png27.45 KBIgnored: Check issue status.NoneNone

#167

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

#168

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?).

#169

@Jeff

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

Thanks

#170

@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.

#171

@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.

#172

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.

#173

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).

#174

@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.

#175

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.

#176

Status:needs work» needs review

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.

AttachmentSizeStatusTest resultOperations
896364-overlay-176.patch8.42 KBIdlePASSED: [[SimpleTest]]: [MySQL] 25,601 pass(es).View details

#177

-        '#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.

#178

@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.

#179

@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

#180

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.

#181

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?

#182

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

AttachmentSizeStatusTest resultOperations
overlay-disable-message_blue.png40.63 KBIgnored: Check issue status.NoneNone
seven-disable-overlay-styles.patch2.19 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,154 pass(es).View details

#183

@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 :)

#184

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 :)

#185

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.

#186

@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.

#187

A visualization to my idea

AttachmentSizeStatusTest resultOperations
disable-overlay-message-idea.jpg125.36 KBIgnored: Check issue status.NoneNone

#188

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?

#189

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

AttachmentSizeStatusTest resultOperations
seven-disable-overlay-styles-2.patch2.06 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,162 pass(es).View details
overlay-disable-message_blue-oneline.png22.67 KBIgnored: Check issue status.NoneNone
overlay-disable-message_blue-wrapping.png17.16 KBIgnored: Check issue status.NoneNone

#190

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

#191

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 ?

#192

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.

#193

Status:postponed» 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.

#195

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.

#196

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.

#197

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

#198

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.

#199

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.

#200

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.

#201

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.

#202

Why would you not try the last patch?

#203

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

#204

/me shuts up

#205

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

#206

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.

#207

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.

#208

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.

#209

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?

#210

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

#211

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.

#212

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?

#213

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.
AttachmentSizeStatusTest resultOperations
896364-overlay-213.patch7.87 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,319 pass(es).View details

#214

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

#215

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

#216

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.

#217

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.

#218

@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.

#219

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

AttachmentSizeStatusTest resultOperations
896364-overlay-219.patch9.95 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,381 pass(es).View details

#220

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?

#221

Status:needs review» needs work

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

#222

Status:needs work» needs review

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.

AttachmentSizeStatusTest resultOperations
896364-overlay-222.patch11.63 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,597 pass(es).View details

#223

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

#224

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.

#225

The CSS introduces loss of spacing above the page title:

Before:
before

After:
after

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!)

#226

Status:needs review» needs work

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

#227

Issue tags:+Needs design review

Whatever helps to get the right folks in here :)

#228

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.

#229

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).

#230

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.

#231

@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.

#232

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.)

#233

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).

#234

Status:needs work» needs review

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.

AttachmentSizeStatusTest resultOperations
core-overlay.patch14.14 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,764 pass(es).View details

#235

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?

#236

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?

#237

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.

#238

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).

#239

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.

#240

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.'),
AttachmentSizeStatusTest resultOperations
overlay-disable-links-smushed.png9.54 KBIgnored: Check issue status.NoneNone

#241

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.

#242

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?

#243

Assigned to:Anonymous» 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.

#244

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.

#245

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.

#246

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?

#247

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?

#248

Assigned to:Jacine» Anonymous
Status:needs work» needs review

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 :)

AttachmentSizeStatusTest resultOperations
bartik-chrome.png144.98 KBIgnored: Check issue status.NoneNone
bartik-ff2.png161.03 KBIgnored: Check issue status.NoneNone
bartik-ff3.6.png244.52 KBIgnored: Check issue status.NoneNone
bartik-ff4.png189.33 KBIgnored: Check issue status.NoneNone
bartik-ie-6-7-8.png552.01 KBIgnored: Check issue status.NoneNone
bartik-safari.png236.12 KBIgnored: Check issue status.NoneNone
outside-overlay-bartik.png180.1 KBIgnored: Check issue status.NoneNone
garland-chrome.png190.99 KBIgnored: Check issue status.NoneNone
garland-ff2.png183.74 KBIgnored: Check issue status.NoneNone
garland-ff3.6.png240.06 KBIgnored: Check issue status.NoneNone
garland-ff4.png226.18 KBIgnored: Check issue status.NoneNone
garland-ie-6-7-8.png545.35 KBIgnored: Check issue status.NoneNone
garland-safari.png218.93 KBIgnored: Check issue status.NoneNone
outside-overlay-garland.png125.02 KBIgnored: Check issue status.NoneNone
seven-chrome.png123.14 KBIgnored: Check issue status.NoneNone
seven-ff2.png157.67 KBIgnored: Check issue status.NoneNone
seven-ff3.6.png155.81 KBIgnored: Check issue status.NoneNone
seven-ff4.png137.3 KBIgnored: Check issue status.NoneNone
seven-ie-6-7-8.png436.04 KBIgnored: Check issue status.NoneNone
seven-safari.png128.84 KBIgnored: Check issue status.NoneNone
outside-overlay-seven.png110.09 KBIgnored: Check issue status.NoneNone
stark-chrome.png148.16 KBIgnored: Check issue status.NoneNone
stark-ff2.png136.1 KBIgnored: Check issue status.NoneNone
stark-ff3.6.png181.8 KBIgnored: Check issue status.NoneNone
stark-ff4.png159.17 KBIgnored: Check issue status.NoneNone
stark-ie-6-7-8.png487.11 KBIgnored: Check issue status.NoneNone
stark-safari.png226.44 KBIgnored: Check issue status.NoneNone
outside-overlay-stark.png134.36 KBIgnored: Check issue status.NoneNone

#249

Oops, forgot the patch :P

AttachmentSizeStatusTest resultOperations
896364-248.patch12.99 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,771 pass(es).View details

#250

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.

#251

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.

#252

+++ 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.

#253

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.

AttachmentSizeStatusTest resultOperations
896364-253.patch12.36 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,855 pass(es).View details
stark-inside-overlay-default-styles.png30.89 KBIgnored: Check issue status.NoneNone
stark-outside-overlay-default-styles.png26.69 KBIgnored: Check issue status.NoneNone
bartik-inside-overlay-default-styles.png40.65 KBIgnored: Check issue status.NoneNone
bartik-outside-overlay-default-styles.png52.17 KBIgnored: Check issue status.NoneNone
seven-inside-overlay-styled.png34.55 KBIgnored: Check issue status.NoneNone
seven-outside-overlay-styled.png27.33 KBIgnored: Check issue status.NoneNone

#254

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.

#255

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.

#256

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.

#257

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

Agreed.

#258

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.

#259

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 :)

#260

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.

#261

Assigned to:Anonymous» effulgentsia

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

#262

Assigned to:effulgentsia» Anonymous
Status:needs work» needs review

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.

AttachmentSizeStatusTest resultOperations
896364-262.patch12.83 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,735 pass(es).View details

#263

@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.

#264

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.

#265

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?

#266

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.

#267

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.

AttachmentSizeStatusTest resultOperations
seven-disable-message-alignment.png26.9 KBIgnored: Check issue status.NoneNone
bartik-disable-message-alignment.png35.14 KBIgnored: Check issue status.NoneNone

#268

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).
AttachmentSizeStatusTest resultOperations
896364-267.patch12.89 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,785 pass(es).View details

#269

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

#270

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.

#271

+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.

#272

Assigned to:Anonymous» 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.

#273

Assigned to:Jacine» Anonymous
Status:needs work» needs review

Here you go.

AttachmentSizeStatusTest resultOperations
896364-273.patch12.97 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,780 pass(es).View details
seven-blue-button.png286.03 KBIgnored: Check issue status.NoneNone
seven-blue-button-wrapped.png256.68 KBIgnored: Check issue status.NoneNone

#274

• 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.

#275

Assigned to:Anonymous» effulgentsia
Status:needs review» needs work

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

#276

Status:needs work» needs review

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.

AttachmentSizeStatusTest resultOperations
896364-276.patch13.05 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,779 pass(es).View details

#277

Assigned to:effulgentsia» Anonymous

Back to the community.

#278

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.

#279

@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?

AttachmentSizeStatusTest resultOperations
core-dismiss-overlay.patch13.09 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,796 pass(es).View details

#280

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.

#281

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.

#282

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.

#283

Status:needs review» reviewed & tested by the community

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

#284

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?

#285

@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.

#286

@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.

#287

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

#288

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?

#289

Assigned to:Anonymous» 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.

#290

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.

#291

Status:needs review» needs work

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

#292

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.

#293

Assigned to:effulgentsia» Anonymous
Status:needs work» needs review

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 for ARIA compliant user agents, 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.
AttachmentSizeStatusTest resultOperations
896364-293.patch13.03 KBIdlePASSED: [[SimpleTest]]: [MySQL] 26,788 pass(es).View details

#294

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.

#295

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.

#296

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.)
AttachmentSizeStatusTest resultOperations
garland-patch-234.png55.74 KBIgnored: Check issue status.NoneNone
garland-patch-248.png47.16 KBIgnored: Check issue status.NoneNone
garland-patch-268.png52.82 KBIgnored: Check issue status.NoneNone

#297

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.

#298

Status:needs review» reviewed & tested by the community

Forgot the most important part! RTBC.

#299

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.

#300

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.

#301

#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.

nobody click here