Index: openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl,v diff -u -r1.59 -r1.60 --- openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl 5 Apr 2007 11:37:22 -0000 1.59 +++ openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl 18 Jun 2007 03:20:45 -0000 1.60 @@ -103,6 +103,15 @@ } { } +ad_proc -public -callback contact::employee_new { + {-package_id:required} + {-person_id:required} + {-organization_id:required} +} { + This callback will be executed once an employee has been created. This means we have a person in the system (employee) + as well as an organization (where the person is an employee of). +} - + ad_proc -public -callback contact::person_add { {-package_id:required} {-person_id:required} @@ -266,9 +275,9 @@ } { set object_type [contact::type -party_id $party_id] - set element_list [list email url] + set element_list [list] if { [lsearch [list person user] $object_type] >= 0 } { - lappend element_list first_names last_name + lappend element_list first_names last_name email } elseif {$object_type == "organization" } { lappend element_list name legal_name reg_number notes } @@ -288,11 +297,7 @@ acs_user::update -user_id $party_id -username $username } } - party::update -party_id $party_id -email $value -url [db_string get_url {select url from parties where party_id = :party_id} -default {}] } - url { - party::update -party_id $party_id -email [db_string get_email {select email from parties where party_id = :party_id} -default {}] -url $value - } default { set $element $value } Index: openacs-4/packages/contacts/www/contact-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/contact-add.tcl,v diff -u -r1.54 -r1.55 --- openacs-4/packages/contacts/www/contact-add.tcl 19 Dec 2006 10:54:34 -0000 1.54 +++ openacs-4/packages/contacts/www/contact-add.tcl 18 Jun 2007 03:20:45 -0000 1.55 @@ -11,6 +11,7 @@ {rel_type ""} {role_two ""} {object_id_two ""} + {return_url ""} } -validate { valid_type -requires {object_type} { if { [lsearch [list organization person employee] $object_type] < 0 } { @@ -168,13 +169,15 @@ set context [list $title] if {$object_type eq "employee"} { + + # An employee adding is adding both organization and person in one go callback contact::contact_form -package_id $package_id -form party_ae -object_type "organization" -group_ids $group_ids -rel_type $rel_type callback contact::contact_form -package_id $package_id -form party_ae -object_type "person" -group_ids $group_ids -rel_type $rel_type } else { callback contact::contact_form -package_id $package_id -form party_ae -object_type $object_type -group_ids $group_ids -rel_type $rel_type } -ad_form -extend -name party_ae \ +ad_form -extend -name party_ae -export {return_url}\ -on_request { if { $object_type eq "person" } { @@ -321,6 +324,9 @@ } } + if {$orig_object_type eq "employee"} { + set email "" + } callback contact::special_attributes::ad_form_save -party_id $organization_party_id -form "party_ae" callback contact::organization_new -package_id $package_id -contact_id $organization_party_id -name $name } @@ -352,6 +358,7 @@ # For employees we need to correctly save the relationship if {$orig_object_type eq "employee"} { + callback contact::employee_new -person_id $person_party_id -organization_id $organization_party_id -package_id $package_id set rel_type "contact_rels_employment" set party_id $person_party_id set object_id_two $organization_party_id @@ -429,10 +436,16 @@ if {$orig_object_type eq "employee"} { callback contact::contact_form_after_submit -party_id $organization_party_id -package_id $package_id -object_type organization -form "party_ae" } - if {[empty_string_p $object_id_two]} { - ad_returnredirect [contact::url -party_id $party_id] + + # If we passed a return_url go there + if {$return_url ne ""} { + ad_returnredirect "$return_url" } else { - ad_returnredirect "${package_url}/$object_id_two" + if {[empty_string_p $object_id_two]} { + ad_returnredirect [contact::url -party_id $party_id] + } else { + ad_returnredirect "${package_url}/$object_id_two" + } } ad_script_abort } Index: openacs-4/packages/contacts/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/index.tcl,v diff -u -r1.25 -r1.26 --- openacs-4/packages/contacts/www/index.tcl 19 Dec 2006 11:02:05 -0000 1.25 +++ openacs-4/packages/contacts/www/index.tcl 18 Jun 2007 03:20:45 -0000 1.26 @@ -17,6 +17,7 @@ {aggregate_extend_id:multiple ""} {extend_values:optional ""} {extended_columns:optional ""} + {return_url ""} } if { [exists_and_not_null add_person] } { @@ -119,7 +120,7 @@ } } -ad_form -name "search" -method "GET" -export {orderby page_size format extended_columns} -form $form_elements \ +ad_form -name "search" -method "GET" -export {orderby page_size format extended_columns return_url} -form $form_elements \ -on_request { } -edit_request { } -on_refresh {