diff --git a/cms/static/sass/_base.scss b/cms/static/sass/_base.scss index 0bfc824143de54280a2119f702f76672be3c45be..69f190b121b42686aeb8898132f9b07d88581680 100644 --- a/cms/static/sass/_base.scss +++ b/cms/static/sass/_base.scss @@ -648,21 +648,22 @@ hr.divider { // ui - skipnav .nav-skip { @extend %t-action3; - display: block; + display: inline-block; position: absolute; left: 0px; top: -($baseline*30); - width: 1px; - height: 1px; overflow: hidden; background: $white; border-bottom: 1px solid $gray-l4; padding: ($baseline*0.75) ($baseline/2); - &:focus, &:active { - position: static; + &:focus, + &:active { + position: relative; + top: auto; width: auto; height: auto; + margin: 0; } } @@ -725,4 +726,3 @@ hr.divider { color: $gray-l1; } } - diff --git a/cms/static/sass/elements/_navigation.scss b/cms/static/sass/elements/_navigation.scss index 2f4694b33fc0f07611878a137a7454eebadd1800..1e7e5f42da24d37046095b0e4862141cf61ad4f5 100644 --- a/cms/static/sass/elements/_navigation.scss +++ b/cms/static/sass/elements/_navigation.scss @@ -25,21 +25,22 @@ nav { // skip navigation .nav-skip { @include font-size(13); - display: block; + display: inline-block; position: absolute; left: 0px; top: -($baseline*30); - width: 1px; - height: 1px; overflow: hidden; background: $white; border-bottom: 1px solid $gray-l4; padding: ($baseline*0.75) ($baseline/2); - &:focus, &:active { - position: static; + &:focus, + &:active { + position: relative; + top: auto; width: auto; height: auto; + margin: 0; } } diff --git a/cms/templates/base.html b/cms/templates/base.html index 51db3f154cf6976a2dcd6c84cd0e2d5efa1fed47..56107e157f5166948fa22d45168e5bcbfb299b44 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -62,7 +62,7 @@ from openedx.core.djangolib.js_utils import ( <%block name="page_alert"></%block> </div> - <div id="content"> + <div id="content" tabindex="-1"> <%block name="content"></%block> </div> diff --git a/cms/templates/course-create-rerun.html b/cms/templates/course-create-rerun.html index 8f2a4d8b9fbda7ea43f7b67ff551f7a0422ed937..27e2cf2339e3f8745fb1d88a528803ff94270d13 100644 --- a/cms/templates/course-create-rerun.html +++ b/cms/templates/course-create-rerun.html @@ -21,7 +21,7 @@ from django.template.defaultfilters import escapejs </%block> <%block name="content"> -<div id="content"> +<div id="content" tabindex="-1"> <div class="wrapper-mast wrapper"> <header class="mast mast-wizard has-actions"> <h1 class="page-header"> diff --git a/common/test/acceptance/tests/lms/test_account_settings.py b/common/test/acceptance/tests/lms/test_account_settings.py index 353b8023b62d726215c7931b878857bbaf69d449..f6f935d301e3172b8d1afbdc313840150b37cde8 100644 --- a/common/test/acceptance/tests/lms/test_account_settings.py +++ b/common/test/acceptance/tests/lms/test_account_settings.py @@ -462,7 +462,6 @@ class AccountSettingsA11yTest(AccountSettingsTestMixin, WebAppTest): self.account_settings_page.a11y_audit.config.set_rules({ 'ignore': [ 'link-href', # TODO: AC-233, AC-238 - 'skip-link', # TODO: AC-179 ], }) self.account_settings_page.a11y_audit.check_for_accessibility_errors() diff --git a/common/test/acceptance/tests/lms/test_learner_profile.py b/common/test/acceptance/tests/lms/test_learner_profile.py index 03f4f8c4ec4f97cc2f8f8283a90433ed19f19f7e..01d0159c9986cba1ba11980aaa4b252baf43158e 100644 --- a/common/test/acceptance/tests/lms/test_learner_profile.py +++ b/common/test/acceptance/tests/lms/test_learner_profile.py @@ -795,7 +795,6 @@ class LearnerProfileA11yTest(LearnerProfileTestMixin, WebAppTest): profile_page.a11y_audit.config.set_rules({ "ignore": [ - 'skip-link', # TODO: AC-179 'link-href', # TODO: AC-231 ], }) diff --git a/common/test/acceptance/tests/lms/test_lms_dashboard.py b/common/test/acceptance/tests/lms/test_lms_dashboard.py index 4b319e4b8f0af4f89ec4d71812cdab0b2f3263f7..ab81dfd3f293835e5a0e35fbe172a1655fa6cac5 100644 --- a/common/test/acceptance/tests/lms/test_lms_dashboard.py +++ b/common/test/acceptance/tests/lms/test_lms_dashboard.py @@ -235,8 +235,7 @@ class LmsDashboardA11yTest(BaseLmsDashboardTest): self.dashboard_page.a11y_audit.config.set_rules({ "ignore": [ - 'skip-link', # TODO: AC-179 - 'link-href', # TODO: AC-238, AC-179 + 'link-href', # TODO: AC-238 ], }) diff --git a/common/test/acceptance/tests/studio/test_studio_library.py b/common/test/acceptance/tests/studio/test_studio_library.py index 1eefd30573a09fcab40f2ac5877979be6250b2a5..8fc50262b24c44718cceab9e2bd101e7dabbcfe6 100644 --- a/common/test/acceptance/tests/studio/test_studio_library.py +++ b/common/test/acceptance/tests/studio/test_studio_library.py @@ -659,7 +659,6 @@ class StudioLibraryA11yTest(StudioLibraryTest): 'color-contrast', # TODO: AC-225 'link-href', # TODO: AC-226 'nav-aria-label', # TODO: AC-227 - 'skip-link', # TODO: AC-228 'icon-aria-hidden', # TODO: AC-229 ], }) diff --git a/lms/static/js/spec/search/search_spec.js b/lms/static/js/spec/search/search_spec.js index 6edf915b46dfd588c7d251b50039f9529961b96b..dce93d0ea3e2b053d5989aabd6af5b179bcdad3d 100644 --- a/lms/static/js/spec/search/search_spec.js +++ b/lms/static/js/spec/search/search_spec.js @@ -490,7 +490,7 @@ define([ '<div class="courseware-results"></div>' + '<section id="course-content"></section>' + '<section id="dashboard-search-results"></section>' + - '<section id="my-courses"></section>' + '<section id="my-courses" tabindex="-1"></section>' ); TemplateHelpers.installTemplates([ @@ -705,7 +705,7 @@ define([ loadFixtures('js/fixtures/search/dashboard_search_form.html'); appendSetFixtures( '<section id="dashboard-search-results"></section>' + - '<section id="my-courses"></section>' + '<section id="my-courses" tabindex="-1"></section>' ); loadTemplates.call(this); DashboardSearchFactory(); @@ -753,4 +753,4 @@ define([ }); }); -}); \ No newline at end of file +}); diff --git a/lms/static/sass/base/_base.scss b/lms/static/sass/base/_base.scss index e6d9665fe813b3e2d594fe07045ebbdfb2f09bac..a67a8198d524c75519935d0958f16d016e88307b 100644 --- a/lms/static/sass/base/_base.scss +++ b/lms/static/sass/base/_base.scss @@ -336,20 +336,21 @@ mark { .nav-skip { @extend %ui-print-excluded; - display: block; + display: inline-block; position: absolute; left: 0; top: -($baseline*30); - width: 1px; - height: 1px; overflow: hidden; background: $white; border-bottom: 1px solid $border-color-4; padding: ($baseline*0.75) ($baseline/2); - &:focus, &:active { - position: static; + &:focus, + &:active { + position: relative; + top: auto; width: auto; height: auto; + margin: 0; } } diff --git a/lms/static/sass/course/instructor/_instructor_2.scss b/lms/static/sass/course/instructor/_instructor_2.scss index f8c8dd5c09938dab93c422704506b306a86adac4..a23634864ffbe820f23ac0cde6db159b4ca19421 100644 --- a/lms/static/sass/course/instructor/_instructor_2.scss +++ b/lms/static/sass/course/instructor/_instructor_2.scss @@ -1712,7 +1712,7 @@ input[name="subject"] { height: 40px; border-radius: 3px; } - #coupon-content, #course-content, #registration-content, #regcode-content { + #coupon-content, #course-content, #content, #registration-content, #regcode-content { padding: $baseline; header { margin: 0; diff --git a/lms/static/sass/multicourse/_dashboard.scss b/lms/static/sass/multicourse/_dashboard.scss index a1eab8972b3b657c6f6a7518cdfe109f0308e9a4..dc76ae64448e5b86adbb4978c9ed922504eaa340 100644 --- a/lms/static/sass/multicourse/_dashboard.scss +++ b/lms/static/sass/multicourse/_dashboard.scss @@ -316,6 +316,10 @@ // ==================== .dashboard .my-courses { + &:focus { + outline: none; + } + // UI: individual course item .course { @include box-sizing(box); diff --git a/lms/templates/courseware/courseware-chromeless.html b/lms/templates/courseware/courseware-chromeless.html index 745a87ecfab88fafa22b6f4edb777d8c344c12a8..aa6778c3285c8db047bd9f1e1c5bafefeb7523aa 100644 --- a/lms/templates/courseware/courseware-chromeless.html +++ b/lms/templates/courseware/courseware-chromeless.html @@ -37,7 +37,7 @@ ${static.get_page_title_breadcrumbs(course_name())} <%static:css group='style-student-notes'/> % endif -<%block name="nav_skip">${"#seq_content" if section_title else "#course-content"}</%block> +<%block name="nav_skip">${"#content" if section_title else "#content"}</%block> <%include file="../discussion/_js_head_dependencies.html" /> ${fragment.head_html()} diff --git a/lms/templates/courseware/courseware.html b/lms/templates/courseware/courseware.html index a9df6c8c1aaec4f108ea423ea2484ed15eec2771..459361806a9be61a04c615a03b306eae2673552b 100644 --- a/lms/templates/courseware/courseware.html +++ b/lms/templates/courseware/courseware.html @@ -62,7 +62,7 @@ ${static.get_page_title_breadcrumbs(course_name())} <%static:css group='style-student-notes'/> % endif -<%block name="nav_skip">${"#seq_content" if section_title else "#course-content"}</%block> +<%block name="nav_skip">${"#content" if section_title else "#content"}</%block> <%include file="../discussion/_js_head_dependencies.html" /> ${fragment.head_html()} diff --git a/lms/templates/courseware/progress.html b/lms/templates/courseware/progress.html index f68e93292fc54e818b452ac204dd904a650b498b..c520ea2642442527bbdb337656735313fdd3073b 100644 --- a/lms/templates/courseware/progress.html +++ b/lms/templates/courseware/progress.html @@ -18,7 +18,7 @@ from django.utils.http import urlquote_plus <%namespace name="progress_graph" file="/courseware/progress_graph.js"/> <%block name="pagetitle">${_("{course_number} Progress").format(course_number=course.display_number_with_default) | h}</%block> -<%block name="nav_skip">#course-info-progress</%block> +<%block name="nav_skip">#content</%block> <%block name="js_extra"> <script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.js') | h}"></script> diff --git a/lms/templates/dashboard.html b/lms/templates/dashboard.html index 337018224cc405ffed156617ddfb2c8bf8a3c0f9..54861f320e7b8872f6ed59ff3710c4ba9e343256 100644 --- a/lms/templates/dashboard.html +++ b/lms/templates/dashboard.html @@ -74,7 +74,7 @@ import json </div> <section class="container dashboard" id="dashboard-main"> - <section class="my-courses" id="my-courses" role="main" aria-label="Content"> + <section class="my-courses" id="my-courses" role="main" tabindex="-1"> <header class="wrapper-header-courses"> <h2 class="header-courses">${_("My Courses")}</h2> </header> diff --git a/lms/templates/discussion/index.html b/lms/templates/discussion/index.html index 465f34d2c9abd95b1d8680abc82bd19fe44d942c..444e8aee1d512e6220af38680ceefae89d157884 100644 --- a/lms/templates/discussion/index.html +++ b/lms/templates/discussion/index.html @@ -39,7 +39,8 @@ from django.core.urlresolvers import reverse data-sort-preference="${sort_preference | h}" data-flag-moderator="${flag_moderator | h}" data-user-cohort-id="${user_cohort | h}" - data-course-settings="${course_settings | h}"> + data-course-settings="${course_settings | h}" + tabindex="-1"> <div class="discussion-body"> <div class="forum-nav" role="complementary" aria-label="${_("Discussion thread list")}"></div> <div class="discussion-column" role="main" aria-label="Discussion" id="discussion-column"> diff --git a/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html b/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html index 660ed2cd139f97b65e2aa07349535572bcd53102..1e2a2480802ecae4854fecdc896f42aa37d57d83 100644 --- a/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html +++ b/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html @@ -20,7 +20,7 @@ from django.core.urlresolvers import reverse ## 6. And tests go in lms/djangoapps/instructor/tests/ <%block name="pagetitle">${_("Instructor Dashboard")}</%block> -<%block name="nav_skip">#instructor-dashboard-content</%block> +<%block name="nav_skip">#content</%block> <%block name="headextra"> <%static:css group='style-course-vendor'/> diff --git a/lms/templates/main.html b/lms/templates/main.html index 3cc40e4e8cdcef670a198647c658cdfc7aa1c8e0..b45f36ee1eb69636e2a28bab904d97224e9f445b 100644 --- a/lms/templates/main.html +++ b/lms/templates/main.html @@ -124,7 +124,7 @@ from branding import api as branding_api <%include file="${static.get_template_path('header.html')}" /> % endif - <div class="content-wrapper" id="content"> + <div role="main" class="content-wrapper" id="content" tabindex="-1"> ${self.body()} <%block name="bodyextra"/> </div> diff --git a/lms/templates/main_django.html b/lms/templates/main_django.html index f8e4fc62ff9a07910a519e0882de2775957e3abf..89eb7f80c055ee80aab27fce85a59894ad421d81 100644 --- a/lms/templates/main_django.html +++ b/lms/templates/main_django.html @@ -30,7 +30,7 @@ {% with course=request.course %} {% include "header.html"|microsite_template_path %} {% endwith %} - <div class="content-wrapper" id="content"> + <div role="main" class="content-wrapper" id="content" tabindex="-1"> {% block body %}{% endblock %} {% block bodyextra %}{% endblock %} </div> diff --git a/lms/templates/ux/reference/teams-base.html b/lms/templates/ux/reference/teams-base.html index 295a78b984da6ffc8f05cf51d0f1af3450ba5d59..abe0e611f1dffc74671c0495c4ad1f9d66e72656 100644 --- a/lms/templates/ux/reference/teams-base.html +++ b/lms/templates/ux/reference/teams-base.html @@ -95,7 +95,7 @@ Teams | Course name <%block name="headextra"> <%static:css group='style-course-vendor'/> <%static:css group='style-course'/> -<%block name="nav_skip">${"#seq_content" if section_title else "#course-content"}</%block> +<%block name="nav_skip">${"#content" if section_title else "#content"}</%block> </%block> <%block name="js_extra"> diff --git a/lms/templates/ux/reference/teams-create.html b/lms/templates/ux/reference/teams-create.html index c8cce4144e5c471e79d6804e42a2d087ba93e09d..3b256ed4f7aac790027e5e771b67e0d6bd6b76b8 100644 --- a/lms/templates/ux/reference/teams-create.html +++ b/lms/templates/ux/reference/teams-create.html @@ -94,7 +94,7 @@ Create New Team | [Course name] <%block name="headextra"> <%static:css group='style-course-vendor'/> <%static:css group='style-course'/> -<%block name="nav_skip">${"#seq_content" if section_title else "#course-content"}</%block> +<%block name="nav_skip">${"#content" if section_title else "#content"}</%block> </%block> <%block name="js_extra"> diff --git a/lms/templates/wiki/article.html b/lms/templates/wiki/article.html index bb1e53b27e3aea5b7e91c0a1b0752de47c52b2c7..f06d93ea4409e50fad358f8af435e806334243b5 100644 --- a/lms/templates/wiki/article.html +++ b/lms/templates/wiki/article.html @@ -13,7 +13,7 @@ <div class="article-wrapper"> - <article class="main-article" id="main-article"> + <article class="main-article" id="main-article" tabindex="-1"> {% if selected_tab != "edit" %} <h1>{{ article.current_revision.title }}</h1> diff --git a/themes/edx.org/lms/templates/dashboard.html b/themes/edx.org/lms/templates/dashboard.html index c921e9c894603d26346cbc618c15334d36d4be17..410c08a35d4efece1de8b1ae4247d4489dd56faa 100644 --- a/themes/edx.org/lms/templates/dashboard.html +++ b/themes/edx.org/lms/templates/dashboard.html @@ -75,7 +75,7 @@ import json </div> <section class="container dashboard" id="dashboard-main"> - <section class="my-courses" id="my-courses" role="main" aria-label="Content"> + <section class="my-courses" id="my-courses" role="main" aria-label="Content" tabindex="-1"> <header class="wrapper-header-courses"> <h2 class="header-courses">${_("My Courses")}</h2> </header>