Index: openacs-4/packages/lorsm/lib/user-lorsm.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/lib/user-lorsm.tcl,v diff -u -r1.24 -r1.25 --- openacs-4/packages/lorsm/lib/user-lorsm.tcl 17 Oct 2008 10:46:09 -0000 1.24 +++ openacs-4/packages/lorsm/lib/user-lorsm.tcl 17 Nov 2008 13:36:43 -0000 1.25 @@ -1,15 +1,14 @@ # packages/lorsm/www/test.tcl ad_page_contract { - + testing background - + @author Ernie Ghiglione (ErnieG@mm.st) @creation-date 2004-06-15 @arch-tag: 9d893919-9a02-45cd-b6ad-19e3a34ba747 @cvs-id $Id$ } { - } -properties { } -validate { } -errors { @@ -23,79 +22,79 @@ set elements_list { course_name { - label "[_ lorsm.Course_Name_1]" - display_template { - @d_courses.course_url;noquote@ - - - -          - #lors-central.add_mat# - - + label "[_ lorsm.Course_Name_1]" + display_template { + @d_courses.course_url;noquote@ + + + +          + #lors-central.add_mat# + + - } - html { style "width:70%" } + } + html { style "width:70%" } } } if { [empty_string_p $community_id] } { - append elements_list { - subject { - label "[_ lorsm.Subject]" - display_eval {[dotlrn_community::get_community_name $community_id]} - html { align center style "width:20%" } - link_url_eval {[dotlrn_community::get_community_url $community_id]} - link_html {title "[_ lorsm.Access_Course]"} + append elements_list { + subject { + label "[_ lorsm.Subject]" + display_eval {[dotlrn_community::get_community_name $community_id]} + html { align center style "width:20%" } + link_url_eval {[dotlrn_community::get_community_url $community_id]} + link_html {title "[_ lorsm.Access_Course]"} + } } - } } append elements_list { last_viewed { - label "[_ lorsm.Last_Viewed_On]" - html { align center style "width:10%" } - display_eval {[lc_time_fmt $last_viewed "%x"]} + label "[_ lorsm.Last_Viewed_On]" + html { align center style "width:10%" } + display_eval {[lc_time_fmt $last_viewed "%x"]} + + } viewed_percent { + label "[_ lorsm._Viewed]" + html { align right } + display_eval {[lc_numeric $viewed_percent "%.2f"]} + } lesson_status { + label "Completed" + html { align center } + display_template { @d_courses.lesson_status;noquote@ } } - - viewed_percent { - label "[_ lorsm._Viewed]" - html { align right } - display_eval {[lc_numeric $viewed_percent "%.2f"]} - } - - lesson_status { - label "Completed" - html { align center } - display_template { - @d_courses.lesson_status;noquote@ - } - } } #label "[_ lorsm._CourseStatus]" if { ![string equal $lors_central_package_id 0] && ![empty_string_p $community_id] } { if { [lors_central::check_inst -user_id $user_id -community_id $community_id] } { - append elements_list " - grant_permissions { - label \"[_ lors-central.grant_permissions]\" - display_template { -
- [_ lors-central.manage] -
- } - }" + append elements_list " + grant_permissions { + label \"[_ lors-central.grant_permissions]\" + display_template { +
+ + [_ lors-central.manage] + +
+ } + }" + } else { - set lors_central_p 0 + set lors_central_p 0 } set lors_central_p 1 } else { - set lors_central_p 0 + set lors_central_p 0 } - template::list::create \ -name d_courses \ -multirow d_courses \ @@ -110,134 +109,161 @@ } foreach package $package_id { - db_multirow -extend { admin_p item_id ims_md_id last_viewed total_item_count viewed_item_count viewed_percent course_url lesson_status } -append d_courses select_d_courses { } { - set ims_md_id $man_id + db_multirow \ + -extend { admin_p item_id ims_md_id last_viewed \ + total_item_count viewed_item_count viewed_percent course_url \ + lesson_status + } -append d_courses select_d_courses { } { + set ims_md_id $man_id - if { [string eq $format_name "default"] } { + if { [string eq $format_name "default"] } { - # micheles - set context [site_node::get_url_from_object_id -object_id $lorsm_instance_id] - if ([db_0or1row query " - select - cp.man_id, - case - when upper(scorm_type) = 'SCO' then 'delivery-scorm' - else 'delivery' - end as needscorte - from - ims_cp_manifests cp left join (select man_id, max(scorm_type) as scorm_type from ims_cp_resources group by man_id ) as cpr using (man_id) - where - cp.man_id = :man_id " - ]) { - ns_log Debug "lorsm - $needscorte" - set delivery_method delivery - set course_url_url [export_vars -base "[lindex $context 0]$delivery_method/" -url {man_id}] - #this popup shouldn't affect delivery should popup blocker be in place - if { [string eq $needscorte "delivery-scorm"] } { - set course_url "> $course_name" - } else { - set course_url "$course_name" - } - ns_log Debug "lorsm - course_url: $course_url" - } else { - set course_url "NO RESOURCES ERROR" - } - } else { - set course_url "$course_name" - } + # micheles + set context [site_node::get_url_from_object_id -object_id $lorsm_instance_id] + if ([db_0or1row query " + select + cp.man_id, + case + when upper(scorm_type) = 'SCO' then 'delivery-scorm' + else 'delivery' + end as needscorte + from ims_cp_manifests cp left join (select man_id, max(scorm_type) as scorm_type from ims_cp_resources group by man_id ) as cpr using (man_id) + where cp.man_id = :man_id "]) { + ns_log Debug "lorsm - $needscorte" + set delivery_method delivery + set course_url_url [export_vars \ + -base "[lindex $context 0]$delivery_method/" \ + -url {man_id}] - #LET's CHECK IF delivery is RTE, so there should be some tracking. - #the code, differentely than above, check the delivery method as per above - - # Get the course name - if {[db_0or1row manifest " - select - cp.course_name, - cp.fs_package_id, - isscorm, - pf.folder_name, - pf.format_name, - case - when upper(scorm_type) = 'SCO' then 'delivery-scorm' - else 'delivery' - end as deliverymethod - from - ims_cp_manifests cp left join (select man_id, max(scorm_type) as scorm_type from ims_cp_resources group by man_id ) as cpr using (man_id) , - lorsm_course_presentation_formats pf - where - cp.man_id = :man_id - and cp.parent_man_id = 0 - and cp.course_presentation_format = pf.format_id "]} { - # Course Name - if {[empty_string_p $course_name]} { - set course_name "No Course Name" - } - } else { - set course_name "No Course Name" - } + #this popup shouldn't affect delivery should popup blocker be in place + if { [string eq $needscorte "delivery-scorm"] } { + set course_url "> $course_name" + } else { + set course_url "$course_name" + } + ns_log Debug "lorsm - course_url: $course_url" - set lesson_status "N/A" - - if { [string equal $deliverymethod "delivery-scorm"] } { - set icon "" - if { ! [ db_0or1row isanysuspendedsession "select lorsm.track_id as track_id, - cmi.lesson_status as lesson_status from - lorsm_student_track lorsm, lorsm_cmi_core cmi - where - lorsm.user_id = $user_id - and - lorsm.community_id = $community_id - and - lorsm.course_id = $man_id - and - lorsm.track_id = cmi.track_id - and - cmi.man_id = $man_id - and - cmi.item_id = $man_id - order by - lorsm.track_id desc - limit 1" ] } { - #item has no track for the user - #the icon should be the same as per "not yet visited" - append icon "\"Not" - } else { - switch -regexp $lesson_status { - null { append icon "\"Not" } - incomplete { append icon "\"Incomplete\"" } - complete { append icon "\"Completed\"" } - failed { append icon "\"Failed\"" } - "not attempted" { append icon "\"Not" } - passed { append icon "\"Passed\"" } - default { append icon " $lesson_status ** \"$lesson_status\""} - } - } - set lesson_status $icon - } - - # DEDS: these are expensive - # and for demo purposes only - - db_0or1row get_last_viewed { } - set all_items [db_list get_total_items { }] - set total_item_count [llength $all_items] - if {$total_item_count > 0} { - set viewed_items [db_list get_viewed_items { }] - } else { - set viewed_items {} - } - set viewed_item_count [llength $viewed_items] + } else { + set course_url "NO RESOURCES ERROR" + } + } else { + set course_url "$course_name" + } - ns_log Debug "lorsm - viewed_item_count: $viewed_item_count" + #LET's CHECK IF delivery is RTE, so there should be some tracking. + #the code, differentely than above, check the delivery method as per above - if { $total_item_count == 0 } { - set viewed_percent 0 - } else { - set viewed_percent [expr [expr $viewed_item_count * 1.00] / $total_item_count * 100] - } - set item_id [db_string get_item_id { }] - set admin_p [permission::permission_p -party_id $user_id -object_id $item_id -privilege "admin"] - } + # Get the course name + if {[db_0or1row manifest " + select + cp.course_name, + cp.fs_package_id, + isscorm, + pf.folder_name, + pf.format_name, + case + when upper(scorm_type) = 'SCO' then 'delivery-scorm' + else 'delivery' + end as deliverymethod + from ims_cp_manifests cp left join (select man_id, max(scorm_type) + as scorm_type from ims_cp_resources group by man_id ) + as cpr using (man_id) , + lorsm_course_presentation_formats pf + where cp.man_id = :man_id + and cp.parent_man_id = 0 + and cp.course_presentation_format = pf.format_id "]} { + # Course Name + if {[empty_string_p $course_name]} { + set course_name "No Course Name" + } + } else { + set course_name "No Course Name" + } + + set lesson_status "N/A" + + if { [string equal $deliverymethod "delivery-scorm"] } { + set icon "" + if { ! [ db_0or1row isanysuspendedsession "select lorsm.track_id as track_id, + cmi.lesson_status as lesson_status from + lorsm_student_track lorsm, lorsm_cmi_core cmi + where lorsm.user_id = $user_id + and lorsm.community_id = $community_id + and lorsm.course_id = $man_id + and lorsm.track_id = cmi.track_id + and cmi.man_id = $man_id + and cmi.item_id = $man_id + order by lorsm.track_id desc + limit 1" ] } { + #item has no track for the user + #the icon should be the same as per "not yet visited" + append icon "\"Not" + } else { + switch -regexp $lesson_status { + null { + append icon "\"Not" + + } incomplete { + append icon "\"Incomplete\"" + + } complete { + append icon "\"Completed\"" + + } failed { + append icon "\"Failed\"" + + } "not attempted" { + append icon "\"Not" + + } passed { + append icon "\"Passed\"" + } default { + append icon " $lesson_status + ** \"$lesson_status\"" + } + } + } + set lesson_status $icon + } + + # DEDS: these are expensive + # and for demo purposes only + + db_0or1row get_last_viewed { } + set all_items [db_list get_total_items { }] + set total_item_count [llength $all_items] + if {$total_item_count > 0} { + set viewed_items [db_list get_viewed_items { }] + } else { + set viewed_items {} + } + set viewed_item_count [llength $viewed_items] + + ns_log Debug "lorsm - viewed_item_count: $viewed_item_count" + + if { $total_item_count == 0 } { + set viewed_percent 0 + } else { + set viewed_percent [expr \ + [expr $viewed_item_count * 1.00] / $total_item_count * 100] + } + + set item_id [db_string get_item_id { }] + set admin_p [permission::permission_p -party_id $user_id -object_id $item_id -privilege "admin"] + } }