<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DOULS</title>
	<atom:link href="http://www.open.ac.uk/blogs/douls/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.open.ac.uk/blogs/douls</link>
	<description>Distributed Open University Learning Systems</description>
	<lastBuildDate>Wed, 21 Dec 2011 15:12:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Buddy Gadget</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=292</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=292#comments</comments>
		<pubDate>Wed, 21 Dec 2011 15:12:57 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=292</guid>
		<description><![CDATA[The Buddy Google gadget is a networking application that enables students to find others with similar academic interests and communicate with them. This gadget was the most ambitious produced and from the outset it was clear that the required functionality could not be produced entirely within a gadget and that a back end system would [...]]]></description>
			<content:encoded><![CDATA[<p>The Buddy Google gadget is a networking application that enables students to find others with similar academic interests and communicate with them.</p>
<p><span id="more-292"></span></p>
<p>This gadget was the most ambitious produced and from the outset it was clear that the required functionality could not be produced entirely within a gadget and that a back end system would be required to provide core features.</p>
<p>The gadget consists of two core elements:</p>
<ol>
<li>The gadget code and assets</li>
<li>The Buddy website.</li>
</ol>
<p>The gadget provides students with some of the core functionality of the Buddy website from within their iGoogle page. Key features of the gadget are:</p>
<ul>
<li>Send      a new message to a buddy</li>
<li>View      unread messages</li>
<li>Alerts      to invitations that need responding to</li>
<li>View      all messages</li>
<li>View      buddies</li>
<li>View      your profile</li>
<li>View      a buddy’s profile.</li>
</ul>
<p>The website provides the same functionality as the gadget but also allows for:</p>
<ul>
<li>Managing      buddies</li>
<li>Managing      messages</li>
<li>Updating      profile</li>
<li>Finding      a buddy.</li>
</ul>
<p>In general terms functions that update or delete data are accessed from the website as this provides an extra level of security over the gadget.</p>
<p>The website has been developed using <a href="http://www.silverstripe.org/">SilverStripe</a>; SilverStripe is an open source PHP framework and content management system. The functionality required by the buddy system has been added to SilverStripe using its plugin architecture. Developments for the buddy system include:</p>
<ul>
<li>Buddy      module – provides profile, buddy managing and searching for buddy</li>
<li>Buddy      messaging module – provides one-to-one messaging with a buddy</li>
<li>SNAPP      module – allows connection from Gadgets to SilverStripe web services.</li>
</ul>
<p>SilverStripe was chosen for the development platform for the system as it provides a lot of features in its core that would have been cost prohibitive to develop from scratch. SilverStripe also has a strong developer community that have produced a number of plugin modules that are used in the buddy system.</p>
<p><strong>Buddy module</strong></p>
<p>The buddy module provides the system with all of the functionality around finding and managing buddy relationships with other users.</p>
<p>To be found as a buddy a student must fill in their profile; this contains a number of fields that identify their study interests and in what areas they can provide assistance to others. Their profile also sets up the user avatar and contains a number of system preferences relating to privacy.</p>
<div id="attachment_293" class="wp-caption alignnone" style="width: 219px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_profile.png"><img class="size-medium wp-image-293" title="Buddy profile editing" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_profile-209x300.png" alt="Grab of Buddy profile editing" width="209" height="300" /></a><p class="wp-caption-text">Buddy profile editing</p></div>
<p>To search for a buddy the student fills in a form indentifying the key attributes they are looking for in a buddy. These would be their study interests and whether they are seeking help in a particular area. On searching the system matches these criteria against the students in the system and returns a list of matches.</p>
<p>Once the student has found a list of other users that match their criteria they can then select invite them to be a buddy by sending them an invitation. If the invitation is accepted then the two students become buddies and can message each other.</p>
<div id="attachment_294" class="wp-caption alignnone" style="width: 233px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_search.png"><img class="size-medium wp-image-294" title="Buddy search options" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_search-223x300.png" alt="grab showing Buddy search options" width="223" height="300" /></a><p class="wp-caption-text">Buddy search options</p></div>
<p>The buddy module also provides the students with the ability to manage their list of buddies.</p>
<div id="attachment_296" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_buddies.png"><img class="size-medium wp-image-296" title="Buddy management screen" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_buddies-300x203.png" alt="grab showing Buddy management screen" width="300" height="203" /></a><p class="wp-caption-text">Buddy management screen</p></div>
<p><strong>Buddy messaging</strong></p>
<p>The buddy messaging module is a customisation of the open source <a href="http://www.silverstripe.org/postale-module/">Postale messaging system</a> for SilverStripe. The messaging system allows students to communicate with a buddy in a one-to-one conversation. Because all communication is handled by the buddy system the contact details of the students are never revealed.</p>
<div id="attachment_297" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_messages.png"><img class="size-medium wp-image-297 " title="Messages from student's buddy" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_messages-300x146.png" alt="Grab showing Messages from student's buddy" width="300" height="146" /></a><p class="wp-caption-text">Messages from student&#39;s buddy</p></div>
<p>The Postal module was updated so that students can only message users that are in their buddy list. SilverStripe does have extensive extension capabilities that make it simple to override and customise php classes. Unfortunately, the level of change required to the Postale module was too great to practically use these methods so direct customisation to the code was undertaken. To manage future maintenance these changes have been implemented as a forked branch of the original github project. This should make the merging of any updates from the original code to our customised version straight-forward.</p>
<div id="attachment_298" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_message.png"><img class="size-medium wp-image-298 " title="Message conversation thread" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_message-300x221.png" alt="Grab showing Message conversation thread" width="300" height="221" /></a><p class="wp-caption-text">Message conversation thread </p></div>
<p><strong>Gadget connection</strong></p>
<p>The SNAPP module enables gadgets to connect to SilverStripe systems. This module code re-uses some of the libraries developed for DOULS for the Moodle gadget connection plugin. This module enables gadgets to connect to SilverStripe web services provided by the open source <a href="https://github.com/nyeholt/silverstripe-webservices">web services module</a>. The SNAPP module extends this feature, providing custom authentication based on OAuth signing of the request by the gadget.</p>
<p><strong>Buddy gadget</strong></p>
<p>The buddy Google gadget uses JavaScript (YUI3 library) and <a href="http://docs.opensocial.org/display/OSD/Osapi.http+%28v0.9%29">OpenSocial API http methods</a> (AJAX is also support on development/test environments) to interact with the buddy website web services and display the student’s buddy data.</p>
<p>The gadget is sectioned into a number of tabs – these are created using the YUI3 library.</p>
<div id="attachment_299" class="wp-caption alignnone" style="width: 542px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_gadget.png"><img class="size-full wp-image-299" title="Screen shots of each of the buddy gadget tabs" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/buddy_gadget.png" alt="Screen shots of each of the buddy gadget tabs" width="532" height="800" /></a><p class="wp-caption-text">Screen shots of each of the buddy gadget tabs</p></div>
<p>Design for the gadget was created by Paul Hillery, whilst the buddy website was styled using OU-ICE – a standardised branded CSS layout for OU websites.</p>
<p><strong>Lessons learned</strong></p>
<p>Firstly, this development was extremely ambitious in scope. Initial coding is now complete but there is a need for a small amount of further development, especially around guidance and support.</p>
<p>It certainly wouldn’t have been possible to produce the level of functionality delivered without the power and flexibility of both the SilverStripe framework and, within the gadget, the YUI3 library. The use of some open source developments to aid in delivering functionality also dramatically reduced development time.</p>
<p>Source code for the gadget and for the SilverStripe modules used to deliver the buddy website is available from the <a href="https://github.com/JISC-DOULS">DOULS github area</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=292</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Forum search gadget</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=287</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=287#comments</comments>
		<pubDate>Wed, 21 Dec 2011 15:03:32 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=287</guid>
		<description><![CDATA[The Open Forum search Google gadget gives students the opportunity to find help/information across some public OU resources based on keyword search. The gadget integrates with two key OU sites: OpenLearn –open educational resources Platform – OU community. Within the gadget the user can enter search terms and then has the option to chose which [...]]]></description>
			<content:encoded><![CDATA[<p>The Open Forum search Google gadget gives students the opportunity to find help/information across some public OU resources based on keyword search.</p>
<div id="attachment_288" class="wp-caption alignnone" style="width: 268px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/forum_search.png"><img class="size-medium wp-image-288" title="OU Open forum search gadget" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/forum_search-258x300.png" alt="Grab of the OU Open forum search gadget" width="258" height="300" /></a><p class="wp-caption-text">OU Open forum search gadget</p></div>
<p><span id="more-287"></span></p>
<p>The gadget integrates with two key OU sites:</p>
<ol>
<li>OpenLearn –open educational resources</li>
<li>Platform – OU community.</li>
</ol>
<p>Within the gadget the user can enter search terms and then has the option to chose which resources will be searched:</p>
<ol>
<li>OpenLearn      Learning Space Forum</li>
<li>Platform      Forums</li>
<li>All      of OpenLearn and Platform.</li>
</ol>
<p>The main technical challenge for this gadget was the need to connect to different sites and access search information that is returned in a number of formats. Each of the three search options uses the same approach to request the search data (<a href="http://docs.opensocial.org/display/OSD/Osapi.http+%28v0.9%29">OpenSocial API http methods</a>) but interpret the search results differently depending on the type of data returned. All three search types are fully accessed and controlled from within the gadget using JavaScript – there is no server-side code associated with the gadget.</p>
<p><strong>Searching Learning Space forum</strong></p>
<p>The Learning Space forum is hosted on a Moodle site and uses the OU ForumNG module to provide the forum functionality. Searching a single forum is straight-forward as there is a specific search page that expects parameters of the forum id and search terms in order to return appropriate results. The gadget requests this page expecting text (html) back as a response. The request is cached for an hour to prevent excessive load on the requested site.</p>
<p>In order to display the search results from the HTML returned by the forum search the page is “screen-scraped” by the gadget. The search page returned is cleaned and added into the gadget DOM into a hidden “buffer” element. From this certain nodes containing the search results are lifted, re-formatted and then inserted into the gadget search results area.</p>
<p><strong>Searching Platform</strong></p>
<p>Platform is the OU community site and is hosted on a Drupal site. Platform forums are searched using AJAX to return JSON results. The gadget mirrors this functionality, caching the request for an hour to prevent excessive load on the requested site. There are two types of forum that can be searched, the gadget uses a <a href="http://docs.opensocial.org/display/OSD/Osapi.BatchRequest+(v0.9)">batch method</a> to simultaneously request results from both of these.</p>
<p>As results are returned in JSON data format it is fairly straight-forward to interpret this and use to display the results within the gadget results area.</p>
<p>Currently the Platform search only returns matches based on forum titles, not content. Ideally, if possible, if the search returned matches against content this would be more accurate and mirror the functionality of the Learning Space search.</p>
<p><strong>Searching multiple site content</strong></p>
<p>Searching multiple sites and returning a result set provided a challenge as these results need to be amalgamated and “ranked” according to relevance to the search terms. This would be extremely complex to develop; so the gadget utilises a <a href="http://www.google.co.uk/cse">custom Google search</a> for this search option.</p>
<p>The custom search is configured to search across several public facing OU sites:</p>
<ul>
<li><a href="http://www.open.edu/openlearn/">http://www.open.edu/openlearn/</a></li>
<li><a href="http://openlearn.open.ac.uk/">http://openlearn.open.ac.uk</a></li>
<li><a href="http://www8.open.ac.uk/platform/">http://www8.open.ac.uk/platform/</a></li>
</ul>
<p>The advantages of using Google custom search to provide this search option are:</p>
<ul>
<li>It      can be configured to include extra sites as required</li>
<li>Uses      standard Google search technology to index and search sites, and rank      results</li>
<li>Free</li>
<li>Provides      analytics</li>
<li>Provides      an API.</li>
</ul>
<p>The gadget uses the <a href="http://code.google.com/apis/customsearch/v1/overview.html">API provided by Google to request search results</a>. This returns data in JSON format. Within the request the detail returned can be configured so that only the minimal data is returned to improve performance.</p>
<p>Unfortunately, the API will only process 100 requests per day under the no-fee model. To work around this limitation the gadget will detect when the daily limit is exceeded (as this information is returned with the API response) and in this case a fallback of presenting a link to a Google search page is used.</p>
<p>The functionality of this gadget differs quite significantly from the original requirements that were suggested from the visioning stage. Originally, the intention had been to produce a gadget that had a list of known open forum resources that a student could discover through recommendation based on a tag cloud; students would also be able to recommend resources to be added with a specified tag – these would then be “certified” before inclusion. Unfortunately, it was not possible to realise this original vision as there would be significant development required to produce this functionality. Also, institutionally there would be an overhead to maintain this list of “certified” forums i.e. if a Facebook group were recommended this would need to be checked periodically to ensure all material within it were appropriate.</p>
<p>The search open forum gadget is technically simpler and could be easily updated to include more resource sites at a later date. In addition, by searching OU sites that are already moderated there is no need to explicitly check content.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=287</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collaborative tools status gadget</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=281</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=281#comments</comments>
		<pubDate>Wed, 21 Dec 2011 14:59:17 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=281</guid>
		<description><![CDATA[The collaborative tools status Google gadget informs students as to whether there is any unread content within collaborative activities on their course VLE sites. Connecting to the Moodle 2 VLE via the “SNAPP” plugin (developed for the DOULS project) the gadget receives information detailing: Active courses the user is currently enrolled on Collaborative activities available [...]]]></description>
			<content:encoded><![CDATA[<p>The collaborative tools status Google gadget informs students as to whether there is any unread content within collaborative activities on their course VLE sites.</p>
<div id="attachment_282" class="wp-caption alignnone" style="width: 280px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/collab_status.png"><img class="size-full wp-image-282" title="Collaborative activity status" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/12/collab_status.png" alt="Grab of the collaborative status gadget" width="270" height="402" /></a><p class="wp-caption-text">Grab of the collaborative status gadget</p></div>
<p><span id="more-281"></span></p>
<p>Connecting to the Moodle 2 VLE via the “<a href="http://www.open.ac.uk/blogs/douls/?p=47">SNAPP</a>” plugin (developed for the DOULS project) the gadget receives information detailing:</p>
<ul>
<li>Active courses the user is currently enrolled on</li>
<li>Collaborative activities available to the user on each course – these are ForumNG, OUBlog or OUWiki Moodle modules</li>
<li>If there is any unread content on each of the activities.</li>
</ul>
<p>This information is exposed via a Moodle web service that is installed in the gadget directory (gadgets local plugin). The SNAPP plugin enables secure communication (via the OpenSocial OAuth signing gadget feature) between the gadget and this web service.</p>
<p>The web service interrogates the system to highlight unread activity content via two methods. For ForumNG activities there is functionality within the module code that exposes if a user has yet to read posts. For all other modules the web service checks the last updated date of the activity against user visits in the Moodle log. In this instance obtaining an accurate reflection of whether the user has visited the activity is dependent on the data available in the log; at the OU log data is kept for approximately 2 months.</p>
<p>Development of this gadget was incredibly quick (1 day initial build) and straight-forward; demonstrating the flexibility of using the combination of Gadget technologies alongside our SNAPP plugin libraries and Moodle web services. Because of this the final gadget functionality closely mirrors the initial requirement that was collated from the visioning stage of the project.</p>
<p>The source code for the gadget (and SNAPP plugin) is available on the <a href="https://github.com/JISC-DOULS">DOULS project github area</a>.</p>
<p>ForumNG, OUWiki and OUBlog are Moodle activity modules created and maintained by The Open University. They are publically available in the <a href="http://moodle.org/plugins/">Moodle plugins repository</a> and also on the <a href="https://github.com/organizations/moodleou">Open University’s Moodle developments github area</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=281</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updates to Online Student Personas</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=274</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=274#comments</comments>
		<pubDate>Fri, 18 Nov 2011 10:22:42 +0000</pubDate>
		<dc:creator>Judith</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=274</guid>
		<description><![CDATA[The Online Student Personas have been updated in light of recent student testing activity.  A full report can now be viewed.]]></description>
			<content:encoded><![CDATA[<p>The Online Student Personas have been updated in light of recent student testing activity.  A <a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/DOULS-Personas_2011_10_18.pptx">full report</a> can now be viewed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=274</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ePortfolio Toolset podcast available to view</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=268</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=268#comments</comments>
		<pubDate>Fri, 18 Nov 2011 10:11:01 +0000</pubDate>
		<dc:creator>Judith</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=268</guid>
		<description><![CDATA[A podcast that describes the Open University&#8217;s new ePortfolio Toolset is now available to view .  The podcast briefly describes the toolset which includes the ePortfolio Activity Tool which brings integration between Moodle and Google.  This tool enables module teams to scaffold students reflective activities and content generation in two modes.  In the first mode Module [...]]]></description>
			<content:encoded><![CDATA[<p>A podcast that describes the Open University&#8217;s new ePortfolio Toolset is now available to <a href="http://youtu.be/kRZVECxMZ1Y">view</a> .  The podcast briefly describes the toolset which includes the ePortfolio Activity Tool which brings integration between Moodle and Google.  This tool enables module teams to scaffold students reflective activities and content generation in two modes.  In the first mode Module teams will be able to configure the tool to enable students to pull specific documents, templates or collections of these into their Google Docs accounts.</p>
<p>In the second mode module teams are able to configure the tool to deliver forms to students via the Moodle interface. Student data entered within those forms can be saved to the students Google Docs account or as a .RTF.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=268</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About the Google Collaborative activity</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=262</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=262#comments</comments>
		<pubDate>Mon, 14 Nov 2011 11:44:07 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=262</guid>
		<description><![CDATA[The Google Collaborative activity is a Moodle 2 module (source code) that enables the sharing of a centrally managed Google document with Moodle course groups. This activity acts in a similar manner to a Moodle wiki – the system creates/controls the document whilst giving the correct level of access to users who can interact with [...]]]></description>
			<content:encoded><![CDATA[<p>The Google Collaborative activity is a Moodle 2 module (<a href="https://github.com/JISC-DOULS/moodle-mod_googlecollab">source code</a>) that enables the sharing of a centrally managed Google document with Moodle course groups. This activity acts in a similar manner to a Moodle wiki – the system creates/controls the document whilst giving the correct level of access to users who can interact with it and add content as they wish. Google documents offer feature-rich collaboration and the activity supports standard documents, spreadsheets and presentations.</p>
<p><span id="more-262"></span></p>
<p>Using this activity has a number of advantages over a tutor/teacher manually sharing a document directly with the cohort:</p>
<ol>
<li>The      document is shared from a central account and all sharing is handled by      Moodle. It isn’t then an issue if the tutor becomes unavailable to manage      the document.</li>
<li>A      read-only document is shown to users who do not have access to Google      docs.</li>
</ol>
<div id="attachment_249" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/google_grab.png"><img class="size-medium wp-image-249" title="Google collaborative activity" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/google_grab-300x217.png" alt="Google collaborative activity" width="300" height="217" /></a><p class="wp-caption-text">Google collaborative activity</p></div>
<p>This activity requires an account in a Google Apps domain with OAuth API access enabled. Documents are created by the activity in this account and then are shared with the Moodle cohort. The document is shared with each user on access to the activity, sharing can be configured to use either the username @ google domain name or the email address associated with the Moodle user.</p>
<p>At The Open University we are using this activity in conjunction with a replication of course groups within our Google Apps domain. The activity shares the document with the correct Google group of users rather than the individual user; these groups are updated daily automatically using the Google Apps provisioning API (this is managed externally to our Moodle installation). This functionality could be replicated in other institutions with a small amount of code customisation in the module.<br />
Our Google Apps domain also uses a single-sign-on mechanism – so VLE users can directly access Google docs without needing to sign-in independently.</p>
<p>Users who do not have Google Apps account or are not able to access the Google doc (but should still be able to see it e.g. administrators) will see a read-only version of the document. This is either an html file (doc/spreadsheet) or pdf (presentation) that is <a href="http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocsAndFiles">downloaded using the Google Docs API</a> cached within the VLE, and then displayed in an iframe.</p>
<div id="attachment_250" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/google_admin1_grab.png"><img class="size-medium wp-image-250" title="Google collaborative activity - read only document" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/google_admin1_grab-300x271.png" alt="Google collaborative activity - read only document" width="300" height="271" /></a><p class="wp-caption-text">Google collaborative activity - read only document</p></div>
<p>The module supports the standard Moodle group activity model:</p>
<ul>
<li>No      group – All enrolled users access a single document.</li>
<li>Separate      groups – A document for each group available, users can only access      documents for the group(s) they belong to.</li>
<li>Visible      groups – A document for each group available, users can access all      documents but will see a read-only version for any group they are not a      member of.</li>
</ul>
<p>The activity provides a number of features for administrative users:</p>
<ul>
<li>Template      documents – An initial template document (doc/spreadsheet/presentation)      can be uploaded to be used as the contents of the Google document when      created. This can be one template for all groups or a separate document      for a specified group.</li>
<li>Document      reset – documents in the activity can be ‘reset’ – clearing all content      and reverting to template/blank.</li>
<li>Sharing      control – The <a href="http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#ACLOverview">sharing      list</a> for each Google document can be accessed from the administrative      interface in the VLE and modified.</li>
</ul>
<div id="attachment_251" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/google_admin2_grab.png"><img class="size-medium wp-image-251" title="Google collaborative activity - document administration" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/google_admin2_grab-300x233.png" alt="Google collaborative activity - document administration" width="300" height="233" /></a><p class="wp-caption-text">Google collaborative activity - document administration</p></div>
<h3>Technical challenges</h3>
<p>Connecting to a Google Apps domain and interacting with another user account requires authentication using (2-legged) OAuth; for this activity an open source OAuth library was used to authenticate the API requests (<a href="http://oauth.googlecode.com/svn/code/php/">http://oauth.googlecode.com/svn/code/php/</a>).</p>
<p>The Google Document is displayed to the user within an iframe in the VLE. This is not without its problems as within some browsers (mainly Internet Explorer) the document will not always display. To overcome this there is a hyperlink to the Google document always displayed alongside the iframe, so if any issues are experienced it can be accessed directly by the user. Google presentations will not display in an iframe at all (they explicitly deny access in the page header) so presentations will always display as read-only within the VLE and must be edited by the user within Google Docs in a separate tab/window.</p>
<p>Giving the activity access to the Google Docs domain raises issues of user content access. The API can access all accounts on the domain and there is no mechanism to restrict it to certain accounts (even though the activity only needs to access the one account). To prevent the access credentials (key and password) being exposed to VLE developers and administrators at the OU these credentials are obtained from a secured web service that can only be accessed by the live servers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=262</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About the Moodle Portfolio activity tool</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=241</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=241#comments</comments>
		<pubDate>Mon, 14 Nov 2011 11:40:50 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=241</guid>
		<description><![CDATA[The Portfolio activity Moodle 2 module (source code) is a key part of the portfolio toolkit offering at the Open University. The module helps module teams to deliver structured material to a student’s portfolio; files/folders either on their desktop pc or stored in the cloud using Google Docs. The tool supports two ‘modes’: Scaffold – [...]]]></description>
			<content:encoded><![CDATA[<p>The Portfolio activity Moodle 2 module (<a href="https://github.com/JISC-DOULS/moodle-mod_portfolioact">source code</a>) is a key part of the portfolio toolkit offering at the Open University. The module helps module teams to deliver structured material to a student’s portfolio; files/folders either on their desktop pc or stored in the cloud using Google Docs.</p>
<p><span id="more-241"></span></p>
<p>The tool supports two ‘modes’:</p>
<ul>
<li>Scaffold      – a collection of folders and files that can be pushed to the portfolio</li>
<li>Template      &#8211; A series of items (including user generated) that are collated into a      document.</li>
</ul>
<p>The tool supports two export formats:</p>
<ul>
<li>File      (rtf document) and Zip (when exporting multiple files)</li>
<li>Google      Docs &#8211; can be optionally targeted to a specific Google Apps domain.</li>
</ul>
<p>Availability of export options to the end user can be configured at a site-wide level and per-activity.</p>
<p>Both ‘modes’ and exports utilise the <a href="http://docs.moodle.org/dev/Subplugins">Moodle sub-plugin architecture</a>, so extra functionality can be developed independently as required.</p>
<h3>Scaffolds</h3>
<p><span style="font-weight: normal;">When in scaffold mode the activity enables the exporting of the scaffold folders and files to the student’s portfolio. Scaffolds are created by course administrators using the Moodle file form control and can contain folders, sub-folders and files of any type that are supported by Google Docs for conversion to its native format. Scaffolds reside at the course level so can be re-used across any number of portfolio activities. Scaffolds can also be integrated into template mode portfolio activities; in these instances the scaffold has the template document added into it before export.</span></p>
<div id="attachment_245" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/ScaffoldDesigner.png"><img class="size-medium wp-image-245" title="Editing a scaffold in the module admin interface" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/ScaffoldDesigner-300x241.png" alt="Editing a scaffold in the module admin interface" width="300" height="241" /></a><p class="wp-caption-text">Editing a scaffold in the module admin interface</p></div>
<div id="attachment_244" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/scaffold_zip.png"><img class="size-medium wp-image-244" title="Scaffold export to zip file" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/scaffold_zip-300x257.png" alt="Scaffold export to zip file" width="300" height="257" /></a><p class="wp-caption-text">Scaffold export to zip file</p></div>
<p>When exporting to Google docs the structure of the scaffold is represented using <a href="https://docs.google.com/support/bin/answer.py?hl=en-GB&amp;answer=68486&amp;topic=1361446">collections</a> (‘tagged’ folders). A new collection is added on every export; this can be shared with a tutor/mentor for review or be exported for assessment submission.</p>
<div id="attachment_246" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/scaffold_google.png"><img class="size-medium wp-image-246" title="A Google Docs account populated with a portfolio export" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/scaffold_google-300x257.png" alt="A Google Docs account populated with a portfolio export" width="300" height="257" /></a><p class="wp-caption-text">A Google Docs account populated with a portfolio export</p></div>
<h3><strong>Templates</strong></h3>
<p><strong><br />
</strong></p>
<p><span style="font-weight: normal;">When in template mode the user is lead through the activity, filling in entries in the template, culminating in the export of a document that is added to their portfolio. Templates are created by course administrators using the designer interface accessed from the activity. Templates are structured using pages; each page contains and number of items. Items are typically either instructional text or some kind of user entry form field such as text entry or checkbox. Templates reside at the course level and can be reused across any number of portfolio activities.</span></p>
<div id="attachment_247" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/portfolio_act_staff2.png"><img class="size-medium wp-image-247" title="Portfolio activity template designer interface" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/portfolio_act_staff2-300x245.png" alt="Portfolio activity template designer interface" width="300" height="245" /></a><p class="wp-caption-text">Portfolio activity template designer interface</p></div>
<p>Template activities and items are highly configurable, allowing for complex functionality; for example, your template could generate a three page document but its creation by the end user could be split over three activities, each concerned with a separate page.</p>
<div id="attachment_248" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/activity_template.png"><img class="size-medium wp-image-248" title="Portfolio activity - template" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/11/activity_template-300x234.png" alt="Portfolio activity - template" width="300" height="234" /></a><p class="wp-caption-text">Portfolio activity - template</p></div>
<h3><strong>Technical challenges<br />
</strong></h3>
<p><span style="font-weight: normal;">Creation of this module was quite a substantial development and along the way there were a number of challenges that were needed to be overcome.</span><br />
Firstly, most of the required interactions with Google Docs were not supported in the Moodle libraries. In this development we added some extra features within our module (<a href="https://github.com/JISC-DOULS/moodle-mod_portfolioact/blob/master/save/google/lib.php">https://github.com/JISC-DOULS/moodle-mod_portfolioact/blob/master/save/google/lib.php</a>) that work with collections and utilise the <a href="http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#CreatingDocumentOrFileWithContentOnly">resumable file upload feature</a> of the <a href="http://code.google.com/apis/documents/">Google Docs API</a>. It would be possible to extract many of these and add them to the core libraries in the future.</p>
<p>Secondly, the complexities of the requirements around reuse of templates across a course caused issues – specifically with the <a href="http://docs.moodle.org/20/en/Backup_and_restore_FAQ">back and restore process</a>. In most activities within Moodle the data is associated solely with a specific instance of the activity; in the Portfolio Activity the template (and potentially user) data is associated with the course. The backup and restore process works at an individual activity level (so whilst backing up a course each activity is processed in isolation) and so there was a need to be wary of duplication e.g. if a template is reused across three activities that are being backed up the template should only be stored once, not three times. In order to overcome this issue checks had to be put into the restore process in the module to ensure that any template was only processed once per process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=241</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some developments complete &#8211; code now available</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=236</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=236#comments</comments>
		<pubDate>Thu, 27 Oct 2011 15:26:20 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=236</guid>
		<description><![CDATA[A number of project developments have now cleared testing and have been added to our VLE code-base ready for the next system release (which is the beginning of December). These are: Portfolio activity Moodle module Google collaborative activity Moodle module OpenSocial gadget connector for Moodle VLE Study planner gadget The code source generated from the [...]]]></description>
			<content:encoded><![CDATA[<p>A number of project developments have now cleared testing and have been added to our VLE code-base ready for the next system release (which is the beginning of December).</p>
<p>These are:</p>
<ul>
<li>Portfolio activity Moodle module</li>
<li>Google collaborative activity Moodle module</li>
<li>OpenSocial gadget connector for Moodle</li>
<li>VLE Study planner gadget</li>
</ul>
<p>The code source generated from the project now has a place to live:</p>
<p><a href="https://github.com/JISC-DOULS">https://github.com/JISC-DOULS</a></p>
<p>Some of these developments are up in the github area now &#8211; note that documentation is a bit sparse at present.</p>
<p>We will hopefully have some blog posts up in the next few weeks detailing these developments and demonstrating their features.</p>
<p>Some will be demonstrated as part of the <a href="http://www.jisc.ac.uk/whatwedo/programmes/elearningpedagogy/elpconference11/Activity%20Week.aspx">JISC Innovating e-Learning pre-conference  activity week</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=236</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OU Study planner gadget</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=227</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=227#comments</comments>
		<pubDate>Fri, 29 Jul 2011 07:41:42 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=227</guid>
		<description><![CDATA[It’s been a long (long) time since the last blog post about the project and there is a list of a whole lot of things that we have been working on to disseminate. So here goes with item number 1 &#8211; the study planner gadget. As mentioned, back in May, in a blog post by [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>It’s been a long (long) time since the last blog post about the project and there is a list of a whole lot of things that we have been working on to disseminate. So here goes with item number 1 &#8211; the study planner gadget.</p>
<p>As mentioned, back in May, in a blog post by our project director Niall Sclater (<a href="http://sclater.com/blog/?p=587">The Distributed Learning Environment Comes a Step Closer</a>) we have produced a Google (OpenSocial) Gadget that displays a student’s Moodle course website(s) study planner(s). Since this initial version there have been a number of minor updates and improvements and now the gadget is in testing ready for release, the end of, next month. There were some useful lessons learned during the development and I’m going to try and document them in this post, along with an overview of how the gadget works.</p>
<div id="attachment_226" class="wp-caption alignnone" style="width: 330px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/07/OU_study_planner_gadget_home.png"><img class="size-full wp-image-226 " title="OU_study_planner_gadget_home" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/07/OU_study_planner_gadget_home.png" alt="OU study planner gadget" width="320" height="409" /></a><p class="wp-caption-text">OU study planner gadget on iGoogle</p></div>
<p><span id="more-227"></span></p>
<p>The gadget comprises of:</p>
<ol>
<li>Gadget XML</li>
<li>Moodle <a href="http://www.open.ac.uk/blogs/douls/?p=47">SNAPP plugin</a></li>
<li>Moodle web service to return planner info</li>
<li>Moodle web service to set activity completion status</li>
</ol>
</div>
<div id="attachment_228" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/07/Studyplannergadget.png"><img class="size-medium wp-image-228" title="Studyplannergadget" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/07/Studyplannergadget-300x225.png" alt="Components of the OU study planner gadget" width="300" height="225" /></a><p class="wp-caption-text">Components of the OU study planner gadget</p></div>
<div>The gadget is populated by HTML content returned by a web service in the OU ‘studyplan’ <a href="http://docs.moodle.org/20/en/Course_formats">Moodle course format</a>. The web service calculates which ‘live’ Moodle courses the user is enrolled on and returns information on these to the gadget, in JSON format. The web service calls the same code that is used to create the main course view content, so the HTML returned is exactly the same as that used when accessing the course page on the VLE. This means that the gadget will always reflect any changes made to the VLE, so there is no need to maintain it separately. The gadget loads in the CSS used in the OU’s Moodle theme and applies class definitions to the content container div that match those declared within the Moodle page so that the gadget content looks the same as the content within the VLE.<br />
If the user is enrolled on more than one Moodle course each are displayed within tabs in the gadget. The tabs are generated using the YUI3 JavaScript library and use <a href="http://www.w3.org/TR/wai-aria/">WAI-ARIA</a> for accessibility. Gadgets support a native tab system but these did not seem to be that accessible in iGoogle (keyboard) and do not utilise ARIA.<br />
The gadget can be ‘maximised’ which will switch it to use the <a href="http://code.google.com/apis/igoogle/docs/anatomy.html#canvasview">‘canvas’ view</a>. When in this view the gadget is re-sized, using call <a href="http://code.google.com/apis/gadgets/docs/ui.html#Dyn_Height">gadgets.window.adjustHeight()</a>, when each tab is selected to ensure that the scrolling of the gadget is correct.</p>
<div id="attachment_225" class="wp-caption alignnone" style="width: 310px"><a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/07/OU_study_planner_gadget_max.png"><img class="size-medium wp-image-225" title="OU_study_planner_gadget_max" src="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/07/OU_study_planner_gadget_max-300x285.png" alt="Maximised 'canvas' view of the OU study planner gadget" width="300" height="285" /></a><p class="wp-caption-text">Maximised &#39;canvas&#39; view of the OU study planner gadget</p></div>
<p><strong>Setting activity completion status (gadget to VLE communication)</strong></p>
<p>As well as receiving information from the VLE the gadget also sends data to the Moodle instance. Within the gadget the student will see an indication of the completion status of an activity. As with the VLE they can manually set the completion status to complete/not complete from the gadget. This presented some challenges as the use of a web service to update completion status was not enough on its own.  This was due to the caching of completion information in Moodle within the user’s session; because of this changing the completion status via a web service means that the user will not instantly see the updated status if they are already logged in.<br />
To overcome this issue the following steps are undertaken when completion status of an activity is changed by a gadget user:</p>
<ol>
<li>A <a href="https://developer.mozilla.org/en/http_access_control">cross-domain ajax call</a> (<a href="http://www.w3.org/TR/cors/">CORS</a>) with credentials is made to a page in Moodle that sets the activity completion status (which does so by calling the usual page that sets completion via AJAX). This will only be successful if:
<ol>
<li>The browser supports this call (later versions of Firefox &amp; Chrome etc &#8211; not IE)</li>
<li>The user is logged in to the VLE.</li>
</ol>
</li>
<li>If the CORS call fails because the user is not logged in then a web service call is made to update the activity completion status.</li>
<li>If the CORS call fails for any other reason (or the browser does not support) then:
<ol>
<li>a <a href="http://developer.yahoo.com/yui/3/jsonp/">json-p call using YUI </a>is made to the same Moodle page. The user will need to be logged in to the VLE in order for this to be successful</li>
<li>As we cannot be sure of the success of the json-p call (there is no mechanism to detect failure), a web service call is also made to update the activity completion status.</li>
</ol>
</li>
</ol>
<p><strong>Summary of some of the lessons learned during development</strong></p>
<ol>
<li>Error checking &#8211; have lots of it. When making AJAX calls and then doing something with the returned data the more error checking and graceful failure points the better.</li>
<li>Don’t trust that that osapi.get calls will always return an error correctly. With the signed requests through to Moodle initially there was only error checking against an error being returned. However, sometimes the authentication from iGoogle seems to go a bit wonky and will expire so all signed requests fail. These don’t return an error &#8211; instead I also had to check the status of the response to detect when things went wrong.</li>
<li>Debugging script in gadgets can be frustrating. Refreshing iGoogle presents the gadget from a new url, so debug breakpoints get lost.</li>
</ol>
</div>
<p>The <a href="http://www.open.ac.uk/blogs/douls/wp-content/uploads/2011/07/Study-planner-gadget-specification.doc">specification for the study planner gadget</a> is now linked from the <a href="http://www.open.ac.uk/blogs/douls/?page_id=162">specifications page</a> of the blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=227</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exporting Moodle calendar data to Google calendar</title>
		<link>http://www.open.ac.uk/blogs/douls/?p=132</link>
		<comments>http://www.open.ac.uk/blogs/douls/?p=132#comments</comments>
		<pubDate>Thu, 17 Feb 2011 15:06:02 +0000</pubDate>
		<dc:creator>Jason Platts</dc:creator>
				<category><![CDATA[DOULS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Moodle]]></category>
		<category><![CDATA[#jiscdvle]]></category>

		<guid isPermaLink="false">http://www.open.ac.uk/blogs/douls/?p=132</guid>
		<description><![CDATA[The Moodle calendar is used as a personal calendar tool by students and also contains event information from curriculum modules such as assignment and tutorial dates. This data is also exposed via the module websites (Moodle courses). All this calendar information can be downloaded in iCalendar format or as a feed and imported into supporting [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.moodle.org">Moodle</a> calendar is used as a personal calendar tool by students and also contains event information from curriculum modules such as assignment and tutorial dates. This data is also exposed via the module websites (Moodle courses). All this calendar information can be downloaded in <a href="http://en.wikipedia.org/wiki/ICalendar">iCalendar format</a> or as a feed and imported into <a title="Calendar applications that support iCalendar format" href="http://en.wikipedia.org/wiki/List_of_applications_with_iCalendar_support">supporting calendar applications</a> such as Outlook.</p>
<p>One aspect of the DOULS project is to improve the integration between our institutional VLE (Moodle) and Google Apps for education (which is available to all students as part of our email provision). A development task in the project is to update the calendar export process so that students can get  the data from the VLE into their Google calendar much more easily.<br />
Once in the Google calendar the events should synchronise with data on the VLE so if any events are changed,  for example a tutorial start time, then the Google calendar should reflect this change. There are a number of advantages to using the Google calendar over the Moodle calendar alone as you can then: use the Google calendar gadget to view the information on your homepage (which links in to the other part of the project), get text alerts for upcoming events,  sync the calendar with an Android phone.<span id="more-132"></span></p>
<p>This task is now almost complete; there still needs to be some design input so it can integrate with the new VLE design that is currently being developed and it is going to be usability tested by students in the next few weeks to ensure it is easy to use. As with all of the outputs from this project, the code for this development will be made available to the Moodle community once it is stable and ready for release.</p>
<p>This development consists of a <a href="http://docs.moodle.org/en/Development:Local_customisation#Custom_.2Flocal.2F_plugins">Moodle local-plugin</a> that contains a new export interface as well as the logic to generate the calendar data. The advantage of using a local-plugin is that the display and logic can be customised for our needs without having to change any Moodle core code; yet we can still make use of some of the existing code libraries and can even have our custom export process take place instead of the standard one by using a <a href="http://docs.moodle.org/en/Development:Themes_2.0_overriding_a_renderer">theme renderer override</a>.</p>
<p>The new calendar export process includes the means to directly add the VLE calendar feed the user selected to their Google calendar (a one-click process). It supports standard Google accounts or can be directed to a Google domain where single-sign-in is utilised (such as at the OU).</p>
<p>Some of the key points learnt from the development of this feature were:</p>
<ul>
<li>It was our intial intention to use and API to manage calendar subscriptions but the Google calendar API can&#8217;t be used to subscribe to an external calendar feed (<a title="Page on Google issue tracker" href="http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=210">Open Issue</a>).</li>
<li>However, you can subscribe someone to a calendar feed by using an &#8216;add to Google&#8217; button as detailed at: <a href="http://www.google.com/intl/en/googlecalendar/event_publisher_guide.html#public">http://www.google.com/intl/en/googlecalendar/event_publisher_guide.html#public</a>. The URL required takes the form http://www.google.com/calendar/render?cid=your_calendar_url - you can replace the standard Google address with a Google Apps domain address if required.</li>
<li>If  the calendar file/feed has a name defined then this will be displayed in the Google calendar list. Use the iCalendar  property &#8220;<a href="http://en.wikipedia.org/wiki/ICalendar#Calendar_extensions">X-WR-CALNAME</a>&#8221; to do this e.g. X-WR-CALNAME:VLE calendar.</li>
<li>The Moodle calendar can contain events that have a different context e.g. course, site, user. Course events are added to a calendar &#8216;category&#8217; with the short name of the course; other events are not defined with a category. If a calendar has a mix of items where some have a category defined and some don&#8217;t then the Google calendar will often not import all. To overcome this in our calendar feed all items are defined with a category (either the course name or &#8216;personal&#8217; or &#8216;site&#8217;).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.open.ac.uk/blogs/douls/?feed=rss2&#038;p=132</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
