Track Adobe Captivate courses without an LMS

I give Adobe a hard time on Craptivate (it is terrible) but I’ve just found something that doesn’t quite suck – a way to report on courses without an LMS. And this comes packaged with Captivate – the ‘Adobe Quiz Results Analyser’!

It’s very easy to set up:

  1. put ‘internalServerReporting.php’ and ‘internalserverread.php’ from your ‘C:\Program Files\Adobe\Adobe Captivate 8 x64\Templates\Publish’ directory in to a folder on a server which runs PHP.
  2. In Captivate publish settings, select ‘Internal Server’ as your LMS. In the configure dialogue, put in your URL for the ‘internalServerReporting.php’ file – and the particulars for your course:Captivate 8 Internal Server Dialog
  3. Now, when you complete your course, on the quiz results screen a dialogue will pop up asking the learner their name and email address. This gets sent off to the php file along with all the interaction data, which gets written into a folder structure matching your company/department/course settings. Each learner’s attempt is written as a separate xml file.
  4. Now, using the Quiz Results Analyser, you can get total attempts on a course, total passes, and drill down in to each learners records and so on as required. Note: this sortof relies on the analyser being on the server, or networked with the webserver (it only lets you select a local drive folder structure for the results) – I worked around this by just FTPing down all the results onto the desktop before doing reporting.

Pretty neat! As a band-aid in waiting for an LMS, it’s a simple thing that doesn’t require you to interact with IT which is just the best. Nice one.

Note: On further analysis, this is a Captivate special. While the email address is entered by the learner and this is written in to the xml attempt files, the results analyser completely ignores this field. And you use the results analyser to export all the combined XML as a CSV. So you can’t perform a match against your HR data to match completions to HR staff ID’s or anything, since names are pretty useless for that. Unique email addresses would have been OK, but again – no-one bothered to test this function out for real world application. You could work around this by re-templating the alert to say ‘enter your userID’ instead of their name, and then use that to match records; but again, you can’t edit the Captivate prompt.

There’s always something with Craptivate.

____

Update 05.02.2015 – Skip using Quiz Results Analyser completely

using macros in Excel, you can read the XML docs in to Excel directly, and get the email addresses and everything else too. This could then be matched against HR database data if required, to make sure all staff have completed something for example.

SO WHAT’S THE SCRIPT?!

Sub ListFiles()
'LISTFILES AND LISTMYFILES MODIFIED FROM
'http://excelexperts.com/VBA-Tips-List-Files-In-A-Folder
'--------------------------------------------------------------------
'DECLARE AND SET VARIABLEs
Dim ShellApplication As Object
Set ShellApplication = CreateObject("Shell.Application").BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
Path = ShellApplication.self.Path
Set ShellApplication = Nothing
[a3] = "XML"
[b3] = "Files"
'--------------------------------------------------------------------
'DEFAULT PATH FROM HIDDEN SHEET
Call ListMyFiles(Path, True)
End Sub

Sub ListMyFiles(mySourcePath, IncludeSubfolders)
 Set MyObject = New Scripting.FileSystemObject
 Set mySource = MyObject.GetFolder(mySourcePath)
 'With SearchXML
 Application.ScreenUpdating = False

 '--------------------------------------------------------------------
 'FIND XML FILES ONLY, APPLY SEARCH CRIERIA, DISPLAY MATCHES ONLY
 For Each myFile In mySource.Files
 If Right(myFile.Name, 3) = "XML" Or Right(myFile.Name, 3) = "xml" Then 'IS XML?
 LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
 
 '-------------------------------------------------------------
 'IMPORT XML FILE
 ActiveWorkbook.XmlImport URL:=mySource & "\" & myFile.Name, _
 ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$" & LastRow + 1)
 '------------------------------------------------------------
 
 Debug.Print "date modified: "; myFile.DateLastModified
 
 
 'DELETE MAPS
 maps = ActiveWorkbook.XmlMaps.Count
 For I = 1 To maps
 ActiveWorkbook.XmlMaps(1).Delete
 Next I
 End If
 Next
 If IncludeSubfolders Then 'SEARCH SUBFOLDERS FOR SAME CRITERIA
 For Each MySubFolder In mySource.SubFolders
 Call ListMyFiles(MySubFolder.Path, True)
 Next
 End If
 'End With
 Application.ScreenUpdating = True
End Sub

Public Sub ClearSheet()
 Cells.Select
 Selection.ClearContents
 [a1].Select
End Sub

So that’s that. Thanks Maudibe from some forum for that script (sorry I lost it).

Then in Captivate, set your first button to be in the quiz, reporting its interaction. That’ll give you a date of interaction completion (course begin time) – which you can then use with the session time to get a completion time if you really want to.

Tech Reference:

Leave a Reply

Your email address will not be published. Required fields are marked *

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑