[Oabs] [Fwd: Emailing: index.htm]

Robert Spangler spangler.robert at gmail.com
Wed Feb 25 02:10:22 UTC 2009


Hey guys, might be interesting to some of you.  It regards Facebook 
accessibility; although, the document is a little too technical.  I 
pasted the overview section here but the rest of the document is farther 
down.

     Overview

The purpose of this project is to make the social network, Facebook,
accessible to the visually impaired. Currently, screen readers have
trouble reading the Facebook page because of it's complicated web 2.0
design and CSS style sheets; however, through the use of axsJax and
other javascript libraries, screen readers can read the website in a
manner that is comprehensible to a visually impaired person. The beauty
of the "Facebook Accessibility" project is that the script can be
injected from the user's browser through the use of Greasemonkey, so no
server-side changes have to be made. The code is purposely written to be
dynamic, so that if Facebook makes simple changes to their website, the
script will still be able to find the correct data and read it to the user.



   Facebook Accessibility


        From Project:Possibility Wiki

Jump to: navigation <#column-one>, search <#searchInput>

Image:FacbookLogo.jpg </wiki/index.php?title=Image:FacbookLogo.jpg>


     Contents

     * 1 Team members <#Team_members>
     * 2 Overview <#Overview>
     * 3 Technical Overview <#Technical_Overview>
           o 3.1 How page detection works <#How_page_detection_works>
           o 3.2 Login <#Login>
           o 3.3 Registration <#Registration>
           o 3.4 Home <#Home>
           o 3.5 Profile <#Profile>
                 + 3.5.1 Wall <#Wall>
                 + 3.5.2 Info <#Info>
           o 3.6 Search <#Search>
           o 3.7 Inbox <#Inbox>
           o 3.8 Request <#Request>
     * 4 Schedule <#Schedule>
           o 4.1 Saturday, January 31, 2009
             <#Saturday.2C_January_31.2C_2009>
           o 4.2 Sunday, February 1, 2009 <#Sunday.2C_February_1.2C_2009>


     Team members

     * Alvin Huynh
     * Nima Rahnemoon
     * Tim Hsieh
     * Raymond Lim
     * Rajiv Makhijani
     * Carson Tang


     Overview

The purpose of this project is to make the social network, Facebook,
accessible to the visually impaired. Currently, screen readers have
trouble reading the Facebook page because of it's complicated web 2.0
design and CSS style sheets; however, through the use of axsJax and
other javascript libraries, screen readers can read the website in a
manner that is comprehensible to a visually impaired person. The beauty
of the "Facebook Accessibility" project is that the script can be
injected from the user's browser through the use of Greasemonkey, so no
server-side changes have to be made. The code is purposely written to be
dynamic, so that if Facebook makes simple changes to their website, the
script will still be able to find the correct data and read it to the user.

Image:Architecture.png </wiki/index.php?title=Image:Architecture.png>


     Technical Overview


       How page detection works

Throughout the script it is imperative that the currently load page is
always known, in order to perform the correct functionality. In order to
accomplish this, all the different pages are given their own variable,
all of which are children to a parent class. The parent class has a
variable called currentPage, which is by default null. In order to
initialize this variable every time a page is loaded, the parent class
has its own function called pageOnLoad(), which looks at the window's
current page title or the window's current page URL and sets the
currentPage variable equal to the subsequent child class. After the
currentPage variable is initialized, the child class's pageOnLoad
function is called. The child class's pageOnLoad function then calls the
appropriate functions, including eventHandlers, keyHandlers and other
helper functions. In the main script there is a loop that checks to see
if the url of the page has changed, and every time the url changes, the
pageOnLoad function of the parent class is called.


       Login

When the login pages is loaded, the user is welcomed to Facebook and
then prompted whether or not they have registered yet or not. If they
haven't registered, then the script redirects the user to the
registration page and then the registration class prompts the user for
the necessary information. If the user has already registered, then the
pageOnLoad function calls the onFormEvent(evt) function which focuses on
the username field and prompts the user to type his/her username and
does the same for the password.


       Registration

When the registration page is loaded, the pageOnLoad() function first
checks to see if there are any errors being displayed on the page. If
there are no errors, then it passes any input the user gives to the
onFormEvent(evt) function. If there are errors, then the script reads
the error and gives the user the option to retype all the information.
If there are no errors, then inside the onFormEvent(evt) function, the
script allows the user to begin typing in his/her information, by
pressing space bar.


       Home

When the home page is loaded, the pageOnLoad() function tells the user
that they can press the control alt question mark combination to listen
to all the shortcuts.

The shortcuts are as follows:

     * Ctrl + alt + 'h' -> Go to home page
     * Ctrl + alt + 'p' -> Go to profile page
     * Ctrl + alt + 'f' -> Go to friend page
     * Ctrl + alt + 'i' -> Go to info page
     * Ctrl + alt + 'n' -> Reads all notices
     * Ctrl + alt + 'l' -> Logs out
     * Ctrl + alt + 'r' -> Goes to request page
     * Ctrl + alt + '?' -> Says the help short cuts

The global keyHandler redirects the keyEvent to the corresponding page's
keyHandler which acts accordingly in context.


       Profile

The profile class deals with both a user's profile and a user's friend's
profile. The profile page consists of a number of different tabs;
however, the only two tabs that the script is focused on are the Wall
tab and the Info tab. Each of these are a subclass of the profile class.
Once the profile page is loaded, the profile pageOnLoad() function is
called, which redirects to the subclasses pageOnLoad() function. That
is, when the user goes to the wall page on the profile page, the browser
redirects to the wall's pageOnLoad() function. The profile class also
has a keyEventHandler so that the user can use shortcuts to jump between
the wall and info pages.


         Wall

Will do later...


         Info

When the info class's pageOnLoad() function is called, the script begins
reading all of the user's info. This is a special function, because it
is extremely dynamic. The script only reads what is available on the
user's information page. For example, if a user doesn't display his/her
birthday, the script will simply skip that field, and proceed to the
next available field.


       Search

When the user reaches the search result page, the script will notify the
user that he or she is at the search result page. The user can use the
DOWN or 'n' key to move downward and UP or 'p' key to move upward. When
the user reaches the end of the page, he can continue to use the DOWN
key or 'n' key. The script will automatically move to the next search
result on the next page.


       Inbox

When the user goes to the inbox, the user can use the following
shortcuts to toggle his/her messages:

     * Esc + 'a' toggles up the inbox list
     * Esc + 'u' toggles down the inbox list

Once a user has selected a message, he/she can select it using the
"Enter" key. Once that message is selected, there are different shortcuts:

     * Esc + 'r' reads the converation
     * Esc + 'l' reads the last message
     * Esc + 'c' composes a message


       Request

Once the user reaches the request page, he/she can use the following hot
keys:

     * 'f' -> hear friends invitations
     * 'g' -> hear group invitations
     * 'e' -> hear event invitations
     * 'UP' -> scroll to previous request
     * 'DOWN' -> scroll to next request

If user has reached the end of the list of a certain type of request,
pushing DOWN scrolls back to the first request.


     Schedule


       Saturday, January 31, 2009

8:30 - 9:00 Sign-in and Breakfast

9:00 - 9:30 Introductory presentation

9:30 - 11:00 Introduction to AxsJax/xPather/DOM/Javascript/Greasemonkey

11:00 - 12:00 Self experimentation on greasemonkey and javascript

12:00 - 12:30 Lunch

12:30 - 1:30 Work on jQuery and xPather

1:30 - 4:00 Self experimentation on javascript

4:00 - 4:30 Writing CNR files or working on jQuery

4:30 - 6:00 Learning javascript

6:00 - 6:30 Dinner

6:30 - 10:00 Write functions


       Sunday, February 1, 2009

8:30 - 9:00 Breakfast

9:00 - 12:00 Write different features

12:00 - 12:30 Lunch

12:30 - 1:30 Documentation

1:30 - 3:30 Adding more features

3:30 - 5:00 Merging Code

5:00 - 6:00 Presentation/ finalization

6:00 - 6:30 Practicing presentation

Retrieved from
"http://projectpossibility.org/wiki/index.php?title=Facebook_Accessibility"


           Views

     * Page </wiki/index.php?title=Facebook_Accessibility>
     * Discussion
       </wiki/index.php?title=Talk:Facebook_Accessibility&action=edit>
     * View source
       </wiki/index.php?title=Facebook_Accessibility&action=edit>
     * History 
</wiki/index.php?title=Facebook_Accessibility&action=history>


           Personal tools

     * Log in / create account
 
</wiki/index.php?title=Special:UserLogin&returnto=Facebook_Accessibility>


</wiki/index.php?title=Main_Page>


           Navigation

     * Main Page </wiki/index.php?title=Main_Page>
     * Community portal
       </wiki/index.php?title=Project:Possibility_Wiki:Community_Portal>
     * Current events
       </wiki/index.php?title=Project:Possibility_Wiki:Current_events>
     * Recent changes </wiki/index.php?title=Special:RecentChanges>
     * Random page </wiki/index.php?title=Special:Random>
     * Help </wiki/index.php?title=Help:Contents>


           Search




           Toolbox

     * What links here
       </wiki/index.php?title=Special:WhatLinksHere/Facebook_Accessibility>
     * Related changes
 
</wiki/index.php?title=Special:RecentChangesLinked/Facebook_Accessibility>

     * Upload file </wiki/index.php?title=Special:Upload>
     * Special pages </wiki/index.php?title=Special:SpecialPages>
     * Printable version
       </wiki/index.php?title=Facebook_Accessibility&printable=yes>
     * Permanent link
       </wiki/index.php?title=Facebook_Accessibility&oldid=729>

Powered by MediaWiki <http://www.mediawiki.org/>
GNU Free Documentation License 1.2 <http://www.gnu.org/copyleft/fdl.html>

     * This page was last modified on 2 February 2009, at 02:30.
     * This page has been accessed 765 times.
     * Content is available under GNU Free Documentation License 1.2
       <http://www.gnu.org/copyleft/fdl.html>.
     * Privacy policy
       </wiki/index.php?title=Project:Possibility_Wiki:Privacy_policy>
     * About Project:Possibility Wiki
       </wiki/index.php?title=Project:Possibility_Wiki:About>
     * Disclaimers
       </wiki/index.php?title=Project:Possibility_Wiki:General_disclaimer>


-- 
Robert Spangler
The University of Toledo
Student Senate - Recording Secretary




More information about the OABS mailing list