Index: openacs-4/packages/assessment/www/asm-admin/results-users.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/asm-admin/results-users.tcl,v
diff -u -r1.10 -r1.11
--- openacs-4/packages/assessment/www/asm-admin/results-users.tcl 15 May 2007 20:14:18 -0000 1.10
+++ openacs-4/packages/assessment/www/asm-admin/results-users.tcl 7 Oct 2007 22:36:54 -0000 1.11
@@ -8,6 +8,7 @@
assessment_id
{start_time:optional ""}
{end_time:optional ""}
+ status:optional,notnull
} -properties {
context:onevalue
page_title:onevalue
@@ -21,13 +22,15 @@
# Get the assessment data
as::assessment::data -assessment_id $assessment_id
+set package_id [ad_conn package_id]
+set folder_id [as::assessment::folder_id -package_id $package_id]
if {![info exists assessment_data(assessment_id)]} {
ad_return_complaint 1 "[_ assessment.Requested_assess_does]"
ad_script_abort
}
set user_id [ad_conn user_id]
-set assessment_rev_id $assessment_data(assessment_rev_id)
+
set page_title "[_ assessment.Results_by_user]"
set context [list [list index [_ assessment.admin]] [list [export_vars -base one-a {assessment_id}] $assessment_data(title)] $page_title]
set format "[lc_get formbuilder_date_format], [lc_get formbuilder_time_format]"
@@ -53,19 +56,31 @@
regsub -all -- {to_date} $end_time {to_timestamp} end_time
}
+
if {![empty_string_p $start_time]} {
set start_date_sql [db_map restrict_start_date]
}
if {![empty_string_p $end_time]} {
set end_date_sql [db_map restrict_end_date]
}
- #ad_returnredirect [export_vars -base results-users {assessment_id start_time end_time}]
}
+if { [exists_and_not_null status] } {
+ if { $status == "complete" } {
+ set whereclause "cs.completed_datetime is not null"
+ } elseif { $status == "incomplete" } {
+ set whereclause "cs.completed_datetime is null and ns.session_id is not null"
+ } else {
+ set whereclause "cs.completed_datetime is null and ns.session_id is null"
+ }
+} else {
+ set whereclause "cs.completed_datetime is null and ns.session_id is null"
+}
+
template::list::create \
-name results \
-multirow results \
- -key sessions_id \
+ -key session_id \
-elements {
session_id {
label {[_ assessment.View_Results]}
@@ -75,7 +90,7 @@
label {[_ assessment.Name]}
}
status {
- label {#assessment.Status#}
+ label {\#assessment.Status\#}
}
completed_datetime {
label {[_ assessment.Finish_Time]}
@@ -86,19 +101,30 @@
html {align right nowrap}
display_template {@results.percent_score@}
}
- delete {
- label {}
- display_template {[_ assessment.Delete_Attempts]}
- }
- } -main_class {
- narrow
- }
+ } -filters {
+ assessment_id {
+ where_clause {
+ a.item_id = :assessment_id
+ }
+ }
+ subject_id {
+ where_clause {
+ cs.subject_id = :subject_id
+ }
+ }
+ status {
+ values {{"[_ assessment.Complete]" complete} {"[_ assessment.Incomplete]" incomplete} {"[_ assessment.Not_Taken]" nottaken}}
+ where_clause {
+ $whereclause
+ }
+ }
+ } -bulk_actions {"#assessment.Send_Email#" send-mail "#assessment.Send_an_email_to_the_selected users#"} \
+ -bulk_action_export_vars {assessment_id}
template::multirow create subjects subject_id subject_url subject_name
-db_multirow -extend { result_url subject_url status delete_url } results assessment_results {
-} {
+db_multirow -extend { result_url subject_url status delete_url } results assessment_results {} {
# to display list of users who answered the assessment if anonymous
template::multirow append subjects $subject_id [acs_community_member_url -user_id $subject_id] $subject_name
@@ -133,15 +159,13 @@
}
}
-# FIXME
-set dotlrn_installed_p [apm_package_installed_p dotlrn]
-if {$dotlrn_installed_p} {
- set count_all_users [llength [dotlrn_community::list_users [dotlrn_community::get_community_id]]]
-} else {
- # TODO get count from subsite
- set count_all_users 0
-}
-
+set count_all_users [db_string q "select count(*) from users u
+ where u.user_id <> 0
+ and exists (select 1
+ from acs_object_party_privilege_map
+ where party_id = u.user_id
+ and object_id = :assessment_id
+ and privilege = 'read')" -default 0]
set count_complete [template::multirow size subjects]
set count_incomplete [expr {$count_all_users - $count_complete}]
ad_return_template