Index: openacs-4/packages/assessment/tcl/as-item-type-oq-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/tcl/as-item-type-oq-procs.tcl,v diff -u -r1.13 -r1.14 --- openacs-4/packages/assessment/tcl/as-item-type-oq-procs.tcl 26 Jan 2005 11:06:45 -0000 1.13 +++ openacs-4/packages/assessment/tcl/as-item-type-oq-procs.tcl 21 Feb 2005 14:32:56 -0000 1.14 @@ -9,7 +9,9 @@ ad_proc -public as::item_type_oq::new { {-title ""} {-default_value ""} - {-feedback_text ""} + {-feedback_text ""} + {-reference_answer ""} + {-keywords ""} } { @author Natalia Perez (nperper@it.uc3m.es) @creation-date 2004-09-29 @@ -23,11 +25,13 @@ db_transaction { set item_item_type_oq_id [content::item::new -parent_id $folder_id -content_type {as_item_type_oq} -name [exec uuidgen]] set as_item_type_oq_id [content::revision::new \ - -item_id $item_item_type_oq_id \ - -content_type {as_item_type_oq} \ - -title $title \ - -attributes [list [list default_value $default_value] \ - [list feedback_text $feedback_text] ] ] + -item_id $item_item_type_oq_id \ + -content_type {as_item_type_oq} \ + -title $title \ + -attributes [list [list default_value $default_value] \ + [list feedback_text $feedback_text] \ + [list reference_answer $reference_answer] \ + [list keywords $keywords] ] ] } return $as_item_type_oq_id @@ -38,6 +42,8 @@ {-title ""} {-default_value ""} {-feedback_text ""} + {-reference_answer ""} + {-keywords ""} } { @author Timo Hentschel (timo@timohentschel.de) @creation-date 2004-12-07 @@ -52,7 +58,9 @@ -content_type {as_item_type_oq} \ -title $title \ -attributes [list [list default_value $default_value] \ - [list feedback_text $feedback_text] ] ] + [list feedback_text $feedback_text] \ + [list reference_answer $reference_answer] \ + [list keywords $keywords] ] ] } return $new_item_type_id @@ -75,7 +83,9 @@ set new_item_type_id [new -title $title \ -default_value $default_value \ - -feedback_text $feedback_text] + -feedback_text $feedback_text \ + -reference_answer $reference_answer \ + -keywords $keywords] } return $new_item_type_id @@ -120,7 +130,22 @@ Process a Response to an Open Question Type } { - as::item_data::new -session_id $session_id -subject_id $subject_id -staff_id $staff_id -as_item_id $as_item_id -section_id $section_id -clob_answer [lindex $response 0] -points "" -allow_overwrite_p $allow_overwrite_p + db_1row item_type_data {} + set response [lindex $response 0] + + if {[llength $keywords] > 0} { + set points 0 + foreach keyword $keywords { + if {[regexp $keyword $response]} { + incr points + } + } + set points [expr round($max_points * $points / [llength $keywords])] + } else { + set points "" + } + + as::item_data::new -session_id $session_id -subject_id $subject_id -staff_id $staff_id -as_item_id $as_item_id -section_id $section_id -clob_answer $response -points $points -allow_overwrite_p $allow_overwrite_p } ad_proc -public as::item_type_oq::results {