Skip to main content

Ares 5.0 Accessibility Update

Ares Web DLL version 5.0.8.0 (delivered with Ares Server 5.0.19.0) and the accompanying web page release include a comprehensive set of changes to improve conformance with WCAG 2.1 Level AA accessibility standards. For the corresponding release notes entry, see the 5.0.19 release notes.

Upgrade Requirements​

For full WCAG 2.1 AA compliance, this update requires both the updated Web DLL and the updated web page templates.

ComponentAction Required
Ares Server InstallerRun the latest Ares Server Installer (5.0.19.0 or later). This updates the Web DLL to 5.0.8.0 and applies all database updates automatically.
Web PagesUpdate web page files in both WebPages and LmsWebPages directories. See Web Page Changes below for details.
warning

Sites with customized web pages should review the changes carefully before updating. Back up your current web page directories before making any changes.


What's New in the DLL​

These changes affect the server-rendered HTML output from the DLL. They take effect automatically when the updated DLL is deployed.

Screen Reader Improvements​

ARIA Attributes for Menus and Controls​

Disabled navigation menu items are now rendered as focusable anchor elements with aria-disabled="true" instead of non-interactive <div> elements. Screen readers now correctly announce these items as disabled links rather than skipping them entirely.

Checkboxes in item tables (Hot List, Clone, and batch select columns) now include descriptive aria-label attributes that identify the associated item by title, giving screen reader users meaningful context for each checkbox.

The tag cloud component includes role="group" with an aria-label that identifies the tag type, allowing assistive technology to announce it as a related group of links.

Fourteen anchor elements across item detail, course, and shared list views that used the invalid alt attribute on <a> elements have been corrected to use aria-label.

Three <select> dropdown elements (Visible to Students, Pickup Location, Loan Period) that lacked accessible names now have aria-label attributes.

Table Accessibility​

All DLL-generated HTML tables now have proper structural markup:

  • <tbody> closes before <tfoot> (previously <tfoot> was incorrectly nested inside <tbody>)
  • No-data tables now include <tbody> wrappers around message rows
  • Tables with hidden column headers now render a visually hidden <thead> (using the offscreen CSS class) so that screen readers can still associate data cells with their headers
  • Empty header columns (Actions, Select) now contain visually hidden text instead of relying solely on aria-label on the <th> element
  • Sort links in table headers use aria-label instead of the invalid alt attribute

Tables are wrapped in a <div class="table-responsive"> container with role="region", tabindex="0", and aria-labelledby pointing to the table caption. This allows keyboard users to scroll wide tables horizontally and provides an accessible label for the scrollable region.

ARIA Live Regions and Status Messages​

An aria-live="polite" announcement region is now included in the page header. Actions such as adding or removing items from a hot list, deleting alerts, reordering rows, and saving sort order now announce their result to screen readers via this region.

The session expired notification uses an alertdialog role with aria-modal="true", focus trapping, and keyboard handling so that screen reader users are immediately informed when their session ends.

Status messages on login pages use role="alert" to ensure screen readers announce login errors and session timeout messages.

Keyboard Navigation​

Collapsible Sections (GROUPTOGGLE)​

Item grouping toggle controls are now fully keyboard accessible:

  • The toggle element is rendered as an <a> with href="#", making it focusable via Tab
  • role="button" ensures screen readers announce it as an interactive button
  • aria-expanded reflects the current visibility state (true when content is visible, toggling on click)
  • aria-controls identifies the panel being toggled
  • Both Enter and Space keys activate the toggle (Space is handled via an onkeydown handler)

Keyboard-Accessible Table Sorting​

Sortable tables now include Move Up and Move Down buttons in each row, providing a keyboard-accessible alternative to drag-and-drop reordering. After a row is moved, the new position is announced via an ARIA live region, and focus is returned to the button that was activated. Button states are automatically updated to disable Move Up on the first row and Move Down on the last row.

Focus Visibility​

A :focus-visible rule with a 2px solid #000066 outline is applied across all pages, ensuring keyboard focus is always visible. The pell rich text editor content area also receives a visible focus outline that overrides its default outline: 0.

A "Skip to Main Content" link is available in the page header, allowing keyboard users to bypass the navigation and jump directly to the main content area.

Label and Name Corrections​

Label-in-Name Fixes (WCAG 2.5.3)​

Several controls had accessible names that did not contain the visible text:

  • Show Details links: aria-label changed from "View details" to "Show details" to match the visible link text
  • Start Date / Stop Date inputs: accessible names now begin with the visible column header text (e.g., "Start Date - enter the start date for this item")
  • Table filter inputs: the title attribute now matches the placeholder text ("Search {Column Name}" instead of the generic "Column filter text")

Instructor Select Label Association​

The <select> element for Instructor Username in the non-JavaScript code path was missing its id="InstructorUsername" attribute, preventing the <label for="InstructorUsername"> in the HTML template from associating correctly. The id attribute has been added.

Heading Hierarchy​

Heading levels on several pages have been corrected to maintain a proper hierarchy (e.g., <h4> changed to <h3> where the parent heading is <h2>).

Session Timeout and Form Data Preservation​

Session Expired Status Message​

A bug prevented the correct "session timed out" message from appearing on the login page after a session expired. The session flag is now correctly preserved so users see the appropriate timeout message instead of the generic login prompt.

FORMSTATE: Preserve Form Data Across Session Timeouts​

When a user's session expires while they are filling out a form, their entered data is now preserved and restored after they log back in. This uses a mechanism consistent with ILLiad and Aeon:

  1. Every authenticated page includes a hidden <input name="FORMSTATE"> field that contains a Base64-encoded snapshot of the current form parameters (excluding passwords and session IDs)
  2. When a session expires and the user is redirected to the login page, the FORMSTATE value is carried through to the login form
  3. After successful re-authentication, the DLL decodes the FORMSTATE and restores the user to their previous page with form fields intact

FORMSTATE is limited to 8 KB of form data and is automatically excluded from login, registration, and password forms.

Template change required: The GLogon2.html template must contain the <#FORMSTATE> DLL tag inside the login <form> element. The default templates shipped with this release already include it. Sites using customized login templates should add <#FORMSTATE> inside their login form if they want session timeout form preservation.

Session Expired Modal​

When an AJAX request detects an expired session, a modal dialog now appears informing the user and providing a "Log In" button. The modal uses proper alertdialog semantics, traps focus, and is fully keyboard accessible.

Site Map Page​

A new Site Map page is available at ares.dll?Action=10&Form=3. It dynamically generates a list of all navigation links available to the current user. A link to the Site Map is included in the default footer template. This satisfies WCAG 2.4.5 (Multiple Ways) by providing an alternative way to locate pages.

New DLL Tag​

TagDescription
<#FORMSTATE>Renders a hidden input containing encoded form state for session timeout preservation. Place inside the <form> element in GLogon2.html. Outputs nothing on forms where serialization is not applicable.

Web Page Changes​

The following changes apply to the customer-facing template files in both the WebPages (standard) and LmsWebPages (LTI/LMS) directories.

Implementation Options

There are two ways to apply these changes:

  1. Download the complete updated web page set from the Atlas Systems customer portal and replace your web page directories. This is the recommended approach if you have not customized your web pages.
  2. Manually apply the changes described below to your existing customized web pages. Use this approach if you have made customizations you want to preserve.
Before You Begin
  • Back up your current web page directories before making any changes.
  • If you have customized any of the files listed below, review each change carefully to merge it with your customizations.
  • Changes marked as Required must be applied for the Ares server to function correctly with this release. Changes marked as Recommended improve accessibility or user experience and should be applied when possible.

Summary of Web Page Changes​

CategoryDescription
Accessibility (WCAG 2.x)Color contrast fixes, focus indicators, ARIA attributes, skip navigation, keyboard-accessible sorting, screen reader announcements, semantic HTML improvements
Session ManagementNew accessible session-expired modal dialog with AJAX detection
jQuery UpgradejQuery upgraded from 1.12.4 to 3.5.1; jQuery UI upgraded from 1.9.2 to 1.13.2
Responsive LayoutNew responsive CSS for WCAG 1.4.10 Reflow at 320px CSS width, viewport meta tag added
New Feature: Site MapNew SiteMap.html page and buildSiteMap.js for WCAG 2.4.5 compliance
Form Improvementsautocomplete attributes, FORMSTATE support, semantic fieldset/legend markup
Bug FixesHideLoanPeriod function fix, heading level corrections, HTML structure fixes

Complete File List​

New Files​

FileDirectoryDescription
SiteMap.htmlWebPages, LmsWebPagesSite map page (WCAG 2.4.5)
js/buildSiteMap.jsWebPages, LmsWebPagesJavaScript to dynamically build site map from navigation

Removed Files​

FileDirectoryDescription
js/jquery-1.5.1.min.jsWebPages, LmsWebPagesRemoved obsolete bundled jQuery (now loaded from CDN)

Modified Files — Include Files (Shared Components)​

FileDirectoriesChange Summary
include_head.htmlWebPages, LmsWebPagesjQuery/jQuery UI upgrade, viewport meta tag
include_header.htmlWebPagesAdded aria-alert-div; LmsWebPages: skip link moved to menu files
include_header.htmlLmsWebPagesSkip link commented out (moved to menu files), whitespace cleanup
include_footer.htmlWebPages, LmsWebPagesAdded Site Map link
include_menu.htmlWebPages, LmsWebPagesSkip link added (LmsWebPages), aria-alert-div added, Ares Tools menu item changed from link to span
include_instructorcoursemenu.htmlLmsWebPagesSkip link and aria-alert-div added
include_studentcoursemenu.htmlLmsWebPagesSkip link and aria-alert-div added
include_courseproxycoursemenu.htmlLmsWebPagesSkip link and aria-alert-div added
include_instructorsharedlistmenu.htmlLmsWebPagesSkip link and aria-alert-div added
include_fullproxysharedlistmenu.htmlLmsWebPagesSkip link and aria-alert-div added
include_instructorBatchMenu.htmlWebPages, LmsWebPagesImproved ARIA labels, fixed hidden input placement
include_studentBatchMenu.htmlWebPages, LmsWebPagesImproved ARIA labels

Modified Files — CSS Files​

FileDirectoriesChange Summary
css/main.cssWebPages, LmsWebPagesColor contrast fixes, responsive layout, focus indicators, rem units
css/lti.cssLmsWebPagesResponsive nav, flow-root, min-height
css/pell.min.cssWebPages, LmsWebPagesContrast improvements for rich text editor
css/rss.cssWebPages, LmsWebPagesColor contrast fixes
css/tagCloud.cssWebPages, LmsWebPagesPixel units converted to rem

Modified Files — JavaScript Files​

FileDirectoriesChange Summary
js/aresajax.jsWebPages, LmsWebPagesSession expired modal, ARIA alerts, sort buttons, HideLoanPeriod fix
js/aresTableFilter.jsWebPages, LmsWebPagesEmpty column header labels, filter optimization
js/aresMarkdown.jsWebPages, LmsWebPagesARIA attributes for rich text editor
js/aresBatchEditing.jsWebPages, LmsWebPagesImproved ARIA label text
js/aresMenu.jsLmsWebPagesDropdown close-on-open, space key handling, focus management
js/fadeEffect.jsWebPages, LmsWebPagesCopyright year update only
js/ltiContentItem.jsWebPages, LmsWebPagesCopyright year update only

Modified Files — HTML Pages​

FileDirectoriesChange Summary
GLogon.htmlWebPages, LmsWebPagesViewport meta, autocomplete="off", copyright year
GLogon2.htmlWebPages, LmsWebPagesrole="alert" on status, FORMSTATE added, autocomplete="off"
ForgotPassword.htmlWebPages, LmsWebPagesautocomplete="off" on username
GCreateAccount.htmlWebPages, LmsWebPagesautocomplete attributes, role="alert" on username span
NewAuthRegistration.htmlWebPages, LmsWebPagesautocomplete attributes, HTML structure fix, legend text fix
ChangeUserInformation.htmlWebPages, LmsWebPagesautocomplete attributes
GSearchResults.htmlWebPagesRemoved empty onclick
IItemSupply.htmlWebPages, LmsWebPagesReplaced table layout with fieldset/legend/label
ICourseCreate.htmlWebPages, LmsWebPagesHeading level corrections (h3->h2, h4->h3)
ICourseClone.htmlLmsWebPagesRestructured indentation
UCoursePassword.htmlWebPagesFixed page title, heading, typo, added label for password input
UCourseMessageBoardNewThread.htmlWebPages, LmsWebPagesInitializeEditor label parameter, body tag fix
UCourseMessageBoardNewReply.htmlWebPages, LmsWebPagesInitializeEditor label parameter
ICourseMessageBoardNewThread.htmlLmsWebPagesInitializeEditor label parameter
ICourseMessageBoardNewReply.htmlLmsWebPagesInitializeEditor label parameter
USearch.htmlWebPages, LmsWebPagesRemoved caption, added role="presentation"

Detailed Web Page Changes​

1. jQuery and jQuery UI Upgrade (Required)​

Files: include_head.html (WebPages and LmsWebPages)

jQuery has been upgraded from 1.12.4 to 3.5.1, and jQuery UI from 1.9.2 to 1.13.2. This addresses known security vulnerabilities in older jQuery versions.

Before:

<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/smoothness/jquery-ui.css" />
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>

After:

<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/themes/smoothness/jquery-ui.css" />
<script src="//code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script>
warning

If you have custom JavaScript that depends on jQuery APIs deprecated or removed between 1.12.4 and 3.5.1, you may need to update that code. Common breaking changes include the removal of .size() (use .length instead) and changes to AJAX content type handling.

Additionally, a viewport meta tag has been added:

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

The bundled js/jquery-1.5.1.min.js file has been removed from both WebPages and LmsWebPages since jQuery is loaded from CDN.


2. Session Expired Modal (Required)​

Files: js/aresajax.js (WebPages and LmsWebPages)

A new accessible session-expired modal dialog has been added. When an AJAX call returns a session-expired code, a modal overlay is displayed with a "Log In" button that redirects to the login page. The modal uses proper ARIA attributes (role="alertdialog", aria-modal="true") and traps focus.


3. FORMSTATE Support on GLogon2.html (Required)​

Files: GLogon2.html (WebPages and LmsWebPages)

The <#FORMSTATE> tag has been added to the login form. This is required for proper server-side form state validation.

Before:

<form action="<#DLL>" method="post" class="f-wrap-1">
<input type="hidden" name="AresForm" value="Logon"/>
<div id="logonform">

After:

<form action="<#DLL>" method="post" class="f-wrap-1">
<input type="hidden" name="AresForm" value="Logon"/>
<#FORMSTATE>
<div id="logonform">
warning

GLogon2.html is a DLL-processed page. The <#FORMSTATE> tag is required for correct operation with this release. If you have a customized GLogon2.html, you must add this tag inside the form element.

The status span also gained a role="alert" attribute and the class="fade" was removed from the <#STATUS> tag:

Before:

<span style="background-color:#FFE4E1 ;font-size: 110%" tabindex="0"><#STATUS class="fade"></span>

After:

<span role="alert" style="background-color:#FFE4E1 ;font-size: 110%" tabindex="0"><#STATUS></span>

4. HideLoanPeriod Function Fix (Required)​

Files: js/aresajax.js (WebPages and LmsWebPages)

The HideLoanPeriod function was previously defined inside a jQuery $('#PickupLocation').change() handler, meaning it used $(this) to reference the pickup location element. It has been refactored into a standalone function that explicitly references $('#PickupLocation'), and the binding was fixed to pass the function reference instead of invoking it immediately.

Before:

pickupLocation = $(this).val();
$(document).ready(HideLoanPeriod());
$('#PickupLocation').change(HideLoanPeriod());

After:

pickupLocation = $('#PickupLocation').val();
$(document).ready(HideLoanPeriod);
$('#PickupLocation').change(HideLoanPeriod);
tip

Note the removal of the parentheses () after HideLoanPeriod in the .ready() and .change() calls. Previously the function was being invoked immediately rather than passed as a callback, which could cause the loan period to not update correctly when the pickup location changed.


Files: css/main.css (WebPages and LmsWebPages), css/rss.css, css/pell.min.css

Multiple color values have been updated to meet WCAG AA contrast ratios (4.5:1 for normal text, 3:1 for large text):

ElementBeforeAfterReason
.highlight#E17000#b45600Insufficient contrast on white
.date#bbb#767676Insufficient contrast on white
.pagination border#ddd / #ccc#949494Insufficient contrast for UI elements
.pagination span color#ccc#767676Insufficient contrast on white
.noActionMessage#999#767676Insufficient contrast on white
.table1 tbody th bg#88b8db#3a7ca5Insufficient contrast for white text
.calendar td border#ddd#949494Insufficient contrast
#nav-secondary li border#ccc#949494Insufficient contrast
Form borders#d7d7d7#a0a0a0Insufficient contrast
RSS titlegray#595959Insufficient contrast
RSS pubDatesilver#767676Insufficient contrast
Linkstext-decoration:nonetext-decoration:underlineWCAG 1.4.1 - links distinguishable without color
Pell editor bordernone1px solid #767676Visible content boundary
Pell button bordernone1px solid #888Visible button boundary
Pell button selected#f0f0f0 bg#d4d4d4 bg + 2px solid #000066 bottomClearer active state

Files: css/main.css, css/tagCloud.css (WebPages and LmsWebPages)

Pixel-based font sizes have been converted to rem units to support user font size preferences:

SelectorBeforeAfter
.nav-link14px0.875rem
.caption, small11px0.6875rem
.button-style10px0.625rem
.tagCloud12px0.75rem
.tagCloud114px0.875rem
.tagCloud218px1.125rem
.tagCloud324px1.5rem
.tagCloud-111px0.6875rem
.tagCloud-210px0.625rem
.tagCloud-39px0.5625rem

Files: css/main.css (WebPages and LmsWebPages)

New CSS rules ensure visible focus indicators on all interactive elements:

.pell-content:focus {
outline: 2px solid #000066;
}

:focus-visible {
outline: 2px solid #000066;
}

.pell-button:focus-visible {
outline: revert;
}

Files: css/main.css (WebPages and LmsWebPages), css/lti.css (LmsWebPages)

New responsive CSS media queries support content reflow at 320px CSS width without horizontal scrolling. Key changes include:

  • Removed min-width:770px from #wrap
  • Changed fixed height values to min-height for elements like search input and item icons
  • Added @media screen and (max-width: 768px) rules that:
    • Stack sidebar navigation above content
    • Make forms full-width with vertically stacked labels
    • Enable overflow-x:auto on .table-responsive wrapper
    • Collapse navigation to single-column
  • Added @media screen and (max-width: 480px) rules for tighter mobile spacing

For LmsWebPages, css/lti.css also gained responsive rules for the secondary navigation.


In LmsWebPages, the "Skip to Main Content" link has been moved from include_header.html into each menu include file. This ensures the skip link appears on every page regardless of which menu include is used.

An aria-alert-div (used for screen reader announcements) has been added to each menu include file:

<div id="skip-to-content"><a href="#content" onclick="$('#content').focus(); return false;">Skip to Main Content</a></div>
<div id="aria-alert-div" aria-live="polite" class="offscreen"></div>

In WebPages (standard), the aria-alert-div was added to include_header.html instead.


New Files: SiteMap.html and js/buildSiteMap.js (WebPages and LmsWebPages)

A link to the Site Map has been added to include_footer.html:

Before:

<p><a href="#">University Library Home</a> | <a href="#">University Home</a></p>

After:

<p><a href="#">University Library Home</a> | <a href="#">University Home</a> | <a href="<#ACTION action="10" form="3">">Site Map</a></p>
info

GLogon.html files are static files (not DLL-processed), so the Site Map link in the GLogon footer uses a direct URL (ares.dll?Action=10&Form=3) instead of the <#ACTION> DLL tag.


Files: ChangeUserInformation.html, GCreateAccount.html, NewAuthRegistration.html, ForgotPassword.html, GLogon.html, GLogon2.html (WebPages and LmsWebPages)

Fieldautocomplete Value
Username (login/forgot password)off
First Namegiven-name
Last Namefamily-name
Email Addressemail
Phone Numbertel
Addressaddress-line1
Address 2address-line2
Cityaddress-level2
Stateaddress-level1
Zip Codepostal-code

Files: IItemSupply.html (WebPages and LmsWebPages)

The item supply method radio buttons have been converted from a nested table layout to semantic <fieldset>/<legend>/<label> markup.


Files: js/aresMarkdown.js (WebPages and LmsWebPages)

The InitializeEditor() function now accepts an optional labelText parameter and sets ARIA attributes on the Pell rich text editor content area (role="textbox", aria-multiline="true", aria-label).


Files: js/aresTableFilter.js (WebPages and LmsWebPages)

  • Empty column headers now receive offscreen labels based on a data-column-type attribute
  • Filter input titles improved from generic "Column filter text" to specific "Search [column name]"

Files: js/aresMenu.js (LmsWebPages only)

  • Close other dropdowns when opening a new one
  • Space key handling added
  • Focus management improved

Files: include_menu.html (WebPages) — "Ares Tools" changed from link to non-interactive span.


  • UCoursePassword.html: Page title corrected from "Create Course" to "Course Password"; added label for password input
  • ICourseCreate.html, ICourseClone.html: Heading levels corrected (h3->h2, h4->h3)
  • USearch.html: Layout table caption removed, role="presentation" added
  • GLogon.html, GLogon2.html, GSearchResults.html: Removed empty onclick="" attributes
  • NewAuthRegistration.html: Fixed tag nesting; corrected fieldset legend text
  • UCourseMessageBoardNewThread.html: Fixed body tag; added editor label parameter
  • Copyright years updated from 2024 to 2026 across JavaScript files and GLogon.html