This module seems like it may be the ideal place to begin integrating tin can (http://tincanapi.com) with Drupal. Any plans for this?

Comments

btopro’s picture

Yes. and if someone wants to help with doing that as I've had several requests for it now yes. Unfortunately it's not in scope of anything I'm working on at the moment but would be happy to help if someone knew how it could be realized for user progress. UP is a generic data collection framework for storing user interactions w/ Drupal which we're using for page analtyics, minor video analytics (in testing), and interaction with flash based quizzing applications / instructional activities.

spazfox’s picture

That's great. I'm still getting my feet wet with both tin can and the UP module, but will be happy to share any ideas/code/feedback as I learn more.

tammyrutherford’s picture

We'd love to see someone bring Tin Can to the Drupal community and are happy to help along the way. One place to start may be with our SCORM Cloud Drupal mod (available currently for Drupal 6- D7 is in development). This mod does allow you to deliver Tin Can activities via Drupal- and your SCORM Cloud account can act as the Learning Record Store to house the activity statements.

More info is available in this forum- http://drupal.org/project/scorm_cloud

btopro’s picture

I've looked at that previously (Scorm cloud). Issue is remote storage vs local storage of SCORM packages (in edu space we're not letting these sit elsewhere most likely). Also D6 vs D7. Any tin-can integration would happen in D7 land. We use this API currently in production in D6 and in some testing in D7, though it will most likely see mild beta / production usage in the Spring.

There is also a very lively / active LTI sandbox in the works by another developer that claims it will have LTI 1.1 gradebook push capability so that could fit in well with all these conversation threads as well.

phkemper’s picture

Category: feature » task

I have created a module for ExperienceAPI/TinCan API integration: https://github.com/phkemper/xapi
It is not up to the Drupal code practices standards, but might be useful anyway.

btopro’s picture

@phkemper are you using this? Skimmed quickly but looks like a decent enough attempt. Any screencast / associated documentation with it and could we get it into a d.o. sandbox / promoted somehow if this is actually tincan integration?

phkemper’s picture

I've got no supportive material, You can use it as is, to develop your own code. I also have no plans currently to extend this module.

er.sidharth30’s picture

Is there any documentation or something so that we can get more clarification about what your module do and how ?.

Thanks

btopro’s picture

Issue summary: View changes

user_progress.api.php has hooks that can be used and in the plugins directory are some example modules show-casing how to use UP to do different things.

user_progress_content is an example of per page tracking
user_progress_jwplayer is an example of tracking events in a jwplayer instance and shipping the events off to UP via ajax
user_progress_requirement_dashboard is an example of displaying events (not maintained)
user_progress_smart_builder is an example of just defining some types of events which we then use deeper integration w/ the API via a flash based application to broker the transaction.

the smart builder piece is our main usage of this when we use it at all.

If you look in user_progress.module

user_progress_menu has user_progress/get and user_progress/set end points
set is used to set data in the database and get is obviously for getting data

the _user_progress_get function has some different calls you can issue:

guid -- which will give you a secure token for future transactions. This is then used to verify that the request coming (especially AJAX based ones / Flash based ones) is actually generated by the user in question. This is created by a combination of their login info (which makes a session in the DB) and the drupal site's private key. This is then unique to their transaction w/ the site and can be verified they are who they claim (and prevents CSRFs of garbage data)

from there you can get data back out which is just an array of stored values. Each plugin uses this "data" differently and it can be up to 16 points of information.

_user_progress_set currently only supports "value" which will validate that the GUID is correct and then validate that you are attempting to set data associated to a upregid which is in the database associated w/ the plugin.

Relationship of data;

Plugin provides type of storage for data
in the admin UI in the site you then define the instances of that plugin which generates a upregid (user progress registry id)
then data that is stored about users is the user's usage of that instance of a plugin.

This module will see additional love at some point as we need it mostly for the smart builder stuff. I'd be all for working to have this support Tincan / XAPI as a plugin type; especially since XAPI data is so simple (4 data points I think. who what when where?) which could easily be the description of how the data is handled and then UP is providing AJAX and non AJAX ways of injecting these points.

fuzzy76’s picture

Just mentioning that compatibility with http://learninglocker.net should probably be a good first target. :)

Manish Jain’s picture

Totally agree with fuzzy76.

I have created a sandbox project called 'Tin Can API (xAPI)'. This module is compatible with learning locker. i haven't finished writing the module yet but thought it might be a good idea to share it. I will keep updating the repository as i write more code.

Here is the link to the sandbox project - https://www.drupal.org/sandbox/manishjjain/2464059

fuzzy76’s picture

If that sandbox module was somehow promoted to a full project, it would probably be easier for other modules to integrate with it (user progress api, course module, quiz, h5p, etc...).

btopro’s picture

Looks like it needs a lot of love to turn into a full project. @Manish Jain please keep us updated on the progress, I know some people that might be interested in helping clean this up to get it full status. Could you provide some examples of how to use the API / a roadmap of what needs to be done?

fuzzy76’s picture

Sort of what I asked in that module's issue-queue :) https://www.drupal.org/node/2466051 And I would also lend a hand if needed. We aim for a full LRS implementation in the future to allow other LMS' in the mix.