Index: openacs-4/packages/xowf/tcl/test-item-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowf/tcl/test-item-procs.tcl,v
diff -u -r1.7.2.45 -r1.7.2.46
--- openacs-4/packages/xowf/tcl/test-item-procs.tcl 10 Apr 2020 12:09:23 -0000 1.7.2.45
+++ openacs-4/packages/xowf/tcl/test-item-procs.tcl 17 Apr 2020 21:33:04 -0000 1.7.2.46
@@ -1247,18 +1247,27 @@
:public method get_wf_instances {
{-initialize false}
{-orderby ""}
+ -creation_user:integer
+ -item_id:integer
wf:object
} {
# get_wf_instances: return the workflow instances
:assert_assessment_container $wf
+ set extra_where_clause ""
+ foreach var {creation_user item_id} {
+ if {[info exists $var]} {
+ append extra_where_clause "AND $var = [set var] "
+ }
+ }
return [::xowiki::FormPage get_form_entries \
-base_item_ids [$wf item_id] \
-form_fields "" \
-always_queried_attributes "*" \
-initialize $initialize \
-orderby $orderby \
+ -extra_where_clause $extra_where_clause \
-publish_status all \
-package_id [$wf package_id]]
}
@@ -1347,16 +1356,43 @@
return $result
}
+ ########################################################################
+ :public method achieved_points {-answer_object:object -answer_attributes:required } {
+ #
+ # This method has to be called after the instance was rendered,
+ # since it uses the produced form_fields.
+ #
+ set all_form_fields [::xowiki::formfield::FormField info instances -closure]
+ set totalPoints 0
+ set totalPossiblePoints 0
+ foreach a [dict keys $answer_attributes] {
+ set f [$answer_object lookup_form_field -name $a $all_form_fields]
+ if {[$f exists correction_data]} {
+ set cd [$f set correction_data]
+ #ns_log notice "FOO: $a <$f> $cd"
+ if {[dict exists $cd points]} {
+ set totalPoints [expr {$totalPoints + [dict get $cd points]}]
+ set totalPossiblePoints [expr {$totalPossiblePoints + [$f set test_item_minutes]}]
+ } else {
+ ns_log notice "$a: no points in correction_data, ignoring in points calculation"
+ }
+ }
+ }
+ return [list achievedPoints $totalPoints possiblePoints $totalPossiblePoints]
+ }
+
+ ########################################################################
:public method runtime_panel {
{-revision_id ""}
- {-filter_id ""}
+ {-view default}
+ {-achieved_points ""}
answerObj:object
} {
#
# Return statistics for the provided object:
- # - minimal statistics: when 'filter_id' is empty
- # - statistics with clickable revisions: when 'filter_id' is non empty
- # - per-revision statistics: when revision_id is provided
+ # - minimal statistics: when view default
+ # - statistics with clickable revisions: when view = revision_overview
+ # - per-revision statistics: when view = revision_overview and revision_id is provided
#
set revision_sets [$answerObj get_revision_sets]
set item_id [$answerObj item_id]
@@ -1366,7 +1402,12 @@
set current_question [expr {[dict get [$answerObj instance_attributes] position] + 1}]
set page_info "#xowf.question#: $current_question"
- if {$filter_id ne ""} {
+ if {$view eq "default"} {
+ set url [ad_return_url]&id=$item_id
+ set revisionDetails "#xowf.nr_changes#: [llength $revision_sets]
"
+ } elseif {$view eq "student"} {
+ set revisionDetails ""
+ } elseif {$view eq "revision_overview"} {
set displayed_revision_info ""
set live_revision_info ""
set make_live_info ""
@@ -1412,38 +1453,55 @@