Index: openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml,v diff -u -r1.23 -r1.24 --- openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml 29 Jan 2006 16:18:16 -0000 1.23 +++ openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml 20 Apr 2006 14:09:08 -0000 1.24 @@ -1,9 +1,11 @@ - + -- eine Gruppe markieren -- -- Neue Nachricht erstellen -- -- Keine -- + -- Person w�hlen -- + -- Organisation w�hlen -- -- Bitte ausw�hlen -- Aktion Aktionen @@ -23,6 +25,7 @@ Eine neue %object_type% Gruppen zuteilen Neue Organisation Neue Person + Beziehung hinzuf�gen Suche hinzuf�gen Eine Signatur hinzuf�gen Den ausgew�hlten Kontakt zu einer Kategorie hinzuweisen @@ -91,6 +94,7 @@ Kontakt -&gt; Kontakt ist in -> Kontakt ist nicht in -> + Neu zuweisen Kontakt Beziehung Kontakttyp Kontakttyp eins @@ -160,6 +164,7 @@ Vorname Vornamen Fu�zeile + Fremdauftr�ge Freelancer Von Lade @@ -206,6 +211,8 @@ -- Gruppe erste Ebene -- Eine neue %object_type% hinzuf�gen und den ausgew�hlten Gruppen zuordnen Hinzuf�gen neuer %rels.relationship% + Beziehung zu diesen Organisationen hinzuf�gen + Beziehung zu folgenden Personen hinzuf�gen Hinzuf�gen Beziehungstyp Zu markierter/n Gruppe/n hinzuf�gen Erweiterte Suchen sind sehr vielf�ltig, aber sie ben�tigen spezifischen Input @@ -257,6 +264,7 @@ L�nderkennziffer ist nicht -> Erstellt in den letzten -> Zurzeit ist die Gruppe in der Lage, die folgenden Beziehungstypen zu nutzen: + Sehr geehrte Damen und Herren Debugging Code - Nur SW Admins sehen dies Definition eines neuen Beziehungstyps Selektierte Kontakte l�schen @@ -289,7 +297,6 @@ nicht erstellt in den letzten -> nicht upgedatet in den letzten -> der folgenden Bedingungen:<br> - Sobald Sie diese Briefe ausgedruckt haben k�nnen Sie <a href="%return_url%">dorthin zur�ckkehren wo Sie waren</a>. Sobald der Release ansteht, wird dieses im Softwarecode ber�cksichtigt. "Organization Name" enth�lt "Search_Word" oder Organisationsbeziehung @@ -302,6 +309,8 @@ Bei der Erstellung k�nnen sie nutzen: &lt;a href=&quot;message-help&quot;&gt;mail merge substitutions&lt;/a&gt;. Die gebr�uchlichsten Platzhalter sind \{name\} \{first_names\}, \{last_name\}, \{home_address\} und \{date\} Entfernen von markierter/n Gruppe(n) Von Gruppe entfernen + L�sche alle anderen Beziehungen desselben Typs zu diesen Kontakten + L�sche alle anderen Beziehungen diesen Typs beim hinzugef�gten Kontakt %role% existiert %role% ist in der Suche %search_link% %role% nicht in der Suche %search_link% @@ -423,6 +432,7 @@ Zugriffsrechte f�r Standardgruppe Person Personen Formblatt + Bitte w�hlen Sie einen Kontakt i.V. Angezeigter Name Der Name der bei dieser Liste als �berschrift angezeigt wird. @@ -444,6 +454,7 @@ LESEN SIE BITTE DIESES Empf�nger R�ckerstattung + Beziehung zu Beziehung Beziehung hinzugef�gt Beziehung gel�scht @@ -460,7 +471,9 @@ Ergebnisse: Zur�ck zu %title% Rolle + Art der Beziehung dieser Kontakte Rollenname + Art der Beziehung Rolle eins Rolle Singular Rolle zwei @@ -472,6 +485,7 @@ Speichern dieser Suche Gespeicherte Suchen Suchen + Erneut suchen... Kontakt suchen Existierenden suchen Suche nach @@ -526,6 +540,7 @@ richtig Auftragswert: Typ + Unbenannt Update Update Dateinamen Update durch Index: openacs-4/packages/contacts/catalog/contacts.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/catalog/contacts.en_US.ISO-8859-1.xml,v diff -u -r1.73 -r1.74 --- openacs-4/packages/contacts/catalog/contacts.en_US.ISO-8859-1.xml 5 Apr 2006 22:21:35 -0000 1.73 +++ openacs-4/packages/contacts/catalog/contacts.en_US.ISO-8859-1.xml 20 Apr 2006 14:09:08 -0000 1.74 @@ -100,6 +100,7 @@ Contact -> contact is in -> contact is not in -> + Change Contact Relationship Contact Type Contact Type One @@ -175,6 +176,7 @@ First Name First Names Footer + Freelancer Bookings Freelancers From Generating PDF @@ -288,6 +290,7 @@ country code is not -> created in the last -> Currently, the group is able to handle the following types of relationships: + Dear ladies and gentlemen Debugging Code - Only SW Admins See This Define a new relationship type Deleting an item from history requires a return_url @@ -594,6 +597,7 @@ True Turnover: Type + Untitled Update Update filenames Updated By @@ -611,6 +615,7 @@ View next Visit Club Watch all changes + Werbemailing which match Widget with Index: openacs-4/packages/contacts/www/contact-rels.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/contact-rels.tcl,v diff -u -r1.22 -r1.23 --- openacs-4/packages/contacts/www/contact-rels.tcl 16 Feb 2006 15:42:40 -0000 1.22 +++ openacs-4/packages/contacts/www/contact-rels.tcl 20 Apr 2006 14:09:07 -0000 1.23 @@ -82,6 +82,7 @@ set member_state "approved" set format "normal" +set bulk_actions [list "[_ contacts.contact_rel_change]" "../relationship-bulk-move" "[_ contacts.contact_rel_change]"] set admin_p [ad_permission_p [ad_conn package_id] admin] #set default_group_id [contacts::default_group_id] set title "Contacts" @@ -198,8 +199,11 @@ -html {width 100%} \ -name "relationships" \ -multirow "relationships" \ + -key rel_id \ -row_pretty_plural "[_ contacts.relationships]" \ -selected_format "normal" \ + -bulk_actions $bulk_actions \ + -bulk_action_export_vars {party_id} \ -elements { role { label "[_ contacts.Art_of_Relationship]" @@ -240,6 +244,7 @@ label "[_ contacts.Table]" layout table row { + checkbox {} role {} other_name {} details {} Index: openacs-4/packages/contacts/www/relationship-bulk-add-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/relationship-bulk-add-postgresql.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/contacts/www/relationship-bulk-add-postgresql.xql 24 Mar 2006 13:18:04 -0000 1.1 +++ openacs-4/packages/contacts/www/relationship-bulk-add-postgresql.xql 20 Apr 2006 14:09:07 -0000 1.2 @@ -83,12 +83,12 @@ select rel_id from acs_rels where rel_type = :rel_type - and object_id_one = :object_id_one - and object_id_two = :object_id_two + and ((:switch_roles_p = 0 and object_id_one = :object_id_one and object_id_two = :object_id_two) + or (:switch_roles_p = 1 and object_id_one = :object_id_two and object_id_two = :object_id_one)) - + select acs_rel__new ( :rel_id, @@ -102,6 +102,20 @@ + + +select acs_rel__new ( + :rel_id, + :rel_type, + :object_id_two, + :object_id_one, + :context_id, + :creation_user, + :creation_ip + ) + + + insert into contact_rels Index: openacs-4/packages/contacts/www/relationship-bulk-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/relationship-bulk-add.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/contacts/www/relationship-bulk-add.tcl 27 Mar 2006 07:42:44 -0000 1.2 +++ openacs-4/packages/contacts/www/relationship-bulk-add.tcl 20 Apr 2006 14:09:07 -0000 1.3 @@ -10,6 +10,8 @@ {return_url} {role_one ""} {role_two ""} + {remove_role_one:optional} + {switch_roles_p 0} } set title [_ contacts.Add_Relationship] @@ -48,7 +50,7 @@ set object_types [list "party" $contact_type] set rel_two_options [db_list_of_lists get_rels {}] set rel_two_options [ams::util::localize_and_sort_list_of_lists -list $rel_two_options] -set rel_two_options [concat [list [list "" ""]] $rel_two_options] +set rel_two_options [concat [list [list "" ""]] [lang::util::localize $rel_two_options]] if { $role_two ne "" && $role_one ne "" } { # we verify that the role still exists @@ -59,20 +61,20 @@ } } if { $role_two ne "" } { - set role_one_options [ams::util::localize_and_sort_list_of_lists -list [db_list_of_lists get_rel_types {}]] + set role_one_options [lang::util::localize [ams::util::localize_and_sort_list_of_lists -list [db_list_of_lists get_rel_types {}]]] if { [llength $role_one_options] == "0" } { ad_return_error "[_ contacts.Error]" "[_ contacts.lt_There_was_a_problem_w]" } elseif { [llength $role_one_options] == "1" } { set role_one [lindex [lindex $role_one_options 0] 1] - set role_one_pretty [lindex [lindex $role_one_options 0] 2] + set role_one_pretty [lindex [lindex $role_one_options 0] 0] } else { set role_one_options [concat [list [list "" ""]] $role_one_options] set role_one "" } } -ad_form -name "add_edit" -method "GET" -export {party_ids return_url} -form { +ad_form -name "add_edit" -method "GET" -export {party_ids return_url switch_roles_p} -form { {remove_role_one:boolean(checkbox),optional {label ""} {options {{"[_ contacts.lt_Remove_others_of_this_role_from_these_contacts]" 1}}} @@ -100,7 +102,8 @@ } # value has to be set this way to override on refreshes template::element::set_value add_edit role_one $role_one - template::element::set_value add_edit role_one_pretty [lang::util::localize [db_string get_role_one_pretty {}]] + template::element::set_value add_edit role_one_pretty $role_one_pretty + ## [lang::util::localize [db_string get_role_one_pretty {}]] } else { ad_form -extend -name "add_edit" -form { {role_one:text(hidden),optional} @@ -109,7 +112,6 @@ {value "[_ contacts.dependent_on_role_of_related_contact]"} } } - } ad_form -extend -name "add_edit" -form { @@ -130,40 +132,46 @@ } -validate { } -on_submit { - if { ![db_0or1row get_rel_info {}] } { - break - } - set object_type_two [contact::type -party_id $object_id_two] - if { $object_type_two eq "organization" && [lsearch [list person party] $secondary_object_type] >= 0 } { - template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_person] - } - if { $object_type_two ne "organization" && [lsearch [list organization party] $secondary_object_type] >= 0 } { - template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_org] - } - if { ![template::form::is_valid add_edit] } { - break - } - if { $remove_role_two eq "1" } { - set party_id $object_id_two - db_list delete_all_rels {} - } - set context_id {} - set creation_user [ad_conn user_id] - set creation_ip [ad_conn peeraddr] - foreach object_id_one $party_ids { - if { $remove_role_one eq "1" } { - set party_id $object_id_one + db_transaction { + if { ![db_0or1row get_rel_info {}] } { + break + } + set object_type_two [contact::type -party_id $object_id_two] + if { $object_type_two eq "organization" && [lsearch [list person party] $secondary_object_type] >= 0 } { + template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_person] + } + if { $object_type_two ne "organization" && [lsearch [list organization party] $secondary_object_type] >= 0 } { + template::element::set_error add_edit object_id_two [_ contacts.The_selected_relationship_requires_related_org] + } + if { ![template::form::is_valid add_edit] } { + break + } + if { $remove_role_two eq "1" } { + set party_id $object_id_two db_list delete_all_rels {} } - set existing_rel_id [db_string rel_exists_p {} -default {}] - if { [empty_string_p $existing_rel_id] } { - set rel_id {} - set rel_id [db_exec_plsql create_rel {}] - db_dml insert_contact_rel {} + set context_id {} + set creation_user [ad_conn user_id] + set creation_ip [ad_conn peeraddr] + foreach object_id_one $party_ids { + if { $remove_role_one eq "1" } { + set party_id $object_id_one + db_list delete_all_rels {} + } + set existing_rel_id [db_string rel_exists_p {} -default {}] + if { [empty_string_p $existing_rel_id] } { + set rel_id {} + if {$switch_roles_p} { + set rel_id [db_exec_plsql create_backward_rel {}] + } else { + set rel_id [db_exec_plsql create_forward_rel {}] + } + db_dml insert_contact_rel {} + } + contact::flush -party_id $object_id_one } - contact::flush -party_id $object_id_one + contact::flush -party_id $object_id_two } - contact::flush -party_id $object_id_two } -after_submit { ad_returnredirect $return_url Index: openacs-4/packages/contacts/www/relationship-bulk-move-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/relationship-bulk-move-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/contacts/www/relationship-bulk-move-postgresql.xql 20 Apr 2006 14:09:07 -0000 1.1 @@ -0,0 +1,23 @@ + + + + + + select case when object_id_one = :party_id then object_id_two else object_id_one end as other_party_id + from acs_rels + where rel_id in ([join $rel_id ,]) + + + + + + select distinct case when r.object_id_one = :party_id then t.role_two else t.role_one end as role_one, + case when r.object_id_one = :party_id then t.role_one else t.role_two end as role_two, + case when r.object_id_one = :party_id then 1 else 0 end as switch_roles_p + from acs_rel_types t, acs_rels r + where r.rel_type = t.rel_type + and rel_id in ([join $rel_id ,]) + + + + Index: openacs-4/packages/contacts/www/relationship-bulk-move.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/relationship-bulk-move.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/contacts/www/relationship-bulk-move.tcl 20 Apr 2006 14:09:07 -0000 1.1 @@ -0,0 +1,41 @@ +ad_page_contract { + Move existing relationships to other contact. + + @author Timo Hentschel timo@timohentschel.de + @creation-date 2006-04-19 + @cvs-id $Id: relationship-bulk-move.tcl,v 1.1 2006/04/20 14:09:07 timoh Exp $ +} { + {party_id:integer,notnull} + {party_two:optional} + {query ""} + {orderby "role,asc"} + {rel_id:multiple} +} -validate { + contact_one_exists -requires {party_id} { + if { ![contact::exists_p -party_id $party_id] } { + ad_complain "[_ contacts.lt_The_first_contact_spe]" + } + } + contact_two_exists -requires {party_two} { + if { ![contact::exists_p -party_id $party_two] } { + ad_complain "[_ contacts.lt_The_second_contact_sp]" + } + } + +} +contact::require_visiblity -party_id $party_id + +set return_url "$party_id/relationships" +set party_ids [db_list get_other_party_ids {}] +set roles [db_list_of_lists all_roles {}] + +if {[llength $roles] > 1} { + error "[_ contacts.lt_neither_person_nor_or]" + ad_script_abort +} + +set role_one [lindex [lindex $roles 0] 0] +set role_two [lindex [lindex $roles 0] 1] +set switch_roles_p [lindex [lindex $roles 0] 2] + +ad_returnredirect [export_vars -base relationship-bulk-add {party_ids return_url role_one role_two switch_roles_p {remove_role_one 1}}]