Index: openacs-4/packages/contacts/lib/email.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/lib/email.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/contacts/lib/email.tcl 14 Jun 2005 19:39:27 -0000 1.1 +++ openacs-4/packages/contacts/lib/email.tcl 15 Jun 2005 22:13:38 -0000 1.2 @@ -25,6 +25,7 @@ message_id:key party_ids:text(hidden) return_url:text(hidden) + file_ids:text(inform) {message_type:text(hidden) {value "email"}} {to:text(inform),optional {label "[_ contacts.Recipients]"} {value $recipients}} } @@ -34,14 +35,18 @@ {label "[_ contacts.Subject]"} {html {size 55}} } - {content:text(textarea),optional + {content:text(richtext),optional {label "[_ contacts.Message]"} {html {cols 55 rows 18}} {help_text {remember that you can use mail merge substitutions. the most common wildcards are \{name\} \{first_names\}, \{last_name\}, \{home_address\} and \{date\}}} } + {upload_file:file(file),optional + {label "[_ contacts.Upload_File]"} + } } ad_form -action message \ + -html {enctype multipart/form-data} \ -name email \ -cancel_label "[_ contacts.Cancel]" \ -cancel_url $return_url \ @@ -54,7 +59,39 @@ set from [contact::name -party_id [ad_conn user_id]] set from_addr [cc_email_from_party [ad_conn user_id]] template::multirow create messages message_type to_addr subject content + + # Insert the uploaded file linked under the package_id + set filename [template::util::file::get_property filename $upload_file] + set package_id [ad_conn package_id] + + if {$filename != "" } { + set tmp_filename [template::util::file::get_property tmp_filename $upload_file] + set mime_type [template::util::file::get_property mime_type $upload_file] + set tmp_size [file size $tmp_filename] + set extension [contact::util::get_file_extension \ + -filename $filename] + if {![exists_and_not_null title]} { + regsub -all ".${extension}\$" $filename "" title + } + set filename [contact::util::generate_filename \ + -title $title \ + -extension $extension \ + -party_id $party_id] + + set revision_id [cr_import_content \ + -storage_type "file" -title $title $package_id $tmp_filename $tmp_size $mime_type $filename] + + if {[exists_and_not_null file_ids]} { + append file_ids ",$revision_id" + } else { + set file_ids $revision_id + } + + content::item::set_live_revision -revision_id $revision_id + } + foreach party_id $party_ids { + set party_id 490 set name [contact::name -party_id $party_id] set first_names [lindex $name 0] set last_name [lindex $name 1] @@ -69,11 +106,19 @@ lappend values [list "{$element}" [set $element]] } template::multirow append messages $message_type $to_addr [contact::util::interpolate -text $subject -values $values] [contact::util::interpolate -text $content -values $values] + + # Link the file to all parties + if {[exists_and_not_null revision_id]} { + application_data_link::new -this_object_id $revision_id -target_object_id $party_id + } } - set package_id [ad_conn package_id] template::multirow foreach messages { - acs_mail_lite::send -to_addr $to_addr -from_addr "$from_addr" -subject "$subject" -body "$content" -package_id $package_id + if {[exists_and_not_null file_ids]} { + acs_mail_lite::complex_send -to_addr $to_addr -from_addr "$from_addr" -subject "$subject" -body "$content" -package_id $package_id -file_ids $file_ids + } else { + acs_mail_lite::send -to_addr $to_addr -from_addr "$from_addr" -subject "$subject" -body "$content" -package_id $package_id + } } } -after_submit {