Index: openacs-4/packages/contacts/www/relationship-ae.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/relationship-ae.tcl,v diff -u -r1.9 -r1.10 --- openacs-4/packages/contacts/www/relationship-ae.tcl 20 Feb 2006 22:01:03 -0000 1.9 +++ openacs-4/packages/contacts/www/relationship-ae.tcl 14 Mar 2006 08:38:04 -0000 1.10 @@ -69,22 +69,18 @@ if { !$list_exists_p || [template::form::is_valid "rel_form"] } { set existing_rel_id [db_string rel_exists_p {} -default {}] - + if { [empty_string_p $existing_rel_id] } { - set rel_id {} - set context_id {} - set creation_user [ad_conn user_id] - set creation_ip [ad_conn peeraddr] - set rel_id [db_exec_plsql create_rel {}] + set rel_id {} + set context_id {} + set creation_user [ad_conn user_id] + set creation_ip [ad_conn peeraddr] + set rel_id [db_exec_plsql create_rel {}] db_dml insert_contact_rel {} - # callback contact::insert_contact_rel -package_id $package_id -form party_ae -object_type $object_type - util_user_message -message "[_ contacts.Relationship_Added]" - - # flush cache for employee data - util_memoize_flush_regexp "::contact::employee_not_cached -employee_id $object_id_one" - util_memoize_flush_regexp "::contact::employee::get_not_cached -employee_id $object_id_one *" + set message [_ contacts.Relationship_Added] + # callback contact::insert_contact_rel -package_id $package_id -form party_ae -object_type $object_type } else { - util_user_message -message "[_ contacts.Relationship_Updated]" + set message [_ contacts.Relationship_Updated] } if { $list_exists_p } { ams::ad_form::save -package_key "contacts" \ @@ -93,9 +89,23 @@ -form_name "rel_form" \ -object_id $rel_id } + + # flush info on the parties + contact::flush -party_id $object_id_one + contact::flush -party_id $object_id_two + + # send them on their way if { ![exists_and_not_null return_url] } { - set return_url "$party_id/relationships" + set return_url "[contact::url -party_id $party_id]relationships" } + set redirect_rel_types [parameter::get -parameter EditDataAfterRel -package_id [ad_conn package_id] -default ""] + if { [regexp {\*} $redirect_rel_types match] || [lsearch $redirect_rel_types $rel_type] >= 0 } { + # we need to redirect the party to the attribute add/edit page + set return_url [export_vars -base "[contact::url -party_id $party_id]edit" -url {return_url}] + append message ". [_ contacts.lt_update_contact_if_needed]" + } + + util_user_message -message $message ad_returnredirect $return_url ad_script_abort } Index: openacs-4/packages/contacts/www/relationship-delete.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/relationship-delete.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/contacts/www/relationship-delete.tcl 15 Feb 2006 10:06:36 -0000 1.7 +++ openacs-4/packages/contacts/www/relationship-delete.tcl 14 Mar 2006 08:38:04 -0000 1.8 @@ -16,21 +16,44 @@ } } +# ams::object_delete -object_id $rel_id +db_1row get_rel_info {} +if { $object_id_one eq $party_id } { + set other_party_id $object_id_two +} else { + set other_party_id $object_id_two +} + +# we can only delete relationships where both parties belong to this package contact::require_visiblity -party_id $party_id +contact::require_visiblity -party_id $other_party_id -# ams::object_delete -object_id $rel_id -db_1row get_object_id_one {} +# delete the rel (we don't use relation_remove because it +# requires a rel_type__delete proc, which we don't have +# acs_object__delete allows and on delete cascades to work +# along with this rel removal. db_1row delete_rel {} -# flush cache for employee data -util_memoize_flush_regexp "::contact::employee_not_cached -employee_id $object_id_one" -util_memoize_flush_regexp "::contact::employee::get_not_cached -employee_id $object_id_one *" -util_memoize_flush_regexp "::contact::employee_not_cached -employee_id $party_id" -util_memoize_flush_regexp "::contact::employee::get_not_cached -employee_id $party_id *" +# flush cache for relationship data +contact::flush -party_id party_id +contact::flush -party_id other_party_id + if { ![exists_and_not_null return_url] } { set return_url "$party_id/relationships" } -ad_returnredirect -message "[_ contacts.Relationship_Deleted]" $return_url + + +set redirect_rel_types [parameter::get -parameter EditDataAfterRel -package_id [ad_conn package_id] -default ""] +if { [regexp {\*} $redirect_rel_types match] || [lsearch $redirect_rel_types $rel_type] >= 0 } { + # we need to redirect the party to the attribute add/edit page + set return_url [export_vars -base "[contact::url -party_id $party_id]edit" -url {return_url}] + ad_returnredirect -message "[_ contacts.Relationship_Deleted]. [_ contacts.lt_update_contact_if_needed]" $return_url +} else { + # we redirect the party to the specified return_url + ad_returnredirect -message "[_ contacts.Relationship_Deleted]" $return_url + +} + ad_script_abort