We recently upgraded our Moodle 1.9 clients to Moodle 2.1.  One of our clients also uses Wordpress with their students as a portfolio platform.  As part of the upgrade, the client wanted us to develop a Single Sign-On solution between Moodle and Wordpress where the students on Moodle just need to click a link and they will be automatically logged in to their Wordpress subsite.  Moodle would be the authentication authority so automatic account creation on the Wordpress side is also a requirement if no corresponding account exists yet on Wordpress.

We've done several SSO implementations before on Moodle 1.9  based on Moodle's MNET.  But MNET will soon to be discontinued so we needed another solution that will be easily supported by Moodle.  I've read that Moodle 2 is going to take the OAuth route but that it's not ready yet.  Therefore I decided to  write a basic OAuth server implementation for Moodle 2 and a corresponding OAuth consumer client for Wordpress.  Hopefully, when Moodle 2's OAuth replacement for MNET is mature enough, the scripts to move our clients to this implementation are easy enough to create.

One of our  other clients was using the Moodle 1.9 MNET implementation to SSO with Elgg.  I was able to code an Elgg OAuth consumer plugin as well which is able to communicate with the same Moodle OAuth server so this allowed us to upgrade all of our Moodle 1.9 installs to the newer Moodle 2.1 and still retain the SSO functionality to different platforms that they require.

I've provided a tarball of the code implementation here in case this sort of implementation is useful to you.  This includes the Moodle 2 OAuth server plugin, the consumer client plugin for Elgg 1.7 and the consumer client plugin for Wordpress.  The wordpress plugin has been tested and runs on Wordpress 3.0.5 but the code is straightforward enough that it might work without modifications on later Wordpress versions.  If you want to SSO to another platform but still want to use Moodle 2 as your identity provider then you can still use the server implementation of this code and write your own consumer client implementation.

View full post

posted in ,

(photo by Moodle)
We've recently upgraded several sites running on Moodle 1.9.x to 2.1.x.  The underlying code between these versions are miles apart but the moodle upgrade code does a good job of keeping the process simple and straightforward.  The upgrade procedure is similar to how one upgrades to a newer point version (e.g. 1.9.2 to 1.9.3).  It's basically replacing the old code with a new one and logging in as an admin and visiting the site url.  Here are some notes to remember.
  1. Always check beforehand if the 3rd-party modules you have installed have newer versions that are compatible with 2.1.  If there's none then they will be disabled so this might affect your decision to upgrade if these plugins are important to be enabled in your instance.  If you're ok with them being disabled after the upgrade but still want to use them in the future then it can be upgraded separately once they have proper upgrade scripts.
     
  2. There may be some some Moodle 1.9 core modules that were phased out and not being maintained anymore for 2.x so you'll need to plan for those as well before you deploy. An example of this is the journal plugin which has been officially discontinued but still being maintained under contrib.  Some plugins like exercise are not being maintained anymore since the newer code now recommends the use of assignment and workshop modules instead.
     
  3. Moodle 1.9 themes are not compatible with 2.1 so you'll need to use one of the included themes or look for one that supports Moodle 2 (http://moodle.org/themes).  If you need to use elements in your current theme then it's probably better to copy an included stock theme to your own theme folder and start modifying the copied theme.  The Moodle 2 themes are highly configurable so that helps a lot.
     
  4. Don't forget to copy over to the config.php file your setting for "passwordsaltmain" if it's present or you'll not be able to login.
     
  5. This is a given.  Make sure you test the upgrade first on a copy of your data before doing the actual upgrade.  And when you do the upgrade make sure you backup your database as well as your data repository.  Moodle 2 upgrades the structure of the moodle data directory so it's important that you have a copy of the old format in case you want to revert.
     
  6. After the core upgrade there are some additional tasks related to the system (e.g. converting to your database tables to innodb format) that you may need to do.  Most of these will be displayed in your admin notifications screen.
     
  7. Moodle 2 now makes use of a repositories file system and this is one of the major difference from Moodle 1.  It could be a little confusing to use when one is accustomed to the old one so you may want to train your teachers/instructors on how to use this system.
     
  8. IMS repository support is not yet quite there for Moodle 2 so this is something to consider if you are using one.
     
This is not in any way complete but these are the more common ones to consider when doing the upgrade.  Hopefully you'll have a smooth and flawless process once it's your time to upgrade.

View full post

posted in

Microsoft Education Labs has a free Office Addon for Moodle. This addon allows teachers or the owner of a Moodle course to upload documents to their course and access Moodle documents from within Office. Once the addon is installed to Office two items are added to the file menu: Open from Moodle, and Save to Moodle.

 The user configures the address of their Moodle server and logs in with their Moodle login. After this the user can access Moodle files from Office. 

 The addon works with Office 2003 and 2007 and Moodle 1.8.x and 1.9.x. The My Courses should be installed for the addon to work. No additional Moodle modules are required for the addon to work.

View full post

The Certificates module for Moodle will allow granting certificates based on completion of a Moodle activity.It allows uploading graphics and setting the style of the generatied certificate. Once a user has met the minimum criteria they can download a PDF and print their certificate.

There are several options for setting criteria for granting a certificate. These include overall course grade, time spent in the course, and ability to require one or more activities be completed, optionally with a minimum grade for the activities. Any of these requirements can be combined to determine when a student receives a certificate.

 Images can be uploaded to style the borders and include a watermark if desired. A signature image can be included, and of course, a logo can be uploaded.

View full post

posted in

(photo by Kasaa)

We were recently tasked with an Elgg project that requires forum discussions to behave like mailing lists.  There's already a community contributed plugin that does something similar but doesn't quite meet the client's required specifications, notably with regards to permissions.

During the initial design, the client mentioned that we should think about reusability since the system might require other functionality that makes use of incoming emails in the future.  So instead of just coding a plugin that will take care of discussions via email I decided to write a plugin that can handle incoming emails in a generic way and then trigger plugin hooks.  The different plugins will then be responsible for implementation on how to handle the incoming email.

View full post

posted in , ,
Following up on our MNET Support plugin for Elgg, we also developed an extension to Moodle's MNET functionality to allow posting information from Moodle into the eportfolio. In our case we used ELGG 1.5 as the eportfolio. For Moodle 1.9.x, only posting files to the e-portfolio is supported. We needed to send information on a student's activities to the eportfolio, the Elgg "River" view which shows a history of student activities.

We added a new post_status method to Moodle's mnet enrol library that allows us to push updates from Moodle to ELGG. Once we had this function enabled we modifed a few of the Moodle features to call this function to update the eportfolio. These included course enrollment , successful completion of a questionnaire, earning a certificate, and posting to a forum. A simple function call for each action is all that is needed. To find the correct place in the code, I noticed add_to_log was called with similar information for the different actions so I added the code for Elgg posting in the same places. Since the users are already authenticating using MNE, we can match the corresponding user on Elgg so that the status goes to the correct student's River.

View full post


(photo by oooh.oooh)

We recently posted about our project that implements Single Sign-On between Moodle and Elgg using Moodle Network (MNET). We wrote an Elgg plugin that extends the mnet-lib PHP library as part of this implementation.  This early version of the plugin allows Elgg to function as an Identity Provider (IdP)  so that its users can SSO to moodle.  The current implementation assumes that ELGG is the authorative system. It doesn't have the capability to act as Service Provider.  We expect to be doing a great deal more work to extend this plugin in its early stages so stay tuned!

View full post

posted in , ,

Recently I had a project to integrate Elgg and Moodle. In an earlier post I discused the single sign on feature where users could login to Elgg and be automatically signed into Moodle when they clicked the link to Moodle pages.

In addition I needed to make the themes for Elgg and Moodle match. This is quite challanging. As of Moodle 1.9 course layout still uses some tables which make duplicating a similar layout to Elgg difficult.

In addition I had to make the top navigation/toolbar match between Elgg and Moodle. This was interesting because the menus in the toolbar were generated dynamically by Elgg based on the user identity. To accomplish this I created an AJAX based solution using the Yahoo UI library. I created a custom Elgg view that just provided the toolbar without any additional content. This was added on the fly to the top of the Moodle pages for a seamless experience.

View full post

posted in

We recently connected ELGG and Moodle using the Moodle Network feature. This provides an API to allow single-sign-on between multilple servers. This can include multiple Moodle server, or other servers that support the MNET API.

For this project we needed ELGG to be the primary authority so users would sign into ELGG first, and be able to access Moodle by clicking a link that would provide the proper information to Moodle to log them into Moodle. 

To the end user the integration is seamless. They click a link and the Moodle site can appear as integrated into the ELGG site. This requires some fiddling with the HTML and CSS to get Moodle and ELGG themes to be consistent. I address this in another post.

View full post

posted in

I have been exploring making a new theme for Moodle. There are already some good resources on creating a new theme in the Moodle documentation. These cover customizing the CSS to make changes to most parts of Moodle.

I did not find any good docs on actually changing the templates for Moodle. In the current Moodle 1.9.x design the index page and other course pages don't entirely share layouts. In addition Moodle 1.9.x uses table based layout so styling the boxes can be a little tricky.

The first problem I had was getting the spacing between the columns on the home page and the course pages consistent. Course pages have a container in the middle column that you can style, but the index page does not. It has a div that does not have a css id or class. 

View full post


(photo by martin.canchola)

In a not so recent article, it was mentioned that based on a study, online learning tends to be better than the conventional in-person or classroom teaching.  Students in an online learning condition performed better than those receiving in-person instructions. 

Learning Management Systems are widely used in many different countries.  To add to that, the social networking technology also has its share of rapid growth.  These combined allow students to teach each other and share resources online. But according to Philip R. Regier, the dean of Arizona State University’s Online and Extended Campus program, "The technology will be used to create learning communities among students in new ways."  "People are correct when they say online education will take things out the classroom.  But they are wrong, I think, when they assume it will make learning an independent, personal activity.  Learning has to occur in a community."

View full post

About two weeks ago, a client raised an issue with their moodle installation.  The client wanted course teachers to be able to take LAMS activites instead of just being allowed to author them.  Then just this week, another client wanted to suppress the emails sent to course teachers when a student answers a quiz activity in moodle.

Both these issues are related in a way since the code logic that determines who can take a LAMS activity and the code for who are notified of quiz submissions both rely on checking moodle roles and capabilities.  If you're familiar with moodle, then you'd be aware of the different roles that can be assigned to a user both on the site level and on the course level.  What some people miss is that there are capabilities as well that's assigned to each of these roles.  In order to resolve the issues that the clients raised without modifying the code, I needed to override these role capabilities so that they would behave as to how the client wants them to.

I'll outline here the steps of what you need to do to change the default roles capabilities in case you are faced with a similar problem.

To change the top-level role capabilities:

View full post

posted in

(photo by mahara.org)
I did a few posts on Single Sign-On between Moodle and Elgg some time back.  Recently, I looked at Moodle Network (MNET) and how well it integrates with other software with support for it.  Since we are interested in integrating Moodle with portfolio and social networking tools, I tried setting up Mahara to "talk" with Moodle using MNET.  Setting it up was pretty easy -- thanks to the detailed guide called Mahoodle.  After I got it working and tested it a bit, I liked what I saw.

View full post

posted in

(photo by LAMS Int.)
 

21 July 2008, Sydney, Australia & Boston, USA

LAMS International Pty Ltd is pleased to announce that Solution Grove, Inc has become the first USA partner for LAMS. The partnership will see LAMS being actively promoted in United States, both as a standalone solution and as an integrated module with other learning platforms.

Solution Grove provides hosting, support and services for open source learning solutions in the United States. Solution Grove's existing customers include MIT Sloan, Harvard Kennedy School of Government, Massachusetts General Hospital and many educational organisations. Solution Grove will actively promote LAMS to the e-learning community in United States including governments, schools and universities.

View full post

posted in , ,

(photo by LAMS Foundation)

In an earlier post, I wrote about how to properly integrate Adaptive Curriculum Activity Objects inside Moodle.   After having success with that, the client now needs to have the activity object as part of a LAMS sequence. 

The approach I came up with is to have the URL to the scorm activity created as a resource in the LAMS sequence.  This particular client's LAMS server is in a different domain and port than the Moodle server and it doesn't satisfy the requirements of JavaScript's Same Origin Policy.  This restriction presents a minor issue when launching the resource in a framed LAMS window. The only way to integrate it properly within LAMS is to have it launch in its window.

View full post

posted in ,

(photo by Adaptive Curriculum sample screenshots)

Solution Grove has a client who wanted to try out Adaptive Curriculum's (AC) Activity Objects (AO) inside Moodle.  This initially sounded trivial since they provide SCORM compliant packages and I thought it was easy as just creating a SCORM activity for the AO.  It turned out that AC's AOs are not standalone and they require authentication when installed on third party servers.  Their objects use standard SCORM API calls for getting the user and session information then use these values to authenticate.  The first part's the easy one since I don't need to write any code for that because Moodle already has API for SCORM 1.2.

The problem I encountered was that the authentication method used by AC needs to be run in a stateless manner through a server-to-server HTTP post using the user and session information that originated from the third party server (in this case, the moodle installation). This presents a problem for server-to-server communication because in moodle, the session id for the user is stored in a cookie and we will only be able to get that cookie if the script is run in the browser where it was issued.  At this point, we are now in contact with AC to ask a few questions so that I can proceed implementing a code to support their AOs.

View full post

posted in ,

(photo by freeparking)
This is the second part of my post on mapping Moodle courses to Elgg communities.  You can read about part 1 here.  This post discusses the actual implementation.

In order for us to track a one-to-one relationship between a Moodle course and an Elgg community we first need to create a mapping table.  The table definition I used is as follows:

 
															<TABLE NAME="block_eportfolio_course_map" COMMENT="">
	<FIELDS>
	<FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="courseid"/>
	<FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="eportid"/>
	<FIELD NAME="eportid" TYPE="char" LENGTH="128" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="courseid"/>
	</FIELDS>
	<KEYS>
	<KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="Primary key for block_eportfolio_course_map" NEXT="courseid"/>
	<KEY NAME="courseid" TYPE="foreign" FIELDS="courseid" REFTABLE="course" REFFIELDS="id" NEXT="courseid_uniq" PREVIOUS="primary"/>
	<KEY NAME="courseid_uniq" TYPE="uniq" FIELDS="courseid" PREVIOUS="courseid"/>
	</KEYS>
	</TABLE>
	
The eportid column corresponds to the Elgg community id for a particular course; the courseid is the one that tracks the Moodle course.

Since our code already supports single sign-on, we just add to that to track whether an Elgg community needs to be created.  Let us reuse the signupredirect.php page and just add an extra variable that tells the system to create a corresponding community.  The significant section is as follows:

View full post

posted in

2-3-98 Moodle Recap [confluence.delhi.edu:8443]


(photo by maxinstosh of flickr)

I attended the 2-3-98 Open Discussion on Technology in Education conference last week. In many cases, Open Source is becoming just another option when evaluating software for use in education. Of course, there are still objections from some, but more and more software in compared on the solution it can provide, without regard for the license. One day of the conference was devoted to Moodle, and it was clear that Moodle was regarded as a superior solution by those that chose it. There was not any bias in choosing open source or proprietary solutions noted by those that chose Moodle. That is, they chose Moodle for the the features it provides.

View full post

LAMS on the XO [wiki.lamsfoundation.org]

LAMS - The Learning Activity Management System is one of the open source eLearning systms we support.  They recently met with One Laptop per Child people (OLCP).  LAMS learner runs fine on the XO laptop (pictures here) and they are developing a version to go on the servers that will be at each school.

 

View full post

posted in

(photo by 2-3-98 Conference)

2-3-98 Conference: An Open Discussion on Technology in Education will address Open Source in Higher Education, and include a second day Moodle Moot. I'll be attending the conference June 19 & 20, 2008 as SUNY Delhi. SUNY Delhi is  using Moodle for their unversity LMS.

One of our clients, Stephen Wilmarth, from the Center for 21st. Century Skills will be giving a presentation on how they are using Moodle to conect high school students in CT and in China!

This should be a good opportunity to both learn more about Moodle, spread the word on LAMS and ELGG integrated with Moodle in an amazing setting. According to the web site: "Delhi, NY is nestled in the Catskill Mountains in a land of wooded hills and fertile green valleys with streams, covered bridges, well-tended dairy farms and beautiful vistas. Join us in a great setting for a great conference!"

View full post


(photo by Elgg Social Networking)

The highlight of Chapter 1 of Elgg Social Neworking is a concise features list - What can Elgg Do?

  • Blogging
  • File repositories for individauls and communities
  • Podcast support
  • Full access controls
  • Supports tagging
  • User Profiles
  • Full RSS support
  • RSS aggregator
  • Create Communities
  • Collaborative community blogs
  • Create friends' networks
  • Import content
  • Publish to blog
  • Thorough pricacy controls
  • Multilingual
  • Branding/Customization
  • OpenID
  • Import/export friends with FOAF

In addition to introducting the features, Chapter 1 covers the basics of social networking as a foundation for understanding Elgg. However, this is probably not how most of our educational users come to Elgg. My observation of educational users is that Elgg's first role is as a simple ePortfolio, then to support blogging for reflection. 

View full post

posted in

(photo by Amazon)

Elgg has a new book!

We are currently using Elgg as the ePortfolio and social networking tool of our Personal Learning Environment. My plan is to review the book and highlight the sections in each chaper that are most useful for people using our integrated system.

Preface: 

I am writing a lot of marketing material these days as we launch our PLE product.  Thus I have a huge respect for how hard it is to describe these rich complicated systems simply.  Here is a quote:

Elgg provides each user with a personal weblog, file repository (with podcasting capabilities), an online profile, and an RSS reader.  Additionally, all of the user's content can be tagged with keywords - so they can connect with other users with similar interests and create their own personal learning network. However, where Elgg differs from regular weblog or commercial social network (such as MySpace) is the degree of control each user is given over who can access their content.  Each profile item, blog post, or uploaded file can be assigned its own access restrictions - from fully public to readable only by a praticular group or individual.

View full post

posted in

(photo by by Bramus!)

A very interesting post caught my attention.  There's an easier and faster way to add Google Analytics to Moodle.

If you have no server access and can't add the Google Analytics code directly on the source code, Eamon of rElearn.ie has found an alternative solution for this.  It is simply done by adding an "HTML block" and pasting the Google codes.

View full post

posted in

Youtube-like Moodle Tutorials [moodletutorials.org]


(photo by Moodle Tutorials)

Are you a Youtube junkie?  Almost every internet users (if not all) have come across or used this video-sharing site.  Moodle users and/or developers would have most likely used Youtube for a share of its tutorial.  But look no more.  Moodle Tutorials is the answer.

I was reading GHOP when I found this site.  It pretty much is a clone of Youtube and its functionalities.  Young students have uploaded them to the site and more are definitely coming.

View full post

posted in

(photo by solutiongrove.net)

Any idea what a whiteboard is?

Interactive whiteboards are used in many schools as replacements for traditional whiteboards or flipcharts.  They provide ways to show students anything which can be presented on a PC.  In addition, it allows teachers to record their instruction and post the material for review by students at a later time.  This can be a very effective instructional strategy for students who benefit from repetition, those who need to see the material presented again, for students who are absent from school, for struggling learners, and for those who review for examinations.

For Moodle, you may try a third party whiteboard software.  You can use it either as a single component or as a component of online interactivity suite.

View full post

posted in

This is a double learning experience for me. It is a reflective on the reading for this week's class, Chapters 1-3 of The Innovators Dilemma by Clayton Christensen, and how it relates to my project, which is a business plan for our MEL product.  It is also my first video of this type as I continue to try to keep up with the average high school student level of video production!

View full post

posted in

(photo by freeparking)
As part of Solution Grove's ongoing improvements to its Moodle-Elgg-LAMS integration demo site [http://www.solutiongrove.net], I was tasked to implement a one-to-one correspondence between Moodle courses and Elgg communities, using the e-portfolio block which I previously wrote about in these posts [1, 2]. What this means is that instead of the Moodle e-portfolio block fetching general activities from Elgg, it gathers posts, comments, and the names of newly shared files from the members of an Elgg community that corresponds to the Moodle class. This diverts a little from original behavior which required an Elgg object to be "favorited" before it showed up in the Moodle E-portfolio block.

The end result is a custom e-portfolio block that presents the following user experience:

View full post

posted in

(photo by oooh.oooh)

A few weeks ago, I posted how Solution Grove implemented Moodle to ELGG Single Sign-On.  That was only the first phase.  The client also needed it to seamlessly auto-create users on ELGG using credentials from the user's Moodle account.  We searched for a solution for this and found his ELGG-WebCT integration solution from Aperto Elearning Solutions.  Even though the other component was WebCT, it was still interesting to us as the concept is similar - the user is automatically created on the ELGG side.  Solution Grove emailed Aperto and their contact person was kind enough to point to us the Aperto download server, where the code can be downloaded, and added a few tips in the email as well.

View full post

posted in

(photo by oooh.oooh)
One of Solution Grove's clients, The Center for 21st Century Skills, needs to integrate Moodle, ELGG, and LAMS as an online learning environment for their Connecticut Career Choices (CCC) program.  A requirement of this implementation is to support single sign-on (SSO) between Moodle and ELGG.  This post summarizes the steps Solution Grove conducted to make it work on our test servers.

For this particular implementation, we will be working with the following software versions: Moodle 1.8.3 and  ELGG 0.8.1.

The assumption is that Moodle and ELGG were already properly installed and is confirmed to be working.

Here are the steps: 

View full post

posted in

(photo by David Delgado)
We are following a new trend that is combining Learning Management Systems with Web 2 technology such as social networking, e-portfolios, wiki's, etc. There is an excellent post by David Delgado of the University of Las Palmas de Gran Canaria, Canary Islands, Spain describing his vision of these Personal Learning Environments.

One of our clients, The Center for 21st Century Skills, is a leader in this arena and we are supporting the ELGG–Moodle Personal Learning Solution they are using in high schools in Connecticut.

View full post

posted in
XML