Index: openacs-4/packages/assessment/www/asm-admin/item-add-mc-choices.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/asm-admin/item-add-mc-choices.tcl,v diff -u -r1.8 -r1.9 --- openacs-4/packages/assessment/www/asm-admin/item-add-mc-choices.tcl 7 Apr 2005 22:42:48 -0000 1.8 +++ openacs-4/packages/assessment/www/asm-admin/item-add-mc-choices.tcl 12 Jun 2006 02:49:51 -0000 1.9 @@ -15,6 +15,7 @@ answer_val:array,optional percent:array,optional selected:array,optional + {type ""} } -properties { context:onevalue page_title:onevalue @@ -33,9 +34,12 @@ } set package_id [ad_conn package_id] +set type $assessment_data(type) set page_title [_ assessment.add_item_type_mc_choices] set context [list [list index [_ assessment.admin]] [list [export_vars -base one-a {assessment_id}] $assessment_data(title)] $page_title] + + set selected_options [list [list "[_ assessment.yes]" t]] ad_form -name item_add_mc_choices -action item-add-mc-choices -export { assessment_id section_id after mc_id display_type } -html {enctype multipart/form-data} -form { @@ -45,11 +49,54 @@ # add form entries for each choice set ad_form_code "-form \{\n" set count_correct 0 + +if { $type == 1} { + set max_file_size 10000000 + # [ad_parameter MaxAttachmentSize] + set pretty_max_size [util_commify_number $max_file_size] + set folder_id [as::assessment::folder_id -package_id $package_id] + + db_transaction { + set count 0 + foreach choice_id [array names feedback] { + set feedback_text $feedback($choice_id) + set selected_p [ad_decode [info exists selected($choice_id)] 0 f t] + set percent_score $percent($choice_id) + set fixed_position $fixed_pos($choice_id) + set answer_value $answer_val($choice_id) + + eval set content "\$content_$choice_id" + if {![empty_string_p $content]} { + set filename [lindex $content 0] + set tmp_filename [lindex $content 1] + set file_mimetype [lindex $content 2] + set n_bytes [file size $tmp_filename] + + if { $n_bytes > $max_file_size && $max_file_size > 0 } { + ad_return_complaint 1 "[_ assessment.file_too_large]" + return + } + if { $n_bytes == 0 } { + ad_return_complaint 1 "[_ assessment.file_zero_size]" + return + } + set content_rev_id [cr_import_content -title $filename $folder_id $tmp_filename $n_bytes $file_mimetype [as::item::generate_unique_name]] + } else { + set content_rev_id "" + } + + db_dml update_choice_data {} + } + } + ad_returnredirect [export_vars -base "item-add-display-$display_type" {assessment_id section_id as_item_id after}] + ad_script_abort +} + db_foreach get_choices {} { if {$correct_answer_p == "t"} { - append ad_form_code "\{infotxt.$choice_id:text(inform) \{label \"[_ assessment.Choice] $title\"\} \{value \"\"\}\}\n" + append ad_form_code "\{infotxt.$choice_id:text(inform) \{label \"[_ assessment.Choice] \$title\"\} \{value \"\"\}\}\n" } else { - append ad_form_code "\{infotxt.$choice_id:text(inform) \{label \"[_ assessment.Choice] $title\"\} \{value \"\"\}\}\n" + append ad_form_code "\{infotxt.$choice_id:text(inform) \{label \"[_ assessment.Choice] \$title\"\} \{value \"\"\}\}\n" } append ad_form_code "\{selected.$choice_id:text(checkbox),optional \{label \"[_ assessment.Default_Selected]\"\} \{options \$selected_options\} \{help_text \"[_ assessment.Default_Selected_help]\"\}\}\n" append ad_form_code "\{fixed_pos.$choice_id:text,optional,nospell \{label \"[_ assessment.Fixed_Position]\"\} \{html \{size 5 maxlength 5\}\} \{help_text \"[_ assessment.choice_Fixed_Position_help]\"\}\}\n" @@ -109,7 +156,7 @@ ad_return_complaint 1 "[_ assessment.file_zero_size]" return } - set content_rev_id [cr_import_content -title $filename $folder_id $tmp_filename $n_bytes $file_mimetype [exec uuidgen]] + set content_rev_id [cr_import_content -title $filename $folder_id $tmp_filename $n_bytes $file_mimetype [as::item::generate_unique_name]] } else { set content_rev_id "" }