Index: openacs-4/packages/lorsm/www/admin/course-add-3.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/admin/course-add-3.tcl,v diff -u -r1.9 -r1.10 --- openacs-4/packages/lorsm/www/admin/course-add-3.tcl 17 Oct 2008 10:46:31 -0000 1.9 +++ openacs-4/packages/lorsm/www/admin/course-add-3.tcl 17 Nov 2008 13:36:44 -0000 1.10 @@ -22,7 +22,9 @@ } -validate { non_empty -requires {upload_file.tmpfile:notnull} { - if {![empty_string_p $upload_file] && (![file exists ${upload_file.tmpfile}] || [file size ${upload_file.tmpfile}] < 4)} { + if {![empty_string_p $upload_file] && \ + (![file exists ${upload_file.tmpfile}] || \ + [file size ${upload_file.tmpfile}] < 4)} { ad_complain "[_ lorsm.lt_The_upload_failed_or_]" } } @@ -48,22 +50,25 @@ set isBB [lors::imscp::bb6::isBlackboard6 -tmp_dir $tmp_dir] if {$isBB == 1} { - ns_write "
[_ lorsm.lt_Blackboard6_Content_P].
[_ lorsm.lt_Modifying_package_to_]
+
+ [_ lorsm.lt_Blackboard6_Content_P]
+ .
+ [_ lorsm.lt_Modifying_package_to_]
+
"
- foreach file $files {
- set tempval [regsub $tmp_dir $file {}]
- ns_write " $tempval[_ lorsm.OK]
"
- }
- ns_write "
"
+ foreach file $files {
+ set tempval [regsub $tmp_dir $file {}]
+ ns_write " $tempval[_ lorsm.OK]
"
+ }
+ ns_write "
[_ lorsm.Now_processing]imsmanifest.xml
[_ lorsm.file]"
+ ns_write "
[_ lorsm.Now_processing]imsmanifest.xml
+ [_ lorsm.file]"
## Opens imsmanifest.xml
# open manifest file with tDOM
@@ -231,156 +286,200 @@
set metadata [$manifest child all metadata]
set man_hasmetadata [expr {$metadata ne ""}]
-
+
## Gets manifest title
if { $metadata ne "" } {
set lom [lindex [lors::imsmd::getLOM $metadata $tmp_dir] 0]
set prefix [lindex [lors::imsmd::getLOM $metadata $tmp_dir] 1]
+
if { $lom != 0 } {
# Get title
- set manifest_title_lang [lindex [lindex [lors::imsmd::mdGeneral -element title -node $lom -prefix $prefix] 0] 0]
- set manifest_title [lindex [lindex [lors::imsmd::mdGeneral -element title -node $lom -prefix $prefix] 0] 1]
+ set manifest_title_lang [lindex \
+ [lindex [lors::imsmd::mdGeneral \
+ -element title \
+ -node $lom \
+ -prefix $prefix] 0] 0]
+
+ set manifest_title [lindex \
+ [lindex [lors::imsmd::mdGeneral \
+ -element title \
+ -node $lom \
+ -prefix $prefix] 0] 1]
# set context
set context "[_ lorsm.lt_Importing_manifest_ti]"
## Gets manifest description
-
- set manifest_descrip_lang [lindex [lindex [lors::imsmd::mdGeneral -element description -node $lom -prefix $prefix] 0] 0]
- set manifest_descrip [lindex [lindex [lors::imsmd::mdGeneral -element description -node $lom -prefix $prefix] 0] 1]
- # adds course information for display
+ set manifest_descrip_lang [lindex \
+ [lindex [lors::imsmd::mdGeneral \
+ -element description \
+ -node $lom \
+ -prefix $prefix] 0] 0]
+ set manifest_descrip [lindex \
+ [lindex [lors::imsmd::mdGeneral \
+ -element description \
+ -node $lom \
+ -prefix $prefix] 0] 1]
+ # adds course information for display
+
# Gets Rights info
- set copyright [lors::imsmd::mdRights -element copyrightandotherrestrictions -node $lom -prefix $prefix]
+ set copyright [lors::imsmd::mdRights \
+ -element copyrightandotherrestrictions \
+ -node $lom \
+ -prefix $prefix]
+
if { ![empty_string_p $copyright] } {
set copyright_s [lindex [lindex [lindex $copyright 0] 0] 1]
set copyright_v [lindex [lindex [lindex $copyright 0] 1] 1]
- set cr_descrip [lors::imsmd::mdRights -element description -node $lom -prefix $prefix]
+ set cr_descrip [lors::imsmd::mdRights \
+ -element description \
+ -node $lom \
+ -prefix $prefix]
set cr_descrip_s [lindex [lindex $cr_descrip 0] 1]
-
-
}
-
-
} else {
set context "[_ lorsm.lt_Importing_No_Metadata]"
}
}
-
-
# Gets the organizations
set organizations [$manifest child all organizations]
set man_orgs_default [lors::imsmd::getAtt $organizations default]
set man_id [lors::imscp::manifest_add \
- -course_name $course_name \
- -identifier $man_identifier \
- -version $man_version \
- -orgs_default $man_orgs_default \
- -hasmetadata $man_hasmetadata \
- -course_presentation_format $format_id \
- -isscorm $man_isscorm \
- -folder_id $new_items_parent_id \
+ -course_name $course_name \
+ -identifier $man_identifier \
+ -version $man_version \
+ -orgs_default $man_orgs_default \
+ -hasmetadata $man_hasmetadata \
+ -course_presentation_format $format_id \
+ -isscorm $man_isscorm \
+ -folder_id $new_items_parent_id \
-fs_package_id $fs_package_id \
- -community_id $community_id \
- -content_folder_id $new_parent_id]
+ -community_id $community_id \
+ -content_folder_id $new_parent_id]
+ ns_write "[_ lorsm.lt_Granting_permissions__1]
"
- ns_write "[_ lorsm.lt_Granting_permissions__1]
"
+ # PERMISSIONS FOR MANIFEST and learning objects
- # PERMISSIONS FOR MANIFEST and learning objects
+ # set up in the same way as permissions for the file storage
+ # objects. As we want to maintain consistency btw the
+ # learnining objects and their content
- # set up in the same way as permissions for the file storage
- # objects. As we want to maintain consistency btw the
- # learnining objects and their content
+ # Disable folder permissions inheritance
+ permission::toggle_inherit -object_id $man_id
- # Disable folder permissions inheritance
- permission::toggle_inherit -object_id $man_id
+ # Set read permissions for community/class dotlrn_member_rel
- # Set read permissions for community/class dotlrn_member_rel
+ set community_id [dotlrn_community::get_community_id]
- set community_id [dotlrn_community::get_community_id]
+ set party_id_member [db_string party_id {
+ select segment_id
+ from rel_segments
+ where group_id = :community_id
+ and rel_type = 'dotlrn_member_rel'}]
- set party_id_member [db_string party_id {select segment_id from rel_segments \
- where group_id = :community_id \
- and rel_type = 'dotlrn_member_rel'}]
+ permission::grant \
+ -party_id $party_id_member \
+ -object_id $man_id \
+ -privilege read
- permission::grant -party_id $party_id_member -object_id $man_id -privilege read
+ # Set read permissions for community/class dotlrn_admin_rel
- # Set read permissions for community/class dotlrn_admin_rel
+ set party_id_admin [db_string party_id {
+ select segment_id
+ from rel_segments
+ where group_id = :community_id
+ and rel_type = 'dotlrn_admin_rel'}]
- set party_id_admin [db_string party_id {select segment_id from rel_segments \
- where group_id = :community_id \
- and rel_type = 'dotlrn_admin_rel'}]
+ permission::grant \
+ -party_id $party_id_admin \
+ -object_id $man_id \
+ -privilege read
- permission::grant -party_id $party_id_admin -object_id $man_id -privilege read
+ # Set read permissions for *all* other professors within .LRN
+ # (so they can see the content)
- # Set read permissions for *all* other professors within .LRN
- # (so they can see the content)
+ set party_id_professor [db_string party_id {
+ select segment_id
+ from rel_segments
+ where rel_type = 'dotlrn_professor_profile_rel'}]
- set party_id_professor [db_string party_id {select segment_id from rel_segments \
- where rel_type = 'dotlrn_professor_profile_rel'}]
+ permission::grant \
+ -party_id $party_id_professor \
+ -object_id $man_id \
+ -privilege read
- permission::grant -party_id $party_id_professor -object_id $man_id -privilege read
+ # Set read permissions for *all* other admins within .LRN
+ # (so they can see the content)
- # Set read permissions for *all* other admins within .LRN
- # (so they can see the content)
+ set party_id_admins [db_string party_id {
+ select segment_id
+ from rel_segments
+ where rel_type = 'dotlrn_admin_profile_rel'}]
- set party_id_admins [db_string party_id {select segment_id from rel_segments \
- where rel_type = 'dotlrn_admin_profile_rel'}]
+ permission::grant \
+ -party_id $party_id_admins \
+ -object_id $man_id \
+ -privilege read
- permission::grant -party_id $party_id_admins -object_id $man_id -privilege read
+ # Done with Manifest and learning object Permissions
- # Done with Manifest and learning object Permissions
+ ns_write "[_ lorsm.lt_Adding_course_name_Ma]
"
- ns_write "[_ lorsm.lt_Adding_course_name_Ma]
"
-
if {$man_hasmetadata == 1} {
# adds manifest metadata
set aa [lors::imsmd::addMetadata \
-acs_object $man_id \
-node $metadata \
-dir $tmp_dir]
-
- ns_write "[_ lorsm.lt_Adding_Manifest_Metad]
"
-
+ ns_write "[_ lorsm.lt_Adding_Manifest_Metad]
"
}
if { ![empty_string_p $organizations] } {
-
- # for multiple organizations
+ # for multiple organizations
set add [list]
foreach organization [$organizations child all organization] {
+ set org_identifier [lors::imsmd::getResource \
+ -node $organization \
+ -att identifier]
- set org_identifier [lors::imsmd::getResource -node $organization -att identifier]
+ set org_identifier [lors::imsmd::getResource \
+ -node $organization \
+ -att identifier]
- set org_identifier [lors::imsmd::getResource -node $organization -att identifier]
- set org_structure [lors::imsmd::getResource -node $organization -att structure]
- if {![empty_string_p [$organization child all title]]} {
- set org_title [lors::imsmd::getElement [$organization child all title]]
- } else {
- set org_title ""
- }
+ set org_structure [lors::imsmd::getResource \
+ -node $organization \
+ -att structure]
+
+ if {![empty_string_p [$organization child all title]]} {
+ set org_title [lors::imsmd::getElement \
+ [$organization child all title]]
+ } else {
+ set org_title ""
+ }
+
set org_hasmetadata [lors::imsmd::hasMetadata $organization]
-
+
set org_id [lors::imscp::organization_add \
-man_id $man_id \
-identifier $org_identifier \
-structure $org_structure \
-title $org_title \
- -hasmetadata $org_hasmetadata\
- -org_folder_id $new_items_parent_id]
+ -hasmetadata $org_hasmetadata \
+ -org_folder_id $new_items_parent_id]
- ns_write "[_ lorsm.lt_Adding_Organization_o]
"
+ ns_write "[_ lorsm.lt_Adding_Organization_o]
"
if {$org_hasmetadata == 1} {
@@ -393,93 +492,108 @@
set list_items [lors::imscp::getItems $organization]
-# ns_write "[_ lorsm.lt_here_is_list_items_li]"
+ # ns_write "[_ lorsm.lt_here_is_list_items_li]"
- set add [concat $add [lors::imscp::addItems -itm_folder_id $new_items_parent_id -org_id $org_id $list_items 0 $tmp_dir]]
+ set add [concat $add [lors::imscp::addItems \
+ -itm_folder_id $new_items_parent_id \
+ -org_id $org_id $list_items 0 $tmp_dir]]
- set tempval [llength $add]
- ns_write "[_ lorsm.lt_Adding_tempval_items_]
"
-
+ set tempval [llength $add]
+ ns_write "[_ lorsm.lt_Adding_tempval_items_]
"
}
-
}
set l_files [list]
-
set resources [$manifest child all resources]
-
set resourcex [$resources child all resource]
if { ![empty_string_p $resourcex] } {
-
set res_list [list]
+
foreach resource $resourcex {
- set res_identifier [lors::imsmd::getResource -node $resource -att identifier]
- set res_type [lors::imsmd::getResource -node $resource -att type]
- set res_href [lors::imsmd::getResource -node $resource -att href]
- set res_dependencies [lors::imsmd::getResource -node $resource -att dependencies]
+ set res_identifier [lors::imsmd::getResource \
+ -node $resource \
+ -att identifier]
+
+ set res_type [lors::imsmd::getResource \
+ -node $resource \
+ -att type]
+
+ set res_href [lors::imsmd::getResource \
+ -node $resource \
+ -att href]
+
+ set res_dependencies [lors::imsmd::getResource \
+ -node $resource \
+ -att dependencies]
+
set res_hasmetadata [lors::imsmd::hasMetadata $resource]
- set res_files [lors::imsmd::getResource -node $resource -att files]
+ set res_files [lors::imsmd::getResource \
+ -node $resource \
+ -att files]
+
set res_scormtype [lors::imsmd::getAtt $resource adlcp:scormtype]
# Integration with other packages
# This callback gets the href of the imported content (if some package imported it)
- set res_href_tmp [callback -catch lors::import -res_type $res_type -res_href $res_href -tmp_dir $tmp_dir -community_id $community_id]
+ set res_href_tmp [callback \
+ -catch lors::import \
+ -res_type $res_type \
+ -res_href $res_href \
+ -tmp_dir $tmp_dir \
+ -community_id $community_id]
+
if {![empty_string_p $res_href_tmp]} {
set res_href $res_href_tmp
}
set resource_id [lors::imscp::resource_add \
- -man_id $man_id \
- -identifier $res_identifier \
- -type $res_type \
- -href $res_href \
- -scorm_type $res_scormtype \
- -hasmetadata $res_hasmetadata \
- -res_folder_id $new_items_parent_id]
+ -man_id $man_id \
+ -identifier $res_identifier \
+ -type $res_type \
+ -href $res_href \
+ -scorm_type $res_scormtype \
+ -hasmetadata $res_hasmetadata \
+ -res_folder_id $new_items_parent_id]
- ns_write "[_ lorsm.lt_Adding_resource_res_i_2]
"
-
- lappend res_list [concat "$resource_id $res_identifier"]
+ ns_write "[_ lorsm.lt_Adding_resource_res_i_2]
"
-
+ lappend res_list [concat "$resource_id $res_identifier"]
-
if {$res_hasmetadata == 1} {
set res_md_add [lors::imsmd::addMetadata \
-acs_object $resource_id \
-node [lors::imsmd::getMDNode $resource] \
-dir $tmp_dir]
- ns_write "[_ lorsm.lt_Adding_resource_res_i_3]
"
-
+ ns_write "[_ lorsm.lt_Adding_resource_res_i_3]
"
}
foreach dependency $res_dependencies {
-
set dep_id [lors::imscp::dependency_add \
-res_id $resource_id \
-identifierref $dependency]
- ns_write "[_ lorsm.lt_Adding_resource_depen]
"
-
+ ns_write "[_ lorsm.lt_Adding_resource_depen]
"
}
foreach file $res_files {
- lappend l_files [list [lindex $file 0] $resource_id [lindex $file 1]]
-
- # ns_write "[_ lorsm.lt_resource_id_res_ident]"
- # ns_write "\t$file \n"
+ lappend l_files [list \
+ [lindex $file 0] \
+ $resource_id \
+ [lindex $file 1]]
+ # ns_write "[_ lorsm.lt_resource_id_res_ident]"
+ # ns_write "\t$file \n"
}
}
}
# gets the resources
set resources [$manifest child all resources]
-
+
} else {
# Error MSG here
#ns_write "[_ lorsm.no_page]"
@@ -495,75 +609,67 @@
# a -regexp
foreach ref $add {
- lappend i_identref [lindex $ref 1]
+ lappend i_identref [lindex $ref 1]
}
foreach resource $res_list {
+ set find_item_id [lsearch -all -exact $i_identref [lindex $resource 1]]
- set find_item_id [lsearch -all -exact $i_identref [lindex $resource 1]]
-
- if {$find_item_id != -1} {
-
- foreach item_to_res $find_item_id {
-
- set item_to_resource [lors::imscp::item_to_resource_add \
- -item_id [lindex [lindex $add $item_to_res] 0] \
- -res_id [lindex $resource 0]
- ]
- }
-
- }
-
+ if {$find_item_id != -1} {
+ foreach item_to_res $find_item_id {
+ set item_to_resource [lors::imscp::item_to_resource_add \
+ -item_id [lindex \
+ [lindex $add $item_to_res] 0] \
+ -res_id [lindex $resource 0]]
+ }
+ }
}
ns_write "[_ lorsm.lt_Now_we_are_almost_don]
"
foreach file $l_files {
set filename [lindex $file 0]
-
set found_file [lsearch -all -regexp $all_files $filename]
- if {[llength $found_file] > 1} {
- # we are suppose to get only one element back, so we have
- # to refine the search a bit more.
- set found_file [lsearch -all -regexp -exact $all_files $tmp_dir/$filename]
- }
-
- if {![empty_string_p $found_file]} {
- set file_id [lindex [lindex $all_files $found_file] 3]
+ if {[llength $found_file] > 1} {
+ # we are suppose to get only one element back, so we have
+ # to refine the search a bit more.
+ set found_file [lsearch -all -regexp \
+ -exact $all_files $tmp_dir/$filename]
+ }
+
+ if {![empty_string_p $found_file]} {
+ set file_id [lindex [lindex $all_files $found_file] 3]
set file_rev_id [content::item::get_live_revision -item_id $file_id]
- set res_id [lindex $file 1]
- set file_hasmetadata [lindex $file 2]
+ set res_id [lindex $file 1]
+ set file_hasmetadata [lindex $file 2]
- regexp {([^/\\]+)$} $filename match filex
+ regexp {([^/\\]+)$} $filename match filex
- if {$file_hasmetadata != 0} {
- set hasmetadata 1
- } else {
- set hasmetadata 0
- }
+ if {$file_hasmetadata != 0} {
+ set hasmetadata 1
+ } else {
+ set hasmetadata 0
+ }
- set fileadd [lors::imscp::file_add \
- -file_id $file_rev_id \
- -res_id $res_id \
- -pathtofile $filename \
- -filename $filex \
- -hasmetadata $hasmetadata]
+ set fileadd [lors::imscp::file_add \
+ -file_id $file_rev_id \
+ -res_id $res_id \
+ -pathtofile $filename \
+ -filename $filex \
+ -hasmetadata $hasmetadata]
- ns_write "[_ lorsm.Adding_file_filex]
"
+ ns_write "[_ lorsm.Adding_file_filex]
"
-
- if {$file_hasmetadata != 0} {
- set add_file_metadata [lors::imsmd::addMetadata \
- -acs_object $file_id \
- -node $file_hasmetadata \
- -dir $tmp_dir]
-
- ns_write "[_ lorsm.lt_Adding_file_filex_met_1]
"
- }
- }
-
+ if {$file_hasmetadata != 0} {
+ set add_file_metadata [lors::imsmd::addMetadata \
+ -acs_object $file_id \
+ -node $file_hasmetadata \
+ -dir $tmp_dir]
+ ns_write "[_ lorsm.lt_Adding_file_filex_met_1]
"
+ }
+ }
}
@@ -576,6 +682,4 @@
# jump to the front page
ad_progress_bar_end -url [apm_package_url_from_id [ad_conn package_id]]/admin
-
-
}