custom skin menu - show which slides have been completed?


I've build a custom skin for an Articulate course that we're using instead of the standard player template I've built it so that it's got a menu button that, when clicked, shows a Windows-style 'start menu' of all the level 1 and 2 slides in the course

All of which works fine, but now I've got a request from the client that it should indicate in some way which slides the user has completed, in the same way that the default Articulate player template does

I can see that this info is being tracked to suspend_data in SCORM, but I can't see any way of getting at that data through the API

Obviously I could add in my own JavaScript files that request and parse the suspend_data - but this would involve the output having to be modified after each publish, which I'd really like to avoid It also wouldn't work if the course was saving tracking data to (what I assume is) a Flash Shared Object

Is this going to be possible?

14 Replies
David Burton


When creating a custom skin, this should not interfere or change the core functionality of the Articulate Player All tracking recorded by a LMS should work regardless of using a custom skin or the default skin With that said, if you are looking for a way to modify the outline text to help indicate what slides have been viewed, again, this can be done by changing the Player Templates --> Colors --> Viewed Slide Titles If this color is different from what is set for the Unviewed Slide Titles, the end user is given a visual reference as to what slides have been viewed, much link a visited hyperlink on a web page

I hope this helps!

Matthew Leathes

Hi David and many thanks for the quick reply

As mentioned in my post above, I'm not using the player template - I have created my own custom skin with its own menu in it There is an example of the sort of thing I'm talking about here if that's not clear So the solution you have provided will not help

BTW, I'm not saying that the tracking is not working - it works perfectly

What I'm saying is that the API doesn't appear to provide any method for getting the completion status of a slide and thus I am unable to show which slides have previously been completed in my custom menu

Matthew Leathes

Hi Dave

Thanks for the reply but I still don't see how this would work for slides completed in a previous 'session'

For example, the user launches the course and visits slides 1, 2 and 5 They then exit Later, they relaunch the course The menu would need to reflect that they have visited slides 1, 2 and 5 previously

The built-in Articulate player template sidebar has this functionality* but I can't see any way of replicating it in a custom skin

*although only when the course is tracked via SCORM, AICC or Flash Shared Object, obviously

Matthew Leathes

OK thanks for clarifying, at least I know for sure

In terms of this, are there any plans to update the SDK any time soon?

As well as this there are other things that are lacking - for example there is no way to detect if a slide is marked as 'hidden' or 'locked' (except by parsing presentation xml) and although there's a GotoFrame method there's no info on how many frames the slide has or what frame it is on currently (you can work this out using slide time, duration and frame rate but it's a bit round the houses…!)

Matthew Leathes

yes calling javascript and getting a return value from flash is horrible in anything less than flash 8 :-( doing so in a manner which allows the skin to be totally self-contained i e doesn't require modifying any of the Articulate files each time it's published will be the real challenge!

Hopefully the client will now accept that this is not possible solely using the API and give up on trying to make us do this !

Many thanks for the help though, even if we don't use it your solution was interesting to read through, I suspected that calling JavaScript to get the suspend_data and then picking it apart would be the most reliable method to use

Steve Flowers

Chiming in late here, doing some research into the very same issue In Brian's link to the old forums above (I participated as Coursefarm in this thread but didn't see this nugget at the time):

var ArtAPI = _level0 ArtAPI;
var presData = ArtAPI GetPresentationData()
for (i = 0; i
        var strSlideId = presData Slides[0] Slide[i] _attributes id;
        var viewLength:Number = _level44 g_oTrackingInfo[strSlideId] arrViews length;
        if (viewLength >0) {
                      //we have seen this slide before
                } else {
                        // has not been seen yet

The bolded piece of info is interesting and could help you accomplish what you're looking for Going to give this a test try on my end as well