Index: openacs-4/packages/assessment/tcl/assessment-qti-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/tcl/Attic/assessment-qti-procs.tcl,v diff -u -r1.12 -r1.13 --- openacs-4/packages/assessment/tcl/assessment-qti-procs.tcl 23 Jun 2004 13:12:58 -0000 1.12 +++ openacs-4/packages/assessment/tcl/assessment-qti-procs.tcl 20 Jul 2004 18:11:15 -0000 1.13 @@ -6,6 +6,9 @@ } ad_proc -public parse_qti_xml { xmlfile } { Parse a XML QTI file } { + set package_id [ad_conn package_id] + set folder_id [db_string get_folder_id "select folder_id from cr_folders where package_id=:package_id"] + # Open, read and close the XML file set file_id [open $xmlfile r] set file_string [read $file_id] @@ -44,10 +47,11 @@ } } } - # assessment_id - set as_assessments__assessment_id [db_nextval acs_object_id_seq] - # Insert assessment in the as_assessments table - db_dml as_assessments_insert {} + # Insert assessment in the CR (and as_assessments table) getting the revision_id (assessment_id) + set assessment_item_id [content::item::new -parent_id $folder_id -content_type {as_assessments} -name $as_assessments__name -title $as_assessments__definition ] + set as_assessments__assessment_id [content::revision::new -item_id $assessment_item_id -content_type {as_assessments} -title $as_assessments__definition ] + + # Section set sectionNodes [$assessment selectNodes {section}] foreach section $sectionNodes { @@ -64,9 +68,9 @@ } } } - set as_sections__section_id [db_nextval acs_object_id_seq] - # Insert section in the as_sections table - db_dml as_sections_insert {} + # Insert section in the CR (the and the as_sections table) getting the revision_id (section_id) + set section_item_id [content::item::new -parent_id $folder_id -content_type {as_sections} -name $as_sections__name -title $as_sections__definition ] + set as_sections__section_id [content::revision::new -item_id $section_item_id -content_type {as_sections} -title $as_sections__definition ] # Relation between as_sections and as_assessments db_dml as_assessment_section_map_insert {} # Process the items @@ -82,10 +86,11 @@ } ad_proc -private parse_item { qtiNode section_id} { Parse items from a XML QTI file } { + set package_id [ad_conn package_id] + set folder_id [db_string get_folder_id "select folder_id from cr_folders where package_id=:package_id"] + set itemNodes [$qtiNode selectNodes {item}] foreach item $itemNodes { - # items are OACS objects - set item_id [db_nextval acs_object_id_seq] # Order of the item_choices (as_item_choice_map) set sort_order 0 set as_items__name [$item getAttribute {title}] @@ -101,14 +106,16 @@ set nodeNodes [$presentation selectNodes {.//material}] set node [lindex $nodeNodes 0] # Initialize in case it doen't exist - set as_items__item_text {} + set as_items__title {} if {[$node nodeName] == {material}} { set mattextNodes [$node selectNodes {mattext/text()}] set mattext [lindex $mattextNodes 0] - set as_items__item_text [$mattext nodeValue] + set as_items__title [$mattext nodeValue] } set render_fibNodes [$presentation selectNodes {.//render_fib}] if {[llength $render_fibNodes] > 0} { + # currently dead code + if {0 == 1} { # fillinblank or shortanswer set render_fib [lindex $render_fibNodes 0] # fillinblank (textbox) @@ -118,19 +125,23 @@ # shortanswer (textarea) set as_item__display_type_id 1 } - db_dml as_item_insert {} + # Insert as_item in the CR (and as_assessments table) getting the revision_id (as_item_id) + set item_item_id [content::item::new -parent_id $folder_id -content_type {as_items} -name $as_items__name -title $as_items__title ] + set as_item_id [content::revision::new -item_id $item_item_id -content_type {as_items} -title $as_items__title ] foreach node $nodeNodes { if {[$node nodeName] == {material}} { set mattextNodes [$node selectNodes {mattext/text()}] set mattext [lindex $mattextNodes 0] set as_item_choices__choice_text [$mattext nodeValue] - set choice_id [db_nextval acs_object_id_seq] - db_dml as_item_choice_insert {} + # Insert as_item_choice in the CR (and as_item_choices table) getting the revision_id (choice_id) + set as_items_choices__choice_id [content::item::new -parent_id $folder_id -content_type {as_item_choices} -name $as_item_choices__ident -title $as_item_choices__choice_text ] + set choice_id [content::revision::new -item_id $as_items_choices__choice_id -content_type {as_item_choices} -title $as_item_choices__choice_text ] db_dml as_item_choice_map_insert {} # order of the item_choices incr sort_order } } + } } else { set response_lidNodes [$presentation selectNodes {.//response_lid}] # The first node of the list. It may not be a good idea if it doesn't exist @@ -143,16 +154,20 @@ # multiple response either text (remember it can be internationalized or changed), images, sounds, videos set as_item__display_type_id 3 } - db_dml as_item_insert {} + # Insert as_item in the CR (and as_assessments table) getting the revision_id (as_item_id) + set item_item_id [content::item::new -parent_id $folder_id -content_type {as_items} -name $as_items__name -title $as_items__title ] + set as_item_id [content::revision::new -item_id $item_item_id -content_type {as_items} -title $as_items__title ] set response_labelNodes [$presentation selectNodes {.//response_label}] foreach response_label $response_labelNodes { + set as_item_choices__ident [$response_label getAttribute {ident}] set mattextNodes [$response_label selectNodes {material/mattext/text()}] set as_item_choices__choice_text [db_null] foreach mattext $mattextNodes { set as_item_choices__choice_text [$mattext nodeValue] } - set choice_id [db_nextval acs_object_id_seq] - db_dml as_item_choice_insert {} + # Insert as_item_choice in the CR (and as_item_choices table) getting the revision_id (choice_id) + set as_items_choices__choice_id [content::item::new -parent_id $folder_id -content_type {as_item_choices} -name $as_item_choices__ident -title $as_item_choices__choice_text ] + set choice_id [content::revision::new -item_id $as_items_choices__choice_id -content_type {as_item_choices} -title $as_item_choices__choice_text ] db_dml as_item_choice_map_insert {} # order of the item_choices incr sort_order