Index: openacs-4/packages/lorsm/www/delivery/delivery-progress-bar.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/delivery/delivery-progress-bar.tcl,v
diff -u -r1.11 -r1.12
--- openacs-4/packages/lorsm/www/delivery/delivery-progress-bar.tcl 8 Oct 2008 13:01:06 -0000 1.11
+++ openacs-4/packages/lorsm/www/delivery/delivery-progress-bar.tcl 17 Nov 2008 13:38:36 -0000 1.12
@@ -1,7 +1,7 @@
# packages/lorsm/www/delivery/delivery-context-bar.tcl
ad_page_contract {
-
+
} {
{__include ""}
{__include_vars ""}
@@ -15,14 +15,18 @@
if {![info exists man_id] || $man_id eq ""} {
set man_id [ad_get_client_property lorsm man_id]
}
+
if {![info exists item_id]} {
set item_id [ad_get_client_property lorsm ims_id]
}
ns_log notice "delivery progress bar DEBUG:: item_id $item_id"
set community_id [dotlrn_community::get_community_id]
set user_id [ad_conn user_id]
-set track_id [lorsm::track::get_track_id -user_id $user_id -man_id $man_id -community_id $community_id]
+set track_id [lorsm::track::get_track_id \
+ -user_id $user_id \
+ -man_id $man_id \
+ -community_id $community_id]
#ns_log notice "DAVEB LORSM BEFORE TRACK_ID='${track_id}'"
set lorsm_url [dotlrn_community::get_community_url $community_id]lorsm/delivery
@@ -34,7 +38,14 @@
set item_list [lorsm::get_item_list $man_id $user_id]
set first_item_id [lindex $item_list 0]
-set first_item_url "
"
+set first_item_url "
+
"
+
set curr_index [expr [lsearch -exact $item_list $item_id]]
set next_link_text [_ lorsm.Next]
@@ -43,15 +54,26 @@
if {$curr_index < 0} {
set lorsm_return_url [get_referrer]
ad_set_client_property lorsm lorsm_return_url $lorsm_return_url
-
+
if {$track_id ne "" && $track_id ne "0"} {
- set last_viewed_item_id [db_string get_last_viewed "select object_id from views_views, lorsm_student_track where viewer_id = :user_id and object_id in ([template::util::tcl_to_sql_list $item_list]) and track_id=:track_id and last_viewed > start_time order by last_viewed desc limit 1" -default ""]
- if {$last_viewed_item_id ne ""} {
- set item_id $last_viewed_item_id
- ad_set_client_property lorsm ims_id $item_id
- ad_returnredirect [export_vars -base "${lorsm_url}/record-view" -url {{item_id $item_id} track_id man_id}]
- ad_script_abort
- }
+ set last_viewed_item_id [db_string get_last_viewed \
+ "select object_id
+ from views_views, lorsm_student_track
+ where viewer_id = :user_id
+ and object_id in ([template::util::tcl_to_sql_list $item_list])
+ and track_id=:track_id
+ and last_viewed > start_time
+ order by last_viewed desc
+ limit 1" -default ""]
+
+ if {$last_viewed_item_id ne ""} {
+ set item_id $last_viewed_item_id
+ ad_set_client_property lorsm ims_id $item_id
+ ad_returnredirect [export_vars \
+ -base "${lorsm_url}/record-view" \
+ -url {{item_id $item_id} track_id man_id}]
+ ad_script_abort
+ }
}
# start course
@@ -60,27 +82,34 @@
# do we have a custom start page?
set item_id [lorsm::get_custom_page_ims_item_id -man_id $man_id -type start]
if {$item_id eq ""} {
- set __include "/packages/lorsm/lib/start"
- set page_title [lorsm::get_course_name -manifest_id $man_id]
+ set __include "/packages/lorsm/lib/start"
+ set page_title [lorsm::get_course_name -manifest_id $man_id]
} else {
- ad_set_client_property lorsm ims_id $item_id
- set __include /packages/lorsm/lib/default
- set page_title [db_string get_title "select item_title from ims_cp_items where ims_item_id=:item_id" -default ""]
+ ad_set_client_property lorsm ims_id $item_id
+ set __include /packages/lorsm/lib/default
+ set page_title [db_string get_title \
+ "select item_title
+ from ims_cp_items
+ where ims_item_id=:item_id" -default ""]
}
+
set next_link_text [_ lorsm.Begin]
if {$track_id ne ""} {
- set next_link_text [_ lorsm.Continue]
+ set next_link_text [_ lorsm.Continue]
}
set track_p 0
}
+
# Student tracking
-if {[lorsm::track::istrackable -course_id $man_id -package_id $package_id] \
+if {[lorsm::track::istrackable \
+ -course_id $man_id \
+ -package_id $package_id] \
&& $track_p && ($track_id == 0 || $track_id eq "")} {
-
+
set track_id [lorsm::track::new \
- -user_id $user_id \
- -community_id $community_id \
- -course_id $man_id]
+ -user_id $user_id \
+ -community_id $community_id \
+ -course_id $man_id]
ad_set_client_property lorsm studenttrack $track_id
} elseif {$track_id eq ""} {
set track_id 0
@@ -93,17 +122,38 @@
set prev_item_id [lindex $item_list [expr $curr_index - 1]]
set next_item_id [lindex $item_list [expr $curr_index + 1]]
-set prev_url "
"
-set next_url [export_vars -base "${lorsm_url}/record-view" -url {{item_id $next_item_id} track_id man_id}]
+set prev_url "
+
"
-set prev_title [db_string get_title "select item_title from ims_cp_items where ims_item_id=:prev_item_id" -default ""]
-set next_title [db_string get_title "select item_title from ims_cp_items where ims_item_id=:next_item_id" -default ""]
-set current_title [db_string get_title "select item_title from ims_cp_items where ims_item_id=:item_id" -default ""]
+set next_url [export_vars \
+ -base "${lorsm_url}/record-view" \
+ -url {{item_id $next_item_id} track_id man_id}]
+set prev_title [db_string get_title \
+ "select item_title
+ from ims_cp_items
+ where ims_item_id=:prev_item_id" -default ""]
+
+set next_title [db_string get_title \
+ "select item_title
+ from ims_cp_items
+ where ims_item_id=:next_item_id" -default ""]
+
+set current_title [db_string get_title \
+ "select item_title
+ from ims_cp_items
+ where ims_item_id=:item_id" -default ""]
+
set progress_total_pages [llength $item_list]
set progress_current_page [expr {$curr_index + 1}]
set last_item_p [expr {$curr_index == [expr {[llength $item_list] - 1}]}]
-if {[string match "*assessment*" $__include] && ![string match "*assessment/lib/session*" $__include]} {
+if {[string match "*assessment*" $__include] && \
+ ![string match "*assessment/lib/session*" $__include]} {
set show_next 0
template::head::add_css \
-href "/resources/assessment/crbForms.css"
@@ -112,34 +162,39 @@
set last_item_p 0
} else {
if { $next_item_id eq "" } {
- # check for end page
- set next_url ${lorsm_url}/end
- set last_item_p 0
+ # check for end page
+ set next_url ${lorsm_url}/end
+ set last_item_p 0
}
set show_next 1
}
if {$__include eq "/packages/lorsm/lib/end"} {
if {$track_id ne "0"} {
-ns_log notice "HEY PROGRESS BAR END GOING TO TRACK $track_id"
- lorsm::track::exit -track_id $track_id
+ ns_log notice "HEY PROGRESS BAR END GOING TO TRACK $track_id"
+ lorsm::track::exit -track_id $track_id
}
+
set item_id [lorsm::get_custom_page_ims_item_id -man_id $man_id -type end]
if {$item_id ne ""} {
- ad_set_client_property lorsm ims_id $item_id
- set __include /packages/lorsm/lib/default
- set page_title [db_string get_title "select item_title from ims_cp_items where ims_item_id=:item_id" -default ""]
+ ad_set_client_property lorsm ims_id $item_id
+ set __include /packages/lorsm/lib/default
+ set page_title [db_string get_title "select item_title from ims_cp_items where ims_item_id=:item_id" -default ""]
}
+
set lorsm_return_url [ad_get_client_property lorsm lorsm_return_url]
if {$lorsm_return_url ne ""} {
- set return_url $lorsm_return_url
+ set return_url $lorsm_return_url
}
- set next_url [export_vars -base exit {man_id track_id return_url}]
- set last_item_p 1
-
+ set next_url [export_vars -base exit {man_id track_id return_url}]
+ set last_item_p 1
}
-if {$item_id eq "" && $__include ne "/packages/lorsm/lib/start" && $__include ne "/packages/lorsm/lib/end"} {
- ad_returnredirect -message "[_ lorsm.This_course_contains_no_items]" [get_referrer]
+
+if {$item_id eq "" && $__include ne "/packages/lorsm/lib/start" \
+ && $__include ne "/packages/lorsm/lib/end"} {
+ ad_returnredirect \
+ -message "[_ lorsm.This_course_contains_no_items]" \
+ [get_referrer]
ad_script_abort
}
set include_content [template::adp_include $__include $__include_vars]
@@ -152,15 +207,31 @@
if {[info exists ::js_order]} {
foreach js $::js_order {
- template::head::add_script \
- -src $js
+ template::head::add_script -src $js
}
}
template::head::add_style -style \
-".current-item { font-weight: bold; font-size: 1.2em; }
-.next-button { margin: 4px; padding-left: 4px; padding-right: 4px; border-top: 2px solid #fff; border-left: 2px solid #fff; border-right: 2px solid #999; border-bottom: 2px solid #999; background-color: #eee;}
-.next-button a { text-decoration: none; color: black; font-size: .8em; font-family: sans-serif;}"
+ ".current-item {
+ font-weight: bold;
+ font-size: 1.2em;
+ }
+ .next-button {
+ margin: 4px;
+ padding-left: 4px;
+ padding-right: 4px;
+ border-top: 2px solid #fff;
+ border-left: 2px solid #fff;
+ border-right: 2px solid #999;
+ border-bottom: 2px solid #999;
+ background-color: #eee;
+ }
+ .next-button a {
+ text-decoration: none;
+ color: black;
+ font-size: .8em;
+ font-family: sans-serif;
+ }"