Index: openacs-4/packages/scorm-core/tcl/scorm-core-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/scorm-core/tcl/scorm-core-procs.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/scorm-core/tcl/scorm-core-procs.tcl 23 May 2010 20:27:51 -0000 1.2 +++ openacs-4/packages/scorm-core/tcl/scorm-core-procs.tcl 28 May 2010 21:23:04 -0000 1.3 @@ -68,7 +68,7 @@ return -code error [_ scorm-importer.NotSCORM2004] } - set default_organization [scorm_core::default_organization -manifest $manifest_doc] + set default_organization [scorm_core::get_default_organization -manifest $manifest_doc] set title [[$default_organization child 1 title] text] if { [db_0or1row course_exists {}] } { @@ -112,7 +112,12 @@ Edit the course information, using a parsed manifest. At the moment, this rebuilds the cp_node structure, so tracking data for the course is lost. } { - # delete old cp_nodes unless I can figure out how to preserve them. + + # Delete old cp_nodes until I can figure out how to preserve them. This will + # also delete the cmi data, i.e. tracking information. + + db_dml delete_cp_nodes {} + scorm_core::update_rte_data \ -scorm_course_id $course_id \ -manifest $manifest @@ -150,6 +155,14 @@ return [[$manifest xslt [dom parse [::tDOM::xmlReadFile $xsl_src]]] documentElement] } +ad_proc scorm_core::get_manifest { + -course_id:required +} { + Return the saved manifest XML. +} { + return [db_string get_manifest {} -default ""] +} + ad_proc scorm_core::create_folder { -name:required -parent_id:required @@ -256,7 +269,7 @@ return $rgt } -ad_proc scorm_core::default_organization { +ad_proc scorm_core::get_default_organization { -manifest:required } { Return the default organization for the course, null if none exists. @@ -291,8 +304,10 @@ if { [$item hasAttribute resourceId] } { # get reference to resource and set href accordingly set resource $resources([$item getAttribute resourceId]) - #$item setAttribute href "[$resource getAttribute base] [$resource getAttribute href]" - $item setAttribute href "[$resource getAttribute href]" + $item setAttribute href [$resource getAttribute href] + if { [$resource hasAttribute base] } { + $item setAttribute base [$resource getAttribute base] + } $item removeAttribute resourceId if { [$resource getAttribute scormType] eq "sco" } { $item setAttribute sco 1 @@ -370,7 +385,7 @@ global sequencing_collection set sequencing_collection [$manifest getElementsByTagName "imsss:sequencingCollection"] - set default_org [scorm_core::default_organization -manifest $manifest] + set default_org [scorm_core::get_default_organization -manifest $manifest] set activity_tree [scorm_core::rte_activity_tree::seq_activity -node $default_org -order -1] @@ -407,6 +422,7 @@ foreach child [$node childNodes] { switch -- [$child localName] { item { + # store counter for child ordering in node if { [$node hasAttribute order] } { set order [$node getAttribute order] Index: openacs-4/packages/scorm-core/tcl/scorm-core-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/scorm-core/tcl/scorm-core-procs.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/scorm-core/tcl/scorm-core-procs.xql 23 May 2010 20:27:51 -0000 1.2 +++ openacs-4/packages/scorm-core/tcl/scorm-core-procs.xql 28 May 2010 21:23:04 -0000 1.3 @@ -31,6 +31,13 @@ + + + delete from cp_node + where cp_package_id = :course_id + + + update cp_package @@ -42,6 +49,15 @@ + + + + select xmldata + from cp_package + where cp_package_id = :course_id + + + select folder_id Index: openacs-4/packages/scorm-player/www/resources/scripts/ilias/rte.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/scorm-player/www/resources/scripts/ilias/rte.js,v diff -u -r1.2 -r1.3 --- openacs-4/packages/scorm-player/www/resources/scripts/ilias/rte.js 13 May 2010 21:32:28 -0000 1.2 +++ openacs-4/packages/scorm-player/www/resources/scripts/ilias/rte.js 28 May 2010 21:23:04 -0000 1.3 @@ -11752,7 +11752,13 @@ if (item.parameters != "" && envEditor==false) { item.parameters = "?"+ item.parameters; } - setResource(item.id, item.href+randNumber+item.parameters, this.config.package_url); + + // DRB: Ilias's version doesn't honor a resource's base attribute, which is non-compliant. + if (item.base == null) { + setResource(item.id, item.href+randNumber+item.parameters, this.config.package_url); + } else { + setResource(item.id, item.href+randNumber+item.parameters, item.base); + } }