Deploy Basicwebplayer application in my existing website

Topics: Developer Forum, Project Management Forum, User Forum
Nov 4, 2010 at 3:05 PM

Hello,

I have downloaded the current version of the Basic web player application and it is running fine on my local system. Now I want to implement the application to my existing ASP.Net project written in VB.Net. Could you please guide me to achieve that?

Any help would be highly appreciated.

Regards,

Sanhita

Nov 5, 2010 at 3:16 PM

Hello,
If you got it to run locally, there should be no problem running it in a different compatible environment. If you have a live website, you could just create an application under its root, upload the files and modify the web.config to point to your online sql server and also specify where to put the packages (keys: learningComponentsConnnectionString and packageStoreDirectoryPath). You also need to create the db schema.
Notice that Windows is the authentication mode in the project (at least the copy I have) and you may want to change it to forms for online environment (Internet).
You could also use the build menu on visual studio.
Good luck,
AK

Jan 14, 2011 at 3:00 PM

I've done this and here are a few tips from the fontlines:

The schema compiler is not effective, so get to know the datamodel pretty well.

Key tables

  • USERITEM contains the user info and [key] field can be used to join to your existing user authentication schema)
  • ATTEMPTITEM contains the parent web player attempt. 
  • ACTIVITYATTEMPTITEM contains the session data for the attempt. (you can use the objects to get the attempt status, but writing my own was faster)
  • ACTIVITYPACKAGEITEM contains the launch parameters for launching a Scorm course. The root level activity integer is whats needed for SCORM 1.2
  • PACKAGEITEM contains the information about the SCORM learning package you upload and process.

You may also need to use User Impersonation in web.config to access get file / directory level permissions to launch content. I.E, <identity impersonate="true" userName="userwithserveraccess" password="userwithserveraccesspassword" />

Like the previous poster said, windows authentication is enabled by default. Since my authentication schema was external, I edited the   public virtual string UserName function in PageHelper.cs located in <root>->App_code . In that same file, I had to modfiy the instantiation routine for the the learningStore(public Learning LStore) to LStoreConnectionString, UserKey, ImpersonationBehavior.UseImpersonatedIdentity,true); 

For your content, make sure your IMSMANFEST.XML file is formed correctly, also, the version of the Basic web player version I'm using (from 1.4) doesnt like numbers proceeding alpha in the ORGANIZATION tags...  I.E <manifest identifier="622034_MY_Crappy_Course" version="1.0".... will be corrected by the upload routine, but if you use it in the ORG identifier, it wont upload and wont return an error. Took me ages to figure that out. My main offender is Articulate 09 Content Creator.

As far as I know, there is no "preview" mode for launching content. Everything gets an attempt. I saw comments in the code saying it wasnt implemented yet or something to that effect. I defined a "site admin" user and turned off the user permissions checking (I forgot where this is). I delete the attempts for that admin user for each "preview" so it wont screw up any downstream reporting.

When uploading a SCORM package, its assigned to the user that uploaded it. Since my authentication is elsewhere, I had to use the above impersonation and pagehelper.cs source edits to bypass it so users could launch them.

Again, much if not all of this could be overcome by using the objects, but the documentation is lacking and outdated. Thusly, I had to research and implement my own methods. It has been working for 3 years and 20,000 users with very little issues (I'm doing other funky stuff with it, like removing the submit lesson and save buttons, I don't recommend doing this, the frameset hates it).

Hope this helps, if I can think of anymore, I'll add.

Jan 17, 2011 at 9:39 AM

Hi abradford,

sounds like my way of 'playing' with the webplayer :-)

I started 4 months ago to build a DotNetNuke module based on the SLK using DNN user authentication, page rights etc. (because DotNetScorm is off). Could you tell me how you use the scoring of the SLK? Did you implemented your own methods?

Best regards from Germany,

Dirk

Jan 18, 2011 at 11:18 AM

Hi Dirk,

What I do is use a "listner" window to launch the content (I dont use the "submit training" button) then grab the attempt after the user exits the training from the package store.

StoredLearningSession session = new StoredLearningSession(view, attemptId, PStore);

I then make sure the session is active

session.CurrentActivityIsActive

Then I check to see if it is complete. I.E.

LearningDataModel dmodel = session.CurrentActivityDataModel;

If ((dmodel.LessonStatus == LessonStatus.Passed) || (dmodel.LessonStatus == LessonStatus.Completed) ||  (dmodel.LessonStatus == LessonStatus.Failed))

you can also check the score if want to feed into another system with session.TotalPoints or  dmodel.score.raw or something like that.

There may be another way to do this, but we only use SCORM 1.2 and control the content, so..

session.Exit();

session.CommitChanges();

submits the training if session tested about meets the IF condition criteria.

Its quick and dirty but I haven't had too many bugs with it. I have asked here before for any tips on how to use the basic web player in my own implementation, but haven't received much information. And since the docs are inomplete and dated, I had to do a lot of experimenting.  I'm not sure if its encouraged or acceptable to use the Basic Web Player (BWP) in your own implementation since the SLK requires SharePoint. SharePoint was not an option for us mainly because of external non-Microsoft authentication schemes.

Hope this helps. If you discover something else, please let me know. 

Jan 25, 2011 at 9:10 AM

Hi abradford,

Thanks a lot. I´ll try this and keep you informed about the progress.

Best regards, Dirk