SCORM runtime api is not getting the details it should have - scorm1.2

We have built an LMS system and we are struggling to make it SCORM compliant. We are trying to run any SCORM package from another LMS and pass the collected data to our own LMS so that we can track the progress. We have tried SCORM runtime api and found https://github.com/skfriese/simple-scorm-api this is the most complete and relevant api so far. The issue is that the SCORM packages we have come up with are all different and they are not emitting all the information more importantly cmi.suspend_data to runtime api. We have made two separate implementations, one downloaded from https://scorm.com/ is giving up all the information including suspend_data and another downloaded from https://www.easygenerator.com/ not working at all while both are SCORM 1.2 compliant and runtime api coding with js are the same.
There is a "Launch SCO" link at the top left corner of the page you need to click to kick off the experience.
I have ensured that the package from easygenerator is working by uploading that into the https://moodle.org/ and it worked fine there, and I have tried hand coding the whole api thing even then it did not work. Can someone shed some light or show an working runtime api example which will work globally for all the SCORM packages.
Download link for easygenerator SCORM package (not working) - https://scorm.staging-websites.com/easy2.zip
Sample from scorm.com (working) : https://scorm.staging-websites.com/SL360_LMS/API_new.html
Sample from easygenerator.com (not working) : https://scorm.staging-websites.com/easy2/API_new.html

Related

AJAX in SCORM content

I'm new to SCORM, I'm planning to implement an export-to-SCORM feature.
Currently, playing the content (which is not a SCORM player) is like a small HTML5 web app, and as part of its implementation, it uses features like AJAX for example to lazy load some files (JS files, CSS files).
I was thinking to just have a way to use the same player code when creating the SCORM course.
Are SCORM courses required to work offline or from disk?
If that's the case, using the techniques, like the lazy load I described above, won't work.
I imagine there could be some SCORM player mobile apps which store and load SCORM course on the device and a web-server is not available so that AJAX could work. (Or are these mobile apps actually implementing a local web-server within themselves in order to play the SCORM content?)
AFAIK, SCORM 1.2 or 2004 doesn't specifically put any restriction whether AJAX could be used in the presentation layer of the SCORM content, but in practice, when content is played in a player it obviously matters.
SCORM courses are not required to work offline or from disk (depending on what that means), which isn't to say they can't. SCORM courses are expected to load the initial resource from the location that they've been imported to, so while AJAX to a different location could work there are issues with security (credentials can't be secured or trusted), 3rd party loading, etc. Unless you were going to AJAX back to the loading host to retrieve content shipped with the package which should work and there are mechanisms that can be used to increase security for content retrieval.
The one offline implementation of a SCORM player that I'm familiar with (Rustici Software's) requires the packages to be all inclusive because there is no web server available. Again, that isn't to say that it couldn't be implemented with one, just that I'm not aware that such a thing has been implemented.

How can I reference a training course from another LMS?

I've been asked to make a course that is available in one cloud-based learning management system (brightspace) available in other learning management systems. The intent is that someone would open the course in the third party learning management system (LMS), like Moodle, and then from what I've read, an iframe would load that would contain the course as hosted by the original LMS (Brightspace).
I've been researching this all day and I haven't made any headway. It seems like there is oauth between the LMS' but I can't work it out.
How can I create a SCORM package that will contain an iframe to a central LMS? And, is there any standardised LMS/SCORM protocol that handles authentication or something like that?
Thanks!
Embedding a SCORM package inside another SCORM package is not the way to go. The solution for this problem as intended by the makers of SCORM would be to export the SCORM package and import it in the third party LMS, because thats what SCORM is all about. However, this is obviously not what you want to achieve.
In general, a SCORM package is simply a packaged website (with a manifest), which requires a JS API to be provided by the embedding LMS. So basically, you can do "anything" inside a SCORM package, e.g. creating an iframe, calling functions in the parent browsing context, open a popup etc., as long as it is not prohibited by web security mechanisms such as the same origin policy.
In theory, if your LMS would serve the content of the package "as is" and without authentication, i.e. you have a deep-link to the start page (think index.html) inside the scorm package (and the LMS would not send protective headers such as X-Frame-Options), you would be generally able to embed this page in any iframe in the web, thus within another SCORM package. The remaining problem would be the same origin policy, which would prevent the package sitting in the child frame from calling the API in the parent frame. There might be some tricks to work around this, e.g. by using a reverse proxy under the same origin that forwards to the other domain, but this will most likely be not practical or prohibited by other mechanisms. If you can work around this, you would still have to manually pass-through/forward the API calls from the embedded package up to your LMS's API adapter. Overall, this approach is not really practical/feasible.
In general, the SCORM does not deal with authentication. Please have a look at the IMS Learning Tools Interoperability (LTI) specification for that purpose. It allows to launch a Tool/Content hosted by another party and provides backchannels for e.g. grades.
I think the guys from Rustici Software provide a hosted SCORM RTE that can be launched via LTI, you may want to have a look at that, too...
Cross domain fun with SCORM
Another quick work around to "my content is on another domain" is to reference the JS/CSS on the media / content server, but include an index (player or launch) html file on the intended LMS which can bring those in without the cross-domain issues.
So your re-packaged SCO would just have the necessary launch file but inside that instead of the "css/styles.css" you're pointing to "//domain.com/path/to/css/styles.css". Repeat the same for JavaScript files.
It may be possible the content is a little more complicated than just statically defined assets in a HTML document. If that is the case it may take some further adjustments.
Wiki here has some extra tips https://github.com/cybercussion/SCOBot/wiki
I'll also update I added a cross domain feature to the SCOBot RTE which utilizes IFRAME postMessage api's to enable cross domain communication from domain A to domain B. You would have to be able to place the controller on domain B with the content.
GL

Web Player Scorm previewer?

I'm very new to SCORM and i'm not entirely sure if i'm even asking this question correctly so please pardon my newness. I have been tasked with implementing a SCORM "previewer" functionality into a website we're building.
I won't need any of the extended features that i understand are provided by the SCORM wrapper such as LMS integration and testing, but simply the ability to preview the images and flash files as they were created by the author of the SCORM package.
We have additional requirements that prevent us from using an external cloud-based solution.
Is this possible? Am i completely misunderstanding the way this works?
The SCORM specification defines a Content Aggregation Model (CAM) and RunTime Environment (RTE). The CAM isn't relevant to your question but the RTE might. The RTE defines how SCORM content communicates with an LMS.
It sounds like in your 'previewer' application, you don't want to store any data in the LMS. For some SCORM packages, this will mean there is no work to do at all as you don't need to implement anything to store no data!
Other SCORM packages will expect a response from the LMS and will error if they don't receive one. I suspect this is what is happening in your case and why you have been tasked with creating a previewer application. You will therefore need to work out which SCORM data the package is sending, catch those requests and return the expected response. See scorm.com for an overview of the Run Time Environment.
If you need a more generic solution that will work with any SCORM package, I fear you will need a complete SCORM implementation. This will be a LOT of work to do yourself. I would normally recommend SCORM Cloud but you say you need an internally hosted solution. If this preview application is likely to be well used and/or customer facing, you should take a look at SCORM Engine. If not, perhaps consider hosting an Open Source LMS such as Moodle?

How to get Tweets using Twitterizer in asp.net?

I am using twitterizer2 to login twitter using Asp.net.I am able to login using twitterizer,but unable to get the tweets from my timeline which are tweeted by me and othres too.
Twitterizer is not maintained anymore and not compatible with Twitter API 1.1.
Details about Twitter API 1.1: blog
From Official page:
Will applications using Twitterizer stop working?
Not right away, no. I have no power to stop the code or binaries that
are already in use from working, nor would I want to. However, the
current version of Twitterizer uses version 1.0 of the Twitter API
which is scheduled for death in March 2013. At that time, I cannot
speak to any functionality.
What am I supposed to do now?
As I see it, you have three options: jump to a new library, make
Twitterizer your own, or roll your own.
Twitterizer source code will remain available in its current state. I
encourage you to download the source and make it your own.
If you'd rather not take that on, there are a couple of other
fantastic libraries. For example: Linq2Twitter and TweetSharp
As said above you need to find a new library compatible with Twitter API 1.1, as Linq2Twitter or TweetSharp.

Data visualization / analytics / dashboard in ASP.NET (NOT Google analytics integration)

I need to create an ASP.NET site which can display graphs, charts, statistics for a dashboard type application pulling data from a backend data source.
I am trying to locate either:
(a) open-source modules that I can use / build up on
(b) tutorials which teach the above
(c) existing modules (preferably low-cost) that work well.
I did the basic googling, but found only VERY expensive paid solutions (eg: http://www.dundas.com/ $700+, http://www.devexpress.com/ $300 * n).
For simple visualizations, you should take a look at the EXTJS library. It's a free javascript framework.
http://www.sencha.com/products/js/
There are several good examples of dynamic charts there and I've found the API is pretty easy to use.
A non-free library that you can always go to is Adobe's Flex platform. That will give you more of a sexy front end. A basic license for Flash Builder (which comes with the Flex library) is only $249, so that may be within your budget.
If you can publish your data as JSON objects and have the results displayed in a browser, Protovis is a free JS library that's pretty nice to work with:
http://vis.stanford.edu/protovis/
ASP.NET is shipped with everything you need to build the application without having to purchase additional components.
(a) there are plenty of open source projects around charting. http://www.codeproject.com/KB/graphics/zedgraph.aspx
(b) there are plenty ASP.NET tutorials on the next including ones related to charting. Google is your friend here!
(c) see point a (if I understand well what you are asking for.
And the last but not least, don't hesitate to ask your questions on stackoverflow.com !

Resources