How to Report and Track without an LMS or Online access?

Jul 07, 2011

Hello all-

So it has been a long time since I have had a situation where I need to publish a course that will not be put into an LMS. Is there a way to track completion and user information by just publishing via the web? BTW- Having the Quizmaker file email results is not an option.

I am thinking that there may be some way to write code outside of the course structure to send user information and results to a database. Please let me know if you have experience with the best way to publish/structure a course that will track user info, and quiz results.

Thank you!

Tara

10 Replies
Justin Wilcox
Chris Fletcher

Hi Tara,

If you alter the flashcommand.js file in an articulate file, you can make it send your email content to an asp or php file. Then write the asp/php file to send the info to a database. That's what I do.

go to the Email Results section of the flashcommand.js file and make some changes. I always make my quiz question 1 a short answer question and ask for their email address - this gives me their details. Then I manipulate the text to send the email address, course title, score and date to an asp file. I've tried to attach the code I put in this section and the asp file it sends to to give you an idea.

The asp file sends the results to a database (although in the early days, I just sent it to a text file and imported it to excel)

You have to ensure that everyone who completes it clicks on the send email button though. There's a flash thing somewhere on here where you can hide the finish button on a quiz so you could use that, and change Send email to "Finish" I guess.

You can do the same for a standalone quizmaker quiz in the quiz.js file, but the changes have to be ever so slightly different.

Chris

Chris Fletcher

Here's the code I use in the Email Results section of the flashcommand.js file:

function EmailResults(strAddress)
{
 var g_strSubject = "Quiz Results: " + g_oQuizResults.strTitle;
 var strQuizResults = "";
 var strMainHeader = " " + g_oQuizResults.strTitle + "\nStatus, Raw Score, Passing Score, Max Score, Min Score, Time\n";
 var strLineHeader = "\n\nDate, Time, Score, Interaction ID, Objective Id, Interaction Type, Student Response, Result, Weight, Latency\n";
 var strMainData = "\n";
 var strLineData = "\n";
  
 // Status
 strMainData += g_oQuizResults.strResult + ",";
 
 // Score
 // strMainData += g_oQuizResults.strScore + ",";
 
 // Raw Score
 strMainData += g_oQuizResults.strPtScore + ",";
 
 // Passing Score
 strMainData += Math.round((g_oQuizResults.strPassingScore/100) * g_oQuizResults.strPtMax) + ",";
 
 // Max Score
 strMainData += g_oQuizResults.strPtMax + ",";
 
 // Min Score
 strMainData += 0 + ",";
 
 // Time
 strMainData += GetTime(g_oQuizResults.dtmFinished);
  
 for (var i = 0; i < g_arrResults.length; i++)
 {
  //Date
  strLineData += GetDate(g_arrResults[i].dtmFinished) + ",";
  
  // Time
  strLineData += GetTime(g_arrResults[i].dtmFinished) + ",";
  
  // Score
  strLineData += g_arrResults[i].nPoints + ",";
  
  // Interaction Id
  strLineData += g_arrResults[i].strInteractionId + ",";
  
  // Objective Id
  strLineData += g_arrResults[i].strObjectiveId + ",";

  // Interaction Type
  strLineData += g_arrResults[i].strType + ",";

  // Student Response
  var strResponse = g_arrResults[i].strStudentResponse;
  strResponse = ReplaceAll(strResponse, "'", "%27");
  strLineData += strResponse + ",";  
  
  
  // Result
  strLineData += g_arrResults[i].strResult + ",";
  
  // Weight
  strLineData += "1,";
  
  // Latency
  strLineData += g_arrResults[i].strLatency;
  
  strLineData += "\n";
 }
 
 strQuizResults = strMainHeader + strMainData + strLineHeader + strLineData;

 var sHTML = "";
 sHTML += '<FORM id="formQuiz" method="POST" action="mailto:' + strAddress + '?subject=' + g_strSubject + '" enctype="text/plain">';
 sHTML += '<INPUT TYPE="hidden" NAME="Quiz Results" VALUE=\'' + strQuizResults + '\'>';
 sHTML += '<br><input type="submit"><br>';
 sHTML += '</FORM>';
 document.getElementById("divQuiz").innerHTML = sHTML;
 document.getElementById("formQuiz").submit();

Steve Flowers

We experimented with the concept of "LMS on a stick" a few years back. There were a few folks using it but it never really caught on. I could guess there are a few reasons for that.

At any rate, it could work in your situation. We used a thin XAMPP configuration launched from a batch file running from a thumbdrive or an external hard drive. This gets PHP and MySQL running on a server from your device. We then loaded Moodle to the device. This allowed us to load up the library with as many modules as we needed to. Once it's configured, it's pretty easy to copy from one drive to another.

One of the problems you'll run into with a Web based course is that it really needs some kind of server component to write to disk. The browser is intentionally prohibited from writing to a local disk. The solution described above does this.

Kat Fardian

Has anyone tried using a survey or Google docs and embedding it in as a web object??? I've got the same problem and I was thinking about trying something like that but I haven't tested it so i don't know the logistics of whether it is even possible. I just know that then we can pull results from a spreadsheet of data. Any ideas??

Michiel van der Blonk

I have created an open source solution, see my post, it works the same way. It's MSSQL but I will work on a version to MySQL as well. We run it on an intranet, using it on the internet is possible, but you can not guarantee a valid user id then unless they login somehow.

http://community.articulate.com/forums/p/11060/65900.aspx#65900

Michiel van der Blonk

True, but that is only if you're using Storyline. I use quizmaker. I made an entire solution for it that we've been using at my school for almost ten years, where everything goes directly into a database.

I call it quizbaker (pun intended)

https://github.com/blonkm/quizbaker

This is on ASP using MSSQL server.

There is a PHP/MYSQL version that has the basics.

https://github.com/blonkm/quizbaker-PHP

 

This discussion is closed. You can start a new discussion or contact Articulate Support.