From 8c7f9904c216b5b58a7ae23f87d9b0d873eae0ab Mon Sep 17 00:00:00 2001 From: iturgeon Date: Tue, 27 Oct 2015 22:34:35 -0400 Subject: [PATCH 01/16] move everything for heroku update compser.lock organize config into separate parts and adds heroku settings centralize database and heroku config update add logging to blti failure error output adds key add lots of logging add heroku https proxy detection for update db connection methods heroku db config syntax fix new paths for javascript things update quail location stop including the config everywhere better database errors move inserted timestamp into bind param more error logging insert query more postgress friendly adds date_created to postgress readme and updates oauth sql to be postgress safe update heroku config --- Procfile | 1 + README.md | 24 +- composer.lock | 29 +- config/herokuConfig.php | 39 +++ config/localConfig.template.php | 275 +----------------- config/settings.php | 33 +++ config/tests.php | 227 +++++++++++++++ fpm_custom.conf | 1 + img/udoit_logo.png | Bin 4222 -> 0 bytes lib/Udoit.php | 4 +- lib/Ufixit.php | 4 +- lib/db.php | 13 + {core => lib/quail}/CHANGELOG.txt | 0 {core => lib/quail}/LICENSE.txt | 0 {core => lib/quail}/README.txt | 0 .../quail}/examples/HFT3273-0M62.html | 0 {core => lib/quail}/examples/css/main.css | 0 {assets => lib/quail/examples}/img/error.png | Bin .../quail/examples}/img/suggestion.png | Bin .../quail/examples}/img/warning.png | Bin {core => lib/quail}/examples/test.php | 0 {core => lib/quail}/examples/test_form.php | 2 +- .../quail/common/accessibility_tests.php | 2 +- {core => lib/quail}/quail/common/css.php | 0 .../quail}/quail/common/domExtensions.php | 0 {core => lib/quail}/quail/common/elements.php | 0 .../quail/common/resources/emoticons.txt | 0 .../quail}/quail/common/resources/iso639.txt | 0 .../quail/common/resources/placeholder.txt | 0 .../common/services/media/mediaService.php | 0 .../quail/common/services/media/youtube.php | 2 +- .../php-text-statistics/README.txt | 0 .../php-text-statistics/TextStatistics.php | 0 .../php-text-statistics/TextStatistics.php4 | 0 .../resources/DaleChallWordList.php | 0 .../resources/SpacheWordList.php | 0 .../tests/TextStatisticsKiplingIf.php | 0 .../tests/TextStatisticsMelvilleMobyDick.php | 0 .../tests/TextStatisticsTest.php | 0 .../services/readability/readability.php | 0 {core => lib/quail}/quail/common/test.php | 0 {core => lib/quail}/quail/guidelines/all.php | 0 .../quail}/quail/guidelines/section508.php | 0 .../quail/guidelines/translations/en.txt | 0 .../quail}/quail/guidelines/wcag1a.php | 0 .../quail}/quail/guidelines/wcag1aa.php | 0 .../quail}/quail/guidelines/wcag1aaa.php | 0 .../quail}/quail/guidelines/wcag2a.php | 0 .../quail}/quail/guidelines/wcag2aa.php | 0 .../quail}/quail/guidelines/wcag2aaa.php | 0 {core => lib/quail}/quail/quail.php | 0 .../quail}/quail/reporters/reporter.array.php | 0 .../reporters/reporter.codeHighlight.php | 0 .../quail}/quail/reporters/reporter.demo.php | 0 .../quail/reporters/reporter.static.php | 0 .../quail}/quail/reporters/reporter.xml.php | 0 .../quail}/tests/cssTestInterface.php | 0 {core => lib/quail}/tests/cssTests.php | 0 {core => lib/quail}/tests/index.php | 0 {core => lib/quail}/tests/quailTests.php | 0 .../HELP_MY_TESTS_DONT_WORK_ANYMORE | 0 {core => lib/quail}/tests/simpletest/LICENSE | 0 {core => lib/quail}/tests/simpletest/README | 0 {core => lib/quail}/tests/simpletest/VERSION | 0 .../tests/simpletest/authentication.php | 0 .../quail}/tests/simpletest/autorun.php | 0 .../quail}/tests/simpletest/browser.php | 0 .../quail}/tests/simpletest/collector.php | 0 .../quail}/tests/simpletest/compatibility.php | 0 .../quail}/tests/simpletest/cookies.php | 0 .../tests/simpletest/default_reporter.php | 0 .../quail}/tests/simpletest/detached.php | 0 .../docs/en/authentication_documentation.html | 0 .../docs/en/browser_documentation.html | 0 .../quail}/tests/simpletest/docs/en/docs.css | 0 .../docs/en/expectation_documentation.html | 0 .../docs/en/form_testing_documentation.html | 0 .../docs/en/group_test_documentation.html | 0 .../tests/simpletest/docs/en/index.html | 0 .../docs/en/mock_objects_documentation.html | 0 .../tests/simpletest/docs/en/overview.html | 0 .../docs/en/partial_mocks_documentation.html | 0 .../docs/en/reporter_documentation.html | 0 .../docs/en/unit_test_documentation.html | 0 .../docs/en/web_tester_documentation.html | 0 .../docs/fr/authentication_documentation.html | 0 .../docs/fr/browser_documentation.html | 0 .../quail}/tests/simpletest/docs/fr/docs.css | 0 .../docs/fr/expectation_documentation.html | 0 .../docs/fr/form_testing_documentation.html | 0 .../docs/fr/group_test_documentation.html | 0 .../tests/simpletest/docs/fr/index.html | 0 .../docs/fr/mock_objects_documentation.html | 0 .../tests/simpletest/docs/fr/overview.html | 0 .../docs/fr/partial_mocks_documentation.html | 0 .../docs/fr/reporter_documentation.html | 0 .../docs/fr/unit_test_documentation.html | 0 .../docs/fr/web_tester_documentation.html | 0 .../quail}/tests/simpletest/dumper.php | 0 .../quail}/tests/simpletest/eclipse.php | 0 .../quail}/tests/simpletest/encoding.php | 0 .../quail}/tests/simpletest/errors.php | 0 .../quail}/tests/simpletest/exceptions.php | 0 .../quail}/tests/simpletest/expectation.php | 0 .../simpletest/extensions/pear_test_case.php | 0 .../tests/simpletest/extensions/testdox.php | 0 .../simpletest/extensions/testdox/test.php | 0 {core => lib/quail}/tests/simpletest/form.php | 0 .../quail}/tests/simpletest/frames.php | 0 {core => lib/quail}/tests/simpletest/http.php | 0 .../quail}/tests/simpletest/invoker.php | 0 .../quail}/tests/simpletest/mock_objects.php | 0 {core => lib/quail}/tests/simpletest/page.php | 0 .../quail}/tests/simpletest/php_parser.php | 0 .../tests/simpletest/reflection_php4.php | 0 .../tests/simpletest/reflection_php5.php | 0 .../quail}/tests/simpletest/remote.php | 0 .../quail}/tests/simpletest/reporter.php | 0 .../quail}/tests/simpletest/scorer.php | 0 .../quail}/tests/simpletest/selector.php | 0 .../quail}/tests/simpletest/shell_tester.php | 0 .../quail}/tests/simpletest/simpletest.php | 0 .../quail}/tests/simpletest/socket.php | 0 {core => lib/quail}/tests/simpletest/tag.php | 0 .../tests/simpletest/test/acceptance_test.php | 0 .../tests/simpletest/test/adapter_test.php | 0 .../tests/simpletest/test/all_tests.php | 0 .../simpletest/test/authentication_test.php | 0 .../tests/simpletest/test/autorun_test.php | 0 .../tests/simpletest/test/bad_test_suite.php | 0 .../tests/simpletest/test/browser_test.php | 0 .../tests/simpletest/test/collector_test.php | 0 .../simpletest/test/command_line_test.php | 0 .../simpletest/test/compatibility_test.php | 0 .../tests/simpletest/test/cookies_test.php | 0 .../tests/simpletest/test/detached_test.php | 0 .../tests/simpletest/test/dumper_test.php | 0 .../tests/simpletest/test/eclipse_test.php | 0 .../tests/simpletest/test/encoding_test.php | 0 .../tests/simpletest/test/errors_test.php | 0 .../tests/simpletest/test/exceptions_test.php | 0 .../simpletest/test/expectation_test.php | 0 .../tests/simpletest/test/form_test.php | 0 .../tests/simpletest/test/frames_test.php | 0 .../tests/simpletest/test/http_test.php | 0 .../tests/simpletest/test/interfaces_test.php | 0 .../test/interfaces_test_php5_1.php | 0 .../tests/simpletest/test/live_test.php | 0 .../simpletest/test/mock_objects_test.php | 0 .../tests/simpletest/test/page_test.php | 0 .../simpletest/test/parse_error_test.php | 0 .../tests/simpletest/test/parsing_test.php | 0 .../tests/simpletest/test/php_parser_test.php | 0 .../simpletest/test/reflection_php4_test.php | 0 .../simpletest/test/reflection_php5_test.php | 0 .../tests/simpletest/test/remote_test.php | 0 .../tests/simpletest/test/shell_test.php | 0 .../simpletest/test/shell_tester_test.php | 0 .../tests/simpletest/test/simpletest_test.php | 0 .../tests/simpletest/test/site/file.html | 0 .../tests/simpletest/test/socket_test.php | 0 .../test/support/collector/collectable.1 | 0 .../test/support/collector/collectable.2 | 0 .../test/support/empty_test_file.php | 0 .../simpletest/test/support/failing_test.php | 0 .../simpletest/test/support/latin1_sample | 0 .../simpletest/test/support/passing_test.php | 0 .../simpletest/test/support/spl_examples.php | 0 .../support/supplementary_upload_sample.txt | 0 .../tests/simpletest/test/support/test1.php | 0 .../simpletest/test/support/upload_sample.txt | 0 .../quail}/tests/simpletest/test/tag_test.php | 0 .../simpletest/test/test_with_parse_error.php | 0 .../simpletest/test/unit_tester_test.php | 0 .../tests/simpletest/test/unit_tests.php | 0 .../quail}/tests/simpletest/test/url_test.php | 0 .../tests/simpletest/test/user_agent_test.php | 0 .../tests/simpletest/test/visual_test.php | 0 .../tests/simpletest/test/web_tester_test.php | 0 .../quail}/tests/simpletest/test/xml_test.php | 0 .../quail}/tests/simpletest/test_case.php | 0 .../quail}/tests/simpletest/tidy_parser.php | 0 .../quail}/tests/simpletest/unit_tester.php | 0 {core => lib/quail}/tests/simpletest/url.php | 0 .../quail}/tests/simpletest/user_agent.php | 0 .../quail}/tests/simpletest/web_tester.php | 0 {core => lib/quail}/tests/simpletest/xml.php | 0 .../tests/testfiles/css/cssComplexTest1.css | 0 .../tests/testfiles/css/cssComplexTest1.html | 0 .../tests/testfiles/css/cssContrast.css | 0 .../tests/testfiles/css/cssContrast.html | 0 .../tests/testfiles/css/cssContrast2.css | 0 .../tests/testfiles/css/cssContrast2.html | 0 .../tests/testfiles/css/cssContrast3.css | 0 .../tests/testfiles/css/cssContrast3.html | 0 .../tests/testfiles/css/cssContrast4.css | 0 .../tests/testfiles/css/cssContrast4.html | 0 .../tests/testfiles/css/cssContrast5.html | 0 .../quail}/tests/testfiles/oac/1-1.html | 0 .../quail}/tests/testfiles/oac/1-2.html | 0 .../quail}/tests/testfiles/oac/10-1.html | 0 .../quail}/tests/testfiles/oac/10-2.html | 0 .../quail}/tests/testfiles/oac/100-1.html | 0 .../quail}/tests/testfiles/oac/100-2.html | 0 .../quail}/tests/testfiles/oac/102-1.html | 0 .../quail}/tests/testfiles/oac/102-2.html | 0 .../quail}/tests/testfiles/oac/103-1.html | 0 .../quail}/tests/testfiles/oac/103-2.html | 0 .../quail}/tests/testfiles/oac/104-1.html | 0 .../quail}/tests/testfiles/oac/104-2.html | 0 .../quail}/tests/testfiles/oac/105-1.html | 0 .../quail}/tests/testfiles/oac/105-2.html | 0 .../quail}/tests/testfiles/oac/106-1.html | 0 .../quail}/tests/testfiles/oac/106-2.html | 0 .../quail}/tests/testfiles/oac/107-1.html | 0 .../quail}/tests/testfiles/oac/107-2.html | 0 .../quail}/tests/testfiles/oac/108-1.html | 0 .../quail}/tests/testfiles/oac/108-2.html | 0 .../quail}/tests/testfiles/oac/109-1.html | 0 .../quail}/tests/testfiles/oac/109-2.html | 0 .../quail}/tests/testfiles/oac/11-1.html | 0 .../quail}/tests/testfiles/oac/11-2.html | 0 .../quail}/tests/testfiles/oac/110-1.html | 0 .../quail}/tests/testfiles/oac/110-2.html | 0 .../quail}/tests/testfiles/oac/111-1.html | 0 .../quail}/tests/testfiles/oac/111-2.html | 0 .../quail}/tests/testfiles/oac/111-3.html | 0 .../quail}/tests/testfiles/oac/112-1.html | 0 .../quail}/tests/testfiles/oac/112-2.html | 0 .../quail}/tests/testfiles/oac/113-1.html | 0 .../quail}/tests/testfiles/oac/113-2.html | 0 .../quail}/tests/testfiles/oac/114-1.html | 0 .../quail}/tests/testfiles/oac/114-2.html | 0 .../quail}/tests/testfiles/oac/114-3.html | 0 .../quail}/tests/testfiles/oac/115-1.html | 0 .../quail}/tests/testfiles/oac/115-2.html | 0 .../quail}/tests/testfiles/oac/116-1.html | 0 .../quail}/tests/testfiles/oac/116-2.html | 0 .../quail}/tests/testfiles/oac/117-1.html | 0 .../quail}/tests/testfiles/oac/117-2.html | 0 .../quail}/tests/testfiles/oac/118-1.html | 0 .../quail}/tests/testfiles/oac/118-2.html | 0 .../quail}/tests/testfiles/oac/118-3.html | 0 .../quail}/tests/testfiles/oac/118-4.html | 0 .../quail}/tests/testfiles/oac/119-1.html | 0 .../quail}/tests/testfiles/oac/119-2.html | 0 .../quail}/tests/testfiles/oac/119-3.html | 0 .../quail}/tests/testfiles/oac/119-4.html | 0 .../quail}/tests/testfiles/oac/12-1.html | 0 .../quail}/tests/testfiles/oac/12-2.html | 0 .../quail}/tests/testfiles/oac/120-1.html | 0 .../quail}/tests/testfiles/oac/120-2.html | 0 .../quail}/tests/testfiles/oac/120-3.html | 0 .../quail}/tests/testfiles/oac/120-4.html | 0 .../quail}/tests/testfiles/oac/121-1.html | 0 .../quail}/tests/testfiles/oac/121-2.html | 0 .../quail}/tests/testfiles/oac/121-3.html | 0 .../quail}/tests/testfiles/oac/121-4.html | 0 .../quail}/tests/testfiles/oac/122-1.html | 0 .../quail}/tests/testfiles/oac/122-2.html | 0 .../quail}/tests/testfiles/oac/123-1.html | 0 .../quail}/tests/testfiles/oac/123-2.html | 0 .../quail}/tests/testfiles/oac/124-1.html | 0 .../quail}/tests/testfiles/oac/124-2.html | 0 .../quail}/tests/testfiles/oac/125-1.html | 0 .../quail}/tests/testfiles/oac/125-2.html | 0 .../quail}/tests/testfiles/oac/126-1.html | 0 .../quail}/tests/testfiles/oac/126-2.html | 0 .../quail}/tests/testfiles/oac/127-1.html | 0 .../quail}/tests/testfiles/oac/127-2.html | 0 .../quail}/tests/testfiles/oac/128-1.html | 0 .../quail}/tests/testfiles/oac/128-2.html | 0 .../quail}/tests/testfiles/oac/129-1.html | 0 .../quail}/tests/testfiles/oac/129-2.html | 0 .../quail}/tests/testfiles/oac/13-1.html | 0 .../quail}/tests/testfiles/oac/13-2.html | 0 .../quail}/tests/testfiles/oac/13-3.html | 0 .../quail}/tests/testfiles/oac/131-1.html | 0 .../quail}/tests/testfiles/oac/131-2.html | 0 .../quail}/tests/testfiles/oac/132-1.html | 0 .../quail}/tests/testfiles/oac/132-2.html | 0 .../quail}/tests/testfiles/oac/133-1.html | 0 .../quail}/tests/testfiles/oac/133-2.html | 0 .../quail}/tests/testfiles/oac/134-1.html | 0 .../quail}/tests/testfiles/oac/134-2.html | 0 .../quail}/tests/testfiles/oac/135-1.html | 0 .../quail}/tests/testfiles/oac/135-2.html | 0 .../quail}/tests/testfiles/oac/135-2.xhtml | 0 .../quail}/tests/testfiles/oac/136-1.html | 0 .../quail}/tests/testfiles/oac/136-2.html | 0 .../quail}/tests/testfiles/oac/137-1.html | 0 .../quail}/tests/testfiles/oac/137-2.html | 0 .../quail}/tests/testfiles/oac/138-1.html | 0 .../quail}/tests/testfiles/oac/138-2.html | 0 .../quail}/tests/testfiles/oac/138-3.html | 0 .../quail}/tests/testfiles/oac/139-1.html | 0 .../quail}/tests/testfiles/oac/139-2.html | 0 .../quail}/tests/testfiles/oac/139-3.html | 0 .../quail}/tests/testfiles/oac/14-1.html | 0 .../quail}/tests/testfiles/oac/14-2.html | 0 .../quail}/tests/testfiles/oac/14-3.html | 0 .../quail}/tests/testfiles/oac/140-1.html | 0 .../quail}/tests/testfiles/oac/140-2.html | 0 .../quail}/tests/testfiles/oac/140-3.html | 0 .../quail}/tests/testfiles/oac/141-1.html | 0 .../quail}/tests/testfiles/oac/141-2.html | 0 .../quail}/tests/testfiles/oac/141-3.html | 0 .../quail}/tests/testfiles/oac/142-1.html | 0 .../quail}/tests/testfiles/oac/142-2.html | 0 .../quail}/tests/testfiles/oac/142-3.html | 0 .../quail}/tests/testfiles/oac/143-1.html | 0 .../quail}/tests/testfiles/oac/143-2.html | 0 .../quail}/tests/testfiles/oac/144-1.html | 0 .../quail}/tests/testfiles/oac/144-2.html | 0 .../quail}/tests/testfiles/oac/145-1.html | 0 .../quail}/tests/testfiles/oac/145-2.html | 0 .../quail}/tests/testfiles/oac/145-3.html | 0 .../quail}/tests/testfiles/oac/145-4.html | 0 .../quail}/tests/testfiles/oac/145-5.html | 0 .../quail}/tests/testfiles/oac/145-6.html | 0 .../quail}/tests/testfiles/oac/146-1.html | 0 .../quail}/tests/testfiles/oac/146-2.html | 0 .../quail}/tests/testfiles/oac/147-1.html | 0 .../quail}/tests/testfiles/oac/147-2.html | 0 .../quail}/tests/testfiles/oac/147-3.html | 0 .../quail}/tests/testfiles/oac/147-4.html | 0 .../quail}/tests/testfiles/oac/148-1.html | 0 .../quail}/tests/testfiles/oac/148-2.html | 0 .../quail}/tests/testfiles/oac/15-1.html | 0 .../quail}/tests/testfiles/oac/15-2.html | 0 .../quail}/tests/testfiles/oac/150-1.html | 0 .../quail}/tests/testfiles/oac/150-2.html | 0 .../quail}/tests/testfiles/oac/151-1.html | 0 .../quail}/tests/testfiles/oac/151-2.html | 0 .../quail}/tests/testfiles/oac/151-3.html | 0 .../quail}/tests/testfiles/oac/152-1.html | 0 .../quail}/tests/testfiles/oac/152-2.html | 0 .../quail}/tests/testfiles/oac/152-3.html | 0 .../quail}/tests/testfiles/oac/153-1.html | 0 .../quail}/tests/testfiles/oac/153-2.html | 0 .../quail}/tests/testfiles/oac/154-1.html | 0 .../quail}/tests/testfiles/oac/154-2.html | 0 .../quail}/tests/testfiles/oac/159-1.html | 0 .../quail}/tests/testfiles/oac/159-2.html | 0 .../quail}/tests/testfiles/oac/16-1.html | 0 .../quail}/tests/testfiles/oac/16-2.html | 0 .../quail}/tests/testfiles/oac/16-3.html | 0 .../quail}/tests/testfiles/oac/16-4.html | 0 .../quail}/tests/testfiles/oac/160-1.html | 0 .../quail}/tests/testfiles/oac/160-2.html | 0 .../quail}/tests/testfiles/oac/161-1.html | 0 .../quail}/tests/testfiles/oac/161-2.html | 0 .../quail}/tests/testfiles/oac/162-1.html | 0 .../quail}/tests/testfiles/oac/162-2.html | 0 .../quail}/tests/testfiles/oac/163-1.html | 0 .../quail}/tests/testfiles/oac/163-2.html | 0 .../quail}/tests/testfiles/oac/163-3.html | 0 .../quail}/tests/testfiles/oac/164-1.html | 0 .../quail}/tests/testfiles/oac/164-2.html | 0 .../quail}/tests/testfiles/oac/165-1.html | 0 .../quail}/tests/testfiles/oac/165-2.html | 0 .../quail}/tests/testfiles/oac/166-1.html | 0 .../quail}/tests/testfiles/oac/166-2.html | 0 .../quail}/tests/testfiles/oac/167-1.html | 0 .../quail}/tests/testfiles/oac/167-2.html | 0 .../quail}/tests/testfiles/oac/168-1.html | 0 .../quail}/tests/testfiles/oac/168-2.html | 0 .../quail}/tests/testfiles/oac/168-3.html | 0 .../quail}/tests/testfiles/oac/168-4.html | 0 .../quail}/tests/testfiles/oac/169-1.html | 0 .../quail}/tests/testfiles/oac/169-2.html | 0 .../quail}/tests/testfiles/oac/17-1.html | 0 .../quail}/tests/testfiles/oac/17-10.html | 0 .../quail}/tests/testfiles/oac/17-11.html | 0 .../quail}/tests/testfiles/oac/17-12.html | 0 .../quail}/tests/testfiles/oac/17-2.html | 0 .../quail}/tests/testfiles/oac/17-3.html | 0 .../quail}/tests/testfiles/oac/17-4.html | 0 .../quail}/tests/testfiles/oac/17-5.html | 0 .../quail}/tests/testfiles/oac/17-6.html | 0 .../quail}/tests/testfiles/oac/17-7.html | 0 .../quail}/tests/testfiles/oac/17-8.html | 0 .../quail}/tests/testfiles/oac/17-9.html | 0 .../quail}/tests/testfiles/oac/173-1.html | 0 .../quail}/tests/testfiles/oac/173-2.html | 0 .../quail}/tests/testfiles/oac/173-3.html | 0 .../quail}/tests/testfiles/oac/174-1.html | 0 .../quail}/tests/testfiles/oac/174-2.html | 0 .../quail}/tests/testfiles/oac/174-3.html | 0 .../quail}/tests/testfiles/oac/174-4.html | 0 .../quail}/tests/testfiles/oac/174-5.html | 0 .../quail}/tests/testfiles/oac/175-1.html | 0 .../quail}/tests/testfiles/oac/175-2.html | 0 .../quail}/tests/testfiles/oac/176-1.html | 0 .../quail}/tests/testfiles/oac/176-2.html | 0 .../quail}/tests/testfiles/oac/177-1.html | 0 .../quail}/tests/testfiles/oac/177-2.html | 0 .../quail}/tests/testfiles/oac/178-1.html | 0 .../quail}/tests/testfiles/oac/178-2.html | 0 .../quail}/tests/testfiles/oac/178-3.html | 0 .../quail}/tests/testfiles/oac/18-1.html | 0 .../quail}/tests/testfiles/oac/18-2.html | 0 .../quail}/tests/testfiles/oac/18-3.html | 0 .../quail}/tests/testfiles/oac/18-4.html | 0 .../quail}/tests/testfiles/oac/180-1.html | 0 .../quail}/tests/testfiles/oac/180-2.html | 0 .../quail}/tests/testfiles/oac/181-1.html | 0 .../quail}/tests/testfiles/oac/181-2.html | 0 .../quail}/tests/testfiles/oac/182-1.html | 0 .../quail}/tests/testfiles/oac/182-2.html | 0 .../quail}/tests/testfiles/oac/183-1.html | 0 .../quail}/tests/testfiles/oac/183-2.html | 0 .../quail}/tests/testfiles/oac/184-1.html | 0 .../quail}/tests/testfiles/oac/184-2.html | 0 .../quail}/tests/testfiles/oac/185-1.html | 0 .../quail}/tests/testfiles/oac/185-2.html | 0 .../quail}/tests/testfiles/oac/186-1.html | 0 .../quail}/tests/testfiles/oac/186-2.html | 0 .../quail}/tests/testfiles/oac/187-1.html | 0 .../quail}/tests/testfiles/oac/187-2.html | 0 .../quail}/tests/testfiles/oac/188-1.html | 0 .../quail}/tests/testfiles/oac/188-2.html | 0 .../quail}/tests/testfiles/oac/188-3.html | 0 .../quail}/tests/testfiles/oac/188-4.html | 0 .../quail}/tests/testfiles/oac/188-5.html | 0 .../quail}/tests/testfiles/oac/189-1.html | 0 .../quail}/tests/testfiles/oac/189-2.html | 0 .../quail}/tests/testfiles/oac/19-1.html | 0 .../quail}/tests/testfiles/oac/19-2.html | 0 .../quail}/tests/testfiles/oac/19-3.html | 0 .../quail}/tests/testfiles/oac/190-1.html | 0 .../quail}/tests/testfiles/oac/190-2.html | 0 .../quail}/tests/testfiles/oac/191-1.html | 0 .../quail}/tests/testfiles/oac/191-2.html | 0 .../quail}/tests/testfiles/oac/192-1.html | 0 .../quail}/tests/testfiles/oac/192-2.html | 0 .../quail}/tests/testfiles/oac/193-1.html | 0 .../quail}/tests/testfiles/oac/193-2.html | 0 .../quail}/tests/testfiles/oac/194-1.html | 0 .../quail}/tests/testfiles/oac/194-2.html | 0 .../quail}/tests/testfiles/oac/195-1.html | 0 .../quail}/tests/testfiles/oac/195-2.html | 0 .../quail}/tests/testfiles/oac/195-3.html | 0 .../quail}/tests/testfiles/oac/195-4.html | 0 .../quail}/tests/testfiles/oac/196-1.html | 0 .../quail}/tests/testfiles/oac/196-2.html | 0 .../quail}/tests/testfiles/oac/197-1.html | 0 .../quail}/tests/testfiles/oac/197-2.html | 0 .../quail}/tests/testfiles/oac/197-3.html | 0 .../quail}/tests/testfiles/oac/197-4.html | 0 .../quail}/tests/testfiles/oac/197-5.html | 0 .../quail}/tests/testfiles/oac/198-1.html | 0 .../quail}/tests/testfiles/oac/198-2.html | 0 .../quail}/tests/testfiles/oac/199-1.html | 0 .../quail}/tests/testfiles/oac/199-2.html | 0 .../quail}/tests/testfiles/oac/2-1.html | 0 .../quail}/tests/testfiles/oac/2-2.html | 0 .../quail}/tests/testfiles/oac/20-1.html | 0 .../quail}/tests/testfiles/oac/20-2.html | 0 .../quail}/tests/testfiles/oac/20-3.html | 0 .../quail}/tests/testfiles/oac/20-4.html | 0 .../quail}/tests/testfiles/oac/20-5.html | 0 .../quail}/tests/testfiles/oac/20-6.html | 0 .../quail}/tests/testfiles/oac/200-1.html | 0 .../quail}/tests/testfiles/oac/200-2.html | 0 .../quail}/tests/testfiles/oac/201-1.html | 0 .../quail}/tests/testfiles/oac/201-2.html | 0 .../quail}/tests/testfiles/oac/202-1.html | 0 .../quail}/tests/testfiles/oac/202-2.html | 0 .../quail}/tests/testfiles/oac/203-1.html | 0 .../quail}/tests/testfiles/oac/203-2.html | 0 .../quail}/tests/testfiles/oac/204-1.html | 0 .../quail}/tests/testfiles/oac/204-2.html | 0 .../quail}/tests/testfiles/oac/204-3.html | 0 .../quail}/tests/testfiles/oac/204-4.html | 0 .../quail}/tests/testfiles/oac/204-5.html | 0 .../quail}/tests/testfiles/oac/204-6.html | 0 .../quail}/tests/testfiles/oac/205-1.html | 0 .../quail}/tests/testfiles/oac/205-2.html | 0 .../quail}/tests/testfiles/oac/205-3.html | 0 .../quail}/tests/testfiles/oac/205-4.html | 0 .../quail}/tests/testfiles/oac/205-5.html | 0 .../quail}/tests/testfiles/oac/205-6.html | 0 .../quail}/tests/testfiles/oac/206-1.html | 0 .../quail}/tests/testfiles/oac/206-2.html | 0 .../quail}/tests/testfiles/oac/206-3.html | 0 .../quail}/tests/testfiles/oac/206-4.html | 0 .../quail}/tests/testfiles/oac/206-5.html | 0 .../quail}/tests/testfiles/oac/206-6.html | 0 .../quail}/tests/testfiles/oac/207-1.html | 0 .../quail}/tests/testfiles/oac/207-2.html | 0 .../quail}/tests/testfiles/oac/207-3.html | 0 .../quail}/tests/testfiles/oac/207-4.html | 0 .../quail}/tests/testfiles/oac/207-5.html | 0 .../quail}/tests/testfiles/oac/207-6.html | 0 .../quail}/tests/testfiles/oac/208-1.html | 0 .../quail}/tests/testfiles/oac/208-2.html | 0 .../quail}/tests/testfiles/oac/208-3.html | 0 .../quail}/tests/testfiles/oac/208-4.html | 0 .../quail}/tests/testfiles/oac/208-5.html | 0 .../quail}/tests/testfiles/oac/208-6.html | 0 .../quail}/tests/testfiles/oac/208-7.html | 0 .../quail}/tests/testfiles/oac/208-8.html | 0 .../quail}/tests/testfiles/oac/208-9.html | 0 .../quail}/tests/testfiles/oac/209-1.html | 0 .../quail}/tests/testfiles/oac/209-2.html | 0 .../quail}/tests/testfiles/oac/21-1.html | 0 .../quail}/tests/testfiles/oac/21-2.html | 0 .../quail}/tests/testfiles/oac/211-1.html | 0 .../quail}/tests/testfiles/oac/211-2.html | 0 .../quail}/tests/testfiles/oac/212-1.html | 0 .../quail}/tests/testfiles/oac/212-2.html | 0 .../quail}/tests/testfiles/oac/212-3.html | 0 .../quail}/tests/testfiles/oac/212-4.html | 0 .../quail}/tests/testfiles/oac/212-5.html | 0 .../quail}/tests/testfiles/oac/212-6.html | 0 .../quail}/tests/testfiles/oac/213-1.html | 0 .../quail}/tests/testfiles/oac/213-2.html | 0 .../quail}/tests/testfiles/oac/213-3.html | 0 .../quail}/tests/testfiles/oac/213-4.html | 0 .../quail}/tests/testfiles/oac/213-5.html | 0 .../quail}/tests/testfiles/oac/213-6.html | 0 .../quail}/tests/testfiles/oac/213-7.html | 0 .../quail}/tests/testfiles/oac/214-1.html | 0 .../quail}/tests/testfiles/oac/214-2.html | 0 .../quail}/tests/testfiles/oac/214-3.html | 0 .../quail}/tests/testfiles/oac/214-4.html | 0 .../quail}/tests/testfiles/oac/214-5.html | 0 .../quail}/tests/testfiles/oac/214-6.html | 0 .../quail}/tests/testfiles/oac/216-1.html | 0 .../quail}/tests/testfiles/oac/216-2.html | 0 .../quail}/tests/testfiles/oac/216-3.html | 0 .../quail}/tests/testfiles/oac/216-4.html | 0 .../quail}/tests/testfiles/oac/216-5.html | 0 .../quail}/tests/testfiles/oac/216-6.html | 0 .../quail}/tests/testfiles/oac/217-1.html | 0 .../quail}/tests/testfiles/oac/217-2.html | 0 .../quail}/tests/testfiles/oac/217-3.html | 0 .../quail}/tests/testfiles/oac/217-4.html | 0 .../quail}/tests/testfiles/oac/217-5.html | 0 .../quail}/tests/testfiles/oac/217-6.html | 0 .../quail}/tests/testfiles/oac/218-1.html | 0 .../quail}/tests/testfiles/oac/218-2.html | 0 .../quail}/tests/testfiles/oac/218-3.html | 0 .../quail}/tests/testfiles/oac/218-4.html | 0 .../quail}/tests/testfiles/oac/218-5.html | 0 .../quail}/tests/testfiles/oac/218-6.html | 0 .../quail}/tests/testfiles/oac/219-1.html | 0 .../quail}/tests/testfiles/oac/219-2.html | 0 .../quail}/tests/testfiles/oac/219-3.html | 0 .../quail}/tests/testfiles/oac/219-4.html | 0 .../quail}/tests/testfiles/oac/219-5.html | 0 .../quail}/tests/testfiles/oac/219-6.html | 0 .../quail}/tests/testfiles/oac/22-1.html | 0 .../quail}/tests/testfiles/oac/22-2.html | 0 .../quail}/tests/testfiles/oac/220-1.html | 0 .../quail}/tests/testfiles/oac/220-2.html | 0 .../quail}/tests/testfiles/oac/220-3.html | 0 .../quail}/tests/testfiles/oac/220-4.html | 0 .../quail}/tests/testfiles/oac/220-5.html | 0 .../quail}/tests/testfiles/oac/220-6.html | 0 .../quail}/tests/testfiles/oac/221-1.html | 0 .../quail}/tests/testfiles/oac/221-2.html | 0 .../quail}/tests/testfiles/oac/221-3.html | 0 .../quail}/tests/testfiles/oac/221-4.html | 0 .../quail}/tests/testfiles/oac/221-5.html | 0 .../quail}/tests/testfiles/oac/221-6.html | 0 .../quail}/tests/testfiles/oac/222-1.html | 0 .../quail}/tests/testfiles/oac/222-2.html | 0 .../quail}/tests/testfiles/oac/222-3.html | 0 .../quail}/tests/testfiles/oac/223-1.html | 0 .../quail}/tests/testfiles/oac/223-2.html | 0 .../quail}/tests/testfiles/oac/223-3.html | 0 .../quail}/tests/testfiles/oac/224-1.html | 0 .../quail}/tests/testfiles/oac/224-2.html | 0 .../quail}/tests/testfiles/oac/224-3.html | 0 .../quail}/tests/testfiles/oac/225-1.html | 0 .../quail}/tests/testfiles/oac/225-2.html | 0 .../quail}/tests/testfiles/oac/225-3.html | 0 .../quail}/tests/testfiles/oac/225-4.html | 0 .../quail}/tests/testfiles/oac/225-5.html | 0 .../quail}/tests/testfiles/oac/226-1.html | 0 .../quail}/tests/testfiles/oac/226-2.html | 0 .../quail}/tests/testfiles/oac/226-3.html | 0 .../quail}/tests/testfiles/oac/227-1.html | 0 .../quail}/tests/testfiles/oac/227-2.html | 0 .../quail}/tests/testfiles/oac/227-3.html | 0 .../quail}/tests/testfiles/oac/228-1.html | 0 .../quail}/tests/testfiles/oac/228-2.html | 0 .../quail}/tests/testfiles/oac/228-3.html | 0 .../quail}/tests/testfiles/oac/229-1.html | 0 .../quail}/tests/testfiles/oac/229-2.html | 0 .../quail}/tests/testfiles/oac/229-3.html | 0 .../quail}/tests/testfiles/oac/23-1.html | 0 .../quail}/tests/testfiles/oac/23-2.html | 0 .../quail}/tests/testfiles/oac/23-3.html | 0 .../quail}/tests/testfiles/oac/230-1.html | 0 .../quail}/tests/testfiles/oac/230-2.html | 0 .../quail}/tests/testfiles/oac/231-1.html | 0 .../quail}/tests/testfiles/oac/231-2.html | 0 .../quail}/tests/testfiles/oac/232-1.html | 0 .../quail}/tests/testfiles/oac/232-2.html | 0 .../quail}/tests/testfiles/oac/233-1.html | 0 .../quail}/tests/testfiles/oac/233-2.html | 0 .../quail}/tests/testfiles/oac/234-1.html | 0 .../quail}/tests/testfiles/oac/234-2.html | 0 .../quail}/tests/testfiles/oac/235-1.html | 0 .../quail}/tests/testfiles/oac/235-2.html | 0 .../quail}/tests/testfiles/oac/236-1.html | 0 .../quail}/tests/testfiles/oac/236-2.html | 0 .../quail}/tests/testfiles/oac/236-3.html | 0 .../quail}/tests/testfiles/oac/237-1.html | 0 .../quail}/tests/testfiles/oac/237-2.html | 0 .../quail}/tests/testfiles/oac/238-1.html | 0 .../quail}/tests/testfiles/oac/238-2.html | 0 .../quail}/tests/testfiles/oac/238-3.html | 0 .../quail}/tests/testfiles/oac/239-1.html | 0 .../quail}/tests/testfiles/oac/239-2.html | 0 .../quail}/tests/testfiles/oac/239-3.html | 0 .../quail}/tests/testfiles/oac/24-1.html | 0 .../quail}/tests/testfiles/oac/24-2.html | 0 .../quail}/tests/testfiles/oac/240-1.html | 0 .../quail}/tests/testfiles/oac/240-2.html | 0 .../quail}/tests/testfiles/oac/241-1.html | 0 .../quail}/tests/testfiles/oac/241-2.html | 0 .../quail}/tests/testfiles/oac/242-1.html | 0 .../quail}/tests/testfiles/oac/242-2.html | 0 .../quail}/tests/testfiles/oac/243-1.html | 0 .../quail}/tests/testfiles/oac/243-2.html | 0 .../quail}/tests/testfiles/oac/244-1.html | 0 .../quail}/tests/testfiles/oac/244-2.html | 0 .../quail}/tests/testfiles/oac/245-1.html | 0 .../quail}/tests/testfiles/oac/245-2.html | 0 .../quail}/tests/testfiles/oac/246-1.html | 0 .../quail}/tests/testfiles/oac/246-2.html | 0 .../quail}/tests/testfiles/oac/246-3.html | 0 .../quail}/tests/testfiles/oac/246-4.html | 0 .../quail}/tests/testfiles/oac/246-5.html | 0 .../quail}/tests/testfiles/oac/247-1.html | 0 .../quail}/tests/testfiles/oac/247-2.html | 0 .../quail}/tests/testfiles/oac/248-1.html | 0 .../quail}/tests/testfiles/oac/248-2.html | 0 .../quail}/tests/testfiles/oac/248-3.html | 0 .../quail}/tests/testfiles/oac/249-1.html | 0 .../quail}/tests/testfiles/oac/249-2.html | 0 .../quail}/tests/testfiles/oac/25-1.html | 0 .../quail}/tests/testfiles/oac/25-2.html | 0 .../quail}/tests/testfiles/oac/250-1.html | 0 .../quail}/tests/testfiles/oac/250-2.html | 0 .../quail}/tests/testfiles/oac/251-1.html | 0 .../quail}/tests/testfiles/oac/251-2.html | 0 .../quail}/tests/testfiles/oac/252-1.html | 0 .../quail}/tests/testfiles/oac/252-2.html | 0 .../quail}/tests/testfiles/oac/252-3.html | 0 .../quail}/tests/testfiles/oac/253-1.html | 0 .../quail}/tests/testfiles/oac/253-2.html | 0 .../quail}/tests/testfiles/oac/254-1.html | 0 .../quail}/tests/testfiles/oac/254-2.html | 0 .../quail}/tests/testfiles/oac/254-3.html | 0 .../quail}/tests/testfiles/oac/255-1.html | 0 .../quail}/tests/testfiles/oac/255-2.html | 0 .../quail}/tests/testfiles/oac/255-3.html | 0 .../quail}/tests/testfiles/oac/256-1.html | 0 .../quail}/tests/testfiles/oac/256-2.html | 0 .../quail}/tests/testfiles/oac/256-3.html | 0 .../quail}/tests/testfiles/oac/257-1.html | 0 .../quail}/tests/testfiles/oac/257-2.html | 0 .../quail}/tests/testfiles/oac/257-3.html | 0 .../quail}/tests/testfiles/oac/258-1.html | 0 .../quail}/tests/testfiles/oac/258-2.html | 0 .../quail}/tests/testfiles/oac/259-1.html | 0 .../quail}/tests/testfiles/oac/259-2.html | 0 .../quail}/tests/testfiles/oac/26-1.html | 0 .../quail}/tests/testfiles/oac/26-2.html | 0 .../quail}/tests/testfiles/oac/260-1.html | 0 .../quail}/tests/testfiles/oac/260-2.html | 0 .../quail}/tests/testfiles/oac/261-1.html | 0 .../quail}/tests/testfiles/oac/261-2.html | 0 .../quail}/tests/testfiles/oac/261-3.html | 0 .../quail}/tests/testfiles/oac/262-1.html | 0 .../quail}/tests/testfiles/oac/262-2.html | 0 .../quail}/tests/testfiles/oac/263-1.html | 0 .../quail}/tests/testfiles/oac/263-2.html | 0 .../quail}/tests/testfiles/oac/264-1.html | 0 .../quail}/tests/testfiles/oac/264-2.html | 0 .../quail}/tests/testfiles/oac/264-3.html | 0 .../quail}/tests/testfiles/oac/265-1.html | 0 .../quail}/tests/testfiles/oac/265-2.html | 0 .../quail}/tests/testfiles/oac/266-1.html | 0 .../quail}/tests/testfiles/oac/266-2.html | 0 .../quail}/tests/testfiles/oac/267-1.html | 0 .../quail}/tests/testfiles/oac/267-2.html | 0 .../quail}/tests/testfiles/oac/268-1.html | 0 .../quail}/tests/testfiles/oac/268-2.html | 0 .../quail}/tests/testfiles/oac/269-1.html | 0 .../quail}/tests/testfiles/oac/269-2.html | 0 .../quail}/tests/testfiles/oac/27-1.html | 0 .../quail}/tests/testfiles/oac/27-2.html | 0 .../quail}/tests/testfiles/oac/270-1.html | 0 .../quail}/tests/testfiles/oac/270-2.html | 0 .../quail}/tests/testfiles/oac/271-1.html | 0 .../quail}/tests/testfiles/oac/271-2.html | 0 .../quail}/tests/testfiles/oac/272-1.html | 0 .../quail}/tests/testfiles/oac/272-2.html | 0 .../quail}/tests/testfiles/oac/273-1.html | 0 .../quail}/tests/testfiles/oac/273-2.html | 0 .../quail}/tests/testfiles/oac/273-3.html | 0 .../quail}/tests/testfiles/oac/273-4.html | 0 .../quail}/tests/testfiles/oac/274-1.html | 0 .../quail}/tests/testfiles/oac/274-2.html | 0 .../quail}/tests/testfiles/oac/274-3.html | 0 .../quail}/tests/testfiles/oac/274-4.html | 0 .../quail}/tests/testfiles/oac/274-5.html | 0 .../quail}/tests/testfiles/oac/274-6.html | 0 .../quail}/tests/testfiles/oac/274-7.html | 0 .../quail}/tests/testfiles/oac/275-1.html | 0 .../quail}/tests/testfiles/oac/275-2.html | 0 .../quail}/tests/testfiles/oac/276-1.html | 0 .../quail}/tests/testfiles/oac/276-2.html | 0 .../quail}/tests/testfiles/oac/276-3.html | 0 .../quail}/tests/testfiles/oac/28-1.html | 0 .../quail}/tests/testfiles/oac/28-2.html | 0 .../quail}/tests/testfiles/oac/29-1.html | 0 .../quail}/tests/testfiles/oac/29-2.html | 0 .../quail}/tests/testfiles/oac/3-1.html | 0 .../quail}/tests/testfiles/oac/3-2.html | 0 .../quail}/tests/testfiles/oac/30-1.html | 0 .../quail}/tests/testfiles/oac/30-2.html | 0 .../quail}/tests/testfiles/oac/31-1.html | 0 .../quail}/tests/testfiles/oac/31-2.html | 0 .../quail}/tests/testfiles/oac/32-1.html | 0 .../quail}/tests/testfiles/oac/32-2.html | 0 .../quail}/tests/testfiles/oac/32-3.html | 0 .../quail}/tests/testfiles/oac/33-1.html | 0 .../quail}/tests/testfiles/oac/33-10.html | 0 .../quail}/tests/testfiles/oac/33-2.html | 0 .../quail}/tests/testfiles/oac/33-3.html | 0 .../quail}/tests/testfiles/oac/33-4.html | 0 .../quail}/tests/testfiles/oac/33-5.html | 0 .../quail}/tests/testfiles/oac/33-6.html | 0 .../quail}/tests/testfiles/oac/33-7.html | 0 .../quail}/tests/testfiles/oac/33-8.html | 0 .../quail}/tests/testfiles/oac/33-9.html | 0 .../quail}/tests/testfiles/oac/34-1.html | 0 .../quail}/tests/testfiles/oac/34-2.html | 0 .../quail}/tests/testfiles/oac/35-1.html | 0 .../quail}/tests/testfiles/oac/35-2.html | 0 .../quail}/tests/testfiles/oac/36-1.html | 0 .../quail}/tests/testfiles/oac/36-2.html | 0 .../quail}/tests/testfiles/oac/37-1.html | 0 .../quail}/tests/testfiles/oac/37-2.html | 0 .../quail}/tests/testfiles/oac/38-1.html | 0 .../quail}/tests/testfiles/oac/38-2.html | 0 .../quail}/tests/testfiles/oac/39-1.html | 0 .../quail}/tests/testfiles/oac/39-2.html | 0 .../quail}/tests/testfiles/oac/4-1.html | 0 .../quail}/tests/testfiles/oac/4-2.html | 0 .../quail}/tests/testfiles/oac/40-1.html | 0 .../quail}/tests/testfiles/oac/40-2.html | 0 .../quail}/tests/testfiles/oac/41-1.html | 0 .../quail}/tests/testfiles/oac/41-2.html | 0 .../quail}/tests/testfiles/oac/42-1.html | 0 .../quail}/tests/testfiles/oac/42-2.html | 0 .../quail}/tests/testfiles/oac/43-1.html | 0 .../quail}/tests/testfiles/oac/43-2.html | 0 .../quail}/tests/testfiles/oac/44-1.html | 0 .../quail}/tests/testfiles/oac/44-2.html | 0 .../quail}/tests/testfiles/oac/45-1.html | 0 .../quail}/tests/testfiles/oac/45-2.html | 0 .../quail}/tests/testfiles/oac/46-1.html | 0 .../quail}/tests/testfiles/oac/46-2.html | 0 .../quail}/tests/testfiles/oac/47-1.html | 0 .../quail}/tests/testfiles/oac/47-2.html | 0 .../quail}/tests/testfiles/oac/48-1.html | 0 .../quail}/tests/testfiles/oac/48-2.html | 0 .../quail}/tests/testfiles/oac/49-1.html | 0 .../quail}/tests/testfiles/oac/49-2.html | 0 .../quail}/tests/testfiles/oac/5-1.html | 0 .../quail}/tests/testfiles/oac/5-2.html | 0 .../quail}/tests/testfiles/oac/5-3.html | 0 .../quail}/tests/testfiles/oac/50-1.html | 0 .../quail}/tests/testfiles/oac/50-2.html | 0 .../quail}/tests/testfiles/oac/51-1.html | 0 .../quail}/tests/testfiles/oac/51-2.html | 0 .../quail}/tests/testfiles/oac/51-3.html | 0 .../quail}/tests/testfiles/oac/52-1.html | 0 .../quail}/tests/testfiles/oac/52-2.html | 0 .../quail}/tests/testfiles/oac/53-1.html | 0 .../quail}/tests/testfiles/oac/53-2.html | 0 .../quail}/tests/testfiles/oac/53-3.html | 0 .../quail}/tests/testfiles/oac/53-4.html | 0 .../quail}/tests/testfiles/oac/53-5.html | 0 .../quail}/tests/testfiles/oac/54-1.html | 0 .../quail}/tests/testfiles/oac/54-2.html | 0 .../quail}/tests/testfiles/oac/55-1.html | 0 .../quail}/tests/testfiles/oac/55-2.html | 0 .../quail}/tests/testfiles/oac/56-1.html | 0 .../quail}/tests/testfiles/oac/56-2.html | 0 .../quail}/tests/testfiles/oac/56-3.html | 0 .../quail}/tests/testfiles/oac/56-4.html | 0 .../quail}/tests/testfiles/oac/57-1.html | 0 .../quail}/tests/testfiles/oac/57-2.html | 0 .../quail}/tests/testfiles/oac/57-3.html | 0 .../quail}/tests/testfiles/oac/57-4.html | 0 .../quail}/tests/testfiles/oac/58-1.html | 0 .../quail}/tests/testfiles/oac/58-2.html | 0 .../quail}/tests/testfiles/oac/59-1.html | 0 .../quail}/tests/testfiles/oac/59-2.html | 0 .../quail}/tests/testfiles/oac/6-1.html | 0 .../quail}/tests/testfiles/oac/6-2.html | 0 .../quail}/tests/testfiles/oac/6-3.html | 0 .../quail}/tests/testfiles/oac/6-4.html | 0 .../quail}/tests/testfiles/oac/6-5.html | 0 .../quail}/tests/testfiles/oac/6-6.html | 0 .../quail}/tests/testfiles/oac/6-7.html | 0 .../quail}/tests/testfiles/oac/60-1.html | 0 .../quail}/tests/testfiles/oac/60-2.html | 0 .../quail}/tests/testfiles/oac/61-1.html | 0 .../quail}/tests/testfiles/oac/61-2.html | 0 .../quail}/tests/testfiles/oac/62-1.html | 0 .../quail}/tests/testfiles/oac/62-2.html | 0 .../quail}/tests/testfiles/oac/62-3.html | 0 .../quail}/tests/testfiles/oac/62-4.html | 0 .../quail}/tests/testfiles/oac/63-1.html | 0 .../quail}/tests/testfiles/oac/63-2.html | 0 .../quail}/tests/testfiles/oac/64-1.html | 0 .../quail}/tests/testfiles/oac/64-2.html | 0 .../quail}/tests/testfiles/oac/65-1.html | 0 .../quail}/tests/testfiles/oac/65-2.html | 0 .../quail}/tests/testfiles/oac/65-3.html | 0 .../quail}/tests/testfiles/oac/66-1.html | 0 .../quail}/tests/testfiles/oac/66-10.html | 0 .../quail}/tests/testfiles/oac/66-11.html | 0 .../quail}/tests/testfiles/oac/66-12.html | 0 .../quail}/tests/testfiles/oac/66-2.html | 0 .../quail}/tests/testfiles/oac/66-3.html | 0 .../quail}/tests/testfiles/oac/66-4.html | 0 .../quail}/tests/testfiles/oac/66-5.html | 0 .../quail}/tests/testfiles/oac/66-6.html | 0 .../quail}/tests/testfiles/oac/66-7.html | 0 .../quail}/tests/testfiles/oac/66-8.html | 0 .../quail}/tests/testfiles/oac/66-9.html | 0 .../quail}/tests/testfiles/oac/68-1.html | 0 .../quail}/tests/testfiles/oac/68-2.html | 0 .../quail}/tests/testfiles/oac/68-3.html | 0 .../quail}/tests/testfiles/oac/68-4.html | 0 .../quail}/tests/testfiles/oac/69-1.html | 0 .../quail}/tests/testfiles/oac/69-2.html | 0 .../quail}/tests/testfiles/oac/7-1.html | 0 .../quail}/tests/testfiles/oac/7-2.html | 0 .../quail}/tests/testfiles/oac/70-1.html | 0 .../quail}/tests/testfiles/oac/70-2.html | 0 .../quail}/tests/testfiles/oac/71-1.html | 0 .../quail}/tests/testfiles/oac/71-2.html | 0 .../quail}/tests/testfiles/oac/72-1.html | 0 .../quail}/tests/testfiles/oac/72-2.html | 0 .../quail}/tests/testfiles/oac/72-3.html | 0 .../quail}/tests/testfiles/oac/73-1.html | 0 .../quail}/tests/testfiles/oac/73-2.html | 0 .../quail}/tests/testfiles/oac/74-1.html | 0 .../quail}/tests/testfiles/oac/74-2.html | 0 .../quail}/tests/testfiles/oac/75-1.html | 0 .../quail}/tests/testfiles/oac/75-2.html | 0 .../quail}/tests/testfiles/oac/76-1.html | 0 .../quail}/tests/testfiles/oac/76-2.html | 0 .../quail}/tests/testfiles/oac/77-1.html | 0 .../quail}/tests/testfiles/oac/77-2.html | 0 .../quail}/tests/testfiles/oac/78-1.html | 0 .../quail}/tests/testfiles/oac/78-2.html | 0 .../quail}/tests/testfiles/oac/79-1.html | 0 .../quail}/tests/testfiles/oac/79-2.html | 0 .../quail}/tests/testfiles/oac/79-3.html | 0 .../quail}/tests/testfiles/oac/8-1.html | 0 .../quail}/tests/testfiles/oac/8-2.html | 0 .../quail}/tests/testfiles/oac/8-3.html | 0 .../quail}/tests/testfiles/oac/8-4.html | 0 .../quail}/tests/testfiles/oac/8-5.html | 0 .../quail}/tests/testfiles/oac/80-1.html | 0 .../quail}/tests/testfiles/oac/80-2.html | 0 .../quail}/tests/testfiles/oac/80-3.html | 0 .../quail}/tests/testfiles/oac/80-4.html | 0 .../quail}/tests/testfiles/oac/81-1.html | 0 .../quail}/tests/testfiles/oac/81-2.html | 0 .../quail}/tests/testfiles/oac/82-1.html | 0 .../quail}/tests/testfiles/oac/82-2.html | 0 .../quail}/tests/testfiles/oac/82-3.html | 0 .../quail}/tests/testfiles/oac/82-4.html | 0 .../quail}/tests/testfiles/oac/82-5.html | 0 .../quail}/tests/testfiles/oac/82-6.html | 0 .../quail}/tests/testfiles/oac/82-7.html | 0 .../quail}/tests/testfiles/oac/82-8.html | 0 .../quail}/tests/testfiles/oac/82-9.html | 0 .../quail}/tests/testfiles/oac/86-1.html | 0 .../quail}/tests/testfiles/oac/86-2.html | 0 .../quail}/tests/testfiles/oac/87-1.html | 0 .../quail}/tests/testfiles/oac/87-2.html | 0 .../quail}/tests/testfiles/oac/88-1.html | 0 .../quail}/tests/testfiles/oac/88-2.html | 0 .../quail}/tests/testfiles/oac/89-1.html | 0 .../quail}/tests/testfiles/oac/89-2.html | 0 .../quail}/tests/testfiles/oac/9-1.html | 0 .../quail}/tests/testfiles/oac/9-2.html | 0 .../quail}/tests/testfiles/oac/90-1.html | 0 .../quail}/tests/testfiles/oac/90-2.html | 0 .../quail}/tests/testfiles/oac/91-1.html | 0 .../quail}/tests/testfiles/oac/91-2.html | 0 .../quail}/tests/testfiles/oac/91-3.html | 0 .../quail}/tests/testfiles/oac/91-4.html | 0 .../quail}/tests/testfiles/oac/92-1.html | 0 .../quail}/tests/testfiles/oac/92-2.html | 0 .../quail}/tests/testfiles/oac/92-3.html | 0 .../quail}/tests/testfiles/oac/94-1.html | 0 .../quail}/tests/testfiles/oac/94-2.html | 0 .../quail}/tests/testfiles/oac/95-1.html | 0 .../quail}/tests/testfiles/oac/95-2.html | 0 .../quail}/tests/testfiles/oac/95-3.html | 0 .../quail}/tests/testfiles/oac/95-4.html | 0 .../quail}/tests/testfiles/oac/96-1.html | 0 .../quail}/tests/testfiles/oac/96-2.html | 0 .../quail}/tests/testfiles/oac/97-1.html | 0 .../quail}/tests/testfiles/oac/97-2.html | 0 .../quail}/tests/testfiles/oac/98-1.html | 0 .../quail}/tests/testfiles/oac/98-2.html | 0 .../quail}/tests/testfiles/oac/98-3.html | 0 .../quail}/tests/testfiles/oac/98-4.html | 0 .../quail}/tests/testfiles/oac/99-1.html | 0 .../quail}/tests/testfiles/oac/99-2.html | 0 .../tests/testfiles/oac/alternative1.html | 0 .../tests/testfiles/oac/alternative2.html | 0 .../quail}/tests/testfiles/oac/avlab.mp3 | Bin .../quail}/tests/testfiles/oac/avlab.txt | 0 .../quail}/tests/testfiles/oac/big-fail.png | Bin .../quail}/tests/testfiles/oac/chart.gif | Bin .../quail}/tests/testfiles/oac/contrast1.gif | Bin .../quail}/tests/testfiles/oac/contrast2.gif | Bin .../quail}/tests/testfiles/oac/eatatjoes.gif | Bin .../quail}/tests/testfiles/oac/finddogs.gif | Bin .../quail}/tests/testfiles/oac/fish.gif | Bin .../quail}/tests/testfiles/oac/fish1.html | 0 .../quail}/tests/testfiles/oac/fish2.html | 0 .../quail}/tests/testfiles/oac/fishswim.gif | Bin .../quail}/tests/testfiles/oac/go.gif | Bin .../quail}/tests/testfiles/oac/image.gif | Bin .../quail}/tests/testfiles/oac/library.gif | Bin .../quail}/tests/testfiles/oac/renew.gif | Bin .../quail}/tests/testfiles/oac/rex.gif | Bin .../quail}/tests/testfiles/oac/rex.html | 0 .../quail}/tests/testfiles/oac/rex.jpg | Bin .../quail}/tests/testfiles/oac/spacer.gif | Bin .../quail}/tests/testfiles/oac/star.gif | Bin .../quail}/tests/testfiles/oac/submit.gif | Bin .../quail}/tests/testfiles/oac/welcome.gif | Bin .../tests/testfiles/quail/cssComplexTest1.css | 0 .../testfiles/quail/cssComplexTest1.html | 0 .../tests/testfiles/quail/cssContrast.css | 0 .../tests/testfiles/quail/cssContrast.html | 0 .../tests/testfiles/quail/cssContrast2.css | 0 .../tests/testfiles/quail/cssContrast2.html | 0 .../tests/testfiles/quail/cssContrast3.css | 0 .../tests/testfiles/quail/cssContrast3.html | 0 .../tests/testfiles/quail/cssContrast4.css | 0 .../tests/testfiles/quail/cssContrast4.html | 0 .../tests/testfiles/quail/cssContrast5.html | 0 .../quail/documentIsWrittenClearly-fail.html | 0 .../documentIsWrittenClearly-pass-2.html | 0 .../quail/documentIsWrittenClearly-pass.html | 0 .../testfiles/quail/headersHaveText-fail.html | 0 .../quail/headersHaveText-fail2.html | 0 .../testfiles/quail/headersHaveText-pass.html | 0 .../quail/imgAltTextNotRedundant-fail.html | 0 .../quail/imgAltTextNotRedundant-pass.html | 0 .../labelsAreAssignedToAnInput-fail.html | 0 .../labelsAreAssignedToAnInput-fail2.html | 0 .../labelsAreAssignedToAnInput-fail3.html | 0 .../labelsAreAssignedToAnInput-pass.html | 0 .../testfiles/quail/selectJumpMenus-fail.html | 0 .../testfiles/quail/selectJumpMenus-pass.html | 0 .../quail/svgContainsTitle-fail.html | 0 .../quail/svgContainsTitle-pass.html | 0 .../testfiles/quail/textIsNotSmall-fail.html | 0 .../testfiles/quail/textIsNotSmall-fail2.html | 0 .../testfiles/quail/textIsNotSmall-pass.html | 0 .../tests/testfiles/quail/videoTestFail.html | 0 .../tests/testfiles/quail/videoTestPass.html | 0 ...deosEmbeddedOrLinkedNeedCaptions-fail.html | 0 ...deosEmbeddedOrLinkedNeedCaptions-pass.html | 0 {assets => public/assets}/css/main.css | 0 {assets => public/assets}/css/pdf.css | 0 {assets => public/assets}/css/print.css | 0 .../examples => public/assets}/img/error.png | Bin .../assets}/img/suggestion.png | Bin {assets => public/assets}/img/udoit_logo.png | Bin .../assets}/img/warning.png | Bin {assets => public/assets}/js/default.js | 12 +- {assets => public/assets}/js/jquery.js | 0 .../assets}/js/jscolor/arrow.gif | Bin .../assets}/js/jscolor/cross.gif | Bin .../assets}/js/jscolor/demo.html | 0 {assets => public/assets}/js/jscolor/hs.png | Bin {assets => public/assets}/js/jscolor/hv.png | Bin .../assets}/js/jscolor/jscolor.js | 0 {assets => public/assets}/js/jspdf.min.js | 0 {lib => public}/cached.php | 23 +- index.php => public/index.php | 18 +- .../oauth2response.php | 26 +- {lib => public}/parsePdf.php | 4 +- {lib => public}/parseResults.php | 14 +- {lib => public}/process.php | 34 +-- {lib => public}/progress.php | 0 udoit.xml.php => public/udoit.xml.php | 13 +- reports/.gitkeep | 0 1011 files changed, 419 insertions(+), 381 deletions(-) create mode 100644 Procfile mode change 100755 => 100644 composer.lock create mode 100644 config/herokuConfig.php create mode 100644 config/settings.php create mode 100644 config/tests.php create mode 100644 fpm_custom.conf delete mode 100644 img/udoit_logo.png create mode 100644 lib/db.php rename {core => lib/quail}/CHANGELOG.txt (100%) rename {core => lib/quail}/LICENSE.txt (100%) rename {core => lib/quail}/README.txt (100%) rename {core => lib/quail}/examples/HFT3273-0M62.html (100%) rename {core => lib/quail}/examples/css/main.css (100%) rename {assets => lib/quail/examples}/img/error.png (100%) rename {assets => lib/quail/examples}/img/suggestion.png (100%) rename {assets => lib/quail/examples}/img/warning.png (100%) rename {core => lib/quail}/examples/test.php (100%) rename {core => lib/quail}/examples/test_form.php (98%) rename {core => lib/quail}/quail/common/accessibility_tests.php (99%) rename {core => lib/quail}/quail/common/css.php (100%) rename {core => lib/quail}/quail/common/domExtensions.php (100%) rename {core => lib/quail}/quail/common/elements.php (100%) rename {core => lib/quail}/quail/common/resources/emoticons.txt (100%) rename {core => lib/quail}/quail/common/resources/iso639.txt (100%) rename {core => lib/quail}/quail/common/resources/placeholder.txt (100%) rename {core => lib/quail}/quail/common/services/media/mediaService.php (100%) rename {core => lib/quail}/quail/common/services/media/youtube.php (98%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/README.txt (100%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/TextStatistics.php (100%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/TextStatistics.php4 (100%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/resources/DaleChallWordList.php (100%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/resources/SpacheWordList.php (100%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/tests/TextStatisticsKiplingIf.php (100%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/tests/TextStatisticsMelvilleMobyDick.php (100%) rename {core => lib/quail}/quail/common/services/readability/php-text-statistics/tests/TextStatisticsTest.php (100%) rename {core => lib/quail}/quail/common/services/readability/readability.php (100%) rename {core => lib/quail}/quail/common/test.php (100%) rename {core => lib/quail}/quail/guidelines/all.php (100%) rename {core => lib/quail}/quail/guidelines/section508.php (100%) rename {core => lib/quail}/quail/guidelines/translations/en.txt (100%) rename {core => lib/quail}/quail/guidelines/wcag1a.php (100%) rename {core => lib/quail}/quail/guidelines/wcag1aa.php (100%) rename {core => lib/quail}/quail/guidelines/wcag1aaa.php (100%) rename {core => lib/quail}/quail/guidelines/wcag2a.php (100%) rename {core => lib/quail}/quail/guidelines/wcag2aa.php (100%) rename {core => lib/quail}/quail/guidelines/wcag2aaa.php (100%) rename {core => lib/quail}/quail/quail.php (100%) rename {core => lib/quail}/quail/reporters/reporter.array.php (100%) rename {core => lib/quail}/quail/reporters/reporter.codeHighlight.php (100%) rename {core => lib/quail}/quail/reporters/reporter.demo.php (100%) rename {core => lib/quail}/quail/reporters/reporter.static.php (100%) rename {core => lib/quail}/quail/reporters/reporter.xml.php (100%) rename {core => lib/quail}/tests/cssTestInterface.php (100%) rename {core => lib/quail}/tests/cssTests.php (100%) rename {core => lib/quail}/tests/index.php (100%) rename {core => lib/quail}/tests/quailTests.php (100%) rename {core => lib/quail}/tests/simpletest/HELP_MY_TESTS_DONT_WORK_ANYMORE (100%) rename {core => lib/quail}/tests/simpletest/LICENSE (100%) rename {core => lib/quail}/tests/simpletest/README (100%) rename {core => lib/quail}/tests/simpletest/VERSION (100%) rename {core => lib/quail}/tests/simpletest/authentication.php (100%) rename {core => lib/quail}/tests/simpletest/autorun.php (100%) rename {core => lib/quail}/tests/simpletest/browser.php (100%) rename {core => lib/quail}/tests/simpletest/collector.php (100%) rename {core => lib/quail}/tests/simpletest/compatibility.php (100%) rename {core => lib/quail}/tests/simpletest/cookies.php (100%) rename {core => lib/quail}/tests/simpletest/default_reporter.php (100%) rename {core => lib/quail}/tests/simpletest/detached.php (100%) rename {core => lib/quail}/tests/simpletest/docs/en/authentication_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/browser_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/docs.css (100%) rename {core => lib/quail}/tests/simpletest/docs/en/expectation_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/form_testing_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/group_test_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/index.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/mock_objects_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/overview.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/partial_mocks_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/reporter_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/unit_test_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/en/web_tester_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/authentication_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/browser_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/docs.css (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/expectation_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/form_testing_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/group_test_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/index.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/mock_objects_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/overview.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/partial_mocks_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/reporter_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/unit_test_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/docs/fr/web_tester_documentation.html (100%) rename {core => lib/quail}/tests/simpletest/dumper.php (100%) rename {core => lib/quail}/tests/simpletest/eclipse.php (100%) rename {core => lib/quail}/tests/simpletest/encoding.php (100%) rename {core => lib/quail}/tests/simpletest/errors.php (100%) rename {core => lib/quail}/tests/simpletest/exceptions.php (100%) rename {core => lib/quail}/tests/simpletest/expectation.php (100%) rename {core => lib/quail}/tests/simpletest/extensions/pear_test_case.php (100%) rename {core => lib/quail}/tests/simpletest/extensions/testdox.php (100%) rename {core => lib/quail}/tests/simpletest/extensions/testdox/test.php (100%) rename {core => lib/quail}/tests/simpletest/form.php (100%) rename {core => lib/quail}/tests/simpletest/frames.php (100%) rename {core => lib/quail}/tests/simpletest/http.php (100%) rename {core => lib/quail}/tests/simpletest/invoker.php (100%) rename {core => lib/quail}/tests/simpletest/mock_objects.php (100%) rename {core => lib/quail}/tests/simpletest/page.php (100%) rename {core => lib/quail}/tests/simpletest/php_parser.php (100%) rename {core => lib/quail}/tests/simpletest/reflection_php4.php (100%) rename {core => lib/quail}/tests/simpletest/reflection_php5.php (100%) rename {core => lib/quail}/tests/simpletest/remote.php (100%) rename {core => lib/quail}/tests/simpletest/reporter.php (100%) rename {core => lib/quail}/tests/simpletest/scorer.php (100%) rename {core => lib/quail}/tests/simpletest/selector.php (100%) rename {core => lib/quail}/tests/simpletest/shell_tester.php (100%) rename {core => lib/quail}/tests/simpletest/simpletest.php (100%) rename {core => lib/quail}/tests/simpletest/socket.php (100%) rename {core => lib/quail}/tests/simpletest/tag.php (100%) rename {core => lib/quail}/tests/simpletest/test/acceptance_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/adapter_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/all_tests.php (100%) rename {core => lib/quail}/tests/simpletest/test/authentication_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/autorun_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/bad_test_suite.php (100%) rename {core => lib/quail}/tests/simpletest/test/browser_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/collector_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/command_line_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/compatibility_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/cookies_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/detached_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/dumper_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/eclipse_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/encoding_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/errors_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/exceptions_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/expectation_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/form_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/frames_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/http_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/interfaces_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/interfaces_test_php5_1.php (100%) rename {core => lib/quail}/tests/simpletest/test/live_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/mock_objects_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/page_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/parse_error_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/parsing_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/php_parser_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/reflection_php4_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/reflection_php5_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/remote_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/shell_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/shell_tester_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/simpletest_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/site/file.html (100%) rename {core => lib/quail}/tests/simpletest/test/socket_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/support/collector/collectable.1 (100%) rename {core => lib/quail}/tests/simpletest/test/support/collector/collectable.2 (100%) rename {core => lib/quail}/tests/simpletest/test/support/empty_test_file.php (100%) rename {core => lib/quail}/tests/simpletest/test/support/failing_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/support/latin1_sample (100%) rename {core => lib/quail}/tests/simpletest/test/support/passing_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/support/spl_examples.php (100%) rename {core => lib/quail}/tests/simpletest/test/support/supplementary_upload_sample.txt (100%) rename {core => lib/quail}/tests/simpletest/test/support/test1.php (100%) rename {core => lib/quail}/tests/simpletest/test/support/upload_sample.txt (100%) rename {core => lib/quail}/tests/simpletest/test/tag_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/test_with_parse_error.php (100%) rename {core => lib/quail}/tests/simpletest/test/unit_tester_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/unit_tests.php (100%) rename {core => lib/quail}/tests/simpletest/test/url_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/user_agent_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/visual_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/web_tester_test.php (100%) rename {core => lib/quail}/tests/simpletest/test/xml_test.php (100%) rename {core => lib/quail}/tests/simpletest/test_case.php (100%) rename {core => lib/quail}/tests/simpletest/tidy_parser.php (100%) rename {core => lib/quail}/tests/simpletest/unit_tester.php (100%) rename {core => lib/quail}/tests/simpletest/url.php (100%) rename {core => lib/quail}/tests/simpletest/user_agent.php (100%) rename {core => lib/quail}/tests/simpletest/web_tester.php (100%) rename {core => lib/quail}/tests/simpletest/xml.php (100%) rename {core => lib/quail}/tests/testfiles/css/cssComplexTest1.css (100%) rename {core => lib/quail}/tests/testfiles/css/cssComplexTest1.html (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast.css (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast.html (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast2.css (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast2.html (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast3.css (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast3.html (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast4.css (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast4.html (100%) rename {core => lib/quail}/tests/testfiles/css/cssContrast5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/1-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/1-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/10-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/10-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/100-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/100-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/102-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/102-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/103-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/103-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/104-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/104-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/105-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/105-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/106-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/106-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/107-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/107-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/108-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/108-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/109-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/109-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/11-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/11-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/110-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/110-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/111-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/111-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/111-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/112-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/112-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/113-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/113-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/114-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/114-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/114-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/115-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/115-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/116-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/116-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/117-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/117-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/118-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/118-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/118-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/118-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/119-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/119-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/119-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/119-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/12-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/12-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/120-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/120-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/120-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/120-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/121-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/121-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/121-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/121-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/122-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/122-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/123-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/123-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/124-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/124-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/125-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/125-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/126-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/126-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/127-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/127-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/128-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/128-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/129-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/129-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/13-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/13-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/13-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/131-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/131-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/132-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/132-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/133-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/133-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/134-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/134-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/135-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/135-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/135-2.xhtml (100%) rename {core => lib/quail}/tests/testfiles/oac/136-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/136-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/137-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/137-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/138-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/138-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/138-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/139-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/139-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/139-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/14-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/14-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/14-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/140-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/140-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/140-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/141-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/141-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/141-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/142-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/142-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/142-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/143-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/143-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/144-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/144-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/145-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/145-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/145-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/145-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/145-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/145-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/146-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/146-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/147-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/147-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/147-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/147-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/148-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/148-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/15-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/15-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/150-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/150-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/151-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/151-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/151-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/152-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/152-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/152-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/153-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/153-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/154-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/154-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/159-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/159-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/16-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/16-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/16-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/16-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/160-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/160-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/161-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/161-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/162-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/162-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/163-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/163-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/163-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/164-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/164-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/165-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/165-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/166-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/166-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/167-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/167-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/168-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/168-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/168-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/168-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/169-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/169-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-10.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-11.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-12.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-8.html (100%) rename {core => lib/quail}/tests/testfiles/oac/17-9.html (100%) rename {core => lib/quail}/tests/testfiles/oac/173-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/173-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/173-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/174-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/174-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/174-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/174-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/174-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/175-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/175-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/176-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/176-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/177-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/177-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/178-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/178-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/178-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/18-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/18-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/18-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/18-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/180-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/180-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/181-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/181-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/182-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/182-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/183-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/183-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/184-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/184-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/185-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/185-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/186-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/186-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/187-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/187-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/188-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/188-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/188-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/188-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/188-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/189-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/189-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/19-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/19-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/19-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/190-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/190-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/191-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/191-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/192-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/192-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/193-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/193-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/194-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/194-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/195-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/195-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/195-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/195-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/196-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/196-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/197-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/197-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/197-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/197-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/197-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/198-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/198-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/199-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/199-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/2-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/2-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/20-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/20-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/20-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/20-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/20-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/20-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/200-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/200-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/201-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/201-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/202-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/202-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/203-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/203-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/204-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/204-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/204-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/204-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/204-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/204-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/205-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/205-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/205-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/205-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/205-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/205-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/206-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/206-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/206-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/206-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/206-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/206-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/207-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/207-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/207-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/207-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/207-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/207-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-8.html (100%) rename {core => lib/quail}/tests/testfiles/oac/208-9.html (100%) rename {core => lib/quail}/tests/testfiles/oac/209-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/209-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/21-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/21-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/211-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/211-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/212-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/212-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/212-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/212-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/212-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/212-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/213-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/213-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/213-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/213-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/213-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/213-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/213-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/214-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/214-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/214-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/214-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/214-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/214-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/216-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/216-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/216-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/216-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/216-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/216-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/217-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/217-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/217-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/217-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/217-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/217-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/218-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/218-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/218-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/218-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/218-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/218-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/219-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/219-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/219-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/219-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/219-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/219-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/22-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/22-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/220-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/220-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/220-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/220-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/220-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/220-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/221-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/221-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/221-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/221-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/221-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/221-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/222-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/222-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/222-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/223-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/223-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/223-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/224-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/224-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/224-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/225-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/225-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/225-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/225-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/225-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/226-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/226-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/226-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/227-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/227-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/227-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/228-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/228-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/228-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/229-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/229-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/229-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/23-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/23-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/23-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/230-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/230-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/231-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/231-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/232-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/232-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/233-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/233-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/234-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/234-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/235-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/235-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/236-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/236-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/236-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/237-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/237-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/238-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/238-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/238-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/239-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/239-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/239-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/24-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/24-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/240-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/240-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/241-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/241-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/242-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/242-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/243-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/243-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/244-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/244-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/245-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/245-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/246-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/246-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/246-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/246-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/246-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/247-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/247-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/248-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/248-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/248-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/249-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/249-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/25-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/25-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/250-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/250-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/251-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/251-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/252-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/252-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/252-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/253-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/253-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/254-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/254-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/254-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/255-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/255-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/255-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/256-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/256-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/256-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/257-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/257-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/257-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/258-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/258-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/259-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/259-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/26-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/26-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/260-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/260-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/261-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/261-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/261-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/262-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/262-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/263-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/263-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/264-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/264-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/264-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/265-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/265-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/266-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/266-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/267-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/267-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/268-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/268-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/269-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/269-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/27-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/27-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/270-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/270-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/271-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/271-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/272-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/272-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/273-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/273-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/273-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/273-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/274-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/274-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/274-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/274-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/274-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/274-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/274-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/275-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/275-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/276-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/276-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/276-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/28-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/28-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/29-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/29-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/3-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/3-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/30-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/30-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/31-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/31-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/32-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/32-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/32-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-10.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-8.html (100%) rename {core => lib/quail}/tests/testfiles/oac/33-9.html (100%) rename {core => lib/quail}/tests/testfiles/oac/34-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/34-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/35-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/35-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/36-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/36-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/37-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/37-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/38-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/38-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/39-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/39-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/4-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/4-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/40-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/40-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/41-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/41-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/42-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/42-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/43-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/43-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/44-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/44-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/45-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/45-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/46-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/46-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/47-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/47-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/48-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/48-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/49-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/49-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/5-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/5-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/5-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/50-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/50-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/51-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/51-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/51-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/52-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/52-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/53-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/53-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/53-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/53-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/53-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/54-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/54-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/55-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/55-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/56-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/56-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/56-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/56-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/57-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/57-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/57-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/57-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/58-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/58-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/59-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/59-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/6-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/6-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/6-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/6-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/6-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/6-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/6-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/60-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/60-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/61-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/61-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/62-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/62-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/62-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/62-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/63-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/63-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/64-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/64-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/65-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/65-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/65-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-10.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-11.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-12.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-8.html (100%) rename {core => lib/quail}/tests/testfiles/oac/66-9.html (100%) rename {core => lib/quail}/tests/testfiles/oac/68-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/68-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/68-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/68-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/69-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/69-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/7-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/7-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/70-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/70-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/71-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/71-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/72-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/72-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/72-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/73-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/73-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/74-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/74-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/75-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/75-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/76-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/76-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/77-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/77-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/78-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/78-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/79-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/79-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/79-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/8-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/8-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/8-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/8-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/8-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/80-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/80-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/80-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/80-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/81-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/81-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-5.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-6.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-7.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-8.html (100%) rename {core => lib/quail}/tests/testfiles/oac/82-9.html (100%) rename {core => lib/quail}/tests/testfiles/oac/86-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/86-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/87-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/87-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/88-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/88-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/89-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/89-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/9-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/9-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/90-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/90-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/91-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/91-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/91-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/91-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/92-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/92-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/92-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/94-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/94-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/95-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/95-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/95-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/95-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/96-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/96-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/97-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/97-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/98-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/98-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/98-3.html (100%) rename {core => lib/quail}/tests/testfiles/oac/98-4.html (100%) rename {core => lib/quail}/tests/testfiles/oac/99-1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/99-2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/alternative1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/alternative2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/avlab.mp3 (100%) rename {core => lib/quail}/tests/testfiles/oac/avlab.txt (100%) rename {core => lib/quail}/tests/testfiles/oac/big-fail.png (100%) rename {core => lib/quail}/tests/testfiles/oac/chart.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/contrast1.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/contrast2.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/eatatjoes.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/finddogs.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/fish.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/fish1.html (100%) rename {core => lib/quail}/tests/testfiles/oac/fish2.html (100%) rename {core => lib/quail}/tests/testfiles/oac/fishswim.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/go.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/image.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/library.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/renew.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/rex.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/rex.html (100%) rename {core => lib/quail}/tests/testfiles/oac/rex.jpg (100%) rename {core => lib/quail}/tests/testfiles/oac/spacer.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/star.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/submit.gif (100%) rename {core => lib/quail}/tests/testfiles/oac/welcome.gif (100%) rename {core => lib/quail}/tests/testfiles/quail/cssComplexTest1.css (100%) rename {core => lib/quail}/tests/testfiles/quail/cssComplexTest1.html (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast.css (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast.html (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast2.css (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast2.html (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast3.css (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast3.html (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast4.css (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast4.html (100%) rename {core => lib/quail}/tests/testfiles/quail/cssContrast5.html (100%) rename {core => lib/quail}/tests/testfiles/quail/documentIsWrittenClearly-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/documentIsWrittenClearly-pass-2.html (100%) rename {core => lib/quail}/tests/testfiles/quail/documentIsWrittenClearly-pass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/headersHaveText-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/headersHaveText-fail2.html (100%) rename {core => lib/quail}/tests/testfiles/quail/headersHaveText-pass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/imgAltTextNotRedundant-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/imgAltTextNotRedundant-pass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/labelsAreAssignedToAnInput-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/labelsAreAssignedToAnInput-fail2.html (100%) rename {core => lib/quail}/tests/testfiles/quail/labelsAreAssignedToAnInput-fail3.html (100%) rename {core => lib/quail}/tests/testfiles/quail/labelsAreAssignedToAnInput-pass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/selectJumpMenus-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/selectJumpMenus-pass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/svgContainsTitle-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/svgContainsTitle-pass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/textIsNotSmall-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/textIsNotSmall-fail2.html (100%) rename {core => lib/quail}/tests/testfiles/quail/textIsNotSmall-pass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/videoTestFail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/videoTestPass.html (100%) rename {core => lib/quail}/tests/testfiles/quail/videosEmbeddedOrLinkedNeedCaptions-fail.html (100%) rename {core => lib/quail}/tests/testfiles/quail/videosEmbeddedOrLinkedNeedCaptions-pass.html (100%) rename {assets => public/assets}/css/main.css (100%) rename {assets => public/assets}/css/pdf.css (100%) rename {assets => public/assets}/css/print.css (100%) rename {core/examples => public/assets}/img/error.png (100%) rename {core/examples => public/assets}/img/suggestion.png (100%) rename {assets => public/assets}/img/udoit_logo.png (100%) rename {core/examples => public/assets}/img/warning.png (100%) rename {assets => public/assets}/js/default.js (97%) rename {assets => public/assets}/js/jquery.js (100%) rename {assets => public/assets}/js/jscolor/arrow.gif (100%) rename {assets => public/assets}/js/jscolor/cross.gif (100%) rename {assets => public/assets}/js/jscolor/demo.html (100%) rename {assets => public/assets}/js/jscolor/hs.png (100%) rename {assets => public/assets}/js/jscolor/hv.png (100%) rename {assets => public/assets}/js/jscolor/jscolor.js (100%) rename {assets => public/assets}/js/jspdf.min.js (100%) rename {lib => public}/cached.php (80%) rename index.php => public/index.php (97%) rename oauth2response.php => public/oauth2response.php (79%) rename {lib => public}/parsePdf.php (97%) rename {lib => public}/parseResults.php (98%) rename {lib => public}/process.php (91%) rename {lib => public}/progress.php (100%) rename udoit.xml.php => public/udoit.xml.php (89%) delete mode 100644 reports/.gitkeep diff --git a/Procfile b/Procfile new file mode 100644 index 000000000..b4e48b263 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: vendor/bin/heroku-php-apache2 -F fpm_custom.conf public/ diff --git a/README.md b/README.md index 6fe107262..292da9246 100755 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ There are only two tables required to run UDOIT. They are: ### Reports Table ```sql +/* mysql */ CREATE TABLE `reports` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(10) unsigned NOT NULL, @@ -71,11 +72,24 @@ CREATE TABLE `reports` ( `suggestions` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +/* postgresql */ +CREATE TABLE reports ( + id SERIAL PRIMARY KEY, + user_id integer, + course_id integer, + file_path text, + date_run bigint, + errors integer, + suggestions integer +); ``` + ### Users Table ```sql +/* mysql */ CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL, `api_key` varchar(255) NOT NULL, @@ -83,8 +97,16 @@ CREATE TABLE `users` ( PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +/* postgresql */ +CREATE TABLE users ( + id integer CONSTRAINT users_pk PRIMARY KEY, + api_key varchar(255), + date_created integer +); ``` + ## Configuration Make a copy of `config/localConfig.template.php`, rename it to `localConfig.php`. @@ -110,7 +132,7 @@ UDOIT uses Oauth2 to take actions on behalf of the user, you'll need to [sign up These value of these vars should be obvious: * `$db_host` -* `$db_user` +* `$db_url` * `$db_password` * `$db_name` * `$db_user_table` diff --git a/composer.lock b/composer.lock old mode 100755 new mode 100644 index 34df8ddaa..ceeaf14db --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "724d39e93893c91be5102a8450c71646", + "hash": "ee7bd7c4cb1079d0451efaa73d6bc852", "packages": [ { "name": "mpdf/mpdf", @@ -55,16 +55,16 @@ }, { "name": "nategood/httpful", - "version": "0.2.19", + "version": "0.2.20", "source": { "type": "git", "url": "https://github.com/nategood/httpful.git", - "reference": "bd73f89d34d8f879c54ac46eb94b0f7be1d00820" + "reference": "c1cd4d46a4b281229032cf39d4dd852f9887c0f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nategood/httpful/zipball/bd73f89d34d8f879c54ac46eb94b0f7be1d00820", - "reference": "bd73f89d34d8f879c54ac46eb94b0f7be1d00820", + "url": "https://api.github.com/repos/nategood/httpful/zipball/c1cd4d46a4b281229032cf39d4dd852f9887c0f6", + "reference": "c1cd4d46a4b281229032cf39d4dd852f9887c0f6", "shasum": "" }, "require": { @@ -101,7 +101,7 @@ "rest", "restful" ], - "time": "2015-03-08 15:22:23" + "time": "2015-10-26 16:11:30" }, { "name": "zaininnari/html-minifier", @@ -158,24 +158,21 @@ "packages-dev": [ { "name": "symfony/var-dumper", - "version": "v2.7.3", + "version": "v2.7.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "e8903ebba5eb019f5886ffce739ea9e3b7519579" + "reference": "eb033050050916b6bfa51be71009ef67b16046c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e8903ebba5eb019f5886ffce739ea9e3b7519579", - "reference": "e8903ebba5eb019f5886ffce739ea9e3b7519579", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/eb033050050916b6bfa51be71009ef67b16046c9", + "reference": "eb033050050916b6bfa51be71009ef67b16046c9", "shasum": "" }, "require": { "php": ">=5.3.9" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, "suggest": { "ext-symfony_debug": "" }, @@ -213,7 +210,7 @@ "debug", "dump" ], - "time": "2015-07-28 15:18:12" + "time": "2015-10-25 17:17:38" } ], "aliases": [], @@ -224,6 +221,8 @@ }, "prefer-stable": false, "prefer-lowest": false, - "platform": [], + "platform": { + "php": ">=5.4.0" + }, "platform-dev": [] } diff --git a/config/herokuConfig.php b/config/herokuConfig.php new file mode 100644 index 000000000..e8f28692d --- /dev/null +++ b/config/herokuConfig.php @@ -0,0 +1,39 @@ +DOIT) was created by the Center for Distributed Learning at the University of Central Florida. UDOIT will scan your course content, generate a report and provide instructions on how to correct accessibility issues. Funding for UDOIT was provided by a Canvas Grant awarded in 2014.'; -$error_msg_wrong_referrer = 'It looks like you tried to access UDOIT from a website other than Canvas. Please contact support.'; -$error_msg_no_referrer = 'Your web browser did not provide a referrer. Please contact support.'; - -/* Resource links */ -$resource_link = [ - 'doc' => 'http://webaim.org/techniques/word/', - 'pdf' => 'http://webaim.org/techniques/acrobat/', - 'ppt' => 'http://webaim.org/techniques/powerpoint/', -]; - -/* UDOIT test descriptions and examples */ -/* refer to /quail/guidelines/section508.php to view currently enabled tests */ -$udoit_tests = [ - 'severe' => [ - [ - 'name' => 'aMustContainText', - 'title' => 'Links should contain text', - 'desc' => '

Because many users of screen readers use links to navigate the page, providing links with no text (or with images that have empty "alt" attributes and no other readable text) hinders these users.

', - 'resources' => [ - 'Canvas Tutorial', - 'WCAG Guidelines', - 'WCAG Standard 2.4.4' - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('') .'
-

Correct

-
'. htmlspecialchars('read the document') .'
- ', - ], - [ - 'name' => 'imgHasAlt', - 'title' => 'No Alternative Text found', - 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', - 'resources' => [ - 'Resource on Alternative Text', - 'WCAG Standard: 1.1.1', - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('') .'
-

Correct

-
'. htmlspecialchars('A photograph of a dog') .'
- ', - ], - [ - 'name' => 'imgAltIsDifferent', - 'title' => 'Alternative Text should not be the image filename', - 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', - 'resources' => [ - 'Resource on Alternative Text', - 'WCAG Standard: 1.1.1', - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('dog.jpg') .'
-
'. htmlspecialchars('http://website.com/dog.jpg') .'
-

Correct

-
'. htmlspecialchars('A photograph of a dog') .'
-
'. htmlspecialchars('A photograph of a dog') .'
- ', - ], - [ - 'name' => 'imgAltIsTooLong', - 'title' => 'Alternative Text is more than 100 characters', - 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', - 'resources' => [ - 'Resource on Alternative Text', - 'WCAG Standard: 1.1.1' - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('I am alt text that is just way too long, look at me being way too long and being a hassle!') .'
-

Correct

-
'. htmlspecialchars('Short and sweet description') .'
- ', - ], - [ - 'name' => 'imgAltNotEmptyInAnchor', - 'title' => 'Alt text for all img elements used as source anchors should not be empty', - 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', - 'resources' => [ - 'Resource on Alternative Text', - 'WCAG Standard: 1.1.1' - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars(' ') .'
-

Correct

-
'. htmlspecialchars('Alt text') .'
- ', - ], - [ - 'name' => 'tableDataShouldHaveTh', - 'title' => 'No table headers found', - 'desc' => '

Add a table header because it provides a description of the table structure for sighted and screen reader users.

', - 'resources' => [ - 'Resource Link', - 'WCAG Standard: 1.3.1', - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('
Header OneHeader Two
1.304.50
') .'
-

Correct

-
'. htmlspecialchars('
Header OneHeader Two
1.304.50
') .'
- ', - ], - [ - 'name' => 'tableThShouldHaveScope', - 'title' => 'No row or column scopes declarations found in headers of the table', - 'desc' => '

Scope declarations in headers organize and define table data by row/column for sighted and screen reader users.

', - 'resources' => [ - 'Resource Link', - 'WCAG Standard: 1.3.1', - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars(''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n".'
Heading 1Heading 2
Cell 1Cell 2
') .'
-

Correct

-
'. htmlspecialchars(''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n".'
Heading 1Heading 2
Cell 1Cell 2
') .'
-
'. htmlspecialchars(''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n".'
Heading 1Cell 1
Heading 2Cell 2
') .'
- ', - ], - [ - 'name' => 'cssTextHasContrast', - 'title' => 'Insufficient text color contrast with the background', - 'desc' => '

Text color should be easily viewable and should not be the only indicator of meaning or function. Color balance should have at least a 4.5:1 ratio.

', - 'resources' => [ - 'Resource Link', - 'WCAG Standard 1.4.3', - ], - 'example' => ' -

Incorrect

-

Bad contrasting text

-

Correct

-

Good contrasting text

- ', - ], - [ - 'name' => 'objectMustContainText', - 'title' => 'Multimedia objects should have text equivalents (e.g., transcripts).', - 'desc' => '

Multimedia objects should be accompanied by a link to a transcript of the content.

', - 'resources' => [ - 'WCAG Standard: 1.2.1', - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('') .'
-

Correct

-
'. htmlspecialchars('A widget of stock prices. Access this widget.') .'
- ', - ], - ], - 'suggestion' => [ - [ - 'name' => 'imgGifNoFlicker', - 'title' => 'Avoid the use of animated GIF’s', - 'desc' => '

Animated GIFs may cause seizures if they flash more than 3 times per second. A recommendation is to use an alternative format to deliver the content.

', - 'resources' => [ - 'Resource Link', - 'WCAG Standard: 2.3.1', - ], - 'example' => '', - ], - [ - 'name' => 'videosEmbeddedOrLinkedNeedCaptions', - 'title' => 'Synchronized captions should be provided for prerecorded web-based video', - 'desc' => '

Captions should be included in the video to provide dialogue to users who are hearing impaired.

', - 'resources' => [ - 'Adding Captions to Youtube', - 'Creating Captions for Video Uploaded to Canvas', - 'CDL Video hosted video: CDL Video will caption video if a transcript is provided', - 'WCAG Standard 1.2.2', - ], - 'example' => '', - ], - [ - 'name' => 'aSuspiciousLinkText', - 'title' => 'Link text should be descriptive', - 'desc' => 'Links should be descriptive of the content they\'re linking to, such as "Class Schedule" rather than "schedule.html" or "click here".', - 'resources' => [ - 'Canvas Tutorial', - 'WCAG Guidelines', - 'WCAG Standard 2.4.4' - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('click here!') .'
-

Correct

-
'. htmlspecialchars('read the document') .'
- ', - ], - [ - 'name' => 'objectTextUpdatesWhenObjectChanges', - 'title' => 'The text equivalents (e.g., transcripts and/or captions) for embedded content should update when content changes.', - 'desc' => '', - 'resources' => ['WCAG Standard: 1.2',], - 'example' => '', - ], - // [ - // 'name' => 'objectLinkToMultimediaHasTextTranscript', - // 'title' => 'Multimedia objects should have text equivalents (e.g., transcripts).', - // 'desc' => '

Multimedia objects should be accompanied by a link to a transcript of the content.

', - // 'resources' => [ - // 'WCAG Standard: 1.2.1', - // ], - // 'example' => ' - //

Incorrect

- //
'. htmlspecialchars('') .'
- //

Correct

- //
'. htmlspecialchars('Read Transcript of the video') .'
- // ', - // ], - // [ - // 'name' => 'aLinksToMultiMediaRequireTranscript', - // 'title' => 'Multimedia objects should have text equivalents (e.g., transcripts).', - // 'desc' => '

Multimedia objects should be accompanied by a link to a transcript of the content.

', - // 'resources' => [ - // 'WCAG Standard: 1.2.1', - // ], - // 'example' => ' - //

Incorrect

- //
'. htmlspecialchars('Watch the interview') .'
- //

Correct

- //
'. htmlspecialchars('Watch the interview (transcript)') .'
- // ', - // ], - [ - 'name' => 'headersHaveText', - 'title' => 'Headings should contain text', - 'desc' => '

Sighted and screen reader users depend on headings to organize the content on the page. Headings should not be empty and should represent an accurate outline of the content

', - 'resources' => [ - 'Using H1-H6 to Identify Headings Article', - ], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('

') .'
-

Correct

-
'. htmlspecialchars('

Title

') .'
- ', - ], - [ - 'name' => 'noHeadings', - 'title' => 'Consider adding headings to your document to create more structure', - 'desc' => '

If appropriate, add headings to the page to organize the content for sighted and screen reader users. The headings should represent an accurate outline of the content

', - 'resources' => [ - 'Resource Link', - 'WCAG standard 1.3.1 and 1.3.2', - ], - 'example' => '', - ], - [ - 'name' => 'pNotUsedAsHeader', - 'title' => 'Change paragraphs to headings', - 'desc' => '

Headings like h1-h6 are extremely useful for non-sighted users to navigate the structure of the page, and formatting a paragraph to just be big or bold, while it might visually look like a heading, does not make it one.

', - 'resources' => [], - 'example' => ' -

Incorrect

-
'. htmlspecialchars('

Header 1

') .'
-

Correct

-
'. htmlspecialchars('

Header 1

') .'
- ', - ], - ], -]; diff --git a/config/settings.php b/config/settings.php new file mode 100644 index 000000000..96b7b3d4c --- /dev/null +++ b/config/settings.php @@ -0,0 +1,33 @@ +DOIT) was created by the Center for Distributed Learning at the University of Central Florida. UDOIT will scan your course content, generate a report and provide instructions on how to correct accessibility issues. Funding for UDOIT was provided by a Canvas Grant awarded in 2014.'; +$error_msg_wrong_referrer = 'It looks like you tried to access UDOIT from a website other than Canvas. Please contact support.'; +$error_msg_no_referrer = 'Your web browser did not provide a referrer. Please contact support.'; + +/* Resource links */ +$resource_link = [ + 'doc' => 'http://webaim.org/techniques/word/', + 'pdf' => 'http://webaim.org/techniques/acrobat/', + 'ppt' => 'http://webaim.org/techniques/powerpoint/', +]; diff --git a/config/tests.php b/config/tests.php new file mode 100644 index 000000000..e5289a382 --- /dev/null +++ b/config/tests.php @@ -0,0 +1,227 @@ + [ + [ + 'name' => 'aMustContainText', + 'title' => 'Links should contain text', + 'desc' => '

Because many users of screen readers use links to navigate the page, providing links with no text (or with images that have empty "alt" attributes and no other readable text) hinders these users.

', + 'resources' => [ + 'Canvas Tutorial', + 'WCAG Guidelines', + 'WCAG Standard 2.4.4' + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('') .'
+

Correct

+
'. htmlspecialchars('read the document') .'
+ ', + ], + [ + 'name' => 'imgHasAlt', + 'title' => 'No Alternative Text found', + 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', + 'resources' => [ + 'Resource on Alternative Text', + 'WCAG Standard: 1.1.1', + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('') .'
+

Correct

+
'. htmlspecialchars('A photograph of a dog') .'
+ ', + ], + [ + 'name' => 'imgAltIsDifferent', + 'title' => 'Alternative Text should not be the image filename', + 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', + 'resources' => [ + 'Resource on Alternative Text', + 'WCAG Standard: 1.1.1', + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('dog.jpg') .'
+
'. htmlspecialchars('http://website.com/dog.jpg') .'
+

Correct

+
'. htmlspecialchars('A photograph of a dog') .'
+
'. htmlspecialchars('A photograph of a dog') .'
+ ', + ], + [ + 'name' => 'imgAltIsTooLong', + 'title' => 'Alternative Text is more than 100 characters', + 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', + 'resources' => [ + 'Resource on Alternative Text', + 'WCAG Standard: 1.1.1' + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('I am alt text that is just way too long, look at me being way too long and being a hassle!') .'
+

Correct

+
'. htmlspecialchars('Short and sweet description') .'
+ ', + ], + [ + 'name' => 'imgAltNotEmptyInAnchor', + 'title' => 'Alt text for all img elements used as source anchors should not be empty', + 'desc' => '

Alternative Text (Alt Text) is an alternative (non-visual) way to describe the meaning of an image. Please provide a brief (under 100 characters) description of the image for a screen reader user. Note: It should not be the image file name.

', + 'resources' => [ + 'Resource on Alternative Text', + 'WCAG Standard: 1.1.1' + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars(' ') .'
+

Correct

+
'. htmlspecialchars('Alt text') .'
+ ', + ], + [ + 'name' => 'tableDataShouldHaveTh', + 'title' => 'No table headers found', + 'desc' => '

Add a table header because it provides a description of the table structure for sighted and screen reader users.

', + 'resources' => [ + 'Resource Link', + 'WCAG Standard: 1.3.1', + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('
Header OneHeader Two
1.304.50
') .'
+

Correct

+
'. htmlspecialchars('
Header OneHeader Two
1.304.50
') .'
+ ', + ], + [ + 'name' => 'tableThShouldHaveScope', + 'title' => 'No row or column scopes declarations found in headers of the table', + 'desc' => '

Scope declarations in headers organize and define table data by row/column for sighted and screen reader users.

', + 'resources' => [ + 'Resource Link', + 'WCAG Standard: 1.3.1', + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars(''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n".'
Heading 1Heading 2
Cell 1Cell 2
') .'
+

Correct

+
'. htmlspecialchars(''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n".'
Heading 1Heading 2
Cell 1Cell 2
') .'
+
'. htmlspecialchars(''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n\t".''."\n\t\t".''."\n\t\t".''."\n\t".''."\n".'
Heading 1Cell 1
Heading 2Cell 2
') .'
+ ', + ], + [ + 'name' => 'cssTextHasContrast', + 'title' => 'Insufficient text color contrast with the background', + 'desc' => '

Text color should be easily viewable and should not be the only indicator of meaning or function. Color balance should have at least a 4.5:1 ratio.

', + 'resources' => [ + 'Resource Link', + 'WCAG Standard 1.4.3', + ], + 'example' => ' +

Incorrect

+

Bad contrasting text

+

Correct

+

Good contrasting text

+ ', + ], + [ + 'name' => 'objectMustContainText', + 'title' => 'Multimedia objects should have text equivalents (e.g., transcripts).', + 'desc' => '

Multimedia objects should be accompanied by a link to a transcript of the content.

', + 'resources' => [ + 'WCAG Standard: 1.2.1', + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('') .'
+

Correct

+
'. htmlspecialchars('A widget of stock prices. Access this widget.') .'
+ ', + ], + ], + 'suggestion' => [ + [ + 'name' => 'imgGifNoFlicker', + 'title' => 'Avoid the use of animated GIF’s', + 'desc' => '

Animated GIFs may cause seizures if they flash more than 3 times per second. A recommendation is to use an alternative format to deliver the content.

', + 'resources' => [ + 'Resource Link', + 'WCAG Standard: 2.3.1', + ], + 'example' => '', + ], + [ + 'name' => 'videosEmbeddedOrLinkedNeedCaptions', + 'title' => 'Synchronized captions should be provided for prerecorded web-based video', + 'desc' => '

Captions should be included in the video to provide dialogue to users who are hearing impaired.

', + 'resources' => [ + 'Adding Captions to Youtube', + 'Creating Captions for Video Uploaded to Canvas', + 'CDL Video hosted video: CDL Video will caption video if a transcript is provided', + 'WCAG Standard 1.2.2', + ], + 'example' => '', + ], + [ + 'name' => 'aSuspiciousLinkText', + 'title' => 'Link text should be descriptive', + 'desc' => 'Links should be descriptive of the content they\'re linking to, such as "Class Schedule" rather than "schedule.html" or "click here".', + 'resources' => [ + 'Canvas Tutorial', + 'WCAG Guidelines', + 'WCAG Standard 2.4.4' + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('click here!') .'
+

Correct

+
'. htmlspecialchars('read the document') .'
+ ', + ], + [ + 'name' => 'objectTextUpdatesWhenObjectChanges', + 'title' => 'The text equivalents (e.g., transcripts and/or captions) for embedded content should update when content changes.', + 'desc' => '', + 'resources' => ['WCAG Standard: 1.2',], + 'example' => '', + ], + [ + 'name' => 'headersHaveText', + 'title' => 'Headings should contain text', + 'desc' => '

Sighted and screen reader users depend on headings to organize the content on the page. Headings should not be empty and should represent an accurate outline of the content

', + 'resources' => [ + 'Using H1-H6 to Identify Headings Article', + ], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('

') .'
+

Correct

+
'. htmlspecialchars('

Title

') .'
+ ', + ], + [ + 'name' => 'noHeadings', + 'title' => 'Consider adding headings to your document to create more structure', + 'desc' => '

If appropriate, add headings to the page to organize the content for sighted and screen reader users. The headings should represent an accurate outline of the content

', + 'resources' => [ + 'Resource Link', + 'WCAG standard 1.3.1 and 1.3.2', + ], + 'example' => '', + ], + [ + 'name' => 'pNotUsedAsHeader', + 'title' => 'Change paragraphs to headings', + 'desc' => '

Headings like h1-h6 are extremely useful for non-sighted users to navigate the structure of the page, and formatting a paragraph to just be big or bold, while it might visually look like a heading, does not make it one.

', + 'resources' => [], + 'example' => ' +

Incorrect

+
'. htmlspecialchars('

Header 1

') .'
+

Correct

+
'. htmlspecialchars('

Header 1

') .'
+ ', + ], + ], +]; diff --git a/fpm_custom.conf b/fpm_custom.conf new file mode 100644 index 000000000..cd791aef8 --- /dev/null +++ b/fpm_custom.conf @@ -0,0 +1 @@ +php_value[short_open_tag]=1 diff --git a/img/udoit_logo.png b/img/udoit_logo.png deleted file mode 100644 index 97197ed77b284ec29e8b631510fca6ebfef33ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4222 zcmbVQc{r49+aIAq9$5=vjO@%}8-^haV~NJD4Py+(GBb=_mWM}SM3j=fkj6G5$zI-w z?1dy!$-Y#K?7ZW7>iNF+IG*GEj^n$p*JV4)#qDdB{{L>`B z8wvW$DMt$o(2(Sh2daai$~dS76sQ3M!&KGaaJUjs1qy>gpehiUiZTq2P*p)dp}?OP zh^gl9=8mvN8UNH`&X6F_fB-TA0tpTd1_!HxN&X%Xn3k5-0f&l;GSfnt5=sofhA0y$ zQok5bcnZ#+Kn@^~h`<9ztSc!n010Ax`d0|PWDASGiHVe-iDIS<5`rZ|U|=Z3*Y_Z< zKdmVN*7*N%;~%XlwxMJ^#2QZ_1^VNd`{6G23(U;je-}D1WO{=*=TBg63f2cj!Ug)` zi2_%`y7{lSlFc@473Ri(@Xu@FnT54)qFqn!e+*n^-%|PQ9$3J1!HC0sL znlK|3Lk(3J%t+0^7zWoj)KJlf8*3UGs6&5YO^K8MED?wQrAuJy{=}mGD;8nskH-d( z{B21jpI;S#@gxP1D4rxT(9lL5Xo1BMhzIk7?fENO6yBc@gm*LcC;0;Z%rAoQ5BmRi z+<#%+{y#Z`Fr9%M6vzK6mS0QE3OpG8UHZ()--icJWS$s*=Fw=J#O472$0|%w`nDmX zi<#ax1cn4(lFs#YFE4_(&xm(G7>m0h{6FuY*VzOtzf0fb3q=#?)8-A74N5n29F~r3vAcQ z5$bQ=)P6;-NA)3RqAXL2Zf(_c*n!p)cbuk3dIFpE9R+q&nf=r14SOj>g!Y+=YL*BJ zXbH59dJ^w*JkzGIu3 zm-skQiC6fANRDnmJoOY`=xE@$2cyj`l>=13i3!W@2ubC#?SB2rNlNAEGjTywE%LR>Q^V5>n(kd-y zF7s50KHAzN$B7mG(!<(RIb*Dr%uFo3)P)$88|tr zJ@bK2!djRsp{#gJS6-q}>SfgNC5NE+9nHe84yfKv)#3GsJuLqKMthhu%Hypc`h|j- z%y}9r<$b!Ack;+?XwWVwwf;spVo>+^w}zmS6n5QD^{okutFETn;ToIy1!O8z@rmKG zZx_W@gPryCqlx4pIqm6O3qa_-AGR0I=Y|Vn;eW6c$DKIecDQ4YjU@+Fe|#`G{&Cz` zmZ=-3*J|s-f^YYBiNgtkT>0Y7C-_85H_lQ)mcNf(ESBY=o;F;jw-&RhFEvUq=G<@M zdbnT6x(C+h+%30skg+-z&Dh+J{yMom>n*xDs#~h|X_{qLr*+#Tt^Epm%4(%f(O}tG zc?Fzmj($l1;aY3Q!lZ)>t4&RCRgOZB+dCqQr{}a^0{ogT+j*IvTU>E6kK<@eKGUvMScMkQnVhRd3m-BlI=I$Y_Eh2?H<~)ginqs zPNpbUejHG0oIxvK_lF5{)?$jm0_j;9w01*~w^6hCie`MhsZ`{AaDAHWE4gCr(%>=P zYa?<H+4fJe+&jKNtJ&6Rw+f|u+F6tfZ_I@5t88Dqg}U1)UAYm> znf{P&l^~g}V1N07WT;(Ew-#pkox*}z!`x!?rSSDnKDdTgi{7bHLnVK#vz7O}>6wdt zTc^)%_!il`?cBG> zTsf<@Zobj;26-g@La~2)isu@(LDk6O$yYs9#S2jvfs(-d;2PAJUdYi&38pIOzfhWYt&Y$Ak>2V)!a4OHG;_FU(Wwg5t zeP#>F@0AJ7X21PyyiEZOn08v`c>$_vI}47ko-(m$e}q8}3n*DAk%!N?x@0>=x7K?PHZADCx{m)lw=Os;}S3 zbNlEAVBGuu{&0m&`y&&|ILj>hy0x)(vU*%z=Nb#9N&nK?_b}?_t4H%MS;!!lCnCe| z^rfw5qId5qcGl=tOsHjVb3}h=gYh`XPM{t{SS?9j>2(o*k`xm*ifR6hDvHW8R5Gwh z;Lv=JxFs5`dO0pHJYn(%P#(PQR|R8>rGKXTOurVj?P&_NJ-($Hq@_zfB!o!PdO$8S zzpkZWZMYxPxvNy*t}3J&5j$S?P3x;!TkB=*=m(Jl?ysPe( z$^p3J7IXlH!vm9ALQ5D0$HgwZlC#W`baD?vnd9R{QmfGi?$9P1F9w~_WMC$|-qIbx zqhv#m)N$sn2EXEc)4k!`Jn_STeZDhTXKVik=YEP+44J+FF(3RMRdx67+7K!wN2W*i z%WqO%;Fp=m=-XDS;syd2+TEMcr%OL)&P=Cl7nECEFy9MTo)5pK%IBI_B(9M{$~S;DWDSSL`{sGWzOB?R*Va zfJ141@Nbqrr*6-R&50FqQ5^>n$s>n4ru~zPj*zd0s&O=?WtWMR&Z|ZD2zeokU#FoS zUdUT}$1=s5aP=dFpIlV#Dw9DRBPF1deakir|=jevMIKj{Sgdjtq(i-$TK? zcyEHmZ;HqD&7G5j@5{``^`#2*i_pd_q-=DLqU&#e%am%=;I{(1SLFP$rL|FF|MZ+J z<+ta3h2KKypW%#?5*rFf_{q;MCq>j)`G#DZMF@{8gT}Mkzvp&lUIs0=Uy2dOg<}L( z_j;O-7yCS+0fM>LvW-FSPgX5w-^)+-qyu_S&6|`y#MoD6)NEWE(p(wP31_w3l0W0z zy2C{q+6YvDo2htjjtgQY9_my$d-T<-n{1bgIzOtv3W@vt z849ne23tL3c{wLySI4Qe$UASK>^MZM$a<8YWK|XwV=~=zeB{LgpQ7e!&Ax?uL9f)g z9rMBMyXg}bMu1t2_87S*7xypj1HO1vboown0$zf42KVECN3p<1T4m&;^i~ X@HX%8i4DDjKLVykmZ%B?mzaM8&!K!w diff --git a/lib/Udoit.php b/lib/Udoit.php index d542bdff2..3cc96386b 100755 --- a/lib/Udoit.php +++ b/lib/Udoit.php @@ -17,8 +17,8 @@ * * Primary Author Contact: Jacob Bates */ -require_once '../core/quail/quail.php'; -require '../vendor/autoload.php'; +require_once('../vendor/autoload.php'); +require_once('quail/quail/quail.php'); use Httpful\Request; diff --git a/lib/Ufixit.php b/lib/Ufixit.php index 9fa55cfa7..e68611edf 100755 --- a/lib/Ufixit.php +++ b/lib/Ufixit.php @@ -17,8 +17,8 @@ * * Primary Author Contact: Jacob Bates */ -require_once '../core/quail/quail.php'; -require '../vendor/autoload.php'; +require_once('../vendor/autoload.php'); +require_once('quail/quail/quail.php'); use Httpful\Request; use zz\Html\HTMLMinify; diff --git a/lib/db.php b/lib/db.php new file mode 100644 index 000000000..04d21f57d --- /dev/null +++ b/lib/db.php @@ -0,0 +1,13 @@ +getMessage(); +} diff --git a/core/CHANGELOG.txt b/lib/quail/CHANGELOG.txt similarity index 100% rename from core/CHANGELOG.txt rename to lib/quail/CHANGELOG.txt diff --git a/core/LICENSE.txt b/lib/quail/LICENSE.txt similarity index 100% rename from core/LICENSE.txt rename to lib/quail/LICENSE.txt diff --git a/core/README.txt b/lib/quail/README.txt similarity index 100% rename from core/README.txt rename to lib/quail/README.txt diff --git a/core/examples/HFT3273-0M62.html b/lib/quail/examples/HFT3273-0M62.html similarity index 100% rename from core/examples/HFT3273-0M62.html rename to lib/quail/examples/HFT3273-0M62.html diff --git a/core/examples/css/main.css b/lib/quail/examples/css/main.css similarity index 100% rename from core/examples/css/main.css rename to lib/quail/examples/css/main.css diff --git a/assets/img/error.png b/lib/quail/examples/img/error.png similarity index 100% rename from assets/img/error.png rename to lib/quail/examples/img/error.png diff --git a/assets/img/suggestion.png b/lib/quail/examples/img/suggestion.png similarity index 100% rename from assets/img/suggestion.png rename to lib/quail/examples/img/suggestion.png diff --git a/assets/img/warning.png b/lib/quail/examples/img/warning.png similarity index 100% rename from assets/img/warning.png rename to lib/quail/examples/img/warning.png diff --git a/core/examples/test.php b/lib/quail/examples/test.php similarity index 100% rename from core/examples/test.php rename to lib/quail/examples/test.php diff --git a/core/examples/test_form.php b/lib/quail/examples/test_form.php similarity index 98% rename from core/examples/test_form.php rename to lib/quail/examples/test_form.php index b4a921ec9..7950ebb7a 100755 --- a/core/examples/test_form.php +++ b/lib/quail/examples/test_form.php @@ -33,7 +33,7 @@ function find_directory($dir, $ignore) { $fullReport = array(); - require_once('../quail/quail.php'); + require_once('../lib/quail/quail/quail.php'); foreach($test as $html) { $error = 0; diff --git a/core/quail/common/accessibility_tests.php b/lib/quail/quail/common/accessibility_tests.php similarity index 99% rename from core/quail/common/accessibility_tests.php rename to lib/quail/quail/common/accessibility_tests.php index 87370c96e..0f8d17aa4 100755 --- a/core/quail/common/accessibility_tests.php +++ b/lib/quail/quail/common/accessibility_tests.php @@ -1,6 +1,6 @@ '+data+''); $('#result').fadeIn(); @@ -355,7 +355,7 @@ $(document).ready(function() { result_html.find('.error-desc').append('

'); result_html.find('a.list-group-item').after('
'); - var form = $('
' + + var form = $('' + '' + '' + '
'); @@ -373,7 +373,7 @@ $(document).ready(function() { } $.ajax({ - url: "./lib/cached.php", + url: "cached.php", type: "GET", success: function(data) { $("#cached").html(data); diff --git a/assets/js/jquery.js b/public/assets/js/jquery.js similarity index 100% rename from assets/js/jquery.js rename to public/assets/js/jquery.js diff --git a/assets/js/jscolor/arrow.gif b/public/assets/js/jscolor/arrow.gif similarity index 100% rename from assets/js/jscolor/arrow.gif rename to public/assets/js/jscolor/arrow.gif diff --git a/assets/js/jscolor/cross.gif b/public/assets/js/jscolor/cross.gif similarity index 100% rename from assets/js/jscolor/cross.gif rename to public/assets/js/jscolor/cross.gif diff --git a/assets/js/jscolor/demo.html b/public/assets/js/jscolor/demo.html similarity index 100% rename from assets/js/jscolor/demo.html rename to public/assets/js/jscolor/demo.html diff --git a/assets/js/jscolor/hs.png b/public/assets/js/jscolor/hs.png similarity index 100% rename from assets/js/jscolor/hs.png rename to public/assets/js/jscolor/hs.png diff --git a/assets/js/jscolor/hv.png b/public/assets/js/jscolor/hv.png similarity index 100% rename from assets/js/jscolor/hv.png rename to public/assets/js/jscolor/hv.png diff --git a/assets/js/jscolor/jscolor.js b/public/assets/js/jscolor/jscolor.js similarity index 100% rename from assets/js/jscolor/jscolor.js rename to public/assets/js/jscolor/jscolor.js diff --git a/assets/js/jspdf.min.js b/public/assets/js/jspdf.min.js similarity index 100% rename from assets/js/jspdf.min.js rename to public/assets/js/jspdf.min.js diff --git a/lib/cached.php b/public/cached.php similarity index 80% rename from lib/cached.php rename to public/cached.php index 29ce3a4f0..3ac7fc084 100755 --- a/lib/cached.php +++ b/public/cached.php @@ -17,18 +17,10 @@ * * Primary Author Contact: Jacob Bates */ -require '../vendor/autoload.php'; -include_once('../config/localConfig.php'); +require_once('../config/settings.php'); +$dbh = include('../lib/db.php'); // saves the report to the database -$dsn = "mysql:dbname=$db_name;host=$db_host"; - -try { - $dbh = new PDO($dsn, $db_user, $db_password); -} catch (PDOException $e) { - echo 'Connection failed: ' . $e->getMessage(); -} - $sth = $dbh->prepare(" SELECT * FROM $db_reports_table @@ -52,7 +44,6 @@ $reports = $sth->fetchAll(); ?> -
@@ -66,12 +57,12 @@ - - - - + + + +
Saved reports for this course
-
\ No newline at end of file + diff --git a/index.php b/public/index.php similarity index 97% rename from index.php rename to public/index.php index b3f3e7f4d..547d7d443 100755 --- a/index.php +++ b/public/index.php @@ -17,9 +17,8 @@ * * Primary Author Contact: Jacob Bates */ -include_once('config/localConfig.php'); -include_once('lib/ims-blti/blti.php'); -include_once('vendor/autoload.php'); +require_once('../config/settings.php'); +require_once('../lib/ims-blti/blti.php'); use Httpful\Request; @@ -100,6 +99,8 @@ $_SESSION['launch_params']['context_title'] = $_POST['context_title']; $_SESSION['valid'] = true; } else { + error_log("BLTI not valid: our key: {$consumer_key}"); + error_log($context->message); echo ' @@ -124,16 +125,9 @@ $redirect = true; -// Pull the API key from the database -$dsn = "mysql:dbname=$db_name;host=$db_host"; - -try { - $dbh = new PDO($dsn, $db_user, $db_password); -} catch (PDOException $e) { - $_SESSION['valid'] = false; - echo 'Connection failed: ' . $e->getMessage(); -} +$dbh = include('../lib/db.php'); +// Pull the API key from the database $sth = $dbh->prepare("SELECT * FROM $db_user_table WHERE id=:userid LIMIT 1"); $sth->bindParam(':userid', $_SESSION['launch_params']['custom_canvas_user_id'], PDO::PARAM_INT); $sth->execute(); diff --git a/oauth2response.php b/public/oauth2response.php similarity index 79% rename from oauth2response.php rename to public/oauth2response.php index cfc517780..58b486259 100755 --- a/oauth2response.php +++ b/public/oauth2response.php @@ -17,8 +17,8 @@ * * Primary Author Contact: Jacob Bates */ -include_once('config/localConfig.php'); -include_once('vendor/autoload.php'); +require_once('../config/settings.php'); + session_start(); function printError($msg){ @@ -67,19 +67,25 @@ function printError($msg){ $_SESSION['api_key'] = $response->access_token; // Save API Key to DB - $dsn = "mysql:dbname=$db_name;host=$db_host"; + $dbh = include('../lib/db.php'); - try { - $dbh = new PDO($dsn, $db_user, $db_password); - } catch (PDOException $e) { - echo 'Connection failed: ' . $e->getMessage(); - } - $sth = $dbh->prepare("INSERT INTO $db_user_table (id, api_key, date_created) VALUES (:userid, :key, NOW()) ON DUPLICATE KEY UPDATE api_key=VALUES(api_key)"); + $sth = $dbh->prepare("SELECT * FROM $db_user_table WHERE id=:userid"); $sth->bindParam(':userid', $_SESSION['launch_params']['custom_canvas_user_id'], PDO::PARAM_INT); + $sth->execute(); + + if($sth->rowCount()) { + $sth = $dbh->prepare("UPDATE $db_user_table (api_key, date_created) VALUES (:key, :time)"); + } + else { + $sth = $dbh->prepare("INSERT INTO $db_user_table (id, api_key, date_created) VALUES (:userid, :key, :time)"); + $sth->bindParam(':userid', $_SESSION['launch_params']['custom_canvas_user_id'], PDO::PARAM_INT); + } + $sth->bindParam(':key', $_SESSION['api_key'], PDO::PARAM_STR); + $sth->bindValue(':time', time(), PDO::PARAM_INT); $sth->execute(); - + session_write_close(); header('Location:index.php'); } elseif (isset($_GET['error'])) { diff --git a/lib/parsePdf.php b/public/parsePdf.php similarity index 97% rename from lib/parsePdf.php rename to public/parsePdf.php index bec8e2f0b..76269fe1e 100755 --- a/lib/parsePdf.php +++ b/public/parsePdf.php @@ -17,7 +17,7 @@ * * Primary Author Contact: Jacob Bates */ -require '../vendor/autoload.php'; +require_once('../config/settings.php'); use zz\Html\HTMLMinify; @@ -42,5 +42,3 @@ $pdf->WriteHTML($html, 2); $pdf->Output($title.'_'.date("Y-m-d_g:i-a").'.pdf', 'D'); - -exit(); \ No newline at end of file diff --git a/lib/parseResults.php b/public/parseResults.php similarity index 98% rename from lib/parseResults.php rename to public/parseResults.php index efed74e38..ee306ad32 100755 --- a/lib/parseResults.php +++ b/public/parseResults.php @@ -17,17 +17,10 @@ * * Primary Author Contact: Jacob Bates */ -include_once('../config/localConfig.php'); +require_once('../config/settings.php'); if (isset($_POST['cached_id'])) { - // saves the report to the database - $dsn = "mysql:dbname=$db_name;host=$db_host"; - - try { - $dbh = new PDO($dsn, $db_user, $db_password); - } catch (PDOException $e) { - echo 'Connection failed: ' . $e->getMessage(); - } + $dbh = include('../lib/db.php'); $sth = $dbh->prepare(" SELECT * FROM @@ -39,7 +32,8 @@ $sth->bindParam(':cachedid', $_POST['cached_id'], PDO::PARAM_INT); if (!$sth->execute()) { - die('Ya done goof\'d'); + error_log(print_r($sth->errorInfo(), true)); + die('Error searching for report'); } $the_json = file_get_contents($sth->fetchAll(PDO::FETCH_OBJ)[0]->file_path); diff --git a/lib/process.php b/public/process.php similarity index 91% rename from lib/process.php rename to public/process.php index 534d2aaa1..e4afb4abe 100755 --- a/lib/process.php +++ b/public/process.php @@ -17,11 +17,10 @@ * * Primary Author Contact: Jacob Bates */ -require_once('../config/localConfig.php'); -require_once('../core/quail/quail.php'); -require('../vendor/autoload.php'); -include 'Udoit.php'; -include 'Ufixit.php'; +require_once('../config/settings.php'); +require_once('../lib/quail/quail/quail.php'); +require_once('../lib/Udoit.php'); +require_once('../lib/Ufixit.php'); use Httpful\Request; $SESSION_course_id = $_POST['course_id']; @@ -73,26 +72,16 @@ file_put_contents($file, $encoded_report); chmod($file, 0777); - // saves the report to the database - $dsn = "mysql:dbname=$db_name;host=$db_host"; - - try { - $dbh = new PDO($dsn, $db_user, $db_password); - } catch (PDOException $e) { - echo 'Connection failed: ' . $e->getMessage(); - } + $dbh = include('../lib/db.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 - "); + (user_id, course_id, file_path, date_run, errors, suggestions) + VALUES + (:userid, :courseid, :filepath, :time, :errors, :suggestions)"); + $now = time(); + $sth->bindParam(':time', $now, PDO::PARAM_INT); $sth->bindParam(':userid', $user_id, PDO::PARAM_INT); $sth->bindParam(':courseid', $data['course_id'], PDO::PARAM_INT); $sth->bindParam(':filepath', $file, PDO::PARAM_STR); @@ -100,7 +89,8 @@ $sth->bindParam(':suggestions', $udoit->total_results['suggestions'], PDO::PARAM_STR); if (!$sth->execute()) { - die('Ya done goof\'d'); + error_log(print_r($sth->errorInfo(), true)); + die('Error inserting report into database'); } $udoit_report = json_decode($encoded_report); diff --git a/lib/progress.php b/public/progress.php similarity index 100% rename from lib/progress.php rename to public/progress.php diff --git a/udoit.xml.php b/public/udoit.xml.php similarity index 89% rename from udoit.xml.php rename to public/udoit.xml.php index 5f5d6b95b..c165cefcf 100755 --- a/udoit.xml.php +++ b/public/udoit.xml.php @@ -17,12 +17,13 @@ * * Primary Author Contact: Jacob Bates */ - $servername = 'https://' . $_SERVER['SERVER_NAME']; - $scriptname=end(explode('/',$_SERVER['PHP_SELF'])); - $scriptpath=str_replace($scriptname,'',$_SERVER['PHP_SELF']); - $launch = $servername . $scriptpath; - header('Content-type: text/xml'); - echo ''; +$servername = 'https://' . $_SERVER['SERVER_NAME']; +$scriptname=end(explode('/',$_SERVER['PHP_SELF'])); +$scriptpath=str_replace($scriptname,'',$_SERVER['PHP_SELF']); +$launch = $servername . $scriptpath; +header('Content-type: text/xml'); +echo ''; + ?> Date: Fri, 6 Nov 2015 19:27:11 -0500 Subject: [PATCH 02/16] adds missing database port to configs --- config/herokuConfig.php | 4 ++-- config/localConfig.template.php | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/config/herokuConfig.php b/config/herokuConfig.php index e8f28692d..d8e192374 100644 --- a/config/herokuConfig.php +++ b/config/herokuConfig.php @@ -22,11 +22,11 @@ $db_url = parse_url(getenv('DATABASE_URL')); $db_type = 'pgsql'; $db_host = $db_url['host']; +$db_port = $db_url['port']; $db_name = substr($db_url['path'], 1); $db_user = $db_url['user']; $db_password = $db_url['pass']; -$db_port = $db_url['port']; -$db_user_table = 'user'; +$db_user_table = 'users'; $db_reports_table = 'reports'; $dsn = "pgsql:host={$db_host};dbname={$db_name};user={$db_user};port={$db_port};sslmode=require;password={$db_password}"; diff --git a/config/localConfig.template.php b/config/localConfig.template.php index d103b0d01..1cfcb3526 100755 --- a/config/localConfig.template.php +++ b/config/localConfig.template.php @@ -22,11 +22,13 @@ define( 'GOOGLE_API_KEY', ''); /* Database Config */ -$db_type = ''; // 'mysql' or 'pgsql' -$db_user = ''; -$db_password = ''; -$db_name = ''; -$db_user_table = 'user'; +$db_type = ''; // 'mysql' or 'pgsql' +$db_host = ''; // localhost or some other domain +$db_port = '3306'; +$db_user = ''; +$db_password = ''; +$db_name = ''; +$db_user_table = 'users'; $db_reports_table = 'reports'; $dsn = "{$db_type}:host={$db_host};port={$db_port};dbname={$db_name}"; From 13d62679eb76618fd962605a0bf9a8b848b8ab2b Mon Sep 17 00:00:00 2001 From: iturgeon Date: Fri, 6 Nov 2015 19:29:10 -0500 Subject: [PATCH 03/16] makes sure the reportds directory exists --- public/reports/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/reports/.gitkeep diff --git a/public/reports/.gitkeep b/public/reports/.gitkeep new file mode 100644 index 000000000..e69de29bb From 6b158026bada25ed941d570b3237ee413706ad53 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Thu, 12 Nov 2015 17:59:12 -0500 Subject: [PATCH 04/16] adds heroku install instructions and sets some default config values --- README.md | 2 ++ config/herokuConfig.php | 6 +++--- config/localConfig.template.php | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 292da9246..b61ab2576 100755 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ UDOIT uses the [QUAIL PHP library](https://code.google.com/p/quail-lib/), which ## Installing +UDOIT uses php, apache or nginx, and mysql or postresql. For instructions on installing to Heroku, view [HEROKU.md](HEROKU.md). + ### System Requirements *PHP 5.4 is required* to run UDOIT without any modifications. We have not tested it on 5.5 or 5.6, but some users have been able to modify the code to work on 5.3. diff --git a/config/herokuConfig.php b/config/herokuConfig.php index d8e192374..57ccf952d 100644 --- a/config/herokuConfig.php +++ b/config/herokuConfig.php @@ -1,6 +1,6 @@ Date: Wed, 23 Dec 2015 11:24:02 -0500 Subject: [PATCH 05/16] rename fpm_custom.conf to phpfpm_custom.conf --- Procfile | 2 +- fpm_custom.conf => phpfpm_custom.conf | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename fpm_custom.conf => phpfpm_custom.conf (100%) diff --git a/Procfile b/Procfile index b4e48b263..1d2ee486c 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: vendor/bin/heroku-php-apache2 -F fpm_custom.conf public/ +web: vendor/bin/heroku-php-apache2 -F phpfpm_custom.conf public/ diff --git a/fpm_custom.conf b/phpfpm_custom.conf similarity index 100% rename from fpm_custom.conf rename to phpfpm_custom.conf From 03cf3efb7634ea509a88d51977e06034ee0a963f Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 11:24:02 -0500 Subject: [PATCH 06/16] adds heroku stack that can use brew adds buildpack and package.json for heroku to support bower add compser dep for heroku-buildpack update composer scripts to follow examples update composer.lock add app.json so heroku builds node updates herokuconfig so debug ternary is ok with php7 adds heroku stack that can use brew restrict php between 5.4 and 5.6 --- .buildpacks | 2 + Procfile | 2 +- app.json | 11 +++ composer.json | 10 +-- composer.lock | 124 +++++++++++++++++++++++--- config/herokuConfig.php | 2 +- package.json | 14 +++ fpm_custom.conf => phpfpm_custom.conf | 0 8 files changed, 147 insertions(+), 18 deletions(-) create mode 100644 .buildpacks create mode 100644 app.json create mode 100644 package.json rename fpm_custom.conf => phpfpm_custom.conf (100%) diff --git a/.buildpacks b/.buildpacks new file mode 100644 index 000000000..6a77caf53 --- /dev/null +++ b/.buildpacks @@ -0,0 +1,2 @@ +https://github.com/heroku/heroku-buildpack-nodejs +https://github.com/heroku/heroku-buildpack-php diff --git a/Procfile b/Procfile index b4e48b263..1d2ee486c 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: vendor/bin/heroku-php-apache2 -F fpm_custom.conf public/ +web: vendor/bin/heroku-php-apache2 -F phpfpm_custom.conf public/ diff --git a/app.json b/app.json new file mode 100644 index 000000000..068e42d1f --- /dev/null +++ b/app.json @@ -0,0 +1,11 @@ +{ + "name": "UDOIT", + "description": "", + "keywords": [], + "website": "https://github.com/ucfcdl/UDOIT", + "repository": "https://github.com/ucfcdl/UDOIT", + "success_url": "/", + "env": { + "BUILDPACK_URL": "https://github.com/heroku/heroku-buildpack-multi" + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index bf9ea1ce6..ee3e6f2ed 100755 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "repositories": [ ], "require": { - "php": ">=5.4.0", + "php": "^5.4.0 || ^5.5.0 || ^5.6.0", "nategood/httpful": "*", "zaininnari/html-minifier": "dev-master", "mpdf/mpdf": "dev-master", @@ -14,13 +14,11 @@ "ext-pdo": "*" }, "require-dev": { - "symfony/var-dumper": "*" + "symfony/var-dumper": "*", + "heroku/heroku-buildpack-php": "*" }, "scripts": { - "post-install-cmd": [ - "bower install" - ], - "post-update-cmd": [ + "compile": [ "bower install" ] } diff --git a/composer.lock b/composer.lock index 5dc16d013..a3173984d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "279e24152487e695fa54de77461f2a48", - "content-hash": "05c93b4fa9d3879516692dd93f745f68", + "hash": "4ecdb96350cddd6445ab39063bbbcb8c", + "content-hash": "ecb334706b791aa01d6e6870ade3a4c2", "packages": [ { "name": "league/plates", @@ -209,22 +209,126 @@ } ], "packages-dev": [ + { + "name": "heroku/heroku-buildpack-php", + "version": "v90", + "source": { + "type": "git", + "url": "https://github.com/heroku/heroku-buildpack-php.git", + "reference": "5f56ed1ea916bbeec16bf85bec0c99583e33331a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/5f56ed1ea916bbeec16bf85bec0c99583e33331a", + "reference": "5f56ed1ea916bbeec16bf85bec0c99583e33331a", + "shasum": "" + }, + "bin": [ + "bin/heroku-hhvm-apache2", + "bin/heroku-hhvm-nginx", + "bin/heroku-php-apache2", + "bin/heroku-php-nginx" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David Zuelke", + "email": "dz@heroku.com" + } + ], + "description": "Toolkit for starting a PHP application locally, with or without foreman, using the same config for PHP/HHVM and Apache2/Nginx as on Heroku", + "homepage": "http://github.com/heroku/heroku-buildpack-php", + "keywords": [ + "apache", + "apache2", + "foreman", + "heroku", + "hhvm", + "nginx", + "php" + ], + "time": "2015-12-18 14:29:45" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0b6a8940385311a24e060ec1fe35680e17c74497" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497", + "reference": "0b6a8940385311a24e060ec1fe35680e17c74497", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2015-11-04 20:28:58" + }, { "name": "symfony/var-dumper", - "version": "v2.7.7", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "72bcb27411780eaee9469729aace73c0d46fb2b8" + "reference": "737e07704cca83f9dd0af926d45ce27eedc25657" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/72bcb27411780eaee9469729aace73c0d46fb2b8", - "reference": "72bcb27411780eaee9469729aace73c0d46fb2b8", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/737e07704cca83f9dd0af926d45ce27eedc25657", + "reference": "737e07704cca83f9dd0af926d45ce27eedc25657", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "twig/twig": "~1.20|~2.0" }, "suggest": { "ext-symfony_debug": "" @@ -232,7 +336,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -266,7 +370,7 @@ "debug", "dump" ], - "time": "2015-11-18 13:41:01" + "time": "2015-11-18 13:48:51" } ], "aliases": [], @@ -278,7 +382,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.4.0", + "php": "^5.4.0 || ^5.5.0 || ^5.6.0", "ext-pdo": "*" }, "platform-dev": [] diff --git a/config/herokuConfig.php b/config/herokuConfig.php index 57ccf952d..59915a548 100644 --- a/config/herokuConfig.php +++ b/config/herokuConfig.php @@ -1,6 +1,6 @@ Date: Wed, 23 Dec 2015 14:24:49 -0500 Subject: [PATCH 07/16] fix template directory reference --- public/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/index.php b/public/index.php index 7bdecd2a3..8b147885b 100755 --- a/public/index.php +++ b/public/index.php @@ -27,7 +27,7 @@ session_start(); header('Content-Type: text/html; charset=utf-8'); -$templates = new League\Plates\Engine('templates'); +$templates = new League\Plates\Engine('../templates'); if ( ! isset($_SESSION['valid'])) { $_SESSION['valid'] = false; From ce705caba4b4590a601f343fecc6ca666780d0a7 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 14:28:47 -0500 Subject: [PATCH 08/16] move bower installed libs to public --- .bowerrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bowerrc b/.bowerrc index 1edc0973b..687b2e00a 100644 --- a/.bowerrc +++ b/.bowerrc @@ -1,3 +1,3 @@ { - "directory": "assets/js/vendor" + "directory": "public/assets/js/vendor" } From 5dba0ad0ae7db1208f94d2691933676cf7eaa6b1 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 14:32:58 -0500 Subject: [PATCH 09/16] fix blti require calls --- public/index.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/public/index.php b/public/index.php index 8b147885b..45ef8ff97 100755 --- a/public/index.php +++ b/public/index.php @@ -18,7 +18,6 @@ * Primary Author Contact: Jacob Bates */ require_once('../config/settings.php'); -require_once('../lib/ims-blti/blti.php'); use Httpful\Request; @@ -34,7 +33,7 @@ } if ($_SESSION['valid'] === false) { - include_once('lib/ims-blti/blti.php'); + require_once('../lib/ims-blti/blti.php'); // Initialize, all secrets are 'secret', do not set session, and do not redirect $context = new BLTI($consumer_key, $shared_secret, false, false); From f6b9cac130b7dbb66a14804aab61315d61b3aed3 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 14:41:50 -0500 Subject: [PATCH 10/16] add icon url to xml --- public/udoit.xml.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/udoit.xml.php b/public/udoit.xml.php index c15b6032d..0d9041447 100755 --- a/public/udoit.xml.php +++ b/public/udoit.xml.php @@ -36,7 +36,7 @@ http://www.imsglobal.org/xsd/imslticp_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd"> UDOIT This tool allows you scan your courses and check for common accessibility issues. - + /assets/img/udoit_logo.png udoit From 88d9608787a11a7ea17b0a4cf0b4cc8c4ef295cc Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 15:27:29 -0500 Subject: [PATCH 11/16] update config and readme --- config/herokuConfig.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/config/herokuConfig.php b/config/herokuConfig.php index 59915a548..7b1581c32 100644 --- a/config/herokuConfig.php +++ b/config/herokuConfig.php @@ -2,9 +2,6 @@ $debug = (getenv("DEBUG")) ?: false; -/* This tests to see if the user came from something other than the URL of your LMS */ -$referer_test = getenv('REFERER_TEST'); - /* Set the path for the base directory (where the user will start choosing from) */ $base_url = getenv('BASE_URL'); // Without trailing slash From 7d6e9f0c65b6050478a7c662ce88ca230cfdb701 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 16:46:26 -0500 Subject: [PATCH 12/16] add Heroku readme --- HEROKU.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 HEROKU.md diff --git a/HEROKU.md b/HEROKU.md new file mode 100644 index 000000000..4f4464198 --- /dev/null +++ b/HEROKU.md @@ -0,0 +1,52 @@ +## Deploy on Heroku + +1. `git clone git@github.com:ucfcdl/UDOIT.git` to grab a copy of the git repo +2. `heroku create` will set up a Heroku project +3. `heroku addons:create heroku-postgresql:hobby-dev` add a database addon +4. `heroku buildpacks:set https://github.com/heroku/heroku-buildpack-multi` may be required +5. `git push heroku master:master` will build build the server using our master branch +6. set up the Heroku config variables below + +## Configure +Set Heroku config variables using `heroku config:set VAR=value1` + +* `BASE_URL` - base url of your canvas install EX: `https://webcourses.ucf.edu` +* `CONSUMER_KEY` - LTI consumer key entered when adding UDOIT LTI to Canvas +* `SHARED_SECRET` - LTI secret entered when adding UDOIT LTI to Canvas +* `OAUTH2_ID` - from the developer api key created by your admin +* `OAUTH2_KEY` - from the developer api key created by your admin +* `OAUTH2_URI` - full url to your oauth2responce.php - EX: `https://your.herokuapp.com/oauth2response.php` +* `GOOGLE_API_KEY` - add a google api key for youtube video support +* `USE_HEROKU_CONFIG` - set to `true` to enable the Heroku configuration + +## Create Database Tables +You'll need to have postgresql installed on your own system to connect to the Heroku postgresql database. + +* `heroku pg:psql` will open a psql connection to the remote Heroku database +* copy and paste the postgresql table schemeas for the users and reports table into the prompt +* `\dt` will show you a list of the tables you just created +* `\q` quits the psql terminal + +```sql +/* postgresql */ +CREATE TABLE reports ( + id SERIAL PRIMARY KEY, + user_id integer, + course_id integer, + file_path text, + date_run bigint, + errors integer, + suggestions integer +); +``` + +### Users Table + +```sql +/* postgresql */ +CREATE TABLE users ( + id integer CONSTRAINT users_pk PRIMARY KEY, + api_key varchar(255), + date_created integer +); +``` From 684f38d213069e82fe65ce2c90193562e202a9d8 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 22:12:25 -0500 Subject: [PATCH 13/16] complete the Heroku app.json and deploy button --- HEROKU.md | 1 - README.md | 2 +- app.json | 65 ++++++++++++++++++++++++++++++++++++----- config/herokuConfig.php | 3 -- db_mysql_setup.php | 29 ++++++++++++++++++ db_pg_setup.php | 25 ++++++++++++++++ 6 files changed, 112 insertions(+), 13 deletions(-) create mode 100644 db_mysql_setup.php create mode 100644 db_pg_setup.php diff --git a/HEROKU.md b/HEROKU.md index 4f4464198..6352092c7 100644 --- a/HEROKU.md +++ b/HEROKU.md @@ -10,7 +10,6 @@ ## Configure Set Heroku config variables using `heroku config:set VAR=value1` -* `BASE_URL` - base url of your canvas install EX: `https://webcourses.ucf.edu` * `CONSUMER_KEY` - LTI consumer key entered when adding UDOIT LTI to Canvas * `SHARED_SECRET` - LTI secret entered when adding UDOIT LTI to Canvas * `OAUTH2_ID` - from the developer api key created by your admin diff --git a/README.md b/README.md index 02fc583a4..299aa75ea 100755 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ UDOIT uses the [QUAIL PHP library](https://code.google.com/p/quail-lib/), which ## Installing -UDOIT uses php, apache or nginx, and mysql or postresql. For instructions on installing to Heroku, view [HEROKU.md](HEROKU.md). +UDOIT uses php, apache or nginx, and mysql or postresql. For instructions on installing to Heroku, view [HEROKU.md](HEROKU.md). We also support instantly deploying UDOIT: [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) ### System Requirements *PHP 5.4 is required* to run UDOIT without any modifications. We have not tested it on 5.5 or 5.6, but some users have been able to modify the code to work on 5.3. diff --git a/app.json b/app.json index 068e42d1f..d2e87f752 100644 --- a/app.json +++ b/app.json @@ -1,11 +1,60 @@ { - "name": "UDOIT", - "description": "", - "keywords": [], - "website": "https://github.com/ucfcdl/UDOIT", - "repository": "https://github.com/ucfcdl/UDOIT", - "success_url": "/", - "env": { - "BUILDPACK_URL": "https://github.com/heroku/heroku-buildpack-multi" + "name": "UDOIT", + "description": "The Universal Design Online content Inspection Tool, or UDOIT (pronounced, “You Do It”) enables faculty to identify accessibility issues in Canvas by Instructure. It will scan a course, generate a report, and provide resources on how to address common accessibility issues.", + "keywords": [ + "education", + "canvas", + "CDL", + "EDU", + "UCF", + "Instructure", + "508" + ], + "website": "http://online.ucf.edu/teach-online/resources/udoit/", + "repository": "https://github.com/ucfcdl/UDOIT", + "success_url": "/", + "env": { + "CONSUMER_KEY": { + "description": "LTI consumer key entered when adding UDOIT LTI to Canvas", + "generator": "secret" + }, + "SHARED_SECRET": { + "description": "LTI secret entered when adding UDOIT LTI to Canvas", + "generator": "secret" + }, + "OAUTH2_ID": { + "description": "Oauth ID from the developer api key created by your admin", + "generator": "secret" + }, + "OAUTH2_KEY": { + "description": "Oauth Key from the developer api key created by your admin", + "generator": "secret" + }, + "OAUTH2_URI": { + "description": "Full url to your oauth2responce.php file", + "value": "https://your.herokuapp.com/oauth2response.php" + }, + "GOOGLE_API_KEY": { + "description": "add a google api key for youtube video support", + "required": false + }, + "USE_HEROKU_CONFIG": { + "description": "needed to use the Heroku configuration", + "value": "true" } + }, + "addons": [ + "heroku-postgresql:hobby-dev" + ], + "buildpacks": [ + { + "url": "https://github.com/heroku/heroku-buildpack-nodejs" + }, + { + "url": "https://github.com/heroku/heroku-buildpack-php" + } + ], + "scripts": { + "postdeploy": "php db_pg_setup.php" + } } \ No newline at end of file diff --git a/config/herokuConfig.php b/config/herokuConfig.php index 7b1581c32..2527e26a0 100644 --- a/config/herokuConfig.php +++ b/config/herokuConfig.php @@ -2,9 +2,6 @@ $debug = (getenv("DEBUG")) ?: false; -/* Set the path for the base directory (where the user will start choosing from) */ -$base_url = getenv('BASE_URL'); // Without trailing slash - /* Oauth 1.0 Settings (For use when installing the app in Canvas) */ $consumer_key = getenv('CONSUMER_KEY'); $shared_secret = getenv('SHARED_SECRET'); diff --git a/db_mysql_setup.php b/db_mysql_setup.php new file mode 100644 index 000000000..e9608c6a3 --- /dev/null +++ b/db_mysql_setup.php @@ -0,0 +1,29 @@ +query($reports_sql); +$sth->execute(); + +$sth = $dbh->query($users_sql); +$sth->execute(); + diff --git a/db_pg_setup.php b/db_pg_setup.php new file mode 100644 index 000000000..76c8cf227 --- /dev/null +++ b/db_pg_setup.php @@ -0,0 +1,25 @@ +query($reports_sql); +$sth->execute(); + +$sth = $dbh->query($users_sql); +$sth->execute(); From b3cddf7b9881965826c2172fc2134ab2407510e8 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 22:15:29 -0500 Subject: [PATCH 14/16] shortens heroku app.json description --- app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.json b/app.json index d2e87f752..9959c63d2 100644 --- a/app.json +++ b/app.json @@ -1,6 +1,6 @@ { "name": "UDOIT", - "description": "The Universal Design Online content Inspection Tool, or UDOIT (pronounced, “You Do It”) enables faculty to identify accessibility issues in Canvas by Instructure. It will scan a course, generate a report, and provide resources on how to address common accessibility issues.", + "description": "The Universal Design Online content Inspection Tool, or UDOIT identifies and fixes accessibility issues in Canvas by Instructure.", "keywords": [ "education", "canvas", From 3fe8ef765a068725e7af3942eaf1bbba59810ae1 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 23 Dec 2015 22:26:54 -0500 Subject: [PATCH 15/16] add explicit autoload path in settings --- config/settings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/settings.php b/config/settings.php index 96b7b3d4c..90e4525e8 100644 --- a/config/settings.php +++ b/config/settings.php @@ -12,7 +12,7 @@ require_once('localConfig.php'); } -require_once('../vendor/autoload.php'); +require_once(__DIR__.'/../vendor/autoload.php'); require_once('tests.php'); /* Prevent Caching */ From a29259883d472a0f3cff816f2f77eac22b0efab4 Mon Sep 17 00:00:00 2001 From: iturgeon Date: Wed, 27 Jan 2016 15:52:54 -0500 Subject: [PATCH 16/16] removes unused error messages and adds dynamic cache buster for default.js --- config/settings.php | 2 -- templates/udoit.php | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/config/settings.php b/config/settings.php index 90e4525e8..cb85eff9d 100644 --- a/config/settings.php +++ b/config/settings.php @@ -22,8 +22,6 @@ /* Messages */ $udoit_welcome_message = 'The Universal Design Online content Inspection Tool (UDOIT) was created by the Center for Distributed Learning at the University of Central Florida. UDOIT will scan your course content, generate a report and provide instructions on how to correct accessibility issues. Funding for UDOIT was provided by a Canvas Grant awarded in 2014.'; -$error_msg_wrong_referrer = 'It looks like you tried to access UDOIT from a website other than Canvas. Please contact support.'; -$error_msg_no_referrer = 'Your web browser did not provide a referrer. Please contact support.'; /* Resource links */ $resource_link = [ diff --git a/templates/udoit.php b/templates/udoit.php index 1b2049c9d..f1de0aa48 100644 --- a/templates/udoit.php +++ b/templates/udoit.php @@ -5,7 +5,7 @@ "//code.jquery.com/jquery-2.1.1.min.js", "//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js", "assets/js/vendor/JSColor/jscolor.js", - "assets/js/default.js?c=0", + "assets/js/default.js?cachebuster=".time(), ] ];