Forum .LRN Q&A: IMS-LD: problem with a level B course

Hi,

I'm trying to play the following LD: http://dspace.ou.nl/handle/1820/371 on dotLRN 2.4 (imsld version 1.2d) and I'm having a few problems with it. Since my knowledge of the specification is very little, I'm not sure where the problem is, if in the LD itself or the player.

The LD is a course about Jazz in which the student can choose one of two paths (historical, thematical). Once the path chosen, only that path should be displayed but it's not the case. Also in the LD there's a form that should be presented to the student (title: Vermunt's Inventory of Learning Styles, ILS) but it never appears.

This LD has been tested in Coppercore and the above appears to work fine despite a few layout problems.

Do I have to upgrade to the last version from HEAD? Is it a problem in the LD itself? I have no idea so any help will be greatly appreciated.

Collapse
Posted by Emmanuelle Raffenne on

Hi,

I wanted to test the LD I mentionned in my first post with the imsld HEAD version so I installed dotLRN from HEAD but then I ran into the following problems:

  • imsld appears to depend on xowiki now but the dependency is not declared in the info file (I modified it on my local dev site to be able to install). I'm a bit worried about that since although imsld is part of dotLRN, xowiki is not and there's no plan to include it AFAIK.
  • an error when uploading the LD:
wrong # args: should be "ns_cache names cache"
    while executing
"ns_cache names xowiki_cache PF-[my id]-agg-*"
    (procedure "flush_page_fragment_cache" line 3)
    ::2742 ::xowiki::Package->flush_page_fragment_cache
    invoked from within
"[my package_id] flush_page_fragment_cache"
    (procedure "save_new" line 3)
    invoked from within
"next"
    (procedure "save_new" line 3)
    ::3010 ::xo::db::CrCache::Item->save_new
    invoked from within
"::$folder_id save_new"
    (procedure "require_folder_object" line 36)
    ::2742 ::xowiki::Package->require_folder_object
    invoked from within
"my require_folder_object"
    (procedure "init" line 5)
    ::2742 ::xowiki::Package->init
    ::xowiki::Package ::xotcl::Class->create
    invoked from within
"$package_class create ::$package_id -destroy_on_cleanup -id $package_id -url $url"
    (procedure "require" line 30)
    ::xowiki::Package ::xo::PackageMgr->require
    invoked from within
"my require -url $url $package_id"
    (procedure "initialize" line 26)
    ::xowiki::Package ::xo::PackageMgr->initialize
    invoked from within
"::xowiki::Package initialize -package_id $package_id -url $xw_url -user_id [ad_conn user_id]"
    (procedure "imsld::xowiki::file_new" line 12)
    invoked from within
"imsld::xowiki::file_new -href $filex_href  -path_to_file $filex_href  -file_name "${manifest_identifier}/${filex_href}"  -type file  -complete_path "[..."
    (procedure "imsld::parse::parse_and_create_resource" line 47)
    invoked from within
"imsld::parse::parse_and_create_resource -resource_node $resourcex  -manifest $manifest  -manifest_id $manifest_id  -activity_name $activity_name  -par..."
    (procedure "imsld::parse::parse_and_create_item" line 22)
    invoked from within
"imsld::parse::parse_and_create_item -manifest $manifest  -manifest_id $manifest_id  -item_node $imsld_item  -parent_id $parent_id  -tmp_dir $tmp_dir"
    (procedure "imsld::parse::parse_and_create_learning_objective" line 13)
    invoked from within
"imsld::parse::parse_and_create_learning_objective -learning_objective_node $learning_objectives  -manifest_id $manifest_id  -parent_id $cr_folder_id  ..."
    (procedure "imsld::parse::parse_and_create_imsld_manifest" line 54)
    invoked from within
"imsld::parse::parse_and_create_imsld_manifest -xmlfile $tmp_dir/imsmanifest.xml  -manifest_id $manifest_id  -tmp_dir $tmp_dir  -community_id $communit..."
    invoked from within
"set manifest_list [imsld::parse::parse_and_create_imsld_manifest -xmlfile $tmp_dir/imsmanifest.xml  -manifest_id $manifest_id  -tmp_dir $tmp_dir  -com..."
    ("uplevel" body line 34)
    invoked from within
"uplevel {
    	  # /packages/imsld/www/admin/imsld-new-3.tcl

ad_page_contract {

    Parse and create the imsld in the database.
    
    @author jop..."
    (procedure "code::tcl::/var/www/openacs-head/packages/imsld/ww..." line 2)
    invoked from within
"code::tcl::$__adp_stub"
    invoked from within
"if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init tcl $__adp_stub
..."
    ("uplevel" body line 3)
    invoked from within
"uplevel {

    if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init t..."
    (procedure "adp_prepare" line 2)
    invoked from within
"adp_prepare"
    invoked from within
"template::adp_parse [file root [ad_conn file]] {}"
    (procedure "adp_parse_ad_conn_file" line 6)
    invoked from within
"$handler"
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
                $handler
            } ad_script_abort val {
                # do nothing
            }"
    invoked from within
"rp_serve_concrete_file [ad_conn file]"
    (procedure "rp_serve_abstract_file" line 60)
    invoked from within
"rp_serve_abstract_file "$root/$path""
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
            rp_serve_abstract_file "$root/$path"
            set tcl_url2file([ad_conn url]) [ad_conn file]
            set tcl_url2path_info..."
Collapse
Posted by Gustaf Neumann on
Concerning ns_cache: The system where you are testing seems to have a very old version of ns_cache (older than 5 years). If you run automated tests on xotcl-core, it will flag this problem.

To get an appropriate version, use the following:
cvs -z3 -d:pserver:mailto:anonymous@aolserver.cvs.sourceforge.net:/cvsroot/aolserver co nscache

IMS-LD should have a "weak dependency" on xowiki/xotcl-core. It should behave well (with restricted functionality) without xowiki available.

Collapse
Posted by Don Baccus on
Well, the release tarball for nscache is the old one. I don't think we really want to be releasing code that depends on the cvs HEAD version and my guess is the release tarball is what ends up in the AOLserver debian packages, which is what we've all said we want to encourage people to use. In order to ease the installation process, and the horribly unprofessional impression given newbies by our older manual installation process based on bits and pieces of released code, cvs code, and various other magic.
Collapse
Posted by Emmanuelle Raffenne on
Hi Gustaf,

I was using version 1.5 from the tarball available at http://sourceforge.net/project/showfiles.php?group_id=3152, I upgraded using the CVS version and it fixed it. Thank you.

What functionalities wouldn't be available without xowiki?

Collapse
Posted by Emmanuelle Raffenne on
Now that I could upload the LD on dotLRN-HEAD, I've tried to play it but I can't see any content in the player. The menu is displayed but showing a different structure than the one on dotLRN 2.4.1 :S
Collapse
Posted by Gustaf Neumann on
Great.

Don't ask me about IMS-LD! I looked into IMS-LD last time two years ago, and did not know about the xowiki integration.

Collapse
Posted by Emmanuelle Raffenne on
Gustaf,

Oh I see, I misunderstood. When you wrote "...should have a weak dependency..." was a recommendation not a statement. OK, sorry about that.

Thanks again for your help with nscache.

Collapse
Posted by Derick Leony on
Hi,

I imported the "Learning to listen to Jazz" UoL on imsld 1.2d and the distinction of paths (historical and thematic) worked for me; the activities appear in the tree but they aren't enabled so you can't see the content.

Now, Vermunt's ILS wasn't showing due to a typo in the property-group parsing process, I already committed the fix on HEAD and oacs-5-4 (You'll have to import the UoL again :).

Finally, HEAD & XoWiki: we've been working on flexibility of the UoL in the enactment process of the course (more about this in Valencia ;). Basically, the UoL text resources (HTML, text, ...) are imported as pages within the XoWiki instantiation within the course. This would mean imlsd depends on xowiki and on xowiki-applet being added in the course. So, the functionality that XoWiki performs is actually handling the resources of the UoL, which is pretty important. Since XoWiki not being part of .LRN, we'll probably make it an optional feature and leave the default to file-storage. Comments and suggestions are very welcome, as always.

Cheers.

Collapse
Posted by Emmanuelle Raffenne on
Hi Derick,

Thanks for the fix, I can now see and fill in the Vermunt's ILS although I get an error when I submit it:

Unstable state reached when evaluating conditions (An infinite loop was detected). Please, contact the administrator and review the conditions of the UoL.

I'll check on that with the author.

On the other side, I've tried to use the version of imsld from HEAD, after installing all the necessary packages, but I can't see any content with it (nothing appears in the content frame for any of the items). I'm using Firefox 3 on Mac OSX. I'll test it again with more time and try to document this a little more :).

Collapse
Posted by Emmanuelle Raffenne on
Hi Derick,

I ran into another problem :(.

I've done a fresh install of dotlrn 2.4.1 that includes imsld 1.2d. I've uploaded the Jazz LD being logged as a class admin with no swa privilege, created the groups, confirmed and finally got an error (imsld/admin/imsld-confirm-finish):

You don't have "write" permission on User's Folders

So it looks like the problem is at imsld::global_folder_id called by imsld::instance::instantiate_properties. When the global_folder_id doesn't exist it tries to create it under the user's folders (dotlrn root folder) after checking the current user has "write" privilege on that folder. A regular user like a profesor or an admin of a class doesn't have such privilege and shouldn't have them.

The quick fix is to remove the check so the folder can be created but it doesn't sound like the right one. IMO, this folder should be created at installation time along with the needed permissions on it.

Regarding permissions, imsld::global_folder_id sets "read" privileges on this folder, no "write" ones, so I wonder how this affects the storage of global properties afterwards.