Index: openacs-4/packages/imsld/lib/imsld-chunk.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/lib/imsld-chunk.adp,v
diff -u -r1.5 -r1.6
--- openacs-4/packages/imsld/lib/imsld-chunk.adp 23 Nov 2005 11:06:33 -0000 1.5
+++ openacs-4/packages/imsld/lib/imsld-chunk.adp 25 Nov 2005 12:11:35 -0000 1.6
@@ -1 +1,15 @@
+
+
+
+
---
" -# see if the file actually is where it suppose to be. Othewise abort -if {$manifest == 0} { - imsld::parse::remove_dir -dir $tmp_dir - ad_return_error "[_ imsld.lt_No_imsmanifestxml_fou]" "[_ imsld.lt_No_imsmanifestxml_was]" +set community_id [dotlrn_community::get_community_id] +# Atempting to create the new IMS LD. +# The proc imsld::parse::parse_and_create_imsld_manifest return a pair of values (manifest_id and a message) +set manifest_list [imsld::parse::parse_and_create_imsld_manifest -xmlfile $tmp_dir/imsmanifest.xml \ + -manifest_id $manifest_id \ + -tmp_dir $tmp_dir \ + -community_id $community_id] + +set manifest_id [lindex $manifest_list 0] + +if { !$manifest_id } { + set errmsg [lindex $manifest_list 1] + ad_return_error "[_ imsld.lt_Error_parsing_manifes]" "[_ imsld.lt_There_was_an_error_pa]" ad_script_abort } -# open the imsmanifest.xml file -dom parse [::tDOM::xmlReadFile $manifest] doc -set manifest [$doc documentElement] +# delete the tmpdir +imsld::parse::remove_dir -dir $tmp_dir -# Pair of values, success_p + explanation -set is_imsld_list [imsld::parse::is_imsld -tree $manifest] +set warnings "[lindex $manifest_list 1]" -if { [lindex $is_imsld_list 0] } { - - multirow create imsld_info element_name info - - template::list::create \ - -name imsld_info \ - -multirow imsld_info \ - -no_data "[_ imsld.lt_No_information_found_]" \ - -elements { - element_name { - label "" - html {valign top style "background-color: #e0e0e0; font-weight: bold;"} - } - info { - label "" - html {valign top style "background-color: #f0f0f0; font-weight: bold;"} - } - - } - - # Get the info from the manifest - set organizations [$manifest child all imscp:organizations] - if { ![llength $organizations] } { - set organizations [$manifest child all organizations] - } - set imsld [$organizations child all imsld:learning-design] - if { ![llength $imsld] } { - set imsld [$organizations child all learning-design] - } - set imsld_title [imsld::parse::get_title -node $imsld -prefix imsld] - set imsld_level [imsld::parse::get_attribute -node $imsld -attr_name level] - set imsld_level [expr { [empty_string_p $imsld_level] ? "[_ imsld.Not_defined]" : $imsld_level }] - multirow append imsld_info "[_ imsld.IMD_LD_Title]" "$imsld_title" - multirow append imsld_info "[_ imsld.IMD_LD_Level]" "$imsld_level" - - # Components - set components [$imsld child all imsld:components] - imsld::parse::validate_multiplicity -tree $components -multiplicity 1 -element_name components -equal - - set roles [$components child all imsld:roles] - if { [llength $roles] } { - set learners [llength [$roles child all imsld:learner]] - set staff [llength [$roles child all imsld:staff]] - multirow append imsld_info "[_ imsld.Total_Roles]" [expr $learners + $staff] - multirow append imsld_info "[_ imsld.Learners_Roles]" $learners - multirow append imsld_info "[_ imsld.Staff_Roels]" $staff - } - - set activities [$components child all imsld:activities] - if { [llength $activities] } { - set learning_activities [llength [$activities child all imsld:learning-activity]] - set support_activities [llength [$activities child all imsld:support-activity]] - set activity_structures [llength [$activities child all imsld:activity-structure]] - multirow append imsld_info "[_ imsld.Total_Activities]" [expr $learning_activities + $support_activities + $activity_structures] - multirow append imsld_info "[_ imsld.Learning_Activities]" $learning_activities - multirow append imsld_info "[_ imsld.Support_Activities]" $support_activities - multirow append imsld_info "[_ imsld.Activity_Structures]" $activity_structures - } - - # Methods - set methods [$imsld child all imsld:method] - imsld::parse::validate_multiplicity -tree $methods -multiplicity 1 -element_name methods -equal - - set plays [$methods child all imsld:play] - imsld::parse::validate_multiplicity -tree $plays -multiplicity 0 -element_name plays -greather_than - - set count 1 - foreach play $plays { - set play_identifier [imsld::parse::get_attribute -node $play -attr_name identifier] - set acts [$play child all imsld:act] - imsld::parse::validate_multiplicity -tree $acts -multiplicity 0 -element_name acts -greather_than -# multirow append imsld_info "[_ imsld.Acts_in_play_count]" [llength $acts] - incr count - } - -} else { - # Not valid (or supported?) IMS LD - set message [lindex $is_imsld_list 1] - ad_return_error "[_ imsld.No_IMS_LD]" "[_ imsld.lt_Couldnt_determine_if_]" - ad_script_abort +if { ![string eq "" $warnings] } { + ns_write "[_ imsld.lt_br__Warnings_ul_warni]" + ns_sleep 5 } -ad_form -name imsld_upload -cancel_url $return_url -action imsld-new-3 -html { enctype multipart/form-data } -form { - {tmp_dir:text {widget hidden} {value $tmp_dir}} - {return_url:text {widget hidden} {value $return_url}} - {manifest_id:integer {widget hidden} {value $manifest_id}} -} +# jump to the front page +ad_progress_bar_end -url [dotlrn_community::get_community_url $community_id] -set file_str [imsld::parse::get_files_structure -tmp_dir $tmp_dir] - Fisheye: Tag 1.5 refers to a dead (removed) revision in file `openacs-4/packages/imsld/www/admin/imsld-new-3.adp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.10 refers to a dead (removed) revision in file `openacs-4/packages/imsld/www/admin/imsld-new-3.tcl'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/imsld/www/admin/imsld-new.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/admin/imsld-new.adp,v diff -u -r1.1 -r1.2 --- openacs-4/packages/imsld/www/admin/imsld-new.adp 26 Jul 2005 08:05:35 -0000 1.1 +++ openacs-4/packages/imsld/www/admin/imsld-new.adp 25 Nov 2005 12:11:36 -0000 1.2 @@ -2,4 +2,14 @@@page_title;noquote@ @context;noquote@ -+
+ #imsld.No# + ++ #imsld.lt_Please_confirm_the_in# + + Index: openacs-4/packages/imsld/www/admin/imsld-new.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/admin/imsld-new.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/imsld/www/admin/imsld-new.tcl 5 Oct 2005 15:33:27 -0000 1.3 +++ openacs-4/packages/imsld/www/admin/imsld-new.tcl 25 Nov 2005 12:11:36 -0000 1.4 @@ -1,11 +1,16 @@ +# /packages/imsld/www/admin/imsld-new-2.tcl + ad_page_contract { - Presents a form to upload a IMS LD ZIP file. + Pre parse the IMS LD ZIP file and requests confirmation from the user. @author jopez@inv.it.uc3m.es @creation-date jul 2005 } { - {return_url "index"} + upload_file:trim + upload_file.tmpfile:tmpfile + return_url + manifest_id:notnull } -properties { upload_file context:onevalue @@ -14,18 +19,119 @@ set package_id [ad_conn package_id] permission::require_permission -object_id $package_id -privilege create -set page_title "[_ imsld.New_IMS-LD]" -set context [list "[_ imsld.New_IMS-LD]"] +set page_title "[_ imsld.Confirm_New_IMS-LD]" +set context [list [list "[_ imsld.New_IMS-LD]" "new-imsld"] [list "[_ imsld.Confirm_New_IMS-LD]"]] set user_id [ad_conn user_id] -set manifest_id [db_nextval acs_object_id_seq] -# form to upload an IMS LD ZIP file +# expand file +set tmp_dir [imsld::parse::expand_file -upload_file $upload_file -tmpfile ${upload_file.tmpfile} -dest_dir_base manifest-${manifest_id}] -ad_form -name upload_file_form -html {enctype multipart/form-data} -cancel_url $return_url -action imsld-new-2 -form { - {upload_file:file {label "[_ imsld.IMS-LD_ZIP_File]"}} +# search for manifest file +set manifest [imsld::parse::find_manifest -dir $tmp_dir -file_name "imsmanifest.xml"] + +# see if the file actually is where it suppose to be. Othewise abort +if {$manifest == 0} { + imsld::parse::remove_dir -dir $tmp_dir + ad_return_error "[_ imsld.lt_No_imsmanifestxml_fou]" "[_ imsld.lt_No_imsmanifestxml_was]" + ad_script_abort +} + +# open the imsmanifest.xml file +dom parse [::tDOM::xmlReadFile $manifest] doc +set manifest [$doc documentElement] + +# Pair of values, success_p + explanation +set is_imsld_list [imsld::parse::is_imsld -tree $manifest] + +if { [lindex $is_imsld_list 0] } { + + multirow create imsld_info element_name info + + template::list::create \ + -name imsld_info \ + -multirow imsld_info \ + -no_data "[_ imsld.lt_No_information_found_]" \ + -elements { + element_name { + label "" + html {valign top style "background-color: #e0e0e0; font-weight: bold;"} + } + info { + label "" + html {valign top style "background-color: #f0f0f0; font-weight: bold;"} + } + + } + + # Get the info from the manifest + set organizations [$manifest child all imscp:organizations] + if { ![llength $organizations] } { + set organizations [$manifest child all organizations] + } + set imsld [$organizations child all imsld:learning-design] + if { ![llength $imsld] } { + set imsld [$organizations child all learning-design] + } + set imsld_title [imsld::parse::get_title -node $imsld -prefix imsld] + set imsld_level [imsld::parse::get_attribute -node $imsld -attr_name level] + set imsld_level [expr { [empty_string_p $imsld_level] ? "[_ imsld.Not_defined]" : $imsld_level }] + multirow append imsld_info "[_ imsld.IMD_LD_Title]" "$imsld_title" + multirow append imsld_info "[_ imsld.IMD_LD_Level]" "$imsld_level" + + # Components + set components [$imsld child all imsld:components] + imsld::parse::validate_multiplicity -tree $components -multiplicity 1 -element_name components -equal + + set roles [$components child all imsld:roles] + if { [llength $roles] } { + set learners [llength [$roles child all imsld:learner]] + set staff [llength [$roles child all imsld:staff]] + multirow append imsld_info "[_ imsld.Total_Roles]" [expr $learners + $staff] + multirow append imsld_info "[_ imsld.Learners_Roles]" $learners + multirow append imsld_info "[_ imsld.Staff_Roels]" $staff + } + + set activities [$components child all imsld:activities] + if { [llength $activities] } { + set learning_activities [llength [$activities child all imsld:learning-activity]] + set support_activities [llength [$activities child all imsld:support-activity]] + set activity_structures [llength [$activities child all imsld:activity-structure]] + multirow append imsld_info "[_ imsld.Total_Activities]" [expr $learning_activities + $support_activities + $activity_structures] + multirow append imsld_info "[_ imsld.Learning_Activities]" $learning_activities + multirow append imsld_info "[_ imsld.Support_Activities]" $support_activities + multirow append imsld_info "[_ imsld.Activity_Structures]" $activity_structures + } + + # Methods + set methods [$imsld child all imsld:method] + imsld::parse::validate_multiplicity -tree $methods -multiplicity 1 -element_name methods -equal + + set plays [$methods child all imsld:play] + imsld::parse::validate_multiplicity -tree $plays -multiplicity 0 -element_name plays -greather_than + + set count 1 + foreach play $plays { + set play_identifier [imsld::parse::get_attribute -node $play -attr_name identifier] + set acts [$play child all imsld:act] + imsld::parse::validate_multiplicity -tree $acts -multiplicity 0 -element_name acts -greather_than +# multirow append imsld_info "[_ imsld.Acts_in_play_count]" [llength $acts] + incr count + } + +} else { + # Not valid (or supported?) IMS LD + set message [lindex $is_imsld_list 1] + ad_return_error "[_ imsld.No_IMS_LD]" "[_ imsld.lt_Couldnt_determine_if_]" + ad_script_abort +} + +ad_form -name imsld_upload -cancel_url $return_url -action imsld-new-2 -html { enctype multipart/form-data } -form { + {tmp_dir:text {widget hidden} {value $tmp_dir}} {return_url:text {widget hidden} {value $return_url}} {manifest_id:integer {widget hidden} {value $manifest_id}} -} +} +set file_str [imsld::parse::get_files_structure -tmp_dir $tmp_dir] ++++ +