Index: openacs-4/packages/imsld/tcl/imsld-parse-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-parse-procs.tcl,v diff -u -N -r1.71 -r1.72 --- openacs-4/packages/imsld/tcl/imsld-parse-procs.tcl 13 Nov 2008 23:59:08 -0000 1.71 +++ openacs-4/packages/imsld/tcl/imsld-parse-procs.tcl 14 Nov 2008 17:41:52 -0000 1.72 @@ -707,23 +707,26 @@ set filex_list [$resource_node selectNodes {*[local-name()='file']}] set found_id_in_list 0 + # TODO: set this variable properly: + set import_with_xowiki 0 + foreach filex $filex_list { set filex_href [imsld::parse::get_attribute -node $filex -attr_name href] - -# set filex_id [imsld::fs::file_new -href $filex_href \ -# -path_to_file $filex_href \ -# -type file \ -# -complete_path "[ns_urldecode ${tmp_dir}/${filex_href}]"] + if { $import_with_xowiki } { + set manifest_identifier [imsld::parse::get_attribute -node $manifest -attr_name identifier] + set filex_id [imsld::xowiki::file_new -href $filex_href \ + -path_to_file $filex_href \ + -file_name "${manifest_identifier}/${filex_href}" \ + -type file \ + -complete_path "[ns_urldecode ${tmp_dir}/${filex_href}]"] + } else { + set filex_id [imsld::fs::file_new -href $filex_href \ + -path_to_file $filex_href \ + -type file \ + -complete_path "[ns_urldecode ${tmp_dir}/${filex_href}]"] + } - set manifest_identifier [imsld::parse::get_attribute -node $manifest -attr_name identifier] - - set filex_id [imsld::xowiki::file_new -href $filex_href \ - -path_to_file $filex_href \ - -file_name "${manifest_identifier}/${filex_href}" \ - -type file \ - -complete_path "[ns_urldecode ${tmp_dir}/${filex_href}]"] - if { !$filex_id } { # an error ocurred when creating the file return [list 0 "[_ imsld.lt_The_file_filex_href_w]"] @@ -742,8 +745,11 @@ permission::set_not_inherit -object_id $filex_id # map resource with file - relation_add -extra_vars $extra_vars imsld_res_files_rel $resource_id $filex_id - # relation_add -extra_vars $extra_vars imsld_resource_xowiki_rel $resource_id $filex_id + if { $import_with_xowiki } { + relation_add -extra_vars $extra_vars imsld_resource_xowiki_rel $resource_id $filex_id + } else { + relation_add -extra_vars $extra_vars imsld_res_files_rel $resource_id $filex_id + } } if { ![empty_string_p $resource_href] && !$found_p } { Index: openacs-4/packages/imsld/tcl/imsld-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-procs.tcl,v diff -u -N -r1.106 -r1.107 --- openacs-4/packages/imsld/tcl/imsld-procs.tcl 13 Nov 2008 23:59:08 -0000 1.106 +++ openacs-4/packages/imsld/tcl/imsld-procs.tcl 14 Nov 2008 17:41:54 -0000 1.107 @@ -2555,17 +2555,6 @@ $file_node appendChild [$dom_doc createTextNode {[}] $file_node appendChild $choose_node $file_node appendChild [$dom_doc createTextNode {]}] - - set up_node [$dom_doc createElement a] - $up_node appendChild [$dom_doc createTextNode "^"] - $up_node setAttribute href {#} - set down_node [$dom_doc createElement a] - $down_node appendChild [$dom_doc createTextNode "v"] - $down_node setAttribute href {#} - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $up_node - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $down_node } } else { $dom_node appendChild $a_node @@ -2574,19 +2563,21 @@ } elseif { [string eq $resource_type "imsldcontent"] } { foreach file_list [db_list_of_lists associated_files { *SQL* }] { + set imsld_file_id [lindex $file_list 0] set file_name [lindex $file_list 1] set item_id [lindex $file_list 2] set parent_id [lindex $file_list 3] # get the fs file path set folder_path [db_exec_plsql get_folder_path { *SQL* }] - db_1row get_fs_file_url { *SQL* } + db_0or1row get_fs_file_url { *SQL* } set fs_file_url $file_url set file_url "imsld-content-serve" set a_node [$dom_doc createElement a] $a_node setAttribute href "[export_vars -base "[lindex [site_node::get_url_from_object_id -object_id $imsld_package_id] 0]imsld-finish-resource" {file_url $file_url resource_item_id $resource_item_id run_id $run_id}]" $a_node setAttribute target "_blank" $a_node setAttribute title "$file_name" + $a_node setAttribute onclick "return loadContent(this.href)" set img_node [$dom_doc createElement img] $img_node setAttribute src "[imsld::object_type_image_path -object_type file-storage]" $img_node setAttribute border "0" @@ -2604,17 +2595,6 @@ $file_node appendChild [$dom_doc createTextNode {[}] $file_node appendChild $choose_node $file_node appendChild [$dom_doc createTextNode {]}] - - set up_node [$dom_doc createElement a] - $up_node appendChild [$dom_doc createTextNode "^"] - $up_node setAttribute href {#} - set down_node [$dom_doc createElement a] - $down_node appendChild [$dom_doc createTextNode "v"] - $down_node setAttribute href {#} - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $up_node - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $down_node } } else { $dom_node appendChild $a_node @@ -2646,40 +2626,30 @@ set file_node [$dom_doc createElement li] $file_node appendChild $a_node $dom_node appendChild $file_node - $a_node appendChild [$dom_doc createTextNode $object_title] + $a_node appendChild [$dom_doc createTextNode $file_name] if { $monitor_p } { set choose_node [$dom_doc createElement a] $choose_node appendChild [$dom_doc createTextNode "Choose"] $file_node appendChild [$dom_doc createTextNode {[}] $file_node appendChild $choose_node $file_node appendChild [$dom_doc createTextNode {]}] - - set up_node [$dom_doc createElement a] - $up_node appendChild [$dom_doc createTextNode "^"] - $up_node setAttribute href {#} - set down_node [$dom_doc createElement a] - $down_node appendChild [$dom_doc createTextNode "v"] - $down_node setAttribute href {#} - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $up_node - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $down_node } } else { $dom_node appendChild $a_node } } # get associated urls - db_foreach associated_urls_wiki { + set wiki_query { select ar.object_id_two as page_id from acs_rels ar, imsld_res_files_rels map where ar.object_id_one = :resource_item_id and ar.rel_id = map.rel_id - } { - set a_node [$dom_doc createElement a] - # set url [imsld::xowiki::page_url -item_id $page_id] - set url "xowiki-view/$page_id" + } + db_foreach associated_urls { *SQL* } { + set a_node [$dom_doc createElement a] +# set url "xowiki-view/$page_id" +# set url [export_vars -base [imsld::xowiki::page_url -item_id $page_id] {{template_file "/packages/imsld/lib/wiki-default"}}] $a_node setAttribute href "[export_vars -base "[lindex [site_node::get_url_from_object_id -object_id $imsld_package_id] 0]imsld-finish-resource" { {file_url "[export_vars -base $url]"} resource_item_id run_id}]" ns_log notice "resource item: $resource_item_id" $a_node setAttribute onclick "return loadContent(this.href)" @@ -2699,21 +2669,10 @@ if { $monitor_p } { set choose_node [$dom_doc createElement a] $choose_node appendChild [$dom_doc createTextNode "Choose"] - $choose_node setAttribute href {#} + $choose_node setAttribute href {\#} $file_node appendChild [$dom_doc createTextNode {[}] $file_node appendChild $choose_node $file_node appendChild [$dom_doc createTextNode {]}] - - set up_node [$dom_doc createElement a] - $up_node appendChild [$dom_doc createTextNode "^"] - $up_node setAttribute href {#} - set down_node [$dom_doc createElement a] - $down_node appendChild [$dom_doc createTextNode "v"] - $down_node setAttribute href {#} - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $up_node - $file_node appendChild [$dom_doc createTextNode " "] - $file_node appendChild $down_node } } else { $dom_node appendChild $a_node Index: openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl,v diff -u -N -r1.16 -r1.17 --- openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl 25 Apr 2007 10:52:30 -0000 1.16 +++ openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl 14 Nov 2008 17:41:54 -0000 1.17 @@ -363,3 +363,106 @@ return 0 } } + +ad_proc -public imsld::roles::create_basic_instance { + -role_id:required + -run_id:required + -title:required + -parent_group_id +} { + Create an instance with a given name and does not create subgroups + + @author Derick Leony (derick@inv.it.uc3m.es) + @creation-date 2008-10-31 + + @param role_id + @param run_id + @param title + + @return + + @error +} { + set user_id [ad_conn user_id] + set peeraddr [ad_conn peeraddr] + + #get the run_users_group + db_1row get_group_from_run { + select group_id as run_group_id + from imsld_run_users_group_ext + where run_id=:run_id + } + #create the party + db_transaction { + set group_id [db_exec_plsql create_new_group { + select acs_group__new( + null, + 'imsld_role_group', + now(), + :user_id, + :peeraddr, + null, + null, + :title, + null, + null + ); + }] + } + + #map role with group + set role_item_id [content::revision::item_id -revision_id $role_id] + set rel_id [relation_add imsld_role_group_rel $role_item_id $group_id] + #map group with his parent (composition_rel) + if {[info exist parent_group_id] } { + relation_add composition_rel $parent_group_id $group_id + } + #map group with the run + relation_add imsld_roleinstance_run_rel $group_id $run_group_id + + return $group_id +} + + +ad_proc -public imsld::roles::create_groups_from_dom { + -node:required + -run_id:required + -parent_group_id +} { + Creates role groups based on an standarized XML + + @author Derick Leony (derick@inv.it.uc3m.es) + @creation-date 2008-10-31 + + @param node + @param run_id + @param imsld_id + @param parent_group_id + + @return + + @error +} { + set groups [list] + foreach role_node [$node selectNodes {role}] { + set id [$role_node getAttribute {id}] + set occurrence [$role_node getAttribute {occurrence}] + set title [[$role_node firstChild] text] +# ns_write "$occurrence - $id: $title\n" + set role_id [imsld::roles::get_role_id -run_id $run_id -ref $id] + set new_instance "" + if { [info exists parent_group_id] } { + set new_instance_id [imsld::roles::create_basic_instance -role_id $role_id -parent_group_id $parent_group_id \ + -title $title -run_id $run_id] + } else { + set new_instance_id [imsld::roles::create_basic_instance -role_id $role_id \ + -title $title -run_id $run_id] + } + lappend groups $occurrence $new_instance_id + set sub_groups [imsld::roles::create_groups_from_dom -node $role_node -run_id $run_id \ + -parent_group_id $new_instance_id] + set groups [concat $groups $sub_groups] + } + return $groups +} +