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.16 -r1.17 --- openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl 19 Oct 2005 18:06:35 -0000 1.16 +++ openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl 20 Oct 2005 16:05:34 -0000 1.17 @@ -157,12 +157,23 @@ @error } { set community_id [dotlrn_community::get_community_id] - - set contact_organizations [application_data_link::get_linked -from_object_id $community_id -to_object_type "organization"] - - set contact_list "" - foreach party_id $contact_organizations { - set contact_list [concat $contact_list [contact::util::get_employees -organization_id $party_id]] + set project_id [wieners::process::project_from_project_folder -folder_id $folder_id] + + if {[empty_string_p $project_id]} { + # no project -> mail to all organization contacts + set contact_organizations [application_data_link::get_linked -from_object_id $community_id -to_object_type "organization"] + set contact_list "" + foreach party_id $contact_organizations { + set contact_list [concat $contact_list [contact::util::get_employees -organization_id $party_id]] + } + } else { + # project -> mail to project contact + db_1row get_project_contact { + select p.contact_id as contact_list + from pm_projects p, cr_items i + where i.latest_revision = p.project_id + and i.item_id = :project_id + } } if {[exists_and_not_null contact_list]} { @@ -171,9 +182,15 @@ upvar party_ids contact_ids_loc set contact_ids_loc $contact_list upvar return_url return_loc - set return_loc "/contacts/$party_id" + # set return_loc "/contacts/$party_id" lappend local_var "Mail to contact" "/contacts/message" "Mail to contact" lappend local_list "party_ids" + + if {![empty_string_p $project_id]} { + lappend local_list "context_id" + upvar context_id context_id + set context_id $project_id + } } }