Index: openacs-4/packages/contacts/lib/contacts.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/lib/contacts.tcl,v
diff -u -r1.7 -r1.8
--- openacs-4/packages/contacts/lib/contacts.tcl 15 Jun 2005 01:07:32 -0000 1.7
+++ openacs-4/packages/contacts/lib/contacts.tcl 15 Jun 2005 07:57:27 -0000 1.8
@@ -41,10 +41,15 @@
set bulk_actions [list \
"[_ contacts.Add_to_Group]" "group-parties-add" "[_ contacts.Add_to_group]" \
"[_ contacts.Remove_From_Group]" "group-parties-remove" "[_ contacts.lt_Remove_from_this_Grou]" \
- "[_ contacts.Delete]" "delete" "[_ contacts.lt_Delete_the_selected_C]" \
"[_ contacts.Mail_Merge]" "message" "[_ contacts.lt_E-mail_or_Mail_the_se]" \
]
-
+set package_id [ad_conn package_id]
+if { [permission::permission_p -object_id $package_id -privilege "admin"] } {
+ lappend bulk_actions "[_ contacts.Bulk_Update]" "bulk-update" "[_ contacts.lt_Bulk_update_the_seclected_C]"
+}
+if { [permission::permission_p -object_id $package_id -privilege "delete"] } {
+ lappend bulk_actions "[_ contacts.Delete]" "delete" "[_ contacts.lt_Delete_the_selected_C]"
+}
template::list::create \
-html {width 100%} \
-name "contacts" \
Index: openacs-4/packages/contacts/www/bulk-update.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/bulk-update.adp,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/contacts/www/bulk-update.adp 15 Jun 2005 07:57:44 -0000 1.1
@@ -0,0 +1,4 @@
+
+
+
+
Index: openacs-4/packages/contacts/www/bulk-update.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/bulk-update.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/contacts/www/bulk-update.tcl 15 Jun 2005 07:57:44 -0000 1.1
@@ -0,0 +1,146 @@
+ad_page_contract {
+ Bulk update contacts
+
+ @author Matthew Geddert openacs@geddert.com
+ @creation-date 2005-06-14
+ @cvs-id $Id: bulk-update.tcl,v 1.1 2005/06/15 07:57:44 matthewg Exp $
+} {
+ {party_id:integer,multiple,optional}
+ {person_ids ""}
+ {organization_ids ""}
+ {attribute_id ""}
+ {return_url "./"}
+} -validate {
+}
+
+set title "[_ contacts.Bulk_Update]"
+set user_id [ad_conn user_id]
+set context [list $title]
+set package_id [ad_conn package_id]
+set recipients [list]
+if { [exists_and_not_null party_id] } {
+ foreach party_id $party_id {
+ if { [contact::person_p -party_id $party_id] } {
+ lappend person_ids $party_id
+ } else {
+ lappend organization_ids $party_id
+ }
+ }
+}
+set organization_count [llength $organization_ids]
+set person_count [llength $person_ids]
+
+
+set people [list]
+foreach party_id $person_ids {
+ lappend people "[person::name -person_id $party_id]"
+}
+set people [join $people ", "]
+
+set organizations [list]
+foreach party_id $organization_ids {
+ lappend organizations "[organizations::name -organization_id $party_id]"
+}
+set organizations [join $organizations ", "]
+
+set form_elements {
+ person_ids:text(hidden),optional
+ organization_ids:text(hidden),optional
+ return_url:text(hidden)
+}
+
+
+if { $person_count == 0 } {
+ lappend form_elements "people:text(hidden),optional"
+} elseif { $person_count == 1 } {
+ lappend form_elements [list people:text(inform),optional [list label [_ contacts.Person]]]
+} else {
+ lappend form_elements [list people:text(inform),optional [list label [_ contacts.People]]]
+}
+
+if { $organization_count == 0 } {
+ lappend form_elements "organizations:text(hidden),optional"
+} elseif { $organization_count == 1 } {
+ lappend form_elements [list organizations:text(inform),optional [list label [_ contacts.Organization]]]
+} else {
+ lappend form_elements [list organizations:text(inform),optional [list label [_ contacts.Organizations]]]
+}
+
+if { $person_count > 0 && $organization_count > 0 } {
+ set object_type "party"
+} elseif { $person_count > 0 } {
+ set object_type "person"
+} elseif { $organization_count > 0 } {
+ set object_type "organization"
+}
+
+
+if { [exists_and_not_null attribute_id] } {
+ ams::attribute::get -attribute_id $attribute_id -array attr
+ lappend form_elements [list attribute_id:integer(hidden)]
+ lappend form_elements [ams::widget \
+ -widget $attr(widget) \
+ -request "ad_form_widget" \
+ -attribute_id $attr(attribute_id) \
+ -attribute_name $attr(attribute_name) \
+ -pretty_name $attr(pretty_name) \
+ -form_name "bulk_update" \
+ -optional_p "1"]
+ set edit_buttons [list [list "[_ contacts.Bulk_Update_these_Contacts]" update]]
+ lappend form_elements
+} else {
+
+set attribute_options [db_list_of_lists get_attributes "
+ select pretty_name,
+ attribute_id
+ from ams_attributes
+ where object_type in ([ams::object_parents -sql -object_type $object_type])
+ and widget in (select widget from ams_widgets where value_method in ( 'ams_value__time', 'ams_value__options'))
+ order by upper(pretty_name)
+"]
+set attribute_options [concat [list [list "" ""]] $attribute_options]
+lappend form_elements [list attribute_id:integer(select) [list label [_ contacts.Attribute]] [list options $attribute_options]]
+set edit_buttons [list [list "[_ contacts.Next]" next]]
+
+}
+
+
+ad_form -action bulk-update \
+ -name bulk_update \
+ -cancel_label "[_ contacts.Cancel]" \
+ -cancel_url $return_url \
+ -edit_buttons $edit_buttons \
+ -form $form_elements \
+ -on_request {
+ } -on_submit {
+ if { [template::form get_button bulk_update] == "update" } {
+ db_transaction {
+ ams::attribute::get -attribute_id $attribute_id -array attr
+ set value_id [ams::widget \
+ -widget $attr(widget) \
+ -request "form_save_value" \
+ -attribute_id $attr(attribute_id) \
+ -attribute_name $attr(attribute_name) \
+ -pretty_name $attr(pretty_name) \
+ -form_name "bulk_update" \
+ -optional_p "1"]
+ set party_ids [concat $organization_ids $person_ids]
+
+ foreach party_id $party_ids {
+ set old_revision_id [contact::live_revision -party_id $party_id]
+ set new_revision_id [contact::revision::new -party_id $party_id]
+ if { [exists_and_not_null old_revision_id] } {
+ ams::object_copy -from $old_revision_id -to $new_revision_id
+ }
+ ams::attribute::value_save -object_id $new_revision_id -attribute_id $attribute_id -value_id $value_id
+ }
+ }
+ }
+ } -after_submit {
+ if { [template::form get_button bulk_update] == "update" } {
+ ad_returnredirect -message [_ contacts.lt_nice_user_message] $return_url
+ ad_script_abort
+ }
+ }
+
+