Index: openacs-4/packages/dotlrn-ecommerce/dotlrn-ecommerce.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/dotlrn-ecommerce.info,v
diff -u -r1.34 -r1.35
--- openacs-4/packages/dotlrn-ecommerce/dotlrn-ecommerce.info 6 Sep 2005 03:23:00 -0000 1.34
+++ openacs-4/packages/dotlrn-ecommerce/dotlrn-ecommerce.info 6 Sep 2005 05:25:39 -0000 1.35
@@ -7,15 +7,15 @@
f
t
-
+
Roel Canicula
Package to tie the dotLRN, Ecommerce, Assessments and dotLRN Catalog packages together
2005-08-10
Solution Grove
Package to tie the dotLRN, Ecommerce, Assessments and dotLRN Catalog packages together. Initially intended for the MOS and MGH projects, the goal is to create a reusable module for similar projects.
0
-
+
@@ -58,6 +58,7 @@
+
Index: openacs-4/packages/dotlrn-ecommerce/sql/postgresql/upgrade/upgrade-0.1d14-0.1d15.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/sql/postgresql/upgrade/upgrade-0.1d14-0.1d15.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/dotlrn-ecommerce/sql/postgresql/upgrade/upgrade-0.1d14-0.1d15.sql 6 Sep 2005 05:25:38 -0000 1.1
@@ -0,0 +1,22 @@
+--
+-- packages/dotlrn-ecommerce/sql/postgresql/upgrade/upgrade-0.1d14-0.1d15.sql
+--
+-- @author Roel Canicula (roelmc@pldtdsl.net)
+-- @creation-date 2005-09-06
+-- @arch-tag: 22b40de7-ea7d-4da0-8c15-88b20ba71f02
+-- @cvs-id $Id: upgrade-0.1d14-0.1d15.sql,v 1.1 2005/09/06 05:25:38 roelc Exp $
+--
+
+create table dotlrn_ecommerce_application_assessment_map (
+ rel_id integer references membership_rels on delete cascade not null,
+ session_id integer references as_sessions on delete cascade not null
+);
+
+create index dotlrn_ecommerce_application_assessment_map_rel_id_idx
+on dotlrn_ecommerce_application_assessment_map (rel_id);
+
+create index dotlrn_ecommerce_application_assessment_map_session_id_idx
+on dotlrn_ecommerce_application_assessment_map (session_id);
+
+create unique index dotlrn_ecommerce_application_assessment_map_un
+on dotlrn_ecommerce_application_assessment_map (rel_id, session_id);
\ No newline at end of file
Index: openacs-4/packages/dotlrn-ecommerce/www/applications.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/www/applications.tcl,v
diff -u -r1.32 -r1.33
--- openacs-4/packages/dotlrn-ecommerce/www/applications.tcl 5 Sep 2005 20:48:25 -0000 1.32
+++ openacs-4/packages/dotlrn-ecommerce/www/applications.tcl 6 Sep 2005 05:25:38 -0000 1.33
@@ -241,7 +241,7 @@
set general_comments_url [apm_package_url_from_key "general-comments"]
-db_multirow -extend { approve_url reject_url asm_url section_edit_url person_url register_url comments comments_text_plain comments_truncate add_comment_url s session_id target} applications applications [subst {
+db_multirow -extend { approve_url reject_url asm_url section_edit_url person_url register_url comments comments_text_plain comments_truncate add_comment_url target} applications applications [subst {
select person__name(r.user_id) as person_name, member_state, r.community_id, r.user_id as applicant_user_id, s.section_name, t.course_name, s.section_id, r.rel_id, e.phone, o.creation_user as patron_id,
(select count(*)
from (select *
@@ -251,14 +251,18 @@
and rr.rel_id <= r.rel_id
and rr.community_id = r.community_id
and rr.member_state = r.member_state
- order by o.creation_date) r) as number, s.product_id
+ order by o.creation_date) r) as number, s.product_id, m.session_id
+
from dotlrn_member_rels_full r
left join (select *
from ec_addresses
where address_id in (select max(address_id)
from ec_addresses
group by user_id)) e
- on (r.user_id = e.user_id), dotlrn_ecommerce_section s, dotlrn_catalogi t, cr_items i, acs_objects o
+ on (r.user_id = e.user_id)
+ left join dotlrn_ecommerce_application_assessment_map m
+ on (r.rel_id = m.rel_id), dotlrn_ecommerce_section s, dotlrn_catalogi t, cr_items i, acs_objects o
+
where r.community_id = s.community_id
and s.course_id = t.item_id
and t.course_id = i.live_revision
@@ -282,25 +286,27 @@
$member_state == "payment received"
} {
# Get associated assessment
- if { [db_0or1row assessment {
- select ss.session_id
- from dotlrn_ecommerce_section des,
- dotlrn_catalog dc,
- cr_items i1,
- cr_items i2,
- cr_revisions r,
- as_sessions ss
- where des.community_id = :community_id
- and i1.item_id = des.course_id
- and i1.live_revision = dc.course_id
- and dc.assessment_id = i2.item_id
- and r.item_id = i2.item_id
- and r.revision_id = ss.assessment_id
- and ss.subject_id = :applicant_user_id
- order by ss.creation_datetime desc
- limit 1
- }] } {
+# if { [db_0or1row assessment {
+# select ss.session_id
+# from dotlrn_ecommerce_section des,
+# dotlrn_catalog dc,
+# cr_items i1,
+# cr_items i2,
+# cr_revisions r,
+# as_sessions ss
+
+# where des.community_id = :community_id
+# and i1.item_id = des.course_id
+# and i1.live_revision = dc.course_id
+# and dc.assessment_id = i2.item_id
+# and r.item_id = i2.item_id
+# and r.revision_id = ss.assessment_id
+# and ss.subject_id = :applicant_user_id
+# order by ss.creation_datetime desc
+# limit 1
+# }] } {
+ if { ! [empty_string_p $session_id] } {
if {$use_embedded_application_view_p ==1} {
set asm_url "admin/application-view?session_id=$session_id"
set target ""
@@ -309,34 +315,37 @@
set asm_url [export_vars -base "[apm_package_url_from_id [parameter::get -parameter AssessmentPackage]]asm-admin/results-session" { session_id }]
set target "_blank"
}
- ns_log Notice "A:HAM: $asm_url"
-
}
+
+ ns_log Notice "A:HAM: $asm_url"
+# }
+
} elseif { $member_state == "request approval" ||
$member_state == "request approved" } {
# Get associated assessment
set assessment_id [parameter::get -parameter ApplicationAssessment -default ""]
- if { [db_0or1row assessment {
- select ss.session_id
+# if { [db_0or1row assessment {
+# select ss.session_id
- from (select a.*
- from as_assessmentsi a,
- cr_items i
- where a.assessment_id = i.latest_revision) a,
- as_sessions ss
+# from (select a.*
+# from as_assessmentsi a,
+# cr_items i
+# where a.assessment_id = i.latest_revision) a,
+# as_sessions ss
- where a.assessment_id = ss.assessment_id
- and a.item_id = :assessment_id
- and ss.subject_id = (select creation_user from acs_objects where object_id = :rel_id)
+# where a.assessment_id = ss.assessment_id
+# and a.item_id = :assessment_id
+# and ss.subject_id = (select creation_user from acs_objects where object_id = :rel_id)
- order by creation_datetime desc
+# order by creation_datetime desc
- limit 1
- }] } {
+# limit 1
+# }] } {
+ if { ! [empty_string_p $session_id] } {
if {$use_embedded_application_view_p ==1} {
set asm_url "admin/application-view?session_id=$session_id"
set target ""
@@ -345,10 +354,12 @@
set asm_url [export_vars -base "[apm_package_url_from_id [parameter::get -parameter AssessmentPackage]]asm-admin/results-session" { session_id }]
set target "_blank"
}
- ns_log Notice "B:HAM: $asm_url"
}
+
+# }
+ ns_log Notice "B:HAM: $asm_url"
}
-ns_log Notice "1:HAM: $asm_url"
+ ns_log Notice "1:HAM: $asm_url"
set section_edit_url [export_vars -base admin/one-section { section_id return_url }]
set person_url [export_vars -base /acs-admin/users/one { {user_id $applicant_user_id} }]
Index: openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request-2.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request-2.tcl 24 Aug 2005 12:45:53 -0000 1.1
+++ openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request-2.tcl 6 Sep 2005 05:25:38 -0000 1.2
@@ -11,6 +11,8 @@
} {
user_id:integer,notnull
return_url:notnull
+ rel_id:integer,notnull
+ session_id:integer,notnull,optional
} -properties {
} -validate {
} -errors {
@@ -19,26 +21,39 @@
set assessment_id [parameter::get -parameter ApplicationAssessment -default ""]
set viewing_user_id [ad_conn user_id]
-if { ! [empty_string_p $assessment_id] } {
- db_dml set_assessment_subject {
- update as_sessions
+if { ! [exists_and_not_null session_id] && ! [empty_string_p $assessment_id] } {
+ set session_id [db_string session {
+ select ss.session_id
+
+ from (select a.*
+ from as_assessmentsi a,
+ cr_items i
+ where a.assessment_id = i.latest_revision) a,
+ as_sessions ss
+
+ where a.assessment_id = ss.assessment_id
+ and a.item_id = :assessment_id
+ and ss.subject_id = :viewing_user_id
+
+ order by creation_datetime desc
+
+ limit 1
+ }]
+
+ db_dml set_assessment_subject {
+ update as_sessions
set subject_id = :user_id
- where session_id = (select ss.session_id
-
- from (select a.*
- from as_assessmentsi a,
- cr_items i
- where a.assessment_id = i.latest_revision) a,
- as_sessions ss
-
- where a.assessment_id = ss.assessment_id
- and a.item_id = :assessment_id
- and ss.subject_id = :viewing_user_id
-
- order by creation_datetime desc
-
- limit 1)
+ where session_id = :session_id
}
}
+# Create a mapping for the application rel_id and the assessment
+# session
+if { [exists_and_not_null session_id] } {
+ db_dml map_application_to_assessment {
+ insert into dotlrn_ecommerce_application_assessment_map
+ values (:rel_id, :session_id)
+ }
+}
+
ad_returnredirect $return_url
\ No newline at end of file
Index: openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl,v
diff -u -r1.17 -r1.18
--- openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl 6 Sep 2005 04:48:17 -0000 1.17
+++ openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl 6 Sep 2005 05:25:38 -0000 1.18
@@ -155,6 +155,23 @@
if { [empty_string_p $assessment_id] || $type == "full" } {
ad_returnredirect $next_url
} else {
- set return_url [export_vars -base "[ad_conn package_url]ecommerce/application-request-2" { user_id {return_url $next_url} }]
- ad_returnredirect [export_vars -base "[apm_package_url_from_id [parameter::get -parameter AssessmentPackage]]assessment" { assessment_id return_url }]
+ # Start a new session
+ as::assessment::data -assessment_id $assessment_id
+
+ # This shouldn't fail and the assessment must exist, if for some
+ # reason it doesn't, the redirects bellow shall not include the
+ # session_id and not error out, a new session will be created by
+ # the assessment code
+ if { [info exists assessment_data(assessment_id)] } {
+ set assessment_rev_id $assessment_data(assessment_rev_id)
+
+ set package_id [parameter::get -parameter AssessmentPackage]
+ set folder_id [db_string get_folder_id "select folder_id from cr_folders where package_id=:package_id"]
+
+ set session_item_id [content::item::new -parent_id $folder_id -content_type {as_sessions} -name "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" -title "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" ]
+ set session_id [content::revision::new -item_id $session_item_id -content_type {as_sessions} -title "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" -attributes [list [list assessment_rev_id $assessment_rev_id] [list subject_id $user_id] [list staff_id ""] [list target_datetime ""] [list creation_datetime ""] [list first_mod_datetime ""] [list last_mod_datetime ""] [list completed_datetime ""] [list percent_score ""] [list consent_timestamp ""] ] ]
+ }
+
+ set return_url [export_vars -base "[ad_conn package_url]ecommerce/application-request-2" { user_id {return_url $next_url} rel_id session_id }]
+ ad_returnredirect [export_vars -base "[apm_package_url_from_id [parameter::get -parameter AssessmentPackage]]assessment" { assessment_id return_url session_id }]
}