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
| Comment | File | Size | Author |
|---|---|---|---|
| #42 | drupal-901128-42.patch | 681 bytes | mgifford |
| #39 | drupal-901128-39.patch | 1.14 KB | dawehner |
| #39 | after.png | 25.04 KB | dawehner |
| #39 | before.png | 16.6 KB | dawehner |
| #35 | 901128-acessiblity-35.patch | 1.84 KB | mgifford |
Comments
Comment #1
ezra-g commentedIt might help to review your suggestion for you to post a screenshot of the Views interface with your suggested headings overlaid.
Comment #2
Everett Zufelt commented@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.
Comment #3
dawehnerThis 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.
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.
Comment #4
merlinofchaos commentedOne 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?
Comment #5
Everett Zufelt commented@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:
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")?
Comment #6
Everett Zufelt commented@merlinofchaos
Can you please tell me what that div is used for?
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.
Comment #7
Everett Zufelt commentedAlso 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.
Comment #8
Everett Zufelt commentedI 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)
Comment #9
Everett Zufelt commentedAlright, 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:
Comment #10
dawehnerI 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.
Comment #11
Everett Zufelt commented@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
Comment #12
Everett Zufelt commentedI am guessing that the patch is for 6.x-2.x-dev... I'll try this later today.
Comment #13
Everett Zufelt commentedOk, 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.
Comment #14
Everett Zufelt commentedCan 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
Comment #15
merlinofchaos commenteddereine 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.
Comment #16
Everett Zufelt commented@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.
Comment #17
merlinofchaos commentedYeah. 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.
Comment #18
Everett Zufelt commentedPutting 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.
Comment #19
dawehnerYes. 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.
Comment #20
Everett Zufelt commented@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.
Comment #21
dawehnerMh okay. I developed against views3 on drupal6, so the patch should apply.
Comment #22
iamjon commentedAdded tag
Comment #23
iamjon commentedChanging status based on comment #3 http://drupal.org/node/901128#comment-3405056
Comment #24
dawehnerPing
Comment #25
dawehner@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
Comment #26
Everett Zufelt commentedPerhaps later this week.
Comment #27
mgiffordI'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:
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.
Comment #29
mgiffordtagging. I think a comma may have been dropped.
Comment #30
tim.plunkettTagging.
Comment #31
xjmComment #32
xjmweird untagging again
Comment #33
yoroy commentedScope 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
Comment #34
xjmRetitling based on what I understand the goal of the issue to be.
Comment #35
mgiffordWell, not sure if this works, but the last patch was way out of date. Hope this gets things started again.
Comment #36
yesct commentedyeah, 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.
Comment #37
dawehnerWe should also maybe post some screenshots, because adding a tag could potentially change the visual output.
Comment #38
yesct commentedComment #39
dawehnerOne of these template files aren't used.
Comment #40
mgiffordThe 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.
Comment #41
mgifford#39: drupal-901128-39.patch queued for re-testing.
Comment #42
mgiffordRe-roll without the un-needed template here #1843776: Remove unused template views-ui-edit-item.tpl.php.
With that I think it's RTBC.
Comment #44
mgifford#42: drupal-901128-42.patch queued for re-testing.
Comment #45
dawehnerCool
Comment #46
dries commentedCommitted to 8.x. Thanks.