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 ""