Index: openacs-4/packages/assessment/www/process-response.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/Attic/process-response.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/assessment/www/process-response.tcl 22 Sep 2004 15:27:08 -0000 1.3 +++ openacs-4/packages/assessment/www/process-response.tcl 7 Oct 2004 10:58:07 -0000 1.4 @@ -17,13 +17,32 @@ db_dml session_finished {UPDATE as_sessions SET last_mod_datetime = NOW(), completed_datetime = NOW() WHERE session_id = :as_session_id} -foreach response_to_item_id [array names response_to_item] { - db_foreach session_responses_to_item {SELECT as_item_datax.item_id FROM as_item_datax WHERE as_item_datax.as_item_id=:response_to_item_id AND as_sessionsx.session_id=:as_session_id} { - content::item::delete -item_id $item_id - } - foreach response $response_to_item($response_to_item_id) { - as_item_data_new -session_id $as_session_id -as_item_id $response_to_item_id -choice_id_answer $response - } +foreach response_to_item_name [array names response_to_item] { + regsub -all -line -nocase -- {.*_} $response_to_item_name {} response_to_item_choice_id + regsub -all -line -nocase -- {_.*} $response_to_item_name {} response_to_item_id + set item_item_id [db_string cr_item_from_revision "select item_id from cr_revisions where revision_id=:response_to_item_id"] + set item_display_id [db_string item_item_type "SELECT related_object_id FROM cr_item_rels WHERE relation_tag = 'as_item_display_rel' AND item_id=:item_item_id"] + db_0or1row as_item_display_rbx "SELECT item_id AS as_item_display_rbx__item_id FROM as_item_display_rbx WHERE item_id=:item_display_id" + db_0or1row as_item_display_tbx "SELECT item_id AS as_item_display_tbx__item_id FROM as_item_display_tbx WHERE item_id=:item_display_id" + set presentation_type "checkbox" ;# DEFAULT + if {[info exists as_item_display_rbx__item_id]} {set presentation_type "radio"} + if {[info exists as_item_display_tbx__item_id]} {set presentation_type "fitb"} + + if {[info exists as_item_display_tbx__item_id]} { + db_foreach session_responses_to_item {SELECT as_item_datax.item_id FROM as_item_datax WHERE as_item_datax.as_item_id=:response_to_item_id AND as_item_datax.choice_id_answer=:response_to_item_choice_id AND as_item_datax.session_id=:as_session_id} { + content::item::delete -item_id $item_id + } + foreach response $response_to_item($response_to_item_name) { + as_item_data_new -session_id $as_session_id -as_item_id $response_to_item_id -choice_id_answer $response_to_item_choice_id -text_answer $response + } + } else { + db_foreach session_responses_to_item {SELECT as_item_datax.item_id FROM as_item_datax WHERE as_item_datax.as_item_id=:response_to_item_id AND as_item_datax.session_id=:as_session_id} { + content::item::delete -item_id $item_id + } + foreach response $response_to_item($response_to_item_name) { + as_item_data_new -session_id $as_session_id -as_item_id $response_to_item_id -choice_id_answer $response + } + } } ad_return_template