Giter Club home page Giter Club logo

ucfopen / udoit Goto Github PK

View Code? Open in Web Editor NEW
108.0 33.0 63.0 19.48 MB

The Universal Design Online content Inspection Tool, or UDOIT (pronounced, “You Do It”) enables faculty to identify accessibility issues in their Learning Management System. It will scan a course, generate a report, and provide resources on how to address common accessibility issues.

License: GNU General Public License v3.0

JavaScript 25.11% HTML 26.38% PHP 47.73% Dockerfile 0.15% Shell 0.01% Twig 0.57% Procfile 0.01% CSS 0.05%
canvas instructure education lti eduapp accessibility section-508 canvas-lms edtech a11y

udoit's Introduction

Join UCF Open Slack Discussions Build Status

Universal Design Online content Inspection Tool

UDOIT enables faculty to identify accessibility issues in Canvas by Instructure. Scan a course, generate reports, and provide resources to address common accessibility issues.

UDOIT was originally developed by the University of Central Florida (UCF) in 2014. In 2020, UDOIT was in need of a code refresh and UCF partnered with Cidi Labs to rewrite UDOIT from the ground up.

Prerequisites

  • PHP 8.1, 8.2
  • Symfony
  • Composer
  • Node v16 is supported; other versions may work
  • Yarn
  • MYSQL 5.7+ / MariaDB

Skills Needed for Installation

To complete this installation you will need the following skills:

  • Command line familiarity
  • MySQL familiarity
  • LMS admin permissions

UDOIT is built using PHP, the Symfony framework, the React framework, the Instructure UI component library, and other open source libraries. However, knowledge of PHP or Javascript is NOT REQUIRED for installation.

Where to Start

Tip: Join the UCF Open Slack community. They can help solve any issues you may encounter.

  1. Start the installation process by setting up UDOIT. Instructions are in INSTALL.md.

  2. Once UDOIT is running on your web server you need to configure your LMS. Instructions for the different LMS's are in INSTALL_<LMS_NAME>.md.

Installing UDOIT on Heroku

UDOIT can be installed on your own existing servers, but we've also configured an easy install to a Heroku server. Check out the HEROKU.md Readme for more information.

Contributing

Like any other open source project, UDOIT relies on contributions from the community to improve the tool. If you are interested in contributing to UDOIT, follow the instructions in CONTRIBUTING.md.

Licenses

UDOIT is distributed under the GNU GPL v3 license.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Primary Contact: Daniel Molares ([email protected])

Supported Languages

UDOIT currently offers support for both English (en) and Spanish (es). This can be configured either across the entire UDOIT instance or for a specific institution.

udoit's People

Contributors

alanfcmv avatar atarisafari avatar bagofarms avatar cidilabs avatar dependabot[bot] avatar dmols avatar eriko avatar escull75 avatar jasonmatos23-git avatar jonespm avatar ottenhoff avatar rob-3 avatar simonrothucf avatar ssciolla avatar ssilverm avatar taheralfayad avatar webchuckweb avatar yorchperaza avatar zqian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

udoit's Issues

(High) Add spacebar key handler for tab widget tabs

This issue is in relation to the tab widget used to switch between "Scan Course" and "View Old Reports"

One should probably be able to select a tab with the Spacebar key, as well as the Enter, key, since the Enter key causes a user to enter and exit Forms mode in JAWS. Switching modes every time you want to change tabs may be confusing and/or cumbersome for these screen reader users.

Note: If you do this, remember to stop propagation of the Spacebar key event, so it doesn't trigger a page down.

Suggest better colors to the user in the color contrast UFIXIT

When a color contrast issue is discovered, allow the user to select a color with better contrast based on the colors available in the Rich Content editor. These colors should be filtered down to those that provide enough contrast with the background color.

Remove requirement for the api base url and referer test in localConfig

Use the LTI variable substitution feature to request "Canvas.api.domain", which should negate the need for the api base url variable or the referer test in localConfig. This will also allow UDOIT to be installed in one place and accessed from multiple instances of Canvas.

See this page for more information on how to do variable substitution: https://canvas.instructure.com/courses/913512/pages/variable-substitution?module_item_id=6827542

Deploying to heroku?

Have you, or do you know of anyone that's deployed this to heroku? PHP apps work fine on heroku, BTW, as long as they adhere (or can be easily modified) to 12 factor principles.

Using file system storage for reports stands out as being problematic - it means the app couldn't easily be put behind a load balancer without using NFS or some other shared file system. Typically you'd use database, s3, or some other detached persistence in a separately scaled service.

Thanks! We're interested in hosting this but would like to keep it consistent with our other heroku-hosted LTI apps.

Document PHP 5.4 Requirement

Hi There,

This tools looks great, we are planning to implement it in the coming weeks/months. When demoing it on one of our servers, I realized it requires PHP 5.4. Is this documented somewhere? If not, I'd suggest adding it to the (otherwise excellent) install instructions. If this is documented somewhere, please forgive me!

Thanks.

~ Cooper

Update Oauth2 process to use new refresh token scheme

Here's the documentation of the changes to the endpoint: https://canvas.beta.instructure.com/doc/api/file.oauth_endpoints.html#post-login-oauth2-token

Basically, when we exchange the single-use code for the user's api key, Canvas also sends along a refresh token and an expiration time. Once the API key is past this expiration time, it will no longer work, and we'll have to use the same API endpoint we used to get the original key, but passing along the refresh token this time, returning a new key, new refresh token, and new expiration time.

Clean Up API Call Handlers (Both Transmitting and Receiving)

In multiple places UDOIT as well as UFIXIT saves redundant variables in data structures. Reconfigure the structure of the data passed around to only allow values consistent in all applications to be outward facing and other non-consistent variables to be placed in outward-facing argument holder (an array)

Udoit submit form doesn't handle error case

In my work on adding heroku support I noticed the udoit submit doesn't handle error state when submitting to progress.php.

If progress.php errors, the interval just keeps running silently without updating the user.

Incorrect filename for PDF when running two scans at once.

To reproduce:

  1. Open course A and start a scan, then open course B and start a scan.
  2. Course A finishes first, so you click the "Save report as PDF" button.
  3. The PDF will download with the filename being based on course B rather than course A.

Create an error summary view

This could be an element you can open up that would give you a summary of how many of each type of error exists. Errors with zero occurrences would not show up in the summary.

Add a detection feature for missing canvas api key.

@iturgeon and I discussed the utility of detecting if a master api key is present when running the app.

If now, we want to present the user with the ability to paste in their personal developer key.

This would allow them to quickly test UDOIT's capabilities without the need for a master key.

Missing $db_reports_table Variable in LocalConfig.template.php

The config template file currently in use is missing the $db_reports_table variable in the Database Config section.

/* Database Config */
$db_host = '';
$db_user = '';
$db_password = '';
$db_name = '';
$db_user_table = '';

This causes an undefined variable notice when running reports tracing back to Line 82 of process.php:

$sth = $dbh->prepare("
    INSERT INTO
        $db_reports_table
    SET
        user_id=:userid,
        course_id=:courseid,
        file_path=:filepath,
        date_run=NOW(),
        errors=:errors,
        suggestions=:suggestions
");

The lack of this variable results in a failed database insert that triggers the "Ya done goof'd" error.

The fix is to add the missing variable to the Database config section.

Thanks, and let me know if you need any other information.

~ Cooper

Pull Quail library out and include it with composer

The quail library included in UDOIT is a modified version of a very old version of QUAIL.

I've exported the google code version here https://github.com/iturgeon/quail-lib

I'd like to update that library it with the changes UDOIT has added and move it to a composer installed library.

Bonus level 2: QUAIL has a few dependencies of it's own, investigate if those can be plucked out.

https://github.com/DaveChild/Text-Statistics under core/quail/common/services/readability/php-text-statistics/

https://github.com/git-mirror/simpletest is under core/tests/simpletest

Change pNotUsedAsHeader to a Suggestion

pNotUsedAsHeader is an error right now, but it should be a suggestion. We are not sure of the content creator's intent with a bolded line of text, so it makes more sense as a suggestion. Plus, it's already listed as a suggestion in "What does UDOIT look for?"

Redesign ability to Collapse Errors

Currently, when an error description is clicked within a UDOIT Report prior to being fixed, if UFIXIT is enabled for that error otherwise indefinitely, the first error collapses even if multiple instances of the error exists for that course related document (page, discussion, assignment, etc.). If UFIXIT is enabled for that error, similarly only the first error is collapsed, however, an additional error instance number is present when un-collapsed. See images for reference.

screen shot 2015-08-25 at 4 52 33 pm

screen shot 2015-08-25 at 4 53 25 pm

screen shot 2015-08-25 at 4 54 09 pm

Error on strong text

UDOIT indicates that the following HTML is inaccessible:
<p><strong>Bold text</strong></p>

While I could certainly understand a warning in this instance, there are instances where you may want to indicate that a line of text is important, but not a heading.

Update README

Some notes about the README based on my run through the initial setup of this tool on my local machine.

I think it would be useful to include a list of things you'll need to get started, including:

  • A development instance of Canvas (or production if you're brave)
  • MySQL installed (with version?)
  • Any other dependencies.

Some general questions I think could be answered in the README:

"What are my options for development or testing?" (Heroku, local, etc)
"Can I run this against a test instance of Canvas? How?" (at least provide a link to an external resource)

We should probably move the class and method stuff into the wiki.

"How do I get started with automated testing?"

"No table headers found" in a table that already has headers (see comments for sample code)

Week/Dates

Mode

Topic

Assignments

Due Dates

Week 1

F2F

 Course Orientation

Syllabus Quiz

 8/31 at 11:55pm EST

Week 2

Online

 

 

 

Week 3

 

F2F

 

 

 

Week 4

 

Online

 

 

 

Week 5

 

F2F

 

 

 

Week 6

 

Online

 

 

 

Week 6

 

F2F

 

 

 

Week 7

 

Online

Midterm Exam

 

 

Week 8

 

F2F

 

 

 

Week 9

 

 

Spring Break

 

 

Week 10

 

Online

 

 

 

Week 11

 

F2F

 

 

 

Week 12

 

F2F

 

 

 

Week 13

 

Online

 

 

 

Week 14

 

Online

 

 

 

Week 15

 

F2F

 

 

 

Week 16

 

Online

Final Exam

 

 

Build and export a test course.

I'd think it'd be super useful for testing to have a fully constructed Canvas course that touches each feature UDOIT identifies.

If we could export that and add it to the source, contributors would be able to more easily test functionality.

Only the first image is fixed using UFIXIT

On a page with multiple images with alt text errors, UFIXIT will work on the first one, but all subsequent images will not have any changes made, even though UFIXIT reports "Fixed"

Clarify phrasing of "Change paragraphs to headings"

Users can interpret this as telling them to style their paragraphs of text as headings. Instead, it should be something like "Avoid using styles for document structure."

Also, add this sentence to the beginning of the description:
"Bold and Italics are used to emphasize text, whereas headings are used to define the structure of the document."

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.