Index: openacs-4/packages/contacts/www/message.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/message.tcl,v
diff -u -r1.38 -r1.39
--- openacs-4/packages/contacts/www/message.tcl 23 Jun 2007 10:18:17 -0000 1.38
+++ openacs-4/packages/contacts/www/message.tcl 25 Jun 2007 16:25:39 -0000 1.39
@@ -8,7 +8,7 @@
{object_id:integer,multiple,optional}
{party_id:multiple,optional}
{party_ids ""}
- {group_id:integer ""}
+ {search_id:integer ""}
{message_type ""}
{message:optional}
{header_id:integer ""}
@@ -45,16 +45,23 @@
set invalid_party_ids [list]
-if { $group_id ne "" } {
+set package_id [ad_conn package_id]
+set recipients [list]
- # Make sure the user has write permission on the group
- permission::require_permission -object_id $group_id -privilege "write"
+if { $search_id ne "" } {
- # Get the party_ids from the group members
- if { [contact::group::mapped_p -group_id $group_id] } {
- set valid_party_ids [group::get_members -group_id $group_id]
+ set return_url [export_vars -base [apm_package_url_from_id $package_id] -url {search_id}]
+ if {[contact::group::mapped_p -group_id $search_id]} {
+
+ # Make sure the user has write permission on the group
+ permission::require_permission -object_id $search_id -privilege "write"
+ lappend recipients "[group::title -group_id $search_id]"
+ } else {
+ lappend recipients "[contact::search::title -search_id $search_id]"
}
+ # We do the check in the search template
+ set valid_party_ids "0"
} else {
if { [exists_and_not_null party_id] } {
@@ -74,7 +81,7 @@
# Make sure the parties are visible to the user
foreach id $party_ids {
- if {[contact::visible_p -party_id $id -package_id [ad_conn package_id]]} {
+ if {[contact::visible_p -party_id $id -package_id $package_id]} {
lappend valid_party_ids $id
}
}
@@ -85,14 +92,11 @@
set user_id [ad_conn user_id]
set context [list $title]
-set recipients [list]
-
if {![exists_and_not_null valid_party_ids]} {
ad_return_error "[_ contacts.No_valid_parties]" "[_ contacts.No_valid_parties_lt]"
ad_script_abort
}
-set recipients [list]
set invalid_recipients [list]
set party_ids [list]
@@ -137,17 +141,17 @@
}
# If we are passing in a group, do not show the individual users
-if { [empty_string_p $group_id] } {
+if { [empty_string_p $search_id] } {
# Prepare the recipients
foreach party_id $party_ids {
set contact_name [contact::name -party_id $party_id]
set contact_url [contact::url -party_id $party_id]
lappend recipients "${contact_name}"
}
-
+ set form_elements "party_ids:text(hidden)"
} else {
- lappend recipients "[group::title -group_id $group_id]"
+ set form_elements ""
}
# Deal with the invalid recipients
@@ -179,11 +183,11 @@
if {[exists_and_not_null object_id]} {
foreach object $object_id {
if {[fs::folder_p -object_id $object]} {
- db_foreach files "select r.revision_id
- from cr_revisions r, cr_items i
- where r.item_id = i.item_id and i.parent_id = :object" {
- lappend file_list $revision_id
- }
+ db_foreach files {select r.revision_id
+ from cr_revisions r, cr_items i
+ where r.item_id = i.item_id and i.parent_id = :object} {
+ lappend file_list $revision_id
+ }
} else {
set revision_id [content::item::get_best_revision -item_id $object]
if {[empty_string_p $revision_id]} {
@@ -205,18 +209,16 @@
set file_ids [join $file_list " "]
}
-set form_elements {
+append form_elements {
file_ids:text(hidden)
- party_ids:text(hidden)
- group_id:text(hidden)
+ search_id:text(hidden)
return_url:text(hidden)
folder_id:text(hidden)
object_id:text(hidden)
context_id:text(hidden)
{to_name:text(inform),optional {label "[_ contacts.Recipients]"} {value $recipients}}
}
-
if { ![exists_and_not_null message_type] } {
set message_type_options [ams::util::localize_and_sort_list_of_lists \
@@ -283,9 +285,9 @@
} else {
set title [_ contacts.create_$message_type]
- if {$group_id ne ""} {
- # Get the group template
- set message_src "/packages/contacts/lib/${message_type}_group"
+ if {$search_id ne ""} {
+ # Get the search template
+ set message_src "/packages/contacts/lib/${message_type}-search"
} else {
set message_src "/packages/contacts/lib/${message_type}"
}