Index: openacs-4/packages/contacts/www/search.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/search.tcl,v diff -u -r1.21 -r1.22 --- openacs-4/packages/contacts/www/search.tcl 17 Nov 2005 16:33:32 -0000 1.21 +++ openacs-4/packages/contacts/www/search.tcl 18 Nov 2005 17:48:27 -0000 1.22 @@ -140,14 +140,28 @@ set default_extend_attributes [parameter::get -parameter "DefaultPersonOrganAttributeExtension"] } } - + set show_default_names "" set show_names "" # We add the default attributes, first we take out all spaces # and then split by ";" regsub -all " " $default_extend_attributes "" default_extend_attributes set default_extend_attributes [split $default_extend_attributes ";"] + # Now we are going to add the mapped attributes in the contact_search_extend_map + set ema_list [db_list get_extend_mapped_attributes { }] + + foreach extend_attribute_id $ema_list { + # We check that the attribute is nor already in the default list + # to avoid duplicates + ams::attribute::get -attribute_id $extend_attribute_id -array ea_info + set attribute_name $ea_info(attribute_name) + + if { [string equal [lsearch $default_extend_attributes $attribute_name] "-1"] } { + lappend default_extend_attributes $attribute_name + } + } + foreach attr $default_extend_attributes { # Now we get the attribute_id set attr_id [attribute::id -object_type "person" -attribute_name "$attr"] @@ -167,7 +181,7 @@ } } - # To extend the reult list using default attributes + # To extend the result list using default attributes if { [exists_and_not_null default_names] } { set show_default_names "[join $default_names ", "], " } Index: openacs-4/packages/contacts/www/search.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/search.xql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/contacts/www/search.xql 19 Oct 2005 22:55:38 -0000 1.3 +++ openacs-4/packages/contacts/www/search.xql 18 Nov 2005 17:48:27 -0000 1.4 @@ -135,4 +135,16 @@ + + + select + attribute_id + from + contact_search_extend_map + where + search_id = :search_id + and attribute_id is not null + + + Index: openacs-4/packages/contacts/www/admin/attribute-list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/attribute-list.adp,v diff -u -r1.1 -r1.2 --- openacs-4/packages/contacts/www/admin/attribute-list.adp 11 Nov 2005 22:57:43 -0000 1.1 +++ openacs-4/packages/contacts/www/admin/attribute-list.adp 18 Nov 2005 17:48:27 -0000 1.2 @@ -1,3 +1,18 @@
+ + + + + + +
#contacts.Default_attributes#: @default_names@
+
+
+ + +
+
#contacts.Search_List#
+
+  Index: openacs-4/packages/contacts/www/admin/attribute-list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/attribute-list.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/contacts/www/admin/attribute-list.tcl 11 Nov 2005 22:57:43 -0000 1.1 +++ openacs-4/packages/contacts/www/admin/attribute-list.tcl 18 Nov 2005 17:48:27 -0000 1.2 @@ -1,12 +1,20 @@ +# packages/contacts/www/admin/attribute-list.tcl ad_page_contract { + Display a list of the available attributes to map to an specific + search_id and also the default attributes set in the paramaters + for each specific search_type. + + @author Miguel Marin (miguelmarin@viaro.net) + @author Viaro Networks www.viaro.net + @creation-date 2005-11-11 } { + orderby:optional search_id:notnull + page:optional } - set search_for [db_string get_search_for { } -default ""] - set search_for_clause "" # Get the var list of the search if type equals group @@ -27,6 +35,8 @@ set search_for_clause "and l.list_name like '%__-2' " } append search_for_clause "and l.object_type = 'person'" + set default_extend_attributes [parameter::get -parameter "DefaultPersonAttributeExtension"] + } organization { if { ![empty_string_p $var_list] } { @@ -38,42 +48,85 @@ set search_for_clause "and l.list_name like '%__-2' " } append search_for_clause "and l.object_type = 'organization'" + set default_extend_attributes [parameter::get -parameter "DefaultOrganizationAttributeExtension"] + } party { if { ![empty_string_p $var_list] } { # Default attributes for the group, persons and organizations set group_id [lindex [split $var_list " "] 1] set search_for_clause "and (l.list_name like '%__-2' or l.list_name like '%__$group_id') " } + set default_extend_attributes [parameter::get -parameter "DefaultPersonOrganAttributeExtension"] } } +set default_names [list] +set attribute_values [list] + +# We add the default attributes, first we take out all spaces +# and then split by ";" +regsub -all " " $default_extend_attributes "" default_extend_attributes +set default_extend_attributes [split $default_extend_attributes ";"] + +foreach attr $default_extend_attributes { + # Now we get the attribute_id + set attr_id [attribute::id -object_type "person" -attribute_name "$attr"] + if { [empty_string_p $attr_id] } { + set attr_id [attribute::id -object_type "organization" -attribute_name "$attr"] + } + + # We need to check if the attribute is not already present + # in the list, otherwise we could have duplicated. + if { ![empty_string_p $attr_id] } { + lappend attribute_values $attr_id + lappend default_names "[_ acs-translations.ams_attribute_${attr_id}_pretty_name]" + } +} + +set default_names [join $default_names ", "] +set extend_query "" +if { ![string equal [llength $attribute_values] 0] } { + set extend_query "and a.attribute_id not in ([join $attribute_values ","])" +} + set bulk_actions [list "[_ contacts.Set_default]" set-default "[_ contacts.Set_default]" \ "[_ contacts.Remove_default]" remove-default "[_ contacts.Remove_default]"] template::list::create \ -name ams_options \ -multirow ams_options \ -key attribute_id \ + -page_size 15 \ + -page_flush_p 0 \ + -page_query_name get_ams_options_pagination \ -bulk_action_method post \ -bulk_actions $bulk_actions \ -bulk_action_export_vars { search_id } \ -elements { pretty_name { - label "Attribute Name" + label "[_ contacts.Attribute_Name]:" } default { label "" } + } -filters { + search_id {} + } -orderby { + default_value pretty_name + pretty_name { + label "[_ contacts.Attribute_Name]:" + orderby_asc "a.attribute_name asc" + orderby_desc "a.attribute_name desc" + } } - -db_multirow -extend { default } ams_options get_ams_options { } { +db_multirow -extend { default } ams_options get_ams_options " " { set default "" set default_p [db_string get_default_p { } -default "0"] if { $default_p } { - set default "Default" + set default "[_ contacts.Default]" } } Index: openacs-4/packages/contacts/www/admin/attribute-list.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/attribute-list.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/contacts/www/admin/attribute-list.xql 14 Nov 2005 20:42:04 -0000 1.2 +++ openacs-4/packages/contacts/www/admin/attribute-list.xql 18 Nov 2005 17:48:27 -0000 1.3 @@ -30,20 +30,42 @@ select distinct lam.attribute_id, - a.pretty_name + a.pretty_name, + a.attribute_name from ams_list_attribute_map lam, ams_lists l, ams_attributes a where lam.list_id = l.list_id and lam.attribute_id = a.attribute_id + [template::list::page_where_clause -and -name "ams_options" -key "lam.attribute_id"] + $extend_query $search_for_clause - order by - pretty_name asc + [template::list::orderby_clause -name "ams_options" -orderby] + + + select + distinct + lam.attribute_id, + a.pretty_name, + a.attribute_name + from + ams_list_attribute_map lam, + ams_lists l, + ams_attributes a + where + lam.list_id = l.list_id + and lam.attribute_id = a.attribute_id + $extend_query + $search_for_clause + [template::list::orderby_clause -name "ams_options" -orderby] + + + select Index: openacs-4/packages/contacts/www/admin/ext-search-options.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/ext-search-options.adp,v diff -u -r1.4 -r1.5 --- openacs-4/packages/contacts/www/admin/ext-search-options.adp 14 Nov 2005 22:55:46 -0000 1.4 +++ openacs-4/packages/contacts/www/admin/ext-search-options.adp 18 Nov 2005 17:48:27 -0000 1.5 @@ -28,6 +28,7 @@ #contacts.Go_to_search_results# + #contacts.Search_List# Index: openacs-4/packages/contacts/www/admin/remove-default.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/remove-default.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/contacts/www/admin/remove-default.tcl 11 Nov 2005 22:57:08 -0000 1.2 +++ openacs-4/packages/contacts/www/admin/remove-default.tcl 18 Nov 2005 17:48:27 -0000 1.3 @@ -16,6 +16,7 @@ delete from contact_search_extend_map where search_id = :search_id and extend_id = :value } } + ad_returnredirect ext-search-options?search_id=$search_id } if { [exists_and_not_null attribute_id] } { @@ -24,6 +25,7 @@ delete from contact_search_extend_map where search_id = :search_id and attribute_id = :value } } + ad_returnredirect attribute-list?search_id=$search_id } ad_returnredirect search-list \ No newline at end of file Index: openacs-4/packages/contacts/www/admin/search-list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/search-list.adp,v diff -u -r1.1 -r1.2 --- openacs-4/packages/contacts/www/admin/search-list.adp 11 Nov 2005 22:57:43 -0000 1.1 +++ openacs-4/packages/contacts/www/admin/search-list.adp 18 Nov 2005 17:48:27 -0000 1.2 @@ -1,4 +1,6 @@ +@page_title;noquote@ +
Index: openacs-4/packages/contacts/www/admin/search-list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/search-list.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/contacts/www/admin/search-list.tcl 18 Nov 2005 16:13:10 -0000 1.3 +++ openacs-4/packages/contacts/www/admin/search-list.tcl 18 Nov 2005 17:48:27 -0000 1.4 @@ -12,6 +12,10 @@ } -validate { } +set page_title [_ contacts.Search_List] + + + set user_id [ad_conn user_id] set package_id [ad_conn package_id] if { ![exists_and_not_null owner_id] } { Index: openacs-4/packages/contacts/www/admin/set-default.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/admin/set-default.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/contacts/www/admin/set-default.tcl 11 Nov 2005 22:57:08 -0000 1.2 +++ openacs-4/packages/contacts/www/admin/set-default.tcl 18 Nov 2005 17:48:27 -0000 1.3 @@ -29,6 +29,7 @@ } } } + ad_returnredirect ext-search-options?search_id=$search_id } if { [exists_and_not_null attribute_id] } { @@ -49,6 +50,6 @@ } } } + ad_returnredirect attribute-list?search_id=$search_id } -ad_returnredirect search-list \ No newline at end of file