Index: openacs-4/packages/assessment/lib/session-items.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/lib/session-items.tcl,v diff -u -N -r1.7.2.3 -r1.7.2.4 --- openacs-4/packages/assessment/lib/session-items.tcl 21 Feb 2006 18:09:33 -0000 1.7.2.3 +++ openacs-4/packages/assessment/lib/session-items.tcl 20 May 2006 16:53:14 -0000 1.7.2.4 @@ -37,18 +37,65 @@ if {![empty_string_p $default_value]} { array set values $default_value set result_points $values(points) + set item_data_id $values(item_data_id) array unset values set answered_p t - if {$result_points < $points} { - if {$show_feedback != "correct"} { - set feedback "$feedback_wrong" - } + if { $points != 0 } { + if {$result_points < $points} { + if {$show_feedback != "correct"} { + set feedback "$feedback_wrong" + } + } else { + if {$show_feedback != "incorrect"} { + set feedback "$feedback_right" + } + } } else { - if {$show_feedback != "incorrect"} { - set feedback "$feedback_right" + if {$presentation_type == "rb" || $presentation_type == "cb"} { + set user_answers [db_list get_user_choice_answers {}] + + set correct_answers [db_list get_correct_choice_answers {}] + + if { $presentation_type == "rb" } { + set user_answers [lindex $user_answers 0] + + if { [lsearch $correct_answers $user_answers] == -1 } { + if {$show_feedback != "correct"} { + set feedback "$feedback_wrong" + } + } else { + if {$show_feedback != "incorrect"} { + set feedback "$feedback_right" + } + } + } else { + # Checkbox, all answers must be correct if no + # points are set + if { [llength $user_answers] != [llength $correct_answers] } { + set correct_p 0 + } else { + set correct_p 1 + foreach one_answer $user_answers { + if { [lsearch $correct_answers $one_answer] == -1 } { + set correct_p 0 + break + } + } + } + + if { !$correct_p } { + if {$show_feedback != "correct"} { + set feedback "$feedback_wrong" + } + } else { + if {$show_feedback != "incorrect"} { + set feedback "$feedback_right" + } + } + } } - } + } } else { set result_points "" set feedback ""