Index: openacs-4/packages/contacts/www/relationship-bulk-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/relationship-bulk-add.tcl,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/contacts/www/relationship-bulk-add.tcl 27 Mar 2006 07:42:44 -0000 1.2 +++ openacs-4/packages/contacts/www/relationship-bulk-add.tcl 20 Apr 2006 14:09:07 -0000 1.3 @@ -10,6 +10,8 @@ {return_url} {role_one ""} {role_two ""} + {remove_role_one:optional} + {switch_roles_p 0} } set title [_ contacts.Add_Relationship] @@ -48,7 +50,7 @@ set object_types [list "party" $contact_type] set rel_two_options [db_list_of_lists get_rels {}] set rel_two_options [ams::util::localize_and_sort_list_of_lists -list $rel_two_options] -set rel_two_options [concat [list [list "" ""]] $rel_two_options] +set rel_two_options [concat [list [list "" ""]] [lang::util::localize $rel_two_options]] if { $role_two ne "" && $role_one ne "" } { # we verify that the role still exists @@ -59,20 +61,20 @@ } } if { $role_two ne "" } { - set role_one_options [ams::util::localize_and_sort_list_of_lists -list [db_list_of_lists get_rel_types {}]] + set role_one_options [lang::util::localize [ams::util::localize_and_sort_list_of_lists -list [db_list_of_lists get_rel_types {}]]] if { [llength $role_one_options] == "0" } { ad_return_error "[_ contacts.Error]" "[_ contacts.lt_There_was_a_problem_w]" } elseif { [llength $role_one_options] == "1" } { set role_one [lindex [lindex $role_one_options 0] 1] - set role_one_pretty [lindex [lindex $role_one_options 0] 2] + set role_one_pretty [lindex [lindex $role_one_options 0] 0] } else { set role_one_options [concat [list [list "" ""]] $role_one_options] set role_one "" } } -ad_form -name "add_edit" -method "GET" -export {party_ids return_url} -form { +ad_form -name "add_edit" -method "GET" -export {party_ids return_url switch_roles_p} -form { {remove_role_one:boolean(checkbox),optional {label ""} {options {{"[_ contacts.lt_Remove_others_of_this_role_from_these_contacts]" 1}}} @@ -100,7 +102,8 @@ } # value has to be set this way to override on refreshes template::element::set_value add_edit role_one $role_one - template::element::set_value add_edit role_one_pretty [lang::util::localize [db_string get_role_one_pretty {}]] + template::element::set_value add_edit role_one_pretty $role_one_pretty + ## [lang::util::localize [db_string get_role_one_pretty {}]] } else { ad_form -extend -name "add_edit" -form { {role_one:text(hidden),optional} @@ -109,7 +112,6 @@ {value "[_ contacts.dependent_on_role_of_related_contact]"} } } - } ad_form -extend -name "add_edit" -form { @@ -130,40 +132,46 @@ } -validate { } -on_submit { - if { ![db_0or1row get_rel_info {}] } { - break - } - set object_type_two [contact::type -party_id $object_id_two] - if { $object_type_two eq "organization" && [lsearch [list person party] $secondary_object_type] >= 0 } { - template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_person] - } - if { $object_type_two ne "organization" && [lsearch [list organization party] $secondary_object_type] >= 0 } { - template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_org] - } - if { ![template::form::is_valid add_edit] } { - break - } - if { $remove_role_two eq "1" } { - set party_id $object_id_two - db_list delete_all_rels {} - } - set context_id {} - set creation_user [ad_conn user_id] - set creation_ip [ad_conn peeraddr] - foreach object_id_one $party_ids { - if { $remove_role_one eq "1" } { - set party_id $object_id_one + db_transaction { + if { ![db_0or1row get_rel_info {}] } { + break + } + set object_type_two [contact::type -party_id $object_id_two] + if { $object_type_two eq "organization" && [lsearch [list person party] $secondary_object_type] >= 0 } { + template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_person] + } + if { $object_type_two ne "organization" && [lsearch [list organization party] $secondary_object_type] >= 0 } { + template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_org] + } + if { ![template::form::is_valid add_edit] } { + break + } + if { $remove_role_two eq "1" } { + set party_id $object_id_two db_list delete_all_rels {} } - set existing_rel_id [db_string rel_exists_p {} -default {}] - if { [empty_string_p $existing_rel_id] } { - set rel_id {} - set rel_id [db_exec_plsql create_rel {}] - db_dml insert_contact_rel {} + set context_id {} + set creation_user [ad_conn user_id] + set creation_ip [ad_conn peeraddr] + foreach object_id_one $party_ids { + if { $remove_role_one eq "1" } { + set party_id $object_id_one + db_list delete_all_rels {} + } + set existing_rel_id [db_string rel_exists_p {} -default {}] + if { [empty_string_p $existing_rel_id] } { + set rel_id {} + if {$switch_roles_p} { + set rel_id [db_exec_plsql create_backward_rel {}] + } else { + set rel_id [db_exec_plsql create_forward_rel {}] + } + db_dml insert_contact_rel {} + } + contact::flush -party_id $object_id_one } - contact::flush -party_id $object_id_one + contact::flush -party_id $object_id_two } - contact::flush -party_id $object_id_two } -after_submit { ad_returnredirect $return_url