June 10-15, 2012 Growing Community; Growing Possibilities Richard Webber Richard Haukom Lydia Li...
-
Upload
irene-wood -
Category
Documents
-
view
218 -
download
1
Transcript of June 10-15, 2012 Growing Community; Growing Possibilities Richard Webber Richard Haukom Lydia Li...
June 10-15, 2012
Growing Community; Growing Possibilities
Integrating Google
Calendar with Sakai
Richard Webber Richard HaukomLydia Li Stanford University
2012 Jasig Sakai Conference 2
Feedback for Faculty and Students◦ I only need to do a few things in CourseWork (Sakai)◦ I want to see all my appointments in one place◦ I don’t want to have to navigate through the Sakai Uis
to get to the features I want to use Schools are asking for more features
◦ Not enough resources within CourseWork team◦ Many schools have IT resources but no Sakai expertise◦ IT resources do have expertise in pervasive web
technologies, such as Google Apps Stanford on the cusp of rolling out Google Apps
for Education◦ Graduate School of Business paved the way
What We Are Hearing
2012 Jasig Sakai Conference 3
Faculty and students already using or experimenting with other services◦ Facebook, Twitter◦ Piazza, ClassOwl◦ Google Apps◦ Blackboard, CCNET, Custom Built
Often supporting research◦ New teaching methods◦ New technologies
A single LMS will not serve all these needs
Diversity on Campus
2012 Jasig Sakai Conference 4
Core tools and services that are teaching/learning specific◦ Gradebook, Roster, Testing
General services that are already pervasive on the web◦ Social Networking, Calendaring, Email, Document
Sharing How to integrate with these pervasive services Bring course management functionality to
where the users are Enable sophisticated users to develop in
familiar environments
Service Oriented Approach
2012 Jasig Sakai Conference 5
Talking to the Graduate School of Business Saw convergence of their needs our
SULAIR’s ideas Led to development of proof of concept
◦ Google Calendar replacing Sakai Schedule Tool First step in a larger initiative around SOA
◦ Initial focus on Google Apps
Google Calendar and Sakai
2012 Jasig Sakai Conference 6
Graduate School of Business – Use Case
Richard Haukom
2012 Jasig Sakai Conference 7
Semi-autonomous professional school◦ LMS Implications per SUL/AIR◦ Opt-out model
~80 course sites/quarter All courses represented in CW/Sakai Course sites managed by Faculty Assistants Up to 10 Course sites per Faculty Assistant
Stanford GSB – Use Case
2012 Jasig Sakai Conference 8
Students #1 Complaint:◦ Too many information sources/locations◦ Strong preference for single point of contact◦ CW/Sakai accepted as the appropriate vehicle
Minimal use of Schedule Tool◦ Labor intensive, redundant manual process◦ Insufficient time pre-term for FAs
Stanford GSB – Use Case
2012 Jasig Sakai Conference 9
GSB drives adoption of Google @ Stanford Google Calendar becomes GSB standard iCal rapid prototypes explored Spring ‘11 Proof Of Concept – gDocs/iCal/CW Benefits envisioned POC Limitations & concerns with POC
Stanford GSB – Use Case
2012 Jasig Sakai Conference 10
SUL/AIR – GSB POC Joint Venture◦ Vision alignment◦ Resource sharing◦ Short timeline with useful results◦ Summer ’12 plans –
GSB Future directions◦ Supporting disaggregation ◦ Feature rich, quickly and widely accessible, and
secure course materials containers. ◦ Increasing reliance on online forms of
communication in relation to classes. (Online Final Exams through CW/Sakai use growing rapidly.)
Stanford GSB – Use Case
2012 Jasig Sakai Conference 11
Demo & Implementation
Lydia Li
Initial State in gCal, before Adding 'Lecture 4'
Initial State in Sakai, before Adding 'Lecture 4'
Adding an Event 'Lecture 4' in Sakai
'Lecture 4' added in Sakai
'Lecture 4' added in gCal
Edit 'Lecture 3' details
Edit 'Lecture 3' details
Edit 'Lecture 3' details
'Lecture 3' title changed in Sakai
'Lecture 3' title changed in gCal
Adding an Event 'Lecture 5' from gCal
'Lecture 5' added in gCal
'Lecture 5' added in Sakai
Deleting 'Lecture 2' in Sakai
Delete 'Lecture 2' in Sakai
'Lecture 2' deleted in Sakai
'Lecture 2' deleted in gCal
Summary of Features
•Create, Read, Update and Delete (CRUD) gCal events
•Same UI as existing Schedule Tool
•Real-time editing from both Sakai and gCa
•Data in one place, no syncing
•No need to Export or Subscribe
•Day, Week, Month, Year and list Views
•Same as Schedule tool.
•Share gCals with Site members
•View all their course calendar and personal events in one place
Implementation
•Re-use existing Schedule Tool's code as much as possible
•Due to time and resource constraint.
•Created a new Sakai Tool by refactoring calendar code.
•Made possible by velocity, which enforces a Model-View-Controller (MVC) approach to web development.
•Minimum code changes to Velocity(.vm) files.
•Completely removed DB layer. gCal is the persistence layer.
•New services to call Google Data APIs via OAuth.
•Modified CalendarAction.
Implementation (cont'd)
•gCals created for each section
•Unique calendar name for each section (i.e. section id)
•Owned by users in the domain
•Accessing Google Calendars through OAuth
•2-legged OAuth for domain-wide delegation of authority, available for Google Apps for Business and Education: users do not need to give consent on an individual basis.
•An application that has the OAuth consumer key and secret is allowed to act as any user in the domain when accessing Google Data APIs.
Implementation (cont'd)
•2-legged Oauth
•Include the xoauth_requestor_id query parameter in the request URL.
•Send the signed OAuth request using the HMAC-SHA1 signature method
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET) ...service.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());URL calUrl = new URL("https://www.google.com/calendar/feeds/........"); // url for calendarFeed or entryFeed....myCalQuery.addCustomParameter(new CustomParameter("xoauth_requestor_id", userName));...CalendarFeed calendarFeed = service.query(myCalQuery, CalendarFeed.class); // get Calendars CalendarEventFeed resultFeed = service.query(myQuery, CalendarEventFeed.class); // get Eventsservice.insert(myFeedURL, myEntry); // to Add an Eventservice.update(feedUrl, toUpdate); // update an EventretrievedEntry = service.getEntry(feedUrl, CalendarEventEntry.class); // get an EventretrievedEntry.delete(); // delete an event
Google APIs used (pom.xml)
• <dependency>
• <groupId>com.google.gdata</groupId>
• <artifactId>gdata-core</artifactId>
• <version>1.0</version>
• </dependency>
• <dependency>
• <groupId>com.google.gdata</groupId>
• <artifactId>gdata-calendar</artifactId>
• <version>2.0</version>
• </dependency>
• <dependency>
• <groupId>com.google.gdata</groupId>
• <artifactId>gdata-client</artifactId>
• <version>1.0</version>
• </dependency>
Did not have time to do...
•Recurring Events
•Need new UI and rules for supporting gCal recurring events
•Automatic update of gCal ACL
•Automatic sync with course enrollment
•Integration with other Sakai tools such as Tests and Quizzes.
Known Issues/Limitations
•Rich Text Editor available only in Sakai
•Need to enter raw html tags in gCal if rich text description is desired.
•View mode in gCal renders rich text correctly in a web browser, but not on mobile devices.
•Does not support attachments
•Use links instead
Q&A
Contact: [email protected]