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 -r1.10 -r1.11 --- openacs-4/packages/assessment/lib/session-items.tcl 12 Jun 2006 02:49:50 -0000 1.10 +++ openacs-4/packages/assessment/lib/session-items.tcl 12 Jun 2006 03:02:37 -0000 1.11 @@ -2,13 +2,26 @@ set edit_p 0 } +if {![exists_and_not_null feedback_only_p] } { + set feedback_only_p 0 +} + +set items_clause "" +if {[info exists item_id_list]} { + if {[llength $item_id_list]} { + set items_clause "and i.as_item_id in ([join $item_id_list ,])" + } +} + ad_form -name session_results_$section_id -mode display -form { {section_id:text(hidden) {value $section_id}} } # todo: display feedback text -db_multirow -extend { presentation_type html result_points feedback answered_p choice_orientation next_title next_pr_type num } items session_items {} { +set feedback_count 0 +db_multirow -extend { presentation_type html result_points feedback answered_p choice_orientation next_title next_pr_type num content has_feedback_p } items session_items {} { set default_value [as::item_data::get -subject_id $subject_id -as_item_id $as_item_id -session_id $session_id] + array set item [as::item::item_data -as_item_id $as_item_id] set presentation_type [as::item_form::add_item_to_form -name session_results_$section_id -section_id $section_id -item_id $as_item_id -session_id $session_id -default_value $default_value -show_feedback $show_feedback] @@ -21,10 +34,8 @@ } if {$presentation_type == "rb" || $presentation_type == "cb"} { - array set item [as::item::item_data -as_item_id $as_item_id] array set type [as::item_display_$presentation_type\::data -type_id $item(display_type_id)] set choice_orientation $type(choice_orientation) - array unset item array unset type } else { set choice_orientation "" @@ -44,11 +55,21 @@ if { $points != 0 } { if {$result_points < $points} { if {$show_feedback != "correct"} { - set feedback "$feedback_wrong" + if { $feedback_wrong ne "" } { + set feedback "$feedback_wrong" + set has_feedback_p 1 + } else { + set feedback "" + } } } else { if {$show_feedback != "incorrect"} { - set feedback "$feedback_right" + if { $feedback_right ne "" } { + set feedback "$feedback_right" + set has_feedback_p 1 + } else { + set feedback "" + } } } } else { @@ -62,11 +83,21 @@ if { [lsearch $correct_answers $user_answers] == -1 } { if {$show_feedback != "correct"} { - set feedback "$feedback_wrong" + if { $feedback_wrong ne "" } { + set feedback "$feedback_wrong" + set has_feedback_p 1 + } else { + set feedback "" + } } } else { if {$show_feedback != "incorrect"} { - set feedback "$feedback_right" + if { $feedback_right ne "" } { + set feedback "$feedback_right" + set has_feedback_p 1 + } else { + set feedback "" + } } } } else { @@ -86,11 +117,21 @@ if { !$correct_p } { if {$show_feedback != "correct"} { - set feedback "$feedback_wrong" + if { $feedback_wrong ne "" } { + set feedback "$feedback_wrong" + set has_feedback_p 1 + } else { + set feedback "" + } } } else { if {$show_feedback != "incorrect"} { - set feedback "$feedback_right" + if { $feedback_right ne "" } { + set feedback "$feedback_right" + set has_feedback_p 1 + } else { + set feedback "" + } } } } @@ -100,9 +141,21 @@ set result_points "" set feedback "" set answered_p f - } + } + + set content [as::assessment::display_content -content_id $item(content_rev_id) -filename $item(content_filename) -content_type $item(content_type)] + + if { $has_feedback_p == 1 } { + incr feedback_count + } } +if { $feedback_only_p && $feedback_count == 0 && [exists_and_not_null next_url] } { + ns_log notice "feedback going to $next_url" + ad_returnredirect $next_url + ad_script_abort +} + set counter 1 for {set i 1; set j 2} {$i <= ${items:rowcount}} {incr i; incr j} { upvar 0 items:$i this