Index: openacs-4/packages/lorsm/www/admin/course-add-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/admin/course-add-2.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/lorsm/www/admin/course-add-2.tcl 13 Aug 2007 09:20:16 -0000 1.2 +++ openacs-4/packages/lorsm/www/admin/course-add-2.tcl 17 Nov 2008 13:36:44 -0000 1.3 @@ -21,7 +21,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_]" } } @@ -36,30 +38,34 @@ # unzips the file if { ![empty_string_p $upload_file] && - [ catch {set tmp_dir [lors::imscp::expand_file $upload_file ${upload_file.tmpfile} lors-imscp-$course_id] } errMsg] } { + [ catch {set tmp_dir [lors::imscp::expand_file \ + $upload_file \ + ${upload_file.tmpfile} \ + lors-imscp-$course_id] } errMsg ] } { ad_return_complaint 1 "[_ lorsm.lt_The_uploaded_file_doe]" ad_script_abort } # if it is not blank... if {![empty_string_p $upload_file]} { - ns_log Debug "LORS Package: made directory $tmp_dir to extract from ${upload_file.tmpfile} ($upload_file)\n" - #checks for nested imsmanifest.xml and sets root there - while { [llength [glob -nocomplain [file join $tmp_dir *]]] == 1 } { - set tmp_dir [lindex [glob -nocomplain [file join $tmp_dir *]] 0] - set allfiles [lors::imscp::dir_walk $tmp_dir] - } + ns_log Debug "LORS Package: made directory $tmp_dir to extract + from ${upload_file.tmpfile} ($upload_file)\n" + #checks for nested imsmanifest.xml and sets root there + while { [llength [glob -nocomplain [file join $tmp_dir *]]] == 1 } { + set tmp_dir [lindex [glob -nocomplain [file join $tmp_dir *]] 0] + set allfiles [lors::imscp::dir_walk $tmp_dir] + } } else { set allfiles [lors::imscp::dir_walk $directory] } #unusefully duplicates, leaving unzips around # unzips the file -#if { ![empty_string_p $upload_file] && +#if { ![empty_string_p $upload_file] && # [ catch {set tmp_dir [lors::imscp::expand_file $upload_file ${upload_file.tmpfile} lors-imscp-$course_id] } errMsg] } { # ad_return_complaint 1 "[_ lorsm.lt_The_uploaded_file_doe]" # ad_script_abort -#} +#} # search for manifest file set file imsmanifest.xml @@ -81,7 +87,6 @@ ns_log Notice "Generating MD record from Blackboard6 package $tmp_dir --" lors::imscp::bb6::create_MD -tmp_dir $tmp_dir -file $file ns_log Notice "Done!" - } ## adds folder to the CR @@ -109,11 +114,13 @@ -elements { col1 { label "" - html {valign top style "background-color: #e0e0e0; font-weight: bold;"} - } - col2 { + html {valign top style "background-color: #e0e0e0; + font-weight: bold;"} + + } col2 { label "" - html {valign top style "background-color: #f0f0f0; font-weight: bold;"} + html {valign top style "background-color: #f0f0f0; + font-weight: bold;"} } } @@ -128,16 +135,16 @@ organizations { label "[_ lorsm.Organizations]" html {valign top align center} - } - items { + + } items { label "[_ lorsm.Items]" html {valign top align center} - } - resources { + + } resources { label "[_ lorsm.Resources]" html {valign top align center} - } - files { + + } files { label "[_ lorsm.Files]" html {valign top align center} } @@ -153,16 +160,16 @@ scos { label "[_ lorsm.SCOs]" html {valign top} - } - assets { + + } assets { label "[_ lorsm.Assets]" html {valign top} - } - sharableresources { + + } sharableresources { label "[_ lorsm.Sharable_Resources]" html {valign top} - } - files { + + } files { label "[_ lorsm.files]" html {valign top} } @@ -187,73 +194,102 @@ if { ![empty_string_p $metadata] } { - # gets metadataschema - set MetadataSchema [lindex [lindex [lors::imsmd::getMDSchema $metadata] 0] 0] - set MetadataSchemaVersion [lindex [lors::imsmd::getMDSchema $metadata] 1] + # gets metadataschema + set MetadataSchema [lindex \ + [lindex [lors::imsmd::getMDSchema $metadata] 0] 0] + + set MetadataSchemaVersion [lindex [lors::imsmd::getMDSchema $metadata] 1] 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] + 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 - multirow append d_info "Manifest Title: " "\[$manifest_title_lang\] $manifest_title " - multirow append d_info "Metadata Type: " [concat $MetadataSchema $MetadataSchemaVersion] + multirow append d_info "Manifest Title: " "\[$manifest_title_lang\] + $manifest_title " + multirow append d_info "Metadata Type: " \ + [concat $MetadataSchema $MetadataSchemaVersion] if {![empty_string_p $manifest_descrip]} { - multirow append d_info "Description: " "\[$manifest_descrip_lang\] $manifest_descrip" + multirow append d_info "Description: " "\[$manifest_descrip_lang\] + $manifest_descrip" } # 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 { $copyright != 0 } { 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] - multirow append d_info "Copyrighted?: " "\[$copyright_s\] $copyright_v" - multirow append d_info "Copyrighted Description: " "$cr_descrip_s" + multirow append d_info "Copyrighted?: " "\[$copyright_s\] + $copyright_v" + multirow append d_info "Copyrighted Description: " \ + "$cr_descrip_s" } else { - multirow append d_info "Copyrighted?: " "Information not available" + multirow append d_info "Copyrighted?: " \ + "Information not available" } + } else { - # Didn't find LOM although it did find the Metadata schema and - # version - regexp {([^/\\]+)$} $tmp_dir match manifest_title - set context "[_ lorsm.lt_Importing_No_Metadata]" - } + # Didn't find LOM although it did find the Metadata schema and + # version + regexp {([^/\\]+)$} $tmp_dir match manifest_title + set context "[_ lorsm.lt_Importing_No_Metadata]" + } + } else { - # manifest title doesn't exist, so we create one for it. - regexp {([^/\\]+)$} $tmp_dir match manifest_title + # manifest title doesn't exist, so we create one for it. + regexp {([^/\\]+)$} $tmp_dir match manifest_title set context "[_ lorsm.lt_Importing_No_Metadata]" } # Gets the organizations - set organizations [$manifest child all organizations] - if { ![empty_string_p $organizations] } { - - set num_organizations [$organizations child all organization] - - multirow append d_info "Number of Organizations: " [llength $num_organizations] - + set num_organizations [$organizations child all organization] + multirow append d_info "Number of Organizations: " \ + [llength $num_organizations] set items 0 - foreach organization $num_organizations { - set items [expr $items + [lors::imscp::countItems $organization]] - } multirow append d_info "Number of Items: " $items } @@ -263,108 +299,130 @@ # Complain if there's no resources if {[empty_string_p $resources]} { - ad_return_complaint 1 "[_ lorsm.lt_The_package_you_are_t_1]" - ad_script_abort - } + ad_return_complaint 1 "[_ lorsm.lt_The_package_you_are_t_1]" + ad_script_abort + } set resourcex [$resources child all resource] if { $isSCORM == 1 } { - # The imsmanifest.xml file contains a SCORM course - + # The imsmanifest.xml file contains a SCORM course # extract all the resources and files set scos 0 set assets 0 set sharableresources 0 set files 0 - + if { ![empty_string_p $resources] } { - foreach resourcex [$resources child all resource] { - # gets the type of resource - set resource_scormtype [string tolower [lors::imsmd::getAtt $resourcex adlcp:scormtype]] + set resource_scormtype [string tolower \ + [lors::imsmd::getAtt $resourcex adlcp:scormtype]] switch $resource_scormtype { sco { incr scos - } - asset { + + } asset { incr assets - } - sharableresource { + + } sharableresource { incr sharableresources } } - - set files [expr $files + [llength [lors::imsmd::getResource -node $resourcex -att files]]] - + set files [expr $files + [llength [lors::imsmd::getResource \ + -node $resourcex \ + -att files]]] } } - multirow append d_SCORM_package_info $scos $assets $sharableresources $files + multirow append d_SCORM_package_info $scos $assets \ + $sharableresources $files - - # end isSCORM if } else { # The imsmanifest.xml file corresponds to a IMS CP (but not SCORM) set files 0 if { ![empty_string_p $resourcex] } { - foreach resource $resourcex { - set files [expr $files + [llength [lors::imsmd::getResource -node $resource -att files]]] + set files [expr $files + [llength [lors::imsmd::getResource \ + -node $resource \ + -att files]]] } } - multirow append d_IMS_package_info [llength $num_organizations] $items [llength $resourcex] $files - + multirow append d_IMS_package_info [llength $num_organizations] \ + $items [llength $resourcex] $files } - } else { # Error MSG here ad_return_complaint 1 "[_ lorsm.lt_There_has_been_a_prob]" ad_script_abort } -template::form create course_upload -action course-add-3 \ - -display_buttons { {"[_ lorsm.Upload_Course]" upload_course} } \ +template::form create course_upload \ + -action course-add-3 \ + -display_buttons { {"[_ lorsm.Upload_Course]" upload_course} } \ -html {enctype multipart/form-data} \ -mode edit \ - -cancel_url "[_ lorsm.index]" + -cancel_url "[_ lorsm.index]" +template::element create course_upload course_name \ + -label "[_ lorsm.Course_Name]" \ + -datatype text \ + -widget text \ + -help_text "[_ lorsm.lt_This_is_the_name_the_]" \ + -maxlength 200 -template::element create course_upload course_name \ - -label "[_ lorsm.Course_Name]" -datatype text -widget text -help_text "[_ lorsm.lt_This_is_the_name_the_]" \ - -maxlength 200 +template::element create course_upload format_id \ + -label "[_ lorsm.lt_Course_Presentation_S]" \ + -datatype text \ + -widget select \ + -options [db_list_of_lists select_formats_for_select_widget { + select format_pretty_name, + format_id + from lorsm_course_presentation_formats + order by format_pretty_name}] \ + -help_text "[_ lorsm.lt_Use_the_Classic_Style]" \ + -value [db_string default_format { + select format_id + from lorsm_course_presentation_formats + where format_name = 'default'}] -template::element create course_upload format_id \ - -label "[_ lorsm.lt_Course_Presentation_S]" -datatype text -widget select -options [db_list_of_lists select_formats_for_select_widget {select format_pretty_name, - format_id - from lorsm_course_presentation_formats - order by format_pretty_name}] \ - -help_text "[_ lorsm.lt_Use_the_Classic_Style]" -value [db_string default_format {select format_id from lorsm_course_presentation_formats where format_name = 'default'}] +template::element create course_upload course_id \ + -label "[_ lorsm.course_id]" \ + -datatype integer \ + -widget hidden -template::element create course_upload course_id \ - -label "[_ lorsm.course_id]" -datatype integer -widget hidden +template::element create course_upload indb_p \ + -label "[_ lorsm.indb_p]" \ + -datatype integer \ + -widget hidden -template::element create course_upload indb_p \ - -label "[_ lorsm.indb_p]" -datatype integer -widget hidden +template::element create course_upload tmp_dir \ + -label "[_ lorsm.tmp_dir]" \ + -datatype text \ + -widget hidden \ + -optional -template::element create course_upload tmp_dir \ - -label "[_ lorsm.tmp_dir]" -datatype text -widget hidden -optional +template::element create course_upload folder_id \ + -label "[_ lorsm.folder_id]" \ + -datatype integer \ + -widget hidden -template::element create course_upload folder_id \ - -label "[_ lorsm.folder_id]" -datatype integer -widget hidden +template::element create course_upload isSCORM \ + -label "[_ lorsm.isSCORM]" \ + -datatype integer \ + -widget hidden \ + -optional -template::element create course_upload isSCORM \ - -label "[_ lorsm.isSCORM]" -datatype integer -widget hidden -optional +template::element create course_upload fs_package_id \ + -label "[_ lorsm.fs_package_id]" \ + -datatype integer \ + -widget hidden -template::element create course_upload fs_package_id \ - -label "[_ lorsm.fs_package_id]" -datatype integer -widget hidden - template::element set_properties course_upload course_name -value $manifest_title template::element set_properties course_upload course_id -value $course_id @@ -377,10 +435,5 @@ template::element set_properties course_upload isSCORM -value $isSCORM -template::element set_properties course_upload fs_package_id -value $fs_package_id - - - - - - +template::element set_properties course_upload fs_package_id \ + -value $fs_package_id