Forum .LRN Q&A: Re: Intellum OpenCore

Collapse
8: Re: Intellum OpenCore (response to 1)
Posted by Don Baccus on
There's nothing difficult about object integration.  The key is to not blindly decide to make every table in your datamodel  an object but rather to think about which items in your datamodel need to be integrated with other elements of OpenACS.

Three very quick guidelines ...

1. If you want to control access by user on a per-row basis for something in your datamodel, it certainly should be an object and permissions should be used to do the access control.

2. Integration with an OpenACS service package requires whatever part of your datamodel gets "hooked in" be an object.  For instance if you want someone to be able to sign up for notifications (which at the moment means "e-mail alert") when something new is added to your package - say a class has been imported - that "something" needs to be an object.  general-comments, general-ratings (when someone writes it :( ) and various other similar system-wide services work on objects.

3. If you want an audit trail of changes to something in a datamodel that "something" should probably be not only an object, but a content repository object (these are versioned objects, i.e. past versions of content are kept around).

Take a good look at the "notes" package - which is really meant as to be a demo more than a practical, useful package - for a simple introduction to how we generate forms using the template system and a wrapper procedure named "ad_form" (see www/add-edit.tcl+adp)...this package also defines and manipulates a simple "note" object type.

You and Ernie should definitely compare datamodel notes, my guess is that there's some overlap in how the two of you mapped SCORM XML structures to a datamodel ...

Collapse
9: Re: Intellum OpenCore (response to 8)
Posted by Ernie Ghiglione on
Don,

Surprisingly enough the datamodels that we have don't overlap 😊 The reason for this is that Jack's datamodel deals mostly with the management of courses, students, managers, etc whereas the one I've been working on deals with the way course materials and learning objects get managed internally on the system.

I'll try to explain how this has happened as it might sound quite unbelievable for some of you 😉.  [Jack please correct me if there's anything wrong in the following explanation as understood what I read on your code]

Jack's implementation was designed to deploy SCORM courses tracking the progress of students. OpenCore is meant to be implemented mostly at companies that want to deploy courses for their employees. So you first add your company, then your users, your managers, etc, and so on. Then to add an SCORM course, you first add the course to xyz/packages/opencore/www/data/course1 directory. Then the admin user goes to the course-import page (thru the UI) and the page scans for new courses added to the data directory. When found, it tells the admin to add the course. The course is added and assigned to students to be taken. The students go thru the course and the managers sees the reports based on the student's performance.

Now, the work I've been doing deals with the management of the course content and the standards that SCORM encompases rather than the delivery. So the work I've done (let's call it LORS for the sake of simplicity) let you upload SCORM/IMS compliant packages from a web interface straight into the content repository (and this might be one of the few things we overlap, but by the same token, it's not critical). Also, LORS handles the administration of the course resources and metadata: a course needs to be part of a .LRN class/community, search learning objects, browse/edit metadata, share learning objects across classes, .LRN export courses, etc.

As you very well said Don, I think LORS is more guts and OpenCore's UI... so I do see a lot of opportunities to work with Jack on a robust SCORM/LMS implementation that not only fulfils the needs of corporations, but also the academic world.

Although, as Don has pointed to Jack and myself (on another email) some adjustments to the implementation must be done to fully take advantage of OpenACS resources, there are other that have to do with functionality... fully compliance with SCORM runtime environment, search metadata capabilites, export content, etc... but we are getting there 😊

I must say as well, that it is great to have another person to work with... no more lonely coding!

Ernie