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.1 -r1.2 --- openacs-4/packages/contacts/www/contact-rels.tcl 18 May 2005 16:45:50 -0000 1.1 +++ openacs-4/packages/contacts/www/contact-rels.tcl 21 May 2005 21:00:41 -0000 1.2 @@ -11,6 +11,7 @@ {buttonsearch:optional} {buttonme:optional} {query ""} + {orderby "role,asc"} } -validate { contact_one_exists -requires {party_id} { if { ![contact::exists_p -party_id $party_id] } { @@ -35,9 +36,8 @@ set pretty_plural_list_name "contacts" -# create rel_type if the role requires a certain object_type if { [exists_and_not_null role_two] } { - set valid_object_types [db_list valid_object_types { select primary_object_type from contact_rel_types where primary_role = :role_two }] + set valid_object_types [db_list get_valid_object_types {}] set person_valid_p 0 set org_valid_p 0 foreach type $valid_object_types { @@ -79,16 +79,8 @@ -if { [exists_and_not_null orderby] } { - if { $orderby == "first_names,asc" } { - set name_order 0 - } else { - set name_order 1 - } -} else { - set name_order 0 -} +set name_order 0 set member_state "approved" set format "normal" @@ -140,6 +132,7 @@ -row_pretty_plural "$pretty_plural_list_name found in search, please try again or add a new contact" \ -checkbox_name checkbox \ -selected_format ${format} \ + -orderby_name "order_search" \ -key party_id \ -elements { type { @@ -193,10 +186,8 @@ } } -#ns_log notice [db_map contacts_select] set original_party_id $party_id -#ad_return_error "ERROR" [db_map dbqd.contacts.www.index.contacts_select] db_multirow -extend {map_url} -unclobber contacts dbqd.contacts.www.index.contacts_select {} { set map_url [export_vars -base "relationship-add" -url {{party_one $original_party_id} {party_two $party_id} {role_two $role_two}}] } @@ -205,13 +196,7 @@ -set rel_options [db_list_of_lists get_rels { - select acs_rel_type__role_pretty_name(primary_role), - primary_role - from contact_rel_types - where secondary_object_type in ( :contact_type, 'party' ) - order by upper(acs_rel_type__role_pretty_name(primary_role)) -}] +set rel_options [db_list_of_lists get_rels {}] set rel_options "{{-Select One-} {}} $rel_options" @@ -230,3 +215,77 @@ } -on_submit { } -after_submit { } + + + + + + + + + + +template::list::create \ + -html {width 100%} \ + -name "relationships" \ + -multirow "relationships" \ + -row_pretty_plural "relationships" \ + -selected_format "normal" \ + -elements { + role { + label "Role" + display_col role_singular + } + other_name { + label "Contact" + display_col other_name + link_url_eval $contact_url + } + details { + label "Details" + } + actions { + label "Actions" + display_template { + Delete + Edit Details + } + } + } -filters { + party_id {} + } -orderby { + other_name { + label "Contact" + orderby_asc "CASE WHEN object_id_one = :party_id THEN upper(contact__name(object_id_two)) ELSE upper(contact__name(object_id_one)) END asc, upper(role_singular) asc" + orderby_desc "CASE WHEN object_id_one = :party_id THEN upper(contact__name(object_id_two)) ELSE upper(contact__name(object_id_one)) END desc, upper(role_singular) asc" + } + role { + label "Role" + orderby_asc "upper(role_singular) asc, CASE WHEN object_id_one = :party_id THEN upper(contact__name(object_id_two)) ELSE upper(contact__name(object_id_one)) END asc" + orderby_desc "upper(role_singular) desc, CASE WHEN object_id_one = :party_id THEN upper(contact__name(object_id_two)) ELSE upper(contact__name(object_id_one)) END asc" + } + default_value role,asc + } -formats { + normal { + label "Table" + layout table + row { + role {} + other_name {} + details {} + actions {} + } + } + } + + +set package_id [ad_conn package_id] +set return_url [export_vars -base "[ad_conn package_url]contact-rels" -url {party_id}] +db_multirow -unclobber -extend {contact_url rel_add_edit_url rel_delete_url details} relationships get_relationships "" { + set contact_url [contact::url -party_id $other_party_id] + set list_exists_p [ams::list::exists_p -package_key "contacts" -object_type ${rel_type} -list_name ${package_id}] + if { $list_exists_p } { + set rel_add_edit_url [export_vars -base "relationship-ae" -url {rel_type object_id_one object_id_two party_id}] + } + set rel_delete_url [export_vars -base "relationship-delete" -url {rel_id party_id return_url}] +}