Please add a few more headings to Views UI to improve accessibility, particularly for screen-reader users. Screen-readers, and some other UAs, provide the ability to navigate a page by heading. Since Views UI is complex, and screen-reader users access content in a serial order, it would be useful to have a few more headings to facilitate easy navigation to different sections of the UI.

Suggested headings:

View Settings
Basic Settings
%display Settings (e.g. Feed Settings)
Configuration Settings (e.g. "Feed: Field Content: X")
Preview Settings

Comments

ezra-g’s picture

It might help to review your suggestion for you to post a screenshot of the Views interface with your suggested headings overlaid.

Everett Zufelt’s picture

@ezra-g

Adding the headings do not need to change the visual style of the page, they can be used as semantic markup alone. Being blind I tend, as much as possible, to stay away from making any style suggestions.

The headings that I have suggested are already text within Views UI, the text is just not marked up as a heading. I assume, although I could be wrong, that the text I have identified may already be styled slightly differently than the surrounding text, as it represents separation of the logical sections of the UI.

dawehner’s picture

This kind of text you describe is wrapped with div class="views-category-title">View settings</div>

What about replace the div with a h3 ? This would be very easy to do.

Preview Settings

I can't find this text. I guess you mean everything below h2 "Live preview".

The text you mentioned in general has already another style, but this does not matter here.

merlinofchaos’s picture

One thing that strikes me as being likely confusing.

Next to the 'Style: [chosen style]' there is an icon with the alt text of to change the settings for that style. We use float: right to make that appear, visually, after the style setting.

Except that in order for float: right to work correctly, it has to appear before the actual setting in the source.

Is this annoying for accessibility? (My guess is: Yes it is). If it is...anyone have any ideas on how to fix that?

Changing the div to h3 is a simple change to the template. That's trivial.

Possibly also this code

<div id="views-ajax-title">

could be changed to an H? tag?

We also use some classes like 'defaulted' and 'overridden' to provide a quick indicator if a setting is using the default display or has its own override. There might be a more accessible indicator we could add?

Everett Zufelt’s picture

@dereine

Correct, switching those divs to h3s would do the trick. Also correct that I got the wording wrong on "Live Preview" and it is already a heading (I wrote the issue in a hurry).

@merlinofchaos

I think you are talking about:

Change settings for this style
Style:
Unformatted
Change settings for this style
Row style:
Fields

It is confusing at first, and does contribute to the learning curve. Could we change the first image alt to "Change settings for Style" and the second to "Change settings for Row Style"?

Also, for Relationships, Arguments, Fields, Sort Criteria, and Filters, there is a Rearrange and Add image link. Could the alt be changed to add more context (e.g. "Rearrange Relationships" and "Add Relationships")?

Everett Zufelt’s picture

Title: Add more headings to Views UI to improve accessibility » Improve accessibility of Views UI

@merlinofchaos

Possibly also this code

    <div id="views-ajax-title">

could be changed to an H? tag?

Can you please tell me what that div is used for?

We also use some classes like 'defaulted' and 'overridden' to provide a quick indicator if a setting is using the default display or has its own override. There might be a more accessible indicator we could add?

I've been giving that some thought. There is a trade off between too much and too little textual affordance. Too much makes listening to the page being read a burden, as it means hearing "default" or "overridden" after each option. Too little means not understanding what exactly is going on. Once a user selects a setting to change they are informed that they are either modifying the default or an overridden value, so I think this will be alright.

Everett Zufelt’s picture

Also just noticed that Theming Information identifies some templates by bold font alone.

I actually have no idea of how best to represent this, but will give it some thought.

Everett Zufelt’s picture

I am curious if there are any status messages on the UI that update automatically when actions are performed (excluding the Live Preview)?

If there are, and there may not be, the container for messages could receive the attribute role="status"

<div role="status">

This is a WAI-ARIA 1.0 role that indicates that the region should be monitored for updates, and that those updates should be presented to the user. The actual monitoring and presentation of the content is handled by the user agent. For example, screen-readers that support the status role will usually speak the content to the user, but in a way that doesn't interrupt what they are currently typing / reading.

Resource:
The Roles Model... : status (role)

Everett Zufelt’s picture

Alright, I now see that the list of template files under Theme Information can be selected and the template shown *** awesome *** .

But, they are all being read as plain text, so a screen-reader user has no idea that they are actionable unless they make a guess, use the virtual mouse cursor (usually awkward to do), and try to click one. Would it be possible to mark these up as links? Again, the style doesn't need to be altered, just the markup. It would also be useful, but not at all necessary, if they were each an item in an unordered list. As links we can also indicate the bold items with some hidden markup by using the .element-invisible class from D7 core.

Example markup:

<ul>
  <li><a href="#">foo.tpl.php</a></li>
  <li><a href="#">foo-bar.tpl.php</a></li>
  <li><a href="#">foo-bar-foo.tpl.php</a><span class="element-invisible"> (active)</span></li>
</ul>
/**
* Hide elements visually, but keep them available for screen-readers.
*
* Used for information required for screen-reader users to understand and use
* the site where visual display is undesirable. Information provided in this
* manner should be kept concise, to avoid unnecessary burden on the user. Must
* not be used for focusable elements (such as links and form elements) as this
* causes issues for keyboard only or voice recognition users. "!important" is
* used to prevent unintentional overrides.
*/
.element-invisible {
position: absolute !important;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
}
dawehner’s picture

StatusFileSize
new2.97 KB
@merlinofchaos

    Possibly also this code

        <div id="views-ajax-title">

    could be changed to an H? tag?

Can you please tell me what that div is used for?

I guess you don't use javascript. Then you have a new page for editing certain things for example chaning a setting, like the title of the view. The page-title of this view get's used in views-ajax-title if javascript is enabled.

In the attachment is a patch which talkes the suggested headers and better alt texts for the buttons of every category and adds role=status to the messages. I'm not sure whether status is the right name for validation errors.

Everett Zufelt’s picture

@dereine

Thanks for the patch. Can you please tell me which version of Views to apply this patch to? I received some failures when applying to the D6 recommended version (downloaded with drush).

I do have javascript enabled. Are you saying that when you select an item to configure that the configuration settings appear in something like a jQuery modal dialog? If so, then it would be good for the title of that dialog to be a heading.

Thanks again

Everett Zufelt’s picture

I am guessing that the patch is for 6.x-2.x-dev... I'll try this later today.

Everett Zufelt’s picture

Ok, I now realize that the template files that are listed under Theme Information are * not * actionable. So, ignore what I said about links above. list items and the hidden span for the active item still a good idea.

Everett Zufelt’s picture

Can you please give me the cvs command to checkout 6.x-2.x-dev. I thought it was:

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -d views/ -r DRUPAL-6--2 contributions/modules/views

But hunk 3 in includes/admin.inc is failing to patch

merlinofchaos’s picture

dereine may have provided his patch against Views 3.x -- typically he works there first and backports to Views 2.

The piece of code I mentioned is the javascript embedded title for the form, but you reader is probably not actually using that (which I should have realized) so it can be ignored.

Everett Zufelt’s picture

@merlinofchaos

The piece of code I mentioned is the javascript embedded title for the form, but you reader is probably not actually using that (which I should have realized)
so it can be ignored.

Most modern screen-readers read directly from the DOM and update their buffers on DOM events. So, it is likely that I do have access to that element.

@dereine

Tested the patch against 3.x

What I notice is that the Add / Rearrange links now have names with more context e.g. Add Fields Rearrange Fields, excellent.

I didn't notice any additional headings.

Also, just to clarify, the role="status" only needs to be applied to a container if its contents will be dynamically updated with Javascript. So, if the status message doesn't do this we don't need the role.

Also, and this may just be the quirkiness of the screen-reader, when a user makes a selection (like clicking on title to set a title), focus should move to the area where the settings are actually entered.

Thanks again.

merlinofchaos’s picture

Yeah. The 'form' will appear in the, div with the ID of (if I remember right) 'views-ajax-pad'. Would it be right to say that has role='status'? It's not actually status, though. It'll be a complete form. That's also where the title we were talking about appears.

Everett Zufelt’s picture

Putting a heading on the title should be sufficient.

The rule of thumb with the live region "status" thing is to place it on containers for content that updates without the user initiating an action, or that is informative only.

E.g.

Updating stock prices / sports scores
Updating status messages

Since the user is intentionally invoking the behaviour that brings up the form it doesn't need to be a live region.

dawehner’s picture

Yes. I developed the patch against views 3.x. Perhaps it would make sense to test views 3.x, and i will port the features back.

The advantage is that we will find issues for the drupal7 version of views and fix them.

Everett Zufelt’s picture

@dereine

Just to confirm, I did my testing on 6.x-3.x I'll keep doing that. Unless it is easier for you for me to test on 7.x-3.x, I can do that too if you like. Whatever is best for you.

dawehner’s picture

Version: 6.x-2.x-dev » 6.x-3.x-dev

Mh okay. I developed against views3 on drupal6, so the patch should apply.

iamjon’s picture

Issue tags: -Accessibility +accessibility Views 3 UI redesign

Added tag

iamjon’s picture

Status: Active » Needs review

Changing status based on comment #3 http://drupal.org/node/901128#comment-3405056

dawehner’s picture

Ping

dawehner’s picture

@Everett Zufelt
Can you test the patch?

I think it would be probably better to change the issue to 7.x-3.x and use this issue as a kind of meta issue

Everett Zufelt’s picture

Perhaps later this week.

mgifford’s picture

Version: 6.x-3.x-dev » 7.x-3.x-dev

I'm just bumping this to D7 as at least some of the improvements here are still relevant. Maybe just this one that applies to includes/ajax.inc:

@@ -249,7 +249,7 @@ function views_ajax_form_wrapper($form_id, &$form_state) {
 
     $display = '';
     if ($messages = theme('status_messages')) {
-      $display = '<div class="views-messages">' . $messages . '</div>';
+      $display = '<div class="views-messages" role="status">' . $messages . '</div>';
     }
     $display .= $output;

I like the idea of having the invisible text describing the functions as suggested in the patch in #10, but I guess I was still having trouble figuring out where it should go in includes/admin.inc & what $vars['stitle'] was.

If this is likely to get fixed in D6 then we can bump it back there, but this looks like development is full throttle on D7.

Status: Needs review » Needs work

The last submitted patch, 901128-acessiblity.patch, failed testing.

mgifford’s picture

Issue tags: +Accessibility

tagging. I think a comma may have been dropped.

tim.plunkett’s picture

Version: 7.x-3.x-dev » 8.x-3.x-dev
Issue tags: -accessibility Views 3 UI redesign +Needs backport to D7, +VDC

Tagging.

xjm’s picture

Project: Views (for Drupal 7) » Drupal core
Version: 8.x-3.x-dev » 8.x-dev
Component: User interface » views_ui.module
Priority: Normal » Major
Issue tags: -Needs backport to D7, -VDC +accessibility Views 3 UI redesign
xjm’s picture

Issue tags: -accessibility Views 3 UI redesign +Needs backport to D7, +VDC

weird untagging again

yoroy’s picture

Scope of this oldish issue is a bit unclear. Should we repurpose this as a META issue or re-title it to focus on only adding headings? For example, there are also:

- #1806278: Test whether Views conforms to WCAG 2.0 and ATAG 2.0
- #1806288: Fix duplicate ID's in Views HTML structure
- #1824634: [meta] Dropbutton accessibility issues

xjm’s picture

Title: Improve accessibility of Views UI » Add additional headers to Views UI

Retitling based on what I understand the goal of the issue to be.

mgifford’s picture

Status: Needs work » Needs review
Issue tags: +a11ySprint
StatusFileSize
new1.84 KB

Well, not sure if this works, but the last patch was way out of date. Hope this gets things started again.

yesct’s picture

yeah, this needs someone to carefully read through this issue and some of the related ones and update the issue summary with the current relavent information and some next steps for what needs to be done.

dawehner’s picture

We should also maybe post some screenshots, because adding a tag could potentially change the visual output.

yesct’s picture

Issue tags: +Needs screenshots
dawehner’s picture

StatusFileSize
new16.6 KB
new25.04 KB
new1.14 KB

One of these template files aren't used.

mgifford’s picture

The output of the review page looks fine - admin/structure/views - the changes are pretty minimal visually.

I'm pretty sure that core/modules/views/views_ui/templates/views-ui-edit-item.tpl.php isn't being used. Least not in the screenshots provided.

mgifford’s picture

#39: drupal-901128-39.patch queued for re-testing.

mgifford’s picture

StatusFileSize
new681 bytes

Re-roll without the un-needed template here #1843776: Remove unused template views-ui-edit-item.tpl.php.

With that I think it's RTBC.

Status: Needs review » Needs work
Issue tags: -Needs issue summary update, -Needs screenshots, -Accessibility, -Needs backport to D7, -VDC, -a11ySprint

The last submitted patch, drupal-901128-42.patch, failed testing.

mgifford’s picture

Status: Needs work » Needs review
Issue tags: +Needs issue summary update, +Needs screenshots, +Accessibility, +Needs backport to D7, +VDC, +a11ySprint

#42: drupal-901128-42.patch queued for re-testing.

dawehner’s picture

Status: Needs review » Reviewed & tested by the community

Cool

dries’s picture

Status: Reviewed & tested by the community » Fixed

Committed to 8.x. Thanks.

Status: Fixed » Closed (fixed)
Issue tags: -Needs issue summary update, -Needs screenshots, -Accessibility, -Needs backport to D7, -VDC, -a11ySprint

Automatically closed -- issue fixed for 2 weeks with no activity.