Index: openacs-4/packages/assessment/catalog/assessment.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/catalog/assessment.en_US.ISO-8859-1.xml,v diff -u -r1.23 -r1.24 --- openacs-4/packages/assessment/catalog/assessment.en_US.ISO-8859-1.xml 14 Jan 2005 13:13:37 -0000 1.23 +++ openacs-4/packages/assessment/catalog/assessment.en_US.ISO-8859-1.xml 20 Jan 2005 18:47:23 -0000 1.24 @@ -163,6 +163,7 @@ Finish Time Finished Fixed Order Position + This is required From: Question name hidden Horizontal Index: openacs-4/packages/assessment/www/assessment-section-submit.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/assessment-section-submit.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/assessment/www/assessment-section-submit.adp 20 Jan 2005 18:47:23 -0000 1.1 @@ -0,0 +1,66 @@ + +Assessment +@context;noquote@ + + + + + + + + +
@assessment_data.title@
@assessment_data.instructions@

+ + + + + +
#assessment.section#: @section.title@
@section.description@
@section.instructions@
+ +
   +#assessment.Items#

+ + + + + + + + + + + + + + +
@items.name@:#assessment.Question# @items.rownum@: *@items.title;noquote@
@items.content;noquote@
+
+ + + @formgroup.widget;noquote@ + @formgroup.label;noquote@ +
+
+
+ + @items.html;noquote@ + + + + + + +
+ [i] + @items.subtext@ +
+
+ +
+ +
+
+
+
+ + Index: openacs-4/packages/assessment/www/assessment-single-submit.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/assessment-single-submit.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/assessment/www/assessment-single-submit.adp 20 Jan 2005 18:47:23 -0000 1.1 @@ -0,0 +1,67 @@ + +Assessment +@context;noquote@ + + + + + + + + +
@assessment_data.title@
@assessment_data.instructions@

+ + + + + +
#assessment.section#: @section.title@
@section.description@
@section.instructions@
+ +
   +#assessment.Items#

+ + + + + + + + + + + + + + + + + + + +
@items.name@:#assessment.Question# @items.rownum@: *@items.title;noquote@
@items.content;noquote@
+
+ + + @formgroup.widget;noquote@ + @formgroup.label;noquote@ +
+
+
+ + @items.html;noquote@ + + + + + + +
+ [i] + @items.subtext@ +
+
+
+
+
+
+
Fisheye: Tag 1.18 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/assessment.adp'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/assessment/www/assessment.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/Attic/assessment.tcl,v diff -u -r1.22 -r1.23 --- openacs-4/packages/assessment/www/assessment.tcl 19 Jan 2005 16:49:14 -0000 1.22 +++ openacs-4/packages/assessment/www/assessment.tcl 20 Jan 2005 18:47:23 -0000 1.23 @@ -9,7 +9,7 @@ {session_id:integer,optional ""} {section_order:integer,optional ""} {item_order:integer,optional ""} - {as_item_id ""} + {item_id ""} response_to_item:array,optional,multiple,html } -properties { session_id @@ -102,33 +102,23 @@ # form for display an assessment with sections and items -if {$display(submit_answer_p) != "t"} { - ad_form -name show_item_form -action assessment -html {enctype multipart/form-data} -export {assessment_id section_id section_order item_order} -form { - {session_id:text(hidden) {value $session_id}} - } -} else { - ad_form -name show_item_form -action assessment -html {enctype multipart/form-data} -export {assessment_id section_id section_order item_order} -form { - {session_id:text(hidden) {value $session_id}} - } -after_submit { - if {![empty_string_p $new_section_order]} { - set section_order $new_section_order - set item_order $new_item_order - ad_returnredirect [export_vars -base assessment {assessment_id session_id section_order item_order}] - ad_script_abort - } else { - as::assessment::calculate -session_id $session_id -assessment_id $assessment_rev_id - db_dml session_finished {} - ad_returnredirect [export_vars -base finish {session_id assessment_id}] - ad_script_abort - } - } +ad_form -name show_item_form -action assessment -html {enctype multipart/form-data} -export {assessment_id section_id section_order item_order} -form { + {session_id:text(hidden) {value $session_id}} } multirow create items as_item_id name title description subtext required_p max_time_to_complete presentation_type html submitted_p content +set unsubmitted_list [list] +set validate_list [list] +set required_count 0 + foreach one_item $item_list { util_unlist $one_item as_item_id name title description subtext required_p max_time_to_complete content_rev_id content_filename content_type + if {$required_p == "t"} { + lappend validate_list "response_to_item.$as_item_id {\[exists_and_not_null response_to_item($as_item_id)\]} \"\[_ assessment.form_element_required\]\"" + incr required_count + } set default_value "" set submitted_p f if {$display(submit_answer_p) != "t"} { @@ -144,48 +134,53 @@ # value already submitted set submitted_p t set mode display + if {$required_p == "t"} { + incr required_count -1 + } } else { # value not submitted yet. get older submitted value if necessary set mode edit if {$assessment_data(reuse_responses_p) == "t"} { set default_value [as::item_data::get -subject_id $user_id -as_item_id $as_item_id] } + lappend unsubmitted_list $as_item_id } ad_form -name show_item_form_$as_item_id -mode $mode -action assessment -html {enctype multipart/form-data} -export {assessment_id section_id section_order item_order} -form { {session_id:text(hidden) {value $session_id}} + {item_id:text(hidden) {value $as_item_id}} } set presentation_type [as::item_form::add_item_to_form -name show_item_form_$as_item_id -session_id $session_id -section_id $section_id -item_id $as_item_id -default_value $default_value -required_p $required_p] # process single submit - ad_form -extend -name show_item_form_$as_item_id -on_submit { + set on_submit "{ db_transaction { db_dml session_updated {} - set response_item_id $as_item_id + set response_item_id \$item_id db_1row process_item_type {} - set item_type [string range $item_type end-1 end] - if {![info exists response_to_item($as_item_id)]} { - set response_to_item($as_item_id) "" + set item_type \[string range \$item_type end-1 end\] + if {!\[info exists response_to_item(\$response_item_id)\]} { + set response_to_item(\$response_item_id) \"\" } - set points [ad_decode $points "" 0 $points] - as::item_type_$item_type\::process -type_id $item_type_id -session_id $session_id -as_item_id $response_item_id -section_id $section_id -subject_id $user_id -response $response_to_item($as_item_id) -max_points $points -allow_overwrite_p $display(back_button_p) - - if {$section_order != $new_section_order} { - as::section::calculate -section_id $section_id -assessment_id $assessment_rev_id -session_id $session_id - } + set points \[ad_decode \$points \"\" 0 \$points\] + as::item_type_\$item_type\\::process -type_id \$item_type_id -session_id \$session_id -as_item_id \$response_item_id -section_id \$section_id -subject_id \$user_id -response \$response_to_item(\$response_item_id) -max_points \$points -allow_overwrite_p \$display(back_button_p) } - } -after_submit { - if {![empty_string_p $section_order]} { - ad_returnredirect [export_vars -base assessment {assessment_id session_id section_order item_order}] + }" + set after_submit "{ + if {!\[empty_string_p \$section_order\]} { + ad_returnredirect \[export_vars -base assessment {assessment_id session_id section_order item_order}\] ad_script_abort } else { - as::assessment::calculate -session_id $session_id -assessment_id $assessment_rev_id + as::assessment::calculate -session_id \$session_id -assessment_id \$assessment_rev_id db_dml session_finished {} - ad_returnredirect [export_vars -base finish {session_id assessment_id}] + ad_returnredirect \[export_vars -base finish {session_id assessment_id}\] ad_script_abort } - } + }" + + eval ad_form -extend -name show_item_form_$as_item_id -validate "{$validate_list}" -on_submit $on_submit -after_submit $after_submit + set validate_list [list] } # Fill in the blank item. Replace all that appear in the title by an of type="text" @@ -198,22 +193,55 @@ } if {$display(submit_answer_p) != "t"} { - foreach one_item $item_list { - util_unlist $one_item as_item_id - append validate_list "\{response_to_item.$as_item_id \{\[exist_and_not_null \$response_to_item.$as_item_id\]\} \"Answer missing\"\}\n" - } # process multiple submit -# eval ad_form -extend -name show_item_form -validate "{$validate_list}" - ad_form -extend -name show_item_form -on_submit { + set template "assessment-section-submit" + + set on_submit "{ db_transaction { db_dml session_updated {} - foreach response_item_id [array names response_to_item] { + foreach one_response \$item_list { + util_unlist \$one_response response_item_id db_1row process_item_type {} + set item_type \[string range \$item_type end-1 end\] + if {!\[info exists response_to_item(\$response_item_id)\]} { + set response_to_item(\$response_item_id) \"\" + } + + set points \[ad_decode \$points \"\" 0 \$points\] + as::item_type_\$item_type\\::process -type_id \$item_type_id -session_id \$session_id -as_item_id \$response_item_id -section_id \$section_id -subject_id \$user_id -response \$response_to_item(\$response_item_id) -max_points \$points -allow_overwrite_p \$display(back_button_p) + } + + if {\$section_order != \$new_section_order} { + as::section::calculate -section_id \$section_id -assessment_id \$assessment_rev_id -session_id \$session_id + } + } + }" + set after_submit "{ + if {!\[empty_string_p \$new_section_order\]} { + set section_order \$new_section_order + set item_order \$new_item_order + ad_returnredirect \[export_vars -base assessment {assessment_id session_id section_order item_order}\] + ad_script_abort + } else { + as::assessment::calculate -session_id \$session_id -assessment_id \$assessment_rev_id + db_dml session_finished {} + ad_returnredirect \[export_vars -base finish {session_id assessment_id}\] + ad_script_abort + } + }" + + eval ad_form -extend -name show_item_form -validate "{$validate_list}" -on_submit $on_submit -after_submit $after_submit +} else { + set template "assessment-single-submit" + ad_form -extend -name show_item_form -on_submit { + db_transaction { + foreach response_item_id $unsubmitted_list { + db_1row process_item_type {} set item_type [string range $item_type end-1 end] set points [ad_decode $points "" 0 $points] - as::item_type_$item_type\::process -type_id $item_type_id -session_id $session_id -as_item_id $response_item_id -section_id $section_id -subject_id $user_id -response $response_to_item($response_item_id) -max_points $points -allow_overwrite_p $display(back_button_p) + as::item_type_$item_type\::process -type_id $item_type_id -session_id $session_id -as_item_id $response_item_id -section_id $section_id -subject_id $user_id -response "" -max_points $points -allow_overwrite_p $display(back_button_p) } if {$section_order != $new_section_order} { @@ -235,4 +263,4 @@ } } -ad_return_template +ad_return_template $template Fisheye: Tag 1.3 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/process-response-oracle.xql'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.3 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/process-response-postgresql.xql'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.6 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/process-response.adp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.16 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/process-response.tcl'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.3 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/process-response.xql'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/assessment/www/session.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/session.xql,v diff -u -r1.17 -r1.18 --- openacs-4/packages/assessment/www/session.xql 18 Jan 2005 12:42:37 -0000 1.17 +++ openacs-4/packages/assessment/www/session.xql 20 Jan 2005 18:47:23 -0000 1.18 @@ -24,10 +24,11 @@ - SELECT COUNT(*) - FROM as_sessions s - WHERE s.subject_id = :subject_id - AND s.assessment_id = :assessment_rev_id + select count(*) + from as_sessions s, cr_revisions r + where s.subject_id = :subject_id + and s.assessment_id = r.revision_id + and r.item_id = :assessment_id Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/choice-add.adp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.4 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/choice-add.tcl'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/display-create-type.adp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.4 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/display-create-type.tcl'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/one-postgresql.xql'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/one.adp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.3 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/one.tcl'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.4 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/show-items.adp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.4 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/show-items.tcl'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.3 refers to a dead (removed) revision in file `openacs-4/packages/assessment/www/admin/show-items.xql'. Fisheye: No comparison available. Pass `N' to diff?