Index: openacs-4/packages/xowf/lib/inclass-exam.wf
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowf/lib/Attic/inclass-exam.wf,v
diff -u -r1.1.2.66 -r1.1.2.67
--- openacs-4/packages/xowf/lib/inclass-exam.wf 24 Apr 2021 19:31:34 -0000 1.1.2.66
+++ openacs-4/packages/xowf/lib/inclass-exam.wf 2 May 2021 11:06:57 -0000 1.1.2.67
@@ -497,6 +497,7 @@
set filter_id [:query_parameter id:integer ""]
set creation_user [:query_parameter creation_user:integer ""]
set revision_id [:query_parameter rid:integer ""]
+ set form_objs [:query_parameter fos:integer ""]
set export [:query_parameter export:boolean 0]
set grading [:query_parameter grading:alnum ""]
@@ -505,6 +506,10 @@
set totalPoints [::xowf::test_item::question_manager total_points \
-max_items [:property max_items ""] \
$combined_form_info]
+ if {$form_objs ne "" && $form_objs ni [dict get $combined_form_info question_objs]} {
+ ns_log warning "inclass-exam: ignore invalid form_obj '$form_objs';" \
+ "valid [dict get $combined_form_info question_objs]"
+ }
#
# The management of the grading scheme has to be extended. For the
# time being, we have a single grading scheme with the option to
@@ -571,7 +576,9 @@
::xo::cc set_parameter MenuBar 0
template::head::add_link -rel stylesheet -href /resources/xowf/test-item.css
- if {$as_student} {
+ if {[llength $form_objs] > 0} {
+ append HTML "
#xowf.question#: [ns_quotehtml [[lindex $form_objs 0] title]]
\n"
+ } elseif {$as_student} {
set userName [acs_user::get_element -user_id [ad_conn user_id] -element username]
set fullName [::xo::get_user_name [ad_conn user_id]]
set heading "$userName - $fullName"
@@ -622,10 +629,9 @@
foreach i [$items children] {
set userName [$i set online-exam-userName]
set fullName [$i set online-exam-fullName]
- set state [$i state]
- #if {$state ne "done"} {
- # ns_log notice "online-exam: submission of $userName is not finished (state $state)"
+ #if {[$i state] ne "done"} {
+ # ns_log notice "online-exam: submission of $userName is not finished (state [$i state])"
# #continue
#}
@@ -654,6 +660,7 @@
set achieved_points {}
xo::cc eval_as_user -user_id [$i creation_user] {
$i set __feedback_mode 2
+ $i set __form_objs $form_objs
set question_form [$i render_content]
if {$export} {
@@ -756,23 +763,27 @@
}]
}
- set view [expr {$as_student
- ? "student"
- : $filter_id ne ""
- ? "revision_overview"
- : "default"}]
- set gradingInfo [$grading_scheme print -achieved_points $achieved_points]
- set grandingPanel [expr {[dict exists $gradingInfo panel] ? [dict get $gradingInfo panel] : ""}]
- set runtime_panel [xowf::test_item::answer_manager runtime_panel \
- -revision_id $revision_id \
- -view $view \
- -grading_info $grandingPanel \
- $i]
- if {$autograde} {
- set grade [$grading_scheme grade -achieved_points $achieved_points]
- ns_log notice "CSV $userName\t[dict get $gradingInfo csv]"
- dict incr grade_dict $grade
- append grade_csv $userName\t[dict get $gradingInfo csv]\n
+ if {[llength $form_objs] == 0} {
+ set view [expr {$as_student
+ ? "student"
+ : $filter_id ne ""
+ ? "revision_overview"
+ : "default"}]
+ set gradingInfo [$grading_scheme print -achieved_points $achieved_points]
+ set grandingPanel [expr {[dict exists $gradingInfo panel] ? [dict get $gradingInfo panel] : ""}]
+ set runtime_panel [xowf::test_item::answer_manager runtime_panel \
+ -revision_id $revision_id \
+ -view $view \
+ -grading_info $grandingPanel \
+ $i]
+ if {$autograde} {
+ set grade [$grading_scheme grade -achieved_points $achieved_points]
+ ns_log notice "CSV $userName\t[dict get $gradingInfo csv]"
+ dict incr grade_dict $grade
+ append grade_csv $userName\t[dict get $gradingInfo csv]\n
+ }
+ } else {
+ set runtime_panel ""
}
set heading "$userName · $fullName · $pretty_date"
@@ -989,6 +1000,7 @@
ns_return 200 text/plain ok
ad_script_abort
}
+
}
#