Index: openacs-4/packages/assessment/tcl/assessment-qti-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/tcl/Attic/assessment-qti-procs.tcl,v diff -u -r1.22 -r1.23 --- openacs-4/packages/assessment/tcl/assessment-qti-procs.tcl 1 Oct 2004 14:39:13 -0000 1.22 +++ openacs-4/packages/assessment/tcl/assessment-qti-procs.tcl 7 Oct 2004 10:58:07 -0000 1.23 @@ -176,12 +176,15 @@ set as_item_choices__ident [$node getAttribute {ident}] # get the correct response set as_item_choices__choice_text_nodes [$node selectNodes "//conditionvar/or/varequal\[@respident='$as_item_choices__ident'\]/text()"] - set as_item_choices__choice_text [string trim [[lindex $as_item_choices__choice_text_nodes 0] nodeValue]] + set as_item_choices__choice_text {} + foreach respident $as_item_choices__choice_text_nodes { + lappend as_item_choices__choice_text [string trim [$respident nodeValue]] + } # Insert as_item_choice in the CR (and as_item_choices table) getting the revision_id (choice_id) set as_item_choice_id [as_item_choice_new -mc_id $as_item_type_id -name $as_item_choices__ident -title $as_item_choices__choice_text -sort_order $sort_order] # order of the item_choices incr sort_order - append as_items__title "" + append as_items__title " " } } # Insert as_item in the CR (and as_items table) getting the revision_id (as_item_id) Index: openacs-4/packages/assessment/tcl/item-form-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/tcl/Attic/item-form-procs.tcl,v diff -u -r1.6 -r1.7 --- openacs-4/packages/assessment/tcl/item-form-procs.tcl 1 Oct 2004 12:55:21 -0000 1.6 +++ openacs-4/packages/assessment/tcl/item-form-procs.tcl 7 Oct 2004 10:58:07 -0000 1.7 @@ -12,8 +12,10 @@ set item_item_id [db_string cr_item_from_revision "select item_id from cr_revisions where revision_id=: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"} #Add the items depending on the type (as_item_display_types) switch -- $presentation_type { Index: openacs-4/packages/assessment/www/assessment.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/assessment.adp,v diff -u -r1.6 -r1.7 --- openacs-4/packages/assessment/www/assessment.adp 28 Sep 2004 14:39:48 -0000 1.6 +++ openacs-4/packages/assessment/www/assessment.adp 7 Oct 2004 10:58:07 -0000 1.7 @@ -17,7 +17,7 @@ #assessment.Items#

- #assessment.Question# @items.rownum@:@items.title@ + #assessment.Question# @items.rownum@:@items.title@
@@ -27,6 +27,9 @@
+ + @items.html;noquote@ + Index: openacs-4/packages/assessment/www/assessment.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/assessment.tcl,v diff -u -r1.6 -r1.7 --- openacs-4/packages/assessment/www/assessment.tcl 6 Oct 2004 12:55:26 -0000 1.6 +++ openacs-4/packages/assessment/www/assessment.tcl 7 Oct 2004 10:58:07 -0000 1.7 @@ -18,8 +18,11 @@ { as_session_id:text {value $as_session_id} } } -db_multirow -extend {presentation_type} items query_all_items {} { +db_multirow -extend {presentation_type html} items query_all_items {} { set presentation_type [add_item_to_form show_item_form $as_item_id] + if {$presentation_type == {fitb}} { + regsub -all -line -nocase -- { #assessment.Question# @items.rownum@  (@items.maxscore@ #assessment.points#) - @items.title@ + @items.title@ @items.choice_html;noquote@ Index: openacs-4/packages/assessment/www/session.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/session.tcl,v diff -u -r1.9 -r1.10 --- openacs-4/packages/assessment/www/session.tcl 6 Oct 2004 12:55:26 -0000 1.9 +++ openacs-4/packages/assessment/www/session.tcl 7 Oct 2004 10:58:07 -0000 1.10 @@ -21,16 +21,18 @@ set itemmaxscore [expr $assessment_score/$assessment_items] ;# FIXME total_points/items_number set session_score 0 -db_multirow -extend [list choice_html score maxscore notanswered item_correct] items query_all_items {} { +db_multirow -extend [list choice_html score maxscore notanswered item_correct presentation_type] items query_all_items {} { set as_item_display_rbx__item_id {} unset as_item_display_rbx__item_id set item_item_id [db_string cr_item_from_revision "select item_id from cr_revisions where revision_id=:as_item_id"] set item_mc_id [db_string item_item_type "SELECT related_object_id FROM cr_item_rels WHERE relation_tag = 'as_item_type_rel' AND item_id=:item_item_id"] set mc_id [db_string item_to_rev "SELECT revision_id FROM cr_revisions WHERE item_id=:item_mc_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"} set notanswered 1 set maxscore $itemmaxscore @@ -39,23 +41,41 @@ set choice_html "" db_foreach choices {} { if {[string length "$choice_id_answer"]} {set notanswered 0} - if {$correct_answer_p == {t}} { set correct_answer_bool 1 } else { set correct_answer_bool 0 } - set choice_correct [expr $correct_answer_bool == ("$choice_id_answer" == $choice_id)] + set choice_correct 0 + if {[info exists as_item_display_tbx__item_id]} { + foreach text_value $choice_title { + if {[empty_string_p $text_answer]} { } else { + if {$text_answer == $text_value} { set choice_correct 1 } + } + } + } else { + if {$correct_answer_p == {t}} { set correct_answer_bool 1 } else { set correct_answer_bool 0 } + set choice_correct [expr $correct_answer_bool == ("$choice_id_answer" == $choice_id)] + } set item_correct [expr $item_correct && $choice_correct] if {$choice_correct} { - set correct_answer {} + set correct_answer {} } else { - set correct_answer {Error} + set correct_answer {Error} } + if {[info exists as_item_display_tbx__item_id]} { + if {$choice_correct} { + regsub -all -line -nocase -- "" } else { set choice_answer "" } append choice_html "" + } } if {$item_correct} { set score $itemmaxscore } set session_score [expr $session_score+$score] + if {[info exists as_item_display_tbx__item_id]} { append choice_html $title } append choice_html {
$correct_answer$choice_answer [ad_quotehtml $choice_title]
} } Index: openacs-4/packages/assessment/www/session.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/session.xql,v diff -u -r1.6 -r1.7 --- openacs-4/packages/assessment/www/session.xql 28 Sep 2004 14:42:43 -0000 1.6 +++ openacs-4/packages/assessment/www/session.xql 7 Oct 2004 10:58:07 -0000 1.7 @@ -15,7 +15,7 @@ SELECT - as_item_choicesx.choice_id, as_item_choicesx.title AS choice_title, as_item_choicesx.correct_answer_p, as_item_choicesx.percent_score, as_item_datax.choice_id_answer + as_item_choicesx.choice_id, as_item_choicesx.title AS choice_title, as_item_choicesx.correct_answer_p, as_item_choicesx.percent_score, as_item_choicesx.text_value, as_item_datax.text_answer, as_item_datax.choice_id_answer FROM as_item_choicesx LEFT JOIN (as_item_datax INNER JOIN as_sessionsx ON as_sessionsx.session_id = as_item_datax.session_id) ON as_item_datax.choice_id_answer=as_item_choicesx.choice_id WHERE as_item_choicesx.mc_id=:mc_id AND (as_sessionsx.session_id = :session_id OR as_sessionsx.session_id IS NULL)